Está en la página 1de 70

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

A continuación, desarrollaremos las características de los lenguajes y varios


conceptos propios de la programación: cuáles son las características de los
lenguajes, cómo se desarrolla el compilado e interpretado, a qué nos referimos
cuando hablamos de “estático”, “dinámico”, “fuerte”, “débil” en el tipado.

Aprenderemos acerca de los paradigmas imperativo, declarativo y orientado a


objetos.

En la segunda parte, profundizaremos conceptos de la programación en general.


Conoceremos su origen, sus características, sus conceptos fundamentales.
Estudiaremos dos modos de simplificar la representación de algoritmos.

Finalmente, profundizaremos sobre qué son las variables y los tipos de datos que
estas podrán almacenar.

Video de inmersión

Unidad 1: Características de los lenguajes

Unidad 2: Conceptos de la programación


Video de habilidades

Glosario

Referencias

Descargá la lectura
Lección 1 de 7

Video de inmersión

Verify to continue
We detected a high number of errors from your
connection. To continue, please confirm that
you’re a human (and not a spambot).

I'm not a robot


reCAPTCHA
Privacy - Terms

C O NT I NU A R
Lección 2 de 7

Unidad 1: Características de los lenguajes

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
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


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.


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)


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.
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.

En general, se utilizan lenguajes compilados cuando la


eficiencia de ejecución es muy importante.

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.
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.

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.

Figura 5: Lenguaje interpretado


Fuente: elaboración propia.

Tabla 1: Compilado versus interpretado

Característica Compilado Interpretado

Velocidad Muy alta Alta

Flexibilidad de
Alta Muy alta
codificación

Capacidad de
ejecutarse en
Media Alta
diferentes
plataformas

Ejemplos C, C++, Java y Go Python y JavaScript

Fuente: elaboración propia.


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.

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.
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
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.
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
paralelo con 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

La definición de tipo de variables


es fija: una vez realizada, no se
Estáticos Java, C++, C# y Go.
puede asignar otro tipo de datos
como valor.

Dinámicos Permiten que una variable Pytho


deduzca el tipo al momento en
que se le otorga un valor. Esto
permite que a una misma variable
se le asignen distintos tipos de
valores en diferentes momentos.

Controlan que el tipeo sea


Fuertement
correcto al momento de la Java, C++, C# y Go
e tipados
compilación.

Débilmente Controlan que el tipeo sea


Python
tipados correcto al momento de ejecución.
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.
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
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.

Tabla 3: Comparación de paradigmas

Lenguajes de
Paradigma Características
ejemplo

Imperativo En la codificación, se indica Java, C++, C#, Go y


cómo llegar a un resultado. El Python
computador obedece las
instrucciones que el
programador ha especificado,
incluso si no es la manera
más eficiente.

No se componen de
instrucciones. El programador
simplemente indica el
Declarativo resultado final al que se SQL
desea llegar. El computador
sabe cuál es la forma óptima
para llegar a ese resultado.

Modelan la codificación del


Orientado a
sistema mediante los objetos Java, C# y Python
objetos
que interactúan entre ellos.

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
(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
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


Fuente: elaboración propia.

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.

SUBMIT
Un código compilado se genera a partir de un código fuente.

Verdadero.

Falso.

SUBMIT

C O NT I NU A R
Lección 3 de 7

Unidad 2: Conceptos de la programación

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ía de 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.
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
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:

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.

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 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
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.

Características de la programación
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
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.

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:

1 Definición del problema

2 Análisis del problema

3 Diseño de la solución

4 Codificación
5 Prueba y depuración

6 Documentación

7 Implementación

8 Mantenimiento

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.
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 que el 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.
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.
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
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


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
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.
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.
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


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.
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
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


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


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++)


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
y C (predecesor de C++). En el siguiente caso, para el juego matemático
bizz buzz, las reglas son las siguientes:

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.

Figura 18: Pseudocódigo estilo Fortran


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


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.


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.

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.

Casi todos los datos que se manejan en nuestro programa se


almacenan en variables.

Se debe concebir “variable” como un contenedor de


información.
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.
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.
Boolean: puede tomar solamente los valores “true” (verdadero) o
“false” (falso).

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
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
que, si son iguales, debe informarlo para que quien ejecute el algoritmo
decida a qué mesa deriva al cliente.

Se pide seleccionar el pseudocódigo correcto de dicho algoritmo de


comparación de dos números (n1 y n2) y que este informe cuál es el menor
o que son iguales en caso de que lo sean. Seleccioná la opción correcta.

INICIO Algoritmo Comparación


