Logo DIE

Entorno de Programación para Lenguaje C (Editores, Compilación y Ejecución)

Unidad de Apoyo para el Aprendizaje

Iniciar

Introducción


Un lenguaje de programación permite expresar una serie de instrucciones que podrán ser realizadas por una computadora. Uno de los lenguajes de programación mayormente difundidos es el lenguaje C.

C es un lenguaje de programación de propósito general que ofrece como ventajas economía de expresión, control de flujo y estructuras de datos, con un conjunto diverso de operadores.

Lenguaje C es muy utilizado, debido a que las instrucciones son muy cercanas a la manera en que un ser humano se comunica, es decir, las instrucciones no son tal cual las que una computadora podría entender, ya que, para hablar el lenguaje de una computadora, se necesitaría conocer a fondo el microprocesador que posee, el sistema operativo instalado, la arquitectura, etc. Por esta razón, lenguaje C es conocido como un lenguaje de alto nivel; esto significa que las instrucciones podrían ser entendidas fácilmente por una persona (lenguaje más cercano al ser humano). En contraparte, un lenguaje de bajo nivel se refiere a aquellas instrucciones que son cercanas a lo que la máquina puede entender y difícilmente pueden ser comprendidas por una persona que no tenga conocimientos de la máquina en la que opera dicho código (lenguaje máquina).

Algunos autores consideran que lenguaje C es un lenguaje de nivel medio, ya que no es totalmente transparente, pero posee elementos que están relacionados directamente con la arquitectura de la máquina a la hora de programar.

Lenguaje C es muy poderoso; permite combinar características de un lenguaje de alto nivel (facilidad de programación), con uno de bajo nivel (manejo más preciso de una máquina), por lo que se han creado variantes que permiten programar miles de dispositivos electrónicos en el mundo con sus respectivos compiladores.

Un programa en lenguaje C se elabora describiendo cada una de las instrucciones de acuerdo a las reglas definidas en éste (sintaxis) en un archivo de texto plano, para después ser procesadas en un compilador. Un compilador es un programa que toma como entrada un archivo de texto y tiene como salida un programa ejecutable, el cual tiene instrucciones que pueden ser procesadas por el hardware de la computadora en conjunto con el sistema operativo sobre el que se ejecuta. Por lo tanto, un programa escrito en lenguaje C, siguiendo su estándar (ANSI C), debe ser compilado en cada máquina y sistema operativo en el que se desee ejecutar.

Para realizar un programa usando lenguaje C es necesario tomar en cuenta el sistema operativo que tiene la máquina y el tipo de interfaz con el que cuenta (interfaz gráfica o línea de comandos); esto para seleccionar un editor de texto disponible en el mismo e instalar el compilador en el equipo.



Ejecutar programas en lenguaje C, utilizando diversos ambientes y herramientas de desarrollo para su uso adecuado en la consola de comandos.

Editores para lenguaje C


Un programa en C debe ser escrito en un editor de texto, para después generar un programa ejecutable en la computadora por medio de un compilador. Tanto el editor de texto como el compilador dependen del sistema operativo y de la interfaz de usuario (gráfica o texto) que se disponga, por lo que son factores que se deben tomar en cuenta a la hora de elegir el entorno para desarrollar programas en lenguaje C.

Es importante señalar la diferencia entre…

Esquema

Edita un texto plano que puede tener muchas utilidades como guardar una configuración, tener escrito un programa, etc., y será interpretado hasta que se haga una lectura de éste.

Permite dar formato al texto, a la hoja donde está escrito, inscrustar imágenes, etc., su salida puede ser un archivo de texto plano que contiene etiquetas que señalan el formato que se le dio al texto o algo un poco más complejo.



A continuación, se presentan algunos de los editores más comunes.

Editor visual interface (VI) de GNU/Linux




