Sunteți pe pagina 1din 39

Programacin en C.

Estructuras de Control
Profesora: Pain Pintos. Materia: Prctica Profesional II Instituto Terciario Simn Bolivar

Indice de la presentacin

Estructuras de control. Diagrama de flujo. Estructuras de seleccin


Sentencia IF. Sentencia IF ELSE. Sentencia IF ELSE IF. Sentencias anidadas. Sentencia SWITCH (ejemplo). Sentencia WHILE

Estructuras de repeticin (bucles).

Ejemplo 1 (bucle regulado por contador). Ejemplo 2 (bucle regulado por centinela).
Uso de operadores de incremento y decremento Ejemplo 1 s

Sentencia DOWHILE.

Sentencia FOR.

ESTRUCTURAS DE CONTROL

En general, las instrucciones de un programa se ejecutan una tras otra, en el orden que fueron escritas. A esto se llama EJECUCIN SECUENCIAL. Las INSTRUCCIONES DE CONTROL son aquellas que permiten transferir el control a otras instrucciones sin seguir la ejecucin secuencial.

C proporciona 3 tipos de instrucciones de seleccin: IF, IFELSE y SWITCH. Proporciona adems 3 tipos instrucciones de repeticin: WHILE, DOWHILE y FOR.
s

DIAGRAMA DE FLUJO

