Vous êtes sur la page 1sur 45

RESOLUCIN DE PROBLEMAS Y

ALGORITMOS
Resolver problemas es un arte, como nadar, tocar el
piano o pintar, Ud. puede aprender practicando o
imitando. No se puede ofrecer una llave mgica que
abra todas las puertas y resuelva todos los problemas,
pero s se puede ofrecer un conjunto de ejemplos para
imitar y practicar. Si Ud. desea aprender a nadar, tiene
que tirares al agua; si Ud. desea ser un experto en
resolver problemas, debe resolver problemas.
Resolver un problema significa encontrar la forma de
sortear una dificultad, una forma de vencer un
obstculo. Resolver es la actividad especfica que
posibilita la inteligencia.
George Polya
EJEMPLOS:
1. Encontrar tres nmeros que cumplan las siguientes
condiciones: su suma es 21, el mayor supera al menor en
4, y el otro nmero es la semisuma de los anteriores.
2. Se desea disponer los alumnos de una escuela en forma
de cuadrado; en el primer intento se forma un cuadrado
y sobran 25 nios. Se realiza un nuevo ensayo colocando
un alumno ms por fila y faltan 46. Cuntos alumnos
tiene la escuela?
3. Hallar tres nmeros consecutivos cuya suma es 69.
4. En un corral hay conejos y gallinas. Se cuentan 140
patas y 50 cabezas. Cuntos conejos hay?
5. Una persona tiene 50 aos y su hijo 20. Dentro de
cuntos aos la edad del padre ser el doble que la de su
hijo?
6. Todos los mircoles la Sra. Garca invita a sus nietos a
comer pastelitos. Siempre compra la misma cantidad de
pastelitos que son distribuidos de igual forma entre los
chicos. Un mircoles un nieto, Juan, no acude a la
reunin y cada chico recibe dos pasteles ms. El
1

mircoles siguiente Juan lleva a un amigo y cada chico


recibe un pastelito menos. Cuntos nietos tiene la Sra.?
7. Es posible medir 6 litros de agua de ro si slo se cuenta
con dos recipientes, una de 9 litros, y uno de 4 litros.
Cmo? Liste los pasos necesarios.
8. En la orilla de un ro se encuentran un lobo, un repollo y
una oveja al cuidado de un pastor. Este debe trasladarlos
a la otra ribera. Ser posible efectuar el cruce si slo se
dispone de un bote y el remero slo puede llevar por vez
al repollo o a uno de los animales? Recuerde que el
lobo se come a la oveja y la oveja al repollo!!!
9. De cuntas maneras puede dividir un cuadrado en cuatro
partes iguales? Justifique.
10.
De cuntas formas distintas puede leer la palabra
abracadabra en la siguiente figura? Debe comenzar
leyendo en el extremo superior del rombo. Considere el
extremo superior como punto de partida y el inferior
como punto de llegada.
A
B
R
A
C
A

R
A

C
A

B
A
C

A
D

R
C
A

D
A

A
A
D

A
B

C
A
D
A

B
R

A
11. Un mercader de Benares de India, dispone de 8 perlas
iguales en su forma, tamao y color. De estas 8, 7 tienen el
mismo peso y hay una octava ms liviana.Cmo podra el
mercader descubrir la perla ms liviana e indicarla con toda
seguridad utilizando una balanza de dos platillos y efectuando
slo dos pesadas?

PROBLEMAS
Todo problema puede pensarse como una discrepancia
entre un estado actual, o inicial y un estado deseado o final.
Hallar una solucin puede pensarse como un proceso de
seleccin.
Podemos distinguir entre dos categoras de problemas:
El planteo del problema viene dado como una
descripcin de los estados Inicial y Final. Hallar la
solucin consiste en seleccionar una sucesin de
estados intermedios de acuerdo a ciertas reglas. Se
denomina a este tipo de problemas de sntesis ya que la
incgnita son los pasos intermedios entre dos estados.
El planteo del problema viene dado como una
descripcin del estado inicial y un conjunto de
restricciones que debera satisfacer el estado final. Se
considera a este tipo de problemas como de anlisis
ya que la incgnita es ahora el estado final.
Finalmente, podemos categorizar a los problemas en:
Problemas sin solucin.
Problemas con una nica solucin.
Problemas con varias soluciones.
Problemas con infinitas soluciones.
Para hallar soluciones a problemas se requiere habilidad,
conocimiento y experiencia.
Existen algunas pautas tiles que de ser seguidas pueden
ayudarnos para enfrentar el problema. Estas pautas son:
1. Establecer el problema en forma clara y entenderlo
completamente.
2. Clarificar cualquier ambigedad que presente el
problema.
3. Definir exactamente qu se quiere hacer.
4. Especificar con precisin todas las restricciones o
condiciones que debe satisfacer la solucin.
3

5. Identificar claramente la informacin disponible.


6. Explicitar toda informacin implcita en el planteo que
pueda resultar til.
7. Encontrar una representacin adecuada para esta
informacin.
Es frecuente que cuando deseamos hallar la solucin del
problema impongamos ms restricciones a la incgnita que
las implicadas en el enunciado.
Por ejemplo, supongamos que tenemos seis lpices de igual
longitud y deseamos formar cuatro tringulos equilteros de
igual tamao. Intente hallar la solucin por un momento, la
mayora intentar formar figuras sobre una mesa o en el
suelo, restringiendo el problema al plano. Probablemente esta
restriccin se deba a la asociacin natural entre un tringulo y
el plano. Intente ahora una solucin en el espacio.
Existen algunos otros pasos que siempre que sea posible es
importante aplicar. Por ejemplo eliminar toda aquella
informacin redundante o irrelevante.

Representacin
Abstracciones

de

problemas

Un problema se representa en general bajo la forma de un


enunciado.
La principal dificultad para hallar la solucin de un problema,
no es la falta de informacin, sino ms bien la incapacidad
para utilizar la informacin provista convenientemente. La
capacidad de la mente para manipular informacin es muy
limitada. Una persona no es capaz de considerar muchos
conceptos sin relacin a la vez.
Un punto fundamente entonces para hallar la solucin de un
problema, es seleccionar los elementos de informacin que
resulten relevantes.
La informacin puede ir organizndose en bloques, de manera
tal de ir creando una clasificacin. El agrupar items ayuda a
retener y manipular la informacin. Los diagramas, grficos y
ecuaciones son ejemplos de herramientas que permiten
condensar informacin.
El primer paso en la bsqueda de la solucin es encontrar una
representacin adecuada para el problema, que descarte la
informacin superflua y rescate aquella que resulte relevante.
4

La tcnica para encontrar un planteo ms conciso del


problema se conoce como abstraccin .
Una abstraccin se realiza en varias etapas:
1. Transformara el enunciado original en uno tan simple
como sea posible. La nueva versin no necesariamente
ser ms corta que la original.
2. Identificar los objetos relevantes.
3. Agrupar objetos en clases.
4. Nombrar los objetos o las clases segn alguna notacin
adecuada.
5. Definir las operaciones que pueden aplicarse sobre los
objetos.
6. Utilizar, siempre que sea posible, una notacin ms
abstracta que una descripcin verbal.
El objetivo de la abstraccin es construir una simplificacin de
la realidad que rescate nicamente la informacin relevante
para hallar la solucin del problema.
Intentamos construir un modelo de la realidad. Un modelo
es precisamente una representacin simplificada de la
realidad. La construccin de un modelo es til precisamente
porque slo son considerados los elementos relevantes, la
bsqueda de la solucin no se ve entorpecida por el exceso de
detalles.
Distintos tipos de notaciones que pueden ser utilizados para
representar problemas:
Descripcin verbal: Los problemas normalmente vienen
planteados en forma verbal. Antes de encontrar otra forma de
representacin es conveniente probar con una nueva versin
ms sucinta del problema original. Por ejemplo, eliminar
redundancias, datos irrelevantes y puntualizar el resto en
frases cortas y claras.
Diagrama: Existen muchos problemas en los que resulta
adecuado encontrar una representacin grfica del problema.
Matemtica: Una de las caractersticas ms interesantes de
usar herramientas matemticas es su rigidez y formalidad.
Esto asegura que si se obtiene una expresin adecuada y se
5

obedecen bien las reglas, es posible llegar a una solucin


acertada.
La matemtica nos ofrece: ecuaciones, grafos, lgica,
geometra, etc.
Las ecuaciones parten de una serie de incgnitas y una serie
de smbolos u operadores. La solucin consiste en ir
estableciendo nuevas relaciones entre las incgnitas, que
permiten llegar a una expresin simple donde se haga
conocido el valor para una de las incgnitas. Se puede
continuar con este proceso hasta encontrar la solucin del
problema global.
La lgica define ciertas expresiones y conectivos como y o
si-entonces. La lgica maneja valores de verdad. Si una
afirmacin simple es conocida como verdadera o falsa,
entonces la lgica puede determinar si una afirmacin
compuesta, que involucre afirmaciones simples, es verdadera
o falsa.
El problema de la lgica consiste en establecer la verdad de
ciertas afirmaciones iniciales o de partida. Estas asignaciones
caen bajo la rbita humana y por lo tanto el sistema muchas
veces es peligroso.
Un grafo es una representacin pictrica que consiste en una
serie de crculos o nodos y una serie de lneas orientadas o
arcos que vinculan los nodos. Los arcos pueden estar
nombrados o etiquetados de modo de indicar como pasar de
un nodo a otro.
Un grafo puede usarse para representar gran variedad de
problemas, siempre y cuando el nmero de situaciones a
considerar sea finito.
Conclusin: Todo lo visto nos muestra que podemos
encontrar distintas representaciones y que obviamente hay
algunas mejores que otras, segn el tipo de problema.
En cualquier caso, el punto notorio e importante es la
identificacin de los objetos relevantes del problema, las
relaciones entre ellos, sus propiedades, etc, que constituirn
los datos del problema.

