Selección o decisión: acciones en las que la ejecución de alguna dependerá de que se cumplan una o varias condiciones. Repetición, Iteración: cuando un proceso se repite en tanto cierta condición sea establecida para finalizar ese proceso.
Se caracteriza porque una acción se ejecuta detrás de otra. El flujo del programa coincide con el orden físico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicialización de variables, operaciones de asignación, cálculo, sumarización, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:
Definición de variables (Declaración)
Inicialización de variables.
Se desea encontrar la longitud y el área de un círculo de radio 5.
El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un radio conocido y de valor 5. Las salidas serán entonces la longitud y el área. (Fase 5 del algoritmo) Sabemos que la longitud de un círculo viene dada por la fórmula 2 * pi * radio y que el área viene dada por pi * radio al cuadrado. (Fase 4 del algoritmo) Si definimos las variables como: (fase 1 del algoritmo)
L = Longitud A = área R = radio pi = 3.1416 hagamos el algoritmo:
Pi ¬ 3.1416 (definición de un valor constante)
R ¬ 5 (radio constante ya que es conocido su valor)
A ¬ pi * R ^ ² (asignación del valor del área)
L ¬ 2 * pi * R (asignación del valor de la longitud)
Escribir (A, L) (salida del algoritmo)
Representación en Diagrama de Flujo para el ejemplo:
Representación en Diagrama Nassi Schneiderman:
Los problemas secuenciales en diagramas N-S se representan solamente por cajas con líneas horizontales
En este ejercicio no existen datos de entrada ya que para calcular el área y la longitud necesitamos únicamente el radio y el valor de Pi los cuales ya son dados en el problema Modificar el problema anterior para que sea capaz de calcular el área y la longitud de un círculo de cualquier radio requerido.
El problema es el mismo con la variante de que ahora ya existe un dato de entrada, puesto que el radio puede ser cualquiera y será necesario que el usuario sea quien lo introduzca de teclado. Usando las misma definición de variables tenemos:
Pi ¬ 3.1416 (fase de inicialización)
Leer (R) (fase de lectura)
Area ¬ pi * R ^ ² (fase de cálculos)
Escribir ( A, L ) (fase de salida)
Note que la instrucción de asignación fue cambiada por la instrucción leer. En el flujograma deberán cambiarse también los símbolos que los representan:
Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15% respectivamente. Desplegar el resultado.
Entradas: Salarios de los empleados
Datos adicionales: aumentos del 10, 12 y 15%
Sueldo final = sueldo inicial + aumento
Aumento = sueldo inicial * porcentaje/100
Sf1, Sf2, Sf3 = los sueldos finales
S1, S2, S3 = salarios de los empleados
Aum1, aum2, aum3 = aumentos
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso.
En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma:
Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocódigo y en diagramas de flujos:
Tengo un teléfono y necesito llamar a alguien pero no sé como hacerlo.
El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra de una estructura secuencial. Ahora veremos los componentes que pertenecen a ella:
Asignación
La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:
- Simples: Consiste en pasar un valor constante a una variable (a
15)
- Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a
a + 1)
- Acumulador: Consiste en usarla como un sumador en un proceso (a
a + b)
- De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a
c + b*2/4).
En general el formato a utilizar es el siguiente:
< Variable >
<valor o expresión >
El símbolo
debe leerse asigne.
Escritura o salida de datos
Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Esta instrucción presenta en pantalla el mensaje escrito entre comillas o el contenido de la variable. Este proceso se representa así como sigue:
Lectura o entrada de datos
La lectura o entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a continuación de la instrucción. Esta operación se representa así:
DECLARACION DE VARIABLES Y CONSTANTES
La declaración de variables es un proceso que consiste en listar al principio del algoritmo todas las variables que se usarán, además de colocar el nombre de la variable se debe decir qué tipo de variable es.
Contador: ENTERO
Edad, I: ENTERO
Direccion : CADENA_DE_CARACTERES
Salario_Basico : REAL
Opcion : CARACTER
En la anterior declaración de variables Contador, Edad e I son declaradas de tipo entero; Salario_Basico es una variable de tipo real, Opcion es de tipo carácter y la variable Direccion está declarada como una variable alfanumérica de cadena de caracteres.
En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo valor.
CONSTANTE Pi 3.14159
CONSTANTE Msg Presione una tecla y continue
CONSTANTE ALTURA 40
Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa de fuerza declarar las variables. Sin embargo en este curso lo haremos para todos los algoritmos que realicemos, con esto logramos hacerlos más entendibles y organizados y de paso permite acostumbrarnos a declararlas ya que la mayoría de los lenguajes de programación (entre ellos el C++) requieren que necesariamente se declaren las variables que se van a usar en los programas.
Veamos algunos ejemplos donde se aplique todo lo que hemos visto hasta el momento sobre algoritmos:
Ejemplo 1: Escriba un algoritmo que pregunte por dos números y muestre como resultado la suma de estos. Use Pseudocódigo y diagrama de flujos.
Ejemplo 2: Escriba un algoritmo que permita conocer el área de un triángulo a partir de la base y la altura. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos.
La estructura lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de problemas. Las utilizamos cuando en el desarrollo de la solución de un problema debemos tomar una decisión, para establecer un proceso o señalar un camino alternativo a seguir.
Esta toma de decisión (expresada con un rombo) se basa en la evaluación de una o más condiciones que nos señalarán como alternativa o consecuencia, la rama a seguir.
Hay situaciones en las que la toma de decisiones se realiza en cascada. Es decir se toma una decisión, se marca la rama correspondiente a seguir, se vuelve a tomar una decisión y así sucesivamente. Por lo que para alcanzar la solución de este problema o subproblema debemos aplicar prácticamente un árbol de decisión.
Las podemos clasificar en:
Estructuras Básicas de Control.
Nos ayudan a resolver algorítmicamente problemas más complejos. Con ellas es posible tomar decisiones y repetir grupos de acciones.
Para la redacción de un pseudocódigo se pueden utilizar tres tipos de estructuras de control las:
Selectivas, Secuenciales, Repetitivas.
Estructura Selectivas.
Se utilizan para tomar decisiones lógicas, se evalúa una condición y en función al resultado se realiza una determinada secuencia de instrucciones.
Estas estructuras se clasifican en:
Simple, Dobles, Múltiples.
Estructura Selectiva Simple:
Se identifican porque están compuestos únicamente de una condición. La estructura si-entonces evalúa la condición y en tal caso:
Si la condición es verdadera, entonces ejecuta la acción Si (o acciones si son varias). Si la condición es falsa no se hace nada.
Su sintaxis es la siguiente en pseudocódigo:
Español
Si<condición> Entonces
<Acción S1>
Fin _ si
Ingles
if <condición>
hen
<Acción S1>
End_if

Estructura Selectiva Doble:
Son estructuras lógicas que permiten controlar la ejecución de varias acciones y se utilizan cuando se tienen dos opciones de acción, por la naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
Su sintaxis es la siguiente en pseudocódigo:
Español
Si <condición> entonces
<Acción S1>
Sino
<Acción S2>
Fin_Si
Ingles
if <condición> then
<Acción S1 >else <Acción S2>End_if

Estructura Selectiva Múltiple:
Aplicando la estructura de decisión múltiples se evaluara una expresión que podrá tomar n valores distintos, 1, 2, 3,…., n y según que elija uno de estos valores en la condición, se realizara una de las n acciones o lo que es igual, el flujo del algoritmo seguirá solo un determinado camino ente los n posibles. Esta estructura se representa por un selector el cual si toma el valor 1 ejecutará la acción 1, si toma el valor 2 ejecutara la acción 2, si toma el valor n realizara la acción n.
Su sintaxis es la siguiente:
Español
En caso (variable) hacer
Caso 1: Acción 1
Caso2: Acción 2
Caso N: Acción N
En caso contrario:Acción
Fin_caso