Está en la página 1de 13

Unidad III.

Metodologa de solucin de problemas


3.1.- Definiciones y conceptos generales
3.1.1.- Problema
En ciencia
computacional
terica,
un problema
abstracto o problema
computacional es una relacin entre un conjunto de instancias y un conjunto
de soluciones. Un problema abstracto permite establecer formalmente la relacin
deseada entre la entrada de un algoritmo y su salida. Una solucin algortmica a un
problema abstracto consiste de un algoritmo que por cada instancia del problema
calcula al menos una solucin correspondiente en caso de haberla o expide un
certificado de que no existe solucin alguna. Un problema abstracto se convierte
en un problema concreto cuando las instancias y soluciones estn codificadas en
forma de lenguajes formales.
3.1.2.- Elementos y relaciones del problema
Los problemas abstractos suelen definirse en dos partes: en la primera se describe
al conjunto de instancias y en la segunda se describe la solucin esperada para
cada instancia. Por ejemplo, el problema de ordenacin de nmeros enteros se
suele definir como sigue:
Instancia: Una sucesin finita de nmeros enteros
Solucin: Una permutacin

de la sucesin de entrada tal

que
Aqu tanto el conjunto de instancias y el de soluciones es el mismo, pues se trata
del conjunto de todas las sucesiones finitas de nmeros enteros. La relacin que
hay

entre

ellos

asigna

permutacin
ejemplo,

cada
tal

tiene

como

sucesin

la

que

solucin

Una

nica
Por

solucin

algortmica al problema de ordenamiento es el ordenamiento de burbuja porque


este algoritmo produce una solucin como salida cada vez que se le suministra una
instancia como entrada.
3.1.3.- Herramientas computacionales para la solucin de problemas

Las dos herramientas ms utilizadas para disear algoritmos son: diagramas de


flujo y pseudocdigo. Un diagrama de flujo (flowchart) es una representacin
grfica de un algoritmo. (los smbolos utilizados han sido normalizados por el
Instituto Norteamericano de Normalizacin (ANSI, por sus siglas en ingls). El
pseudocdigo es una herramienta de programacin en que las instrucciones se
escriben en palabras similares al ingls o espaol, que facilitan tanto la escritura

como la lectura de programas. En esencia, el pseudocdigo se puede definir como


un lenguaje de especificaciones de algoritmos.
3.1.4.- Hardware
El Hardware son todos los componentes y dispositivos fsicos y tangibles que
forman una computadora como la CPU o la placa base, mientras que el Software
es el equipamiento lgico e intangible como los programas y datos que almacena
la computadora.
3.1.5.- Sistema Operativo
Un Sistema Operativo es el software encargado de ejercer el control y coordinar el
uso del hardware entre diferentes programas de aplicacin y los diferentes
usuarios. Es un administrador de los recursos de hardware del sistema.
3.1.6.- Programas de Aplicacin

Es un tipo de software diseado para facilitar al usuario la concrecin de un cierto


trabajo. Esta caracterstica lo diferencia de otros tipos de programas, como los
sistemas operativos (que son los que hacen funcionar a la computadora), los
lenguajes de programacin (que permiten crear los programas informticos en
general) y las utilidades (que realizan tareas de mantenimiento o de uso general).
3.1.7.- Lenguajes de Programacin
Es un lenguaje diseado para describir el conjunto de acciones consecutivas que
un equipo debe ejecutar.
Generaciones De Los Lenguajes de Programacin
Lenguaje de Primera Generacin.

Lo constituyen los lenguajes mquina.

Estos se consideran como de bajo nivel porque no existe un programa de


codificacin menos complicado que el que utiliza los smbolos binarios 1 y 0.

Utiliza ceros y unos para representar letras del alfabeto.

Como este es el lenguaje del CPU, los archivos de texto traducidos a los grupos
binarios ASCII pueden leerse por casi cualquier plataforma de sistemas de
computadoras.

Lenguaje de Segunda Generacin

A estos se les denomino lenguaje ensamblador.

Los lenguajes ensambladores usan cdigos como a para agregar o mvc para
mover, y as sucesivamente.

Los programas de software de sistemas tales como los sistemas operativos y los
programas de utilidad se escriben con frecuencia en un lenguaje ensamblador.
Lenguaje de Tercera Generacin

Estos son ms fciles de aprender y usar que los lenguajes mquina y el lenguaje
ensamblador, pues su similitud con la comunicacin y comprensin humana
cotidiana es mayor.

Enunciados, Print, Total Sales, Read normal Pay etc.

Aunque son ms fciles de programar, no son tan eficientes en trminos de rapidez


operacional y memoria.

Son relativamente independientes del hardware de la computadora. Esto significa


que el mismo

puede utilizarse en varias computadoras diferentes de distintos

fabricantes.
Lenguaje de Cuarta Generacin

Son lenguajes que se relacionan menos con procedimientos y que son an ms


parecidos al ingls que los lenguajes de tercera generacin.

Algunas caractersticas incluyen capacidades de consulta y base de datos, de


creacin de cdigos y capacidades grficas.

Ejemplos Visual C++, Visual Basic, Power Builder, Delphi, Forte y muchos otros.

Lenguajes de consulta son utilizados para hacer preguntas a la computadora con


frases parecidas alas de un idioma, ejemplo el ingls.

Lenguaje de consulta estructurado. Lenguaje estndar que a menudo se usa para


realizar consultas y manipulaciones a la base de datos.
Lenguaje de Quinta Generacin

Alrededor de la mitad 1998 surgieron grupos de herramientas de lenguajes de


quinta generacin, los cuales combinan la creacin de cdigos basadas en reglas,
la administracin de reutilizacin y otros avances.

Programacin basada en conocimiento. Mtodo para el desarrollo de programas


de computacin en el que se le ordena a la computadora realizar un propsito en
vez de instruirla para hacerlo.

3.2.- Ciclo de desarrollo de programas

3.2.1.- Planteamiento del Problema


Es el enunciado del problema, el cual debe ser claro y completo. Es fundamental
conocer y delimitar por completo el problema, saber que es lo se desea realice la
computadora, mientras esto no se conozca del todo, no tiene caso continuar con el
siguiente paso.
3.2.2.- Anlisis del problema
Consiste en establecer una serie de preguntas acerca de lo que establece el
problema, para poder determinar si se cuenta con los elementos suficientes para
llevar a cabo la solucin del mismo.
3.2.3.- Elaboracin de Algoritmos
Es el proceso que convierte los resultados del anlisis en un diseo modular
(descendente) con refinamiento sucesivo (divide al problema en cada etapa y
expresa a cada paso en forma ms detallada), que permitan una posterior
traduccin a un lenguaje.
3.2.4.- Codificacin, edicin y compilacin
Es el proceso que consiste en la traduccin de las instrucciones del diagrama de
flujo o pseudocdigo al lenguaje de programacin.
El proceso de compilacin, acepta como entrada el programa fuente y checa la
sintaxis de las instrucciones del mismo, de no existir errores de sintaxis, se genera
el programa objeto escrito en el lenguaje de mquina, listo para su ejecucin, en
caso contrario dicho programa no es generado hasta que quede exento de errores.
3.2.5.- Ejecucin y depuracin
Es el proceso en el cual se ejecuta el programa y la depuracin es corregir los
errores encontrados en la etapa anterior, si hubiese algn error se tiene que
regresar hasta la etapa que sea necesaria para que la solucin sea la que el
usuario requiere.
3.2.6 Documentacin

La documentacin de un problema consta de las descripciones de los pasos a dar


en el proceso de resolucin de un problema. La documentacin de un programa
puede ser interna y externa. La documentacin interna es la contenida en lneas de
comentarios. La documentacin externa incluye anlisis, diagramas de flujo,
pseudocdigo, manuales de usuario con instrucciones para ejecutar el programa y
para interpretar los resultados. La documentacin es vital cuando se desea corregir
posibles errores futuros o bien cambiar el programa. Tales cambios se denominan
mantenimiento del programa. Despus de cada cambio la documentacin debe ser
actualizada para facilitar cambios posteriores.
3.2.7 Mantenimiento
El mantenimiento preventivo es que hagamos lo posible por no caer en errores, la
actualizacin si el usuario tiene la necesidad de quitar o poner algo; tngase en
cuenta que cuando surge mantenimiento tenemos que volver a hacer todos los
pasos anteriores revisando que todas la condiciones sean favorables alrededor del
sistema.

3.3 Expresiones y Operadores

3.3.1 Asignacin
El operador de asignacin se representa por la secuencia de caracteres:=. Permite
asignar a una variable el valor de una expresin. Por ejemplo:
var x,y,z: real;
x:=12.5;
y:=-5.7;
z:=2*x+3*y;
3.3.1 Operadores aritmticos
Los operadores aritmticos operan sobre valores de tipo entero o real. Los
operadores aritmticos se resumen en la tabla 1. En el caso del operador unitario
de cambio de signo, el resultado es del mismo tipo que el del operando; en el caso
de los tres primeros operadores binarios (suma, resta y producto) si ambos
operando son enteros el resultado es entero, si alguno es real el resultado es real.

Tabla 1. Operadores aritmticos

3.3.2 Operadores relacionales


Los operadores de relacin son operadores binarios en los que los operandos son
ordinales, reales o de cadena. Los dos primeros operadores sirven tambin para
operandos de tipo record y punteros. Todos ellos dan lugar a resultados de tipo
booleano. Los operadores de relacin se resumen en la Tabla 2.

Tabla 2.- Operadores relacionales

3.3.3 Operadores lgicos


Los operadores lgicos o booleanos realizan operaciones con operandos de tipo
lgico o booleano y tiene como resultado un dato tambin del mismo tipo. Los
operadores booleanos definidos se resumen en la Tabla 3.

Tabla 3.- Operadores lgicos

3.3.4 Presencia de operadores y evolucin de expresiones

Los niveles de prioridad entre operadores en una misma expresin


se resumen en la Tabla 4.

Tabla 4.- Orden de prioridades entre operadores


Las secuencias de operadores de igual prioridad normalmente se evalan de
izquierda a derecha dentro de una expresin, aunque, en algunos casos, el
compilador puede reordenar los operandos durante el proceso de compilacin para
generar cdigo objeto ptimo para su posterior ejecucin. En muchas ocasiones se
recomienda el uso de los parntesis para hacer que las expresiones sean ms
claras y fciles de entender. En la Tabla 5 se muestran algunos ejemplos de
expresiones y de los correspondientes resultados al ser evaluadas.

Tabla 5.- Expresiones y resultados correspondientes


Las reglas de evaluacin de expresiones pueden resumirse en las siguientes:
a) Un operando situado entre dos operadores de diferente prioridad se liga al
operador de mayor prioridad.
b) Un operando situado entre dos operadores de igual prioridad se liga al operador
de la izquierda.
c) Las expresiones entre parntesis se evalan primeramente para ser tratadas
como operandos simples.

