2.1. INTRODUCCIÓN
El presente capitulo, trata sobre las estructuras lógicas de decisión. Es importante
mencionar que utilizando las estructuras lógicas de decisión, se pueden desarrollar
algoritmos de tal forma que estos pueden ser diseñados en pseudocódigo o diagrama de
flujo, para luego ser codificados en un lenguaje de programación como C++, Java o C#...
ESTRUCTURAS LÓGICAS
INSTRUCCIONES
SECUENCIA DECISIÓN REPETICIÓN
DE BIFURCACIÓN
Representación
Formato para diseñar algoritmos:
ALGORITMOS ING. CIP: AMACHE SÁNCHEZ MILTON FREDDY
En pseudocódigo:
EXPLICACIÓN
Si la condición resulta verdadera, se ejecutan
SI (condición) ENTONCES las instrucciones que se encuentran entre las
… reglas SI… ENTONCES y FINSI
instrucciones
… Si la condición resulta falsa, no se ejecutan las
FINSI instrucciones que se encuentran entre las
reglas SI… ENTONCES y FINSI
En Diagrama de flujo
Primera forma
VERDADERO
condición
…
FALSO instrucciones
…
Segunda forma
FALSO
condición
VERDADERO
…
instrucciones
…
Tercera forma
VERDADERO
condición instrucciones
FALSO
EXPLICACION
Si la condición resulta verdadera, se ejecutan las instrucciones que se encuentran
en el flujo etiquetado con la regla “VERDADERO”.
Si la condición resulta falsa, se sigue el flujo etiquetado con la regla o pauta “FALSO”
y no se ejecutan las instrucciones que se encuentran en el flujo etiquetado con la
regla “VERDADERO”.
ALGORITMOS ING. CIP: AMACHE SÁNCHEZ MILTON FREDDY
Las figuras anteriores representan una estructura de decisión simple en diagrama
de flujo, donde el rombo indica el inicio de la estructura y el círculo el final. El rombo
permite evaluar una condición lógica, si el resultado de dicha evaluación es
verdadero se ejecuta una o varias instrucciones.
Existe también la posibilidad de obviar el círculo de cierre de la estructura de
decisión simple, tal y como se muestra en las siguientes figuras.
Primera forma
VERDADERO
condición
…
FALSO instrucciones
…
Segunda forma
FALSO
condición
VERDADERO
…
instrucciones
…
Tercera forma
VERDADERO
condición instrucciones
FALSO
En C++, Java y C#
EXPLICACIÓN
Si la condición resulta verdadera, se ejecutan
if (condición) {
las sentencias que se encuentra entre las llaves
…
{ }.
sentencias
…
Si la condición resulta falsa, no se ejecutan las
}
sentencias que se encuentra entre las llaves { }.
En diagrama de flujo
Algoritmo ProyAreaCuadrado – main( )
INICIO
LEER lado
VERDADERO
area < 50
area , mensaje
FIN
En lenguaje de programación C#
Clase ProyAreaCuadrado
Using System;
namespace ProyAreaCuadrado
{
class Program
{
static void Main(string[] args)
{
int lado, area;
String mensaje="";
System.Console.Write("INGRESE LADO DE CUADRADO: ");
lado = Convert.ToInt32(System.Console.ReadLine());
area = lado * lado;
if (area < 50)
{
mensaje= "El cuadrado es pequeño";
}
System.Console.WriteLine("El area es: "+area+" "+mensaje);
System.Console.ReadKey();
}
}
}
Representación
Formato para diseñar algoritmos:
En pseudocódigo:
EXPLICACIÓN
Si la condición resulta verdadera, se ejecutan
SI (condición) ENTONCES
las instrucciones que se encuentran entre las
…
reglas SI… ENTONCES y SINO
instrucciones
Si la condición resulta falsa, se ejecutan las
…
instrucciones que se encuentran entre las
SINO
reglas SINO y FINSI
…
Solo se ejecuta uno de los grupos de
instrucciones
instrucciones, en ningún caso se podrá ejecutar
…
ambos grupos en una misma ejecución o
FINSI
corrida de programa.
En Diagrama de flujo
Primera forma
FALSO VERDADERO
Condición
Instrucciones Instrucciones
... ...
Segunda forma
VERDADERO
Condición Instrucciones
...
FALSO
Instrucciones
...
VERDADERO
Condición
FALSO
Instrucciones Instrucciones
... ...
EXPLICACIÓN
Si la condición resulta verdadera, se ejecutan las instrucciones que se encuentran
en el flujo etiquetado con la regla “VERDADERO”.
Si la condición resulta falsa, se ejecutan las instrucciones que se encuentran en el
flujo etiquetado con la regla “FALSO”.
También se puede elaborar los diagramas de flujo mostrados sin utilizar el círculo
de cierre de la estructura de decisión doble, tal como se muestra a continuación.
Primera forma
FALSO VERDADERO
Condición
Instrucciones Instrucciones
... ...
Segunda forma
VERDADERO
Condición Instrucciones
...
FALSO
Instrucciones
...
Tercera forma
VERDADERO
Condición
FALSO
Instrucciones
Instrucciones ...
...
EJEMPLO PRÁCTICO
Problema 05:
Etapa 001: Descripción del problema
Calcular y mostrar la nota final de un alumno en base a 3 notas ingresadas. Si la
nota final es menor o igual a 10 se deberá mostrar el mensaje “Desaprobado”,
caso contrario se mostrara el mensaje “Aprobado”.
FALSO VERDADERO
nf <= 10
nf, mensaje
FIN
3. Desarrollo de la codificación
En lenguaje de programación C++
Clase ProyNotaFinal
#include <iostream>
#include <conio>
int main() {
double n1, n2, n3;
int nf;
cout<<"Ingrese primera nota: ";
cin>>n1;
cout<<"Ingrese segunda nota: ";
cin>>n2;
cout<<"Ingrese tercera nota: ";
cin>>n3;
nf = (n1+n2+n3)/3;
if (nf <= 10) {
cout<<"LA NOTA ES: "<<nf<<" DESAPROBADO";
} else {
cout<<"LA NOTA ES: "<<nf<<" APROBADO";
}
getch();
}
En lenguaje de programación C#
Clase ProyNotaFinal
Using System;
namespace ProyectoNotaFinal
{
class Program
{
static void Main(string[] args)
{
double n1, n2, n3, nf;
String mensaje;
System.Console.Write("Ingrese primera nota: ");
n1 = double.Parse(System.Console.ReadLine());
System.Console.Write("Ingrese segunda nota: ");
n2 = double.Parse(System.Console.ReadLine());
System.Console.Write("Ingrese tercera nota: ");
n3 = double.Parse(System.Console.ReadLine());
nf = (n1+n2+n3)/3;
if (nf <= 10) {
mensaje = "DESAPROBADO";
} else {
mensaje = "APROBADO";
}
System.Console.WriteLine("La nota final es: "+nf);
System.Console.WriteLine(mensaje);
System.Console.ReadKey();
}
}
}
Representación
Formato para diseñar algoritmos:
En diagrama de flujo:
Primera forma
valor variable
Segunda forma
valor
variable
Tercera forma
VERDADERO
valor == 1 Instrucciones
...
FALSO
VERDADERO
valor == 2 Instrucciones
...
FALSO
VERDADERO
valor == 3 Instrucciones
...
FALSO
Instrucciones
...
En C++, Java y C#
EXPLICACIÓN
switch (variable) { Si el valor de la variable es igual a uno de los
case valor 1: valores colocados después de la palabra
sentencias… reservada case (valor 1, valor 2, etc), se
break… ejecutan las sentencias que están dentro del
case valor 2: mismo hasta llegar al final (es decir, hasta la
sentencias… llave) a no ser que se encuentre una palabra
break… reservada break entre las sentencias que se
case valor n: ejecutan.
sentencias… Si el valor de la variable no es igual a ninguno
break… de los valores colocados después de una de las
default: palabras reservadas case, se ejecutan las
sentencias… sentencias que están dentro de la palabra
} reservada default.
EJEMPLO PRÁCTICO
Problema 06:
Etapa 001: Descripción del problema
Ingresar un número del 1 al 7 y mostrar el día de la semana que le corresponde.
Asumir que el lunes es equivalente al día 1 y el domingo al día 7.
Etapa 002: Descripción del problema
o Resultado deseado: Mostrar el día equivalente.
o Datos necesarios: Un número.
o Procesamiento: Se ingresara un número por el teclado y se almacenara en
una variable (numero). Luego se almacenara el día equivalente en una
variable (dia), sabiendo que el número 1 equivale al día lunes, el 2 equivale
al día martes y así sucesivamente hasta el 7 que equivale al día domingo.
Finalmente, se mostrara el contenido de la variable día.
Etapa 003: Diseño de la lógica
1. Nombre del proyecto: ProyectoDia
2. Diseño del algoritmo
En Pseudocódigo
Algoritmo ProyectoDia
ENTRADA : numero
SALIDA : dia
INICIO
ENTERO numero
TEXTO dia
LEER numero
CUANDO (numero) SEA
CASO 1:
dia = “Lunes”
TERMINAR
CASO 2:
dia = “Martes”
TERMINAR
ALGORITMOS ING. CIP: AMACHE SÁNCHEZ MILTON FREDDY
CASO 3:
dia = “Miercoles”
TERMINAR
CASO 4:
dia = “Jueves”
TERMINAR
CASO 5:
dia = “Viernes”
TERMINAR
CASO 6:
dia = “Sábado”
TERMINAR
CASO 7:
dia = “Domingo”
TERMINAR
OTROS
ESCRIBIR “Día no valido”
FINCUANDO
ESCRIBIR dia
FIN
En diagrama de flujo
Algoritmo ProyectoDia – main( )
INICIO
NUMERO numero
TEXTO dia =
LEER numero
numero
dia = LUNES dia = MARTES dia = MIERCOLES dia = JUEVES dia = VIERNES dia = SABADO dia = DOMINGO dia = Dia no valido
dia
FIN
3. Desarrollo de la codificación
En lenguaje de programación C++
Clase ProyectoDia
#include <iostream>
#include <conio>
int main() {
int numero;
cout<<"Ingrese un numero: ";
cin>>numero;
switch (numero) {
case 1:
cout<<"El dia ingresado es: ";
cout<< "LUNES";
break;
case 2:
cout<<"El dia ingresado es: ";
cout<< "MARTES";
break;
case 3:
cout<<"El dia ingresado es: ";
cout<< "MIERCOLES";
break;
case 4:
ALGORITMOS ING. CIP: AMACHE SÁNCHEZ MILTON FREDDY
cout<<"El dia ingresado es: ";
cout<< "JUEVES";
break;
case 5:
cout<<"El dia ingresado es: ";
cout<< "VIERNES";
break;
case 6:
cout<<"El dia ingresado es: ";
cout<< "SABADO";
break;
case 7:
cout<<"El dia ingresado es: ";
cout<< "DOMINGO";
break;
default:
cout<< "Dia no valido";
}
getch();
}
Representación
Formato para diseñar algoritmos:
En diagrama de flujo:
Primera forma
FALSO VERDADERO
condición 1
Instrucciones
VERDADERO ...
condición 2
Instrucciones
FALSO
...
Segunda forma
FALSO VERDADERO
condición 1
FALSO VERDADERO
condición 2 Instrucciones
...
Instrucciones Instrucciones
... ...
Tercera forma
FALSO VERDADERO
condición 1
VERDADERO
FALSO condición 2
Instrucciones
... Instrucciones Instrucciones
... ...
VERDADERO
condición 1
FALSO
VERDADERO
condición 2
Instrucciones
... Instrucciones
FALSO
...
Quinta forma
FALSO VERDADERO
condición 1
VERDADERO
condición 1 Instrucciones
...
FALSO
VERDADERO
condición 2 Instrucciones
...
FALSO
VERDADERO
condición 3 Instrucciones
...
FALSO
Instrucciones
...
En C++, Java y C#
EXPLICACIÓN
if (condición) { Si la condición resulta verdadera, se ejecutan
… las sentencias que se encuentra entre las llaves
sentencias { } ubicadas después de la palabra reservada if.
…
ALGORITMOS ING. CIP: AMACHE SÁNCHEZ MILTON FREDDY
} else { Si la condición resulta falsa, se ejecutan las
if (condición) { sentencias que se encuentra entre las llaves { }
… ubicadas después de la palabra reservada else,
sentencias ingresando nuevamente la condición if
… ejecutándose las sentencias que se encuentran
} else { entre llaves { } y si la condición resulta falsa, se
… ejecutan las sentencias que se encuentra entre
sentencias
las llaves { } ubicadas después de la palabra
…
reservada else.
}
}
EJEMPLO PRÁCTICO
Problema 07:
Etapa 001: Descripción del problema
Calcular el área de un rectángulo conociendo su base y altura Si el área es menor
que 100 se deberá visualizar el mensaje “RECTANGULO PEQUEÑO”; si el área es
mayor o igual a 100 y menor que 1000, se visualizara el mensaje “RECTANGULO
MEDIANO”, y si el área es mayor o igual que 1000, el mensaje será
“RECTANGULO GRANDE”.
Etapa 002: Descripción del problema
o Resultado deseado: Mostrar el área de un rectángulo y un mensaje referido
al tamaño de este.
o Datos necesarios: La base y altura de un rectángulo.
o Procesamiento: La base y altura de un rectángulo se almacenaran en
variables (base y altura). Se calcula el área del rectángulo (base y altura) y
se almacena en una variable (área). Si el área resulta menor que 100, se
almacenara en una variable (mensaje) el texto “RECTANGULO PEQUEÑO”.
Si el área resulta mayor o igual que 100 y menor que 1000, se almacenara
el texto “RECTANGULO MEDIAÑO”. Si el área resulta mayor o igual que
1000, se almacenara el texto “RECTANGULO GRANDE”. Finalmente, se
mostrara el área (área) y el texto respectivo (mensaje) en pantalla.
Etapa 003: Diseño de la lógica
4. Nombre del proyecto: ProyectoDia
5. Diseño del algoritmo
En Pseudocódigo
Algoritmo ProyAreaRectangulo
ENTRADA : base, altura
SALIDA : area, mensaje
INICIO
REAL base, altura, area
TEXTO mensaje
LEER base, altura
area = base * altura
SI (area < 100) ENTONCES
mensaje = “RECTANGULO PEQUEÑO”
SINO
SI (area >= 1000) ENTONCES
mensaje = “RECTANGULO MEDIANO”
SINO
mensaje = “RECTANGULO GRANDE”
FINSI
FINSI
ESCRIBIR area, mensaje
FIN
FALSO VERDADERO
area < 100
FALSO VERDADERO
area >=1000
mensaje = RECTANGULO
mensaje = RECTANGULO mensaje = RECTANGULO PEQUEÑO
MEDIANO GRANDE
FIN
6. Desarrollo de la codificación
En lenguaje de programación C++
Clase ProyAreaRectangulo
#include <iostream>
#include <conio>
int main() {
double base, altura, area;
cout<<"Ingrese base : ";
cin>>base;
cout<<"Ingrese altura : ";
cin>>altura;
area = base * altura;
if (area < 100) {
cout<<“RECTANGULO PEQUEÑO”;
} else {
If (area >= 1000){
cout<<“RECTANGULO GRANDE”;
} else {
cout<<“RECTANGULO MEDIANO”;
}
}
getch();
}
En lenguaje de programación C#
Clase ProyAreaRectangulo
Using System;
namespace ProyAreaRectangulo
{
class Program
{
static void Main(string[] args)
{
double bas, altura, area;
String mensaje;
System.Console.Write("Ingrese base: ");
base = double.Parse(System.Console.ReadLine());
System.Console.Write("Ingrese altura: ");
altura = double.Parse(System.Console.ReadLine());
area = base * altura;
if (area < 100) {
mensaje = "RECTANGULO PEQUEÑO";
} else {
if (area >= 1000){
mensaje = "RECTANGULO GRANDE";
} else {
mensaje = "RECTANGULO MEDIANO";
}
}
System.Console.WriteLine("El rectangulo es: " + mensaje);
System.Console.ReadKey();
}
}
}