You are on page 1of 19

Lenguaje de Programacin

Estructurado

ESTRUCTURAS DE
CONTROL
08/04/2016

ST 202W - Lenguaje de Programacin


Estructurado

Paradigmas de Programacin
Mayor nivel de abstraccin

Ejecucin paso a
paso mediante
constructos muy
simples
Uso extensivo de
saltos
condicionales

Estructurad
o
Mayor nivel de
abstraccin
mediante el uso
de Estructuras
de Control

Imperativo

Programacin
modular mediante
el uso de
funciones y
procedimientos

Mayor abstraccin
mediante el uso
de objetos y
mtodos

Procedural
C++ /
Java

Otros

Orientado a
Objetos

Declarativo

08/04/2016

Lgico

Funcional

ST 202W - Lenguaje de Programacin


Estructurado

Concurrent
e
2

Estructuras de Control
De seleccin
if - else if - else
switch
De repeticin
while
do while
for
De repeticin - interrumpir el flujo
continue
break
08/04/2016

ST 202W - Lenguaje de Programacin


Estructurado

Sentencia if - else if - else


Se ejecuta un bloque de
instrucciones solo si
determinada condicin es
satisfecha
Se pueden evaluar mltiples
condiciones en distintos
bloques utilizando else if
Tambin es posible incluir el
bloque else, el cual es
ejecutado cuando no se
cumple ninguna otra
condicin
08/04/2016

int nota;
cin>>nota;
if (nota < 0 || nota > 20) {
cout<<"Nota invalida"<<endl;
}
else if (nota < 10) {
cout<<"Nota
desaprobatoria"<<endl;
}
else {
cout<<"Nota
aprobatoria"<<endl;
}

ST 202W - Lenguaje de Programacin


Estructurado

Opcion
al
4

Sentencia if - else if - else


Se puede prescindir de las
llaves cuando los bloques
de instrucciones tienen
solamente 1 lnea
Cuando tienen ms de
una lnea es obligatorio el
uso de llaves
Los espacios,
tabulaciones y fin de
lnea son de uso
esttico

08/04/2016

int nota;
cin>>nota;
if (nota < 0 || nota > 20)
cout<<"Nota invalida"<<endl;
else if (nota < 10)
cout<<"Nota
desaprobatoria"<<endl;
else {
cout<<"Nota
aprobatoria!!"<<endl;
cout<<"Nota
aprobatoria!!"<<endl;
cout<<"Nota
aprobatoria!!"<<endl;
}

ST 202W - Lenguaje de Programacin


Estructurado

Qu valor imprime cada cdigo?


int a = 3, b = 1;

if (a >= 2)
if (b >= 4)
b = a;
else
b = 2 * a;
cout << "b = << b << endl;

int a = 3, b = 1;
if (a >= 2) {
if (b >= 4) {
b = a;
}
} else {
b = 2 * a;
}
cout << "b = << b << endl;

Utilizar bloques { }
cuando tengamos
mltiples niveles!
08/04/2016

ST 202W - Lenguaje de Programacin


Estructurado

Sentencia switch
Permite ejecutar
switch(ch){
instrucciones
case 'm':
/* En este caso se continua hasta
dependiendo del
proximo break */
valor de una
case 'M':
variable
cout<<"Sexo masculino<<endl;
Equivalente a
break;
case 'f':
varias sentencias
case 'F':
if
cout<<"Sexo femenino<<endl;
No requiere llaves
break;
default:
para delimitar
cout<<"Opcion invalida (para el
bloques
programa)";
Por lo general
break;
requiere el uso de }
break para
finalizar cada
ST 202W - Lenguaje de Programacin
08/04/2016
bloque
Estructurado

el

Sentencia switch: Algunas


consideraciones
Variable en switch
Debe ser una variable entera o caracter
Valores en case
Deben ser constantes
Default
Opcional. Debe ubicarse despus de todas las
opciones case
08/04/2016

ST 202W - Lenguaje de Programacin


Estructurado

Bucle while
Ejecuta un
conjunto
de
instruccion
es solo
mientras
la
condicin
sea
verdadera.

08/04/2016

int contador = 0;
int v[100];
while (contador < 100) {
v[contador] = 7;
contador++;
}
ST 202W - Lenguaje de Programacin
Estructurado

Bucle do-while
Primero
ejecuta el
conjunto
de
instruccion
es, luego
verifica si
la
condicin
se
satisface.

int x = 10;

int x = 10;

while(x < 10){


x++;
}
//x?

do {
x++;
} while(x < 10)
//x?

Ejecuta las
instrucciones 0 o
ms veces

08/04/2016

ST 202W - Lenguaje de Programacin


Estructurado

Ejecuta las
instrucciones 1 o
ms veces

10

Sentencia break
Interrumpe
la
ejecucin
del bucle
while, dowhile, o
for sin
importar la
condicin
especificad
a en el
bucle.