Leer n1
Leer n2
Si n1 es menor que n2
Informar “n1 es menor”
FIN Algoritmo Comparación
Si n2 es menor que n1
Informar “n2 es menor”
FIN Algoritmo Comparación
Informar “son iguales”
FIN Algoritmo Comparación
FIN

INICIO Algoritmo Comparación


Leer n1
Leer n2
Si n1 es menor que n2
Informar “n1 es menor”
FIN Algoritmo Comparación
Si n2 es menor que n1
Informar “n2 es menor”
FIN Algoritmo Comparación
FIN

INICIO Algoritmo Comparación


Leer n1
Leer n2
Si n1 es mayor que n2
Informar “n1 es mayor”
FIN Algoritmo Comparación
Si n2 es mayor que n1
Informar “n2 es mayor”
FIN Algoritmo Comparación
Informar “son iguales”
FIN Algoritmo Comparación
FIN

SUBMIT

Observá el siguiente diagrama de flujo para el ejercicio anterior y


seleccióna la opción correcta:
El diagrama está correctamente diseñado.

El rombo “n1 = n2” no es necesario.

El rombo “n1 = n2” no es necesario.

Ninguna de las anteriores es correcta.

SUBMIT

Para los siguientes datos, establecé el tipo de dato asociado para la


declaración de la variable que la represente (drag and drop):

Año de inicio del cursado Integer

Temperatura promedio
Float
anual

Mensaje: “Usuario y
String
contraseña incorrecta”
Símbolo: “+” Character

Si un usuario es válido o no Boolean

SUBMIT

C O NT I NU A R
Lección 4 de 7

Video de habilidades

Verify to continue
We detected a high number of errors from your
connection. To continue, please confirm that
you’re a human (and not a spambot).

I'm not a robot


reCAPTCHA
Privacy - Terms

1. En un diagrama de flujo, si un conjunto de sentencias del algoritmo no


está relacionado con el resto se puede representar sin flechas.

Verdadero

Falso
SUBMIT

2. Un diagrama de flujo siempre debe comenzar y finalizar con un óvalo (o


círculo).

Verdadero

Falso

SUBMIT

3. El símbolo del rectángulo puede representar la finalización de un


algoritmo.

Verdadero
Falso

SUBMIT

4. En el ejemplo del pseudocódigo del video, ¿cuál es una expresión


lógica?

“informarRechazo”.

“velocidadActual = velocidadMáxima”.

“velocidadActual = velocidadActual + 10”.

“leerVelocidadActual”.

SUBMIT
5. Ante la necesidad de diseñar el diagrama de flujo y el pseudocódigo de
un algoritmo:

Primero se tiene que diseñar el diagrama de flujo


para luego poder escribir el pseudocódigo.

Primero se tiene que escribir el pseudocódigo para


luego poder diseñar el diagrama de flujo.

No es necesario realizar primero uno para luego


hacer el otro.

Sí o sí se deben generar al mismo tiempo.

SUBMIT

C O NT I NU A R
Lección 5 de 7

Glosario

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:
Una de las principales características de un lenguaje de programación es que puede funcionar mediante
compilación o ser interpretado.

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,
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.

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.
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:

Eficacia.

Eficiencia.

Integridad o completitud.

Documentación.

Usabilidad.

Mantenibilidad.

Fiabilidad.

Figura 25: Fases de un proyecto software


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:


Flechas.

Círculos u óvalos.

Rombo.

Rectángulos.

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.
C O NT I NU A R
Lección 6 de 7

Referencias

[Imagen sin título sobre diagrama de flujo de pasos a seguir cuando


una lámpara no funciona], (2017). Recuperado de
https://commons.wikimedia.org/w/index.php?curid=2161669

[Imagen sin título sobre pseudocódigo estilo C], (2017). Recuperado de


https://es.wikipedia.org/wiki/Pseudoc%C3%B3digo

[Imagen sin título sobre pseudocódigo estilo fortran], (2017).


Recuperado de https://es.wikipedia.org/wiki/Pseudoc%C3%B3digo

[Imagen sin título sobre pseudocódigo estilo Pascal], (2017).


Recuperado de https://es.wikipedia.org/wiki/Pseudoc%C3%B3digo

Holley, M. (1980). Motorola 6800 Assembly Language [imagen].


Recuperado de https://commons.wikimedia.org/w/index.php?
curid=15345825

C O NT I NU A R
Lección 7 de 7

Descargá la lectura

Módulo 2- Conceptos básicos de la programación.mp3


16.5 MB

También podría gustarte