Está en la página 1de 32

Programacin I

Prof. Lesbia Valerio Lacayo


II Unidad: Desarrollo de Programas Estructurados

Contenido:

2.1 Introduccin a las Estructura de control


2.2 Estructura de Seleccin
Seleccin simple if
Seleccin doble if-else
Anidacin
2.3 Estructura de Repeticin
Repeticin for
Repeticin while
Repeticin do while
2.4 Caso 1: Repeticin controlada por contador
2.5 Caso 2: Repeticin controlada por centinela
Estructuras de Control Seleccin

C tiene solo siete estructuras de control: secuenciacin, tres de seleccin y tres de repeticin. Cada
programa de C se forma al combinar tantos de cada tipo de estructura de control como sea apropiado,
en relacin con el algoritmo que resuelve el programa.

Estructura de seleccin if (Simple)

Una estructura de seleccin se utiliza para elegir entre cursos alternativos de accin.

Ejemplo: Suponga que en un examen 60 es la calificacin de aprobado.

if (condicin)
accin (es);

El enunciado if permite al programador tomar una alternativa cuando se cumple cierta condicin el
formato.

Si la condicin es verdadera el enunciado en el cuerpo de if se ejecuta. Si la condicin es falsa el


enunciado del cuerpo ser saltado.
Estructuras de Control Seleccin

if (nota >= 60 )
printf (Aprobado);

Estructura de seleccin if / else (Doble)

Esta estructura de seleccin if / else permite que el programador especifique que se ejecuten
acciones distintas cuando la condicin sea verdadera que cuando la condicin sea falsa.

if (nota >= 60 )
printf (Aprobado);
else
printf (Reprobado);
Estructuras de Control Seleccin

Estructura anidada (Mltiple)

La estructura if/else anidada prueban para muchos casos, colocando estructuras if/else dentro de
estructuras if/else.

Ejemplo: En el siguiente enunciado se imprimir A para calificaciones de examen


mayor que o iguales a 90, B para calificaciones mayores que o iguales a 80, C para
calificaciones mayores que o iguales a 70, D para calificaciones mayores que o iguales a 60, y E para
todas las dems calificaciones.

if (nota >= 90)


printf (A \n);
else
if (nota >= 80)
printf (B \n);
else
if (nota >= 70)
printf (C \n);
else
if (nota >= 60)
printf (D \n);
else
printf (F \n);
Estructuras de Control Seleccin

Otra forma:

if (nota >= 90)


printf (A \n);
else if (nota >= 80)
printf (B \n);
else if (nota >= 70)
printf (C \n);

Por lo que se refiere al compilador de C, ambas formas resultan equivalentes, la ltima forma es popular
porque evita las profundas sangras del cdigo hacia la derecha.

La estructura de seleccin if espera un enunciado dentro de su cuerpo. Para incluir varios enunciados en
el cuerpo de un if encierre el conjunto de enunciados entre llaves ({ }) lo que permite que este conjunto
de enunciados se le llame bloque compuesto.

Un bloque compuesto puede ser colocado en cualquier parte de un programa, donde pueda ser
colocado un enunciado sencillo.
Estructuras de Control Seleccin

if (nota >= 60 )
printf (Aprobado);
else
{
printf (Reprobado);
printf ( usted puede tomar este curso de nuevo);
}

Advierta las llaves que rodean ambos enunciados en la clusula else. Estas llaves son importantes
sin ellas el enunciado quedara fuera del cuerpo de la parte else del if y sera ejecutado
independientemente de si la calificacin es menor que 60.
Ejemplos

Algunos ejemplos de como comparar y encontrar el mayor de un grupo de nmeros

a) #include <stdio.h>
main()
{
int a , b, c;

printf ( Deme tres numeros);


scanf(%d%d%d , a, b, c);
if (a > b)
if (a > c)
printf ( El mayor es %d, a);
else
printf(El mayor es %d, c);
else
if (b > c)
printf (El mayor es %d, b)
else
printf (El mayor es %d, c)
}
Ejemplos

verificar: 40 25 10
10 40 25
25 10 40

