Вы находитесь на странице: 1из 10

BLOQUE I

SOLUCIN DE PROBLEMAS USANDO ALGORITMOS


1.1 Identificando alternativas de solucin de problemas
Un problema se puede definir como una situacin en la cual se trata de alcanzar una
meta y para lograrlo se deben hallar y utilizar unos medios y unas estrategias. La
mayora de los problemas tienen algunos elementos en comn: un estado inicial; una
meta, lo que se pretende lograr; un conjunto de recursos, lo que est permitido hacer
y/o utilizar; y un dominio el estado actual de conocimientos, habilidades y energa de
quien va a resolverlo.
Casi todos los problemas requieren, que quien los resuelve, los divida en submetas que,
cuando son dominadas (por lo regular en orden), llevan a alcanzar el objetivo. Cada
disciplina dispone de estrategias especficas para resolver problemas de su mbito; por
ejemplo, resolver problemas matemticos implica utilizar estrategias propias de las
matemticas. Sin embargo, algunos psiclogos opinan que es posible utilizar con xito
estrategias generales, tiles para resolver problemas en muchas reas. A travs del
tiempo, la humanidad ha utilizado diversas estrategias generales para resolver
problemas, destacando los siguientes mtodos o estrategias de tipo general:

Ensayo y Error: Consiste en actuar hasta que algo funcione. Puede tomar mucho
tiempo y no es seguro que se llegue a una solucin. Es una estrategia apropiada
cuando las soluciones posibles son pocas y se pueden probar todas, empezando
por la que ofrece mayor probabilidad de resolver el problema.

Iluminacin: Implica la sbita conciencia de una solucin que sea viable. Es muy
utilizado el modelo de cuatro pasos formulado por Wallas (1921): preparacin,
incubacin, iluminacin y verificacin. Estos cuatro momentos tambin se conocen
como proceso creativo. La incubacin ayuda a "olvidar" falsas pistas, mientras que
no hacer interrupciones o descansos puede hacer que la persona que trata de
encontrar una solucin creativa se estanque en estrategias inapropiadas.

Heurstica: Se basa en la utilizacin de reglas empricas para llegar a una


solucin. El mtodo heurstico conocido como IDEAL, formulado por Bransford y
Stein (1984), incluye cinco pasos: Identificar el problema; definir y presentar el
problema; explorar las estrategias viables; avanzar en las estrategias; y lograr la
solucin y volver para evaluar los efectos de las actividades (Bransford & Stein,
1984). El matemtico Polya (1957) tambin formul un mtodo heurstico para
resolver problemas que se aproxima mucho al ciclo utilizado para programar
computadores.

Algoritmos: Consiste en aplicar adecuadamente una serie de pasos detallados


que aseguran una solucin correcta. Por lo general, cada algoritmo es especfico de
un dominio del conocimiento. La programacin de computadores se apoya en este
mtodo.

Razonamiento analgico: Se apoya en el establecimiento de una analoga entre


una situacin que resulte familiar y la situacin problema. Requiere conocimientos
suficientes de ambas situaciones.

Lluvia de ideas: Consiste en formular soluciones viables a un problema. El


modelo propuesto por Mayer (1992) plantea: definir el problema; generar muchas
soluciones (sin evaluarlas); decidir los criterios para estimar las soluciones
generadas; y emplear esos criterios para seleccionar la mejor solucin. Requiere
que los estudiantes no emitan juicios con respecto a las posibles soluciones hasta
que terminen de formularlas.

Sistemas de produccin: Se basa en la aplicacin de una red de secuencias de


condicin y accin (Anderson, 1990).

Pensamiento lateral: Se apoya en el pensamiento creativo, formulado por Edwar


de Bono (1970), el cual difiere completamente del pensamiento lineal (lgico). El
pensamiento lateral requiere que se exploren y consideren la mayor cantidad
posible de alternativas para solucionar un problema. Su importancia para la
educacin radica en permitir que el estudiante: explore (escuche y acepte puntos
de vista diferentes, busque alternativas); avive (promueva el uso de la fantasa y
del humor); libere (use la discontinuidad y escape de ideas preestablecidas); y
contrarreste la rigidez (vea las cosas desde diferentes ngulos y evite
dogmatismos). Este es un mtodo adecuado cuando el problema que se desea
resolver no requiere informacin adicional, sino un reordenamiento de la
informacin disponible; cuando hay ausencia del problema y es necesario
apercibirse de que hay un problema; o cuando se debe reconocer la posibilidad de
perfeccionamiento y redefinir esa posibilidad como un problema (De Bono, 1970).

