You are on page 1of 62

INDICE Introduccin Heurstica e investigacin cientfica La Heurstica en la enseanza de la Programacin Elementos heurstico, cuadro sinptico Medios auxiliares heursticos

Figuras ilustrativas o figuras de anlisis Tablas que reflejan la relacin entre los datos Compendio de definiciones y conceptos fundamentales Diagramas de flujos que ilustren el problema Ayudas incorporadas a los sistemas. Algoritmos bsicos Bibliotecas de procedimientos y funciones, ya sean profesionales o elaboradas por el alumno. Principios heursticos Analoga Ejemplos de aplicacin de la analoga en la programacin En la bsqueda de un nuevo algoritmo bsico Para elaborar un nuevo concepto Para resolver un problema Reduccin Generalizacin Reglas heursticas Estrategias heursticas Trabajo hacia adelante Trabajo hacia atrs Descomponer un problema en subproblemas Programa heurstico general para resolver problema utilizando la programacin. Recomendaciones finales Bibliografa 43 54 63 19 20 20 22 22 23 24 27 31 34 36 37 38 40 2 3 6 8 9 9 11 12 13 14 15

La Heurstica en la enseanza de la Programacin

Introduccin El principal objetivo de la enseanza de la Programacin es la capacitacin de los alumnos en la resolucin independiente problemas de la prctica escolar y de la vida cotidiana mediante naturalmente es el empleo de lenguajes de programacin; para ello conocer conceptos, instrucciones, algoritmos y

necesario

procedimientos de trabajo, pero un problema de programacin tiene la particularidad que para su solucin se requiere emplear uno o varios algoritmos combinados como prefieren acotar algunos para el caso de problemas ms complejos. Cuando el mencionado algoritmo se conoce, el problema est parcialmente resuelto, slo es necesario la codificacin del mismo en el lenguaje de programacin seleccionado y la posterior puesta a punto del programa, pero cuando sucede lo contrario, el problema inicial se transfiere al de la bsqueda del (o los) algoritmo ( o algoritmos) que permiten dar solucin al problema. La particularidad anteriormente mencionada, hace que frecuentemente en la clase de Programacin varios alumnos no sean capaces de resolver los problemas planteados, aunque posean los conocimientos necesarios para darle solucin a la situacin problmica. Las causas pueden ser variadas, pero la Sicologa del Aprendizaje y la prctica pedaggica han demostrado que los alumnos que se apropian de procedimientos de trabajo mental que reflejan las formas de pensamiento y trabajo de la ciencia en general y de la programacin en particular, pueden llegar a resultados mucho mejores en la resolucin independiente de problemas. Los procedimientos con estas propiedades se llaman procedimientos

heursticos y del uso consciente que haga de ellos, depende en gran medida el xito o el fracaso al enfrentar la solucin de un problema.

Heurstica e investigacin cientfica. La palabra Heurstica, Eurstica o Heurtica, procede del griego (Eurisko) y quiere decir descubrir. En este sentido, considerada como ciencia de las regularidades del descubrimiento y la invencin, ha encontrado campo de aplicacin en ciencias tan diferentes como la Filosofa, la Sicologa, la Matemtica y la Pedagoga, atribuyndose su utilizacin por matemticos tan destacados como Aristteles, Arqumedes, Apolonio, Euclides, Pappus, Descartes, Leibniz y Bolzano, o por pedagogos y especialistas en Didctica como F.A.W Diesterweg, H.E.Armstrong, G. Polya, W. Jungk, W. Zillmer, H. Mller entre otros. El Diccionario Pedaggico dice de la Heurstica: "Que sirve o lleva al descubrimiento de algo. Los mtodos de investigacin que posibilitan la bsqueda y descubrimientos." 1 Segn Polya, la Heurstica es el "nombre de una ciencia bastante mal definida y que se relaciona ya con la Lgica, ya con la Sicologa o la Filosofa. Tena por objeto el estudio de las reglas y de los mtodos del descubrimiento o la

invencin." Y agrega: "La Heurstica moderna trata de comprender los mtodos que conducen a la solucin de problemas, en particular las operaciones mentales tpicamente tiles en este proceso." 2 Para el doctor Horst Mller "La Heurstica es una disciplina cientfica

aplicable en todas las ciencias e incluye la elaboracin de principios, estrategias, reglas y programas que facilitan la bsqueda de vas de solucin para problemas, es decir, para tareas de carcter no algortmico de cualquier tipo y de cualquier dominio cientfico o prctico" 3 La heurstica ha estado siempre relacionada con la investigacin y la bsqueda de mtodos para investigar y preocup desde la antigedad a cientficos y filsofos; as vemos que Renato Descartes en su famoso libro "El discurso sobre el
1 2

Diccionario Pedaggico. Editorial . Polya, How to solve it?.

mtodo" apunta como preceptos fundamentales de su mtodo de investigacin los siguientes: "El primero de estos preceptos consista en no recibir como verdadero lo que con toda evidencia no reconociese como tal, evitando cuidadosamente la precipitacin y los prejuicios, y no aceptando como cierto sino lo presente a mi espritu de manera tan clara y distinta que acerca de su certeza no pudiera caber la menor duda. El segundo, era la divisin de cada una de las dificultades con que tropieza la inteligencia al investigar la verdad, en tantas partes como fuera necesario para resolverlas. El tercero, ordenar los conocimientos, empezando siempre por los ms sencillos, elevndome por grados hasta llegar a los ms compuestos, y suponiendo un orden en aquellos que no lo tenan por naturaleza. Y el ltimo, consista en hacer enumeraciones tan completas y generales, que me dieran la seguridad de no haber incurrido en ninguna omisin4 Aunque Mario Bunge considera en su libro "La investigacin cientfica que No se conoce receta infalible para preparar soluciones correctas a problemas de investigacin mediante el mero manejo de los ingredientes del problema: slo la resolucin de problemas de rutina es, por definicin una actividad en gran medida regida por reglas." , aclara posteriormente que "...pueden darse algunos consejos para la manipulacin de problemas de investigacin para aumentar la probabilidad del xito". Esas reglas heursticas o consejos se pueden resumir en: 1.- Formular el problema con claridad. 2.- Identificar los constituyentes. (Sealar premisas, 3.- Descubrir los presupuestos. 4.- Localizar el problema. incgnitas, etc.).

Mller Horst. El trabajo Heurstico y la Ejercitacin en la Enseanza de la Matemtica en la Enseanza General Politcnica y Laboral. Folleto editado en el I.S.P. Frank Pas Garca. Santiago de Cuba. 1990 4 Descartes, Renato. Discurso sobre el Mtodo. Investigacin de la Verdad. Ediciones Universales. Bogot 1994. pg 31

5.- Seleccionar el mtodo. 6.- Simplificar. 7.- Analizar el problema (desmenuzar el problema en sus unidades ms simples o subproblemas). 8.-Planear. 9.-Buscar problemas anlogos resueltos. 10.- Transformar el problema. 11.- Exportar el problema. 12.- Controlar las soluciones.5 Se han mencionado los planteamientos de Descartes y de heursticas dadas por Mario Bunge para principal de la la investigacin, porque las reglas

el objetivo es la de

enseanza y del mtodo heurstico en la escuela,

plantearle al alumno situaciones similares a las que se enfrenta el investigador ante un problema desconocido al que tiene que darle solucin y por tanto, se

necesita que ste emplee conscientemente reglas, vas y mtodos similares a las que utiliza el investigador, para llegar a las soluciones de los problemas del aula, siempre que estos se acerque lo ms posible a la realidad. Estas reglas vas y mtodos son las el profesor tiene que ensear y

desarrollar en el alumno para que despus ste pueda resolver independiente los problemas que se le planteen en la asignatura en particular y en la vida en

general, para que sea capaz de realizar una planificacin adecuada del trabajo, dirigida hacia el objetivo que se quiere alcanzar, de modo que se racionalice el esfuerzo mental y prctico, para que el tiempo disponible se utilice con efectividad. El trabajo racional es una necesidad de la vida, ya que el saber de la humanidad aumenta constantemente, y el tiempo para su asimilacin en la escuela se mantiene igual o en algunos casos disminuye.

Bunge, Mario. La Investigacin cientfica. Editorial Ciencias Sociales. La Habana 1972. pg 224

La Heurstica en la enseanza de la Programacin Los mtodos heursticos en la enseanza estn encaminados a entrenar al alumno en vas para la resolucin independiente de problemas en forma planificada, con una racionalizacin del esfuerzo mental y prctico, utilizando con efectividad el tiempo dedicado al proceso pedaggico; adiestrarlo para resolver por s mismo otros problemas que le plantee la prctica laboral o social y capacitarlo para la asimilacin de otros mtodos de investigacin para enfrentar esta tarea si realiza estudios

superiores. Uno de los tratados ms importantes para la bsqueda de soluciones problemas utilizando la heurstica se debe a

al hngaro G. Polya mencionado

anteriormente en una de las definiciones de Heurstica. En su libro "How to solve it?" Polya plantea un plan para resolver un problema que se puede expresar en la siguiente forma: 1.- Usted debe entender el problema. 2.- Imagine usted un plan. 3.- Realice su plan. 4.- Examine la solucin obtenida. En cada paso Polya plantea un conjunto de preguntas que van desde

"cul es la incgnita?" hasta " Puede usted usar

el resultado o mtodo para

resolver otro problema?", pasando por "dibuje una figura", "divida la condicin en partes", etc. Particularmente significativa e importantes para el propsito de

resolver problemas de programacin, por analoga de la resolucin de problemas de Matemtica, son las siguientes preguntas que Polya las plantea para el punto nmero dos, ("Imagine usted un plan"): "Ha visto usted esto antes? O ha visto usted forma ligeramente diferente? ... He aqu un problema el mismo problema en relacionado al vuestro y

resuelto antes? Puede usted utilizarlo? Puede usted utilizar sus resultados? Puede usted utilizar sus mtodos? Puede usted introducir elementos

auxiliares con objeto de hacer posible su uso? Puede usted variar el problema? Puede usted variarlo todava de manera diferente? ...

"Si usted no puede resolver el problema primeramente algn problema problema ms

propuesto trate de resolver

relacionado con l. Puede usted imaginar algn

accesible relacionado con el dado? O un problema ms general?

U otro ms especial? O un problema anlogo? Puede usted resolver una parte del problema?... 6 En lo anteriormente expuesto, estn los elementos heursticos que utilizados racionalmente posibilitan7 la bsqueda de la solucin del problema planteado, los cuales se sintetizan en el cuadro de la siguiente pgina donde se han tomado en consideracin las particularidades de la Programacin Visual.

Referenciado por Fausto i Toranzo en Enseanza de la Matemtica. Buenos Aires 1959. El subrayado indica que la Heurstica no es una panacea, como se ha advertido desde su definicin, se trata solamente de una va racional de abordar la solucin de problemas
7

