Estructuras de datos (Prof. Edgardo A. Franco)
1
Tema 07: Lenguajes de programación y el lenguaje C
M. en C. Edgardo Adrián Franco Martínez http://[email protected]@edfrancom edgardoadrianfrancom
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
07
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
07
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
07
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
07
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 lenguajesde 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
07
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
07
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
07
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
07
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
07
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
07
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
07
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
07
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
07
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
07
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
07
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 que otrosino que cada uno tiene ventajas y desventajas.
• También hay situaciones donde un paradigma resulta másapropiado que otro.
• En la actualidad el paradigma orientado a objetos es el másutilizado debido a la facilidad para abstraer a su filosofía lamayoría de las soluciones a los problemas actuales, para suimplementación y a reemplazado al paradigma deprogramación estructurada muy empleado en la década delos 80’s y 90’s.
17
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
07
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
07
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
07
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
07
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
07
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 laboratorios Bellde AT&T a finales de la década de los 60 y principios de los70.
• 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 derivados dela 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. Este trabajoculminó con la creación del llamado estándar C89 en 1989.Una parte del estándar resultante fue un conjunto debibliotecas de software denominado bibliotecas estándarde ANSI C.
22
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
07
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. Elsoporte de estas nuevas extensiones varía segúnimplementaciones.
• Las cabeceras <iso646.h>, <wchar.h> y <wctype.h>fueron añadidas con Normativa Addendum 1(abreviado NA1), y fueron ratificadas por elestándar en 1995.
• En 1999 se realizó una revisión del estándar que sedenominó C99 a la que se añadieron las cabeceras<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
07
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 algunas modificacionesmenores) fue adoptado por la International Organizationfor Standardization bajo la denominación ISO/IEC9899: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 nombre informalpara ISO/IEC 9899:2011,3 el último estándar publicadopara C. El borrador final, N1570,4 fue publicado en abrilde 2011. El nuevo estándar superó su última revisión el10 de octubre de 2011 y fue oficialmente ratificado porla ISO y publicado el 8 de diciembre 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
07
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 24 archivoscabecera hasta C99 y 29 en C11 que pueden ser incluidosen un proyecto de programación con una simple directiva.Cada cabecera contiene la declaración de una o másfunciones, tipos de datos y macros.
• En comparación con otros lenguajes de programación(como por ejemplo Java) la biblioteca estándar es muypequeña, está proporciona un conjunto básico defunciones matemáticas, de tratamiento de cadenas,conversiones de tipo y entrada/salida por consola o porarchivos.
• Hasta C99, no se incluyen, ni un conjunto de tipos de datoscontenedores básicos (listas, pilas, colas, ...), niherramientas para crear una interfaz gráfica de usuario(GUI), ni operaciones para trabajar en red.
25
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
07
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