decision simple

33
DECISION SIMPLE DECISION SIMPLE (SI) Algo DS1.1; Inicio Real num; ESCRIBA ("Digite el numero:"); Lea (num); Si (num>0)entonces escriba("el numero es positivo",num); fsi Final Algo DS1.2; Inicio Real num; escriba ("Digite numero:"); Lea (num); Si (num>10)entonces escriba ("El numero es mayor que 10",num); fsi Final Algo DS1.3; Inicio Real a,num; escriba ("Digite el numero:"); Lea (a); num=a*a; si (nun>1000)entonces Imprima ("el cuadrado es mayor que 1000",num); fsi Final Algo DS1.4; Inicio Real=num,va; escriba ("Digite numero:"); Lea (num); Si (num>0)entonces va=num Sino va=num +(-1); Imprima ("El valor absoluto es ",va); fsi Final Algo DS1.5; Inicio Entero n; escriba ("Digite numero:");

Upload: fernando-betancourth-jurado

Post on 22-Jul-2015

62 views

Category:

Documents


0 download

TRANSCRIPT

DECISION SIMPLEDECISION SIMPLE (SI)

Algo DS1.1; Inicio Real num; ESCRIBA ("Digite el numero:"); Lea (num); Si (num>0)entonces escriba("el numero es positivo",num); fsi Final Algo DS1.2; Inicio Real num; escriba ("Digite numero:"); Lea (num); Si (num>10)entonces escriba ("El numero es mayor que 10",num); fsi Final Algo DS1.3; Inicio Real a,num; escriba ("Digite el numero:"); Lea (a); num=a*a; si (nun>1000)entonces Imprima ("el cuadrado es mayor que 1000",num); fsi Final

Algo DS1.4; Inicio Real=num,va; escriba ("Digite numero:"); Lea (num); Si (num>0)entonces va=num Sino va=num +(-1); Imprima ("El valor absoluto es ",va); fsi Final Algo DS1.5; Inicio Entero n; escriba ("Digite numero:");

Lea (n); Si(n500)entonces Escriba(cua,"es mayor que 500") Sino Escriba(cua,"es menor que 500"); Fsi Final

Algo DS2.1. inicio Real x; escriba ("Digite numero:"); Lea (x); Si (x>o && x50)entonces Escriba(x, "es mayor que 50"); Sino Escriba(x, "es menor o igual a 50"); Fsi final

Algo DS2.3; Inicio Entero num; Imprima ("Digite numero:"); Lea (num);

Si (num%2==0)entonces escriba (num,"el numero es par"); sino escriba(num,"no es un numero par"); fsi Final

Algo DS2.4 Inicio Entero num; escriba("Digite numero:"); Lea (num); si (num%2==1)entonces escriba("es numero impar",num); sino escriba("no es numero impar",num); fsi Final

Algo DS2.5; Inicio Entero num; escriba("Digite numero:"); Lea (num); Si (x>0)entonces escriba("si es positivo",num); Sino escriba("no es positivo",num); Fsi Final

Algo DS2.6; Inicio Real=x; escriba ("Digite numero:"); Lea (x); Si(x0)entonces Escriba(x,"es positivo"); sino escriba(x,"es negativo"); fsi Final

Algo DS2.9; Inicio Real=num; Imprima ("Digite numero:"); Lea (num); Si (num%2==0)entonces Si(x>0)entonces escriba ("el numero es par positivo",num); fsi Final

Algo DS2.10; Inicio Real=x Escriba("digite numero") Lea(x); Si(x%2==1&&x>0)entonces Escriba(x,"es numero impar positivo"); Fsi Final Ds2.11

Inicio Real=x; Escriba("digite numero") Lea(x); Si (x%2==0)entonces Si(x0)entonces Imprima ("el numero %d es positivo",x); sino Imprima ("el numero %d es negativo",x); Fsi Final