Sin embargo, esta Gua se enfoca principalmente en dos de estas estrategias: Heurstica
y Algortmica.

1.2 Metodologa de solucin de problemas


Segn Polya (1957), cuando se resuelven problemas matemticos, intervienen cuatro
operaciones mentales:
1. Entender el problema
2. Trazar el plan
3. Ejecutar el plan (resolver)
4. Revisar

Interpretacin
dinmica y
cclica de las etapas
planteadas por Polya
para

Desde el punto de vista educativo, la solucin de problemas mediante la programacin


de computadores posibilita la activacin de una amplia variedad de estilos de
aprendizaje. Los estudiantes pueden encontrar diversas maneras de abordar problemas y
plantear soluciones, al tiempo que desarrollan habilidades para: visualizar caminos de
razonamiento divergentes, anticipar errores, y evaluar rpidamente diferentes escenarios
mentales.
Numerosos autores de libros sobre programacin, plantean cuatro fases para elaborar un
procedimiento que realice una tarea especfica. Estas fases concuerdan con las
operaciones mentales descritas por Polya para resolver problemas:
1. Analizar el problema (Entender el problema)
2. Disear un algoritmo (Trazar un plan)
3. Traducir el algoritmo a un lenguaje de programacin (Ejecutar el plan)
4. Depurar el programa (Revisar)
Como se puede apreciar, hay una similitud entre las metodologas propuestas para
solucionar problemas matemticos (Clements & Meredith, 1992; Daz, 1993; Melo, 2001;
NAP, 2004) y las cuatro fases para solucionar problemas especficos de reas diversas,
mediante la programacin de computadores.

Fases para elaborar un programa de computador.


Analizar el problema (entenderlo)
Los programas de computador tienen como finalidad resolver problemas especficos y el
primer paso consiste en definir con precisin el problema hasta lograr la mejor
comprensin posible. Una forma de realizar esta actividad se basa en formular
claramente el problema, especificar los resultados que se desean obtener, identificar
la informacin disponible (datos), determinar las restricciones y definir los procesos
necesarios para convertir los datos disponibles (materia prima) en la informacin
requerida (resultados). Estas etapas coinciden parcialmente con los elementos generales
que, segn Schunk (1997), estn presentes en todos los problemas:
1. Especificar claramente los resultados que se desean obtener (meta y submetas)
2. Identificar la informacin disponible (estado inicial)
3. Definir los procesos que llevan desde los datos disponibles hasta el resultado
deseado (operaciones)

Etapas a desarrollar en la fase


de anlisis de un problema
(entenderlo)

Formular el problema
La solucin de un problema debe iniciar por determinar y comprender exactamente en
qu consiste ese problema. En programacin es frecuente que quien programa deba
formular el problema a partir de los resultados esperados. En esta etapa se debe hacer
una representacin precisa del problema (Rumbaugh, 1996); especificar lo ms
exactamente posible lo que hay que hacer (no cmo hay que hacerlo).
Precisar los resultados esperados
Para establecer los resultados que se esperan (meta) es necesario identificar la
informacin relevante, ignorar los detalles sin importancia, entender los elementos del
problema y activar el esquema correcto que permita comprenderlo en su totalidad
(Woolfolk, 1999). Determinar con claridad cul es el resultado final (producto) que debe
devolver el programa es algo que ayuda a establecer la meta. Es necesario analizar qu
resultados se solicitan y qu formato deben tener esos resultados (impresos, en pantalla,
diagramacin, orden, etc).
Identificar datos disponibles
Otro aspecto muy importante en la etapa de anlisis del problema consiste en determinar
cul es la informacin disponible. El estudiante debe preguntarse:
Qu informacin es importante?
Qu informacin no es relevante?
Cules son los datos de entrada?
Cul es la incgnita?
Qu informacin me falta para resolver el problema?
Puedo agrupar los datos en categoras?
Determinar las restricciones
Resulta fundamental que los estudiantes determinen aquello que est permitido o
prohibido hacer y/o utilizar para llegar a una solucin. En este punto se deben exponer
las necesidades y restricciones (no una propuesta de solucin). El estudiante debe
preguntarse:
Qu condiciones me plantea el problema?
Qu est prohibido hacer y/o utilizar?
Qu est permitido hacer y/o utilizar?
Cules datos puedo considerar fijos para simplificar el problema?
Cules datos son variables?
Cules datos debo calcular?
Establecer procesos (operaciones)

