Está en la página 1de 39

 

 
PROGRAMA  DE  INGENIERÍA  
 
 
 
 
 

ALGORITMOS

 
Tomada de http://www.conalepqueretaro.edu.mx/images/stories/informatica.jpg

Introducción

El   desarrollo   programas   computacionales   a   partir   de   la   identificación   del   problema,  


exige  el  cumplimiento  formal  de  una  serie  de  etapas  que  contribuyen  a  su  solución.  
En  esta  unidad  los  participantes  desarrollarán  la  capacidad  de  clasificar  los  problemas  
y  proponer  soluciones  óptimas  dentro  del  marco  metodológico  de  la  construcción  de  
algoritmos,  para  optimizar  la  solución  a  partir  de  la  correcta  elección  y  aplicación  de  
las  estructuras  de  control.    
 
Finalmente,  desarrollará  la  capacidad  para  hacer  pruebas  de  escritorio  que  permiten    
comprobar   y   afinar   el   algoritmo   desarrollado,   para   ser   traducido   en   un   lenguaje   de  
programación  de  alto  nivel,  a  partir  del  pseudocódigo  creado.  
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Objetivos
 
Objetivo general
 
Utilizar   procesos   metodológicos   para   el   análisis   y   diseño   de   algoritmos,   para   aplicar  
diferentes  estructuras  que  optimicen  la  solución  en  un  lenguaje  de  programación.  
 

Objetivos específicos

• Conocer   las   técnicas   básicas   para   el   análisis,   diseño   y   construcción   de  


algoritmos.  
 
• Aplicar  estructuras  de  control  para  la  optimización  de  acciones  repetitivas  en  
la  solución  de  un  problema  en  un  medio  computacional.    
 
 

Clasificación de problemas

Solucionar   un   problema   es   encontrar   una   o   varias   respuestas   desconocidas   a   través  


de   representaciones,   símbolos,   figuras   demostraciones,   decisiones,   algoritmos   etc.,   las  
que   cumplen   con   ciertas   condiciones   o   relaciones   previamente   conocidas.   La  
programación   de   computadores   es   una   actividad   relativamente   nueva,   pero   la  
programación   es   una   forma   especializada   del   antiguo   proceso   de   resolución   de  
problemas1  que  exige  cuatro  pasos:  
 
• Comprensión   del   problema:   es   la   etapa   más   importante,   consiste   en   definir  
claramente  el  problema  y  su  proceso  de  solución.  
 
• Diseñar  el  plan  para  resolver  el  problema:  en  esta  etapa  se  deben  resolver  
interrogantes  como:  ¿con  qué  recursos  contamos?,  ¿qué  información  tenemos?,    
¿qué   personal   se   requiere?,   ¿cómo   utilizo   los   recursos?   y   ¿cuáles   son   las  
limitaciones  o  restricciones?  
 
• Ejecución   del   plan:   al   definir   con   claridad   el   paso   anterior,   se   ponen   en  
marcha  todas  las  acciones  que  conducen  a  la  solución  del  problema.  
 
• Evaluación   del   plan:   este   paso   plantea   preguntas   como:     ¿el   problema   se  
solucionó   correctamente?   o   ¿el   resultado   obtenido   satisface   la   solución   al  
problema  planteado?  
                                                                                                               
1
Wilson Mauricio Pimiento Cárdenas. Fundamentos de la lógica para programación de computadores. Universidad Piloto.
2009. 1ª edición.
   
PROGRAMA  DE  INGENIERÍA  
 
 
A  partir  de  lo  anterior  los  problemas  se  clasifican  como2:  
 
• Indecidibles:  Son  problemas  de  los  cuales  no  se  sabe  si  existe  una  solución.  
 
Ejemplo:  ¿Existe  en  la  expansión  decimal  de  p,  una  secuencia  de  tamaño  n,  para  
cualquier  número  natural  n?  
 
- Entrada:  el  número  n.  
- Proceso:   verdadero   si   existe   en   la   expansión   decimal   de   p   una   secuencia   de  
tamaño  n  del  número  n,  parta  todo  número  natural  n.  Falso  en  el  otro  caso.  
- Salida:  un  valor  de  verdad  (falso  o  verdadero).  
 
En   este  tipo  de  problemas  no  se  puede  decidir  si  en  el  primer  millón  de  dígitos  de  
p   se   encuentra   una   secuencia   como   la   buscada,   ni   nada   garantiza   que   en   el  
siguiente   millón   de   dígitos   se   encuentre   o   no   tal   secuencia   y   así   sucesivamente,  
por  lo  que  no  se  puede  saber  si  existe  o  no  tal  secuencia.  
 
• Insolubles:  son  problemas  en  los  que  no  existe  una  solución.  
 
Ejemplo:   una   partícula   se   mueve   en   el   espacio   de   manera   aleatoria.   Si   en   el  
instante  de  tiempo  t  se  encuentra  en  la  posición  x,  ¿cuál  será  la  posición  exacta  de  
dicha  partícula  en  15  segundos  después?  
 
- Entrada:  posición  en  el  instante  de  tiempo  t.  
- Proceso:  la  partícula  se  mueve  en  el  espacio  de  manera  aleatoria.  
- Salida:  una  posición.  
 
Este  tipo  de  problema  es  insoluble,  en  razón  a  que  no  existe  forma  de  predecir  la  
posición  de  la  partícula,  pues  que  su  movimiento  es  aleatorio  y  arbitrario.  
 
• Solubles:  son  problemas  sobre  los  cuales  sí  existe  alguna  solución.  Se  dividen  
en     algorítmico   (cuando   existe   un   algoritmo   para   darle   solución)   y   no  
algorítmico  (tiene  solución,  pero  no  se  expresa  en  un  algoritmo).  
 
Ejemplo  soluble  algorítmico:  sean  los  puntos  P  =  (a,  b)  y  Q  =  (c,  d)  que  define  
una   recta,   encontrar   un   segmento   de   recta   perpendicular   a   la   anterior   que   pase  
pro  el  punto  medio  de  los  puntos  datos:  
 
- Entrada:  Los  puntos  P  y  Q  
- Proceso:   El   segmento   de   recta   debe   pasar   por   el   punto   medio   entre   P   y   Q   y  
debe  ser  perpendicular  a  la  recta  trazada  entre  P  y  Q.  

                                                                                                               
2
Wilson Mauricio Pimiento Cárdenas. Fundamentos de la lógica para programación de computadores. Universidad Piloto.
2009. 1ª edición.
   
PROGRAMA  DE  INGENIERÍA  
 
 
- Salida:  El  punto  medio.  
 
Este   tipo   de   problema   es   algorítmico   soluble,   en   razón   a   que   existe   un  
procedimiento  que  permite  encontrar  la  solución.  
 
Ejemplo   soluble   no   algorítmico:   de   un   conjunto   de   cuatro   manzanas,  
determinar  cuál  es  la  más  bella.  
 
- Entrada:  cada  una  de  las  cuatro  manzanas.  
- Proceso:  no  tiene.  
- Salida:  una  de  las  manzanas.  
 
Este   tipo   de   problema   planteado   es   categorizado   como   soluble   no   algorítmico,  
debido  a  que  no  sigue  un  procedimiento  perfectamente  definido  para  encontrar  la  
respuesta.  
 
