You are on page 1of 7

Resolución de un Problema

Complementos de Informática
Tema 1: Algoritmos y Programas Pasos a seguir:
1. Análisis del problema.
2. Diseño del algoritmo para resolverlo.
Álvaro Romero Jiménez
3. Verificación del algoritmo.
Departamento de Ciencias de la Computación e Inteligencia Artificial
Universidad de Sevilla
4. Implementación del algoritmo.

2 / 26

Algoritmo Ejemplo de Algoritmo


Problema: preparar una taza de té.
Características que debe cumplir: Entrada: tetera, taza, bolsa de té.
Preciso: no contiene ambigüedades. Salida: taza de té.
Definido: siempre se obtiene el mismo resultado a partir de los
Inicio
mismos datos. Tomar la tetera
Finito: siempre termina. Llenarla de agua
Encender el fuego
Poner la tetera en el fuego
Partes en las que se estructura: Esperar a que hierva el agua
Entrada: información de partida. Tomar la bolsa de té
Introducirla en la tetera
Procesos: operaciones y cálculos a realizar.
Esperar a que esté hecho el té
Salida: resultados obtenidos. Echar el té en la taza
Fin

3 / 26 4 / 26
Representación de Algoritmos Ejemplo de Diagrama de Flujo
Diagrama de Flujo
Características: Algoritmo: preparar taza de té
I Representación gráfica de la secuencia de pasos a realizar.
Entrada: tetera, taza, bolsa de té.
I Las operaciones se escriben en símbolos normalizados.
Salida: taza de té.
I Las líneas de flujo indican el orden de ejecución.

Poner la
Símbolos principales: Inicio
Tomar la Llenarla de Encender el
tetera en el
tetera agua fuego
fuego

Inicio y fin del algoritmo


Esperar a
que hierva
Proceso el agua

Entrada y salida de datos Esperar a


Echar el té Introducirla Tomar la
Fin que esté
en la taza en la tetera bolsa de té
hecho el té
Decisión

5 / 26 6 / 26

Estructuras de Datos Programas


Programa = Algoritmo + Estructuras de datos.
Datos: objetos con los cuales opera un algoritmo.
Elementos de un programa:
Tipo de un dato: determina qué operaciones se pueden
efectuar con ese dato. Constantes: datos cuyo valor no cambia durante la ejecución
del programa.
Tipos de datos básicos: Variables: datos cuyo valor puede cambiar durante la
ejecución del programa.
Entero: preciso y limitado en tamaño.
Expresiones: Combinación de operadores y operandos.
Real: impreciso y limitado en tamaño.
Operandos: constantes, variables u otras
Lógico: valor de verdad.
expresiones.
Cadena: secuencia finita de caracteres. Operadores: aritméticos, relacionales, lógicos y
Lista: secuencia finita de datos enumerados. de tipo de dato.
Diccionario: secuencia finita de datos indexados. Funciones: aceptan unos argumentos y producen un
resultado.
7 / 26 8 / 26
Representación de Programas Palabras Reservadas
Pseudocódigo

Características: programa <nombre del programa>


I Lenguaje de especificación de programas.
constantes
I Utiliza palabras reservadas.

I Exige una correcta indentación. variables


I Se implementa con facilidad.
inicio programa
Estructura de un programa en pseudocódigo: fin programa
Cabecera: nombre del programa, declaración de leer <expresión>
constantes simbólicas y definición de
variables. escribir <expresión>
Cuerpo del programa: instrucciones a ejecutar.

9 / 26 10 / 26

Ejemplo de Pseudocódigo Identificadores


programa preparar taza de té
constantes
tetera, taza de té Nombres dados a las constantes simbólicas, variables,
variables funciones y otros objetos manipulados por el programa.
bolsa de té
inicio programa Características:
Tomar la tetera
I Debe resultar significativo.
Llenarla de agua
Encender el fuego I No puede coincidir con ninguna palabra reservada.

Poner la tetera en el fuego I Comenzará siempre por un carácter alfabético.