El editor VI (visual interface) es el editor de facto en cualquier distribución de sistemas operativos con núcleo basado en UNIX. Está disponible en línea de comandos, y si el sistema operativo tiene entorno gráfico, se puede acceder a él desde la terminal.

VI es un editor que puede resultar difícil de usar en un inicio. Aunque existen editores más intuitivos en su uso, en muchas ocasiones VI es el único disponible.

Para iniciar VI debe teclearse desde la línea de comandos:
vi nombre_archivo[.ext]

Donde “nombre_archivo” puede ser el nombre del archivo a editar o el nombre de un archivo nuevo que se desee crear. Es posible incluir la ruta en donde se localiza o localizará el archivo. VI tiene tres modos de operación: modo comando, modo de última línea y modo texto.

Es el modo por defecto de VI cuando se abre. Las teclas presionadas ejecutan diversas acciones predeterminadas y no se puede editar el texto libremente. Los comandos son sensitivos a las mayúsculas y a las minúsculas. Algunos comandos disponibles son los siguientes:

  • ↑ o k mueve el cursor hacia arriba.

  • ↓ o j mueve el cursor hacia abajo.

  • ← o h mueve el cursor hacia la izquierda.

  • → o l mueve el cursor hacia la derecha.

  • 1G lleva el cursor al comienzo de la primera línea.

  • G lleva el cursor al comienzo de la última línea.

  • x borra el carácter marcado por el cursor.

  • dd borra o corta la línea donde está el cursor.

  • ndd donde n es la cantidad de líneas que se borrarán o cortarán después del cursor.

  • D borra o corta desde la posición de cursor hasta el final de la línea.

  • dw borra o corta desde la posición del cursor hasta el final de una palabra.

  • yy copia la línea en donde está el cursor.

  • p pega un contenido copiado o borrado.

  • u deshace el último cambio.

Imagen1

VI en modo comando.

Se puede acceder a él desde el modo de comando. Es muy similar al modo comando, pero los comandos no tendrán efecto hasta que se presiona la tecla Enter; además, se visualizará el comando en la última línea del editor. Es posible cancelar el comando con la tecla Esc. Los comandos de última línea se caracterizan porque inician con /, ? o.

Algunos ejemplos son los siguientes:

  • /texto donde la cadena texto será buscada hacia delante de donde se encuentra el cursor.

  • ?texto donde la cadena texto será buscada hacia atrás de donde se encuentra el cursor.

  • :q para salir del editor.

  • :q! para salir del editor sin guardar los cambios.

  • :w para guardar los cambios sin salir del editor.

  • :w nombre_archivo para realizar la orden “guardar como”, siendo nombre_archivo el nombre donde se guardará el documento.

  • :wq guarda los cambios y sale del editor.

Imagen1

VI en modo de última línea.

Este modo permite insertar texto. Las teclas presionadas ya no harán una acción como en el modo comando, sino que lo que se teclee será el contenido que formará el texto del documento. Se puede desplazar con las flechas del teclado y borrar con la tecla de retroceso o de suprimir, como cualquier editor de texto.

Para ingresar al modo insertar existen varios comandos:

  • i pasa al modo insertar poniendo el texto a la izquierda del cursor.

  • a pasa al modo insertar poniendo el texto a la derecha del cursor.

  • A pasa al modo insertar colocando el texto al final de la línea donde el cursor se encuentra.

  • I pasa al modo insertar colocando el texto al principio de la línea donde el cursor se encuentra.

  • O coloca una línea arriba de la línea seleccionada por el cursor y pasa al modo insertar.

  • o coloca una línea debajo de la seleccionada por el cursor y pasa al modo insertar.

Para salir del modo insertar debe presionarse la tecla Esc. Para verificar que se encuentra en modo insertar se puede ver el texto -- insertar -- en la última línea del editor.

Imagen1

VI en modo de insertar



Editor NANO de GNU/Linux

Editor de texto disponible para sistemas operativos basados en UNIX en línea de comandos. Se puede acceder en un entorno gráfico desde la aplicación de terminal.

