copyright © 2005 pedro Álvarez, josé Ángel bañares, pedro latorre, santiago velilla Última...

37
Copyright © 2005 Pedro Álvarez , José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 200 Tema 1. Conceptos Básicos de Programación Departamento de Informática e Ingeniería de Sistemas Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza C.P.S. Universidad de Zaragoza

Upload: marcela-orrantia

Post on 29-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Cop

yri

gh

t ©

20

05

Ped

ro Á

lvare

z ,

José

Án

gel B

are

s, P

ed

ro L

ato

rre,

San

tiag

o V

elil

la

Última revisión: Septiembre, 2005

Tema 1.

Conceptos Básicos de Programación

Tema 1.

Conceptos Básicos de Programación

Departamento de Informática e Ingeniería de SistemasDepartamento de Informática e Ingeniería de SistemasC.P.S. Universidad de ZaragozaC.P.S. Universidad de ZaragozaDepartamento de Informática e Ingeniería de SistemasDepartamento de Informática e Ingeniería de SistemasC.P.S. Universidad de ZaragozaC.P.S. Universidad de Zaragoza

Page 2: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 2

Conceptos Básicos de Programación

Problemas y soluciones

Objetivos de la programación

Noción de algoritmo

El computador (hardware)

Cuestiones generales sobre el SoftwareEstilo de programación

Lenguajes de Programación

Elementos de un programa

Propiedades de los algoritmos

Ciclo de vida de los programas

Entorno de Programación

Page 3: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 3

Problemas y soluciones

¿Cómo se resuelve un problema en general?

Datos Resultados

Modelado o representaciónDatos + procesos + resultados

Implementaciónen la plataforma de trabajo Ejecución

de los procesos

Visualizacióndel modelo de resultados

Page 4: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 4

Problemas y soluciones

¿Cómo se resuelve un problema con un computador?

Datos Resultados

Análisis

Codificacióndel programa Ejecución

del programa

Presentaciónde los resultados

Page 5: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 5

Objetivo de la programación.

• Problemas que se tratan de resolver en Programación

• Cómputo o cálculo

• Gestión comercial

• Control

• Tratamiento de la señal

• Lúdicos

• Inteligencia Artificial

• E-bussines

• Etc.

• Problemas cuya solución puede ser llevada a cabo por un COMPUTADOR

Computador: Herramienta que permite tratar de forma automática problemas de tratamiento de la información.

Informática: Ciencia del tratamiento de la información.

Page 6: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 6

Objetivo de la programación: - Construir programas

• Programa: texto formado por instrucciones para que una máquina las ejecute

Los lenguajes de programación están diseñados de forma que sólo se requiere que los programadores establezcan sus intenciones explícitamente

• ¿Cómo transformar un problema en un programa ejecutable por un computador?

Entre problema y programa hay algunos pasos importantes:

Problema Algoritmo Programa

Análisis /Diseño

Codificación

Lenguaje Natural Lenguaje Algorítmico /

pseudocódigo

PASCAL, C, Ada, Basic, Fortran, COBOL, Java, C++, Lisp, ...

Page 7: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 7

Noción de algoritmo

• Acción: Es un acontecimiento producido por un actor (o ejecutante de una acción) que tiene lugar durante un periodo de tiempo finito y que tiene como consecuencia o resultado una nueva situación bien definida y previsible.

• Estado: Es el conjunto de objetos (con sus circunstancias) disponibles en un instante determinado.

• Algoritmo: Es la descripción de una sucesión finita de acciones que permite transformar el entorno del estado inicial dado en el final deseado.

Iremos calculando factorial de n = 1* 2 * ...*i * ... npara valores crecientes de i hasta n

i:=1;

factorial:=1;

Mientras Que i < n hacer

i:= i+1;

factorial:= factorial * i

FinMientrasQue;

Solución informalen lenguaje natural

Algoritmo en lenguaje algorítmico

Page 8: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 8

Noción de Programa