La   solución   de   un   problema   a   través   de   un   algoritmo     debe   describir   las   tres  
partes  que  lo  componen:  
 
- Elementos  conocidos  (entrada).  
- Procedimientos  y  condiciones  (proceso).  
- Repuesta  (salida).  
 
   
  Entrada   PROCESO  
Salida  
   
 
 
Ejemplo  1.  Hacer  un  plato  típico  colombiano,  de  acuerdo  a  las  anteriores  etapas,  
tiene  la  siguiente  clasificación.  
 
- Entrada:  ingredientes  y  utensilios  de  cocina.  
- Proceso:  combinar  los  ingredientes  y  hacer  uso  de  los  utensilios  de  cocina  de  
acuerdo  a  la  receta.  
- Salida:  el  plato  colombiano.  
 
Ejemplo   2.   Sea   el   número   A   =   5   y   el   número   B   =   10,     encontrar   el   promedio   de   los  
dos  números.  
 
- Entrada:  número  A  y  número  B.  
- Proceso:   sumar   el   número   A   con   el   número   B   y   dividir   el   resultado  
entre  2.    
- Salida:  promedio  de  los  dos  números.    
   
PROGRAMA  DE  INGENIERÍA  
 
 
Metodología para el desarrollo de algoritmos

Desarrollar   un   programa   de   computador   es   una   tarea   que   exige   tener   en   cuenta   de  


manera   varios   elementos   simultáneamente,   lo   que   hace   indispensable   el   uso   de   una  
metodología  para  la  solución.    
 
La  metodología  es  un  conjunto  de  métodos,  principios  y  reglas  que  permiten  enfrentar  
sistémicamente  el  desarrollo  de  un  algorítmico,  el  cual  posteriormente  se  convierte  en  
un   programa   de   computador   que   da   solución   al   problema   planteado.   Este   proceso  
exige  las    siguientes  etapas  en  la  solución  de  un  problema  a  través  del  computador:  
 
• Análisis  del  problema  
• Diseño  y  desarrollo  del  algoritmo  
• Conversión  del  algoritmo  a  un  programa  de  computador  (codificación).  
• Prueba  y  depuración  del  programa  
• Documentación  

Documentación
 
Prueba y
Conversión  del   depuración del
algoritmo  aun   programa
programa  de     Etapa  5  
computador  
Diseño y (codificación)  
desarrollo del
Etapa  4  
algoritmo
Análisis del
problema   Etapa  3  
  Etapa  2  

Etapa  1  
 
Proceso para la elaboración de un programa de computador.

 
 
Las  etapas  1  y  2  son  las  más  complejas  y  las  de  mayor  detenimiento  para  solucionar  
un   problema   en   computador,   porque   responden   cada   uno   de   los   interrogantes  
sugeridos   en   la   solución   de   problemas   para   articular   el   desarrollo.   Las   etapas   3   y   4  
transforman   el   problema   a   un   algoritmo,   el   cual   se   traduce   a   un   lenguaje   de  
programación   computacional   (C++,   Vistual   Basic,   Java   etc)   que   validará   los   datos   para  
determinar  si  satisface  la  solución  al  problema.  
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Análisis del problema

Esta   etapa   consiste   en   comprender   totalmente   el   problema   a   resolver,   tras  


identificar   con   claridad   y   exactitud   las   partes   que   componen   el   algoritmo   (datos   de  
entrada,   procesos   a   desarrollar   con   los   datos   de   entrada   y   los   resultados   o   salidas  
que  se  obtienen  con  la  solución  del  problema).    
 
En   esta   etapa   se   indaga   a   los   expertos   en   el   tema,   mediante   entrevistas,   consultas,  
observaciones,   etc.,   para   comprender   el   dominio   del   problema   y   proponer   una  
solución  satisfactoria  que  responda  a  la  pregunta  ¿qué  hace  el  programa?  
 
Cuando  un  usuario  plantea  un  problema  al  programador  (como  llevar  el  inventario  de  
una  empresa  mediante  un  programa  por  computador),  el  usuario  es  quien  conoce  el  
dominio   del   problema   (además,   es   habitual   que   no   tenga   conocimientos   de  
programación).   Así   mismo,   el   programador   -­‐quien   resolverá   el   problema-­‐   es   un  
experto   en   programación,   no   tiene   el   dominio   del   problema.     El   programador   necesita  
del  conocimiento  del  experto  en  el  dominio  del  problema,  para  llegar  a  una  solución  
computacional.    Al  final  de  esta  etapa,  responderá  los  siguientes  interrogantes:  
 
• ¿El  problema  está  bien  definido?  
• ¿Cuáles  son  los  datos  necesarios  para  resolver  el  problema  (entrada)?  
• ¿Cuáles  son  los  procesos  u  operaciones  a  realizar  con  los  datos  (proceso)?  
• ¿Qué  datos  información  proporciona  la  solución  (salida)?  

Problema 1: Se requiere hacer la suma de dos números enteros e imprimir su resultado.

Entrada: Número_A y Número_B.


Proceso: Suma = Número_A + Número_B.
Salida El resultado que está almacenado en la variable Suma.
 
Variable:   es   una   posición   de   memoria   que   almacena   un   valor   de   un   determinado   tipo  
de  dato,  que  puede  variar  en  la  ejecución  del  programa.  Los  tipos  de  datos  pueden  ser  
números,  caracteres,  etc.  
 

Problema 2: Se requiere el promedio de dos números enteros e imprimir su resultado.

Entrada: Número_A y Número_B.

Proceso:
Suma  =  Número_A  +  Número_B.  
Promedio  =  suma/2  
Salida El resultado que está almacenado en la variable Promedio.
   
PROGRAMA  DE  INGENIERÍA  
 
 
Diseño y desarrollo del algoritmo

La   etapa   de   diseño   consiste   en   expresar   la   solución   del   problema   -­‐   previamente  


analizado  en  una  secuencia  lógica  y  algorítmica  (como  un  pseudocódigo  o  diagrama  de  
flujo)-­‐  a  la  pregunta  ¿cómo  hace  el  programa  la  tarea  solicitada?  
 
Para  responder  la  pregunta  anterior  (junto  con  la  óptima  solución),  es  recomendable  
dividir   el   problema     en   subproblemas   y   éstos,   a   su   vez,   en   otros   problemas   de   más  
bajo  nivel,  hasta  llegar  a  la  implementación  de  la  solución.  Este  método  se  conoce  
técnicamente  como  diseño  descendente  o  modular3.  Así,  cualquier  programa  tendrá  
un  módulo  o  programa  principal  que  enlaza  a  otros  subprogramas  (o  módulos)  que,  
tras   realizar   la   tarea   asignada,   devuelven   el   control   al   programa   principal   o   módulo  
que  lo  invocó.  La  ventaja    del  diseño  descendente  o  modular  radica  en  la  facilidad  para  
que   cada   módulo   pueda   ser   codificado,   validado   y   depurado   de   manera  
independiente;  de  este  modo,  al  final  será  integrado  al  módulo  o  programa  principal.  
 
