Resolución de Problemas y Algoritmos Ejemplo 1: Diseñar tres subalgoritmos, en lenguaje de diseño, que permitan: El primero, el ingreso de 20 números enteros en un arreglo. El segundo, devolver VERDADERO si encuentra en el arreglo un número x (ingresado por el usuario). El tercero, determinar cuántas veces aparece el “número y” (ingresado por el usuario), en el arreglo y lo informe por pantalla. Finalmente codificar el algoritmo que invoque a estos tres subalgoritmos. Subalgoritmo “ingreso” (out Ar1: arreglo de entero, in Li, Ls:entero) COMENZAR Observe el uso de los parámetros relacionados con la variable arreglo. I: entero PARA I DESDE Li HASTA Ls CON PASO 1 HACER ESCRIBIR “ingrese un número” LEER Ar1[I] Tipo de dato FINPARA FIN Subalgoritmo “buscar-x” (in Ar1 arreglo de entero, in Li, Ls, x: entero, out B: logico) Se inicializa B con el valor FALSO COMENZAR i: entero BFALSO Clase de parámetro Observar la clase de parámetros y el tipo de dato utilizados según las entradas o salidas del subalgoritmo PARA i DESDE Li HASTA Ls CON PASO 1 HACER SI (Ar1[i] = x ) ENTONCES B VERDADERO iLs+1 Recurso utilizado para forzar la salida de la iteración cuando se encuentra el valor buscado FINSI FINPARA FIN Subalgoritmo “contar-y” (in Ar1 arreglo de entero, in Li, Ls, y: entero) COMENZAR i, cant: entero Se pueden declarar variables dentro del subalgoritmo, las cuales serán locales al mismo cant0 PARA i DESDE Li HASTA Ls CON PASO 1 HACER SI (Ar1[i] = y ENTONCES cantcant + 1 Observar que el subalgoritmo cuenta las apariciones del “número y” en el arreglo y además realiza el informe por pantalla en vez de devolverlo mediante un parámetro de salida al algoritmo principal. FINSI FINPARA ESCRIBIR “el numero”,y, “ aparece la siguiente cantidad de veces:” ESCRIBIR cant FIN 1 Resolución de Problemas y Algoritmos Algoritmo “ejemploUno” COMENZAR ARR1 [1..20] de entero x, y: entero esta-x: logico Invocación al subalgoritmo “ingresar” con los parámetros actuales: el arreglo, el límite inferior y superior del mismo ingresar (ARR1, 1,20) ESCRIBIR “Ingrese el número a buscar x” LEER x Para pedirle al usuario el ingreso de un valor y luego almacenarlo en la variable x buscar-x (ARR1,1,20, x, estax) SI (esta-x = VERDADERO) ENTONCES Aquí el algoritmo principal utiliza el valor devuelto por el subalgoritmo (en esta-x) para decidir qué imprime por pantalla ESCRIBIR “El número”, x , “se encuentra en el arreglo” SINO ESCRIBIR “El número”, x , “no se encuentra en el arreglo” FINSI ESCRIBIR “Ingrese el número a buscar y” LEER y contar-y (ARR1, 1, 20, y) FIN Ejercicio Propuesto 1. 2 Modificar el subalgoritmo contar-y para que el número de veces en las que aparece el entero y sea mostrado por el módulo que lo invocó. Resolución de Problemas y Algoritmos Ejemplo 2: Escriba un algoritmo que permita ingresar no más de 100 caracteres. Luego, el algoritmo deberá: Mostrar todos los caracteres ingresados. Mostrar todos los caracteres ubicados en posiciones pares. Mostrar todos los caracteres ubicados en posiciones impares Mostrar los caracteres ubicados desde una posición inicial hasta una posición final y con un cierto salto. Las tareas de ingreso y muestra deben ser implementadas mediante subalgoritmos. El subalgoritmo Muestra deberá ser invocado, con los parámetros correspondientes, 4 veces en el algoritmo principal. Observar la clase de los parámetros y el tipo de datos de los mismos. SUBALGORITMO “INGRESO” (out Chars: arreglo de caracter, in Li: entero, out Ls: entero) COMENZAR I:entero Observe el control que se realiza ESCRIBIR “ingrese la CANTIDAD de caracteres que desea ingresar” para establecer la cantidad de LEER Ls valores a ingresar. MIENTRAS Ls<0 v Ls >100 HACER ESCRIBIR “POR FAVOR INGRESE NUEVAMENTE LA CANTIDAD DE CARACTERES” LEER Ls FINMIENTRAS PARA I DESDE Li HASTA Ls CON PASO 1 HACER ESCRIBIR “ingrese el carácter ” LEER Chars [I] FINPARA FIN Estos parámetros son los recomendables para utilizar en cualquier subalgoritmo que trabaje con arreglos: arreglo, límite inferior y superior y además el valor para el PASO SUBALGORITMO “MUESTRA” (in chars: arreglo de caracter, in inicio, fin, pasoj: entero) I:entero COMENZAR PARA I DESDE inicio HASTA fin CON PASO pasoj HACER Observe el uso de los parámetros relacionados con la variable arreglo y ESCRIBIR chars [I] la forma en que se utilizan para FINPARA realizar el recorrido en el mismo. FIN 3 Resolución de Problemas y Algoritmos ALGORITMO “CIEN_CHAR” COMENZAR I: entero Arr[1..100]: arreglo de caracter X, Y, Z,N: entero INGRESO(Arr,1,N) MUESTRA(Arr,1,N,1) Permite mostrar todos los elementos del arreglo MUESTRA(Arr,2,N,2) Permite mostrar los elementos del arreglo ubicados en las posiciones pares del mismo MUESTRA(Arr,1,N,2) Permite mostrar los elementos del arreglo ubicados en las posiciones impares del mismo ESCRIBIR “ingrese posición inicial del arreglo que desea mostrar” LEER X MIENTRAS X<0 v X >N HACER ESCRIBIR “por favor ingrese nuevamente” LEER X FINMIENTRAS ESCRIBIR “ingrese posición final del arreglo que desea mostrar” LEER Y MIENTRAS Y<X v Y >N HACER ESCRIBIR “por favor ingrese nuevamente” LEER Y FINMIENTRAS ESCRIBIR “ingrese el salto para recorrer arreglo” LEER Z MIENTRAS Z< 0 HACER ESCRIBIR “por favor ingrese nuevamente” LEER Z FINMIENTRAS Observar Y ANALIZAR Los distintos controles realizados. Podrían implementarse otros controles y modificar las opciones. MUESTRA(ARR,X,Y,Z) FIN Ejercicio Propuesto 1. Modifique el subalgoritmo INGRESO para que permita ingresar caracteres en un arreglo de cualquier manera: del primero al último, del último al primero, de dos en dos, de uno en uno, entre otras. 4