UNIVERSIDAD NACIONAL DE SALTA – Sede Regional Orán AÑO: 2012 Carreras: CU - TIG - TUP Cátedras: INTRODUCCIÓN A LA PROGRAMACIÓN / PROGRAMACIÓN/PROGRAMACIÓN TRABAJO PRÁCTICO N° 4: Modularidad Ejercicio 1: Los siguientes esquemas ilustran declaraciones de procedimientos y funciones. Algunos están incorrectamente escritos, identifique todos los errores: a) Procedure suma (a, b, c: Real); Var suma:Real; Begin suma := a + b + c; End; b) Procedure suma (a, b, c: Real; Var suma: Real); Begin suma := a + b + c; End; c) Function suma(a,b,c: Real): real; Begin suma := a + b + c; End; d) Function suma(a, b, c: Real): Real; Begin suma := a + b + c; End; e) Program muestra; Function esA(letra: Integer): Boolean; Var cumple:Boolean; Begin If letra = ‘a’ or letra = ‘A’ Then cumple = True Else cumple := False; EsA := cumple End; Begin Read(letra); While (not esA(letra)) do Begin Writeln(‘Tipee a:’); Readln(letra); End; End. Ejercicio 2. a) Decidir cuál sería la declaración más apropiada para cada módulo según el objetivo indicado. Justifique. Objetivo del módulo:”Decidir si un número es primo.” Trabajo Práctico Nro: 4 Modularidad Página 1 de 4 UNIVERSIDAD NACIONAL DE SALTA – Sede Regional Orán AÑO: 2012 Carreras: CU - TIG - TUP Cátedras: INTRODUCCIÓN A LA PROGRAMACIÓN / PROGRAMACIÓN/PROGRAMACIÓN a. b. c. d. e. Function EsPrimo(n:Integer): Integer; Function EsPrimo(n:Real): Boolean; Function EsPrimo(n:Integer): Boolean; Procedure EsPrimo(n:Integer; Si:Boolean); Procedure EsPrimo(Var n:Integer; Si:Boolean); Objetivo del módulo: “Calcular la suma de los n elementos de un array de enteros.” a. Procedure Suma(n:Integer;A:Array[1..100]of Integer; Total:Integer); b. Procedure Suma(VAR n:Integer; VAR A:Array[1..100] of Integer; Total:Integer); c. Procedure Suma(n:Integer;A:Array[1..100]of Integer; VAR Total:Integer); d. Function Suma(n:Integer; A:Array[1..100] of Integer); Objetivo del módulo: “Mostrar un valor entero.” a. Procedure Mostrar(Total:Integer); b. Procedure Mostrar(VAR Total:Integer); c. Procedure Mostar; b) Codificar cada módulo dentro de un mismo programa PASCAL c) Utilizando los módulos previamente probados del punto b), integrarlos de manera que colaboren en la resolución del siguiente problema: “Se ingresan números enteros positivos y se pide mostrar la suma de los k primeros números primos” Ejercicio 3: Dado el siguiente programa, indicar cuál es la salida: Program uno; Var a, b, c, d: Integer; Procedure misterio(a: Integer; Var b: Integer; Var c: Integer; Var d: Integer); Begin a:= a + b + c + d; If ( d < c) then Begin b:= a * 3; c:= d – a; d:= a + b + d; end Else Begin b:= a * 2; c:= d * a; d:= a + b + d end; Writeln(a); Writeln(b); Writeln(c); Writeln(d); End; Begin a:= 8; b:= 13; c:= 1; d:= 3; misterio(b,a,d,c); Writeln(a); Writeln(b); Writeln(c); Writeln(d); End. Trabajo Práctico Nro: 4 Modularidad Página 2 de 4 UNIVERSIDAD NACIONAL DE SALTA – Sede Regional Orán AÑO: 2012 Carreras: CU - TIG - TUP Cátedras: INTRODUCCIÓN A LA PROGRAMACIÓN / PROGRAMACIÓN/PROGRAMACIÓN Dados los siguientes problemas, se pide dividirlos en subproblemas más pequeños y escribir los módulos (procedimientos o funciones) correspondientes: Ejercicio 4: Determinar si un triángulo es equilátero, isósceles o escaleno, según la medida de sus tres lados. Ejercicio 5: Un número natural N se dice que es deficiente si la suma de sus divisores (sin contarse a sí mismo) es menor al mismo número N. Si la suma de sus divisores es mayor al mismo número N se dice que el número N es abundante y si es igual a N se dice que es perfecto. Dado un número natural N e invocando al módulo correspondiente determine si N es Deficiente, Abundante o Perfecto. Dado un array de N números decidir el tipo de número. Ejercicio 6: Escriba un programa que pida al usuario introducir un carácter, y le informe si se trata de una vocal: a) Una función aMayuscula, que devuelva el carácter en mayúscula. b) Una función AMinuscula que devuelva el carácter en minúscula. c) Una función EsVocal que determine si el carácter es una vocal o no. Ejercicio 7: Obtener la longitud de una cadena utilizando la función LENGTH(S), que devuelve la longitud de la cadena S ingresada por el usuario. Ejercicio 8: Transformar la cadena de entrada “Esto es una prueba”, en la cadena “ESTO ES UNA PRUEBA”. Ejercicio 9: Eliminar N caracteres de una cadena S a partir de la posición P. Ejercicio 10: Invocar a la función DELETE(S,P,N) que elimina N caracteres de la cadena S, a partir de la posición P. Ejercicio 11: Insertar la cadena S en la cadena Cad a partir de la posición P. Ejercicio 12: Invocar la función INSERT(S, Cad,P) que inserta la cadena S en la cadena Cad a partir de la posición P. Ejercicio 13: Concatenar dos cadenas S1 y S2. Ejercicio 14: Invocar la función CONCAT (S1,S2, S3...) que retorna la concatenación de todas las cadenas pasadas como parámetros Ejercicio 15: Determinar si una cadena es un palíndormo (Ej: NEUQUEN) Ejercicio 16: Obtener la primera posición en la que comienza la subcadena fragi en la cadena “supercalifragilisticoexpialidoso”. Utilizar la función POS(SB,S) que devuelve la posición de la primera aparición de la subcadena SB en la cadena S. Ejercicio 17: Escribir un programa para determinar en un arreglo V de N cadenas, la cadena que tenga repetida una palabra P la mayor cantidad de veces. Trabajo Práctico Nro: 4 Modularidad Página 3 de 4 UNIVERSIDAD NACIONAL DE SALTA – Sede Regional Orán AÑO: 2012 Carreras: CU - TIG - TUP Cátedras: INTRODUCCIÓN A LA PROGRAMACIÓN / PROGRAMACIÓN/PROGRAMACIÓN Ejercicio 18: Diseñar módulos para realizar las operaciones de matrices definidas en el TP 3 ejercicio 12. Luego escribir un programa que permita al usuario a través de un menú, elegir una operación entre matrices. Ejercicio 19: Generar aleatoriamente una lista de 100 números naturales y mostrarlos ordenados ascendentemente mediante los métodos: • inserción directa • selección directa • burbuja o intercambio Ejercicio 20: Dado un array de 100 números aleatorios naturales ordenados, realizar la búsqueda de un elemento x, mediante los métodos de: • Búsqueda secuencial • Búsqueda binaria Ejercicio 21: Realizar un programa que presente un menú de operaciones entre conjuntos A y B, siendo A y B conjuntos de caracteres. Cada operación es realizada por un módulo específico. Ejercicio 22 : Dado un array de 30 registros, ordenado en forma creciente por NRO DE ALUMNO, con los siguientes campos: • • • • • • Nro_de_alumno (Integer) Nombre del alumno (String[30]) Nota_Parcial_1 (0..100) Nota_Parcial_2 (0..100) Nota_Parcial_3 (0..100) Nota_Parcial_4 (0..100) Se desea obtener los datos correspondientes a un alumno particular: su nombre, las notas de los parciales y el promedio. Para ello el usuario ingresará un NRO DE ALUMNO. Utilizar el método de búsqueda binaria en el programa. Ejercicio 23: En la ciudad de Salta se llevó a cabo un importante concurso de Informática, en el cual se presentaron participantes de Jujuy, Tucumán y Salta. Una vez finalizado el concurso se evaluaron los exámenes. De cada examen se conoce el nombre de la persona, su provincia y el puntaje (de 0 a 100). a) Defina la estructura de datos más adecuada para almacenar la información. b) Obtener: b1) Participante con la mejor calificación. b2) Participantes que promocionaron (puntaje mayor a 90) ordenados alfabéticamente. b3) Cantidad de participantes que aprobaron por provincia (puntaje mayor a 70) b4) Determinar si el participante “Juan Perez” promocionó el concurso. Trabajo Práctico Nro: 4 Modularidad Página 4 de 4