lunes, 24 de marzo de 2008

Una Metodología de Resolución de Problemas I


Una Metodología de Resolución de Problemas[1]

CLASE 1: Una Metodología de Resolución de Problemas I
  • COMPRENDER el problema.
  • Diseñar una ESTRATEGIA.
  • Refinar la estrategia: El ALGORITMO y su prueba.
  • Codificar el algoritmo en un Lenguaje de computadora.
  • Corregir errores de compilación.
  • Ejecutar el PROGRAMA: Con una muestra de datos bien elaborada, que incluya todos los caminos del algoritmo, con valores de datos que incluyan puntos límites, incluso sin ningún dato, valores críticos y no tanto cantidad sino variedad.
Depurar errores de LÓGICA: Esto implica volver hacia atrás en las etapas, reacomodar la situación, debido a errores cometidos anteriormente, produciendo un mayor costo a si se hubiese detectado en su momento oportuno.

En el gráfico I se observa un mayor retroceso en las etapas, debido a errores ocasionados en etapas previas y detectados en etapas posteriores. En cambio en el gráfico II se observa que los errores cometidos se han detectado en la misma etapa en que ocurrieron, es decir al pasar a una próxima etapa no debemos arrastrar errores de etapas previas. Nuestros proyectos deben corresponderse al gráfico II.

1. COMPRENDER el problema:




1.1 Problema Elemental: Un problema es elemental cuando es sencillo, simple o evidente, para poder comprenderlo. Se destacan las siguientes partes: Datos, Acciones y Resultados.
Un problema elemental puede ser de:

    1.1.a Evaluación: Con una ACCIÓN, p.e. un cálculo, obtenemos la solución.
         Ej.1: Dados los catetos de un triángulo rectángulo, hallar la medida de su hipotenusa.

    1.1.b Decisión: Es necesario establecer una pregunta para obtener la alternativa adecuada, la cual podrá resultar en verdadero o falso.
          Ej.2: Dados 2 valores a y b enteros y distintos, emitir un cartel apropiado que dé a conocer cuál de ellos es mayor.

1.2 Identificar las PARTES PRINCIPALES del problema.

    1.2.a ¿Cuáles son los DATOS?, ¿cuántos?, ¿en qué instante se conocen?
    1.2.b ¿Cuáles son las ACCIONES a realizar y en qué orden lógico?
    1.2.c ¿Cuáles son los RESULTADOS?, ¿cuántos?, ¿en qué instante se forman?

Observación: El orden de:
  1. datos,
  2. acciones,
  3. resultados
obedece a un orden lógico. Este orden puede ser alterado por:
  1. datos,
  2. resultados,
  3. acciones
que obedece a un orden más práctico, orden de complejidad creciente, ya que los datos y resultados están informados en el enunciado -directa o indirectamente-, mientras que las acciones deben ser establecidas.

1.3 Establecer el concepto de TIPO o CLASE. No se deben considerar a los datos y/o resultados como un caso único, particular o singular, sino, mas bien, como pertenecientes a una clase o tipo, es decir, se deben generalizar, pluralizar, para que nuestro algoritmo funcione para ese conjunto de datos. A continuación se presentan los tipos de datos primitivos que maneja generalmente una computadora:

  • Numéricos:
    1.3.a Enteros.
  • Con signo: Pierde un bit para poder establecer el signo del número. La convención es: se utiliza el bit de la extrema izquierda o sea el de mayor peso; un cero indica que el número es positivo, un uno que es negativo y se encuentra representado en complemento a dos, es decir, se reemplazan ceros por unos y unos por ceros y luego se le suma uno, el resultado final corresponde al valor real. Notar la diferencia en 1, de los valores negativos con respecto a los positivos. Ver Tabla 1.
  • Sin signo: Debido a que no se requiere el signo del número se aprovechan todos los bits del formato para representar el valor. Ver Tabla 2.

    Formato binario de punto fijo con signo


Formato binario de punto fijo sin signo

bit de signo (positivo): los bits restantes corresponden a la representación del número dado en forma directa.1001011 = 1+2+8+64 = +75

bit de signo (negativo): los bits restantes corresponden a la representación del número dado en complemento a 2.
1001011 se reemplazan 0’s x 1’s y 1’s x 0’s
0110100 luego sumamos 1 = 0110101 =
1 + 4 + 16 + 32 = -53
En el formato sin signo todos los bits se utilizan para representar al número


    1.3.b Reales: Son todos con signo, el formato comp, solo conserva la parte entera del número y su parte decimal es siempre cero.
*Salvo el tipo real, los restantes tipos reales requieren el uso de la directiva al compilador {$N+} para poder utilizarlos en un programa Turbo Pascal.
  • No Numéricos:

1.3.c Caracteres. Utiliza un byte y el caracter debe ir encerrado entre apóstrofos, como en los siguientes ejemplos: ‘A’, ‘3’, ‘+’, ‘ ’, en el último ejemplo entre los apóstrofos el carácter es el espacio en blanco. Los caracteres o símbolos que utiliza la computadora son representados c/u. de ellos por un código numérico. Por ejemplo la letra ‘A’ tiene el código 65, la ‘B’ 66, ..., la ‘Z’ 90, la ‘a’ tiene el código 97, la ‘b’ 98, ..., la ‘z’ 122. El dígito ‘0’ tiene el código 48, el ‘1’ 49, ..., el ‘9’ 57. Los demás símbolos clasificados como aritméticos, gramaticales o símbolos especiales tienen sus respectivos códigos. Otros códigos son utilizados para indicar controles a diferentes dispositivos periféricos, como ser, el teclado, la impresora, la pantalla, el modem. El código ASCII –Código de Intercambio de Información Standard Americano- Figura 1, es utilizado por las PC’s y mainframes de distintos fabricantes de computadoras, en cambio IBM en sus mainframes adoptó un código particular, el EBCDIC. El código ASCII originalmente estaba formado por 7 bits, esto daba una posibilidad de 128 combinaciones diferentes, luego se amplió a 8 bits, por lo cual se expandió a 256 posibles combinaciones o representaciones de símbolos diferentes. Los primeros 128 símbolos corresponden al ASCII STANDARD y sus símbolos son siempre los mismos para distintos fabricantes de computadoras, en cambio los 128 símbolos restantes se denominan ASCII EXTENDIDO y cada fabricante representa los símbolos que crea conveniente utilizar. Del ASCII STANDARD los primeros 32 símbolos –0 al 31- no son utilizados para representar caracteres concretos, sino, mas bien, representan controles a diferentes dispositivos periféricos y son llamados CÓDIGOS TRANSPARENTES, p.e. el código 13 indica la tecla ENTER del teclado, el 27 ESCAPE, el 8 RETROCESO –BACKSPACE-, el 9 TABulación, el 10 AVANCE DE LÍNEA, el 12 AVANCE DE PÁGINA. Utilizando la tecla Alt izquierda en combinación con el keypad numérico se obtienen las representaciones en la pantalla del caracter correspondiente al código tipeado, p.e. Alt izq.+ 92, luego, al soltar la tecla Alt se emite en el editor de texto que estemos utilizando el carácter ‘\’ -barra invertida-.

Figura 1.

    1.3.d Boolean o Lógicos. Sólo dos valores son posibles: false o true, es decir, para indicar, falso o verdadero.

    1.3.e Cadenas de caracteres o Sartas. Se construyen a partir del tipo de dato caracter, por lo tanto, una cadena es una disposición o colección de caracteres. La cantidad de bytes que se requieren para este tipo de dato está establecido entre 1 y 255, al cual habrá que sumar un byte extra, utilizado para indicar la longitud de la cadena en un momento determinado durante el proceso. Al igual que la constante carácter, una constante de cadena va encerrada entre apóstrofos, p.e.: ‘esto es una cadena’, ‘3+2’, ‘’, el último ejemplo indica la cadena vacía, entre los apóstrofos no hay ningún caracter.

1.4 Problema compuesto: Un problema compuesto está formado por la sucesión de 2 o más problemas elementales. Por lo tanto, si determinamos que un problema es compuesto, lo que debemos hacer es dividirlo en problemas elementales, ya que éste último siempre es más fácil de comprender.

  Ejemplo 3: Dados los catetos de un triángulo rectángulo, hallar la superficie de un cuadrado, sabiendo que uno de sus lados es la medida de la hipotenusa, caso contrario, es el doble. Se observa en este ejemplo, que las acciones corresponden a dos problemas elementales, uno de evaluación y el otro de decisión.

1.5 Realizar un dibujo o una representación gráfica: Es posibilitar una mayor comprensión al problema dado, ya que un dibujo o gráfico colabora a comprender una idea, pero este dibujo deberá estar acompañado de rótulos o leyendas aclaratorias, como en los siguientes ejemplos de la Figura 2:

                                                                           Figura 2.

1.6 Reenunciar el problema: Es enunciarlo con otras palabras, o cambiando el orden de las frases originales, pero sin modificar ni sacar o agregar los datos dados originalmente o los resultados solicitados; p.e.: Hallar la hipotenusa de un triángulo rectángulo, conociendo las medidas de sus catetos.

Ejercitación:

En la Guía de ejercicios #1 deberá responder a las siguientes cuestiones referidas a la metodología aprendida:

1) Determine por cada uno de los ejercicios propuestos lo siguiente:
a) Si es un problema simple de evaluación o de decisión o si es un problema compuesto.
b) Cuales son las partes principales del problema. Detecte cantidad y momentos en que deben ser conocidos los datos y cantidad y momentos en que deban ser mostrados los resultados. Además indique las acciones como quedan definidas en cuanto al orden lógico de los acontecimientos.
c) A qué clase o tipo de dato corresponden cada uno de los objetos variables.
2) Realizar un dibujo que se ajuste al problema a resolver.
3) Reenuncie el problema.

[1] UNA METODOLOGÍA DE RESOLUCIÓN DE PROBLEMAS. Jorge D. Muchnik.. Prof. Titular de Sintaxis y Semántica de Lenguajes de la U.T.N. F.R.B.A.


Podcast en:
http://www.ivoox.com/clase-1-metodologia-comprender-problema_md_1225021_1.mp3





Siguiente: Metodología II