Beruflich Dokumente
Kultur Dokumente
Pag. 2 2
Cap.2: El Mtodo Algortmico
ya que ellas albergan los datos para los cuales el programa est elaborado. En com
putacin, el concepto de variable es similar al mismo concepto en lgebra: un nombre
que representa un valor que puede cambiar en el tiempo. En computacin, sin embar
go, el concepto va ms all para incluir entonces la idea expresada en el prrafo ante
rior acerca de una localidad de memoria que se utiliza para el almacenamiento te
mporal de valores. Sabiendo esto, se puede definir una variable como una localid
ad especfica de la memoria del computador, identificada con un nombre y que almac
ena un dato. Una vez que se hayan diseado algunos programas, se podr observar clar
amente que stos operan sobre un grupo de datos para producir un grupo de resultad
os y que todos ellos estarn ubicados en variables, incluso se podr afirmar que pro
gramar no es otra cosa que manipular variables. Si la afirmacin anterior es ciert
a, entonces es razonable concluir que el desarrollo de un programa debe comenzar
con la representacin de los elementos del problema como variables. Esta idea, as
como otras relativas a los distintos tipos de datos a manipular, sern desarrollad
as en los prximos captulos.
produce un resultado o, lo que es lo mismo, resuelve un problema. Segn esta defin
icin se puede afirmar que cosas como las recetas de cocina, los manuales de opera
ciones, las normas de clculo y las instrucciones para manejo de aparatos son proc
edimientos. Pues bien, un algoritmo es un procedimiento que rene las siguientes c
aractersticas: debe ser definido: es decir, sin importar el nmero de veces que se
aplique en las mismas condiciones, siempre se obtendr el mismo resultado; debe se
r preciso: es decir, no deber sembrar duda alguna sobre el orden de ejecucin de ca
da uno de los pasos y sobre la naturaleza y el propsito de cada uno de ellos;
riables sino tambin para todos los valores que puedan tomar esas variables. Este
mtodo consiste en la aplicacin de los siguientes pasos: Anlisis del problema. Diseo
del algoritmo. Codificacin.
2.3 Algoritmos.
Es bueno aclarar primero que un algoritmo es importante en el estudio de la prog
ramacin porque, si bien el mtodo algortmico produce algoritmos, el presente curso p
retende, entre otras cosas, que el estudiante produzca programas de computacin. Y
un programa de computacin no es otra cosa que la expresin en lenguaje de programa
cin de un algoritmo, por lo que el proceso de resolucin de problemas con el comput
ador comienza con el desarrollo de algoritmos. Tambin es bueno definir primero lo
que es un procedimiento o una receta: un conjunto de instrucciones o de tareas
que ejecutados siguiendo un orden preestablecido o establecido por el mismo proc
edimiento,
Programacin con Delphi
2.4.1
Anlisis del problema.
Este paso consiste en identificar muy claramente los elementos que componen el p
roblema, es decir: Las incgnitas, porque son precisamente, el propsito del problem
a. En ocasiones no son fcilmente identificables; en estos casos, no se debe segui
r adelante hasta haber resuelto con toda claridad este paso. Los datos, porque s
on los elementos que se deben manipular para hallar respuesta a las incgnitas.
Las frmulas, porque siendo las expresiones con los que se manipulan los datos par
a resolver las incgnitas, indican el rumbo que debe tomar el desarrollo del algor
itmo. La determinacin de las mismas puede requerir de deduccin o de investigacin ex
tra de informacin, lo cual se traduce en el gasto de un porcentaje, a veces alto,
del tiempo de resolucin del problema. En otras palabras, se puede decir que en e
sta etapa se determina qu es lo que debe hacer el algoritmo, a partir de qu datos
y bajo qu condiciones.
un estado de nimo adecuado y el disfrute de una buena salud facilita enormemente
el desarrollo de los procesos mentales. Cuando se presenta el caso de un problem
a complicado, entonces el individuo debe echar mano de recursos que despejen el
camino entre las ideas en su forma mental y su expresin, con miras a construir el
algoritmo. Para ello se aconseja el uso de dibujos, diagramas, grficos y frmulas
as como de tcnicas, individuales o colectivas, para el desarrollo de ideas, tales
como el brainstorming y los mapas mentales, con el propsito de ir y volver de la
parte anterior para producir ideas cada vez ms claras y desarrollar cada uno de l
os pasos que componen el algoritmo.
Durante el desarrollo del algoritmo, el programador debe pensar tambin en el modo
ms conveniente de organizar variables ya que, como se ver ms adelante, la mayora de
los problemas exige la manipulacin de una gran variedad y una gran cantidad de st
as. Para facilitar esta tarea, los lenguajes ofrecen estructuras de datos que pe
rmiten agrupar variables segn su naturaleza o segn la conveniencia que stos brinden
en cada problema. Por ello, el diseo de un buen algoritmo implica la creacin de u
n buen conjunto de instrucciones y un buen conjunto de estructuras de datos.
A PROPSITO
2.4.2
que sobre ese problema o problemas similares y sus componentes hayan en su mente
y lo accesible que sta sea en un momento dado, b) el entrenamiento recibido y re
alizado por el individuo, ya que ste hace que se desarrolle un mayor nmero de asoc
iaciones recurrentes, facilitando a la mente la formacin de la idea al tener mayo
r intuicin sobre los elementos del problema, c) el estado de salud y nimo del indi
viduo, ya que est demostrado que una actitud mental positiva,
Una tercera etapa es necesaria cuando la complejidad del problema es tal que par
a resolverlo, ste debe ser dividido en mdulos de complejidad menor que el problema
original. Entonces cada mdulo se transforma en un nuevo problema cuya solucin se
encontrara por la aplicacin del mismo mtodo aplicado al problema original anlisis del
problema, procesos mentales, etc. Cabe hacer notar que cada mdulo sera tambin susc
eptible de ser subdividido en mdulos ms simples. Este proceso se conoce como proce
so de descomposiciones sucesivas, refinamientos sucesivos, diseo descendente, dis
eo top down o diseo modular y sus nombres derivan del hecho de que en cada refinam
iento, el problema original quedar dividido en un nmero cada vez mayor de mdulos de
solucin ms sencilla. Y hasta cundo se realizan esos refinamientos? Hasta que se cue
nta con un algoritmo cuyos pasos son fcilmente transformables en instrucciones de
un lenguaje de computacin, sin perder de vista las caractersticas de un algoritmo
: definicin, precisin y finitud.
Ejemplo 2 1
Examnese el siguiente problema: Dadas dos rectas por las coordenadas de dos de su
s puntos, ambas rectas inclinadas, elabore un algoritmo para determinar si esas
rectas se interceptan y, si lo hacen, determine las coordenadas del punto de int
erseccin. Primera parte: Anlisis del problema.
DATOS ........ Las dos rectas coordenadas de dados dos por de las sus
Programacin con Delphi
Ing. Jos Ricardo Vargas
Pag. 2 4
puntos. Llmense A y B a las dos rectas, (x1,y1) y (x2,y2) las coordenadas de los
puntos de la recta A y (x3,y3) y (x4,y4) las coordenadas de los puntos de la rec
ta B. INCGNITAS ... Las coordenadas llamadas (xint,yint) del punto de interseccin de
las dos rectas si stas se interceptan o un mensaje que indique que no se interce
ptan si no lo hacen. RESTRICCIONES Dado que el enunciado establece que las recta
s deben ser inclinadas, entonces los datos deben cumplir con las siguientes cond
iciones: x1<>x2, y1<>y2, x3<>x4 y y3<>y4. Aunque no se especifica en el enunciad
o, es obviamente necesario verificar tambin que las rectas no sean paralelas. FRMU
LAS ..... Si se denota a la pendiente del segmento A como PA y a la pendiente de
l segmento B como PB, entonces se tiene que: Abscisa del punto de interseccin:
xint = y3 y1 + PAx1 PBx3 (PA PB)
ctas mediante las frmulas: xint = (y3 y1+PAx1 PBx3)/(PA PB) yint = PA(xint x1)+y1
PASO 6 . Imprima xint y yint. PASO 7 . Fin.
2.5
Pseudocdigo.
Expresar un algoritmo mediante pseudocdigo consiste en expresar cada uno de los p
asos con palabras y smbolos escritos del lenguaje comn, como se mostr en el ejemplo
anterior, de tal manera que el mismo pueda ser reproducido por cualquier person
a que conozca por lo menos dichas palabras y el significado de los smbolos. An cua
ndo estos pasos sern luego ejecutados secuencialmente, se recomienda enumerarlos
ya que el orden de ejecucin de los mismos puede alterarse por instruccin de alguno
de ellos.
Ejemplo 2 2
Examnese el siguiente problema: Dado un nmero entero positivo, elaborar un algorit
mo para determinar si el nmero dado es primo. Primera parte: Anlisis del problema.
DATOS ...........El nmero dado, que se llamar N INCGNITAS ......Una caracterstica de
l nmero: si es primo o no. RESTRICCIONES ...El nmero N deber cumplir con la condicin
de ser entero ya que el concepto de nmero primo se aplica slo a los nmeros enteros
. FRMULAS ........El concepto de nmero primo es un concepto relativo a divisibilid
ad de nmeros. Un
Programacin con Delphi
Ing. Jos Ricardo Vargas
Salida SI es primo
N 9
B 2 3
Salida NO es primo
Tabla 2 1. Simbologa bsica de los diagramas de flujo.
2.7
Diagrama de Flujo.
Un diagrama de flujo (flowchart) es la expresin de un algoritmo en la que se util
iza un conjunto de smbolos universalmente reconocidos y aceptados, cuya forma se
corresponde con tipos de pasos algortmicos o
Programacin con Delphi
Por supuesto, los smbolos mostrados en la tabla anterior no son todos los smbolos
utilizados para elaborar diagramas de flujo, pero son suficientes para los propsi
tos de un curso bsico de programacin. Existen normas como la norma ISO 1028 1973 y
versiones en distintos pases de la simbologa general que incluyen
Ing. Jos Ricardo Vargas
Pag. 2 6
Cap.2: El Mtodo Algortmico
smbolos especficos para manejo de accesorios o para operaciones que estn implementa
das slo en algunos lenguajes de programacin e incluso en algunos sistemas operativ
os. Estas normas no slo especifican la simbologa sino tambin la gramtica de los diag
ramas de flujo, la cual tambin sufre de variaciones menores segn el lugar donde se
apliquen, pero cuyo resumen, que se muestra a continuacin, ha sido aceptado por
la mayora de los organismos y las empresas involucradas en el uso de estos: El fl
ujo de ejecucin de instrucciones estar indicado nicamente por flechas y conectores
de flujo.
Todo smbolo tiene al menos una flecha de llegada y al menos una flecha de salida,
con excepcin de los bloques terminales y los conectores de flujo. El flujo de ej
ecucin de instrucciones ser preferiblemente de arriba abajo y de izquierda a derec
ha. Slo habr un smbolo de inicio y un smbolo de fin de programa, pudiendo haber vari
os de parada del programa. Slo los bloques de seleccin podrn tener varias flechas d
e salida.
Ejemplo 2
Observe a
o 2.2, el
rrollados
INICIO
4
continuacin el diagrama de flujo correspondiente al problema del ejempl
cual muestra adems, las instrucciones correspondientes a los pasos desa
en el mencionado ejemplo.
Leer N
PASO 1:
Designar el nmero como N.
no
N>0 y N entero? si B 2
PASO 2:
Si el nmero N no es entero o es negativo, repetir el paso 1. Llame B a una variab
le y asgnele el valor 2.
PASO 3:
N es divisible entre B? no B B +1
si
PASO 4:
Compruebe si N es divisible entre B. Si lo es, entonces imprima el mensaje NO es
primo y vaya al paso 8.
programacin. Observe q
razn que hace a los di
y de gran ayuda para
prximos
Preguntas de repaso
1. Qu es, en programacin, una variable? Tiene sta el mismo significado que en lgebra?
2. Cree usted que un programa puede procesar un valor que no est almacenado en una
variable? 3. Qu es un procedimiento? Qu es una receta? Qu es un algoritmo? Puede cons
derarse el conjunto de los algoritmos como un subconjunto de los procedimientos?
4. Cules son las caractersticas de un algoritmo? Cree usted que un algoritmo sea slo
para construir programas de computacin? 5. Cuntos y cules son los pasos del Mtodo Al
gortmico? Describa brevemente cada uno de ellos. 6. Puede afirmarse que el anlisis
de un problema se reduce a un proceso de identificacin de elementos? Por qu? 7. En q
u consiste el diseo de un algoritmo? En cuntas etapas se lleva a cabo? Una vez diseado
, qu paso sigue? 8. Cmo cree usted que influye el entrenamiento del programador en
su habilidad para disear algoritmos? 9. Qu es brainstorming? Qu son los mapas mentale
s? Qu otras tcnicas de ayuda para resolucin de problemas conoce usted? Cree usted que
todas estas tcnicas son individuales o de grupo? 10. Qu son las estructuras de dat
os? Cmo influyen en el diseo de un algoritmo? 11. En qu consiste el proceso de descom
posiciones sucesivas? Es siempre necesario aplicarlo al diseo de un algoritmo? 12.
Cree usted que, una vez codificado un algoritmo, ha terminado el proceso de reso
lucin de un problema? Explique. 13. Qu es pseudocdigo? Por qu es til representando alg
ritmos? 14. Es obligatoria la numeracin de los pasos en un pseudocdigo? Si no, cmo se
garantiza la ejecucin secuencial de los pasos? 15. Qu es corrida en fro? Por qu se di
ce que sta es una comprobacin manual? Cmo cree usted que se
ubican errores en un algoritmo mediante la corrida en fro? 16. Qu es un diagrama de
flujo? De qu est formado? Describa brevemente cmo se construye un diagrama de flujo
. 17. Por qu hay smbolos distintos en un diagrama de flujo? Describa brevemente el
significado de cada smbolo. 18. De qu maneras se representa el flujo de ejecucin de
instrucciones en un diagrama de flujo? 19. Cree usted que una corrida en fro tambin
sirve para comprobar un diagrama de flujo? 20. Cules son las cualidades que hacen
til a un diagrama de flujo?
Problemas propuestos
1. Escribir procedimientos o algoritmos para llevar a cabo las siguientes tareas
. Diga en cada caso si se trata de un algoritmo o de un procedimiento: Sacar la
cdula de identidad Organizar una fiesta de cumpleaos Pintar su casa o apartamento
Construir una casa Calcular el punto medio de un segmento de recta conociendo la
s coordenadas de los extremos. Graficar una funcin Preparar una pizza Reparar la
grifera de un lavamanos Redactar una carta de presentacin comercial. Redactar el C
urriculum Vitae. Cambiar un caucho. Elaborar un informe de inventario. Jugar a l
a vieja. Jugar al billar. Jugar ajedrez. Jugar Pker. 2. Dado un tringulo por las c
oordenadas de sus vrtices, cmo se averigua si en su interior existen puntos con coo
rdenadas enteras? 3. Dados dos puntos en el plano por sus coordenadas (x1, y1) y
(x2, y2), cmo se escribe la ecuacin de la recta que pasa por ellos, cul es la longi
tud del segmento que determinan y cules son las coordenadas del punto medio de di
cho segmento. 4. Escriba un algoritmo para calcular el monto a pagar a un trabaj
ador en una semana si se conocen los siguientes datos: las horas normales de tra
bajo se pagan a 2000 Bs la hora
Ing. Jos Ricardo Vargas
Programacin con Delphi
Pag. 2 8
Cap. 2: El Mtodo Algortmico
las horas de sobretiempo de lunes a viernes se pagan a 3500 Bs/h las horas traba
jadas en fin de semana se pagan a 5000 Bs/h 5. Escriba un algoritmo para calcula
r la nota de un estudiante de programacin, conociendo las notas y los pesos de lo
s exmenes parciales, los qices y los trabajos prcticos, segn las normas del Departam
ento. 6. El Domingo de Pascua es el primer domingo despus de la primera luna llen
a posterior al equinoccio de primavera. Cree usted que esta regla es suficienteme
nte precisa para clasificarla como un algoritmo? 7. Desarrolle un algoritmo que,
dados tres nmeros enteros que indiquen mes, da y ao de una fecha dada, determine e
l da de la semana y el da del mes a que corresponde esa fecha. 8. Desarrolle un al
goritmo que, dados los componentes de un vector de N dimensiones, encuentre aque
l de mayor valor absoluto. 9. Ample el algoritmo anterior para que ordene de mayo
r a menor los componentes del vector. 10. Escriba un algoritmo para determinar q
u es ms conveniente para el comprador de un automvil: 4000$ de inicial y 6000$ lueg
o de transcurridos 6 meses o 6000$ de inicial y 4000$ luego de transcurrido un ao
. Suponga un inters simple de 6% anual. 11. Escriba un algoritmo para convertir u
n nmero representado en una base cualquiera a otra base cualquiera convirtiendo d
e una base a base diez y de esta a la otra base. Desarrolle primero el algoritmo
para nmeros enteros y luego para nmeros reales. 12. Desarrolle un algoritmo para
hallar la representacin binaria de un nmero real cualquiera, almacenado como un nme
ro de tipo Single de la Norma IEEE 754. 13. Dado un sistema triangular de ecuaci
ones lineales de orden N, desarrolle un algoritmo para resolverlo. Un sistema tr
iangular de ecuaciones es aquel en el que los coeficientes ubicados por debajo d
e la diagonal principal, son nulos. Como ejemplo, observe el siguiente sistema d
e orden 4: a1,1x1 + a1,2x2 + a1,3x3 + a1,4x4 a2,2x2 + a2,3x3 + a2,4x4 a3,3x3 + a
3,4x4 a4,4x4 = = = = b1 b2 b3 b4
14. A ambas orillas de un ro crecen dos palmeras, una frente a la otra. La altura
de una es de X m, y la de la otra, de Y m. La distancia entre sus troncos es de
D m. En la copa de cada palmera hay un pjaro. De
Programacin con Delphi
sbito los dos pjaros descubren un pez que aparece en la superficie del agua, entre
las palmeras. Los pjaros se lanzan y alcanzan el pez al mismo tiempo. Escriba un
algoritmo para averiguar a qu distancia de la palmera mayor apareci el pez. 15. E
n una plaza hay instalados 5 altavoces distribuidos en dos grupos: uno de ellos
consta de dos aparatos y el otro, de tres. La distancia que separa los dos grupo
s es de X m. Dnde habr que colocarse para que el sonido de ambos grupos se oiga con
igual intensidad? 16. Dados tres puntos no colineales en el plano y por sus coo
rdenadas x y y, encontrar las coordenadas del punto que hace que los cuatro form
en el cuadriltero menos agudo. 17. Dados tres puntos no colineales en el plano y
un nmero real n, encontrar la cantidad mxima de crculos de radio n que caben en el
tringulo formado por los puntos dados. 18. Dado un polgono de n lados, encontrar l
as reas de los cuadrados ms grande y ms pequeo que envuelven al polgono. 19. Dados tre
puntos en el espacio por las coordenadas de sus vrtices, encontrar el vector nor
mal a la cara que forman los vrtices. 20. Para graficar una funcin en la pantalla
de un computador, se deben convertir las coordenadas reales de los puntos de la
grfica en coordenadas de la pantalla. Para ello se deben conocer los valores mximo
y mnimo de las abscisas y de las ordenadas de la funcin, as como los valores mximo
y mnimo de las coordenadas de los puntos de la pantalla. Una vez conocidos estos
datos, se puede llevar a cabo un "mapeo" de los puntos reales de tal modo que el
punto con la menor abscisa quede representada en el punto con la menor coordena
da de pantalla, igualmente se aplica al punto con mayor abscisa y a los puntos c
on mayor y menor ordenada. Escriba un algoritmo para implementar este mapeo con
el fin de representar en pantalla una funcin matemtica. 21. Escriba un algoritmo p
ara averiguar los movimientos que debe hacer un caballo de ajedrez para recorrer
todo un tablero del mismo juego, comenzando en cualquier posicin y sin repetir s