Sie sind auf Seite 1von 40

Tema 3:

Lenguaje Algortmico. El concepto de Programa

Ingeniera Informtica Ingeniera Tcnica en Informtica de Sistemas Ingeniera Tcnica en Informtica de Gestin Fundamentos de la Programacin 1 Departamento de Ciencia de la Computacin e I.A. Universidad de Alicante
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Es el nico trabajo que puedo pensar en el que me desempeo como ingeniero y artista. Posee un increble y riguroso elemento tcnico, que me gusta porque hay que pensar con mucha precisin. Por otra parte, tiene un lado extraordinariamente creativo donde las nicas limitaciones son las fronteras de la imaginacin.
Andy Hertzfeld, codiseador de Macintosh, en Programmers at Work

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Contenidos (1)
3.1. Qu es un algoritmo?
3.1.1. Definicin 3.1.2. Fases del proceso de programacin. 3.1.3. reas de inters en el trabajo de algoritmos 3.2.1. Lenguaje algortmico 3.2.2. Diagramas de flujo 3.2.3. Diagramas de cajas 3.3.1. Predicados 3.3.2. Componentes de una especificacin
3

3.2. Tcnicas de representacin de algoritmos

3.3. Especificacin de un algoritmo

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Contenidos (2)
3.4. Estructuras bsicas
3.4.1. Los comentarios 3.4.2. La asignacin 3.4.3. La estructura secuencial 3.4.4. La estructura alternativa 3.4.5. La estructura iterativa

3.5. Lenguaje algortmico ALC. 3.6. Trazas de un algoritmo. EJERCICIOS DE TRAZAS SOBRE ALGORITMOS
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

El Concepto de Algoritmo
Algoritmos + Estructuras de Datos = Programas
Descripcin precisa de una sucesin ordenada de instrucciones no ambiguas que permiten resolver un problema en un nmero finito de pasos

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

El Concepto de Algoritmo
Algoritmos + Estructuras de Datos = Programas
Son independientes tanto del lenguaje de programacin como del ordenador que los ejecuta
La ejecucin de una o varias instrucciones que componen un algoritmo la denominaremos proceso o cmputo
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Fases del proceso de programacin.


Anlisis del Problema Diseo del Algoritmo Programa de Ordenador

1. 2. 3. 4. 5. 6. 7.

Comprensin del problema Plantear la lgica Codificar el programa Traducir el programa a lenguaje mquina Probar el problema Evaluar la solucin Utilizar el programa. Llevarlo a ejecucin
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Fases del proceso de programacin.


1. Comprensin del Problema
Ejemplo: En una empresa necesitan la lista de los clientes que no han pagado en tres meses Cuestiones: -no han realizado un pago a tres meses? -no han pagado nada en los tres ltimos meses? -y si no han pagado en cuatros meses, o en ...? -...
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Fases del proceso de programacin.


2. Plantear la lgica
- Se plantean los pasos del programa (qu pasos incluir y en qu orden) - Se decide la herramienta a utilizar (pseudocdigo, diagrama de flujo de datos, diagrama de cajas, ...) - El programador no se preocupa de la sintaxis del lenguaje de programacin que se emplear en las ltimas fases. - Se estudiarn los datos de entrada necesarios y disponibles, as como los datos que se obtendrn como salida
9

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Fases del proceso de programacin.


3. Codificar el programa
Una vez desarrollada la lgica del programa

Escribir el programa en uno de los ms de 400 lenguajes de programacin que existen

Qu es ms complicado, plantear la lgica o codificar el problema?


Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

10

Fases del proceso de programacin.


4. Traducir el programa a lenguaje mquina
Lenguaje de los ordenadores: 0s y 1s Un programa traductor (compilador o intrprete): Cambia le lenguaje de alto nivel con el que escribimos a lenguaje mquina de bajo nivel que el ordenador entiende Los compiladores no siembre saben qu es lo que se les quiere decir, ni saben cual sera la correccin adecuada, pero s saben cuando algo est mal en la sintaxis
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

11

Fases del proceso de programacin.


5. Probar el programa
Un programa libre de errores de sintaxis no est necesariamente exento de errores lgicos Ejemplo: El hombre se acerc a la ventana

Errores sintcticos? Errores lgicos?


Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

12

Fases del proceso de programacin.


6. Evaluar la solucin.
Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que realiza las tareas para las que ha sido diseado y produce el resultado correcto y esperado Para comprobar el algoritmo: EJECUCIN MANUAL mediante datos significativos UTILIZACIN DE PAPEL para anotar las modificaciones de las distintas fases del programa Evaluar costes espaciales y temporales
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

13

Fases del proceso de programacin.


7. Utilizacin del programa
Una vez finalizadas todas las etapas de programacin hay que llevar el programa al usuario final para el que se realiz. La conversin para utilizar un nuevo programa puede llevar meses no slo por la instalacin, acondicionamiento de las mquinas, sino por la preparacin de los propios usuarios.
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

14

reas de inters
Cmo disear Algoritmos Cmo expresar Algoritmos Cmo validar Algoritmos Cmo analizar Algoritmos Cmo probar Algoritmos

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

