Está en la página 1de 14

Construcción

 de  Algoritmos  |  2017  


UNIDAD  1.  CONSTRUCCION  DE  ALGORITMOS    
 
Mucha   gente   piensa   que   estudiar   metodología   de   la   programación   es   una   tarea   ardua   y   aburrida.   Pero   para  
justificar  el  porque  debemos  aprender  metodología  antes  de  comenzar  a  programar  veamos  el  siguiente  caso:  
 
Imagínate   que   deseas   realizar   un   programa   sobre   el   cálculo   de   horas   a   pagar   de   un   trabajador   promedio,   y   solo  
llegas   a   sentarte   frente   a   tu   computadora   sin   haber   planeado   como   enfrentar   el   programa,   llevas   horas   y   horas  
ingresando   código   y   probando   los   resultados.  Luego   de   x   horas   de   trabajo   te   desesperas   y   aún   no   has   llegado   a  
resolver  lo  del  pago  de  horas  adicionales  trabajadas.    
 
Este  es  un  ejemplo  muy  claro  de  lo  que  puede  suceder  si  solamente  se  escribe  código  sin  haber  planificado  antes  lo  
que  haría  el  programa.  
 
1.  Resolución  de  Problemas  con  Computadora  
Aunque  el  proceso  de  diseñar  programas  es  un  proceso  creativo,  se  pueden  considerar  una  serie  de  fases  o  pasos  
comunes,   que   generalmente   deben   seguir   todos   los   programadores.   La   resolución   de   problemas   con   computadora  
se  puede  dividir  en  tres  fases:  
 
1.   Análisis  del  problema    
2.   Diseño  del  algoritmo    
3.   Resolución  del  algoritmo  en  la  computadora    
 
El  análisis  y  el  diseño  del  algoritmo  requieren  la  descripción  del  problema  en  subproblemas  a  base  de  refinamientos  
sucesivos   y   de   una   herramienta   de   programación.     Durante   la   tercera   etapa   (resolución   del   algoritmo   en   la  
computadora)  se  implementa  este  algoritmo  en  un  código  escrito  en  un  lenguaje  de  programación  (pseudocódigo),  
reflejando  las  ideas  obtenidas  en  las  fases  de  análisis  y  diseño.  
 
Fases  para  la  Resolución  de  Problemas  
 
1.  Análisis  del  Problema  
Esta   fase   requiere   una   clara   definición   donde   se   contemple   exactamente   lo   que   debe   hacer   el   programa   y   el  
resultado  o  solución  deseada.  Dado  que  se  busca  una  solución  se  precisan  especificaciones  de  entrada  y  salida.    
Para  poder  definir  bien  un  problema  es  conveniente  responder  a  las  siguientes  preguntas:    
•   ¿Qué  entradas  se  requieren?  (cantidad  y  tipo)    
•   ¿Cuál  es  la  salida  deseada?  (cantidad  y  tipo)    
•   ¿Qué  método  produce  la  salida  deseada?    
 
2.  Diseño  del  Algoritmo  
En  la  fase  de  análisis  en  el  proceso  de  programación  se  determina  que  hace  el  programa.  En  la  fase  de  diseño  se  
determina  como  hace  el  programa  la  tarea  solicitada.  Los  métodos  utilizados  para  el  proceso  del  diseño  se  basan  en  
el  conocido  divide  y  vencerás.  Es  decir  la  resolución  de  un  problema  complejo  se  realiza  dividiendo  el  problema  en  
subproblemas  y  a  continuación  dividir  estos  subproblemas  en  otros  de  nivel  mas  bajo,  hasta  que  sea  implementada  
una   solución   en   la   computadora.   Este   método   se   conoce   técnicamente   como   diseño   descendente   (top-­‐down)   o  
modular.    
 
Cada   programa   bien   diseñado   consta   de   un   programa   principal   (el   módulo   de   nivel   mas   alto)   que   llama   a  
subprogramas  (módulos)  de  nivel  mas  bajo,  que  a  su  vez  pueden  llamar  a  otros  subprogramas.  
Los  módulos  pueden  ser  planeados,  codificados,  comprobados  y  depurados  independientemente  y  a  continuación  
combinarlos  entre  sí.  Este  proceso  implica  la  ejecución  de  estos  pasos  hasta  que  el  programa  se  ha  terminado:    
•   Programar  un  módulo    
•   comprobar  el  módulo    
•   Si  es  necesario,  depurar  el  módulo    
•   Combinar  el  módulo,  con  el  resto  de  los  otros  módulos    

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     1  
Construcción  de  Algoritmos  |  2017  
El   diseño   del   algoritmo   es   independiente   del   lenguaje   de   programación   en   el   que   se   vaya   a   codificar  
posteriormente.    
 
3.  Resolución  del  algoritmo  en  la  computadora  
Para  implementar  un  algoritmo  en  la  computadora,  se  debe  ejecutar  los  siguientes  pasos:    
•   Codificación    
•   Compilación  y  ejecución    
•   Verificación    
•   Depuración    
•   Documentación    
 
