30
Programación I Bloque 1 Ing. Informática Programación I [email protected] [email protected]

Programación I la parte física, la máquina Software: los programas que se ejecutan sobre esa máquina Ing. Informática Programación I Bloque 1

  • Upload
    lykhanh

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Programación I Bloque 1Ing. Informática

Programación I

[email protected]@upf.edu

Programación I Bloque 1Ing. Informática

Profesores teoría

Toni Navarrete

Jesús Ibáñez

381despacho:

[email protected]:

371despacho:

[email protected]:

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

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)

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