Está en la página 1de 118

Introduccion a la Programacion en

C - C++
UNIVERSIDAD NACIONAL
DE INGENIERIA

Abraham Zamudio

Control de Flujo
Las sentencias para controlar el flujo de un
programa que podemos encontrar son:
Estructuras de decisin o seleccin
Estructuras de repeticin

Abraham Zamudio

Control de Flujo
En
C
el
caracter
(;)
representa el fin de una
instruccin
En C se puede agrupar un
grupo
de
sentencias
utilizando las llaves ({}) y
formar lo que se conoce
como
una
instruccin
compuesta.
Abraham Zamudio

Estructuras de Decision

Abraham Zamudio

Estructuras de Decision

Las estructuras de control de flujo que


estudiaremos en esta parte son las estructuras de
decisin
Estas permiten seleccionar la prxima sentencia
a ejecutarse sobre la base de una desicin
(expresin lgica o variable lgica)

Abraham Zamudio

Estructuras de Decision
Los tipos de estructuras
podemos encontrar son:

de

desicin

que

Simples
Anidadas
Dobles

Abraham Zamudio

Estructuras de Decision
La sentencia if es utilizada para tomar
decisiones y su formato es:
Algoritmo :
Si (condicin) entonces
sentencias...
fin si
En lenguaje C :
if ( expresin lgica){
sentencias....
}
Abraham Zamudio

Estructuras de Decision

La condicin se evalua y si el resultado es


cierto entonces el conjunto de instrucciones
encerrado entre las llaves se ejecuta.
Si el resultado de la evaluacin de la condicin es
falso, entonces no se ejecuta el bloque de
instrucciones.

Abraham Zamudio

Estructuras de Decision - Ejemplos


Pseudo cdigo
Si ( hora < 12 )
escribir Buenos Das
fin si
En lenguaje C
if ( hora < 12 ){
printf(Buenos Das\n);
}
Abraham Zamudio

Estructuras de Decision - Ejemplos


Pseudo cdigo
Si ( hora < 12 )
escribir Buenos Das
fin si
En lenguaje C
if ( hora < 12 ){
printf(Buenos Das\n);
}
Abraham Zamudio

Las llaves son opcionales si el bloque


de instrucciones esta formado por una
sola sentecia.
if ( hora < 12 )
printf(Buenos Das\n);

10

Estructuras de Decision - Ejemplos


Pseudo cdigo
Si ( Nota > 15 ) entonces
Escribir Estudiante eximido
Eximidos = Eximidos + 1
fin si
Lenguaje C
if ( Nota > 15 ){
printf(Estudiante eximido\n);
Eximidos++;
}
Abraham Zamudio

11

Estructuras de Decision - Ejemplos


#include <stdio.h>
main(){
int hora;
printf(Introduzca hora\n);
scanf(%i, &hora);
if ( hora < 12 ){
printf(Buenos Das\n);
}
if ( (hora > 12) && ( hora < 18 ) ){
printf(Buenas tardes\n);
}
if ( hora > 18 ){
printf(Buenas noches\n);
}
}
Abraham Zamudio

12

Estructuras de Decision - Ejercicio

Algoritmo y codificacin
para determinar si dado
tres nmeros, la suma
de dos resulta igual al
tercero.
Abraham Zamudio

13

Estructuras de Decision - Anidadas


Nosotros podemos
colocar
una
estructura de
desicin dentro de
otra.
A esto
se
denomina
anidacin.

le

Abraham Zamudio

14

Estructuras de Decision - Anidadas


Notacin en pseudo cdigo
Si (condicin1) entonces
Si (condicin2) entonces
sentencias
fin si
Sentencias
fin si
Abraham Zamudio

15

Estructuras de Decision - Anidadas


Notacin en cdigo C
if ( decisin1 ){
if ( desicin2 ){
sentencias
}
sentencias
}
Abraham Zamudio

16

Estructuras de Decision Anidadas