Codificación:   Es   la   escritura   en   un   lenguaje   de   programación   de   la   representación   de   un   algoritmo.   Dado   que   el  
diseño   del   algoritmo   es   independiente   del   lenguaje   de   programación   utilizado   en   su   implementación,   el   código  
puede  ser  escrito  con  igual  facilidad  en  un  lenguaje  o  en  otro.    
 
Compilación   y   ejecución:   Una   vez   que   el   algoritmo   se   ha   convertido   en   un   programa   fuente,   es   preciso   introducirlo  
en  memoria  mediante  el  teclado  y  almacenarlo  posteriormente  en  un  disco.  Esta  operación  se  realiza  con  un  editor  
de  texto,  posteriormente  el  programa  fuente  se  convierte  en  un  archivo  de  programa  que  se  guarda  en  un  disco.    
El  programa  fuente  debe  ser  traducido  a  lenguaje  máquina.  Este  proceso  se  realiza  con  el  compilador  y  el  sistema  
operativo  que  se  encarga  prácticamente  de  la  compilación.  Si  al  compilar  el  programa  fuente  se  presentan  errores  
(errores  de  compilación),  es  necesario  volver  a  editar  el  programa,  corregir  los  errores  y  compilar  de  nuevo.  Esto  se  
repite  hasta  que  ya  no  se  presenten  más  errores,  obteniéndose  el  programa  objeto,  el  cual  todavía  no  es  ejecutable  
directamente.   Al   ya   no   existir   errores   en   el   programa   fuente   se   debe   instruir   al   sistema   operativo   para   que   efectúe  
la  fase  de  montaje  o  enlace,  del  programa  fuente  con  las  librerías  del  programa  del  compilador.  Este  proceso  de  
montaje  produce  un  programa  ejecutable.  
 
Cuando  se  ha  creado  un  programa  ejecutable  este  se  puede  ya  ejecutar  desde  el  sistema  operativo  con  solo  teclear  
su  nombre.    
 
Suponiendo  que  no  existen  errores  durante  la  ejecución  (errores  en  tiempo  de  ejecución),  se  obtendrá  la  salida  de  
resultados  correctos  del  programa  
 
Verificación  y  depuración:  Es  el  proceso  de  ejecución  del  programa  con  una  amplia  variedad  de  datos  de  entrada,  
llamados   datos   de   test   o   prueba   como   son:   valores   normales   de   entrada,   valores   extremos   de   entrada   que  
comprueben   los   límites   del   programa   y   valores   de   entrada   que   comprueben   aspectos   especiales   del   programa.  
Estos  determinarán  si  el  programa  contiene  errores  o  no.    
Al  ejecutar  un  programa  se  pueden  producir  tres  tipos  de  errores:    
•   Errores   de   Compilación:   Se   producen   normalmente   por   un   uso   incorrecto   de   las   reglas   del   lenguaje   de  
programación,  suelen  ser  errores  de  sintaxis.    
•   Errores   de   Ejecución:   Se   producen   por   instrucciones   que   la   computadora   puede   comprender   pero   no  
ejecutar.  En  estos  casos  se  detiene  la  ejecución  del  programa  y  se  imprime  un  mensaje  de  error.  Ejemplo  
de  esto  puede  ser  una  división  por  cero.    
•   Errores   Lógicos:   Se   producen   en   la   lógica   del   programa   y   la   fuente   del   error   suele   ser   el   diseño   del  
algoritmo,   son   más   difíciles   de   detectar   puesto   que   el   programa   puede   funcionar   y   no   producir   errores   de  
compilación  ni  de  ejecución  pero  regresará  resultados  incorrectos.  En  este  caso  se  debe  regresar  a  la  fase  
de  diseño,  modificar  el  algoritmo,  cambiar  el  programa  fuente  y  compilar  y  depurar  una  vez  más.    
 
Documentación:  La  importancia  de  la  documentación  debe  ser  destacada  por  su  influencia  en  la  etapa  final,  ya  que  
programas   pobremente   documentados   son   difíciles   de   leer,   mas   difíciles   de   depurar   y   casi   imposibles   de   mantener  
y  modificar.    
 
Puede  ser  interna  y  externa.  La  documentación  interna  es  la  contenida  en  líneas  de  comentarios.  La  documentación  
externa   incluye   análisis,   diagramas   de   flujo   y/o   pseudocódigo,   manuales   de   usuarios   con   instrucciones   para  
ejecutar  el  programa  y  para  interpretar  los  resultados.    

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     2  
Construcción  de  Algoritmos  |  2017  
La   documentación   es   vital   cuando   se   desea   corregir   posibles   errores   futuros   o   bien   cambiar   el   programa.   Estos  
cambios  se  denominan  mantenimiento  del  programa.    
 
Además   es   de   buena   costumbre   para   todo   buen   programador,   dejar   comentado   su   código,   esto   es   para   que   el  
futuro  programador  pueda  darle  mantenimiento  fácilmente  a  el  programa,  o  incluso,  si  es  el  mismo  creador  quien  
debe  darle  mantenimiento.    
 
