You are on page 1of 32

Fundamentos de

Programacin/Programacin I
Anders Jonsson
2007-2008
Administracin
Pgina web: http://www.tecn.upf.es/~jonsson/fp07
(en construccin)

Teora: Mircoles 17-18:30, Aula 119


Prctica: P1 Jueves 18:40-19:25, Aula 202
P2 Jueves 19:35-20:20, Aula 202
Tutora: Para confirmar

anders.jonsson@upf.edu, Edificio Frana 399


2
Administracin
Evaluacin:
Prcticas: 40%
Controles: 20%
Examen final: 40%
Las prcticas se hacen en grupos de dos
Despus de cada dos prcticas hay un control en
clase sobre el conocimiento de estas prcticas
(ltimos 15 minutos de teora)

3
Clase de introduccin
1. Qu es un ordenador?
2. Programas y algoritmos
3. Lenguajes de programacin
4. Java

4
Qu es un ordenador?
Un sistema digital con tecnologa microelectrnica
capaz de procesar informacin a partir de un grupo
de instrucciones denominado programa
Componentes principales:
Procesador (CPU: Central Processing Unit)
Memoria (RAM: Random Access Memory)
Componentes auxiliares:
Disco duro
Lector CD-ROM
Teclado
Pantalla
etc.
5
Elementos de un ordenador
(hardware)

Unidad aritmetica Memoria Principal


Procesador
y logica (ALU)
(RAM)
Unidad
(CPU) de
Control (CU) Programa

Dispositivos de entrada Dispositivos de salida Dispositivos de


teclado pantalla almacenamiento de datos
ratn impresora disco duro
lector/grabador de CD-ROM
6
lector/grabador de disquete
Representacin de los datos
en el ordenador
El nico cdigo que entiende la CPU son los bits.
Los bits son representados en circuitos electrnicos
que pueden estar en estado on (1) u off (0)
Las instrucciones se mandan a la CPU en forma de
bytes, que son palabras de 8 bits
1 byte = 8 bits
1 kilobyte = 1 024 bytes
1 megabyte = 1 024 kilobytes = 1 048 576 bytes

7
Representacin de los datos
en el ordenador
Base 10:
Dgitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
1111 = 1*103 + 1*102 + 1*101 + 1*100
Base 2:
Dgitos = {0, 1}
1111 = 1*23 + 1*22 + 1*21 + 1*20 = 8 + 4 + 2 + 1 = 15
Cuntos valores puede representar un byte?
1 byte = 8 bits (Ej: 01100101)
Cada bit puede representar 2 valores (0 y 1)
Un byte puede representar 28 = 256 valores

8
Representacin de textos

TEXTO: My name is Anders.


ASCII: 77-121-32-110-97-109-101-32-105-115-32-65-110-100-101-114-115-46
18 bytes 9
Representacin de imagen
00000000
00110110
00100010
00100010
00110110
00000000
00110110
00000000

Divisin de la imagen en una matriz de pixels (unidad


de la imagen)
Cada pixel asociado con un color

10
Representacin de sonido

4 8 12 13 12 10 8

Discretizacin de la amplitud
Un byte para cada valor

11
Qu es un programa?
Un programa es una secuencia de instrucciones a
la CPU
Cada instruccin es un conjunto de bytes
Ejemplos de instrucciones:
Leer un dato del teclado
Guardar un dato en la memoria
Ejecutar una operacin sobre dos datos
Mostrar un dato en la pantalla
etc.

12
Acceso a la memoria
RAM
1 12
2 125
3 45
4 2
5 0
CPU
6 10
7 32
8 64
9 15

13
Algoritmo
Un esquema para resolver cierto tipo de problema
Se puede traducir en un programa para ejecutarlo
en un ordenador
Pasos para la resolucin de un problema con
ordenador:
1. Diseo de un algoritmo
2. Codificacin de un programa
3. Ejecucin y validacin

14
Algoritmo
Componentes:
Entrada: datos del problema a resolver
Salida: el resultado de la resolucin
Proceso: pasos a seguir para la resolucin
Propiedades:
Preciso: orden estricto + expresiones precisas
Definido: con la misma entrada, siempre resulta la
misma salida
Finito: nmero finito de pasos

15
Algoritmo 1
Problema: Sumar dos nmeros
Solucin:
Entrada: dos nmeros
Salida: guardar la suma en la memoria y
imprimirla por pantalla
Proceso:
1) Aadir los dos nmeros
2) Guardar el resultado en la memoria
3) Imprimir el resultado por pantalla

16
Algoritmo 2
Problema: hacer una taza de t a la inglesa
Solucin:
Entrada: agua, bolsa de t, leche, tetera, taza,
cuchara
Salida: una taza de t a la inglesa
Proceso:
1. Poner la bolsa de t en la taza
2. Poner el agua a hervir en la tetera
3. Verter el agua hervida en la taza
4. Aadir leche
5. Remover

