Beruflich Dokumente
Kultur Dokumente
Anlisis del problema diseo del algoritmo Resolucin del algoritmo en la computadora.
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.
FACULTAD DE INGENIERIA
Resolucin de un problema
Anlisis de un problema
Especificaciones de entradas
Especificaciones de salidas
'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.
Entrada de datos
Salida resultado
Entrada radio(R)
Salida S
Salida %
'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.
&efinamiento leer radio superficie>%.1?1@A" B radioC" circunferencia $ " )('*'+,$ " radio escribir radio- circunferencia- superficie
'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.
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
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.
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 .
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:
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
5 5
;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
=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