Está en la página 1de 19

TIPOS DE

PROGRAMACIÓN

Módulo 2 – Unidad 2

1
UNIDAD 2. TIPOS DE PROGRAMACIÓN ..................................................................................................... 3

2.1 PROGRAMACIÓN ESTRUCTURADA ................................................................................................... 4

2.2 PROGRAMACIÓN POR MÓDULOS .....................................................................................................10

2.3 PROGRAMACIÓN ORIENTADA A OBJETOS .....................................................................................12

Unidad 2. Tipos de programación

Todo programador debe estar en capacidad de analizar la problemática, seleccionar el


lenguaje de programación y elegir el tipo de programación que más se adapte para

2
desarrollar un software de calidad que cumpla con las expectativas del cliente en el menor
tiempo posible. En la siguiente imagen, se puede visualizar el proceso desde la generación
de la necesidad por parte del cliente hasta la entrega del producto final.

Imagen 1. Proceso de solución de un problema


Fuente: Villalobos y Casallas (2007)

Los tipos de programación se dividen en:

• Programación estructurada
• Programación por módulos
• Programación orientada a objetos

3
2.1 Programación estructurada

Este tipo de programación se basa en escribir el código utilizando un esquema


determinado. Los primeros entornos en utilizar este paradigma de programación fueron
lenguaje C, FORTRAN y Pascal, entre otros, y comúnmente se les conoce como lenguajes
procedimentales o por procedimientos. Lo que quiere decir que cada línea de código,
sentencia o instrucción le indica al compilador cual proceso o tarea debe realizar (Ver
Imagen 2).

Imagen 2 Esquema de programación estructurada

Fuente: Elaboración propia.

Joyanes (2008) afirma "cada sentencia o instrucción señala al compilador para que
realice alguna tarea: obtener una entrada, producir una salida, sumar tres números, dividir
por cinco” (p. 55).

En este sentido, Moreno (2014, p.17) afirma la programación estructurada utiliza


subrutinas y tres estructuras básicas como la secuencial, de selección y de iteracción, tiene
como objetivo desarrollar programas con claridad, calidad y minimizando los errores.

Además, se hace empeño en considerar a este tipo de programación procedimental


como muy eficiente para casos pequeños donde el programador crea la lista de
instrucciones que cumplan con la sintaxis del entorno seleccionado, compila el programa,
se ejecuta y se muestra la salida. Joyanes (2008), en este sentido, expresa “Cuando los

2
programas se vuelven más grandes, cosa que lógicamente sucede cuando aumenta la
complejidad del problema a resolver, la lista de instrucciones aumenta
considerablemente, de modo tal que el programador tiene muchas dificultades para
controlar ese gran número de instrucciones “(p.56).

Normalmente, los programadores pueden controlar varios cientos de comandos, pero


cuando es necesario, el programador debe estar en capacidad de dividir el “gran”
problema en paquetes o “pequeños problemas” que algunos lenguajes de programación
se llaman subprogramas o subrutinas.

De esta forma, con la programación estructurada, se subdividen en funciones con


características bien definidas para solucionar un problema específico. Como se puede
observar, este proceso fue evolucionando hasta llegar a conformar grupos más grandes a
los cuales se les llamo “módulos”, los cuales abarcan una mayor cantidad de instrucciones
y tienen un rango de acción más amplio que la funciones. La desventaja de este tipo es
que, para aplicaciones muy grandes, la metodología se vuelve ineficiente y ocasiona
problemas de grandes magnitudes, lo que hace que sea mejor cambiar de tipo de
programación.

Joyanes (2008) manifiesta que existen dos motivos para que la programación
estructurada no sea eficiente en programas de gran magnitud.

1. Las funciones tienen acceso ilimitado a los datos globales.


2. Las características y los datos inconexos, fundamentos del paradigma
procedimental, ofrecen una versión pobre del mundo real. (p.55)