• Programa: Es un algoritmo escrito en términos que pueda interpretar (ejecutar) un computador. A él se llega tras codificar el algoritmo en algún lenguaje de programación.

i:=1;

factorial:=1;

Mientras Que i < n hacer

i:= i+1;

factorial:= factorial * i

FinMientrasQue;

i:=1; factorial:=1;

While i < n do

begin

i:= i+1;

factorial:= factorial * i

end;

i=1; factorial=1;

While (i < n) factorial*=++i;

lenguaje algorítmico

Pascal

C

Page 9: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 9

Cuestiones generales sobre el software

En los últimos años

• El avance espectacular del hardware no ha ido acompañado por el software en cuanto a calidad y coste

• Aumento de la demanda del software: cantidad, prestaciones, calidad

• La capacidad de mantenimiento está amenazada por el mal diseño y el uso inadecuado de recursos

• La parte principal del coste de una solución informática es el software

• El efecto 2000.

• ¿cómo pudo difundirse ese miedo?

• Por falta de credibilidad

Hacia una solución

• Construcción sistemática frente a improvisada

• Construcción usando componentes: reusabilidad, librerías

• Uso de herramientas de alto nivel: que construyen programas.

Page 10: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 10

Ciclo de vida de un programa

Mantenimiento: En general el software sufrirá cambios:

• Errores detectados

• Aparición de nuevos requisitos: • Externos: periféricos, sistema operativo

• Nuevas prestaciones

EspecificaciónAnálisis

Diseño

Codificación

Pruebas

Mantenimiento

Page 11: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 11

El computador (Hardware)

Page 12: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 12

El computador (Hardware)

CPU (Central Process Unit)

Memoria

Periféricos

Page 13: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 13

Memoria de un computador

Memoria

• Se realiza mediante millones de transistores que se utilizan a modo de “interruptores” que pueden estar encendidos o apagados

• 8 bits = 1 byte Podemos representar 256 valores del 0 al 255 en binario

Base 10 Base 2

2562 = 2 * 10^3 1101= 1 * 2^3= 8

5 * 10^2 1 * 2^2= 4

6 * 10^1 0 * 2^1= 0

2 * 10^0 1 * 2^0= 1

13

Cada transistor contieneun bit de informaciónDe teoría del lenguaje: La unidad mínima de información es el bit.

1 0

Page 14: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 14

Memoria

• Podemos representar en memoria información numérica y no numérica:

1101= 13 (Número 13)

Utilizar una codificación para los caracteres (ASCII)

El 65 representa la a

El 66 representa la b

....

Agrupando caracteres representamos palabras ...

Page 15: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 15

Dirección de memoria

Como almacenar y encontrar la información

• En direcciones de memoria

12

34

1

Direcc

iones d

e mem

oria

........

Palabra*

*Palabra del computador = Número de bytes del mínimo bloque direccionable

                          

Page 16: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 16

Memoria Principal/Memoria Secundaria

Tipos de memoria

• Memoria Principal• RAM (Read Access Memory)

• ROM (Read Only Memory)

• Memoria Secundaria• Acceso secuencial

• Acceso directo

• La memoria secundaria solo se debe utilizar para almacenar datos:

Vel. mem. primaria >>>> Vel. mem.secundaria

Page 17: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 17

Cargando un programa en memoria

1. Inicializas el programa

2. La cabeza lectura/escritura del disco duro busca el programa

3. Se copia el programa en memoria(RAM)

4. Se ejecuta el programa (La CPU ejecuta las instrucciones del programa)

Page 18: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 18

Funcionamiento del computador

                         

Page 19: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 19

Cuanta memoria se precisa...

• 1 Byte: Bloque de bits. Es la unidad de medida de la capacidad de la memoria o de los discos

