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! dquien! resolverá! el! problemad! 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! d! previamente!
analizado!en!una!secuencia!lógica!y!algorítmica!(como!un!pseudocódigo!o!diagrama!de!
flujo)d!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!NassidSchneiderman!(NdS)!
!
• 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!NassiLSchneiderman!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!do!de!decisiónd!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!d!then)!
• Dobles!(Si!–!entonces!–!si_no!/!if!–!then!d!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! ifLthen),! 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! –! entoncesLsi_no! ó! ifLthenLelse)! 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! desdedpara! (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!siLentonces!y!siLentoncesLsi_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!sidentonces!
puede! contener! otra! estructura! sidentonces! y! esta! estructura! sidentonces! 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! (siL
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.d!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++! (DevdC++).! 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! menordque<! y! mayordque! >),! 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