You are on page 1of 41

1

CONTROL DE FLUJO

Introduccin a la Informtica
Ingeniera Automtica
Universidad del Cauca
2
ASPECTOS GENERALES DEL LENGUAJE C++

ESTRUCTURAS SECUENCIALES
Asignacin
Lectura
Escritura
ESTRUCTURAS CONDICIONALES
Simples
Compuestas
Mltiples
ESTRUCTURAS REPETITIVAS
ESTRUCTURAS DE CONTROL DE FLUJO ANIDADAS
CONTROL DE FLUJO:
TEMAS CLASE 17/09/2014
Creacin y Compilacin de un Programa
Editor
Disco
Se crea el programa en el editor y se
almacena en disco
El programa preprocesador procesa el cdigo
El compilador crea el cdigo objeto y lo guarda
en disco
El editor de enlaces vincula el cdigo objeto con
las bibliotecas, crea a.out y lo almacena en disco
Preprocesador
Disco
Compilador
Disco
Editor de Enlaces
Disco
Cargador
Disco
Memoria Primaria
.
.
.
CPU
Memoria Primaria
.
.
.
El cargador pone en memoria el programa
La CPU toma cada instruccin y la ejecuta,
posiblemente almacenando nuevos valores
de datos a medida que se ejecuta el
programa
4
Estructura General de un Programa
Son instrucciones dirigidas al compilador para que realice
ciertas acciones con el propsito de regular el proceso de
compilado del programa al notificar errores y advertencias.
Estas siempre ocupan una lnea independiente del cdigo,
empezando por el carcter #y un nombre de directiva de
preprocesamiento. Al no ser instrucciones, no terminan en
punto y coma.
# include <stdio.h>
Nombre de directiva Archivo de cabecera
Directivas de preprocesador
Ordena al compilador la
lectura de directivas
El compilador
int a, b, sum;
cin >> a;
cin >> b;
sum = a + b;
cout << sum << endl;
Lenguaje de
maquina
Lenguaje C
Alto nivel
El enlazador (linker)
8
Estructura General de un Programa
Libreras
Constantes:
Const1 Valor1
Const2 Valor2 ...

Nombre_del_Programa
Inicio
Variables:
Tipo1 Var11, Var12...
Tipo2 Var21, Var22...

Instruccin 1
Instruccin 2
....
Instruccin N
Fin
Cuerpo del
algoritmo
Variables
Programacin
Lineal
Programacin
No Lineal
Libreras
Constantes
Cabecera
Estructura General de un Programa
Todos los programas en C comparten ciertos componentes
y rasgos esenciales:
Encabezados
Funciones - main()
Sentencias

// my first program in C++
#include <iostream>
int main()
{
std::cout << "Hello World!";
}
Hello World!


10
Buenas Prcticas de Programacin
La claridad en un programa es de vital importancia, pues
la mayor parte del tiempo de mantenimiento de un
programa se emplea en estudiar y comprender el cdigo
fuente existente.
Recomendaciones Bsicas sobre estilo de codificacin al
escribir nuestros programas en C:
Identificadores Significativos
Constantes Simblicas
Comentarios, comentarios...
Estructura del programa
Identacin
Presentacin
11
Estructuras de Control
Existen instrucciones que permiten que
el programador especifique que la
siguiente instruccin a ejecutar podra
ser distinta a la que le sigue en la
secuencia.

Son instrucciones o estructuras que dirigen el flujo del programa.

Teorema de Dijkstra (1930-2002), demuestra que todo programa
puede escribirse utilizando nicamente las tres instrucciones de
control:
Estructura secuencial: Instrucciones se ejecutan en el orden en que
se escribieron.
Estructuras condicionales: Condiciones para cambiar el flujo del
programa.
Estructuras repetitivas: Realizar ciclos o repetir instrucciones.
12
Ejemplo:
Ir de viaje
Normalmente las instrucciones de un programa se ejecutan en el
orden en que se escribieron.
Programas -> conjunto de bloques que
encajan entre s.
Cada bloque tiene un solo punto de
entrada y un solo punto de salida y la
salida de uno se conecta a la entrada del
siguiente.

