Logo Studenta

Módulo 2- Conceptos básicos de la programación_Copy

¡Este material tiene más páginas!

Vista previa del material en texto

Como su nombre lo indica, los lenguajes de programación son lenguajes
formales necesarios para que un programador pueda construir un software.
Como todo lenguaje, cuentan con una sintaxis bien definida que establece
las reglas, el modo en el cual se deben escribir los algoritmos (que
conformarán el código del sistema) y una semántica que se encarga de
estudiar el significado de lo escrito (lo codificado).
Utilizando un lenguaje de programación, un programador escribe el conjunto
de sentencias que un computador ejecutará. Existen diferentes lenguajes,
cada uno tiene sus ventajas y desventajas de acuerdo con el propósito que
fueron construidos y con el tipo de sistemas que construirán. En este
módulo, veremos sus características con algunos ejemplos. 
Empezaremos con la definición de conceptos básicos.
Código fuente
Lección 2 de 7
Unidad 1: Características de los lenguajes
https://updf.com
Se denomina así al código escrito directamente por el programador en un
lenguaje determinado. Es solo el código dispuesto en un conjunto de
archivos que contienen las instrucciones sobre qué es lo que la máquina
debe hacer, junto con directorios que organizan dichos archivos.
Figura 1: Ejemplo de código fuente (en C++)
Fuente: elaboración propia.
Lenguajes de alto y bajo nivel
https://updf.com
Se denominan “lenguajes de alto nivel” a aquellos que abstraen la
complejidad de la máquina en la que se va a ejecutar el código. 
Por ejemplo, no es lo mismo escribir un programa para Linux que para
Windows, tampoco para computadores con distinto hardware. Los
lenguajes de alto nivel nos permiten abstraernos de eso (es decir, no tenerlo
en cuenta), ya que contienen componentes que traducen el lenguaje de alto
nivel en otro que puede ser entendido y ejecutado por una máquina. En la
mayoría de los casos, un programador interactúa y escribe su código con
este tipo de lenguaje. Entre ellos, encontramos C, C++, Python, Java, C# y
JavaScript.
Figura 2: Código de alto nivel (en C++)
Fuente: elaboración propia.
https://updf.com
Por otro lado, los lenguajes de bajo nivel generalmente son específicos de la
arquitectura de la máquina en la que se ejecuta el código. Prácticamente,
ejercen un control directo sobre el hardware; un ejemplo es el
lenguaje assembler (cuya abreviatura es “asm”), con el que podemos
especificar instrucciones básicas para procesadores o circuitos integrados.
En la mayoría de los casos, no es necesario para un programador codificar
en un lenguaje de bajo nivel, ya que se puede generar compilando el código
escrito en lenguaje de alto nivel.
Figura 3: Código de bajo nivel (assembler)
https://updf.com
https://updf.com
Fuente: Holley, 1980, https://bit.ly/3kdhuI5
Tema 1: Lenguajes compilados y lenguajes interpretados
Una de las principales características de un lenguaje de programación es si
funciona mediante compilación o si es interpretado. Veamos qué significa
esto.
Compilado
Un lenguaje compilado es aquel que se escribe en un lenguaje de alto nivel
y, luego, es traducido a un ejecutable para una plataforma específica (por
ejemplo, Linux, Windows, entre otras) mediante un proceso llamado
“compilación”. La compilación es realizada por un compilador, cuya principal
función es realizar dicha tarea y validar que el código haya sido escrito
correctamente (respetando la sintaxis).
Una vez terminada la compilación, podemos ejecutar el programa
resultante. Mientras no cambiemos el código fuente, no necesitamos
compilarlo de nuevo cada vez que se ejecute.
https://updf.com
La principal ventaja de utilizar un lenguaje compilado es que su velocidad de
ejecución es más rápida que la de los interpretados. Entre los más
utilizados, se encuentran C, C++, Java y Go.
Figura 4: Lenguaje compilado
Fuente: elaboración propia.
Interpretado
Un lenguaje interpretado se considera aquel que es traducido a
instrucciones propias de la plataforma línea por línea mientras es ejecutado.
Esto significa que la traducción y ejecución se hacen en el mismo momento.
En general, se utilizan lenguajes compilados cuando la
eficiencia de ejecución es muy importante.
https://updf.com
A diferencia de los compilados, que necesitan terminar de compilar todo el
código fuente antes de ser ejecutados, estos lenguajes van siendo
traducidos por un intérprete en tiempo real; el código fuente es interpretado
junto a la ejecución.
Por este motivo cada vez que ejecutamos un lenguaje interpretado, incluso
si no cambiamos el código, se interpreta y se traduce nuevamente al
lenguaje de la plataforma. 
La principal ventaja de un lenguaje interpretado es que es muy
independiente de la plataforma, donde es ejecutado y más flexible a la hora
de codificar. El costo de esto es que, al ser interpretados y ejecutados al
mismo tiempo, son más lentos.
Figura 5: Lenguaje interpretado
En general, se utilizan lenguajes interpretados cuando se
necesita que el programa se ejecute en diversas plataformas y
la eficiencia de ejecución no es tan importante.
https://updf.com
Fuente: elaboración propia.
Tabla 1: Compilado versus interpretado
Característica Compilado Interpretado
Velocidad Muy alta Alta
Flexibilidad de
codificación
Alta Muy alta
Capacidad de
ejecutarse en
diferentes
plataformas 
Media Alta 
Ejemplos C, C++, Java y Go Python y JavaScript 
Fuente: elaboración propia.
https://updf.com
Tema 2: Tipado
Podemos definir el tipado de un lenguaje de programación de la forma en la
que los tipos de variables son definidos. Para entender esto, veamos,
primero, a modo introductorio, qué son las variables.
Las variables son simplemente nombres que se asocian a un valor o dato
específico, el cual será utilizado durante la ejecución del código. Dado que
estos datos pueden ser diversos (números, letras, símbolos o textos), se
debe especificar qué tipo de dato se almacenará en las variables. Dicho de
otro modo, las variables serán creadas para almacenar un tipo de dato
determinado.
Teniendo en cuenta los distintos tipos de datos que se pueden almacenar en
variables, podemos desarrollar los diferentes tipados.
No existe una regla general sobre cuándo usar un lenguaje
interpretado y cuándo uno compilado. Según la situación y el
sistema que queramos construir, debemos decidir cuál será el
mejor lenguaje.
https://updf.com
Lenguajes estáticos
Un lenguaje estático es aquel que, una vez que definimos una variable de
un tipo determinado, no permite que cambiemos su tipo. En otras palabras,
si delimitamos una variable de un tipo específico, solamente podemos
asignarles valores de ese tipo y solo de ese tipo. Por ejemplo, si definimos
una variable como un número entero (“int” en C++), no podemos luego
asignarle un texto como valor.
Figura 6: Asignación inválida de valor (distintos tipos de datos) en C++
Fuente: elaboración propia.
Lenguajes dinámicos
A diferencia de los estáticos, en los lenguajes dinámicos, no se especifica
de manera explícita el tipo de dato: los tipos se infieren o deducen mediante
el valor asignado a la variable en tiempo de ejecución. Otra diferencia es
https://updf.com
que una misma variable puede tener diferentes tipos de valores en
diferentes momentos.
Veamos un ejemplo en Python:
Figura 7: Ejemplo en Python
Fuente: elaboración propia.
En este caso, no necesitamos definir el tipo de variable; simplemente, le
asignamos los valores.
Lenguajes débilmente tipados
Todos los lenguajes, tanto los dinámicos como los estáticos, tienen
chequeos de tipos. Por ejemplo, ningún lenguaje puede sumar un número
con una palabra, simplemente porque la suma es entre números y solo
entre números.
https://updf.com
Un lenguaje débilmente tipado realiza esos chequeos en tiempo de
ejecución, es decir, al mismo momento de la ejecución del código. Un
ejemplo es Python.
Lenguajes fuertemente tipados
A diferencia de los débilmente tipados, estos lenguajes no esperan
ejecutarse para realizar el chequeo de datos; por el contrario, lo realizan en
paralelocon la compilación. Un programa fuertemente tipado no llega a
ejecutarse si tiene una operación inválida de tipos. Ejemplos de este tipo de
lenguaje son C++, Java, C# y Go.
Tabla 2: Comparación de estáticos, dinámicos, fuertemente y
débilmente tipados
 Características Lenguajes de ejemplo
