You are on page 1of 40

Algorítmica

Notas tomadas del libro: “Fundamentos de


Informática y Programación Científica.
Resolución en C y Matlab”

Autores: Jesús M. Zamarreño y colaboradores


Algoritmo
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
programación.
Algoritmo
Finito significa que debe tener un número finito de pasos
por lo que debe estar limitado tanto por el tiempo de
realización como por el número 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 realización de cada


paso

Independiente …debe ser de propósito general


Elementos de un Algoritmo
Un algoritmo consta de datos y de sentencias

Se almacenan
Datos Variables y constantes

Son involucrados

En expresiones

Las sentencias describen las acciones algorítmicas


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,


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 declaración 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
CONSTANTES: PI = 3.1416, G=9.8

Un valor constante o constante literal es un valor de


cualquier tipo que se utiliza como tal
5.38 , 4, “sí”
Variables, constantes y
expresiones

Expresión: combinación de variables, constantes,


valores constantes, operadores y funciones que al
evaluarla en el orden correcto tiene un valor concreto
2*PI*r  Dato numérico

Las expresiones más representativas son las


numéricas y las lógicas
Expresiones
Las expresiones numéricas tienen como resultado datos
numéricos
Orden de precedencia de operadores aritméticos:
1. Potenciación: ^
2. Signo: +,-
3. Producto/División: *,/
4. Suma/Resta: +, -
5. Cociente/Resto de división entre enteros: DIV, MOD

Las operaciones entre paréntesis se evalúan primero


A igualdad de precedencia: de izquierda a derecha

Ejemplos
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: <, >, =, <=, >=, <>
Orden de precedencia de operadores relacionales y lógicos:
1. NOT
2. <, >, <=, >=
3. =, <>
4. AND
5. OR
Ejemplos
Sentencias
Describen lo que debe hacer el algoritmo. Existen tres tipos
de sentencias: de asignación, de entrada/salida y de
control del flujo del algoritmo

Sentencia de asignación: 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


detrás de otra

Selectivas (bifurcaciones): en función de una expresión


(lógica), se opta entre varias alternativas de ejecución

Repetitivas (cíclicas, bucles o lazos): Se utilizan para


realizar varias veces el mismo conjunto de operaciones
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

Existen datos elementales y estructurados


Tipos de Datos
Tipos de Datos
Entero: Representan números positivos o negativos sin
decimales, en el rango [-2n-1, 2n-1-1]

Real: Almacenan un valor de la forma N=M*BE

Carácter: Representan elementos individuales de un


conjunto finito de caracteres.

Lógico o booleano: Sólo 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

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

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 con sus tipos
INICIO
sentencias
FIN
Representación de algoritmos
Palabras o símbolos claves que se utilizan dentro del
cuerpo del algoritmo

Operador asignación:

Variable Expresión

Deben ser del


Una variable,
Identificador mismo tipo
constante,
declarado
constante literal o
anteriormente
fórmula a evaluar.
Representación 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 triángulo


Representación de algoritmos
Estructuras de control selectivas

Permite codificar alternativas dobles o múltiples, usando


dos tipos de sentencias
SI condición
sentencia 1
….
En el caso doble: SI NO
sentencia 2
….
FIN_SI

Ejemplo: Dados dos números enteros imprime el mayor de los dos


Representación de 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 algoritmos
Estructuras de control repetitiva

bucle PARA
PARA i=0 HASTA i=9 CON INCREMENTO 1

Entrar en Salida
el bucle del bucle
Sentencias Sentencias Sentencias
del bucle del bucle del bucle

i=0 i=1 i=9


Representación de algoritmos
bucle PARA
En pseudocódigo sería:

PARA contador = vi HASTA vf CON INCREMENTO n


Bloque de sentencias
FIN_PARA

Ejemplo: Realizar el algoritmo para escribir los números pares menores o


iguales que 50
Representación de algoritmos
Estructuras de control repetitiva

bucle MIENTRAS

Entrar en
el bucle ¿se cumple la SI
condición?

NO Sentencias
del bucle

Salir del
bucle
Representación de algoritmos
bucle MIENTRAS

En pseudocódigo sería:

MIENTRAS condición HACER


Bloque de sentencias
FIN_MIENTRAS
Representación de algoritmos
Estructuras de control repetitiva

bucle REPETIR
Entrada
al bucle

Sentencias
del bucle

NO
Salir del
SI
¿se cumple la bucle
condición?
Representación de algoritmos
bucle REPETIR

En pseudocódigo sería:

REPETIR
Bloque de sentencias
HASTA_QUE condición

Ejemplo: Realizar el algoritmo para escribir los números pares menores o


iguales que 50
Organigramas o diagramas de
flujo

INICIO a b Leer b

FIN

Escribir a
Diagramas de flujo
Estructura MIENTRAS
Estructura SELECTIVA

NO
CONDICION
NO SI
CONDICION

SI
Sentencias
bucle
HASTA
Diagramas de flujo PARA
ENTRADA ENTRADA

SENTENCIAS PARA i=vi HASTA vf


BUCLE CON INCREMENTO n

SENTENCIAS
CONDICION SI
NO BUCLE

SALIDA SALIDA
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 Suabalgoritmo 3
parámetros
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

Los subalgoritmos se clasifican en funciones y procedimientos

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
SUBALGORITMOS
¿Para qué se utilizan los procedimientos?

Si se desea que un subalgoritmo devuelva más de un


valor se utilizan los procedimientos

¿Cómo se utiliza un procedimiento?

Se invoca por su nombre y el algoritmo le envía una lista


de parámetros actuales (que deben ser los de entrada y
salida)
RECURSIVIDAD
Es una técnica de programación, donde la función se llama así
misma.

Reglas para diseñar algoritmos recursivos

1. Deben existir reglas lógicas en función de los argumentos


de entrada, de manera que la función les devuelva un valor
sin tener que llamarse así misma (solución trivial)
2. Cuando los argumentos de entrada no cumplan las reglas
lógicas, se llamará recursivamente a la función (solución
no trivial)
3. Asegurarse que el valor que se devuelve es la solución
correcta del algoritmo (método de inducción)
RESOLUCION DE PROBLEMAS

METODOLOGÍA DE RESOLUCIÓN

1. Planteamiento del problema


2. Diseño del algoritmo (utilizando algoritmo conceptual)
3. Probar con ejemplos sencillos
SUMATORIOS Y MEDIAS
ARITMÉTICAS

Se utiliza una variable de tipo contador y una variable


de tipo acumulador

En la variable contador se anota el número de datos


usados y en el acumulador la suma.
Ejemplo
Dado un conjunto de partículas, de las que son conocidas
sus posiciones y sus masas, se pide calcular la posición
del centro de masa de las partículas.

k k k

x m i i ym i i z m i i
xcm  i 1
k
ycm  i 1
k
Z cm  i 1
k

m
i 1
i m
i 1
i m
i 1
i

m i
m i 1
valor medio de la masa del sistema
k
de

You might also like