Estrategias para
problemas

hallar

soluciones

Encontrar una representacin adecuada para un problema


frecuentemente resulta una gran ayuda para hallar la
solucin.
Sin embargo esto no siempre alcanza. An despus de haber
encontrado una o varias representaciones para el problema
puede resultarnos difcil avanzar.
En ocasiones es difcil encontrar una buena representacin, o
al menos decidir si la que hemos hallado es la adecuada, sin
realizar algn trabajo previo.
Una estrategia es un modo general que puede aplicarse para
hallar la solucin de muchas clases de problemas. Una tctica
es un mtodo especial para hallar soluciones para problemas
de una clase restringida.
Inferencia
La mayora de los enunciados de problemas contienen o
implican determinados hechos y de esos hechos podemos
deducir o inferir otros hechos. El nmero de hechos que
podemos inferir es usualmente grande y el arte consiste en
seleccionar de los hechos que tenemos disponibles, aquellos
que son relevantes para la solucin.
Ejemplos:
1- En la primera versin de la solucin del problema de las
edades de Clariobaldo y Anabela, el no contar con una
representacin adecuada, nos oblig a realizar una serie
de inferencias. En cada caso fuimos deduciendo nuevos
hechos. Cuando encontramos una representacin
equivalente en notacin matemtica, no fue necesarios
utilizar inferencias.
2- Juan y Jos se encuentran frente al edificio en el que vive
Jos y conversan:
Jos: S, me cas y tengo tres hijos.
Juan: Qu bien! Qu edad tienen?
Jos: El producto de sus edades es 36
Juan: Hmm. Eso no me alcanza, dame otra pista.
Jos: La suma de sus edades es el nmero de mi edificio.
Juan: Ah, casi tengo la respuesta, pero an necesito otra
pista.
7

Jos: Muy bien. Ayer fue el cumpleaos de la mayor, que


es pelirroja.
Juan: Ya lo tengo.
En este caso es fcil identificar la incgnita, se desea
encontrar una terna de edades que satisfagan las
condiciones dadas.
El paso siguiente podra ser eliminar datos que resulten
irrelevantes. En este caso el hecho de que una de ellas
es pelirroja no parece relevante.
En general es natural ir rescatando la informacin en el
orden en que aparece en el enunciado.
Los primeros datos relevantes parecen ser que tiene
TRES hijos y que el producto de sus EDADES es 36.
As podemos formar todas las combinaciones de edades
cuyo producto es 36.
36 18 12 9
9
6
6
4
1
2
3
4
2
6
3
3
1
1
1
1
2
1
2
3
El siguiente dato es que el nmero del edificio en el que
se encuentran es igual a la suma de las edades de los
tres. Si sumamos las edades obtenemos:
36 18 12 9
9
6
6
4
1
2
3
4
2
6
3
3
1
1
1
1
2
1
2
3
38 21 16 14 13 13 11 10
En este punto podemos quedar desorientados y no saber
cmo seguir. Cul es el obstculo? Nosotros no
conocemos el nmero del edificio, pero Juan s. Qu
podemos inferir de este hecho? Si el nmero del edificio
fuera 38, 21, 16, 14, 11 o 10, Juan hubiera tenido la
respuesta, Sin embargo necesit una pista ms. Por qu?
Como la direccin era 13, haba dos combinaciones
posibles. En ambas, dos de las hijas eran mellizas, en el
primero las menores, en el segundo las mayores. La
ltima pista indicaba que una sola, la mayor haba
cumplido aos, Por lo tanto la nica configuracin vlida
era 9, 2, 2.

3- Muy populares resultan los criptogramas en las revistas


de juegos. He aqu uno:
D
+
G
R

E
O

R
B

A
E

L
R

D
T

Tpicamente estos criptogramas se realizan usando


inferencias y un poco de intuicin. Para hallar la solucin,
comenzaremos asumiendo que D=5, aunque debera verse
qu ocurre con otros valores.
Las inferencias no son difciles de hacer en este caso. En cada
momento analizamos la parte del problema que es ms
probable que nos de nueva informacin. Comenzamos
escribiendo la suma con los valores D=5 incorporados y
ponemos los dgitos de acarreo c1, c2, c3, c4 y c5 como
descosidos (como sumamos slo dos dgitos los acarreos
pueden ser 0 1) y numeramos las columnas para poder
describirlo:
1
2
3
4
5
6
c1 c2 c3 c4 c5c c6
5
O
N
A
L
D
+
G
E
R
A
L
D
R
O
B
E
R
T
Intentaremos ahora hallar la solucin del problema a partir de
hechos conocidos.
1- Vemos que la columna 6 es la que tiene ms informacin
como 5+5=10 podemos inferir T=0 y c5=1.
2- Ahora parece lgico atacar la columna 5 porque c5=1 y L
ocurre dos veces: 2L + 1 = R + 10 c4 R = 2(L - 5 c4) +
1 R debe ser impar
3- De la columna 1 surge que c1 + 5 + G = R R >= G +
5 o sea R = 5, 6, 7, 8, 9
4- De lo hasta ahora expuesto surge que R = 7, 9
5- En la columna 2 tenemos: c2 + O + E = o + 10 c1 E
= 10 c1 c2
Si c1 fuera 0 entonces E<= 0, E = 0 no puede ser pues T =
0; negativo tampoco pues son todos naturales, por lo tanto
c1 = 1.
9

Tenemos E = 10 c2 y, dado que todos tienen slo un


dgito, slo puede ser c2 = 1 y E = 9. Nuestro estado actual
es:
1
2
3
4
5
6
1
1
c3 c4 1
5
O
N
A
L
5
+
G
9
R
A
L
5
R
O
B
9
R
O
6- Como R>= G + 5
asegurar R = 7.
7- De la columna 1, 7
1
2
3
4
1
1
c3 c4
5
O
N
A
+
1
9
7
A
7
O
B
9

y tenamos R = 7 , 9, ahora podemos


=G+5+1G=1
5
6
1
L
5
L
7

5
0

8- De la columna 4 vemos que 2 A + c4 = 9 + 10 c3


2 A = 9 + 10 c3 c4, como el lado derecho debe ser par,
y 9 + 10 c3 es impar, slo puede ser c4 = 1 y tenemos A
= 9, si c3 = 1 o
A = 4 si c3 = 0 , pero como E = 9, se
afirma A = 4 y c3 = 0, quedando:
1
1
5

2
1
O

3
0
N

4
1
A

5
1
L

9- De la columna 5, 2L + 1 = 7 + 10 L = 8
10De la columna 3, N + 7 = B + 10 N = B + 3, los
dgitos que no usamos son 2, 3 y 6, luego N = 6 y B =
3.
11Finalmente O = 2. La situacin final es:
1
2
3
4
5
6
1
1
0
1
1
5
2
6
4
8
5
10

+
1

Esto nos provee un ejemplo de una cadena de inferencias que


culmina en la solucin del problema. Puede haber hechos
obvios para inferir o nosotros podemos hacer inferencias que
nonos acerquen a la meta. Sin asumir inicialmente que D = 5
veramos que la inferencia sola no alcanza y que debe ser
usado un mtodo de prueba y error.
Problemas Propuestos:
Encuentre una representacin adecuada y remarque qu
hechos pueden ser inferidos de los conocidos:
1- Andrs, Bernardo y Carlos planearon un pic-nic. Cada
chico gast $9 comprando sandwiches, chizitos y CocaCola. Para cada uno de estos tems, los chicos gastaron
tambin $9 aunque cada uno de ellos la gast de manera
distinta y ninguno pag la misma cantidad de dinero por
dos tems diferentes. El mayor gasto por una cosa fue el
que hizo Andrs al comprar chizitos; Bernardo gast en
sandwiches el doble de lo que gast en chizitos. Cunto
pag Carlos la Coca-Cola? Todas las cantidades estn
redondeadas en pesos.
2- Tres parejas vienen caminando desde tres direcciones
distintas y se encuentran en la esquina. Comienzan a
besarse y en determinado momento Juan suspende los
saludos y pregunta a cada uno de los dems cuntos
besos dio hasta el momento. Todos contestan un nmero
distinto. Cuntos besos dio Juan?

Razonamiento hacia atrs


Existen muchos problemas en donde la solucin consiste en
pasar de un Estado Inicial a un Estado Final, ste estado final
NO es la solucin, ya que viene dado, la solucin consiste en
hallar la secuencia de estados entre el estado inicial y final
11

siguiendo ciertas reglas. Para hallar esta secuencia de pasos


no es indispensable comenzar desde el principio.
Ejemplos:
1- Supongamos que deseamos saber cuntos partidos van
a jugarse en un torneo de tenis por eliminacin simple en
el que participan 1025 jugadores.
2- Encontrar 8 palabras intermedias entre la palabra PATO y
LEON. Cada transformacin consiste en cambiar una
letra de la palabra anterior, formando una nueva palabra
en castellano.
3- Supongamos que tenemos una masa de 18 kg. y
queremos obtener una porcin de exactamente 1 kg. No
tenemos balanza pero hemos sido dotados de cierta
habilidad mgica; podemos dividir una porcin de masa
en mitades y podemos hacer desaparecer 2 kg. de una
masa cuyo peso sea mltiplo de 13. Ninguna de estas
operaciones puede ser realizada ms de 10 veces y en
cada caso deben obtenerse cantidades enteras.
Soluciones:
1- Una posibilidad es comenzar analizando la primer rueda,
en la que se jugarn 512 partidos, luego la segunda y as
siguiendo. Una alternativa muco ms directa es
considerar que al final habr 1024 perdedores y un
ganador. Como el torneo es por eliminacin simple la
respuesta es trivial.
2- En este ejemplo deberamos partir de la palabra PATO e
intentar llegar a LEON segn las reglas.
Podremos proceder de una manera puramente
automtica buscando todas las palabras derivadas o
realizar una bsqueda ms inteligente. Por ejemplo si
observamos atentamente le problema vemos que en las
tres ltimas letras las consonantes pasaron a vocales y
viceversa.
En cada caso deberamos intentar que al menos una
letra pasara a ser la definitiva o al menos de la clase
definitiva (vocal o consonante).
Por otra parte, existen varias palabras en castellano
derivables de PATO. Si analizamos el problema es claro
que es equivalente pasar de LEON a PATO siguiendo las
mismas reglas, con la ventaja que el factor de
12