Formada por varios bloques uno a
continuacin de otro.
Asignacin
Lectura/Escritura.

Decido lugar
Compro Tiquetes
Hago maletas
Abordo avin
Disfruto paseo
Estructuras secuenciales
13
Creacin de Bloques de Cdigo
En C se pueden enlazar dos o ms sentencias, usando { }

Las sentencias forman una unidad lgica que puede usarse
en cualquier lugar donde pueda hacerlo una sentencia
simple.

Un bloque de cdigo representa una unidad lgica
indivisible.
14
Asignacin
La operacin de asignacin es el modo de darle valores a una
variable.

Es destructiva, ya que el valor que tuviera la variable antes de
la asignacin se pierde y se reemplaza por el nuevo valor.

El formato general: Nombre_Variable Expresin

Se pueden asignar valores de expresiones, donde la variable y
el valor de la expresin deben tener el mismo tipo de dato.
(Primero calcula el valor de la expresin y este resultado lo
almacena en la variable sustituyendo al valor que tena
anteriormente).

15
Asignacin aritmtica: Las expresiones en las operaciones de
asignacin son aritmticas.
N 2
N N + 1

Asignacin lgica: La expresin que se evala en la operacin de
asignacin es lgica.
M 8 < 5 = Falso
N M OR (7 <= 12) = Verdad

Asignacin de caracteres: Car M

Asignacin de cadenas de caracteres: X Caro nacio en el 79

Conversin de tipo: A las variables no se les puede asignar valores
diferentes a su tipo. Algunos lenguajes permiten convertir el valor al
tipo de la variable.
16
Operadores de Asignacin
Operador Operacin
= Asignacin
++ Incremento
-- Decremento
+= Suma y Asignacin
-= Resta y Asignacin
*= Multiplicacin y Asignacin
/= Divisin y Asignacin
%= Mdulo y Asignacin
Pseudocdigo

X 25
Diagrama de
Flujo


Diagrama N-S
X 25
X 25
Asignacin
17
1. Cules son los valores de A, B y C despus de la ejecucin de las
siguientes operaciones?
A 3
B 4
C A + 2 * B //C= 3 + 2 * 4 = 3+8=11
C C + B // C=11 + 4 = 15
B C - A // B=15 3 = 12
A B * C // A=12 * 15 = 180

Entonces A=180, B=12 y C=15

2. Cul es el valor de x despus de las siguientes operaciones?

X 2
X Cuadrado(x + x) // X=Cuadrado(4) = 16
X Raiz2 (x + Raiz2(x) + 5) // X=Raiz2 (16 + Raiz2(16) + 5) = 5

Entonces X=5
Ejemplo
18
Entrada / Salida
Las operaciones de entrada permiten leer determinados valores
y almacenarlos en determinadas variables.
Esta entrada se conoce como operacin de Lectura (Read).

Los resultados de los clculos realizados necesitan ser
conocidos (mostrados), para esto se utilizan las operaciones de
salida.
La operacin de salida se denomina Escritura (write).
Formatos de las acciones de lectura
y escritura:
Leer (Lista de variables de
entrada)
Escribir (Lista de expresiones
o variables de salida)
19
Pseudocdigo

Leer Nombre, Edad
Diagrama de Flujo


Diagrama N-S
Nombre, Edad Nombre, Edad
Lectura de Datos (Entrada)
Pseudocdigo
Escribir Nombre Completo: , Nombre, Tengo: , Edad, aos
Diagrama de Flujo



Diagrama N-S




Nombre Completo: , Nombre, Tengo: , Edad, aos
Nombre Completo: , Nombre, Tengo: , Edad, aos

