Você está na página 1de 38

Complementos de Informática

Tema 1: Algoritmos y Programas

Álvaro Romero Jiménez


Departamento de Ciencias de la Computación e Inteligencia Artificial
Universidad de Sevilla
Resolución de un Problema

Pasos a seguir:
1. Análisis del problema.
2. Diseño del algoritmo para resolverlo.
3. Verificación del algoritmo.
4. Implementación del algoritmo.

2 / 26
Algoritmo

Características que debe cumplir:


Preciso: no contiene ambigüedades.
Definido: siempre se obtiene el mismo resultado a partir de los
mismos datos.
Finito: siempre termina.

3 / 26
Algoritmo

Características que debe cumplir:


Preciso: no contiene ambigüedades.
Definido: siempre se obtiene el mismo resultado a partir de los
mismos datos.
Finito: siempre termina.

Partes en las que se estructura:


Entrada: información de partida.
Procesos: operaciones y cálculos a realizar.
Salida: resultados obtenidos.

3 / 26
Ejemplo de Algoritmo
Problema: preparar una taza de té.

4 / 26
Ejemplo de Algoritmo
Problema: preparar una taza de té.
Entrada: tetera, taza, bolsa de té.
Salida: taza de té.

4 / 26
Ejemplo de Algoritmo
Problema: preparar una taza de té.
Entrada: tetera, taza, bolsa de té.
Salida: taza de té.
Inicio
Tomar la tetera
Llenarla de agua
Encender el fuego
Poner la tetera en el fuego
Esperar a que hierva el agua
Tomar la bolsa de té
Introducirla en la tetera
Esperar a que esté hecho el té
Echar el té en la taza
Fin

4 / 26
Representación de Algoritmos
Diagrama de Flujo
Características:
I Representación gráfica de la secuencia de pasos a realizar.

I Las operaciones se escriben en símbolos normalizados.

I Las líneas de flujo indican el orden de ejecución.

5 / 26
Representación de Algoritmos
Diagrama de Flujo
Características:
I Representación gráfica de la secuencia de pasos a realizar.

I Las operaciones se escriben en símbolos normalizados.

I Las líneas de flujo indican el orden de ejecución.

Símbolos principales:

Inicio y fin del algoritmo

Proceso

Entrada y salida de datos

Decisión

5 / 26
Ejemplo de Diagrama de Flujo
Algoritmo: preparar taza de té

Entrada: tetera, taza, bolsa de té.


Salida: taza de té.

Poner la
Tomar la Llenarla de Encender el
Inicio tetera en el
tetera agua fuego
fuego

Esperar a
que hierva
el agua

Esperar a
Echar el té Introducirla Tomar la
Fin que esté
en la taza en la tetera bolsa de té
hecho el té

6 / 26
Estructuras de Datos

Datos: objetos con los cuales opera un algoritmo.


Tipo de un dato: determina qué operaciones se pueden
efectuar con ese dato.

7 / 26
Estructuras de Datos

Datos: objetos con los cuales opera un algoritmo.


Tipo de un dato: determina qué operaciones se pueden
efectuar con ese dato.

Tipos de datos básicos:


Entero: preciso y limitado en tamaño.
Real: impreciso y limitado en tamaño.
Lógico: valor de verdad.
Cadena: secuencia finita de caracteres.
Lista: secuencia finita de datos enumerados.
Diccionario: secuencia finita de datos indexados.

7 / 26
Programas
Programa = Algoritmo + Estructuras de datos.

8 / 26
Programas
Programa = Algoritmo + Estructuras de datos.

Elementos de un programa:
Constantes: datos cuyo valor no cambia durante la ejecución
del programa.
Variables: datos cuyo valor puede cambiar durante la
ejecución del programa.
Expresiones: Combinación de operadores y operandos.
Operandos: constantes, variables u otras
expresiones.
Operadores: aritméticos, relacionales, lógicos y
de tipo de dato.
Funciones: aceptan unos argumentos y producen un
resultado.
8 / 26
Representación de Programas
Pseudocódigo