Estáticos
La definición de tipo de variables
es fija: una vez realizada, no se
puede asignar otro tipo de datos
como valor.
Java, C++, C# y Go.
Dinámicos Permiten que una variable
deduzca el tipo al momento en
que se le otorga un valor. Esto
Pytho
https://updf.com
permite que a una misma variable
se le asignen distintos tipos de
valores en diferentes momentos.
Fuertement
e tipados
Controlan que el tipeo sea
correcto al momento de la
compilación.
Java, C++, C# y Go
Débilmente
tipados
Controlan que el tipeo sea
correcto al momento de ejecución.
Python
Fuente: elaboración propia.
Algunas características de la tabla anterior no son excluyentes; un lenguaje
puede ser estático y fuertemente tipado, o dinámico y débilmente tipado.
Que sea estático o dinámico depende de la forma en que se establezcan los
tipos de variables; por otro lado, que sea fuerte o débilmente tipado obedece
al modo en que se realiza el chequeo de dichos tipos.
Tema 3: Tipos de paradigmas
Un paradigma es un concepto abstracto. Consiste en la definición de un
modelo o patrón en cualquier disciplina física. Nace de una comunidad
científica que, especializada en un tema particular, decide plantear algún
nuevo concepto abstracto o una forma de pensar y resolver situaciones o
problemas. 
https://updf.com
En programación, el paradigma nos determina cómo va a ser la estructura
del proyecto, de los bloques de código de los programas y de los elementos
que los constituyen. Existen diferentes paradigmas, entre los cuales los más
importantes son el imperativo, el declarativo y el orientado a objetos.
Paradigma imperativo –
El paradigma imperativo se caracteriza por desarrollar software mediante
un conjunto de instrucciones que indican cómo realizar la tarea. Por
ejemplo, una receta de cocina se puede considerar como imperativa, ya
que describe paso a paso cómo debe cocinarse un determinado plato. Un
ejemplo de lenguaje imperativo es C++.
Paradigma declarativo –
En el caso del paradigma declarativo, no definimos el conjunto de pasos o
instrucciones, sino que determinamos directamente el estado final de lo que
deseamos obtener y le dejamos al computador que defina cuál es el mejor
método para hacerlo. Por ejemplo, cuando vamos a un restaurante y
pedimos un plato específico, no indicamos todos los pasos para cocinar
dicho plato; simplemente, mencionamos qué queremos, y es
responsabilidad del cocinero realizarlo de manera correcta.
 