Es mucho más intuitivo que VI, aunque menos potente. No es necesario saber cómo se utiliza, ya que proporciona una interfaz en la parte de abajo del editor que describe los comandos básicos. NANO es un editor clon de otro llamado PICO.

Para iniciar NANO, debe teclearse desde la línea de comandos:
nano nombre_archivo[.ext]

Donde “nombre_archivo” puede ser el nombre del archivo a editar o el nombre de un archivo nuevo.

Una vez en el editor, en la parte inferior se pueden observar los comandos básicos. Si se presiona la tecla F1 es posible visualizar la ayuda con la lista de todos los comandos que existen. Los atajos de teclado pueden corresponder a…

• ^ que es la tecla Ctrl.
• M- que es la tecla Esc o bien Alt.

Esquema

El editor de texto NANO.

Esquema

Ayuda del editor de texto NANO.



Gedit

Esquema



A diferencia de los editores de línea de comandos, la mayoría de los editores con interfaz gráfica tienen funciones como enumerar cada línea, sangría automática (en los lenguajes de programación se suele dejar tabulaciones antes de iniciar cada línea, que ayudan a jerarquizar un programa codificado, con el fin de aumentar la legibilidad y en algunos cuantos son de vital importancia), corrector ortográfico y coloreado sintáctico (colorear los distintos componentes sintácticos de ciertos lenguajes de programación, con la finalidad de facilitar el desarrollo con elementos visuales).

Esquema





Esquema

Compiladores


A continuación, se presentan algunos compiladores de lenguaje C.

GCC (GNU Compiler Collection)

Esquema

Suponiendo que se tiene un programa escrito en lenguaje C llamado calculadora.c, para compilarlo mediante la línea de comandos se debe localizar en la ruta donde el archivo se encuentra y ejecutar el comando:

gcc calculadora.c

Esto creará un archivo a.out (en Windows a.exe), que es el programa ejecutable resultado de la compilación. Si se desea que la salida tenga un nombre en particular, debe definirse por medio del parámetro -o de gcc; por ejemplo, para que se llame calculadora.out (en Windows calculadora.exe):

gcc calculadora.c -o calculadora.out

A veces, para realizar un programa más complejo, se necesitan bibliotecas que se instalaron en el equipo previamente y se definió su uso en el programa escrito en C, pero al momento de compilar el programa es necesario indicar a GCC que se está usando bibliotecas que no se encuentran en su repertorio de bibliotecas estándar. Para ello es necesario utilizar el parámetro -l seguido inmediatamente por el nombre de la biblioteca, sin dejar espacio alguno:

gcc calculadora.c -o calculadora -lnombre_libreria

Por ejemplo, la biblioteca math:

gcc calculadora.c -o calculadora -lm

LCC

Es un compilador similar a GCC de uso libre diseñado para ejecutarse en sistemas operativos Windows, sean de 32 bits o de 64 bits.

Para poder hacer uso de LCC, éste debe haber sido instalado y agregado al PATH del sistema (es la ruta que sigue el sistema oparativo para encontrar la ubicación de un ejecutable al ser llamado desde el símbolo de sistema). Se tiene que agregar al PATH por lo menos lcc.exe y lcclnk.exe localizados por defecto en C:\lcc\bin.

A diferencia de GCC, la compilación consiste en dos pasos, el primero genera un archivo objeto y el segundo a partir de éste genera el programa ejecutable. Existen opciones adicionales para usuarios avanzados a la hora de invocar al compilador.

Si se tiene un programa llamado calculadora.c, se debe establecer primero la ruta donde se encuentra el archivo y luego generar el archivo objeto calculadora.obj con el siguiente comando:

lcc calculadora.c

Después se tiene que generar el programa ejecutable calculadora.exe por medio de…

lcclnk calculadora.obj

TCC

