Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Informática I Departamento de Ingeniería Electrónica Control de flujo en C Informática I – Ingeniería Electrónica Control de flujo En esta etapa vamos a conocer y aplicar las estructuras básicas de la programación estructurada en el lenguaje C: • Selección / Ejecución condicional if switch • Iteración / Lazo / Bucle while do while for Informática I – Ingeniería Electrónica Ejercicio: Realice un programa que permita ingresar el legajo y la nota promedio de un alumno. El alumno estará aprobado si su nota es al menos 6. El programa deberá imprimir el siguiente mensaje antes de finalizar: “El alumno con legajo xxx se encuentra aprobado o desaprobado”, según corresponda. Informática I – Ingeniería Electrónica Diagramación estructurada Cuando nos enfrentamos a la necesidad de desarrollar un algoritmo, es buena idea plantearlo en papel, antes de iniciar la codificación. Esto nos permite: • Abstraernos de las dificultades que incorpora un lenguaje de programación, como errores relacionados a su forma de uso y sintaxis. • Pensar y comprender con mas claridad la forma en la que funciona el algoritmo. • Corregir errores en la lógica planteada mas rápidamente que si trabajaamos sobre código. Existen distintas herramientas que nos permiten escribir un algoritmo, como el flujograma, el diagrama de chapin o el pseudocódigo. Informática I – Ingeniería Electrónica Diagramación estructurada Mas información sobre diagramación estructurada: https://www.youtube.com/watch?v=esuqtcwOmtk. https://www.youtube.com/watch?v=esuqtcwOmtk Informática I – Ingeniería Electrónica Ejercicio Pseudocódigo Leer legajo Leer nota SI nota >= 6 Imprimir: el alumno (legajo) está aprobado SI NO Imprimir: el alumno (legajo) está desaprobado Informática I – Ingeniería Electrónica Ejercicio Pseudocódigo Leer legajo Leer nota SI nota >= 6 Imprimir: el alumno (legajo) está aprobado SI NO Imprimir: el alumno (legajo) está desaprobado Flujograma Inicio Nota >= 6 Imprimir: Alumno Aprobado Imprimir: Alumno desaprobado Fin VERDADERA FALSA Leer legajo Leer nota Informática I – Ingeniería Electrónica Ejercicio Pseudocódigo Leer legajo Leer nota SI nota >= 6 Imprimir: el alumno (legajo) está aprobado SI NO Imprimir: el alumno (legajo) está desaprobado Diagrama de chapin V F Imprimir “Desaprueb a” Nota>=6 Imprimir “Aprueba” Leer nota Leer legajo Inicio Informática I – Ingeniería Electrónica Ejercicio Pseudocódigo Leer legajo Leer nota SI nota >= 6 Imprimir: el alumno (legajo) está aprobado SI NO Imprimir: el alumno (legajo) está desaprobado Salto condicional Flujograma Inicio Nota >= 6 Imprimir: Alumno Aprobado Imprimir: Alumno desaprobado Fin VERDADERA FALSA Leer legajo Leer nota Informática I – Ingeniería Electrónica if (salto condicional) Sintaxis: if (<condición>) { bloque A } else { bloque B } Inicio <condición> bloque A bloque B Fin VERDADERA FALSA Informática I – Ingeniería Electrónica if (salto condicional) Ejemplo: if (nota>=6) { /*Bloque para condición cierta*/ printf(“El alumno está aprobado”); } else { /*Bloque para condición falsa*/ printf(“El alumno está desaprobado”); } Informática I – Ingeniería Electrónica if (salto condicional) Ejemplo: if (nota>=6) printf(“El alumno está aprobado”); else printf(“El alumno está desaprobado”); Con solo una línea de código, es posible obviar el uso de llaves. Sin embargo, esto no es recomendable ya que puede inducir errores. Informática I – Ingeniería Electrónica Ejercicio: Realice un programa que permita ingresar el legajo y la nota promedio de un alumno. El alumno estará aprobado si su nota es al menos 6. El programa deberá imprimir el siguiente mensaje antes de finalizar: “El alumno con legajo xxx se encuentra aprobado o desaprobado, según corresponda.” Nuevo: Si por error, se ingresa una nota mayor a 10, el sistema debe solicitarla nueva mente hasta recibir una nota válida. Ejercicio Pseudocódigo Leer legajo HACER Leer nota MIENTRAS ( nota > 10 ) SI ( nota >= 6 ) Imprimir: el alumno (legajo) está aprobado SI NO Imprimir: el alumno (legajo) está desaprobado Ejercicio Pseudocódigo Leer legajo HACER Leer nota MIENTRAS ( nota > 10 ) SI ( nota >= 6 ) Imprimir: el alumno (legajo) está aprobado SI NO Imprimir: el alumno (legajo) está desaprobado Flujograma Inicio Nota >= 6 Imprimir: Alumno Aprobado Imprimir: Alumno desaprobado Fin VERDADERA FALSA Leer legajo Leer nota Nota > 10 FALSA VERDADERA Lazo condicional do-while Informática I – Ingeniería Electrónica do while (lazo condicional) Sintaxis: do { bloque A }while (<condición>); Inicio <condición> bloque A Fin VERDADERA FALSA Informática I – Ingeniería Electrónica do while (lazo condicional) Ejemplo: (…) float nota; do { scanf(“%f”, ¬a) ; } while (nota > 10); (…) Informática I – Ingeniería Electrónica while (lazo condicional) Sintaxis: while (<condición>) { bloque A } Inicio <condición> bloque A Fin VERDADERA FALSA Informática I – Ingeniería Electrónica while (lazo condicional) Ejemplo: int num=0; while (num<10) { printf(“\n num=%d”,num); num++; } /*¿Qué imprime este ejemplo*/ Informática I – Ingeniería Electrónica for (lazo condicional) Sintaxis: for(<inic>;<cond>;<incr>) { bloque A } Inicio <condición> <inicialización> Fin VERDADERA FALSA bloque A <incremento> Informática I – Ingeniería Electrónica for (lazo condicional) Ejemplo: int i; for (i=1;i<10;i++) { num=8*i; printf(“\n num=%d”,num); } /*¿Qué imprime este ejemplo*/ Inicio i<10 i=1 Fin VERDADERA FALSA num=8*i; Imprimir num i=i+1 Informática I – Ingeniería Electrónica Operadores relacionales Descripción de los criterios lógicos Símbolo Descripción == … igual que … != … distinto que … > … mayor que … >= … mayor o igual que … < … menor que … <= … menor o igual que … Informática I – Ingeniería Electrónica Descripción de los criterios lógicos Además: • Cualquier valor distinto de 0, se considera como condición verdadera. • El valor 0, se lo considera como condición falsa. int a ; scanf(“%d”, &a); if (a) { printf(“El valor ingresado es distinto de 0”); } else { printf(“El valor ingresado es igual a 0”); } Informática I – Ingeniería Electrónica Operadores lógicos Símbolo Descripción || OR && AND ! NOT Tablas de verdad Informática I – Ingeniería Electrónica Operadores lógicos: Ejemplos Ejemplo 1: Indicar si el módulo del numero Ingresado es mayor a 100. Informática I – Ingeniería Electrónica Operadores lógicos: Ejemplos Ejemplo 1: Indicar si el módulo del numero Ingresado es mayor a 100. (…) if ( i > 100 || i < -100) { printf(“El módulo es mayor que 100”); } Informática I – Ingeniería Electrónica A programar…… 1) Ingresar un número del 1 al 9 y se imprime la tabla de multiplicar (múltiplos de 1 a 9) de ese número. Si el número ingresado no está en el rango pautado se sale del programa con un mensaje de error. 2) Ingresar un número por teclado. El programa indica si el número es primo o no [los números primos son aquellos cuyos únicos divisores son la unidad y el mismo número]. 3) A. Ingresar 3 notas de un alumno por teclado e imprimir el promedio. B. Si se ingresa la nota 0, el programa finaliza, imprimiendo el promedio de las notas ingresadas hasta el momento. Informática I – Ingeniería Electrónica switch case (salto condicional) Sintaxis: switch (<variable entera>) { case 0: bloque A; break; case 1: bloque B; break; /*Se pueden poner más “case”*/ default: bloque X; break; } Inicio <var>=0 Fin VERDADERA FALSA Bloque A <var>=1 Bloque B Bloque X VERDADERA FALSA Informática I – Ingeniería Electrónica switch case (salto condicional) Ejemplo: int sel; float a,b; printf(“Ingrese la figura cuya área desea calcular: \n0. Círculo \n1. Cuadrado \n2. Rectángulo”); scanf(“%d”,&sel); Informática I – Ingeniería ElectrónicaContinúa ejemplo anterior: switch (sel) { case 0: printf(“\n\nIngrese radio del círculo: ”); scanf(“%f”,&a); printf(“El área del círculo es: %f”, 3.1416*a*a); break; case 1: printf(“\n\nIngrese lado del cuadrado: ”); scanf(“%f”,&a); printf(“El área del cuadrado es: %f”, a*a); break; case 2: printf(“\n\nIngrese lados del rectángulo: ”); scanf(“%f %f”,&a,&b); printf(“El área del rectángulo es: %f”, a*b); default:printf(“\nLa opción ingresada es incorrecta”); break; } Informática I – Ingeniería Electrónica Apéndice: Sentencia break La sentencia break permite salir del lazo de control que me encuentro ejecutando. /*¿Qué imprime este ejemplo*/ for(i=0;i<10;i++) { if (i==5) break; printf(“\ni vale %d”,i); } Informática I – Ingeniería Electrónica Apéndice: Sentencia continue La sentencia continue permite saltear las sentencias que siguen en el bloque e ir directamente a la próxima evaluación de la condición /*¿Qué imprime este ejemplo*/ for(i=0;i<10;i++) { if (i==5) continue; printf(“\ni vale %d”,i); } Informática I – Ingeniería Electrónica Ejercicio integrador Se desea hacer un programa que opere como una calculadora simple. El programa pide en un menú las siguientes opciones: 0. Suma 1. Resta 2. Multiplicación 3. División 4. Potenciación [el exponente es un número entero positivo o negativo] 5. Salir Una vez seleccionada la opción, el programa solicita el ingreso de los datos y muestra el resultado por pantalla. Luego, borra la pantalla y vuelve a imprimir el menú hasta que el usuario decida salir. [Nota: para borrar la pantalla hacer system (“clear”), system es una función de la biblioteca “stdlib.h”]. Todas las operaciones usan dos operandos. Informática I – Ingeniería Electrónica Videos en el canal del curso: • Condicionales: if – switch: https://www.youtube.com/watch?v=LjvUvFRUFoQ • Estructuras de iteración: while – do while - for https://www.youtube.com/watch?v=hNdZ2g-8GhM • Diagramación estructurada https://www.youtube.com/watch?v=esuqtcwOmtk https://www.youtube.com/watch?v=LjvUvFRUFoQ https://www.youtube.com/watch?v=hNdZ2g-8GhM https://www.youtube.com/watch?v=esuqtcwOmtk Informática I – Ingeniería Electrónica Bibliografía • Schildt, H. , “C Manual de referencia”, Capítulo 3 • Deitel, “Cómo programar en C/C++”, Capítulo 3 • Gottfried, B. , “Programación en C”, Capítulo 6 • Argibay J. , “C para Ingeniería Electrónica”, Capítulo 3 • Ceballos, F. , “Enciclopedia del lenguaje C”, Capítulo 4 • Kernighan B, Ritchie D. , “El lenguaje de programación C”, Capítulo 3
Compartir