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