Ejemplos
Pseudo cdigo
Si ( x > 0 ) entonces
Si ( y < 0.5) entonces
y=a*x
fin si
a=x+y
fin si
Abraham Zamudio

17

Estructuras de Decision Anidadas


Ejemplos
Cdigo en C
if ( x > 0 ){
if ( y < 0.5){
y = a * x;
}
a = x + y;
}
Abraham Zamudio

18

Estructura de decision Doble


Las estructuras de decisin doble permiten
ejecutar dos conjuntos de sentencias alternativos
en funcin del resultado de la evaluacin de una
condicin lgica.
Si el resultado es cierto se ejecuta un grupo de
sentencias.
Si el resultado es falsose ejecuta otro grupo de
sentencias.
Abraham Zamudio

19

Estructura de decision Doble

Formato en pseudo cdigo


Si ( decisin ) entonces
sentencias....
Si no
sentencias....
fin si

Abraham Zamudio

20

Estructura de decision Doble


La sentencia if - else es utilizada para tomar
decisiones y su formato es:
if ( expresin lgica){
sentencias....
}
else{
sentencias....
}
Abraham Zamudio

21

Estructura de decision Doble


Ejemplos
if ( Edad < 18 ){
printf(Necesita autorizacion\n);
}
else{
if ( Edad > 30 ){
printf(No aplica\n);
}
else{
printf(Puede continuar\n);
}
}
Abraham Zamudio

22

Estructura de decision Doble


