Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIÓN A LA UNIDAD
1. ¿Conoce ud. algo del contenido que trabajaremos en esta Unidad? ¿Qué sabe?
2. ¿Considera usted importante aprender sobre el uso de....... para su desarrollo laboral? ¿Por
qué?
3. ¿Cómo se relaciona este contenido con las demás asignaturas que está trabajando o ha
trabajado en la carrera?
4. ¿En qué contenido específico le gustaría profundizar? ¿Por qué?
Estimado(a) estudiante:
¡Bienvenido(a) al estudio!
TUTOR ACADÉMICO
DESARROLLO DE LOS CONTENIDOS DE LA UNIDAD 1
Es común hablar de programación, por ejemplo: una salida, de las vacaciones o de un recorrido
por una ciudad cuando queremos referirnos a armar itinerarios de lugares para recorrer, conocer
o gente con la que encontrarnos; así también se utiliza mucho el término para referirse a la lista
de programas con sus días y horarios de emisión de los canales de televisión, la lista de películas
de un cine o las obras de un teatro.
Para que la computadora entienda las instrucciones dadas debe usarse un lenguaje específico
conocido como Código máquina, el cual comprende fácilmente, pero que lo hace excesivamente
complicado para las personas. De hecho, sólo consiste en cadenas interminables de números 1 y
0. (Sistema de números Binario)
Para facilitar el trabajo, los primeros operadores de computadoras decidieron reemplazar los 1 y
0 por palabras o letras provenientes del inglés; éste se conoce como Lenguaje ensamblador. Por
ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). En realidad, escribir en
lenguaje ensamblador es básicamente igual que hacerlo en lenguaje máquina, pero las letras y
palabras son más fáciles de recordar y entender que los números.
A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo
necesario disponer de un método más adecuado para programarlas. Entonces, se crearon los
lenguajes de alto nivel (En el subtema 4 de esta unidad explicamos este concepto). Mientras que
una tarea tan sencilla como sumar dos números puede necesitar varias instrucciones en lenguaje
ensamblador, en un lenguaje de alto nivel bastará con sólo una.
Una vez que se termina de escribir un programa en ensamblador o en un lenguaje de alto nivel es
necesario compilarlo, es decir, traducirlo a lenguaje máquina.
1.4. LÉXICO Y PROGRAMACIÓN
Programar es más sencillo que aprender un nuevo idioma. La programación se rige por unas reglas
que se asemejan con ciertas diferencias, a las de una lengua natural. La particularidad está en que
las reglas de programación tienen menor ambigüedad.
En los Lenguajes de programación de alto nivel se distinguen diversos elementos entre los que se
incluyen el léxico propio del lenguaje y las reglas semánticas y sintácticas.
Esquema de Lenguajes:
1.5. PROGRAMAS Y ALGORITMOS
Un Algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse
para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de
programación concreto) un algoritmo. Nótese que es la secuencia de instrucciones en sí (la
ejecución) la que debe ser finita, no el número de pasos realizados.
Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad
algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al
desarrollo del programa.
Según Niklaus Wirth “un programa está formado por Algoritmos y Estructura de datos”.
Se han propuesto diversas técnicas de programación cuyo objetivo es mejorar tanto el proceso de
creación de software como su mantenimiento. Entre ellas, se pueden mencionar las siguientes:
Estructurada
Modular
Orientada a Objetos
(POO)
Declarativa
1.6. COMPILACIÓN
El código fuente del programa se debe someter a un proceso de traducción para convertirse en
lenguaje máquina, interpretable por el procesador. A este proceso se le llama Compilación.
Normalmente la creación de un programa Ejecutable (un típico “.exe” para Microsoft Windows o
DOS) conlleva dos pasos.
El primer paso se llama compilación (propiamente dicho) y traduce el código fuente
escrito en un Lenguaje de programación almacenado en un archivo a código en bajo nivel
(normalmente en código objeto, no directamente a lenguaje máquina).
El segundo paso se llama enlazado en el cual se enlaza el código de bajo nivel generado
de todos los ficheros y subprogramas que se han mandado compilar, se añade el código
de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda
comunicarse directamente con el sistema operativo, traduciendo así finalmente el Código
objeto a Código máquina, y generando un módulo ejecutable.
Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de
compilación en archivos objetos (un típico obj para Microsoft Windows, DOS o para Unix); para
enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de
compilación se almacena sólo temporalmente. Un programa podría tener partes escritas en varios
lenguajes (por ejemplo: C, C++ y Asm), que se podrían compilar de forma independiente y luego
enlazar juntas para formar un único módulo Ejecutable.
Con el tiempo se han lanzado lenguajes de programación que hace funcionar las páginas web, por
ejemplo, hablo del lenguaje de diseño HTML, con este se diseñan las páginas y se les da un poco
de estilo.
1.7. PROGRAMACIÓN E INGENIERÍA DEL SOFTWARE
El proceso de creación de software, desde el punto de vista de la Ingeniería, incluye los siguientes
pasos:
Implementar el programa.
•Consiste en realizar un diseño detallado, especificando completamente todo el funcionamiento del programa,
tras lo cual la codificación debería resultar inmediata.
Implantar (instalar) el programa.
•Consiste en poner el programa en funcionamiento junto con los componentes que pueda necesitar (bases de
datos, redes de comunicaciones, etc.).
La ingeniería del software se centra en los pasos de planificación y diseño del programa, mientras
que antiguamente (programación artesanal) la realización de un programa consistía únicamente
en escribir el código.
1.8. LENGUAJE DE ALTO NIVEL
El Lenguaje de alto nivel es aquel que se aproxima más al lenguaje natural humano que al lenguaje
binario de las computadoras, el que se conoce como lenguaje de bajo nivel. Un lenguaje de alto
nivel permite al programador escribir las instrucciones de un programa utilizando palabras o
expresiones sintácticas muy similares al inglés. Por ejemplo, en C se pueden usar palabras tales
como: case, if, for, while, etc. para construir con ellas instrucciones como:
Esto traducido al castellano viene a decir que: si número es mayor que cero, entonces, escribir por
pantalla el mensaje: “El número es positivo”. Un lenguaje de alto nivel se caracteriza por expresar
los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la
capacidad ejecutora de las máquinas. Esta es la razón por la que a estos lenguajes se les considera
de alto nivel, porque se pueden utilizar palabras de muy fácil comprensión para el programador.
Otros lenguajes de alto nivel son: Ada, BASIC, COBOL, FORTRAN, Pascal
Otra característica importante de los lenguajes de alto nivel es que, para la mayoría de las
instrucciones de estos lenguajes, se necesitarían varias instrucciones en un lenguaje ensamblador
para indicar lo mismo. De igual forma que, la mayoría de las instrucciones de un lenguaje
ensamblador, también agrupa a varias instrucciones de un lenguaje máquina.
1.9. REFERENCIAS HISTÓRICAS
La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella Milbanke
Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer a
Charles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso aunque
Babbage nunca completó la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó
con éstas le hizo ganarse el título de primera programadora de computadoras del mundo. El
nombre del Lenguaje de programación Ada fue escogido como homenaje a esta programadora.
No olvidemos que este proceso está aplicado a todos los métodos científicos que actualmente se
practican.
Ada Lovelace
SÍNTESIS DEL TEMA
Estimados estudiantes, en este tema de la unidad, comenzamos a navegar por una parte muy
importante de la historia de la ciencia, la ciencia de la informática.
En este tema empezamos a comprender los elementos básicos que nos comienzan a conectar con
las maquinas, con la numeración binaria, la Hexadecimal, y decimal, las instrucciones, la
compilación, que nos ayuda a que las maquinas logren interpretar las instrucciones que
ordenamos que ejecuten.
También vimos algo de historia, reconociendo a la primera programadora Ada Lovelace, que en
su corta vida nos dio las primeras instrucciones programadas.
Y lo más importante, comenzamos a acercarnos los que es la ingeniería de software, el proceso de
creación de soluciones informáticas, todo un mundo que cada día crece y evoluciona, con nuevos
métodos, nuevas herramientas que nos permiten y abordando cada vez problemáticas más
complejas
Estimado(a) estudiante:
TUTOR ACADÉMICO
2. TIPOS DE PROGRAMACIÓN
Existen varias clases de programación, dependiendo de los métodos utilizados y las técnicas
empleadas. Los tipos o técnicas de programación son bastante variados, en la mayoría de los casos,
las técnicas se centran en programación modular y programación estructurada, pero existen otros
tipos de programación.
La programación estructurada (PE) está compuesta por un conjunto de técnicas que han ido
evolucionando, aumentando considerablemente la productividad del programa reduciendo el
tiempo de depuración y mantenimiento de este.
La programación estructurada utiliza un número limitado de estructuras de control, reduciendo
así considerablemente los errores.
Estructuras básicas:
Un programa está estructurado si posee un único punto de entrada y sólo uno de salida, existen
de "1 a n" caminos desde el principio hasta el fin del programa y, por último, que todas las
instrucciones son ejecutables sin que aparezcan bucles infinitos.
2.2. PROGRAMACIÓN MODULAR
En la programación modular consta de varias secciones dividas de forma que interactúan a través
de llamadas a procedimientos, que integran el programa en su totalidad.
En la programación modular, el programa principal coordina las llamadas a los módulos
secundarios y pasa los datos necesarios en forma de parámetros.
A su vez cada módulo puede contener sus propios datos y llamar a otros módulos o funciones.
2.3. PROGRAMACIÓN ORIENTADA A OBJETOS (POO)
Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez.
Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma
simultánea.
Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las
acciones.
Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones.
Los matemáticos resuelven problemas usando el concepto de función, que convierte datos en
resultados. Sabiendo cómo evaluar una función, usando la computadora, podríamos resolver
automáticamente muchos problemas. Este fue el pensamiento que llevó a la creación de los
lenguajes de programación funcionales. Además, se aprovechó la posibilidad que tienen las
funciones para manipular datos simbólicos, y no solamente numéricos, y la propiedad de las
funciones que les permite componer, creando de esta manera, la oportunidad para resolver
problemas complejos a partir de las soluciones a otros más sencillos.
2.6. PROGRAMACIÓN LÓGICA
Estimado(a) estudiante:
TUTOR ACADÉMICO
3. HERRAMIENTAS DE PROGRAMACIÓN
Sistema de Información:
Es un conjunto de elementos que interactúan entre sí con el fin de apoyar las actividades
de una empresa o negocio
Procesamiento de Información:
Es la capacidad de los Sistemas de Información para realizar cálculos con base en
secuencias de operaciones preestablecidas. Estos cálculos pueden efectuarse con datos
introducidos recientemente en el sistema o bien con datos que están almacenados. Esta
característica de los sistemas permite la transformación de datos fuente en información
que puede ser utilizada para la toma de decisiones, lo que hace posible, entre otras cosas,
que un tomador de decisiones genere una proyección financiera a partir de los datos que
contiene un estado de resultados o un balance general de un año base.
Procesamiento de Datos:
Es cualquier ordenación o tratamiento de datos, o los elementos básicos de información,
mediante el empleo de un sistema. Procesar datos es generar información para la toma
de decisiones
Los compiladores, los intérpretes y los ensambladores se encargan de traducir lo que haya escrito
en los lenguajes de alto nivel (código fuente) y lo convierten en código objeto (casi ejecutable).
Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel:
Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro
lenguaje (por ejemplo, en el lenguaje de la máquina). Su función es similar a la de un
traductor humano, que toma un libro lo analiza completamente y produce otro
equivalente escrito en una lengua diferente.
Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningún
código equivalente. Su acción equivale a la de un intérprete humano, que traduce las
frases que oye sobre la marcha, sin producir ningún escrito permanente. Intérpretes y
compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:
o Con el intérprete es más fácil la búsqueda de errores, pues la ejecución del
programa se puede interrumpir en cualquier momento para estudiar el entorno
(valores de las variables, etc.). El intérprete va analizando instrucción por
instrucción y al momento en que detecta un error se detiene permitiendo su
modificación o corrección. Además, el programa puede modificarse sobre la
marcha, sin necesidad de volver a comenzar la ejecución.
o El compilador genera programas más rápidos y eficientes, pues este analiza todo
el código de una sola vez y luego genera un archivo objeto, por lo cual el análisis
del lenguaje fuente se hace una sola vez, durante la generación del programa
equivalente. Se tarda analizando solamente la primera vez, pero luego lo que se
ejecuta es el código objeto, por lo cual las demás ejecuciones son más rápidas. En
cambio, un intérprete como no genera el código objeto, siempre se tarda
realizando el análisis pues lo hace instrucción por instrucción hasta que termina y
no haya más errores detectados. El tiempo de ejecución se irá reduciendo cuando
se vayan depurando todos los errores encontrados.
o Un intérprete permite utilizar funciones y operadores más potentes, como por
ejemplo ejecutar código contenido en una variable en forma de cadenas de
caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por
medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que,
por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes
compiladores, que permiten el uso de un compilador, prescinden de este tipo de
operadores.
3.2.1. LENGUAJES COMPILADOS
- Pascal
- Cobol
- Fortran
- Ada
- Modula 2
- C , C++
Fases de compilación:
3.2.2. ENLAZADOR (LINKER)
El enlazador realiza la tarea de enlazar la funcionalidad de las teclas y funciones con el código
objeto generado a través de la compilación de un programa.
Una librería es la colección de varias teclas y sus funciones, las cuales son creadas por
programadores expertos y almacenadas en lugares especiales para que se puedan utilizar por
otros programadores. También pueden ser algunas funciones estándar como raíz cuadrada,
logaritmo, random y otras.
Para poder utilizar estas funciones predefinidas que están guardadas en las librerías, el
programador tiene que hacer referencia a dicha librería, que es un archivo que se llama en la
cabecera del programa.
Estimado(a) estudiante:
TUTOR ACADÉMICO
4. LENGUAJES DE PROGRAMACIÓN
4.1. IMPLEMENTACIÓN
Se puede también utilizar una alternativa para traducir lenguajes de alto nivel. En lugar de traducir
el programa fuente y grabar en forma permanente el código objeto que se produce durante la
compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente
en la computadora junto con los datos que se van a procesar. A continuación, un programa
intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente
dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina
conforme vaya siendo necesario durante el procesamiento de los datos. El código objeto no se
graba para utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a
lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo o
bucle, cada instrucción del bucle tendrá que volver a ser interpretada en cada ejecución repetida
del ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va
revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se
tiene que estar compilando a cada momento el código completo). El intérprete elimina la
necesidad de realizar una compilación después de cada modificación del programa cuando se
quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con
antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada
paso durante una ejecución del código.
La mayoría de los lenguajes de alto nivel, permiten la programación multipropósito, sin embargo,
muchos de ellos fueron diseñados para permitir programación dedicada, como lo fue PASCAL con
las matemáticas en su comienzo.
También, se han implementado lenguajes educativos infantiles como LOGO que, mediante una
serie de simples instrucciones, permitía mover una tortuga entre otras cosas. En el ámbito de
infraestructura de internet, cabe destacar a Perl con un poderoso sistema de procesamiento de
texto y una enorme colección de módulos.
Un lenguaje de programación es, por definición, diferente al lenguaje máquina. Por lo tanto, debe
traducirse para que el procesador pueda comprenderlo. Un programa escrito en un lenguaje
interpretado requiere de un programa auxiliar (el intérprete), que traduce los comandos de los
programas según sea necesario.
Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del código
fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje legible, hace que
cualquier persona pueda conocer los secretos de fabricación de un programa y, de ese modo,
copiar su código o incluso modificarlo. Por lo tanto, existe el riesgo de que los derechos de autor
no sean respetados. Por otro lado, ciertas aplicaciones aseguradas necesitan confidencialidad de
código para evitar las copias ilegales (transacciones bancarias, pagos en línea, comunicaciones
seguras...).
4.3.3. LENGUAJES INTERMEDIARIOS
Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el programa
escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilación intermediaria,
en un archivo escrito en un lenguaje ininteligible (por lo tanto, diferente al archivo fuente ) y no
ejecutable (requeriría un intérprete). Los applets Java, pequeños programas que a menudo se
cargan en páginas web, son archivos compilados que sólo pueden ejecutarse dentro de un
navegador web (son archivos con la extensión .class).
4.4. PARADIGMAS
Los programas se pueden clasificar por el paradigma del lenguaje que se use para producirlos. Los
principales paradigmas son imperativos y declarativos.
Los programas que usan un lenguaje imperativo especifican un algoritmo, usan declaraciones,
expresiones y sentencias.[3]
Una declaración asocia un nombre de variable con un tipo de dato, por ejemplo:
var x: integer; .
Una expresión contiene un valor, por ejemplo: 2 + 2 contiene el valor 4.
Finalmente, una sentencia debe asignar una expresión a una variable o usar el valor de
una variable para alterar el flujo de un programa. Por ejemplo:
x := 2 + 2;
if x == 4
then haz_algo ();
Una crítica común en los lenguajes imperativos es el efecto de las sentencias de asignación
sobre una clase de variables llamadas "no locales".
Los programas que usan un lenguaje declarativo especifican las propiedades que la salida debe
conocer y no especifica cualquier detalle de implementación. Dos amplias categorías de lenguajes
declarativos son los lenguajes funcionales y los lenguajes lógicos. Los lenguajes funcionales (como
Haskell) no permiten asignaciones de variables no locales, así, se hacen más fácil, por ejemplo,
programas como funciones matemáticas.
El principio detrás de los lenguajes lógicos (como Prolog) es definir el problema que se quiere
resolver (el objetivo) y dejar los detalles de la solución a el sistema de Prolog.
El objetivo es definido dando una lista de subobjetivos. Cada subobjetivo también se define dando
una lista de sus subobjetivos, etcétera. Si al tratar de buscar una solución, una ruta de subobjetivos
falla, entonces tal subobjetivo se descarta y sistemáticamente se prueba otra ruta.
La forma en la cual el programa se crea puede ser por medio de texto o de forma visual. En un
lenguaje de programación visual, los elementos son manipulados gráficamente en vez de
especificarse por medio de texto.
4.5. LENGUAJES DE PROGRAMACIÓN MÁS USADOS SEGÚN EL TIPO DE DESARROLLO
4.5.1. Python
Python es uno de los lenguajes de programación más usados actualmente y la tendencia sigue al
alza. Lo tiene todo: es de código abierto, una sintaxis sencilla y fácil de entender, por lo que ahorra
tiempo y recursos. Es uno de los mejores para iniciarse en el mundo de la programación.
Python es un lenguaje versátil que puede tener múltiples aplicaciones. Una de ellas, la Inteligencia
Artificial, gracias a bibliotecas como Keras o TensorFlow. También puede ser de utilidad para
aplicaciones de Big Data, gracias a bibliotecas de procesamiento de datos.
Este lenguaje de programación también se emplea en el desarrollo web, sobre todo, gracias a sus
frameworks Django o Flask. Por poner algunos ejemplos, los sitios web de SemRush o Reddit están
desarrollados con Python.
4.5.2. Java
C# es un lenguaje que sigue apareciendo en los listados de lenguajes de programación más usados.
Creado por Microsoft, está presente en entornos empresariales, como instituciones
gubernamentales, entidades bancarias o médicas.
Aunque más allá de este tipo de aplicaciones, tiene también usos muy versátiles: internet de las
cosas, desarrollo de videojuegos, web o aplicaciones móviles. Para el desarrollo web, puedes
utilizar el framework ASP.NET o la herramienta Xamarin para desarrollar aplicaciones nativas para
Android e iOS.
Pero si lo tuyo son los videojuegos, C# es el lenguaje que debes dominar. Y es que una de las
herramientas más potentes hoy en día como es Unity soporta varios lenguajes de forma nativa.
Uno de ellos es C#.
4.5.5. PHP
PHP es un lenguaje de programación de propósito general de código del lado del servidor. Este
lenguaje garantiza una buena comunicación entre web y servidor, por lo que las páginas web
desarrolladas con este lenguaje son estables y con buen rendimiento.
Actualmente, muchas páginas web están diseñadas con WordPress, que trabaja con PHP. Por ello,
este lenguaje te permitirá desarrollar tanto proyectos como plugins para esta plataforma.
4.5.6. C/C++
C++ es un lenguaje de programación surgido como extensión del lenguaje C para que pudiese
manipular objetos. Ambos lenguajes de programación siguen siendo utilizados en la actualidad en
bases de datos, navegadores web, compiladores o videojuegos.
4.5.7. R
4.5.8. Objective-C
4.5.9. Swift
Este lenguaje de programación se mantiene dentro del TOP 10 de los más usados. Creado por Apple,
está enfocado al desarrollo de aplicaciones para iOS y macOS.
Pese a tener poca trayectoria, surgió en 2014, tiene una gran comunidad de desarrollo detrás,
especialmente desde que pasó a ser de código abierto.
4.5.10. Matlab
Aunque hemos repasado el top 10 de los más usados según el índice PYPL, hay otros que se quedan
fuera de los 10 clasificados, pero que están teniendo un importante crecimiento.
TypeScript, Kotlin, Go y Rust, son otros de los lenguajes de programación a los que deberías seguirle
la pista si no quieres quedarte atrás. Y si dudas sobre qué tecnología es mejor para desarrollar tu
proyecto, contacta con Yeeply y te aconsejamos.
SÍNTESIS DEL TEMA
Estimados estudiantes, en este tema de la unidad abrimos el conocimiento sobre las opciones de
lenguajes, los clasificamos para entender bajo que contexto pueden ser usados, también
revisamos los más usados en el último tiempo. Aun así, es importante recordar algunos programas
que han sido muy relevantes en la historia de la ciencia de la programación, como lo fue Pascal,
Cobol, Basic, Fortran, Dbase.
Estimado(a) estudiante:
TUTOR ACADÉMICO
SÍNTESIS DE LA UNIDAD
Estimado(a) estudiante
TUTOR ACADÉMICO