TP

17
PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ ESTUDIOS GENERALES CIENCIAS TÉCNICAS DE PROGRAMACIÓN Práctica Nº 1 Semestre académico 2011-2 Elaborado el profesor del curso Notas: No se pueden usar apuntes de clase ni calculadoras. CONTROL DE LECTURA Según el documento “Separata-Técnicas de Programación” que se le pidió leyera para esta práctica, responda a las siguientes preguntas: 1. (2 puntos) Explique cómo el diseño de las estructuras de datos en un programa puede influir en la eficiencia del programa. 2. (1.5 puntos) Explique el concepto de “back-words”. 3. (1.5 puntos) Explique cómo se representan los números reales o de punto flotante en el computador. 4. (1.5 puntos) Explique las características que debe tener un algoritmo. 5. (1.5) Explique en qué consisten los lenguajes funcionales. DISEÑO DE ALGORITMOS: 6. (5 puntos) Los números romanos se emplean en muchos medios, las reglas para formar un número romano se detalla a continuación 1 : - La numeración romana utiliza siete letras mayúsculas a las que corresponden los siguientes valores: I = 1, V = 5, X=10, L=50, C=100, D=500, M=1000. Ejemplos: XVI = 16; LXVI = 66. - Si a la derecha de una cifra romana de escribe otra igual o menor, el valor de ésta se suma a la anterior. Ejemplos: VI = 6; XXI = 21; LXVII = 67. - La cifra "I" colocada delante de la "V" o la "X", les resta una unidad; la "X", precediendo a la "L" o a la "C", les resta diez unidades y la "C", delante de la "D" o la "M", les resta cien unidades. Ejemplos: IV = 4; IX = 9; XL = 40; XC = 90; CD = 400; CM = 900. - En ningún número se puede poner una misma letra más de tres veces seguidas. Ejemplos: XIII = 13; XIV = 14; XXXIII = 33; XXXIV = 34 - La "V", la "L" y la "D" no pueden duplicarse porque otras letras ("X", "C", "M") representan su valor duplicado. Ejemplos: X = 10; C = 100; M = 1.000 - Si entre dos cifras cualesquiera existe otra menor, ésta restará su valor a la siguiente. Ejemplos: XIX = 19; LIV = 54; CXXIX = 129 - El valor de los números romanos queda multiplicado por mil tantas veces como rayas horizontales se coloquen encima de los mismos. Ejemplo: M = 1.000.000. Explique de manera muy detallada , en forma ordenada y empleando sus propias palabras cómo representaría un número romano, dado cualquier número entero como por ejemplo: 1734. En la calificación se tomará en cuenta, el orden, la caligrafía, la ortografía y la ausencia de ambigüedades en las oraciones. No puede emplear términos de algún lenguaje de programación. PROGRAMACIÓN 7. (3.5 puntos) Escriba las expresiones siguientes, que permitan calcular el valor de δ. Se deberá emplear las reglas de sintaxis del Pascal: 1 de 2 Continúa… 1 Tomado de : http://roble.pntic.mec.es/msanto1/ortografia/numrom.htm Este material, de distribución gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realización de las evaluaciones.

description

TP