ensanchamiento de LEON, el nmero de palabras


derivadas, es mucho menor.
En este caso partiramos desde el estado final hacia el
inicial y la solucin sera vlida.
3. En el ltimo ejemplo el estado inicial es una masa de 48
Kg. y el estado final una masa de 1 Kg. Si comenzamos
desde el estado inicial slo hay una regla aplicable:
dividir la masa en dos y tener dos masas de 24. Si
repetimos el proceso con una de ellas 2 de 12 y as
siguiendo. A esta altura quizs convenga hallar una
representacin grfica que permita visualizar el estado
alcanzado
3
6
3
12
6
24
12
(*)
48
24
A esta altura el proceso no puede seguir y en caso de
quedar desorientados podemos intentar retroceder desde
el estado final.
Si queremos obtener una masa de 1 Kg. es equivalente a
obtener una de 2 Kg. con a lo sumo 9 divisiones mgicas.
Esto es equivalente a una de 4 con 8 divisiones y as
siguiendo. Grficamente:
1 2 4 8 16 32
Claramente no es posible seguir porque la masa slo pesa
48 Kg. (menor que 64)
Cmo avanzar? Podemos tomar cualquiera de estos
nmeros, por ejemplo 16 y analizar cmo podramos llegar
a l segn las reglas. Las combinaciones que nos haran
tener una masa de 16 Kg. son:
15
14 13 12 11 10 9
8
1
2
3
4
5
6
7
8
Claramente algunas de estas combinaciones pueden
descartarse pues si hubiramos llegado a ellas el problema
estara resuelto. Las nicas que podemos tener en cuenta
son:
13

13
11 10 9
3
5
6
7
De acuerdo a lo visto en (*) es fcil obtener una masa de 3,
6 o 9 Kg. Por lo tanto podemos intentar hallar una de 13, 10
o 7 lo que resulte ms fcil. Dejaremos el resto pendiente
como ejercicio.
A esta altura es claro que lo que queramos ilustrar, la
bsqueda de la solucin se hizo avanzando primero desde
el estado inicial y luego retrocediendo desde el estado final.
Ejercicios Propuestos:
1- Un comerciante de caballos desea venderlos en una
feria. Como admisin a la misma debe dejar 1 caballo. En
la feria vende la mitad de los que le quedan y cuando se
retira, debe dejar uno como impuesto. Va luego a una
segunda y una tercera feria, donde rigen condiciones
similares. Al regresar a su casa tiene un caballo,.
Cuntos caballos contaba antes de entrar a la primera
feria?
2- Intente recoger exactamente 6 litros de agua de un ro,
teniendo dos baldes con capacidades para mantener 9 y
4 litros.
Afinidades entre problemas
Comnmente una persona no se enfrenta a problemas
aislados, totalmente independientes entre s. Encontrar la
similitud de un problema con algn otro resulta por lo general
muy til.
Si encontramos un problema similar para el cual ya
conocemos la solucin, o podemos hallarla fcilmente,
podemos aplicar la solucin al problema original.
Siempre debemos tener en cuenta la situacin o contexto del
nuevo problema, con respecto al problema similar de solucin
conocida. Si las situaciones son similares, podemos tratar de
aplicar esta solucin al nuevo problema.
Un problema que se presenta al tratar de hallar la solucin de
un nuevo problema de acuerdo a problemas solucionados
anteriormente, es caer vctima de Einstellung. Mediante este
vocablo designamos al proceso por el cual siempre se trata de
aplicar el mismo proceso, llevado por la costumbre o la
inercia. Podemos caer en una situacin tal donde el mtodo
tradicional sirve, pero existe una solucin ms rpida o
14

eficiente.. Esta cadencia impide ver con ojos claros la nueva


situacin.
Problemas anlogos
Una analoga es una metfora en la cual se afirma que dos
cosas difieren en muchos aspectos fundamentales, pero
coinciden en su estructura, es decir, en las relaciones entre
sus partes o los propsitos esenciales para los que sirven.
Cuando se discute sobre una ciudad superpoblada,
comparndola con otra, no ofrecemos una analoga, sino una
comparacin. Pero si comparamos una ciudad poblada con
una colonia de hormigas, estamos poniendo en marcha una
analoga. Las dos ciudades no son analogas pero s lo son la
ciudad y la colonia.
Una analoga tiene adems una funcin descriptiva al permitir
dar un smil vivido y conocido para que un concepto,
demasiado abstracto o alejado de la experiencia ordinaria,
pueda ser claramente entendido.
Objetos semejantes concuerdan unos con otros en algunos
aspectos mientras que objetos anlogos concuerdan en
ciertas relaciones entre sus elementos respectivos.
Hay otro tipo de analoga, denominada isomorfismo. Si
existe una relacin entre los elementos de un sistema, la
misma
relacin
debe
existir
entre
los
elementos
correspondientes del otro sistema. Es decir, dos problemas
son isomorfos si los estados y acciones de uno pueden
ponerse en una correspondencia uno a uno con los estados y
acciones del otro. Uno a uno quiere decir que a cada estado o
accin de un problema le corresponde un estado o accin
nico en el otro.
Intentemos ahora encontrar problemas anlogos. Por ejemplo
buscar un nombre en una gua telefnica es anlogo a buscar
la definicin de una palabra en un diccionario. Como la
organizacin de los datos es la misma, una persona que es
capaz de hallar la solucin para uno de estos problemas,
puede enfrentar fcilmente el otro.
Si logramos descubrir que un problema es isomorfo a uno
cuya solucin conocemos, obviamente somos afortunados. La
solucin de uno puede conducirnos a la del otro. Si conocemos
la solucin de un problema equivalente o similar, podemos
adoptar la solucin y aplicarla al problema que tenemos entre
manos.
15

Particularizacin
Particularizar consiste en pasar de un conjunto de objetos
dado a un conjunto ms pequeo o incluso de un solo objeto,
contenido en el conjunto dado, por ejemplo: pasar de la
consideracin de una serie determinada de objetos a la de
una serie ms pequea contenida en la primera. Tambin se
llama especializacin.
Por ejemplo, especializamos cuando pasamos de la
consideracin de polgonos a la de polgonos regulares y
especializamos an ms cuando pasamos de polgonos
regulares con n lados a tringulos.
Estos dos pasos subsecuentes fueron efectuados de dos
maneras tpicamente diferentes. En el primero de polgonos a
polgono regular introducimos una restriccin, esto es, que
todos los lados y los ngulos del polgono sean iguales. En el
segundo paso sustituimos un objeto variable por uno
determinado: pusimos 3 en lugar de n.
Generalizacin
La generalizacin consiste en pasar del examen de un objeto
al examen de un conjunto de objetos, entre los cuales figura
el primer, o pasar de un conjunto limitado de objetos a un
conjunto ms extenso que incluya al conjunto limitado.
Ejemplo: dada la suma 1 + 8 + 27 + 64 = 100, podemos
observar que puede expresarse bajo la forma curiosa: 1 3 + 23
+ 33 + 43 = 102. Es natural entonces plantearse la pregunta:
sucede con frecuencia que la suma de cubos sucesivos tales
como 13 + 23 + 33 + ... + n3 es un cuadrado? Haciendo tal
pregunta estamos intentando hacer una generalizacin.
Muchos resultados se han obtenido en Matemticas, Fsica y
Ciencias Naturales, gracias a generalizaciones de este tipo.
Debemos tener sumo cuidado cuando tratamos de realizar
generalizaciones, es decir, cuando tratamos de extender el
comportamiento de un objeto a la clase de objetos a la cual
pertenece. Es necesario observar que las mismas propiedades
se siguen cumpliendo y es conveniente una prueba formal del
resultado obtenido.
Ejemplos:
1Una serie de ejemplos tpicos de generalizacin surge al
buscar frmulas matemticas. Mediante una frmula se
16

trata de estandarizar el comportamiento de una situacin,


tal que, al enfrentarnos a un caso particular de dicha
situacin, sepamos cmo hallar la situacin.
Los problemas de particularizacin y generalizacin muchas
veces pueden verse como dos caras de la misma moneda (he
aqu una analoga). De varios casos particulares tratamos de
deducir un comportamiento general que lo representamos
mediante una frmula. Cuando estamos en presencia de un
caso concreto, aplicamos la frmula y tenemos resuelto el
problema.
En el caso de la sumatoria anterior vemos que, probado el
resultado general:
13 + 23 + 33 + ... + n3 = (1 + 2 + 3 + ... + n)2
Podemos aplicarlo a:
13 + 23 + 33 + 43 + 53 = 152
2- Tambin hemos usado este mtodo de generalizacin y
particularizacin en la escuela primaria. Los problemas
tpicos, en aquel entonces, eran del tipo: Don Jorge tiene
un campo de forma trapezoidal y desea rodearlo con doble
vuelta de alambre, las medidas del campo son ... Cuntos
metros de alambre necesita?
El problema de usar frmulas es reconocer su utilidad en el
momento adecuado. En el caso anterior, usar la frmula
para calcular el permetro de un trapecio y luego
multiplicarlo por dos, parece una idea obvia, aunque en
realidad, deberamos preguntarnos si la idea es realmente
obvia o estamos muy acostumbrados a este tipo de
problemas y por lo tanto la solucin surge por asociacin a
problemas ya resueltos.
3- Dos personas deben poner alternativamente fichas iguales
en un plato playo. Las fichas se pueden poner en cualquier
lugar, pero no encima de la ficha de la otra persona ni
asomando al borde. La ltima persona que pueda poner
una ficha en el plato gan. Si cada jugador juega de la
mejor manera posible en su favor, siempre gana puede
deducir cul de los dos? La solucin de un problema puede
hallarse mirando un caso especial y generalizando distintos
casos. Supongamos un plato pequeo comparado con las
fichas, de modo que quepa slo uno. En este caso gana el
17