• 1 Kilobyte (KB o K) = 1,024 bytes. Desde el punto de vista de un computador es un número redondo (Los computadores representan información en base 2, y 1024 es 2^10. Como las personas pensamos en base 10, solemos redondear un k a 1000 bytes.

• Un disco con 360KB de datos, puede representar unos 360.000 caracteres.

• 1 Megabyte (MB or M) es un kilobyte al cuadrado (1,024 veces 1,024), o aproximadamente un millón de bytes. Un disco con una capacidad de 1.44MB puede contener 1.440.000 caracteres.

• 1.44MB es un tamaño estándar para los discos de 3 pulgadas de doble densidad.

• 1 Gigabyte y Terabyte El termino gigabyte (GB or G) significa un kilobyte al cubo (1,024 * 1,024 * 1,024), o aproximadamente mil millones de bytes. El termino terabyte (TB o T) significa un kilobyte a la cuarta (1,024^4), más de un billón de bytes. Por ahora no hay en el mercado discos duros de tamaño de terabyte a precio razonable.

• ¿Cuanta memoria se precisa?:• Hace unos pocos años los computadores se

vendían de serie con 1MB de RAM. Hoy se ofrecen con 500 MB, 1 GB... o más. Los discos duros están en cientos de gigabytes.

• Una página de texto típico contiene entre 2,500 y 3,000 caracteres. 1MB equivale aproximadamente a 400 paginas de texto.

Page 20: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 20

Cuestiones generales sobre el software

• Estilo de Programación

Programación imperativa• Lenguajes orientados a instrucciones• Programas = Receta

• Se encadenan de forma explicita las instrucciones.

• Influenciado por la arquitectura de la máquina

• VARIABLES: Direcciones de memoria. Datos

• INSTRUCCIÓN BASICA: Asignación. Acción. (Dar valor a una variable)

• COMPOSICIÓN SECUENCIAL DE ACCIONES.

Page 21: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 21

Cuestiones generales sobre el software

• Metodología de Programación

Programación Estructurada

Conjunto de ideas gestadas en torno al grupo de trabajo WG2.3 (Programming Methodology) de IFIP:

• Utilización de mecanismos de abstracción (funcional y de datos) como herramienta para dominar la complejidad.

• Utilización de una metodología de diseño descendente o por refinamientos sucesivos (abstracción funcional)

• Reducido número de estructuras de control:• Composición secuencial• Composición condicional• Composición iterativa

• Énfasis en los mecanismos de estructuración de datos.

• Se introduce la idea de tipo abstracto de dato: Separación de los aspectos ligados a la especificación de un tipo de los de la implementación.

• Definición de métodos que garanticen la corrección de programas (verificación formal)

• Notación independiente del lenguaje de programación.

Programas = Algoritmos + Estructuras de datos

• Estructuras de datos = Abstracciones de la realidad que nos permiten representar el conjunto de situaciones esperables al resolver el problema.

• Algoritmos = Esquemas de composición de instrucciones que permiten representar de forma no ambigua el flujo de control (El orden en el que se ejecutarán las instrucciones)

Page 22: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 22

Lenguajes de Programación

• Jerarquía de Niveles de lenguajes de programación

• Ejemplo del “Procesador” Tractor Oruga

MI A R MD A R

1 1 0 1 1 0 Avanza 1 m

1 0 1 1 0 1 Retrocede 1 m

1 1 0 0 0 0 Gira Derecha 90 º

0 0 0 1 1 0 Gira Izquierda

Page 23: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 23

Problema El tractor se encuentra en A, mirando al norte, y tengo

que llevarlo a BAlgoritmo

Sigue recto hasta el fondo Gira a la derecha Sigue recto hasta el fondo

Programa MI A R MD A R1 1 0 1 1 01 1 0 1 1 01 1 0 0 0 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 0

Procesador tractor oruga

Lo lleva a I

Lo direcciona hacia B

Lo lleva a B

Page 24: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 24

Es farragoso programar a nivel MAQUINAPara facilitar la programación nos inventamos:

• NemotécnicosAV Avanza 1 1 0 1 1 0GD Giro Derecha 1 1 0 0 0 0RE Retrocede 1 0 1 1 0 1GI Giro Izquierda 0 0 0 1 1 0

Programa AV AV GD AV AV AV AV AV AV

• Esquemas de composición

Programa Avanza 2 Derecha 1 Avanza 6

• Hemos mejorado en ABSTRACCION pero nos hemos alejado de lo que “interpreta la maquina”. NECESIDAD DE TRADUCCION

Lenguaje de Maquina

Lo lleva a I

Lo direcciona hacia B

Lo lleva a B

Avanza x AV xDerecha x GD xIzquierda x GI xRetrocede x RE x

Page 25: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 25

Lenguaje Maquina

• Supongamos otro procesador: Una maquina con un único motor que puede:

Avanzar 1 m 0 1

Retroceder 1 m 1 0

Girar Izquierda 90 1 1

Problema: El mismo

Algoritmo: El mismo

Programa: 01 01 11 11 11 01 01 01 01 01 01

DISTINTO

• Pero el programa, en alto nivel, puede ser el mismo, basta con el traductor adecuado

Programa

Avanza 2

Derecha 1

Avanza 6

1 1 0 1 1 0

1 1 0 1 1 0

1 1 0 0 0 0

1 1 0 1 1 0

1 1 0 1 1 0

1 1 0 1 1 0

1 1 0 1 1 0

1 1 0 1 1 0

1 1 0 1 1 0

0 1 0 1 1 11 1 1 1 0 10 1 0 10 1 0 1 0 1

Código parael primertractor

Código parael tractor conUn solo giro

Page 26: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 26

Niveles de lenguajes de programacion

• Alto Nivel

• Mas fáciles de programar

• Independencia de la maquina

• Necesidad de traductores compiladores

• Menor coste de desarrollo

• Mas fácilmente mantenibles

• Detección de errores

• Transportables

• Son un compromiso entre eficiencia y manejabilidad

• Bajo Nivel

• Programas específicos para un tipo de máquina

• Pueden permitir hacer cosas de forma más eficiente.

Maquina

Page 27: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 27

Lenguajes de Programación

• FORTRAN (1965): FORmula TRANslator. Calculo científico.

• COBOL (1959). Ideal para gestión: Pocas estructuras de control, muchas capacidades de manejo de dato.

• ALGOL (1960): Primer intento de formalizar la resolución de problemas. Programas estructurados con tipos de datos.

• Lisp (1960): Sigue en uso. Estructura de datos simple (La lista). Tratamiento simbólico de la información. Su éxito se debe a que soporta más estrategias de descomposición modular que cualquier otro lenguaje.

• BASIC (1965): Beginners All Purpose Symbolic Language. Lenguaje interpretado, sin énfasis en tipos de datos.

• PASCAL (1971): Desciende de ALGOL. Paradigma de la programación estructurada.

• C (1972): Desarrollado por Dennis Ritchie de AT&T Bell Laboratories para ofrecer un lenguaje de alto nivel en el cual se pudiera programar UNIX.

• Lenguajes orientados a objetos (C++, Eiffel, C#,…): A la hora de organizar el software se focaliza en las abstracciones de datos en lugar de en la funcionalidad.

• JAVA: ¡Lenguaje orientado a objeto, que se puede ejecutar en cualquier máquina! Idea de máquina virtual.

Page 28: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 28

Lenguajes Interpretados/Compilados

• Ejecución interpretada del programa fuente

• Se iteran los siguientes pasos1. Obtención de la siguiente instrucción a

ejecutar del código fuente

2. Análisis de la instrucción y determinación de las acciones a ejecutar

3. Ejecución de las correspondientes acciones

• Ejecución del programa compilado

• Se realiza previamente la compilación del programa fuente en la versión equivalente del programa en lenguaje máquina. Esta versión se conoce como programa objeto.

• El programa objeto se une, eventualmente, con los subprogramas de biblioteca descritos en el programa fuente para obtener el programa ejecutable. Esta operación se denomina edición de uniones (link en inglés).

Page 29: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 29

Java, código objeto que se ejecuta en cualquier máquina

• Un applet es un programa escrito en Java que anima una porción de la página Web

• El usuario puede interaccionar con un applet, gracias a que se trata de un programa.

• Un applet se ejecuta completamente en el cliente:

• Una vez transmitido la velocidad de la interacción no depende de la red

• Si es necesario el applet se puede comunicar con el servidor

Page 30: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 30

Java, código objeto que se ejecuta en cualquier máquina

• El applet debe poderse ejecutar en una amplia gama de plataformas con diferentes SO y procesadores.

• Los applets se almacenan en un código intermedio independiente de la plataforma (el byte-code)

Almacén de Applets

Bycodes

Appletjava

Servidor

Compilador de java

Verificador de Bytecode

Cargador de clase

Intérprete deJava (JVM)

Plataforma

MacOSUNIX

Windowsetc.Cliente

Page 31: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 31

Elementos de un Lenguaje

• Los elementos que definen un lenguaje son:

• SIMBOLOS• Palabras clave = {IF, THEN, WHILE, …}

• Caracteres = {‘a’,..’z’,’A’..’Z’,’#’,’?’,……. }

• Dígitos = {0,..,9}

• Otros símbolos = {‘.’ , ’,’ , ‘;’ ,…}

• SINTAXIS• Conjunto de reglas sintácticas

• Notaciones para expresar las reglas:Backus-Naur

Grafo Sintáctico

Page 32: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 32

Sintaxis

• Grafos Sintácticos • Backus-Naur

<letra>::= ‘A’ I ‘B’ I… I‘Z’

<digito>::= ‘0’ I ‘1’ I… I‘9’

<identificador>::=

<letra> {<letra> I <digito> I’_’}

digito

1

2

9

0 o más veces

alternativa

Ejemplos identificadores válidos: P3Q numero_PIEjemplo identificadores no válidos: 3PQ _numero

digito

0

2

9

identificador

letra

digito

_

Page 33: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 33

Sintaxis

expresiónbooleana

sentencia

sentencia

THEN

ELSE

IF

sentenciaIF

<Sentencia IF> ::=

IF <expresion booleana> THEN <bloque>

[ELSE <bloque>]

0 o 1 vez

Page 34: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 34

Sintaxis

digitoentero sin signo

digitoenterosin signo

enterosin signo. E

+

-

numerosinsigno

expresion constante

identificadorconstante

caracter

numero sin signo

+

-

' '

constante

Page 35: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 35

Propiedades de los algoritmos

• Condiciones Necesarias

• Finitud

• No ambigüedad

• Propiedades deseables

• Generalidad

• Eficiencia

• Independencia de la máquina

Page 36: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 36

Sistema Operativo

• Sistema Operativo

• Conjunto de programas que tienen por misión facilitar la utilización del computador

• Acceso a los usuarios autorizados

• Edición de ficheros de texto

• Puesta a punto y ejecución de programas

• Seguridad y protección

• Facturación y contabilidad de uso de recursos

• Etc.

• Gestión óptima de la máquina• Gestión de memoria

• Control de dispositivos periféricos

• Acceso a ficheros

• Asignación de recursos y ordenación de tareas

• Etc.

Page 37: Copyright © 2005 Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago Velilla Última revisión: Septiembre, 2005 Tema 1. Conceptos Básicos de Programación

Programación. Pedro Álvarez, José Ángel Bañares, Pedro Latorre, Santiago VelillaTema 1. Conceptos Básicos de Programación 09/09/2004 37

Entorno de programación

• Entorno de trabajo:

• Programa cuya misión es facilitar el desarrollo de programas utilizando un determinado lenguaje

• Integra herramientas:• Edición e programas fuente (C, C++, Java,

Pascal, Ada, ...)

• Compilación de programas fuente

• Depuración de programas

• Ejecución y prueba de programas

• Construcción de programas ejecutables y bibliotecas