Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2015, 22:39
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Tipos de problema y de condiciones?

En cuanto a tipos de problema logré llegar a esta clasificación muy básica pero también muy útil para mí:

1- Los que requieren decir qué condición o condiciones cumple un valor o los de una lista .
Ejemplo:
De los números enteros del 1 al 10 genere 3 listas: Los divisibles entre 2, entre 3, y los demás.
El resultado sería:
Lista de divisibles entre 2: 2, 4, 6, 8, 10
Lista de divisibles entre 3: 3, 6, 9
Lista de los demás: 1, 5, 7
...pero no es que deban generar listas, también se admite esto:
1: No divisible entre 2 ni 3.
2: Divisible entre 2.
3: Divisible entre 3.
etc.
...una única lista que dice los valores y la condición que cumplen.

2- Los que requieren decir qué valor o valores cumplen una o más condiciones.
Ejemplo:
De los números enteros del 1 al 10 consiga 2 pares de números (distintos entre sí) que sumados resulten 17.
El resultado sería:
Par 1: 7 y 10
Par 2: 8 y 9

No tengo muy clara la diferencia pero...
- Las respuestas del 1ero podrían incluir valores que nada tengan en común (más allá de estar en la lista de analizados y cumplir alguna condición, pero no la misma) y se diría qué condición cumplieron.
- Las respuestas del 2ndo sólo incluyen valores que tengan algo en común, y no se dice qué condiciones cumplieron (al fin y al cabo se busca que cumplan una o más, en definitiva si están en la respuesta es porque las cumplieron y se sabe cuales, porque eso es lo que se buscaba).

Quizá sean combinables, no analicé eso.

3- Los que requieren decir qué serie de valores cumplen una o más condiciones y son considerados acciones.
Probablemente es como el 2, pero lo analizo de un modo distinto. No he dado mucho detalle pero de este tipo hablé desde que me registré.

Otras perspectivas se agradecen.

--------------------------------------------------------------------------------------------------------

Estoy avanzando en los de tipo 1, aunque no sé si son los más sencillos.

Así sería uno de los casos más sencillos:
Código a:
Ver original
  1. // SitElms:
  2. V1 = 1;
  3. // Anali:
  4. if (V1 == 1) {
  5.     Resp = "Sí, el número es 1";
  6. }
En teoría uno le habría preguntado al programa si un número es 1. Si no respondía es que no.

Llamé 1Ent11 a ese programa, porque:
Analiza 1 valor.
Es de tipo Entero.
Chequea 1 aspecto.
El chequeo es simple ("nivel 1").

Probablemente haya más cosas a tener en cuenta pero de momento sólo veo esas 4. Y 4 formas en que puede mejorar su alcance (a nivel de velocidad y espacio que ocupa no sé, no hablo de esas cosas).
- Analizar más valores.
- Trabajar con tipos de valores más complejos (en principio decimales y texto).
- Chequear más aspectos.
- Chequear aspectos más complejos de chequear.

Siguiendo esas pautas he avanzado:

Manejando decimales, 1Dec11:
Código a:
Ver original
  1. // SitElms:
  2. V1 = 1.1;
  3. // Anali:
  4. if (V1 == 1.1) {
  5.     Resp = "Sí, el número es 1.1";
  6. }
Prácticamente lo mismo.

Manejando textos, 1Tx11
Código a:
Ver original
  1. // SitElms:
  2. V1 = "A";
  3. // Anali:
  4. if (V1 == "A") {
  5.     Resp = "Sí, el texto es A";
  6. }
Idem.

2Ent11, este analiza 2 enteros:
Código a:
Ver original
  1. // Frame 1:
  2. // SitElms:
  3. V1 = 1;
  4. V2 = 23;
  5. // Otros elms:
  6. Resp = "";
  7. Vs = 2;
  8. E1 = 0;
  9. // Frame 2:
  10. // Anali:
  11. E1 = E1+1;
  12. E2 = "V"+E1;
  13. E3 = eval(E2);
  14. if (E3 == 1) {
  15.     Resp = Resp + E2+" es 1\n";
  16. }
  17. // Frame 3:
  18. if (E1 < Vs) {
  19.     gotoAndPlay (2);
  20. } else {
  21.     stop ();
  22. }

2Dec11 analiza 2 decimales y 2Tx11 analiza 2 textos, prácticamente son iguales que 2Ent11.

