algorítmica - Departamento de Ingeniería de Sistemas y Automática

Anuncio
ALGORÍTMICA
Dpto. Ingeniería de Sistemas y Automática
Facultad de Ciencias
Universidad de Valladolid.
Indíce
„
„
Algoritmo
Elementos de un algoritmo:
‹
„
Datos:
‹
„
Definición y Tipos de datos
Representación de algoritmos:
‹
‹
„
Variables, Constantes, Expresiones
Pseudocódigo
Diagramas de flujo
Sentencias:
‹
‹
‹
Asignación
Entrada/salida
Estructuras de control: condicional, bucles, funciones.
Algoritmos
„
Algoritmo: es una secuencia finita de operaciones
que resuelve un problema en un tiempo finito.
„
Sus características son:
‹
‹
‹
‹
Finito: debe tener un número finito de pasos, por
lo que debe estar limitado tanto en tiempo de
realización como por el número de pasos que
realiza
Definido: para los mismos datos de entrada
obtienen los mismos de salida
Preciso: debe indicarse el orden de realización de
cada paso
Independiente del lenguaje de programación
Elementos de un algoritmo
„
Un algoritmo consta de datos y de sentencias
Datos
Se almacenan
Variables y constantes
Son involucrados
En expresiones
Las sentencias describen las acciones que pueden ser
ejecutadas, en general realizan cálculos,
entradas/salidas y control de flujo del algoritmo
Variables, constantes y expresiones
„
Variable: elemento del algoritmo que posee un valor,
conocido por un nombre o identificador y que
pertenece a un tipo de dato definido al inicio del
algoritmo
„
Debe ser declarada antes de usarse !!!!!!!!
„
En un algoritmo la declaración consta de una
sentencia que especifica: el tipo de dato, su nombre
y un valor inicial en algunas ocasiones
Variables, constantes y expresiones
„
„
„
„
Constante: los elementos del algoritmo que no
cambian de valor a lo largo del algoritmo
Las constantes deben ser inicializadas de acuerdo
con el tipo de dato al que pertenecen
Expresión: es una combinación de variables,
constantes, valores constantes, operadores y
funciones especiales que, en cada momento, al
evaluarla tiene un valor concreto
Las expresiones más representativas son las
numéricas y las lógicas
Expresiones
„
Las expresiones numéricas tienen como resultado
datos numéricos
Los operadores: ^, Signo: (+,-), *,/, +, Orden de precedencia de
mayor a menor
„
„
Las operaciones entre paréntesis se evalúan primero
Las operaciones aritméticas se evalúan según el
orden de prioridad
Expresiones
„
Las expresiones lógicas son las que ofrecen como
resultado después de su operación un valor lógico.
„
Los operadores lógicos que involucran son: AND,
OR,NOT y los relacionales: <, >, ==, <=, >=, ~=
NOT, AND, OR, operadores relacionales
Orden de
precedencia
Tipos de datos
„
Dato es una información relativa a un objeto que es
manipulable por el ordenador, que posee un valor y
que es conocido en un programa o algoritmo por un
nombre o identificador del dato.
„
El identificador indica una dirección de memoria, y es
el nombre por el que se conoce a ese dato.
„
Existen datos elementales y estructurados
Tipos de datos
Simples
Tipos de Datos
Estructurados
Arrays, cadenas,
registros, listas, árboles
Entero
Real
Lógico
Carácter
Puntero
Enumerado
Subrango
Tipos de datos
„
Enteros: Representan números positivos o negativos
sin decimales, en el rango [-2n-1, 2n-1-1]
„
Reales: Almacenan un valor de la forma N=M*BE
„
Carácter: Representan elementos individuales de un
conjunto finito de caracteres.
„
Lógico o booleano: Solo pueden tener dos posibles
valores verdadero o falso
Tipos de datos
„
Enumerado: este tipo de dato requiere que el
programador defina el rango de valores que puede
tomar
„
Subrango: este tipo de dato se define a partir del tipo
de dato entero, carácter o enumerado, con solo decir
que el tipo de dato definido podrá tomar un conjunto
de valores limitado del original
„
Puntero: es aquel cuyo valor es la dirección en
memoria de otro dato
Datos estructurados
„
Una estructura es estática cuando el tamaño en
memoria ocupado se define antes de la ejecución del
programa y no puede modificarse durante la
ejecución.
„
Una estructura dinámica es aquella en la que no se
define a priori su tamaño en memoria
„
Un conjunto homogéneo es aquel que está formado
por datos del mismo tipo, y es ordenado si se puede
acceder a cada uno de sus elementos usando un
identificador
Datos estructurados
„
Array es una estructura de datos homogénea,
estática y ordenada, formada por una cantidad fija de
datos de un mismo tipo, cada uno tiene asociado uno
o más índices que determinan la posición del dato en
el array.
A(3)
A
1
„
2
3
4
Cadenas de caracteres está formada por una
secuencia de caracteres en un orden determinado,
por lo tanto es una estructura homogénea, estática y
de acceso por posición
Datos estructurados
„
Registros: formada por varios elementos o campos
que se refieren a una misma entidad, es
heterogénea, estática y de acceso por nombre
„
Lista: es una estructura de datos homogénea,
dinámica y de acceso por clave. Se constituye por
una cantidad no prefijada de registros, con al menos
dos campos, uno de los cuales sirve para localizar al
sgte. elemento de la lista
„
Árbol: es una estructura de datos homogénea y
dinámica que ordena los elementos que la integran
en forma de árbol, usando nodos y subárboles
Representación de algoritmos
„
„
Pseudocódigo.
Diagramas de flujo.
ALGORITMO nombre del algoritmo
ENTRADA descripción de los datos de entrada al algoritmo
SALIDA descripción de los datos de salida del algoritmo
VARIABLES lista de variables usadas separadas por comas
INICIO
cuerpo del algoritmo
FIN
Representación de los algoritmos
„
Sentencias: Describen lo que debe hacer el
algoritmo. Varios tipos:
‹
Asignación: almacena un valor en una variable o
constante. Se representa con el operador :
Variable
Identificador
declarado
anteriormente
Expresión
Deben ser del
mismo tipo
Una variable,
constante,
constante literal o
fórmula a evaluar.
a
b
Representación de los algoritmos
‹
Entrada/salida: Pueden almacenarse de tres
formas: asociados con constantes, asignados a
una variable o una sentencia de lectura.
 Entrada: Leer lista de variables separadas por
