Escolar Documentos
Profissional Documentos
Cultura Documentos
Los lenguajes de programación son un conjunto de reglas, herramientas y condiciones que nos
permiten crear programas o aplicaciones dentro de una computadora. Estos programas son los
que nos permitirán ordenar distintas acciones a la computadora en un “idioma” comprensible por
ella. Como su nombre lo indica, un lenguaje tiene su parte sintáctica y su parte semántica. ¿Qué
quiere decir esto? Que todo lenguaje de programación posee reglas acerca de cómo se deben
escribir las sentencias y de qué forma.
A su vez, los lenguajes de programación se dividen en tres grandes grupos: los lenguajes de
máquina, los de bajo nivel y los de alto nivel. A continuación explicaremos brevemente cada uno
de ellos.
Lenguajes de máquina.
Los lenguajes de máquina son los que entiende una computadora sin la necesidad de realizar
ninguna traducción. Escribirlos resulta extremadamente difícil para un programador convencional.
Hoy en día, nadie programa en este lenguaje, pero como es necesario para que la computadora
entienda lo que tiene que hacer, existen programas que se encargan de transformar el código
comprensible por un programador, en código comprensible por una computadora.
Las instrucciones en este tipo de lenguaje se componen en la unidad de memoria más pequeña
que existe dentro de una computadora, que se llama bit. Cada una de estas unidades puede tener
sólo dos valores posibles: 1 ó 0. Veamos algunos ejemplos de sentencias en este tipo de lenguaje:
Para facilitar la tarea del programador, se han diseñado otros tipos de lenguajes, que son más
comprensibles que el de máquina. Éstos son el de bajo nivel y el de alto nivel.
Los lenguajes de bajo nivel, también llamados ensambladores, son aquellos cuyas sentencias están
formadas por códigos nemotécnicos (abreviaturas de palabras en ingles).
1
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Son lenguajes que, por más complejos que sean, resultan mucho más comprensibles que los
lenguajes de máquina.
Estos lenguajes son, además, dependientes de la arquitectura de cada procesador, ya que cada
procesador ofrece un conjunto de instrucciones distinto para trabajar en este nivel de
programación. Una vez escrito el programa en este lenguaje, se necesita otro llamado programa
ensamblador, para que traduzca las sentencias en instrucciones comprensibles por la máquina.
Los lenguajes de alto nivel son aquellos que poseen sentencias formadas por palabras similares a
las de los lenguajes humanos. Por lo tanto, resulta mucho más sencillo escribir un programa en un
lenguaje de alto nivel para luego traducirlo en código comprensible para una computadora.
2
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Algunos ejemplos de este tipo de lenguaje son: Pascal, Delphi, Cobol, FoxPro, Java y la mayoría de
los lenguajes visuales, como Visual Basic, Visual FoxPro, etc. Además, podemos decir que, dentro
de este conjunto de lenguajes de programación, algunos son de más alto nivel que otros, pero, en
general, todos entran en esta categoría.
En el caso de C, muchos autores opinan que este lenguaje es de nivel medio, o sea, que posee una
escritura sencilla y comprensible por los programadores, pero a la vez ofrece una potente y
variada gama de posibilidades para realizar miles de tareas con una computadora. Se puede hacer
casi lo mismo que con un lenguaje ensamblador. Hasta es posible insertar código assembler
dentro del código de C. En conclusión, C pertenece a un nivel intermedio entre un lenguaje de bajo
nivel y uno de alto nivel.
Tipos de programación.
No sólo existen varios tipos de lenguajes de programación, sino que también podemos encontrar
distintas formas de programar una aplicación. Hay diversos paradigmas que nos permiten
encontrar una solución más adecuada a nuestros problemas. La idea es que el programador los
conozca y sepa seleccionar el adecuado para cada situación particular. Lo que es verdad, es que,
para cada paradigma conviene utilizar ciertos lenguajes de programación, y no cualquiera. Esto se
debe a que la mayoría de los lenguajes fueron creados para ser utilizados en determinados
ambientes de programación.
Nota: La representación orientada a objetos mejora la estructura de los datos y por lo tanto se ha
aplicado a diferentes paradigmas como Redes de Petri, Imperativo Secuencial, Lógica de
Predicados, Funcional, etc. No obstante, la manipulación no queda fundamentalmente afectada y
por lo tanto el paradigma inicial tampoco a pesar de ser re-orientado a objetos.
3
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Actualmente el paradigma de programación más usado debido a múltiples ventajas respecto a sus
anteriores, es la programación orientada a objetos
Algunos lenguajes que se utilizan para este tipo de programación son Basic, Assembler, Fortran y
Cobol, entre otros.
Programación Estructurada.
A finales de los años sesenta surgió una nueva forma de programar que no solamente daba lugar a
programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su
comprensión posterior.
Un famoso Teorema de Dijkstra, demostrado por Edsger Dijkstra en los años sesenta, demuestra
que todo programa puede escribirse utilizando únicamente las tres instrucciones de control
siguientes:
Secuencia
Instrucción condicional.
Iteración, o bucle de instrucciones.
4
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Solamente con estas tres estructuras se puede hacer un programa informático, si bien los
lenguajes de programación, y sus compiladores, tienen un repertorio de estructuras de control
mayor.
Con la programación estructurada, elaborar programas de computadora sigue siendo una labor
que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo podemos
obtener las siguientes ventajas:
1. Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial,
sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de bloques de código
para entender la lógica.
2. La estructura del programa es más clara puesto que las instrucciones están más ligadas o
relacionadas entre sí.
3. Reducción del esfuerzo en las pruebas. El seguimiento de las fallas ("debugging") se facilita
debido a la lógica más visible, por lo que los errores se pueden detectar y corregir más
fácilmente.
4. Reducción de los costos de mantenimiento.
5. Programas más sencillos y más rápidos.
6. Los bloques de código son auto explicativos, lo que apoya a la documentación.
5
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
De esta forma, un objeto contiene toda la información, (los denominados atributos) que permiten
definirlo e identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos
de una misma clase, al poder tener valores bien diferenciados en sus atributos).
A su vez, dispone de mecanismos de interacción (los llamados métodos) que favorecen la
comunicación entre objetos (de una misma clase o de distintas), y en consecuencia, el cambio de
estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en
las que no se separan (ni deben separarse) información (datos) y procesamiento (métodos).
Dada esta propiedad de conjunto de una clase de objetos, que al contar con una serie de atributos
definitorios, requiere de unos métodos para poder tratarlos (lo que hace que ambos conceptos
están íntimamente entrelazados), el programador debe pensar indistintamente en ambos
términos, ya que no debe nunca separar o dar mayor importancia a los atributos en favor de los
métodos, ni viceversa. Hacerlo puede llevar al programador a seguir el hábito erróneo de crear
clases contenedoras de información por un lado y clases con métodos que manejen esa
información por otro (llegando a una programación estructurada camuflada en un lenguaje de
programación orientado a objetos).
Esto difiere de la programación estructurada tradicional, en la que los datos y los procedimientos
están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de
entrada para obtener otros de salida.
Algunas personas también distinguen la POO sin clases, la cual es llamada a veces programación
basada en objetos.
Origen.
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje
diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de
Cómputo Noruego en Oslo.
Según se sabe, la historia es que trabajaban en simulaciones de naves, y fueron confundidos por la
explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a
las otras. La idea que se les ocurrió fue agrupar los diversos tipos de naves en diversas clases de
objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamiento.
6
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (y cuya
primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente
dinámico en el cual los objetos se podrían crear y modificar "en marcha" en lugar de tener un
sistema basado en programas estáticos.
La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas
condujo a menudo a problemas de compatibilidad y a la capacidad de mantenimiento del código.
Los lenguajes orientados a objetos "puros", por otra parte, carecían de las características de las
cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se hicieron
muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero
permitiendo algunas características imperativas de maneras "seguras". El Eiffel de Bertrand Meyer
fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido
esencialmente reemplazado por Java, en gran parte debido a la aparición de Internet, y a la
implementación de la máquina virtual de Java en la mayoría de los navegadores.
7
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Modelo mental anómalo. Nuestra imagen del mundo se apoya en los seres, a los que
asignamos nombres sustantivos, mientras la programación clásica se basa en el
comportamiento, representado usualmente por verbos.
Es difícil modificar y extender los programas, pues suele haber datos compartidos por
varios subprogramas, que introducen interacciones ocultas entre ellos.
Es difícil mantener los programas. Casi todos los sistemas informáticos grandes tienen
errores ocultos, que no surgen a la luz hasta después de muchas horas de funcionamiento.
Es difícil reutilizar los programas. Es prácticamente imposible aprovechar en una
aplicación nueva las subrutinas que se diseñaron para otra.
Es compleja la coordinación y organización entre programadores para la creación de
aplicaciones de media y gran envergadura.
Por ello, a veces recibe el nombre de programación sin CALL, igual que la programación
estructurada se llama también programación sin GOTO.
Sin embargo, no todos los lenguajes orientados a objetos prohíben la instrucción CALL (o su
equivalente), permitiendo realizar programación híbrida, imperativa y orientada a objetos a la vez.
La programación orientada a objetos es una nueva forma de programar que trata de encontrar
una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos
antiguos ya conocidos. Entre ellos destacan los siguientes:
8
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
En comparación con un lenguaje imperativo, una "variable", no es más que un contenedor interno
del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno
del método del objeto.
Action Script 3.
Ada.
C++.
C#.
VB.Net.
Visual FoxPro.
Clarion.
Builder C++.
Delphi.
Harbour.
Eiffel.
Java.
Léxico (en castellano).
9
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Objective-C.
Ocaml.
Oz.
Perl (soporta herencia múltiple).
PHP (en su versión 5).
PowerBuilder.
Python.
Ruby.
Smalltalk.
Magik (SmallWorld).
Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino que son
híbridos que combinan la POO con otros paradigmas.
Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido
creados añadiendo extensiones orientadas a objetos a un lenguaje de programación clásico.
Hoy en día, las computadoras están presentes no sólo en ambientes específicos a los que sólo
unos pocos tienen acceso, sino que también en muchos hogares podemos encontrar una. Esto
hace que, con el paso de los días, más y más personas se interesen por desarrollar aplicaciones
que corran en computadoras con el simple objetivo de solucionar problemas, tanto de negocios
como cotidianos.
La tarea del programador es indicarle a la computadora un conjunto de instrucciones para que ella
solucione su problema. El idioma que el programador utiliza para indicarle todo esto a una
computadora es lo que conocemos como lenguaje de programación.
Para resolver un problema mediante una computadora, se suelen seguir ciertos pasos, que son
parte de una metodología. Los más importantes son listados a continuación:
10
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Los pasos de la metodología son más, pero, para centrarnos en los más importantes, sólo se
explicaran los recién mencionados.
Los datos de entrada son los datos que se ingresarán de alguna forma o mediante algún método
en el programa. Éstos pueden ser desde una lista de alumnos de una facultad, hasta un archivo
binario con información codificada que contiene los saldos de cuentas bancarias.
Los datos de salida son aquellos que resultan de aplicar el algoritmo, y constituyen el objetivo de
todo este proceso. Éstos pueden no ser datos propiamente dichos, sino el resultado de aplicar un
proceso específico a los datos de entrada. Algunos ejemplos, pueden ser: un listado de los clientes
morosos de un club deportivo, el ordenamiento de alguna estructura de datos determinada, u
operaciones matemáticas, como por ejemplo: la obtención del factorial de un determinado
número.
Si analizamos un problema determinado e identificamos que es necesario listar los clientes que
deban más de dos cuotas de su crédito, un proceso que se puede aplicar para resolver dicho
problema es una simple búsqueda en que la condición de filtro sea “que deba más de dos cuotas”.
Entonces, en esta etapa de la metodología se deben analizar los posibles procesos que nos
permitan llegar a la solución del problema. De acuerdo con la complejidad del problema, existirá
uno o más.
11
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Construcción de un algoritmo.
La siguiente etapa de la metodología es el diseño y la construcción del algoritmo que nos permitirá
obtener el resultado deseado. Cuando se analizó el problema, se determinó qué se debía hacer
para llegar a los objetivos buscados, y ahora, en la etapa del diseño del algoritmo, se debe
determinar cómo se llevará a cabo esto.
Una recomendación a esta altura de la metodología es dividir el proceso en tareas más sencillas y
más fáciles de implementar (para más detalles consultar la sección Técnicas de diseño de
programas dentro del presente documento).
Por ejemplo, si queremos imprimir las facturas de los clientes que pagaron el último mes,
podríamos definir dos tareas específicas: la primera es generar las facturas en alguna estructura de
datos acorde con la información requerida, y la segunda es recorrer las estructuras e imprimirlas.
Así, el proceso central, que era obtener las facturas de los clientes, se dividió en dos tareas más
sencillas e independientes entre sí: por un lado, generar las facturas, y por otro, imprimirlas.
Una vez determinadas las tareas o los módulos que componen el algoritmo, lo que debemos hacer
es escribirlo utilizando tanto diagramas de flujo como pseudocódigo. Cualquiera de estas dos
herramientas son válidas para crear algoritmos; se puede usar una u otra, o bien ambas. En la
práctica, solían usarse más los diagramas de flujo, pero últimamente se está utilizando con más
frecuencia el pseudocódigo.
Con la experiencia, esta etapa se suele saltar, y se escribe el algoritmo directamente en algún
lenguaje de programación. Pero lo recomendable en todo momento es no dejar estos diagramas
(o el pseudocódigo) a un lado, porque constituyen una fuente muy importante en la
documentación del sistema que estamos desarrollando.
Pero ¿qué son un diagrama de flujo y un pseudocódigo? Bueno, en los siguientes párrafos
explicaremos un poco mejor cada uno de ellos.
Diagramas de flujo.
Los diagramas de flujo sirven para indicar cómo es el flujo de ejecución de las acciones que debe
realizar el programa, más allá del lenguaje de programación que se utilice. Existen diversas formas
de hacerlos, pero se han fijado algunas pautas generales para este tipo de diagramas. A
continuación, en la Tabla 1 veremos cada una de las figuras que se pueden utilizar en un diagrama
de flujo, y también una breve descripción.
12
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Ahora veamos un pequeño ejemplo de un diagrama de flujo que incrementa un número de uno en
uno hasta llegar a 100, y va mostrando dicho número en cada iteración.
Este ejemplo se muestra en la Figura 1.4.
13
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Los diagramas de flujo suelen estar acompañados de pseudocódigo, pero no siempre es así. Para
empezar a programar es recomendable tenerlos en cuenta, porque son de gran utilidad, ya que
nos fijan muchos conceptos.
Pseudocódigo.
El pseudocódigo es otra forma de diagramar algoritmos o, mejor dicho, especificar las acciones
que debe ejecutar un programa. La forma de hacerlo es mediante un lenguaje muy sencillo y
similar al nuestro. La idea es ir escribiendo con palabras sencillas las acciones que debe seguir el
programa para alcanzar los objetivos. Por ejemplo, escribamos el pseudocódigo del programa que
se muestra en el diagrama de flujo de la Figura 1.4.
14
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Como vemos en el ejemplo anterior, escribir un programa en pseudocódigo es muy sencillo. Esto
se puede hacer antes o después de realizar el diagrama de flujo. Es más, uno se puede basar en el
otro para realizarlo. Con la práctica notará que teniendo uno, el otro sale como si fuese una
traducción.
Una vez escrito el algoritmo, no terminamos nuestra tarea como programadores. Falta probar que
todo funcione bien y, en el caso de que esto no sea así, realizar los ajustes necesarios para el
correcto funcionamiento de nuestro programa.
En esta etapa es donde se profundizan tareas como la depuración, una técnica para encontrar
errores y seguir la ejecución de un programa paso a paso.
15
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Existen en la programación varias metodologías para el diseño de software. Algunas de ellas, como
la de programación monolítica, han demostrado ser contraproducentes para el desarrollo de
software a gran escala y han sido reemplazadas por nuevas propuestas, más versátiles y eficientes.
Otras en cambio siguen vigentes bajo nuevas formas de expresión y filosofías de programación, tal
es el caso de la programación modular y su aplicación en la Programación Orientada a Objetos.
Este era el método de diseño de facto en los primeros días de la programación, cuando no existían
grandes adelantos en la teoría de desarrollo de software, y es la forma como se empieza a
aprender a programar. Consiste en organizar secuencialmente bloques de instrucciones y llamadas
a otros bloques según la lógica de solución del problema, accesando y modificando datos globales
a todo el programa. Aquí, el uso de instrucciones de salto condicionales e incondicionales para
llamar a ejecución a un bloque de instrucciones y su correspondiente retorno al punto de llamada
era la norma. A este estilo de codificación (más bien al código resultante) se le denomina
espaguetti.
16
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Por otro lado, los lenguajes modernos que proveen instrucciones de salto como herramientas
alternativas o por compatibilidad con versiones previas tienen una amplia base de usuarios que
continua creando código espagueti, aun cuando, el lenguaje les ofrece mecanismos para la
programación estructurada. En particular los usuarios del popular Visual Basic, en su mayoría ex
usuarios de COBOL y Clipper, abusan de las instrucciones de salto en sus aplicaciones puesto que
ese fue el modo en que aprendieron a programar, lo que incide directamente en la lectura,
prueba, depuración y mantenimiento del código.
Esta técnica de programación ofrece tremendas desventajas una vez que el programa se hace
suficientemente grande. Por ejemplo, si la misma secuencia de instrucciones se necesita en
diferentes situaciones dentro del programa, la secuencia debe ser repetida. Esto ha conducido a la
idea de extraer estas secuencias, darles un nombre y ofrecer una técnica para llamarlas y regresar
desde estos procedimientos.
Es una de las más importantes técnicas de programación jamás inventada. Es uno de lo métodos
de diseño más flexibles y potentes para mejorar la productividad en la programación.
Se fundamenta en una serie de descomposiciones sucesivas del problema inicial, y está inspirado
en la técnica "Divide y Vencerás" que usaba el conquistador Alejandro Magno para derrotar a sus
enemigos.
Su utilización tiene muchos beneficios, entre los que se encuentran la facilidad en la escritura,
lectura y comprensión de los programas y el permitir ahorrar espacio que de otro modo estaría
ocupado por código duplicado.
17
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
De este modo, un programa puede ser visto como una secuencia de llamadas a procedimientos. El
programa principal es responsable de pasar los datos a las llamadas individuales y actúa como un
director, los datos son procesados por los procedimientos y, una vez que el programa ha
terminado, los datos resultantes son presentados. Así, el flujo de datos puede ser ilustrado como
18
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
una gráfica jerárquica, un árbol, como se muestra en la siguiente Figura para un programa sin
subprocedimientos.
El programa principal coordina las llamadas a procedimientos y pasa los datos apropiados en
forma de parámetros.
Con esta metodología el programa se divide en partes independientes, cada una de las cuales
ejecuta una única actividad o tarea y se codifican independientemente de los demás. Cada una de
ellas se analiza, codifica y ponen a punto por separado. Siguiendo un método ascendente o
descendente de desarrollo se llegará a la descomposición final del problema en módulos en forma
jerárquica. Las descomposiciones resultantes reciben luego el refinamiento progresivo del
repertorio de instrucciones que van a formar parte de cada pieza del programa.
19
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Dado que los procedimientos son independientes, diferentes programadores pueden trabajar
simultáneamente en diferentes partes del mismo programa. Esto reducirá el tiempo de diseño del
algoritmo y posterior codificación. Además un procedimiento se puede modificar radicalmente sin
afectar a los demás, incluso sin alterar su función principal.
Programación Modular.
20
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
El programa principal coordina las llamadas a procedimientos en módulos separados y pasa los
datos apropiados en forma de parámetros.
Cada módulo puede contener sus propios datos. Esto permite que cada módulo maneje un estado
interno que es modificado por las llamadas a procedimientos de ese módulo. Sin embargo,
solamente hay un estado por módulo y cada módulo existe cuando más una vez en todo el
programa.
También conocido como de arriba a abajo consiste en establecer una serie de niveles de mayor a
menor complejidad que den solución al problema. Luego se crea una relación entre las etapas de
la estructuración de forma que una etapa jerárquica y su inmediato inferior se relacionen
mediante una interfaz claramente definida de entradas y salidas de información.
El Top-Down es muy popular por ser metodológico para la enseñanza de la programación, por
favorecer la rápida creación de una estructura de diseño inicial flexible y fácil de comprender y por
ser muy útil en la solución de problemas complejos.
Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema como
una entidad global, éste padece de ciertas limitaciones por haber tomado un enfoque ascendente.
Una de ellas es la duplicación de esfuerzos para accesar el software y más aún al introducir los
datos. Otro es que se introducen al sistema muchos datos carentes de valor. Un tercero y tal vez el
más serio inconveniente del enfoque ascendente, es que los objetivos globales de la organización
21
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
no fueron considerados y en consecuencia no se satisfacen. Sobra decir que esta técnica de diseño
es la menos usada por sus múltiples inconvenientes.
Las siguientes técnicas de diseño pueden conjugarse con las técnicas de diseño modular antes
mencionadas, tanto para el diseño de los módulos como para estructurar la rutina principal del
programa.
Este método es excelente para diseñar programas pequeños, programas complejos o para
utilizarse como complemento a la modularización. Consiste en estructurar el flujo del programa
para el caso de la solución más simple y fácil del problema, sin tomar en cuenta casos especiales,
validaciones ni decisiones que provoquen bifurcaciones. De esta manera se construye un diseño
inicial fácil de comprender y verificar.
Una vez completado este diseño inicial y comprobada su correctitud, se procede a agregar por
pasos las rutas alternas que representan las diferentes condiciones del planteamiento, lo cual
significa añadir flujos de control adicionales y se prueba iterativamente el programa con cada
nueva bifurcación que se añada para asegurar que se mantiene la correctitud. Cuando todas las
condiciones se han integrado al diseño, se proceden a agregar uno a uno los casos especiales que
se espera maneje el programa, probando también cada nueva adición para continuar garantizando
la fiabilidad de la estructura.
Por último se añaden las validaciones a los datos de entrada, las de los datos intermedios
producidos en lo interno para utilizarse en la generación de los datos de salida, y los datos de
salida mismos. Estas validaciones se integran también de manera incremental, procurando no
alterar el estado del diseño alcanzado en las operaciones anteriores. Al final de todo este proceso
se obtendrá un diseño final completo, confiable y seguro. Aunque el método implica tiempo y
esfuerzo adicional, es muy adecuado para principiantes y para la solución de problemas complejos
que requieran un diseño fino y bien organizado.
Enfoque E-P-S.
Este enfoque se fundamenta en el método de diseño Top-Down. Con este enfoque el programa se
divide en 3 módulos bien diferenciados: el de Entrada, el de Procesamiento y el de Salida. De ahí
su nombre. Todos los módulos se desarrollan y prueban de manera independiente, lo que permite
al programador concentrarse en las funciones específicas de cada uno y evitar la carga mental de
pensar en la solución total del problema y la ofuscación en el diseño e implementación del
programa completo.
22
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
En contraste con las anteriores técnicas de programación, ahora tenemos una telaraña de objetos
interactuando, cada uno de los cuáles mantiene su propio estado al interactuar con los demás
mediante mensajes.
La POO resuelve problemas importantes de la programación modular. Entre ellos tenemos los
siguientes:
Ahora los datos no deben crearse y destruirse explícitamente, sino de manera automática.
Los datos y las operaciones no están desacoplados, conduciendo a una estructura
centrada en los datos en lugar de centrada en los procedimientos (o los algoritmos).
Mayor protección y seguridad de los datos y operaciones de los objetos, tanto de accesos
externos como internos.
23
INSTITUTO TECNOLÓGICO SUPERIOR DE LA SIERRA NORTE DE PUEBLA
Ingeniería Informática. Fundamentos de Programación.
Aunque aparentemente la POO parece una técnica más elegante de programación modular, no lo
es. Sus características adicionales particulares a la orientación a objetos hacen de la POO una
técnica novedosa de programación, aplicable a problemas y entornos específicos.
Referencias:
Urbaez Wilder, Metodología para la solución de un problema mediante un ordenador, 2010. [en
línea]: http://www.desarrolloweb.com/articulos/2144.php Consultado: 23 de Julio de 2010.
24