La  particularidad  del  diseño  radica  en  que  algoritmo  debe  ser  representado  en  algún  
método   que   permita   independizarlo   del   lenguaje   de   programación   al   que  
posteriormente   será   codificado.   Para   conseguir   este   objetivo,   el   algoritmo   debe   ser  
representado  gráfica  o  alfanuméricamente,  de  modo  que  las  secuencias  y  acciones  no  
dependan  de  las  sintaxis  de  algún  lenguaje  de  programación,  sino  que  la  descripción  
sirva   fácilmente   para   la   transformación   de   éste   a   un   lenguaje   determinado.   Los  
métodos  usados  para  representar  el  algoritmo  son:  
 
• Diagramas  de  flujo.  
 
• Pseudocódigo  
 
• Diagrama  Nassi-­‐Schneiderman  (N-­‐S)  
 
• Fórmulas  
 
• Lenguaje  natural  
 
 
La   figura   1   muestra   un   ejemplo   de   la   representación   en   diagrama   de   flujo.   El  
diagrama   representa   la   solución   del   problema   que   conduce   a   la   suma   de   dos   números  
enteros.  
 
 
 
 
                                                                                                               
3
Joyanes A. Luis. Programación en algoritmos, estructuras de datos y objetos. McGraw Hill 2000.
   
PROGRAMA  DE  INGENIERÍA  
 
 
 
 
 
  Fin  
 
 
  Leer número_A Entrada  
  Leer número_B
 
 
  Proceso  
Suma = Número_A + Número_B
 
 
  Salida  
  Escribir suma
 
 
Figura  1.  Solución  del   problema  suma  en  diagrama  de  flujo.  
  Fin  
 
La  representación  del    mismo  ejemplo  en  pseudocódigo  es  el  siguziente.  
 
1   Inicio    
2     Número_A,  número_B,  suma:  Reales  
3     Leer  número_A    
4     Leer  número_B    
5     Suma  =  número_A  +  número_B  
6     Escribir  suma  
7   Fin    
 
 
La  representación  del  ejemplo  en  Diagrama  Nassi-­‐Schneiderman  es  el  siguiente.  
 
Leer    
número_A,  Leer  número_B.  
Calcular  
Suma  ß    número_A  +  número_B  
Escribir    
suma  
 
Los   lenguajes   de   fórmulas   y   lenguaje   natural   suelen   ser   poco   utilizados   en   la  
construcción   de   algoritmos,   debido   a   la   ambigüedad   que   representa   la   definición   de  
sus   términos.   Para   efectos   teóricos   y   prácticos   del   curso,   los   problemas   planteados  
serán  descritos  en  diagrama  de  flujo  y  pseudocódigo.  
   
PROGRAMA  DE  INGENIERÍA  
 
 
Conversión del algoritmo a un programa de computador
(codificación)

Codificar   el   algoritmo   es   escribirlo   mediante   un   lenguaje   de   programación   formal  


(Visual   Basic,   C++,   Java   etc),   aplicando   todas   las   reglas   de   sintaxis   que   contenga.   En  
este  ejemplo  será  escrito  en  C++.  
 
Primero  se  muestra  la  correspondencia  de  línea  por  línea  entre  el  pseudocódigo  y  el  
lenguaje  de  programación  de  alto  nivel  (C++).  
 
 
  Pseudocódigo   C++  
1   Inicio      
2     Número_A,   número_B,   suma:    double   numeroA,   numeroB,  
Reales   suma;  
3     Leer  número_A      cin>>  numeroA  
4     Leer  número_B      cin>>  numeroB  
5     Suma   =   número_A   +    Suma  =  numeroA  +  numeroB  
número_B  
6     Escribir  suma    cout<<suma  
7   Fin      
 
 
Luego,  se  mostrará  todo  el  programa  codificado  en  C++  con  las  líneas  reservadas  (en  
negrilla)   del   programa,   la   cual   será   profundizada   en   el   tema   Traducción   de   los  
algoritmos  al  lenguaje  de  programación  de  alto  nivel.    
 
#include "iostream"
using namespace std;

int main()
{
double numeroA, numeroB, suma;
cout<<"Ingrese el numero A : ";
cin>>numeroA;
cout<<"Ingrese el numero B : ";
cin>>numeroB;
cout <<"\n\n";
suma = (numeroA + numeroB);
cout<<"el valor de la suma es: " <<suma <<"\n";
cout<<"\n\n";
system("pause");
}
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Prueba y depuración del programa

La   prueba   de   un   programa   es   un   proceso   que   consiste   en   ejecutar   el   programa  


desarrollado   en   el   lenguaje   de   programación   e   introducir   diferentes   tipos   de   datos   de  
prueba,  que  determinan  si  el  programa  tiene  errores.  
 
La  depuración  del  programa  es  el  proceso  para  encontrar  errores  en  el  código  del  
programa   y   corregirlos.   Al   ejecutar   un   programa   se   pueden   producir   tres   tipos   de  
errores:4  
 
• Errores   de   compilación:  normalmente  se  producen  por   el  uso   incorrecto   de  
las   reglas   del   lenguaje   de   programación   (suelen   ser   errores   de   sintaxis).  
Cuando   este   tipo   de   errores   ocurre,   el   computador   no   puede   comprender   la  
instrucción   y   genera   un   error   que   impide   convertir   el   programa   fuente   en  
programa  objeto.  
 
• Errores   de   ejecución:   este   tipo   de   errores   se   producen   por   instrucciones  
ingresadas  por  el  usuario,  aunque  el  computador  puede  compilar  y  no  genera  
ningún   tipo   de   error,   como   la   división   por   cero,   la   raíz   cuadrada   de   números  
negativos,  etc.  
 
• Errores   lógicos:   estos   errores   son   los   más   frecuentes   y   difíciles   de   detectar,  
pues   el   programa   puede   funcionar   sin   producir   ningún   tipo   de   error,  
compilación   o   ejecución.   El   error   sólo   es   detectable   en   la   incoherencia   de   los  
resultados,  por  lo  que  debe  volver  a  la  etapa  de  diseño,  modificar  el  algoritmo,  
cambiar  el  programa  fuente  y  volver  a  compilarlo.  
 

Documentación

Consiste   en   la   descripción   de   cada   uno   de   los   pasos   que   conllevan   a   la   solución   del  
problema;   su   importancia   radica   en   la   facilidad   que   otorga   para   leer   un   programa,  
depurarlo,  hacer  ajustes  y  mantenimiento.  Existen  dos  tipos  de  documentación:  
 
• Interna:  consiste  en  ir  dejando  líneas  de  comentario  dentro  del  programa.  
 
• Externa:   incluye   cada   una   de   las   etapas   del   procedimiento   metodológico  
(análisis,   diseño,   codificación   y   los   manuales   del   usuario   para   el   manejo   del  
programa  y  la  interpretación  de  los  datos  e  información  final).  
 
 
 
                                                                                                               
4
Joyanes A. Luis. Programación en algoritmos, estructuras de datos y objetos. McGraw Hill 2000.
   
PROGRAMA  DE  INGENIERÍA  
 
 
Composición de algoritmos: diagramas de flujo y pseudocódigo

El   algoritmo   consiste   en   describir   paso   a   paso   en   un   lenguaje   natural   del   problema  


planteado,   de   acuerdo   a   unas   reglas   básicas   de   composición   que,     posteriormente,  
serán   llevadas   a   un   lenguaje   algorítmico   (para   efectos   del   curso   se   desarrollarán  
diagramas  de  flujo  y  pseudocódigo).  
 