2Ent21 analiza 2 aspectos de 2 enteros, o mejor dicho responde por 2 aspectos diferentes. Cambia sólo el Frame 2:
Código a:
Ver original
  1. // Anali:
  2. E1 = E1+1;
  3. E2 = "V"+E1;
  4. E3 = eval(E2);
  5. if (E3 == 1) {
  6.     Resp = Resp + E2+" es 1\n";
  7. } else {
  8.     Resp = Resp + E2+" no es 1\n";
  9. }

2Dec21 analiza 2 decimales y responde de 2 formas a cada uno.
2Tx analiza 2... 2.
De nuevo poca diferencia.

2Ent22 hace un chequeo más complejo:
Código a:
Ver original
  1. // Frame 2
  2. // Anali:
  3. E1 = E1+1;
  4. E2 = "V"+E1;
  5. E3 = eval(E2);
  6. E4 = E3/2;
  7. if (E4 == Math.floor(E4)) {
  8.     Resp = Resp + E2+" es par\n";
  9. } else {
  10.     Resp = Resp + E2+" es impar\n";
  11. }

No sé si pares son los divisibles entre 2 o los que terminan en un número tal, pero me da igual porque esto es para práctica simplemente.

2Dec22:
Código a:
Ver original
  1. /// Frame 2
  2. // Anali:
  3. E1 = E1+1;
  4. E2 = "V"+E1;
  5. E3 = eval(E2);
  6. E4 = (String(E3-Math.floor(E3))).length;
  7. if (E4 > 0) {
  8.     Resp = Resp + E2+" tiene "+(E4-2)+" números tras el .\n";
  9. } else {
  10.     Resp = Resp + E2+" es entero\n";
  11. }
Como pueden ver puse un chequeo que sólo tiene sentido con decimales.

2Txt22:
Código a:
Ver original
  1. // Frame 2:
  2. // Anali:
  3. E1 = E1+1;
  4. E2 = "V"+E1;
  5. E3 = eval(E2);
  6. E4 = E3.length;
  7. if (E4 == 1) {
  8.     Resp = Resp + E2+" tiene sólo 1 caracter de largo.\n";
  9. } else {
  10.     Resp = Resp + E2+" tiene " + E4+ " caracteres de largo.\n";
  11. }
Similar...

AEnt22:
Código a:
Ver original
  1. // Frame 1:
  2. // SitElms: Serie de F...
  3. V1 = 1;
  4. // Otros elms:
  5. Resp = "";
  6. Vs = 100;
  7. Analisis_Nro = 1;
  8. Anterior_Valor = 1;
  9. // Frame 2:
  10. // Anali:
  11. Analizado_Nombre = "V"+Analisis_Nro;
  12. Analizado_Valor = eval(Analizado_Nombre);
  13. Analizado_Mitad = Analizado_Valor/2;
  14. if (Analizado_Mitad == Math.floor(Analizado_Mitad)) {
  15.     Resp = Analizado_Nombre+" ("+Analizado_Valor+") es par\n"+Resp;
  16. } else {
  17.     Resp = Analizado_Nombre+" ("+Analizado_Valor+") es impar\n"+Resp;
  18. }
  19. // Frame 3:
  20. if (Analisis_Nro<Vs) {
  21.     // Generación de valor.
  22.     Analisis_Nro = Analisis_Nro+1;
  23.     set ("V"+Analisis_Nro, Analizado_Valor+Anterior_Valor);
  24.     Anterior_Valor = Analizado_Valor;
  25.     gotoAndPlay (2);
  26. } else {
  27.     stop ();
  28. }
Esto analiza los primeros A números de una "función" comenzando por un número preestablecido. En este caso es la serie de F...algo, mencionada en otro tema mío en este foro.
¿Por qué "A"? Porque es la 1era letra del abecedario (importa al ordenar los archivos por nombre) y porque no tengo claro cuántas mejoras son posibles en el aspecto que representa. Supongo que B será analizar 2 listas, C será analizar cualquier cantidad de listas, y luego tendré que ver qué sigue. ¿Ideas?

Continuaré avanzando por la vía que señalé, he aquí los siguientes destinos:
ADec22
ATx22
AEntA2: Chequea una cantidad A de aspectos, usa una lista.
ADecA2
ATxA2
...y acá avanzaría otra vez en condiciones, pero quisiera desde ya vuestras perspectivas o conocimientos sobre qué tipo de condiciones hay. ¿Qué cosas pueden chequearse con los ifs? ¿qué otras formas hay de chequear (con while no cuenta)?

Gracias.