3.4 Tcnicas de desarrollo de algoritmos

3.4.1 Diseo descendente


Conocida como de arriba-abajo (diseo descendente) y consiste en establecer una
serie de niveles de mayor a menor complejidad (arriba-abajo) que den solucin al
problema. Consiste en efectuar una relacin entre las etapas de la estructuracin
de forma que una etapa jerrquica y su inmediato inferior se relacionen mediante
entradas y salidas de informacin.
Este diseo consiste en una serie de descomposiciones sucesivas del problema
inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que van
a formar parte del programa.
La utilizacin de la tcnica de diseo descendente tiene los siguientes objetivos
bsicos:

Simplificacin

del

problema

de

los

subprogramas

de

cada

descomposicin.
Las diferentes partes del problema pueden ser programadas de modo
independiente e incluso por diferentes personas.
El programa final queda estructurado en forma de bloque o mdulos lo que hace
ms sencilla su lectura y mantenimiento.

Tabla 6.- Diseo descendente

3.4.2 Refinacin progresiva de solucin


Es una tcnica de anlisis y diseo de algoritmos que se basa en la divisin del
problema principal en problemas ms simples. Partiendo de los problemas ms
simples, se logra dar solucin ms efectiva, ya que el nmero de variables y casos
asociados a un problema simple es ms fcil de manejar que el problema
completo. Este tipo de procedimiento se le conoce con diseo descendente y
tambin aplicable a la optimizacin del desempeo y a la simplificacin de un
algoritmo.
3.4.3 Seudocdigo y diagrama de flujo
Mezcla de lenguaje de programacin y espaol (o ingls o cualquier otro idioma)
que se emplea, dentro de la programacin estructurada, para realizar el diseo de
un programa. En esencial, el pseudocdigo se puede definir como un lenguaje de
especificaciones de algoritmos.
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar
solucin a un problema determinado. El pseudocdigo utiliza palabras que indican
el proceso a realizar.
El inicio de un algoritmo en pseudocdigo comienza con la palabra Inicio y termina
con la palabra fin.

Las lneas que estn entre llaves ({ }) se denomina comentario.


Un ejemplo aclaratorio es el siguiente. Calcular el rea de un cuadrado.
Inicio
Leer (lado)
A = lado * lado
Imprimir( A)
Fin

Un diagrama de flujo es la representacin grfica de un algoritmo.


Tambin se puede decir que es la representacin detallada en
forma grfica de cmo deben realizarse los pasos en la
computadora para producir resultados.
Esta representacin grfica se da cuando varios smbolos (que
indican diferentes procesos en la computadora), se relacionan
entre s mediante lneas que indican el orden en que se deben
ejecutar los procesos.
A continuacin se muestra la simbologa utilizada y su funcin
correspondiente.

Ejemplo: Hacer un diagrama de flujo que permita leer 2 nmeros diferentes y


nos diga cul es el mayor de los 2 nmeros.

También podría gustarte