lunes, 12 de agosto de 2019

LENGUAJE C


¿Que es el Lenguaje C?

C es un lenguaje de programación originalmente desarrollado por Dennis M. Ritchie entre 1969 y 1972 en los Laboratorios Bell, como evolución del anterior lenguaje B, a su vez basado en BCPL.

Al igual que el B, es un lenguaje orientado a la implementación de Sistemas operativos, concretamente Unix. 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 de tipos de datos estáticos, 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.

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO(ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portable entre plataformas y/o arquitecturas.

Historia:

La historia de C parte de un lenguaje anterior, el lenguaje B, escrito por Ken Thompson en 1970 con el objetivo de recodificar el sistema operativo UNIX, que hasta el momento se había programado en ensamblador. La pega del ensamblador era que lo ligaba a una serie de máquinas concretas, por lo que conseguir un lenguaje abstraído de cada máquina conseguiría una portabilidad del sistema muchísimo mayor. A su vez B fue inspirado en el BCPL de Martin Richard, diseñado tres años antes.

En 1972 es Dennis Ritchie (de los Laboratorios Bell de AT&T) quien diseña finalmente C a partir del B de Thompson, aportando un diseño de tipos y estructuras de datos que consiguen una claridad y eficacia en el lenguaje muy superior. Es un lenguaje que permite realizar una programación estructurada economizando las expresiones, con abundancia de operadores y tipos de datos (aunque los básicos sean pocos), codificando en alto y bajo nivel simultáneamente, reemplazando ventajosamente la programación en ensamblador y permitiendo una utilización natural de las funciones primitivas del sistema. Además, no está orientado a ningún área en especial y sobre todo consigue un código objeto altamente optimizado que repercute en que los programas son muy rápidos.

Durante muchos años no existen reglas estándar para el lenguaje, pero en 1983 se decide formar un comité con el objetivo de crear el estándar ANSI (Instituto Nacional Americano de Estándares). El proceso dura seis años y a principios de los 90 el estándar es reconocido por la ISO (Organización Internacional de Estándares) y comienza a comercializarse con el nombre ANSI C.




Características:
  • Es de propósito general, esto significa que puede ser usado tanto para el desarrollo de sistemas operativos como para programas científicos, programas de aplicación o programas de educación y juegos.
  • Posee una alta transportabilidad ya que los programas escritos en C pueden ser llevados de un tipo de ordenador a otro y funcionarán. Los cambios que hay que realizar son mínimos.
  • Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.
  • Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).
  • Como solo tiene 32 palabras reservadas se dice que es compacto.
  • Un sistema de tipos que impide operaciones sin sentido.
  • Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente.
  • Acceso a memoria de bajo nivel mediante el uso de punteros.
  • Interrupciones al procesador con uniones.
  • Un conjunto reducido de palabras clave.
  • Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros.
  • Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.
  • Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable "empleado").


Estructura básica de un programa en C


Un programa escrito en el lenguaje de programación C está formado siempre por una o más funciones, una de las cuales, obligatoriamente debe ser la que representa al programa principal y se designa la palabra reservada main. Esta función denominada main, debe ir acompañada de dos llaves ({}) que determinan el principio y el fin del programa.
Todo programa escrito en el lenguaje C, necesita unos ficheros de cabecera.
En estos ficheros de cabecera, se incluyen las definiciones de muchas de las funciones que necesitamos para nuestros programas. Muchos ficheros de cabecera son propios del sistema, como es el caso de "stdio.h", "stdlib.h", "math.h", "string.h", etc. Tambien se pueden crear ficheros de cabecera propios de nuestro programa. Esto es, se van a crear una serie de funciones que nuestra aplicación necesitara con frecuencia o en diferentes archivos. De esta manera ahorramos líneas de código y tiempo.
Estos ficheros de cabecera se definen con la directriz #include "fichero.h" si el fichero es propio del proyecto, es decir, si lo hemos creado nosotros, o bien la directriz #include si la librería es propia del sistema. Gracias a esta directriz, se le indica al compilador que incluya el fichero especificado en el programa fuente. Además de esta directriz, existe #define "identificador valor" le indica al compilador, que cada vez que en nuestro programa aparezca "indicador", se sustituirá por "valor2.
Una sentencia es la mínima unidad ejecutable de un programa C. Una sentencia C consta de una palabra clave (if, else, while, for, etc.), expresiones, declaraciones o llamadas a funciones.
Toda sentencia simple acaba con un punto y coma (;).
Todo lenguaje de programación permite al programador introducir los comentarios que desee dentro de los ficheros fuente que contienen el código de su programa. La misión de estos comentarios es servir de explicación o aclaración sobre cómo está desarrollado el programa, de forma que pueda ser entendido por cualquier otra persona o por el propio programador un tiempo después. El compilador ignora estos comentarios siempre cuando estén expresados dentro de los símbolos "/*" para indicar el comienzo del comentario y "*/" para indicar el final.
Existe además otro tipo de comentario en una sola línea que únicamente va precedido por "//".
Para poder entender esto mejor, vamos a crear nuestro primer programa en lenguaje C.




      Fuentes:

No hay comentarios:

Publicar un comentario