Las  herramientas  de  programación  mas  utilizadas  para  diseñar  algoritmos  son:    
•   Pseudocódigo    
•   Diagramas  N-­‐S    
•   Diagramas  de  flujo    
Siendo  el  pseudocódigo  el  más  popular  por  su  sencillez  y  su  parecido  al  lenguaje  humano.  
 

2.  Algoritmos  
Es   un   método   para   resolver   un   problema,   debe   presentarse   como   una   secuencia   ordenada   de   instrucciones   que  
siempre   se   ejecutan   en   un   tiempo   finito   y   con   una   cantidad   de   esfuerzo   también   finito.   El   concepto   se   puede  
resumir  en:  método  para  resolver  un  problema  mediante  una  serie  de  pasos  precisos,  definidos  y  finitos.  
En  un  algoritmo  siempre  debe  haber  un  punto  de  inicio  y  un  punto  de  terminación,  estos  deben  ser  únicos  y  deben  
ser  fácilmente  identificables.  
 
Características  del  Algoritmo  
Todo  algoritmo  debe  cumplir  las  siguientes  características:  
 
•   Ser  Preciso:  Debe  especificar  sin  ambigüedad  el  orden  en  que  se  deben  ejecutar  las  instrucciones.    
•   Estar  Definido:  Cada  vez  que  se  ejecute  bajo  las  mismas  condiciones,  la  secuencia  de  ejecución  deberá  ser  la  
misma  proporcionándonos  el  mismo  resultado.    
•   Ser   Finito:   Siempre   que   sea   adecuado   sé   realizarán   un   número   finito   de   instrucciones,   en   un   tiempo   finito   y  
requiriendo  una  cantidad  finita  de  esfuerzo.  
 
Por  ejemplo:  Un  algoritmo  que  nos  permita  calcular  el  área  de  un  cuadrado  e  imprima  su  resultado.  Primero  será  
necesario   analizar   todo   aquello   que   se   requiera   para   solucionar   este   problema,   es   decir;   identificar   las   entradas   de  
datos   (la   dimensión   del   lado),   la   información   a   mostrar   (el   área)   y   los   procesos   o   formulas   que   tendremos   que  
realizar  para  producir  un  resultado  deseado  (la  operación  área  =  lado  X  lado).  
 
1.   inicio
2.   leer un lado
3.   hacer el área = lado X lado
4.   Mostrar el resultado, área
5.   Fin
 
Otro  ejemplo  seria  un  algoritmo  que  nos  indique  el  número  mayor  de  dos  números.  
1.   inicio
2.   leer los valores para X, Y
3.   Si el valor X > Y, entonces
4.   Mostrar el valor X
5.   Si no
6.   Mostrar el valor Y
7.   Fin
 
Algoritmo  que  permita  saber  el  área  de  un  círculo  de  radio  variable.  
1.   Inicio
2.   Leer el radio
3.   Hacer área = 3.1416 x radio x radio
4.   Imprimir área
5.   Fin

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     3  
Construcción  de  Algoritmos  |  2017  
 
Algoritmo  que  nos  indique  cual  de  los  2  rectángulos  tiene  el  área  mayor.  Ambos  rectángulos  cuentan  con  base  y  
altura  variables.  
 
1.   Inicio
2.   Leer base1, altura1
3.   Leer base2, altura2
4.   Realizar area1 = base1 x altura1
5.   Realizar area2 = base2 x altura2
6.   Si el area1 > area2 entonces
7.   Imprimir el rectángulo1 tiene un área mayor
8.   Si no
9.   Imprimir el rectángulo2 tiene un área mayor
10.   Fin

 
Algoritmo  que  imprima  los  números  pares  comprendidos  entre  1  y  1000.  Por  ejemplo:  2,  4,  6,...  1000.  
 
1.   Inicio
2.   Hacer contador = 1
3.   Mientras contador < = 1000 hacer lo que sigue
4.   Si el residuo de (contador / 2) = 0 entonces
5.   Imprimir contador
6.   Incrementar el valor de contador en 1 (contador = contador + 1)
7.   Regresar al paso 3 y verificar si llegamos a 1001
8.   Fin
 
Los  algoritmos  se  pueden  expresar  por  fórmulas,  diagramas  de  flujo,  y  pseudocódigo  conocidos  como  herramientas  
de  programación.  Está  última  representación  es  la  mas  utilizada  por  su  sencillez  y  parecido  a  el  lenguaje  humano.  
 
 
Tipos  de  Datos  
Los  diferentes  objetos  de  información  con  los  que  un  programa  trabaja  se  denominan  datos.    
Todos   los   datos   tienen   un   tipo   asociados   con   ellos   que   nos   servirá   para   poder   conocer   con   que   información  
trabajaremos.  Es  decir,  cuando  ingresemos  el  sueldo  de  un  trabajador  necesitamos  que  este  contenga  decimales,  o  
al  solicitar  la  edad  de  una  persona  está  tiene  que  estar  con  números  enteros,  etc.  Además  la  suma  entre  caracteres  
no  tiene  sentido.    
La  asignación  de  tipos  a  los  datos  tiene  dos  objetivos  principales:    
•   Detectar  errores  de  operaciones  aritméticas  en  los  programas    
•   Determinar  como  ejecutar  las  operaciones    
Los  tipos  de  datos  más  utilizados  en  los  lenguajes  de  programación:    
•   Numéricos  (  Enteros,  Reales)    
•   Caracteres      
•   Lógicos  (Verdadero,  Falso)  
 
