Programacion Ciclos

Embed Size (px)

DESCRIPTION

Breve uso de los ciclos en programacion

Citation preview

Estructuras de datos

CURSO DE LGICA DE PROGRAMACIN Y ALGORITMOSI n s t i t u c i n U n i v e r s i t a r i a S a l a z a r y H e r r e r aL g i c a d e P r o g r a m a c i n

Realizado por

JAIRO HERNANDO RAMREZ MARNDocente de Lgica de Programacin, Algoritmos y Lenguaje de ProgramacinndiceCiclo PARACiclo MIENTRASCiclo REPITAVariables que se combinan con los ciclos Acumulador, contador, promedio y porcentajeEstructuras repetitivas Switche o banderaCiclos anidadosEstructuras repetitivas y estructuras de decisinINICIOLEA numCuad = num ^ 2IMPRIMIR CuadFIN

Este es un proceso sencillo de realizar; pero si en lugar de un nmero fueran 10, 20 o 500, no se podran leer 10, 20 o 500 variables. Lo mejor sera usar una estructura REPETITIVA. Por ejemplo:INICIOPARA X=1, 20, 1LEA numCuad = num ^ 2IMPRIMIR CuadFIN PARAFINEste es un ejemplo de un ciclo PARA, que toma las instrucciones que hay dentro de l, y las repite 20 veces. En este caso leera 20 nmeros y calculara su cuadrado.TIPOS DE ESTRUCTURAS REPETITIVASEn Algoritmos existen los siguientes tipos de estructuras repetitivas y sus respectivas divisiones:

Ciclo PARACiclo MIENTRASRegistro CENTINELA (Cualitativo)Registro IDENTIFICADOR (Cuantitativo)Ciclo REPITA - HASTACICLO PARAEl ciclo PARA se usa cuando se conoce el nmero de veces que se va a repetir el ciclo o cuando ste se hace N veces.La SINTAXIS es la siguiente

PARA X = INICIO, FIN, [INCREMENTO o DECREMENTO]InstruccionesFIN PARA***Si el FIN no se conoce, se lee antes del cicloEXPLICACIN:PARA X = INICIO, FIN, [INCREMENTO o DECREMENTO]

X: Una variable cualquiera (Controladora del ciclo).INICIO: Valor en el que empieza la variable controladora (Normalmente es 1).FIN: Valor en el que termina la variable controladora (Este es el nmero de veces que se repite el ciclo).INCREMENTO o DECREMENTO: Valor que incrementa o decrementa la variable controladora (Normalmente es 1). Dependiendo el ejercicio se pone el incremento o el decremento.Ejemplo: Se pide realizar un algoritmo que imprima los nmeros del 1 hasta el 100.El mismo enunciado est indicando el nmero de veces que se va a realizar el CICLO (100 veces), por tal motivo los valores para el CICLO son (INICIO=1, FIN=100, INCREMENTO=1; este ltimo se usa para que la variable pase de 1 a 2, de 2 a 3, y as sucesivamente hasta 100).

PARA NUM = 1, 100, 1IMPRIMIR NUMFIN PARA Explicacin:PARA NUM = 1, 100, 1IMPRIMA NUMFIN PARAVARIABLEINICIOFININCREMENTOINSTRUCCIONESFIN DEL CICLOCICLOEn este ejemplo la variable controladora del ciclo es la misma que se puede imprimir.Pero en la mayora de los casos no es as. Ejemplo:Desarrolle un algoritmo que lea el nombre y la edad de una persona e imprima su nombre y un mensaje que diga si es mayor o menor de edad.INICIO

LEA NOM, EDSI (ED >= 18) ENT IMPRIMIR NOM, MAYOR DE EDADSINO IMPRIMIR NOM, MENOR DE EDADFINSI

FINPARA X = 1, 25,1

FIN PARAESTO SE REPITIR 25 VECES

Observe que la variable controladora del ciclo (X) es diferente a las otras dos variables: NOM y ED.Calcular el salario neto de N trabajadores, sabiendo que se le hace una retencin del 5% de su bsico. Lea el nmero de horas trabajadas y el valor por hora.INICIO