b) #include <stdio.h>
main()
{
int a , b, c;

printf ( Deme tres numeros);


scanf(%d%d%d , a, b, c);
if ((a > b) && (a >c))
printf ( El mayor es %d, a);
if ((b > a) && (b > c))
printf (El mayor es %d, b)
if ((c > a) && (c > b))
printf (El mayor es %d, c)
}
Ejemplos

c) if ((a > b) && (a >c))


printf ( El mayor es %d, a);
else
if (b > c)
printf (El mayor es %d, b)
else
printf (El mayor es %d, c)
Estructura de Seleccin switch (Mltiple)

En forma ocasional un programa contendr una serie de decisiones en las cuales una variable o expresin
se probar por separado contra cada uno de los valores constantes enteros que puede asumir y se tomarn
diferentes acciones.

La estructura switch est formada de una serie de etiquetas case y de un caso opcional default.

switch ( selector)
{
case valor1: acciones;
break;
case valor2: acciones;
break;
case valor3: acciones;
break;
case valor4: acciones;
break;

.
default:
printf(Dato invalido);
break;
}
}
Ejemplo

Una compaa ha clasificado a sus empleados en dos Grupos: Grupo 1 y Grupo 2. Cada empleado del grupo 1 recibir un
aumento de C$25.00 crdobas, mientras que cada empleado del grupo 2 recibir un aumento de solo C$15.00 crdobas.
Elabore un programa que permita calcular el nuevo sueldo

switch(grupo)
{
1 : pago= salario + 25;
break;

2: pago= salario +15;


break;

default: printf(Grupo Invalido);


}
printf(El total es %f, pago);

Otra forma:

if(grupo==1)
pago=salario+25;
else
if(grupo==2)
pago=salario +15;

printf(El total es %f, pago);


#include<stdio.h>
#include<stdlib.h>
int main()
{
/*definir las variables */
char alfabetico;

printf("Introdusca una letra alfabetica: ");


scanf("%c",alfabetico);

switch(alfabetico){
case 'A':
printf("%c es: igual a 4",alfabetico);
break;
case 'B':
printf("%c es: igual a 5",alfabetico);
break;
case 'C':
printf("%c es: igual a 6",alfabetico);
break;
case 'D':
printf("%c es: igual a 7",alfabetico);
break;
case 'E':
printf("%c es: igual a 8",alfabetico);
break;
default:
printf("%c no existe en este rango del programa",alfabetico);
}
/*salto de linea*/
printf("\n");
system("pause");
}
Imprimiendo nmeros decimales con printf

La f indica que deber ser impreso un valor de punto flotante. El .2 es la precisin con la cual dicho valor ser
desplegado con 2 decimales a la derecha del punto decimal.

Si se utiliza especificador de conversin %f (sin especificar precisin) se utilizar la precisin preestablecida por
omisin de 6 exactamente igual si se pusiera el especificador de conversin %.6f. Cuando los valores de punto
flotante se imprimen con precisin, el valor impreso se redondea al nmero indicado de posiciones decimales.

El valor en memoria se conserva sin alteracin. Cuando son ejecutados los enunciados siguientes se imprimen los
valores 3.45, 3.4.

printf( %.2f \n, 3.446); 3.45


printf(%.1f \n , 3.446) ; 3.4

Las precisiones se utilizan solo en las especificaciones de conversin de printf y no de scanf (en la cadena de control
de formato).
Utilizar el nmero de punto flotante de tal forma no son siempre 100% precisos tienen muchas aplicaciones o sea
solo es una aproximacin.

Ejemplos
printf("%d", 234) /* imprime 234 */
printf("%6d", 234) /* imprime 234 */
printf("%4f", 234.15) /* imprime 234.15 */
printf("%4.1f", 1234.15) /* imprime 1234.2 */
Conversin explcita de tipos

Convierte el valor entero de suma en un flotante ANTES de dividir por cant. El resultado ser un
nmero flotante.
Operador Condicional ?:

Ejemplo

#include <stdio.h>

main()
{

int num;

clrscr();

printf("Numero:");
scanf("%d",&num);
printf(num%2==0 ? "Par" : "Impar");
getch();
return 0;
}
Estructuras Repetitivas:

Son aquellas estructuras que utilizan ciclos(lazo, bucle, loop, iteracin) para realizar una tarea, los ciclos
son ventajosos cuando se ha de repetir muchas veces la misma tarea un nmero especificado de veces.
En tales casos basta codificar una sola vez la tarea como cuerpo del ciclo.
En ocasiones, en los ciclos repetitivos se necesita contar el nmero de veces que se procesa algn
elemento, o bien hacer acumulaciones de cantidades para obtener totalizadores.
Estos dos elementos son asignaciones especiales conocidas como Contador y Acumulador.

Contador: Es una variable de tipo entero que tiene como funcin contener el nmero
de veces que se procesa una tarea. El contador tiene las siguientes
Caractersticas:
Un contador debe declararse como cualquier otra variable
El contador debe inicializarse en cero o en uno al comienzo.
El contador debe incrementarse en uno dentro del cuerpo del ciclo.
El contador puede ser impreso para mostrar su ltimo contenido al final del ciclo.

Ejemplo: Se ejecuta tres veces


cont := 0;
cont:= cont + 1;
cont:= cont + 1;
cont:= cont + 1;
escribir (cont);

Acumulador: Es una variable de tipo numrico, cuya funcin es contener la suma de un


Determinado conjunto de datos. El acumulador tiene las siguientes
Caractersticas:

Un acumulador debe declararse como cualquier otra variable


El acumulador debe inicializarse en cero al comienzo.
El acumulador debe incrementarse en con lo que tenga la variable que identifica al dato a
acumular dentro del cuerpo del ciclo.
El acumulador puede ser impreso para mostrar su ltimo contenido al final del ciclo.
Estructuras de Control Repeticin

Estructuras de Repeticin

Estructura for

Esta estructura maneja de forma automtica todos los detalles de la repeticin controlada por
contador.

formato

for (expresin 1 ; expresin 2; expresin 3)


enunciado(os);

Ejemplo:

for (cont=1 ; cont <=10; cont = cont + 1)

Expresin 1 : Inicializa la variable de control del ciclo.


Expresin 2 : Es la condicin de continuacin del ciclo.
Expresin 3 : Incrementa la variable de control
Estructuras de Control Repeticin

El programa puede funcionar como sigue: Cuando la estructura for inicia su ejecucin, la variable de
control cont se inicializa 1. A continuacin se verifica la condicin de continuacin del ciclo cont<=10.
Dado que el valor inicial de cont es 1, se satisface esta condicin, por lo que el enunciado printf
imprime el valor de cont , es decir 1.

#include <stdio.h>

main()
{
int cont;

for (cont=1 ; cont <=10; cont = cont + 1)


printf( %d \n , cont);
}
Estructuras de Control Repeticin

Observaciones:

Tanto la inicializacin como la condicin de continuacin del ciclo y el incremento pueden contener
expresiones aritmeticas.

Ejemplo: Suponga que X=2 y Y= 10

for (j=x ; j <= 4*x*y ; j= y / x)

La inicializacin ocurre una vez y que el incremento ocurre despus de que se ejecute el enunciado
del cuerpo.
Estructuras de Control Repeticin

Ejemplo:

Realice un programa que utilice la estructura for para sumar todos los enteros pares desde 2 hasta 100.

#include <stdio.h>

main()
{
int suma=0, numero;

for( numero= 2 ; numero <= 100 ; numero = numero + 1)


printf(La suma es %d \n , suma);
}
Estructura while

Una estructura de repeticin le permite al programador especificar que se repita una accin en tanto
cierta condicin se mantenga verdadera.

El enunciado se ejecutar mientras la condicin sea verdadera. El enunciado o enunciados contenidos


en la estructura de repeticin while constituyen el cuerpo del while. El cuerpo de la estructura while
puede ser un enunciado sencillo o un enunciado compuesto.

while (producto <= 1000)


accion(s);

Estudio de caso 1: Repeticin controlada por contador

A fin de ver como se desarrollan los algoritmos, resolveremos algunas variantes de programa de
promedio de clase.

Considere el siguiente enunciado del programa:

Una clase de diez alumnos hizo un examen. Las calificaciones (enteros en el rango 0 a 100)
correspondientes a este examen estn a su disposicin. Determine el promedio de la clase en este
examen.
/* Promedio de notas haciendo uso de contador */

