24
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

Historia Del Lenguaje c

Embed Size (px)

DESCRIPTION

introduccion a la programacion

Citation preview

Page 1: 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

Page 2: Historia Del Lenguaje c

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

Page 3: Historia Del Lenguaje c

- 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

Page 4: Historia Del Lenguaje c

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).....

Page 5: Historia Del Lenguaje c

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.

Page 6: Historia Del Lenguaje c

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>

Page 7: Historia Del Lenguaje c

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:              !=

Page 8: Historia Del Lenguaje c

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            

Page 9: Historia Del Lenguaje c

#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>

Page 10: Historia Del Lenguaje c

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.

Page 11: Historia Del 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.

Page 12: Historia Del Lenguaje c

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.

Page 13: Historia Del Lenguaje c

Ø  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

Page 14: Historia Del Lenguaje c

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 

Page 15: Historia Del Lenguaje c

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

Page 16: Historia Del Lenguaje c

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.

Page 17: Historia Del Lenguaje c

<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

Page 18: Historia Del Lenguaje c

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).