Por ello, para entender lo que se menciona, se analizan algunos términos relacionados:
• Datos locales.

Son aquellos “datos ocultos en el interior de la función y son utilizados, exclusivamente,


por la función. Estos datos locales están estrechamente relacionados con sus funciones y

3
están protegidos de modificaciones por otras funciones” (Joyanes, 2008, p.55). Esto quiere
decir que este tipo de datos solo funcionan en algunos bloques de código del programa y
otras funciones o instrucciones no la pueden modificar (Ver imagen 2).

Imagen 3: Datos locales y globales


Fuente: Joyanes (2008, p.55)

También, es necesario conocer qué son datos globales.

• Datos globales

“Son los datos a los cuales se puede acceder desde cualquier función del programa”
(Joyanes, 2008, p.55). Con lo expuesto, se hace mención a que todas las funciones o
instrucciones pueden modificar o acceder a este tipo de datos sin importar su disposición
dentro del programa. Cuando se utiliza esta metodología en programas grandes, se
dificulta entender la sintaxis del programa por la cantidad de funciones y datos globales
involucrados, lo cual ocasiona problemas de conexión entre ellos y al programador se le
presentan inconvenientes para entender la lógica de programación en caso de realizar
modificaciones o cambios. Por ello, se recomienda aplicar este tipo de programación para
resolver problemas pequeños.

2
Para dar respuesta al segundo problema del paradigma estructurado, Joyanes (2008)
explica que se debe entender que la separación de estas funciones y datos, generalmente,
no van acorde con lo expresado en el mundo físico, es decir en la realidad se
interrelaciona con objetos como, por ejemplo, vehículos o personas; para llevar estos
objetos a la programación, se le deben asignar atributos y comportamientos para que
cumplan una función en el programa. Para entender mejor, analizaremos el siguiente
ejemplo:

• Objeto: Persona.
• Atributos: edad, sexo, dirección, profesión, color de ojos, etc.

Cada uno de estos atributos tiene un valor asignado en el código de la programación.

Joyanes (2008) afirma sobre el comportamiento “es una acción que ejecutan los
objetos del mundo real como respuesta a un determinado estímulo” (p. 55).

Por ejemplo, si se presionan los frenos de una moto, esta se detendrá. En resumen, el
comportamiento será la acción a ejecutar por el objeto y esta acción es la que recibe el
nombre función.

Veamos un ejemplo completo para identificar atributos y comportamiento de un


objeto.

• Objeto: vehículo
• Atributos: marca, serial, color, año.
• Comportamiento: se detiene, acelera, se mantiene con el motor encendido.

Es muy importante tener estos términos claros para poder lograr una programación
estructurada acorde, eficiente, fácil de actualizar y de fácil mantenimiento para programas
a pequeña escala; para programas a mediana escala, se recomiendan otros paradigmas
que se describen a continuación.

Por otro lado, Moreno (2014) afirma que

3
La programación estructurada es un paradigma de programación basado en utilizar
funciones o subrutinas con únicamente tres estructuras de control:
• Secuencial: se compone de un grupo de sentencias que se irán ejecutando una detrás de
otra.
• Selección o condicional: ejecución de una sentencia o conjunto de sentencias, según el valor
de una variable.
• Iteración (ciclo o bucle): son utilizadas cuando una o varias sentencias han de ser ejecutadas
cero, una o más veces. (pág. 27)
En tal sentido, Moreno (2014) también menciona las siguientes ventajas para la
programación estructurada:

• Programas fáciles de entender.


• Se pueden leer de forma secuencial.
• Aumenta el rendimiento de los programadores.
• El seguimiento a fallos se facilita.
• La depuración se hace de manera rápida.
• Se minimizan costos de mantenimiento.
Así mismo, en la programación estructurada se trabaja con un entorno integrado de
desarrollo denominado IDE, “el cual es una herramienta con el cual poder desarrollar y
probar proyectos en un lenguaje determinado” (Moreno, p.66).
Un ejemplo de un entorno IDE con un código estructurado:

2
Imagen 4: Ejemplo de entorno de programación estructurada
Fuente: Mantilla, J. (2014). Ejemplo de un programa en C. [imagen]. Recuperado de:
http://juandiegomantillaaci220-2.blogspot.com/2014/11/ejemplo-de-un-programa-en-c.html

Aunado a lo anterior, los IDE son los siguientes tipos según Moreno (2014):
• Step into: se ejecuta la línea actual y en el caso que sea un procedimiento, método o
función la depuración continúa dentro del mismo.
• Step over: se ejecuta la línea actual y en el caso que sea un procedimiento, método o
función la depuración no continuará dentro del mismo.
• Step return: se siguen ejecutando las líneas del programa hasta que se encuentre un
return y en ese caso parará para seguir depurando. (p.69)

Luego de estudiar la programación estructurada e indicar qué es ideal para programas o


soluciones informáticas de poca envergadura, iremos al siguiente nivel de clasificación: la
programación por módulos.

2.2 Programación por módulos

Joyanes (2008) indica que “La programación modular es uno de los métodos de diseño
más flexible y potente para mejorar la productividad de un programa” (p. 54), físicamente
se puede imaginar cómo tener un gran módulo y dividirlo en partes para lograr minimizar
el esfuerzo en programación; esta división se denomina por submódulos o subprogramas
(ver imagen 4). Se utiliza para soluciones informáticas de mediana amplitud donde es
recomendable dividir la codificación en partes para trabajarlas por separados y luego
unificar para obtener un resultado exitoso en poco tiempo.

3
Imagen 5: Programación modular
Fuente: Joyanes, L. (2008, p.54)

En este tipo de programación, como su nombre lo indica, es por módulos y cada uno de
estos se le asigna una actividad a realizar y de esa manera se codifica. Como pueden ver
en la imagen 4, hay un módulo principal o raíz que se encarga de controlar y gestionar
todas las funciones del programa, se encarga de transportar a cada submódulo para que
ejecuten la actividad asignada y estos a su vez regresan el resultado al módulo principal.

En este paradigma, si un submódulo se plantea muy complejo, se subdivide en otros


submódulos para simplificar la programación. Una de las ventajas es que los resultados
generados se pueden utilizar en cualquier parte del programa y ningún módulo puede
tener acceso entre sí, es decir, se comunican con el programa principal, pero entre ellos
hay independencia. Debido a este tipo de paradigma, varios programadores pueden
trabajar en forma colaborativa en un mismo programa, reduciendo el tiempo de
programación.

Joyanes (2008) hace referencia a lo planteado como sigue: “La descomposición de un


programa en módulos independientes más simples se conoce también como el método de
divide y vencerás” (p. 54). En otras palabras, cada submódulo se codifica de forma
individual, con llamadas a otras funciones y al programa principal.

2
Imagen 6: Ejemplo de entorno de programación por módulos
Fuente: Baulderasec (2014). Programar en C++ con varios módulos. [Imagen]. Recuperado de:
https://baulderasec.wordpress.com/programacion/cc/programar -en-c-con-varios-modulos/

2.3 Programación orientada a objetos

La programación orientada a objetos es el paradigma que se utiliza actualmente por los


programadores de todo el mundo para resolver problemas de gran magnitud y grado de
complejidad.

Este tipo de metodología o paradigma como lo llaman algunos autores se focaliza en


utilizar un lenguaje Orientado a Objeto (POO) que no tiene ese énfasis en los algoritmos
estructurados. A este respecto, Joyanes (2008) expone: “La idea es diseñar formatos de
datos que se correspondan con las características esenciales de un problema. La idea
fundamental es combinar en una única unidad o módulo, tanto los datos como las