08/04/2016

int numero;
while (true) {
cin >> numero;
if(numero <= 0) {
break;
}
cout << numero; // Solo positivos
}
// Ejecucion finaliza al leer numero <= 0

ST 202W - Lenguaje de Programacin


Estructurado

11

Sentencia continue
Ignora el
resto de
instruccion
es en el
bucle
while, dowhile, o
for y
contina
con la
siguiente
iteracin.

08/04/2016

int numero;
while (true) {
cin >> numero; //
if(numero <= 0) {
continue;
//
}
cout << numero; //
}
// Ejecucion del bucle

Inicio del bloque


Ir al inicio del bloque
Solo positivos
nunca finaliza

ST 202W - Lenguaje de Programacin


Estructurado

12

Bucle for
Preferido cuando sabemos con exactitud cuntas
iteraciones deben realizarse:
for (instruccion-inicial; condicion; instruccion-deiteracion) {
/* instrucciones */
}

Equivalente a:
instruccion-inicial;
while(condicion) {
/* instrucciones */
instruccion-de-iteracion;
}

//
Ejemplos:
i=0,1,2,3,...,99
for (int i=0; i<100;
i=i+1) {
/* instrucciones */
}

08/04/2016

// 0 <= j < i < 100


for (int i=0; i<100; i++) {
for (int j=0; j<i; j++) {
/* instrucciones */
}
}

ST 202W - Lenguaje de Programacin


Estructurado

13

Bucle for
Ms ejemplos:

// i=0,2,4,6,8,10
int d=2;
for (int i=0; i*i<=100; i=i+d)
{
/* instrucciones */
}
Importante: Las variables de iteracin (i, j, )
pueden ser declaradas fuera de la sentencia for, o
dentro de instruccion-inicial

// i=0,2,4,...,100
int i;
for (i=0; i<=100; i=i+2) {
/* instrucciones */
}

08/04/2016

ST 202W - Lenguaje de Programacin


Estructurado

14

Bucle for
Preferido cuando
sabemos con
exactitud cuantas
iteraciones deben
realizarse
Puede utilizar
break para
escapar del bucle
y continue para
seguir con la
siguiente
iteracin

08/04/2016

for (int i=0; i<100; i++) {


if (notas[i] == 20) {
cout << "Alguien saco 20!!" << endl;
break;
}
}
int aprobados = 0;
for (int i=0; i<100; i++) {
if(notas[i] < 10)
continue; /* Continuar con siguiente
iteracin si es < 10 */
aprobados++;
}

ST 202W - Lenguaje de Programacin


Estructurado

15

Bucles infinitos
while y for
pueden ser
utilizados para
iterar hasta que
se llame a la
sentencia
break

08/04/2016

while(true) {
/* Hacer algo */
if(condicion)
break;
/* Hacer algo */
}
while(1) {
/* Hacer algo */
if(condicion)
break;
/* Hacer algo */
}

ST 202W - Lenguaje de Programacin


Estructurado

for(int i=0;;i++) {
/* Hacer algo */
if(condicion)
break;
/* Hacer algo */
}
for(;;) {
/* Hacer algo */
if(condicion)
break;
/* Hacer algo */
}

16

Cul es el valor de x?
Break
y
contin
ue

int y = 0;
int x = 0;
while (y < 10) {
y++;
if (y == 3) {
break;
}
x++;
}
//x?

08/04/2016

int y = 0;
int x = 0;
while (y < 10) {
y++;
if (y == 3) {
continue;
}
x++;
}
//x?

ST 202W - Lenguaje de Programacin


Estructurado

17

Ejercicios
Desarrolle un programa que almacene los primeros 81
trminos de la serie de Fibonacci en un arreglo de enteros
de 64 bits (long long)

F[0] = 0
F[1] = 1
F[i] = F[i-1] + F[i-2]
Desarrolle un programa que almacene las primeras 51
filas del triangulo de Pascal en una matriz de enteros de
64 bits (long long)

C[i][0] = C[i][i] = 1
C[i][j] = C[i-1][j-1] + C[i-1][j]
08/04/2016

ST 202W - Lenguaje de Programacin


Estructurado

18

Ejercicios
Desarrolle un programa que identifique si una cadena
de caracteres tiene caracteres repetidos.
Desarrolle un programa que elimine todos los
caracteres que aparezcan ms de una vez en una
cadena de caracteres.
o No est permitido realizar una copia adicional de la
cadena ingresada.
o Busque una solucin que minimice el uso de memoria.

Un anagrama es una palabra que resulta de la


transposicin de letras de otra palabra (amor- roma omar). Desarrolle un programa que indique si dos
ST 202W - Lenguaje
de Programacin
palabras son anagramas
o no.
08/04/2016
Estructurado

19