Professional Documents
Culture Documents
FIIS
SUBPROGRAMAS
Para resolver un problema complejo se debe descomponerlo en subproblemas (programacin modular).
Para solucionar un subproblema se disea un subprograma. Subprograma: programa que realiza una tarea especfica. Existe un programa principal que enlaza a los subprogramas y les transfiere el control para que se ejecuten Caractersticas de un subprograma 1.- Tiene un nombre para invocarlo 2.- El subprograma invocado recibe el control y se ejecuta. Cuando termina su tarea devuelve el control a quien lo invoc. 3.- La cabecera del subprograma le permite comunicarse con los programas o subprogramas que lo invoquen.
FIIS
VARIABLES GLOBALES: son variables declaradas en el programa principal y son reconocidas por todos los subprogramas. VARIABLES LOCALES: son variables declaradas dentro de los subprogramas y solo es reconocida por sta. TIPOS DE SUBPROGRAMAS 1.- Funciones 2.- Procedimientos
FIIS
FUNCIONES
Caractersticas: Subprograma que recibe uno o mas datos de entrada y devuelve un solo resultado ( un dato entero, real, lgico, carcter o cadena) Su nombre est asociado al resultado que devuelve
Formato General de una Funcin: tipo-de-dato Funcin nombre-funcin (lista de parmetros) (declaracin de constantes y variables locales) Inicio acciones de la funcin devolver (variable o expresin) Fin-funcin Lista de parmetros (formales): lista de variables (tipo de dato y nombre) para datos de entrada.
FIIS
Cmo funcionan?
FIIS
PROBLEMAS DE FUNCIONES 1.- Disee un algoritmo que reciba los nmeros enteros positivos n y m (nm) y calcule la combinacin de n en m 2.-Se tienen los conjuntos A y B de n y m elementos respectivamente (n 20, m 20) . Disee un algoritmo que almacene los datos de A y B y luego verifique si A est contenido en B . 3.- Disee un subprograma que reciba un nmero hexadecimal de maximo 15 caracteres y devuelva su equivalente en el sistema decimal 4.- Disee un subprograma que reciba una lnea de texto y nos retorne el nmero de palabras que tienen por lo menos 3 vocales diferentes.
FIIS
PROCEDIMIENTOS
Procedimiento es un subprograma que: puede recibir cero, uno o mas datos de entrada y puede devolver cero, uno o mas datos de salida Su nombre solo es utilizado para invocarlo
Formato General de un Procedimiento: Procedimiento nombre-procedimiento (lista de parmetros) (declaracin de constantes y variables locales) Inicio acciones del procedimiento Fin-procedimiento Lista de parmetros (formales): lista de variables (tipo de dato y nombre) para entrada y/o salida de datos.
FIIS
FIIS
PROBLEMAS 1.- Disee un algoritmo que almacene los pesos de n alumnos (n<=100) en un vector A, luego verifique si la suma de los pesos de la primera mitad de A es igual a la suma de los pesos de la segunda mitad. Si la verificacin resulta verdadera, el algoritmo debe mostrar el mensaje pesos balanceados de lo contrario debe mostrar el mensaje pesos no balanceados. Nota: a) considere que n es par impar. Si es impar no debe tomar en cuenta el elemento del centro. b) Utilice dos o mas subprogramas con los parmetros que considere necesarios.
FIIS
2.- Disee un subprograma que reciba en una cadena una fecha del ao 2005 en el formato dd/mm/aaaa y luego presente dicha fecha escrita tal como se muestra en el siguiente ejemplo: El subprograma recibe: 12/12/2005 Salida: Lunes 12 de Diciembre de 2005 Nota: a) Tenga presente que el 01/01/2005 fue sbado. b) Los meses 1, 3, 5, 7, 8, 10 y 12 tienen 31 das. Los meses 4, 6, 9 y 11 tienen 30 das y el mes 2 tiene 28 das.
FIIS
3.- Una tienda comercial cuenta con el cdigo (cadena) y la venta del mes (en soles) de n productos (n200). Nota: el cdigo es una cadena de 5 caracteres de los cuales los 4 primeros son dgitos y el ltimo es una letra (A, B, C, D, E) que indica el grupo al que pertenece el producto. Disee un algoritmo que utilizando subprogramas: a) Almacene los datos (cdigo y venta) validndolos b) Presente un listado que muestre la venta total por grupo.
FIIS
RECURSIVIDAD
Se dice que un objeto es recursivo si forma parte de si mismo Se dice que un problema es recursivo (directo) si puede ser expresado en funcin de otro(s) problema(s) del mismo tipo pero de menor nivel de complejidad. Caractersticas de un subprograma recursivo directo: 1.- Dentro de sus acciones se invoca a si mismo. 2.- Existe una condicin de alto y retorno que es dato. 3.- Es alternativo a una estructura repetitiva.
FIIS
PROBLEMAS
Funciones recursivas Disee un subprograma recursivo para cada uno de los siguientes casos: 1.- Factorial Entrada: un nmero entero mayor o igual a 0 Salida: el factorial del nmero. 2.- MCD de dos nmeros Entrada: dos nmero enteros positivos Salida: mximo comn divisor de ambos 3.- Bsqueda de un elemento en un arreglo Entrada: un arreglo de cdigos (entero positivo de 4 cifras) de n alumnos (n 100) y un cdigo dado, Salida: si el cdigo dado se encuentra o no en el arreglo .
FIIS
4.- Problema (3ra PC 2006-1 ) Crear un subprograma recursivo que reciba un valor de n (entero positivo) y un valor de X(real) y nos entregue el valor de la siguiente suma: S = (X/1! ) (X3/3!) + (X5/5!) + (-1) n+1 (X2n-1)/(2n-1)! ; n1
5.- Problema Disee un subprograma recursivo que reciba a los conjuntos A y B de n y m elementos (letras) respectivamente (n,m 20) y muestre los elementos de A-B 6.- Problema (3ra PC 2005-1) Crear una funcin recursiva que reciba un nmero hexadecimal (como cadena) y luego nos retorne su equivalente en el sistema decimal.
V. REGISTROS Y ARCHIVOS
FIIS
REGISTRO
Es la unidad bsica de la base de datos de una entidad.
Registros Archivos BASE DE DATOS
Es la estructura que permite almacenar datos (de una entidad u objeto) que pueden ser de diferentes tipos Ejemplo: Se tiene los siguientes datos del alumno Juan Prez: nombre completo (cadena), promedio ponderado (real), total crditos aprobados (entero). Almacenar dichos datos.
Alumno
Nombre PromPond TCred
FIIS
FIIS
Declaracin de la estructura del registro tipo nombre de la estructura= registro tipo de dato: nombre campo 1 tipo de dato: nombre campo 2 .. fin registro Declaracin de la variable tipo registro variable nombre de la estructura: nombre de la variable
FIIS
Asignacin nombre-variable tipo registro.nombre-campo dato Lectura/escritura leer(nombre-variable tipo registro.nombre-campo) Copia de un registro en otro nombre registro1 nombre registro2
FIIS
EJEMPLOS 1.- Se cuenta con los siguientes datos de un alumno de ST221: nombre, notas de 4 PC , EP, EF. Disee un algoritmo que almacene dichos datos y muestre el PF. 2.- Se cuenta con los siguientes datos de un alumno FIIS: nombre, ao de ingreso (mes, ao) promedio ponderado. Se cuenta con los siguientes datos de un docente FIIS: nombre, ao de ingreso a la docencia, condicin (N/C), sueldo. Disee un algoritmo para almacenar los datos de ambas personas y muestre el nmero de aos (al 31 DIC 2011) cumplidos que permanece en la FIIS
FIIS
ARREGLOS DE REGISTROS
Son vectores cuyos elementos son registros Declaracin: arreglo(tamao) de nombre-estructura: nombre-arreglo Ejemplo: Se cuenta con los siguientes datos de un conjunto de n alumnos FIIS (n100): nombre, especialidad, crditos aprobados, promedio ponderado. Disee un algoritmo que almacene dichos datos y luego muestre un listado de alumnos por especialidad y dentro de ella ordenados por orden de mrito segn el promedio ponderado.
FIIS
Solucin:
ALU
Universidad Nacional de Ingeniera
nombre
ALU(1) -- ALU(2) --
Esp
cred
prom
ALU(n) --
FIIS
PROBLEMA
Universidad Nacional de Ingeniera
En un arreglo de registros se desea almacenar la informacin de n (n200) alumnos de un curso consistente en: cdigo de alumno (7c), nombre completo (35c), seccin (una letra), promedio de prcticas, examen parcial, y examen final. Con estos datos se desea: a) Presentar por cada seccin el promedio general y los alumnos con mayor promedio final. (Nota: PF = (EP+2EF+PP)/4 b) Presente el % total de alumnos que desaprobaron el curso. Disee el algoritmo que realice esta tarea.
FIIS
ARCHIVOS
ARCHIVOS DE DATOS: Conjunto de registros relacionados entre si que se encuentran almacenados en medios de almacenamiento externo (disco). Es el archivo fsico. BASE DE DATOS: Conjunto de archivos que contienen datos relacionados. Los archivos se relacionan entre si a travs del campo clave (un campo del registro que lo identifica diferencindolo de los dems. Ejm de campo clave: cdigo de alumno, DNI, apellidos, etc.
FIIS
4.- Para acceder a un registro, se utiliza un elemento llamado puntero de registro el cual identifica el registro sobre el cual se va a realizar una operacin de lectura o escritura. 5.- Todas las operaciones de lectura/escritura de datos en un archivo se realiza utilizando una variable auxiliar tipo registro con la misma estructura que los registros del archivo.
FIIS
DECLARACION DE LA VARIABLE TIPO ARCHIVO Y DE LA VARIABLE AUXILIAR tipo nombre- tipo-reg: registro tipo de dato1: nombre-campo1 tipo de dato2: nombre-campo2 etc. fin-registro
FIIS
3.- APERTURA DE ARCHIVO EXISTENTE Asigna o enlaza el archivo fsico con el archivo lgico permitiendo la comunicacin entre ellos abrir (nombre-arch-lgico , modo, nombre-arch-fsico)
El archivo se puede abrir en modo:
l: lectura de datos solamente. e: escritura de datos solamente l/e: lectura y escritura de datos
4- CIERRE DE ARCHIVO Cierra la conexin entre el archivo lgico y el archivo fsico cerrar (nombre-archivo-lgico)
Universidad Nacional de Ingeniera
5.- LECTURA DE DATOS Copia el registro seleccionado en la variable auxiliar leer ( nombre-arch-lgico, nombre-variable-auxiliar) 6- ESCRITURA DE DATOS Copia los datos del registro de trabajo en el archivo escribir ( nombre-arch-lgico, nombre-variable-auxiliar)
1.- Tamao del archivo (nmero de registros de un archivo): tamao (nombre del archivo lgico 2.- Fin de archivo : La funcin eof devuelve V si lleg al final del archivo y F si aun no eof (nombre-arch-lgico) 3- Renombra archivo: Cambia el nombre del archivo fsico renombrar (nombre-arch-antiguo, nombre-arch-nuevo)
4.- Seleccionar un registro utilizando el puntero Si el archivo se apertura en modo l/e, antes de una lectura o escritura: ubicar-p (nombre-arch-lgico, posicin) Nota: para ubicar el puntero al final de un archivo: ubicar-p (nombre-arch-lgico, tamao(nombre-arch-lgico)
FIIS
Ejemplo
Prob 1 Existe un archivo fsico llamado PLANILLA.DAT que almacena la informacin de un grupo de empleados la cual consiste en Nombre del empleado (30c), nombre del Departamento donde labora (15c) y el sueldo (real).
Disee un algoritmo que: a) dado el nombre de un empleado, muestre el departamento en que labora y su sueldo b) adicione al archivo los datos de 20 nuevos empleados. c) Presente un reporte mostrando por cada departamento los siguientes datos: nombre del departamento, nmero de empleados y sueldo promedio de los empleados.
FIIS
FIIS
Ejemplos
Prob.1 Se tiene el archivo EMPLEADO.DAT que almacena los siguientes datos: cdigo (9c), categora (1c) y sueldo (real). Disee un algoritmo que en base al archivo realice lo siguiente: a) Dada a una categora ingresada por el usuario, presente un reporte que contenga el cdigo y el sueldo de los empleados que pertenecen a dicha categora, ordenados por sueldo en forma descendente. b) Elimine del archivo a los empleados que tengan sueldo menor a S/. 550.00 Nota: Todo ordenamiento debe ser sin modificar las ubicaciones actuales de los registros.
FIIS
Se tienen los siguientes archivos fsicos: ALUMNOS.DAT (cdigo-alumno (3dig), nombre-completo) NOTAS.DAT (cdigo-alumno, nombre-curso, nota, crditos) Se pide disear un algoritmo para: a) Por cada alumno, presentar cdigo, nombre, nmero de crditos que ha llevado y el promedio ponderado de notas. b) Presentar el nombre del curso o cursos con el mayor nmero de desaprobados.
FIIS
Prob 3. Se tiene el archivo fsico ALUMNOS.DAT cuyos datos son registros que tienen la siguiente estructura: cdigo (9), nombre (40c), nmero de crditos aprobados, promedio ponderado.
Disee un algoritmo que reciba el cdigo de un alumno y luego utilizando un subprograma muestre el nmero de crditos aprobados y el promedio ponderado del alumno.
FIIS
Prob 4. (4ta PC 2003-2) Se tiene el archivo fsico ALUMNOS FIIS.DAT cuyos datos son registros que tienen la siguiente estructura: cdigo (7 caracteres: los 2 primeros dgitos son el ao de ingreso), nombre (40c), nmero de crditos aprobados, promedio ponderado. Disee un subprograma que elimine del archivo a todos los alumnos que hayan ingresado antes de 1990 , tengan menos de 140 crditos aprobados y promedio ponderado menor a 09
FIIS
Variable dinmica: Es un espacio en la RAM que no tiene nombre La direccin de este espacio se encuentra almacenado en una variable tipo puntero. Entonces, para acceder a una variable dinmica se necesita de un puntero. Nota
p
Variable esttica
Variable dinmica
FIIS
Puntero: Es una variable que almacena la direccin de una variable dinmica Indica el tipo de dato que almacena la variable dinmica Declaracin de punteros: Variables *tipo de dato de la variable dinmica: nombre del puntero Ejemplo: *entero: p p es un puntero que guarda la direccin de un dato entero Se ha declarado la variable dinmica apuntado por p
FIIS
FIIS
Creacin de una variable dinmica: Reservar (p) (solicita la direccin de un espacio en memoria para la variable dinmica) Eliminacin de la variable dinmica: liberar (p) (libera espacio en memoria) Acceso a la variable dinmica: Para almacenar datos o sacar datos de la variable dinmica: Leer/escribir (nombre del puntero*) Ejm . Leer (p*)
FIIS
ESTRUCTURAS DINAMICAS
Universidad Nacional de Ingeniera
FIIS
LISTAS ENLAZADAS
Universidad Nacional de Ingeniera
Caractersticas
Almacenan en la RAM datos del mismo tipo Se encuentran en posiciones no necesariamente contiguas. Sus elementos se denominan nodos Cada nodo de la Lista es un registro que tiene dos campos: INFO : almacena los datos que se desea almacenar DIR: es un puntero que almacena la direccin del elemento que le sigue. Tiene un puntero de lista que guarda la direccin del primero.
FIIS
PROBLEMA 1 (Listas-Listas) Se cuenta con los siguientes datos de n operaciones comerciales: tipo (C (compra) V (venta)),cdigo-producto, monto de la operacin. Disee un algoritmo que almacene estos datos y luego muestre el monto total de cada producto vendido, ordenado en forma descendente segn el monto total. PROBLEMA 2 (4ta PC 2005-2) Para un experimento se tiene una muestra de 100 puados de maz. Crear una LISTA para almacenar el nmero de granos de maz que hay en cada puado. Luego debe presentar el nmero de granos de maz que mas se repiten.
FIIS
Se tiene el archivo fsico ALUMNO.DAT que contiene los siguientes datos: codigo-alumno (9c), nombre-alumno, especialidad (2c), promedio ponderado acumulado, nmero de crditos aprobados. Dada una especialidad, se desea mostrar los datos (cdigoalumno, promedio ponderado acumulado) de aquellos alumnos que cumplan con las siguientes condiciones: tengan promedio ponderado mayo a 13 y tengan mas de 100 crditos aprobados. Este reporte debe estar ordenado por orden de mrito.
FIIS
En los nodos de una LISTA L se han almacenado los datos de un grupo de empleados: cdigo (entero), nombre completo, seccin (A, B, C) y sueldo (real). Se pide disear un subprograma que reciba a esta lista L y nos presente un reporte en donde figuren por cada seccin, los datos de los empleados ordenados en forma decreciente respecto al sueldo y en caso de sueldos iguales ordenados en forma alfabtica. (6P)
FIIS
Disee un algoritmo que permita almacenar en una lista (Pila o Cola) los siguientes datos de un conjunto de n alumnos: (cdigo, nombre completo, y los cursos que lleva (por cada curso almacene: nombre del curso y la nota final). Luego: a) Dado el nombre de un curso, muestre el nmero de aprobados y desaprobados en dicho curso. b) Muestre un listado de todos los alumnos indicando: cdigo, nombre completo y el promedio de notas de los cursos llevados. Este listado debe estar en orden de mrito.
(7P)