3
funciones que operan sobre esos datos” (p. 54). En el caso de POO, los objetos poseen
atributos o también llamados variables de instancia y para leer cada dato se le llama
función miembro del objeto para que se devuelva un valor, en otras palabras: los objetos
son aquellos elementos que se requieren categorizar, los atributos son las características
propias de esos s objeto para volverlos reales y la función es aquel procedimiento que va a
hacer funcionar a los objetos.

Imagen 7. Ejemplo de objeto


Fuente: Orientado a objetos (2015). Programación Orientada a Objetos (POO). [imagen]. Recuperado de:
https://lcorientadoaobjetos.wordpress.com/tag/abstraccion/

En este entorno, los datos no aparecen directamente, se encuentran ocultos y esto


ofrece seguridad porque no puede modificarse accidentalmente, todo se guarda en una
sola entidad. Existen dos términos asociados a la POO, son llamados encapsulamiento de
datos y la ocultación de los datos, estos se refieren a que los datos están protegidos de
cualquier modificación arbitraria que se desea realizar sin autorización de los
programadores de la solución informática.

El paradigma orientado a objetos se estructura como en conjunto de “objetos” que


contiene funciones o métodos y se comunican entre ellos (ver imagen 5).

2
Imagen 7: Programación Orientada a objeto.
Fuente: Joyanes, L. (2008, p.54)

Se puede indicar que la programación orientada a objeto está diseñada para realizar
una programación con una interfaz gráfica que resulta más amigable al programador, le
proporciona una visión inmediata de la salida del producto final (software). Actualmente,
la mayoría de los lenguajes de programación utilizan este paradigma por considerarlo más
eficiente que los anteriores, permitiéndoles manejar gran cantidad de códigos y dividir el
trabajo entre el grupo de programadores sin que existan problemas de conexión.

El autor Joyanes (2008) menciona que este tipo de programación posee las siguientes
propiedades:

• Abstracción (tipos abstractos de datos y clases).


• Encapsulado de datos.
• Ocultación de datos.
• Herencia.
• Polimorfismo (p.57).

3
La abstracción consiste en seleccionar las propiedades más visibles de un objeto, para
poder trasladarlo al entorno. En este sentido, Joyanes (2008) expone que “se refiere al
hecho de diferenciar entre las propiedades externas de una entidad y los detalles de la
composición interna de dicha entidad” (p.58).

Las siguientes propiedades son: encapsulado de datos y ocultación de datos, son


aquellos procesos encargados de agrupar datos y operaciones relacionadas bajo la misma
unidad de programación (Joyanes, 2008, p. 58), se escribe como el proceso donde se
agrupan todos los datos considerados como prioritarios y confidenciales de la solución
informática, por su importancia deben permanecer ocultos y protegidos de los usuarios y
de otros programadores. Es muy importante que el programador conozca los objetos del
sistema informático e identifique las características de los mismos para agrupar en clases
con la debida identificación de datos y relaciones.

Programador

Objetos del
Clases
sistema
agrupar

2
Imagen 8. Encapsulado de Datos.
Fuente: Elaboración propia basada en Joyanes (2008)

En relación con la Herencia, es aquella que permite compartir los datos entre las
entidades de un sistema informática para evitar la duplicidad de datos, es de utilidad
cuando los objetos tienen comportamientos similares. Por lo tanto, Joyanes (2008) afirma
“es la propiedad que permite compartir información entre dos entidades evitando la
redundancia. En el comportamiento de objetos existen, con frecuencia, propiedades que
son comunes en diferentes objetos” (p.61).

Imagen 9. Ejemplo de herencia


Fuente: Covantec (2018). Herencia. [imagen] Recuperado de: https://entrenamiento-
pythonbasico.readthedocs.io/es/latest/leccion9/herencia.html

Como se ve en la imagen 8, se puede graficar como entidad a la persona y esta entidad


puede compartir o heredar sus atributos (sexo, nombre, apellido, cédula, hablar) a otra, en
la imagen 9 puede observar una asignación de atributos y comportamientos.