17
Algoritmo 3
Problema: averiguar la solvencia de un cliente que
ejecuta un pedido a una fbrica.
Solucin:
Entrada: el pedido
Salida: mensaje de aceptacin o rechazo
Proceso:
1. Leer el pedido
2. Examinar la ficha del cliente
3. Si el cliente es solvente, aceptar pedido
4. En caso contrario, rechazar pedido

18
Lenguajes de programacin

Lenguajes mquina
Lenguajes ensamblador
Lenguajes de alto nivel: C, C++, Visual Basic, Java,
Pascal, Prolog, LISP,

19
Lenguajes mquina
Programas son secuencias de instrucciones compuestas de
bytes:
16 29 156 9 82 75
Ventajas:
La CPU entiende estos programas
Desventajas:
Pensar en modo de 0s y 1s es muy difcil para nosotros

20
Lenguajes ensamblador
Instrucciones compuestas de palabras cortas y nmeros:
LOD 15 6
LOD 16 8
ADD 15 16 17
JMP 10
Ventajas:
Ms fcil a entender
Desventajas:
Todava bastante abstracto
Necesita traducir el cdigo a lenguajes mquina

21
Lenguajes de alto nivel
Diseados para ser ms parecidos a lenguaje natural
Ventajas:
Mucho ms fcil de dar instrucciones
Desventajas:
Ms complicado convertir en lenguajes mquina

22
Lenguajes de programacin:
Por qu hay tantos?
Cmo nacen, sobreviven y caducan?
1. Diferentes dominios de aplicacin:
Programacin de sistemas rapidez y acceso de
bajo nivel: C
Inteligencia artificial computacin simblica: LISP,
Prolog
Programacin cientfica frmulas matemticas:
Fortran
Negocios transacciones: COBOL
Uso especfico: SQL (bases de datos), Perl
(manipulacin de textos), JavaScript (pginas web),
Pascal (formacin)
23
Lenguajes de programacin:
Por qu hay tantos?
Cmo nacen, sobreviven y caducan?
1. Diferentes necesidades:
Fiabilidad: Ada
Escabilidad, paradigma orientado a objeto: C C++
Portabilidad: Java
2. Evolucin:
Mejora del hardware
Mejor comprensin de como reforzar criterios de
legibilidad, facilidad de aprender y escribir,
fiabilidad
3. Importancia de la estandardizacin
4. Nmero de usuarios! 24
Traductores de lenguaje:
intrpretes
PROGRAMA FUENTE

INTERPRETE

EJECUCION DE LA(S)
INSTRUCCION(ES)
INTERPRETADA(S)

25
Traductores de lenguaje:
compiladores
OPCION 1 OPCION 2
PROGRAMA FUENTE
Fase de compilacin

Fase de compilacin COMPILADOR


programa
ENLAZADOR objeto
programa
ejecutable (binder, linker)
Fase de ejecucin

Fase de ejecucin
EJECUCION

26
Java
Se desarroll en los comienzos de los aos 1990
La intencin era crear una herramienta para escribir
programas cortos y efectivos
Ventajas:
Bsico, fcil de entender
Porttil: el mismo cdigo sirve para todos los sistemas operativos
Soporta interfaz grfica de usuario (GUI)
Apropiado para programas en Internet
Desventajas:
La ejecucin es ms lenta que algunos otros lenguajes

27
Java
El cdigo fuente se guarda en un archivo con extensin
.java
Un compilador traduce el cdigo fuente en cdigo de byte,
y lo guarda en un archivo con extensin .class
Las instrucciones son diferentes para diferentes sistemas
operativos
Un intrprete especfico al sistema operativo interpreta el
cdigo byte para ejecutar el programa
Un programa puede ser compuesto de varios archivos

28
La Mquina Virtual Java (JVM)
PROGRAMA FUENTE
.java

COMPILADOR JAVA

PROGRAMA OBJETO Programa bytecode para JVM


.class

INTERPRETE (JVM) INTERPRETE (JVM) INTERPRETE (JVM)


para Windows para Linux para Macintosh
WINDOWS LINUX MACINTOSH 29
Ejecucin de un programa Java

crear el programa HolaMundo.java


en un editor

compilador Java javac HolaMundo.java

HolaMundo.class System.class

llamar a la JVM java HolaMundo


SISTEMA OPERATIVO
30
Componentes de un lenguaje

Sintaxis (gramtica): reglas que determinan de


manera estricta el vocabulario, orden y formato de
las instrucciones permitidas
Errores sintcticos: el programa no compila y/o no se puede
interpretar
Semntica (sentido): el programa, al ejecutarlo,
produce el resultado correcto que uno quiere

31
Errores de programacin
Modificar o crear un
archivo .java

Compilar
errores de compilacin (sintaxis) Editar para
corregir errores

no hay errores

Ejecutar programa
Depurar
errores de ejecucin (semntica) (debugging)
32