A  partir  del  planteamiento  de  un  problema  será  aplicada  la  metodología  de  desarrollo  
de   algoritmos,   hasta   llegar   a   los   dos   lenguajes   algorítmicos   más   utilizados   en   la  
representación  de  un  problema:  diagrama  de  flujo  y  pseudocódigo.    

Estudio de caso

En   la   Universidad   Militar   Nueva   Granada   un   estudiante   universitario   necesita  


construir   un   algoritmo   que   le   permita   calcular   la   nota   final   de   la   asignatura   de  
programación   I,   compuesta   por   tres   notas   parciales.   Las   dos   primeras   notas   tienen  
un  porcentaje  del  30%  y  la  tercera  un  40%.  
 
 

Etapa I: Análisis de problema

 
Datos  de  entrada   Nota1,  Nota2,  Nota3  
Primer_parcial  =  Nota1  *  30%  
 
Segundo_parcial  =  Nota2  *  30%  
 
Procesos   Tercer_parcial  =  Nota3  *  40%  
 
Nota_final   =   Primer_parcial   +   segundo_parcial   +  
tercer_parcial  
 
Datos  de  salida   La  nota  definitiva    de  la  asignatura  es  Nota_final  
 
 

Etapa II: diseño y desarrollo del algoritmo

Desarrollar   el   diseño   primero   demanda   dividir   el   problema   en   subproblemas,  


determinar   las   entradas,   los   procesos   o   actividades   que   se   hacen   con   las   entradas   y   la  
salida  o  resultados  del  algoritmo.    
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Como   se   ilustró   en   la   etapa   1,   requiere   que   el   algoritmo   reciba   datos   de   entrada  
(Nota1,   Nota2,   Nota3),   se   hace   un   proceso   con   ellos   para   obtener   la   nota   definitiva   en  
la  variable  que  denominada  Nota_final.    El  diagrama  de  flujo  se  verá  como  lo  muestra  
la  figura  4,  en  la  etapa  de  división  del  algoritmo  en  diagrama  de  flujo.  
Inicio

Leer notas Entrada  

Proceso  
Procesar notas

Escribir definitiva
Salida  

Fin
 
Figura 4. Etapa de división del algoritmo en diagrama de flujo.

A   continuación   se   sigue   dividiendo;   es   decir,   tomar   las   entradas   y   dividirlas   para  


mostrar  en  detalle  los  elementos  que  contiene  el  algoritmo  con  relación  a  la  entrada  
de  los  datos.    La  figura  5  muestra  esta  división.  
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Inicio

Leer Nota1

Entrada  
Leer Nota2

Leer Nota3

Procesar notas Proceso  

Escribir definitiva
Salida  

Fin
 
Figura 5. Subdivisión de la primera parte del algoritmo (entrada)

A  continuación  se  divide  la  parte  del  algoritmo  que  corresponde  al  proceso,  como  lo  
muestra   en   la   figura   6.   Ahí   se   aprecian   las   fórmulas   matemáticas   para   procesar   la  
información.  
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Inicio  

Leer Nota1

Leer Nota2

Entrada  
Leer Nota3

Primer_parcial = Nota1 * 30%


Segundo_parcial = Nota2 * 30%
Tercer_parcial = Nota3 * 40%
Proceso  
 
Nota_final = Primer_parcial + segundo_parcial + tercer_parcial

Escribir definitiva
Salida  

Fin  
 
 

Figura 6. Subdivisión de la segunda parte del algoritmo (proceso)

 
Por   último,   se   dividirá   el   proceso   de   la   salida.   Para   este   caso   de   estudio   no   hay   que  
hacer  nada,  en  razón  a  que  la  nota  definitiva  es  un  único  valor  como  resultado  y  una  
única  actividad  del  subproceso  de  salida.  En  la  figura  7  evidencia  el  proceso.  
 
 
 
 
 
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Inicio  

Leer Nota1

Leer Nota2
Entrada  

Leer Nota3

Primer_parcial = Nota1 * 30%


Segundo_parcial = Nota2 * 30%
Tercer_parcial = Nota3 * 40%
Proceso  
 
Nota_final = Primer_parcial + segundo_parcial + tercer_parcial

Escribir Nota_final
Salida  

Fin  
 
 

Figura 7. Subdivisión de la tercera parte del algoritmo (salida)

 
Dentro   del   paso   de   diseño     la   siguiente   actividad   consiste   en   tomar   el   diseño  
propuesto   y   evaluar   las   operaciones   para   optimizarlo.     A   éste   etapa   final   se   le  
denomina  etapa  de  abstracción  o  refinamiento.  En  la  figura  7  se  muestra  el  algoritmo  
desarrollado  anteriormente  en  su  etapa  de  abstracción  o  refinamiento.  
 
 
 
 
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Inicio  

Leer Nota1
Leer Nota2
Leer Nota 3

Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)


 

Escribir Nota_final

Fin  
 
 

Figura 7. Diagrama de flujo representado en la etapa de abstracción o refinamiento.

Pseudocódigo

El   pseudocódigo   facilita   la   traducción   del   algoritmo   a   un   lenguaje   de   programación.  


Permite  al  programador  concentrarse  en  la  lógica  y  las  estructuras  de  control  durante  
la  planificación  del  programa,  sin  preocuparse  del  lenguaje  de  programación  en  el  que  
será  codificado  el  programa.  El  pseudocódigo  muestra  la  definición  de  las  variables  y  
el  tipo  de  datos  que  a  almacenar.  
 
El  algoritmo  representado  en  pseudocódigo  comienza  con  la  palabra  “inicio”  y  finaliza  
con  la  palabra  “fin”.  Entre  estas  palabras  se  escriben  las  instrucciones  que  conllevan  a  
la  solución  del  problema  en  cada  una  de  las  líneas.  Para  la  documentación  interna  del  
algoritmo   se   acostumbra   a   utilizar   una   o   varias   líneas   de   comentario,   precedida   por  
“//”,  que  no  representa  ninguna  instrucción.  
 
Aunque  el  pseudocódigo  nació  como  una  representación  que  sustituía  el  lenguaje  de  
programación   (por   consiguiente,   las   palabras   reservadas,   escritas   en   inglés,   se  
conservan),   hoy   es   posible   extenderlo   a   la   comunidad   hispana   con   sus   respectivas  
traducciones,   como   start,   end,   read   y   write   por   inicio,   fin,   leer   y   escribir  
respectivamente.  
   
PROGRAMA  DE  INGENIERÍA  
 
 
De  acuerdo  con  el  caso  de  estudio,  la  representación  algorítmica  en  pseudocódigo    es  
la  siguiente:  
 
1 Inicio

2 //programa que calcula las nota definitiva de la asignatura programación I.

3 Nota1, Nota2, Nota3, Nota_final : Reales

4 Leer Nota1

5 Leer Nota2

6 Leer Nota3

7 Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)

8 Escribir    Nota_final  

9 Fin

 
 
Estructuras secuenciales
 
 
Estructura secuencial
 
En   un   programa   estructurado   de   manera   secuencial,   una   acción   (instrucción)   es  
seguida  inmediatamente  de  otra  para  su  ejecución,  de  manera  que  la  salida  de  una  se  
convierte   en   la   entrada   de   otra   y   así   sucesivamente   hasta   finalizar   el   proceso.   Las  
figuras  8  y  9  representan  una  estructura  secuencial  en  bloques  y  pseudocódigo.  