Es un compilador de uso libre diseñado para ejecutarse en sistemas operativos Windows. Para poder hacer uso de TCC debe haber sido instalado previamente y agregado al PATH del sistema, al igual que LCC.

Se tiene también, como en GCC y LCC, diferentes opciones para usuarios avanzados.

Si se tiene un programa llamado calculadora.c, se tiene que establecer primero la ruta donde se encuentra el archivo. El siguiente comando permite generar el programa ejecutable y ejecutarlo:

tcc -run calculadora.c

Otros compiladores e IDE


Esquema

Fue diseñado para MD-DOS. Al instalarse LCC se incluye un IDE llamado wedit en el que basta escribir el programa en su editor y compilar y ejecutar el programa con la tecla F9

Es un programa que tiene como entrada un archivo de texto con el programa en lenguaje C y genera como salida el programa ejecutable y la impresión de errores o advertencias, si estas existen.

IDE (por sus siglas en inglés Integrated Development Enviroment), combina un editor de texto con un compilador, así como varias herramientas que facilita la programación haciendo el proceso de edición, compilación y ejecución transparente para el programador.



En la siguiente lista se presentan varios compiladores e IDE para varios sistemas operativos y arquitecturas. Algunos compiladores soportan otros lenguajes de programación, además de C.

GCC

EMX/RSXNT

Embarcadero (Borland)

LCC para Windows de 32 o 64 bits

Ch

Microsoft Visual C/C++

Code::Blocks

MinGW para Windows de 32 o 64 bits

Cygwim

Miracle C

Dev-C++

Orange C

DJGPP

Pelles C

TCC

Watcom





Ejecución




La ejecución es la última etapa en la creación de programas; sigue después de haber compilado el código fuente. El programa compilado se puede distribuir para equipos que ejecuten el mismo sistema operativo y tengan la misma plataforma de hardware (tipo de procesador, set de instrucciones y arquitectura en general). Los pasos para realizar la ejecución dependen del sistema operativo y de la interfaz del mismo.

En Windows se puede ejecutar el programa haciendo doble clic sobre el compilado, aunque se recomienda que la ejecución se haga desde una ventana de línea de comandos. Como el programa realizado es para línea de comandos, si se ejecuta en entorno gráfico en Windows el programa sólo se abrirá y se cerrará sin poder ver los resultados de la ejecución, aunque el programa haga sus funciones. Existen métodos para evitar que el programa se cierre, pero se debe tener cuidado de que estos sean ANSI C. Por ello, es mejor ejecutar el programa desde la línea de comandos porque, aunque el programa finalice su ejecución, los resultados continuarán siendo visibles en la consola.

Considerando que se tiene un programa compilado en un sistema base Unix cuyo nombre es calculadora.out, para ejecutarlo se debe teclear en línea de comandos:

./calculadora.out

en Windows, si se tiene un programa llamado calculadora.exe se debe teclear en la línea de comandos:

calculadora.exe

En ambos casos te debes localizar previamente en la ruta donde se encuentra el ejecutable. En Windows a veces puede omitirse mencionar .exe.

Si el programa realizado necesita tener una entrada de información por medio de argumentos, estos se colocan así:

calculadora argumento1 argumento2

En un inicio, cualquier programa escrito en lenguaje C sólo funcionará en modo línea de comandos, ya que para que tenga una interfaz gráfica se requiere de conocimientos avanzados sobre el lenguaje y del sistema operativo para el que se diseña el programa. Es difícil realizar un programa con interfaz gráfica universal y que respete ANSI C, ya que el entorno depende del sistema operativo y las herramientas que provee.

Por otro lado, muchos errores no se reflejarán en el compilador, porque el programa está correctamente escrito de acuerdo a lo que ANSI C señala, pero lo que se programó puede ser erróneo y tener resultados distintos a los deseados. Por ello, en la fase de ejecución se deben hacer diversas pruebas para verificar que el programa hace lo que debería.

