|
|
Programación: Introducción al lenguaje de programación ANSI C
Os introducimos a la programación en C, explicamos cómo compilar el código fuente de los programas en ANSI C en Microsoft Windows y GNU Linux. Os explicamos cómo realizar aplicaciones en ANSI C, ejemplos de código, sintaxis, estructuras de control, secuencias de escape, tipos de datos, operadores aritméticos y de asignación, variables, constantes, etc.
Historia del lenguaje de programación CCC es un lenguaje de programación creado en 1972 por Kenneth L. Thompson, Brian Kernighan y Dennis M. Ritchie en los Laboratorios Bell. C surgió como evolución del anterior lenguaje B, a su vez basado en BCPL. C es un lenguaje orientado a la implementación de Sistemas Operativos. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. Se trata de un lenguaje débilmente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos. ANSI C, ISO CA finales de la década de 1970, C empezó a sustituir a BASIC como lenguaje de programación de microcomputadores predominante. Durante la década de 1980 se empezó a usar en los IBM PC, lo que incrementó su popularidad significativamente. Al mismo tiempo, Bjarne Stroustrup empezó a trabajar con algunos compañeros de Bell Labs para añadir funcionalidades de programación orientada a objetos a C. El lenguaje que crearon, llamado C++, es hoy en día el lenguaje de programación de aplicaciones más común en el sistema operativo Microsoft Windows; mientras que C sigue siendo más popular en el entorno Unix. Otro lenguaje que se desarrolló en esa época, Objective C, también añadió características de programación orientada a objetos a C. En 1983, el Instituto Nacional Estadounidense de Estándares organizó un comité, X3j11, para establecer una especificación estándar de C. Se completó el estándar en 1989 y se ratificó como el "Lenguaje de Programación C" ANSI X3.159-1989. Esta versión del lenguaje se conoce a menudo como ANSI C, o a veces como C89 (para distinguirla de C99). En 1990, el estándar ANSI (con algunas modificaciones menores) fue adoptado por la Organización Internacional para la Estandarización (ISO) en el estándar ISO/IEC 9899:1990. Esta versión se conoce a veces como C90. No obstante, "C89" y "C90" se refieren en esencia al mismo lenguaje. Uno de los objetivos del proceso de estandarización del ANSI C fue producir una extensión al C de Kernighan y Ritchie, incorporando muchas funcionalidades no oficiales. Sin embargo, el comité de estandarización incluyó también muchas funcionalidades nuevas, como prototipos de función, y un preprocesador mejorado C++C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma. Una particularidad del C++ es la posibilidad de redefinir los operadores (sobrecarga de operadores), y de poder crear nuevos tipos que se comporten como tipos fundamentales. El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y se refiere a que C++ es una extensión de C.
Estructura de un programa ANSI CTodo programa en C consta de una o más funciones, una de las cuales se llama main. El programa comienza en la función main, desde la cual es posible llamar a otras funciones. El resto de las funciones necesarias pueden declararse antes o después de la función main. Cada función estará formada por la cabecera de la función, compuesta por el nombre de la misma y la lista de argumentos (si los hubiese), la declaración de las variables a utilizar y la secuencia de sentencias a ejecutar. Un ejemplo genérico: includes
variables y constantes globales
main ( )
{
variables locales
bloque de sentencias
del programa principal
llamada a funcion1
llamada a funcion2
}
funcion1 ( )
{
variables locales
bloque de sentencias
}
[tipo de dato] funcion2 ( )
{
variables locales
bloque de sentencias
}
Introducir comentarios entre el código en ANSI CEn la programación es conveniente añadir comentarios, cuando se estime necesario, para poder saber que función tiene cada parte del código. Estos comentarios serán útilies para otros programadores que deban utilizar el código generado. Para insertar comentarios en un programa escrito en C se utilizarán los símbolos /* (para iniciar el comentario) y */ (para cerrar el comentario). Un ejemplo de programa con comentarios:
Como se puede ver en el ejemplo, C permite que los comentarios ocupen varias líneas. Lógicamente, los comentarios no serán tenidos en cuenta por el compilador.
Secuencias de escape en ANSI CEn el lenguaje de programación C, determinados caracteres no representados gráficamente se pueden representar mediante lo que se conoce como secuencia de escape. A continuación os mostramos las secuencias de escape habituales en C y lo que significan:
Un ejemplo del uso de las secuencias de escape en C:
Palabras clave (keywords) o palabras reservadas de ANSI CEn C, como en cualquier otro lenguaje de programación, existen una serie de palabras clave (keywords) que el usuario no puede utiiza como identificados (nombres de variables, nombres de funciones, nombres de constantes, etc.). A continuación mostramos las palabras clave (reservadas) de ANSI C: auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while. Tipos de datos en ANSI CEn ANSI C existen básicamente cuatro tipos de datos, aunque podremos definir nuestros propios tipos de datos a partir de estos cuatro. A continuación os los mostramos:
Calificadores de tipos de datos en ANSI CLos calificadores para los tipos de datos permiten modificar el rango de valores de éstos. Estos calificadores:
Variables en ANSI CDeclaración de variables en CUna variable es un tipo de dato, referenciado mediante un identificador (que es el nombre de la variable). Su contenido podrá ser modificado a lo largo del programa. Una variable sólo puede pertenecer a un tipo de dato. Para poder utilizar una variable, primero tiene que ser declarada:
En C las variables pueden ser inicializadas con un valor al ser declaradas:
En C de pueden declarar varias variables del mismo tipo en una sola sentencia:
Ejemplo de declaración de variables en C:
Tipos de variables según su ámbito en CLas variables en ANSI C pueden ser de dos tipos según el lugar en que sean declaradas: globales o locales:
Nombre de las variables en CEl identificador o nombre de la variable no puede ser una palabra clave y los caracteres que se pueden utilizar para el nombre son las letras de la "a" a la "z" (tanto en mayúsculas como en minúsculas). No son válidas las letras "ñ" ó "Ñ". Para el nombre de las variables están permitidos los números (salvo como primer carácter, un nombre de variable no puede empezar por un número). También se permite el símbolo de subrayado "_". El nombre de una variable en C puede tener, como máximo, 31 caracteres. Constantes en ANSI CLas constantes mantienen su valor a lo largo de todo el programa, no son modificables como ocurre con las variables. Para indicar al compilador de C que se trata de una constante, usaremos la directiva #define, de la siguiente forma:
No se indica el punto y comoa de final de sentencia, tampoco el tipo de dato ni el igual para la asignación. Un ejemplo de utilización de constantes en ANSI C:
Librería estándar en C, inclusión de ficheros, includeEl lenguaje de programación C permite utilizar funciones que no estén incluídas en el propio programa. Para ello se puede utilizar la directiva #include, que permite añadir librerías o funciones que se encuentran en otros ficheros a nuestro programa. Los fincheros o librerías externos se podrán indicar o bien introduciendo su unidad y carpeta (ruta completa) y nombre de fichero, por ejemplo:
Otro ejemplo, con ruta completa:
O bien indicando al compilador que se encuentran en la carpeta de liberías predeterminada, de la siguiente forma:
Operadores aritméticos, de asignación, relacionales y lógicos en ANSI CLos operadores son signos especiales que indican determinadas operaciones a realizar con las variables o constantes sobre las que actúan en el programa. Operadores aritméticos Existen dos tipos de operadores aritméticos: Los binarios:
La sintaxis para los operadores aritméticos binarios:
Y los unarios:
La sintaxis para los operadores aritméticos unarios:
Operadores de asignación
Operadores relacionales
Operadores lógicos
Programa de ejemplo de uso de operadores en lenguaje ANSI C
Entrada/salida, pedir datos y mostrar resultados por pantalla en ANSI CSentencia printf ( ) para mostrar resultados por pantalla La función printf perteneciente a la librería stdio.h permite mostrar por pantalla valores numéricos, caracteres y cadenas de texto. La forma general de la sentencia printf es el siguiente:
En la cadena de control (cadena_control) indicaremos la forma en que se mostrarán los argumentos posteriores. printf permite introducir una cadena de texto sin necesidad de argumentos, o combinar ambas posibilidades, así como secuencias de escape. En el caso de que utilicemos argumentos deberemos indicar en la cadena de control tantos modificadores como argumentos vayamos a presentar. El modificador está compuesto por el carácter % seguido por un carácter de conversión, que indica de qué tipo de dato se trata. Los modificadores más comunes son:
El formato de los modificadores es el siguiente:
Un ejemplo de programa en ANSI C que utiliza la función printf:
El programa print.c en ejecución:
Sentencia scanf ( ) para pedir datos al usuario en ANSI C La función scanf de la librería stdio.h permite leer datos de la entrada estándar (que por defecto es el teclado). La forma general de scanf es la siguiente:
En la cadena de control (cadena_control) indicaremos, por regla general, los modificadores que harán referencia al tipo de dato de los argumentos. Al igual que en la sentencia printf los modificadores estarán formados por el carácter % seguido de un carácter de conversión. Los argumentos indicados serán, nuevamente, las variables. La principal característica de la sentencia scanf es que necesita saber la posición de la memoria del ordenador en que se encuentra la variable para poder almacenar la información obtenida. Para indicarle esta posición utilizaremos el símbolo ampersand (&), que colocaremos delante del nombre de cada variable. Esto no será necesario en los arrays. Un ejemplo de programa que utiliza la función scanf:
El programa scanf.c en funcionamiento:
En el ejemplo anterior la lectura de la cadena de caracteres "nombre" se detiene en cuanto se encuentra un espacio en blanco, por lo que para leer una línea completa con varias palabras hay que utilizar otras técnicas diferentes. En los formatos de la cadena de control de scanf () pueden introducirse corchetes [...] que se utilizan, por ejemplo, de la siguiente forma:
La sentencia anterior leerá sólo los caracteres que aparecen en el corchete AB \n\t. Cuando se encuentra un carácter distinto de estos se detiene la lectura y se devuelve el control al programa que llamó a scanf. Si los corchetes contiene un carácter ^, se leerán todos los caracteres distintos de los caracteres que se encuentran dentro de los corchetes. Por ejemplo, la siguiente sentencia:
leerá todos los caracteres (aunque haya espacios) hasta que encuentra el carácter nueva línea (\n). Por lo tanto esta sentencia puede utilizarse para leer frases completas (varias palabras separadas por espacios), hasta que se pulse INTRO.
Compilar programa C, linkar, generar ejecutableLa compilación de un programa C se realiza en varias fases:
Compilación de programas C en Microsoft WindowsExisten numerosos compiladores y entornos de desarrollo para C, algunos de ellos (gratuitos): Watcom, Dev-C++, MinGW GCC 5.1.6, Turbo C, etc. Compilación con Borland Turbo C en Microsoft WindowsPara explicar cómo compilar el código C y generar el ejecutable (.exe) correspondiente en Windows utilizaremos Turbo C, por tratarse, quizás, del compilador más famoso en su época. Turbo C es un entorno de desarrollo integrado y un compilador desarrollado por Borland para programar en lenguaje C. Su primera versión fue lanzada en 1987, a la que siguieron las versiones 1.5 y 2.0, de 1989. Fue el compilador más popular para desarrollar en C en entornos MS-DOS. Se le considera el primer IDE para C disponible para dicha plataforma. Turbo C fue sustituido por Turbo C++ en 1990. Éste fue sustituido, a su vez, por el Borland C++, disponible también para Windows. Tras el Borland C++ llegó el C++Builder. Para compilar el código fuente (source code) de C con Turbo C, en primer lugar lo descargaremos, bien desde la web de Codegear (Embarcadero Technologies) o bien desde esta web, en el enlace: Descarga gratuita de Turbo C 2.01 Descomprimiremos el fichero de la descarga: Turbo C 2.01.zip, copiaremos la carpeta "TC" de la descarga a la unidad C:, es conveniente no moverla a carpetas dentro de subcarpetas con nombres "largos", pues se trata de una aplicación diseñada para MS-DOS. Conviene crear las aplicaciones (ficheros) C en la carpeta "TC" del compilador, de esta forma será más fácil compilarlas. Por ejemplo, crearemos el fichero fibonacc.c dentro de la carpeta "C:\TC" con el contenido:
A continuación abriremos una ventana de MS-DOS, desde "Inicio" - "Ejecutar", escribiendo "cmd" y pulsando "Aceptar":
Accederemos a la carpeta "TC", con el comando: cd c:\tc Y compilaremos el fichero con el código fuente C con el comando: tcc fibonacc.c (donde "fibonacc.c" es el nombre del fichero con el programa C) tcc comprobará que no haya errores de sintaxis en el código, si no los hay generará el ejecutable de la aplicación, generará un fichero con el mismo nombre que el fichero de fuentes y con extensión .exe, en este caso "fibonacc.exe", que podremos ejecutar en nuestro equipo (o en cualquier otro):
Si hay algún error o warning (aviso) mostrará la línea en la que se ha producido y el error o aviso:
Mientras haya errores no se generará el ejecutable. El ejecutable generado con tcc y el fuente .c:
Turbo C 2.01 también incluye un IDE gráfico para el desarrollo de programas C, desde el cual se pueden compilar las aplicaciones. Para ello hay que ejecutar el fichero "C:\TC\TC.EXE". Para compilar en busca de errores de sintaxis pulsaremos en el menú "Run" - "Run":
Nos mostrará un mensaje con el resultado de la compilación del programa C:
Si ha habido algún error de compilación al pulsar una techa nos los mostrará en el editor, tanto la línea de código donde se haya producido como el error de sintaxis:
Para generar el fichero ejecutable (.exe), tras corregir los errores de compilación, pulsaremos "Compile" - "Make EXE file":
Compilación de programas C en GNU LinuxEn GNU Linux también existen multitud de compiladores para C. En nuestro caso os explicaremos cómo instalar y compilar y generar un ejecutable con el compilador GCC (GNU Compiler Collection). En primer lugar instalaremos GCC en GNU Linux, os mostramos cómo hacerlo en GNU Linux Ubuntu 9.04. Este sistema operativo no tiene modo gráfico por lo que al cargarse se abrirá una ventana de terminal directamente, si disponemos del modo gráfico abriremos una ventana de terminal y ejecutaremos el siguiente comandos GNU Linux:
A continuación accederemos a la carpeta donde tengamos el programa (fichero con los fuentes C) y ejecutaremos el siguiente comando para compilarlo (comprobar la sintaxis y generar el ejecutable):
Si todo es correcto, GCC habrá generado un fichero ejecutable llamado "a.out":
Para probar y ejecutar el fichero generado introduciremos el siguiente comando:
Algunos ejemplos de código fuente en ANSI C, C++En el siguiente enlace os mostramos muchos ejemplos de código fuente en C (Series de Fibonacci, ordenación, máximos, mínimos, apertura de ficheros, etc.): Ejercicios resueltos en el lenguje de programación C
Artículos relacionados
CréditosArtículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft. Anuncios
Enviado el Domingo, 18 octubre a las 23:39:56 por ajpdsoft
|
|