Transcript of TP

  • PONTIFICIA UNIVERSIDAD CATLICA DEL PER ESTUDIOS GENERALES CIENCIAS

    TCNICAS DE PROGRAMACIN

    Prctica N 1 Semestre acadmico 2011-2

    Elaborado el profesor del curso

    Notas: No se pueden usar apuntes de clase ni calculadoras.

    CONTROL DE LECTURA

    Segn el documento Separata-Tcnicas de Programacin que se le pidi leyera para esta prctica, responda a las siguientes preguntas:

    1. (2 puntos) Explique cmo el diseo de las estructuras de datos en un programa puede influir en la eficiencia del programa.

    2. (1.5 puntos) Explique el concepto de back-words.

    3. (1.5 puntos) Explique cmo se representan los nmeros reales o de punto flotante en el computador.

    4. (1.5 puntos) Explique las caractersticas que debe tener un algoritmo.

    5. (1.5) Explique en qu consisten los lenguajes funcionales.

    DISEO DE ALGORITMOS:

    6. (5 puntos) Los nmeros romanos se emplean en muchos medios, las reglas para formar un nmero romano se detalla a continuacin1: - La numeracin romana utiliza siete letras maysculas a las que corresponden los siguientes valores: I = 1, V = 5, X=10,

    L=50, C=100, D=500, M=1000. Ejemplos: XVI = 16; LXVI = 66. - Si a la derecha de una cifra romana de escribe otra igual o menor, el valor de sta se suma a la anterior. Ejemplos:

    VI = 6; XXI = 21; LXVII = 67. - La cifra "I" colocada delante de la "V" o la "X", les resta una unidad; la "X", precediendo a la "L" o a la "C", les resta

    diez unidades y la "C", delante de la "D" o la "M", les resta cien unidades. Ejemplos: IV = 4; IX = 9; XL = 40; XC = 90; CD = 400; CM = 900.

    - En ningn nmero se puede poner una misma letra ms de tres veces seguidas. Ejemplos: XIII = 13; XIV = 14; XXXIII = 33; XXXIV = 34

    - La "V", la "L" y la "D" no pueden duplicarse porque otras letras ("X", "C", "M") representan su valor duplicado. Ejemplos: X = 10; C = 100; M = 1.000

    - Si entre dos cifras cualesquiera existe otra menor, sta restar su valor a la siguiente. Ejemplos: XIX = 19; LIV = 54; CXXIX = 129

    - El valor de los nmeros romanos queda multiplicado por mil tantas veces como rayas horizontales se coloquen encima de los mismos. Ejemplo: M = 1.000.000.

    Explique de manera muy detallada, en forma ordenada y empleando sus propias palabras cmo representara un nmero romano, dado cualquier nmero entero como por ejemplo: 1734.

    En la calificacin se tomar en cuenta, el orden, la caligrafa, la ortografa y la ausencia de ambigedades en las oraciones. No puede emplear trminos de algn lenguaje de programacin.

    PROGRAMACIN

    7. (3.5 puntos) Escriba las expresiones siguientes, que permitan calcular el valor de . Se deber emplear las reglas de sintaxis del Pascal:

    1 de 2

    Contina 1 Tomado de : http://roble.pntic.mec.es/msanto1/ortografia/numrom.htm

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • 2 de 2

    ( ) ( )( )

    =+=

    ===

    lessexagesimagradosx

    xenh

    xxsenh

    5.877.852

    ee)cosh(

    2ees

    cosh/tanh(x)cotangentearcocotan

    :dondexx

    xx

    -1( ) ( )( )( )( ) ( )( )( )

    6

    2

    5

    6

    76.3

    5.376.3

    51

    53.6*9.35.2log

    logtanh)7.85tan(23.8cotan

    +

    +

    = ++

    +

    +

    +

    senh

    Considerar que y son variables que fueron asignadas antes de la evaluacin de las expresiones. Deber declarar todas sus variables.

    8. (3.5 puntos) Se pide escribir un programa en Pascal que, empleando nicamente los operadores de bits (NO: +, -, *, /, exp, ln, sin, , etc.), permita realizar lo siguiente:

    Dado un nmero entero representados en 4 bytes, de modo que tenga la forma de ABCD donde A, B, C, D son las representaciones binarias de cada uno de los bytes del nmero. El programa deber generar otro nmero a partir del primero que tengan la forma de CADB. Donde C contiene lo mismo que C pero con los bits pares invertidos. A contiene lo mismo que A pero los 4 bits ms significativos se colocan como los menos significativos y los 4 menos significativos como ms significativos. D contiene lo mismo que D pero con los bits impares invertidos. B contiene lo mismo que B pero con los dos bits menos significativos intercambiados en posicin.

    Ejemplo:

    Datos: A B C D X = 902661613 00110101 11001100 10000101 11101101 C C 10000101 B 11010000 A A 00110101 B 01010011 D D 11101101 B 01000111 B B 11001101 B 11001110

    Resultado: C A D B S = -799848498 11010000 01010011 01000111 11001110

    Lima, 9 de septiembre del 2011.

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • PONTIFICIA UNIVERSIDAD CATLICA DEL PER ESTUDIOS GENERALES CIENCIAS

    TCNICAS DE PROGRAMACIN

    Prctica N 2 Semestre acadmico 2011-2

    Elaborado el profesor del curso

    Notas: NO se pueden usar cadenas de caracteres, arreglos ni registros en esta prctica. No se pueden usar apuntes de clase ni calculadoras.

    PREGUNTA 1: (6 puntos)

    Se tiene un archivo en el que se encuentre una serie de nmeros enteros menores de 4 000, similar al que se muestra a continuacin:

    23 567 2784 333 12 426 1049 993 799 3951

    Se pide que escriba usted un programa que permita crear otro archivo de textos en el que los nmeros aparezcan en su formato romano. Para el ejemplo anterior el programa generara el siguiente archivo:

    XXIII DLXVII MMDCCLXXXIV CCCXXXIII XII CDXXVI MXLIX CMXCIII DCCXCIX MMMXMLI

    La cantidad de valores que aparecern en cada lnea debe coincidir con la cantidad de nmeros del archivo original.

    Las reglas para formar un nmero romano se detalla a continuacin1: - La numeracin romana utiliza siete letras maysculas a las que corresponden los siguientes valores: I = 1, V = 5, X=10,

    L=50, C=100, D=500, M=1000. Ejemplos: XVI = 16; LXVI = 66. - Si a la derecha de una cifra romana de escribe otra igual o menor, el valor de sta se suma a la anterior. Ejemplos:

    VI = 6; XXI = 21; LXVII = 67. - La cifra "I" colocada delante de la "V" o la "X", les resta una unidad; la "X", precediendo a la "L" o a la "C", les resta

    diez unidades y la "C", delante de la "D" o la "M", les resta cien unidades. Ejemplos: IV = 4; IX = 9; XL = 40; XC = 90; CD = 400; CM = 900.

    - En ningn nmero se puede poner una misma letra ms de tres veces seguidas. Ejemplos: XIII = 13; XIV = 14; XXXIII = 33; XXXIV = 34

    - La "V", la "L" y la "D" no pueden duplicarse porque otras letras ("X", "C", "M") representan su valor duplicado. Ejemplos: X = 10; C = 100; M = 1.000

    - Si entre dos cifras cualesquiera existe otra menor, sta restar su valor a la siguiente. Ejemplos: XIX = 19; LIV = 54; CXXIX = 129

    PREGUNTA 2: (8 puntos)

    Uno de los problemas ms frecuentes hoy en da es que la informacin se transmite a travs de medios electrnicos y por ende es muy susceptible de ser capturada por terceros que le den mal uso. Es por esa razn que existen muchos mtodos que permiten cifrar la informacin que se enve de modo que si alguien captura el mensaje y no es el destinatario, no lo pueda entender.

    Es este sentido se requiere que usted elabore un programa en Pascal que permita leer un archivo de texto, codifique el texto y lo almacene en otro archivo.

    La codificacin consistir en lo siguiente:

    - Se le pide al usuario que introduzca el nombre del archivo a codificar, el nombre del archivo a generar y una clave que consistir en nmero entero entre 1 y 7.

    1 de 2

    1 Tomado de : http://roble.pntic.mec.es/msanto1/ortografia/numrom.htm Contina

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • - El programa deber leer de dos en dos los caracteres del archivo, modificar estos caracteres segn la clave y luego guardarlos en el archivo final.

    - La modificacin consistir en girar tantos bits como indica la clave, tomando la representacin binaria de ambos caracteres como si fuera un solo valor.

    Por ejemplo si la clave fuera 3 y el archivo tuviera el siguiente mensaje:

    Hola amigos El proceso de codificacin realizar lo siguiente:

    Caracter Cdigo ASCII Binario al juntarlos al girar al separarlos Cdigo ASCII Caracter H 104 0110 1000 0110 1000 1000 1111 0100 0100 0111 1011 0100 0100 68 D o 143 1000 1111 0111 1011 123 {

    l 108 0110 1100 0110 1100 0110 0001 0110 0011 0000 1011 0110 0011 99 c a 97 0110 0001 0000 1011 11

    32 0010 0000 0010 0000 0110 0001 0000 0011 0000 1001 0000 0011 3 a 97 0110 0001 0000 1001 9

    m 109 0110 1101 0110 1101 0110 1001 0110 1011 0100 1011 0110 1011 107 k i 105 0110 1001 0100 1011 75 K

    g 103 0110 0111 0110 0111 0110 1111 0011 1011 0111 1011 0011 1011 59 ; o 111 0110 1111 0111 1011 123 {

    s 115 0111 0011 0111 0011 0000 0000 1001 1000 0000 0011 1001 1000 152 0 0000 0000 0000 0011 3

    Por lo tanto, para el mensaje dado como ejemplo, el archivo creado por el programa ser:

    D{ckK;{

    Nota: si la cantidad de caracteres en el archivo original no es par, se tomar un carcter adicional con cdigo ASCII cero (0).

    Los nicos valores constantes que podr emplear sern 1, 2 3.

    2 de 2

    PREGUNTA 3: (6 puntos)

    Escriba un programa en Pascal que permita calcular el nmero de das que hay entre dos fechas cualesquiera dadas como dato.

    Deber tomar en cuenta que enero, marzo, mayo julio, agosto octubre y diciembre tienen 31 das, que abril, junio, septiembre y noviembre tienen 30 das, y que febrero tiene 29 das en ao bisiesto y 28 en el resto. Un ao es bisiesto si es divisible entre 4, excepto aquellos divisibles entre 100 pero que no son divisibles entre 400.

    Por ejemplo: Fecha inicial: 3 10 2006 Fecha final: 23 4 2008 Resultado: 568 das

    Lima, 23 de septiembre del 2011.

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • PONTIFICIA UNIVERSIDAD CATLICA DEL PER ESTUDIOS GENERALES CIENCIAS

    TCNICAS DE PROGRAMACIN

    Prctica N3 Semestre acadmico 2011-2

    Elaborado por los profesores del Curso Notas:

    No se puede usar material de consulta En ninguna de las preguntas de la prctica se podr utilizar funciones o procedimientos u operadores

    que manejen cadenas de caracteres y si emplean variables de tipo String, estas no podrn ser manipuladas como arreglos. Tampoco se podrn emplear archivos auxiliares.

    PREGUNTA 1: (12 puntos)

    Se tienen dos archivos de textos que contienen informacin similar a la que se muestra a continuacin:

    Archivo 1: Archivo 2: 12.85 1.643 50.564 15.82 43.984 23.4056 3.002 98.6393 28.4 6.78 27.0977 33.056 3.9 45.838 33.7773 12.648 12.77 21.334 35.65 10.02 . . . 44.0 8.456 48.901 23.569 52.782 45.873 54.98 78.99 56.0923 89.734 63.5301 79.33 65.35 70.456 71.778 83.45 . . .

    0

    10

    20

    30

    40

    50

    60

    70

    0 10 20 30 40 50 60 70 80

    Figura 1.

    El primer archivo contiene dos columnas de nmeros reales, cada lnea corresponde a una coordenada X, Y de una grfica como se muestra en la figura 1, los datos estn ordenados ascendentemente por la primera columna. El segundo archivo contiene una serie de valores reales sin orden alguno. Estos valores corresponden a valores X para los cuales se desea obtener su correspondiente valor Y.

    Se pide que usted escriba un programa en Pascal que permita crear un tercer archivo de textos como el que se muestra a continuacin, Los valores de yyyi debern ser calculados buscando primero los valores xi y xi+1 ms cercanos al valor X e interpolando o extrapolando los valores.

    Archivo 3: 3.9 yyy1 12.77 yyy2 12.85 1.643 15.82 yyy3 21.334 yyy4 23.4056 3.002 27.0977 yyy5 28.4 6.78 33.056 yyy6 33.7773 12.648 35.65 10.02 43.984 yyy7 44.0 8.456 45.838 yyy8 48.901 23.569 50.564 yyy9 52.782 45.873 54.98 78.99 56.0923 89.734 63.5301 79.33 65.35 70.456 71.778 83.45 . . .

    Interpolacin

    xi xi+1

    yi+1

    x

    yyyi yi

    xi xi+1

    yi yi+1

    Extrapolacin

    x yyyi

    No se tiene la informacin de cuntos datos tiene cada archivo pero se sabe que cado uno no tiene ms de 100.

    NO SE PODRN EMPLEAR ARCHIVOS AUXILIARES.

    Contina

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • PREGUNTA 2: (8 puntos)

    Se tiene un archivo denominado Especialidades.txt, contiene la lista de especialidades de la Universidad, el archivo no est ordenado. El archivo tiene la siguiente forma.

    10-0547 Ingeniera Informtica Ciencias e ingeniera 20-7475 Matemticas

    Cdigo de la especialidad Nombre de la especialidad Nombre de la Facultad a la que pertenece Cdigo de la especialidad

    En el archivo se almacenan todas las especialidades de que tiene una Universidad. Cada especialidad est ligada a una facultad, por lo que si bien es cierto en el archivo no se repiten las especialidades, el nombre de una Facultad puede aparecer varias veces.

    Se pide que usted escriba un programa en Pascal que permita crear un archivo de textos en el que aparezcan las especialidades agrupadas por Facultad. El archivo ser similar al siguiente:

    Facultad de Ingenieras a) Ingeniera informtica b) Ingeniera Civil Facultad de Letras y Ciencias Humanas a) Lingstica b) Literatura Ingeniera de Derecho

    No se tiene el dato de cuntas facultades o especialidades tiene la Universidad pero s que son alrededor de 30 Facultades, y que cada Facultad no tiene ms de 50 especialidades.

    NO SE PUEDEN USAR ARCHIVOS AUXILIARES.

    Lima, 28 de octubre del 2011.

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • PONTIFICIA UNIVERSIDAD CATLICA DEL PER ESTUDIOS GENERALES CIENCIAS

    TCNICAS DE PROGRAMACIN

    Prctica N4 Semestre acadmico 2011-2

    Elaborado por el profesor del Curso Notas:

    No se puede usar material de consulta En ninguna de las preguntas de la prctica se podr utilizar archivos auxiliares.

    PREGUNTA 1: (8 puntos)

    El Buscaminas (en ingls: Minesweeper) es un videojuego para un jugador inventado por Robert Donner en 1989. El objetivo del juego es despejar un campo de minas sin detonar ninguna mina. El juego ha sido programado para muchos sistemas operativos, pero debe su popularidad a las versiones que vienen con Microsoft Windows desde su versin 3.11.

    Lo que se busca en esta pregunta es que usted escriba un procedimiento en Pascal que solamente prepare el escenario del juego. Esto es que coloque en un arreglo las minas y la informacin necesaria para que luego se pueda jugar. En otras palabras dado el siguiente programa:

    prgram buscaminas; const MAX = 50; type TFila = array[1..MAX] of Char; TMatriz = array[1..MAX] of TFila; var tablero:TMatriz; nFil, nCol, nMin: Integer; begin write(Ingrese el numero de filas y columnas del escenario: ); readln(nFil, nCol); write(Ingrese el numero de minas: ); readln(nMin); preparaEscenario(tablero, nFil, nCol, nMin); jugar(tablero, nFil, nCol, nMin); end.

    se le pide que implemente el procedimiento preparaEscenario.

    El procedimiento debe colocar aleatoriamente las nMin minas en el tablero, de modo que se verifique que dos o ms minas no sean colocadas en la misma celda. Luego se debe colocar en cada celda del tablero que no tenga una mina, el nmero de minas que tiene a su alrededor, las celdas que no tienen minas alrededor quedarn vacas.

    El resultado ser un tablero similar al que se muestra a continuacin: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 2 1 1 1 1 2 1 1 1 2 2 1 1 2 2 3 2 2 4 3 1 3 5 3 1 2 2 1 2 1 1 Mina

    El programa principal no se puede cambiar, tampoco se pueden definir nuevos tipos de datos.

    PREGUNTA 2: (12 puntos)

    Se tiene un tablero que contiene informacin similar al que muestra en la siguiente pgina. Las letras simulan una serie de naves que quieren capturar una bandera (2). Se pide que escriba un procedimiento en Pascal en el que se simule el movimiento de las naves y determine si alguna nave pudo capturar la bandera, y en ese caso qu nave la captur.

    Contina 1 Tomado de http://es.wikipedia.org/wiki/Buscaminas

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • A E F D

    H G 2 K B C J I

    La simulacin se realizar de la siguiente manera:

    Se mueve una a una las naves. Cada nave se mueve una celda en cada ciclo de la simulacin. El movimiento de una nave debe ser de modo que la fila y columna de la nave se acerque a la fila y columna de la bandera. Por ejemplo si la bandera se encuentra en la celda [5][5] y una nave en la celda [10][7], sta ltima se mover a la celda [9][6]. Se debe empezar a mover primero las naves que se encuentren ms arriba y a la izquierda del tablero y terminar con las que se encuentren ms abajo y a la derecha.

    Si al mover una nave, sta se coloca en una celda ocupada por otra nave, ambas se destruyen, eliminndolas del tablero.

    Un ciclo de la simulacin se cumple cuando todas las naves del tablero se han movido una celda. Los tres puntos anteriores se repiten hasta que la simulacin termine.

    La simulacin termina inmediatamente cuando:

    Una nave llega a la celda de la bandera, o Cuando todas las naves se han destruido.

    El procedimiento deber tener el siguiente encabezado:

    procedure simulacion(var tablero: TMatriz; nFil, nCol: Integer);

    donde TMatriz ser definido como:

    const MAX = 50; type TFila = array[1..MAX] of Char;

    TMatriz = array[1..MAX] of TFila;

    Las variables tablero, nFil y nCol llegan al procedimiento cargadas con valores vlidos.

    Al final el procedimiento debe imprimir por pantalla:

    El nmero de naves que inici la simulacin La posicin de la bandera La identificacin y posicin de cada una de las naves. El nmero de ciclos que tom la simulacin. Un mensaje que indique si alguna nave captur o no la bandera. En caso de haber sido capturada la bandera:

    La identificacin de la nave que la captur. La identificacin y posicin de las naves que quedaron en el tablero y que no pudieron

    capturar la bandera. El tipo de dato del tablero y el encabezado del procedimiento no pueden cambiarse, sin embargo si podr definir en esta pregunta otros tipos de datos y variables.

    Lima, 11 de noviembre del 2011.

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • PONTIFICIA UNIVERSIDAD CATLICA DEL PER ESTUDIOS GENERALES CIENCIAS

    TCNICAS DE PROGRAMACIN 1er. Examen

    2do. Perodo del 2011

    NOTAS: - NO SE PUEDE USAR MATERIAL DE CONSULTA - LAS SOLUCIONES DEBERN DESARROLLARSE BAJO UN ESTRICTO DISEO DESCENDENTE, por lo que NO SE

    CALIFICARN aquellos mdulos que son llamados por otros que estn incompletos. Cada mdulo no debe sobrepasar las 20 lneas.

    - NO SE PODR UTILIZAR ARREGLOS TAMPOCO SE PODR EMPLEAR FUNCIONES, PROCEDIMIENTOS NI OPERADORES QUE MANEJEN CADENAS DE CARACTERES. SI SE EMPLEAN VARIABLES DE TIPO STRING, STAS NO PODRN SER MANIPULADAS COMO ARREGLOS.

    - NO SE PUEDEN EMPLEAR ARCHIVOS AUXILIARES. - En la calificacin se tomar en cuenta el buen uso de los nombres de los identificadores, y el eficaz uso de comentarios. - QUEDA TERMINANTEMENTE PROHIBIDO EL USO DE CALCULADORAS Y CORRECTORES LQUIDOS

    PARTE OBLIGATORIA

    Una Universidad desea contar con un programa que le permita cuantificar los cursos que llevan los alumnos en otras especialidades a la propia. Para esto cuenta con varios archivos de textos, los que se presentan a continuacin:

    Alumnos.txt, contiene la informacin acerca de los alumnos de la Universidad, su estructura es la siguiente:

    20073434 Juan Prez Lpez 10-0534 20091122

    Cdigo del alumno Nombre del alumno Cdigo de la especialidad Cdigo del alumno

    Cursos.txt, contiene los cursos dictados en la Universidad, el archivo no est ordenado. El archivo tiene la siguiente organizacin:

    MEC123 Mquinas elctricas 10-0666 3.5 CIV222 Materiales de construccin

    Cdigo del curso Nombre del curso Cdigo de la especialidad a la que pertenece Nmero de crditos Cdigo del Curso

    Especialidades.txt, contiene la lista de especialidades de la Universidad, el archivo no est ordenado. El archivo tiene la siguiente forma.

    10-0547 Ingeniera Informtica Ciencias e ingeniera 20-7475 Matemticas

    Cdigo de la especialidad Nombre de la especialidad Nombre de la Facultad a la que pertenece Cdigo de la especialidad

    Finalmente se cuenta con otro archivo de textos que contiene las notas de todos los alumnos matriculados en la Universidad en un perodo de tiempo determinado, de la siguiente forma:

    20109912 INF757 14 2005339

    Cdigo del alumno Cdigo del curso Nota Cdigo del alumno

    1. (7 puntos) Se pide confeccionar un programa en Pascal que permita determinar para cada especialidad, el nmero de alumnos de esa especialidad que se encuentra matriculado en cursos de otra especialidad diferente a la suya. El reporte debe hacerse en un archivo de textos y debe ser similar al siguiente:

    Contina 1/3

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • Nmero alumnos matriculados en otras especialidades, por especialidad a) Ingeniera Informtica: 35 alumnos matriculados en cursos de otra especialidad. b) Matemticas: 0 alumnos matriculados en cursos de otra especialidad. c) Ingeniera Civil: 123 alumnos matriculados en cursos de otra especialidad d)

    CONSIDERACIONES ADICIONALES: un alumno NO puede ser contado dos veces.

    2. (8 puntos) Confeccionar un programa en Pascal que permita detectar a los alumnos que estn llevando cursos en otras especialidades diferentes a la suya, en el reporte debe aparecer el nombre y la especialidad del alumno, y un detalle del creditaje llevado en cada especialidad diferente a la suya. El reporte debe ser hecho en un archivo de textos de la siguiente manera:

    Alumno Especialidad Crditos en otra especialidad Especialidad Crditos matriculados Crditos aprobados a) Gmez Ingeniera Civi Matemticas 7.5 6.0 Pedro l

    Ana Ronc nformFsica 8.0 3.5

    Ingeniera Industrial 3.0 3.0 b) al Ingeniera I tica Ingeniera Civil 12.5 10.5 c) Carlos Castro Ingeniera Informtica Ingeniera Mecnica 3.0 0.0 Matemticas 6.5 2.5 d) ...

    Consideraciones adicionales: en el reporte NO deben aparecer aquellos alumnos que no estn matriculador en otra especialidad difere4nte a la suya. Tampoco deben aparecer especialidades con cero (0.0) crditos matriculados.

    PARTE ELECTIVA (conteste solamente una de las preguntas planteadas. Anule la pregunta no contestada en la contra cartula del cuadernillo)

    Esta parte electiva est referida a problemas que manejen directamente la representacin interna de valores, por lo tanto en esta parte SLO PODR EMPLEAR OPERADORES DE BITS. NO puede emplear operadores aritmticos como +, -, *, /, etc., tampoco funciones estndar como exp, ln, sqr, etc.). Si podr emplear los procedimientos estndar para incrementar y decrementar y las funciones ord y chr. EL NO SEGUIR ESTAS INDICACIONES ANULAR LA PREGUNTA.

    3. (5 puntos) Se tiene un archivo de textos similar al que se muestra a continuacin: HM/p6&k^wgye563$#0=73

    En el archivo se ha codificado una i e quiere hacer un programa que lea el

    sentacin binaria de los primeros 4 caracteres, juntos en una variable entera de 4 bytes, representa la cantidad de filas de puntos que tiene la imag

    de puntos que tiene la imagen. La representacin binaria del siguiente carcter indica la canti

    marcas de se

    (10b). si por el contrario la los puntos de color que tendramos sera el color 14 (1110

    cuentra en la esquina superior izquierda de la pantalla.

    magen grfica. Por lo que sarchivo y muestre la imagen que representa en la pantalla. La codificacin ha consistido en lo siguiente: - La repre

    en. - La representacin binaria de los segundos 4 caracteres, juntos en una variable entera de 4 bytes,

    representa la cantidad de columnas- dad de bits que se emplearn para

    representar cada punto de color. Este valor puede ser 2 4. A continuacin, de manera continua y sin- paracin vienen los valores de cada punto

    de color. Por ejemplo si el siguiente byte fuera el caracter cuyo cdigo ASCII en 234 (11101010b) y la cantidad de bits fuera 2, tendramos los siguientes puntos de color: color 3 (11b), color 2 (10b), color 2 (10b) y color 2 cantidad de bit por color fuera 4,

    b) y el color 10 (1010b).

    Para mostrar la imagen en pantalla deber emplear el procedimiento putPixel(x, y, color), este procedimiento pinta un punto en la pantalla, aqu x e y son valores enteros que indican la columna y la fila en la pantalla donde se quiere pintar el punto, y color es un nmero entero con el valor del color con que se quiere pintar el punto. La coordenada (0,0) se en

    2/3

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

    srodrigTexto escrito a mquinaContina...

  • 3/3

    4.

    rar. Considerar slo para esta pregunta que la imagen es cuadrada y puede estar en

    (5 puntos) Se desea hacer un programa que realice el proceso inverso al del problema anterior, esto es, a partir de una imagen pintada en la pantalla, crear un archivo de textos con la codificacin de la imagen. Para esto se debe emplear la funcin getPixel(x, y), esta funcin devuelve el valor del color de un punto en la pantalla, aqu, x e y son valores enteros que indican la columna y fila del punto que se quiere captucualquier parte de la pantalla. Para determinar el nmero de filas y columnas de la imagen, suponer que slo hay una imagen en la pantalla, que sta se encuentra sobre un fondo negro, y que no se encuentra sobre los bordes da la pantalla. Considerar que el valor del color negro es cero (0). La cantidad de bits por color se obtendr del mximo valor de color encontrado en la imagen (tomar en cuenta que se tomar 2 o 4 bits). La pantalla que se emplea tiene 1440 puntos en cada fila y 900 en cada columna, y la coordenada (0,0) se encuentra en la esquina superior izquierda de la pantalla.

    Lima, 10 de octubre del 2011.

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • Pgina 1 de 3

    PONTIFICIA UNIVERSIDAD CATLICA DEL PER ESTUDIOS GENERALES CIENCIAS

    TCNICAS DE PROGRAMACIN Examen Especial

    2do. Perodo del 2011

    NOTAS: - no se puede usar material de consulta - Las soluciones debern desarrollarse bajo un estricto diseo descendente, por lo que NO SE CALIFICARN aquellos mdulos

    que son llamados por otros que estn incompletos. - Deber modular adecuadamente sus programas procurando que cada mdulo tenga en promedio no ms de 15 lneas. Se

    tomar en cuenta en la calificacin el uso de comentarios adecuados, el uso correcto de los nombres de las variables, funciones y procedimientos. De no respetar esta indicacin, se descontar el 30% de la nota final en la pregunta.

    - No se pueden emplear archivos auxiliares en ninguna de las preguntas. - Queda terminantemente prohibido el uso de calculadoras y correctores lquidos RESPONDA DOS DE LAS TRES PREGUNTAS PLANTEADAS A CONTINUACIN:

    1. (10 puntos) Imagnese un panel como la que se muestra en la figura N 1, imagnese tambin que cada casilla o celda se puede pintar con uno color, de manera que se puedan formar manchas de forma rectangular como se muestra en la figura N 2 (cada mancha tiene un solo color). Suponer tambin que el fondo siempre ser blanco y que en ningn caso las manchas se juntan.

    Cada color puede ser representado por un nmero, dependiendo de la cantidad de colores que tenga la imagen se podrn emplear ms o menos bits para representar esos colores. Por ejemplo si la imagen fuera en blanco y negro slo se requiere un bit para representarlo (0 = blanco, 1 = negro), si la imagen tiene hasta 4 colores se requerirn de dos bits (p. e.: 0 = blanco, 1 = rojo, 2 = verde, 3 = azul), hasta 8 colores 3 bits, y as sucesivamente.

    Para modelar este panel se ha definido un archivo binario de tipo File of Byte de modo tal que en el primer byte del archivo se encuentre la cantidad de filas que tienen el panel real, en el segundo byte el nmero de filas y en el tercero la cantidad mxima de colores que se emplear. A partir de all le seguir una secuencia de bytes que agruparn los valores de cada color de cada celda del panel real. La forma como se estructura esta informacin se explica a continuacin.

    S por ejemplo, el archivo indica que en el panel se emplearn hasta 8 colores, esto querr decir que se emplearn 3 bits para representar cada color. Luego en el primer byte de la secuencia (luego de los tres primeros datos, los tres primeros bits del byte indicarn el color de la celda que se encuentra en la fila 1, columna 1 del panel. Los segundos tres bits del byte tendrn el color de la celda que se encuentre en la fila 1, columna 2. En los ltimos dos bits del byte y el primer bit del siguiente byte estar el color de la celda que se encuentre en la fila 1, columna 3 del panel y as sucesivamente.

    Escriba un programa que pida al usuario las coordenadas de una celda cualquiera en el panel real. El programa deber imprimir el color de la celda cuyas coordenadas se dan como parmetro y, si este color es diferente de blanco, las coordenadas en el panel (en trminos de filas y columnas) de la esquina superior izquierda de la mancha y las dimensiones de la mancha (en trminos de filas y columnas). ES OBLIGATORIO EL USO DE LOS OPERADORES DE BITS.

    Figura 1

    Figura 2

    Contina

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • 2. (10 puntos) Una librera cuenta con tres archivos binarios que le permiten catalogar los libros que posee. Los archivos se describen a continuacin:

    I. Archivo de Editoriales (Edit.Dat): este archivo contiene la informacin de todas las editoriales con las que trabaja la biblioteca. Los campos manejados por cada registro son: el cdigo de la editorial (nmero entero), el nombre de la editorial, su direccin y el pas de origen.

    II. Archivo de Temas (Temas.Dat): este archivo contiene todos los temas de inters en los que se clasifican los diferentes libros adquiridos por la biblioteca. No todas las editoriales cubren todos los temas. Los campos que posee este archivo son: el cdigo del tema (nmero entero), el tema propiamente dicho, y la especialidad interesada en el tema.

    III. Archivo de Libros (Libros.Dat): contiene la lista de todos los libros que se pueden encontrar en las diferentes editoriales. El archivo contiene: el cdigo del libro (nmero entero), el ttulo, autor, precio (nmero real), la cantidad de volmenes que posee en stock (numero entero), cdigo de la editorial (nmero entero) y cdigo del tema (nmero entero).

    Ninguno de los archivos est ordenado.

    La librera necesita crear una serie de archivos binarios, dos por cada editorial, los nombres de estos archivos tendrn la forma siguiente: XXXXXXXT.DAT y XXXXXXXL.DAT, donde XXXXXXX corresponde al cdigo de la editorial, la T indica temas, y la L indica libros. Los archivos T guardarn en cada registro, el cdigo del tema y la cantidad de libros que posee la librera de ese tema, de esa editorial, no se coloca en este archivo los temas no se poseen libros. Los archivos L contienen en cada registro, el ttulo del libro, el autor, su precio y la cantidad de ejemplares que hay de ese libro en la librera. En este ltimo archivo los libros estn agrupados por temas, segn el archivo T, como se muestra en la figura siguiente:

    8976567T.Dat 8976567L.Dat 231156633 3 Open GL PHilips, John 105.60 12

    Libros del tema 231156633 (3) 111005412 2 Graficos en Pascal Pech, George 89.99 23 782354109 4 Graficas 3D Jordan, Jane 125.30 10 Lenguaje Pascal Prez, Carlos 23.40 14

    Libros del tema 111005412 (2) Programacin en Pascal Castro, Daniel 67.35 5 Calculo 1 Bueno, Pedro 105.66 12

    Libros del tema 782354109 (4) . . .

    Finalmente la librera requiere crear un archivo de textos denominado RESUMEN.TXT en los que en cada lnea se guarde el nombre de cada archivo T creado.

    Se pide:

    a) Escriba un procedimiento en Pascal denominado creaArchivos que permita crear los archivos.

    b) Implemente un procedimiento en Pascal costoXTema, la cual deber recibir como parmetro el cdigo y el nombre de un tema en particular y, trabajando nicamente con los archivos creados en la pregunta anterior y el archivo de editoriales, imprima el valor (precio por cantidad de libros) que poses la librera en el tema solicitado. Un tema puede aparecer en varias editoriales.

    3. (10 puntos) En esta pregunta no podr hacer uso del tipo STRING, ni de cualquier funcin o procedimiento u operador que manipule el tipo STRING.

    Se tiene un archivo de textos que contiene palabras separadas por uno o ms espacios en blanco o cambios de lnea. Entindase por palabra una secuencia de caracteres que no contiene ni espacios ni cambios de lnea, ejemplos palabras pueden ser Hola, JUAN, HO-6847, 124, 35.72, F45AB, etc.

    El problema con este archivo de textos es que cada lnea puede tener desde 1 hasta 1000 caracteres. Por esta razn este archivo no se puede ser manipulado con comodidad con cadenas de tipo string.

    Para poder manipular este archivo se propone definir un nuevo tipo de dato basado en un arreglo, como se muestra a continuacin:

    Type StringTP = array [1..1001] of char;

    Contina Pgina 2 de 3

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

  • Donde una variable de tipo StringTP puede almacenar hasta 1000 caracteres, en esta variable no se almacenar la longitud de la cadena, en su lugar los caracteres colocados en el arreglo tendrn un delimitador (el caracter #0) que se coloca inmediatamente despus de los caracteres colocados en el arreglo, por ejemplo, si en la lnea contiene el texto: Hola amigos, en el arreglo se almacenar:

    H o l a a m i g o s #0

    La cantidad de lneas del archivo de textos es muy grande, lo que hace imposible y poco prctico llevar todo el archivo a la memoria principal del computador.

    El archivo adems est organizado por prrafos, un prrafo es una secuencia de caracteres que termina con un punto seguido de un cambio de lnea. Un prrafo puede tener varias lneas.

    Se desea que usted elabore un programa que permita dar un formato ms manejable al archivo de modo que la prxima vez que se desee manipular el archivo se puede usar simplemente strings.

    El programa deber solicitar al usuario un lmite de caracteres que desee que tenga por lnea el nuevo archivo y una opcin I J, este lmite no podr ser mayor que 255. Una vez hecho esto el programa deber leer el archivo de textos empleando variables tipo StringST y volverlo a escribir en otro archivo de modo que se reacomoden los prrafos; este reacomodo significar que cada lnea debe tener como mximo el lmite de caracteres ingresado sin cortar ninguna palabra. La opcin ingresada indicar que, si se eligi la opcin I, las palabras debern estar separadas por un solo espacio en banco o cambio de lnea; si se eligi la opcin J las palabras en una lnea debern estar justificadas, esto quiere decir todas las lneas deben tener como longitud el lmite dado y que entre palabra y palabra los espacios suficientes para que esto se de, sin embargo en una lnea la cantidad de espacios que haya entre una palabra y otra no deben diferir en ms de uno. Las lneas que tienen los caracteres que indican el fin de un prrafo no se justifican.

    As por ejemplo si se tiene un archivo bajo el siguiente esquema (cada cuadro indica una palabra):

    Pgina 3 de 3

    El archivo deber ser almacenado en otro archivo, de la siguiente manera:

    Profesor del curso: Miguel Guanira

    San Miguel, 5 de diciembre del 2011

    1 2 3 4 5

    10 9 6 7

    12

    11 8

    13 .

    16 14 15 Lmite

    . 17 18 19

    Eligiendo la opcin I Eligiendo la opcin I

    1 2 3

    4 5

    10

    9

    6

    7

    12

    8

    11

    13 .

    14 15 16 12

    7 7 .

    Lmite

    1 2 3

    4 5

    10

    6

    9 7 8

    12 11

    13 . Lmite 14 12 15 16

    7 7 .

    Este material, de distribucin gratuita, no contiene necesariamente las modificaciones que se hayan incorporado durante la realizacin de las evaluaciones.

    INF144-2011#2-P010N-0431-M. GuaniraTCNICAS DE PROGRAMACIN

    INF144-2011#2-P020N-0431-M. GuaniraTCNICAS DE PROGRAMACIN

    INF144-2011#2-P030N-0431-M. GuaniraTCNICAS DE PROGRAMACIN

    INF144-2011#2-P040N-0431-M. GuaniraTCNICAS DE PROGRAMACIN

    INF144-2011#2-E010N-0431-M. GuaniraNOTAS:- NO SE PUEDE USAR MATERIAL DE CONSULTA- LAS SOLUCIONES DEBERN DESARROLLARSE BAJO UN ESTRICTO DISEO DESCENDENTE, por lo que NO SE CALIFICARN aquellos mdulos que son llamados por otros que estn incompletos. Cada mdulo no debe sobrepasar las 20 lneas.- NO SE PODR UTILIZAR ARREGLOS TAMPOCO SE PODR EMPLEAR FUNCIONES, PROCEDIMIENTOS NI OPERADORES QUE MANEJEN CADENAS DE CARACTERES. SI SE EMPLEAN VARIABLES DE TIPO STRING, STAS NO PODRN SER MANIPULADAS COMO ARREGLOS.- NO SE PUEDEN EMPLEAR ARCHIVOS AUXILIARES.- En la calificacin se tomar en cuenta el buen uso de los nombres de los identificadores, y el eficaz uso de comentarios.- QUEDA TERMINANTEMENTE PROHIBIDO EL USO DE CALCULADORAS Y CORRECTORES LQUIDOSPARTE OBLIGATORIAPARTE ELECTIVA (conteste solamente una de las preguntas planteadas. Anule la pregunta no contestada en la contra cartula del cuadernillo)

    INF144-2011#2-E020N-0431-M. GuaniraINF144-2011#2-E030N-0431-M. GuaniraNOTAS: - no se puede usar material de consulta- Las soluciones debern desarrollarse bajo un estricto diseo descendente, por lo que NO SE CALIFICARN aquellos mdulos que son llamados por otros que estn incompletos.- Deber modular adecuadamente sus programas procurando que cada mdulo tenga en promedio no ms de 15 lneas. Se tomar en cuenta en la calificacin el uso de comentarios adecuados, el uso correcto de los nombres de las variables, funciones y procedimientos. De no respetar esta indicacin, se descontar el 30% de la nota final en la pregunta.- No se pueden emplear archivos auxiliares en ninguna de las preguntas.- Queda terminantemente prohibido el uso de calculadoras y correctores lquidosRESPONDA DOS DE LAS TRES PREGUNTAS PLANTEADAS A CONTINUACIN: