You are on page 1of 40

Algortmica

Notas tomadas del libro: Fundamentos de


Informtica y Programacin Cientfica.
Resolucin en C y Matlab

Autores: Jess M. Zamarreo y colaboradores
Algoritmo
En matemticas, ciencias de la computacin y disciplinas
relacionadas, un algoritmo (del griego y latn, dixit
algorithmus y este a su vez del matemtico persa Al-
Juarismi) es un conjunto preescrito de instrucciones o
reglas bien definidas, ordenadas y finitas que permite
realizar una actividad mediante pasos sucesivos que no
generen dudas a quien deba realizar dicha actividad.

Dados un estado inicial y una entrada, siguiendo los pasos
sucesivos se llega a un estado final y se obtiene una
solucin. Los algoritmos son el objeto de estudio de la
algoritmia.


Algoritmo
En la vida cotidiana, se emplean algoritmos
frecuentemente para resolver problemas. Algunos
ejemplos son los manuales de usuario, que muestran
algoritmos para usar un aparato, o las instrucciones que
recibe un trabajador por parte de su patrn. Algunos
ejemplos en matemtica son el algoritmo de la divisin
para calcular el cociente de dos nmeros, el algoritmo de
Euclides para obtener el mximo comn divisor de dos
enteros positivos, o el mtodo de Gauss para resolver un
sistema lineal de ecuaciones.

Wikipedia, Algoritmo, <http://es.wikipedia.org/wiki/Algoritmo>, [28/01/2013]
Algoritmo
RAE: algoritmo
Conjunto ordenado y finito de operaciones que permite
hallar la solucin de un problema.

Algoritmo es una secuencia finita de operaciones que
resuelve un problema en un tiempo finito
Sus principales atributos son que debe ser: finito,
definido, preciso e independiente del lenguaje de
programacin.
Algoritmo
Finito significa que debe tener un nmero finito de pasos
por lo que debe estar limitado tanto por el tiempo de
realizacin como por el nmero de pasos que realiza
Definido implica que para los mismos datos de entrada se
obtienen los mismos de salida
Preciso debe indicarse el orden de realizacin de cada
paso
Independiente debe ser de propsito general
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 algortmicas
que pueden ser ejecutadas, en general realizan
clculos, entradas/salidas y control de flujo del
algoritmo
Variables, constantes y
expresiones
Variable: elemento del algoritmo que posee un valor, es
conocido por un nombre o identificador y pertenece a
un tipo de dato definido al inicio del algoritmo
Debe ser declarada antes de usarse !!!!!!!!
En un algoritmo la declaracin consta de una sentencia
que especifica: el tipo de dato, su nombre y un valor
inicial en algunas ocasiones
VARIABLES: a, b=3, c, d : enteros
n, longitud : reales
Variables, constantes y
expresiones
Constante: elemento del algoritmo similar a una
variable, pero cuyo valor no cambia a lo largo del
algoritmo
Las constantes deben ser inicializadas de acuerdo con
el tipo de dato al que pertenecen
Un valor constante o constante literal es un valor de
cualquier tipo que se utiliza como tal
CONSTANTES: PI = 3.1416, G=9.8
5.38 , 4, s
Variables, constantes y
expresiones
Expresin: combinacin de variables, constantes,
valores constantes, operadores y funciones que al
evaluarla en el orden correcto tiene un valor concreto
Las expresiones ms representativas son las
numricas y las lgicas
2*PI*r Dato numrico
Expresiones
Las expresiones numricas tienen como resultado datos
numricos
Orden de precedencia de operadores aritmticos:
1. Potenciacin: ^
2. Signo: +,-
3. Producto/Divisin: *,/
4. Suma/Resta: +, -
5. Cociente/Resto de divisin entre enteros: DIV, MOD
Las operaciones entre parntesis se evalan primero
A igualdad de precedencia: de izquierda a derecha
Ejemplos
Expresiones
Las expresiones lgicas son las que ofrecen como
resultado despus de su operacin un valor lgico
Los operadores lgicos que involucran son: AND,
OR,NOT y los relacionales: <, >, =, <=, >=, <>
Ejemplos
Orden de precedencia de operadores relacionales y lgicos:
1. NOT
2. <, >, <=, >=
3. =, <>
4. AND
5. OR
Sentencias
Describen lo que debe hacer el algoritmo. Existen tres tipos
de sentencias: de asignacin, de entrada/salida y de
control del flujo del algoritmo
Sentencia de asignacin: almacena un valor en una variable
o constante.Se muestra con el signo
Sentencia de entrada/salida:
Lectura o entrada, permite introducir datos desde disp. externos (teclado) o desde
ficheros
Salida o escritura, permite visualizar datos en disp. externos (pantalla, impresora) o
almacenarlos en ficheros
Sentencias
Sentencias de control del flujo del algoritmo:
Secuenciales: todas las instrucciones se ejecutan una
detrs de otra
Selectivas (bifurcaciones): en funcin de una expresin
(lgica), se opta entre varias alternativas de ejecucin
Repetitivas (cclicas, bucles o lazos): Se utilizan para
realizar varias veces el mismo conjunto de operaciones
Tipos de Datos
Dato es una informacin 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 direccin de memoria
Existen datos elementales y estructurados
Tipos de Datos
Tipos de Datos
Entero: Representan nmeros positivos o negativos sin
decimales, en el rango [-2
n-1
, 2
n-1
-1]
Real: Almacenan un valor de la forma N=M*B
E

Carcter: Representan elementos individuales de un
conjunto finito de caracteres.
Lgico o booleano: Slo 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, carcter 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 direccin en memoria
de otro dato
Datos estructurados
Una estructura es esttica cuando el tamao en memoria
ocupado se define antes de la ejecucin del programa y no
puede modificarse durante la ejecucin
Una estructura dinmica es aquella en la que no se define
a priori su tamao en memoria
Un conjunto homogneo 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 homognea, esttica y
ordenada, formada por una cantidad fija de datos de un
mismo tipo, cada uno tiene asociado uno o ms ndices que
determinan la posicin del dato en el array
Cadenas de caracteres est formada por una secuencia
de caracteres en un orden determinado, por lo tanto es una
estructura homognea, esttica y de acceso por posicin
Datos estructurados
Registros formada por varios elementos o campos que se
refieren a una misma entidad, es heterognea, esttica y de
acceso por nombre.
Lista es una estructura de datos homognea, dinmica 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 homognea y dinmica
que ordena los elementos que la integran en forma de
rbol, usando nodos y subrboles
Representacin de algoritmos
Pseudocdigo
ALGORITMO nombre del algoritmo
ENTRADA descripcin de los datos de entrada al algoritmo
SALIDA descripcin de los datos de salida del algoritmo
VARIABLES lista de variables con sus tipos
INICIO
sentencias
FIN
Representacin de algoritmos
Palabras o smbolos claves que se utilizan dentro del
cuerpo del algoritmo
Operador asignacin:
Variable Expresin
Identificador
declarado
anteriormente
Una variable,
constante,
constante literal o
frmula a evaluar.
Deben ser del
mismo tipo
Representacin de algoritmos
Operaciones entrada/salida
Entrada: Leer lista de variables separadas por comas
Salida: Escribir lista de variables o expresiones
separadas por comas.
Estructuras de control secuencial
Consta de un conjunto de sentencias ordenadas
Ejemplo: Calcula la superficie de un tringulo
Representacin de algoritmos
Estructuras de control selectivas
Permite codificar alternativas dobles o mltiples, usando
dos tipos de sentencias
En el caso doble:
SI condicin
sentencia 1
.
SI NO
sentencia 2
.
FIN_SI
Ejemplo: Dados dos nmeros enteros imprime el mayor de los dos
Representacin de algoritmos
Otra forma de estructura de control selectiva
EN CASO DE QUE expresin VALGA
Valor 1: bloque sentencias 1
Valor 2: bloque sentencias 2
Valor 3: bloque sentencias 3