MEDIOS AUXILIARES HEURISTICO (apoyan el anlisis del problema)

FIGURAS ILUSTRTIVAS ESBOSO O FIGURAS DE ANALISIS. TABLAS QUE REFLEJAN RELACION ENTRE DATOS. COMPENDIOS DE DEFINICIONES Y CONCEPTOS FUNDAMENTALES. FIAGRAMAS DE FLUJO QUE ILUSTREN EL PROBLEMA. AYUDAS INCORPORADAS AL SISTEMA. ALGORITMOS BASICOS. BIBLIOTECAS DE PROCEDIMIENTOS Y FUNCIONES, YA SEAN PROFESIONALES O ELABORADAS POR EL ALUMNO.

PRINCIPIOS (Ayudan en la bsqueda del nuevo conocimiento, sugieren ideas para la solucin PROCEDIMIENTOS HEURISTICOS (Apoyan la realizacin consciente de actividades mentales, complejas y exigentes) REGLAS (Impulsos dentro del proceso de bsqueda de nuevo conocimiento)

ANALOGIA REDUCCION GENERALIZACION

ELEMENTOS HEURISTICOS

Se utilizan con frecuencia en las aulas para guiar el pensamiento de los alumnos ofrecindoles sugerencias o indicaciones, generalmente en forma de preguntas

ESTRATEGIAS

TRABAJO HACIA ADELANTE TRABAJO HACIA ATRAS DESCOMPOSICION DEL PROBLEMA EN SUBPROBLEMAS

Los elementos heursticos resumidos en el cuadro anterior se describirn a continuacin y se podr constatar su posible aplicacin mediante ejemplos ilustrativos generalmente programados en Visual Basic. Medios auxiliares heursticos Los medios auxiliares heursticos son recursos didcticos que utiliza el profesor, y ensea a utilizar a sus alumnos con el propsito de facilitar la comprensin de los problemas plantados y la bsqueda de la solucin por vas efectivas y racionales.

Figuras ilustrativas o figuras de anlisis El gran valor de las figuras como medios de ilustracin del problema es

evidente para la bsqueda de su solucin como se muestra en el siguiente ejemplo: Sea el problema: La ellos cadena de una bicicleta posee N eslabone, cada con una longitud de 0.8 cm. Confeccione uno de

el programa en

para determinar si la cadena una bicicleta cuyo pin mayor pin menor tiene un piones de D. radio R2

escogida posee y

puede emplearse un radio R1

y cuyo los

la distancia entre

Este problema se puede ilustrar mediante el siguiente grfico:

?
r1-r2 r1 r2 d r2

De la figura se infiere que la cadena necesaria para la bicicleta debe tener una longitud exacta de:

LC=r1 +r2 +2 d2 +(r1 r2 )2


Por lo que la cantidad de eslabones necesarios viene dado por la expresin:

LC CE = 0.8
Con estos elementos se puede completar el algoritmo as: Si N CE entonces la cadena puede emplearse en la bicicleta Si NO no puede emplearse. Este algoritmo se codifica en el siguiente programa:

Private Sub Command1_Click() Dim N As Integer 'NUMERO DE ESLABONES DADOS Dim LC As Double 'LONGITUD NECESARIA DE LA CADENA Dim CE As Integer 'CANTIDAD DE ESLABONES NECESARIOS Dim R1, R2, D As Double 'RADIOS DE LOS PIONES Y DISTANCIA ENTRE PIONES Dim PI As Double 'ALMACENA EL VALOR PI PI = 4 * Atn(1) N = Abs(Val(Text1.Text)) R1 = Abs(Val(Text2.Text)) R2 = Abs(Val(Text3.Text)) D = Abs(Val(Text4.Text)) LC = PI * R1 + PI * R2 + 2 * Sqr(D ^ 2 + (R1 - R2) ^ 2) CE = Int(LE / 0.8) If N >= CE Then Label2.Caption = "LA CADENA PUEDE EMPLEARSE" Else: Label2.Caption = "LA CADENA NO PUEDE EMPLEARSE, NECESITA " + Str(CE) + " ESLABONES" End If End Sub

Private Sub Command2_Click() End End Sub

NOTA: La expresin (R1-R2)2 hace innecesario determinar si R1>R2 en este problema

Tablas que reflejan la relacin entre los datos La construccin de tablas tambin permite establecer vnculos entre los datos y resultados esperados, dando indicios de las vas de solucin Sea el siguiente problema: En algunas regiones de Europa los campesinos tienen sistema curioso para multiplicar dos nmeros. El un

mtodo

consiste en lo siguiente: 1. Se forman dos columnas encabezadas por cada uno de

los nmeros. 2. enteros, En una columna se de escriben por 2 todos dicho los cocientes y los

resultantes

dividir

nmero

cocientes sucesivos que se obtengan, hasta llegar a 1. 3. En la otra columna se escriben tantos por 2 el nmero que encabeza la productos columna de

multiplicar

y los

productos sucesivo que se obtengan, como obtenido en la primera columna. 4. Se

cocientes se hayan

suman los mltiplos que estn frente

nmeros

impares de la columna de los cocientes. Haga el programa Private Sub Command1_Click() que implemente este algoritmo en List1.Clear ptima. L% = Len(Text1.Text) N% = Val(Text1.Text) Mediante una M% = Val(Text2.Text) tabla se ilustra e interpreta mejor este problema. If N% Mod 2 = 1 Then S% = M% los nmeros 45 y 64 Sean List1.AddItem Str(N%) + Space(L% Len(Str(N%)) + 5) + Str(M%) + "<==" 45 64 ====> 64 Else: S% = 0 22 128 List1.AddItem Str(N%) + Space(L% 11 256 ====> 256 Len(Str(N%)) + 5) + Str(M%) 5 512 ====> 512 End If 2 1024 Do N% = N% \ 2 1 2048 ====>2048 M% = M% * 2 Suma 2880 If N% Mod 2 = 1 Then A +partir de esta tabla resulta ms fcil buscar variantes S% = S% M% List1.AddItem Str(N%) + Space(L% implementacin 5) + Str(M%) + "<==" Len(Str(N%)) + del algoritmo. Else List1.AddItem Str(N%) + Space(L% Len(Str(N%)) + 5) + Str(M%) End If Loop Until N = 1 Label5.Caption = Str(S%) End Sub forma

para la

10

Compendio de definiciones y conceptos fundamentales Si el alumno posee un resumen de los conceptos, definiciones, frmulas,

elementos algortmicos, etctera, ya sean de programacin o de la disciplina especfica con la que est relacionada el problema de modo tal que le permita darle solucin, se puede encauzar en forma rpida y adecuada la bsqueda del algoritmo que se necesita. El profesor debe elaborar en su clase estos compendios en forma de

resmenes parciales o al finalizar una unidad o tema; aunque ms provechoso es ensear al alumno informaciones las formas de realizarlo, las vas para obtener las

que necesita, la organizacin que debe darle a este material y la

manera de utilizarlo, hasta lograr que el alumno incorpore a su mtodo de estudio y de trabajo docente la elaboracin de estos resmenes. Diagramas de flujos que ilustren el problema Mucho se ha hablado en favor y en contra de los diagramas de flujos en sus distintas variantes, y si bien el desarrollo de las computadoras y de las tcnicas de programacin han hecho que se olviden, no obstante, es vlido y adecuado su empleo como un recurso didctico, principalmente con grupos o estudiantes donde otras explicaciones o mtodos no logran los resultados deseados. Sea el conocido problemas: "Dada las longitudes de los tres lados de un
Private el programa que haga Sub CLASIFICA_Click()

tringulo, equiltero,

permita

clasificarlo

en

A = Val(Text1.Text) issceles o escaleno." B = Val(Text2.Text) C = Val(Text3.Text) If A = B Then ENTRAR LAS LONGITUDES DE LOS LADOS DEL TRIANGULO A,B,C If B = C Then A=B? Label4.Caption = "EQUILATERO" NO SI Else B=C? B=C? Label4.Caption = NO SI NO SI "ISOSCELES" End If A=C? ISOSCELES ISOSCELES EQUILATERO Else NO SI If A = C Then ESCALENO Label4.Caption = ISOSCELES "ISOSCELES" Else Label4.Caption = "ESCALENO" End If End If End Sub

11

Ayudas incorporadas a los sistemas. El desarrollo de compiladores y sistemas de aplicacin cada vez ms

complejos, hacen casi imposible el aprendizaje de todas las instrucciones, funciones y comandos que los mismos poseen, por lo que no pocas veces el usuario se encuentra ante un problema que necesita resolver, pero que no sabe cmo hacerlo o no sabe cules son los comandos, eventos o funciones que facilita el sistema y que le posibilitaran resolverlo; entonces tiene que comenzar a "navegar" por las ayudas del sistema hasta encontrar estas respuestas. El uso adecuado de los sistemas de ayudas, generalmente estructuradas en formas de hipertextos, es una de las habilidades que debe desarrollar el profesor con su alumnos, y utilizndolo en la clase como un medio auxiliar heurstico en la solucin de problemas. Particularmente importantes son los ejemplos que traen estas ayudas, los que pueden servir de guas del problema que se pretende resolver. En el ejemplo planteado al comentar el uso de tablas como medio auxiliar heurstico, se utiliz en el programa ejemplo el control ListBox, el cual tiene 10 mtodos, es casi imposible recordar la sintaxis y el uso de todos ellos, en el programa se ha hecho uso de dos, los mtodos Clear y AddItem. Un fragmento de la informacin que brinda la ayuda sobre este ltimo se muestra a continuacin.

12

El ejemplo dado en la ayuda complement la informacin necesaria para desarrollar el programa, en este caso se ha destacado en negritas. Compare esta informacin con el programa realizado.
Este ejemplo utiliza el mtodo AddItem para agregar 100 elementos a un cuadro de lista. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario con un control ListBox llamado List1, y despus presione F5 y haga clic en el formulario. Private Sub Form_Click () Dim Entry, I, Msg ' Declara variables. Msg = "Haga clic en Aceptar para agregar 100 elementos a su cuadro de lista." MsgBox Msg ' Muestra el mensaje. For I = 1 To 100 ' Cuenta de 1 a 100.

Entry = "Entrada " & I ' Crea la entrada. List1.AddItem Entry ' Agrega la entrada.
Next I Msg = "Haga clic en Aceptar para quitar una de cada dos entradas." MsgBox Msg ' Muestra el mensaje. For I = 1 To 50 ' Determina cmo quitar List1.RemoveItem I ' cada elemento Next I Msg = "Haga clic en Aceptar para quitar todos los elementos del cuadro de lista." MsgBox Msg ' Muestra el mensaje.

List1.Clear
End Sub

' Limpia el cuadro de lista.

Algoritmos bsicos Un algoritmo es bsico (AB) si resuelve una clase de problema que es determinante para la resolucin de otros problemas o clases de problemas con una mayor complejidad. Intencionalmente se ha dado una definicin de AB que es comprensible, pero no precisa, de manera que un algoritmo ser bsico o no en dependencia de distintos factores tales como: los objetivos del curso, la aplicacin que se desee hacer de la asignatura, de la estructura que un profesor le da a la asignatura que imparte, etctera. Ejemplo: si la aplicacin del curso de programacin se inclina para calcular el

fundamentalmente hacia la Matemtica, entonces el algoritmo

mximo comn divisor de dos nmeros puede ser considerado como un AB por la

13

aplicacin que tiene en la resolucin de otros problemas, pero si el tratamiento de bases de datos es la orientacin del curso, entonces ese fundamental. No obstante lo planeado, existen algoritmos propios de la Programacin, que requieren ser tratados cualquiera sean los objetivos del curso e intereses de alumnos y profesores. Bajo el punto de vista anteriormente mencionado, existen AB que pueden constituir verdaderos mdulos independientes dentro de un programa algoritmo no es

(subrutinas, subprogramas, procedimientos, funciones, etc ), o fuera de l, formando parte de UNITS o BIBLIOTECAS, DLL, segn el caso. Ejemplos de estos algoritmos bsicos modulares (AB-M) son los siguientes: Intercambiar dos valores ( para lenguajes que no tienen esta funcin). Calcular n! Leer un arreglo. Imprimir un arreglo. Ordenar un arreglo. Buscar un valor en un arreglo. Buscar y sustituir una subcadena dentro de una cadena.

Cada uno de los ejemplos mencionados se puede implementar en un mdulo unifuncional al que se le transfieren determinados datos y devuelve la informacin deseada. En el tratamiento metodolgico del estos AB-M el docente puede plantearse el logro de distintos objetivos y por ello desarrollar en los alumnos distintas

habilidades, en dependencia de los propsitos del curso que desarrolle, llegando incluso a establecer en un curso exigencias para determinados AB-M que no se consideren para otros. Estos objetivos pueden graduarse desde el nivel ms

ambicioso al menos exigente, segn se muestra en la tabla siguiente:

14

HABILIDADES Identificar el AB-M Describir el AB-M Interpretar el AB-M Explicar el AB-M Implementar el AB-M Aplicar el AE-M

NIVEL 1 X X X X X X

NIVEL 2 X

NIVEL 3 X

NIVEL 4 X

X X X X

Por ejemplo: El AE-M que permite buscar una subcadena dentro de una cadena y sustituirla por otra, puede impartirse a un grupo de alumnos con el propsito de desarrollar todas la habilidades del nivel 1, llegando incluso a elaborar una biblioteca que puede ser designada por CADENA donde se trate la manipulacin con datos del tipo STRING, donde se incluya este AB-M como un procedimiento o subrutina

denominado BUSCA_Y_SUSTITUYE, el cual tiene los siguientes parmetros: Cadena Subcadena a buscar y sustituir. Subcadena que sustituye a la buscada. Este grupo de nivel 1 debe ser capaz de elaborar el siguiente mdulo que resuelve el problema:
Sub BUSCA_Y_SUSTITUYE (CADENA, SUBCADENA_BUSCADA, SUBCADENA_NUEVA As String) TRANSITORIA$ = "" If InStr(CADENA, SUBCADENA_BUSCADA) <> 0 Then TRANSITORIA = Left(CADENA, InStr(CADENA, SUBCADENA_BUSCADA) - 1) + SUBCADENA_NUEVA + Right(CADENA, Len(CADENA) - (InStr(CADENA, SUBCADENA_BUSCADA) + Len(SUBCADENA_BUSCADA) - 1)) End If CADENA = TRANSITORIA End Sub

15

En otro grupo, donde se estudia el mismo AB-M el objetivo puede ser el estudio de la biblioteca CADENA y en este interesa conocer: 1. Que en esta biblioteca existe un mdulo llamado caso del mencionado AB-M slo

BUSCA_Y_SUSTITUYE. 2. Las funciones de este mdulo. 3. Los parmetros que hay que transferir para hacer uso del mismo. 4. Aplicarlo a la resolucin de problemas. Para este grupo de exigencias, el estudio de este algoritmo se corresponden con las del nivel 4 y como se puede observar slo hace uso del mdulo elaborado al invocarlo en el programa, como se destaca en negritas el ejemplo dado:

Private Sub Command1_Click() C$ = Text1.Text

Call BUSCA_Y_SUSTITUYE(C$, Text2.Text, Text3.Text)


Label1.Caption = C$ End Sub

Existen otros AB que no llegan a constituir conjuntos de instrucciones con la unidad estructural y funcional de los AB-M, pero que son indispensables para resolver otros problemas. Ejemplo: -Algoritmo para acumular una suma. -Algoritmo para acumular un producto. -Algoritmo para trabajar con archivos de datos.

16

- Algoritmo para implementar y programar un men. - Algoritmos para implementar un ContrlBox en una interfaz. Para estos AB no modulares (AB-NM) se requiere un nivel 1 de desarrollo cualquiera sea el objetivo del plan de estudio, pues mientras para los casos AB-M a un usuario le basta con identificar el mdulo que le interesa e invocarlo transfiriendo los parmetros correspondientes, en el caso de los AB-NM el programador tiene que asumir la elaboracin de todo el algoritmo, pues l slo conoce un esquema correspondiente a las partes principales del algoritmo necesario. Los AB-NM constituyen tambin una clase muy usada en los sistemas de aplicacin como sucesin de indicaciones para resolver un problema, ejemplos: Los pasos para elaborar un grfico utilizando un tabulador electrnico. Los pasos para definir un proceso de iteracin en una tabla utilizando una delta-celda. Bibliotecas de procedimientos y funciones, ya sean profesionales o elaboradas por el alumno. Aunque en el epgrafe anterior se hizo mencin de estas bibliotecas o colecciones de procedimientos, funciones o algoritmos bsicos modulares, por lo habitual y necesario que se hace cuando se desea programar en serio, es conveniente no slo ensearle al alumno el uso de las ya elaboradas sino tambin adiestrarlo en la elaboracin de sus propias herramientas de trabajo, ya que eso son en realidad; de manera que a medida que el alumno aprende y resuelve pequeos problemas, en el proceso de generalizacin de esos algoritmos se deben ir construyendo mdulos que le faciliten la solucin de problemas ms complejos. Estos mdulos deben cumplir dos reglas de oro de la programacin, las que juegan un papel fundamental en su aprendizaje: 1. Los nombres de las variables, funciones y procedimientos deben expresar la funcin que realizan. 2. En el programa se deben incluir todos los comentarios que sean necesarios para explicar cada parte del algoritmo utilizado Cuntos dolores de cabeza y prdida de tiempo ahorra este hbito al

17

programar, cuando al cabo de un tiempo se necesita estudiar nuevamente uno de estos mdulos para perfeccionarlo o aplicarlo! Principios heursticos Los principios, expresa el diccionario, que son cada una de las verdades, que sirve de fundamento a una ciencia. Para la Heurstica, la analoga, la reduccin y la generalizacin constituyen su fundamento porque: 1. Determinan en gran medida la accin de quien se enfrenta a resolver un problema. 2. Su campo de accin se extiende a todas las ramas del saber donde se aplique la Heurstica. 3. Son esenciales en la bsqueda de la solucin de un problema Lo anterior lo podr comprobar el lector al analizar separadamente cada uno de estos principios y constatar su manifestacin en los ejemplos que se plantean: Analoga Segn el diccionario Aristo, la analoga entre otras acepciones tiene la de relacin o semejanza y el diccionario de sinnimos entre otros consigna los de correspondencia, correlacin, relacin, parecido, semejanza, similitud, afinidad. Desde este punto de vista, la analoga permite resolver un problema a partir de determinar su relacin, semejanza, correspondencia, parecido, afinidad, o similitud con otro ya resuelto, luego, no comete ningn delito el alumno que para resolver un problema busca en su cuaderno otro parecido que le sirva de modelo, el error lo comete el profesor que no explota esta bsqueda, a veces instintiva del alumnos y le plantea problema idnticos a los ya resueltos, en lugar de proponerle una situacin con un grado de dificultad mayor, pero cuyo nivel de partida para la solucin pueda encontrarse en el problema resuelto. El diccionario de Lgica de A. Gutmanova8 es ms preciso y dice que analoga es Razonamiento sobre la pertenencia a un objeto o clase de objetos homogneos de

A. Gumnova y otros. Lgica en forma simple sobre lo complejo. Diccionario. Editorial Progreso. Mosc, 1991.

18

un determinado indicio (propiedad o relacin) a base de la semejanza de indicios sustanciales con otro objeto ( o clase de objetos homogneos). El objeto examinado directamente se llama modelo y el objeto del cual se busca la analoga prototipo (original). George Polya, en su libro Matemtica y pensamiento plausible expresa : Analoga es una especie de semejanza. Es, diramos semejanza sobre un nivel definido y conceptual...La diferencia esencial entre analoga y otras clases de semejanza yace, en las intensiones del pensador. Objetos semejantes son aquellos que concuerdan entre s en algn aspecto9 La analoga puede ser de propiedades y de relaciones. En el primer caso responde al siguiente esquema segn la Lgica: El objeto A posee propiedades a,b,c,d,e,f El objeto B posee propiedades a,b,c,d Es probable que el objeto B posea las propiedades e,f En la analoga de relaciones se conocen la relaciones entre dos objetos o clases de objetos homogneos: (a R b) y (c R 1d), las relaciones R y R 1 son anlogas, pero a no es anlogo a c ni b es anlogo a d. Un ejemplo clsico de este tipo de analoga que se establece entre el sistema planetario y la distribucin de los electrones alrededor del ncleo atmico. Segn el profesor Nilolai Petrov, La analoga como un factor heurstico positivo, puede ayudar en tres direcciones: 1. Puede aplicarse para que los alumnos descubran una proposicin nueva para ellos, y la formulen. 2. Puede sugerir el mtodo y el procedimiento para la demostracin de una proposicin nueva.

Citado por el Dr. Carlos Expsito en Elementos Heurstico, material indito

19

3. Pude sugerir la va para la resolucin de un problema, de un ejercicio. 10 Ejemplos de aplicacin de la analoga en la programacin En la bsqueda de un nuevo algoritmo bsico Ejemplo # 1 Se conoce el algoritmo para almacenar en una variable suma de n valores: SUMA <--- 0 INICIO DEL CICLO .......... SUMA <--- SUMA + VALOR ......... FIN DEL CICLO. Anlogo a este algoritmo, exprese el que permite almacenar en una variable el producto de n valores. Evidentemente, en este caso se requiere sustituir la suma por un producto (PRODUTO = PRODUCTO * VALOR), pero adems, la asignacin inicial SUMA = 0 se debe transformar en PRODUCTO = 1. Ejemplo # 2 El algoritmo para intercambiar dos variables A y B en los lenguajes de programacin que as lo requieran por no tener instrucciones que lo posibilite, se puede ilustrar por la la

analoga de intercambiar el contenido de lquido de dos copas, utilizando una tercera copa vaca como se ilustra en el

siguiente grfico:

paso # 2

A
10

Citado por el Dr. Carlos Expsito en Elementos Heurstico, material indito

paso # 1

20

paso # 3

Quedando el algoritmo en la siguiente forma: Sub intercambia(a, b) c=a a=b b=c End Sub

Para elaborar un nuevo concepto Ejemplo # 3 Para elaborar el concepto de asignacin de valores a una variable, en muchos libros se establece una analoga entre la memoria de la computadora y un archivo, donde cada gaveta representa una localizacin de memoria y al igual que una gaveta se depositan distintos objetos, en cada localizacin de memoria se

depositan distintos valores; de manera que para asignaciones como: X=X+5 Se pueden interpretar por analoga que a los objetos depositados en la gaveta que contena una cantidad X de objetos, se aaden 5 objetos ms, de manera que ahora en esa gaveta hay X+5 objetos.

21

5 X X

X=X+5
Para resolver un problema Ejemplo # 4 Se tiene resuelto el problema de determinar el algoritmo que permita calcular el mximo comn divisor de dos nmeros. Se plantea buscar el algoritmo solucin para calcular el mnimo comn mltiplo de dos nmeros, estableciendo la analoga entre ambos conceptos matemticos y los elementos tomado en consideracin para resolver el problema inicial. El problema puede plantearse del siguiente modo: Informacin conocida. El mximo comn divisor de dos enteros a y b ( mcd(a,b))

es el mayor nmero que los divide exactamente a ambos. De esta definicin se infiere que el mcd(a,b) debe

buscarse entre los divisores del menor de los nmero como se muestra en la siguiente funcin :

22

Function mcd(aa, bb As Integer) As Integer a=aa : b=bb 'Deposita en a el menor valor If a > b Then Call intercambia(a, b) auxiliar% = 0 Do auxiliar% = auxiliar% + 1 'Determina posibles mcd entre divisores de a mcd = a \ auxiliar% Loop Until a Mod mcd = 0 And b Mod mcd = 0 End Function

Antes de pasar a la segunda parte del problema analice detalladamente cada una de las partes del algoritmo utilizado en la funcin. Planteamiento del problema El mnimo comn mltiplo de dos enteros a y b ( mcm(a,b))

es el menor nmero que contiene un nmero exacto de veces a cada uno de ellos, con ms precisin, es el menor mltiplo comn de ambos nmeros. Partiendo de esta definicin y estableciendo la analoga necesaria con el algoritmo de la funcin definida para el

mcd(a,b), complete los espacios en blancos correspondientes: De la definicin que infiere que el mcm(a,b) debe buscarse entre los Function mcm(aa, bb As Integer) As Integer a=aa : b=bb 'Deposita en a el ________ valor If a ____ b Then Call intercambia(a, b) auxiliar% = 0 Do auxiliar% = auxiliar% _____ 1 'Determina posibles mcm entre los _________ de a mcm = a ______ auxiliar% Loop Until _________ = 0 And ______________ = 0

23

End Function

_________ del ___________ de los nmeros. Como puede observarse en este ejercicio est explcita la intencionalidad de que el alumno aplique la analoga para resolver el problema que se plantea.

Private Sub Text1_KeyPress(KeyAscii As Integer) Label1.Visible = False Label2.Visible = False End Sub Private Sub mcdiv_Click() Label1.Visible = True Label1.Caption = Str(mcd(Val(Text1.Text), Val(Text2.Text))) End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer) Label1.Visible = False Label2.Visible = False End Sub

Private Sub mcmult_Click() Label2.Visible = True Label2.Caption = Str(mcm(Val(Text1.Text), Val(Text2.Text))) End Sub

Reduccin Dice el ya referido diccionario Aristo que es la accin de reducir o reducirse, y reducir entre otras acepciones tiene la de convertir una cosa en otra y entre sus sinnimos estn: mudar, cambiar, convertir. La interpretacin ms conocida es la de reducir un problema o parte del problema o un modelo de problema ya resuelto. Ejemplos la reduccin en programacin Ejemplo # 1 Una variante de solucin diferente a la planteada en el ejemplo de analoga, para el caso de determinar el mnimo comn mltiplo de dos nmeros, puede ser la de aplicar la propiedad que se expresa mediante la frmula mcd(a,b).mcm(a,b)= a*b,

24

es decir:

mcm(a,b) = (a*b) / mcd(a,b)

De esta manera el problema de hallar el mcm(a,b) se redujo a: 1. Hallar em mcd(a,b). Problema ya resuelto 2. Dividir el producto de a*b por el mcd(a,b)
Function mcm(a, b As Integer) As Integer mcm = (a * b) \ mcd(a, b) End Function

Ejemplo # 2 Al mtodo de reduccin se ha hecho referencia al considerar como medio auxiliar heurstico los mdulos de funciones y procedimientos. Supongamos que se dispone de un mdulo BASIC llamado ENTERO, en el que estn las dos funciones MCD y MCM mencionadas y se plantea, a un alumno, que no necesariamente tiene que conocer la forma en que dichas funciones se han implementado, el siguiente problema:

Haga el programa que permita calcular la suma de dos fracciones de la forma

h k

p q

expresando el resultado en forma simplificada Una forma elemental de resolver el problema es empleando el siguiente algoritmo: 1. Leer h,k,p,q 2. denominador = mcm( k, p ) Calcular el comn denominador 3. numerador = (denominador \ k) * h + (denominador \ q) * p 4. factor_comun = mcd (denominador , numerador) 5. denominador = denominador \ factor_comun

25

6. numerador = numerador \ factor_comun 7. mostrar el resultado Como se observa, el algoritmo solucin se simplific porque se han hecho las adecuadas reducciones a problemas ya resueltos en el mdulo ENTERO.

Private Sub Command1_Click() h% = Val(Text1.Text) k% = Val(Text2.Text) p% = Val(Text3.Text) q% = Val(Text4.Text) denominador% = mcm(k%, q%) numerador% = (denominador% \ k%) * h% + (denominador% \ q%) * p% factor_comun% = mcd(denominador%, numerador%) denominador% = denominador% \ factor_comun% numerador% = numerador% \ factor_comun% Label6.Caption = Str(numerador%) Label7.Caption = Str(denominador%) End Sub

La reduccin adopta en ocasiones la forma de recursin , consiste en transformar lo desconocido acudiendo a lo conocido. Ejemplo # 3 Se conoce el algoritmo para determinar el mximo comn

divisor de dos nmeros y se desea calcular el mximo comn divisor de n nmero dados en una arreglo a1,a2,a3,a4...an. Aunque existe la llamada regla de Sturm para hallar el mximo comn divisor de varios nmero, el problema se puede reducir a calcular el mximo comn divisor de dos nmeros n-1 veces, partiendo de que: mcd(a1,a2,a3,a4,,,an) = mcd(M,a3,a4,,, an), siendo M =mcd(a1,a2)

26

El algoritmo en cuestin es:

m = mcd(a(1),a(2)) for i= 3 to n m = mcd ( m, a(i)) next i

La modelacin es otra forma de reduccin, consistente en buscar una interpretacin (un modelo del problema dado, en otro dominio con el fin de poder aplicarle las leyes del nuevo dominio, a la resolucin del problema transformado y, realizando la transformacin inversa del modelo, llegar a la resolucin del problema de partida. Para los problemas que se plantean en la escuela, este proceso es el de identificar los recursos computacionales necesarios para resolver un problema,

constituye a veces la clave necesaria para resolverlo, por eso es conveniente reformular el problema en trminos computacionales. Con el siguiente ejemplo se ilustra lo expresado: En una competencia de tiro de jabalina en la que

participaron n atletas, se realizaron 5 lanzamientos por cada atleta. Teniendo en cuenta los resultados, elabore un programa que: a) Imprima el listado de competidores en el orden en que terminaron la competencia. b) Determine en cul intento cada atleta logr su mejor resultado. c) Conociendo el rcord nacional y el rcord para el

evento, determinar si se mejor alguno de ellos destacando el nuevo rcord.

27

Al analizar el problema, el primer inciso indica que se debe hacerse un ordenamiento en un conjunto de datos y el segundo indica que es necesario conservar la informacin original. Un modelo de trabajo puede ser arreglos de memoria, utilizando
11

el de darle a los datos el tratamiento de de bsqueda y

los conocidos algoritmos

ordenamiento. Una reformulacin del problema siguiendo el modelo escogido, se pudiera expresar en los siguiente trminos: Se tiene un arreglo NOMBRE con n cadenas y una arreglo DATO de orden n X 6 con nmero reales. a) Busque en cada fila i del arreglo Dato el mayor valor y asgnelo a DATO(i,6). b) Tomando los valores de DATO(i,6), ordene descendentemente segn estos valores el arreglo DATO y haga los cambios correspondiente en el arreglo NOMBRE. c) Busque en cada fila i el ndice j correspondiente a la columna cuyo valor coincida con DATO (i,6). d) Dado los valores RN (rcord nacional) y RE (rcord del evento), determine si DATO(1,6) es mayor que RN o RE. El proceso de interpretar el problema original en otro dominio (tratamiento de datos en un arreglo) para aplicarle las leyes en ese dominio (ordenamiento, bsqueda, identificacin de datos en filas y columnas, etc.) se ha realizado; la transformacin inversa se realiza en la siguiente forma: a) Se imprime el listado de los nombres (arreglo NOMBRE) ya

ordenados y los correspondientes valores de DAT(i,6). b) Al ndice j del DATO(i,j) que coincida con DATO(i,6) se le hace

corresponder con el intento donde el atleta logr el mejor resultado. c) Segn sea o no DATO(1,6) > RE o DATO(1,6) > RN se indica que se

mejor o no el rcord nacional o del evento.


11

El lector puede buscar otro posiblemente mejor.

28

Generalizacin Expresa el diccionario que generalizacin es la accin de generalizar y sobre este verbo precisa: Hacer general o comn una cosa... abstraer lo que es comn a muchas cosas para comprenderlas todas en un concepto general . La generalizacin a veces est relacionada con la induccin, es decir obtener suposiciones de un conjunto de objetos, fenmenos o relaciones, a partir del anlisis de casos particulares o especiales. Ejemplo # 1 Los alumnos saben el algoritmo para ordenar tres nmeros (A,B,C) en forma ascendente o descendente Algoritmo para ordenar en forma descendente tres nmeros A,B,C IF A < B THEN INTERCAMBIA ( A, B) IF A < C THEN INTERCAMBIA ( A, C) IF B < C THEN INTERCAMBIA ( B, C)

y se le plantea el problema de ordenar todos los nmeros contenidos en un arreglo de n elementos:

Algoritmo para ordenar en forma descendente N nmeros de un arreglo FOR I = 1 TO N - 1 IF A(I) < A(I+1) THEN INTERCAMBIA (A(I) , A(I+1)) NEXT I

Pero la generalizacin tiene en computacin otras facetas que no siempre son explotadas por el profesor: Ejemplo # 2

29

En el Ejemplo # 1 planteado para demostrar el uso de las figuras ilustrativas y los esbozos como medios auxiliares heursticos, se plantea que los eslabones miden 0.8 cm, pero la situacin que se enuncia es vlida no slo para una bicicleta, sino tambin para cualquier transmisin por cadenas, lo que es muy utilizado en la industria mecnica, pero en este caso la longitud de los eslabones vara, por lo que este algoritmo sera ms general si el usuario aportara la longitud de los eslabones (LE), por lo que la frmula.

LC CE = 0.8

se transformara en otra ms general

LC CE = LE
La generalizacin est presente en todo problema de programacin bien resuelto, ya que no se trata de buscar un algoritmo que d solucin a cada uno de los problemas particulares planteados, sino que se deben buscar modelos generales de algoritmos que resuelvan clases de problemas. A veces se plantea como problema elaborar un programa para calcular el promedio de las notas de 40 alumnos de un aula y otro para determinar el promedio de los metros cuadrados de tejidos producidos por una fbrica textil en un ao, vistos cada uno como problemas independientes; pero si al darle solucin el primero, el profesor generaliza el procedimiento y plantea, a partir de la solucin particular dada, otro problemtica ms general, la de definir una funcin o subprograma que permita calcular el promedio de n datos, lograra entonces una generalizacin del problema, que permitira posteriormente, aplicar el principio de reduccin al segundo problema o a otro cualquiera que perteneciera parcial o totalmente a la misma clase de problemas. Aunque en ocasiones, generalizaciones como las planteadas en el prrafo anterior no son factibles porque el alumno no posee la informacin necesaria para comprenderlas, en el momento en que esto sea posible, debe hacerse, destacando en ese momento que se ha hecho una generalizacin de los problemas tratados, destacando que aquellos son casos particulares del nuevo algoritmo. Otro problema que atenta contra la generalizacin es el no analizar adecuadamente, en el proceso de puesta a punto del programa, el comportamiento del mismo ante valores extremos, este es un vicio que trasmite la prctica, donde la

30

intervencin del hombre o el tratamiento de algoritmos en otras ciencias no requiere de las consideraciones que exige la computacin; un ejemplo de lo expresado es el siguiente: Ejemplo # 3 Es bien conocido el algoritmo para determinar las soluciones de una ecuacin de segundo grado Ax2 + Bx + C = 0 con A 0, soluciones dadas por:

B B 4AC x= 2A
Para escribir un programa que de solucin a este problema se debe partir del supuesto de que A, B, C puedan tomar cualquier valor real y por tanto hay que realizar un anlisis de diferenciacin de casos. As: Si A = 0, Si A = 0, B = 0, C = 0 entonces existen una infinidad de soluciones B = 0, C 0 entonces es un imposible
C B

Si A = 0 y B 0 entonces la ecuacin es de primer grado X = Si A 0 y B2 - 4AC 0 entonces

B + B2 4AC x1 = 2A
si no

B B2 4AC x2 = 2A

B B2 4AC x1 = + i 2A 2A

B B2 4AC x2 = i 2A 2A

Este algoritmo constituye una generalizacin del conocido algoritmo matemtico para la resolucin de una ecuacin de segundo grado. Reglas heursticas Anlogas a las preguntas formuladas por Polya como gua para orientar la resolucin de problemas, las reglas heursticas tienen un carcter de impulso dentro del proceso de bsqueda de nuevos conocimientos y de la resolucin de problemas.

31

Se distinguen de los principios por el alcance de su aplicacin, pues ellas no sugieren directamente la idea principal de solucin, pero ofrecen recomendaciones de gran utilidad para llegar a encontrarlas, ya que expresan las acciones y operaciones a realizar en la bsqueda de los medios algortmicos y computacionales y de las vas para resolver un problema. En la clase todo profesor las utiliza con frecuencia para guiar el pensamiento de los alumnos, ofrecindolas como sugerencias, indicaciones o en formas de preguntas como se expresan a continuacin las ms comunes a emplear en la enseanza de la programacin: En la resolucin de problemas

De qu datos dispones? En qu formas debes captar los datos? Qu problemas pretendes resolver con estos datos? En qu forma piensas presentar los resultados? Conoces las caractersticas tiene el hardware de que dispones? Puedes con l resolver el problema?

Conoces las caractersticas tiene el software de que dispones? Puedes con l resolver el problema?

Cmo puede formular este problema en trminos propios de la programacin?

Puedes disear la interfaz con los elementos que tienes? Puede una figura de anlisis ayudarte a resolver el problema? Puede una tabla de anlisis ayudarte a resolver el problema? Cul es el sistema de frmulas que contribuyen a resolver el problema? Qu adaptaciones requieren de acuerdo con las exigencias de la programacin?

Conoces algn problema resuelto anteriormente parecido al que se te plantea total o parcialmente?

32

Se corresponde el problema con algn modelo de algoritmo anteriormente estudiado?

Qu juego de datos te permiten garantizar la puesta a punto de programa una vez concluido?

........

En la elaboracin de conceptos

Cules con las caracterstica comunes y no comunes entre el nuevo concepto y otro estudiados que se relacionen con el tema?

Que casos particulares y especiales estn asociados al nuevo concepto? Cules son las caractersticas esenciales del nuevo concepto? Cmo se inserta el nuevo concepto en el sistema de conceptos de la asignatura o en el mapa conceptual?

......

En la elaboracin de algoritmos bsicos

Qu analogas y/o diferencias existen entre el problema que resuelve este algoritmo y otros conocidos?

Existe algn algoritmo estudiado anteriormente que resuelva parte de los que este algoritmo pretende resolver, de manera que pueda reducirse a l parcialmente el nuevo algoritmo?

Se necesita hacer diferenciacin de casos para analizar situaciones extremas?

Puede este algoritmo adaptarse a situaciones particulares? Puede extenderse a la solucin de un problema ms general? Puede expresarse mediante una funcin o un subprograma?, es decir, Se trata de un algoritmo modular?

33

....

Estrategias heursticas Constituyen los procedimientos principales para buscar los algoritmos necesarios para encontrar la idea fundamental de solucin y resolver un problema, por lo que tambin se llaman estrategias de bsqueda. Lo subrayado indica que en un problema pueden existir diversos subproblemas que sea necesario resolver para darle una completa solucin e incluso perfeccionar desde la forma de captar los datos hasta la de presentar los resultados, cuestiones estas que a veces influyen en la bsqueda de la va de solucin, pero, existen elementos esenciales generalmente algoritmos sin los cuales el problema no se puede resolver, hacia ellos tienen que ir encaminadas las estrategia heursticas. La literatura reconoce, en especial para la matemtica dos estrategias heurstica generales o universales que pueden aplicarse a cualquier tipo de problema: el trabajo hacia adelante o mtodo sinttico y el trabajo hacia atrs o mtodo analtico y para tipos de ejercicios especiales se dan otras estrategias como es el caso del esquema de Descartes ( mencionado en la introduccin) que para el caso de la programacin se prefiere denominar como estrategia de dividir el problema en subproblemas Trabajo hacia adelante Es la ms conocida y usada, se caracteriza porque las reflexiones para hallar la idea de la solucin parten de los datos y de ellos se infiere lo que se busca, pasando Qu resultados se esperan?

De qu datos se disponen?

3
34 Cmo obtener el resultado a partir de los datos qu datos?

por una serie de pasos intermedios, apoyndose en los conocimientos que se tiene, de manera que se obtenga la sucesin de ideas que permitan elaborar la secuencia de pasos necesarios para darle solucin al problema. Como estrategia su esencia est en buscar cules son los objetivos parciales o resultados intermedios que se pueden alcanzar partiendo de las condiciones previas o elementos dados. Este esquema de trabajo puede resumirse de la siguiente forma:

Trabajo hacia atrs Esta es una estrategia heurstica muy recomendada (aunque no siempre usada) en la enseanza de la Matemtica, es particularmente importante en la enseanza de la Programacin porque se corresponde con el estilo de programacin descendente (Top-Dwon) por lo tanto se aboga por ella en la enseanza de la asignatura y que aunque est declarado en los objetivos de casi todos los programas de estudios, no siempre se es consecuente con su enseanza. Esta estrategia de trabajo se caracteriza por el examen previo de lo que se busca, es decir, se parte de lo que debe obtener y apoyndose en los conocimientos y recursos de que dispone ( algoritmos, conceptos, uso de medios auxiliares

heursticos, principios heursticos, reglas heursticas, etc), analizar posibles resultados intermedios de los que se puede deducir lo buscado, es decir, en cada momento es preciso hacer una pregunta anloga a la siguiente Qu se necesita hacer para obtener este resultado?, hasta llegar a un resultado elemental o a los datos necesarios. De manera que recorriendo el razonamiento en sentido inverso (esto es fundamental) se obtiene el algoritmo o la idea que da solucin al problema. En resumen, el anlisis comienza por lo que se busca y la orientacin para encontrar la idea de la solucin se encuentra en el establecimiento de las relaciones entre los datos, los resultados intermedios obtenidos y las exigencias del problema.

35

El siguiente ejemplo, ms matemtico que de programacin, pero por lo elemental permite ilustrar la estrategia del trabajo hacia atrs. Ejemplo # 1 Haga el programa que permita calcular el rea del mayor crculo inscrito en un tringulo del que se conocen las

longitudes de sus tres lados La solucin del problema segn la estrategia referida se ilustra en la siguiente pgina.

PASO HACIA ADELANTE

Preguntas 1. 2. Cul es el resultado esperado? Mediante qu frmula se obtiene el rea del crculo? 3. Qu elemento de esta frmula es desconocido? 4. Cmo se puede calcular el radio del crculo inscrito? 6. 5.

Respuestas Cmo se puede calcular el rea del tringulo a partir de los elementos dados en los datos? Qu hacer? 7. Cmo se calcula el semipermetro? 8. De qu datos se requiere para resolver el problema? clculo previo hay que

36

El clculo de rea de un crculo

A = R
R
R=

Area _ del _ tringulo _ inscrito semipermetro

At = s( s a)(s b)(s c)
S (semipermetro)

S =

a+b+c 2

Los datos a,b,c, de manera que formen tringulo.

PASO HACIA ATRAS

Como se puede observar en el esquema anterior, todo anlisis de problema segn la estrategia heurstica de paso hacia atrs trae como consecuencia un trabajo con paso hacia adelante que en el ejemplo planteado se reduce a: 1. Leer las longitudes de los lados del tringulo 2. Verificar si con esas longitudes es posible formar un tringulo y en caso de ser posible entonces

3.

S =

a+b+c 2
37

4.

At = s( s a)(s b)(s c)
At S

5. R =

6.

A = R

2
resultado esperado

En realidad el paso hacia atrs no siempre conduce a problemas tan sencillos como el planteado, muchas veces la bsqueda de los resultados parciales constituyen nuevos problemas que deben ser resueltos valindose de cualquiera de los medios o procedimientos heursticos que aparecen en el cuadro sinptico de la pgina 6 o a nuevos pasos hacia atrs y hacia adelante, pero con ejemplos tan sencillos como estos, planteados desde el principio, es posible adiestrar a los alumnos en esta estrategia heurstica que como se ha dicho y puede conprobar el lector, tiene semejanza con el estilo de programacin descendente. Descomponer un problema en subproblemas Esta estrategia heurstica responde al viejo principio latino Divide et impera (divide y vencers), es adems un principio de la programacin modular que surgi como una necesidad dentro del desarrollo histrico de las tcnicas de programacin al tener que enfrentar los programadores problemas cada vez ms complejos. La descomposicn de un problema en subproblemas, siguiendo los principios de la programacin modular puede hacerse en forma jerrquica o no jerrquica. El primer tipo, parte del principio de dividir un elemento componente, hasta llegar a los elementos ms simples. En ningn caso es posible comunicar una rama del rbol jerrquico con otra en forma directa. Esta comunicacin sin es necesaria, debe hacerse atravesando las lneas del rbol que conforma la jerarqua de la descomposicin. El segundo proviene de la particin ms o menos arbitraria de un conjunto. Esto puede afectar el resultado, ya que es una divisin subjetiva y al quedar fuertemente

38

relacionados los mdulos resultantes, implica que los cambios en uno de ellos, afectarn seriamente al resto. Fraccionado jerrquico Fraccionado no jerrquico

Ejemplo # 1 Haga el programa que suministre la informacin respecto a las pacientes en un hospital materno infantil con los siguiente datos:

Nombre de la hospitalizada Edad Si est en reposo, en preparto o dio a luz. En caso de haber dado a luz: Nombre y sexo del nio(a)

Por la descripcin de la informacin que se pide, es necesario no slo mostrar la informacin, sino tambin modificar la informacin, por los que el problema debe dividirse al menos en cuatro subproblemas fundamentales: 1. Aadir informacin a la lista de datos. 2. Mostrar la lista de datos. 3. Actualizar los datos de la lista en dependencia de si una paciente pas de reposo a preparto o si ha dado a luz. 4. Eliminar elementos de la lista para el caso en que sea dada de alta la paciente.

39

Estos elementos tambin permiten disear la interfaz que se va a utilizar, que en este caso se puede hacer coincidir la divisin hecha con las opciones en un men como la que se se muestra a continuacin:

Anlogo a las estratagia de paso hacia adelante y hacia atrs, todo proceso de de anlisis, (divisn en partes) tiene implcito un proceso de sntesis (integracin), slo as se completa el ciclo dialctico en aplicacin de la heurstica propuesta. Problemas como el planteado tambin pueden se utilizado para lograr el trabajo en colectivo y la socializacin de los alumnos, ya que, despues de discutido y analizado el problema con el colectivo de estudiantes y hecha la divisin del mismo en subproblemas, se puede organizar el grupo de alumnos en tantos equipos de trabajo como subproblemas existan, ms uno que tendr la responsabilidad de disear la interfaz que permita integrar los distinitos mdulos. Conveniado el nombre que cada equipo de trabajo debe asignar al mdulo que le corresponde programar, as como otras precisiones de compatibilidad, los equipos resolvern de forma independiente cada subproblema hasta su puesta a punto y finalmente se integrarn los mdulos programados dando solucin al problema. Programa heurstico general para resolver problema utilizando la programacin. Una propuesta de programa heurstico general para la resolucin de problemas utilizando la programacin se debe al Doctor en Ciencias Pedaggica Carlos Expsito Ricardo, quien en su tesis titulada Una estructuracin metodolgica para un curso

40

introductorio de la asignatura computacin en el nivel medio en Cuba hace una propuesta que se resume en: 1. Determinar loe elementos formales que integran el problema. Qu

hay que resolver? Cmo se presentan los resultados esperados? Con qu informacin o datos vinculados con los resultados se cuenta para obtener la solucin deseada? 2. 3. Describir el algoritmo solucin. Expresar simblicamente el algoritmo solucin en un lenguaje de

programacin. 4. resultados. 5. Introducir las acciones correctivas. Realizar con destreza la puesta a punto y el control de los

Partiendo de la Heurstica como ciencia de las regularidades del descubrimiento y la invencin, de las formulaciones tericas y constataciones prcticas que al respecto se han hecho en la Didctica de la Matemtica y de la propuesta del doctor Expsito, se puede disear un esquema o modelo como el que se muestra en la siguiente pgina.

MODELO HEURISTICO GENERAL PARA RESOLVER PROBLEMAS UTILIZANDO LA PROGRAMACION.

41

NATURALEZA SOCIEDAD PRACTICA HOMBRE PLANTEAMIENTO DE UN PROBLEMA

PROGRAMA A PUNTO

SELECCIN DEL JUEGO DE DATOS ADECUADO

ANALISIS DEL PROBLEMA

DISEO DE LA INTERFAZ GRAFICA VALORACION DE LOS RESULTADOS ACCIONES CORRECTIVAS DETERMINACION DEL (LOS) ALGORITMO(S)

PUESTA A PUNTO DEL PROGRAMA

CODIFICACION DEL (LOS) ALGORITMO(S)

Como se puede observar, en el modelo se parte del criterio de que todo problema de programacin, an los que tengan un carcter intracomputacional, se dan en la prctica, que no es ms que la interrelacin del hombre con la naturaleza y la

42

sociedad, de esa realidad objetiva surgen tambin los problemas que son objeto de investigacin, a los que se aade el elemento subjetivo del hombre que en primer lugar se percata de ellos y en segundo lugar hace corresponder su inters con el de la sociedad y la ciencia, se destaca esto porque un proceso anlogo sucede con los problemas docentes, los que pasan adems por el prisma del profesor y la

intencionalidad de ste al plantearlo a sus alumnos, por lo que generalmente estos problemas est bien formulado, es decir, el alumno (salvo que el profesor se proponga otro objetivo), de lo nico que tiene que preocuparse es de resolverlo, porque confa que tiene solucin y que ha sido previamente resuelto por el profesor o por el autor del texto . Tras el planteamiento del problema se realiza el anlisis del mismo:

Anlisis de los datos de que se dispone Anlisis de los resultados que se desean obtener. Anlisis de los conocimientos algortmicos, conceptuales o de ciencias afines necesarios para enfrentar la solucin del problema.

Anlisis del formato de captacin de los datos y presentacin de los resultados.

Los

elementos

anteriormente

enumerados

con

reiteracin

son

los

determinantes para el diseo de la interfaz y la bsqueda del o de los algoritmos solucin, los que el ocasiones guardan relacin con la iterface diseada, se destaca estas relaciones porque el anlisis del problema, el diseo de la interfaz y la bsqueda del algoritmo solucin tienen una dependencia mutua, en realidad constituyen una unidad, que se separan slo para un estudio analtico. Una vez diseada la interfaz y encontrado el o los algoritmos que dan solucin al problema, es necesario hacer una codificacin de estos en el lenguaje de programacin seleccionado, lo que tambin debe estar en correspondencia con los recursos informticos planteados en la interfaz diseada. Generalmente este paso no ofrece dificultad al alumno. El siguiente paso muchas veces olvidado lo constituye la puesta a punto del programa elaborado, Este paso es tan importante como la propia bsqueda del

43

algoritmo solucin y en ocasiones lo complementa. Consiste esencialmente en confrontar con la prctica el trabajo realizado; para ello es necesario seleccionar un juego de datos representativo de los distintos valores que pueden tomar las variables y de las situaciones que pueden darse al ser ejecutado el programa por una persona ajena a quien lo concibi e implement, confrontando los resultados o respuestas del programa con la prctica y las respuestas que se esperan obtener con el mismo; esto permite darle generalidad al programa elaborado, de manera que en lugar de resolver un problema particular, resuelva una clase de problema. En el proceso de puesta a punto pueden detectarse errores al constatarse que existen resultados que contradicen los que en la prctica deben darse, entonces es necesario hacer las correcciones necesarias; pero para ello es preciso determinar las posibles fuentes de error. La fuente de error ms inmediata y fcil de corregir, lo constituyen los errores de codificacin, no slo en el caso de la sintaxis que los sistemas detectan automticamente, sino en la falta de correspondencia entre algoritmo y codificacin. La segunda fuente de error, la ms frecuente y la menos fcil de corregir la constituye el algoritmo elaborado, por lo que para su rectificacin es necesario hacer nueva valoracin del mismo o incluso un reanlisis del problema en general. El diseo de la interfaz puede ser fuente de error, pero generalmente lo es en su relacin con la codificacin, el algoritmo o el anlisis del problema. Por ltimo, para generalizar el modelo, aunque se ha partido del supuesto que el problema tiene solucin y est bien formulado, pero el propio problema es susceptible de anlisis cuando en los pasos anteriores no se han detectado errores; la prctica a demostrado que aqu tambin se han encontrado no pocos errores. Cuando el programa est a punto y el problema queda totalmente resuelto, el mismo pasa a formar parte de la prctica, bien porque su ejecucin sirva para resolver un problema de aplicacin en la prctica, porque alguno de los algoritmos utilizados puedan pasar al arsenal de algoritmos bsicos o porque la solucin encontrada sirva de punto de referencia y analoga para resolver otros problemas similares. Al comentar el modelo, en el punto relativo a la bsqueda del algoritmo solucin se ha sido bastante impreciso, porque es el paso ms difcil para los alumnos, por lo

44