Uno de los lenguajes declarativos más utilizados es SQL, empleado para
manipular bases de datos.
 
Las bases de datos son repositorios para la información que un
programa necesita almacenar. Entre las más importantes, se
https://updf.com
Tabla 3: Comparación de paradigmas
Paradigma Características
Lenguajes de
ejemplo
Imperativo En la codificación, se indica
cómo llegar a un resultado. El
computador obedece las
Java, C++, C#, Go y
Python
encuentran Microsoft SQL, MySQL y MongoDB.
Paradigma orientado a objetos –
El paradigma orientado a objetos establece que podemos modelar y
codificar la solución de un problema identificando los objetos que participan
en el proceso. Un objeto puede definirse como cualquier entidad que sea
capaz de tener algún atributo o característica y de realizar una acción
dentro del sistema. Por ejemplo, si estamos codificando un sistema para
una veterinaria, tendríamos un objeto llamado “animal”, que tiene
características como tipo de animal (perro, gato), raza (gran danés,
siamés). 
 
Por ser similar a la forma en que los seres humanos resuelven los
problemas de manera natural, el paradigma orientado a objetos es uno de
los más utilizados.
https://updf.com
instrucciones que el
programador ha especificado,
incluso si no es la manera
más eficiente.
Declarativo
No se componen de
instrucciones. El programador
simplemente indica el
resultado final al que se
desea llegar. El computador
sabe cuál es la forma óptima
para llegar a ese resultado.
SQL
Orientado a
objetos
Modelan la codificación del
sistema mediante los objetos
que interactúan entre ellos.
Java, C# y Python
Fuente: elaboración propia.
Tema 4: Mulitplataformas
Un lenguaje multiplataforma es aquel que permite la ejecución de un
programa (aplicación o software) sin necesidad de compilarlo cada vez que
cambiamos de plataforma. 
Cuando hablamos de plataforma, nos referimos al sistema base en donde
va a correr nuestro programa. Generalmente, se refiere al sistema operativo
https://updf.com
(como Windows o Linux), pero puede haber casos en que también se
incluyan ciertos aspectos del hardware. Dichos aspectos pueden estar
ligados al tipo de dispositivo, ya que, actualmente, es necesario implementar
aplicaciones tanto en computadores y servidores como en dispositivos
móviles (celulares, tablets, GPS, etc.).
Software multiplataforma
Un software con esta característica puede ser implementado y utilizado en
diferentes tipos de computadores con, incluso, diferentes sistemas
operativos. Construir un sistema multiplataforma obliga a tener en cuenta las
diferentes interfaces de programación de aplicaciones (API, por sus siglas
en inglés) para que este pueda operar de igual modo. Por ejemplo, deberá
poder enviar a imprimir documentos tanto en una computadora con
Windows como en una con Linux.
Sin embargo, no solo es importante considerar los sistemas operativos, sino
también tener en cuenta que las arquitecturas y recursos de las
computadoras o servidores (discos, memorias, etc.) pueden impedir que
ciertas funcionalidades se comporten de igual modo. Lo que funciona en
una máquina puede no hacerlo en otra diferente, aunque ambas tengan el
mismo sistema operativo. En muchos casos, los programadores deben
prever dónde se implementará el sistema para ajustar sus códigos,
configuraciones o seguir ciertos estándares. Algunas tecnologías tienen
https://updf.com
características que abstraen al programador de estas particularidades y
permiten que un mismo compilado sea multiplataforma.
Aplicaciones web multiplataforma
Este tipo de aplicaciones tienen la ventaja de ser ejecutadas en
navegadores que ya deben estar instalados en la computadora del usuario
(Google Chrome, Mozilla Firefox, Opera, Safari, Internet Explorer, etc.), por
lo que son estos mismos los que se encargan de la interacción con el
sistema operativo y la máquina. Para esto, implementan una arquitectura
cliente-servidor, que permite que gran parte de las funcionalidades del
sistema estén en un servidor remoto. De todos modos, algunas
características de ellas pueden funcionar o no en todos los navegadores, lo
que obliga al programador a tener en cuenta estos posibles casos.
Figura 8: Arquitectura web multiplataforma
https://updf.com
Fuente: elaboración propia.
SUBMIT
Un lenguaje de programación no puede ser estático y dinámico a la vez,
pero sí puede ser fuertemente tipado y débilmente tipado a la vez.
Verdadero.
Falso.
https://updf.com
El desarrollo de programas se realiza siguiendo métodos definidos y
estructurados. La ingeniería del software se encarga del estudio de todo el
proceso que envuelve la realización de las aplicaciones informáticas. Dentro
de este proceso, se encuentra la programación.
La programación es una de las etapas más importantes del ciclo de vida de
un proyecto y requiere un método de trabajo. La programación es el
resultado de dicho trabajo. Es el instrumento que permite la ejecución de las
tareas automatizadas de un sistema informático. Las herramientas utilizadas
para programar son los lenguajes de programación, a través de las cuales
se codifican los programas o aplicaciones.
Metodología de la programación
Se entiende como “metodologíade la programación” al conjunto de normas,
métodos y anotaciones que nos indican la forma de programar. Cada
lenguaje de programación sigue una metodología distinta.
Lección 3 de 7
Unidad 2: Conceptos de la programación
https://updf.com
Lenguaje de programación
Es un conjunto de reglas semánticas y sintácticas que los programadores
usan para la codificación de instrucciones de un programa o algoritmo de
programación. Existen varios lenguajes de programación, y cada uno tiene
sus propias características. Según el tipo de software que se necesite
construir, se debe optar por el/los más adecuado/s para el caso.
Entorno de programación o entorno de desarrollo
Surge de la elección del/los lenguaje/s más apropiado/s para la
programación del sistema, más todas las herramientas necesarias con las
cuales él mismo va a interactuar durante todo el proceso de construcción. 
Existen aplicaciones informáticas que facilitan a los programadores el
desarrollo de software, son denominadas “entornos de desarrollo integrado”
(IDE, por sus siglas en inglés). Consisten de un editor de código fuente,
herramientas de construcción automáticas y un depurador de código.
Recursos
https://updf.com
Son un conjunto de componentes hardware que utilizaremos para la
elaboración de un programa (memorias, CPU, disco duro, etc.).
Tema 1: Origen y características
Inicialmente, el proceso de programación se realizaba en lenguajes de
programación más cercanos a la computadora, lenguajes de más bajo nivel
(lenguaje máquina). Los datos están codificados en sistema binario, y no es
necesaria la traducción. Entre las características del lenguaje máquina, cabe
destacar las siguientes:
El lenguaje ensamblador surgió como evolución natural, donde a cada
secuencia de ceros y unos se le asocia un nombre nemotécnico. Estos
nombres necesitan traducción, que se realiza mediante un programa que se
llama como el lenguaje: ensamblador. Aunque fue un gran avance, todavía
Es dependiente de los recursos de la computadora; por lo tanto,
para programar, el programador debe conocer la arquitectura
sobre la que programa.
El programador se encarga de verificar que no existan errores
sintácticos, pues no existe un compilador que los detecta.
El programador trabaja directamente con direcciones de memoria.
https://updf.com
es necesario conocer cómo está constituida y qué recursos tiene la
computadora. 
Más tarde, se fueron asociando nombres a conjuntos de instrucciones que
realizaban una tarea compleja determinada y programaban de manera
independiente la computadora donde se iba a ejecutar el código. Nacen los
lenguajes de alto nivel y se encuentran más cercanos a la forma de pensar
de los humanos que al lenguaje que entiende la máquina.
La programación, de la mano de los lenguajes, fue evolucionando gracias a
cuatro causas o motores que la impulsan. Estas son las siguientes:
Abstracción –
Es el proceso mental por el que el ser humano extrae las características
esenciales de algo e ignora los detalles superfluos. Es esencial para
modelar el mundo real. En un principio, se hacían programas pensando
como una computadora. En la actualidad, se solucionan los problemas sin
conocer la máquina donde va a ser ejecutado el programa.
Encapsulación –
Es el proceso por el que se ocultan los detalles de las características de
una abstracción. En programación, es esencial para reutilizar un código. Si
https://updf.com
Características de la programación
se ocultan los detalles de cómo está hecho un programa, pero se conoce el
modo de funcionamiento, se puede utilizar en cualquier otro programa.
Modularidad –
Es el proceso de descomposición de un sistema en un conjunto de
elementos poco acoplados (independientes) y cohesivos (con significado
propio). Es esencial para abordar la resolución de problemas extensos o
complicados de un modo más simple y organizado.
Jerarquía –
Es el proceso de estructuración por el que se organiza un conjunto de
elementos en distintos niveles, atendiendo a determinados criterios
(responsabilidad, composición, etc.).
A medida que se fueron añadiendo nuevas características al
proceso y a las herramientas, fueron surgiendo múltiples estilos de
programación.
https://updf.com
Es importante tener algunas consideraciones para que la programación sea
de buena calidad y los resultados sean o se acerquen lo más posible a los
esperados. Para esto, se pueden enunciar las siguientes características que
se deben tener en cuenta durante la programación de aplicaciones:
Eficacia: el programa ejecuta correctamente las tareas definidas
por su especificación y satisface los objetivos de los usuarios. Un
programa exacto regresa el resultado correcto del cálculo que
hace o lleva a cabo la tarea requerida de la forma esperada.
Eficiencia: el programa hace un uso adecuado y no malgasta los
recursos de la computadora, como la memoria y el tiempo de
procesamiento. Un programa eficiente completará la tarea con
mayor rapidez con respecto a otro programa que no lo es.
Integridad o completitud: un programa es completo solo si
ejecuta todas las operaciones que se codifican en los algoritmos al
procesar un conjunto de datos.
Documentación: consiste en el uso de documentos o
herramientas auxiliares que expliquen cómo ocurre el
procesamiento de los datos en un programa. Facilita el diseño y el
entendimiento del programa.
Usabilidad: el programa es fácil de usar si las personas a las que
está destinado pueden usarlo para realizar sus tareas de forma
https://updf.com
Tema 2: Conceptos fundamentales
La generación de un programa o un software necesita una metodología
como modelo para lograr realizar los algoritmos y resolver el problema. Esta
metodología llamada “ciclo de desarrollo del software” consta de una serie
de pasos lógicos secuenciales denominados “fases” y que son los
siguientes:
cómoda y sin esfuerzos innecesarios.
Mantenibilidad: el código fuente del programa permite localizar y
corregir defectos rápidamente, así como también permite hacer
cambios que resultan más fáciles para adaptarlo a las
necesidades cambiantes de los usuarios.
Fiabilidad: un programa es fiable si realiza sus tareas cuando es
necesario y con la precisión requerida.
Definición del problema1
Análisis del problema2
Diseño de la solución3
Codificación4
https://updf.com
Es importante conocer cada una de estas fases, ya que están íntegramente
relacionadas. El resultado que producen sirve de entrada para el comienzo
de la siguiente. Si bien la codificación es la fase que se encuentra
naturalmente ligada con el programador, seguramente deba, además,
realizar actividades de las demás. Cada rol involucrado en este proceso
debe conocer e interactuar con cada una de las etapas.
Definición del problema
Conocer el problema es la primera consideración. Saber quién será el
usuario final también es importante. La determinación de las entradas y
salidas consiste en establecer la siguiente: cómo funcionará el programa y
qué datos se necesitan para que esto suceda. Después de que esto se haya
decidido, la factibilidad será la siguiente consideración. Finalmente, si el
proyecto está listo, se deben tomar medidas para garantizar que el proyecto
esté debidamente documentado y analizado.
Prueba y depuración5
Documentación6
Implementación7
Mantenimiento8
https://updf.com
Análisis del problema
Es la comprensión completa del problema con sus detalles. Es un requisito
para lograr una solución eficaz.
Diseño de la solución
Es momento de comenzar a diseñar y modelar los algoritmos. Una
computadora no tiene la capacidad para solucionar más que cuanto se le
indica en los algoritmos. Estos algoritmos indican las instrucciones para que
la máquina ejecute. La información proporcionada al algoritmo constituye su
entrada, y la información producida por el algoritmo constituye su salida.
Los problemas complejos se pueden resolver más eficazmente cuando se
dividen en subproblemas más fáciles de solucionar queel original. A la
descomposición del problema original en subproblemas más simples le
sigue la división de estos subproblemas en otros más simples aún. Estas
divisiones se realizan hasta que los subproblemas resultantes sean lo más
pequeños posibles y permitan realizar sus respectivos diseños.
Dos formas comunes de diseñar la solución a un problema son dibujar un
diagrama de flujo y escribir un pseudocódigo, o posiblemente ambas.
https://updf.com
Codificación
Este paso consiste en empezar a escribir el código del programa, es decir,
expresar la solución en un lenguaje de programación, traducir la lógica del
resultado de la fase anterior a un lenguaje de programación. Como ya
hemos señalado, un lenguaje de programación es un conjunto de reglas que
proporciona una forma de instruir a la computadora qué operaciones
realizar. 
Prueba y depuración
Algunos expertos insisten en que un programa bien diseñado se puede
escribir correctamente la primera vez. De hecho, afirman que hay formas
matemáticas de demostrar que un programa es correcto. Sin embargo, las
imperfecciones del mundo existen, por lo que la mayoría de los
programadores se acostumbran a la idea de que sus programas recién
escritos probablemente tengan algunos errores. Esto es un poco
desalentador al principio, ya que los programadores tienden a ser personas
precisas, cuidadosas y orientadas a los detalles, personas que se
enorgullecen de su trabajo. Aun así, hay muchas oportunidades para
introducir errores en los programas. Por esta razón los programas deben
probarse en un ambiente controlado, dedicado a tal fin.
https://updf.com
La depuración es un término usado ampliamente en programación: significa
detectar, localizar y corregir errores, generalmente, ejecutando el programa.
En esta fase, se ejecuta el programa, manual o automáticamente, utilizando
los datos de prueba diseñados previamente (casos de prueba). Se deben
planificar los datos y casos de la prueba cuidadosamente para asegurarse
de que se chequea cada parte del programa.
Documentación
Documentar es un proceso continuo y necesario. Sin embargo, como les
pasa a muchos programadores, podés sentirte ansioso por realizar
actividades más emocionantes centradas en la computadora. La
documentación es una descripción detallada por escrito del ciclo de
programación y hechos específicos sobre el programa. Los materiales
típicos de documentación del programa incluyen el origen y la naturaleza del
problema, una breve descripción narrativa del programa, herramientas
lógicas como diagramas de flujo y pseudocódigos, descripciones de
registros de datos, listas de programas y resultados de pruebas. Los
comentarios en el programa en sí también se consideran una parte esencial
de la documentación. Muchos programadores documentan mientras
codifican. En un sentido más amplio, la documentación del programa puede
ser parte de la documentación de un sistema completo.
El programador inteligente continúa documentando el programa a lo largo
de su diseño, desarrollo y prueba. Se necesita documentación para
https://updf.com
complementar la memoria humana y para ayudar a organizar la planificación
del programa. Además, la documentación es importante para comunicarse
con otras personas interesadas en el programa, especialmente, otros
programadores que pueden ser parte de un equipo de programación.
Implementación
El programa ya probado, revisado y mejorado se considera terminado y
puede utilizarse con un alto grado de confianza para resolver los problemas
que dieron origen a su creación. Si se está automatizando alguna tarea
manual, esta última se desecha para emplear solamente el programa.
Mantenimiento
Es la fase de mayor duración, siempre y cuando el programa funcione bien.
Este debe ser revisado cada cierto tiempo para realizar ajustes si es
necesario.
Figura 9: Fases de un proyecto de software
https://updf.com
Fuente: elaboración propia.
Tema 3: Diagrama de flujos y pseudocódigo
Representar algoritmos o procesos puede ser algo difícil. No siempre se
pueden encontrar las palabras adecuadas para describirlo, y, en muchos
casos, serían muy difíciles de entender o muy largos para leer si solamente
se utilizan palabras o textos. Por ese motivo se creó un lenguaje de
https://updf.com
símbolos, para poder representar gráficamente los procesos mediante
diagramas. 
Otra forma de comunicar los procesos o algoritmos es mediante un
pseudocódigo, que puede definirse como un conjunto de sentencias que no
corresponden a ningún lenguaje de programación específico, pero que
denotan la lógica que dicho algoritmo debe seguir. 
A continuación, se verán los dos casos: la representación por diagrama de
flujo y por pseudocódigo.
Diagrama de flujo (o flujograma)
Construir un algoritmo consiste en detallar un conjunto de sentencias y el
orden en que estas se ejecutarán. Estas sentencias que conforman
algoritmos son las que controlan el flujo de ejecución del programa que
conforman. En un programa, es necesario tomar decisiones sobre la base
de ciertos hechos y actuar en consecuencia.
Un diagrama de flujo expresa, de manera gráfica, los pasos que seguir y las
decisiones que tomar de un algoritmo o proceso específico. Por ejemplo, en
el caso de un proceso que indica que, si un número es mayor que 5, se lo
debe imprimir en la pantalla y que, de lo contrario, se debe descartar el
número.
https://updf.com
Figura 10: Ejemplo de diagrama de flujo
Fuente: elaboración propia.
Los diagramas de flujo utilizan símbolos con significados definidos que
modelan los pasos del algoritmo y representan el flujo de ejecución
mediante flechas que conectan los puntos de inicio y de fin del proceso. Se
verá cada uno de estos símbolos en detalle.
Flechas
Las flechas indican la dirección por la cual avanza el flujo. Van a conectar al
resto de los símbolos del diagrama.
https://updf.com
Círculos u óvalos
Los círculos especifican el inicio o el final del diagrama de flujo. Pueden
simplemente indicar cuándo comienza o termina, pero también pueden ser
usados para representar el evento que inicia el algoritmo y todas las
posibles acciones finales. Siempre se tendrá un solo elemento de inicio,
pero se puede tener uno o más elementos finales.
Figura 11: Ejemplo de círculos u óvalos
https://updf.com
Fuente: elaboración propia.
Rombos
Los rombos indican una pregunta, la cual puede tener como respuesta “Sí” o
“No”, o “Verdadero” o “Falso”. Un rombo siempre tiene un camino para cada
respuesta. Se utiliza cuando se debe tomar una decisión.
Figura 12: Ejemplo de rombo
Fuente: elaboración propia.
Rectángulos
Los rectángulos especifican una actividad o un conjunto de actividades.
Puede, también, verse como una acción que se lleva a cabo. Debe indicar
un verbo o frase verbal.
https://updf.com
Figura 13: Ejemplo de una acción
Fuente: elaboración propia.
Los diagramas de flujo pueden ser muy simples, como los vistos ahora, o
muy complejos y largos. Todo depende del problema que se esté intentando
resolver.
Figura 14: Diagrama de flujo de pasos que seguir cuando una lámpara
no funciona
https://updf.com
Fuente: [imagen sin título sobre diagrama de flujo de pasos a seguir cuando una lámpara no
funciona], 2017, https://bit.ly/2ZImGKE 
Una ampolleta es lo mismo que una bombilla.
Figura 15: Diagrama de flujo de un sistema de inventario
https://updf.com
https://updf.com
Fuente: elaboración propia. 
En la figura anterior se puede ver que el flujo tiene un inicio, dos posibles
finales y diferentes flujos que pueden darse según las respuestas a las
preguntas de los rombos.
Pseudocódigo
Otra forma muy útil de representar los procesos o algoritmos es mediante un
pseudocódigo. Este se define como una representación en lenguaje natural
con el objetivo de ser más explicativo y fácil de leer que el código de los
lenguajes de programación.
Los pseudocódigos no se compilan ni interpretan por ninguna computadora;
su propósito es, simplemente,representar un algoritmo o un proceso
mediante una sintaxis similar a la presente en los lenguajes de
programación. De este modo, se logra una abstracción respecto del
lenguaje que se utilice para la programación del algoritmo final.
Figura 16: Pseudocódigo del diagrama de flujo de la figura 17
https://updf.com
Fuente: elaboración propia.
Como puede observarse, el pseudocódigo es muy fácil de leer y no se
necesitan conocimientos de programación en un lenguaje determinado para
entenderlo. Para apreciar la diferencia con el código de un lenguaje de
programación, se verá cómo sería esto en C++:
Figura 17: Código para una lámpara que no funciona (C++)
https://updf.com
Fuente: elaboración propia.
El código se diferencia del pseudocódigo en que, para leer el primero, se
necesita tener cierto grado de experiencia y conocimiento del lenguaje,
mientras que, para leer el pseudocódigo, no.
Los pseudocódigos pueden tener diferentes estilos y parecerse a ciertos
lenguajes. Si bien mantienen su característica principal de estar expresados
en lenguaje natural, pueden acercarse un poco a lenguajes en los cuales,
seguramente, sean codificados. Veremos unos ejemplos comparativos de
pseudocódigos con el estilo de tres lenguajes tradicionales: Fortran, Pascal
https://updf.com
y C (predecesor de C++). En el siguiente caso, para el juego matemático
bizz buzz, las reglas son las siguientes:
Figura 18: Pseudocódigo estilo Fortran
Si un número es divisible por 3, se debe escribir “bizz”;
Si un número es divisible por 5, escribir “buzz”;
Si el número no es divisible por 2 o por 5, se debe imprimir el
número.
https://updf.com
Fuente: [imagen sin título sobre pseudocódigo estilo fortran], 2017, https://bit.ly/2NzEOnp
Figura 19: Pseudocódigo estilo Pascal
Fuente: [imagen sin título sobre pseudocódigo estilo Pascal], 2017, https://bit.ly/2NzEOnp
Figura 20: Pseudocódigo estilo C
https://updf.com
Fuente: [imagen sin título sobre pseudocódigo estilo C], 2017, https://bit.ly/2NzEOnp
El pseudocódigo es una herramienta muy útil no solo para enseñar, sino
también para compartir un algoritmo y hacerlo más fácil de entender. En
conjunto con los diagramas de flujo, ayuda mucho a la comunicación de
cómo debe ejecutarse la lógica de determinados procesos.
Como resumen, algunas de las ventajas de los diagramas de flujo y
pseudocódigos son las que nombramos a continuación:
Brindan una representación natural, visual y gráfica. 
https://updf.com
Tema 4: Uso de variables y tipos de datos
Las variables son un elemento fundamental de la programación, dado que,
más allá de lo que haga el sistema que estamos construyendo, siempre
vamos a necesitar almacenar información en la memoria del computador.
Por ese motivo a esas porciones de memoria que contienen los datos se les
asignan nombres simbólicos (identificadores), y así conforman lo que un
programador maneja como variables dentro de su código.
El algoritmo o proceso se entiende más fácilmente que leyendo un
texto. 
Ayudan a mejorar el algoritmo o proceso antes de desarrollarlo. 
Facilitan el diseño de nuevos procesos o algoritmos.
Casi todos los datos que se manejan en nuestro programa se
almacenan en variables. 
Se debe concebir “variable” como un contenedor de
información.
https://updf.com
Tomemos como ejemplo una definición de una variable de tipo cadena de
caracteres (string) en C++:
Figura 21: Variable de tipo texto en C++
Fuente: elaboración propia.
Veamos la misma variable declarada en Python:
Figura 22: Variable en Python
Fuente: elaboración propia.
Las variables siempre tienen un tipo de dato asociado, que establece cómo
el lenguaje tiene que tratar el dato contenido dentro de esa variable; por
ejemplo, no es lo mismo manipular un número que una palabra.
https://updf.com
Tipos de datos
Existen diferentes tipos de datos, los principales son los siguientes:
Integers: este tipo de datos se utilizan cuando queremos
almacenar un número sin decimales (un número entero). Por
ejemplo, es lo que usamos si queremos calcular la suma de 100 +
300.
Float: el tipo float permite la manipulación de números con
decimales. El número 12,25 sería de tipo float.
Double: las variables de este tipo, al igual que las del tipo float,
permiten manipular números con decimales. La principal diferencia
es la precisión. Si necesitamos manipular números con muchos
decimales, entonces debemos utilizar este tipo de datos.
Character: representa un único carácter, que puede ser un
número, una letra o un símbolo.
String: representa cadenas de caracteres. Es utilizado cada vez
que necesitamos manipular o almacenar cadenas con letras,
números y símbolos. Un texto, por ejemplo, se debe almacenar
con este tipo de dato.
https://updf.com
Figura 23: Tipos de datos en C++
Fuente: elaboración propia.
Según el tipo de dato, las variables serán manejadas y procesadas dentro
del programa de diferentes modos. Con variables numéricas, se podrán
realizar, por ejemplo, conteos y operaciones matemáticas; sobre strings, se
podrán realizar concatenaciones o divisiones en cadenas más pequeñas,
etcétera. 
Constantes
Boolean: puede tomar solamente los valores “true” (verdadero) o
“false” (falso).
https://updf.com
Algunos datos necesarios tendrán información almacenada que no cambiará
a lo largo del programa. En estos casos, es conveniente declarar ese dato
como una constante en lugar de una variable. 
Una constante es un valor que no puede ser alterado o modificado durante
la ejecución de un programa, únicamente puede ser leído.
Figura 24: Constantes en C++
Fuente: elaboración propia.
Se está construyendo un sistema de atención de clientes por orden de
llegada. Cuando se saca un turno, el sistema debe seleccionar cuál de las
dos mesas debe atender al solicitante. Para esto, debe derivar al cliente a
la mesa que tenga menos solicitantes en cola de espera. Conociendo el
tamaño de dichas colas de espera, se debe programar un algoritmo que
compare dos números y que retorne el menor. Se debe tener en cuenta
https://updf.com
Características de los lenguajes
Los lenguajes de programación son un conjunto de palabras con una sintaxis particular que nos permiten
indicarle a un computador qué es lo que debe hacer.
Existen diferentes lenguajes, cada uno tiene sus ventajas y desventajas según el propósito con el que
fueron construidos.
Código fuente:
Se denomina así al código escrito directamente por el programador en un lenguaje de programación
determinado.
Lenguaje de alto nivel:
Son aquellos que abstraen la complejidad de la máquina en la que se va a ejecutar el código.
Lenguaje de bajo nivel:
Son lenguajes específicos de la arquitectura de la máquina en la que se ejecuta el código.
Prácticamente, ejercen un control directo sobre el hardware.
Compilado e interpretado:
Lección 5 de 7
Glosario
https://updf.com
Una de las principales características de un lenguaje de programación es que puede funcionar mediante
compilación o ser interpretado.
Tipado:
Podemos definir tipado de un lenguaje de programación de la forma en la que los tipos de variables son
definidos.
Las variables son simplemente nombres que se asocian a un valor o dato específico. Las variables
siempre tienen un tipo de datos.
Tipos de paradigmas:
Los paradigmas son un conjunto de reglas que permiten que la codificación sea más simple, ordenada y
reutilizable. Existen diferentes paradigmas, entre los cuales, los más importantes son el imperativo, el
declarativo y el orientado a objetos.
Multiplataforma:
Un lenguaje multiplataforma es aquel que permite la ejecución de un programa sin necesidad de
compilarlo cada vez que cambiamos de plataforma.
Programación:
Es una de las etapas más importantes del ciclo de vida de un proyecto de software y requiere un método
de trabajo. La programación es el resultado de dicho trabajo. Es el instrumento que permite la ejecución
de las tareas automatizadas de un sistema informático.
Un lenguaje compilado esaquel que se escribe en un lenguaje de alto nivel y, luego, es
traducido a un ejecutable para una plataforma específica (por ejemplo, Linux, Windows,
etc.) mediante un proceso llamado “compilación”.
Se considera un lenguaje interpretado aquel que es traducido a instrucciones propias de la
plataforma línea por línea mientras es ejecutado. Esto significa que la traducción y
ejecución se hacen en el mismo momento.
https://updf.com
Metodología de la programación:
Es el conjunto de normas, métodos y anotaciones que nos indican la forma de programar.
Lenguaje de programación:
Es un conjunto de reglas semánticas y sintácticas que los programadores usan para la codificación de
instrucciones de un programa o algoritmo de programación.
Características de la programación:
Figura 25: Fases de un proyecto software
Eficacia.
Eficiencia.
Integridad o completitud.
Documentación.
Usabilidad.
Mantenibilidad.
Fiabilidad.
https://updf.com
Fuente: elaboración propia.
Diagrama de flujo:
Un diagrama de flujo expresa, de manera gráfica, los pasos que seguir y las decisiones que tomar de un
algoritmo o proceso específico.
Elementos de un diagrama de flujo:
Pseudocódigos:
Son representaciones en lenguaje natural de procesos o algoritmos con el objetivo de ser más
explicativos y fáciles de leer que el código de los lenguajes de programación.
Flechas.
Círculos u óvalos.
Rombo.
Rectángulos.
https://updf.com

Continuar navegando