Vous êtes sur la page 1sur 40

ALGORITMOS

PARTE I

Para qu aprender un lenguaje de


Programacin?
El objetivo de aprender un lenguaje de
programacin, es poder utilizar la computadora
como una herramienta para resolver problemas,
de diversos tipos.
Para esto, de manera general y muy simple, la
resolucin de un problema se puede dividir en 3
etapas:
Anlisis del Problema.
Diseo de un algoritmo.
Elaboracin de un programa para computadora.

Anlisis del Problema

Exige la lectura previa del problema, las veces que sean


necesarias, a fin de tener una idea general de lo que se
solicita.
El problema debe ser definido y comprendido
claramente. Se debe definir cuales son las entradas
que se requieren y las salidas que se desean obtener.
Luego del anlisis se puede pasar a la siguiente etapa:
Diseo de un Algoritmo.

Diseo de un Algoritmo
Un algoritmo es un mtodo o conjunto de reglas (sin
ambigedades) que se aplican paso a paso en forma
ordenada para solucionar un problema.
Caractersticas de un Algoritmo:
Debe ser preciso: es decir debe indicar el orden exacto de
realizacin de cada etapa, evitando acciones innecesarias.
Debe estar definido: significa que si se ejecuta un algoritmo 2
o ms veces, con los mismos valores iniciales, se debe obtener
el mismo resultado todas las veces.
Debe ser finito: esto significa que si se sigue un algoritmo, se
debe terminar en algn momento, es decir, debe tener un
nmero finito de pasos.

De manera general, en un algoritmo se deben definir


claramente las siguientes partes:

Inicializacin de variables.
Entrada de datos.
Procesos a seguir.
Salida de resultados.

Otro aspecto a considerar es el mtodo elegido para


representar los algoritmos:

Diagramas de Flujo (convencional)


Pseudocdigo
Diagramas de Flujo Estructurado (NassiSchneiderman o NS).

El empleo de indentacin (justificacin o sangrado) en la


escritura de los algoritmos (Pseudocdigo) facilita su
lectura y comprensin.

INDENTACION

Inicio
Entero: b, h, a, p
Leer b, h
a=b*h
p = 2 (b + h)
Escribir "rea:", a
Escribir "permetro:", p

Fin

Elaboracin de un Programa para


Computadora:
Esta fase se denomina Programacin y consta de las siguientes
partes:
Codificacin: proceso de convertir un algoritmo a un
programa, escrito en un lenguaje de programacin.
Requiere el uso de un programa editor que permita crear
los programas a las que se denomina Programas Fuente.
Compilacin y Ejecucin: Ya escrito el programa fuente, se
debe traducir a lenguaje mquina, para obtener el
correspondiente programa objeto, que es el que ejecuta la
computadora. Si durante la traduccin se detectan errores
de sintaxis, el compilador informa al usuario cules son y
cual es su posible ubicacin.
Depuracin: Es el proceso de localizar y corregir errores.
Existen 3 posibles tipos de errores cuando se ejecuta un
programa:

Errores de Sintaxis, Errores de Ejecucin y Errores Lgicos:

Verificacin: Constatar si efectivamente hace lo que se


desea, y si no lo hace, entonces determinar las causas por
las que falta.
Optimizacin: Cuando se consigue hace funcionar
correctamente un programa, el paso siguiente es
perfeccionarlo para que funcione mejor. La optimizacin es
una etapa de refinamiento, que puede incluir: eliminar
instrucciones innecesarias, hacer mejores presentaciones
de reportes, etc.
Documentacin: para describir lo que hace un programa,
como fue construido, para qu sirven determinadas
variables o bloques de instrucciones y como tiene que ser
utilizado
Mantenimiento: Se denomina as al proceso de
actualizacin continua de un programa, con la realizacin
de cambios que sean considerados necesarios.

Ejemplos de algoritmos de la vida


diaria
Pueden ser: Que hago para tomar una taza
de T?, Qu debo hacer para ver una Pelcula
ABC? , tomar un jugo de naranja, tomar un
bao, ir a la universidad, tomar desayuno,
comprar un peridico, comprar una medicina
en la Farmacia, etc.

Problema 1: Tomar una taza de t


