Programación I

Anuncio
Ing. Informática
Programación I
Programación I
toni.navarrete@upf.edu
jesus.ibanez@upf.edu
Bloque 1
Ing. Informática
Programación I
Profesores teoría
Toni Navarrete
e-mail:
toni.navarrete@upf.edu
despacho:
371
Jesús Ibáñez
e-mail:
jesus.ibanez@upf.edu
despacho:
381
Bloque 1
Ing. Informática
Programación I
Bloque 1
Introducción
ƒ
Filosofía: aprender a programar programando
ƒ
Web de la asignatura:
http://www.tecn.upf.es/~tnavarrete/programacio1/
ƒ
Bibliografía básica
The C Programming Language, Second Edition
by Brian W. Kernighan and Dennis M. Ritchie.
Prentice Hall.
http://cm.bell-labs.com/cm/cs/cbook/index.html
Ing. Informática
Programación I
El plan Docente
Bloque 1
Ing. Informática
Programación I
El plan docente: objetivo de la
asignatura
ƒ
“El objetivo fundamental de esta
asignatura es que los alumnos
adquieran las bases de la algorítmica y
estructuras de datos, así como que
sean capaces de desarrollar fluidamente
programas de tamaño medio utilizando
el lenguaje C”
Bloque 1
Ing. Informática
Programación I
Bloque 1
El plan docente: competencias
Competencias generales
ƒ Instrumentales:
ƒ
ƒ
ƒ
CG1: Capacidad de síntesis
CG2: Capacidad de análisis
Sistémicas
ƒ
ƒ
CG3: Capacidad para aplicar el conocimiento en la práctica
CG4: Interés por la calidad
Competencias específicas
ƒ CE1: Capacidad para trabajar con un compilador y debugador
ƒ CE2: Dominio de los tipos de datos estáticos básicos y compuestos
ƒ CE3: Dominio de las estructuras de control
ƒ CE4: Capacidad de resolución de problemas mediante diseño
descendente y dominio de la utilización de funciones
ƒ CE5: Dominio de los tipos de datos dinámicos y de la gestión dinámica
de memoria
ƒ CE6: Documentación y estructuración de código
Ing. Informática
Programación I
Bloque 1
El plan docente: tipos de actividades
Sesiones de teoría
ƒ Sesiones de ejercicios (seminarios)
ƒ Sesiones de prácticas
ƒ Ejercicios de auto-evaluación
ƒ
ƒ
Consultar calendario!
Ing. Informática
Programación I
El plan docente: evaluación
ƒ
Dos partes principales:
ƒ
Fundamentos teórico-prácticos: exámenes parcial
(25%) y final (75%)
ƒ
ƒ
ƒ
ƒ
ƒ
1 punto extra actividades seminarios (ejercicios)
Prácticas: prácticas parcial (25%) y final (75%)
Cada parte supone un 50% de la nota final,
aunque es necesario aprobar ambas para
superar la asignatura
Otras actividades de auto-evaluación
Septiembre
Bloque 1
Ing. Informática
Programación I
Importante!
ƒ
En esta asignatura se dan las
bases necesarias para (sólo las de
primer curso):
ƒ
ƒ
Programación II, Programación III,
Estructuras de Datos I
Álgebra II, Análisis Numérico,
Sistemas Operativos
Bloque 1
Ing. Informática
Programación I
Introducción
Hardware: la parte física, la
máquina
ƒ Software: los programas que se
ejecutan sobre esa máquina
ƒ
Bloque 1
Ing. Informática
Programación I
Arquitectura von Neumann
ALU
CPU
CPU = Unidad Central
de Proceso
ALU = Unidad
Aritmético Lógica
CU = Unidad de
Control
RAM = Memoria
principal (Random
Access Memory)
CU
RAM
Registros
Bus
E/S
Bloque 1
Ing. Informática
Programación I
Lenguaje máquina
ƒ
ƒ
La Unidad de control entiende una serie
de combinaciones de bits que
determinan diferentes instrucciones
Ejemplo:
ƒ
0001 1001 0010 1100 (16 bits)
Bloque 1
Ing. Informática
Programación I
Lenguaje máquina
ƒ
ƒ
La Unidad de control entiende una serie
de combinaciones de bits que
determinan diferentes instrucciones
Ejemplo:
ƒ
ƒ
0001 1001 0010 1100 (16 bits)
Problemas:
ƒ
ƒ
Extremadamente difícil escribir y leer
No portable (específico para una unidad de
control concreta)
Bloque 1
Ing. Informática
Programación I
Lenguaje ensamblador
ƒ
ƒ
Cada “tipo” de instrucciones tiene una
traducción
Ejemplo:
LOAD A
ADD B
STORE C
Bloque 1
Ing. Informática
Programación I
Lenguaje ensamblador
ƒ
ƒ
Cada “tipo” de instrucciones tiene una
traducción
Ejemplo:
LOAD A R1
LOAD B R2
ADD R1 R2
STORE C R1
ƒ
Problemas:
ƒ
ƒ
Aún difícil escribir y leer
No portable
Bloque 1
Ing. Informática
Programación I
Lenguaje de alto nivel
ƒ
ƒ
ƒ
ƒ
Las instrucciones son de un nivel
superior, más cercano a cómo se piensa
una solución
Más fáciles de escribir y leer
Son independientes de la máquina
Ejemplo:
C=A+B
Bloque 1
Ing. Informática
Programación I
Lenguaje de alto nivel
ƒ
ƒ
ƒ
ƒ
Las instrucciones son de un nivel
superior, más cercano a cómo se piensa
una solución
Más fáciles de escribir y leer
Son independientes de la máquina
Ejemplo:
C=A+B
ƒ
Desventaja:
ƒ
Hay que traducirlo a lo que la máquina
entiende (código máquina): más lento
Bloque 1
Ing. Informática
Programación I
Niveles
Lenguajes de Alto Nivel
C=A+B
Lenguajes Ensambladores
LOAD A R1
LOAD B R2
ADD R1 R2
STORE C R1
Lenguajes Máquina
000110011100…
110100010111…
100101100101…
Bloque 1
Ing. Informática
Programación I
Compilador vs intérprete
ƒ
Compilador
ƒ
Intérprete
ƒ
Solución híbrida: máquina virtual
Bloque 1
Ing. Informática
Programación I
Bloque 1
Compilación
#include <stdio.h>
main()
{
printf("Hola mundo!");
}
Compilador
errores
Código fuente
a.out
a.exe
Código máquina
Ing. Informática
Programación I
Compilación
Se compila antes de ejecutar
ƒ Detecta errores sintácticos
ƒ Cuando ya no hay errores, genera
el código máquina (fichero
ejecutable)
ƒ No necesita el compilador para
ejecutar
ƒ
Bloque 1
Ing. Informática
Programación I
Bloque 1
Interpretación
..............
........
....................
..........
...
...............
Código fuente
Coge una
instrucción
Intérprete
La traduce a
código
máquina y la
ejecuta
0011001010011…
Ing. Informática
Programación I
Interpretación
El proceso de traducción se realiza
mientras se ejecuta, instrucción a
instrucción
ƒ Se necesita el intérprete para
poder ejecutar
ƒ
Bloque 1
Ing. Informática
Programación I
Solución híbrida: la máquina
virtual (Java)
Bloque 1
Ing. Informática
Programación I
Solución híbrida: la máquina
virtual (Java)
ƒ
ƒ
ƒ
Se compila el código fuente y se obtiene
código máquina de una máquina virtual
Al código máquina virtual se le
denomina byte-code
La máquina virtual en realidad es un
intérprete que después va ejecutando
(traduciendo a código máquina real)
instrucción a instrucción el byte-code
Bloque 1
Ing. Informática
Programación I
Lenguaje C
ƒ
Historia
ƒ
ƒ
ƒ
ƒ
Principios 70’s: Dennis Ritchie, Laboratorios Bell de AT&T, creado
para desarrollar UNIX
1983: ANSI C
1990: estándar ISO
Primer programa
#include <stdio.h>
main()
{
printf("Hola mundo!");
}
Bloque 1
Ing. Informática
Programación I
Bloque 1
Comentando el código
ƒ
Es conveniente documentar el código:
ƒ
ƒ
/* comentarios de varias líneas */
// comentario en una línea
# include <stdio.h>
/* la línia anterior ha d’estar sempre que fem operacions de
lectura o escriptura. Tot i això, hi ha compiladors que no ho
necessiten*/
main ()
{ //el codi del programa anirà entre les dues claus
printf("Hola mundo!"); //això escriu “Hola mundo!” per pantalla
}
Ing. Informática
Programación I
Bloque 1
Compilación
Librerías
de C
Edita
hola.c
Código fuente
compila
hola.o
Linka
Código objeto
gcc hola.c
a.out
a.exe
Ejecutable
Ing. Informática
Programación I
Bloque 1
Diseño de programas
Problema
ƒ
Algoritmo
Programa
El Proceso de Diseño de Programas tiene dos fases:
ƒ
Resolución de Problemas
ƒ
ƒ
Crea un algoritmo que resuelve un problema
Implementación
ƒ
Traduce el algoritmo a un lenguaje de programación
Ing. Informática
Programación I
Bloques 2 y 3
ƒ
ƒ
ƒ
Un programa es como una receta. Contiene
una lista de ingredientes (variables) y una
lista de instrucciones (sentencias) que le dicen
al ordenador qué hacer con las variables. Las
variables pueden representar datos
numéricos, caracteres, ...
Bloque 2: “ingredientes”: cómo escribimos los
datos que hemos de utilizar
Bloque 3: “instrucciones”: cómo escribimos las
órdenes que se han de ejecutar
Bloque 1
Descargar