Académique Documents
Professionnel Documents
Culture Documents
Estructuras de Decisin y
Control
4.1 Estructura secuencial
Concepto
Una estructura secuencial es aquella en la que las instrucciones estan una a continuacin de la
otra siguiendo una secuencia nica, sin cambios de ruta. La estructura secuencial tiene una
entrada y una salida.
En la Figura 4.1 se muestra el diagrama de flujo y el pseudocdigo de una estructura secuencial.
Diagrama de Flujo
Pseudocdigo
Inicio
.
accin
accin
accin
Fin
.
1
2
3
.
Ejercicios
Ejercicio 1:- Disee un pseudocdigo que halle el rea y el permetro de un rectngulo. Considere
que: area = base x altura y perimetro = 2 x (base+altura).
Algoritmo
INICIO
//
REAL
Declaracin
base,
//
LEER
Entrada
//
Proceso
de
altura,
de
base,
de
variables
area,
perimetro
datos
altura
clculo
area
perimetro
//
=
=
Salida
IMPRIMIR
de
base*altura
2*(base+altura)
resultados
area,
perimetro
FIN
Ejemplo 2:- Disee un pseudocdigo para convertir una longitud dada en metros a sus
equivalentes en centmetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centmetros, 1
pulgada = 2.54 centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies.
Algoritmo
INICIO
//
Declaracin
REAL cmetr,ccent,
//
LEER
Entrada
//
ccent
cpulg
cpies
cyard
Proceso
//
de
cpies,
variables
cpulg,
cyard
de
cmetr
de
datos
clculo
cmetr*100
ccent/2.54
cpulg/12
cpies/3
=
=
Salida
IMPRIMIR
de
cpulg,
cpies,
resultados
cyard
FIN
Ejercicio 3:- Una institucin benfica europea ha recibido tres donaciones en soles, dolares y
marcos. La donacin ser repartida en tres rubros: 60% para la implementacin de un centro de
salud, 40% para un comedor de nios y el resto para gastos administrativos. Disee un algoritmo
que determine el monto en euros que le corresponde a cada rubro. Considere que: 1 dlar = 3.52
soles, 1 dlar = 2.08 marcos, 1 dlar = 1.07 euros.
Algoritmo
INICIO
//
Declaracin
de
variables
REAL c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3
//
LEER
ceuros
//
Entrada
csoles,
Proceso
(csoles/3.52
rubro1
rubro2
rubro3
//
IMPRIMIR
FIN
Salida
rubro1,
de
cdolares,
de
cdolares
=
=
=
de
datos
cmarcos
clculo
cmarcos/2.08)*1.07
ceuros*0.60
ceuros*0.40
ceuros*0.20
resultados
rubro2,
rubro3
Ejercicio 4:- En una competencia atltica de velocidad el tiempo se mide en minutos, segundos y
centsimas de segundo y, el espacio recorrido se mide en metros. Disee un algoritmo para
determinar la velocidad promedio de un atleta en km/hr. Considere que: 1 hora = 60 minutos, 1
minuto = 60 segundos, 1 segundo = 100 centsimas de segundo, 1 kilmetro = 1000 metros.
Algoritmo
INICIO
//
Declaracin
ENTERO tmin,
thor,
REAL
//
LEER
Clculo
//
de
tseg,
del
tiempo
tmin/60
+
del
espkm
Clculo
velkmhr
//
espmt,
tcen
espkm
datos
tcen,
espmt
total
empleado
tseg/3600
+
espacio
de
variables
tseg,
velkmhr,
Entrada
tmin,
//
Clculo
thor
=
//
de
recorrido
=
la
Salida
IMPRIMIR
en
velocidad
=
de
en
horas
tcen/360000
kilmetros
espmt/1000
en
resultados
km/hr
espkm/thor
velkmhr
FIN
Ejercicio 5:- Disee un algoritmo que determine la cifra de las unidades de un nmero natural.
Solucin 1
Anlisis
Puede comprobarse que la cifra de las unidades de un nmero es igual al resto de la divisin del
nmero entre 10. Observe para ello las siguientes divisiones:
3245
5
10
324
768
8
10
76
9
9
10
0
Algoritmo
INICIO
//
Declaracin
ENTERO
//
//
unidades
//
FIN
de
numero,
variables
de
datos
Entrada
LEER
numero
Proceso
=
de
numero
Salida
IMPRIMIR
unidades
clculo
%
de
10
resultados
unidades
Solucin 2
Anlisis
El residuo de una divisin entera puede obtenerse tambin sin recurrir al operador %, de la
siguiente forma:
unidades = numero - (numero / 10) * 10
observe para esto que en la divisin (numero/10) los operandos son enteros por lo que el cociente
ser un entero. As por ejemplo, si numero es igual a 3245, la divisin (numero/10) produce 324,
aunque matemticamente sea 324.5; es decir, se descarta la parte decimal.
Algoritmo
INICIO
//
ENTERO
//
LEER
//
unidades
IMPRIMIR
//
Declaracin
numero,
de
unidades
Entrada
Proceso
=
Salida
variables
de
datos
de
numero
de
numero
clculo
(numero/10)*10
resultados
unidades
FIN
Ejercicio 6:- Disee un algoritmo que determine la suma de las cifras de un nmero entero positivo
de 4 cifras.
Solucin 1
Anlisis
Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto, considere
el caso de un nmero N igual a 3245:
3245
5
10
324
unidades
cociente = N/10
324
4
N%10
10
32
decenas
cociente = cociente/10
32
2
cociente%10
cociente%10
10
3
centenas
millares = cociente/10
Algoritmo
INICIO
//
Declaracin
de
variables
ENTERO N, suma, millares, centenas, decenas, unidades, resto
LEER
//
Entrada
//
unidades
cociente
decenas
cociente
centenas
millares
suma
=
IMPRIMIR
de
Proceso
de
datos
clculo
=
=
unidades
//
+
Salida
=
=
=
=
decenas
+
de
centenas
N%10
N/10
cociente%10
cociente/10
cociente%10
cociente/10
+
millares
resultados
suma
FIN
Solucin 2
Anlisis 2
Considerando que el nmero tiene 4 cifras, las cifras tambin pueden ser obtenidas mediante
divisiones sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un nmero N igual
a 3245:
3245
1000
245
millares
resto
= N%1000
245
45
N/1000
100
2
centenas
resto
= resto%100
45
3
resto/100
10
4
decenas
unidades = resto%10
resto/10
Algoritmo
INICIO
//
Declaracin
de
variables
ENTERO N, suma, millares, centenas, decenas, unidades, resto
//
//
suma
=
//
Entrada
LEER
Proceso
millares
resto
centenas
resto
decenas
unidades
de
de
=
=
decenas
Salida
=
=
de
datos
N
clculo
N/1000
N%1000
resto/100
resto%100
resto/10
unidades = resto%10
centenas
+
millares
resultados
IMPRIMIR
FIN
suma
Ejercicio 7:- Disee un algoritmo que lea la hora actual del da HH:MM:SS y determine cuantas
horas, minutos y segundos restan para culminar el da.
Algoritmo
INICIO
ENTERO
//
hor1,
Declaracin
min1, seg1, hor2,
//
LEER
Entrada
hor1,
de
min2,
de
min1,
seg2,
variables
segres,
resto
datos
seg1
segres
//
86400
Descomposicin de
hor2
resto
min2
seg2
//
(hor1*3600
segres
Salida
horas,
=
=
=
=
min1*60
minutos
de
IMPRIMIR
FIN
en
seg1)
segundos
segres/3600
segres%3600
resto/60
resto%60
resultados
min2,
hor2,
seg2
Ejercicio 8:- Disee un algoritmo para sumar dos tiempos dados en horas, minutos y segundos.
Algoritmo
INICIO
//
Declaracin
de
variables
ENTERO hor1, min1, seg1, hor2, min2, seg2, hor3, min3, seg3, totseg,
resto
//
hor1,
LEER
Entrada
min1,
seg1,
de
hor2,
datos
min2,
seg2
Descompone
totseg
hor3
resto
min3
seg3
//
en
Salida
minutos
de
IMPRIMIR
FIN
horas,
=
=
=
=
segundos
totseg/3600
totseg%3600
resto/60
resto%60
resultados
min3,
hor3,
seg3
Ejercicio 9:- El sueldo neto de un vendedor se calcula como la suma de un sueldo bsico de
S/.250 ms el 12% del monto total vendido. Disee un algoritmo que determine el sueldo neto de
un vendedor sabiendo que hizo tres ventas en el mes.
Algoritmo
INICIO
REAL
//
venta1,
//
LEER
//
ventatot
Declaracin
venta2,
venta3,
de
ventatot,
Entrada
venta1,
=
comision
sueldoneto
Proceso
venta1
=
de
=
250
variables
comision,
sueldoneto
venta2,
de
venta2
+
datos
venta3
clculo
+
venta3
0.12*ventatot
comision
//
Salida
IMPRIMIR
de
resultados
sueldoneto
FIN
Ejercicio 10:- Disee un algoritmo que determine el porcentaje de varones y de mujeres que hay
en un saln de clases.
Algoritmo
INICIO
//
Declaracin
REAL
ENTERO
varones,
de
porcvar,
//
de
varones,
Entrada
LEER
//
total
porcvar
porcmuj
//
variables
mujeres,
datos
Proceso
=
de
varones
=
=
Salida
IMPRIMIR
de
porcvar,
porcmuj
total
mujeres
clculo
+
mujeres
varones*100.0/total
mujeres*100.0/total
resultados
porcmuj
FIN
Ejercicio 11:- En pases de habla inglesa es comn dar la estatura de una persona como la suma
de una cantidad entera de pies ms una cantidad entera de pulgadas. As, la estatura de una
persona podra ser 3' 2" ( 3 pies 2 pulgadas ). Disee un algoritmo que determine la estatura de
una persona en metros, conociendo su estatura en el formato ingls. Considere que: 1 pie = 12 plg,
1 plg = 2.54 cm, 1 m = 100 cm.
Algoritmo
INICIO
//
//
//
estmt
//
FIN
Declaracin
REAL
ENTERO
LEER
=
de
cpies,
Entrada
de
cpies,
Proceso
(cpies*12
Salida
IMPRIMIR
variables
de
de
+
datos
estmt
cplgs
cplgs
clculo
cplgs)*2.54/100
resultados
estmt
Ejercicio 12:- Disee un algoritmo que exprese la capacidad de un disco duro en megabytes,
kilobytes y bytes, conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte =
1024 bytes, 1 megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes.
Algoritmo
INICIO
//
REAL
Declaracin
de
cgigabyte,
cmegabyte,
//
//
Entrada
LEER
Proceso
cmegabyte
ckilobyte
cbyte
//
IMPRIMIR
FIN
variables
ckilobyte,
de
cbyte
datos
cgigabyte
de
=
=
Salida
de
cmegabyte,
clculo
cgigabyte*1024
cmegabyte*1024
ckilobyte*1024
resultados
ckilobyte,
cbyte
Ejercicio 13:- Disee un algoritmo que intercambie las cifras de las unidades de dos nmeros
naturales.
Algoritmo
INICIO
//
ENTERO
Declaracin
de
numero1,
numero2,
//
//
LEER
Entrada
//
FIN
de
numero1,
Determina
las
unidades1
unidades2
//
Intercambia
las
numero1
=
numero1
numero2
=
numero2
Salida
IMPRIMIR
variables
unidades1,
unidades2
cifras
datos
de
=
=
cifras
de
unidades1
unidades2
de
las
las
+
+
numero2
unidades
n1%10
n2%10
unidades
unidades2
unidades1
resultados
n1,
http://www.geocities.com/david_ees/Algoritmia/cap02.htm
Estructura Secuencial
n2
ESTRUCTURA SECUENCIAL
....
Ejemplo:
Calcular el salario neto de un trabajador en funcin del nmero de horas
trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al
sueldo bruto en concepto de impuestos (20 por 100).
Pseudocdigo
Inicio
{clculo salario neto}
leer nombre, horas, precio_hora
salario_bruto
impuestos
salario_neto
horas * precio
0.20 * salario_bruto
salario_bruto_impuestos
Fin
Diagrama de flujo
Diagrama N-S
y >=
Los operadores anterior son usados con las siguientes estructuras que se muestran.
La sentencia if
Las tres formas como se puede emplear la sentencia if son:
if (condicion)
sentencia;
...o
if (condicion)
sentencia1;
else
sentencia2;
...o
if (condicion1)
sentencia1;
else if (condicion2)
sentencia2;
...
else
sentencian;
El flujo lgico de esta estructura es de arriba hacia abajo. La primera sentencia se ejecutar
y se saldr de la estructura if si la primera condicin es verdadera. Si la primera condicin
fue falsa, y existe otra condicin, se evala, y si la condicin es verdadera, entonces se
ejecuta la sentencia asociada. Si existen ms condiciones dentro de la estructura if, se van
evaluando stas, siempre y cuando las condiciones que le precedan sean falsas.
La sentencia que esta asociada a la palabra reservada else, se ejecuta si todas las
condiciones de la estructura if fueron falsas.
Por ejemplo:
main()
{
int x, y, w;
........
if (x>0)
{
z=w;
.......
}
else
{
z=y;
.......
}
El operador ?
El operador ternario condicional ? es ms eficiente que la sentencia if. El operador ? tiene
el siguiente formato:
expresion1 ? expresion
2 : expresion3;
Que es equivalente a la siguiente expresin:
usando ?, tendramos:
z = (a>b) ? a : b;
El uso del operador ? para reemplazar las sentencias if ... else no se restringe slo a
asignaciones, como en el ejemplo anterior. Se pueden ejecutar una o ms llamadas de
funcin usando el operador ? ponindolas en las expresiones que forman los operandos,
como en el ejemplo siguiente:
f1(int n)
{
printf("%d ",n);
}
f2()
{
}
printf("introducido\n");
main()
{
int t;
printf(": ");
scanf("%d",&t);
/* imprime mensaje apropiado */
t ? f1(t) + f2() : printf("Se di un cero\n");
}
La sentencia switch
Aunque con la estructura if ... else if se pueden realizar comprobaciones mltiples,
en ocasiones no es muy elegante, ya que el cdigo puede ser difcil de seguir y puede
confundir incluso al autor transcurrido un tiempo. Por lo anterior, C tiene incorporada una
sentencia de bifurcacin mltiple llamada switch. Con esta sentencia, la computadora
comprueba una variable sucesivamente frente a una lista de constantes enteras o de caracter.
Despus de encontrar una coincidencia, la computadora ejecuta la sentencia o bloque de
sentencias que se asocian con la constante. La forma general de la sentencia switch es:
switch (variable) {
case constante1:
secuencia
break;
case constante2:
de
sentencias
secuencia
de
sentencias
de
sentencias
break;
case constante3:
secuencia
break;
...
default:
secuencia de sentencias
}
Con switch slo se puede comprobar por igualdad, mientras que con if
puede ser con cualquier operador relacional.
Ejercicios
1. Escribir un programa que lea dos caracteres, e imprima su valor cuando se pueda
interpretar como un nmero hexadecimal. Aceptar letras maysculas y minsculas
para los valores del 10 al 15.
2. Leer un valor entero. Suponer que el nmero es un da de la semana. Suponer que 0
corresponde a Domingo y as sucesivamente. Imprimir el nombre del da.
3. Dados como entrada 3 enteros representando la fecha como da, mes, ao, imprimir
la fecha del da anterior. Por ejemplo para una entrada como: 1 3 1992 La salida
ser: Fecha anterior a 1-3-1992 es 29-02-1992
4. Escribir un programa el cual lea dos valores enteros. Si el primero es menor que el
segundo, que imprima el mensaje ``Arriba''. Si el segundo es menor que el primero,
que imprima el mensaje ``Abajo''. Si los nmeros son iguales, que imprima el
mensaje ``igual''. Si hay un error en la lectura de los datos, que imprima un mensaje
conteniendo la palabra ``Error'' y haga exit( 0 );
http://garota.fismat.umich.mx/mn1/manual/node4.html
Condicionales
La especificacin formal de algoritmos tiene realmente utilidad cuando el
algoritmo requiere una descripcin ms complicada que una lista sencilla de
instrucciones. Este es el caso cuando existen un nmero de posibles alternativas
resultantes de la evaluacin de una determinada condicin.
Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah
que se suelan denominar tambin estructuras de decisin o alternativas.
En las estructuras selectivas se evala una condicin y en funcin del
resultado la misma se realiza una opcin u otra. Las condiciones se especifcan
usando expresiones lgicas. La representacin de una estructura selectiva se hace
con palabras en pseudocdigo (if, then, else o bien en espaol si, entonces, sino),
con una figura geomtrica en forma de romba o bien con un tringulo en el
interior de una caja rectangular.
Simples
Mltiples
Pseudocdigo en espaol
Si
<condicin> Entonces
<accin S1>
Fin_si
Pseudocdigo en ingls
If
<condicin> then
<accin S1>
end_if
Diagrama N-S
Diagrama de Flujo
Diagrama N-S
Modelo 1
Modelo 2
Pseudocdigo
En ingls la estructura de decisin mltiple se representa
Case expresin of
[e1]: accin S1
[e2]: accin S2
:
[en]: accin Sn
else
accin Sx
end_case
Ejemplo:
Se desea disear un algoritmo que escriba los nombres de los das de la
semana en funcin del valor de una variable DIA introducida por teclado.
Los das de la semana son 7; por consiguiente, el rango de valores de DIA
ser 1..7, y caso de que DIA tome un valor fuera de este rango se deber producir
un mensaje de error advirtiendo la situacin anmala.
Inicio
Leer DIA
Segn_sea DIA hacer
1: escribir('Lunes')
2: escribir('Martes')
3: escribir('Mircoles')
4: escribir('Jueves')
5: escribir('Viernes')
6: escribir('Sabado')
7: escribir('Domingo')
else
escribir('Error')
fin_segn
fin
Ifs anidados
En algunas aplicaciones, una de las alternativas de una estructura if-then-else
puede incluir un decisin adicional. Por ejemplo, despus de que se elija una
determinada accin sobre una determinada calificacin de una prueba, podra
quererse evitar la posibilidad de error en los datos de entrada. Esto requiere una
comprobacin adicional para verificar que los datos de entrada son validos, lo que
sugiere el uso de una estructura if-then-else adicional incluida en cada una de las
dos alternativas originales. Este proceso es un ejemplo de anidamiento.
Ejemplo:
Algoritmo MAX_3
Este algoritmo lee tres nmeros A, B, C, imprimiendo el valor del ms grande. Se
supone que los tres valores son diferentes.
1.- Entrada de valores
Read (A, B, C)
2.- Se determina el valor ms grande mediante comprobacin por pares
if A > B
then if A > C
then MAX A (A > B, A > C)
else MAX C (C > A > B)
else if B > C
then MAX B (B > A, b > C)
else MAX C (C > B > A)
3.- Se imprime el valor ms grande
Write `El valor ms grande es`, MAX
4.- Termino
Exit
Condiciones compuestas
Estas condiciones se obtienen a partir de las expresiones simples, utilizando los
operadores lgicos and, or y not.
Los significados de estos operadores se describen adecuadamente por medio de
las tablas de verdad.
Las condiciones compuestas pueden utilizarse ya sea en enunciados if o en
repeticiones condicionales. Ejemplo:
Algoritmo MAX_3 (2a. versin)
Este algoritmo lee tres nmeros A, B, C, imprime el valor del ms grande de ellos.
Se supone que los tres valores son distintos.
1. - Entrada de los datos
Read (A, B, C)
2. - Se determina el mayor valor
if A > B and A > C then MAX A
if B > A and B > C then MAX B
if C > A and C > B then MAX C
3. - Se imprime el valor ms grande
Write `El valor ms grande es`, MAX
4. - Termino
http://nayar.uan.mx/~iavalos/Estructuras%20de%20desicion.html
Estructura While
Sintaxis:
while(condicin)
Accin;
En este caso, la sentencia Accin es ejecutada mientras el condicional condicin
se evala verdadera (distinta de 0)
En el caso de que el cuerpo del while (acciones a ejecutar en caso de que el
condicional se verifique) posea ms de una sentencia, todas ellas son encerradas
entre llaves:
while(condicin)
{
Accin1;
Accin2;
...
}
El condicional es una expresion relacional que puede involucrar operadores
relacionales (>, <, >=, <=, ==, !=) y/o operadores logicos (&&, ||, !)
Ejemplo:
/*
Programa que imprime la tabla de conversin de
Fahrenheit a Celsius para F = 0, 20, 40,..., 300
*/
#include <stdio.h>
int main()
{
int Lower, Upper, Step;
float Fahr, Celsius;
Lower = 0;
Upper = 300;
Step = 20;
Fahr = Lower;
while(Fahr <= Upper)
{
Celsius = (5.0/9.0) * (Fahr - 32.0);
printf("%4.0f F -> %6.1f C\n", Fahr, Celsius);
Fahr = Fahr + Step;
} /* fin del while */
return 0;
} /* fin del main */
NOTAS:
Lazo while(...) { ... }
Lo que se encuentra entre parntesis es una expresin a evaluar.
Mientras el resultado de la misma sea distinto de cero, se ejecutan las
sentencias asociadas que se encuentran encerradas entre llaves. A
este tipo de sentencias se las llama sentencias compuestas. Si el
cuerpo de esta sentencia consiste en una sola sentencia simple,
pueden omitirse las llaves. Las sentencias compuestas no llevan el
carcter ; como terminador. Para mejorar la legibilidad del programa,
conviene indentar las sentencias compuestas.
Clculo y asignacin:
Celsius = (5.0/9.0) * (Fahr - 32.0)
El punto decimal en los operandos de la divisin es requerido para que
la operacin sea llevada en punto flotante; de lo contrario la misma se
efecta como cociente de nmeros enteros, truncando por lo tanto el
resultado a cifras enteras. En nuestro caso sera truncado a 0.
Estructura for
Esta estructura es una generalizacin de la estructura while usada en el ejercicio
anterior. Su funcin es ejecutar iterativamente el cuerpo del bloque, que como en
el caso del while puede ser simple o compuesto. La definicin de esta estructura
de control posee 3 partes separadas por el carcter ";".
for(a; b; c)
{
...
...
}
La parte a es la de inicializacin, y puede poseer una sentencia, ninguna, o varias
separadas por el carcter ",". Esta parte se ejecuta inmediatamente antes de
entrar en el ciclo.
La parte b es el criterio o condicin de control de la iteracin. Se evala antes de
entrar a cada ciclo, inclusive en la primer iteracin. Si su resultado es distinto de
cero se ejecuta el ciclo; sino se abandona el ciclo y se sigue con la sentencia
posterior al cuerpo del for.
La parte c es la reinicializacin, que es ejecutada al final de cada ciclo.
Podemos simular el bloque for con la siguiente lgica:
a;
while(b)
{
...
...
c;
}
Ejemplo:
/* Tabla de conversin de grados F a Celsius
utilizando constantes simblicas y bloque for */
#include <stdio.h>
#define LOWER 0
#define UPPER 300
#define STEP 20
main()
{
int Fahr;
for(Fahr = LOWER; Fahr <= UPPER; Fahr += STEP)
printf("%4.0f F -> %6.1f C\n", Fahr, (5.0/9.0)*
(Fahr - 32));
}
NOTA:
Uso de constantes simblicas. Cuando se requieran valores numricos
constantes en un programa, deben definirse como constantes y no usar sus
valores numricos dentro del programa. C permite definir constantes simblicas
(directiva #define al preprocesador) que asocian un smbolo (LOWER, UPPER,
STEP) con una expresin (0,300 y 20 respectivamente) de tal manera que el
preprocesador reemplaza cualquier ocurrencia de esos smbolos por sus
expresiones asociadas
Estructura Do-While
la estructura de control do-while es una variacin sobre el bloque while
do
{
Accin1;
Accin2;
...
}while(condicin);
Estructuras Repetitivas
Las estructuras que repiten una secuencia de instrucciones un nmero
determinado de veces se denominan Bucles y se denomina Iteracin al hecho de
repetir la ejecucin de una secuencia de acciones. Entre las estructuras repetitivas
se encuentran:
Mientras (while)
Repetir (repeat)
Desde (for)
Pseudocdigo en espaol
Pseudocdigo en ingls
while condicin do
Accin S1
<Acciones>
Accin S2
:
accin Sn
Fin_mientras
Diagrama N-S
End_while
Ejemplo:
Contar los nmeros enteros positivos introducidos por teclado. Se
consideran dos variables enteras NUMERO y CONTADOR (contar el nmero
de enteros positivos). Se supone que se leen nmeros positivos y se detiene el
bucle cuando se lee un nmero negativo o cero.
Pseudocdigo
Inicio
contador
Leer (numero)
Mientras numero > 0 hacer
contador
contador+1
Leer (numero)
Fin_Mientras
Escribir('El nmero de enteros positivos es : ', contador)
Fin
Diagrama de Flujo
Representacin en N-S
Primera Forma
Ahora bin, la sintaxis utilizada en la programacin de C++ es la siguiente:
if (condicion)
{
Set de instrucciones
}
siendo "condicion" el lugar donde se pondr la condicion que se tiene que cumplir
para que sea verdadera la sentencia y asi proceder a realizar el "set de
instrucciones" o cdigo contenido dentro de la sentencia.
Segunda Forma
Ahora veremos la misma sintaxis pero ahora le aadiremos la parte "Falsa" de la
sentencia:
if (condicion)
{
Set de instrucciones //PARTE VERDADERA
}
else
{
Set de instrucciones 2 //Parte FALSA
}
La forma mostrada anteriormente muestra la union de la parte "VERDADERA" con
la nueva secuencia la cual es la parte "FALSA" de la sentencia de decision "IF" en
la cual esta compuesta por el:
else
{
Set de instrucciones 2 //Parte FALSA
}
la palabra "else" o "De lo contrario" indica al lenguaje que de lo contrario al no ser
verdadera o no se cumpla la parte verdadera entonces realizara el "set de
instrucciones 2".
Sentencia switch
switch es otra de las instrucciones que permiten la construccin de estructuras de
control. A diferencia de if, para controlar el flujo por medio de una sentencia switch
se debe de combinar con el uso de las sentencias case y break.
Notas: cualquier nmero de casos a evaluar por switch as como la sentencia
default son opcionales. La sentencia switch es muy til en los casos de
presentacin de menus.
Sintaxis:
switch (condicin)
{
case primer_caso:
bloque de instrucciones 1
break;
case segundo_caso:
bloque de instrucciones 2
break;
case caso_n:
bloque de instrucciones n
break;
default: bloque de instrucciones por defecto
}
Ejemplo 1
switch (numero)
{
Sentencias de iteracin
Las Sentencias de Iteracin o Ciclos son estructuras de control que repiten la
ejecucin de un grupo de instrucciones. Bsicamente, una sentencia de iteracin
es una estructura de control condicional, ya que dentro de la misma se repite la
ejecucin de una o ms instrucciones mientras o hasta que una a condicin
especifica se cumpla. Muchas veces tenemos que repetir un nmero definido o
indefinido de veces un grupo de instrucciones por lo que en estos casos utilizamos
este tipo de sentencias. en C++ los ciclos o bucles se construyen por medio de las
sentencias for, while y do - while. La sentencia for es til para los casos en donde
se conoce de antemano el nmero de veces que una o ms sentencias han de
repetirse. Por otro lado, la sentencia while es til en aquellos casos en donde no
se conoce de antemano el nmero de veces que una o ms sentencias se tienen
que repetir.
Sentencias For
for(contador; final; incremento)
{
Codigo a Repetir;
}
donde:
1.
2.
3.
Ejemplo 1:
for(i=1; i<=10; i++)
{
cout<<"Hola Mundo";
}
Esto indica que el contador "i" inicia desde 1 y finaliza cuando el contador "i" sea
menor o igual a 10 ( en este caso llegar hasta 10) e "i++" realiza la sumatoria por
unidad lo que hace que el for y el contador se sumen. repitiendo 10 veces "HOLA
MUNDO" en pantalla.
Ejemplo 2:
for(i=10; i>=0; i--)
{
cout<<"Hola Mundo";
}
Este ejemplo hace lo mismo que el primero, salvo que el contador se inicializa a
10 en lugar de 1; y por ello cambia la condicin que se evalua as como como que
el contador se decrementa en lugar de ser incrementado.
[editar] Sentencia while
while(condicion)
{
codigo a Repetir
}
donde:
1.
condicion es la expresin a evaluar
Ejemplo 1:
int contador = 0;
while(contador<=10)
{
contador=contador+1;
cout<<"Hola Mundo";
}
El contador Indica que hasta que este llegue a el total de 10 entonces se detendr
y ya no se realizar el cdigo contenido dentro de la sentencia while, de lo
contrario mientras el "contador" sea menor a 10 entonces el cdigo contenido se
ejecutar desplegando hasta 10 veces "Hola Mundo" en pantalla.
[editar] Sentencia do - while
La sentencia do es usada generalmente en cooperacin con while para garantizar
que una o ms instrucciones se ejucuten al menos una vez. Por ejemplo, en la
siguiente construccin no se ejecuta nada dentro del ciclo while, el hecho es que
el contador inicialmente vale cero y la condicin para que se ejecute lo que est
dentro del while es "mientras el contador sea mayor que diez". Es evidente que a
la primera evaluacin hecha por while la condicin deja de cumplirse.
int contador = 0;
while(contador > 10)
{
contador ++;
cout<<"Hola Mundo";
}
contador ++;
cout<<"Hola Mundo";
}
01234
for (i=0; i<10; i++) {
if (i == 5) break;
cout << i << " ";
}
[editar] continue
La sentencia continue se usa para ignorar una iiteracin dentro de un ciclo
controlado por for o por while.
Ejemplo:
En el siguiente fragmento de cdigo la sentencia continue ignora la iteracin
cuando la variable ( i ) es igual a 5. La salida para el mismo ser:
012346789
for (i=0; i<10; i++) {
if (i == 5) continue;
cout << i << " ";
}
continue
int i = -1;
while (i<10) {
i++;
if (i == 5) continue;
cout << i << " ";
}