trabajo practico nº4 - Cátedra de Programación

Anuncio
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
Descargar