primero. Supongamos ahora que puedan acomodarse dos


fichas en el plato. Las posibles jugadas sern:

J
1

J
2

J
1

La primera jugada no ser hecha por el jugador 1 pues


dijimos que cada uno juega de la mejor manera posible en
su favor, por lo tanto, 1 pondr su ficha tal como se
muestra en la segunda jugada. El primer jugador vuelve a
ganar.
Supongamos ahora que el primero siempre pone la ficha al
medio. Sin importar el tamao del plato, el oponente la
podr poner en cualquier lado. Pero si hay lugar para el
oponente tambin lo habr para el primer jugador en el
lugar diametralmente opuesto. Luego, con la estrategia de
iniciar la primer ficha en el centro, siempre se gana.
Hasta el momento nos hemos ocupado de hallar soluciones
para un conjunto de problemas ms o menos complejos.
Hemos planteado problemas diversos en los cuales hallar una
solucin consista en encontrar un valor, una palabra, una
secuencia de estados intermedios entre dos estados
conocidos, etc.
Sin embargo, para nuestros fines no nos interesa hallar una
solucin de un problema especfico, sino resolver un
problema.
Recordemos que definimos problema como una discrepancia
entre un estado actual y un estado deseado.
Resolver un problema consiste entonces en encontrar una
secuencia de pasos que nos permitan pasar de un estado a
otro.
Observemos que la resolucin de un problema no afecta ya a
un problema particular sino ms bien a una clase de
problemas. Cuando hablamos de resolucin de problemas
estamos refirindonos en realidad a un conjunto de
problemas.
Por ejemplo, hemos hallado la solucin de un criptograma o la
secuencia de palabras que permitan pasar de PATO a LEON.
Lo que intentaremos hacer ahora ser definir la secuencia de
pasos que permiten hallar soluciones para criptogramas o
18

para problemas en los que se quiera pasar de una palabra de


cuatro letras a otra.
Por qu nos hemos ocupado de hallar soluciones para
algunos problemas, cuando en realidad nos interesa la
resolucin de problemas?
Muchas de las pautas y estrategias que hemos visto deban
cubrirse para hallar una solucin, siguen siendo vlidas para
resolver el problema.
Ahora ms que nunca es fundamental encontrar una buena
representacin para el problema. Esta representacin
constituir un modelo del problema que deseamos resolver.
Ms an, hallar una solucin para un problema especfico
puede brindarnos pautas para resolver la clase de problemas
a la cual pertenece el problema particular.
Por supuesto, si somos capaces de resolver una clase de
problemas, estaremos en condiciones de hallar una solucin
para una instancia especfica, de acuerdo a esta resolucin.
ABSTRACCIONES Y MODELOS
El corazn de la tarea de resolver problemas reside en ser
capaces de manejar la complejidad inherente a ellos.
Para disminuir la complejidad de los problemas se utiliza una
tcnica muy poderosa: la abstraccin.
El proceso de abstraccin permite la construccin de modelos.
Un modelo describe las propiedades fundamentales de un
sistema, descartando los detalles irrelevantes.
Las leyes del movimiento de Newton son un modelo de la
realidad fsica. Este modelo abstrae la enorme complejidad del
movimiento de las partculas de los objetos y describe las
propiedades gruesas del comportamiento integrado.
Es necesario no ahondar demasiado en el proceso de
abstraccin a riesgo de caer en un modelo mentiroso, es
decir, en nuestro afn por comprender fcilmente la realidad,
tratamos de simplificarla a tal extremo que desechamos
propiedades fundamentales. Por ejemplo, cuando se estudia la
estructura de un tomo, se cae siempre en un grfico que
sita al ncleo en el centro rodeado por electrones que giran
en perfectas rbitas. Hoy sabemos que este modelo es
completamente irreal, pues los electrones intercambian
constantemente energa saltando de rbita en rbita.
Claramente el nivel de detalle requerido en un modelo
depende de lo que pensemos hacer con l. Un modelo
19

adecuado para tener un primer contacto con un cierto rea


de conocimiento, puede ser totalmente inadecuado o
insuficiente si vamos a intentar resolver problemas dentro de
esa rea. Es ms, cierto modelo de la realidad puede ser
adecuado para resolver algunos problemas y no para otros.
En cualquier caso es importante preservar siempre la calidad
del modelo, es decir, respetar la realidad que se trata de
representar. As podemos hacer una serie de suposiciones
iniciales y limitar nuestro modelo. Luego se podr trabajar
sobre el modelo y ver si la realidad se adapta al
comportamiento previsto. Si as fuera, hemos hallado un
buen modelo que podr servir de base para realizar estudios
ms profundos.
ALGORITMOS
Un algoritmo es un modelo de la resolucin de un problema, o
mejor an, de una clase de problemas.
Informalmente un algoritmo es un mtodo para resolver un
problema, o un conjunto de direcciones o una frmula que
indicar exactamente cmo se obtendrn los resultados
deseados. De acuerdo a esta definicin, todos trabajamos
continuamente con algoritmos, slo que no somos tan
formales como para llamarlos as.
Describamos un algoritmo que llamaremos shampoo:
1- Mojar el cabello
2- Aplicar shampoo
3- Masajear
4- Enjuagar
5- Repetir
Existen dos puntos de vista desde los cuales debe ser
considerado un algoritmo.
Por un lado est la especificacin del algoritmo. La
especificacin comprende precisamente al conjunto de
acciones que permite resolver una clase de problemas.
Desde este punto de vista un algoritmo puede pensarse como
una entidad esttica.
Por otro lado debemos considerar la ejecucin del algoritmo.
Cuando alguien lleva a cabo las directivas indicadas por el
algoritmo, hablamos de ejecucin. Durante la ejecucin
estamos hallando la solucin de un problema especfico o de
20

una instancia de la clase de problemas. La ejecucin es un


proceso dinmico.
En adelante hablaremos simplemente de algoritmos, cuando
hagamos referencia a la especificacin, y de ejecucin de
algoritmos.
Formalmente, definiremos entonces el concepto de algoritmo
como una secuencia de pasos u operaciones, que cuando se
ejecuta, producir resultados y terminar luego de una
cantidad finita de tiempo.
Por secuencia de operaciones entendemos que para cada
paso del algoritmo, el siguiente est definido sin ambigedad.
Esto es, luego de completar un paso debemos saber siempre
cul ser ejecutado a continuacin.
El orden de ejecucin puede indicarse en la especificacin,
numerando los pasos con enteros positivos. Alternativamente
el orden puede asumirse por la posicin de las operaciones.
Sin embargo, en muchas ocasiones podemos desear
interrumpir esta secuencia. En nuestro ejemplo el paso 5
presenta ambigedades, al no indicar qu pasos deben ser
repetidos. Sin embargo, para cualquier persona es obvio que
no debe volver a mojar el cabello y no tendra sentido
enjuagar nuevamente si no colocamos shampoo otra vez.
Inherente al concepto de secuencia de operaciones, subyace
la idea de principio y fin. Todo algoritmo debe tener un punto
inicial y por lo menos uno final. El punto inicial puede estar
explicitado o no, pero ara no ofrecer ambigedades debe ser
nico. La terminacin del algoritmo, en cambio, puede
identificarse a travs de varios pasos. La razn para esto es
que frecuentemente un problema se divide en dos o ms
secciones, y la terminacin del proceso completo depende de
un valor particular dentro de cada una de ellas. Por ejemplo:
1- Principio
2- Decisin que divide el
problema en tres casos
Caso 1

Caso 2

Caso 3

3-........
6-........... 9-..........
4-.......... 7-........... 10-..........
21

5- FIN

8- FIN

11- FIN

El grfico muestra claramente un punto inicial y tres


terminadores. Las secuencias posibles sern: (1,2,3,4,5) o
(1,2,6,7,8) o (1,2,9,10,11)
La existencia de uno o ms terminadores no garantiza que la
ejecucin finalice. Por ejemplo:
6- Vaya al paso 8
7-Fin
8-Vaya al paso 6
El efecto de esta secuencia obviamente no es vlido. Para
garantizar la terminacin del proceso debemos controlar que
el paso de terminacin sea recorrido durante la ejecucin del
algoritmo. Esto no significa que la terminacin sea eficiente,
ni que se ejecute en el momento adecuado.
Una cuestin bsica sobre el algoritmo es el tipo de
operaciones que sern ejecutadas en cada paso. Esto es, qu
bloques se emplearn en la composicin del algoritmo. Estos
bloques son llamados primitivos y deben ser claramente
entendibles para la persona o mquina que los ejecutar, y
depende por lo tanto de su nivel de conocimiento. Por
ejemplo, la siguiente receta es un mtodo posible para
preparar una tarta de manzanas:
1- Preparar la masa
2- Preparar el dulce de manzanas
3- Rellenar la masa con el dulce
4- Colocar la tarta en horno moderado por 30 minutos
Para una persona familiarizada con la cocina esta receta
puede ser aceptable. Sin embargo los pasos 1 y 2 presentarn
ambigedades para alguien sin experiencia y debern ser
desarrollados con ms detalle.
Para que un algoritmo pueda ser interpretado y ejecutado
debe estar expresado entonces en trminos de acciones
comprensibles. La clave est entonces en definir el conjunto
de acciones en trminos de las cuales va a poder ser
expresado el algoritmo.
Uno de los puntos fundamentales para decidir si un algoritmo
es vlido, es entonces el hecho de que las acciones que lo
componen sean primitivas.
Ahora bien, cundo un algoritmo puede ser interpretado y
ejecutado por una computadora?
22

