1.Introducción

Anuncio
1.Introducción
Las estructuras de control son instrucciones que nos permiten controlar el flujo de
ejecución del programa. Las instrucciones de control se pueden agrupar en
instrucciones condicionales e instrucciones de iteración o repetición.
Condicionales: en estas estructuras el programa ejecutará una instrucción y otra
dependiendo de la evaluación de una condición. Se dividen a su vez en simples,
dobles y múltiples.

Simples: Es el caso de la instrucción if (punto 1.1).

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Múltiples: Es el caso de las instrucciones if-else if (punto 1.3) y del switch
(punto 1.4).
Instrucciones de iteración y de repetición: mediante este tipo de instrucciones
podemos representar procesos repetitivos o iterativos, también conocidos como
bucles. Existen diferentes tipos de bucles:

Bucle para: bucle utilizado cuando conocemos el número de veces que ha de
repetirse una serie de instrucciones. (punto 1.5).

Bucle mientras: mediante este bucle podemos representar un proceso
repetitivo que se ejecutará mientras se cumpla una condición. (punto 1.6)

Bucle hacer mientras: a diferencia del bucle mientras, la condición se evalúa al
final de la ejecución del cuerpo del bucle. Por esta razón, las instrucciones se
ejecutan al menos una vez. (punto 1.7).
1
2.Tipos de estructuras de control
Cada una de las estructuras de control las representaremos de dos formas: con
pseudocódigo y con diagramas de flujo:

Pseudocódigo: Es una aproximación a la codificación final de la solución al
problema planteado sin utilizar ningún lenguaje de programación específico.

Diagramas de flujo: Conjunto de símbolos que detallan la secuencia de
instrucciones que debe realizar el ordenador para resolver un problema.
Básicamente se utilizan dos símbolos: el rombo (simboliza una condición) y el
cuadrado (simboliza una sentencia).
Finalmente para cada una de las estructuras se dará un ejemplo en lenguaje C.
2.1.Sentencia if
Si sentencia es compuesta tenemos:
if (expresión)
{
sentencia 1
sentencia 2
.
sentencia N
}
Expresión
NO
Sentencias
2
Funcionamiento: Si la expresión es verdadera se ejecuta el conjunto de sentencias,
en caso contrario no se ejecuta ninguna.
Notas:

Es obligatorio introducir la expresión entre paréntesis.

Si sólo hay una sentencia no son necesarias las llaves.
Ejemplo: Pedir un número por teclado y comprobar si el número es positivo.
#include <stdio.h>
int main()
{
int a;
printf("dame un entero\n");
scanf("%d",&a);
if (a>0)
{
printf("El número es mayor que 0\n");
}
}
Explicación:

Se incluye la librería stdio.h porque se utilizan las funciones printf y scanf para
escribir datos por pantalla y leer datos del teclado respectívamente.

La variable a será en la que leamos el entero.

En la instrucción scanf se pone un %d porque lo que se va a leer es un entero.
3
2.2.Sentencia if-else
La forma general de esta sentencia es:
if (expresión)
{
Sentencias A
}
Else
{
Sentencias B
}
Expresión
NO
Sentencias A
Sentencias B
Funcionamiento:

Si la expresión es verdadera (valor distinto de 0), entonces se ejecuta las
sentencias A y en caso contrario se ejecutan las sentencias B.
Nota:

Es obligatorio introducir la expresión entre paréntesis.

Si las sentencias A o las sentencias B son sólo una instrucción no son
necesarias las llaves.
4
Ejemplo: Vamos a mejorar el ejemplo de la estructura if, pero en este caso si el
número es menor o igual que 0 se lanzará un mensaje informando al usuario.
#include <stdio.h>
int main()
{
int a;
printf("dame un entero\n");
scanf("%d",&a);
if (a>0)
{
printf("El número es mayor que 0\n");
}
Else
{
printf("El número es menor o igual que 0\n");
}
}
Explicación:

