• No se han encontrado resultados

1 La Resolución de Problemas utilizando la Computadora

N/A
N/A
Protected

Academic year: 2021

Share "1 La Resolución de Problemas utilizando la Computadora"

Copied!
6
0
0

Texto completo

(1)

La Resoluci´on de Problemas utilizando la Computadora

Lissette Alvarez

Abril-Julio, 2004

El Computador es una m´aquina que no puede trabajar por si sola, ´unicamente realiza aquellas ´ordenes que el hombre le indique. Esas ´ordenes tienen que ser realizadas de tal forma que el computador las entienda, siendo esta la causa por la cu´al se hace necesario darle instrucciones agrupadas. Esto constituye el software, el cual es pensado y realizado por el hombre. El software esta conformado por el “conjunto de programas que se dise˜nan para el funcionamiento del computador”. Deben estar escritos en un lenguaje de programaci´on. El Software se divide en dos grandes tipos: software del sistema y software de aplicaci´on El software del Sistema es el conjunto de programas necesarios para que la m´aquina funcione, estos programas son b´asicamente, el Sistema Operativo, los Editores de texto, los Compiladores, Int´erpretes y los Programas de utilidad. El software de aplicaci´on son los que realizan tareas concretas, n´ominas, contabilidad, an´alisis estad´ısticos, etc., es decir todos aquellos programas que pueden ser escritos en un Lenguaje de Programaci´on.

1

La Resoluci´

on de Problemas utilizando la Computadora

Aunque el proceso de dise˜nar programas es un proceso creativo, se pueden considerar tres pasos que ayudan al programador en este proceso:

An´alisis del problema

Dise˜no del algoritmo

Resoluci´on del algoritmo en la computadora

Las fases de an´alisis y dise˜no del algoritmo requieren la descripci´on del problema en subproblemas y una herramienta de programaci´on: Diagrama de flujo, Pseudoc´odigo o Diagrama N-S (diagramas de Nassi-Schneider). En la tercera fase se implementa este algoritmo en un c´odigo escrito en un lenguaje de progra-maci´on, reflejando las ideas obtenidas en las fases de an´alisis y dise˜no.

(2)

Definici´on 1.1. Algoritmo. Un algoritmo es un m´etodo para resolver un problema mediante una serie de pasos precisos, definidos y finitos.

Se deriva de la traducci´on al lat´ın de la palabra ´arabe Alkhowarismi, nombre de un matem´atico y astr´onomo ´arabe que escribi´o un tratado sobre manipulaci´on de n´umeros y ecuaciones en el siglo IX.

Caracter´ısticas del Algoritmo

Preciso: tiene que indicar el orden de realizaci´on en cada paso.

Definido: si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el mismo resultado (con excepci´on de los programas que contienen comandos de generaci´on de datos aleatorios).

Finito: tiene un n´umero determinado de pasos y debe producir un resultado en un tiempo finito. Veamos algunos ejemplos.

Ejemplo 1.2. Ver una pel´ıcula. 1. Buscar el videocasete de la pel´ıcula. 2. Si el televisor y la video-casetera se encuentran apagados, encenderlos. 3. Sacar el video del estuche. 4. Introducirlo en la video-casetera. 5. Tomar el control del televisor y la video. 6. Dirigirme a el sof´a. 7. Ponerme c´omodo 8. Ajustar el volumen. 9. Disfrutar la pel´ıcula

Ejemplo 1.3. Cocinar arroz. 1. Lavar bien el arroz. 2. Buscar un recipiente (caldero) de tama˜no adecuado. 3. Agregar el agua necesaria de acuerdo a la cantidad de arroz. 4. Agregar aceite, sal, cebolla, ajoporro. 5. Colocar el recipiente en la cocina. 6. Encender la hornilla. 7. Esperar a que hierva el agua. 8. Agregar el arroz al agua hirviendo. 9. Dejar el recipiente en el fuego hasta que el arroz este blando. 10. Apagar la hornilla. 11. Servir. 12. Comer. ¡¡Buen provecho!!

Estos peque˜nos algoritmos cumplen con los requisitos descritos arriba, ya que cada paso precisa un orden y tiene un orden de pasos finitos.

Los algoritmos se pueden expresar por f´ormulas, diagramas de flujo, y pseudo c´odigos conocidos como herramientas de programaci´on. Est´a ´ultima representaci´on es la m´as utilizada por su sencillez y parecido a el lenguaje humano. El hecho de que un algoritmo sea una representaci´on paso a paso, implica que est´a compuesto por instrucciones elementales que no involucran ambig¨uedades, es decir que no pueden interpretarse de diferentes maneras

2

Fases para la Resoluci´

on de Problemas

1. An´alisis del Problema. En la fase de an´alisis en el proceso de programaci´on se determina que hace el programa. Esta fase requiere una clara definici´on donde se contemple exactamente lo que debe hacer el

(3)

programa y el resultado o soluci´on deseada. Dado que se busca una soluci´on se precisan especificaciones de entrada y salida. Para poder definir bien un problema es conveniente responder a las siguientes preguntas: ¿Qu´e entradas se requieren? (cantidad y tipo) ¿Cu´al es la salida deseada? (cantidad y tipo) ¿Qu´e m´etodo produce la salida deseada?

2. Dise˜no del Algoritmo. En la fase de dise˜no se determina como hace el programa la tarea solicitada. Los m´etodos utilizados para el proceso del dise˜no se basan en el conocido divide y vencer´as: la resoluci´on de un problema complejo se realiza dividiendo el problema en subproblemas y a continuaci´on dividir estos en otros de nivel m´as bajo, hasta que sea implementada una soluci´on en la computadora. Este m´etodo se conoce t´ecnicamente como dise˜no descendente (top-down) o modular. El programa principal (el m´odulo de nivel m´as alto) llama a subprogramas (m´odulos) de nivel m´as bajo, que a su vez pueden llamar a otros subprogramas. Estos m´odulos pueden ser planeados, codificados, comprobados y depurados independientemente y luego combinarlos entre s´ı. Este proceso implica la ejecuci´on de estos pasos hasta que el programa se ha terminado. El dise˜no del algoritmo es independiente del lenguaje de programaci´on en el que se vaya a codificar posteriormente.

3. Implementaci´on del Algoritmo. Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos: Codificaci´on y documentaci´on, Compilaci´on y ejecuci´on, Verificaci´on y finalmente la Depuraci´on.

(a) Codificaci´on y documentaci´on. Es la escritura en un lenguaje de programaci´on de la repre-sentaci´on de un algoritmo, en el caso de este curso se utilizan como lenguajes Octave o Matlab. La codificaci´on se conoce como programa fuente. La documentaci´on puede ser interna y externa. La documentaci´on interna es la contenida en l´ıneas de comentarios. La documentaci´on externa incluye an´alisis, diagramas de flujo y/o pseudo c´odigos, manuales de usuarios con instrucciones para ejecutar el programa y para interpretar los resultados. La documentaci´on es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa. Estos cambios se denominan mantenimiento del programa. Adem´as es de buena costumbre para todo buen programador, dejar comentado su c´odigo, para que el futuro programador pueda darle mantenimiento f´acilmente a el programa, o incluso, si es el mismo creador quien debe darle mantenimiento. La importancia de la documentaci´on debe ser destacada por su influencia en la etapa final, ya que programas pobre-mente documentados son dif´ıciles de leer, m´as dif´ıciles de depurar y casi imposibles de mantener y modificar.

(4)

ser traducido a lenguaje m´aquina. Este proceso se realiza con el compilador y el sistema operativo que se encarga pr´acticamente de la compilaci´on. Si al compilar el programa fuente se presentan errores (errores de compilaci´on), es necesario volver a editar el programa, corregir los errores y compilar de nuevo. Esto se repite hasta que ya no se presenten m´as errores, obteni´endose el programa objeto. Cuando no existen errores en el programa fuente se debe instruir al sistema operativo para que efect´ue la fase de montaje o enlace, del programa fuente con las librer´ıas del programa del compilador. Este proceso de montaje produce un programa ejecutable. Cuando se ha creado un programa ejecutable este se puede ya ejecutar desde el sistema operativo con solo teclear su nombre. Suponiendo que no existen errores durante la ejecuci´on (errores en tiempo de ejecuci´on), se obtendr´a la salida de resultados correctos del programa.

(c) Verificaci´on y depuraci´on. Es el proceso de ejecuci´on del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba como son: valores normales de entrada, valores extremos de entrada que comprueben los l´ımites del programa y valores de entrada que comprueben aspectos especiales del programa. Estos determinar´an si el programa contiene errores o no.

3

Estructura general de un programa

Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos) para que realice una tarea espec´ıfica. Un programa contiene dos bloques:

Bloque de declaraciones: en ´el se especifican todos los objetos que utiliza el programa (constantes, vari-ables, tablas, registros, archivos, etc.). En el caso particular de Octave/Matlab, este bloque de declara-ciones no forma parte del programa, estos lenguajes de programaci´on identifican autom´aticamente la estructura de las variables en juego.

Bloque de instrucciones: constituido por el conjunto de operaciones que se han de realizar para la obtenci´on de los resultados deseados.

Dentro del bloque de instrucciones de un programa podemos diferenciar tres partes fundamentales. En algunos casos, estas tres partes est´an perfectamente delimitadas, pero en la mayor´ıa sus instrucciones quedan entremezcladas a lo largo del programa, si bien mantienen una cierta localizaci´on geom´etrica impuesta por la propia naturaleza de las mismas.

Entrada de datos: la constituyen todas aquellas instrucciones que toman datos de un dispositivo externo, almacen´andolos en la memoria central para que puedan ser procesados.

(5)

Proceso o algoritmo: est´a formado por las instrucciones que modifican los objetos a partir de su estado inicial hasta el estado final, dejando ´estos disponibles en la memoria central.

Salida de resultados: conjunto de instrucciones que toman los datos finales de la memoria central y los env´ıan a los dispositivos externos.

Los algoritmos se encuentran compuestos de varios tipos de instrucciones. Una Instrucci´on es la parte m´as peque˜na de un programa que un computador puede ejecutar. Las instrucciones pueden ser:

1. Instrucciones de declaraci´on: se utilizan en aquellos lenguajes de programaci´on que no tienen declaraci´on expl´ıcita de los objetos. Su misi´on consiste en indicar al procesador que reserve espacio en la memoria para un objeto del programa, indicando asimismo su nombre, tipo y caracter´ısticas. Octave y Mat-lab disponen de declaraciones expl´ıcitas de los objetos y por ello los programas codificados en estos lenguajes no requieren de instrucciones de declaraci´on.

2. Instrucciones primitivas: son aquellas que ejecuta el procesador de modo inmediato. Las principales son asignaci´on, entrada y salida. Una instrucci´on de asignaci´on calcula el valor de una expresi´on y lo almacena en una variable. Una instrucci´on de entrada toma un dato de un dispositivo de entrada y lo almacena en un objeto o variable. Eventualmente, los datos de entrada no provienen de un dispositivo externo, sino que han sido colocados previamente en el mismo programa. Una instrucci´on de salida toma el valor de una expresi´on u objeto y lo lleva a un dispositivo externo (pantalla, por lo general). 3. Instrucciones compuestas: son aquellas que el procesador no puede ejecutar directamente, sino que

realiza una llamada a un subprograma, subrutina o p´arrafo.

4. Instrucciones de control: son aquellas que controlan la ejecuci´on de otras instrucciones. Instrucci´on de selecci´on o alternativa: controla la ejecuci´on de unas u otras instrucciones seg´un una condici´on. Puede ser simple o doble (SI y SINO). Instrucci´on de salto incondicional: altera la secuencia normal de ejecuci´on de un programa, continuando la misma en la l´ınea indicada en la propia instrucci´on (IR A). Instrucci´on de salto condicional: altera la secuencia normal de ejecuci´on de un programa ´unicamente en el caso de cumplimiento de una condici´on asociada a la propia instrucci´on (SI ... IR A). Instrucci´on repetitiva: hace que se repitan una o varias instrucciones un n´umero determinado o indeterminado de veces (PARA, MIENTRAS, HASTA e ITERAR).

Algunas variables realizan funciones espec´ıficas dentro de un programa, y por su gran utilidad, frecuencia de uso y peculiaridad, conviene hacer una menci´on aparte. Las m´as importantes son:

(6)

Contadores. Un contador incrementa una variable en funci´on de un valor constante. En otras pal-abras, es un campo de memoria cuyo valor se incrementa en una cantidad fija, positiva o negativa, generalmente asociado a un bucle. Toma un valor inicial antes de comenzar su funci´on, y cada vez que se realiza el suceso, incrementa su valor. Ejemplo:

Contador = Contador + constante Contador = Contador + 1

Acumuladores. Un acumulador incrementa una variable en funci´on de otra variable, es decir, es un campo de memoria cuyo valor se incrementa sucesivas veces en cantidades variables. Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor 0. Se utiliza con mayor frecuencia para obtener sumas sucesivas. Por ejemplo: Acumulador = Acumulador + valor variable.

Referencias

Documento similar