comas

Salida: Escribir lista de variables o expresiones
separadas por comas
Leer b
Escribir a
Representación de los algoritmos
„
En Matlab:
‹
‹
Sentencias de asignación:
 A=23
 b = 48*A+b
 .......
Sentencias de entada /salida:
 Entrada: n=input(‘dame el valor n’);
 Salida: nombre de la variable sin ; :
•
•
•
N
A
.....
Representación de los algoritmos
‹
Sentencias de control de flujo del algoritmo:
 Secuenciales: todas las instrucciones se
ejecutan una detrás de otra:
 Ejemplo: calcular el área de un triangulo


Selectivas (bifurcaciones): se evalúa una
expresión lógica o relacional, y en función de
su resultado se selecciona cual de las posibles
opciones se toma
Ejemplo: dados dos números imprime el mayor
de ellos
Representación de los algoritmos
„
Speudocódigo
SI condición
ENTONCES
sentencia 1
….
SI NO
sentencia 2
….
FIN_SI
Diagrama de flujo
NO
CONDICION
SI
Representación de los algoritmos
„
En Matlab:
If condición
sentencia 1
if condición
sentencia 1
….
else
sentencia 2
….
end
..........
elseif condicion
sentencia 2
......
else
sentencia 3
.......
end
Representación de los algoritmos
„
Otra forma de estructura de control selectiva
EN CASO DE QUE expresión VALGA
Valor 1: bloque sentencias 1
Valor 2: bloque sentencias 2
Valor 3: bloque sentencias 3
…
[EN OTRO CASO bloque sentencia x]
FIN_CASO
Representación de los algoritmos

Repetitivas: (cíclicas, bucles o lazos): Se utilizan
para realizar varias veces el mismo conjunto de
operaciones.
• Ciclo determinista: bucle PARA
PARA i=0 HASTA i=9 CON INCREMENTO 1
Entrar en
el bucle
Salida
del bucle
Sentencias
del bucle
Sentencias
del bucle
Sentencias
del bucle
i=0
i=1
i=9
Representación de los algoritmos
„
En pseudocódigo:
PARA contador = vi HASTA vf CON INCREMENTO n
HACER
Bloque de sentencias
FIN_PARA
„
Ejemplo: escribir los números pares del 2 al 50
Representación de los algoritmos
„
„
En diagrama de flujo
En Matlab:
ENTRADA
PARA i=vi HASTA vf
CON INCREMENTO n
for i=vi:incremento:vf
Bloque de sentencias
end
SENTENCIAS
BUCLES
SALIDA
Representación de los algoritmos
‹
Ciclo condicional: se repiten las sentencias mientras se
cumple una condición. Bucle MIENTRAS
Entrar en
el bucle
¿se cumple la
condición?
NO
SI
Sentencias
del bucle
Salir del
bucle
Representación de los algoritmos
En pseudocódigo
En diagrama de flujo
MIENTRAS condición
HACER
Bloque de sentencias
FIN_MIENTRAS
En Matlab:
While condición
Bloque de sentencias
end
CONDICION
SI
Sentencias
bucle
NO
Subalgoritmos
„
„
Un subalgoritmo es una parte de un algoritmo. Se
utiliza para descomponer en varias partes un
algoritmo que resuelve un problema complejo.
Esta característica permite que los algoritmos sean
simples, modulares y reutilizables
Suabalgoritmo 2
Suabalgoritmo 1
Paso de
parámetros
Suabalgoritmo 3
Subalgoritmos
„
Parámetros formales son las variables que utiliza el
algoritmo llamado para emitir o recibir datos a o
desde el algoritmo llamante
„
Parámetros actuales son las variables, constantes o
expresiones utilizadas por el algoritmo llamante.
„
El paso de parámetros se puede realizar por valor o
por referencia
„
Existen datos globales y datos locales
Subalgoritmos
„
Las funciones reciben valores de entrada y
devuelven un valor que es el resultado de la función
¿Cómo se utiliza una función?
„
El algoritmo invoca a la función con un nombre y una
lista de parámetros actuales
Descargar