Sei sulla pagina 1di 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)

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

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 y logica (ALU) Procesador
Unidad de (CPU) Control (CU)

Memoria Principal (RAM)


Programa

Dispositivos de entrada teclado ratn

Dispositivos de salida pantalla impresora

Dispositivos de almacenamiento de datos

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

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
CPU 5 0 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. 2. 3. 4. 5. Poner la bolsa de t en la taza Poner el agua a hervir en la tetera Verter el agua hervida en la taza Aadir leche 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. 2. 3. 4. Leer el pedido Examinar la ficha del cliente Si el cliente es solvente, aceptar pedido 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:
Cmo nacen, sobreviven y caducan?
1. Diferentes dominios de aplicacin:

Por qu hay tantos?

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:
Cmo nacen, sobreviven y caducan?
1. Diferentes necesidades:
Fiabilidad: Ada Escabilidad, paradigma orientado a objeto: C C++ Portabilidad: Java

Por qu hay tantos?

2. Evolucin:
Mejora del hardware Mejor comprensin de como reforzar criterios de legibilidad, facilidad de aprender y escribir, fiabilidad
24

3. Importancia de la estandardizacin 4. Nmero de usuarios!

Traductores de lenguaje: intrpretes


PROGRAMA FUENTE

INTERPRETE

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

25

Traductores de lenguaje: compiladores


OPCION 1 PROGRAMA FUENTE Fase de compilacin Fase de compilacin COMPILADOR OPCION 2

programa ejecutable

ENLAZADOR (binder, linker)

programa objeto 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) para Macintosh

INTERPRETE (JVM) para Windows

INTERPRETE (JVM) para Linux LINUX

WINDOWS

MACINTOSH

29

Ejecucin de un programa Java


crear el programa en un editor compilador Java HolaMundo.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 (debugging)


32

errores de ejecucin (semntica)

Potrebbero piacerti anche