RESOLUCIN DE PROBLEMAS POR COMPUTADORA


Hemos dicho que estamos en presencia de un problema
cuando existe una discrepancia entre la situacin actual y la
situacin deseada.
La resolucin de un problema consiste en hallar un algoritmo
o un mtodo que nos permita pasar de la situacin actual a la
deseada. Este mtodo permite en realidad resolver una
clase de problemas, ms que un problema particular.
Existen clases de problemas para los cuales es muy difcil
hallar un mtodo de resolucin. Tomemos por ejemplo, un
detective cuyo problema es hallar al asesino de un crimen. El
detective por supuesto se basar en sus experiencias
anteriores y seguramente considerar algunos casos similares
ya resueltos. Es ms, es posible que los primeros pasos sean
siempre los mismos: averiguar cmo, cundo y dnde se
produjo el crimen, quines fueron los ltimos que vieron a la
vctima con vida, etc. De acuerdo a las respuestas el caso
tomar rumbos diferentes.
A lo que estamos apuntando es que resulta muy difcil
encontrar un algoritmo para resolver crmenes. En el mejor
de los casos el detective podr hallar la solucin para cada
caso particular.
Existen otras clases de problemas en cambio, tales que una
vez hallada una solucin para una instancia especfica, es fcil
inferir un mtodo de resolucin para toda la clase de
problemas.
Por ejemplo, supongamos que nos enfrentamos al problema
de buscar en una gua telefnica el nmero de telfono de
Prez Juan.
Para realizar esta tarea tenemos que partir de dos supuestos:
sabemos leer y contamos con una gua. Con estos dos hechos
podemos hallar la solucin para nuestro problema de una
forma muy rudimentaria y tediosa. Podemos comparar el
primer nombre con Prez Juan, si coinciden (saber leer implica
poder decidir si dos nombres son iguales) hemos hallado la
solucin. Si no, consideramos el segundo nombre y as
siguiendo hasta encontrar a Prez Juan o hasta que se agote
la gua) la persona no figura).
Este mtodo es muy ineficiente porque partimos de premisas
muy simples. Si disponemos de ms informacin el problema
se simplifica.
23

Si sabemos que la gua est ordenada alfabticamente y


conocemos el alfabeto nuestro algoritmo podra ser descartar
por mitades. Es decir, abrir la gua por la mitad
(aproximadamente) y comparar Prez Juan con un nombre
cualquiera. Pueden darse tres circunstancias:
1- El nombre es igual a Prez Juan: XITO
2- El nombre es menor a Prez Juan: DESCARTO LA
SEGUNDA MITAD DE LA GUA
3- El nombre es mayor a Prez Juan: DESCRATO LA
PRIMERA MITAD DE LA GUA
El proceso se repite nuevamente hasta hallara a Prez Juan o
agotar la gua.
En lugar de dividir por mitades podramos abrir la gua
considerando la posicin de P en el alfabeto y luego buscar
secuencialmente primero por hojas y luego, una vez que
hemos localizado la pgina, avanzar por nombre.
Cada mtodo ha sido una mejora respecto al anterior, pero
requiere ms informacin, supone que sabemos hacer ms
cosas, es decir es mayor el conjunto de acciones primitivas.
Ahora bien, es claro que cualquiera de los algoritmos sirven
no slo para intentar localizar a Prez Juan en la gua, sino a
cualquier persona. No slo podemos hallar la solucin de un
problema, sino resolver toda una clase de problemas. Es ms,
el mismo mtodo podra ser utilizado para hallar por ejemplo
definiciones en el diccionario.
El esfuerzo empleado en encontrar un algoritmo se ve
compensado por el hecho de que va a ser utilizado muchas
veces.
Para que una computadora pueda ser utilizada para hallar la
solucin de un problema, es necesario que sepa resolver el
problema. Es decir, es necesario que conozca un mtodo
para resolver dicho problema.
La tarea de programar implica precisamente la obtencin de
un modelo computacional para la resolucin del problema.
Esto es, lograr un conjunto de instrucciones comprensibles
para la computadora que permitan alcanzar la solucin
deseada para un conjunto de problemas.
De todo lo dicho, se deducen varios puntos:
Primero, no tiene sentido escribir programas puntuales que
permitan hallar soluciones para problemas especficos como
24

por ejemplo buscar el nmero de telfono de Prez Juan o


resolver la ecuacin x2 + 3x 1.
Estaramos buscando un mtodo para resolver una clase de
problemas con una nica instancia. Recordemos que un
algoritmo es un ente esttico que describe una serie de pasos
a realizar para resolver una clase de problemas. Cuando el
algoritmo se ejecuta se resuelve una instancia particular de
dicha clase.
En segundo lugar, para que un algoritmo para resolver un
problema, pueda ser transformado en un programa, es
necesario que seamos capaces de definirlo en trminos de
operaciones que la computadora sabe hacer.
Existe una diferencia fundamental entre problemas cotidianos
y aquellos que pueden ser resueltos de manera tal de poder
ser interpretados y ejecutados por una computadora.
Un algoritmo es una secuencia de pasos llevada a cabo sobre
ciertos datos y que luego de un nmero finito de pasos
produce un resultado. En los algoritmos vistos para lavar el
cabello o preparar una tarta era un poco difcil distinguir
datos y acciones.
En estos ejemplos no podemos hablar de datos, sino
nicamente de estado inicial y estado final. Para el primer
ejemplo el estado inicial era cabello sucio y e estado final
cabello limpio. Sin embargo esta especificacin es un poco
ambigua y por lo tanto la ejecucin del algoritmo provoca
variaciones en el estado final, dependientes del estado inicial
y de la interpretacin de las acciones.
Cuando pensamos en llevar un algoritmo a la computadora,
estas ambigedades no son admisibles. Los datos de entrada
y de salida, as como las acciones, deben estar perfectamente
definidos.
EL punto es que los datos de entrada (salida) pueden
considerarse la descripcin del estado inicial (final) de un
problema. Sin embargo, en algunos problemas, es difcil
identificar el estado inicial (final) con un conjunto de datos de
entrada (salida).
Un dato representar a un conjunto de valores. En la
ejecucin del algoritmo cada dato de entrada tomar un valor
dentro del conjunto. Cada instancia diferir de la otra en
funcin de los valores que tomen los datos.

25

Resolver un problema, o mejor dicho una clase de problemas,


consiste precisamente en encontrar un mtodo que permita
hallar la solucin de cualquier problema de la clase.
En ocasiones el mismo planteo del problema incluye la
descripcin del mtodo para resolverlo. En otros casos el
resultado no indica cmo resolver el problema, pero uno
conoce mtodos, o puede estudiar mtodos conocidos, para
resolverlo. Con frecuencia sin embargo, el problema no
especifica el mtodo, el diseo del algoritmo es entonces
nuestra responsabilidad.
Cuando el algoritmo puede ser transformado en una
secuencia de instrucciones ejecutables por una computadora,
se transforma en un programa.
En definitiva, si intentamos obtener un algoritmo como una
secuencia de acciones primitivas, y nos interesa transformar
el algoritmo en un programa, el conjunto de acciones
primitivas lo define la computadora.
LENGUAJES DE DISEO DE ALGORTIMOS
Un programa es un modelo de la resolucin de un problema,
escrito en un lenguaje de programacin.
La dificultad de escribir un programa es entonces, no slo
obtener un modelo del problema (o de su resolucin) sino
adems expresar este modelo en un lenguaje de
programacin.
Existe una grana distancia entre lo que podramos llamar el
lenguaje del problema y el lenguaje de programacin.
Cuando intentamos resolver un problema, el lenguaje en el
que quedar expresado el algoritmo, debera ser una ayuda,
no una limitacin.
Al pasar del algoritmo al programa escrito en un lenguaje de
programacin, la traduccin puede no ser del todo directa y
en el camino puede perderse parte de la expresividad del
modelo original.
Esto es as porque las facilidades provistas por un lenguaje
suelen ser muy pocas y muy generales. Para representar un
problema en particular es necesario combinar estas
facilidades.
Es decir, cuando pasamos a la implementacin, aunque
intentemos mantener la representacin obtenida durante el
diseo, estaremos limitados a las herramientas provistas por
el lenguaje.
26

El objetivo fundamental de un lenguaje de diseo es que sea


comprensible para las personas que van a interpretar
algoritmos escritos en l. El fin ltimo de un lenguaje de
programacin en cambio, es ser comprensible por la
computadora que va a interpretar y ejecutar el programa.
Por ejemplo, si intentamos describir un hospital, los OBJETOS
intervinientes
sern
Pacientes,
Mdicos,
Enfermeras,
Habitaciones,
Salas de Terapia Intensiva, Intervenciones
Quirrgicas, etc. Las ACTIVIDADES llevadas a cabo pueden
ser: un Paciente ingresa o libera una Habitacin, un Mdico
realiza una Intervencin Quirrgica sobre un Paciente, etc.
Las herramientas para almacenar datos provistas por un
lenguaje de programacin sern variables atmicas, arreglos,
archivos. Muchos lenguajes brindan algunas posibilidades
ms, pero siempre muy lejanas a un problema particular. Las
operaciones sern probablemente asignacin, comparacin,
subindicacin de arreglos, lectura y escritura sobre archivos y
algunas ms, siempre muy generales.
La traduccin de un algoritmo expresado en trminos de los
objetos del mundo real implicar una simulacin utilizando las
herramientas del lenguaje.
El lenguaje de diseo debera ser una herramienta personal, o
a lo sumo grupal, que sirviera de apoyo durante el diseo del
algoritmo. La idea es por un lado no sumar a la complejidad
del problema, las limitaciones impuestas por una notacin
estricta. Adems en muchas aplicaciones es importante
conseguir un algoritmo independiente del lenguaje de
programacin o lenguaje de implementacin.
Cada programador, de acuerdo a su experiencia y habilidad,
encontrar ms expresiva una notacin u otra. Imponer una
notacin especfica implica en parte contradecir los objetivos
iniciales que justificaron el uso de un lenguaje de diseo.
Sin embargo, con fines didcticos, necesitamos establecer
algunas pautas que nos permitan comunicarnos. Esto
probablemente significar perder parte de la flexibilidad que
debera tener un lenguaje de diseo.
Para ejemplos sencillos, el pasaje a Pascal ser ms o menos
directo. Sin embargo, trataremos de crear el hbito de disear
algoritmos en un lenguaje libre antes de llevarlos a un
lenguaje de programacin.

27

Si el lenguaje de programacin elegido para el curso no


hubiera sido Pascal, la ventaja hubiera sido mucho ms
marcada desde el principio.
La adquisicin de buenos hbitos de diseo permitir que en
el futuro puedan escribirse programas claros y legibles, an
utilizando lenguajes que provean pocas facilidades.
Facilidades provistas por un Lenguaje de Diseo
Los objetivos de un lenguaje de diseo son:
1- Servir de apoyo durante la resolucin del problema.
2- Servir como etapa previa antes de la implementacin. El
proceso de traduccin del lenguaje de diseo a
cualquier lenguaje de programacin, no debera ser ms
complicado que la resolucin del problema mismo.
3- Un proyecto en los que intervienen varias personas, el
lenguaje de diseo permite que cada una de ellas pueda
tener una visin global del trabajo de los dems, difcil
de conseguir analizando directamente los programas del
resto del grupo.
Nuestra intencin ser entonces proponer un lenguaje de
diseo de algoritmos que sirva de apoyo para la resolucin de
problemas y pueda ser traducido a un programa en forma ms
o menos sistemtica.
Uno de los puntos fundamentales que habra que definir para
decidir si un algoritmo es vlido o no, es el conjunto de
acciones primitivas. Un lenguaje de diseo propone
precisamente un conjunto de primitivas.
Ejemplo 1: Algoritmo para calcular al MCD.
Un algoritmo especifica un conjunto de acciones que van a ser
llevadas a cabo sobre ciertos datos.
Supongamos que deseamos calcular el mximo comn divisor
de dos nmeros M y N. Recordemos la definicin de MCD.
Definicin: Dados dos nmeros N y M, enteros, positivos y
mayores que cero, el MCD de M y N se define como el nmero
d tal que:
d divide a N, d divide a M y no existe un nmero d tal que d
divida a M y d sea menor que d.
El MCD de dos nmeros M y N es igual al MCD de N y el resto
de dividir M por N. As, si el resto de dividir M por N es 0, el
MCD es N pues N divide a M, obviamente N divide a N y no
28

existe un nmero mayor que N que divida a N. Si no es, basta


repetir el proceso con N y R. Eventualmente si N y M son
relativamente primos, R tomar el valor 1 y en el ltimo paso
N ser 1 y el resto 0.
De esta descripcin verbal del mtodo, es sencillo pasar a un
algoritmo.
1- Calcular R, el resto de dividir M por N.
2- Si R es cero imprimir el resultado, N, y el algoritmo
termina.
3- Reemplazar M por N, N por R.
4- Volver a 1.
Este algoritmo tiene las siguientes caractersticas:
1- Est
compuesto
por
pasos.
Cada
paso
est
perfectamente definido.
2- La secuencia de control est tambin bien definida.
Nunca se presentan ambigedades acerca de cual ser
el prximo paso a ejecutar, y esto no depende de los
valores de los datos. En particular hay un nico paso
inicial y un paso final, cuando se ejecuta el paso final
obtenemos el resultado requerido.
3- El paso final se alcanza luego de un nmero finito de
pasos.
4- El algoritmo est definido para un rango de valores, no
para un valor simple, por lo tanto produce distintos
resultados.
5- El rango de los valores de entrada est bien especificado.
6- Cada accin permite manipular datos o indicar qu
accin debe llevarse a cabo a continuacin.
La primera accin es una manipulacin pura de datos: se
calcula un valor en funcin de otros.
La segunda accin consulta el valor de un dato para decidir
qu curso de accin seguir. Se trata entonces de una
sentencia de control ya que los datos son manipulados
exclusivamente para decidir qu hacer. Note que en el caso
de que la condicin se satisfaga se ejecuta una tercera accin:
TERMINAR. sta tambin es una sentencia de control que en
este caso no manipula datos.
La siguiente accin, la tercera si la condicin no se satisface,
es nuevamente una manipulacin pura de datos.
29

La ltima instruccin es nuevamente una sentencia de


control, que en este caso no depende de una condicin.
Notemos que hay una sentencia de control implcita: la
secuencia.
Cuando no se indica qu instruccin es la prxima, asumimos
que el control es secuencial. Cuando especificamos una
prxima sentencia, alguna que interrumpe la secuencia
hablamos de trasferencia de control.
Este tipo de transferencia de control es explcita y no
estructurada.
Es claro que no estamos suponiendo que los pasos del
algoritmo son simples o constituidos por una sola accin. La
primera accin, por ejemplo, puede requerir la ejecucin de
varios pasos.
Ejemplo 2: Dibujar figuras en pantalla.
Supongamos disponer de una pantalla de 24 filas por 80
columnas y el siguiente conjunto de primitivas para dibujar:
Lnea Horizontal n, m, 1: Dibuja una lnea horizontal
desde la posicin (n, m) hasta (n, 1 + m)
Lnea Vertical n, m, 1: Dibuja una lnea vertical desde la
posicin (n, m) hasta (n + m, 1)
Podemos escribir un algoritmo para dibujar una SILLA en la
pantalla como sigue:
Algoritmo SILLA
Lnea Vertical 2, 1, 5
Lnea Horizontal
4, 2, 5
Lnea Vertical 4, 7, 2
Que genera la siguiente figura:

Con las mismas primitivas podramos haber dibujado mesas,


sillones, etc.
Ahora bien, supongamos que deseamos dibujar una SALA.
Como ya sabemos dibujar sillas, mesas y sillones, las acciones
30

primitivas para dibujar una sala podran ser SILLA, MESA y


SILLON.
Algoritmo SALA:
SILLA
MESA
SILLON
El algoritmo SALA no est definido en trminos de las
acciones originales, pero s en trminos de acciones para las
cuales existe un algoritmo expresado en trminos de ellas.
Las acciones primitivas son entonces, no slo las acciones
provistas originalmente, sino todas aquellas para las cuales
existe un algoritmo escrito en trminos de acciones
primitivas.
Ejemplo 3: Retirar un libro de Biblioteca
Supongamos que deseamos obtener un algoritmo que simule
el trmite de retirar un libro de una Biblioteca. Este tipo de
tareas sigue una rutina fcilmente automatizable.
La resolucin del problema no es en este caso muy compleja,
ya que lo que se intenta es simular una actividad bien
definida.
El primer paso es entonces obtener del experto bibliotecario
una descripcin detallada de su rutina. Por ejemplo:
Si el interesado NO es socio
Entonces
Prestar el libro para consulta
Sino
Si tiene ms de dos libros retirados a su nombre
o tiene algn libro vencido
Entonces
Prestar el libro para consulta
Sino
Prestar el libro para retirar
Un algoritmo equivalente sera:
Si el interesado NO es socio o
el interesado es socio y tiene ms de dos libros retirados a su
nombre o
el interesado es socio y tiene algn libro vencido
Entonces
31

Prestar el libro para consulta


Sino
Prestar el libro para retirar
La notacin, comprensible para cualquier persona, es por otra
parte muy lejana a un lenguaje de programacin. Las acciones
primitivas, aunque ms simples que el problema original, son
todava dependientes del rea de aplicacin. Es decir, un
lenguaje de programacin no provee herramientas para
manejar entidades tales como libros o socios.
En problemas de este tipo, la clave est en identificar los
objetos sobresalientes del problema, libros, ficheros de
tarjetas con referencias a libros, socios, listados de socios, etc.
y encontrar representaciones ms abstractas para estos
objetos.
An cuando logremos representaciones ms abstractas, va a
ser difcil definir acciones primitivas para manipular estos
objetos abstractos, en forma independiente del lenguaje de
programacin al que va a ser traducido el algoritmo.
Los lenguajes de programacin varan mucho respecto a las
facilidades que proveen para representar objetos.
PROPUESTA PARA LENGUAJE DE DISEO
Todo algoritmo estar constituido por:
1- Descripcin de los Datos
2- Descripcin de las Acciones
En la descripcin de los Datos se nombrarn:
1- Datos de Entrada
2- Datos de Salida o Resultados
Cuando resulte conveniente pueden nombrarse tambin los
Datos Auxiliares, que aunque no son los requeridos por el
problema, sirven como etapa intermedia entre los Datos de
Entrada y los Resultados.
La Descripcin de las Acciones incluir acciones de dos
tipos:
1- Manipulacin de Datos
2- Estructuras de Control

32

Propondremos una notacin rgida para estructurar el control


y una mucho ms flexible para manipular datos.
ESTRUCTURAS DE CONTROL
Las acciones que estructuran el control permiten indicar el
orden en que las acciones van a ser llevadas a cabo.
En el ejemplo del Mximo Comn Divisor en el paso nmero 2
se evaluaba una condicin, el curso de accin en lo sucesivo
dependa de si esta condicin se verificaba o no.
En nuestro lenguaje admitiremos las siguientes estructuras de
control:
1- Secuencia
2- Condicional
3- Repeticin
Cuando no se indique lo contrario, el control seguir la
secuencia implcita del algoritmo.
El condicional permitir que una accin se ejecute slo si
cierta condicin se cumple. Por ejemplo:
Si n > 0
Entonces
Decrementar n en 1
El condicional puede ser generalizado:
Si
n > 0 entonces
Decrementar n
n = 0 entonces
El resultado es 0
n < 0 entonces
Error
La repeticin permite que un conjunto de acciones se
ejecute ms de una vez. El nmero de veces puede ser fijo o
depender de una condicin.
Veamos ejemplos de ambos casos:
Repetir n veces
Decrementar m en 1
Repetir hasta n > m
Multiplicar n por s mismo y asociar el nuevo valor a n
33

