Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 1 Fundamentos de Informática / Computación Universidad Tecnológica Nacional Facultad Regional Haedo 1 Operadores Mixtos – Ciclo Definido (for) Contadores – Acumuladores – Concepto de Bandera Ciclos Condicionados (while / do – while) Los operadores mixtos son aquellos que permiten realizar una operación aritmética y una asignación. En general las operaciones se expresan como: variable a asignar operador variable a asignar operador variable o constante El lenguaje C presenta los siguientes operadores mixtos : Operador Ejemplo Forma desarrollada Mapa de Memoria mixto int x = 5 , y = 8 ; (en otros lenguajes y C) x y 5 8 ++ x ++ ; x = x + 1; 6 - - y - - ; y = y – 1 ; 7 + = x += 4 ; x = x + 4 ; 10 y += x ; y = y + x ; 17 - = x -= 2 ; x = x – 2 ; 8 * = x *= y ; x = x * y ; 136 / = x /= y ; x = x / y ; 8 • El operador mixto ++ incrementa a la variable en +1 y el operador mixto - - la decrementa en -1 • Los demás operadores aplican la operación correspondiente a los dos operandos • El operando a izquierda del operador siempre es una variable a la cual se le asigna el resultado de la operación y el operando a derecha puede ser una variable o una constante 2 1 2 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 2 El ciclo definido for tiene como variable de control del ciclo a una variable contadora que llamaremos i El ciclo for tiene tres argumentos separados por un punto y coma, a saber : for ( i=valor_inicial ; i <= valor_final ; i ++ ) para valor_inicial < valor_final i = valor_inicial inicializa al contador en el valor a partir del cual empezará a contar, por ejemplo i=1 ; i <= valor_final condición que controla la entrada y salida del ciclo, siempre que la condición sea verdadera se ingresa al ciclo para ejecutar la o las acciones que están dentro del cuerpo del ciclo de repetición, solo cuando la condición sea falsa se puede salir de él. El valor final define la cantidad de veces que se debe repetir la ejecución de las acciones indicadas dentro del ciclo, por ejemplo i<= 6 siempre que el contador i sea menor o igual a 6 se ingresa al ciclo, solo cuando i sea igual a 7 se sale de él y teniendo en cuenta que el valor inicial fue 1 esto significa que se ingresó al ciclo las 6 veces que se deseaban. i++ expresión que incremente el valor de i en 1 ( contador ), este incremento es el que en algún momento llevará al contador a valer el valor_final+1, en nuestro ejemplo será el valor 7 y se podrá salir del ciclo. La primera vez que se ingresa al ciclo se inicializa el contador en el valor inicial, luego se verifica la condición de control y si esa condición es verdadera se ingresa al ciclo y se ejecutan la o las acciones indicadas en el cuerpo del ciclo, cuando finaliza la ejecución vuelve al argumento del ciclo for, esta vez incrementa al contador ( i++), verifica la condición de control y si es verdadera vuelve a entrar a ejecutar las acciones del ciclo para luego volver al argumento incrementando al contador y verificando la condición. Este proceso se repetirá hasta que la condición de control sea falsa, es decir cuando el contador es mayor al valor final. Las estructuras repetitivas o ciclos permiten ejecutar una acción o un conjunto de acciones un número determinado de veces. Podemos distinguir dos tipos de iteración, los ciclos definidos y los ciclos condicionados. En un ciclo definido, se conoce la cantidad de veces a entrar al ciclo. En un ciclo condicionado, no se conoce la cantidad de veces a entrar al ciclo, esa cantidad la determina el resultado de verdad de una condición. 3 Ejemplo 1: Informar los números del 1 al 6 S i i = 1 ; i <= 6 ; i ++ Inicializar el contador Se ejecuta al entrar por primera vez al ciclo, (se realiza por única vez). Luego verifica la condición Condición de control Se evalúa todas la veces Mientras sea verdadera entra al ciclo Cuando sea falsa sale del ciclo Incremento del contador Se ejecuta a partir del primer ingreso al cuerpo del ciclo y hasta el final del ciclo, luego de cada incremento verifica la condición En el cuerpo del ciclo la acción a realizar es informar el contador Luego de ejecutada la acción del cuerpo del ciclo vuelve al argumento del ciclo for para incrementar el contador Verdadera entra Falsa sale # include <stdio.h> # include <stdlib.h> main() { int i; for (i=1 ; i<=6 ; i++) printf(" %d - ", i ) ; printf("\n"); system("PAUSE"); } Programa C 4 1 2 3 4 5 1 3 4 5 1 2 3 4 5 1 3 4 5 i Pantalla 6 Prueba de Escritorio 6 7 3 4 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 3 Ejercicio 1 : Escribir la cuenta regresiva del 10 al 0 Ejercicio 2 : Escribir los números pares del 2 al 10 S i i = 2 ; i <= 10; i +=2 S i i = 10 ; i >= 0 ; i - - # include <stdio.h> # include <stdlib.h> main() { int i; for (i=10 ; i>=0 ; i--) printf(" %d - ", i ) ; printf("\n"); system("PAUSE"); } # include <stdio.h> # include <stdlib.h> main() { int i; for (i=2 ; i<=10 ; i+=2) printf(" %d - ", i ) ; printf("\n"); system("PAUSE"); } 5 6 Ejemplo 2 : Fuera del ciclo se informan los contadores Los contadores permiten contar cuantas veces sucede un evento. Los acumuladores aditivos, permiten sumar los sucesivos valores que puede asumir una variables o bien sumar una cierta cantidad de veces el valor de una constante E i = 1 ; i <= 5 ; i ++ cp = 0 ; cn = 0 ; cc = 0 nro cc ++ s cp , cn , cc Los contadores deben inicializarse en cero antes de entrar al ciclo El ingreso de la variable que va a almacenar los sucesivos números a procesar se hace dentro del ciclo for F nro > 0 cp ++ V nro < 0 cn ++ V F Dentro del ciclo se incrementan los contadores donde corresponda Ingresar 5 números, calcular e informar la cantidad de números positivos, la cantidad de números negativos y la cantidad de ceros ingresados 5 6 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 4 7 # include <stdio.h> # include <stdlib.h> main() { int i, nro, cp=0, cn=0, cc=0; for ( i=1 ; i<=5 ; i++ ) { printf("Ingresar un numero: "); scanf("%d",&nro); if (nro>0) cp++; else if (nro<0) cn++; else cc++; } printf("La cantidad de positivos es: %d\n", cp); printf("La cantidad de negativos es: %d\n", cn); printf("La cantidad de ceros es: %d\n", cc); system("PAUSE"); } Cuando hay más de una acción a ejecutarse dentro del ciclo for hay que encerrarlas entre llaves E i = 1 ; i <= 5 ; i ++ cp = 0 ; cn = 0 ; cc = 0 nro nro > 0 nro < 0 cp ++ cn ++ cc ++ s cp , cn , cc V F V F Diagrama de Flujo Programa C Ejemplo 3: Dados dos números enteros positivos, informar el producto de ambos por sumas sucesivas. E nro1 , nro2 producto + = nro2 S producto i = 1 , i <= nro1 , i ++ , producto = 0 producto nro1 nro2 i 5 40 4 8 12 16 20 1 2 3 4 5 6 0 4 8 12 16 1 2 3 4 5 # include<stdio.h> # include<stdlib.h> main() { int i, nro1, nro2, producto=0; printf("Ingresar dos numeros enteros positivos: "); scanf("%d %d", &nro1, &nro2); for (i=1 ; i<=nro1 ; i++) producto += nro2; printf("El producto de %d por %d es: %d\n", nro1, nro2, producto); system("PAUSE"); } Al igual que a los contadores, a los acumuladores también hay que inicializarlos en cero antes de usarlos Acumulador aditivo suma nro1 veces el valor de la variable nro2 8 7 8 Universidad Tecnológica Nacional FacultadRegional Haedo Fundamentos de Informática Computación CPB 5 Ejemplo 4: Dados 5 números informar el promedio de los positivos, el promedio de los negativos y la cantidad de ceros. E i = 1 ; i <= 5 ; i ++ cp = 0 ; cn = 0 ; cc = 0 ; sp = 0 ; sn = 0 nro nro > 0 nro < 0 cp ++ sp += nro cn ++ sn += nro cc ++ s cc s s cp == 0 “No ingresaron numeros positivos “ sp / cp s s cn == 0 “No ingresaron numeros negativos“ sn / cn Hay que verificar que el contador sea distinto de cero, ya que al ser el divisor en el cálculo del promedio, se evitará así un posible error de división por cero Cantidad de ceros Promedio de positivos Promedio de negativos V F V F 9 #include <stdio.h> #include <stdlib.h> main() { int i, nro, cp=0, cn=0, cc=0 , sp=0, sn=0; for (i=1 ; i<=5 ; i++) { printf("Ingresar un numero: "); scanf("%d",&nro); if (nro>0) { cp++; sp+=nro; } else if (nro<0) { cn++; sn+=nro; } else cc++; } printf("Cantidad de ceros ingresados: %d\n", cc); if (cp==0) printf("No se ingresaron positivos\n"); else printf("El promedio de los positivos es: %.2f\n", (float) sp/cp ); if (cn==0) printf("No se ingresaron negativos \n"); else printf("El promedio de los negativos es: %.2f\n", (float) sn/cn ); system("PAUSE"); } Informa el resultado de la división y para que el resultado sea real se hace un cast o casting 10 9 10 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 6 Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos. Son variables que se utilizan para indicar si un evento determinado ocurrió o no ocurrió. Estas variables toman solo dos valores posibles, primeramente se le asigna un valor clave, por ejemplo cero para indicar que el evento no ocurrió y solamente cuando el evento esperado ocurre hay que cambiar el estado de la bandera asignándole otro valor clave, por ejemplo uno, para indicar que el evento ya ocurrió Para poder informar el mayor número ingresado hay que comparar cada número entre sí hasta encontrar al mayor de ellos. El ciclo for permite ingresar los 5 valores indicados y cada número es ingresado sucesivamente en una única variable (nro), lo que significa que con cada nuevo número ingresado se pierde el número ingresado anteriormente por lo tanto la comparación entre ellos se hace imposible. Esto se soluciona guardando el primer valor en una variable auxiliar (max) , de esta manera se podrá comparar el segundo valor con el guardado en la variable auxiliar que contiene el primer valor, tal que si el segundo número es mayor al primero, se reasigna este nuevo valor en la variable auxiliar. Este proceso se repite para cada nuevo número ingresado, quedando siempre en la variable auxiliar el valor mayor. La bandera se utiliza para poder determinar cuando se ha ingresado el primer número y así poder guardarlo en la variable auxiliar. La bandera tendrá un valor cero antes de entrar al ciclo que permite el ingreso de los sucesivos números a procesar y se cambiará al valor uno cuando se detecta que se ha ingresado el primer número del conjunto. A partir de ese cambio de estado de la bandera, comienza el proceso de comparación para identificar al mayor número ingresado. 11 Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos. E i = 1 ; i <= 5 ; i ++ bandera = 0 nro bandera == 0 nro>max max = nro bandera = 1 max =nro s max 1- Se asigna el valor cero a la bandera antes del ciclo 2 – Se ingresa el primer número a procesar 3 - Si la bandera está en cero, eso significa que es la primera vez que se ingresa al ciclo y por lo tanto en nro está el primer número ingresado 4 – - Se guarda el primer número ingresado en la variable auxiliar - Se cambia el estado de la bandera a 1 para indicar que ya ingresó el primer número del conjunto 5 - A partir del segundo ingreso de datos y al estar la bandera en 1 comienza el proceso de comparación entre el nuevo valor ingresado y el que está en la variable auxiliar que es el valor mayor hasta el momento 6 - Al salir del ciclo se informa el contenido de la variable max que es la que tiene el valor del mayor número ingresado V F V F 12 11 12 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 7 Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos. #include <stdio.h> #include <stdlib.h> main() { int i, max, nro, bandera=0; for (i=1 ; i<=5 ; i++) { printf("Ingresar un numero: "); scanf("%d",&nro); if (bandera==0) { max=nro; bandera=1; } else if (nro>max) max=nro; } printf("El numero mayor es: %d\n", max); system("PAUSE"); } E i = 1 ; i <= 5 ; i ++ bandera = 0 nro bandera == 0 nro>max max = nro bandera = 1 max =nro s max V F V F Diagrama de Flujo Programa C 13 Ejemplo 2 : Ingresar 10 números, calcular e informar el mayor negativo, el menor positivo y la cantidad de ceros. Diagrama de Flujo E i = 1 ; i <= 10 ; i ++ bp = 0 ; bn = 0 ; cc = 0 nro nro > 0 nro < 0 cc ++ s cc s s bp == 0 “No ingresaron numeros positivos “ min s s bn == 0 “No ingresaron numeros negativos“ max bp == 0 nro<min min = nro bp = 1 min=nro V F V F bn == 0 nro>max max = nro bn = 1 max=nro V F V F V F V F Antes de informar el valor del máximo o mínimo hay que verificar el estado de sus respectivas banderas porque si existe la posibilidad que alguna de ellas o ambas no hayan cambiado su estado inicial no hay un máximo o mínimo que informar 14 13 14 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 8 #include <stdio.h> #include <stdlib.h> main() { int i, max, min, nro, bp=0, bn=0, cc=0; for (i=1 ; i<=10 ; i++) { printf("Ingresar un numero: "); scanf("%d",&nro); if (nro>0) if (bp==0) { min=nro; bp=1; } else { if (nro<min) min=nro; } else if (nro<0) if (bn==0) { max=nro; bn=1; } else { if (nro>max) max=nro; } else cc++; } printf("La cantidad de ceros es: %d\n", cc); if (bp==0) printf("No se ingresaron positivos \n" ); else printf("El menor positivo es: %d\n", min); if (bn==0) printf("No se ingresaron negativo \n" ); else printf("El mayor negativo es: %d\n", max); system("PAUSE"); } Como este if no tiene salida por el falso no es necesario poner el else correspondiente y por esta razón si o si se necesitan las llaves del else que lo contiene Aquí también estamos frente a la misma situación 15 Un ciclo condicionado se utiliza cuando no se conoce la cantidad de veces que se debe repetir la ejecución de una instrucción o un conjunto de instrucciones. En estas estructuras, la entrada al ciclo y la salida del ciclo está dada por la evaluación de una condición. Existen dos estructuras condicionadas, a saber: 1 - Estructura Repetitiva while 1. Se ingresa al ciclo evaluando primero una condición. 2. Mientras la condición sea verdadera, se ingresa al cuerpo del ciclo de repetición y se ejecutan las instrucciones que están dentro de él. 3. Solo cuando la condición sea falsa se puede salir del ciclo de repetición. 4. En consecuencia, a esta estructura se puede ingresar cero, una o varias veces. Ejemplo 1: Ingresar un conjunto de números y calcular e informar la cantidad de números ingresados y la suma de todos esos números. Para fin de ingreso de datos ingresar el número cero. En este caso la cantidad de números a procesar no es un dato conocido sino que, por el contrario, es un dato a obtener (resultado). La condición de entrada al ciclo y de salida de él está dada por un valor clave en una variable de control del ciclo que será por lo general un dato de entrada y ese valor clave es un valor que no pertenece al conjunto de datos aprocesar (no es válido), por lo tanto no debe ser procesado ya que tiene como objetivo ser la marca de fin del ciclo. 16 15 16 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 9 Ejemplo 1 : Ingresar un conjunto de números y calcular e informar la cantidad de números ingresados y la suma de todos esos números. Para fin de ingreso de datos ingresar el número cero. cant = 0 ; sum = 0 nroE nro nro != 0 cant ++ sum += nro E S cant , sum Primero hay que ingresar la variable de control del ciclo El ciclo while evalúa la condición antes de entrar al ciclo, si es verdadera entra, si es falsa no entra. Por lo tanto, mientras el contenido de la variable de control sea distinto al dato clave indicado, entrará al ciclo V La última instrucción antes de cerrar el ciclo while tiene que ser ingresar la variable de control del ciclo, de esta manera se actualiza el contenido de la variable de control y permite una nueva evaluación de la condición del ciclo. El último valor a ingresar en esta variable será el valor clave, en este caso el cero que permitirá la salida del ciclo while F 17 #include <stdio.h> #include <stdlib.h> main() { int nro, cant=0, sum=0; printf("Ingresar un numero entero ( ingresar cero para terminar ): "); scanf("%d", &nro); while ( nro != 0 ) { cant++; sum+=nro; printf("Ingresar un numero entero: "); scanf("%d", &nro); } printf("La cantidad de numeros ingresados es %d\n", cant); printf("La suma de los numeros ingresados es %d\n", sum); system("PAUSE"); } cant = 0 ; sum = 0 nroE nro nro != 0 cant ++ sum += nro E S cant , sum Ejemplo 1 : Ingresar un conjunto de números y calcular e informar la cantidad de números ingresados y la suma de todos esos números. Para fin de ingreso de datos ingresar el número cero. 18 Diagrama de Flujo Programa C 17 18 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 10 Diseñar un programa que permita ingresar la edad en años de un grupo de personas e informe: 1- cantidad de personas procesadas 2- edad promedio del grupo 3- mayor edad ingresada No se conoce la cantidad de personas del grupo, para fin de ingreso de datos ingresar un número negativo en edad. Ejemplo 2: La edad es la variable que contiene la marca de fin, es decir, el contenido de esta variable controla la entrada al ciclo y la salida de él 19 cpers=0 ; suma=0 ; bandera=0 edadE edadE cpers++ suma += edad bandera == 0V V F Fmax=edad bandera=1 edad>max max=edad cpers != 0 cpers suma/cpers maxS edad >= 0 V S “No se procesaron datos” F 2- El ciclo evalúa la marca de fin si la condición es verdadera (distinta a la marca de fin) entra al ciclo Si es falsa, no entra al ciclo 1- ingresar la variable que permitirá entrar o no al ciclo while 3- la última instrucción dentro del ciclo debe ser ingresar la variable de control , de esta manera se actualiza la condición permitiendo el reingreso al ciclo o la salida de él Punto 1 y 2 Punto 2 Punto 3 Verificar si se ingresó al ciclo alguna vez, antes de informar los resultados. 20 19 20 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 11 #include <stdio.h> #include <stdlib.h> main() { int edad, max, cpers=0, bandera=0, suma=0; printf("Ingresar la edad de la persona( ingresar un numero negativo para terminar ): "); scanf("%d", &edad); while (edad >= 0) { cpers++; suma+=edad; if (bandera==0) { max=edad; bandera=1; } else if (edad>max) max=edad; printf("Ingresar la edad de la persona: "); scanf("%d", &edad); } if (cpers!=0) { printf("La cantidad de personas procesadas es %d\n", cpers); printf("La edad promedio del grupo es %d\n", suma/cpers); printf("La edad maxima es %d\n", max); } else printf("No se ingresaron datos\n"); system("PAUSE"); } Como a un ciclo while puede NO ingresarse nunca, antes de informar el resultado de una división cuyo divisor es un contador que puede quedar en cero y/o hay que informar los datos de un máximo o mínimo SIEMPRE hay que verificar si se ingresó alguna vez al ciclo para evitar errores de división por cero o informar variables sin contenido válido También podría haberse usado la bandera para esta verificación 21 Diseñar un programa que permita ingresar la edad de un grupo de N personas e informe: 1- edad promedio del grupo 2- mayor edad ingresada Ejemplo 3: Se conoce la cantidad de personas, por lo tanto se sabe cuantas veces se ingresará al ciclo de repetición La estructura repetitiva a elegir es el ciclo definido for 22 21 22 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 12 suma=0 ; bandera=0 cpers E suma += edad bandera == 0 V V F F max=edad bandera=1 edad>max max=edad cpers != 0 eprom = suma/cpers eprom , max S i=1 , i<=cpers , i++ V S “No se procesaron datos” F El ciclo definido controla ingresar al ciclo cpers veces Se ingresa la cantidad de personas reingreso al ciclo incrementando la variable de control ( i ) hasta que la condición sea falsa edad E El dato a procesar se ingresa dentro del ciclo Como la cantidad de personas (cpers) puede ser cero, hay que verificar la entrada al ciclo for antes de informar (también podría haberse usado la bandera para realizar dicha verificación) 23 #include <stdio.h> #include <stdlib.h> main() { int i, edad, max, cpers, bandera=0, suma=0; printf("Ingresar la cantidad de personas: "); scanf("%d", &cpers); for (i=1 ; i<=cpers; i++) { printf("Ingresar la edad de la persona: "); scanf("%d", &edad); suma+=edad; if (bandera==0) { max=edad; bandera=1; } else if (edad>max) max=edad; } if (cpers!=0) { printf("La edad promedio del grupo es %d\n", suma/cpers); printf("La edad maxima es %d\n", max); } else printf("No se ingresaron datos\n"); system("PAUSE"); } 24 23 24 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 13 De un cajero electrónico se tiene la siguiente información de cada operación realizada por los cliente, durante un día : • número de cuenta • tipo de operación ( 1: extracción – 2: depósito – 3: consulta ) • en caso de ser una extracción o depósito, el monto de la operación. Se pide informar: 1 – Cantidad de extracciones realizadas 3 – Porcentaje de consultas hechas a lo largo del día. 2 – Mayor monto depositado en el cajero y número de cuenta donde se hizo dicho depósito. No se conoce la cantidad de operaciones que se realizarán a lo largo del día, para fin de ingreso de datos ingresar número de cuenta igual cero Ejemplo 4: 25 total = 0 ; cextr = 0 ; ccons = 0 ; bandera = 0 E nrocuenta nrocuenta != 0 E oper ccons++ FV E monto oper == 2 cextr++ FV bandera == 0 max=monto cmax=nrocuenta bandera=1 monto>max max=monto cmax=nrocuenta V V F F oper != 3 E nrocuenta total++ Continúa en diapositiva siguiente Cuando hay más de un dato de entrada, en el ciclo while primero se ingresa solamente el dato de la variable de control del ciclo, es decir la que tiene la marca de fin Dentro del ciclo se ingresan los datos restantos . A estos datos los llamaremos datos asociados a la marca de fin La última instrucción dentro del ciclo debe ser solamente la variable de control con marca de fin 26 25 26 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 14 S cextr total != 0 ccons*100/total S V S “ No se realizaron operaciones“ F S S bandera != 0 max, cmax “ No se realizaron depósitos “ V F Continuación… 27 #include <stdio.h> #include <stdlib.h> main() { int nrocuenta, oper, cmax, total=0, cextr=0, ccons=0, bandera=0; float monto, max; printf("Ingresar numero de cuenta( ingresar cero para terminar ): "); scanf("%d", &nrocuenta); while (nrocuenta!=0) { printf("Ingresar tipo de operacion( 1-extraccion 2-deposito 3-consulta ): "); scanf("%d", &oper); total++; if (oper!=3) { printf("Ingresar monto de la operacion: "); scanf("%f", &monto); if (oper==2) if (bandera==0) { max=monto; cmax=nrocuenta; bandera=1; } else { if (monto>max) { max=monto; cmax=nrocuenta; } } else cextr++; } else ccons++; printf("Ingresar numero de cuenta: "); scanf("%d", &nrocuenta); } …..continúa … continuación if (total!=0) { printf("La cantidad de extracciones es %d\n", cextr); printf("El porcentaje de consultas es %.2f\n", (float)ccons*100/total); if (bandera!=0) { printf("El mayor deposito realizado fue de $%.2f\n", max); printf("Cuenta donde se hizo el deposito: %d\n", cmax); } else printf("No se hicieron depositos\n"); } else printf("No hubo movimientos de cuentas\n"); system("PAUSE"); } 28 27 28 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 15 2 - Estructura Repetitiva do - while 1. Se ingresa al ciclo ejecutando las instrucciones que están en el cuerpo del ciclo. 2. La condición de control se evalúa al final del ciclo. diferencia con respecto al ciclo while Mientras la condición sea verdadera, se ingresa al cuerpo del ciclo de repetición y se ejecutan las instrucciones que están dentro de él. 3. Solo cuando la condición sea falsa se puede salir del ciclo de repetición. 4. En consecuencia, a esta estructura se puede ingresar una o varias veces. 5. Para utilizar esta estructura eficientemente, la marca de fin, a diferencia del while, debe ser un dato válido. Ejemplo 1 : Ingresar dos número y diseñar el siguiente menú de opciones: 1- Suma 2- Resta 3- Multiplicación 4- División 5- Salir El programa debe permitir elegir la opción deseada e informar el resultado acorde a dicha opción, luego debe volver a mostrar el menú de opciones para poder elegir una nueva opción. Repetir este proceso hasta que se elija la opción 5 de salida. 29 Entra al cuerpo del ciclo ejecutando las instrucciones que hay dentro de él. Se ingresa siempre al ciclo, por lo menos una vez Al final se evalúa la condición del ciclo, mientras sea verdadera vuelve a entrar al ciclo. Cuando sea falsa sale del ciclo n1 , n2E S “Elegir opcion del menu: 1- Suma 2- Resta 3- Multiplicacion 4- Division 5- Salir opcion E opcion 1 2 3 4 n1 + n2 S n1 - n2 S n1 * n2 S n1/n2 S “error”S n2!=0V F opcion != 5 V F 30 29 30 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 16 #include <stdio.h> #include <stdlib.h> main() { int n1, n2, opcion; printf("Ingresar dos numeros: "); scanf("%d%d",&n1,&n2); do { printf("Elegir opcion del menu\n"); printf(“ 1- Suma\n 2- Resta\n 3- Multiplicacion\n 4- Division\n 5- Salir\n"); scanf("%d",&opcion); switch (opcion) { case 1 : printf("La suma de %d y %d es: %d\n", n1, n2, n1+n2); break; case 2 : printf("La resta de %d y %d es: %d\n", n1, n2, n1-n2); break; case 3 : printf("La multiplicación de %d y %d es: %d\n", n1, n2, n1*n2); break; case 4 : if (n2!=0) printf("La division de %d y %d es: %.2f\n", n1, n2, (float)n1/n2); else printf("Error de division por cero\n"); break; } } while (opcion!=5) ; } 31 Ejemplo 2 : Diseñar un algoritmo que permita validar un número de mes. Informar la cantidad de veces que se ingresó mal dicho número de mes Se entra al ciclo pidiendo un número de mes, el ciclo evalúa si ese número ingresado está fuera de rango, es decir, si es menor a 1 o mayor a 12, en ese caso, como el número no corresponde a un mes válido se ingresa nuevamente al ciclo y se pide un nuevo número de mes. Mientras el número ingresado sea un número no válido se repite el ingreso del número de mes, solo saldrá del ciclo cuando el número ingresado esté dentro del rango 1 .. 12 mes mes <1 || mes >12 E c = 0 c ++ c-1S #include <stdio.h> #include <stdlib.h> main() { int mes, c=0; do { c++; printf("Ingresar un numero de mes: "); scanf("%d",&mes); } while (mes<1 || mes>12) ; printf(“El numero de mes se ingreso mal %d veces\n", c-1); system("PAUSE"); } 32 31 32 Universidad Tecnológica Nacional Facultad Regional Haedo Fundamentos de Informática Computación CPB 17 Ejercicio 1: Ingresar 20 temperaturas, calcular e informar: 1. Cantidad de temperaturas bajo cero. 2. Promedio de las temperaturas restantes. Ejercicio 2: Ingresar 10 números, calcular e informar: 1. Promedio de los negativos 2. El mayor positivo 3. Porcentaje de ceros Ejercicio 3: Un comercio necesita un programa para registrar los movimientos de caja a lo largo de un día de trabajo. El programa debe pedir ingresar el importe inicial de dinero que hay en la caja al abrir el negocio, luego se irán ingresando los importes de ventas y de pagos que se produzcan a lo largo del día. Al cierre de la caja, ingresar como importe un valor cero. Calcular e informar: 1. El importe final de la caja al cierre del día. 2. Cantidad de ventas realizadas (importes positivos) 3. Importe total de los pagos realizados (importes negativos). 4. Importe de la mayor venta realizada. 33 Ejercicio 4: Ingresar número de documento, peso y altura de 10 personas, calcular e informar: 1. Cantidad de personas que pesan más de 70 kgr. 2. La altura promedio del grupo. 3. Número de documento, peso y altura de la persona con el mayor número de documento. Para finalizar el ingreso de datos ingresar cero como número de documento. Ejercicio 5: Rehacer el ejercicio anterior para un conjunto de personas (no se conoce la cantidad) Para finalizar el ingreso de datos ingresar número de documento igual a cero. 34 33 34
Compartir