Características:
I Lenguaje de especificación de programas.

I Utiliza palabras reservadas.

I Exige una correcta sangría de las líneas.

I Se implementa con facilidad.

9 / 26
Representación de Programas
Pseudocódigo

Características:
I Lenguaje de especificación de programas.

I Utiliza palabras reservadas.

I Exige una correcta sangría de las líneas.

I Se implementa con facilidad.

Estructura de un programa en pseudocódigo:


Cabecera: nombre del programa, declaración de
constantes simbólicas y definición de
variables.
Cuerpo del programa: instrucciones a ejecutar.

9 / 26
Palabras Reservadas

programa <nombre del programa>

constantes

variables

inicio programa
fin programa

leer <expresión>

escribir <expresión>

10 / 26
Ejemplo de Pseudocódigo
programa preparar taza de té
constantes
tetera, taza de té
variables
bolsa de té
inicio programa
Tomar la tetera
Llenarla de agua
Encender el fuego
Poner la tetera en el fuego
Esperar a que hierva el agua
Tomar la bolsa de té
Introducirla en la tetera
Esperar a que esté hecho el té
Echar el té en la taza
fin programa
11 / 26
Identificadores

Nombres dados a las constantes simbólicas, variables,


funciones y otros objetos manipulados por el programa.

Características:
I Debe resultar significativo.

I No puede coincidir con ninguna palabra reservada.

I Comenzará siempre por un carácter alfabético.

I Generalmente solo se permite el uso de caracteres


alfanuméricos y el símbolo _.

12 / 26
El Operador Asignación

<nombre_de_variable> ← <expresión>

Se utiliza para dar valor a una variable.

Cualquier valor previo que tuviera se pierde.

La variable puede intervenir en la expresión que le da valor.

13 / 26
Tipos de Variables

Contador: en determinados puntos del flujo del programa


su valor se actualiza por una cantidad fija.
Acumulador: en determinados puntos del flujo del programa
su valor se actualiza para reflejar el estado actual
de una serie de operaciones parciales.
Interruptor: toma valores lógicos para reflejar el estado actual
de una determinada propiedad.

14 / 26
Programas Propios

Un programa propio cumple las siguientes características:


I Tiene un solo punto de entrada y un solo punto de salida.

I Toda acción del algoritmo es accesible.

I No tiene lazos ni bucles infinitos.

Teorema (Böhm y Jacopini)


Un programa propio puede ser escrito utilizando únicamente
tres tipos de estructuras: secuencial, selectiva y repetitiva.

15 / 26
Estructura Secuencial
Una acción se ejecuta detrás de otra.
El flujo del programa coincide con el orden en el que se sitúan
las instrucciones.

16 / 26
Estructura Secuencial
Una acción se ejecuta detrás de otra.
El flujo del programa coincide con el orden en el que se sitúan
las instrucciones.

Diagrama de flujo Pseudocódigo

..
acción 1 .
acción 1
acción 2 acción 2
acción 3
..
acción 3 .

16 / 26
Estructura Condicional Simple
Se evalúa una condición.
Si la condición se cumple se ejecutan determinadas acciones.
Si la condición no se cumple, no se ejecutan esas acciones.

17 / 26
Estructura Condicional Simple
Se evalúa una condición.
Si la condición se cumple se ejecutan determinadas acciones.
Si la condición no se cumple, no se ejecutan esas acciones.

Diagrama de flujo Pseudocódigo

..
No .
condición si <condición> entonces
Sí <consecuencias>
fin si
consecuencias ..
.

17 / 26
Estructura Condicional Doble
Se evalúa una condición.
Si la condición se cumple se ejecuta una serie de acciones.
Si la condición no se cumple, se ejecuta otra serie de acciones.

18 / 26
Estructura Condicional Doble
Se evalúa una condición.
Si la condición se cumple se ejecuta una serie de acciones.
Si la condición no se cumple, se ejecuta otra serie de acciones.