Un diagrama de flujo es una representacin grfica de un algoritmo o de una porcin de algoritmo. Se dibuja con smbolos de propsito especiales tales como:
Smbolo de accin: indica cualquier tipo de accin que desarrolla el programa.
Smbolo de decisin: indica el punto de lrpograma en el que se va a tomar una decisin (de ac pueden partir varios cursos de accin diferentes Smbolo conector: cuando se escribe parte del programa, se inicia y se termina el diagrama con este smbolo en vez de con los smbolos de inicio y final

Smbolo de inicio y final: indica el inicio y el final del programa entero. Se agrega adentro la palabra que sea pertienente (inicio, fin)

Lneas de flujo: conectan los smbolos e indican secuencia de sentencias.

DIAGRAMA DE FLUJO Ejemplo:


inicio

Supongamos un programa en el que se ingresa dos enteros y se muestra si son iguales o no.
El diagrama sera

Declarar variables A y B integer Imprimir Cargar dos valores Enteros

Leer valores en Variables A y B verdadero A==B falso verdadero A!=B falso Imprimir A es diferente B Imprimir A es igual B

fin

QU SON LAS ESTRUCTURAS DE SELECCIN?


Las estructuras de seleccin (o bifurcacin) se utilizan para elegir entre diversos cursos de accin. En este caso, se evaluar una condicin que permitir elegir hacer o no una accin o en otros casos, tomar un curso otro de accin. Hay tres tipos de estructuras de seleccin: if (seleccin simple), ifelse (seleccin doble) y switch (seleccin mltiple)

INSTRUCCIN DE SELECCIN SIMPLE IF

Esta sentencia de control permite ejecutar o no una sentencia simple o compuesta segn se cumpla o no una determinada condicin
Ejemplo: if (calificacin >=6) printf (aprobado\n); Calificacin es la variable; calificacin >=6 es la condicin; si esta condicin es verdadera, se ejecuta printf (aprobado\n); si es falsa, se sigue con el resto del programa, sin ejecutar el printf. s
Calificacin >=6
verdadero

Imprime Aprobado

falso

INSTRUCCIN DE SELECCIN DOBLE: IF ELSE


Esta sentencia permite realizar una bifurcacin, ejecutando una parte u otra del programa segn se cumpla o no una cierta condicin
Ejemplo:
if (condicion>=60) printf (Aprobado); else printf (Reprobado);
I

INSTRUCCIN DE SELECCIN MULTIPLE: IF ELSE IF


Esta sentencia permite realizar una ramificacin mltiple, ejecutando una entre varias partes del programa segn se cumpla una entre n condiciones

Ejemplo:Ej: Para la nota ingresada de un alumno debe


imprimirse una A si la calificacin es mayor o igual a 90; una B si las calificaciones son mayores o iguales a 80 (pero menores a 90), una C si la calificacin es mayor o igual a 70 (pero menor a 80); una D si la nota es mayor o igual a 60 (pero menor a 70); una F para todas las dems calificaciones. El cdigo en C podra ser:

If (calificacin >=90) Printf (A\n); Else if (calificacin >=80) Printf (B\n); Else if (calificacin >=70) Printf (C\n); Else if (calificacin >=60) Printf (D\n); Else Printf (F\n);

DIAGRAMA DE FLUJO IF MLTIPLE.


falso
verdadero

If calificacion >= 90
verdadero

Imprimir A

falso

If calificacion >= 80
verdadero

V
Imprimir B

falso

If calificacion >= 70

Imprimir C

falso

verdadero

Imprimir F

If calificacion >= 60

Imprimir D

INSTRUCCIN DE SELECCIN ANIDADAS


Ejemplo: Se realizar una divisin siempre y cuando

Una sentencia if puede incluir otros if dentro de la parte correspondiente a su sentencia, A estas sentencias se les llama sentencias anidadas

el denominador sea menor o igual al numerador y no sea igual a 0. Supongamos que el numerador se ha cargado en A y el denominador en B

If (A >= B) if (B!=0) c=A/B;


Supongamos que en caso de que B no cumpla condiciones deber guardarse en C un 0. El cdigo podra ser: If (A >= B) if (B!=0) c=A/B; else c=0; A quin pertenece el else?
Para evitar dudas, utilizar llaves: If (A >= B) { if (B!=0) c=A/B; } Else c=0;

SENTENCIA DE SELECCIN MLTIPLE: SWITCH


Desarrolla una funcin similar a la de la sentencia if ... else con mltiples ramificaciones, aunque con importantes diferencias
I

La instruccin switch consiste en una serie de etiquetas case y un caso opcional default.

SWITCH EJEMPLO:
Ejemplo: supongamos que se quiere crear un programa que traduzca notas numricas (1 a 10) a notas cualitativas aproximadas (exc, mb, b, r, mal) Para esto se le pide al alumno que ingrese su nota cuantitativa (almacenada en una variable NOTA) y se ingresa a la sentencia de seleccin:

DIAGRAMA DE FLUJO SWITCH


inicio case 6 Declarar int nota

v
Case 7 Cargar nota

Imprimir nota BUENO

BREAK

case NOTA = 1

v
Case 8

V
Imprimir nota MUY BUENO BREAK

case 2

v
case 3 Imprimir nota MAL BREAK

Case 9

v
Case 10

Imprimir nota EXCELENTE

BREAK

Case 4

v v
DEFAULT Imprimir nota REGULAR BREAK

Imprimir Ingres valor Incorrecto;

case 5

final

INSTRUCCIONES DE REPETICIN

Instrucciones que permiten repetir una serie de veces la ejecucin de unas lneas de cdigo. Esta repeticin se realiza o bien un nmero determinado de veces o bien hasta que se cumpla una determinada condicin de tipo lgico o aritmtico. De modo genrico, a estas sentencias se les denomina bucles. Hay 3 tipos de instruc. de repeticin: WHILE, DOWHILE y FOR.
s

INSTRUCCIN WHILE

Permite ejecutar repetidamente, mientras se cumpla una determinada condicin, una sentencia o bloque de sentencias
Ej: encontrar la primera potencia de 2 que sea mayor que 1000. La variable producto se inicializa en 2. Producto = 2;
While (producto <=1000) Producto = 2 * producto;

USO DE WHILE EJEMPLO 1


(BUCLE CONTROLADO POR CONTADOR)

Programa que permite sacar el promedio de un grupo de 10 alumnos a partir de notas individuales ingresadas por teclado.

DIAGRAMA DE FLUJO WHILE EJEMPLO 1


INICIO
Declarar INT contador, total, promedio, calificacion.

INICIALIZAR contador = 1; total = 0;

verdadero While (contador <=10) Ingresar nota en calificacion;

falso

Acumular calificacion en total;

Sumar 1 a contador;

Guardar en promedio = total / 10;

Imprimir promedio;

FIN

Uso WHILE EJEMPLO 1 Variables

Para sacar promedio necesitamos: sumar todas las notas (esto se har en TOTAL); permitir el ingreso de cada nota individual (esto se har en la CALIFICACION); habilitar una variable para almacenar el promedio una vez que se hayan ingresado TODAS las notas (esto se har en PROMEDIO).
La variable CONTADOR es la que permite regular el bucle: ir aumentando en 1 a medida que se vayan ingresando las notas.

Uso WHILE EJEMPLO 1 Inicializacin

TOTAL es un acumulador: va a ir acumulando los valores de las diferentes calificaciones. La operacin de acumulacin tiene la forma TOTAL =TOTAL+CALIFICACION. Si no inicializamos TOTAL en 0, en la primera asignacin se estar sumando un valor espurio.

CONTADOR debe inicializarse en 1 para ir contando los ciclos que deben repetirse.

Uso WHILE EJEMPLO 1 - Bucle

La condicin que regula el ciclo es que CONTADOR sea menor o igual a 10. Si esta condicin es VERDADERA, se ejecutan las instrucciones del bucle; si esta condicin es FALSA, se sigue de largo y se contina con la siguiente instruccin. Dentro del bucle se pide al usuario que cargue la nota y con esta nota cargada se ACUMULA en TOTAL y se ACTUALIZA el contador (se le suma 1).

Cuando CONTADOR sea 11, no se cumplir la condicin y se saldr del bucle.

Uso WHILE EJEMPLO 1 Terminacin

Ya fuera del bucle, se realiza el clculo de PROMEDIO. En TOTAL se encuentra la suma total de las 10 notas ingresadas por el usuario. Se imprime el resultado de la variable PROMEDIO.

USO DE WHILE EJEMPLO 2


(BUCLE CONTROLADO POR CENTINELA)
Programa que permite sacar el promedio de un grupo de X alumnos a partir de notas individuales ingresadas por teclado. El usuario controla la cantidad de notas. D

DIAGRAMA DE FLUJO WHILE EJEMPLO 2


INICIO
Declarar INT contador, total, calificacion; float promedio. INICIALIZAR contador = 0; total = 0;

Ingresar calificacion

verdadero

While (calificacion !=-1)

Acumular calificacion en total;

falso

Sumar 1 a contador;

Ingresar nota en calificacion;

Imprimir No se ingresaron n;

falso

verdadero

if contador !=0

Guardar en promedio = total / 10;

Imprimir promedio;

FIN

Uso WHILE EJEMPLO 2 Variables

Para sacar promedio necesitamos: sumar todas las notas (esto se har en TOTAL); permitir el ingreso de cada nota individual (esto se har en la CALIFICACION); habilitar una variable para almacenar el promedio una vez que se hayan ingresado TODAS las notas (esto se har en PROMEDIO). El tipo de datos de PROMEDIO ser ahora FLOAT. Se contemplar los lugares decimales del promedio. CONTADOR contar la cantidad de notas que ingresa el usuario.

Uso WHILE EJEMPLO 2 Inicializacin

TOTAL es un acumulador: va a ir acumulando los valores de las diferentes calificaciones. CONTADOR debe inicializarse en 0 para ir contando la cantidad de notas que ingresa el usuario. Ya no regula el bucle (como en el ejemplo 1). Por esta razn debe comenzar en 0. La operacin de asignacin ser contador = contador +1.

Uso WHILE EJEMPLO 2 Carga inicial de calificacin.

A diferencia del ejemplo 1, antes de entrar al bucle se hace una carga de la variable calificacion. Esto es as porque es calificacion la que ahora regula el bucle.

Uso WHILE EJEMPLO 2 - Bucle

La condicin que regula el bucle es que CALIFICACION no sea igual a -1. Si esto es verdadero, se ejecutarn las instrucciones del bucle; si esto es falso, se pasar de largo al bucle y se ejecutar la siguiente instruccin. Dentro del bucle se pide al usuario que cargue la nota y con esta nota cargada se ACUMULA en TOTAL y se ACTUALIZA el contador (se le suma 1 necesario para luego sacar el promedio. Cuando el usuario ingrese -1, no se cumplir la condicin y se saldr del bucle.

Uso WHILE EJEMPLO 2 Verificacin de valor

Como el usuario regula ahora la ejecucin del bucle, cabe la posibilidad de que el usuario no haya ingresado calificaciones. En este caso el contador ser igual a 0 y al efectuar la divisin para sacar el promedio, dar un error (divisin por 0).

Se realiza la verificacin dentro de una instruccin IFELSE. Si el contador es distinto de 0, se realiza el clculo del promedio y se muestra en la pantalla. Si el contador es igual a 0, se avisa que no se ha ingresado ningun valor y se sale del programa.

Uso WHILE EJEMPLO 2 Operador de conversin


Promedio = (float) total / contador;
Los promedios no siempre resultan en valores enteros. A veces contienen una parte fraccional. Este tipo de valores se los conocen como nmeros de punto flotante y se representan mediante el tipo de dato FLOAT.
El clculo total/contador resultar en un entero debido a que tanto total como contador son variables enteras, por lo tanto la parte fraccional se trunca. Al agregar el operador de conversin de tipo FLOAT a la variable total se realiza una conversin EXPLCITA. De esta manera se transforma temporalmente la variable total y contador a un tipo FLOAT y as, se preserva la parte fraccional que ser almacenada, junto con la parte entera, en la variable PROMEDIO (que es de tipo FLOAT).
V

Uso WHILE EJEMPLO 2


Especificador de conversin de Printf
Printf(El promedio del grupo es: %.2f\n);

La f especifica que se imprimir un valor de punto flotante.


El .2 es la precisin con la cual se desplegar el valor (es decir, se desplegar con 2 dgitos a la derecha del punto decimal). Si se utiliza el especificador de conversin %f sin especificar precisin se utiliza la precisin predeterminada de 6 (como si se hubiera utilizado %.6f). Se puede regular la cantidad de espacios que se imprimirn antecediendo al punto el nmero de posiciones. P.ej: %10.6f imprimir el nmero con 6 lugares despus de la coma en un espacio de 10.

El valor impreso se redondea al nmero indicado de posiciones decimales.


Ejemplos: Printf( %.2f\n, 3.446); Printf( %.1f\n, 3.446); IMPRIME 3.45 IMPRIME 3.4

INSTRUCCIN DO WHILE
Funciona parecido a while. La diferencia es que la evaluacin de la expresin de control se realiza al final del bucle, despus de haber ejecutado al menos una vez las sentencias entre llaves del bucle
Ejemplo: se mostrarn los valores de 1 al 10: int contador =1; do { printf (%d , contador); } while (++contador <=10); s

OPERADORES DE: incremento, decremento y asignacin.


C proporciona operadores unitarios de incremento (++) y de decremento (--). As, la expresin c=c+1 se transforma en c++. Y la expresin c=c-1 se transforma en c--. ++c: incrementa un valor en c y despus de usa en la expresin en que reside. c++: utiliza el valor actual de c en la expresin en que reside y luego incrementa en 1. Tambin pueden utilizarse los operadores de asignacin +=, -=, *=, /=. De esta forma la expresin c=c+1 podra transformarse en c+=1 o la expresin a=a*7 podra transformarse en a*=7.

INSTRUCCIN FOR
Maneja todos los detalles de la repeticin controlada por contador.
I

Por ej: supongamos el ejemplo anterior (mostrar los valores de 1 a 10).

int contador; for (contador=1; contador <=10; contador++) { printf(%d\n , contador); } diagrama

DIAGRAMA DE FLUJO DE INSTRUCCIN FOR

INSTRUCCIN FOR Ejemplo 1


Revisaremos el primer ejemplo de While, utilizando el For:

Hacer un programa que permite sacar el promedio de un grupo de 10 alumnos a partir de notas individuales ingresadas por teclado. s

Uso FOR EJEMPLO 1 DECLARACIN DE VARIABLES

En C se puede declarar variables y al mismo tiempo inicializarlas. Veas la variable total. Se la declara INTEGER y al mismo tiempo, se la inicializa en 0 La variable contador no se inicializa aqu; se har dentro de la instruccin del FOR.

Uso FOR EJEMPLO 1 Bucle FOR.

contador = 1: se inicializa el contador en 1. contador <=10: condicin que de ser verdadera, habilita la ejecucin de las instrucciones dentro del FOR. De ser falso, pasa de largo a la siguiente instruccin. contador++: posincremento. Contador primero ser evaluada en la condicin y luego se incrementar en 1. P.ej: en la primera vuelta, contador es = 1, por lo tanto es menor a 10 (cumple condicin). Slo luego de verificar esto, contador se incrementa en 1 (vale 2) y ser evaluado en el prximo ciclo.

Uso FOR EJEMPLO 1TERMINACIN

Al incluir el operador de conversin float delante de total, se preserva la parte fraccional de la divisin.
Al almacenar el resultado del clculo en la variable promedio (declarada como del tipo FLOAT), se almacena tanto la parte entera como la fraccional. Al mostrar el resultado, se utiliza el especificador de conversin %.2f. Esto permite que el promedio se muestre con dos valores despus del punto decimal.

S-ar putea să vă placă și