Acción  1  

Acción  2  

Acción  3  

Acción  n  

Figura 8. Estructura secuencial.


   
PROGRAMA  DE  INGENIERÍA  
 
 
Inicio
1
<Acción 1>
2
<Acción 2>
3
<Acción 3>
4
….
5

6 <Acción  n>  
Fin
7

Figura 9. Estructura secuencial en pseudocódigo.

Para   ilustrar   la   estructura   secuencial,   es   pertinente   el   caso   estudio   que   propone   crear  
un   algoritmo   para   el   promedio   de   las   notas   de   la   asignatura   programación   I   (caso   que  
será   utilizado   para   cada   una   de   las   estructuras   propuestas   en   el   curso).   Se   puede  
evidenciar   que,   para   la   ejecución   de   cada   instrucción   debe   haber   terminado  
previamente  la  anterior,  como  lo  describe  la  figura  10.  
 

Inicio  

Leer Nota1
Leer Nota2
Leer Nota 3

Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)


 

Escribir Nota_final

Fin  
 
 

Figura 10. Estructura secuencia en diagrama de flujo.


   
PROGRAMA  DE  INGENIERÍA  
 
 
Estructura selectiva o de decisión

Las  estructuras  selectivas  -­‐o  de  decisión-­‐  son  utilizadas  para  tomar  decisiones  lógicas  
cuando  hay  un  número  de  alternativas  resultantes  de  una  condición.  Estas  estructuras  
evalúan  la  condición  y  se  ejecuta  una  opción  u  otra  en  función  del  resultado.  
Las  estructuras  de  decisión  pueden  ser:  
 
• Simples  (Si  –  entonces  /  if  -­‐  then)  
• Dobles  (Si  –  entonces  –  si_no  /  if  –  then  -­‐  else)  
• Múltiples  (Según  sea,  caso  de  /  case)  

Estructura simple

Este   tipo   de   estructura   evalúa   una   condición   dada   y,   de   acuerdo   con   el   resultado  
(verdadero   o   falso),   determina   la   acción   a   seguir.   La   representación   gráfica   de   la  
estructura  de  decisión  simple  se  observa  en  la  figura  11.  
 
a.

Falso  (no)  
Condición  

Verdadero  
(SI)  
Acciones  

b. Pseudocódigo en español. c. Pseudocódigo en inglés.

Si <condición> entonces if <condición> entonces

<Acción 1> <Acción 1>

…. ….

<Acción  n>     <Acción  n>  


Fin_si endif

Figura 11. Estructura de decisión simple.


   
PROGRAMA  DE  INGENIERÍA  
 
 

La   decisión   simple   (Si   –   entonces   o   if-­‐then),   representada   en   el   gráfico   anterior,  


evalúa   la   condición.   Si   la   condición   es   verdadera   (si),   ejecuta   la   acción   o   acciones  
dadas.  Si  al  evaluar  la  condición,  el  resultado  es  falso  (no),  entonces  no  se  hace  nada.  
 
Ejemplo:   En   la   Universidad   Militar   Nueva   Granada   un   estudiante   universitario  
necesita  construir  un  algoritmo  que  le  permita  calcular  la  nota  final  de  la  asignatura  
de  programación  I,  compuesta  por  tres  notas  parciales:  las  dos  primeras  notas  tienen  
un  porcentaje  del  30%;  la  tercera  tiene  un  40%.      
 
Si  la  nota  es  igual  o  superior  a  3.0,  imprimir  un  mensaje  que  diga:  “Aprobó  la  materia”.    
 
 
Inicio  

Leer Nota1
Leer Nota2
Leer Nota 3

Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)


 

Nota_final   No  
>=  3.0  

Si  

Escribir Aprobó la Materia

Fin  
 
 
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Estructura doble

Este   tipo   de   estructura   permite   ejecutar   acciones   en   las   dos   alternativas   posibles  
(verdadero  o  falso),  una  vez  evaluada  la  condición.  La  figura  12  ejemplifica  este  tipo  
de  estructura.  
 
a.

Verdadero  (SI)   Falso  (no)  


Condición  

Acción  A1   Acción  A2  

b. Pseudocódigo en español. c. Pseudocódigo en inglés.

Si <condición> entonces if <condición> entonces

<Acción A1> <Acción A1>

si_no else

<Acción  A2>     <Acción  A2>  


Fin_si endif

Figura 12. Estructura de decisión doble.

Ejemplo

En   la   Universidad   Militar   Nueva   Granada   un   estudiante   universitario   necesita  


construir   un   algoritmo   que   le   permita   calcular   la   nota   final   de   la   asignatura   de  
programación  I,  compuesta  por  tres  notas  parciales:  las  dos  primeras  notas  tienen  un  
porcentaje  del  30%  y  la  tercera  un  40%.      
 
Si  la  nota  es  igual  o  superior  a  3.0,  imprimir  un  mensaje  que  diga:  “Aprobó  la  materia”;  
si  la  nota  es  inferior  a  3.0,  imprimir  un  mensaje  que  diga:  “Reprobó  la  materia”.  
   
PROGRAMA  DE  INGENIERÍA  
 
 

La   condición   doble   (Si   –   entonces-­‐si_no   ó   if-­‐then-­‐else)   representada   en   el   gráfico  


anterior,  evalúa  la  condición:  si    ésta  es  verdadera  (sí),  ejecuta  la  acción  o  acciones  A1;  
si  es  falsa  (no),  ejecuta  las  acciones  A2.  
 
 
Inicio  

Leer Nota1
Leer Nota2
Leer Nota 3

Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)


 

No   Nota_final   Si  
>=  3.0  

Escribir Reprobó la Escribir Aprobó la


Materia Materia

Fin  
 
 
 

Estructura múltiple

Este  tipo  de  estructura  permite  seleccionar  una  opción  entre  múltiples  alternativas,  lo  
que   evita   problemas   de   escritura   del   algoritmo   y,   naturalmente,   de   legibilidad.   La  
figura  13  evidencia  este  tipo  de  estructura.  
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
a.  

1   n  
Condición  

2  
3   4  
Acción  A1   Acción  A2   Acción  A3   Acción  A4   …   Acción  An  
 
 
b. Pseudocódigo

Según sea expresión (E) hacer

E1: Acción A11


Acción A12
Acción A13

E2: Acción A21


Acción A22
Acción A23

En: Acción An1


Acción An2
Acción An3

Si-no Acción Ax

Fin-según.

Figura 13. Estructura de decisión múltiple.

 
El  resultado  de  la    expresión  (E)  es  evaluado,  el  resultado  se  compara  con  cada  una  
de  las  etiquetas  E1,  E2,…,  En  y  de  su  incidencia  ejecutará  las  acciones  respectivas.  En  
caso  de  no  corresponder  con  ninguna  de  las  etiquetas,  ejecutará  la  acción  Ax.  
 
Debe  tener  en  cuenta  que:  
 
• Cada  etiqueta  (E1,  E2,…,  En)  es  un  único  valor  diferente  a  las  demás.  
• La  expresión  (E)     debe  ser   un   tipo   ordinal,   como   por   ejemplo:   entero,   carácter,  
boleano  pero  no  real  o  cadena.  
 
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Estructuras repetitivas