3
Imagen 10. Ejemplo de diagrama de herencia
Fuente: Covantec (2018). Herencia 2. [Imagen]. Recuperado de: https://entrenamiento-
pythonbasico.readthedocs.io/es/latest/leccion9/herencia.html

Otra característica resaltante de la programación orientada a objeto es el polimorfismo.


Esto significa que posee la capacidad de ser interpretada de forma diferente por el objeto
que hace el llamado, ya está creada, pero actúa distinto dependiendo de la clase que
invoque. Joyanes (2008) hace referencia como sigue:

La propiedad de polimorfismo es aquella en que una operación tiene el mismo


nombre en diferentes clases, pero se ejecuta de diferentes formas en cada clase.
Así, por ejemplo, la operación de abrir se puede dar en diferentes clases: abrir una
puerta, abrir una ventana, abrir un periódico, abrir un archivo, abrir una cuenta
corriente en un banco, abrir un libro, etc. En cada caso, se ejecuta una operación
diferente, aunque tiene el mismo nombre en todos ellos: “abrir”. (p. 63)

2
Imagen 11. Ejemplo de Polimorfismo.
Fuente: Código fuente (2012). Polimorfismo en C. [imagen] Recuperado de:
https://codigofuentenet.wordpress.com/2012/07/17/polimorfismo -en-c/

En la imagen 11 se expresa un ejemplo: la entidad es perro, el cual posee una


operación que es “ladrar”, las entidades que dependen de la raíz ejecutan la operación
“ladrar”, pero de distintas formas.

Se puede concluir que todas estas características se relacionan para lograr que la POO
sea una de las metodologías más utilizadas por los programadores en las tendencias
actuales en los lenguajes de programación.

3
Imagen 12. Ejemplo de entorno Orientado a Objeto
Fuente: Omar García (s. f.) Interfaz gráfica de usuario [imagen] Pinterest. Recuperado de:
https://www.pinterest.com/pin/326581410460471704/

Otro aspecto importante en la programación es la recursividad, según Moreno (2014)


“es una forma de expresar un algoritmo en el que, en la solución del problema, el
algoritmo se hace una llamada a sí mismo” (p. 38). Generalmente, se utiliza la recursividad
para resolver problemas que son recursivos como la factorial, la sucesión de Fibonacci,
entre otras.
Considerando lo anterior, otro punto resaltante es la reutilización de software, y la
programación estructurada acude a este elemento debido a la alta demanda de software y
los precios. Moreno (2014) asevera que en los programas hay partes de los códigos que se
pueden utilizar nuevamente en otros programas, esto ocasiona minimizar los tiempos de
entrega de los mismos. El modularidad en la creación de librerías y estructuras que
también puede colaborar a ahorrar tiempo, recursos y optimizar la programación de
nuevos programas.
En cuanto a la complejidad del software, Moreno (2014) muestra en la imagen 13
como “los proyectos, aunque sean más grandes no van a ser tan complejos y las personas
menos expertas van a poder producir más gracias a la reutilización” (p. 68).

2
Imagen 13 Disminución de la complejidad con la reutilización.
Fuente: Moreno, J. (2014). Programación en lenguajes estructurados. RA-MA Editorial. Recuperado de
https://elibro.net/es/ereader/udelistmo/106445?page=70.

En la programación orientada a objeto se utilizan todos los recursos de la


programación estructurada y por módulos, la POO según Moreno (2014) la interfaz
utilizada de poseer las siguientes características:

• Debe ser clara: la interfaz debe poseer patrones, figura o iconos lógicos que
se asemejen a la actividad a desarrollar.

• Debe ser intuitiva: El usuario debe interpretar de forma rápida las


características que ofrece la interfaz

• El acceso a la base de datos de la interfaz debe ser limita


• Debe ser consistente y configurables, ya que de esto depende la aceptación y
la usabilidad permanente de la interfaz.

También podría gustarte