Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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)?!
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%.!
!
!
!
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!
!
!
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
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
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
Escribir definitiva
Salida!
Fin!
!
!
!
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
Escribir Nota_final
Salida!
Fin!
!
!
!
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
Escribir Nota_final
Fin!
!
!
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
4 Leer Nota1
5 Leer Nota2
6 Leer Nota3
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!
6 <Acción!n>!
Fin
7
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
Escribir Nota_final
Fin!
!
!
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!
…. ….
<Acción!n>! ! <Acción!n>!
Fin_si endif
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! No!
>=!3.0!
Si!
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!
si_no else
<Acción!A2>! ! <Acción!A2>!
Fin_si endif
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
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
Si-no Acción Ax
Fin-según.
!
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!
<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
No! Si!
Nota_final!>=!
3.0!
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!n>! ! <Acción!n>!
Hasta_que <condición> until <condición>
!
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
No! Si!
Nota_final!>=!
3.0!
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.!
!
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
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
!
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
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.!
!
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.!
!
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
!
!
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
!
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!
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).
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++.!