Download - Historia Del Lenguaje c
HISTORIA DEL LENGUAJE “C”
En 1967 Martin Richard creo el lenguaje BCPL que fue la base para la
creación del lenguaje B escrito por Ken Thompson en 1970 con la intención de
recodificar el UNIX, que en su fase de arranque estaba codificado en lenguaje
ensamblador.
El lenguaje c fue creado por Dennis Ritchie en los laboratorios Bell
Telephone en 1972, el c fue creado con un fin específico: el diseño del
sistema operativo UNIX. Este lenguaje solo es una modificación del lenguaje
B. El lenguaje C se llama de esta forma debido a que su predecesor fue
llamado B.
La novedad que proporcionó el lenguaje C sobre el B fue el diseño de tipos y
estructuras de datos. Los tipos estructurados básicos de C son las estructuras,
las uniones, y los arrays. Estos permiten la definición y declaración de tipos de
mayor complejidad.
Los tipos básicos de datos en el lenguaje C eran "CHAR" (carácter), "INT"
(enteros), "FLOAT" (Reales en simple precisión), y "DOUBLE" (Reales en
doble Precisión). Posteriormente se añadieron los tipos "SHORT" (Enteros de
longitud<=longitud de un int), "LONG" (Enteros de longitud >= longitud de un
entero), "UNSIGNED" (Enteros sin signo), y "ENUMERACIONES".
Como el C es un lenguaje muy poderoso y flexible su uso se difundió muy
rápidamente más allá de los laboratorios Bell. Los programadores de todo el
mundo comenzaron a usarlo para escribir todo tipo de programas. Sin
embargo, diferentes organizaciones comenzaron a utilizar muy pronto sus
propias versiones del C, las pequeñas diferencias entre las implementaciones
comenzaron a dar problemas a los programadores. Para resolver este
problema, el American National Stándards (ANSI) formo un comité en 1983
para establecer una definición estándar del C, que llego a ser conocida como
C estándar ANSI. Con unas cuantas excepciones, todos los compiladores del
C modernos de adhieren a este estándar.
El lenguaje C inicialmente fue creado para la programación de:
-Sistemas operativos
-Intérpretes
-Editores
-Ensambladores
-Compiladores
-Administradores de bases de datos.
Actualmente, debido a sus características, puede ser utilizado para todo tipo
de programas.
Algunas de las versiones existentes son:
- Quick C
- C++
- Turbo C
- Turbo C ++
- Borland C
- Borland C++
- Microsoft C
- Turbo C 2.0
- Turbo C++ 1.0
- Borland C++ 2.0
ESTRUCTURAS DEL LENGUAJE “C”
Estructuras.
Las estructuras son colecciones de variables relacionadas bajo un nombre.
Las estructuras pueden contener variables de muchos tipos diferentes de
datos - a diferencia de los arreglos que contienen únicamente elementos de
un mismo tipo de datos.
Definición de estructuras
Las estructuras son tipos de datos derivados están construidas utilizando
objetos de otros tipos. Considere la siguiente definición de estructura: struct
ejemplo {char c; int i;}; La palabra reservada struct indica se está definiendo
una estructura. El identificador ejemplo es el nombre de la estructura. Las
variables declaradas dentro de las llaves de la definición de estructura son los
miembros de la estructura. Los miembros de la misma estructura deben tener
nombres únicos mientras que dos estructuras diferentes pueden tener
miembros con el mismo nombre. Cada definición de estructura debe terminar
con un punto y coma. La definición de struct ejemplo contiene un miembro de
tipo char y otro de tipo int. Los miembros de una estructura pueden ser
variables de los tipos de datos básicos (int, char, float, etc) o agregados como
ser arreglos y otras estructuras. Una estructura no puede contener una
instancia de sí misma. Declaramos variables del tipo estructura del siguiente
modo: struct ejemplo e1, a [10]; o alternativamente sin usar la palabra struct:
ejemplo e1, a [10];
Las declaraciones anteriores declaran variables e1 de tipo ejemplo y a de tipo
arreglo de ejemplo de dimensión 10. Se pueden declarar variables de tipo
estructura ejemplo colocando sus nombres a continuación de la llave de cierre
de la definición de estructura y el punto y coma, en el caso anterior: struct
ejemplo {char c; int i;} e1, a [10]; 1 Una operación válida entre estructuras es
asignar variables de estructura a variables de estructura del mismo tipo. Las
estructuras no pueden compararse entre sí.
Cómo inicializar estructuras
Las estructuras pueden ser inicializadas mediante listas de inicialización como
con los arreglos. Para inicializar una estructura escriba en la declaración de la
variable a continuación del nombre de la variable un signo igual con los
inicializadores entre llaves y separados por coma por ejemplo: ejemplo e1 =
{ ’a’, 10}; Si en la lista aparecen menos inicializadores que en la estructura los
miembros restantes son automáticamente inicializados a 0. Las variables de
estructura también pueden ser inicializadas en enunciados de asignación
asignándoles una variable del mismo tipo o asignándoles valores a los
miembros individuales de la estructura. Podemos inicializar una variable del
tipo fecha como sigue: struct fecha f = {4, 7, 1776, 186,”Julio”};
Cómo tener acceso a los miembros de estructuras
Para tener acceso a miembros de estructuras utilizamos el operador punto. El
operador punto se utiliza colocando el nombre de la variable de tipo estructura
seguido de un punto y seguido del nombre del miembro de la estructura. Por
ejemplo, para imprimir el miembro c de tipo char de la estructura e1 utilizamos
el enunciado: printf (” %c, e1.c); Para acceder al miembro i de la estructura e1
escribimos: e1.i En general, un miembro de una estructura particular es
referenciada por una construcción de la forma: nombre de estructura. Miembro
por ejemplo para chequear el nombre de mes podemos utilizar: if (strcmp
(d.nombre mes, “Agosto”) ==0).....
Cómo utilizar estructuras con funciones
Las estructuras pueden ser pasadas a funciones pasando miembros de
estructura individuales o pasando toda la estructura. Cuando se pasan
estructuras o miembros individuales de estructura a una función se pasan por
llamada por valor. Para pasar una estructura en llamada por referencia
tenemos que colocar el ’*’ o ’&’. Los arreglos de estructura como todos los
demás arreglos son automáticamente pasados en llamadas por referencia. Si
quisiéramos pasar un arreglo en llamada por valor, podemos definir una
estructura con ´único miembro el array. Una función puede devolver una
estructura como valor.
Estructuras Condicionales
Las estructuras condicionales en C utilizan el concepto expresiones
booleanas. A continuación se muestra un sencillo ejemplo en lenguaje C del
uso de estructuras condicionales
#include <stdio.h>
int main (){ int valor; printf ("Digite un valor entero:"); scanf ("%d", &valor); if (valor < 0) printf ("\nEl valor es negativo\n"); return 0;}
Este programa lee un número entero digitado por el usuario. Luego el
programa prueba el valor usando una estructura condicional simple para
verificar si el número es negativo. Sí lo es, el programa imprime el mensaje:
"El valor es negativo". En otro caso, el programa no hace nada. El (b < 0) es la
parte de la estructura condicional que se denomina Expresión Booleana. C
evalúa (determina si es cierta o falsa) para decidir cuando imprimir o no
imprimir el mensaje. Si la expresión booleana se evalúa a verdadero
(True), entonces C ejecuta el bloque de instrucciones (dentro de llaves {}) o la
instrucción que sigue a la estructura condicional. Sí la expresión booleana es
falsa (False), entonces C salta el bloque de instrucciones o la instrucción que
sigue a la estructura condicional.
A continuación se muestra un ejemplo un poco más complejo:#include <stdio.h>
int main()
{
int valor;
printf("Enter a value:");
scanf("%d", &valor);
if (valor < 0)
printf("\nEl valor es negativo\n");
else
if (valor == 0)
printf("\nEl valor es cero\n");
else
printf("\nEl valor es positivo\n");
retiran 0;
}
En Este ejemplo, la estructura condicional después de la primera aparición
de else: if(valor == 0) evalúa por un valor de cero y si es cierto C imprimirá el
mensaje "El valor es cero", el segundo else corresponde a la ocurrencia de un
valor positivo, en este caso no se evalúan más condiciones debido a que
luego de haber evaluado las dos expresiones booleanas, solo queda la opción
de que el valor sea positivo y por lo tanto no es necesario evaluar algo como if
(valor>0).
Booleanos en lenguaje C: Operadores
Los operadores booleanos son los que debemos utilizar en lenguaje C para
construir expresiones booleanas, que determinarán la ejecución de algunas
partes del programa. A continuación se listan los principales operadores
booleanos utilizados en el lenguaje C:
Igualdad: ==
Mayor que: >
Menor que: <
Mayor o igual que: >=
Menor o igual que: <=
Diferente: !=
Y lógico (AND): && O lógico (OR): ||
Negación (NOT): !
LIBRERIAS EN LENGUAJE C
#include <stdio.h>clearerr fclose feof ferror fflush fgetc fgetposfgets fopen formato fprintf fputc fputs freadfreopen fscanf fseek fsetpos ftell fwrite getcgetchar gets perror printf putc putchar putsremove rename rewind scanf setbuf setybuf sprintfsscanf tmpfile tmpnam ungetc vfprintf vprintf vsprintf
#include <stdlib.h>abort abs atexit atof atoi atol bsearchcalloc div exit free getenv labs ldivmalloc mblen mbstowc
smbtowc qsort rand Realloc
srand strtod strtol strtoul system wctomb
#include <string.h>memchr memcmp memcpy memmov
ememset strcat strchr
strcmp strcoll strcpy strcspn strerror strlen strmcatstrmcmp strmcpy strpbrk strrchr strspn strstr strtokstrxfrm
#include <ctype.h>tolower toupper
#include <locale.h>localeconv
setlocale
#include <math.h>Acos Asin atan atan2 ceil cos coshExp Fabs floor fmod frexp ldexp loglog10 modf pow sin sinh sqrt tantanh
#include <setjmp.h>longjmp setjmp
#include <signal.h>raise signal #include <time.h>asctime clock ctime difftime Gmtime localtime mktimestrftime time
Otras librerías que no tienen funciones asociadas. Pero tienen macros
constantes y/o estructuras.
· #include <assert.h>
· #include <errno.h>
· #include <float.h>
· #include <limits.h>
· #include <stdarg.h>
· #include <stddef.h>
LIBRERIAS MAS USADAS.
A continuación se incluyen en forma de tabla algunas de las funciones de
librería más utilizadas en el lenguaje C.
Nota: La columna tipo se refiere al tipo de la cantidad devuelta por la función.
Un asterisco denota puntero, y los argumentos que aparecen en la tabla
tienen el significado siguiente:
c. denota un argumento de tipo carácter.
d. denota un argumento de doble precisión.
f. denota un argumento archivo.
i. denota un argumento entero.
l. denota un argumento entero largo.
p. denota un argumento puntero.
s. denota un argumento cadena.
u. denota un argumento entero sin signo.
RESUMEN DE LIBRERIAS
Ø assert.h Contiene macro Una Para El Diagnostico Dentro De los
Programas.
Ø ctype.h Contiene Funciones párrafo Varias comprobación de Tipos allí
transformacion de caracteres.
Ø errno.h Contiene Varias macros Usadas párrafo INFORMAR de Errores.
Ø limits.h Contienen macros Varias definen párrafo constante el Tamaño de
tipo Enteros.
Ø float.h Contienen Varias macros definen párrafo constante el Tamaño de
tipo flotante.
Ø locale.h macros Varias Contienen, Funciones Tipos párrafo unidades
locales de y, de Como Unidad monetaria, Tiempo, dígitos, etc.
Ø math.h Contiene macro de una última voluntad y Varias matemáticas.
Ø setjmp.h Contienen Declaraciones que proporcionan Evitar Una forma de
Llamada SECUENCIA Y regreso de: funciones normales.
Ø signal.h Contiene un tipo, Funciones y Dos Manejar las Condiciones
párrafo Varias excepcionales macros Aparecen Durante la ejecución, Tal
Como Una Señal De Una fuente de Interrupción externa o un error en la
ejecución.
Ø stdarg.h Contiene Un tipo y Tres macros proporcionan Recursos Para Una
Lista de Recorrer Argumentos de Función Tamaño de tipo desconocido ella.
Ø stddef.h Contiene Varios Tipos y también estan definidas macros en
OTRAS librerías, Como size_t.
Ø stdio.h Tipos Contiene, macros son: funciones Para La Realización: tareas
de I / O.
Ø stdlib.h Tipos Contiene, macros son: funciones Para La conversión
numérica, Generación de Números aleatorios, Búsquedas ordenación que,
Memoria y gestión de Tareas SIMILARES.
Ø string.h Tipos Contiene, macros son: funciones Para La Manipulación de
caracteres candados.
Ø time.h Tipos Contiene, macros son: funciones párr LA INFORMACIÓN
Sobre las Fechas MANIPULACION Horas y.
Tipos: char, int, float, largo, largo, largo, corto, doble, nula.
BLOQUEOS DE FORMATO
d, i Entero con signo decimal
o entero octal signo pecado
u entero decimal signo pecado
x entero signo pecado hexadecimal
(en Minúsculas)
X entero signo pecado hexadecimal
(en mayúsculas)
F Coma flotante en la forma
[-] dddd.dddd
e Coma flotante en la forma [-] d.dddd
e [+/-] ddd
g Coma flotante SEGÚN El Valor
E E Como Pero en mayúsculas
G G Como Pero en mayúsculas
c un Carácter
s personajes TERMINADA Cadena en
'\ 0'
% imprime el Carácter%
p puntero
Secuencia DE ESCAPE
\ A Alerta
\ B Espacio Atrás
\ F Salto de página
\ N Salto de línea
\ R Retorno de carro
\ T Tabulación horizontal
\ V Tabulación vertical
\\ Barra invertida
\ ' Comilla sola
\ " Dobles de Comillas
\ OOO Visualiza un CarácterCuyo código ASCII es OOO
octal
\
XHHH
Visualiza un Carácter Cuyo código ASCII HHH están
en hexadecimal
Funcionabilidad del sistema Función que tiene Pertenece Librería <stlib.h>
Colores de Fondo
Negro 0 =
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Púrpura
6 Amarillo =
7 = Blanco
8 = gris
9 = Azul claro
Fuente de Colores
tiene claro Verde =
b = Aguamarina claro
c = Rojo claro
d = Púrpura claro
e claro Amarillo =
f = brillante Blanco
Tipos de librerias.
<assert.h>
Contiene la macro assert (aserción), utilizada para detectar
errores lógicos y otros tipos de fallos en la depuración de un
programa.
<
complex.h>
Conjunto de funciones para manipular números
complejos (nuevo en C99).
<ctype.h>
Contiene funciones para clasificar caracteres según sus tipos
o para convertir entre mayúsculas y minúsculas
independientemente del conjunto de
caracteres(típicamente ASCII o alguna de sus extensiones).
<errno.h>Para analizar los códigos de error devueltos por las funciones
de biblioteca.
<fenv.h> Para controlar entornos en coma flotante (nuevo en C99).
<float.h> Contiene la definición de constantes que especifican ciertas
propiedades de la biblioteca de coma flotante, como la
diferencia mínima entre dos números en coma flotante
(_EPSOLON), el número máximo de dígitos de precisión
(_DIG), o el rango de valores que se pueden representar
(_MIN, _MAX).
<inttypes.h>Para operaciones de conversión con precisión entre tipos
enteros (nuevo en C99).
<iso646.h>Para utilizar los conjuntos de caracteres ISO 646 (nuevo en
NA1).
<limits.h>
Contiene la definición de constantes que especifican ciertas
propiedades de los tipos enteros, como rango de valores que
se pueden representar (_MIN, _MAX).
<locale.h>
Para la función setlocale() y las constantes relacionadas. Se
utiliza para seleccionar el entorno local apropiado
(configuración regional).
<math.h> Contiene las funciones matemáticas comunes.
<setjmp.h>Declara las macros setjmp y longjmp para proporcionar
saltos de flujo de control de programa no locales.
<signal.h>Para controlar algunas situaciones excepcionales como la
división por cero.
<stdarg.h>posibilita el acceso a una cantidad variable de argumentos
pasados a una función.
<stdbool.h> Para el tipo booleano (nuevo en C99).
<stdint.h> Para definir varios tipos enteros (nuevo en C99).
<stddef.h> Para definir varios tipos de macros de utilidad.
<stdio.h>Proporciona el núcleo de las capacidades de entrada/salida
del lenguaje C (incluye la venerable función printf ).
<stdlib.h>
Para realizar ciertas operaciones como conversión de tipos,
generación de números pseudo-aleatorios, gestión de
memoria dinámica, control de procesos, funciones de
entorno, de señalización (??), de ordenación y búsqueda.
<string.h> Para manipulación de cadenas de caracteres.
<tgmath.h>Contiene funcionalidades matemáticas de tipo genérico
(type-generic) (nuevo en C99).
<time.h> Para tratamiento y conversión entre formatos de fecha y
hora.
<wchar.h>
Para manipular flujos de datos anchos y varias clases de
cadenas de caracteres anchos (2 o más bytes por carácter),
necesario para soportar caracteres de diferentes idiomas
(nuevo en NA1).
<wctype.h> Para clasificar caracteres anchos (nuevo en NA1).