Tipos  Numéricos.  Dentro  de  estos  tipos  se  puede  hacer  mención  de  los  tipos  enteros,  reales  o  de  coma  flotante,  y  
de  los  exponenciales.    
 
Tipos  Carácter.  Los  tipos  carácter  se  dividen  también  en  caracteres  ASCII,  como  por  ejemplo:  a  A  &  *  ,  etc.  El  otro  
grupo  de  caracteres  son  los  strings  o  cadenas  de  caracteres,  como  por  ejemplo:  "Hola  Mundo".    
 
Tipos  Lógicos.  Los  tipos  lógicos  solamente  pueden  tomar  los  valores  verdadero  o  falso.    
 
 
 
 

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     4  
Construcción  de  Algoritmos  |  2017  
Operadores  
Un   operador   es   un   carácter,   o   grupo   de   caracteres,   que   actúa   sobre   una,   dos   o   más   variables   para   realizar   una  
determinada  operación  con  un  determinado  resultado    
 
Los  operadores  pueden  ser  unarios  o  binarios,  según  actúen  sobre  uno  o  dos  operandos  respectivamente    
En  C  existen  diversos  operadores  (éste  es  uno  de  los  puntos  fuertes  del  lenguaje),  que  veremos  a  continuación:  
 
Operadores  Aritméticos  
Los   operadores   aritméticos   realizan   las   operaciones   aritméticas   básicas,   son   todos   binarios   y   se   pueden   aplicar   a  
variables,  constantes  y  expresiones:  

+ suma - resta * multiplicación / división % resto

El  operador  /,  si  los  dos  operandos  son  enteros,  obtiene  la  división  entera  (sin  decimales)  de  los  mismos  
El  operador  %  sólo  tiene  sentido  entre  operandos  enteros,  obteniendo  como  resultado  el  resto  de  la  división  de  los  
mismos  
 
Operadores  de  asignación  
Los  operadores  de  asignación  son  operadores  binarios  que  asignan  a  una  variable  (situada  a  la  izqda.  del  operador)  
el  valor  resultante  de  evaluar  una  expresión  (situada  a  la  derecha  del  operador).  El  operador  de  asignación  habitual  
en  todos  los  lenguajes  de  programación  es  el  símbolo  igual  (=).    

nombre_de_variable = expresión;
resultado = (x + y – z) / 4;
mi_var = 5;

Es  importante  tomar  en  cuenta  que:  


El  valor  que  tuviese  la  variable  antes  de  la  asignación  se  pierde  
El   resultado   de   la   expresión   debe   ser   del   mismo   tipo   que   la   variable,   en   caso   contrario   se   puede   producir   una  
pérdida  de  rango  en  conversiones  implícitas  de  tipos  
 
No  hay  que  confundir  la  asignación  con  la  igualdad  matemática.  
La  siguiente  expresión  no  tendría  sentido  desde  el  punto  de  vista  matemático:    

variable = variable + 1;  

Simplemente  suma  uno  al  valor  de  la  variable  


 
A  la  izquierda  de  un  operador  de  asignación  no  puede  haber  expresiones,  sólo  puede  aparecer  el  nombre  de  una  
variable  
a + b = c; /* error */

En  C  es  posible  la  asignación  múltiple  y  simultánea  de  varias  variables  a  un  mismo  valor:  
a = b = c = d = expresión;

En   C   existen   otros   cuatro   operadores   de   asignación   (+=,   -­‐=,   *=,   /=)   que   simplifican   algunas   operaciones   recurrentes  
sobre  una  misma  variable,  su  forma  de  uso  es:  
variable op= expresión;
 
que  es  totalmente  equivalente  a:  
variable = variable op expresión;

Ejemplos:  
cont += 1; /* cont = cont + 1; */
rango /= 2.0; /* rango = rango /2.0; */
x *= 3.0 + y; /* x = x * (3.0 + y); */

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     5  
Construcción  de  Algoritmos  |  2017  
Operadores  Incrementales  
Los  operadores  incrementales  son  operadores  unarios  que  incrementan  (++)  o  decrementan  (-­‐-­‐)  en  una  unidad  el  
valor  de   la   variable   a  la  que  afectan.  Pueden  ir  inmediatamente  delante  (pre)  o  inmediatamente  detrás  (post)  de  la  
variable  a  la  que  afectan  
 
Preincremento,  Predecremento:  La  operación  de  incremento  o  decremento  se  lleva  a  cabo  antes  de  utilizar  el  valor  
del  operando,  es  decir,  primero  se  incrementa  (o  decrementa)  el  valor  del  operando  y  luego  se  utiliza.  
 
