Download 02(--)introduccion - lenguajedeprogramacion2011i

Document related concepts

Haxe wikipedia , lookup

Little man computer wikipedia , lookup

Lisp wikipedia , lookup

Programación con datos masivos en R wikipedia , lookup

Ocaml wikipedia , lookup

Transcript
Tema 2-Introducción a la programación en C
OUTPUT
HDD
INPUT
RAM
CPU
IWI-131 - Tema 2--
Programa de computador
INSTRUCCIÓN 1
INSTRUCCIÓN 2
PROGRAMA
INSTRUCCIÓN 3
RAM
CPU
OUTPUT
INPUT
HDD
IWI-131 - Tema 2--
Programa de computador
PROGRAMA
Datos del
programa
(variables)
Código ejecutable
RAM
Modelo de Von-Neumann
IWI-131 - Tema 2--
Lenguajes de programación
• Un computador solo entiende lenguaje
binario
• Un procesador tiene un conjunto finito de
operaciones binarias
• Un programa de computador es una
secuencia de estas instrucciones
IWI-131 - Tema 2--
Lenguajes de programación
• Ensamblador
– Convierte instrucciones de procesador en ceros
y unos.
• Lenguaje de ensamblador o “assembly”
– Expresa instrucciones de procesador en un
lenguaje “escribible” por un ser humano
– Lenguaje de bajo nivel
IWI-131 - Tema 2--
Lenguajes de programación
Código
Assembly
Load $1 $3
Ensamblador
Código
Objeto
0011001
IWI-131 - Tema 2--
CPU
Lenguajes de programación
• Lenguajes de alto nivel
– Compilados
– Interpretados
• Cercanos al lenguaje natural
• Ventajas
– Más claros
– Códigos más cortos
– Portables
IWI-131 - Tema 2--
Lenguajes de programación
Código
fuente
if(x>0)
Y=10;
compilador
Código
Objeto
0011001
linker
Sintaxis
Código
Ejecutable
gramática
0011001
IWI-131 - Tema 2--
Lenguajes de programación
Código
fuente
if(x>0)
interprete
Código
Objeto
0011001
Y=10;
IWI-131 - Tema 2--
CPU
Lenguajes de programación
• Proceso de creación de un programa
– Generación de código fuente
– Compilación
• Se analiza la sintaxis del programa
• Se analiza la gramática del programa
• Se genera código objeto
– Enlace
• Se combina el código objeto con bibliotecas del sistema
• Se genera programa ejecutable
– Ejecución
IWI-131 - Tema 2--
Lenguajes de programación
• Generación del código fuente
– Son archivos de texto plano.
– Se puede usar cualquier editor de texto.
– Existen editores especializados para cada
lenguaje
IWI-131 - Tema 2--
Lenguajes de programación
• Compilación
– Existen distintos compiladores
– Reciben como entrada el nombre del archivo con el
código fuente
– Entregan como resultado un archivo (binario) con el
código objeto.
– Si existen errores se debe corregir el código fuente
• Errores sintácticos: “ola, me yamo pdero”
• Errores gramaticales: “Hola, me pedro llamo”
IWI-131 - Tema 2--
Lenguajes de programación
• Enlace
– Se toma un conjunto de archivos con código
objeto y se combinan en un solo archivo (exe
en windows)
– Muchas veces el compilador hace el enlace en
forma automática (compile v/s build)
• Ejecución
– Se lleva el programa a la memoria RAM y se
ejecutan sus instrucciones en la CPU.
IWI-131 - Tema 2--
Lenguajes de programación
Código fuente
Compilación
Código objeto
Enlace
Código ejecutable
Ejecución
IWI-131 - Tema 2--
bibliotecas
El lenguaje C
• C es un lenguaje de programación de computadoras.
• Lenguaje de alto nivel
–
–
–
–
Más bien “medio”.
Permite manipulación de bits y bytes, direcciones de memoria.
Estructuras de control de alto nivel.
Portabilidad.
• Simple, pero poderoso.
• Muy ligado al mundo Unix.
• Ideal para aplicación de alto rendimiento.
IWI-131 - Tema 2--
Historia de C
• Inventado e
implementado por
primera vez por
Dennis Ritchie.
IWI-131 - Tema 2--
Historia de C
• 1960’s
– BCPL (Martin Richards)
• 1969
– B (Ken Thompson)
• 1971
– NB (Dennis Ritchie)
• 1972-1973
– C (Dennis Ritchie)
IWI-131 - Tema 2--
Historia de C
• 1973
– Reescritura del kernel de Unix en C
• 1978
– Pcc (Steve Johnson)
– Brian Kernighan & Dennis Ritchie “The C
Programming Language”
IWI-131 - Tema 2--
Historia de C
• 1982-1989
– Proceso de estandarización
– ANSI-89
• 1995
– Primera enmienda de C
• 1999
– Estándar C99
http://cm.bell-labs.com/cm/cs/who/dmr/chist.html
IWI-131 - Tema 2--
Historia de C
• 1997
– ANSI C++
• C++
– Diseñado e implementado por Bjarne Stroustrup.
– C “mejorado”
– Soporta orientación a objetos y programación genérica
IWI-131 - Tema 2--
Fin Tema 2-Introducción a la programación en C