Teoria1 PDF

También podría gustarte

Está en la página 1de 30

Ing.

Informática Programación I Bloque 1

Programación I

toni.navarrete@upf.edu
jesus.ibanez@upf.edu
Ing. Informática Programación I Bloque 1

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
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 Bloque 1

El plan Docente
Ing. Informática Programación I Bloque 1

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”
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 Bloque 1

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
Ing. Informática Programación I Bloque 1

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
Ing. Informática Programación I Bloque 1

Introducción

ƒ Hardware: 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

Arquitectura von Neumann

ALU CU
RAM

Registros
CPU

CPU = Unidad Central Bus


de Proceso
ALU = Unidad
Aritmético Lógica
CU = Unidad de E/S
Control
RAM = Memoria
principal (Random
Access Memory)
Ing. Informática Programación I Bloque 1

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)
Ing. Informática Programación I Bloque 1

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)
Ing. Informática Programación I Bloque 1

Lenguaje ensamblador

ƒ Cada “tipo” de instrucciones tiene una


traducción
ƒ Ejemplo:
LOAD A
ADD B
STORE C
Ing. Informática Programación I Bloque 1

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
Ing. Informática Programación I Bloque 1

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
Ing. Informática Programación I Bloque 1

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
Ing. Informática Programación I Bloque 1

Niveles

Lenguajes de Alto Nivel C=A+B

LOAD A R1
LOAD B R2
Lenguajes Ensambladores
ADD R1 R2
STORE C R1

000110011100…
Lenguajes Máquina 110100010111…
100101100101…
Ing. Informática Programación I Bloque 1

Compilador vs intérprete

ƒ Compilador

ƒ Intérprete

ƒ Solución híbrida: máquina virtual


Ing. Informática Programación I Bloque 1

Compilación

#include <stdio.h>

main()
{ Compilador
printf("Hola mundo!");
} errores

Código fuente
a.out
a.exe

Código máquina
Ing. Informática Programación I Bloque 1

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
Ing. Informática Programación I Bloque 1

Interpretación

..............
........ Coge una
instrucción
.................... Intérprete
..........
...
...............

La traduce a
código
Código fuente máquina y la
ejecuta

0011001010011…
Ing. Informática Programación I Bloque 1

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
Ing. Informática Programación I Bloque 1

Solución híbrida: la máquina


virtual (Java)
Ing. Informática Programación I Bloque 1

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
Ing. Informática Programación I Bloque 1

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!");
}
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 compila hola.o Linka a.out


a.exe

Código fuente Código objeto Ejecutable

gcc hola.c
Ing. Informática Programación I Bloque 1

Diseño de programas

Problema Programa
Algoritmo

ƒ 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 Bloque 1

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

También podría gustarte