1. Inicio
2. Dirigirse a la cocina.
3. Coger la taza.
4. Echar en la taza un poco de agua hervida.
5. Escoger la infusin (TE) que se desea tomar
6. Introducir la infusin en la taza.
7. Agregar el azcar (la cantidad que se desee)
8. Beber el TE.
9. Fin

Problema 2: Cambiar la rueda pinchada de un


automvil teniendo una gata mecnica en buen estado,
una rueda de reemplazo y una llave inglesa
Los pasos del algoritmo son:
1. Inicio
2. Aflojar los tornillos de la rueda pinchada con la llave
inglesa.
3. Ubicar la gata mecnica en su sitio.
4. Levantar la gata hasta que la rueda pinchada pueda girar
libremente.
5. Quitar los tornillos y la rueda pinchada.
6. Poner rueda de repuesto y los tornillos.
7. Bajar la gata hasta que se pueda liberar.
8. Sacar la gata de su sitio.
9. Apretar los tornillos con la llave inglesa.
10. Fin.

Podramos modificar este algoritmo, bien sea


escribiendo ms lneas de detalle o uniendo
algunos pasos, y an as funcionara para resolver
nuestro problema. Esto quiere decir que
podemos tener algoritmos diferentes, con
diferente diseo, que resuelven el mismo
problema. Cul de ellos es ms eficiente,
hablando desde el punto de vista computacional?
Es un tema que trataremos mucho ms
adelante.por el momento nos debemos
concentrar en cual algoritmo es ms claro, cual es
ms fcil de entender.

Problema 3:
Un lector hace un pedido de un ejemplar del libro Programacin
en Java al bibliotecario. El bibliotecario examina en su banco de
datos si hay al menos un ejemplar del mismo,
si hay el ejemplar entonces el bibliotecario acepta el pedido y
entrega al lector el libro; en caso contrario rechaza el pedido.
Los pasos del algoritmo son:
1. Inicio.
2. Leer el pedido del ejemplar.
3. Examinar el pedido del ejemplar.
4. Si hay un ejemplar
entonces
Aceptar pedido,
Entrega ejemplar al lector.
en caso contrario (sino)
Rechazar pedido.
5. Fin.

Problema 4: Tomar una taza de t


1. Inicio
2. Dirigirse a la cocina.
3. Coger la taza.
4. Echar en la taza un poco de agua hervida.
5. Si es que no hay agua caliente
entonces
Hervir un poco
Servir en la taza el agua recin hervida
Ir a paso 6
sino
6. Escoger la infusin que se desea tomar.
7. Introducir la infusin en la taza.
8. Agregar el azcar (la cantidad que se desee) (supuesto: hay
azcar)
9. Beber el Te.
11. Fin

TALLER
Desarrollar 2 algoritmos, uno sencillo y otro ms
complejo, puede ser utilizando condicionales para
solucionar los siguientes problemas:
1. Disear un algoritmo que responda a la pregunta:
Qu debo hacer para ver la pelcula XYZ?.
2. Disear un algoritmo o receta para preparar un plato
o postre o bebida especfica,
3. Disear un algoritmo o las instrucciones a seguir para
matricularse en el presente ciclo acadmico.
4. Disear un algoritmo para hacer una llamada
telefnica desde un telfono pblico.

FORMAS DE DESCRIBIR UN ALGORITMO


1. LENGUAJE NATURAL
La primera y ms sencilla forma de describir un algoritmo.
Ventaja fundamental: facilidad de comprensin, cualquier
persona (hispanoparlante, por supuesto) que lea dicho
algoritmo podra entenderlo y aplicarlo.
Problemas que plantea describir un algoritmo de esta forma:
El lenguaje natural no es universal
El lenguaje natural es ambiguo y, por tanto, susceptible de
errores.
El lenguaje natural es muy amplio, lo que para una persona
puede ser una instruccin sencilla, puede no serlo para
otra y, desde luego, no lo ser para un computador.
Otras formas estn mejor delimitadas y no son ambiguas.

FORMAS DE DESCRIBIR UN ALGORITMO


2. PSEUDOCODIGO

Une en un solo tipo de representacin las


ventajas del lenguaje natural y de los
diagramas.
Ventajas:
Fcilmente comprensible para una persona que lo
ve por vez primera.
Est bien delimitado.
Elimina las ambigedades del lenguaje natural.
Se representa de una forma compacta.

FORMAS DE DESCRIBIR UN ALGORITMO


3. DIAGRAMA DE FLUJO
Representaciones grficas de algoritmos; usan
smbolos conectados con flechas para indicar la
secuencia de instrucciones y estn regidos por
ISO (Organiz. de estndares internacionales)
Ventajas
Los smbolos son universales.
Son menos propensos a la ambigedad.
Por estar basados en un nmero pequeo de bloques y
reglas para su empleo permiten delimitar mejor los
algoritmos.
Se aproximan ms a la forma en que trabaja el ordenador

FORMAS DE DESCRIBIR UN ALGORITMO


3. DIAGRAMA DE FLUJO
Desventajas
El hecho de emplear smbolos supone que una
persona que desconozca los smbolos puede tener
dificultades para comprender el algoritmo o no
entenderlo en absoluto.
Aunque los smbolos son universales el texto que se
coloca en su interior sigue siendo lenguaje natural.
La representacin grfica puede resultar bastante
tediosa y en el caso de algoritmos complejos
extremadamente confusa.
Un ordenador no es capaz de utilizar una
representacin visual como descripcin de un
algoritmo

FORMAS DE DESCRIBIR UN ALGORITMO


4. DIAGRAMA NASSI SCHNEIDERMAN O NS

Otra forma de representar los algoritmos


grficamente.
Diagrama algo similar a los diagramas de flujo
en el que se omiten las flechas y las figuras
que se usan son rectngulos contiguos para
rdenes secuenciales.
Leer b,h

FORMAS DE DESCRIBIR UN
ALGORITMO
Durante el desarrollo del curso, emplearemos
para describir algoritmos: Pseudocdigo,
Diagrama de Flujo y Diagramas NS.
Estas 3 formas permiten implementar las 3
estructuras Bsicas de Control:
A. Estructura Secuencial
B. Estructura Condicional o de Decisin o Selectiva
C. Estructura Repetitiva o Iterativa

A. ESTRUCTURA SECUENCIAL
La estructura secuencial es aquella en la que
una accin sigue a otra en secuencia. Las
operaciones se suceden de tal modo que la
salida de una es la entrada de la siguiente y as
sucesivamente hasta el fin del proceso

A. Estructura SecuencialEJEMPLO 1: Disear un


algoritmo para calcular el rea y el permetro de un
rectngulo
PASO 1: Definicin del problema
Calcular rea y permetro de un rectngulo
PASO 2: Anlisis del problema
Para desarrollar este problema es necesario conocer
las frmulas para obtener tanto el rea como el
permetro de un rectngulo.
Sea b = base, h = altura, a=rea y p=permetro, las
frmulas a utilizar son:
a = b * h y p = 2 * (b + h)
Datos de entrada: b y h (base y altura)
Datos de salida: a y p
Procesos: a = b * h y p = 2 * (b + h)

b, h

ENTRADA

a=b*h
p = 2* (b + h)

PROCESO

a, p

SALIDA

PASO 3: Diseo de la solucin o del


Algoritmo PSEUDOCODIGO

Inicio

//Declaracin de variables
Entero b, h, a, p
//Entrada de datos
Leer b, h
//Proceso de clculo
a=b*h
p = 2 *(b + h)
//Salida de resultados
Escribir Area:", a
Escribir Permetro:", p

Fin

PASO 3: Diseo de la solucin o del


Algoritmo DIAGRAMA DE FLUJO

INICIO

Entero b, h

Leer b, h

a=b*h
p=2*(b+h)
Escribir
Area: , a
Perimetro: , p

FIN

PASO 3: Diseo de la solucin o del


Algoritmo DIAGRAMA NS
IInicio
Entero b, h
Leer b, h
a = b*h
p = 2 *(b + h)
Escribir Area= , a

Escribir Permetro= , p
Fin

CONCEPTOS BSICOS EN EL DISEO


DE ALGORITMOS
Variable
Objeto cuyo valor puede ser modificado a lo largo de la
ejecucin de un programa.
Se le asigna un nombre: contador, rea, suma.
Estructura secuencial:
Formado por instrucciones que se ejecutan una
despus de otra. Se tienen tres tipos de instrucciones
secuenciales:
1. La declaracin de variables,
2. Asignacin,
3. Instruccin Leer e instruccin Escribir.

VARIABLES

DIRECCCIONES

001

MEMORIA

VALO RES DE
v
VARIABLES

b
h

002

3
SKSKSD

003

15

16

004

NOMBRE DE VARIABLES
(IDENTIFICADORES)

Declaracin de variables
Consiste en escribir el tipo de datos y la lista
de identificadores que se tendrn de dicho
tipo, separando cada identificador por medio
de comas y : para separar el tipo de datos de
la lista de identificadores.
Ejemplo:
Entero edad
Real estatura, peso, sueldo
Cadena nombre, direccin

Asignacin
Asignar un valor a una variable equivale a decir que se
guarda dicho valor en la posicin de memoria reservado
para la variable en mencin. Por lo tanto, para poder
realizar una asignacin es necesario primero haber
declarado una variable.
variable = expresin variable
expresin
La expresin puede estar formada por un valor, por un
conjunto de valores y operadores o por una funcin.
Ejemplos de asignacin:
edad = 10 //A la variable edad se le asigna el valor de 10
estatura = 1.80 //A la variable estatura se le asigna el valor de 1.80
resultado = 2*3 //A la variable resultado se le asigna el valor 6
resultante de la expresin 2*3

Instruccin Leer
Se utiliza para enviar informacin desde un
dispositivo de entrada de datos hacia la memoria.
En la memoria los datos son ubicados mediante
el nombre de variable utilizado como
complemento de la instruccin LEER.
Ejemplo:
Leer a, b
Donde "a" y "b" son las variables que recibirn los
valores y que deben haberse declarado
previamente.

Instruccin Escribir
Permite enviar datos desde la memoria hacia un
dispositivo de salida como la pantalla o la impresora.
La informacin que se enva puede ser constante o
tambin el contenido de variables.
Ejemplo:
Escribir a, b //Se imprimen los valores de las variables a y b
Cuando se escriben ms de una variable es necesario
separarlas con comas (,) y los mensajes se escriben
entre comillas dobles .
Escribir Area = , a
//Se imprime el texto Area = seguido del valor resultante de la
variable a

Contador
Es una variable que sirve para llevar la cuenta de las
veces que se repite una operacin
Generalmente se incrementa o decrementa de uno en
uno.
En el ejemplo, son contadores: c, i, apr, des , con
c=c+1
Acumulador
Es una variable en la cual se va almacenando la suma
de los valores sucesivos que va tomando otra variable.
sum=sum+1

A. Estructura SecuencialEJEMPLO 2: Disee un


algoritmo para convertir una longitud dada en metros
a sus equivalentes en centmetros, pies, pulgadas y
yardas.
Consideremos que: 1 metro = 100 centmetros, 1
pulgada = 2.54 centmetros, 1 pie = 12 pulgadas, 1
yarda = 3 pies.
PASO 1: Definicin del problema
Calcular una longitud dada en metros a sus
equivalentes en centmetros, pies, pulgadas y yardas

PASO 2: Anlisis del problema


Para desarrollar este problema es necesario conocer las
equivalencias de las unidades de medida de longitud
planteadas.
Sean: metro = medida en metros, acent = convertir a cent,
apulg = convertir a pulg, apies = convertir a pies y ayard =
convertir a yardas
Datos de entrada: metro
Datos de salida:
acent, apulg, apies, ayard
Procesos:
acent = metro * 100
apulg = acent / 2.54
apies = apulg / 12
ayard = apies / 3

PASO 3: Diseo de la solucin o del Algoritmo


PSEUDOCODIGO
Inicio
// Declaracin de variables
Real metro, acent, apies, apulg, ayard
// Entrada de datos
Leer metro
// Proceso de clculo
acent = metro * 100
apulg = acent / 2.54
apies = apulg / 12
ayard = apies / 3
// Salida de resultados
Escribir Centmetros : , acent
Escribir Pulgadas : , apulg
Escribir Pies : , apies
Escribir Yardas: , ayard

Fin