15

Representacin de algoritmos (1)


Lenguaje Algortmico o Pseudocdigo
Iniciar el juego Presentar las instrucciones Elegir un nmero entre 1 y 100 Repetir el intento hasta que se adivine el nmero o concluyan siete intentos Leer la propuesta del usuario Responder a la propuesta Fin de la repeticin Finalizar el juego Presentar el mensaje de terminacin

Variante del lenguaje natural en la que se han eliminado las posibles ambigedades mediante el uso de un vocabulario restringido y unas reglas sintcticas de construccin de sentencias
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

16

Representacin de algoritmos (2)


D iv is o r e s

L eer n u m ero
In icia liz a r c o n ta d o r

Diagrama de Flujo de Datos (dfd)

v e rd a d e ro

c o n ta d o r < = n u m e ro

fa ls o

v e rd a d e ro

(n u m e r o r e sto c o n ta d o r ) = 0

fa ls o

E s c r ib ir c o n t a d o r

In c r e m e n ta r c o n ta d o r

F in

Realizan una representacin grfica de los algoritmos resaltando el flujo de control del algoritmo.
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

17

Representacin de algoritmos (3)


D iv i s o r Leer num ero

I n ic ia liz a r c o n ta d o r

Diagrama de Cajas o de Chapin

c o n ta d o r < = n u m e r o
C a lc u la r ( n u m e r o r e s t o c o n t a d o r )

re s to = 0
si no

E s c r ib ir c o n ta d o r In c re m e n ta r c o n ta d o r

Diagrama en el que se omiten las flechas de unin y las cajas son contiguas, lo que permite resaltar la estructura y favorecer la modularidad
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

18

Estructuras algortmicas bsicas (1)


COMENTARIOS Un comentario debe indicar de forma clara y concisa qu es lo que hace una seccin del cdigo de un algoritmo, y no cmo lo hace (para eso ya est el propio cdigo)

algoritmo : Ejemplo de Comentario # Esto es una comentario correcto # Y esto es otro falgoritmo.
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

19

Estructuras algortmicas bsicas (2)


DECLARACIONES Cualquier variable o constante que utilicemos en nuestros algoritmos ha de ser previamente declarada : nombre y tipo de datos que puede contener
algoritmo : Ejemplo de Declaraciones var razn : real fvar const pi:=3.1415 fconst ... falgoritmo.

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

20

Estructuras algortmicas bsicas (3)


ASIGNACIN Nos permite asociar un valor a una variable

algoritmo : Ejemplo de Asignacin var x,y : real fvar x:=3; y:=x+2 falgoritmo.

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

21

Estructuras algortmicas bsicas (4)


ENTRADA / SALIDA: Obtencin de informacin / Impresin del contenido de las variables, de un texto, ...
algoritmo : Ejemplo de Asignacin var a,b : entero fvar escribe(Introduce un valor : ); lee(a); escribelin(Introduce un valor : ); leelin(b); a := a + b; escribelin(a vale , a); escribelin(b + 4); falgoritmo.

Lee a Escribe b

Lee a Escribe b
22

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Estructuras algortmicas bsicas (5)


SECUENCIA : las acciones se efectan unas a continuacin de las otras, de manera consecutiva. Para saber donde finaliza una instruccin utilizaremos el smbolo ;
algoritmo : Ejemplo de Estructura Secuencial var x,y : entero fvar {x=5 y=Y} x:=7 ; y:=x+y {x=7 y=x+Y} falgoritmo.
Ejemplo
x :=7
y:= x+ y

Inicio
x :=7
y := x+ y

Fin
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

23

Estructuras algortmicas bsicas (6)


SELECCIN : La estructura alternativa permite tomar decisiones entre distintas posibilidades en funcin de una condicin.
si (condicin) entonces S1 si no S2 fsi
S1 S2

condicin
verdadero falso

S1

S2

verdadero

condicin

falso

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

24

Estructuras algortmicas bsicas (7)


ESTRUCTURA ALTERNATIVA RESTRINGIDA
condicin
verdadero falso

S1

verdadero

condicin

falso

si (condicin) entonces S1 fsi


S1

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

25

Estructuras algortmicas bsicas (8)


ESTRUCTURA ALTERNATIVA MLTIPLE
verdadero
v a lo r 1
v a lo r 2

v a ria b le
...
v a lo r n

S1

S2

o tr o c a s o

Sn

S n+1

caso variable de valor1 : S1 fbloque valor2 : S2 fbloque ... valorn : Sn fbloque otrocaso : Sn+1 fbloque fcaso
S1

valor1
verdadero

falso

valor2

falso

...
S2
verdadero

valorn

falso

Sn

Sn+1

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

26

Estructuras algortmicas bsicas (9)


REPETICIN : (iteracin o bucle) repeticin de una instruccin en funcin de una condicin de continuacin o de finalizacin
v e rd a d e ro

Repeticin con condicin inicial (Condicin de continuacin)


condicin

co n d ici n

fa lso

cuerpo

