Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmos PDF
Algoritmos PDF
2 ALGORITMOS
2.1 Introduccin
El objetivo principal de la materia es el de ensear a resolver problemas mediante una
computadora. Un programador de computadoras antes de nada es un resolvedor de
problemas.
Por lo que para llegar a ser un programador eficaz se necesita aprender a resolver
problemas de un modo riguroso y sistemtico.
2.2 Definicin
Un Algoritmo es una secuencia de operaciones detalladas y no ambiguas, que al ejecutarse
paso a paso, conducen a la solucin de un problema. En otras palabras es un conjunto de
reglas para resolver una cierta clase de problema.
44 Metodologa de la Programacin I
Algoritmos
Modelo Resultados
Anlisis
Secuenciales
Condicionales
Repetitivos
Una receta de un plato de cocina se puede expresar en espaol, ingles o francs pero
cualquiera sea el lenguaje los pasos para la elaboracin del plato se realizarn sin importar
el cocinero.
El acto de disear un algoritmo puede considerarse como una tarea que difcilmente podr
ser del todo automatizada, todo problema algotmico es un reto para su diseador. Algunos
46 Metodologa de la Programacin I
Algoritmos
resultan inmediatos de resolver, otros son bastante complejos. la investigacin en esta rea
ha permitido descubrir un conjunto de mtodos y esquemas de diseo hacia los cuales
puede orientarse la realizacin de muchos algoritmos. Idear un algoritmo continua siendo
una labor bastante creativa donde los conocimientos y las experiencias del propio diseador
tiene un papel fundamental.
Esta tcnica puede ser utilizada con xito en problemas como multiplicacin de matrices,
ordenacin de vectores, etc.
=?
Determinar la ecuacin del ngulo entre dos vectores. del producto escalar se tiene
A* B = A * B * COS ( )
A* B
cos =
A * B
Determinar las operaciones intermedias
A = A = Ax 2
+ Ay 2
+ Az 2
B = B = Bx 2
+ By 2
+ Bz 2
N = A * B = Ax * Bx + Ay * By + Az * Bz
D = A* B
Conjunto de billetes =
{"doscientos","cien","cincuenta","veinte","diez","cinco","dos","uno"};
Conjunto de cantidades ={200,100,50,20,10,5,2,1};
Cambiar (dato, posicin)
si (dato es distinto de 0) entonces
cuantos = dato DIV cantidades[posicin];
si (cuantos es distinto de 0) entonces
imprimir ("hay , cuantos, billetes de , billetes [ posicin]);
fin_si
Cambiar (dato MOD cantidades[posicin], posicin+1);
Fin_si
Fin_cambiar
inicio
cambiar(1388,0);
fin
El estilo y calidad de los algoritmos van fuertemente unidos, ante la pregunta Cuales son
las caractersticas de un buen algoritmo? la respuesta identifica los factores de calidad de
los algoritmos.
48 Metodologa de la Programacin I
Algoritmos
problema. Consiste en efectuar una relacin entre las etapas de la estructuracin de forma
que una etapa jerrquica y su inmediato inferior se relacionen mediante entradas y salidas
de informacin.
Este diseo consiste en una serie de descomposiciones sucesivas del problema inicial, que
recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del
programa.
Las diferentes partes del problema pueden ser programadas de modo independiente e
incluso por diferentes personas.
El programa final queda estructurado en forma de bloque o mdulos lo que hace mas
sencilla su lectura y mantenimiento.
Modulo 1
Sub problema
1.1
Modulo 2
Sub Problema
1
Modulo 3
Sub problema
Problema 1.2 Modulo 4
Inicial
Modulo N-3
Sub problema
M.1 Modulo N-2
Sub Problema
M Modulo N-1
Sub problema
M.2 Modulo N
2.8.4 Bottom Up
El diseo ascendente se refiere a la identificacin de aquellos procesos que necesitan
computarizarse con forme vayan apareciendo, su anlisis como sistema y su codificacin, o
bien, la adquisicin de paquetes de software para satisfacer el problema inmediato.
Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema
como una entidad global, adolece de ciertas limitaciones por haber tomado un enfoque
ascendente. Uno de ellos es la duplicacin de esfuerzos para accesar el software y ms aun
al introducir los datos. Otro es, que se introducen al sistema muchos datos carentes de
valor. Un tercero y tal vez l mas serio inconveniente del enfoque ascendente, es que los
objetivos globales de la organizacin no fueron considerados y en consecuencia no se
satisfacen.
La principal razn para que las personas aprendan lenguajes de programacin es utilizar la
computadora como una herramienta para la resolucin de problemas. Dos fases pueden ser
identificadas en el proceso de resolucin de problemas.
50 Metodologa de la Programacin I
Algoritmos
Anlisis del
problema Ejecucin del
programa
Diseo del
Algoritmo
Verificacin del
Programa
Verificacin del
Algoritmo
Documentacin
Mantenimiento
Tomar en cuenta que la solucin del problema debe estar en funcin de lo que el problema
requiera y no en funcin de lo que el programador quiera.
Es importante que se conozca lo que se desea que realice la computadora; mientras esto no
se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
Al comenzar a abordar un problema hay que tener en cuenta que para la mayora de ellos
hay muchas maneras de resolver y pueden existir muchas soluciones, se plantean algunos
criterios o estrategias generales que se deben tomar en cuenta, las cuales son tiles en el
anlisis del problema.
El propsito del anlisis del problema es ayudar al programador para llegar a una cierta
comprensin de la naturaleza del problema. Una buena definicin del problema junto con
una descripcin detallada de las especificaciones de entrada y de salida, son los requisitos
ms importantes para llegar a una solucin eficaz.
Anlisis del
problema
52 Metodologa de la Programacin I
Algoritmos
Normalmente los pasos diseados en un primer esbozo del algoritmo son incompletos e
indican solo unos pocos pasos, tras esta primera descripcin estos se amplan en una
descripcin ms detallada con pasos especficos este proceso se denomina refinamiento del
algoritmo.
Calculo de la superficie
Entrada de datos Salida de resultados
Entrar el Radio S = PI * R ^2 S
Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que realiza
las tareas para las que ha sido diseado y produce el resultado correcto y esperado.
2.9.6 Codificacin
La codificacin es la operacin de escribir la solucin del problema (de acuerdo a la lgica
del diagrama de flujo o pseudocodigo), en una serie de instrucciones detalladas, en un
cdigo reconocible por la computadora, la serie de instrucciones detalladas se le conoce
como cdigo fuente, el cual se escribe en un lenguaje de programacin o lenguaje de alto
nivel.
54 Metodologa de la Programacin I
Algoritmos
La depuracin o prueba resulta una tarea tan creativa como el mismo desarrollo de la
solucin, por ello se debe considerar con el mismo inters y entusiasmo.
Resulta conveniente observar los siguientes principios al realizar una depuracin, ya que de
este trabajo depende el xito de nuestra solucin.
2.9.8 Documentacin
Es la gua o comunicacin escrita es sus variadas formas, ya sea en enunciados,
procedimientos, dibujos o diagramas.
A menudo un programa escrito por una persona, es usado por otra. Por ello la
documentacin sirve para ayudar a comprender o usar un programa o para facilitar futuras
modificaciones (mantenimiento).
Documentacin Interna
Documentacin Externa
Manual del Usuario
Documentacin Interna: Son los comentarios o mensaje que se aaden al cdigo fuente
para hacer mas claro el entendimiento de un proceso.
Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin
de que el usuario obtenga el resultado deseado.
2.9.9 Mantenimiento
Se lleva acabo despus de terminado el programa, cuando se detecta que es necesario hacer
algn cambio, ajuste o complementacin al programa para que siga trabajando de manera
correcta. Para poder realizar este trabajo se requiere que el programa este correctamente
documentado.
Pseudocodigo
Diagrama de Flujo.
Diagramas Nassi/Shneiderman-S (Chapin)
Mtodo Warnier
Mtodo Jackson
Mtodo Bertini
Mtodo Tabourier
2.10.1 Pseudocodigo
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a
un problema determinado. El pseudocodigo utiliza palabras que indican el proceso a
realizar.
56 Metodologa de la Programacin I
Algoritmos
Inicio
Leer (lado)
A lado * lado
Imprimir( A)
Fin
Variable expresin
Leer (Variable)
Imprimir (variable)
2.10.1.2 Sentencias de control
Tambin se llaman sentencias estructuradas y controlan el flujo de ejecucin de otras
instrucciones.
I1,I2,...,I3
Si condicin entonces
I1,I2,...,In
Fin_si
Si condicin
entonces I1,I2,...,In
Sino J1, J2,..,Jn
Fin_si
Opcin Expresin de
V1 Hacer I1,I2,...,In
V2 Hacer J1,J2,...,In
V3 Hacer K1,K2,...,Kn
...
VN Hacer L1,L2,...,Ln
Otro Hacer M1,M2,...,Mn
Fin_opcin
Mientras
Repetir
Repetir
I1,I2,...,In
Hasta condicin
Para
Para Variable de Valinc a ValFin hacer
I1,I2,...,In
Fin_para
Esta representacin grfica se da cuando varios smbolos (que indican diferentes procesos
en la computadora), se relacionan entre si mediante lneas que indican el orden en que se
deben ejecutar los procesos.
58 Metodologa de la Programacin I
Algoritmos
2.10.2.1 Caractersticas
Toda representacin grfica, de cualquier tipo sea, debe cumplir las siguientes cualidades.
Subrprogramas
comentarios
60 Metodologa de la Programacin I
Algoritmos
No si
62 Metodologa de la Programacin I
Algoritmos
Las acciones simples, tambin denominadas instrucciones primitivas, son aquellas que el
procesador ejecuta de forma inmediata.
Leer A,C
Escribir a,b
I1
I2
...
IN
Alternativa. En esta instruccin la condicin es booleana
condicion
True False
Condicion
1 2 3 4 5 6 7 8
Mientras
MIentras
64 Metodologa de la Programacin I
Algoritmos
Repetir
repetir
Para
Para
Tambin existen otros mtodos de representar los algoritmos y son los siguientes.
Variable expresin
Leer (Variable)
Imprimir (variable)
I1
I2
...
I3
Si I1
Condicin
No I2
Expresin = V1 A
Expresin = V2 A
Expresin = V3 A
Expresin = Otros A
66 Metodologa de la Programacin I
Algoritmos
Mientras
Proceso A
Mientras condicin
Repetir
Proceso A
Hasta condicin
Para
Proceso A
N veces
O *
Variable expresin
Leer (Variable)
Imprimir (variable)
Proceso
A B C
Si O No O
A B
68 Metodologa de la Programacin I
Algoritmos
Expresin
= V1 O = V2 O = V3 O = VN O
A B C D
Proceso
*
Condicin
Mientras
En el bloque condicin se escribe mientras condicin
Repetir
En el bloque condicin se escribe hasta condicin
Para
En el bloque condicin se escribe N veces
Variable expresin
Leer (Variable)
Imprimir (variable)
C B A
70 Metodologa de la Programacin I
Algoritmos
COND COND
A B
EXPRESION
A B C D
CONDICION
Mientras
Repetir
Para
Variable expresin
Leer (Variable)
Imprimir (variable)
72 Metodologa de la Programacin I
Algoritmos
Boque
A B C
Si entonces Sino
Condi. A B
En caso de
Expresin
= V1 = V2 = V3 = VN
A B C D
Mientras
Mientras
A
Condi.
Repetir
Repetir
A
Condi.
Para
Para
A
Condi.
Diagramas de flujo
Pseudocodigo
Diagramas N-S
74 Metodologa de la Programacin I
Algoritmos
Declaracin de Descripcin de variables y tipos en Se escriben las variables y tipos Escritura de una tabla de variables
variables la tabla de variables en la tabla de variables junto con
el diagrama de flujo
Leer Leer
(lista de variables) (lista de variables)
Escribir Escribir
(lista de variables) (lista de variables)
Instruccin
compuesta S1 S1
S1
S2 S2 S2
S3
... ... ...
SN
Sn Sn
Comentarios
{ FASE DESCRIPTIVA DE
COMENTARIO}
Selectiva alternativa
simple Si condicin entonces condicion
S1 True False
S2
...
S3
Finsi
Selectiva alternativa
doble Si condicin entonces
S1 condicion
S2 True False
...
S3
Sino
S1
S2
...
S3
Finsi
76 Metodologa de la Programacin I
Algoritmos
Selectiva alternativa
mltiple Segn_sea expresin hacer
Condicion
E1 : S1,S2,...Sn 1 2 3 4 5 6 7 8
E2 : S1,S2,...Sn
E3 : S1,S2,...Sn
.....
EN : S1,S2,...Sn
En_otro_caso
EN : S1,S2,...Sn
Fin_segn_sea
Repetitiva mientras
Mientras condicin
S1 no Mientras
S2
... Si
S3
Fin_Mientras
Repetitiva repetir
Repetir
S1
S2
...
S3
Hasta condicin
No Si
Repetir
Repetitiva para
(desde) Para Var de ValInc Hasta ValFin
[incremento x] hacer Para V de Para
S1 inic fin hacer
S2
...
Sn
Fin_Para
78 Metodologa de la Programacin I