Ejemplos
#include <stdio.h>
int main()
{
int miEntero;
printft(Introduzca un numero entero\n);
scanf(%i,&miEntero);
if ( miEntero == 0 )
printf("miEntero es igual a cero\n);
else
printf("miEntero no es igual a cero\n);
printf(fin del programa\n);
return 0;
}
Abraham Zamudio

23

Estructura de decision Doble


Ejemplos
#include <stdio.h>
int main ()
{
int m;
printf(Introduzca un numero entero\n);
scanf(%i,&m);
if ( (m >= 1) && (m <= 10) )
printf(%i esta entre 1 y 10\n",m);
else
printf(%i no esta entre 1 y 10\n");
}
Abraham Zamudio

24

Estructura de decision Doble


Ejercicio
Calcular el salario mensual de un empleado, sabiendo que ste se
calcula en base a las horas semanales trabajadas y de acuerdo a
un precio especificado por hora. Si se pasa de las 40 horas
semanales, las horas extras se pagarn a razn de 1,5 veces la
hora ordinaria.
Anlisis E-P-S
Entradas:

Horas semanales trabajadas (HST)


Precio por hora (PH)
Proceso:
- Si horas semanales trabajadas (HST) <= 40
Calcular salario mensual (SM) = HST * PH
- Si horas semanales trabajadas (HST) > 40
Calcular salario mensual
(SM)
=
40
*
PH
+
Salida: salario mensual (SM)
Abraham Zamudio

PH*1,5*(HST-40)

25

Estructura de decision Doble


Ejercicio
Algoritmo
Inicio
Escribir (Introduzca el numero de horas trabajadas)
Leer (HST)
Escribir (Introduzca el precio por hora)
Leer (PH)
Si (HST < 40) entonces
SM = HST * PH
sino
SM = 40 * PH + PH*1,5*(HST-40)
Fin_Si
Escribir (Salario mensual, SM)
Fin

Abraham Zamudio

26

Estructura de decision
La sentencia switch da una alternativa mucho
ms refinada a la necesidad de utilizar o
implementar mltiples sentencias condicionales if
cuando deseamos que una determinada variable
tome diferentes valores para cada condicin.
Generalmente, la sentencia switch se
implementa cuando es necesarario la
utilizacin de un men de opciones ya
que el usuario deber escoger una de
las opciones, a esto me refiero cuando
comento que la variable puede tomar
diferentes valores.

Abraham Zamudio

27

Estructura de decision
La sintaxis o estructura general de la sentencia switch es la siguiente:
switch expresion
case valor1
instrucciones1
case valor2
instrucciones2
case {valor3, valor4, valor5}
instrucciones3
Otherwise % opcin por defecto
instrucciones4

En primer lugar, se evala la expresin del


switch, cuyo resultado debe ser un nmero
escalar o una cadena de caracteres. Este
resultado se compara con los valores de
cada uno de los case y se ejecutan las
instrucciones del case cuyo valor coincida.
Slo se ejecutar el que coincida. Si ningn
valor de los case coincide, entonces se
ejecutarn las instrucciones indicadas en
otherwise. Observar que se puede agrupar
ms de un valor en un case.

Abraham Zamudio

28

Estructura de decision

Sentencia break: La sentencia break se utiliza en


la sentencia switch y en las estructuras de
repeticin. Esta sentencia le dice a la
computadora que ejecute la sentencia que est
inmediatamente a continuacin del fin del switch
o del fin de una estructura de repeticin.

Abraham Zamudio

29

Estructura de decision

Abraham Zamudio

30

Estructura de decision
Aunque la sentencia if de C/C++ es muy potente,
en ocasiones su escritura puede resultar tediosa,
sobre todo en casos en los que el programa
presenta varias elecciones despues de chequear
una
expresion:
seleccion
multiple
o
multialternativa. En situaciones donde el valor de
una expresion determina que sentencias seran
ejecutadas es mejor utilizar una sentencia switch
en lugar de una if.
Abraham Zamudio

31

Estructura de decision
Por ejemplo, la sentencia switch:
switch (operador) {
case + :
resultado = A + B;
break;
case - :
resultado = A - B;
break;
case * :
resultado = A * B;
break;
case / :
resultado = A / B;
break;
default :
printf("Operador invalido");
}
Abraham Zamudio

32

Estructura de decision
tiene el mismo efecto que la siguiente sentencia if:
if (operador == +)
resultado = A + B;
else if (operador == -)
resultado = A - B;
else if (operador == *)
resultado = A * B;
else if (operador == /)
resultado = A / B;
else
printf("Operador invalido");
Abraham Zamudio

33

#include<stdio.h>
main(void)
{int dia;
printf("ingrese un nmero entre 1 y 7........ ");
scanf("%d",&dia);
switch(dia)
{
case 1:
printf(" LUNES \n");
break;
case 2:
printf(" MARTES \n");
break;
case 3:
printf(" MIERCOLES\n");
break;
case 4:
printf(" JUEVES\n");
break;
case 5:
printf(" VIERNES\n");
break;
case 6:
printf(" SABADO\n");
break;
case 7:
printf(" DOMINGO\n");
break;
default:
printf(" SOLO NMEROS ENTRE 1 Y 7........ ");
}
Abraham Zamudio
}

Estructura
de
decision
Ejemplo

34

Estructura de decision - Ejemplo


#include<stdio.h>

case 2:

main(void)

printf("BASE DE UN TRINGULO

{int operacin;

printf("ingrese el area ........ ");

printf("EJERCICIOS DE LOS TRINGULOS ........ \n");

scanf("%f",&area);

printf("============================ \n\n\n");

printf("ingrese la altura ........ ");

printf("1 para calcular el rea de un tringulo \n");

scanf("%f",&altura);

printf("2 para calcular la base \n");


printf("3 para calcular la altura \n\n");
printf("ingrese una opcin ........ ");
scanf("%d",&operacin);

printf("la base de area del tringulo es %f ",2*area/altura);


break;
case 3:
printf("ALTURA DE UN TRINGULO

switch(operacin)

\n");

printf("ingrese el area ........ ");

{
float rea, altura, base;

scanf("%f",&area);

case 1:

printf("ingrese la base ........ ");

printf("AREA DEL TRINGULO

\n");

\n");

scanf("%f",&base);

printf("ingrese la base ........ ");

printf("la base de area del tringulo es %f ",2*area/base);

scanf("%f",&base);

break;

printf("ingrese la altura ........ ");

default:

scanf("%f",&altura);

printf(" nada mas ........ ");

printf("el area del tringulo es %f ",base*altura/2);

break;

Abraham Zamudio

35

Estructura de decision - Ejercicio

Hacer un programa que calcule: el rea de un


tringulo, un trapecio, un rectngulo y el rea de
un tringulo en funcin de sus lados.

Abraham Zamudio

36

Estructura de decision Ejercicios 1


Escribir un programa tal que dada la temperatura
mxima del mes y la temperatura medida hoy,
actualice el valor de la mxima si la temperatura
leda hoy es mayor que dicho mximo.
Escribir un programa que calcule las soluciones
reales de una ecuacin de segundo grado
ax2+bx+c=0. El programa debe devolver el
nmero de soluciones distintas (una si b2-4ac=0,
dos si b2-4ac>0 y ninguna si b2-4ac<0) y cules
son esas soluciones.
Abraham Zamudio

37

Estructura de decision Ejercicios 2


Escribir un programa tal que dados los goles del
equipo local (gl) y los goles del equipo visitante
(gv), devuelva una cadena de caracteres
indicando qu equipo ha ganado (resultados
posibles: local, visitante, empate).
Escribir un programa que reciba la nota (nmero
real) que un alumno ha sacado en un examen y
devuelva su calificacin (cadena de caracteres),
segn el siguiente criterio: 0-4.9, suspenso; 5-6.9,
aprobado; 7-8.4 notable; 8.5-10, sobresaliente.
Abraham Zamudio

38

Estructura de decision Ejercicios 3


Implementar un programa que dados tres
nmeros a, b y c, los devuelva ordenados de
menor a mayor.
El cuadrante de un punto (x,y) se puede
determinar a partir del signo de x e y. Escribir una
funcin tal que dadas las coordenadas x e y,
indique a qu cuadrante pertenece el punto.

Abraham Zamudio

39

Estructuras de Repeticion
Programacin Estructurada
La programacin estructurada es un paradigma que consiste
en la organizacin de un cdigo en bloques conformados por
estructuras del tipo:
Secuencial (asignacin, lectura, escritura)
Decisin o seleccin (simple, doble, mltiple)
Repeticin (Repita mientras, Hacer-Mientras, Repita para)

Abraham Zamudio

Estructuras de Repeticion
Estructura de repeticin o lazo (Bucles)
Permite que un conjunto de sentencias (bloque) de un
programa puedan ser ejecutadas repetidamente segn el
resultado de una expresin lgica.
Tipos de estructuras de repeticin
Repeticin condicional o controlada por un centinela:
REPITA-MIENTRAS y HACER MIENTRAS.
Repeticin
controlada
por
un
contador:
REPITA -PARA.
Conceptos Bsicos
Contador
Acumulador
Abraham Zamudio

Estructuras de Repeticion

Contador
Variable cuyo valor se incrementa o decrementa
en una cantidad constante cada vez que se
produce un determinado suceso o accin. Se
debe realizar primeramente una operacin de
inicializacin
y
posteriormente
los
correspondientes incrementos o Decrementos.

Abraham Zamudio

Estructuras de Repeticion
Operaciones sobre un Contador
Inicializacin:
contador = valor inicial
Incremento/decremento:
contador = contador + valor_constante
contador = contador valor_constante
Ejemplo
// inicializacin
int i=0, j=1000;
i++; // incremento j--; //decremento
i+=15; // incremento j-=10; //decremento
Cuntas iteraciones hacen falta para que j llegue a 0 (cero)?
Abraham Zamudio

Estructuras de Repeticion
Acumulador
Variable cuyo valor se incrementa o decrementa
en una cantidad variable cada vez que se
produce un determinado suceso o accin. Se
debe realizar primeramente una operacin de
inicializacin
y
posteriormente
los
correspondientes incrementos o Decrementos.
Abraham Zamudio

Estructuras de Repeticion
Operaciones sobre un Acumulador
Inicializacin:
acumulador = valor inicial
Acumulacin:
acumulador = acumulador + valor
acumulador = acumulador * valor
acumulador = acumulador - valor
acumulador = acumulador / valor
Abraham Zamudio

Estructuras de Repeticion
Ejemplo
float iterador = 0, nota = 15.5;
unsigned multiplicador = 1; // valor distinto de cero
- Acumular (Incrementos)
iterador = iterador + nota;
multiplicador = multiplicador * nota;
multiplicador *= nota;
- Acumular (Decrementos)
iterador = iterador nota;
multiplicador /= nota;
Abraham Zamudio

Estructuras de Repeticion - WHILE

Abraham Zamudio

Estructuras de Repeticion - WHILE

Esta sentencia permite ejecutar repetidamente,


mientras se cumpla una determinada
condicin, una sentencia o bloque de sentencias.
La forma general es como sigue:
while (expresion_de_control)
sentencia;

Abraham Zamudio

10

Estructuras de Repeticion - WHILE


Explicacin: Se evala expresion_de_control y si el resultado es
false se salta sentencia y se prosigue la ejecucin. Si el resultado
es true se ejecuta
sentencia y se vuelve a evaluar
expresion_de_control (evidentemente alguna variable de las que
intervienen en expresion_de_control habr tenido que ser
modificada, pues si no el bucle continuara indefinidamente). La
ejecucin de sentencia prosigue hasta que expresion_de_control
se hace false, en cuyo caso la ejecucin contina en la lnea
siguiente a sentencia. En otras palabras, sentencia se ejecuta
repetidamente mientras expresion_de_control sea true, y se deja
de ejecutar cuando expresion_de_control se hace false.
Obsrvese que en este caso el control para decidir si se sale o no
del bucle est antes de sentencia, por lo que es posible que
sentencia no se llegue a ejecutar ni una sola vez.
Abraham Zamudio

11

Estructuras de Repeticion - WHILE

Las sentencias (una o


ms) del cuerpo del lazo
se ejecutan mientras la
condicin (expresin
lgica) es cierta. Cuando
la condicin es falsa,
termina la
ejecucin del lazo.
Abraham Zamudio

12

Estructuras de Repeticion - WHILE

Se pregunta al principio por la


condicin, por tanto el lazo se
ejecuta cero (si la primera vez
la condicin es falsa) o mas
veces.
Si la condicin nunca se hace
falsa, el programa entra en un
lazo infinito, es decir, las
sentencias del cuerpo del lazo
se ejecutarn indefinidamente.

Abraham Zamudio

13

Estructuras de Repeticion - WHILE

Abraham Zamudio

14

Estructuras de Repeticion - WHILE

Abraham Zamudio

15

Estructuras de Repeticion - WHILE

Abraham Zamudio

16

Estructuras de Repeticion - WHILE

Hay que estar pendientes de INICIALIZAR las variables


que intervienen en la condicin antes de ejecutar el lazo
por primera vez, ya que lo primero que hace la
estructura es evaluar la condicin.
Abraham Zamudio

17

Estructuras de Repeticion - WHILE


#include <stdio.h>
int main () {
char c, palabra[21];
int i;
printf("Teclee una palabra de menos de 20 letras:");
scanf("%s", palabra);
i = 0;
while(palabra[i++] != '') ;
printf("%s tiene %d letras.", palabra, i);
printf("%s escrita al revs es: ", palabra);
while (i > 0)
printf("%c", palabra[--i]);
return 0;
}
Abraham Zamudio

18

Estructuras de Repeticion - WHILE


#include <stdio.h>
main()
{
char nombre[15];
int c;
printf("Cual es tu nombre? ");
scanf("%s", nombre);
c=0;
while( nombre[c] > 0 )
{
c++; /* incrementamos el contador en uno*/
}
printf("Tu nombre tiene %d caracteres", c);
return 0;
Abraham Zamudio
}

19

Estructuras de Repeticion - WHILE


Salidas abruptas del while
Algunas veces es conveniente salir de forma
abrupta de una estructura de repeticin. Para
esto se utiliza la sentencia break.
Segn break, el lazo de repeticin ms interno se
cancelar.
Abraham Zamudio

20

Estructuras de Repeticion - WHILE


Ejemplo de break

Abraham Zamudio

21

Estructuras de Repeticion - WHILE


Regreso abrupto a la condicin
Dentro de un lazo de repeticin, se pueden hacer
regresos abrutos a la condicin que gobierna al
lazo.
El constructo en C para tal proposito es el
continue.
Abraham Zamudio

22

Estructuras de Repeticion - WHILE


Ejemplo del continue
Supongamos que queremos procesar solamente
los nmeros enteros positivos de un conjunto
introducido por teclado:
i=0;
while (i<10)
{
prinf(Introduzca un nmero: );
scanf(%i,&n);
if (n < 0)
continue;
else
{ i++;
printf(Procesable); }
Abraham Zamudio
}

23

Estructuras de Repeticion - WHILE


Ejemplo
Calcular la suma de n nmeros introducidos por
teclado.

Abraham Zamudio

24

Estructuras de Repeticion - WHILE


Ejemplo
Calcular la suma de n nmeros introducidos por
teclado.

Abraham Zamudio

25

Estructuras de Repeticion - WHILE


Codificacin

#include <stdio.h>
void main ()
{
int n, num, suma = 0, contador = 0;
printf(Introduzca el nmero de elementos a
sumar);
scanf(%i,n);
while (contador < n)
{
contador++;
printf(Introduzca un numero);

scanf(%i,&num);
suma += num;

}
printf(Suma = %i\n, suma);
}
Abraham Zamudio

26

Estructuras de Repeticion - WHILE


Ejemplo. EPS.
Leer una serie de nmeros reales y calcular su
media. La marca de fin de lectura ser el 999

Abraham Zamudio

27

Estructuras de Repeticion - WHILE

Abraham Zamudio

28

Estructuras de Repeticion - WHILE

Abraham Zamudio

29

Estructuras de Repeticion WHILE


Ejercicios Propuestos

Abraham Zamudio

30

Estructuras de Repeticion WHILE


Ejercicios Propuestos

Abraham Zamudio

31

Estructuras de Repeticion WHILE


Ejercicios Propuestos

Abraham Zamudio

32

Estructuras de Repeticion WHILE


Ejercicios Propuestos

Abraham Zamudio

33

Estructuras de Repeticion WHILE


Ejercicios Propuestos

Abraham Zamudio

34

Estructuras de Repeticion WHILE


Ejercicios Propuestos

Abraham Zamudio

35

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

36

Estructuras de Repeticion DO ...


WHILE
La estructura Hacer-Mientras es una sentencia
del tipo REPITA MIENTRAS con la diferencia
que evala la condicin al final del lazo y no al
principio.
Las sentencias (una o ms) del cuerpo del lazo
se ejecutan mientras que la condicin (expresin
lgica) es cierta. Como se pregunta al final por la
condicin, el lazo se ejecuta una o mas veces.
Si la condicin nunca se hace falsa, las
sentencias del cuerpo del lazo se ejecutarn
indefinidamente.
Abraham Zamudio

37

Estructuras de Repeticion DO ...


WHILE
Las variables que intervienen en la condicin
pueden INICIALIZARSE antes de la primera
ejecucin del lazo o durante sta, ya que la
evaluacin de la condicin se hace al final de la
estructura. Hay que estar pendientes de
MODIFICAR dentro del cuerpo del lazo los
valores de las variables que intervienen en la
condicin. La modificacin de estos valores debe
estar en aras de garantizar que en algn
momento la condicin se haga falsa y el lazo
pueda terminar su ejecucin.
Abraham Zamudio

38

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

39

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

40

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

41

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

42

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

43

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

44

Estructuras de Repeticion DO ...


WHILE
#include <stdio.h>

else { // impar

void main ()

CI++;

AI += num; }

int conta = 0, CP = 0, CI = 0;

conta++;

int AP = 0, AI = 0, num;

} while (conta < 10);

float media;
do
{
printf(numero ?\n);
scanf(%i,&num);

if (CI != 0) {
media =(float)AI/(float)CI;
printf(%i %i %i,AP,CP,media);
} else {

if (num % 2 == 0) {

printf(%i %i,AP,CP);

// par

printf(No hay numeros

CP++;

impares\n);

AP += num;

}
Abraham Zamudio

45

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

46

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

47

Estructuras de Repeticion DO ...


WHILE
#include <stdio.h>

do {

void main ()

numero ++;

if (numero % 2 ==0)

unsigned int n, numero

nPar += numero;

= 0, nPar = 0, nImpar =
0;
do // validacin del
valor de n

else
nImpar += numero;
} while (numero < n);

printf(Introduzca un

printf(Suma de numeros

valor entero mayor que

pares %i\n,nPar);

cero\n);

printf(Suma de numeros

scanf(%i,&n);

impares %i\n,nImpar);

} while (n >= 1);

}
Abraham Zamudio

48

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

49

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

50

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

51

Estructuras de Repeticion DO ...


WHILE

Abraham Zamudio

52

Estructuras de Repeticion For

For es quizs el tipo de bucle mas verstil y


utilizado del lenguaje C. Su forma general es la
Siguiente:
for (inicializacion; expresion_de_control; actualizacion)
sentencia;

Abraham Zamudio

53

Estructuras de Repeticion For


Explicacin: Posiblemente la forma ms sencilla
de explicar la sentencia for sea utilizando la
construccin while que sera equivalente. Dicha
construccin es la siguiente:
inicializacion;
while (expresion_de_control) {
sentencia;
actualizacion;
}
Abraham Zamudio

54

Estructuras de Repeticion For


donde sentencia puede ser una nica sentencia
terminada con (;), otra sentencia de control ocupando
varias lneas (if, while, for, ...), o una sentencia
compuesta o un bloque encerrado entre llaves {...}. Antes
de iniciarse el bucle se ejecuta inicializacion, que es una
o ms sentencias que asignan valores iniciales a ciertas
variables o contadores. A continuacin se evala
expresion_de_control y si es false se prosigue en la
sentencia siguiente a la construccin for; si es true se
ejecutan sentencia y actualizacion, y se vuelve a evaluar
expresion_de_control. El proceso prosigue hasta que
expresion_de_control sea false. La parte de
actualizacion sirve para actualizar variables o
incrementar contadores. Abraham Zamudio
55

Estructuras de Repeticion For


Un ejemplo tpico puede ser el producto escalar
de dos vectores a y b de dimensin n:
for (pe =0.0, i=1; i<=n; i++){
pe += a[i]*b[i];
}
Primeramente se inicializa la variable pe a cero y la variable i
a 1; el ciclo se repetir mientras que i sea menor o igual que
n, y al final de cada ciclo el valor de i se incrementar en una
unidad. En total, el bucle se repetir n veces. La ventaja de la
construccin for sobre la construccin while equivalente est
en que en la cabecera de la construccin for se tiene toda la
informacin sobre como se inicializan, controlan y actualizan
las variables del bucle. Obsrvese que la inicializacion consta
de dos sentencias separadas
por
el operador (,).
Abraham
Zamudio
56

Estructuras de Repeticion For

Abraham Zamudio

57

Estructuras de Repeticion For

Abraham Zamudio

58

Estructuras de Repeticion For

Abraham Zamudio

59

Estructuras de Repeticion For

Abraham Zamudio

60

Estructuras de Repeticion For

Abraham Zamudio

61

Estructuras de Repeticion For

Abraham Zamudio

62

Estructuras de Repeticion For

Abraham Zamudio

63

Estructuras de Repeticion For


Ejemplo 1

Abraham Zamudio

64

Estructuras de Repeticion For


Ejemplo 2

Abraham Zamudio

65

Estructuras de Repeticion For


Ejemplo 2
Codificacin
#include <stdio.h>
void main()
{
unsigned int AP = 0, num;
for (num = 2; num <= 100; num += 2)
AP += num;
printf(Suma de numeros pares %i \n,AP);
}
Abraham Zamudio

66

Estructuras de Repeticion For


Ejemplo 3

Abraham Zamudio

67

Estructuras de Repeticion For


Ejemplo 3

Abraham Zamudio

68

Estructuras de Repeticion For


Ejemplo 3
Codificacin
//Calcula el promedio de 3 notas para n //estudiantes
#include <stdio.h>
void main ()
{
unsigned integer n, k, nota1, nota2, nota3;
float media;
printf(Introduzca el numero de estudiantes\n);
scanf(%i,&n);
for (k = 1; k <= n; k++)
{
printf(Para el estudiante );
printf(Introduzca la nota de PD-I );;
scanf(%i,&nota1);
printf(Introduzca la nota de Probabilidades);
scanf(%i,&nota2);
cout Introduzca la nota de Calculo 40 );
scanf(%i,&nota3);
media = ((float)nota1 + (float)nota2 + (float)nota3)/3.0;
printf(Media del estudiante %i = %i\n,k,media);
}
}
Abraham Zamudio

69

Estructuras de Repeticion For


Ejemplo 4

Abraham Zamudio

70

Estructuras de Repeticion For


Ejemplo 4

Abraham Zamudio

71

Estructuras de Repeticion For


Ejemplo 4

Abraham Zamudio

72

Estructuras de Repticion Anidadas


Estructuras de repeticin unas dentro de otras.
Reglas de anidamiento
La(s) estructura(s) interna(s) debe(n) estar
completamente contenida(s) en la estructura
externa.
No deben existir solapamientos.
Abraham Zamudio

73

Estructuras de Repticion Anidadas

Abraham Zamudio

74

Estructuras de Repticion Anidadas


Ejemplo 1
Un tringulo rectngulo puede tener lados que
sean enteros. El conjunto de tres valores enteros
para los lados de un tringulo rectngulo es una
tripleta pitagrica. Estos tres lados deben
satisfacer la relacin de que la suma de los
cuadrados de dos de los lados (cateto1, cateto2)
es igual al cuadrado de la hipotenusa. Encontrar
todas las tripletas pitagricas tal que
Cateto1 < 500, cateto2 < 500 e hipotenusa < 500.
Abraham Zamudio

75

Estructuras de Repticion Anidadas


Ejemplo 1

Abraham Zamudio

76

Estructuras de Repticion Anidadas


Ejemplo 1

#include <stdio.h>
#define MAX 500
int main()
{
int i, j;
for (i = 1; i <= MAX; i++)
for (j = 1; j <= i; j++)
{
if (sqrt(float(i*i+j*j)) - int(sqrt(float(i*i+j*j))) == 0.0)
printf("triplete: %i, %i, %i, i, j , i*i+j*j);
}
}
Abraham Zamudio

77

Estructuras de Repticion Anidadas


Ejemplo 2
Se conoce la poblacin de cada una de las cinco
ciudades mas importantes de veintiocho pases y
se desea identificar e imprimir la poblacin de la
ciudad mas grande (en nmero de habitantes) de
cada pas.
REALIZAR EL ANALISIS E-P-S

Abraham Zamudio

78

Estructuras de Repticion Anidadas


Ejemplo 2

Abraham Zamudio

79

Estructuras de Repticion Anidadas


Ejemplo 2
#include <stdio.h>
void main () {
int j = 1, mayor, k;
while (j < 28)
{
mayor = 0;
for (k = 1; k <= 5; k++)
{
printf(Introduzca poblacin de ciudad %i:, k);
scanf(%i, pob_ciudad);
if (pob_ciudad > mayor)
mayor = pob_ciudad;
}
printf(Poblacion mayor del pais %i = %i, j, mayor);
j++;
}
}
Abraham Zamudio

80

También podría gustarte