Академический Документы
Профессиональный Документы
Культура Документы
LABORATORIO DE PROGRAMACIÓN I
UNIDAD ACADEMICA: Ingeniería Electrónica.
CURSO: Programación I.
PRACTICA Nº 14: Conceptos básicos de los lenguajes de programación.
1. OBJETIVOS
2. CONSULTA PREVIA
3. FUNDAMENTO TEORICO
Para desarrollar un programa en los leguajes de programación tradicionales, es necesario comprender sus reglas
de sintaxis, dicha acción se asemeja cuando aprendemos un idioma diferente, en donde tenemos que reconocer
las palabras correspondientes a nuestro dialecto natal. De igual manera como trabajamos en pseudocódigo, los
lenguajes de programación se componen de una lista de sentencias o instrucciones, al igual que comentarios
(comentarios que el programador coloca y son ilegibles al momento de ejecutar un programa), otros componentes
que encontramos en un lenguaje de programación y que ya se reconocieron previamente con los temas de
algoritmia, son:
Identificadores y variables.
Tipos de datos.
Estructuras de datos.
Constantes.
Operadores aritméticos y relacionales.
Instrucciones de control.
Funciones y procedimientos.
o Parámetros.
LABORATORIO DE PROGRAMACIÓN I
La base esencial de poder programar en cualquier lenguaje, radica en saber cómo se implementa la sintaxis de
cada componente mencionado en la lista anterior. Teniendo claro que desarrollar soluciones a problemas desde
un lenguaje, es simplemente aplicar la misma lógica que en pseudocódigo solo que con palabras diferentes, el
proceso siguiente en el aprendizaje de la programación consiste en entender como un archivo escrito en un
lenguaje de alto nivel (muy cercano al pseudocódigo y más alejado del leguaje maquina) se traduce para generar
otro archivo de formato ejecutable por la máquina. En ello intervienen dos partes:
Las actividades a realizar para llegar del programa fuente al programa objeto son:
Análisis léxico
Consiste en analizar las cadenas alfanuméricas escritas como un conjunto y no como unidad, se asemeja
al proceso lógico que realizamos cuando leemos en voz alta, ya que pronunciamos palabras y no
caracteres, a la agrupación de estos caracteres como entidades, se les conoce lexema (token). La tarea
del analizador léxico consiste en leer el programa fuente y clasificar los lexemas según sean valores
numéricos, palabras, operadores aritméticos, etc.; entregando la información de a qué clase pertenece,
al analizador sintáctico, cabe aclarar que en este proceso se ignoran todas las sentencias que están
encerradas como comentarios del programador.
Análisis sintáctico
Su trabajo consiste en agrupar los lexemas en instrucciones, identificar que estructura gramatical se está
usando y cuál es su acción a realizar. Existen múltiples reglas de análisis sintáctico, las que se les
denomina gramática, la cual representa cada una de los temas anteriores vistos en la sección de
algoritmia, y se vienen a representar textualmente según cada el lenguaje de programación.
Generación de código
Este proceso consiste en tomar las sentencias reconocidas en el analizador sintáctico y construir
instrucciones en lenguaje máquina.
Cabe aclarar que el análisis léxico, sintáctico y generación de código, son acciones que no se realizan
estrictamente en orden secuencial, en algunos casos se entrelazan de la siguiente manera:
El analizador léxico comienza leyendo caracteres hasta que encuentra el primer lexema, inmediatamente
después lo pasa al analizador sintáctico.
El analizador sintáctico toma el lexema y clasifica la estructura gramatical que está siendo leída.
En ese caso tiene dos opciones:
o Si ya se reconoció una frase o instrucción completa, enviarla al generador de código para crear
instrucciones de máquina.
o Si aún no tiene una instrucción completa, solicitar más lexemas al analizador léxico.
Cada vez que se crea una instrucción de maquina desde el generador de código, está es enviada al
programa objeto.
Teniendo claro el proceso sobre la traducción de un código fuente a objeto, es pertinente reconocer algunos
conceptos referentes a los lenguajes de programación, es en este punto que se logra diferenciar como algunos
son meramente comprendidos por la máquina y otros son más cercanos a un lenguaje similar a pseudocódigo,
los cuales requieren ser traducidos a instrucciones que sean entendidos por el dispositivo computacional. Por
tanto los lenguajes se pueden clasificar en:
Lenguaje máquina
LABORATORIO DE PROGRAMACIÓN I
Comprensible directamente por la máquina, y a cada una de ellas entiende su propio lenguaje,
generalmente se comprende por 1´s y 0´s
Lenguajes ensambladores
Para optimizar la programación en lenguaje máquina, se empiezan a utilizar lenguajes ensambladores,
los cuales son a base de abreviaturas en inglés, para representar operaciones elementales y con ellos
se crearon los lenguajes traductores, para generar el programa en lenguaje máquina.
LENGUAJE C++
Es un lenguaje de programación de alto nivel conformado por secciones llamadas clases y funciones, fue una
evolución del lenguaje C, no dependiente del hardware y está disponible para la mayoría de dispositivos
computacionales. Sus estándares son resultados de la necesidad de evolución de C, e inicialmente C++ fue
creado como una extensión del mismo, pero al pasar el tiempo se convirtió en uno de los lenguajes más utilizados
a nivel mundial, por lo que el Instituto Estadounidense de Estándares (ANSI) junto con la Organización
Internacional para la Estandarización (ISO), ayudaron en la creación un modelo que culmino en la aprobación
de C++98 en 1998, los estándares siguientes que se presentaron son C++03 (2003), C++11 (12 de agosto 2011)
y tras la aprobación de este último el comité de estándares apresuro sus revisiones y presento pautas enfocadas
a corrección de errores y pequeñas mejoras, lo que dejo como resultado el estándar C++14 (2014), C++17 (2017)
y con una próxima revisión proyectada que se espera para el año 2020 denominada C++20.
Referente al lenguaje, las clases y funciones de C++ son piezas que se pueden programar juntas o por aparte, y
tienen la ventaja de tener extensas colecciones desde la biblioteca estándar de C++ , las cuales consisten en
un compendio de funcionalidades que colaboran a minimizar tareas al momento de programar; por tanto es de
resaltar dos tareas fundamentales en el aprendizaje, la primera se centra en aprender acerca de C++ y su
semejanza a lo visto anteriormente en algoritmia, y la segunda en el uso apropiado de las clases y funciones en
la biblioteca estándar de C++ (Apache, s/f).
El más usado comúnmente es GNU Compiler Collection (GCC) (GNU, s/f), gracias al soporte de sus múltiples
estándares. Consiste en una colección de compiladores y tiene como característica ser de software libre.
Inicialmente solo trabajaba solo con C, pero después implemento lenguajes como C++, Fortran, Ada y otros. Al
LABORATORIO DE PROGRAMACIÓN I
momento de implementar GCC, es necesario buscar versiones precompiladas, según la plataforma existente se
presentan:
AIX:
Archivo de software de código abierto de Bull para AIX 5L y AIX 6 ;
AIX Paquetes de código abierto (AIX5L AIX 6.1 AIX 7.1) .
DOS— DJGPP .
HP-UX:
Centro de puertos HP-UX ;
Mac OS:
El gestor de paquetes Homebrew .
MacPorts .
Microsoft Windows:
El proyecto Cygwin .
Los proyectos MinGW y mingw-w64 .
Sin embargo la instalación de estos compiladores resulta más sencilla si se trabaja con un entorno de desarrollo
(IDE - Integrated Development Environment), los cuales son paquetes completos de software, que contienen los
compiladores necesarios para programar en un lenguaje y es posible realizar el proceso de traducción del código
fuente a código objeto, sin tener que trabajar desde consola.
Teniendo ya instalado nuestro compilador, el paso siguiente es generar el código fuente en un editor de texto
(Notepad++, SublimeText, etc.), un ejemplo sencillo puede ser el tradicional Hola Mundo, para ello en la presente
guía utilizaremos Notepad++, en un archivo nuevo digitamos el siguiente código:
Luego debemos guardar el código en la extensión apropiada, para que sea reconocido como un código fuente de
C++, la primera acción es desde el menú principal en la opción Lenguaje:
LABORATORIO DE PROGRAMACIÓN I
Seleccionamos el tipo de lenguaje en el que estamos programando, al realizar esta acción nuestro código debe
cambiar de color:
LABORATORIO DE PROGRAMACIÓN I
Es de aclarar que un código en C++ puede tener múltiples extensiones (*.h, *.hpp, *.hxx, *.cpp, *.cxx, *.cc y *.ino)
para esta primera etapa de aprendizaje se trabajara con *.cpp y a medida que se avance en el proceso de
formación, se dará explicación a las demás extensiones. En el presente ejemplo le colocaremos como nombre a
nuestro código fuente HolaMundo, sin olvidar poner la extensión con la que vamos a trabajar *.cpp:
Tener muy en cuenta la ruta donde guardamos el archivo, para este caso es en Documentos. Luego abrimos el
editor de comandos y buscamos la ruta en donde se encuentra guardado el archivo HolaMundo.cpp:
Se recomienda realizar un repaso de los comandos comunes de DOS, en este caso utilizaremos cd para acceder
a una ubicación en el equipo, cd.. para salir y cls para limpiar pantalla.
Por último, ya es posible realizar el proceso de compilación, para este ejemplo notar que en la carpeta donde
tenemos el programa existe un solo archivo con nombre HolaMundo:
LABORATORIO DE PROGRAMACIÓN I
Para compilar el archivo se debe colocar el comando: g++ <<nombre del archivo.cpp>> -o <<nombre que le
pondremos al archivo ejecutable>>, seguido de un enter.
Si no ocurre nada en este proceso es buena señal e indica que no se encontraron errores de sintaxis al momento
de crear el código objeto, observando la carpeta origen notamos que existe un nuevo archivo, con el nombre que
le dimos al archivo ejecutable:
A continuación es posible ejecutar el código, colocando solamente el nombre que le dimos al ejecutable sin
extensiones seguido de enter:
LABORATORIO DE PROGRAMACIÓN I
Otra situación probable es cuando nuestro código fuente tiene errores de sintaxis, es allí cuando el compilador
nos indica los errores existentes y orienta en su solución, para este caso generamos un error a propósito y es
borrando el punto y coma de la línea 5, después de realizar cualquier cambio es necesario guardar nuevamente,
lo que es posible mediante ctrl+s o con el icono tradicional para guardar:
Notar como el compilador muestra un mensaje al respecto el error y una descripción que indica la falta de un
punto y coma.
Un entorno de desarrollo IDE (Integrated Development Environment) es un aplicativo de software que contiene
herramientas enfocadas a facilitarle el trabajo al programador, ayuda en tareas de autocompletado, construcción
automática, contienen intérprete y/o depurador e incluso algunos colaboran en la construcción de entorno gráfico.
En el presente curso trabajaremos con el IDE Codeblocks, el cual es un entorno de libre uso (licencia pública
general GNU) y multiplataforma. Para trabajar en Codeblocks es necesario descargarlo, uno de los links mas
usados en esta tarea es: http://www.codeblocks.org/downloads/26, allí se muestran las diversas opciones para el
sistema operativo en el que se desee trabajar.
LABORATORIO DE PROGRAMACIÓN I
Para el caso particular del trabajo en laboratorio se seleccionó el sistema operativo Windows y la mejor opción a
descargar es la que contiene el compilador incluido.
LABORATORIO DE PROGRAMACIÓN I
1. Seleccionar C++.
2. Click en Next.
Click en Next.
LABORATORIO DE PROGRAMACIÓN I
1. Colocar un nombre de proyecto.
2. Seleccionar una ubicación.
3. Click en Next.
Click en Finish
Y ya podemos observar en las columnas de la izquierda de la pantalla que esta creado el proyecto.
Por defecto se crea un archivo main.cpp, sin embargo este lo podemos eliminar seleccionando y oprimiendo
la tecla supr.
LABORATORIO DE PROGRAMACIÓN I
En un proyecto ya existente, vamos a crear nuestros archivos de los formatos que necesitemos de C++, los pasos
a seguir son:
Click en File (es apropiado crear archivos de esta manera, ya que se selecciona las opciones adecuadas si
se desea crear archivos de cabecera (.h) o cpp.
LABORATORIO DE PROGRAMACIÓN I
Click en Next.
1. Seleccionar C++.
2. Click en Next.
LABORATORIO DE PROGRAMACIÓN I
Click en el símbolo de los tres puntos, con el fin de dar una ubicación y nombre al archivo.
1. Click en All (útil tener seleccionadas las 2 opciones de Debug y release para que compile y ejecute
adecuadamente).
2. Click en Finish.
LABORATORIO DE PROGRAMACIÓN I
Digitar el código fuente y para ejecutar y compilar dar click en el icono que indica la flecha.
LABORATORIO DE PROGRAMACIÓN I
Es posible crear un Hola Mundo usando funciones y primeros conceptos de la orientación a objetos (Clase,
Función, variable, objeto).
LABORATORIO DE PROGRAMACIÓN I
CodeBlocks.
5. PROCEDIMIENTO O METODOLOGÍA
6. RESULTADOS
Investigar sobre las librerías del lenguaje C++ tomando como referencia la página web:
https://en.cppreference.com/w/cpp/header.
… … … …
… …
Mediante este trabajo notar las utilidades presentes en cada estándar y tomar como
BIBLIOTECAS DE CONCEPTOS
<concepts> (desde C++20)
BIBLIOTECA DE UTILIDADES
<cstdlib> General purpose utilities: program control, dynamic memory allocation, random numbers, sort and
search
<csetjmp> Macro (and function) that saves (and jumps) to an execution context
LABORATORIO DE PROGRAMACIÓN I
<functional> Function objects, Function invocations, Bind operations and Reference wrappers
o Limites numéricos
<climits> limits of integral types
<cinttypes> (desde C++11) formatting macros , intmax_t and uintmax_t math and conversions
o Manejo de errores
LABORATORIO DE PROGRAMACIÓN I
<exception> Exception handling utilities
BIBLIOTECA DE STRING
<cctype> Functions to determine the type contained in character data
BIBLIOTECA DE CONTENEDORES
<array> (desde C++11) std::array container
LABORATORIO DE PROGRAMACIÓN I
<queue> std::queue and std::priority_queue container adaptors
BIBLIOTECA DE ALGORITMOS
<algorithm> Algorithms that operate on containers
<execution> (C++17) Predefined execution policies for parallel versions of the algorithms
BIBLIOTECA DE ITERADORES
<iterator> Container iterators
BIBLIOTECA DE NUMEROS
<cmath> Common mathematics functions
BIBLIOTECA DE ENTRADA/SALIDA
<iosfwd> forward declarations of all classes in the input/output library
LABORATORIO DE PROGRAMACIÓN I
BIBLIOTECAS DE LOCALIZACIÓN
<locale> Localization utilities
7. BIBLIOGRAFÍA
Apache. (s/f). Apache C++ Standard Library User’s Guide. Recuperado el 23 de enero de 2019, de
http://stdcxx.apache.org/doc/stdlibug/noframes.html
Brookshear, J. G. (2012). Introducción a la Computación. Pearson Education.
GNU. (s/f). The GNU Standard C++ Library. Recuperado el 23 de enero de 2019, de https://gcc.gnu.org/
Norton, P. (2006). Introducción a la Computación. MCGRAW-HILL / INTERAMERICANA DE MEXICO.
Trejos, O. (2012). Consideraciones sobre la evolución del pensamiento a partir de los paradigmas de
programación de computadores. Tecnura, 16(32), 68–83.
https://doi.org/10.14483/udistrital.jour.tecnura.2012.2.a06