25
Estructuras de datos (Prof. Edgardo A. Franco) 1 M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Tema 04: Lenguajes de programación y el lenguaje C

Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Embed Size (px)

Citation preview

Page 1: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Estructuras de datos (Prof. Edgardo A. Franco)

1M. en C. Edgardo Adrián Franco Martínez http://[email protected]@edfrancom edgardoadrianfrancom

Tema 04: Lenguajes de programación y el lenguaje C

Page 2: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Contenido• Lenguaje de programación

• Programa computacional

• Clasificaciones de los lenguajes de programación

• Clasificación según su nivel de abstracción

• Clasificación según su modo de ejecución final

• Clasificación según su paradigma de programación

• Lenguaje C

• Historia del lenguaje C

• Ventajas y desventajas del lenguaje C

• El estándar ANSI C 2

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 3: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Lenguaje de programación• Un lenguaje de programación es un idioma artificial

diseñado para expresar computaciones que pueden serllevadas a cabo por máquinas como las computadoras.

• Pueden usarse para crear programas que controlen elcomportamiento físico y lógico de una máquina, estopermite expresar algoritmos con precisión e interacciónhumano-maquina.

3

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 4: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Está formado de un conjunto de símbolos y reglassintácticas y semánticas que definen su estructura y elsignificado de sus elementos y expresiones.

• Sintáctica (reglas que gobiernan la combinatoria de los símbolos y laformación de unidades superiores a estos)

• Semántica (aspectos del significado, sentido o interpretación delsignificado de un determinado elemento, símbolo, palabra, expresióno representación formal)

4

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 5: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Programa computacional• Un programa computacional es un conjunto de

instrucciones que una vez ejecutadas realizarán una ovarias tareas en una computadora.

• La razón de ser de un programa computacional es permitirresolver problemas con apoyo de equipos computacionalespor lo que al crearlos es necesario abstraer loscomponentes de este y modelarlos en un ambientecomputacional.

5

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Abstracción: Acto mental en el que conceptualmente se aísla un objeto o una propiedad de un objeto.

Page 6: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Clasificación de los lenguaje de programación• En la actualidad hay muchos tipos de lenguajes

de programación, cada uno de ellos con suspropias reglas, terminología, sintaxis y manerade crear un programa computacional.

• La clasificación de los lenguajes de programaciónpuede realizarse desde tres aspectos básicos.

• Según su nivel de abstracción

• Según su modo de ejecución final

• Según su paradigma de programación

6

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 7: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

7

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Clasificación de los lenguaje de programación según su nivel de abstracción

Page 8: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Lenguaje Máquina: es el lenguaje deprogramación que entiende directamentela computadora o máquina. Este lenguajede programación utiliza el alfabeto binario,es decir, el 0 y el 1.

• Lenguajes de programación de bajo nivel:Son mucho mas fáciles de utilizar que ellenguaje máquina, pero dependen muchode la máquina o computadora al igual queel lenguaje máquina.

• El lenguaje ensamblador fue el primer lenguajede programación que trato de sustituir ellenguaje máquina por otro mucho másparecido al de los seres humanos. 8

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 9: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Lenguaje maquina (Instrucciones en binario)

Lenguaje de bajo nivel(Instrucciones en código maquina)

9

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 10: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Lenguaje de medio nivel: Lenguaje de medio nivel es unlenguaje de programación que se encuentran entre loslenguajes de alto nivel y los lenguajes de bajo nivel.Suelen ser clasificados muchas veces de alto nivel, peropermiten ciertos manejos de bajo nivel.

• Son precisos para ciertas aplicaciones como la creaciónde sistemas operativos, ya que permiten un manejoabstracto (independiente de la máquina, a diferencia delensamblador), pero sin perder mucho del poder yeficiencia que tienen los lenguajes de bajo nivel.

10

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 11: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

11

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 12: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Lenguajes de programación de alto nivel: Este tipo delenguajes de programación son independientes de lamáquina, lo podemos usar en cualquier computador conmuy pocas modificaciones o sin ellas, son muy similaresal lenguaje humano, pero precisan de un programainterprete o compilador que traduzca este lenguaje deprogramación de alto nivel a lenguaje de máquina que lacomputadora pueda entender.

12

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 13: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• El modo de ejecución final de un lenguaje deprogramación, se refiere al proceso necesario paraponer en ejecución las instrucciones de dicho lenguajeen un equipo de cómputo. Para finalmente proporcionarlas entradas que serán tomadas para obtener una salidade todo el conjunto de instrucciones (programacomputacional).

13

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Clasificación de los lenguaje de programación según su modo de ejecución final

Page 14: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Lenguaje compilado• Lenguaje de programación que requiere de un proceso de

compilación antes de poder ser ejecutado.

Código Fuente Compilador

Programa en lenguaje maquina u objeto

EntradaPrograma en

lenguaje maquina u objeto

Salida

14

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 15: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Lenguaje interpretado• Es un lenguaje de programación que está diseñado para ser

ejecutado por medio de un intérprete.

Código Fuente

Intérprete SalidaEntrada Compilador

15

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 16: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• El paradigma de programación es un modelo que rigecomo construir un programa de computación bajo unlenguaje de programación, por lo que algunos lenguajeshan surgido orientándose a ellos. También existenlenguajes de programación capaces de soportar más deun paradigma de programación

16

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Clasificación de los lenguaje de programación según su paradigma de programación

Un paradigma de programaciónrepresenta un enfoque particular ofilosofía para la construcción delsoftware.