Consiste en determinar los procesos que permiten llegar a los resultados esperados a
partir de los datos disponibles. El estudiante debe preguntarse:
Qu procesos necesito?
Qu frmulas debo emplear?
Cmo afectan las condiciones a los procesos?
Qu debo hacer?
Cul es el orden de lo que debo hacer?
En la medida de lo posible, es aconsejable dividir el problema original en otros ms
pequeos y fciles de solucionar (submetas), hasta que los pasos para alcanzarlas se
puedan determinar con bastante precisin (mdulos).

1.3

Definicin y caractersticas de Algoritmos

Algoritmo proviene de Mohammed al-Khowrizmi, matemtico persa que vivi


durante el siglo IX y alcanz gran reputacin por el enunciado de las reglas paso a
paso para sumar, restar, multiplicar y dividir nmeros decimales; la traduccin al latn
del apellido en la palabra algorismus deriv posteriormente en algoritmo.
Un algoritmo es un conjunto de pasos que permiten alcanzar un objetivo. Los pasos
deben ser secuenciales y ordenados, es decir, deben ser ejecutados uno despus de otro,
en un orden definido, teniendo un inicio y un fin.
Para que un algoritmo sea completo, debe contemplar todas las alternativas lgicas
posibles que se puedan presentar. Todo lo que se ha de hacer para resolver el problema
debe estar en forma detallada paso a paso. A cada uno de los pasos que integran un
algoritmo, se le llama sentencia o instruccin.
Caractersticas del Algoritmo
Un algoritmo debe tener al menos las siguientes caractersticas:
Ser preciso. Las actividades o pasos del algoritmo deben desarrollarse en orden
estricto, ya que el desarrollo de cada paso debe seguir un orden lgico.
Ser definido. Esto quiere decir, que siempre que se ejecute con los mismos datos,
el resultado ser el mismo. No puede improvisar, inventar o adivinar la informacin
que necesita para poder realizar un proceso.
Ser finito. Esto indica que el nmero de pasos de un algoritmo debe ser limitado,
es decir, los pasos a seguir deben tener un fin.
Todo algoritmo debe ser probado antes de ser ejecutado para tener la certeza de que
lograremos el objetivo. La forma de probarlo es siguiendo cada uno de los pasos que
indica el algoritmo. A esto es a lo que llamaremos prueba de escritorio. En la prueba de
escritorio, un algoritmo bien hecho siempre debe funcionar.
El algoritmo debe ser entendible para cualquier persona, no slo para la persona que lo
dise. Se puede representar por medio de un diagrama de flujo o bien pseudocdigo. En
Pseudocdigo la secuencia de instrucciones se representa por medio de frases o
proposiciones, mientras que en un Diagrama de Flujo se representa por medio de
grficos.

Ejemplo: Elaborar un algoritmo para calcular el rea de cualquier tringulo


rectngulo y presentar el resultado en pantalla.
PSEUDOCDIGO
Paso 1: Inicio
Paso 2: Asignar el nmero 2 a la constante "Div"
Paso 3: Conocer la base del tringulo y guardarla en la variable "Base"
Paso 4: Conocer la altura del tringulo y guardarla en la variable "Altura"
Paso 5: Guardar en la variable "Area" el valor de multiplicar "Base" por "Altura"
Paso 6: Guardar en la variable "Area" el valor de dividir "Area" entre "Div"
Paso 7: Reportar el valor de la variable "Area" en pantalla
Paso 8: Final
DIAGRAMA DE FLUJO
Inicio

DIV = 2

Almacena el valor 2 en la constante DIV

Base

Pide al usuario que digite el valor de la BASE

Altura

Pide al usuario que digite el valor de la ALTURA

AREA = BASE *
ALTURA

Almacena en AREA el valor de multiplicar BASE x ALTURA


Almacena en AREA el valor que ya haba almacenado en esta

variableAREA = AREA / DIV


Dividido por DIV
AREA

Muestra en pantalla el valor de la variable AREA

Final

El pseudocdigo est compuesto por proposiciones informales en espaol que permiten


expresar detalladamente las instrucciones que llevan desde un estado inicial (problema)
hasta un resultado deseado (solucin). Por lo regular, los algoritmos se escriben por
refinamiento: se escribe una primera versin que luego se descompone en varios
subproblemas (el nmero depende de la complejidad del problema) independientes entre
s. Si es necesario se va refinando cada vez las instrucciones hasta que las proposiciones
generales en espaol como las del ejemplo anterior se puedan codificar en el lenguaje
seleccionado para hacer la programacin.
Las tcnicas que utilizan formas grficas (diagramas de flujo) para representar ideas e
informacin ayudan a los estudiantes a clarificar su pensamiento, y a procesar, organizar

y priorizar nueva informacin. Los diagramas visuales revelan patrones, interrelaciones e


interdependencias adems de estimular el pensamiento creativo.

1.4 Diagramas de Flujo


Diagrama de Flujo es una herramienta grfica valiosa para la representacin esquemtica
de la secuencia de instrucciones de un algoritmo o de los pasos de un proceso, tambin
es una de las tcnicas ms utilizadas para representar grficamente la secuencia de
instrucciones de un Algoritmo. Estas instrucciones estn compuestas por operaciones,
decisiones lgicas y ciclos repetitivos, entre otros. La solucin de un problema puede
contener varios conjuntos de instrucciones (procedimientos o mtodos) que tienen como
finalidad ejecutar cada uno de los procesos necesarios para llegar a la solucin de un
problema a partir de los datos disponibles (estado inicial).
La utilizacin de Diagramas ayuda a los estudiantes a:

Clarificar el pensamiento : Ellos pueden ver cmo se conectan los procesos y se


dan cuenta de cmo estos se pueden organizar o agrupar para darles el orden
lgico correcto

Identificar pasos errneos: Sobre un diagrama es ms fcil identificar los cambios


que se requieren para el correcto funcionamiento de un programa de computador
que hacerlo sobre el cdigo.

Las ventajas de disear un Diagrama de Flujo antes de empezar a generar el cdigo de


un programa son, entre otras:
Forzar la identificacin de todos los pasos de una solucin de forma clara y lgica;
Establecer una visin amplia y objetiva de la solucin;
Verificar si se han tenido en cuenta todas las posibilidades;
Comprobar si hay procedimientos duplicados;
Representar grficamente una solucin (es ms simple hacerlo con grficas que
mediante palabras);
Facilitar a otras personas la comprensin de la secuencia lgica de la solucin
planteada;
Posibilitar acuerdos con base en la aproximacin comn a una solucin de un
problema, resolver ambigedades o realizar mejoras;
Establecer posibles modificaciones (resulta ms fcil depurar un programa con el
diagrama que con el listado del cdigo);
Agilizar la codificacin (traduccin) del algoritmo en un lenguaje de programacin;
Servir como elemento de documentacin de la solucin del problema;

Simbologa de los diagramas de flujo

Los siguientes son los principales smbolos para elaborar Diagramas de Flujo:

Inicio/Final
Se utiliza para indicar el inicio y el
final de un diagrama; del Inicio slo

Salida en Pantalla
Instruccin de presentacin
de

puede salir una lnea de flujo y al


Final slo debe llegar una lnea.

mensajes o resultados en
pantalla.

Accin/Proceso General
Indica una accin o instruccin
general
que debe realizar el computador
(cambios de valores de variables,
asignaciones, operaciones
aritmticas, etc).
Entrada por teclado
Instruccin de entrada de datos por
teclado. Indica que el computador
debe
esperar a que el usuario teclee un
dato
que se guardar en una variable o
constante.
Conector
Indica el enlace de dos partes de
un
diagrama dentro de la misma
pgina
Decisin
Indica la comparacin de dos datos
y
dependiendo del resultado lgico
(falso o verdadero) se toma la
decisin de seguir un camino del
diagrama u otro

Salida Impresa
Indica la presentacin de
uno o varios resultados en
forma impresa.

Llamada a subrutina
Indica la llamada a una
subrutina o
procedimiento determinado

Conector
Indica el enlace de dos
partes de un diagrama en
pginas diferentes.
Flujo
Indica el seguimiento lgico
del
diagrama. Tambin indica el
sentido de ejecucin de las
operaciones.

1.5 Reglas para la elaboracin de Diagramas de Flujo