Esperar a que hierva el agua I Generalmente solo se permite el uso de caracteres
Tomar la bolsa de té
alfanuméricos y el símbolo _.
Introducirla en la tetera
Esperar a que esté hecho el té
Echar el té en la taza
fin programa
11 / 26 12 / 26
El Operador Asignación Tipos de Variables

<nombre_de_variable> ← <expresión> Contador: en determinados puntos del flujo del programa


su valor se actualiza por una cantidad fija.
Se utiliza para dar valor a una variable. Acumulador: en determinados puntos del flujo del programa
su valor se actualiza para reflejar el estado actual
Cualquier valor previo que tuviera se pierde. de una serie de operaciones parciales.
Interruptor: toma valores lógicos para reflejar el estado actual
La variable puede intervenir en la expresión que le da valor.
de una determinada propiedad.

13 / 26 14 / 26

Programas Propios 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
Un programa propio cumple las siguientes características:
las instrucciones.
I Tiene un solo punto de entrada.

I Tiene un número finito de puntos de salida.


Diagrama de flujo Pseudocódigo
I Toda acción del algoritmo es accesible.

I No tiene lazos ni bucles infinitos.


..
acción 1 .
Teorema (Böhm y Jacopini) acción 1
acción 2 acción 2
Un programa propio puede ser escrito utilizando únicamente acción 3
tres tipos de estructuras: secuencial, selectiva y repetitiva. ..
acción 3 .

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

Diagrama de flujo Pseudocódigo Diagrama de flujo Pseudocódigo


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

17 / 26 18 / 26

Estructura Condicional Múltiple Estructura Repetitiva mientras


Se evalúan en orden una serie de condiciones. Las acciones del cuerpo del bucle se realizan mientras la
Se ejecuta la serie de acciones asociada a la primera condición condición sea verdadera.
que se cumpla. Si ninguna de las condiciones se cumple, se Se pregunta por la condición al principio. Se deduce entonces
ejecuta una serie de acciones alternativas. que el cuerpo del bucle puede no ejecutarse.

Diagrama de flujo Pseudocódigo


Diagrama de flujo Pseudocódigo
..
Sí .
condición1 consecuencias1
si <condición1> entonces ..
No
No <consecuencias1>
.
condición .
.
. mientras <condición> hacer
si no si <condiciónN> entonces Sí
Sí <consecuenciasN> <acciones>
condiciónN consecuenciasN si no entonces acciones fin mientras
<alternativas> ..
No
fin si .
alternativas .
..

19 / 26 20 / 26
Estructura Repetitiva para Estructuras para
Número de iteraciones fijo Recorrido de una secuencia
Las acciones del cuerpo del bucle se realizan un número de Las acciones del cuerpo del bucle se realizan en orden para
veces especificado de antemano. cada uno de los elementos de la secuencia especificada.
Diagrama de flujo Pseudocódigo Diagrama de flujo Pseudocódigo

variable ← N1 índice ← 0

No .. No .
¿variable ≤ N2 ? ¿índice < longitud? ..
.
para variable desde N1 hasta N2 hacer para variable en secuencia hacer

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

variable ← variable + 1 acciones

21 / 26 22 / 26

Interrupción de un Bucle Continuación de un Bucle


Diagrama de flujo Pseudocódigo Diagrama de flujo Pseudocódigo

No No
condición condición
.. ..
. .
Sí Sí
mientras <condición> hacer mientras <condición> hacer
acciones1 <acciones1> acciones1 <acciones1>
si ¿Interrumpir? entonces si ¿Continuar? entonces
interrumpir continuar
Sí Sí
¿Interrumpir? fin si ¿Continuar? fin si
<acciones2> <acciones2>
No fin mientras No fin mientras
.. ..
acciones2 . acciones2 .

23 / 26 24 / 26
Ejemplo de Algoritmo en Pseudocódigo I Ejemplo de Algoritmo en Pseudocódigo II
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 13: si contador = 10 entonces


2: variables 14: interrumpir
3: natural : divisor, suma, contador, número 15: fin si
4: inicio programa 16: fin para
5: divisor ← leer ‘Introduce el divisor: ’ 17: escribir ‘La suma es’, suma
6: suma ← 0 18: fin programa
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 26 / 26

You might also like