Las  estructuras  repetitivas  son  algoritmos  creados  para  repetir  una  o  varias  acciones  
en   un   número   finito   de   veces.   Las   estructuras   que   repiten   una   sentencia   de  
instrucciones   un   número   determinado   de   veces   se   denominan   bucles;   repetir   la  
ejecución   de   una   sentencia   de   acciones5   se   llama   iteracción.   Existen   tres   tipos   de  
estructuras  repetitivas:  
 
1. Mientras  (while)  
2. Repetir  (repeat)  
3. Desde  –  para  (for)  
 

Mientras (while)

La   estructura   repetitiva   “mientras”   (while)   es   aquella   en   que   las   acciones   se   repiten  


mientras  se  cumple  la  condición.  La  figura  14  muestra  un  ejemplo  de  esta  estructura.  
 

Falsa  (no)  
Condición  

Verdadera  
(Si)  
Acciones  

b. Pseudocódigo en español. c. Pseudocódigo en inglés.

mientras <condición> hacer while <condición> do

<Acción 1> <Acción 1>


<Acción 2>
…. ….

<Acción  n>     <Acción  n>  


Fin_mientras endwhile

 
Figura 14. Estructura repetitiva “mientras” (while).

                                                                                                               
5
Joyanes A. Luis. Programación en algoritmos, estructuras de datos y objetos. McGraw Hill 2000
   
PROGRAMA  DE  INGENIERÍA  
 
 
Al   ejecutar   la   estructura   “mientras”   (while),   primero   debe   evaluar   la   condición.   Si   el  
resultado   de   la   condición   es   verdadero,   ejecuta   el   cuerpo   del   bucle   (las   acciones)   y  
regresa  nuevamente  para  evaluar  la  condición.  Este  proceso  se  repite  una  y  otra  vez,  
mientras  el  resultado  de  la  condición  sea  verdadero;  si  es  falso,  no  se  ejecuta  ninguna  
acción.    
 

Ejemplo

En   la   Universidad   Militar   Nueva   Granada   un   estudiante   universitario   necesita  


construir   un   algoritmo   que   le   permita   calcular   la   nota   final   de   la   asignatura   de  
programación   I,   compuesta   por   tres   notas   parciales.   Las   dos   primeras   notas   tienen   un  
porcentaje  del  30%,  la  tercera  tiene  40%.      
 
Si  la  nota  es  igual  o  superior  a  3.0,  imprimir  un  mensaje  que  diga:  “Aprobó  la  materia”;  
si  la  nota  es  inferior  a  3.0,  imprimir  un  mensaje  que  diga:  “Reprobó  la  materia”.  
 
Hacer  que  este  algoritmo  calcule  la  nota  definitiva  para  varios  estudiantes  hasta  que  el  
usuario   digite   la   letra   N,   que   indica   que   no   quiere   continuar   realizando   más  
promedios,  o  S  si  quiere  seguir  haciendo  promedios.    
 
 
 
 
 
 
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Inicio  

No  
Continua  
(S/N)  

Si  

Leer Nota1
Leer Nota2
Leer Nota 3

Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)


 

No   Si  
Nota_final  >=  
3.0  

Escribir Reprobó la Escribir Aprobó la


Materia Materia

Fin  
 
 
 

Repetir (repeat)

La   estructura   repetitiva   “repetir”   (repeat)   es   aquella   en   la   que   las   acciones   son  


ejecutadas   hasta   cumplir   una   acción   determinada,   la   cual   se   comprueba   al   final   del  
bucle;  dicho  proceso  lo  muestra  la  figura  15.  
 
 
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
a  

Acciones  

Falsa  
Condición  
(no)  

Verdadera  
(Si)    
 
b. Pseudocódigo en español. c. Pseudocódigo en inglés.

repetir repeat

<Acción 1> <Acción 1>


<Acción 2> <Acción 2>
…. ….

<Acción  n>     <Acción  n>  


Hasta_que <condición> until <condición>

Figura 15. Estructura repetitiva “repetir” (repeat).

 
En   la   estructura   “repetir”   las   acciones   siempre   se   ejecutan   al   menos   una   vez;   la  
estructura  “mientras”  evalúa  la  condición,  si  ésta  es  verdadera,  ejecuta  las  acciones;  de  
lo  contrario,  no.    
 

Ejemplo

En   la   Universidad   Militar   Nueva   Granada   un   estudiante   universitario   necesita  


construir   un   algoritmo   que   le   permita   calcular   la   nota   final   de   la   asignatura   de  
programación   I,   la   cual   está   compuesta   por   tres   notas   parciales:   las   dos   primeras  
tienen  un  porcentaje  del  30%  y  la  tercera,  un  40%.      
 
Si  la  nota  es  igual  o  superior  a  3.0,  imprimir  un  mensaje  que  diga:  “Aprobó  la  materia”.  
Si  la  nota  es  inferior  a  3.0,  imprimir  un  mensaje  que  diga:  “Reprobó  la  materia”.  
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Hacer  que  este  algoritmo  calcule  la  nota  definitiva  para  varios  estudiantes  hasta  que  el  
usuario   digite   la   letra   N   (que   indica   que   no   quiere   continuar   realizando   más  
promedios)  o  S  (si  quiere  seguir  haciendo  promedios).    
 
Inicio  

Leer Nota1
Leer Nota2
Leer Nota 3

Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)


 

No   Si  
Nota_final  >=  
3.0  

Escribir Reprobó Escribir Aprobó la


la Materia Materia

No   Si  
Continua  
(S/N)  

Fin  
 
 
Observe  que   en  la  estructura  repeat,  a  diferencia  de   while,   la   decisión   se   encuentra   al  
final  de  la  ejecución  del  algoritmo.  
 

Desde – para (for)

La   estructura   desde-­‐para   (for)   es   utilizada   cuando   se   conoce   el   número   de   veces  


requeridas  para  ejecutar  las  acciones  de  un  bucle,  como  lo  ejemplifica  la  figura  16.  
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
a.  
 
Variable_control = valor_inicial
Valor_límite = valor_final

falso  (no)   Variable_control   <=    


valor_límite  

Verdadero  
(si)  
Acciones

Incrementar_variable_control

 
 
Desde variable_control ß hasta valor_límite incrementar_varible_control <valor> hacer

<Acción 1>
<Acción 2>
….

<Acción  n>  
Fin_desde

Figura 16. Estructura repetitiva desde - para (for).

 
El  bucle  Desde  –  para  (for)  está  compuesto  por  cuatro  partes:  
 
• Parte  de  inicialización:  está  representada  por  la  variable  de  control  del  bucle.  
 
• Parte  de  iteración:  contiene  una  expresión  lógica  que,  de  ser  verdadera,  hace  
que  se  realicen  las  acciones  en  cada  iteración.  
   
PROGRAMA  DE  INGENIERÍA  
 
 
 
• Parte  de  incremento:  en  esta  parte  se  incrementa  o  decrementa  la  variable  de  
control  del  bucle.  
 
• Parte   de   acciones   (o   sentencias):   contiene   las   acciones   que   se   ejecutan   en  
cada  iteración  del  bucle.    
 
 

Ejemplo

En   la   Universidad   Militar   Nueva   Granada   un   estudiante   universitario   necesita  


