• No se han encontrado resultados

Tema 1. Conceptos Básicos de Programación. Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza

N/A
N/A
Protected

Academic year: 2021

Share "Tema 1. Conceptos Básicos de Programación. Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza"

Copied!
41
0
0

Texto completo

(1)

C op yr ig ht © 2 00 5 Pe dro Á lv are z , Jo sé Á nge l B añ are s, Pe dro L at orre , S an tia go Ve lil la

Tema 1.

Conceptos Básicos de Programación

Tema 1.

(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 Software

Estilo 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

(3)

Problemas y soluciones

¿Cómo se resuelve un problema en general?

Datos

Resultados

Modelado o representación

Datos (iniciales, intermedios, resultados)

+ algoritmos

Implementación

en la plataforma de trabajo

(codificación: Pascal, Java, C…)

Ejecución

de los procesos

Visualización

(4)

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.

(5)

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++,

(6)

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 * ... n

para valores crecientes de i

hasta n

Read(n);i:=1;

factorial:=1;

Mientras Que i < n hacer

Solución informal

en lenguaje natural

Algoritmo en

(7)

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

lenguaje

algorítmico

Pascal

(8)

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

(9)

Ciclo de vida de un programa

Mantenimiento:

En general el software sufrirá cambios:

Errores detectados

Especificación

Análisis

Diseño

Codificación

Pruebas

Mantenimiento

(10)
(11)

El computador (Hardware)

CPU (Central Process Unit)

Memoria

(12)

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

Cada transistor contiene

un bit de información

De teoría del lenguaje:

La unidad mínima de

información es el bit.

(13)

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

....

(14)

Dirección de memoria

Como almacenar y encontrar la información

• En direcciones de memoria

1

2

3

4

1

D

ire

cc

io

ne

s d

e

m

em

or

ia

...

...

..

Palabra*

*

Palabra

del computador = Número de bytes

del mínimo bloque direccionable

(15)

Memoria Principal/Memoria Secundaria

Tipos de memoria

• Memoria Principal

• RAM (Read Access Memory)

• ROM (Read Only Memory)

• Memoria Secundaria

• Acceso secuencial

• Acceso directo

(16)

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

(17)
(18)

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.

(19)

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

(20)

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

(21)

Lenguajes de Programación

Jerarquía de Niveles de lenguajes de

programación

(22)

Problema

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

llevarlo a B

Algoritmo

Sigue recto hasta el fondo

Gira a la derecha

Sigue recto hasta el fondo

Programa

MI A R MD A R

1 1 0 1 1 0

1 1 0 1 1 0

1 1 0 0 0 0

1 1 0 1 1 0

Procesador tractor oruga

Lo lleva a I

(23)

Es farragoso programar a nivel MAQUINA

Para facilitar la programación nos inventamos:

Nemotécnicos

AV

Avanza

1 1 0 1 1 0

GD

Giro Derecha

1 1 0 0 0 0

RE

Retrocede

1 0 1 1 0 1

GI

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

Lenguaje de Maquina

Lo lleva a I

Lo direcciona hacia B

Lo lleva a B

Avanza x AV x

Derecha x GD x

Izquierda x GI x

(24)

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

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

Código para

el primer

tractor

(25)
(26)

Lenguaje Máquina / CPU / Memoria

(27)

Lenguaje Máquina / CPU / Memoria

(28)

Lenguaje Máquina / CPU / Memoria

(29)

Lenguaje Máquina / CPU / Memoria

(30)

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.

(31)

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.

(32)

Lenguajes Interpretados/Compilados

Ejecución interpretada del programa fuente

Se iteran los siguientes pasos

1. 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).

(33)

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

(34)

Java, código objeto que se ejecuta en

cualquier máquina

Una aplicación java debe poderse ejecutar

en una amplia gama de plataformas con

diferentes SO y procesadores.

• Las aplicaciones Java se almacenan en un

código intermedio independiente de la

plataforma (el byte-code)

Almacén de

Applets

Bycodes

Applet

java

Servidor

Compilador de java

Verificador de Bytecode

Cargador de clase

Intérprete de

Java

(JVM)

(35)

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

(36)

Sintaxis

Grafos Sintácticos

Backus-Naur

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

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

0 o más veces

alternativa

identificador

letra

digito

digito

1

2

9

digito

0

2

9

1

letra

A

B

Z

(37)

Sintaxis

expresión

booleana

sentencia

sentencia

THEN

ELSE

IF

sentencia IF

<Sentencia IF> ::=

IF <expresion booleana> THEN <sentencia>

[ELSE <sentencia>]

0 o 1 vez

sentencia

W HILE

DO

sentencia W HILE

expresión

booleana

<Sentencia WHILE> ::=

(38)

Sintaxis

digito

entero sin signo

digito entero sin signo entero sin signo . E + -numero sin signo

expresion constante

identificador

constante

caracter

numero sin signo

+

-'

'

(39)

Propiedades de los algoritmos

Condiciones Necesarias

• Finitud

• No ambigüedad

Propiedades deseables

• Generalidad

• Eficiencia

• Independencia de la máquina

(40)

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

(41)

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

Referencias

Documento similar

– Este trabajo de investigación se ha realizado dentro del Programa de Doctorado en Formación en la Sociedad del Conocimiento de la Universidad de

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

 En el apartado 4.6 de la Ficha Técnica y 6 del Prospecto se añade la frase “En muy raras ocasiones se han notificado reacciones de hipersensibiliad, incluyendo anafilaxia (en

En estos últimos años, he tenido el privilegio, durante varias prolongadas visitas al extranjero, de hacer investigaciones sobre el teatro, y muchas veces he tenido la ocasión

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,