mientras (condicin) hacer S fmientras

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

27

Estructuras algortmicas bsicas (10)


REPETICIN : (iteracin o Repeticin con condicin final bucle) repeticin de una (Condicin de finalizacin) instruccin en funcin de una condicin de continuacin o de finalizacin
cuerpo

condicin

verdadero

condicin

falso

repetir S hasta(condicin) frepetir

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

28

Estructuras algortmicas bsicas (11)


REPETICIN : (iteracin o Repeticin con condicin final bucle) repeticin de una (Condicin de continuacin) instruccin en funcin de una condicin de continuacin o de finalizacin cuerpo
S
no condicin
falso
repetir S mientras(condicin) frepetir

verdadero

condicin

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

29

Estructuras algortmicas bsicas (12)


para variable:=valor_inicial hasta valor_final [paso incremento] hacer

S fpara

v a r ia b le := v a lo r_ in ic ia l

para variable:=valor_inicial
v e rd a d e ro
v a r ia b le < = v a lo r _ fin a l

fa ls o

S
i n c r e m e n to

S
hasta valor_final

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

30

Lenguaje algortmico (1)


algoritmo : [Nombre_Algoritmo] [const declaracin_constantes fconst] [var declaracin_variables fvar] cuerpo_algoritmo falgoritmo.
Comentarios : # Comentarios Asignacin : variable := expresin Secuencia: instruccin1 ; instruccin2 Entrada/Salida : lee(lista_variables) leelin(lista_variables) escribe(lista_variables) escribelin(lista_variables)

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

31

Lenguaje algortmico (2)


Seleccin: si (condicin) entonces instruccin1 [si no instruccin2] fsi Seleccin Multiple: si (condicin) entonces instruccin1 sinosi (condicin) entonces instruccin2 ... [sino instruccin2] fsi
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Seleccin mltiple: caso expresin de valor1 : instruccin1 fbloque v21,v22,...,v2n : instruccin fbloque ... valorn : instruccin n fbloque [otrocaso : instruccin n+1 fbloque] fcaso

32

Lenguaje algortmico (3)


Repeticin 1 (condicin inicial) : mientras (condicin) hacer cuerpo_bucle fmientras Repeticin 2 (condicin final) : repetir cuerpo_bucle hasta (condicin) frepetir Repeticin 3 (condicin final) : repetir cuerpo_bucle mientras no (condicin) frepetir Repeticin 4 (condicin con contador) : para cont:=v_inicial hasta v_final [paso incr] hacer cuerpo_bucle fpara
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

33

Disear un algoritmo que lea un nmero natural distinto de 0 desde teclado y muestre por pantalla todos los divisores de dicho nmero

algoritmo : Divisores # Algoritmo que escribe los divisores de un nmero dado {numero=X (X N ) X>0} # Declaracin de variables var numero, contador : entero fvar # Cuerpo del algoritmo escribe( 'Introduce un nmero natural no nulo : ' ); lee( numero ); escribe( 1 ); contador := 2 ; mientras (contador < numero) hacer si (numero resto contador) = 0 entonces escribe( contador ) fsi; contador := contador + 1 fmientras; escribelin( contador ) {numero=X contador=X} falgoritmo.

Diagrama de flujo
INICIO/FIN del algoritmo PROCESO Operaciones de tratamiento ENTRADA / SALIDA

COMPARACIN Toma de decisiones

CONECTOR LNEA (Flecha) DE FLUJO


Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

35

D ivisores

Leer num ero


Inicializar contador

verdadero

contador < = num ero

falso

verdadero

(num ero resto contador)= 0

falso

E scribir contador

Increm entar contador

Fin

Diagrama de Chapn o cajas


BLOQUE SECUENCIAL

BLOQUE CONDICIONAL
instruccin 1
verdadero

condicin
falso

instruccin 2 mdulo X

instruccin 1

instruccin 2

BLOQUE MIENTRAS-HACER
condicin

BLOQUE REPETIR-HASTA

cuerpo
cuerpo

condicin

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

37

Divisor Leer numero Inicializar contador contador <= numero


Calcular (numero resto contador)

resto = 0
si no

Escribir contador Incrementar contador

evidente que las flechas de e diagrama de flujo no responden a las estructuras tas. Corrige el siguiente grama denominado cdigo agueti.

COMIENZO
Leer NOTA, POSICIN

NO

PRUEBA >= 90?

SI

NO

POSICIN >= 80?

SI

POSICIN >= 25?

SI

NO
NOTA >= 50? PRUEBA >= 70?

SI

SI

NO

NO NO
NOTA >= 75?

SI

Imprimir RECHAZADO

Imprimir ACEPTADO

FIN

Traza de un algoritmo.
El estado de un proceso queda correctamente descrito por el valor de cada uno de los objetos (variables) en el momento en que dicho proceso es observado
n1
Solicitar un nmero n1

n2 3 3 3

nRes 7 7

4
Solicitar un nmero n2

4
Calcular nRes = n1 + n2

4
Mostrar nRes

4
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

40

Das könnte Ihnen auch gefallen