Sie sind auf Seite 1von 13

FACULTAD DE INGENIERIA

LA RESOLUCION DE PROBLEMAS CON COMPUTADORAS Y LAS HERRAMIENTAS DE PROGRAMACIN


La resolucin de problemas con computadora se puede resolver en tres fases:

Anlisis del problema diseo del algoritmo Resolucin del algoritmo en la computadora.

1.1.- LA RESOLUCIN DE PROBLEMAS.


La principal razn para que las personas aprendan a programar en general y los lenguajes de programacin en particular es utilizar la computadora como una herramienta para la resolucin de problemas. Ayudado por una computadora, la resolucin de un problema se puede dividir en tres fases importantes: 1. An!lisis del problema. ". #ise$o o desarrollo del algoritmo. %. &esolucin del algoritmo en la computadora. 'l primer paso (An!lisis del problema requiere que el problema sea definido y comprendido )laramente para que pueda ser analizado con todo detalle. *na vez analizado el problema, se debe desarrollar el algoritmo (procedimiento paso a paso para solucionar el problema dado . +or ,ltimo, para resolver el algoritmo mediante una computadora, se necesita codificar el algoritmo en un lenguaje de programacin +ascal, )-.., )obol, /ortran, etc. , es decir, convertir el algoritmo en programa, ejecutarlo y comprobar que el programa soluciona verdaderamente el problema.

1.2.-ANLISIS DEL PROBLEMA.


'l propsito del an!lisis de un problema, es ayudar al programador para llegar a una cierta comprensin de la naturaleza del problema. 'l problema debe estar bien definido si ase desea llegar a una solucin satisfactoria. +ara poder definir con precisin el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle. *na buena definicin del problema, junto con una descripcin detallada de las especificaciones de entrada y salida, son los requisitos m!s importantes para llegar a una solucin eficaz. 'l an!lisis del problema e0ige una lectura previa del problema a fin de obtener una idea general de lo que se solicita. La segunda lectura deber! servir para resolver a las preguntas:

12u3 informacin debe proporcionar la resolucin del problema4 12u3 datos se necesitan para resolver el problema4
La respuesta a la primera pregunta indicar! los resultados deseados a las salidas del problema. La respuesta a la segunda pregunta indicar! que datos se proporcionan a las entradas del Problema.

1 Mg. Patricia Janet Benites Yglesias

FACULTAD DE INGENIERIA

Resolucin de un problema

Anlisis de un problema

Diseo del Algoritmo

Resolucin del Problema con la computadora

/igura 1.1 la resolucin de un problema

Anlisis del problema

Definicin del problema

Especificaciones de entradas

Especificaciones de salidas

/igura 1." An!lisis del problema

'jemplo 1.1
Leer el radio de un crculo y calcular e imprimir su superficie y la longitud de la circunferencia.

Anlisis.
Las entradas de datos en este problema se concentran en el radio del circulo. #ado que el radio puede tomar cualquier valor dentro del rango de los n,meros reales, el tipo de datos radio debe ser real. Las salidas ser!n dos variables: superficie y circunferencia, que tambi3n ser!n de tipo real. Entradas: Salidas: ariables: radio del circulo 5variable &A#678. superficie del circulo 5variable Area8. )ircunferencia del circulo 5variable )ircunferencia8. &adio, 9rea y circunferencia 5tipo real8.

2 Mg. Patricia Janet Benites Yglesias

1.3.-DISE O DEL ALGORITMO.