Poner un encabezado que incluya un ttulo que identifique la funcin del algoritmo;
el nombre del autor; y la fecha de elaboracin;
Slo se pueden utilizar smbolos estndar;
Los diagramas se deben dibujar de arriba hacia abajo y de izquierda a derecha;
La ejecucin del programa siempre empieza en la parte superior del diagrama;
Los smbolos de Inicio y Final deben aparecer solo una vez;
La direccin del flujo se debe representar por medio de flechas (lneas de flujo);
Todas las lneas de flujo deben llegar a un smbolo o a otra lnea;
Una lnea de flujo recta nunca debe cruzar a otra. Cuando dos lneas de flujo se
crucen, una de ellas debe incluir una lnea arqueada en el sitio donde cruza a la
otra;
Se deben inicializar las variables que se utilicen o permitir la asignacin de valores
mediante consulta al usuario;
Las bifurcaciones y ciclos se deben dibujar procurando una cierta simetra;
Cada rombo de decisin debe tener al menos dos lneas de salida (una para SI y
otra para NO);
Todo el Diagrama debe ser claro, ordenado y fcil de recorrer;

1.6 Variables, operadores aritmticos, de igualdad y relacin.


Variables
En programacin, las Variables son espacios de trabajo (contenedores) reservados para
guardar datos (valores). El valor de una Variable puede cambiar en algn paso del
Algoritmo o permanecer invariable; por lo tanto, el valor que contiene una variable es el
del ltimo dato asignado a sta.
Existen diferentes tipos de datos que una variable puede almacenar, como son:
Tipo Entero. Una variable de tipo entero solamente puede almacenar valores numricos
sin punto decimal, por lo tanto, sus operaciones jams van a generar valores decimales.
Tipo Real. Una variable de tipo real puede almacenar nmeros que tienen punto decimal
y en sus operaciones puede generar decimales.
Tipo Carcter. Una variable de tipo carcter puede almacenar valores equivalentes del
cdigo ASCII (American Estndar Code for Information Interchange). ASCII es un cdigo
internacional de equivalencias internas en el sistema binario, por lo que una variable
carcter puede almacenar cualquier cadena de caracteres que hayan sido tecleados.
Para asignar el valor a una variable, en la mayora de los lenguajes de programacin se
utiliza el signo = (igual a), que indica a la computadora que va almacenar el valor que se
encuentre a la derecha del smbolo, dentro de la variable que se encuentre a la izquierda.
Una variable slo puede guardar un valor a la vez.

Operadores
En programacin los Operadores son smbolos que sirven para manipular datos. Los
operadores y las operaciones que se pueden realizar con ellos se clasifican en:
Aritmticos: Posibilitan las operaciones entre datos de tipo numrico y dan como
resultado otro valor de tipo numrico. Ejemplo: potencia (potencia); producto (*);
divisin (/); suma (+); resta (-); asignacin (=).
Relacionales: Permiten la comparacin entre datos del mismo tipo y dan como
resultado dos valores posibles: Verdadero o Falso. Ejemplo: igual a (=); menor que
(<); mayor que (>).
Lgicos: Posibilitan la evaluacin lgica de dos expresiones de tipo lgico. Dan
como resultado uno de dos valores posibles: Verdadero o Falso. Ejemplo: negacin
(no); conjuncin (y); disyuncin (o).
Ejemplo:
Algoritmo que realiza la suma de todos los nmeros pares entre 2 y 1000.

El problema consiste en sumar 2 + 4 + 6 + 8 + 10 + 1000. Utilizaremos las palabras


SUMA y NUMERO para representar las sumas sucesivas. La solucin se puede escribir con
el siguiente algoritmo:
1. Inicio
2. Establecer SUMA a 0.
3. Establecer NUMERO a 2.
4. Sumar NUMERO a SUMA. El resultado ser el nuevo valor de la suma (SUMA).
5. Incrementar NUMERO en 2 unidades.
6. Si NUMERO =< 1000 bifurcar al paso 4;
7. En caso contrario, escribir el ltimo valor de suma y terminar el proceso
8. Fin
Inicio

Suma = 0

Suma

Numero = 2

Fin

Suma = Suma +
Numero
Numero = Numero
+2
Numero =< 1000?

Si

N
Ao

1.7 Orden de evaluacin de los operadores aritmticos


Los computadores ejecutan los operadores en un orden predeterminado. El siguiente es
el orden (jerarqua) para ejecutar operadores:
1. Parntesis (se ejecutan primero los ms internos)
2. Signo (-2)
3. Potencias y Races (potencia y rc); Productos y Divisiones ( * y /)
4. Sumas y Restas (+ y -)
6. Relacionales (=, <, >)
7. Negacin (no)
8. Conjuncin (y)
9. Disyuncin (o)

Вам также может понравиться