Si se cumple la primera condición se mostrará el primer mensaje (el número es
mayor o igual que 0) y ya se acabará el programa.

En caso de no cumplirse la condición será cuando se entre en el bloque del
else. Es entonces cuando se mostrará el mensaje indicando que el número es
menor o igual que 0.
5
2.3.Sentencia if – else if
La forma general de esta sentencia es:
if (expresión A)
{
Sentencias A
}
Else if (expresión B)
{
Sentencias B
}
.
.
.
Else
{
Sentencias C
}
Exp. A
SI
NO
Sentencias A
Exp. B
NO
SI
Sentencias B
Sentencias C
6
Funcionamiento:

Si la expresión A es verdadera (valor distinto de 0), entonces se ejecuta las
sentencias A.

En caso contrario se comprueba la expresión B y si es verdadera se ejecutan
las sentencias B.

Se podrían encadenar tantas sentencias else-if como se desease.

Finalmente si ninguna se cumple se ejecutarán las sentencias C
Nota:

Se pueden encadenar tantos if – else if como se deseen.

Si una expresión se cumple ya no se evaluarán el resto de expresiones.
7
Ejemplo: Realizar un programa en el que se le pida al usuario una nota y la devuelva
según el siguiente formato:
[0-5): suspenso
[5-6): aprobado
[6-7): bien
[7-9): notable
[9-10]: sobresaliente
#include <stdio.h>
void main()
{
Float nota;
printf("Dame la nota\n");
scanf("%f",&nota);
if (nota>=0 && nota<5 )
{
printf (“Suspenso\n");
}
else if (nota>=5 && nota<6)
{
printf (“Aprobado\n");
}
else if (nota>=6 && nota<7)
{
printf (“Bien\n");
}
else if (nota>=7 && nota<9)
{
printf (“Notable\n"); }
else if (nota>=9 && nota<=10)
{
printf (“Sobresaliente\n");
}
else
{
printf (“Introduzca la nota correctamente\n");
}
}
8
Explicación:

En cada una de las expresiones se tiene en cuenta si los extremos están
incluidos. Para entendernos, si tomamos como ejemplo el caso del aprobado,
como el 6 se considera como bien en la expresión se pone <. Sin embargo
como el 5 si se considera aprobado se pone >=.

En el ejemplo se puede ver que si un usuario introduce un número que no está
comprendido entre 0 y 10 como no se cumplirá ninguno mostrará el mensaje
del bloque “else” informando qué introduzca el número correctamente.
9
2.4.Sentencia switch
La forma general de esta sentencia es:
switch (expresión)
{
case valor 1:
{
sentencias A;
break;
}
case valor 2:
{
sentencias B;
break;
}
case valor N:
{
sentencias C;
break;
}
default:
{
sentencias por defecto.
}
}
Exp.
Valor 1
Sentencias A
Valor 2
Sentencias B
Valor N
Sentencias N
Sentencias
Por defecto
10
Funcionamiento:

expresión puede ser un valor entero, pero también puede ser de tipo char.

Si la expresión tiene el valor 1 entonces se ejecutan las sentencias A, si tiene
el valor 2 se ejecutan las sentencias B, si tiene el valor N se ejecutan las
sentencias N y finalmente, si no tiene ningún valor se ejecutan las sentencias
por defecto.
Notas:

Siempre hay que poner al final de cada “case” la instrucción “break”, ya que en
caso contrario se seguirán ejecutando las sentencias interiores.

En cada bloque “case” se pueden o no poner llaves englobando el código.

El bloque default no es obligatorio. Se puede prescindir de él.
11
Ejemplo: Programa que pida un número al usuario comprendido entre el 1 y el 7 e
informe del día de la semana que corresponde (1-lunes, 2-martes y así sucesivamente
hasta el 7-domingo).
#include <stdio.h>
int main()
{
int a;
printf("dame el número de la semana:\n");
scanf("%d",&a);
switch (a)
{
case 1:
printf("Lunes\n");
break;
case 2:
printf("Martes\n");
break;
case 3:
printf("Miércoles\n");
break;
case 4:
printf("Jueves\n");
break;
case 5:
printf("Viernes\n");
break;
case 6:
printf("Sábado\n");
break;
case 7:
printf("Domingo\n");
break;
default:
printf("Has introducido un número incorrecto");
}
}
12
2.5.Sentencia for
La forma general de esta sentencia es:
for (expresión 1; expresión 2; expresión 3)
{
sentencias;
}
Expresión 1
Expresión 3
.2
No
Si
Sentencias
Funcionamiento:

Inicialmente se ejecuta expresión 1, se hace para inicializar algún parámetro
que controla la repetición del bucle.

expresión 2 es una condición que debe ser cierta para que se ejecute
sentencia.

expresión 3 se utiliza para modificar el valor del parámetro.

El bucle se repite mientras expresión 2 sea cierto.

Si sentencia es compuesta se encierra entre { }.

Si se omite expresión 2 se asumirá el valor permanente de 1 y el bucle se
ejecutará de forma indefinida (bucle infinito).
13
Ejemplo: Mostrar la palabra hola n veces, siendo n un número leído por teclado.
#include <stdio.h>
int main()
{
int i,n;
printf("dame el número de veces:\n");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("hola\n");
}
}
Explicación:

La variable i se utiliza como contador, va desde 1 hasta n, siendo n el número
que se pide por teclado.

Se inicializa en 1 y en cada iteración se incrementa en una unidad.

Se ejecutará la sentencia printf mientras se cumpla la condición i<=n.
14
2.6.Sentencia while
La forma general de esta sentencia es:
while (expresión)
{
sentencias;
}
Si
Sentencias
Exp
Funcionamiento:

Sentencias se ejecutará mientras el valor de expresión sea verdadero.

Primero se evalúa expresión.

Lo normal es que sentencia incluya algún elemento que altere el valor de
expresión proporcionando así la condición de salida del bucle.

Si no se cumple la condición las sentencias nunca se ejecutarán.
15
Ejemplo: Mostrar los números de 3 cifras que sean múltiplos de 7.
#include <stdio.h>
int main()
{
int i;
i=100;
while (i<=999)
{
if (i%7==0)
{
printf("el numero %d es múltiplo de 7\n",i);
}
i=i+1;
}
}
Explicación:

Los números de 3 cifras son aquellos que van desde 100 hasta 999, por eso la
i empieza en 100 y siempre se comprueba en la expresión que sea menor que
999.

En cada paso incrementamos el valor de i en 1. De esta forma iremos
recorriendo todos los números desde 100 hasta 999 uno a uno.

Para saber si un número es múltiplo de 7 utilizamos el operador %, que nos da
el resto de la división entera. Si ese resto es cero, entonces se cumple la
condición.
16
2.7.Sentencia do-while
La forma general de esta sentencia es:
Do
{
sentencias;
}
while (expresión);
Sentencias
Si
Valor
defecto
No
Funcionamiento:

sentencias se ejecutará mientras el valor de expresión sea verdadero.

sentencias siempre se ejecuta al menos una vez.
Para la mayoría de las aplicaciones es mejor y más natural comprobar la condición
antes de ejecutar el bucle, por ello se usa más la sentencia while, si bien esta
sentencias es muy utilizada para validar la entrada de ciertos números o para crear
menús.
17
Ejemplos: Pedir un número positivo por teclado.
#include <stdio.h>
int main()
{
int n;
do
{
printf("dame número positivo");
scanf("%d",&n);
}
while (n<=0);
}
Funcionamiento:

El número se pide hasta que sea positivo, es decir, mientras sea negativo hay
que seguir pidiéndolo.

Las sentencias se ejecutan al menos una vez, al contrario que con la estructura
while, en la que si la expresión no era verdadera no se ejecutaban ninguna vez
las expresiones.
18
Descargar