Escritura de Datos (Salida)
20
Funciones de Entrada/Salida
La entrada y salida de informacin
(E/S), se puede gestionar mediante
la funcionalidad de la biblioteca
iostream
Entrada: cin >>
Salida: cout <<

Ejemplo: Leer un nmero por
teclado y mostrarlo
// i/o example
#include <iostream>
using namespace std;
int main ()
{ int i;
cout << Favor ingrese un valor entero: ";
cin >> i; cout << Su valor digitado es " << i;
cout << " Duplicado es " << i*2 << ".\n";
return 0; }
using namespace std;

Sirve para dar acceso al
espacio de nombres
(namespace) std, donde se
encuentra encerrada toda la
librera estndar. El motivo de
encerrar la librera estndar en
un espacio de nombres no es
otro que el de hacer ms
sencilla la creacin de
proyectos muy grandes, de
manera que el proyecto no
deje de compilar debido a que
se han escogido los mismos
nombres para dos funciones,
clases, constantes o variables.


21
A veces se necesitan otros operadores especiales diferentes de los
ya nombrados que son funciones predefinidas o internas del
lenguaje.
Aceptan argumentos.
Producen un solo resultado de diferentes tipos.
Las mas usuales son: (siendo x el argumento de la funcin)


Funcin Descripcin Tipo de argumento Resultado
Abs (x) Valor absoluto de x Entero o real Igual que argumento
Seno (x) Seno de x Entero o real Real
Coseno (x) Coseno de x Entero o real Real
Ln (x) Logaritmo neperiano de x Entero o real Real
Log10 (x) Logaritmo decimal de x Entero o real Real
Redondeo (x) Redondeo de x Real Entero
Cuadrado (x) Cuadrado de x Entero o real Igual que argumento
Raz (x) Raz cuadrada de x Entero o real Real
Funciones Primitivas
22
Sirven para tomar decisiones
lgicas, es decir, cuando se utilizan
Expresiones Lgicas:
Verdadero, falso
AND, OR, NOT
== , !=, <, >, <=, >=

TIPOS:
Simples, dobles, mltiples y
anidadas.

nota > 3.5
Aprobada
Si
Ejemplo:
Aprobar una materia
Se utilizan cuando existen una o varias alternativas
resultantes de la evaluacin de determinada condicin.
Estructuras Condicionales
23


Pseudocdigo

Si <condicin> entonces
//Accin(es)
Fin_Si

Diagrama de flujo

Diagrama N-S

<condicin>
SI
Acciones

NO
NO o F
<condicin>
Acciones
Si o V
Alternativa Simple
Ejecuta una determinada accin cuando se cumple una
determinada condicin.
Si la condicin es verdadera, ejecuta cierta accin.
Si la condicin es falsa, no hace nada.
24
Sentencia if
En su forma ms simple, la sentencia if permite que un
programa ejecute condicionalmente una sentencia:

if (expresin)
sentencia;
Ejemplo:
No
condicin
sentencia
Si
#include <iostream>
using namespace std;
int main(void)
{
int num;
cout <<"Introduzca numero:";
cin >> num;
if ((num%2)==0)
cout << "PAR" << endl;
system("pause");
}
25
Pseudocdigo

Si <condicin> entonces
//Accin(es)
Si no
//Accin(es)
Fin_Si
Diagrama de Flujo
Diagrama N-S

Acciones
<condicin>
SI
Acciones Acciones
NO
NO o F
<condicin>
Acciones
Si o V
Alternativa Doble
Alternativa simple es muy limitada, para varias condiciones
se requieren varios if.
La alternativa doble
permite realizar
diferentes acciones
dependiendo de si
se cumple o no una
condicin.
Si la condicin es
verdadera, ejecuta
cierta accin; si la
condicin es falsa,
se realizan otras
acciones.

26
Sentencia if/else
Permite realizar acciones diferentes cuando la condicin sea
verdadera y cuando sea falsa.

Ejemplo:

if (expresin)
sentencia1;
else
sentencia2;
expresin
Sentencia1
Si
No
Sentencia2
#include <iostream>
using namespace std;
int main(void)
{
int num;
cout <<"Introduzca numero:";
cin >> num;
if ((num%2)==0)
cout << "PAR" << endl;
else
cout << "IMPAR" << endl;
system("pause");
}
27
Anidamiento de Sentencias if
Cuando una sentencia if es el objetivo de otro if o else,
se dice que est anidada dentro del if ms externo.

if
(expresion1)

sentencia1;
else
if
(expresion2)

sentencia2;
else

sentencia3;
expresin1
Sentencia1
Si No
expresin2
Sentencia2
Si No
Sentencia3
28
Anidamiento de Sentencias if
#include <iostream>
using namespace std;
int main(void)
{
unsigned int nota;
cout << "Introduzca una calificacion numerica entre 0 y 10:";
cin >> nota;
cout << "La calificacion del alumno es" << endl;
if (nota == 10)
{
cout << "Matricula de Honor" << endl;
}
else if (nota >= 9)
{
cout << "Sobresaliente" << endl;
}
else if (nota >= 7)
{
cout << "Notable" << endl;
}
else if (nota >= 5)
{
cout << "Aprobado" << endl;
}
else
{
cout << "Suspenso" << endl;
}
system("pause");
29
Pseudocdigo
Forma Comn
Si <condicin> entonces
//Accin(es)
Si no
Si <condicin> entonces
//Accin(es)
Si no
//Varias
condiciones
Fin_Si
Fin_Si
Forma General

EnCasoDe
<condicin>hacer
Op1: Accin(es)
Op2: Accin(es)
...
OpN: accin(es)
EnOtroCaso:accin(es)
Fin_Caso
Diagrama de flujo



Opc1
<condicin>
Acciones Acciones Acciones Acciones
Opc2 ...
Opcn
NO o F
<condicin>
Si o V
Acciones
NO o F
<condicin>
Acciones
Si o V
Acciones
Alternativa Mltiple
Pueden existir mas de dos elecciones mltiples -> alternativas
anidadas (si son muchas condiciones es un problema).
Se opta por la estructura: Segn sea.. o En caso de...
Evala una expresin y se toman diferentes acciones
dependiendo de los resultados de dicha expresin.
30
Sentencia SWITCH
La sentencia if es buena para elegir dos alternativas, pero se
vuelve incmoda cuando se necesitan varias alternativas.
La solucin de C a este problema es la sentencia switch.


switch(expresion)
{
case constante1:
bloque1 de sentencias;
break;
case constante2:
bloque2 de sentencias;
break;
.
.
.
default
bloque de sentencias
por defecto
break;
}
Se diferencia de if en
que switch slo puede
verificar igualdad, if
puede evaluar
cualquier tipo de
condicin.
switch slo funciona
con los tipos char e
int.
No puede haber dos
constantes case
iguales para un
mismo switch.


31
Interruptor (marca, bandera o flag): Es una variable que
sirve como indicador de una determinada informacin y que
solo puede tomar uno de los varios valores permitidos.

El valor de la variable tiene asociado un signo y puede variar
a lo largo de la ejecucin.
Diagrama N-S

32
#include <iostream>
using namespace std;
int main(void)
{
int A,B, Resultado;
char operador;
cout << "Introduzca un numero:";
cin >> A;
cout << "Introduzca otro numero:";
cin >> B;
cout <<"Introduzca un operador (+,-,*,/):";
cin >> operador;
Resultado = 0;
switch (operador)
{
case '-' : Resultado = A - B;
break;
case '+' : Resultado = A + B;
break;
case '*' : Resultado = A * B;
break;
case '/' : Resultado = A / B; //suponemos B!=0
break;
default : cout << "Operador no valido"<< endl;
}
cout << "El resultado es: ";
cout << Resultado << endl;
system("pause");
}
33
Se utilizan cuando es necesario ejecutar un mismo bloque de
acciones una cantidad especifica de veces.
Bucle o Ciclo: es un segmento del algoritmo cuyas
instrucciones se repiten un nmero determinado de
veces.
Qu contiene el bucle?
Cuntas veces se debe repetir?
Cul es la condicin para detener el bucle?
Pueden ser:
Ciclos con un Numero Fijo de Iteraciones (Hacer-
Para): Esta cantidad puede ser fija (previamente
determinada por el programador
Ciclos con un Numero Indeterminado de Iteraciones
(Mientras-Hacer, Repetir-Mientras): estn en funcin
de algn dato dentro del programa
Utilizan Contadores (sirven para verificar el nmero de
veces que se realiza un proceso) y/o Acumuladores
(guarda el resultado de diferentes procesos).

Separado
Orilla?
Brazada
no
si
Estructuras repetitivas
34
Diagrama de Flujo
Pseudocdigo

Para ViValor hasta Vf, ViVi+1 hacer
//Accin(es) a repetir
Fin_Para
Diagrama N-S
Para ViValor hasta Vf, ViVi+1
hacer
Accin (es) a repetir
NO o F
ViValor, Vf, 1
Si o V
Acciones
Ciclos con un numero fijo de iteraciones
El numero de iteraciones se conoce antes de ejecutarse el
ciclo.
Hacer-Para:

Automticamente controla el
numero de iteraciones.

Se ejecuta mientras se
cumpla la condicin.

35
Sentencia for
/* muestra los nmeros de 10 a
1 */
#include <iostream>
using namespace std;
int main(void)
{
int n;
for (n = 10; n >=1; n--)
{
cout << n << endl;
system("pause");
}
system("pause");
}
36
Diagrama de Flujo
Pseudocdigo

Mientras <Condicin> hacer
//Accin(es) a repetir
Fin_Mientras
Diagrama N-S
Mientras <Condicin> hacer

Accin (es) a repetir
NO o F
<Condicin>
Si o V
Acciones
Mientras- Hacer:
Se ejecuta mientras se cumple una
condicin determinada.
Cuando la condicin ya no se cumple
(es Falsa), no se sigue ejecutando el
proceso y se continua con el algoritmo.
Ciclos con un nmero indeterminado de
iteraciones
El numero de iteraciones no se conoce previamente, por lo
general depende de un dato dentro del programa.
37
Sentencia while
/* muestra los nmeros de 10 a 1 */
#include <iostream>
using namespace std;
int main(void)
{
int contador=0;
int suma=0;

while(contador <= 10)
{
cout << "El valor del numero es"
<< contador <<endl;
suma+=contador;
cout << "La suma va en: " <<
suma <<endl;
contador++;

}
cout << "La suma de los primeros
numeros es: " << suma <<endl;

system("pause");
}
38
Diagrama de Flujo
Pseudocdigo

Repetir
//Accin(es) a repetir
Mientras que (Condicin)
Diagrama N-S
Accin (es) a repetir
Mientras que (Condicin)
NO o F
<Condicin>
Si o V
Acciones
Repetir-Mientras:
Repite un proceso una
cantidad de veces, hasta que
la condicin deje de
cumplirse.
Permite realizar el proceso al
menos una vez antes de
comprobar la condicin, ya
que la condicin se evala al
final del proceso
Ciclos con un nmero indeterminado de
iteraciones
39
Sentencia do - while
/* lee un nmero entre 1 y 10 */
#include <iostream>
using namespace std;
int main(void)
{
int numero;
do
{
cout << "Introduzca un numero
entre 1 y 100: ";
cin >> numero;
}
while (numero < 1 || numero > 100);
}
40
Bibliografa:
Deitel y Deitel. C++ Cmo programar. Prentice Hall 1999.

Hernandez G, Jaime y otros. Curso prctico de programacin
de computadoras. Cekit 1999.

Schildt, Herbert. C Gua de Autoenseanza. McGraw Hill
1994.

41
Gr@ci@s

You might also like