*na computadora no tiene capacidad para solucionar problemas m!s que cuando se le proporcionan los sucesivos pasos a realizar. 'stos pasos sucesivos que indican las instrucciones a ejecutar por la maquina, constituyen, como ya conocemos, el algoritmo. La informacin proporcionada al algoritmo, constituye su entrada y la informacin producida por el algoritmo constituye su salida. Los problemas complejos se pueden resolver mas eficazmente con la computadora, cuando se rompen en sub problemas que sean m!s f!ciles de solucionar que el original. 'ste m3todo se suele denominar di!ide y !encers 5di!ide and con"uer# que consiste en dividir un problema complejo en otros m!s simples. As: el problema de encontrar la superficie y longitud de un circulo se puede dividir en tres problemas m!s simples o subproblemas 5figura 1.%.8 La descomposicin del problema original en subproblemas m!s simples y a continuacin dividir estos subproblemas en otros m!s simples que pueden ser implementados para su solucin en la computadora se denomina diseo descendente $top%do&n design#. ;ormalmente los pasos dise$ados en el primer esbozo del algoritmo son incompletos e indicaran solo unos pocos pasos 5un m!0imo de doce apro0imadamente8. <ras esta primera descripcin, estos se ampl:an en una descripcin mas detallada con m!s pasos espec:ficos. 'ste proceso se denomina financiamiento del algoritmo $step&ise refinement#. +ara problemas complejos se necesitan con frecuencia diferentes ni!eles de refinamiento antes de que se pueda obtener un algoritmo claro, preciso y completo. Superficie y longitud de circunferencia

Entrada de datos

Calculo de superficie (S) S P!"R#$

calculo de longitud (C) % $"P!"R Salida R

Salida resultado

Entrada radio(R)

Salida S

Salida %

&igura '()( refinamiento de un algoritmo

'l problema de c!lculo de la circunferencia y superficie de un c:rculo se puede descomponer en subproblemas m!s simples: 518 leer datos de entrada, 5"8 calcular superficie y longitud de circunferencia y 5%8 escribir resultados 5datos de salida8.

=ubproblema leer radio calcular superficie calcular circunferencia escribir resultados

&efinamiento leer radio superficie>%.1?1@A" B radioC" circunferencia $ " )('*'+,$ " radio escribir radio- circunferencia- superficie

%as .enta/as ms importantes del diseo descendente son0

'l problema se comprende m!s f!cilmente al dividirse en partes m!s simples denominadas Las modificaciones en los mdulos son m!s f!ciles. La comprobacin del problema se puede verificar f!cilmente.
<ras los pasos anteriores $diseo descendente y refinamiento por pasos# es preciso representar el algoritmo mediante una determinada herramienta de programacin: diagrama de flujo, pseudocdigo o diagrama ;.= As: pues, el dise$o de algoritmo se descompone en las fases recogidas en la /igura 1.?. Diseo de un algoritmo Diseo descendente (') Refinamientos por pasos ($) 1erramientas de programacin ()) 2 diagrama de flu/o 2 pseudocodigo 2 diagrama 32S 'dulos.

/6D*&A 1.? /A='= #'L #6='E7 #' *; ALD7&6<F7

1.%.1 'scritura inicial del algoritmo.


)omo ya se ha comentado anteriormente, el sistema para describir 5GescribirH8 un algoritmo consiste en realizar una descripcin paso a paso con un lenguaje natural del citado algoritmo. &ecordemos que un algoritmo es un m3todo o un conjunto de reglas para solucionar un problema. 'n c!lculos elementales estas reglas tienen las siguientes propiedades:

deben de estar seguidas de algunas secuencias definidas de pasos hasta que se obtenga un resultado coherente, =lo puede ejecutarse una operacin a la vez.

'l flujo de control usual de un algoritmo es secuencialI consideremos el algoritmo que responde a la pregunta: 1(u) *acer para !er la pelcula <iburn4 La respuesta es muy sencilla y puede ser descrita en forma de algoritmo, general de modo similar a: ir al cine comprar una entrada (billete o ticket) ver la pelcula regresar a casa 'l algoritmo consta de cuatro acciones b!sicas, cada una de las cuales debe ser ejecutada antes de realizar la siguiente. 'n t3rminos de computadora, cada accin se codificar! en una o varias sentencias que ejecutan una tarea particular.

'l algoritmo descrito es muy sencilloI sin embargo, como ya se ha indicado en p!rrafos anteriores, el algoritmo general se descompondr! en pasos m!s simples en un procedimiento denominado refinamiento sucesi!o+ ya que cada accin puede descomponerse a su vez en otras acciones simples. As:, un primer refinamiento del algoritmo ir al cine se puede describir de la forma siguiente: 1.Inicio 2.Ver la cartelera de cines en el peridico 3.Si no proyectan iburn! entonces 3.1 decidir otra actividad 3.2 bi"urcar al paso # si_no 3.3 ir al cine. Fin_si $.Si %ay cola $.1 ponerse en ella $.2 mientras %aya personas delante %acer $.2.1 avan&ar en la cola fin_mientras fin_si '.Si %ay localidades entonces '.1 comprar una entrada '.2 pasar a la sala. '.3 locali&ar la(s) butaca(s) '.$ mientras proyectan la pelcula %acer '.$.1 ver la pelcula fin_mientras '.' abandonar el cine si_no '.( re"un"u)ar fin_si (. volver a casa #. fin 'n el algoritmo anterior e0isten diferentes aspectos a considerar. 'n primer lugar, ciertas palabras reservadas se han escrito deliberadamente en negrita 5!i"n#$%s& si n'& etc.8.'stas palabras describen las estructuras de control fundamentales y procesos de toma de decisin en el algoritmo. 'stas incluyen los conceptos importantes de decisin de seleccin 5 e0presadas por si"n#'n("s-si)n' if (then else8 y de repeticin 5 e0presadas con !i"n#$%s-*%("$ o a veces $"+"#i$*%s#% " i#"$%$,-in-i#"$%$, en ingl3s , Jhile do y repeat until8 que se encuentra en casi todos los algoritmos , especialmente los de proceso de datos . La capacidad de decisin permite seleccionar alternativas de acciones a seguir o bien la repeticin una y otra vez de operaciones b!sicas Si proyectan la pel:cula seleccionada ir al cine si)n' ver la televisin , ir al f,tbol o leer el peridico !i"n#$%s haya personas en la cola , ir avanzando repetidamente hasta llegar a la taquilla. 7tro aspecto a considerar es el m3todo elegido para describir los algoritmos : empleo de indentacin 5 sangrado o justificacin8 en escritura de algoritmos. 'n la actualidad es tan importante la escritura de programa como su posterior lectura . 'llo se facilita con la indentacin de las acciones interiores a las estructuras fundamentales citadas : selectivas y repetitivas . A lo largo de todo el libro la indentacin o sangrado de los algoritmos ser! norma constante. +ara terminar estas consideraciones iniciales sobre algoritmos , describiremos las acciones necesarias para refinar el algoritmo objeto de nuestro estudio I ello analicemos la accin.

Localizar las butaca5s8 *i los n+meros de los asientos est,n impresos la accin compuesta se resuelve con el siguiente algoritmo: 1.ini(i' --algoritmo para encontrar la butaca del espectador ".caminar hasta llegar a la primera fila e butaca %.$"+"#i$ compara numero de fila con numero impreso en billete si no son iguales , "n#'n("s pasar a la siguiente fila *%s#%)./" se localice la fila correcta ?.!i"n#$%s n,mero de butaca no coincida con n,mero de billete *%("$ avanzar a trav3s de la fila a la siguiente butaca -in)!i"n#$%s @.sentarse en la butaca K.-in 'n este algoritmo la repeticin se ha mostrado de los modos , utilizando ambas notaciones , $"+"#i$...*%s#%)que y mientras...-in)!i"n#$%s. =e ha considerado tambi3n , como ocurre normalmente , que le n,mero del asiento y fila coincide con el n,mero y fila rotulado en el billete en la entrada

1.0. RESOLUCIN COMPUTADORA

DEL PROBLEMA

MEDIANTE

*na vez que el algoritmo est! dise$ado y representado gr!ficamente mediante una herramienta de programacin 5diagrama de flujo , pseudocdigo o diagrama ; =8 se debe pasar a la fase de resolucin pr!ctica del problema con la computadora . 'sta fase se descompone a u vez en las siguientes subfase: 1. ". %. codificacin del algoritmo en un programa. ejecucin del programa. comprobacin del programa.

'n el dise$o del algoritmo 3ste describe en una herramienta de programacin tal como un diagrama de flujo , diagrama ; = o pseudocdigo .=in embargo , el programa que implementa el algoritmo debe ser escrito en un lenguaje de programacin y siguiendo las reglas gramaticales o sinta0is del mismo .La fase de conversin del algoritmo en un lenguaje de programacin se denomina codificacin , ya que el algoritmo escrito en un lenguaje 'spec:fico de programacin se denomina cdigo. <ras la codificacin del programa , deber! ejecutarse en una computadora y a continuacin de comprobar los resultados pasar a la fase final de documentacin.

resolucin del problema con computadora

Codificacin del programa

E/ecucin Del programa

Comprobacin del programa

/igura 1.@ resolucin del problema mediante computadora

1.1. REPRESENTACIN GRA2ICA DE LOS ALGORITMOS


+ara representar un algoritmo se debe utilizar alg,n m3todo que permita independizar dicho algoritmo del lenguaje de programacin elegido. 'llo permitir! que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. +ara conseguir este objetivo se precisa que el algoritmo sea representado gr!fica o num3ricamente , de modo que las sucesivas acciones no dependan de la sinta0is de ning,n lenguaje de programacin , sino que la descripcin pueda servir f!cilmente para su transformacin en un programa , es decir ,su codificacin. Los m3todos usuales para representar un algoritmo son: 1. ". %. ?. @. diagrama de flujo, diagrama ; =5;assi =chneiderman8, lenguaje de especificacin de algoritmos: pseudocdigo, lenguaje espa$ol, frmulas.

Los m3todos ? y @ no suelen ser f!ciles de transformar en programas. *na descripcin en espa$ol narrativo no es satisfactoria , ya que es demasiado prolija y generalmente ambigua *na frmula , sin embargo , es buen sistema de representacin . +or ejemplo , la frmula para la solucin de una ecuacin cuadr!tica es un medio sucinto de e0presar el procedimiento algoritmo que se debe ejecutar para obtener las ra:ces . 31 >5 b.b ?ac8-"a =ignifica 1. ". %. 'leve al cuadrado b. <oma a I multiplicar por ?. &estar el resultado de " del resultado de 1 , etc.
"

32 >5 b b ?ac8-"a

"

=in embargo , no es frecuente que un algoritmo pueda ser e0presado por medio de una simple frmula .

1.1.1. DIAGRAMAS DE 2LU4O


*n 5i%6$%!% 5" -l/7' 5floJchart8 es una de las t3cnicas de representacin de algoritmo m!s antigua y a la vez m!s utilizada , aunque se empleo ha disminuido considerablemente , sobre todo desde la aparicin de lenguajes de programacin estructurados . *n diagrama de flujo es un diagrama que utiliza los s:mbolos 5cajas8 est!ndar mostrados en la figura ".K y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas , denominadas l:neas de flujo, que indican la secuencia en que se deben ejecutar. La figura 1.L es un diagrama de flujo b!sico. 'l diagrama citado 5figura 1.L8 representa la resolucin de un programa que deduce el salario neto de un trabajador a partir de la lectura del nombre , horas trabajadas , precio de la hora , y sabiendo que los impuestos aplicados son el "@ por 1MM sobre el salario bruto. Los s:mbolos est!ndar normalizados por A;=6 5abreviatura de America ;ational =tandard 6nstitute8 son muy variados. 'n la figura 1 .N se representan una plantilla de dibujo t:pica donde se

S8!9'l's P$in(i+%l"s

2/n(i:n

<erminal 5representa el comienzo, GinicioH y el final, GfinH, de *n programa. +uede representar tambi3n una parada o interrupcin programada que sea necesario realizar en un +rograma8. 'ntrada-=alida 5cualquier tipo de introduccin de datos en la memoria desde los perif3ricos GentradaH, o registro de la 6nformacin procesada en un perif3rico, GsalidaH8. +roceso 5cualquier tipo de operacin que pueda originar cambio de valor, formato o posicin de la informacin almacenada en memoria, operaciones aritm3ticas, de transferencia, etc.8. #ecisin 5indica operaciones lgicas o de comparacin entre datos (normalmente dos y en funcin del resultado de la misma determina cual de los distintos caminos alternativos de programa se debe seguirI normalmente tiene dos salidas (respuestas =6 o ;7 , pero puede tener tres o mas, seg,n los casos8. #ecisin m,ltiple 5en funcin del resultado de la )omparacin se seguir! uno de los diferentes caminos de acuerdo con dicho resultado8.

no si

)onector 5sirve para enlazar dos partes cualesquiera de un 7rdinograma a trav3s de un conector en la salida y otro conector en la entrada. =e refiere a la cone0in en la misma pagina del dia grama8. 6ndicador de direccin o l:nea de flujo 5 indica el sentido de ejecucin de las operaciones8. OOO

L:nea conectora 5sirve de unin entre dos s:mbolos8. )onector 5cone0in entre dos puntos del organigrama situado en paginas diferentes8.

Llamada a subrutina o a un proceso predeterminado 5una subrutina es un modulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa, al terminar, al programa principal8 S8!9'l's S"(/n5%$i's 2/n(i:n +antalla 5 se utiliza en ocasiones, en lugar del s:mbolo de

'-=8. 6mpresora 5se utiliza en ocasiones en lugar del s:mbolo #'-=8. <eclado 5 se utiliza en ocasiones en lugar del s:mbolo de '-=8. )omentarios 5 se utiliza para a$adir comentarios clasificadores a otro s:mbolos del diagrama de flujo. =e puede dibujar a cualquier lado del s:mbolo8 /igura 1.K s:mbolos del diagrama de flujo inicio %eer0 3ombre4ora precio -ruto %oras 5asas 6($+"bruto 3eto bruto2 tasas Escribir0 nombrebruto tasas- neto

fin
Los m!s utilizados representan:

+roceso, #ecisin, )onectores, /in , 'ntrada - salida, #ireccin del flujo,

P se resumen en la figura 1.A 'n un diagrama de flujo:


e0iste una caja etiquetada GinicioH, que es de tipo el:ptico . e0iste otra caja etiquetada GfinH de igual forma que la anterior.

=i e0isten otras cajas, normalmente son regulares, tipo rombo o paralelogramo 5el resto de las figuras se utilizan solo en diagramas de flujo generales o de detalle y no siempre son impredecibles8.

=e puede escribir m!s de un paso del algoritmo en una sola caja rectangular. 'l uso de flechas significa que la caja no necesita ser escrita debajo de su predecesora. =in embargo, abusar demasiado de esta fle0ibilidad conduce a diagramas de flujo complicados e ininteligibles. no

5ermina

decisin si

Subprograma

Entrada7 salida

proceso

/igura 1.A s:mbolos utilizados en los diagramas de flujos

S8!9'l's 5" 5i%6$%!%s 5" -l/7'


)ada s:mbolo visto anteriormente indica el tipo de operacin a e,ecutar y el diagrama de flujo ilustra gr!ficamente la secuencia en la que se e,ecutan las operaciones. Las lneas de flu,o 5 8 representa el flujo secuencial de la lgica del problema. *n rect!ngulo 5 8 significa alg,n tipo de proceso en la computadora, es decir, acciones a realizar 5 sumar dos n,meros, calcular la ra:z cuadrada de un n,mero, etc. 8. 'l paralelogramo 5 8 es un s:mbolo de entrada - salida que representa cualquier tipo de entrada o salida desde el programa o sistemaI por ejemplo, entrada de teclado, salida en impresora o pantalla, etc. 'l s:mbolo rombo 5 8 es una caja de decisin que representa respuestas s:-no o bien diferentes alternativas 1, ", %, ?, ...etc. )ada diagrama de flujo comienza y termina con un s:mbolo terminal 5 8. *n peque$o c:rculo 5 8 es un conector y se utiliza para conectar caminos, tras roturas previas del flujo del algoritmo. 7tros s:mbolos de diagramas de flujo menos utilizados de mayor detalle que los anteriores son: *n trapezoide 5 8 indica que un proceso manual se va a ejecutar en contraste con el rect!ngulo, que indica proceso autom!tico. 'l s:mbolo general de entrada-salida se puede subdividir en otros s:mbolos: teclado 8I pantalla 5 8, impresora 5 8, disco magn3tico 5 8, disquete o disco fle0ible 8, casete 5 8.

5 5

1.; DIAGRAMAS DE NASSI-SCHNEIDERMAN <N-S=


'l diagrama ; = de ;assi =chneiderman ( tambi3n conocido como diagrama de chapin ( es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. *n algoritmo se representa de la forma siguiente:

;ombre del algoritmo QAccin 1R QAccin "R QAccin %R ... /in Leer ;ombre, horas, precio )alcular =alario horas B precio )alcular 6mpuestos M."@ B salario )alcular ;eto salario ( impuesto 'scribir ;ombre, salario, impuesto, neto

La estructura condicional 5 el rombo 8

=i

.condic in/

no

0ccin 1

0ccin 2

=e representa por
8condicin9 Si no

:acciones;

:acciones;

1.> PSEUDOCDIGO
'l pseudocdigo es un lenguaje de especificacin 5descripcin8 de algoritmos. 'l uso de tal lenguaje hace el paso de codificacin final 5esto es, la traduccin a un lenguaje de programacin8 relativamente f!cil. 'l pseudocdigo naci como un lenguaje similar al ingles y era un medio de representar b!sicamente las estructuras de control de programacin estructurada. =e considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de

programacin. 'l pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso, en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje espec:fico. 's tambi3n f!cil modificar el pseudocdigo si se descubren errores o anomal:as en la lgica del programa, mientras que en muchas ocasiones suele ser dif:cil el cambio en la lgica, una vez que esta codificado en un lenguaje de programacin. 7tra ventaja del pseudocdigo es que puede ser traducido f!cilmente en cualquier lenguaje de programacin 'l pseudocdigo original utiliza para representar las acciones sucesivas palabras reservadas en ingles (similares a sus homnimas en los lenguajes de programacin tales como start, end, stop, if then else, Jill end, repeat, until, etc. La escritura de pseudocdigo e0iste normalmente la indentacin 5sangr:a en el margen izquierdo8 de diferentes l:neas. 'l algoritmo comienza con la palabra s#%$# y finaliza con la palabra "n5, en ingl3s 5 en espa$ol, ini(i'& -in 8.entre estas palabras, slo se escribe una instruccin o accin por l:nea. La l:nea precedida por -- se denomina comentario. 's una informacin al lector del programa y no realiza ninguna instruccin ejecutable, slo tiene efecto de documentacin interna del programa. Algunos autores suelen utilizar corchetes y llaves. ;o es recomendable el uso de apstrofes o simples comillas como representan en Sasic de Ficrosoft los comentarios, ya que este car!cter es representativo de apertura o cierre de cadenas de caracteres en lenguajes como +ascal y /7&<&A;, y dar:a lugar a confusin. 7tro ejemplo aclaratorio en el uso del pseudocdigo podr:a ser un sencillo algoritmo del arranque matinal de un coche. +or fortuna, aunque el pseudocdigo naci como un sustituto del lenguaje de programacin y, pro Ini(i' --arranque consiguiente, sus matinal de palabras un coche reservadas se conservaron o fueron muy similares a las de dichos lenguajes, pr!cticamente introducir la llave de contactoel ingl3s, el uso del pseudocdigo se ha e0tendido en la comunidad hispana con t3rminos en espa$ol, como ini(i' & -in& +%$%5%& l""$& "s($i9i$& si- "n#'n("s-si)n' tirar del estrangulador de aire !i"n#$%s& -in)!i"n#$%s& $"+"#i$& *%s#%)./"& etc. girar la llave de contacto =in el uso de terminolog:a de pseudocdigo en espa$ol ha facilitado y facilitar! pisar el duda, acelerador o:r considerablemente el ruido del motor el aprendizaje y uso diario de la programacin. pisar de nuevo el acelerador esperar unos instantes a que se caliente el motor llevar el estrangulador de aire a su posicin 2in

Das könnte Ihnen auch gefallen