PARA K = 1, N, 1LEA NHORAS, VLRHORABAS = NHORAS * VLRHORARET = BAS * 0.05NETO = BAS - RETIMPRIMIR NETOFIN PARAFINEste ciclo va desde 1 hasta N empleados; pero como no se conoce su valor (N), antes del ciclo se tiene que leer esta variable.LEA NLo dems es igual al tipo de ciclo PARA en el que se conoce el nmero de veces que se repite. (Como en el ejercicio anterior)Pero no siempre el ciclo tendr incrementos de 1. Existen algoritmos donde se coloquen incrementos de 2 o 3, dependiendo el caso.Desarrolle un algoritmo que imprima los nmeros mltiplos de 5 comprendidos entre 100 y 200.INICIOPARA NUM = 100, 200, 5IMPRIMIR NUMFIN PARAFINEn este ejemplo se muestra el inicio y el fin de la variable del ciclo (100 y 200 respectivamente); pero si ponemos incrementos de 1, se mostrarn los nmeros entre 100 y 200 (100, 101, 102, 103...200) y no los mltiplos de 5 como lo pide el ejercicio; por eso el incremento tiene que ser de 5. Los valores que tomar la variables sern los siguientes:NUM100105110115120...200205Observe que la variable lleg hasta 205; ya que siempre se tiene que pasar del final, para que termine el ciclo. (Ver Funcionamiento del ciclo PARA).INICIOPARA J = 1, 5, 1LEA NUMSI (NUM > 0) ENTIMPRIMIR NUMFINSIFIN PARAFINEn la prueba, J se inicializa en 1 y evala si se pas del final que es (5), como es falso ingresa al ciclo y ejecuta las instrucciones.PRUEBA DE ESCRITORIOJ NUM IMPRIMAImprimir slo los nmeros positivos de un grupo de 5.1Luego se lee un nmero cualquiera en esta lnea (por ejemplo el 4).4Luego imprime el nmero porque 4 es positivo (en esta lnea).4Cuando llega a la lnea del FINPARA, se incrementa la variable del ciclo y va hasta la primer lnea del ciclo y evala si la J se pas del final (5); como es falso (J vale 2), continua leyendo, hasta que llegue a 6. Si leemos los nmeros 3, 0, 10 y 8 mostrar slo los positivos: 4 y 10. En los dems casos slo se lee el nmero; pero no se imprime. -3 3 0 4 10 10 5 -8 62FUNCIONAMIENTO DE UN CICLO PARATERMINAINICIOPARA K = 1, 6, 1LEA NUMCUB = NUM ^ 3IMPRIMIR CUBFIN PARAFINPRUEBA DE ESCRITORIOK NUM CUB IMPHacer un algoritmo que lea 6 nmeros e imprimir su cubo.1327Se imprime CUB27Al llegar al FINPARA incrementa la variable y regresa a la primer lnea del CICLO y evala si K se pas del final. Si es Verdadero sigue despus del FIN PARA, sino continua leyendo.Como K no se pas del FIN, sigue leyendo.28512512346464451251255288697297297Se lee NUMK inicia en 1 y evala si se pas del final (o cual es FALSO; porque 1= 18)SMY = SMY + ED SINOSMN = SMN + ED FINSIFINPARAIMPRIMIR SMY, SMNFINHacer un algoritmo que lea la EDAD de 6 personas e imprima la suma de edad de los mayores de edad y de los menores.FUNCIONAMIENTO DE UN ACUMULADORPRUEBA DE ESCRITORIOX SMY SMN EDAD IMPRIMA1 0017 17223233184143576512296219797297CMY, CMN, SMY, SMN = 0PARA X = 1, 6, 1 LEA EDAD SI (EDAD >= 18)CMY = CMY + 1SMY = SMY + ED SINOCMN = CMN + 1SMN = SMN + ED FINSIFINPARAPROMMY = SMY/ CMYPROMMN = SMN/ CMNIMPRIMIR PROMMY, PROMMNHacer un algoritmo que lea la EDAD de 6 personas e imprima el porcentaje de mayores de edad y el de menores.PRUEBA DE ESCRITORIO X SMY SMN EDAD PROMMY PROMMN IMP

