View
215
Download
0
Category
Preview:
Citation preview
Programación I Bloque 1Ing. Informática
Profesores teoría
Toni Navarrete
Jesús Ibáñez
381despacho:
jesus.ibanez@upf.edue-mail:
371despacho:
toni.navarrete@upf.edue-mail:
Programación I Bloque 1Ing. Informática
Introducción
Filosofía: aprender a programar programando
Web de la asignatura:
Bibliografía básica
The C Programming Language, Second Editionby Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall. http://cm.bell-labs.com/cm/cs/cbook/index.html
http://www.tecn.upf.es/~tnavarrete/programacio1/
Programación I Bloque 1Ing. Informática
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”
Programación I Bloque 1Ing. Informática
El plan docente: competenciasCompetencias generales
Instrumentales:CG1: Capacidad de síntesis CG2: Capacidad de análisis
SistémicasCG3: Capacidad para aplicar el conocimiento en la prácticaCG4: Interés por la calidad
Competencias específicasCE1: Capacidad para trabajar con un compilador y debugadorCE2: Dominio de los tipos de datos estáticos básicos y compuestosCE3: Dominio de las estructuras de controlCE4: Capacidad de resolución de problemas mediante diseño descendente y dominio de la utilización de funcionesCE5: Dominio de los tipos de datos dinámicos y de la gestión dinámica de memoriaCE6: Documentación y estructuración de código
Programación I Bloque 1Ing. Informática
El plan docente: tipos de actividades
Sesiones de teoríaSesiones de ejercicios (seminarios)Sesiones de prácticasEjercicios de auto-evaluación
Consultar calendario!
Programación I Bloque 1Ing. Informática
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 asignaturaOtras actividades de auto-evaluaciónSeptiembre
Programación I Bloque 1Ing. Informática
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
Programación I Bloque 1Ing. Informática
Introducción
Hardware: la parte física, la máquinaSoftware: los programas que se ejecutan sobre esa máquina
Programación I Bloque 1Ing. Informática
Arquitectura von Neumann
RAMALU CU
RegistrosCPU
E/S
BusCPU = Unidad Central de ProcesoALU = Unidad Aritmético LógicaCU = Unidad de ControlRAM = Memoria principal (RandomAccess Memory)
Programación I Bloque 1Ing. Informática
Lenguaje máquina
La Unidad de control entiende una serie de combinaciones de bits que determinan diferentes instruccionesEjemplo:
0001 1001 0010 1100 (16 bits)
Programación I Bloque 1Ing. Informática
Lenguaje máquina
La Unidad de control entiende una serie de combinaciones de bits que determinan diferentes instruccionesEjemplo:
0001 1001 0010 1100 (16 bits)
Problemas:Extremadamente difícil escribir y leerNo portable (específico para una unidad de control concreta)
Programación I Bloque 1Ing. Informática
Lenguaje ensamblador
Cada “tipo” de instrucciones tiene una traducciónEjemplo:
LOAD AADD BSTORE C
Programación I Bloque 1Ing. Informática
Lenguaje ensamblador
Cada “tipo” de instrucciones tiene una traducciónEjemplo:
LOAD A R1LOAD B R2ADD R1 R2STORE C R1
Problemas:Aún difícil escribir y leerNo portable
Programación I Bloque 1Ing. Informática
Lenguaje de alto nivel
Las instrucciones son de un nivel superior, más cercano a cómo se piensa una soluciónMás fáciles de escribir y leerSon independientes de la máquinaEjemplo:
C = A + B
Programación I Bloque 1Ing. Informática
Lenguaje de alto nivel
Las instrucciones son de un nivel superior, más cercano a cómo se piensa una soluciónMás fáciles de escribir y leerSon independientes de la máquinaEjemplo:
C = A + B
Desventaja:Hay que traducirlo a lo que la máquina entiende (código máquina): más lento
Programación I Bloque 1Ing. Informática
Niveles
Lenguajes Máquina
Lenguajes Ensambladores
Lenguajes de Alto Nivel
000110011100…110100010111…100101100101…
LOAD A R1LOAD B R2ADD R1 R2STORE C R1
C=A+B
Programación I Bloque 1Ing. Informática
Compilador vs intérprete
Compilador
Intérprete
Solución híbrida: máquina virtual
Programación I Bloque 1Ing. Informática
Compilación
a.outa.exe
#include <stdio.h>
main() {printf("Hola mundo!");
}
Código fuente
Código máquina
Compilador
errores
Programación I Bloque 1Ing. Informática
Compilación
Se compila antes de ejecutarDetecta errores sintácticosCuando ya no hay errores, genera el código máquina (fichero ejecutable)No necesita el compilador para ejecutar
Programación I Bloque 1Ing. Informática
Interpretación
..............
........
....................
..........
...
...............
Código fuente
0011001010011…
IntérpreteCoge unainstrucción
La traduce a código
máquina y la ejecuta
Programación I Bloque 1Ing. Informática
Interpretación
El proceso de traducción se realiza mientras se ejecuta, instrucción a instrucciónSe necesita el intérprete para poder ejecutar
Programación I Bloque 1Ing. Informática
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 virtualAl código máquina virtual se le denomina byte-codeLa 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
Programación I Bloque 1Ing. Informática
Lenguaje C
Historia
Principios 70’s: Dennis Ritchie, Laboratorios Bell de AT&T, creado para desarrollar UNIX1983: ANSI C1990: estándar ISO
Primer programa
#include <stdio.h>
main() {printf("Hola mundo!");
}
Programación I Bloque 1Ing. Informática
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 honecessiten*/
main () { //el codi del programa anirà entre les dues claus
printf("Hola mundo!"); //això escriu “Hola mundo!” per pantalla}
Programación I Bloque 1Ing. Informática
Compilación
hola.ocompila a.outa.exe
hola.c
Libreríasde C
Linka
Código fuente Código objeto Ejecutable
Edita
gcc hola.c
Programación I Bloque 1Ing. Informática
Diseño de programas
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
AlgoritmoProblema Programa
Programación I Bloque 1Ing. Informática
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 utilizarBloque 3: “instrucciones”: cómo escribimos las órdenes que se han de ejecutar
Recommended