Postincremento,  Postdecremento:  La  operación  de  incremento  o  decremento  se  lleva  a  cabo  después  de  utilizar  el  
valor  del  operando,  es  decir,  primero  se  utiliza  el  valor  del  operando  y  luego  se  incrementa  (o  decrementa)  
 

Operadores  Relacionales  
Una   característica   imprescindible   de   cualquier   lenguaje   de   programación   es   poder   variar   el   flujo   del   programa  
según   se   cumplan   o   no   ciertas   condiciones.   Los   operadores   relacionales   permiten   hacer   comparaciones,  
obteniendo  como  resultado  verdadero  (1  ó  ≠0)  o  falso  (0)  dependiendo  si  se  cumplen  o  no  ciertas  condiciones.  En  
C,  los  operadores  relacionales  son  todos  binarios:  

== igual que
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
!= distinto que

Operadores  Lógicos  
Los   operadores   lógicos   permiten   combinar   los   resultados   de   los   operadores   relacionales,   comprobando   si   se  
cumplen  simultáneamente  o  no  varias  condiciones.  Formato:  

expresión op_lógico expresión

En  C  existen  tres  operadores  lógicos:  


&&  Conjunción  lógica  (binario):  el  resultado  es  verdadero  si  ambas  expresiones  a  las  que  afecta  son  verdaderas.  
||  Disyunción  lógica  (binario):  el  resultado  es  verdadero  si  alguna  de  las  expresiones  a  las  que  afecta  es  verdadera.  
!  Negación  lógica  (unario):  el  resultado  es  verdadero  si  la  expresión  a  la  que  afecta  es  falsa  y  viceversa    

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     6  
Construcción  de  Algoritmos  |  2017  
 
Tablas  de  Verdad  

Expresiones  
Las  expresiones  son  una  parte  fundamental  de  la  programación  ya  que  sirven  para  realizar  una  o  varias  operaciones  
sobre  un  dato  o  un  conjunto  de  datos,  obteniéndose  otro  dato  como  resultado.  Los  operadores  definen  algunas  de  
las  operaciones  que  pueden  realizarse  dentro  de  una    expresión.  
 
Una   expresión   es   una   combinación   de   operadores   y   operandos.   Los   datos   u   operandos   pueden   ser   constantes,  
variables  y  llamadas  a  funciones.  Además,  dentro  de  una  expresión  pueden  encontrarse  subexpresiones  encerradas  
entre  paréntesis.  Por  ejemplo,  la  siguiente  expresión  matemática:  
 
x  2  +(b  −  3)  ⋅  cos(α  )  
 
Las  expresiones  son  equivalentes  al  resultado  que  proporciona  el  aplicar  los  operadores  a  los  operandos  
Por   ejemplo,   1+5   es   una   expresión   formada   por   los   operandos   1   y   5   y   el   operador   +.   La   expresión   es   equivalente   al  
valor  6,  por  tanto  allí  donde  esta  expresión  aparece  en  el  programa,  es  evaluada  y  sustituida  por  su  valor  6.  
 
Las  expresiones  deben  tener  tipos  compatibles.  En  caso  contrario,  se  producen  conversiones  implícitas  que  pueden  
producir  pérdidas  de  rango  y,  por  tanto,  obtenerse  resultados  no  válidos.  
 
En  C,  como  en  la  mayoría  de  los  lenguajes  de  programación,  existen  expresiones  aritméticas,  expresiones  lógicas  y  
expresiones  generales.  
 
 
Ejercicios  con  algoritmos  
Escriba  los  algoritmos  que  permitan  resolver  los  siguientes  problemas:  
1.   Escriba  un  algoritmo  que  determine  el  menor  valor  de  3  números.  
2.   Escriba  un  algoritmo  que  determine  el  valor  mayor  de  10  números.  
3.   Escriba  un  algoritmo  que  encuentre  en  una  lista  de  N  números  positivos  el  número  mayor.    
4.   Escriba   un   algoritmo   que   acepte   3   enteros   positivos   y   muestre   la   suma,   el   promedio,   el   producto,   y   determine  
número  menor  y  el  número  mayor  de  ellos.    
5.   Escriba   un   algoritmo  para  determinar  el  sueldo  neto  para  cada  trabajador  en  base  a  las  horas  trabajadas  las  
cuales   no   deben   ser   mayor   a   56   horas.   Capturar   para   cada   trabajador:   la   clave,   nombre,   puesto,   horas  
trabajadas  e  importe  por  hora.  Deberá  imprimir  la  clave,  nombre,  puesto,  sueldo  neto  y  la  deducción  (2.5  %  del  
sueldo  parcial).  Tome  en  cuenta  que  tiene  N  trabajadores.  Al  final  deberá  determinarse  la  cantidad  total  que  se  
paga  en  sueldos.  
 

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     7  
Construcción  de  Algoritmos  |  2017  
 
 3.  Diagramas  de  flujo  
 
