Unidad 1: Generalidades y Conceptos
¡Muy bien! Seguimos avanzando. ¡Continúa!
Bienvenido seas a la unidad 1: Generalidades y conceptos de la
asignatura Programación avanzada.
En esta unidad aprenderás a distinguir conceptos básicos de la
programación avanzada, tales como lenguaje de programación,
intérpretes y compiladores. Además, conocerá las principales
diferencias entre el lenguaje de programación C y su extensión
(lenguaje de programación C++). Por lo consecuente profundizará en
las características de cada uno de estos lenguajes de programación.
Se te presenta un nuevo reto en tu carrera ¿Estás listo para afrontarlo?
Identificar los fundamentos y los conceptos introductorios respecto a la
programación en el lenguaje C/C++ a fin de saber realizar la programación
estructurada utilizando la teoría de algoritmos y diagramas de flujo.
1.1 Concepto de lenguaje de programación
Un lenguaje de programación es un programa destinado a la construcción de otros programas
informáticos. Su nombre se debe a que comprende un lenguaje formal que está diseñado para
organizar algoritmos y procesos lógicos que serán luego llevados a cabo por un ordenador o sistema
informático, permitiendo controlar así su comportamiento físico, lógico y su comunicación con el
usuario humano.
Dicho lenguaje está compuesto por símbolos y reglas sintácticas y semánticas, expresadas en forma
de instrucciones y relaciones lógicas, mediante las cuales se construye el código fuente de una
aplicación o pieza de software determinado.
Se clasifican en dos tipos principales:
Lenguaje de bajo nivel
Lenguaje de alto nivel
1.1.1 Lenguajes de bajo nivel
Los lenguajes de bajo nivel se caracterizan por:
Ser lenguajes totalmente orientados a la máquina.
Ser lenguajes que sirven de interfaz para crear vínculos inseparables
entre el hardware y el software.
Además, ejercen un control directo sobre el equipo y su estructura
física.
Para aplicarlo adecuadamente es necesario que el programador conozca
sólidamente el hardware. Éste se subdivide en dos tipos:
Lenguaje máquina
Lenguaje ensamblador
Lenguaje máquina
Es el más primitivo de los lenguajes y es una colección de dígitos binarios o
bits (0 y 1) que la computadora lee e interpreta y son los únicos idiomas que
las computadoras entienden.
Ejemplo: 10110000 01100001
No entendemos muy bien lo que dice ¿verdad? Por eso, el lenguaje
ensamblador nos permite entender mejor a qué se refiere éste código.
Si deseas profundizar más sobre el tema lenguajes de bajo nivel, consulta la
siguiente información:
TI Capacitación (2013). Lenguajes de programación - Lenguajes de bajo nivel
[Archivo de video] Disponoble en: https://youtu.be/pPbFCvIQUi4
Lenguaje ensamblador
El lenguaje ensamblador es el primer intento de sustitución del lenguaje de
máquina por uno más cercano al utilizado por los humanos.
Un programa escrito en este lenguaje es almacenado como texto (tal como
programas de alto nivel) y consiste en una serie de instrucciones que
corresponden al flujo de órdenes ejecutables por un microprocesador.
Sin embargo, dichas máquinas no comprenden el lenguaje ensamblador, por
lo que se debe convertir a lenguaje máquina mediante un programa llamado
ensamblador.
Este genera códigos compactos, rápidos y eficientes creados por el
programador que tiene el control total de la máquina.
1.1.2 Lenguaje de programación de alto nivel
Tienen como objetivo facilitar el trabajo del programador, ya que utilizan unas
instrucciones más fáciles de entender.
Además, el lenguaje de alto nivel permite escribir códigos mediante idiomas
que conocemos (español, inglés, etc.) y luego, para ser ejecutados, se
traduce al lenguaje de máquina mediante traductores o compiladores.
TI Capacitación (2013). Lenguajes de programación - Lenguajes de alto nivel
[Archivo de video] Disponoble en: https://youtu.be/h6YY46Wjlmk
1.2 Traductores de lenguajes
Los traductores de lenguajes son unos programas muy especiales (compiladores o intérpretes) que
convierten las instrucciones escritas de lenguajes de programación en instrucciones escritas en
lenguajes máquina (0 y 1, bits) de esta manera la máquina puede entender cada símbolo, regla
sintáctica y regla semántica creada por el programador.
Los traductores se dividen en:
Intérpretes
Compiladores
1.2.1 Intérprete
Un intérprete es un traductor que toma un programa fuente, lo traduce y, a
continuación lo ejecuta. Los programas interpretes clásicos como BASIC,
prácticamente ya no se utilizan, más que en circunstancias especiales. El
proceso de traducción del interprete para transformar el programa fuente a
ejecutable es el siguiente:
1. Se traduce la primera sentencia del programa a lenguaje máquina.
2. Se detiene la traducción.
3. Se ejecuta la sentencia.
4. Se traduce la siguiente sentencia.
5. Se detiene la traducción.
6. Se ejecuta la sentencia y así́ sucesivamente hasta terminar el
programa.
A continuación, se muestra un diagrama explicando este proceso.
1.2.2 Compiladores
Un compilador es un programa que traduce los programas fuente escritos en
lenguaje de alto nivel a lenguaje máquina. La traducción del programa
completo se realiza en una sola operación denominada compilación del
programa; es decir, se traducen todas las instrucciones del programa en un
solo bloque. El programa compilado y depurado (eliminados los errores del
código fuente) se denomina programa ejecutable porque ya se puede
ejecutar directamente y cuantas veces se desee; sólo deberá volver a
compilarse de nuevo en el caso de que se modifique alguna instrucción del
programa. De este modo el programa ejecutable no necesita del compilador
para su ejecución. Los compiladores de lenguajes típicos más utilizados son:
C
C++
Java
C#
Pascal
FORTRAN
COBOL
Los compiladores realizar el proceso de traducción de la siguiente forma, es el
proceso de traducción de programas fuente a programas objeto. El programa
objeto obtenido de la compilación ha sido traducido normalmente a código
máquina.
Para conseguir el programa máquina real se debe utilizar un programa
llamado montador o enlazador (linker). El proceso de montaje conduce a un
programa en lenguaje máquina directamente ejecutable.
El proceso de ejecución de un programa escrito en un lenguaje de
programación y mediante un compilador suele tener los siguientes pasos:
1. Escritura del programa fuente con un editor (programa que permite a
una computadora actuar de modo similar a una máquina de escribir
electrónica) y guardarlo en un dispositivo de almacenamiento (por
ejemplo, un disco).
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador seleccionado.
4. Verificar y corregir errores de compilación (listado de errores).
5. Obtención del programa objeto.
6. El enlazador (linker) obtiene el programa ejecutable.
7. Se ejecuta el programa y, si no existen errores, se tendrá la salida del
programa.
Pasos por ingeniería (2018). Lenguajes de programación - #4 TRADUCTORES
de LENGUAJES (INTÉRPRETES y COMPILADORES)
[Archivo de video] Disponoble en: https://youtu.be/JLEXkb64aKU
1.3 Orígenes de C y C++
El lenguaje C fue creado en el año 1972 por el científico informático estadounidense Dennis Ritchie
(con la ayuda de Ken Thompson). Recibió el nombre de C simplemente por una cuestión alfabética,
ya que sustituyó a sus lenguajes predecesores B y BCPL que codificaban la minicomputadora PDP-
7.
Características del lenguaje C:
Es un lenguaje estructurado.
No depende del hardware, por lo que se puede migrar a otros sistemas.
Cuenta con objetivos generales.
Es un lenguaje diverso, se puede utilizar para programar tanto un sistema operativo, una
hoja de cálculo o un juego.
Ofrece un control absoluto de todo lo que sucede en la máquina.
Se puede tener una organización libre en la solución tecnológica.
Los programas son producidos de forma rápida y son bastante potentes.
Contiene un extenso tipo de datos, operadores y variables en C.
La sintaxis básica en C determina la forma en que se agrupan los caracteres para formar tokens ,
que son la unidad mínima de programación en C. Tomando como ejemplo el programa “Hola
Mundo”, usado para la introducción a la mayoría de lenguajes de programación, tendríamos el
siguiente código en C:
#include
int main()
{
printf("Hola Mundo"); // línea sencilla de comentarios
return 0;
/*
línea
múltiple de
comentarios
*/
Si seleccionamos sólo la línea de código printf, tendríamos los siguientes
tokens : printf , ( , “ , Hola Mundo , “ , ) , y ; . Por lo tanto, podemos decir que estos tokens son los
pequeños bloques con los que se programa en C, pudiendo ser: variables, identificadores,
constantes, palabras clave, símbolos que comprenda el lenguaje o sentencias en lenguaje C.
El comienzo de todo programa en este lenguaje debe comenzar por #include cuya función es
inicializar el entorno de trabajo; en nuestro ejemplo, vinculando el archivo stdio.h (biblioteca de C)
que a su vez contiene la orden printf.
La función en lenguaje C int main() hace que el programa vuelva a ese punto de retorno tras
ejecutarse y su orden está delimitada entre {}.
Cómo en la mayoría de los lenguajes de programación, nos podemos ayudar de comentarios que el
compilador no procesará pero que nos serán de mucha utilidad a la hora de aclarar cualquier
concepto en la línea de código. Podemos hacer los comentarios en lenguaje C de dos maneras; una
única línea de comentario comenzando con // o en múltiples líneas comenzando y terminando por /*
.
Bibliotecas de C
Al hablar de bibliotecas en lenguaje C nos referimos a una serie de librerías que son usadas en este
lenguaje de programación y están formadas por una serie de código con el que podemos leer el
teclado, realizar operaciones matemáticas, imprimir en pantalla, etc. La biblioteca referente es la
estándar de ANSI C formada por 24 archivos de cabecera. Según su tarea, se clasifican en
categorías, como por ejemplo matemáticas, de salida y entrada, de uso de textos, de gestión de
memoria,etc.
Entre las librerías más destacadas encontramos:
Stdio.h (de entrada y salida)
Conio.h (potente gestión de textos)
Math.h (encargada de operaciones matemáticas)
Time.h (obtienen fecha y hora actual para poder utilizarla según sus necesidades)
Pasos por ingeniería (2018). n#1 "Hola Mundo.
[Archivo de video] Disponoble en: https://www.youtube.com/watch?
v=ZhbMCqB7quQ&list=PL46-B5QR6sHm5HWP6sb4TTgUHgNoISKm5
Orígenes Lenguaje de Programación C++
C++ es un lenguaje de programación que puede manipular objetos, es una
extensión del lenguaje C.
Fue diseñado a mediados de los años 80 por el danés Bjarne Stroustrup. Su
intención fue la de extender el lenguaje de programación C (con mucho éxito
en ese momento) para que tuviese los mecanismos necesarios para
manipular objetos. C++ contiene los paradigmas de la programación
estructurada y orientada a objetos, por lo que se le conoce como un lenguaje
de programación multiparadigma. En sus comienzos, a C++ se le conoció
como “C con clases”. Luego se cambió a C++ que significa “incremento de
C”, dando a entender que se trata de una extensión del lenguaje de
programación C.
Las principales ventajas del lenguaje C++ son:
Alto rendimiento: Esto es debido a que puede hacer llamadas directas
al sistema operativo, es un lenguaje compilado para cada plataforma,
posee gran variedad de parámetros de optimización y se integra de
forma directa con el lenguaje ensamblador.
Lenguaje actualizado: A pesar de que ya tiene muchos años, el
lenguaje se ha ido actualizando, permitiendo crear, relacionar y operar
con datos complejos y ha implementado múltiples patrones de diseño.
Es multiplataforma
Extendido: C++ es muy extendido. Casi cualquier programa o sistema
están escritos o tienen alguna parte escrita en este lenguaje (desde un
navegador web hasta el propio sistema operativo).
Las principales desventajas de C++ es que se trata de un lenguaje muy
amplio (muchas líneas de código), tiene que tener una compilación por
plataforma y su depuración se complica debido a los errores que surgen.
Además, el manejo de librerías es más complicado que otros lenguajes como
Java o .Net.
Características del lenguaje C++:
Algunas de las características más importantes que posee el lenguaje C++
son:
Compatibilidad con bibliotecas: A través de bibliotecas hay muchas
funciones que están disponible y que ayudan a escribir código
rápidamente.
Orientado a objetos: El foco de la programación está en los objetos y la
manipulación y configuración de sus distintos parámetros o
propiedades.
Rapidez: La compilación y ejecución de un programa en C++ es mucho
más rápida que en la mayoría de los lenguajes de programación.
Compilación: En C++ es necesario compilar el código de bajo nivel
antes de ejecutarse, algo que no ocurre en otros lenguajes.
Punteros: Los punteros del lenguaje C, también están disponibles en
C++.
Didáctico: Aprendiendo programación en C++ luego es mucho más
fácil aprender lenguajes como Java, C#, PHP, Javascript, etc.
Programación ATS (2016). 1. Programación en C++ || Primer programa en C+
+
[Archivo de video] Disponoble en: https://youtu.be/ld4nzao5XAc
Cierre de unidad
Para poder tener su primer acercamiento a la programación avanzada el alumno al término de esta
unidad aprendió conceptos claves con sus particulares características y funciones, tales como:
Lenguaje de programación
Lenguaje de bajo nivel
Lenguaje de alto nivel
Intérprete
Compilador
Además, conoció y comprendió los orígenes de C y C++. También se enumeraron los elementos
claves para poder diferenciar entre si estos dos lenguajes de programación fundamentales, tales
como:
Autor y fecha de creación
Características principales
Ventajas y desventajas
Sintaxis
Fuentes de consulta
Joyanes Aguilar, L. (2008). Fundamentos de programación (1st ed.). España:
McGraw Hill/Interamericana.
Langsam, Y. & Martínez Sarmiento, M. (1997). Estructuras de datos con C y C
++ (1st ed.). México: Prentice-Hall Hispanoamericana.
Mihaela Juganaru, M. (2014). Introducción a la Programación (1st ed.). México:
Grupo Editorial Patria.
Urquía Moraleda, Martín Villalba, (2011). Lenguajes de Programación (1st ed.).
España: UNED