Prof.
Alma Martínez
Estructuras de control
Definición:
Las estructuras de control, son instrucciones que indican el camino a seguir para ejecutar
un programa, éstas permiten romper la secuencialidad en el programa; esto significa que,
de acuerdo a la evaluación de una condición, una estructura de control permite que se
realicen unas instrucciones y omitir otras.
Las estructuras de control son 5:
• si_otro if__else
• mientras while
• haz_mientras do_while
• para for
• selección switch
Hay problemas que se pueden resolver sin necesidad de usar estructuras de control, pero
entre más complejo sea el problema las estructuras de control son necesarias.
Ejemplo 1:
Retomemos el ejemplo que se trabajó anteriormente, es importante recordar que si las
variables se definen con minúsculas, así deben ser siempre, en el lenguaje de
programación es diferente, var num1, a var Num1, tener cuidado con las minúsculas y
mayúsculas.
Realiza un programa en Dev C++ que sume dos números:
#include <stdio.h>
#include <conio.h>
main()
{
int num1, num2, suma;
printf(“Este programa suma dos números enteros. \n”);
printf (“Introduce los dos números a sumar. \n”);
scanf(“%d%d”, &num1, &num2);
suma=num1+num2;
Prof. Alma Martínez
printf(“La suma de %d más %d es %d”, num1, num2,suma);
getch();
}
En este ejemplo se ejecuta una instrucción seguida de la otra y no se emplea ninguna de
las 5 estructuras de control mencionadas.
\n se coloca cuando se desea saltar de renglón, en el printf, se escribe el texto entre
comillas y al poner \n al final del texto significa que cuando se ejecute el programa el
cursor aparecerá en el siguiente renglón después del texto. Es al gusto del programador si
desea usarlo.
A continuación se explicará la primera estructura de control:
1. si_otro
En pseudocódigo la estructura se expresará de la siguiente manera:
si (Condición es verdadera) entonces
com
_________
_________
_________
term
Las líneas son un bloque de instrucciones que pueden o no contener otra estructura de
control, es decir, una estructura de control puede estar dentro de otra estructura de
control. Si es el caso se dice que son estructuras de control anidadas.
Si la condición que se pone en los paréntesis se cumple, el bloque de instrucciones se
ejecuta, si no se cumple, ese bloque no se ejecuta y se sigue con lo que esta después del
si_entonces.
El com significa comienza y term termina y es el comienzo y fin de la estructura, cada vez
que se ponga un com se deja una sangría en las siguientes instrucciones, el term va a la
altura del com y las demás instrucciones van a la altura del term hasta que se ponga otro
com. Esto es para facilitar la lectura de los pseudocódigos y se seguirá la misma regla para
los programas.
Los comienza y termina van en el programa principal main(), en cada estructura de control
y en las funciones o módulos que requiera un programa.
Prof. Alma Martínez
En Dev C++ la estructura se escribirá de la siguiente manera:
if (Condición es verdadera) ;
{
_________;
_________;
_________;
}
El punto y coma en rojo no debe ir, el compilador del lenguaje de programación no
marcará error pero la estructura no se ejecutará
Ejemplo 2:
Hacer el algoritmo, pseudocódigo y programa que realice lo siguiente:
El usuario proporcionará un número entero, el programa dirá que número tecleó el usuario
y solo si es par lo indicará, es decir, si no es par solo dirá el número que introdujo el
usuario.
Algoritmo
1. Pedir el número a analizar
2. Dividir el número entre 2, si el residuo es 0, es un número par
3. Si el residuo es cero escribir que el número es par
4. Escribir el número que dio el usuario
Pseudocódigo
var num1: entero
escribe(“Este programa indica el número que el usuario proporcionará y únicamente si el
número es par se indicará. ”)
escribe (“Introduce un número. ”)
lee (num1)
si (num1 módulo 2 es cero) entonces
com
escribe(“El número dado es un número par. ”)
term
Prof. Alma Martínez
escribe(“El número dado es”, num1) // se cumpla o no la condición de la estructura de
// control esta instrucción siempre se va a ejecutar
Comentarios sobre el ejemplo
La estructura de control esta en color verde, solo es para que se identifique.
// estos símbolos se usan para poner comentarios, los comentarios son texto que el
programador pone para aclarar una idea, solo los ve el programador
Es importante el comentario de la última instrucción, esa instrucción siempre se va a
ejecutar, el ejercicio indica que no importa si el número dado es par o no, el programa
debe escribir el número que dio el usuario, el último escribe está fuera de la estructura de
control y no hay alguna condición que pueda impedir su ejecución.
Si hay una sola instrucción en el bloque de instrucciones dentro de una estructura de
control se puede omitir el comienza (com) y el termina (term) pero se debe seguir dejando
la sangría.
En el ejemplo hay solo una instrucción dentro de la estructura si ___ entonces:
si (num1 módulo 2 es cero) entonces
com
escribe(“El número dado es un número par. ”)
term
Esta estructura puede escribirse de la siguiente manera:
si (num1 módulo 2 es cero) entonces
escribe(“El número dado es un número par. ”)
y es exactamente lo mismo, de hecho, si se consulta algún libro o se revisan algunos
ejemplos, es la manera más común de hacerlo, sin embargo se usará el com y term para
que quede claro que es lo que se va a ejecutar adentro de la estructura de control.
Si lo dejamos sin el com y term, la parte final del pseudocódigo quedaría así:
si (num1 módulo 2 es cero) entonces
escribe(“El número dado es un número par. ”)
escribe(“El número dado es %d”, num1) //se cumpla o no la condición de la estructura de
//control esta instrucción siempre se va a ejecutar
Prof. Alma Martínez
Y a simple vista no queda claro que va adentro del bloque de instrucciones de la estructura
de control, cuando se tiene más experiencia programando y se dejan las sangrías de forma
adecuada no es complicado.
A continuación se muestra el pseudocódigo en el lenguaje de programación
Programa
#include <stdio.h>
#include <conio.h>
main()
{
int num1;
printf(“Este programa indica el número que el usuario proporcionará y únicamente
si el número es par se indicará. \n”); //este printf, va todo en un solo renglón
printf (“Introduce un número. \n”);
scanf(“%d”, &num1);
if (num1%2==0)
{
printf(“El número dado es un número par. \n”);
}
printf(“El número dado es %d”, num1);
getch();
}
Si observan, se cumpla o no la condición (num1%2==0), el printf que envía el mensaje, de
cuál fue el número que dio el usuario, se escribe.
Es importante recordar el operador módulo que se vio con anterioridad
La condición num1%2==0 indica lo siguiente:
==, doble igual significa que se está preguntando si ¿el módulo 2 del número dado, num1,
es 0?, esto quiere decir que si dividimos num1 entre 2 y el residuo es 0 significa que es un
número par.
Es importante el uso del doble igual, si solo se pone uno, el compilador no marca error e
indica que se está asignando el valor cero a la operación num1%2 y eso es incorrecto.
Prof. Alma Martínez
Esta estructura tiene una parte que es opcional, es decir, se usa si el problema lo requiere,
la estructura en pseudocódigo es la siguiente:
si (Condición es verdadera) entonces
com
_________
_________ // bloque de instrucciones 1
_________
term
otro
com
_________
_________ // bloque de instrucciones 2
_________
term
Si la condición del si ___ entonces se cumple, se ejecutan las instrucciones que abarca el si
__ entonces, es decir, las del bloque de instrucciones 1 y terminando se sigue con las
instrucciones que van después del term del else. Las del bloque 2 no se ejecutan.
Si la condición del si ___ entonces es falsa, no se ejecuta el bloque de instrucciones 1 y se
ejecutan las que están en el else, es decir, el bloque de instrucciones 2, para después
seguir con las que van después del term del else.
En esta estructura de control solo se ejecuta uno de los dos bloques de instrucciones
dependiendo si la condición es verdadera o no.
En el lenguaje de programación se expresa de la siguiente manera:
if (Condición es verdadera) ;
{
_________;
_________;
_________;
} // después de la llave que cierra y antes del else no van
//instrucciones
else ;
{
_________;
_________;
Prof. Alma Martínez
_________;
}
Recordemos que el punto y coma en rojo no se pone.
Observación: Entre la llave que cierra el if, y el else (está indicado en color verde) no van
instrucciones, estos deben ir uno seguido del otro.
Ejemplo 3: Hacer el pseudocódigo y programa que solicite un número al usuario y el
programa lo analice y diga si el número es par o impar.
Pseudocódigo
var num1: entero
escribe (“Este programa indica si un número dado es par o impar.”)
escribe (“Introduce un número. ”) lee (num1)
si (num1 módulo 2 = cero) entonces
com escribe(“El número dado es un número par. \n”)
term otro com escribe(“El número dado es un número
impar.”)
term
Programa
#include <stdio.h>
#include <conio.h>
main()
{
int num1;
printf(“Este programa indica si un número dado es par o impar. \n”);
printf (“Introduce un número. \n”); scanf(“%d”,
&num1);
if (num1%2==0)
{
Prof. Alma Martínez
printf(“El número dado es un número par. \n”);
}
else
{
printf(“El número dado es un número impar”);
}
getch();
}
Solo para recordar, no es necesario poner las llaves de inicio y final si la estructura de
control tiene una sola instrucción, si se captura con esta regla, el programa quedaría de la
siguiente manera:
Programa
#include <stdio.h>
#include <conio.h>
main()
{
int num1;
printf(“Este programa indica si un número dado es par o impar. \n”);
printf (“Introduce un número. \n”);
scanf(“%d”, &num1);
if (num1%2==0)
printf(“El número dado es un número par. \n”);
else
printf(“El número dado es un número impar”);
getch();
}
Si la condición del if se cumple no se ejecutan las instrucciones que van en el else, si la
condición del if es falsa automáticamente se ejecutan las del else
Prof. Alma Martínez
Ejemplo 4:
Hacer el algoritmo, pseudocódigo y programa que indique el precio a pagar por la compra
de cubrebocas, el usuario dirá la cantidad de cubrebocas a comprar, este número debe ser
mayor a cero, cada cubre bocas cuesta $15.50.
Algoritmo
1. Pedir el número de cubrebocas a comprar
2. Validar que ese número sea mayor a cero
3. Multiplicar el número de cubrebocas por 15.50
4. Mostrar el monto a pagar
Pseudocódigo
constante precio 15.50
var numcb: entero
costo: real
escribe (“Este programa calcula el precio de comprar n cubrebocas a 15 pesos cada uno”)
escribe (“Dame el número de cubrebocas a comprar, debe ser mayor a cero”) lee
(numcb) si (numcb<=0) entonces
com
escribe (“Error en el número de cubrebocas a comprar, debe ser mayor a cero”)
term otro com
costo numcb*precio
escribe(“El costo a pagar es”, costo) term
El precio se puede definir como constante o como una variable y la inicializamos con el
valor de 15.50, en este caso se está definiendo como, si quisiéramos que fuera variable
quedaría de la siguiente manera:
Prof. Alma Martínez
Pseudocódigo
var numcb: entero
precio, costo: real
precio=15.50
escribe (“Este programa calcula el precio de comprar n cubrebocas a $15.50 cada uno”)
escribe (“Dame el número de cubrebocas a comprar, debe ser mayor a cero”) lee
(numcb) si (numcb<=0) entonces
com
escribe (“Error en el número de cubrebocas a comprar, debe ser mayor a cero”)
term
otro
com
costo numcb*precio
escribe(“El costo a pagar es”, costo)
term
En el programa se hará como constante
Programa
#include <stdio.h>
#include <conio.h>
#define precio 15.50 // se define la constante con #define, no lleva punto y coma al final
main()
{
int numcb;
float costo;
printf (“Este prog. calcula el precio de comprar n cubrebocas a $15.50 cada uno”);
printf (“Dame el número de cubrebocas a comprar, debe ser mayor a cero”);
scanf(“%d”, &numcb);
Prof. Alma Martínez
if (numcb<=0) // se valida que el numcb sea mayor a cero, sino lo es, se envía un
{ // mensaje de error y ahí termina el programa, no se entra al else
printf (“Error en el núm. de cubrebocas a comprar, debe ser mayor a cero”);
}
else
{
costo=numcb*precio;
printf (“El costo a pagar es $%0.2f”, costo);
}
}
Observaciones:
Con la estructura if() se valida que el número de cubrebocas sea mayor a cero, si no lo es
se envía un mensaje de error y ahí termina la ejecución del programa, si el número es
válido pasa a la parte del else y se calcula el monto a pagar.
En el printf último aparecerá en el monitor el signo de pesos $ el 0.2 indica que solo se
escribirán dos cifras después del punto decimal, si quieren tres cifras ponen 0.3 y así,
dependiendo el número de cifras que deseen se escriba después del punto decimal.
Se puede no definir la variable costo y poner la operación directamente en el printf, esta
opción quedaría de la siguiente manera:
Programa
#include <stdio.h>
#include <conio.h>
#define precio 15.50 // se define la constante con #define, no lleva punto y coma al final
main()
{
int numcb;
printf (“Este prog. calcula el precio de comprar n cubrebocas a $15.50 cada uno”);
printf (“Dame el número de cubrebocas a comprar, debe ser mayor a cero”);
scanf(“%d”, &numcb);
Prof. Alma Martínez
Prof. Alma Martínez
if (numcb<=0) // se valida que el numcb sea mayor a cero, sino lo es, se envía un
{ // mensaje de error y ahí termina el programa, no se entra al else
printf (“Error en el núm. de cubrebocas a comprar, debe ser mayor a cero”);
}
else
{
printf (“El costo a pagar es $%0.2f”, numcb*precio);
}
}