CMY CMN 1 0017 17223233184143576512296219724,2 14,5EL funcionamiento es igual al de los contadores y acumuladores; slo que al terminar el ciclo se calculan los promedios (Para calcularlos se tiene que CONTAR y ACUMULAR).24,214,5001234127FUNCIONAMIENTO DE UN PROMEDIOSWITCHES O BANDERASSon elementos de algoritmos fundamentales para buscar elementos o para determinadas situaciones en las cuales se cumpla una condicin especfica. Teniendo como principal caracterstica que toma slo dos estados o valores (1 o 0, Encendido o Apagado, Verdadero o False, V o F, entre otros valores).Esta variable se usa con el nombre SW o BAND. Se inicializa antes del ciclo con cualquiera de los dos valores. Y dentro de ciclo cambia al otro valor cuando cumpla determinada condicin. La SINTAXIS es la siguiente:SW = 0CICLOSI CONDICIN SW = 1FINSIFIN SI FINCICLOSW = VERDADEROCICLOSI CONDICIN SW = FALSOFINSIFIN SI FINCICLOObserve que se puede inicializar en cualquier valor (normalmente es el negativo: Apagado, F, 0, o Falso). Despus del ciclo se puede preguntar por el estado o el valor de esa variable e imprimir los mensajes que correspondan o sean necesarios.El enunciado indica que se debe determinar si se digit un nmero negativo (ESA ES LA CONDICIN para cambiar el estado de la variable). SW = 0PARA K = 1, 90, 1LEER NUMSI (NUM < 0) ENTONCESSW = 1FINSIFIN PARASI (SW = 1) ENTONCESIMPRIMA SE DIGIT UN NMERO NEGATIVOFINSI Explicacin:Ejemplo: Se pide realizar un algoritmo que lea 90 nmeros e imprima si se digita algn nmero negativo.SW = 0PARA K = 1, 90, 1LEER NUMSI (NUM < 0) ENTONCESSW = 1FINSIFIN PARASI (SW = 1) ENTONCESIMPRIMA SE DIGIT UN NMERO NEGATIVOFINSISE INICILIZA EN ALGN VALOR LA VARIABLE SW ANTES DEL CICLOSE CAMBIA EL VALOR DE LA VARIABLE CUANDO LA CONDICIN SEA VERDADERASE PREGUNTA DESPUS DEL CICLO POR ALGUNO DE LOS VALORES DE LA VARIABLE Y SE IMPRIME EL MENSAJESW = 0 PARA K = 1, 90, 1LEER NUMSI (NUM < 0) ENTSW = 1FINSIFIN PARASI (SW = 1) ENTONCES IMPRIMA SE DIGIT UN NMERO NEGATIVOFINSIPRUEBA DE ESCRITORIO SW NUM IMPRIMAHacer un algoritmo que lea 90 nmeros. Imprimir si se lee algn nmero negativo.0 87-21 Aqu se pregunta. Como sw = 1, imprime el mensajeSe digit un # negativoFUNCIONAMIENTO DE UNA BANDERAEn esta lnea se INICIALIZA el sw o bandera en 0, antes del ciclo.En esta lnea se leen nmeros, y slo cambia el SW a 1, cuando se lea algn nmero negativo.Si el 2 es el nmero 80 ledo. Inmediatamente cambia sw a 1Leer los nombres de 150 personas e imprimir si se ley algn nombre igual a Juan o no.BAND = FALSOPARA I = 1, 150, 1LEA NOMBRESI (NOMBRE = Juan) Entonces BAND = VERDADEROFINSIFINPARASI BAND = VERDADERO Entonces IMPRIMA Se ley un nombre juanSINO IMPRIMA No se ley un nombre juanFINSILa nica aclaracin que hay que hacer de este algoritmo es que la condicin para cambiar el estado de la bandera es NOMBRE = JUAN. Luego al finalizar se imprime si se encontr o no un nombre JUAN (este ejercicio pide los dos mensajes, el ejercicio anterior, slo pide imprimir si se ley un nmero negativo nada mas).