construir   un   algoritmo   que   le   permita   calcular   la   nota   final   de   la   asignatura   de  
programación   I,   compuesta   por   tres   notas   parciales:   las   dos   primeras   tienen   un  
porcentaje  del  30%  y  la  tercera  un  porcentaje  del  40%.      
 
Si  la  nota  es  igual  o  superior  a  3.0,  imprimir  un  mensaje  que  diga:  “Aprobó  la  materia”;  
si  la  nota  es  inferior  a  3.0,  imprimir  un  mensaje  que  diga:  “Reprobó  la  materia”.  
 
Hacer  que  este  algoritmo  calcule  la  nota  definitiva  para  tres  estudiantes.    
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
   
Inicio  

Contador = 0
 

No   Contador  <3  

Si  
Leer Nota1
Leer Nota2
Leer Nota 3

Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)


 

No   Nota_final   Si  
>=  3.0  

Escribir Reprobó la Escribir Aprobó la


Materia Materia

Contador = Contador + 1
 

Fin  
   
PROGRAMA  DE  INGENIERÍA  
 
 
Anidación de estructuras

Las   estructuras   anidadas   son   aquellas   que   pueden   contener   otras   estructuras   (de  
decisión  y  repetitivas)  cualquier  número  de  veces,  ejecutando  diferentes  acciones.  
 

Estructuras de decisión anidadas

Las  estructuras  de  selección  si-­‐entonces  y  si-­‐entonces-­‐si_no  implican  la  selección  de  
dos   alternativas.   Es   posible   utilizar   la   instrucción   si   para   diseñar   estructuras   de  
selección   que   contengan   más   de   dos   alternativas.   Ejemplo,   una   estructura   si-­‐entonces  
puede   contener   otra   estructura   si-­‐entonces   y   esta   estructura   si-­‐entonces   puede  
contener  otra  y  así  sucesivamente6.  
 

Si  condición1  entonces  
Si  condición2  entonces  
Si  condición3  entonces  
 <acción  1>  
….  
<acción  n>      

 
Representación   en   pseudocódigo   de   una   estructura   de   decisión   simple   anidada   (si-­‐
entonces)  
 
 
Si Condición1 entonces
Si Condición2 entonces
Si Condición3 entonces
<Acción1>

<Acción n>

       Fin_si  
Fin_si
Fin_si

 
 
 
 
                                                                                                               
6
Joyanes A. Luis. Programación en algoritmos, estructuras de datos y objetos. McGraw Hill 2000.
   
PROGRAMA  DE  INGENIERÍA  
 
 
El  siguiente  pseudocódigo  muestra  una  estructura  de  decisión  doble:    
 
 
Si Condición1 entonces
 
  <acciones>

  Si_no
  Si Condición2 entonces
  <acciones>
 
Si_no
 
  Si Condición3 entonces
  <Acciones>
  Si_no
 
<Acciones>
 
         Fin_si  
  Fin_si
  Fin_si
 
 
El   pseudocódigo   se   puede   volver   complejo   en   la   medida   que   sean   agregadas   más  
estructuras   de   decisión   anidadas,   por   lo   que   es   necesario   aplicar   indentación   (o  
sangría),  de  tal  manera  que  corresponda  la  palabra  si  y  fin_si  de  cada  estructura,  tal  
como  lo  ilustran  las  líneas.  
 

Estructuras repetitivas anidadas

Las   estructuras   repetitivas   son   anidadas   igual   que   las   estructuras   de   decisión   y  
conservan    las  reglas  de  indentación.  Adicional  a  esto,  la  estructura  interna  debe  estar  
contenida  completamente  en  la  externa,  evitando  el  solapamiento.  La  figura  17  (a  y  b)  
representa  gráficamente  esta  anidación:  
 
 
 
 
 
 
 
 
 
 
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
 
a.  
 
  mientras Condición1 hacer
 
<acciones>
 
  mientras Condición2 hacer
  <acciones>
  mientras Condición3 hacer
 
<Acción1>
 

 
  <Acción n>
                           Fin_mientras  
  Fin_mientras
 
Fin_mientras
 

Figura 17. Anidación de estructuras repetitivas.

 
b)  
 
 
   
mientras Condición1 hacer
<acciones>
mientras Condición3 hacer
<Acción1>

<Acción n>

                         Fin_mientras  
mientras Condición3 hacer
<Acción1>

<Acción n>

                         Fin_mientras  
Fin_mientras
   
PROGRAMA  DE  INGENIERÍA  
 
 
Prueba de escritorio

Prueba   que   el   programador   hace   al   algoritmo   para   verificar   que   cumple   con   las  
especificaciones  y  los  resultados  esperados,  sin  necesidad  de  ejecutarlo  en  un  lenguaje  
de  programación.  Proceso  que  se  ejecuta  a  “mano”  y  paso  por  paso.  
 
Para  dar  una  explicación  más  clara  y  precisa  del  proceso  de  la  prueba  de  escritorio,  se  
continuará  con  el  estudio  de  caso:  
 

En  la  Universidad  Militar  Nueva  Granada  un  estudiante  universitario  necesita  


construir  un  algoritmo  que  le  permita  calcular  la  nota  final  de  la  asignatura  de  
programación  I,  la  cual  está  compuesta  por  tres  notas  parciales.  Las  dos  primeras  
notas  tienen  un  porcentaje  del  30%  y  la  tercera,  el  40%.  
 
Para   iniciar   con   prueba   de   escritorio,   se   toma   el   pseudocódigo   resultante   de   la  
segunda   etapa   del   proceso   metodológico   de   desarrollo   de   algoritmos.   Ver   figura  
18.-­‐  Pseudocódigo.  
 
Inicio
1
//programa que calcula las nota definitiva de la asignatura programación I.
2
Nota1, Nota2, Nota3, Nota_final : Reales
3
Leer Nota1
4
Leer Nota2
5
Leer Nota3
6
Nota_final = (Nota1 * 30%) + (Nota2 * 30%) + (Nota3 * 40%)
7

8 Escribir    Nota_final  
Fin
9

Figura 18.- Pseudocódigo.

 
La   prueba   de   escritorio   comienza   ejecutando   la   línea   numerada   como   1;   es   decir,  
inicia   con   la   ejecución   del   algoritmo.   En   la   línea   2   se   deja   un   comentario   sobre   el  
objetivo  del  programa  y  en  la  línea  3  se  definen  las  variables  y  el  tipo  de  dato  que  cada  
variable   almacenará   (reales).   En   la   línea   4   se   ejecuta   una   instrucción   de   entrada;   es  
decir,   una   instrucción   que   recibe   un   dato   para   que   el   algoritmo   lo   procese.   En  
términos  de  la  prueba  de  escritorio,  se  debe  registrar  un  dato  que  entra  al  algoritmo  y  
queda   almacenado   en   una   variable   en   la   memoria   del   computador;   este   hecho   se  
   
PROGRAMA  DE  INGENIERÍA  
 
 
registra   en   la   siguiente   tabla   que,   para   efectos   de   la   prueba   de   escritorio,   se   irá  
registrando  cada  suceso  que  ocurra  en  las  líneas  del  algoritmo.  
 
 
Nota1   Nota2   Nota3   Nota_final  
3.6        
 
Como   se   observa   en   la   tabla   anterior,   debajo   de   la   variable   Nota1   aparece   el   dato   real  
3.6,   lo   que   significa   que   se   suministró   un   dato   al   algoritmo   y   quedó   almacenado   en  
Nota1.  
 
En  el  algoritmo,  las  instrucciones  5  y  6  hacen  exactamente  lo  mismo  que  la  instrucción  
4,   con   la   diferencia   que   puede   suministrar   datos   diferentes   a   voluntad   del   usuario,  
haciendo  uso  del  computador.  
 
La   prueba   de   escritorio   supone   que   al   suministrar   las   notas   4.4   y   3.2,   quedan  
almacenadas   en   las   variables   Nota2   y   Nota3   respectivamente.   La   tabla   con   los  
anteriores  valores  se  verá  así:  
 
 
Nota1   Nota2   Nota3   Nota_final  
3.6   4.4   3.2    
 

La   instrucción   7   toma   cada   uno   de   los   datos   almacenados   en   las   variables   Nota1,  
Nota2   y   Nota3,   multiplicando   por   30%,   30%   y   40%   respectivamente   cada   una.   El  
resultado   de   la   anteriores   operaciones   se   suman   y   almacenan   en   la   variable  
Nota_final.  
 
La     instrucción   número   8   tiene   como   fin   reportar   el   contenido   de   la   variable  
Nota_final;   es   decir,   el   valor   3.6.     Esta   variable     se   resalta   con   un   círculo   para  
identificar  que  hace  parte  de  los  datos  de  salida  esperados  del  algoritmo.  
 
 
Nota1   Nota2   Nota3   Nota_final  

3.6   4.4   3.2   3.6  


 
   
PROGRAMA  DE  INGENIERÍA  
 
 
En  conclusión,  de  la  prueba  de  escritorio  realizada  al  algoritmo  con  los  datos  3.6,  4.4  y  
3.2,   que   corresponden   a   las   notas   del   estudiante,   resulta   como   nota   definitiva   3.6   y   es  
correcto.  
 
Se  pueden  hacer  más  verificaciones  al  algoritmo,  tras  realizar  nuevamente  la  prueba  
de   escritorio   con   otros   datos   del   cual   se   deberán   obtener   resultados   acordes   a   los  
nuevos  datos  suministrados.  

Traducción de los algoritmos al lenguaje de programación de alto


nivel

Traducir  un  algoritmo  a  un  lenguaje  de  programación  de  alto  nivel,  significa  pasar  de  
la   codificación   del   pseudocódigo   a   la   sintaxis   propia   del   lenguaje   de   programación  
escogido,   que   para   el   caso   de   este   curso   es   C++   (Dev-­‐C++).   Para   ello,   primero   es  
necesario  conocer  la  estructura  y  sintaxis  propia  del  lenguaje  C++,  donde  intervienen  
librerías,  funciones  y  otras  más  que  no  usa  el  algoritmo.  
 
 
El archivo de cabecera indica al
programa las funciones a utilizar. Por
ejemplo: si se reemplaza por
iostream dentro del programa, se
podrán utilizar funciones como
#include < nombre
system(“pause”) para dar una pausa
Archivo de de fichero >
al programa que se está realizando.
cabecera
También se pueden usar recursos
como cin (palabra reservada para que
el usuario ingrese los datos) y cout
(para mostrar los datos al usuario).

Ej. #include <iostream>


Tras definir la cabecera principal del
programa, hay que definir la
Función principal Int main ( ) cabecera de la función principal del
programa, que indica el comienzo del
mismo.
Una vez escrita la función main (),
que indica el comienzo del programa,
se procede a escribir las líneas de
Cuerpo del
{ } código que indican los procesos a
programa
seguir. Estas líneas están
delimitadas por el símbolo de llaves: {
}.
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Al  final,  la  estructura  de  un  programa  en  C++  es  así:  
 
#include  <iostream.h>  
main  (  )  
{  
.  .  .  .  
}  

A   continuación   será   codificado   el   algoritmo   que   recibe   dos   números   enteros   por   el  
teclado   y   entrega   la   suma   de   éstos   números,   aplicando   la   estructura   del   lenguaje   de  
programación  de  alto  nivel  C++.  
#include "iostream"
using namespace std;

int main()
{
double numeroA, numeroB, suma;
cout<<"Ingrese el numero A : ";
cin>>numeroA;
cout<<"Ingrese el numero B : ";
cin>>numeroB;
cout <<"\n\n";
suma = (numeroA + numeroB);
cout<<"el valor de la suma es: " <<suma <<"\n";
cout<<"\n\n";
system("pause");
}
 
Nota:  Para  evitar  que  los  nombres  de  las  funciones  programadas  por  el  usuario  sean  
confundidas  con  las  definidas  por  las  librerías  estándar  de  C++  (las  que  se  #incluyen  <  
entre   símbolos   menor-­‐que<   y   mayor-­‐que   >),   lo   que   conllevaría   a   la   provocación   de  
errores   difíciles   de   detectar   y   corregir,   la   solución   establecida   por   C++   son   las  
namespace   (espacio   de   nombres),   que   para   el   caso   anterior   es   std,   que   incluye   las  
definiciones  para  cout,  cin  etc.    
 
El  formato  es  el  siguiente:  
 
Using  namespace  std  
 
 
 
 
 
   
PROGRAMA  DE  INGENIERÍA  
 
 
Resumen

El   desarrollo   de   un   programa   de   computador   exige   una   metodología   que   permita  


comprender   el   problema   de   manera   secuencial   y   complementaria,   evaluar  
alternativas   de   solución   y   diseñar   la   solución   en   el   lenguaje   algorítmico,   para  
trasladarlo   a   un   lenguaje   de   computador.   Finalmente   se   realizarán   pruebas   que  
determinen  su  funcionalidad  y  coherencia  entre  el  problema  y  la  solución.      
 
La  clasificación  de  problemas  define  el  concepto  y  los  tipos  de  problemas,  así  como  
los  pasos  sugeridos  para  llegar  a  la  óptima  solución  de  problema.  La  metodología  de  
desarrollo  de  algoritmos  describe  en  detalle  cada  etapa  que  conlleva  a  la  solución  de  
un  problema  determinado  a  través  de  un  lenguaje  de  programación.  La  composición  
de   algoritmos   (diagramas   de   flujo   y   pseudocódigo)   describe   detalladamente   la  
representación   del   problema   en   un   lenguaje   algorítmico.   Las   estructuras  
secuenciales,  estructura  selectiva  o  decisión,  estructuras  repetitivas  y  anidación  
de   estructuras   describen,   ilustran   e   incorporan   procesos   más   complejos   de  
interactividad   y   decisión,   necesarios   en   el   abordaje   y   la   solución   a   problemas   que  
requieren  de  su  aplicación.  
 
Previamente  a  la  codificación  a  un  lenguaje  de  alto  nivel,  se  detalla  la  fase  de  pruebas  
durante   la   prueba   de   escritorio,   que   permite   evaluar   la   funcionalidad   del  
pseudocódigo  y  la  coherencia  entre  el  problema  y  la  solución;  para  así  culminar  con  la  
traducción   de   los   algoritmos   al   lenguaje   de   programación   de   alto   nivel,   que  
consiste   en   la   traducción   del   algoritmo   en   lenguaje   pseudocódigo   al   lenguaje   de  
programación  C++.  

También podría gustarte