La condicin del condicional y de la repeticin es una accin


que suponemos primitiva. Por lo tanto, no impondremos una
notacin restringida sobre ellas. En nuestro lenguaje sern
vlidas condiciones tales como:
Si la persona existe
Entonces
.................
Repetir hasta encontrar el valor buscado
.................
Si la matriz es cuadrada
Entonces
..................
La definicin de un lenguaje implica definir el conjunto de
acciones primitivas provistas. Estas acciones incluyen no slo
a aquellas que permiten evaluar datos, sino tambin a las que
permiten definir condiciones.
Tanto el condicional como la repeticin implican una
transferencia implcita del control. No indicamos el nmero
de la prxima instruccin a ejecutar, sin embargo es claro que
la ejecucin ya no es secuencial. En su lugar estructuramos
las instrucciones en bloques. Estos bloques son ejecutados, no
ejecutados o ejecutados repetidamente, en funcin de que
ciertas condiciones sean satisfechas o no.
La apariencia de nuestros algoritmos estar dada por un
conjunto de bloques de instrucciones, secuenciales o
anidados. Por ejemplo:

34

La identificacin de estos bloques ser sencilla y por lo tanto


nuestros algoritmos sern fciles de comprender y corregir.
Notemos que lo que habamos llamado transferencia de
control explcita y no estructurada, no ser una estructura de
control vlida en nuestro lenguaje. Esto se debe a que,
aunque para ejemplos sencillos no resulte obvio, este tipo de
accin oscurece mucho la lgica del algoritmo. Los bloques no
respetan necesariamente esta estructura secuencial o
anidada, sino que aparecen entremezclados. Es muy difcil
definir con precisin bajo qu condiciones se ejecuta o no una
instruccin, porque cada parte del programa puede ser
alcanzada bajo circunstancias difciles de precisar. Lo que es
peor, cuando se detecta un error o se desea modificar un
algoritmo, las correcciones suelen oscurecerlo an ms.
Los algoritmos escritos utilizando nicamente las tres
estructuras de control propuestas, son mucho ms fciles de
entender y corregir.
MANIPULACIN DE DATOS
Para las acciones que manipules datos no exigiremos una
notacin estricta, siempre y cuando sean puras, es decir no
intenten modificar el control.
Para evaluar expresiones aritmticas usaremos una notacin
cercana a la notacin aritmtica:
a * a + (b c) / 4
Una accin muy comn es asignar un valor a un dato. Para
esta accin utilizaremos una notacin uniforme. Por ejemplo:
x a * a + (b c) / 4
z Formula I
y Raz cuadrada de x
Estamos asumiendo que Formula I, Raz cuadrada de x son
acciones primitivas.
Es claro que la flexibilidad de nuestro algoritmo hace que
existan muchas maneras de expresar una misma accin. Por
ejemplo hemos hablado de:
Multiplicar n por s mismo y asociar el nuevo valor a n.
35

En nuestra propuesta esta misma accin sera:


n n*n
Normalmente el fin de un algoritmo va a ser producir un
resultado, sin embargo, si los datos de entrada no son
vlidos, es probable que el resultado final no pueda
calcularse. En estas circunstancias usaremos una accin
ERROR seguida de una aclaracin del error. Por ejemplo:
Si x > 0 x = 0
Entonces
y Raz cuadrada de x
Si x < 0
ERROR No es posible calcular la raz cuadrada de un
nmero negativo
Cuando un algoritmo funciona correctamente para todas las
instancias de una clase de problemas, la notacin puede ser
un poco ms flexible. La importancia de fijar convenciones
reside en que debemos establecer pautas que nos permitan
analizar sin ambigedades la correctitud de los algoritmos que
encararemos.
Hasta ahora nos hemos preocupado de proponer una notacin
en la que resulte sencillo comprender el algoritmo. Un
lenguaje adecuado facilita el diseo de algoritmos, pero no
constituye una solucin en s mismo. La complejidad de los
problemas normalmente requiere el uso de mtodos de
resolucin.
Ejemplo |:
Retomemos MCD:
Datos de Entrada:
M, N Enteros positivos mayores que 0.
Datos de Salida:
MCD Mximo Comn Divisor de M y N.
Acciones:
Repetir hasta R = 0
R resto de dividir M y N
36

MN
NR
MCD N
Hemos utilizado la convencin de identar las acciones de
manera tal que resalte la estructura de la resolucin.
Otra costumbre que intentaremos incorporar desde el
principio es la de utilizar nombres claros para las variables y
las acciones en las que se basar nuestro algoritmo.
OBSERVACIONES:
Es importante comenzar a percibir la importancia de no
encarar la resolucin de u problema utilizando un lenguaje de
programacin.
En la resolucin del problema no deberamos ocuparnos de los
detalles de la implementacin, para evitar sumar a la
complejidad del problema mismo, las limitaciones impuestas
por el lenguaje de programacin.
PROGRAMAS
Una computadora es un autmata capaz de ejecutar enormes
secuencias de instrucciones en un tiempo muy reducido. El
tipo de instrucciones que una computadora puede interpretar
y obedecer es, por lo general, ms reducido.
La manera ms obvia de escribir un programa sera expresar
el algoritmo en trminos de las instrucciones que la mquina
puede ejecutar.
Esta traduccin directa en cdigo mquina an para
algoritmos sencillos consumira muchsimo tiempo, sera
tediosa y muy propensa a errores. Ms an, cada programa
podra ser ejecutado nicamente en una mquina, ya que
sera totalmente dependiente del conjunto de instrucciones
provistas.
Uno de los primeros avances en ciencias de computacin fue
el desarrollo de lenguajes de programacin simblicos.
Paralelamente
fue
necesario
desarrollar
programas
traductores que realizaran la transformacin desde el
lenguaje simblico al cdigo mquina.
Estos traductores son llamados comnmente compiladores.
Los lenguajes de programacin no son dependientes de una
mquina particular. El programador no necesita conocer el
conjunto de instrucciones provistos por cada computadora.
37

Esta responsabilidad es transferida al fabricante de la


mquina y al desarrollador del compilador.
1- Nociones del procesador
Las personas podemos actuar como computadoras, en el
sentido de que podemos ejecutar conjuntos bien definidos de
instrucciones
involucrando
operaciones
aritmticas
y
comparaciones.
Podemos pensar que las herramientas usadas por un humano
son:
1- Lpiz
2- Papel
3- Calculadora
Supongamos que en el papel figura el siguiente algoritmo
para calcular el MCD entre m y n.
Dividir m por n y obtener el resto r
Mientras el resto sea distinto de 0
Reemplazar m por n, n por r y recalcular r
n es el mcd
El algoritmo es una especificacin esttica para la resolucin
de un conjunto de problemas.
Supongamos ahora que deseamos calcular el mcd de dos
nmeros particulares m y n, por ejemplo 330 y 121.
Podemos utilizar el resto del papel como rea de datos, es
decir:
rea de Instrucciones
Dividir m por n y obtener el resto r
Mientras el resto sea distinto de 0
Reemplazar m por n, n por r y recalcular r
n es el mcd
rea de Datos
m = 330
n = 121
r=?
Ahora una persona capaz de interpretar las instrucciones
individuales del algoritmo, puede ejecutarlo. El clculo
efectivo de r va a ser realizado por la calculadora, la persona
controla la ejecucin, transfiriendo datos desde el papel a la
38

calculadora y viceversa y diciendo en cada caso cul es la


prxima instruccin a ejecutar. Notemos que la calculadora no
tiene acceso a los valores del papel, la persona no slo
controla la ejecucin emitiendo rdenes, sino que tambin es
responsable de enviar y recibir los valores requeridos y
producidos por la calculadora. La calculadora utiliza una
pequea pantalla para comunicarse.
Una computadora tiene una organizacin similar a este
modelo. Internamente consiste de tres componentes bsicas:
1- Unidad Aritmtica y Lgica: Es capaz de evaluar algunas
operaciones
aritmticas
y
realizar
algunas
comparaciones entre los valores de ciertos datos. La
Unidad Aritmtica y lgica tiene algunos registros en
donde figuran los valores de los datos de entrada y
salida. Estos valores tienen el efecto que tena la pantalla
de la calculadora.
2- Memoria: La memoria de una computadora es el rea de
almacenamiento en donde residen datos e instrucciones.
La memoria puede pensarse como un conjunto de
celdas individualmente accesibles.
3- Unidad de Control: La Unidad de Control como su nombre
lo indica, es la encargada de controlar la ejecucin de los
programas. Bsicamente su funcin es interpretar
instrucciones, tomar valores de la memoria, transferir
valores y enviar rdenes a la Unidad Aritmtica y Lgica
y recoger los valores generados por ella a la memoria.
Una computadora est conectada adems a dispositivos de
entrada y salida tales como pantallas, impresoras, etc. que le
permiten comunicarse con el exterior.
Lenguajes de Alto Nivel
Desde 1950 se han desarrollado cientos de lenguajes de
programacin. An con esta proliferacin de lenguajes slo
existen unas pocas clases de lenguajes, y de stos slo
algunos son usados intensamente.
El primer avance en esta rea fue la introduccin de
lenguajes simblicos. Estos lenguajes simblicos permiten
que el programador se desentienda de las locaciones fsicas
en donde residen instrucciones y datos. Por ejemplo el
programador en sus programas hace referencia al dato A y
39

no a la locacin 101110 de memoria en donde reside el valor


del dato. El lenguaje es el encargado de hacer la asociacin
dato-locacin de memoria. Todos los lenguajes de
programacin utilizados actualmente son simblicos.
La primer clasificacin de los lenguajes de programacin es en
lenguajes de bajo nivel y lenguajes de alto nivel.
Los lenguajes de bajo nivel aunque simblicos, son bastante
dependientes de la mquina en la que van a ser ejecutados.
Sin embargo, el problema mayor es que los programas
escritos en estos lenguajes son en general bastante difciles
de comprender. Como contrapartida la eficiencia alcanzada
es, por lo general, mucho mayor.
En los lenguajes de alto nivel, el programador puede
independizarse casi totalmente de la mquina sobre la que
corrern sus programas. El beneficio mayor sin embargo, es el
hecho de que los programas son mucho ms fciles de leer y
comprender. Esto es particularmente importante cuando en el
desarrollo de un programa intervienen varias personas y
adems, como sucede con frecuencia, va a tener que ser
modificado muchas veces para corregir errores y para ampliar
su aplicacin.
Existen lenguajes de alto nivel particularmente adecuados
para programacin cientfica, otros para procesamiento de
datos, algunos para juegos, etc. Otros lenguajes en cambio,
son de propsito general y pueden ser utilizados para una
gran variedad de aplicaciones.
Caractersticas
Generales
de
los
Lenguajes
Procedurales
Consideraremos que un programa en la mayora de los casos,
es escrito con el propsito de ser interpretado por una
computadora. La computadora entonces, ejecuta un proceso,
es decir una secuencia de acciones de acuerdo a las
especificaciones dadas por el programa.
Un programa es, en s mismo, un texto. Como es general sus
especificaciones describen un proceso complejo, que debe ser
desarrollado con precisin y cuidado en los detalles, el
significado de este texto debe ser definido claramente a
travs de una formalizacin exacta. Esta formalizacin es
conocida con el nombre de lenguaje.
Un programa usualmente especifica un proceso que incluye la
lectura de datos, su validacin y una serie de acciones que se
40

ejecutarn a partir de ellos. Esto implica que un programa no


slo especifica un proceso simple, sino el cmputo de un
conjunto relacionado de procesos.
Frecuentemente la palabra programacin ha sido utilizada
como sinnimo de codificacin. Sin embargo, encierran
conceptos muy distintos. Programar incluye la totalidad de
los pasos envueltos en la resolucin de un problema sobre
una computadora. La codificacin es slo una etapa de la
programacin, y consiste en escribir instrucciones en algn
lenguaje de programacin.
Los lenguajes de programacin procedurales estn basados
en una serie de conceptos que, aunque varan en la forma en
que
son
soportados,
pueden
ser
aprendidos
independientemente de un lenguaje en particular.
Algunas caractersticas comunes a cualquier programa escrito
en un lenguaje de programacin procedural son:
EL programa en s mismo es una entidad esttica, pero el
proceso que ejecuta instrucciones es dinmico y no
debemos confundir un programa con un procesador.
Las instrucciones son ejecutadas secuencialmente. Todo
programa tiene un principio y en cada paso est
perfectamente definida la accin que se ejecutar a
continuacin.
Los programas operan con objetos. Estos objetos en un
programa son llamados datos. Los datos de un programa
incluyen tanto a la informacin de entrada del programa,
como a los datos de salida o resultados.
Algunas veces las instrucciones son precedidas por una
declaracin de los datos con los que operar el
programa.
Un programa normalmente permite generar a una clase
de procesos. Los elementos de la clase varan unos
respecto de otros en funcin de los valores que toman
los datos de entrada. Un programa normalmente incluye
acciones para lectura de los valores de entrada.
Todo programa produce un efecto, este efecto es, en la
mayora de los casos comunicado a travs de una salida,
una impresin de los resultados obtenidos.
Algunas veces la ejecucin de una accin depende de
una decisin, tomada por el procesador de acuerdo a los
41

valores de los datos con los que opera. El programador


deber especificar el criterio con el cual el procesador
tomar esta decisin.
Muchas veces es necesario ejecutar un bloque de
instrucciones ms de una vez. El nmero de repeticiones
puede ser fijo o establecido de acuerdo al estado de un
proceso.
Las acciones en trminos de las cuales est escrito el
programa, pueden ser provistas por el lenguaje de
programacin o pueden haber sido definidas por el
programador.
Vemos entonces que un programa es un medio a travs del
cual una persona se comunica con un procesador. Esta
comunicacin requiere un lenguaje especial capaz de manejar
eficientemente todas estas caractersticas.
De lo visto hasta el momento se deduce que un lenguaje de
programacin debera brindar herramientas para:
1. Nombrar los datos con los que opera el programa.
2. Indicar el orden en que sern ejecutadas las
instrucciones. Esto es proveer estructuras de control
para expresar secuencias, condicionales y repeticin.
3. Un conjunto de acciones predefinidas en trminos de los
cuales puede ser escrito el algoritmo. En particular, los
lenguajes proveen acciones de lectura y escritura para
comunicar el programa con el exterior.
4. Proveer constructores que permitan definir nuevas
acciones, que puedan ser utilizadas como bloques
constituyentes en la definicin de programas ms
complejos.

42

EJERCICIOS PRCTICOS
1Un hombre est a 100 mts. al sur de un oso, anda 100
mts. en direccin este, dispara su fusil a 90 a la izquierda y
le da al oso. de qu color es el oso? (blanco)
2La coleccin de estampillas de Andrs est en tres
lbumes, 2/10 de sus estampillas estn en el 1 er lbum,
algunos 1/7 estn en el 2do y hay 303 en el 3ro Cuntas
estampillas tiene Andrs? (3535)
3Tenemos 6 lpices de igual longitud y deseamos formar
4 tringulos equilteros del mismo tamao cmo hacemos?
(pensar en el espacio)
4Tomamos 4 cajas iguales cmo los acomodaramos
para lograr:
i. cada bloque toque a otros dos
ii. un bloque a uno, otro a dos y otro a tres
iii. cada bloque toque a los otros tres
iv. cada bloque toque a uno solo de los otros bloques
5- A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
i. Por qu cree que la prxima en marcarse ser la
P?
6- Toms vive en un edificio de 30 pisos, cada maana baja de
su departamento, l vive en el piso 15 en ascensor y
tambin sube en ascensor pero hasta el piso 10 y sigue
hasta su casa por escalera por qu? (es enano).
7- Un mercader de Benars de India dispone de 8 perlas
iguales en su forma, tamao y color, de estas 8, 7 tiene el
mismo peso y 1 es ms liviana cmo podra el mercader
descubrir la perla ms liviana e indicarla con toda seguridad
utilizando una balanza con 2 platillos y efectuando slo dos
pesadas?
43

8- Un hombre y una mujer caminan juntos en el momento


inicial los pies derechos de ambos estn apoyados en el
suelo, el hombre da 2 pasos cada 3 de la mujer cuntos
pasos deben dar cada uno antes de que sus pies izquierdos
pisen el suelo simultneamente? (los izquierdos no se
juntan)
9- Clariobaldo es ahora tres veces ms viejo de lo que era su
sobrina Anabella hace 10 aos, y Anabella tiene ahora la
mitad de la edad que tendr su to dentro de 5 aos.
Cunto ms viejo es Clariobaldo que su sobrina Anabella?
(x=45, y=24, es 20 aos ms viejo)
10Una isla est habitada por ciertos habitantes llamados
caballeros que siempre dicen la verdad y otros llamados
escuderos que siempre mienten. Se supone que todo
habitante de la isla es o caballero o escudero. Tres
habitantes de la isla A, B y C se encuentran en un jardn,
llega a la isla un extranjero y le pregunta a A eres caballero
o escudero? A respondi tan confusamente que el extranjero
no entendi. Entonces le le pregunta a B: Qu dijo A?. B
responde: A ha dicho que es escudero pero entonces C
dice: No creas a B, est mintiendo, Puede saber el
extranjero qu son A, B y C?
11Varios
empresarios
que
necesitaban
recopilar
informacin de los bancos de datos de empresas
competidoras contrataron hbiles saqueadores de datos.
Determine de qu empresa extrajo informacin cada ladrn,
en qu archivo estaba guardada la informacin y qu
computadora utiliz:
i. Martn y cia. est equipada con APPLE
ii. Manopla extrajo informacin de Ro hnos.
iii. Cappone utiliz una IBM
iv. Scarface extrajo informacin del archivo de
compras, mientras que Dimas hizo lo propio con el
de clientes.
v. Quien se apropi del archivo de proveedores us
una COMPAQ.
vi. Villarino que no obtuvo informacin grabada en el
archivo de stock, se vali de Mackintosh
vii. La computadora WANG no es la instalada en
Stereo s.a., ni es utilizada por Dimas.

44

viii. Uno de los ladrones rob informacin del banco de


datos de Rey s.r.l. acumulada en el archivo de
ventas.
ix. Hay una empresa denominada Rock y asociados.
(MANOPLARIOCOMPAQPROVEEDORES;CAPPON
ESTEREO
IBMSTOCK;
DIMASMARTIN
hnosAPPLECLIENTES
SCARFACEROCKWANGCOMPRAS;VILLARINOR
EY MACINTOSHVENTAS)
12Una persona cien animales entre cerdos, chivos y
ovejas por $100. Los cerdos cuestan $3.50 c/u; los
chivos $1/3 y las ovejas $1/2. Cuntos compr de cada
uno?
13La multiplicacin por 9 da vuelta un nmero de 4
dgitos produciendo otro nmero de 4 dgitos con los
mismos dgitos del multiplicando, pero en orden
reverso. Cul es el nmero? (1089)
14Un comerciante de caballos desea venderlos en
una feria, como admisin a la misma debe dejar un
caballo, en la feria vende la mitad de los que le quedan
y cuando se retira debe dejar uno como impuesto. Va
luego a una segunda y una tercera feria donde rigen
condiciones similares; al regresar a su casa, tiene un
caballo cuntos caballos contaba antes de entrar a la
primera feria?

45

Vous aimerez peut-être aussi