Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
Abraham Zamudio
10
11
12
Algoritmo y codificacin
para determinar si dado
tres nmeros, la suma
de dos resulta igual al
tercero.
Abraham Zamudio
13
le
Abraham Zamudio
14
15
16
17
18
19
Abraham Zamudio
20
21
22
23
24
PH*1,5*(HST-40)
25
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
Abraham Zamudio
28
Estructura de decision
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
case 2:
main(void)
printf("BASE DE UN TRINGULO
{int operacin;
scanf("%f",&area);
printf("============================ \n\n\n");
scanf("%f",&altura);
switch(operacin)
\n");
{
float rea, altura, base;
scanf("%f",&area);
case 1:
\n");
\n");
scanf("%f",&base);
scanf("%f",&base);
break;
default:
scanf("%f",&altura);
break;
Abraham Zamudio
35
Abraham Zamudio
36
37
38
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
Abraham Zamudio
Abraham Zamudio
10
11
12
Abraham Zamudio
13
Abraham Zamudio
14
Abraham Zamudio
15
Abraham Zamudio
16
17
18
19
20
Abraham Zamudio
21
22
23
Abraham Zamudio
24
Abraham Zamudio
25
#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
Abraham Zamudio
27
Abraham Zamudio
28
Abraham Zamudio
29
Abraham Zamudio
30
Abraham Zamudio
31
Abraham Zamudio
32
Abraham Zamudio
33
Abraham Zamudio
34
Abraham Zamudio
35
Abraham Zamudio
36
37
38
Abraham Zamudio
39
Abraham Zamudio
40
Abraham Zamudio
41
Abraham Zamudio
42
Abraham Zamudio
43
Abraham Zamudio
44
else { // impar
void main ()
CI++;
AI += num; }
int conta = 0, CP = 0, CI = 0;
conta++;
int AP = 0, AI = 0, num;
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
CP++;
impares\n);
AP += num;
}
Abraham Zamudio
45
Abraham Zamudio
46
Abraham Zamudio
47
do {
void main ()
numero ++;
if (numero % 2 ==0)
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
pares %i\n,nPar);
cero\n);
printf(Suma de numeros
scanf(%i,&n);
impares %i\n,nImpar);
}
Abraham Zamudio
48
Abraham Zamudio
49
Abraham Zamudio
50
Abraham Zamudio
51
Abraham Zamudio
52
Abraham Zamudio
53
54
Abraham Zamudio
57
Abraham Zamudio
58
Abraham Zamudio
59
Abraham Zamudio
60
Abraham Zamudio
61
Abraham Zamudio
62
Abraham Zamudio
63
Abraham Zamudio
64
Abraham Zamudio
65
66
Abraham Zamudio
67
Abraham Zamudio
68
69
Abraham Zamudio
70
Abraham Zamudio
71
Abraham Zamudio
72
73
Abraham Zamudio
74
75
Abraham Zamudio
76
#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
Abraham Zamudio
78
Abraham Zamudio
79
80