#include <stdio.h>

main()
{
int cont, nota, total, promedio;

/* Inicializacin */

total= 0;
cont = 1;

/* procedimiento */

while (cont <= 10 )


{
printf (Deme la nota );
scanf (%d, &nota);
total= total + nota;
cont= cont + 1;
}
/* Terminacin del proceso */

promedio = total / 10;


printf( Promedio de la clase es %d \n , promedio );

}
Esta tcnica utiliza una variable llamada contador para definir el nmero de veces que deber
ejecutarse un conjunto de enunciados. En este ejemplo la repeticin terminar cuando el contador
excede de 10.

Estudio de caso 2: Repeticin controlada por Centinela

Considere el siguiente enunciado del programa:

Desarrolle un programa de promedios de clase que pueda procesar un nmero arbitrario de


calificaciones, cada vez que se ejecute el programa.

Una forma de resolver este problema es utilizar un valor llamado valor centinela(conocido como valor
seal, valor bandera) que indicar Fin de la captura de datos. -1 puede ser un valor centinela
aceptable
#include <stdio.h>

main()
{

int cont, nota, total;


float promedio;

/* Inicializacin */

total= 0;
cont = 0;

/* procedimiento */

printf (Deme la nota y presione 1- para finalizar:)


scanf(%d, &nota);

while (nota != -1 )
{
total= total + nota;
cont= cont + 1;
printf (Deme la nota y presione 1- para finalizar:)
scanf(%d, &nota);
}
/* Terminacin del proceso */
if ( cont != 0)
{
promedio = (float)total / cont;
printf( Promedio de la clase es %.2f \n , promedio );
}
else
printf(Las notas no fueron introducidas\n);
}
Estudio de caso 3: Estructura de control anidadas
Considere el siguiente enunciado del programa:

Una Universidad ofrece un curso que prepara alumnos para el examen estatal de licenciatura para
corredores de bienes races. El ao pasado, varios de los alumnos que terminaron este curso hicieron el
examen de licenciatura, naturalmente la universidad desea conocer que tan bien salieron sus alumnos
en el examen. Se le ha pedido a usted que escriba un programa para resumir los resultados. Se le ha
dado una lista de estos diez alumnos. A continuacin de cada nombre se ha escrito un 1 si el alumno
pas el examen y un 2 si no lo pas.

Desplegar los resultados de prueba indicando el nmero de alumnos que pasaron y el nmero de
alumnos que reprobaron. Si ms de 8 alumnos pasaron el examen, imprima el mensaje Aumente la
colegiatura.
/* Anlisis de resultados de Examen */
#include <stdio.h>

main( )
{
int cont=0 , cont2=0, alumno=1, resultado;

while (alumno <= 0)


{
printf( Deme el resultado (1- Aprobado, 2- Reprobado: );
scanf(%d, &resultado);

if (resultado == 1)
cont=cont + 1;
else
cont2= cont2 + 1;
alumno = alumno + 1;
}
printf(Aprobaron %d \n, cont1);
printf(Reprobaron %d \n, cont2);

if (cont1 > 8)
printf(Se le aumenta la colegiatura \n);
}
Estructura do while

Esta estructura es similar a la estructura while. En la estructura while la condicin de continuacin de


ciclo se prueba al principio del ciclo antes de ejecutarse el cuerpo del mismo.

La estructura do while prueba la condicin de continuacin del ciclo despes de ejecutar el cuerpo del
ciclo y por lo tanto el cuerpo del ciclo se ejecutar por lo menos una vez.

Cuando termina do while la ejecucin continuar con el enunciado que aparezca despes de la clausula
while. Note que la estructura do while no es necesario utilizar llaves, si en el cuerpo existe solo un
enunciado. Sin embargo por lo regular las llaves se utilizan para evitar confusin entre las estructuras
while y do while.

Formato

do
{
Enunciado
}
while (condicin);
Ejemplo: Visualizar los nmeros del 1 al 10

#include <stdio.h>

main( )
{
int cont=1;

do
{
printf(%d, cont);
cont=cont + 1;
}
while (cont <=10);
return 0;
}

También podría gustarte