1. Conalep ++ Manejo de Técnicas de Programación
TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS
Las técnicas analizadas en el tema anterior permiten un diseño global del algoritmo, pero ocasionalmente
pueden desatender detalles específicos de este. Las tres técnicas o herramientas de formulación de algoritmos
más populares son:
Diagrama de flujo
Pseudocódigo
Diagramas estructurados
Diagramas de flujo
Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la
representación detallada en forma gráfica de cómo deben realizarse los pasos en el computador para producir
resultados. Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la
computadora), se relacionan entre sí mediante líneas que indican el orden en que se deben ejecutar los
procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización
(ANSI).
Simbología utilizada en los diagramas de flujo
Símbolo Función
2. Conalep ++ Manejo de Técnicas de Programación
Simbología Utilizada en los Diagramas de Flujo
Símbolo Función
3. Conalep ++ Manejo de Técnicas de Programación
Símbolos de diagrama de flujo empleados en el software Raptor
Función
Assignment (Asignación), este símbolo en figura de rectángulo,
permite evaluar una expresión y asignar () o guardar el valor que
se origine como resultado de la misma en una variable. Por
ejemplo, tómese la siguiente asignación: Variable Expresión,
misma que deberá ir dentro de un símbolo rectángulo.
Call (llamada), este símbolo hace referencia e invoca a un
procedimiento o función, consistente en una sección o fragmento
de código (instrucciones) para su ejecución en bloque,
generalmente cuando se hace un diseño de la solución del
problema en programación modular.
Input (Entrada), mediante el se indicará la entrada (leer) de datos
para su lectura y almacenamiento bajo el nombre de una variable,
permitiendo al mismo tiempo la salida de un mensaje entre comilla
doble o simple de forma indistinta, y que servirá para aclarar al
usuario la petición del dato que se desea debe introducir.
Output (Salida) se usará este símbolo para escribir o dar salida a
los datos que se generen durante la ejecución del programa, ya
sea producto de un cálculo, mostrar el valor de una variable, o
bien, mostrar mensajes informativos al usuario. Para escribir un
mensaje en este símbolo, este deberá estar encerrado entre
comilla simple o doble y si en el mismo símbolo se desea mostrar
además del mensaje el valor de una variable, se usara el signo
más (+) para separar uno de otra.
Nota: Es importante destacar que tanto para la entrada como para
la salida de datos, se usa el mismo símbolo, pero hay que
diferenciarlos por la indicación en la dirección de la flecha que
señala si se está introduciendo (lectura, entrada) o si se está
escribiendo (salida)
Selection (Selección), Este símbolo representa una estructura
algorítmica condicional, que permite evaluar una expresión lógica
(condición) y derivado de su valor(siendo solo posible dos: Falso o
verdadero), seguir un curso de acción y ejecutar las instrucciones
que se encuentren en el caso previsto (falso o verdadero), según
el resultado obtenido.
Loop (iteración, repetición), Este símbolo representa una
estructura repetitiva o de iteración, mediante ella es posible
realizar la ejecución de instrucciones en más de una vez. Su
funcionamiento consiste en definir condiciones de inicio (dadas por
valores iniciales de la variable de control), y la evaluación de una
expresión lógica (condición) de salida, que involucra a la variable
de control respecto a un valor a alcanzar por esta y dentro del
cuerpo de la estructura repetitiva se debe modificar el valor de la
variable de control, para que en un determinado momento se
termine la repetición de la estructura.
Start (Inicio) y End (Fin), estos símbolos permiten marcar el inicio
y el fin del programa respectivamente.
4. Conalep ++ Manejo de Técnicas de Programación
Recomendaciones para el diseño de Diagramas de Flujo
Usar solamente líneas de flujo horizontal y/o vertical.
Evitar el cruce de líneas utilizando los conectores.
Usar conectores solo cuando sea necesario.
No deben quedar líneas de flujo son conectar.
Trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. El
texto escrito en un símbolo deberá ser claro y evitar el uso de muchas palabras.
Pseudocódigo
Mezcla de lenguaje de programación y español (o inglés o cualquier otro idioma) que se emplea, dentro de la
programación estructurada, para realizar el diseño de un programa. El uso de tal lenguaje hace el paso de
codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil. En esencial, el
pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representación
narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El
pseudocódigo utiliza palabras que indican el proceso a realizar.
Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje
de programación. Cabe señalar que el pseudocódigo no puede ser ejecutado por una computadora. El
pseudocódigo utiliza para representar las acciones sucesivas palabras reservadas en este caso en español
(similares a sus homónimos en ingles en los lenguajes de programación). Tales como: Inicio, Fin, Si-Entonces,
Hacer Mientras, Repite-Hasta, Desde – Hasta, etc.
Entrada y Salida de Información
Los cálculos que realizan las computadoras requieren para ser útiles la Entrada de los datos necesarios para
ejecutar las operaciones que posteriormente se convertirán en resultados, es decir, Salida. Las operaciones de
entrada permiten leer determinados valores y asignarlos a determinadas variables. Esta entrada se conoce
como operación de Lectura (read, cin, get). Los datos de entrada se introducen al procesador mediante
dispositivos de entrada (teclado, unidades de disco, etc). La salida puede aparecer en un dispositivo de salida
(pantalla, impresora, etc). La operación de salida se denomina escritura (write, cout, say, ).
Lectura o entrada
La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un dato o valor.
Diagrama de flujo Pseudocódigo
Se utiliza el símbolo de entrada/Salida de datos:
Indicaría que se lee la Edad, Sexo y Sueldo en las
variables del mismo nombre.
En el diagrama de flujo, si deseamos mostrar un
mensaje que aclare la entrada para que el usuario
sepa que dato introducir. Se puede hacer en el
mismo símbolo de entrada, Pero no es así en el
pseudocódigo.
Sintaxis (forma de escribir la instrucción):
Leer (Variable)
Ejemplo:
Leer (Num)
Donde: Num será la variable que recibirá el dato de
entrada. Siempre y cuando sea del mismo tipo a como
se definió la variable.
Leer ( Lista de Variables)
Ejemplo:
Leer (Edad, Sexo, Sueldo)
Donde: Edad, Sexo y Sueldo son las variables que
recibirán los datos de entrada respectivamente.
Código en lenguaje de programación C++
Sintaxis (forma de escribir la instrucción):
cin >> variable;
cin >> variable1>> Variable2>>…>>VariableN;
Ejemplo:
cin >> Num;
cin >> Edad>>Sexo>>Sueldo;
Edad, Sexo, Sueldo
“Teclea tu Edad: ”, Edad
5. Conalep ++ Manejo de Técnicas de Programación
Escritura o Salida
Consiste en mandar por un dispositivo de salida (p.ej. monitor, impresora o hacia un archivo) un resultado,
valor, dato o simplemente texto para explicar una entrada o salida de información.
Diagrama de flujo Pseudocódigo
Se utiliza el símbolo de entrada/salida de datos: Escribir (“Mensaje”, Variable)
Ejemplo:
Escribir (“La edad y sexo son: ”, Edad, Sexo)
Donde “La edad y sexo son:” es un mensaje que
se desea aparezca. Edad y Sexo son variables que
contienen los datos a mostrar.
Código en lenguaje de programación c++
Sintaxis (forma de escribir la instrucción):
cout << variable;
cout << variable1<< Variable2 <<,…<< VariableN;
cout << “Mensaje” << variable << ”Mensaje” ;
cout << “variable” <<”Mensaje” ;
Ejemplo:
cout << Sueldo;
cout << Nombre << Edad << Sexo;
cout << “La edad y sexo son: “<<Edad<<Sexo;
cout << Promedio<<” Es tu calificación final” ;
Nota: En lo que resta de este curso, se empleara el símbolo de Entrada/Salida de datos, únicamente para la
entrada y el símbolo de impresora o impresión para la salida de datos. Esto con la finalidad de evitar
confusiones.
PROGRAMACIÓN ESTRUCTURADA.
La programación Estructurada es una técnica en la cual la estructura de un programa, esto es, la interpelación
de sus partes realiza tan claramente cómo es posible mediante el uso de tres estructuras lógicas de control:
Secuencia: Sucesión simple de dos o más operaciones.
Selección: bifurcación condicional de una o más operaciones.
Interacción: Repetición de una operación mientras se cumple una condición.
Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen
cualquier tarea de procesamiento de información.
Estructuras Algorítmicas
Las estructuras de operación de programas son un
grupo de formas de trabajo, que permiten, mediante la
manipulación de variables, realizar ciertos procesos
específicos que nos lleven a la solución de problemas.
Estas estructuras se clasifican de acuerdo con su
complejidad, como se aprecia en el diagrama a la
derecha.
En todo algoritmo se requieren de datos de entrada
que permitan realizar con ellos procesos para generar
los resultados o salidas esperadas. Por lo que a
continuación definiremos la forma de cómo realizar las
operaciones de Entrada y Salida.
Edad, Sexo
Edad, Sexo
“La edad y sexo Son:”,
Edad, Sexo
o de Impresora:
- Compuestas o dobles
6. Conalep ++ Manejo de Técnicas de Programación
Estructura secuencial. Diagrama de Flujo Diagrama N-S .
Es aquélla 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. La estructura
secuencial tiene una entrada y una
salida. Su representación gráfica es la
siguiente:
…
Pseudocódigo Código en lenguaje de ´rogramación C++
Inicio #include <constream.h>
Acción1
Acción2 void main ( )
Acción3 {
: instrucción_1;
AcciónN instrucción_2;
Fin :
instrucción_N;
}
Estructuras condicionales
Las estructuras selectivas o alternativas pueden ser: Simple, Doble o compuesta, Múltiple
Alternativa o condicional simple (si-entonces/if-then)
La estructura alternativa simple si-entonces (en inglés if-then o bien IF-THEN ) ejecuta una determinada acción
cuando se cumple una determinada condición. La selección si-entonces evalúa la condición y . . .
Si la condición es verdadera, entonces ejecuta la acción S1 (o acciones caso de ser S1 una acción
compuesta y constar de varias acciones).
Si la condición es falsa, entonces no hace nada.
A continuación se muestra la representación de la estructura condicional simple.
Diagrama de flujo Pseudocódigo Código Lenguaje de programación C++
Si (Condición?) Entonces
Acción_1
Acción_2
Acción_3
…
Acción_n
Fin_Si
if (condición?)
{
instruccion_1;
instruccion_2;
instruccion_3;
…
instruccion_n;
}
Condición
Si No
Acciones
7. Conalep ++ Manejo de Técnicas de Programación
Alternativa o condicional compuesta (si-entonces-sino/if-then-else)
Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del
cumplimiento o no de una determinada condición. Solo se realizan las instrucciones de un caso (V o F).
Diagrama de flujo Pseudocódigo Código lenguaje de programación C++
Si (Condición?) Entonces
Acciones
Sino
Acciones
Fin_Si
if (condición?)
{
instrucciones;
}
else
{
instrucciones;
}
DDoonnddee:
Si Indica el comando de comparación de decisión, para proceder a evaluar la condición
Condición Indica la condición (expresión lógica o relacional) a evaluar
Entonces Procede a realizar las acciones, cuando se cumple la condición
Acciones Son las acciones a realizar cuando se cumple o no la condición
Sino Procede a realizar las acciones, cuando no se cumple la condición
Estructura selectiva o condicional múltiple (según sea, caso de / case, switch)
Cuando existen más de dos elecciones (alternativas) posibles, es cuando se presenta el caso de alternativas
múltiples. Si el número de alternativas es grande puede plantear serios problemas de escritura del algoritmo y
naturalmente de legibilidad. La estructura de decisión múltiple evaluará una expresión que podrá tomar n
valores distintos 1, 2, 3, 4,..., n. Según que elija uno de estos valores en la condición, se realizará una de las n
acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles. La
representación se muestra a continuación:
Diagrama de flujo Pseudocódigo Código C++
Casos de (Valor ?)
Caso Valor1:
Instrucciones
Caso Valor2:
Instrucciones
Caso Valor3:
Instrucciones
Caso Valor4:
Instrucciones
Caso ValorN:
Instrucciones
Por Defecto:
Instrucciones
Fin_Casos
switch (Valor ?)
{
case Valor1:
instrucciones;
break;
case Valor2:
instrucciones;
break;
case ValorN:
instrucciones;
break;
default:
instrucciones;
}
Condición
Si No
Acciones Acciones
Por
Defecto
Valor
Valor1
Acción2
1
Acción1
Acción3 Acción4
1
Acción
AcciónN
Valor2 ValorNValor3 Valor4
8. Conalep ++ Manejo de Técnicas de Programación
DDoonnddee:
Valor ? Será una variable, constante o expresión que arroje un valor ddee ttiippoo eenntteerroo oo ccaarraacctteerr.
Valor1,Valor2, ... ValorN Serán valores enteros o caracter, en tal caso el caracter deberá estar
entre comilla simple (‘X’), con los cuales se espera correspondencia del valor en
cuestión (Valor ?).
Acción1, Acción2, ... AcciónN; Instrucciones; Serán sustituidos por las instrucciones u
operaciones o acciones a realizar en caso de que el selector (Valor ?), corresponda con
ese caso en particular.
Por Defecto; default: Indica que las instrucciones que se encuentran después de él,
se ejecutaran cuando no exista correspondencia entre el selector de casos (Valor ?) y
los casos contemplados por Valor1, Valor2, ..., ValorN.
Estructuras repetitivas
Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan
Bucles y se denomina Iteración al hecho de repetir la ejecución de una secuencia de acciones. Se llaman
problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones
que se puedan ejecutar una cantidad específica de veces. Esta cantidad puede ser fija (previamente
determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa).
Entre las estructuras repetitivas se encuentran:
Mientras – Hacer (while)
Repetir - Hasta (repeat – until)
Desde – Para (for)
IMPORTANTE
En toda estructura repetitiva se emplea por lo general una variable de control del ciclo, la cual permite definir
el número de veces que dicho ciclo se repite. Esta variable por lo tanto, antes de iniciar la estructura repetitiva,
esta debe ser inicializada con un valor en particular, y deberá modificar su valor internamente en el ciclo,
para asegurar que en algún momento este se termine la ejecución del bucle. Y evitar con ello que el programa
se repita indefinidamente.
Estructura Mientras - Hacer (while)
La estructura repetitiva Mientras, es aquélla en que el cuerpo del bucle se repite mientras se cumple una
determinada condición. Por lo tanto puede ser que nunca llegue a ejecutarse. Su representación se muestra en
la siguiente tabla:
Diagrama de flujo Pseudocódigo Código C++
Mientras (Condición?) Hacer
Acción_1
Acción_2
Acción_3
…
Acción_n
Fin-Mientras
while (Condición?)
{
Instrucción1;
Instrucción2;
Instrucción3;
[break;]
…
[continue;]
Instrucción_n;
}
9. Conalep ++ Manejo de Técnicas de Programación
Donde:
Condición Será la una expresión lógica que se evalúa. Si esta es verdadera, entonces el ciclo se
ejecuta y se termina en caso contrario.
Acciones; Instrucción1, Instrucción2, … Instrucción_n Serán sustituidas por las instrucciones u
operaciones a realizar.
break; Los corchetes indican que esta instrucción puede ir o no, según la necesidad del
algoritmo. Su uso es exclusivo en código C++, y su función es forzar la terminación del
ciclo, aunque la condición siga siendo verdadera.
continue; Los corchetes indican que esta instrucción puede ir o no, según la necesidad del
algoritmo. Su uso es exclusivo en código C++, y su función regresar a la siguiente
iteración omitiendo la ejecución del resto de las instrucciones del ciclo.
ESTRUCTURA REPITE-HASTA (REPEAT – UNTIL, DO-WHILE)
Esta estructura se ejecuta hasta que se cumpla una condición determinada que se comprueba hasta el final del
bucle. Su característica principal es que se ejecuta al menos una vez. El bucle Repetir-Hasta_Que, se repite
mientras el valor de la expresión booleana de la condición sea falsa, justo la opuesta de la estructura mientras.
Diagrama de flujo Pseudocódigo Código C++
Repetir
Acción_1
Acción_2
Acción_3
…
Acción_n
Hasta_Que (Condición)
do
{
Instrucción_1;
Instrucción_2;
Instrucción_3;
[break;]
…
[continue;]
Instrucción_n;
} while (Condición);
Nota Importante: En el lenguaje de programación C++, no existe la estructura Repite-Hasta_Que. En su lugar
se emplea la estructura do-while (Hacer-Mientras), que funciona de manera similar evaluando la condición al
final. Pero la diferencia está en que, la estructura do-while se repite mientras la condición que se evalúa sea
verdadera. A la inversa que en Repite-Hasta_Que. Por lo que se debe de tener cuidado a la hora de codificar en
C++ con la escritura de la condición.
Estructura desde-para (para-hasta, for)
En muchas ocasiones se conoce de antemano
el número de veces que se desean ejecutar las
acciones de un bucle. En estos casos en el
que el número de iteraciones es fija, se debe
usar la estructura desde o para. La estructura
Desde ejecuta las acciones del cuerpo del
bucle un número específico de veces y de
modo automático controla el número de
iteraciones o pasos a través del cuerpo del
bucle.
A la derecha se muestra el diagrama de flujo
compacto para representar esta estructura. Acciones
Vi Valor Inicial
Condición
Incremento
o Decremento de Vi Falso
Verdadero
10. Conalep ++ Manejo de Técnicas de Programación
Donde:
• Vi Es la variable índice de control del ciclo, mediante la cual se determina el número de repeticiones.
• Valor inicial Se utilizará para fijar el valor inicial de la variable índice para control del ciclo.
• Condición (Vi > Vf) En este apartado se especificará la condición de salida una expresión lógica que
por lo general involucra a la variable índice de control (Vi) y a un valor final (Vf) al cual tiene que llegar esta,
o bien una expresión que arroje dicho valor.
• Incremento/Decremento de Vi: Se utilizará para especificar el incremento o decremento que aplicara a la
variable de control del bucle (Vi) utilizada para control de las repeticiones. Generalmente se da en uno,
aunque en C++ es libre.
Diagrama de Flujo de la estructura Desde/Para
Pseudocódigo de la estructura Desde/Para Diagrama N-S
Desde V Valor_Inicial Hasta Valor_Final Hacer
Acción_1
Acción_2
Acción_3
…
Acción_n
Fin-Desde
Código C++ de la estructura Desde/Para
for (Vi = Valor_Inicial ; Condición; Incremento/Decremento de Vi)
{
Instrucción_1;
Instrucción_2;
[break;]
…
[continue;]
Instrucción_n;
}