[EN OTRO CASO bloque sentencia x]
FIN_CASO
Representacin de algoritmos
Estructuras de control repetitiva
bucle PARA
PARA i=0 HASTA i=9 CON INCREMENTO 1
Entrar en
el bucle
Sentencias
del bucle
i=9
Sentencias
del bucle
i=1
Sentencias
del bucle
i=0
Salida
del bucle
Representacin de algoritmos
bucle PARA
En pseudocdigo sera:
PARA contador = vi HASTA vf CON INCREMENTO n
Bloque de sentencias
FIN_PARA
Ejemplo: Realizar el algoritmo para escribir los nmeros pares menores o iguales
que 50
Representacin de algoritmos
Estructuras de control repetitiva
bucle MIENTRAS
se cumple la
condicin?
Sentencias
del bucle
Entrar en
el bucle
Salir del
bucle
SI
NO
Representacin de algoritmos
bucle MIENTRAS
En pseudocdigo sera:
MIENTRAS condicin HACER
Bloque de sentencias
FIN_MIENTRAS
Representacin de algoritmos
Estructuras de control repetitiva
bucle REPETIR
Sentencias
del bucle
se cumple la
condicin?
Salir del
bucle
SI
NO
Entrada
al bucle
Representacin de algoritmos
bucle REPETIR
En pseudocdigo sera:
REPETIR
Bloque de sentencias
HASTA_QUE condicin
Ejemplo: Realizar el algoritmo para escribir los nmeros pares menores o iguales
que 50
Organigramas o diagramas de
flujo
INICIO
FIN
a b
Leer b
Escribir a
Diagramas de flujo
CONDICION
SI
NO
Estructura SELECTIVA
CONDICION
NO
Sentencias
bucle
SI
Estructura MIENTRAS
Diagramas de flujo
CONDICION
SI
SENTENCIAS
BUCLE
ENTRADA
NO
SALIDA
PARA i=vi HASTA vf
CON INCREMENTO n
SENTENCIAS
BUCLE
SALIDA
ENTRADA
HASTA PARA
SUBALGORITMOS
Un subalgoritmo es una parte de un algoritmo. Se utiliza
para descomponer en varias partes un algoritmo que resuelve
un problema complejo
Esta caracterstica permite que los algoritmos sean simples,
modulares y reutilizables
Subalgoritmo 1
Subalgoritmo 2
Subalgoritmo 3
Paso de
parmetros
SUBALGORITMOS
Parmetros formales son las variables que utiliza el algoritmo
llamado para emitir o recibir datos a o desde el algoritmo
llamante
Parmetros actuales son las variables, constantes o
expresiones utilizadas por el algoritmo llamante
El paso de parmetros se puede realizar por valor o por
referencia
Existen datos globales y datos locales
SUBALGORITMOS
Los subalgoritmos se clasifican en funciones y procedimientos
Las funciones reciben valores de entrada y devuelven un
valor que es el resultado de la funcin
Cmo se utiliza una funcin?
El algoritmo invoca a la funcin con un nombre y una lista
de parmetros actuales
SUBALGORITMOS
Para qu se utilizan los procedimientos?
Si se desea que un subalgoritmo devuelva ms de un
valor se utilizan los procedimientos
Cmo se utiliza un procedimiento?
Se invoca por su nombre y el algoritmo le enva una lista
de parmetros actuales (que deben ser los de entrada y
salida)
RECURSIVIDAD
Es una tcnica de programacin, donde la funcin se llama as
misma.
Reglas para disear algoritmos recursivos
1. Deben existir reglas lgicas en funcin de los argumentos
de entrada, de manera que la funcin les devuelva un valor
sin tener que llamarse as misma (solucin trivial)
2. Cuando los argumentos de entrada no cumplan las reglas
lgicas, se llamar recursivamente a la funcin (solucin
no trivial)
3. Asegurarse que el valor que se devuelve es la solucin
correcta del algoritmo (mtodo de induccin)
RESOLUCION DE PROBLEMAS
METODOLOGA DE RESOLUCIN
1. Planteamiento del problema
2. Diseo del algoritmo (utilizando algoritmo conceptual)
3. Probar con ejemplos sencillos

You might also like