que se ha preferido tratarlo aparte en forma ms detallada, de manera que las reglas, principios y estrategias mencionadas anteriormente se sinteticen en un esquema que complemente al modelo propuesto y que sea una gua para la accin. Al abordar un problema segn el esquema que se adjunta en la siguiente pgina, es necesario tener presente las premisas indispensables para solucionar cualquier problema en programacin, la que como se puede ver se corresponde con la de entender el problema planteado por Polya o la de determinacin de los elementos formales que integran el problema segn el doctor Expsito, de manera que no hay elementos nuevos en esta parte del esquema que merezca un nuevo comentario. Elemento nuevo en este resumen con respecto a lo ya tratado es la reformulacin del problema, aspecto que se introdujo en un ejemplo, se insiste en ello por la importancia en el proceso identificacin de modelos y por no ser habitual su tratamiento en la clase, en ocasiones puede resultar incmodo, pero la ganancia metodolgica que se tiene cuando se establece como hbito en el momento de abordar la solucin de un problema y los resultados que se obtienen a la larga

merece darle la jerarqua que le corresponde.

45

PREMISAS NECESARIAS:

Problema que se desea resolver. Datos de que se dispone. Caractersticas de los datos. Formato de captacin de los datos y de presentacin de los resultados. Caractersticas del hardware y

REFORMULACION DEL PROBLEMA Plantear el problema en trminos de la programacin. DISEAR LA INTERFAZ segn los requerimientos del problema, de las premisas de que se dispone y de las posibilidades del software utilizado

REDUCIR EL PROBLEMA A OTRO YA RESUELTO. Del que se dispone de un mdulo programado o el algoritmo solucin

PASO HACIA ADELANTE (Datos, Pasos intermedios Resultados)

BUSCAR UN PROBLEMA ANALOGO YA RESUELTO

TRABAJO HACIA ATRAS (Programacin descendente)

P1 P2 P3 P4

1 2 3 . . . n

SOLUCION DEL PROBLEMA


SOLUCION DE LOS n SUBPROBLE MAS

DIVIDIR EL PROBLEMA EN SUBPROBLEMAS (Programacin modular)

. . .

Pn

ACTUALIZAR LOS CONOCIMIENTOS (Bsqueda de una nueva solucin desconocida)

PASO HACIA ADELANTE O INTEGRACION DE LOS SUBPROBLEMAS

46

Ejemplos de problemas reformulados Ejemplo #1 En la enseanza superior en Cuba las evaluaciones de las diferentes asignaturas se realizan en una escala de calificacin de 2 a 5 puntos. Se desea hacer un programa para determinar el promedio de las evaluaciones de un alumno en 5 asignaturas cursadas por l durante un semestre. Se quiere adems ubicarlo en la categora que corresponda segn su promedio teniendo en cuenta el

siguiente convenio: 5 puntos Excelente, 4 puntos Bien, 3 puntos Aprobado, 2 puntos Desaprobado Nota: Tomemos como convenio redondear el promedio al nmero entero ms prximo, considerando que si la parte decimal es 0.5 o ms se aproxima por exceso, si no por defecto. Premisas: Como se puede observar el texto (intencionalmente) es grande, por tanto siguiendo el esquema planteado se tiene:

Problema : Determinar el promedio de las evaluaciones de un alumno en cinco asignaturas y clasificarlo segn escala.

Datos: Las notas en cada asignatura. Captacin de los datos: Tienen que ser nmeros entero comprendidos entre 2 y 5.

Formato de resultados: El promedio debe redondearse al entero inmediato superior.

Reformulacin del problema: Determinar el promedio redondeado de 5 datos enteros comprendidos entre 2 y 5 y clasificar el resultado segn escala.

47

Diseo de la interfaz :

Si los datos son nmeros diferentes a 2,3,4,5 presentar un mensaje que diga: DATOS ERRONEOS borrando los datos al desaparecer el mensaje

Ejemplo # 2 En la cafetera de un centro docente se venden productos que cuestan 10, 20, 30, 50 y 80 centavos respectivamente. Haga el programa que indique: El total de venta en cada instante. La cantidad de productos vendidos de cada tipo y la recaudacin aportada por cada uno. Premisas:

Problema : El texto del problema es corto y claro, no requiere de modificaciones.

Datos:

Costo de cada producto. Tipo de producto que adquiere cada

comprador.

Captacin de los datos: Los datos tienen que ser los nmeros 0.10, 0.20, 0.30, 0.50 0.80.

Formato de resultados: Nmeros enteros para la cantidad de productos de cada tipo y notacin en pesos en centavos para las recaudaciones de venteas

48

Reformulacin del problema: Leer los datos ( 0.10, 0.20, 0.30, 0.50, 0.80) correspondiente al precio de cada producto y depositar en sendas variables sumadoras los valores correspondientes. Almacenar en otras cinco

variables la cantidad de datos ledos, totalizando ambas informaciones.

Diseo de la interfaz :

Interfaz El diseo de la interfaz se convierte en un elemento nuevo en la concepcin de la solucin del problema que se ha dado hasta el momento, el cual aunque ha sido mencionado, no se ha destacado en toda su magnitud, pero como se puede observar en los dos problemas planteados, puede determinar en los elementos de programacin y de algoritmizacin necesarios para la solucin del problema, as, si en el segundo ejemplo, en lugar de utilizar el control CheckBox se hubiera elaborado un diseo anlogo al del ejemplo 1, como el que se nuestra a continuacin, el algoritmo a utilizar tendra modificaciones:

Si el dato es un nmero diferente a 0.10, 0.20, 0.30, 0.50 y 0.80 presentar un mensaje que diga:

49

Con esta interfaz se necesitara, tal como se muestra, una validacin del dato de entrada y la transmisin del correspondiente mensaje ante posibles valores no aceptados; con lo que el algoritmo sera ms complejo aunque la programacin fuese ms elemental, se sitan ente comillas estas expresiones porque la valoracin de es compleja o es elemental en uno u otro caso, son puntos de vista que dependen de la habilidad del programador. Los lectores pueden buscar otras variantes ms eficientes de interfaz y de algoritmos correspondientes para el problema, pero la cuestin indiscutible es que el diseo de la interfaz influye y ocasiones determina el algoritmo que se necesita para resolver el problema. Es por tanto tarea de los docentes adiestrar a los alumnos en la bsqueda de interfaz que faciliten la comunicacin hombre mquina para darle solucin a los problemas planteados y que sean consecuentes con ellas a la hora de elaborar los algoritmos necesarios, utilizando por tanto los elementos de programacin que correspondan no slo a la solucin del problema, sino tambin a los requerimientos de la interfaz. El ltimo elementos nuevo en el esquema propuesto es la actualizacin de los conocimientos o bsqueda de una nueva solucin; en realidad esta situacin se presenta cuando la Heurstica no funciona, esto no debe parecer extrao, desde el principio se ha advertido que la Heurstica no es una panacea y ante un problema creador, por las vas puramente heursticas, no se puede encontrar la solucin, se

50

requiere entonces de creatividad, del pensamientos lateral, de la genialidad que todos poseemos en mayor o menor grado; porque como definiera el profesor Landa en el libro Ciberntica y Pedagoga: ... Un problema ser creador cuando no exista o el ejecutor no conozca el algoritmo de su resolucin, y cuando los conocimientos y acciones indispensables para resolverlo no se actualice directamente por asociaciones en el momento de percibir los datos del problema.12 Esta actualizacin necesaria para resolver el problema puede ser hecha de diversas formas:

Por el profesor, facilitando directamente el algoritmo solucin. Este es un mtodo fcil de aplicar.

Dando al alumno la base orientadora necesaria para que busque la solucin, resuelva el problema e incorpore el nuevo conocimiento para la solucin de otros problemas por la va heurstica. Este mtodo es difcil en su planificacin y ejecucin, pero el muy productivo.

Dejar al alumno que busque solo la nueva solucin. Este es el ms fcil de los tres, muy efectivo si en el aula todos los alumnos con de los llamados talentosos, en caso contrario es efectivo slo para una minora. Aunque esta aparente falla de la Heurstica pueda defraudar un

poco al lector despus de haber hablado tanto de sus virtudes del mtodo, la prctica pedaggica demuestra que quien aplica consecuentemente los principios, reglas y mtodos de la Heurstica, est por lo menos capacitado para percatarse cuando est en presencia de un problema creador, ante el cual necesita actualizar sus conocimientos, y cuando encuentra o recibe la informacin necesaria para actualizarlo, puede establecer ms rpidamente las asociaciones necesaria entre el nuevo conocimiento y los precedentes, repitiendo nuevamente el ciclo de aplicacin de la Heurstica, pero adems, el mismo entrenamiento para la bsqueda de la solucin que brinda la Heursticas, facilita en gran medida la bsqueda de la informacin necesaria para resolver el problema creador. Recomendaciones finales
12

Landa, L.N. Ciberntica y Pedagoga. Biblioteca Universitaria Labor. Mosc 1972

51

Segn el doctor Pal Torres Fernndez, la aplicacin de la en la clase de Matemtica tiene entre ventajas y desventajas las siguientes: Ventajas: Participacin del alumno en la bsqueda del conocimiento. Muy utilizado en la investigacin de problemas cientficos. Desarrolla la capacidad creadora e investigadora de los alumnos. Constituye la base para el trabajo independiente. Facilita el entrenamiento mental. Permite que se rompa la enseanza dogmtica. Al darle mayor participacin a los estudiantes contribuye a su motivacin. Aprendizaje productivo. El alumno elabora los conceptos. El alumno elabora definiciones y teoremas. Acostumbra al alumno a buscar soluciones. Desarrolla capacidades de resolver problemas. Dificultades: Mucho tiempo en clase. Mucho tiempo en la preparacin Difcil de aplicar en grupos malos u numerosos.13 En otro artculo el referido autor al comentar el poco avance que se ha tenido en la aplicacin de la Heurstica en la escuela seala: A qu razones responde el relativo poco avance del trabajo con esta importante herramienta metodolgica en la escuela? A nuestro juicio, son tres las causas fundamentales:

13

Torres Fernndez, Pal. El mtodo heurstico en la enseanza de la Matemtica del nivel medio general. En: Revista Educacin No. 60. MINED. La Habana, 1986. p115

52

las complejidades inherente propiamente al mtodo de enseanza heurstico. la escasez de investigaciones que, insistiendo en el aspecto terico, demuestren el resultado de una metodologa apropiada, y la atencin limitada al componente Mtodo de enseanza en general, y al mtodo heurstico en particular, en la formacin y superacin postgraduada de profesores de Matemtica de nivel medio, as como en sus actividades metodolgicas y de perfeccionamiento educacional 14 Situaciones anlogas se dan respecto a las ventajas de aplicar el mtodo heurstico en la enseanza de la Programacin, con un elemento a favor de sta, se trata de que mientras en Matemtica, el alumno debe dominar buena cantidad de contenidos, (definiciones, teoremas, algoritmos, etc.) para poder enfrentar la solucin problemas con relativa facilidad, en Programacin ese conocimiento esencial se reduce a las tres estructuras algortmicas bsicas, ya que con ellas basta para expresar cualquier algoritmo de solucin. Las tres razones por las que no se avanza en la aplicacin de la Heurstica en Matemtica estn presente de una u otra manera en Programacin y muy particularmente se destaca la deficiente estructuracin sistmica en la preparacin del contenido que se imparte, por lo que el docente no puede ser consecuente con la aplicacin de la Heurstica en las distintas situaciones que se dan en la clase de programacin. Responder a cmo estructurar este sistema puede constituir todo un tratado, pero al menos existen tres elementos fundamentales que el docente debe tener en cuenta en la planificacin del uso del mtodo heurstico en la clase de Programacin: 1. Estructurar el sistema de conceptos que va a impartir en el curso planificado para poder planificar y aplicar en su clase las reglas, principios y estrategias heurstica. Una tabla anloga a la que se adjunta puede simplificar este trabajo:

53

Se A l estn Concepto subordina subordinado antnimo al los concepto conceptos de de DATO Problema, Datos Informacin numricos no numricos .... constante variable CONSTANTE Dominio DATO C. Entera, de VARIABLE numrico, simple tipo de dato, precisin, de doble informacin precisin, de cadena,... Concepto

Est reacionado con

Anlogo al concepto de

2. Estructurar el sistema de algoritmos bsicos (A-B) utilizarn en el curso en forma anloga al de conceptos. La tabla que se adjunta puede ser una gua de organizacin del trabajo: A-B A-B anlogo Producto acumulado Producto acumulado mcd(a,b) A-B al que A-B A-B ms A-B puede particular general modular reducirse A-B no modular X 0!, 1! mcd(a,b) mcd(a1, a2,,,an) X X

Suma acumulada n! mcm(a,b)

3. Estructurar por unidades el sistema de ejercicios y problemas.

14

Torres Fernndez, Pal. Utilizacin de procedimientos heursticos en la formacin metodolgica. En: Revista Pedagoga Cubana Ao I/ julio-septiembre de 1989/ No.2. La Habana, 1989, p. 22.

54

Si bien la estructuracin del sistema de conceptos y algoritmos en forma de sistema es importante, la estructuracin de un sistema de ejercicios es imprescindible para el desarrollo del mtodo heurstico en la enseanza de la Programacin, ya que los problemas y ejercicios que se planteen al alumno deben tener la intencin de adiestrarlos en la aplicacin de la Heurstica a la solucin de los problemas, esta es tarea fundamental del docente, pues en la mayora de los textos, an los que se dedican slo a la ejercitacin, constituyen coleccin de ejercicios que en el mejor de los casos estn organizados en orden de dificultad, pero no concebidos en forma de sistema con el propsito de adiestrar a los alumnos en la aplicacin de la Heurstica. Un posible ejemplo de gua de orientacin para el estudio independiente, estructurado en la forma deseada se adjunta en la siguiente pgina.

55

GUIA DE ESTUDIO # 2 Tema: Determinar si un nmero se encuentra entre dos valores dados. Validacin de datos. TAREA 2.1

Ejecute el programa EJECUTA_TAREA_2 que te suministramos en el

disquete adjunto, cumpliendo con los requisitos que en el mismo se plantean.

Observa que: Si modificas cualquier nmero, la etiqueta que da el resultado se oculta

1.

durante la modificacin. 2. Si pulsas click sobre el botn ejecuta sin modificar los nmeros, la

etiqueta de resultados aparece y desaparece. Cmo es posible lograr este efecto? TAREA 2.2 Utilizando ahora el Editor de programas del Visual Basic abre el proyecto

TAREA_2 y explora en l: 1. La secuencia de instrucciones que aparecen asociadas al botn

EJECUTA, en particular If NUMERO <= MAXIMO And NUMERO >= MINIMO Then

56

Label5.Caption = "EL NUMERO " + Text3.Text + " ESTA ENTRE " + Text1.Text + " Y " + Text2.Text Else Label5.Caption = "EL NUMERO " + Text1.Text + " NO ESTA ENTRE " + Text1.Text + " Y " + Text2.Text End If Si no conoces la funcin del operador And, sita el cursor sobre l y pulsa la tecla F1. Lee cuidadosamente la explicacin. Despus responde la siguiente pregunta: Qu condicin debe cumplir un nmero para que se encuentre entre otros dos? Creo que con esto es suficiente para que comprendas el algoritmo que se ha utilizado. 2. Estudia la secuencia de instrucciones asociadas a cada caja de texto.

Aqu es importante que observes el evento que se asocia a dicha caja de texto y el valor de verdad que toma cada vez label_.visible. 3. Retorna ahora a la secuencia de instrucciones asociadas al botn

EJECUTA y explica la funcin de la instruccin: Label5.Visible = Not Label5.Visible Si tiene dudas con el efecto del operador NOT, solicite ayuda igual que te suger con el operador AND. 4. Ahora ya tienes conocimientos para contestar la pregunta que te hice en la tarea 2_1. Contstala. Cmo es posible que aparezca y desaparezca la etiqueta de resultados? TAREA 2.3

Ejecuta nuevamente el programa

pero paso a paso como se te ha

enseado pulsando la tecla F9 para que observes las secuencias que se sigue en el algoritmo.

Cuando lo comprendas, ejectalo nuevamente pero esta vez te invito a

hacer una trampa: en lugar de nmeros escribe textos y observa lo que ocurre. Por qu ocurre esto? Cmo es posible resolver este problema?

57

Si vas a la ayuda, a un manual o texto de Visual BASIC y buscas por el

ndice la palabra IsNumeric podrs encontrar una posible solucin. Estdiala y aplcala para resolver el problema, a continuacin te voy a dar una ayuda: Private Sub Command2_Click() 'DECLARACION DE LAS VARIABLES A UTILIZAR Dim MAXIMO, NUMERO, MINIMO As Double Label5.Visible = Not Label5.Visible if IsNumeric(_______) And ________(Text2.text) _____ ______(_____) Then 'ASIGNA VALORES A LAS VARIABLES NUMERICAS MINIMO = Val(Text1.Text) MAXIMO = Val(Text2.Text) NUMERO = Val(Text3.Text) 'DETERMINA SI NUMERO ESTA O NO ENTRE MINIMO Y MAXIMO If NUMERO <= MAXIMO And NUMERO >= MINIMO Then Label5.Caption = "EL NUMERO " + Text3.Text + " ESTA ENTRE " + Text1.Text + " Y " + Text2.Text Else Label5.Caption = "EL NUMERO " + Text1.Text + " NO ESTA ENTRE " + Text1.Text + " Y " + Text2.Text End If Else Label5.Caption =_____________________________ _______________ Escribe el fin de la estructura End Sub

Modifica el programa que te di y gurdalo con el nombre TAREA_2_3

58

TAREA 2.4 Al parecer el programa ya no tiene problemas, pero te invito a que hagas la siguiente prueba, intencionalmente engaa al programa, da en MAYOR un nmero ms pequeo que en MENOR y observa que evidentemente no se previ este

problema. Resulvelo intercambiando los valores y emitiendo los correspondientes mensajes. Dos formas de intercambiar estos valores son las siguientes: 1.

Utilizando una tercera variable transitoria as: Define una variable que puedes llamar TRANSITORIA Haz las siguientes asignaciones:

TRANSITORIA=MAXIMO MAXIMO=MINIMO MINIMO=TRANSITORIA Si completas el siguiente esquema te dars cuenta mejor del algoritmo: PASO # 1 MAXIMO TRANSITORIA

PASO # PASO #

2.

Sin utilizar una tercera variable, cuando las variables son numricas se

puede utilizar el siguiente algoritmo que es ms eficiente MAXIMO=MAXIMO+MINIMO MINIMO=MAXIMO-MINIMO MAXIMO=MAXIMO-MINIMO

59

Explica con un ejemplo el porqu se puede realizar el intercambio

de dos nmeros mediante la anterior secuencia de pasos.

Aplica ambos algoritmos para resolver el nuevo problema y graba ahora

el proyecto con el nombre TAREA_2_4

TAREA 2.5 Busca en la ayuda, manual o texto de VB el uso de la funcin RND y utilizando las posibilidades que brinda para la generacin de nmeros aleatorios, disea un juego que tenga como propsito que el jugador adivine un nmero que se encuentre en un intervalo cuyos valores extremos lo genere el programa al azar. Te sugiero dar al usuario orientaciones que indiquen si el nmero que escoge est por encima o por debajo del intervalo generado por este programa, al que debes nombrar TAREA_2_5 en el momento de grabarlo. En el programa EJECUTA_RESPUESTA_5.EXE que aparece el disquete que te facilitamos, se muestra un posible modelo de solucin. Si no has comprendido bien la tarea anterior, ejecuta ese programa, pero en tu solucin debes ser creativo y hacer un juego ms interesante que el que se te propone como modelo. TAREA 2.6 Enuncia un problema donde sea necesario determinar si ciertos valores se encuentran entre otros dos, dale solucin mediante un programa, el que grabars en tu disquete de tareas con el nombre TAREA_2_6

60

BIBLIOGRAFIA

Crespo Borges, Toms Heurstica y computacin. Folleto. ISP. Flix Varela. Santa Clara 1990. Davidov, Vasile. La enseanza escolar y el desarrollo psquico. Editorial Progreso. Mosc 1988. Expsito Ricardo, Carlos. Elementos de heurstica. material indito. La Habana 1993. Fernndez, S. Sobre heurstica matemtica. En : Enseanza de la ciencia. Revista de investigacin y experiencias didcticas (nmero extra) Barcelona 1987. Ganelin S. I. La asimilacin consciente en la escuela. Editorial de libros para la Educacin. La Habana 1978 Junk, W. Conferencias sobre metodologa de la enseanza de la matemtica. Primera y segunda parte. Editorial Pueblo y Educacin. La Habana 1981. Kandakow N. I. Wrterbuch Logik. VEB Bibliographisches Institut Leipzig. Leipzig 1983. Klinberg, Lothar. Introduccin a la didctica general. Editorial Pueblo y Educacin. La Habana 1985. Landa, L. N. Algorithmierung im Unterricht. Volk und Wissen Volkseigner. Verlag. Beln 1970. Landa, L.N. Ciberntica y pedagoga. Biblioteca Universitaria Labor. Mosc 1972. Majmutov, M.I. La enseanza problmica. Editorial Pueblo y Educacin . La Habana 1983. Talzina, Nina Fiodorna. Psicologa de la Enseanza. Editorial Progreso. Mosc 1980. Toranzo Fausto I. Enseanza de la Matemtica. Buenos Aires 1959. UNESCO. Memorias del primer congreso iberoamericano de educacin matemtica. Pars 1991. Zillmer, W. Complementos de metodologa de la enseanza de la matemtica. Editorial Libros para la Educacin. La Habana 1981.

61

You might also like