Diagrama de flujo Pseudocódigo


..
.
condición si <condición> entonces
Sí No <consecuencias>
si no entonces
consecuencias alternativas <alternativas>
fin si
..
.

18 / 26
Estructura Condicional Múltiple
Se evalúan en orden una serie de condiciones.
Se ejecuta la serie de acciones asociada a la primera condición
que se cumpla. Si ninguna de las condiciones se cumple, se
ejecuta una serie de acciones alternativas.

19 / 26
Estructura Condicional Múltiple
Se evalúan en orden una serie de condiciones.
Se ejecuta la serie de acciones asociada a la primera condición
que se cumpla. Si ninguna de las condiciones se cumple, se
ejecuta una serie de acciones alternativas.

Diagrama de flujo Pseudocódigo

..
Sí .
condición1 consecuencias1
si <condición1> entonces
No <consecuencias1>
..
.
si no si <condiciónN> entonces
Sí <consecuenciasN>
condiciónN consecuenciasN si no entonces
<alternativas>
No
fin si
alternativas ..
.

19 / 26
Estructura Repetitiva mientras
Las acciones del cuerpo del bucle se realizan mientras la
condición sea verdadera.
Se pregunta por la condición al principio. Se deduce entonces
que el cuerpo del bucle puede no ejecutarse.

20 / 26
Estructura Repetitiva mientras
Las acciones del cuerpo del bucle se realizan mientras la
condición sea verdadera.
Se pregunta por la condición al principio. Se deduce entonces
que el cuerpo del bucle puede no ejecutarse.

Diagrama de flujo Pseudocódigo

No ..
condición .
mientras <condición> hacer

<acciones>
acciones fin mientras
..
.

20 / 26
Estructura Repetitiva para
Número de iteraciones fijo
Las acciones del cuerpo del bucle se realizan un número de
veces especificado de antemano.
Diagrama de flujo Pseudocódigo

variable ← N1

No .
¿variable ≤ N2 ? ..
para variable desde N1 hasta N2 hacer
Sí <acciones>
acciones fin para
..
.
variable ← variable + 1

21 / 26
Estructuras para
Recorrido de una secuencia
Las acciones del cuerpo del bucle se realizan en orden para
cada uno de los elementos de la secuencia especificada.
Diagrama de flujo Pseudocódigo

índice ← 0

No ..
¿índice < longitud?
.
para variable en secuencia hacer

<acciones>
variable ← elto índice-ésimo fin para
índice ← índice + 1 ..
.
acciones

22 / 26
Interrupción de un Bucle
Diagrama de flujo Pseudocódigo

No
condición
..
.

mientras <condición> hacer
acciones1 <acciones1>
si ¿Interrumpir? entonces
interrumpir

¿Interrumpir? fin si
<acciones2>
No fin mientras
..
acciones2 .

23 / 26
Continuación de un Bucle
Diagrama de flujo Pseudocódigo

No
condición
..
.

mientras <condición> hacer
acciones1 <acciones1>
si ¿Continuar? entonces
continuar

¿Continuar? fin si
<acciones2>
No fin mientras
..
acciones2 .

24 / 26
Ejemplo de Algoritmo en Pseudocódigo I
Problema: calcular y mostrar la suma de los diez primeros
números entre 1 y 1000 que sean divisibles por uno dado.

1: programa suma_divisibles
2: variables
3: natural : divisor, suma, contador, número
4: inicio programa
5: divisor ← leer ‘Introduce el divisor: ’
6: suma ← 0
7: contador ← 0
8: para número desde 1 hasta 1000 hacer
9: si divisor divide a número entonces
10: suma ← suma + número
11: contador ← contador + 1
12: fin si
25 / 26
Ejemplo de Algoritmo en Pseudocódigo II

13: si contador = 10 entonces


14: interrumpir
15: fin si
16: fin para
17: escribir ‘La suma es’, suma
18: fin programa

26 / 26

Você também pode gostar