Algo DS2.14; Inicio Entero n; escriba("Digite numero:"); Lea (n); Si (n>50 && ny)entonces inicio ma=x; me=y; Final Sino inicio ma=y; me=x; Final Fsi escriba("el mayor es %d",ma); escriba ("el menor es %d",me); Final Algo DS3.2; Inicio Entero x,y,Sum; escriba ("Digite primer numero:"); Lea (x); escriba ("Digite segundo numero:"); Lea (y); si (x>y)entonces Sum=(x*x)+(y*y); sino Sum=(x*y)+(x*x); Fsi escriba ("Digite el resulado es %d",Sum); Final Algo DS3.3; Inicio Entero a,b; escriba ("Digite primer numero:"); Lea (a); escriba ("Digite segundo numero:"); Lea (b); si (a>o && b>0)entonces escriba (Los numeros %d y %d son positivos",a,b); fsi Final

Algo DS21; Inicio Entero x,y; escriba ("Digite primer numero:"); Lea (x); escriba ("Digite segundo numero:"); Lea (y); si (a=0))entonces escriba ("los numeros %d y %d son positivos pares",x,y); fsi Final

Algo DS3.6.; Inicio Entero x,y; escriba ("Digite primer numero:"); Lea (x); escriba ("Digite segundo numero:"); Lea (y); Si ((xB es verdadera, de lo que resulta que se tomara la accin de la izquierda y se imprime el valor de A, es decir 5. Ahora supngase que estos valores estn invertidos, de manera que A tiene el valor 3 y B el valor 5, entonces A>B es falsa ya que 3 es menor que 5, y se tomara la accin de la derecha y se

imprime el valor de B, es decir, 5. En ambos casos el valor impreso es le mas alto, como se requera.

3.2 La construccin if-then-else (estructuras selectivas) Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah que se suelan denominar tambin estructuras de decisin o alternativas. En las estructuras selectivas se evala una condicin y en funcin del resultado de la misma se realiza un opcin u otra. Las condiciones se especifican usando expresiones lgicas. La representacin de una estructura selectiva se hace con palabras en pseudocdigo (if, then, else o bien en espaol si, entonces, sino), con una figura geomtrica en forma de rombo o bien con un tringulo en el interior de una caja rectangular. Las estructuras selectivas o alternativas pueden ser: - simples - dobles - mltiples Alternativa simple (if-then/si-entonces) La estructura alternativa simple si--entonces ejecuta una determinada accin cuando se cumple una determinada condicin. La seleccin si-entonces evala la condicin y - si la condicin es verdadera, entonces ejecuta la accin S1 - si la condicin es falsa, entonces no hacer nada Representacin grfica:

Pseudocdigo en espaol Pseudocdigo en ingls si if entonces then fin_si endif Alternativa doble (si-entonces-sino/if-then-else) La estructura anterior es muy limitada y normalmente se necesitar una estructura que permita elegir entre dos opciones o alternativas posibles en funcin del cumplimiento o no de una determinada condicin. Si la condicin C es verdadera, se ejecuta la accin S1, y si es falsa, se ejecuta la accin S2.

Pseudocdigo en espaol Pseudocdigo en ingls si if

entonces then sino else fin_si endif Del ejemplo anterior (se requiere de operadores relacinales): if A>B then Write (A) else Write (B) Ejemplo: Resolucin de una ecuacin de primer grado. Si la ecuacin es ax+b=0, a y b son los datos, y las posibles soluciones son: a 0 x = -b /a a = 0 b 0 entonces "solucin imposible" a = 0 b = 0 entonces "solucin indeterminada" El algoritmo correspondiente ser: algoritmo RESOL1 inicio {Solucin de la ecuacin ax+b=0} leer a,b si a0 entonces x -b/a escribir x sino si b 0 entonces escribir "solucin imposible"

sino escribir "solucin indeterminada" fin_si {fin de si para b 0} fin_si { fin de si para a 0} fin

3.3 Ifs anidados En algunas aplicaciones, una de las alternativas de una estructura if-then-else puede incluir un decisin adicional. Por ejemplo, despus de que se elija una determinada accin sobre una determinada calificacin de una prueba, podra quererse evitar la posibilidad de error en los datos de entrada. Esto requiere una comprobacin adicional para verificar que los datos de entrada son validos, lo que sugiere el uso de una estructura if-then-else adicional incluida en cada una de las dos alternativas originales. Este proceso es un ejemplo de anidamiento. Ejemplo: Algoritmo MAX_3 Este algoritmo lee tres nmeros A, B, C, imprimiendo el valor del ms grande. Se supone que los tres valores son diferentes. 1.- Entrada de valores Read (A, B, C) 2.- Se determina el valor ms grande mediante comprobacin por pares if A > B then if A > C then MAX A (A > B, A > C) else MAX C (C > A > B) else if B > C then MAX B (B > A, b > C) else MAX C (C > B > A)

3.- Se imprime el valor ms grande Write `El valor ms grande es`, MAX 4.- Termino Exit

3.4 Condiciones compuestas Estas condiciones se obtienen a partir de las expresiones simples, utilizando los operadores lgicos and, or y not. Los significados de estos operadores se describen adecuadamente por medio de las tablas de verdad. Las condiciones compuestas pueden utilizarse ya sea en enunciados if o en repeticiones condicionales. Ejemplo: Algoritmo MAX_3 (2a. versin) Este algoritmo lee tres nmeros A, B, C, imprime el valor del ms grande de ellos. Se supone que los tres valores son distintos. 1. - Entrada de los datos Read (A, B, C) 2. - Se determina el mayor valor if A > B and A > C then MAX A if B > A and B > C then MAX B if C > A and C > B then MAX C 3. - Se imprime el valor ms grande Write `El valor ms grande es`, MAX 4. - Termino

___ Explicamos las distintas estructuras poniendo ejemplos tanto en diagrama de flujo como en pseudocdigo.Por Wilder Urbaez Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base al resultado de esta comparacin, se siga un curso de accin dentro del programa. Cabe mencionar que la comparacin se puede hacer contra otra variable o contra una constante, segn se necesite. Existen tres tipos bsicos, las simples, las dobles y las mltiples.

Simples:

Las estructuras condicionales simples se les conoce como Tomas de decisin . Estas tomas de decisin tienen la siguiente forma:

Pseudocdigo:

Diagrama de flujo:

Dobles:

Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en funcin del cumplimiento o no de una determinada condicin. Se representa de la siguiente forma:

Pseudocdigo:

Diagrama de flujo:

Donde: Si:Indica el comando de comparacin Condicin : Indica la condicin a evaluar Entonces : Precede a las acciones a realizar cuando se cumple la condicin Instruccin(es):Son las acciones a realizar cuando se cumple o no la condicin si no :Precede a las acciones a realizar cuando no se cumple la condicin Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o ms acciones.

Mltiples:

Las estructuras de comparacin mltiples, son tomas de decisin especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma comn es la siguiente:

Pseudocdigo:

Diagrama de flujo:

Mltiples (En caso de):

Las estructuras de comparacin mltiples, es una toma de decisin especializada que permiten evaluar una variable con distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma es la siguiente:

Pseudocdigo:

Diagrama de flujo:

Veamos algunos ejemplos donde se aplique todo lo anterior:

Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe aparecer un mensaje indicndolo. Expresarlo en Pseudocdigo y Diagrama de flujos.

Pseudocdigo:

Diagrama de flujo:

Se pide leer tres notas del alumno, calcular su definitiva en un rango de 0-5 y enviar un mensaje donde diga si el alumno aprob o reprob el curso. Exprese el algoritmo usando Pseudocdigo y diagrama de flujos.

Pseudocdigo:

INICIO Not1, Not2, Not 3 :REAL Def: REAL LEA Nota1, Nota2, Nota3 Def (Not1 + Not2 + Not3) /3 Si Def < 3 entonces Escriba Reprob el curso Sino Escriba Aprob el curso Fin-Si FIN

Diagrama de flujo:

Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o igual a 150 cm enve el mensaje: Persona de altura baja ; si la altura est entre 151 y 170 escriba el mensaje: Persona de altura media y si la altura es mayor al 171 escriba el mensaje: Persona alta . Exprese el algoritmo usando Pseudocdigo y diagrama de flujos.

Pseudocdigo:

INICIO Altura: ENTERO ESCRIBA Cul es tu altura? LEA Altura Si Altura verdadero --> Instrucciones ---> FIN '--> falso --> Instrucciones ' usualmente son estructuras de una repeticin en instrucciones IF/THEN/ELSE/END. 2) Series de repeticin finita INICIO -->BLOQUE DE INSTRUCCIONES ---> REPETIR '-->FIN usualmente son estructuras tipo FOR/NEXT 3) Series de repeticin condicional CONDICION -->verdadero --->Bloque Instrucciones --->Repetir '-> falso -----> salida ciclo. Usualmente son estructuras tipo WHILE/LOOP Los comandos variarn dependiendo del lenguaje que uses pero en general los tipos de estructuras son iguales ya que corresponde a la "forma lgica de programacin"

Algoritmo de Ocurrencias 0-14 aciertosUtilizo el algoritmo genetico Cosi_AG_Condi01 para detectar ocurrencias de 1 signo, 2 y 3, tambien ayuda a determinar los partidos mas fijos (mas ocurrencia de 1 signo, 2 y 3) o menos probables. Para 1 ocurrencia de 14 partidos multiplicas 1 Triples=3 X Reduccion de loto C(14,1)=14, esto te da 42 Para 2 ocurrencias de 14 partidos multiplicas 2 Triples=9 X Reduccion de loto C(14,2)=91, esto te da 861 Para 3 ocurrencias de 14 partidos multiplicas 3 Triples=27 X Reduccion de loto C(14,3)=364, esto te da 9828 Cuando tenemos las valoraciones de 2 equipos de futbol podemos calcular las ocurrencias reales, ejemplo en historial de 832: Cdigo: 1X2 Partido 1 49.04% 26.56% 24.40% 100.00% Partido 2 49.52% 29.09% 21.39% 100.00%

Se esperaria por teoria [de acuerdo a Fortuna] lo siguiente: Cdigo: 11 24.28% 832 202 1X 14.27% 832 119 X1 13.15% 832 109 21 12.08% 832 101 12 10.49% 832 87 XX 7.73% 832 64 2X 7.10% 832 59

X2 5.68% 832 47 22 5.22% 832 43 100.00000000% 832

Pero las ocurrencias exactas se calculan con el algoritmo: Cdigo: 11 25.96% 832 216 1X 13.70% 832 114 X1 11.78% 832 98 21 11.78% 832 98 12 9.38% 832 78 XX 8.53% 832 71 2X 6.85% 832 57 X2 6.25% 832 52 22 5.77% 832 48 100.00000000% 832

Efectivamente con Quininac utilizando Diferencias Progresivas [JoanD?] se obtiene el historial de columnas de ocurrencia de 0 a 14 aciertos ordenados de mayor a menor en forma exacta. Pero me interesa saber si se pueden obtener las ocurrencias para mas de 14 signos (lo maximo seria 42) o menos de 14 signos con el algoritmo de Quininac, ya que es exacto. He estado haciendo experimentos con un algoritmo de loto que hace el calculo muy rapido pero no es exacto, lo que hace es detectar occurrencias de 0 a 14 signos (aciertos), dependiendo de la tabla de conversion 1 a 42 signos. El algoritmo pretende detectar las mejores/peores ocurrencias de 0 a 14 signos usando 1 a 42 signos en un historial de quiniela.

Las columnas finales dependeran de la siguiente tabla siempre y cuando cubra los 14 partidos: Cdigo: TRIPLES MINIMO signos MAXIMO DOBLES 0T 1 14 1 0D 2 15 2 1D 1T 3 16 4 2D 6 17 8 3D 2T 9 18 16 4D 18 19 32 5D 3T 27 20 64 6D 54 21 128 7D 4T 81 22 256 8D 162 23 512 9D 5T 243 24 1024 10D 486 25 2048 11D 6T 729 26 4096 12D 1458 27 8192 13D 7T 2187 28 16384 14D 4374 29 24576 13D*1T 8T 6561 30 36864 12D*2T 13122 31 55296 11D*3T 9T 19683 32 82944 10D*4T 39366 33 124416 9D*5T 10T 59049 34 186624 8D*6T 118098 35 279936 7D*7T 11T 177147 36 419904 6D*8T 354294 37 629856 5D*9T 12T 531441 38 944784 4D*10T 1062882 39 1417176 3D*11T 13T 1594323 40 2125764 2D*12T 3188646 41 3188646 1D*13T 14T 4782969 42 4782969 0D*14T

Por ejemplo, quiero saber cual es la mejor combinacion de 28 [Quininac lo hace solo sobre 14 signos] signos que me puede dar 10 a 14 aciertos en X historial, entonces el algoritmo buscara el maximo de ocurrencias de 10 a 14 signos en X historial basado en 28 signos. Como se ve en la tabla, si uso 28 signos entonces las columnas resultantes estaran en el rango de 2187 a 16384. En este ejemplo el algoritmo buscara las mejores opciones de 10 a 14 signos: Para 10 ocurrencias de 14 partidos multiplicas 10 Triples=59049 X Reduccion de loto C(14,10)=1001, esto te da 59,108,049. Para 11 ocurrencias de 14 partidos multiplicas 11 Triples=177147 X Reduccion de loto C(14,11)=364, esto te da 64,481,508. Para 12 ocurrencias de 14 partidos multiplicas 12 Triples=531441 X Reduccion de loto C(14,12)=91, esto te da 48,361,131. Para 13 ocurrencias de 14 partidos multiplicas 13 Triples=1594323 X Reduccion de loto C(14,13)=14, esto te da 22,320,522. Para 14 ocurrencias de 14 partidos multiplicas 14 Triples=4782969 X Reduccion de loto C(14,14)=1, esto te da 4,782,969. Una vez que el algoritmo detecta los mejores 28 signos entonces solo hay que generar una CP en el Free1x2 basandonos en la tabla de conversion para obtener las columnas de quiniela en el rango 2187 a 16384.

Un ejemplo directo. X Historial = 832 columnas

-Buscar los mejores 28 signos de 42El programa.

Database.- Es una loto tipo 14 de 42, en este paso ya se convirtio el historial de 832 a 42 signos.

Input.- Buscamos 28 signos que nos den las mejores ocurrencias de 10 a 14 signos en el historial de 832.

Output.-Resultados. Como se ve en la imagen se obtiene premio en 657 columnas de 832. Si en teoria se pudiera hacer en Quininac con 28 signos y como sale ordenado de mayor a menor apareceria en resultados algo asi: (Aciertos 10-14 en 657 columnas del historial) 1X 1X 1X 1 1X 12 1 1X2 1 1X 1X 1X2 1X 1X2 Se ve cuantas columnas tienen premios de 10 a 14 aciertos (comparar con el escrutinio de Analizator). 14 aciertos 12

13 aciertos 54 12 aciertos 143 11 aciertos 219 10 aciertos 229 Tabla de Conversion 1 a 42 signos.

Transformacion a quiniela Free1x2:

En Cols Probables generamos 1 cp con los 28 signos (Best So Far 1 2 4 ..) usando la tabla de conversion. Combinacion, Calcular, Grabar. Nos quedan 6912 columnas (rango 2187 a 16384). Garantias de Analizator: Las mismas que el algoritmo.

Este algoritmo se usa en loto para detectar los numeros que nos dan mas premios de cierta categoria en una muestra de historial, o los que nos dan menos premios. Y en este experimento se trata de hacer lo mismo pero aplicado a la quiniela para detectar mejores o peores ocurrencias.

Algoritmo recursivoDe Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda Se ha sugerido que este artculo o seccin sea fusionado con Recursin (discusin). Una vez que hayas realizado la fusin de artculos, pide la fusin de historiales aqu.

Un algoritmo recursivo es un algoritmo que expresa la solucin de un problema en trminos de una llamada a s mismo. La llamada a s mismo se conoce como llamada recursiva o recurrente.FUNCIN Factorial(n) VAR resultado: Entero SI (n