Page 17: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Un paradigma de programación no es mejor uno queotro sino que cada uno tiene ventajas y desventajas.

• También hay situaciones donde un paradigma resultamás apropiado que otro.

• En la actualidad el paradigma orientado a objetos es elmás utilizado debido a la facilidad para abstraer a sufilosofía la mayoría de las soluciones a los problemasactuales, para su implementación y a reemplazado alparadigma de programación estructurada muy empleadoen la década de los 80’s y 90’s.

17

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 18: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Lenguaje C

• C es un lenguaje de programación creado en 1972 por DennisMacAlistair Ritchie en los Laboratorios Bell como evolucióndel anterior lenguaje B, creado por Ken Thompson.

• Se trata de un lenguaje fuertemente tipificado de medio nivelpero con muchas características de bajo nivel.

• Dispone de las estructuras típicas de los lenguajes de altonivel pero, a su vez, dispone de construcciones del lenguajeque permiten un control a muy bajo nivel.

• Los compiladores suelen ofrecer extensiones al lenguaje queposibilitan mezclar código en ensamblador con código C oacceder directamente a memoria o dispositivos periféricos.

18

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 19: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Ventajas del Lenguaje C

• Programación Estructurada

• Economía de expresiones

• Gran cantidad de operadores y tipos de datos

• Codificación en alto y bajo nivel simultáneamente

• Reemplaza ventajosamente la programación enensamblador

• Utilización natural de las funciones primitivas del sistemaoperativo (Unix)

• De propósito general

19

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 20: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

Desventajas del Lenguaje C

• No posee de instrucciones de entrada y salida

• No posee de instrucciones de manejo de cadenas decaracteres

• La libertad en la escritura en los programas lleva aerrores en la programación (semánticos) que, por sercorrectos sintácticamente no se detectan a simple vista

• La precedencia de operadores convierten las expresionesen pequeños rompecabezas 20

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 21: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

El estándar ANSI C

• El lenguaje de programación C, antes denormalizarse, no disponía de funcionalidadestales como operaciones de entrada/salida (adiferencia de lenguajes tradicionales como Coboly Fortran).

• Con el tiempo, las comunidades de usuarios de Cfueron compartiendo ideas, así como lasimplementaciones de lo que ahora se denominalas bibliotecas estándar de C para proporcionaresas funcionalidades. 21

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 22: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Tanto Unix como C fueron creados en los laboratoriosBell de AT&T a finales de la década de los 60 y principiosde los 70.

• Fue en los 70 cuando el lenguaje de programación Cacrecentó su popularidad. Muchas organizaciones yuniversidades crearon sus propias versiones del lenguajepara sus propios proyectos. A comienzos de los 80 seevidenciaron los problemas de compatibilidad derivadosde la existencia de las múltiples implementaciones dellenguaje.

• En 1983 el Instituto Nacional Americano de EstándaresANSI, creo un comité para establecer una especificaciónestándar del lenguaje conocida como ANSI C. Estetrabajo culminó con la creación del llamado estándar C89en 1989. Una parte del estándar resultante fue unconjunto de bibliotecas de software denominadobibliotecas estándar de ANSI C.

22

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 23: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• Posteriores versiones del C estándar han añadidoalgunos nuevos ficheros cabecera a la biblioteca.El soporte de estas nuevas extensiones varíasegún implementaciones.

• Las cabeceras <iso646.h>, <wchar.h> y<wctype.h> fueron añadidas con NormativaAddendum 1 (abreviado NA1), y fueronratificadas por el estándar en 1995.

• En 1999 se realizó una revisión del estándar quese denominó C99 a la que se añadieron lascabeceras <complex.h>, <fenv.h>, <inttypes.h>,<stdbool.h>, <stdint.h> y <tgmath.h>. 23

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 24: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• En 1990, el estándar ANSI C (con algunasmodificaciones menores) fue adoptado por laInternational Organization for Standardization bajo ladenominación ISO/IEC 9899:1990.

• En marzo de 2000, ANSI adoptó el estándar ISO/IEC9899:1999. A este estándar se le conoce como C99.

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

• C11 (antes conocido como C1X) es un nombreinformal para ISO/IEC 9899:2011,3 el último estándarpublicado para C. El borrador final, N1570,4 fuepublicado en abril de 2011. El nuevo estándar superósu última revisión el 10 de octubre de 2011 y fueoficialmente ratificado por la ISO y publicado el 8 dediciembre de 2011.

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf 24

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 25: Clases 07 y 08 Lenguajes de programación el lenguaje C · •Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje

• La biblioteca estándar de ANSI C consta de 24archivos cabecera hasta C99 y 29 en C11 quepueden ser incluidos en un proyecto deprogramación con una simple directiva. Cadacabecera contiene la declaración de una o másfunciones, tipos de datos y macros.

• En comparación con otros lenguajes deprogramación (como por ejemplo Java) la bibliotecaestándar es muy pequeña, está proporciona unconjunto básico de funciones matemáticas, detratamiento de cadenas, conversiones de tipo yentrada/salida por consola o por archivos.

• Hasta C99, no se incluyen, ni un conjunto de tipos dedatos contenedores básicos (listas, pilas, colas, ...), niherramientas para crear una interfaz gráfica deusuario (GUI), ni operaciones para trabajar en red.

25

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

04

Len

guaj

es d

e p

rogr

amac

ión

y e

l len

guaj

e C

P

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez