jueves, 13 de febrero de 2014

Introducción al Lenguaje C


Introducción

C es un lenguaje de programación de propósito general que ofrece economía sintáctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño, sencillo y no está especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje. 

Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no está ligado a ningún sistema operativo ni a ninguna máquina concreta. Se le suele llamar lenguaje de programación de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se pueden desarrollar cualquier tipo de aplicación. 

La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, números enteros y en coma flotante, de varios tamaños. Además se pueden crear tipos derivados mediante la utilización de punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribió el propio sistema operativo en C. 

C trabaja con tipos de datos que son directamente tratables por el hardware de la mayoría de computadoras actuales, como son los caracteres, números y direcciones. Estos tipos de datos pueden ser manipulados por las operaciones aritméticas que proporcionan las computadoras. No proporciona mecanismos para tratar tipos de datos que no sean los básicos, debiendo ser el programador el que los desarrolle. Esto permite que el código generado sea muy eficiente y de ahí el éxito que ha tenido como lenguaje de desarrollo de sistemas. No proporciona otros mecanismos de almacenamiento de datos que no sea el estático y no proporciona mecanismos de entrada ni salida. Ello permite que el lenguaje sea reducido y los compiladores de fácil implementación en distintos sistemas. Por contra, estas carencias se compensan mediante la inclusión de funciones de librería para realizar todas estas tareas, que normalmente dependen del sistema operativo. 

Originariamente, el manual de referencia del lenguaje para el gran público fue el libro de Kernighan y Ritchie, escrito en 1977. Es un libro que explica y justifica totalmente el desarrollo de aplicaciones en C, aunque en él se utilizaban construcciones, en la definición de funciones, que podían provocar confusión y errores de programación que no eran detectados por el compilador. Como los tiempos cambian y las necesidades también, en 1983 ANSI establece el comité X3J11 para que desarrolle una definición moderna y comprensible del C. El estándar está basado en el manual de referencia original de 1972 y se desarrolla con el mismo espíritu de sus creadores originales. La primera versión de estándar se publicó en 1988 y actualmente todos los compiladores utilizan la nueva definición. Una aportación muy importante de ANSI consiste en la definición de un conjunto de librerías que acompañan al compilador y de las funciones contenidas en ellas. Muchas de las operaciones comunes con el sistema operativo se realizan a través de estas funciones. Una colección de ficheros de encabezamiento, headers, en los que se definen los tipos de datos y funciones incluidas en cada librería. Los programas que utilizan estas bibliotecas para interactuar con el sistema operativo obtendrán un comportamiento equivalente en otro sistema. 

Características Principales

Palabras clave

En C se reservan ciertas palabras clave con ciertos significados específicos.

auto  breakchar  constcontinue  defaultdodoubleenumextern
case floatint  longregister  shortsignedsizeof staticstruct
union volatile else while return unsigned  goto typedef for if

Tipos de Datos

TIPO  TAMAÑO NOMBRE  DESCRIPCIÓN 
Int1
Short 
1 bit0 a 1  Entero de 1 bit
 Int8
Long
8 bits0 a 255  Entero 
Int16
Long
16 bits0 a 65.535  Entero de 16 bits
Int32  32 bits0 a 4.294.967.295 Entero de 32 bits
Float  32 bits1.175x10^-38 a3.402x10^-38  Coma flotante
Char 8 bits0 a 255 Carácter
Void  -- Sin valor
Signed Int8  8 bits-128 a +127  Entero con signo
Signed Int16 16 bits-32768 a +32767  Entero largo con signo
Signed Int32 32 bits-2^n a +(2^n-1) Entero 32 bit con signo

Las constantes

123  Decimal
0123 Octal (0)
0x123 Hexadecimal(0x)
0b010010 Binario(0b)
'x' Carácter
'\010' Carácter Octal
'\xA5' Carácter Hexadecimal

Caracteres especiales

 \n Cambio de línea
   \r   Retorno de carro
   \t   Tabulación
   \b   Backspace

Operadores

De Asignación

 \n Cambio de línea
   +   Suma
   -   Resta
   *   Multiplicación
   /   División
   %   Resto de una división entera
   --   Incremento
   ++   Decremento
   sizeof     Determina el tamaño, en bytes, de un operando  

Relacionales

 < Menor que
   >   Mayor que
   >=   Mayor o igual que
   <=   Menor o igual que
   ==    Igual
   !=    Distinto
   ?:    Expresión condicional

Lógicos

 ! NOT
   &&   AND
   ||   OR

De bits

~Complemento a 1
   &   AND
   ^   OR EXCLUSIVA
   |   OR
  >>   Desplazamiento a derecha
  <<   Desplazamiento a izquierda

Punteros

 & Dirección
   *   Indirección
   ->   Puntero o Estructura









0 comentarios:

Publicar un comentario

Aprende a Programar tus propias aplicaciones