Está en la página 1de 16
La resolucion de problemas con computadoras y las herramientas de programacion 2.1. Herramientas de programacion Un algoritmo puede ser escrito en castellano narrativo, pero esta descripeién suele ser demasiado pro- lija y, ademés, ambigua. Para representar un algoritmo se debe utilizar algtin método que permita inde- pendizar dicho algoritmo de los lenguajes de programacién y, al mismo tiempo, conseguir que sea facilmente codificable. Los métodos mis usuales para la representacién de algoritmos son: A. Diagrama de flujo B. Diagrama N-S (Nassi-Schneiderman) C. Pseudocédigo 23 ty a 24° Fundamentos deProgramacin. Libro de roblemas 2.2, _ Diagrama de flujo Los diagramas de flujo se utilizan tanto para la representacién grifica de las operaciones ejecutadas sobre los datos a través de todas las partes de un sistema de procesamiento de informacién, diagrama de flujo del sistema, como para la representaciin #> '~ o>! > >>g08 necess-ios para describir un procedimiento particular, diagrama de flujo de detalle. En la actualidad se siguen usando los diagramas de flujo del sistema, pero ha decaido el uso de los diagramas de flujo de detalle al aparecer otros métodos de disefio estructurado més eficaces para la representacién y actualizacién de los algoritmos. Los diagramas de flujo de detaile son, no obstante, uno de nuestros objetivos prioritarios y, a partir de ahora, los denominaremos simplemente diagramas de flujo. EI diagrama de flujo utiliza unos simbolos normalizados, con los pasos del algoritmo escritos en el simbolo adecuado y los simbolos unidos por flechas, denominadas lineas de flujo, que indican el orden {en que los pasos deben ser ejecutados, Los simbolos principales son: Simbolo Funcion (| Inicio y fin del algoritmo. LC] Proceso C4 Entrada /Salida o Dei {- Comentario n Resulta necesario indicar dentro de los simbolos la operacién especifica concebida por el progra- mador. Como ejemplo veamos un diagrama de flujo basico, que representa la secuencia de pasos nece- saria para que un programa lea una temperatura en grados Centigrados y calcule y escriba su valor en grados Kelvin. La resolucién de problemas con computadoras y las herramientas de programacién 25, 2.3. Diagrama Nassi-Schneiderman Los diagramas Nassi-Schneiderman, denominados asi por sus inventores, 0 también N-S, o de Chapin son una herramienta de programacién que favorece la programacién estructurada y retine caracteristi- cas grificas propias de diagramas de flujo y lingiifsticas propias de los pseudocédigos. Constan de una serie de cajas contiguas qué-Se iveiau sicanpre ue aftiba-abajo y se documentarin de la forma adecuada. En los diagramas N-S las tres estructuras bisicas de la programacién estructurada, secuenciales, selectivas y repetitivas, encuentran su representacién propia. La programacién estucturada serd tratada en capitulos posteriores. Simbolo Tipo de estructura Sentara aes Secuencial senleis — Repetitiva de Oanveces "6S"! ASTN Repetitiva de 1an veces — Repetitiva n veces Fes (=\ ©! aN Selectiva El algoritmo que lee una temperatura en grados Celsius y calcula y escribe su valor en grados Kelvin se puede representar mediante el siguiente diagrama N. ine fleeces) vin ~ clea 70 esse Ronin) 2.4. Pseudocédigo EI pseudocddigo es un lenguaje de especificacién de algoritmos que utiliza palabras reservadas y exige la indentacién, 0 sea sangria en el margen izquierdo, de algunas lineas. En nuestros pseudocédigos uusaremos determinadas palabras en espafiol como palabras reservadas. El pseudocédigo concil ié para superar las dos principales desventajas del diagrama de flujo: 26 —_Fundamontos deProgramacidn. Libro de Problomas lento de crear y dificil de modificar sin un nuevo redibujo. Es una herramienta muy buena para el seguimiento de la logica de un algoritmo y para transformar con facilidad los algoritmos a programas, escritos en un lenguaje de programacién especifico. En este libro se escribirdn casi todos los algoritmos en pseudocddigo. El pseudocédigo comenzaré siempre con la palabra inicio y terminari con la palabra fin. ‘Cuando se coloque un conientario de una sola linea se escribira precedido de //. Si el comentario es multilinea, lo pondremos entre {}. Para introducir un valor o seri¢ de valores desde el dispositive estindar y almacenarlos en una o varias variables utilizaremos Leex(). Con almacenaremos en una variable el resultado de cevaluar una expresién. Hay que tener en cuenta que una jinica constante, variable o funcién, constitu- yen una expresién. Para imprimir en el dispositivo estindar de salida una o varias expresiones emplearemos escribir() Las distintas estructuras se representarn de la siguiente forma: Decisién simple: si entonces fin_si Decisién doble: si entonces si_no fin_ei segin_sea hacer : [si_no // 1 corchete indica opcionalidad ) fin_segin Repetitivas: mientras hacer f£in_mientras repetir hasta_que desde + hasta (ineremento | decremento ] hacer fin desde La resolucion de problemas con computadoras y las herramientas de programacién 27 inicio, fin, leer, escribir y las palabras que aparecen en negrita en las distintas estruc- turas se consideran palabras reservadas y no deberdn utilizarse en su lugar otras similares. El ejemplo ya citado que transforma grados Celsius en Kelvin, escrito en pseudocédigo quedaria de la siguiente forma: inicio leer (celsius) kelvin + celsius + 273.15 escribir (Kelvin) fin 2.5. _ Ejercicios resueltos 21. (Cudil de los siguientes datos son vilidos para procesar por una computadora? a) 3.14159 ¢) 2.234E2 i) 12.53 4) 0.0014) 12E+6 p) .123E4 ¢) 123450 g) L1E-3 4) SA414 @) 15.0E-04 h) -15E-0.4 1) ALLEO4 Serian validos los datos a,b, c,d, , fg y j. Los datos h e i no serian validos pues el exponente no puede tener forma decimal. El k, no seria correcto pues mezcla caracteres alfabéticos y digitos, y no se puede considerar una identificador de una variable ya que empieza por un digito. El dato 1 aunque mezcla digitos y caracteres alfabéticos, podria ser un identificador, si admitiéramos el cardcter punto como cardcter vilido para una variable (PASCAL o BASIC lo consideran), 2.2. 2Cuél de los siguientes identificadores son vilidos? a) Renta _) Das Pulgadas i) 4422 b) Alquiler) C3PO J) 13Nombre ©) Constante g) Bienvenido#S 1) Nombre_Apellidos d) Tom's hy) elemento Y) Nombredpellidos Se consideran correctos los identificadores a, b, ¢, f, h, k y I. El d go se considera correcto pues incluye el apéstrofo que no es un caricter valido en un identificador. Lo mismo ocurre con el ¢ y el espacio en blanco, y el g con el cardcter #. Eli y el j no serian validos al no comenzar por un cardcter alfabético. 2.3. Eseribir un algoritmo que lea un valor entero, lo doble, se multiplique por 25 y visualice ef resultado. 2B Fundamentos de Programacion. ibrode Problemas Andlisis de problema DATOS DE SALIDA: resultado (es el resultado de realizar las operaciones) DATOS DE ENTRADA: _ niimero (el mimero que leemos por teclado) Leemos el niimero por teclado y 1o multiplicamos por 2, metiendo el contenido en la propia variable de entrada. A continuacién lo multiplicamos por 25 y asignamos el resultado a la variable de salida resultado. También podriamos asignar a la variable de salida directamente la expresi6n numero*2*25. Diseiio del algoritmo: algoritmo ejercicio_2_3 entero : mimero, resultado inicio leer (ntimero) niimero + niimero * 2 resultado + mimero * 25 escribir (resultado) fin 24, Disetar un algoritmo que lea cuatro variables y caicule e imprima su producto, su suma y su media aritmética. Andlisis del problema DATOS DE SALIDA: producto, suma y media DATOS DE ENTRADA: a,b,c,4 Después de leer los cuatro datos, asignamos a la variable producto la multiplicacién de las cuatro variables de entrada. A la variable suma le asignamos su suma y a la variable media asignamos el resultado de sumar las cuatro variables y dividirlas entre cuatro. Como el operador suma tiene menos prioridad que el operador divisién, la serd necesario encerrar la suma entre paréntesis. También podria- mos haber dividido directamente la variable suma entre cuatro. 9 La variables a,b,c, d, producto y suma podran ser enteras, pero no asi la variable media, ya que la divisin produce siempre resultados de tipo real Diseiio del algoritmo algoritme ejercicio_2_4 entero: 2,b,c,d, producto, suma ey 4 La resolucién de problemas con computadoras y las herramientas de programacién 29 real: media iniedo leer (a,b, c,d) producto + a*b*c*d sumacatbec+a media e(a+b+c+d) /4 escribir (producto, suma,media) fin 2.5. Disefiar un programa que lea ef peso de un hombre en libras y nos devuelva su peso en kilogra- mos y gramos (Nota: una libra equivale a 0.453592 kilogramos) Anidlisis del problema DATOS DE SALIDA: kg, gr DATOS DE ENTRADA: peso. DATOS AUXILIARES: Libra (los kilogramos que equivalen a una libra) El dato auxiliar 1ibra lo vamos a considerar como una constante, pues no variard a lo largo del programa. Primero leemos el peso. Para hallar su equivalencia en kilogramos multiplicamos éste por la constante libra. Para hallar el peso en gramos multiplicamos los kilogramos entre mil. Como es posible que el dato de entrada no sea exacto, consideraremos todas las variables como reales. Diseio del algoritmo algoritmo ejercicio_2_5 constante libra = 0.453592 real: peso,kg.or inicio leer (peso) kg + peso * libra gr + kg * 1000 escribir (‘Peso en kilogramos: ‘,kg) escribir (‘Peso en gramos: ‘,¢r) fin 2.6. Si A=6, B=2 y C=3, encontrar los valores de las siguientes expresiones: @ AB+C d) A*B mod C b) ANB div C &) ASB mod C QA divB+C DA div B div C 30 Fundamentosde Programacién. Libro de Problemas Los resultados serian: a) (6-243 = 7 b) (6*2) div 3 =4 c) (6 div 2)+3 =6 4) (6*2) mod 3 e) GH(2 mod 3) =8 1) @ div 2) div3=1 2.7. Qué se obtiene en las variables A y B después de la ejecucién de las siguientes instrucciones? Acs BrAt6 AcAtI BeA-5 Las variables irfan tomando los siguientes valores: Acs ‘ , B indeterminado BeAt+6 , B=5+6=11 AcAtH , +1=6,B=11 BeA-5 , A=6,B=6-5=1 Los valores finales serian: A= 6 y B= 1. 2.8. Qué se obtiene en las variables 4, B y C después de ejecutar las siguientes instrucciones? Ac3 B20 CoAtB BoA+B ACB Las variables tomarian sucesivamente los valores: Ae3 »A=3,B y C indeterminados Be20 ,A=3,B=20,C indeterminado CHA+B ,A=3,B=20,C=3+20=23 BeA+B ,A=3,B=3+20 AcB La resolucién de problemas con computadoras y las herramientas de programacion 31 Los valores de las variables serian: 23,B=23 yC=23. 2.9. {Que valor toman las variables A y B tras la ejecucién de las siguientes asignaciones? Acl0 Bes be AcB Bea El resultado seria el siguiente: Acl0,A Bes ,A AcB ,A=5,B=5 BeA ,A=5,B=5 con Jo que A y B tomarfan el valor 5. 2.10. Escribir las siguientes expresiones en forma de expresiones algoritmicas M N sen x + cosy at bM+ eG ax pak M+N P —b + JF —4ac as 2) — \_—— 2 r 2a 2 5 aM /N+4 bm +N /(P-Q) ©) (sen(X) + cos(x)) / tan(x) 4d (M +N) / (PB -) eens P) / (Q-R/ 5) f) ((-B) + raiz2(BE2-4*A*C))/(2*A) 2.11. Se tienen tres variables A, B y C. Escribir las instrucciones necesarias para intercambiar entre st sus valores del modo siguiente: B toma el valor de A C toma el valor de B A toma el valor de C 32. Fundamentos de Programacién. Libro de Prablemas Nota: silo se debe utilizar una variable auxiliar que llamaremos AUX. AUX — A aac c- 8 B= AUX 2.12, Deducir los resultados que se obtienen del siguiente algoritmo: algoritmo ejercicio 212 entero: X, Y, 2 inicio x= 15 yY - 30 Z-y¥-x escribir (X,Y) escribir (z) fin Para analizar los resultados de un algoritmo, lo mejor es utilizar una tabla de seguimiento. En la tabla de seguimiento aparecen varias columnas, cada una con el nombre de una de las variables que aparecen en el algoritmo, pudiéndose incluir ademas una con la salida del algoritmo. Mas abajo se va realizando x | Y | Z |Salida 15,30 15 2.13. Encontrar el valor de la variable VALOR después de la ejecucién de las siguientes operaciones a) VALOR ~4.0*5 b) X-3.0 y-20 VALOR ~X*Y-¥ - o) VALOR ~5 Xn3 VALOR — VALOR *X Los resultados serian: a) VALOR = 20.0 b) VALOR La resolucién de problemas con computadoras y las herramientas de programacién ©) VALOR = 15 Nétese que en los casos) yb), valor tendré un contenido de tipo real, ya que alguno de los operandos son de tipo real 33 2.14, Determinar los valores de A, B, Cy D despues wiv in ecucin de las siguientes instrucciones: algoritmo ejercicio_2_14 entero: A, B, C, D a>onosvaD @atitrititt OumwNoo D entonces A-D py OwPOOhmar & -B-D fins fin Realizaremos una tabla de segui con lo que A nto: 23, 9,C=lITyD=6 2.15. Escribir un algoritmo que calcule y escriba el cuadrado de 821. Andilisis del problema DATOS DE SALIDA: cuadr (almacenara el cuadrado de 821) DATOSDEENTRADA: el propio ntimero 821 34 Fundamentos de Programacién. Libro de Problomas que hard este algoritmo seré asignar a la variable cuadr el cuadrado de 821, es decir, 821 * Diseito del algoritmo algoritmo ejercicio 215 entero: cuadr inicio cuadr + 821 * 821 escribir (cuadr) fin 2.16. Realizar un algoritmo que catcule la suma de los enteros entre I y 10, es decir 1+2+3+...+10 Andlisis del problema DATOS DE SALIDA: suma (contiene la suma requerida) DATOS AUXILIARES: _ntim (serd una variable que vaya tomando valores entre 1 y 10 y se acurmu- lard en suma) Hay que ejecutar un bucle que se realice 10 veces. En él se ird incrementando en 1 la variable ntim, y se acumulard su valor en la variable suma, Una vez salgamos del bucle se visualizara el valor de la variable suma. Disefio del algoritmo TABLA DE VARIABLES: entero : suma,mim : 3 ; aaa La resolucion de problemas con computadoras y las herramientas de programaciin 35 Corn) 217. Realizar un algoritmo que calcule y visualice las potencias de 2 entre 0 y 10. Anilisis det problema Hay que implementar un bucle que se ejecute once veces y dentro de él ir incrementando una variable que tome valores entre 0'y 10 y que se lamard rim. También dentro de él se visualizard el resultado de laoperacién 2 * mim, Diseito del algoritmo ‘TABLA DE VARIABLES: entero: nim 36 Fundamentos de Programacién, Libroda Problamas, [2-2] [is] oi] <> 2.18 Leer un carécter y deducir si esta situado antes o después de la «my en orden alfabético Anilisis del problema ‘Como dato de salida esti el mensaje que nos dice la situacién del carcter con respecto a la «m». Como entrada el propio cardcter que introducimos por teclado. No se necesita ninguna variable auxiliar. Se debe leer el carécter y compararlo con la «m» para ver si es mayor, menor o igual que ésta Recuerde que para el ordenador también un cardcter puede set mayor 0 menor que otro, y lo hace comparando el cédigo de los dos elementos de la comparacién Diseiio del algoritmo La resolucién de problemas con computadoras y las herramientas de programacién 37. 2.19, Leer dos caracteres y deducir si estén en orden alfabético, Anilisis del problema DATOS DE SALIDA: El mensaje que nos indica si estén ex widen witsdien —— DATOS DE ENTRADA: A y B (los caracteres que introducimos por teclado Se deben leer los dos caracteres y compararlos. Si A es mayor que B, no se habran introducido en orden. En caso contrario estarin en orden o serdn iguales. Disefio del algoritmo algoritmo ejercicio_2_19 carécter: a, b inicio leer (a,b) ei a = y <=, Diseito del algoritmo algoritmo Bjercicio_2_20 cardécter: c inicio leer (c) 38 Fundamentos deProgramacién. Libro deProblemas, q si (c >= 11°) y (c <= “W") entonces i eseribir (/esté entre 1a Ty 1a M") sino 4 escribir (‘no se encuentra en ese rango') fin_si fin a i ’

También podría gustarte