Logo Studenta

Control de flujo - I

¡Este material tiene más páginas!

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”, &nota) ;
} 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

Continuar navegando