Aunque el programa aparente funcionar, deben hacerse pruebas exhaustivas para verificar la integridad del programa. Por ejemplo, si el programa realiza una división, es necesario evaluar que el divisor no sea cero, o bien, que los números que se manejan no rebasen el valor máximo que el equipo soporta, entre muchos otros detalles que pueden presentarse.

Es común que se construya un programa conforme a lo que ANSI C determina y se pruebe en un equipo personal que, por lo general, es de altas prestaciones. A la hora de instalar ese programa en un equipo especializado que tiene prestaciones limitadas, el programa puede no funcionar, ya que no se optimizó. Por ejemplo, se crea un programa que al ejecutarse ocupa 600 MB en memoria principal en un equipo con 4 GB y se ejecutará sin problemas. No obstante, este programa tiene que correr en un equipo con 512 MB de memoria principal. El sistema operativo y otros procesos están ocupando ya una parte de esta memoria; aunque el sistema operativo haga lo posible por ejecutar el programa, será con un rendimiento pobre o simplemente el sistema se tardará en responder.

Es muy importante tratar de que un programa sea íntegro y optimizado para garantizar su correcto funcionamiento y, en ocasiones, para mantener el prestigio de su autor.

ícono

Actividad 1. Programa en lenguaje C utilizando VI

¡Es hora de entrar en acción! A continuación, crearás un programa en lenguaje C utilizando el editor VI de GNU/Linux. Recuerda que para crear un programa en lenguaje C debes realizar tres acciones por separado; primero debes crear el programa en un editor de texto; a esta etapa se le conoce como edición. Después, debes compilar el programa que creaste, utilizando un compilador (gcc, tcc, lcc, etc.); esta etapa se llama compilación. Al final, la etapa de compilación genera un archivo ejecutable, el cual se debe accionar para ver que el programa realiza lo deseado; esta etapa se llama ejecución.

ícono

Actividad 2. Utilizando un entorno de desarrollo integrado (IDE) para programar en lenguaje C

Existen herramientas, como los IDE, que nos ayudan a realizar las tareas de edición, compilación y ejecución de manera más fácil. Por esta razón es importante conocerlas. Para esta actividad utilizaremos Code::Blocks.

ícono

Autoevaluación. Entorno de programación para lenguaje C

Uno de los lenguajes de programación mayormente difundidos es el lenguaje C, por lo cual es importante conocer sus características, herramientas de desarrollo y su uso.


Fuentes de información

Bellard, F. (2018). Tiny C Compiler. Consultado de http://bellard.org/tcc/

Enríquez, P., (s. f.). Editor VI. Consultado de http://www.unirioja.es/cu/enriquez/docencia/Quimica/vi.pdf

Francisconi, H. (2014). Nano. Consultado de http://francisconi.org/linux/comandos/nano

MinGW.org. (2019). MinGW - Minimalist GNU for Windows. Consultado de http://www.mingw.org

Pfeifer, G. (GCC team). (2019). GCC, the GNU Compiler Collection. Consultado de https://gcc.gnu.org

Solano, J., García, E., Sandoval, L., Nakayama, A., Arteaga, I. y Castañeda, M. (2016). Manual de prácticas del laboratorio de Fundamentos de programación. Facultad de Ingeniería. Consultado de http://lcp02.fi-b.unam.mx

White-Hat Hacking. (2010). Uso de gcc bajo Linux. Consultado de https://whitehathacking.wordpress.com/2010/10/31/uso-de-gcc-bajo-linux/

Willus.org. (2010). Win32/64 C/C++ Compilers Page. Consultado de http://www.willus.com/ccomp.shtml



Cómo citar


Arteaga, T. I. y Nakayama, M. A. (2019). Entorno de programación para lenguaje C (edición, compilación y ejecución). Unidades de Apoyo para el Aprendizaje. CUAED/Facultad de Ingeniería-UNAM. Consultado el (fecha) de (vínculo)