Existen  varias  herramientas  para  diseñar  algoritmos,  una  de  las  más  evidentes  es  el  lenguaje  natural;  sin  embargo  
el   lenguaje   natural   no   siempre   es   lo   suficientemente   preciso.   Como   herramientas   alternativas   para   el   diseño   de  
algoritmos  existen  los  diagramas  de  flujo  y  el  pseudocódigo.  
 
El   diagrama   de   flujo   es   un   medio   para   representar   gráficamente   un   algoritmo,   empleando   símbolos   estándar   y  
flechas  que  determinan  el  flujo  lógico  de  las  acciones.  
 
Los  diagramas  de  flujo  son  fáciles  de  diseñar  porque  el  flujo  lógico  del  algoritmo  se  muestra  en  un  dibujo  (símbolo)  
en   lugar   de   con   palabras.   Sin   embargo,   tienen   una   limitación   grande:   son   difíciles   de   actualizar   y   complejos   de   leer  
si  ocupan  varias  páginas;  cuando  se  tienen  que  modificar,  resulta  difícil  por  su  carácter  gráfico.  
 
Los   símbolos   utilizados   en   los   diagramas   de   flujo   han   sido   normalizados   por   las   organizaciones   ANSI   (American  
National  Institute)  y  por  ISO  (International  Standard  Organization).  
 
Reglas  para  construir  diagramas  de  flujo  (simbología)  
 
Algunos  de  los  símbolos  más  empleados  en  los  diagramas  de  flujo  son  los  siguientes:  
 
Símbolo   Significado  
Representa  el  inicio  o  Fin  de  un  algoritmo.  

 
Representa  cualquier  tipo  de  ingreso  de  datos  a  las  variables,  mediante  teclado.  

 
Indica   cualquier   tipo   de   operación   que   pueda   originar   un   cambio   de   valor,  
operaciones,  etc.  
 
Se  usa  como  símbolo  de  salida  de  información  a  monitor  o  impresora.  

 
Indican   la   dirección   o   línea   de   flujo   (indica   el   sentido   de   ejecución   de   las  
operaciones.  
 
Condicional:   Indica   operaciones   lógicas   de   comparación   de   valores  
condición  a   cierto   (Si…entonces).  En  función  al  resultado  lógico  de  la  condición  se  determinara  el  
comparar   flujo  a  seguir.  
falso  

 
valor  inicial  
falso   Ciclo  Para:  Realiza  un  número  de  iteraciones  o  ciclos  desde  un  valor  inicial,  hasta  
valor  a  
alcanzar   un   valor   de   salida   (valor   lógico   a   comparar).   Una   vez   realizados   los  
comparar  
cierto   procesos  regresa  al  ciclo  e  incrementa  la  variable  de  control.  
incremento  

procesos  
 

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     8  
Construcción  de  Algoritmos  |  2017  
flujo   Ciclo   Mientras:   Compara   un   valor,   en   caso   de   ser   cierto   realiza   una   serie   de  
procesos   y   regresa   a   comparar   nuevamente   el   valor.   En   caso   de   ser   falso,  
falso  
valor  a   termina  el  ciclo  y  continúa  el  flujo  normal  del  algoritmo.  
comparar  

cierto  

procesos  

sigue  el  flujo  


 
Ciclo   Hacer-­‐Mientras:   Realiza   por   lo   menos   una   vez   una   serie   de   procesos   y  
procesos   compara  un  valor,  en  caso  de  ser  cierta  la  condición,  continua  realizando  la  serie  
de  procesos.  En  caso  de  ser  falsa,  termina  el  ciclo  y  continúa  el  flujo  normal  del  
algoritmo.  
valor  a   falso  
comparar  
cierto  

sigue  el  flujo  


 
Los   conectores   permiten   enlazar   dos   o   más   diagramas,   suele   colocarse   un  
 
símbolo  al  centro.  
 
 
Ejemplos:  
 
Elabore   el   algoritmo   y   el   diagrama   de   flujo   para   el   siguiente   problema:   Calcular   el   salario   neto   de   un   trabajador   en  
función  de  las  horas  trabajadas,  precio  por  hora  de  trabajo  y  considerando  unos  descuentos  fijos  al  salario  bruto  en  
concepto  por  impuestos  del  20%.  
 
Algoritmo   Diagrama  de  flujo  
  inicio  
Inicio  
nombre,  
  horas,  precio  
Leer  nombre,  horas,  precio  
  salario_bruto  =  
salario_bruto  =  horas  X  precio   horas  X  precio  
 
impuestos  =  salario_bruto  X  0.20   impuestos  =  
salario_brutoX0.20  
 
salario_neto  =  salario_bruto  –  impuestos  
salario_neto  =  
  salario_bruto  -­  impuestos  
Mostrar  nombre,  salario_neto,  salario_bruto  
 
nombre,  salario_neto,    
Fin   salario_bruto  

fin    
 
 
 

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     9  
Construcción  de  Algoritmos  |  2017  
Elabore  el  algoritmo  y  el  diagrama  de  flujo  que  permita  mostrar  en  pantalla  un  mensaje  de  mayoría  o  minoría  de  
edad,  según  sea  el  caso  para  un  nombre  específico.  
 
Algoritmo   Diagrama  de  flujo  
  inicio  
Inicio  
  nombre,  edad  
Leer  nombre,  edad  
 
falso   cierto  
Si  la  edad  es  mayor  o  igual  a  18,  entonces   edad  >=  18  
 
       Mostrar  nombre,  “es  mayor  de  edad”  
  nombre,  “  es   nombre,  “  es  
Si  no   menor  de   mayor  de  
  edad”   edad”  
       Mostrar  nombre,  “es  menor  de  edad”  
 
fin  
Fin    
 
 
Ejemplos  de  construcción  de  diagramas  de  flujo:  
 
inicio   Elabore   el   diagrama   de   flujo   para   el   algoritmo   de   tarea   que  
calcula   el   área   de   un   circulo   de   radio   variable   (ejemplo   Tarea  
area=0   2  -­‐  A).  
 
radio  

area=3.1416  x  radio  x  radio  

area  

fin  
 
 
inicio   Elabore   el   diagrama   de   flujo   para   el   algoritmo   de   tarea   que  
area1=0   determina  cual  de  2  rectángulos  tiene  un  área  mayor  (ejemplo  
area2=0   Tarea  2  -­‐  B).  
 
base1,  altura1  
base2,  altura2  

area1  =  base1  x  altura1  


area2  =  base2  x  altura2  

si  
area1  
>     rectangulo1  
area2   es  mayor  

no  

rectangulo2   fin  
es  mayor  
 

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     10  
Construcción  de  Algoritmos  |  2017  

inicio   Elabore   el   diagrama   de   flujo   para   el   algoritmo   de   tarea   que  


imprima   los   números   pares   contenidos   entre   1   y   1000.   Por  
cont  =  1  
ejemplo:  2,  4,  6,...  1000  (ejemplo  Tarea  2  -­‐  C).  
 
cont   no  
<=   fin  
1000  
si  
 
residuo  =  cont  %  2  

si  
residuo  
cont,  es  
=  0  
par  
no  
 
cont  =  cont  +  1  
 
 
 
Ejercicios  con  diagramas  de  flujo  
 
1.   Hacer  un  diagrama  de  flujo  para  calcular  la  serie:  12  +  22  +  32  +  ...  +  10002.  
 
2.   El  precio  unitario  de  unas  pelotas  es  de  6  pesos  por  pelota.  Pero  aparece  la  siguiente  oferta  “si  compras  10  o  
más  pelotas  el  precio  será  de  5  pesos”.  Hacer  un  diagrama  de  flujo  que  calcule  el  costo  final  según  el  número  
de  pelotas  que  se  compren.  
 
3.   Hacer   un   diagrama   de   flujo   que   permita   obtener   el   factorial   de   un   número.   Por   ejemplo   3!   =   3   x   2   x   1,   es   decir    
6.  
 
 
Pseudocódigo  
 
El  pseudocódigo  es  una  descripción  compacta  e  informal  de  alto  nivel  de  un  algoritmo  computacional  que  utiliza  
convenciones   estructurales   de   los   lenguajes   de   programación.   Es   un   lenguaje   muy   parecido   al   lenguaje   utilizado  
para   escribir   programas   de   computadora,   es   decir,   un   lenguaje   de   pseudo-­‐programación.   El   pseudocódigo   se  
concibió  para  superar  las  dos  principales  limitaciones  de  los  lenguajes  algorítmicos  gráficos:  son  lentos  de  crear  y  
difíciles  de  modificar  sin  un  nuevo  dibujo.    
 
Por  otra  parte,  el  pseudocódigo  es  más  fácil  de  utilizar  ya  que  es  muy  similar  al  lenguaje  natural.  Es  una  mezcla  de  
símbolos,  términos  y  otras  características  utilizadas  en  lenguajes  de  alto  nivel  (como  las  palabras  reservadas).  
 
El  pseudocódigo  sirve  como  un  primer  borrador  para  la  programación,  es  decir,  una  planificación  del  programa.  Así  
el   programador   se   concentra   en   la   lógica   y   en   las   estructuras   de   control,   sin   preocuparse   de   las   reglas  
sintácticas/semánticas  de  un  lenguaje  específico.  Las  principales  características  del  pseudocódigo  son:  

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     11  
Construcción  de  Algoritmos  |  2017  
 
A.   Se   suele   utilizar   lenguaje   natural   para   la   definición   de   expresiones,   aunque   resulta   mas   útil   el   uso   de   los  
operadores  aritméticos,  relaciónales  y  lógicos.  
 
Aritméticos     {  +,  -­‐,  *,  /  }  
Relaciónales     {  =,  >,  <,  >=,  <=,  !=  }  
Lógicos     {  and,  or,  not,  xor  }  
 
B.   Los   nombres   de   los   identificadores   (variables,   constantes),   deben   cumplir   con   las   reglas   para   la   creación   de   los  
mismos,  ser  nombres  claros  y  precisos.  
 
C.   Se   pueden   incluir   comentarios   dentro   del   pseudocódigo   para   hacerlo   más   entendible,   utilizando   dos  
diagonales  invertidas  “  //  “.  
 
D.   Se  debe  dejar  una  indentación  (sangría  o  margen)  en  los  bloques  de  instrucciones.  
 
E.   Usa   ciertas   palabras   claves   (reservadas)   empleadas   de   modo   casi   general   en   la   mayoría   de   los   diferentes  
lenguajes   de   programación.   En   la   construcción   de   pseudocódigo   se   genera   una   estrecha   relación   con   los  
diferentes  símbolos  empleados  en  un  diagrama  de  flujo,  de  hecho  existe  casi  una  relación  uno  a  uno  entre  los  
diagramas  y  las  palabras  claves  del  pseudocódigo  (inicio,  fin,  input,  print,  if-­‐else,  while,  do-­‐while,  for).    
 
F.   A   continuación   se   presenta   una   tabla   que   indica   las   equivalencias   existentes   entre   ambos   métodos   de  
representación  de  algoritmos:  
 
 
Símbolo  DDF   Pseudocódigo  
 
inicio,  fin  
 
 
input  variable  
 
 
print  “mensaje  “,  variable  
 
 
if  (  condición  )  {  
cierto  
condición        sentencias  si  condición  es  cierta  
}  
falso   else  {    
       sentencias  si  condición  es  falsa  
}  
falso    
valor  inicial  
for  (  valor  inicial  ;  condición  ;  incremento  )  {  
condición    
cierto        sentencias  si  condición  es  cierta  
incremento    
}  
procesos  
 

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     12  
Construcción  de  Algoritmos  |  2017  
 
flujo  
 
falso   while  (  condición  )  {  
condición  
 
cierto        sentencias  si  condición  es  cierta  
 
procesos  
}  
sigue  el  flujo  
 
 
procesos   do  {  
 
falso  
     sentencias  a  ejecutar  
condición    
cierto  
}  while  (  condición  )  
sigue  el  flujo  
 
 
 
G.   Deben   iniciar   con   el   nombre   del   pseudocódigo,   seguido   del   conjunto   de   instrucciones   o   el   cuerpo   del  
pseudocódigo:  
 
pseudocódigo  nombre  
inicio  
           //  este  símbolo  indica  un  comentario  y  no  se  considera  parte  del  pseudocódigo  
colocamos  el  cuerpo  del  pseudocódigo,    
las  instrucciones  y    
las  operaciones  a  realizar  
fin  
 
 
Ejercicios  con  pseudocódigo  
 
 
pseudocódigo  área  circulo    
   
inicio    
     área  =  0   Elabore  el  pseudocódigo  para  el  algoritmo  visto  en  clase  
     print  "dame  el  radio  "   que  calcula  el  área  de  un  círculo  de  radio  variable.  
     input  radio    
     area  =  3.1416  *  radio  *  radio  
     print  "  el  area  es  ",  area  
fin  
 
 

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     13  
Construcción  de  Algoritmos  |  2017  
 
pseudocódigo  área    rectángulo      
inicio    
     area1  =  0    
     area2  =  0   Elabore   el   pseudocódigo   para   el  
     print  "base  y  la  altura  del  rectángulo  1  "   algoritmo   visto   en   clase   que  
     input  base1,  altura1   determina   cual   de   2   rectángulos  
     print  "base  y  la  altura  del  rectángulo  2  "   tiene  un  área  mayor.  
     input  base2,  altura2    
     area1  =  base1  *  altura1  
     area2  =  base2  *altura2  
     if  (  area1  >  area2  )  
        print  "rectángulo  1  es  mayor"  
     else  
        print  "rectángulo  2  es  mayor"  
fin  
 
 
pseudocódigo  números  pares    
inicio    
     cont  =  0    
     while  (  cont  <=  1000  )   Elabore   el   pseudocódigo   para   el  
     {   algoritmo  visto  en  clase  imprima  los  
        residuo  =  cont  %  2   números  pares  contenidos  entre  1  y  
           if  (  residuo  =  0  )   1000.  Por  ejemplo:  2,  4,  6,...  1000.  
              print  "  el  numero  es  par  ",  cont      
           cont  =  cont  +  1  
     }  
fin  
 
 
pseudocódigo  lista  de  números      
inicio    
     mayor  =  0    
     print  "Cantidad  de  números  a  capturar  "   Elabore   el   pseudocódigo   que  
     input  N   encuentre  en  una  lista  de  N  números  
     cont  =  1   positivos  el  número  mayor.  
     do  {    
        print  "dame  un  numero  "  
           input  numero  
           if  (  numero  >  mayor  )  
              mayor  =  numero  
           cont  =  cont  +  1  
     }  while  (  cont  <=  N  )  
     print  "  el  numero  mayor  fue  ",  mayor  
fin  
 

Dra.  Estela  Lizbeth  Muñoz  Andrade  |  M.I.A  Eduardo  Serna  Pérez  !  MITC  David  Alejandro  Montoya  Murillo     14  

También podría gustarte