Vous êtes sur la page 1sur 6

Ctedra de

Programacin (0790).
Secciones 2, 3, 4 y 5

Taller de Laboratorio
6
Objetivos de este taller:
Utilizar la metodologa de programacin modular para construir aplicaciones de mayor complejidad.
Conocer otras bondades ofrecidas por la unidad CRT.
Preparando el Terreno.
En lneas generales, va usted a escribir en este taller una aplicacin que muestra un men en el que
posteriormente se insertarn dos simulaciones del movimiento de un cuerpo, ambas en la pantalla de texto,
utilizando una metodologa de programacin modular mediante procedimientos y funciones y las
ventajas de la unidad CRT. Para comenzar, debe usted ajustar algunas caractersticas de la pantalla de
texto ofrecida por Windows: la llamada Pantalla de DOS:
1) Abra la Pantalla de DOS. Si no hay en el escritorio un icono para ello, busque el comando en el Men
Inicio Todos los programas Accesorios Smbolo del sistema.
Al realizar esta accin, puede ocurrir que la ventana se abra como ventana propiamente dicha o en
pantalla completa. En ambos casos, debe abrir el men de propiedades de la ventana; para ello, prosiga
como se indica:
Si se abre una ventana, simplemente haga un clic del Mouse sobre el smbolo ubicado a la
izquierda de la Barra de Ttulo; ello provocar la aparicin del Men.
Si se abre como pantalla completa, presione Alt-ENTER o Ctrl-Esc para regresar a la interfaz
grfica de Windows. El Men lo hallar haciendo clic-derecho sobre el botn de la aplicacin
ubicado en la Barra de Aplicaciones.
2) Una vez mostrado el Men, seleccione la opcin Predeterminados. Ello provocar la aparicin de un
formulario de 4 fichas: Opciones, Fuente, Diseo y Colores. Ajuste los valores que se indican a
continuacin en cada ficha:
En la ficha Opciones, en Opciones de Pantalla, seleccione Ventana.
En la ficha Fuente, en Fuente, seleccione Fuente de mapa de bits y en Tamao seleccione 1018.
En la ficha Diseo, tanto en Tamao del buffer de pantalla como en Tamao de la ventana,
seleccione 80 de Ancho y 25 de Alto.
En la ficha Colores, asegrese que el fondo de la ventana sea negro y que el color de texto sea gris
claro. Estos colores son por lo general los colores por defecto.
3) Por ltimo, seleccione el botn de Aceptar y cierre luego la ventana. Se supone que a partir de este
momento, cada vez que se abra una ventana de DOS, lo har con las caractersticas seleccionadas por
usted en los pasos anteriores. Pruebe abriendo y cerrando de nuevo la ventana.
Semestre 3-2013. Programacin: Taller n 6 Pag. 2 de 6

Prof. Jos Ricardo Vargas Marzo 2014

4) Habiendo cumplido este requisito, ejecute Delphi y preprelo para construir una aplicacin tipo
cnsola. Recuerde: una vez que aparezca el editor de cdigo, maximcelo, cierre el panel
izquierdo y verifique que el tamao de letra es cmodo (14 o ms).
Subprogramas de impresin.
Comience escribiendo el siguiente subprograma; este sirve para escribir un texto en una posicin
determinada de la pantalla y con un color de texto determinado:

Procedure Pr i nt ( Col umna, Li nea, Col or : I nt eger ; S: String) ;
Begin
Text Col or ( Col or ) ;
Got oXy( Col umna, Li nea) ;
Wr i t e( S) ;
End;
Pruebe el subprograma escribiendo unas instrucciones en el programa principal que impriman en pantalla
algn mensaje que usted desee. Recuerde que el nmero mximo de columna es 80 y de lnea es 25. Una
instruccin podra ser algo as:
Pr i nt ( 20, 10, 5, Hol a, que t al ) ;
O tambin:
Pr i nt ( 1, 5, Li ght Red, I nt oToSt r ( 123456) ) ;
Escriba ahora el siguiente subprograma. Este muestra en pantalla un marco alrededor de la misma. Escriba
tambin la declaracin de las constantes globales que se indican en las primeras lneas:

Const MaxCol =79;
MaxLi n=24;

Procedure Mar co( Col or : I nt eger ) ;
Var i : I nt eger ;
S, S1: String;
Begin
S: =' ' ; / / Sin espacio entre las comillas
For i : =1 to MaxCol - 2 do S: =S+' ' ; / / Un espacio entre las comillas
S1: = ' | ' +S+' | ' ;
For i : =2 to MaxLi n- 1 do
Pr i nt ( 1, i , Col or , S1) ; / / Lneas laterales del marco

S: =' ' ;
For i : =1 to MaxCol - 2 do S: =S+' =' ;

S1: = ' | ' +S+' | ' ;
Pr i nt ( 1, 1, Col or , S1) ; / / Lnea superior del marco
Pr i nt ( 1, MaxLi n, Col or , S1) ; / / Lnea inferior del marco
Got oxy( 1, 1) ;
End;

Observe que el subprograma Mar co hace uso del subprograma Pr i nt , por lo que debe usted colocarlos
adecuadamente, es decir, siguiendo el orden debido. Si no lo sabe, pregunte. Luego, pruebe el
subprograma de la misma forma que hizo con el primer procedimiento.
Semestre 3-2013. Programacin: Taller n 6 Pag. 3 de 6

Prof. Jos Ricardo Vargas Marzo 2014

El siguiente es un subprograma similar al subprograma Pr i nt , imprime un mensaje en pantalla pero lo
hace en el centro de la lnea. Fjese que no tiene como parmetro de entrada la columna. Observe
cuidadosamente la quinta lnea la que comienza con Col : =, en ella se calcula primero la columna
donde debe comenzar a escribirse el texto de tal manera que aparezca centrado esta frmula aparece
escrita como ### para que usted la deduzca , luego se verifica si esta columna es mayor o igual que 2
y, si lo es, se asigna el valor calculado a la variable Col:

Procedure Cent r a( Li nea, Col or : I nt eger ; S: String) ;
Var Col , L: I nt eger ;
Begin
L: =Lengt h( S) ;
Col : =Max( 2, ###) ; / / Recuerde deducir la formula que va en lugar de ###
Pr i nt ( Col , Li nea, Col or , S) ;
End;
Debe tener un cuidado especial con la funcin Max para que funcione: recuerde cul. Como siempre,
compruebe que el subprograma est colocado adecuadamente y prubelo hasta que funcione.
Diseando un Men.
Muchos programas comienzan ofreciendo al usuario una cantidad de opciones segn las tareas que el
mismo puede llevar a cabo. El usuario entonces selecciona la que desea mediante un Men que muestra
una lista de estas opciones de tal modo que la seleccin se realiza escogiendo la opcin que aparece
resaltada. Para resaltar una opcin simplemente se muestra sta con un color diferente a las otras y para
desplazarse a travs del Men se utilizan algunas teclas seleccionadas por el programador, generalmente
las teclas de flechas. Desafortunadamente, estas teclas, as como las teclas de funcin F1, F2, etc. y
otras, no pueden ser ledas por la instruccin Readl n. Para que un programa detecte cul tecla fue
presionada por el usuario sin el uso de Readl n, se pueden usar las funciones Keypr essed y Readkey
de la unidad CRT, tal como se muestra en el siguiente subprograma:

Procedure Tecl a;
Const ENTER=#13;
Var ch: Char ;

Begin
Repeat
Repeat Until Keypr essed;
Ch: =Readkey;
Wr i t el n( ch) ;
Until ch=ENTER;
End;

Escrbalo y prubelo presionando primero algunas teclas de letras o nmeros y luego presione las teclas de
flechas o las de funcin. Observe lo que sucede cuando presiona estas ltimas. Para entender mejor lo que
sucede, cambie una lnea del subprograma anterior de modo que no imprima el valor del caracter ch sino
su nmero de orden mediante la funcin or d:


Wr i t el n( or d( ch) ) ;

Semestre 3-2013. Programacin: Taller n 6 Pag. 4 de 6

Prof. Jos Ricardo Vargas Marzo 2014

Prubelo de nuevo y observe que las teclas de flechas y de funcin tienen dos nmeros de orden, siendo el
primero siempre cero. Este cero indica entonces que se trata de una tecla especial. Para manipular las
teclas especiales se utiliza un mtodo que consiste en usar dos veces la funcin Readkey cuando el
primer nmero de orden es cero. Modifique el subprograma de modo que luzca como se muestra a
continuacin:

Procedure Tecl a;
Const ENTER=#13;
Var ch: Char ;

Begin
Repeat
Repeat Until Keypr essed;
Ch: =Readkey;
If or d( ch) =0 then ch: =Readkey;
Wr i t el n( or d( ch) ) ;
Until ch=ENTER;
End;

Prueba el subprograma y anote los valores de orden de las cuatro teclas de flecha. Este subprograma es
temporal.
Ya sabe entonces cmo leer teclas especiales. Esta tcnica ser usada para mover la opcin resaltada de un
men. El subprograma para el manejo del Men se escribir como una funcin. Esta ser invocada en el
programa principal y devolver al mismo el nmero de la opcin escogida por el usuario:

Function Menu: I nt eger ;

Const Baj a=80; Sube=72;
I zq=75; Der =77;
Ot r oFondo=Red;
ENTER=#13;
Opci ones=3;

Var Ch: Char ;
Opci on, Opci onAnt : I nt eger ;
Begin
Cent r a( 2, Li ght Gr een, ' MENU PRI NCI PAL' ) ;
Cent r a( 3, Li ght Gr een, ' ==============' ) ;
Cent r a( 6, 15, ' Pr i mer a Opci on' ) ;
Cent r a( 8, 15, ' Segunda Opci on' ) ;
Cent r a( 10, 15, ' Sal i r ' ) ;

Opci on: =1;
Repeat
Text BackGr ound( Ot r oFondo) ;
case Opci on of
1: Cent r a( 6, 15, ' Pr i mer a Opci on' ) ;
2: Cent r a( 8, 15, ' Segunda Opci on' ) ;
3: Cent r a( 10, 15, ' Sal i r ' ) ;
end;



Text BackGr ound( Col or DeFondo) ;
Opci onAnt : =Opci on;
Semestre 3-2013. Programacin: Taller n 6 Pag. 5 de 6

Prof. Jos Ricardo Vargas Marzo 2014

Ch: =ReadKey;
If or d( Ch) =0 then
Begin
Ch:=ReadKey;
Case or d( Ch) Of
Baj a, Der : Begin
I nc( Opci on) ;
If Opci on>Opci ones then Opci on: =1;
End;
Sube, I zq: Begin
Dec( Opci on) ;
If Opci on<1 then Opci on: =Opci ones;
End;
End;
End;

If ch=ENTER then Begin Resul t : =Opci on; Br eak; End;

case Opci onAnt of
1: Cent r a( 6, 15, ' Pr i mer a Opci on' ) ;
2: Cent r a( 8, 15, ' Segunda Opci on' ) ;
3: Cent r a( 10, 15, ' Sal i r ' ) ;
end;
Until Ch=ENTER;
End;

Haga el esfuerzo para entender cmo funciona el subprograma. Para ello, el programa principal debe
invocarlo y usar el resultado. Escriba entonces de una vez el siguiente programa principal:

/ / COMI ENZO DEL PROGRAMA PRI NCI PAL
/ / ********************************
begin
Repeat
Text BackGr ound( Col or DeFondo) ;
Cl r Scr ;
Mar co( Li ght Bl ue) ;
i : =Menu; / / Aqu se i nvoca el Men

Case i of
1: Pr i nt ( 2, MaxLi n- 1, 15, ' Ust ed escogi o l a opci on ' +I nt ToSt r ( i ) ) ;
2: Pr i nt ( 2, MaxLi n- 1, 15, ' Ust ed escogi o l a opci on ' +I nt ToSt r ( i ) ) ;
3: Pr i nt ( 2, MaxLi n- 1, 15, ' Ust ed escogi o l a opci on ' +I nt ToSt r ( i ) ) ;
End;

Sl eep( 2000) ;
Until i =3;
end.

Se le recuerda que, a estas alturas, usted debe tener debidamente guardado el programa en una carpeta
dedicada al mismo y ubicada donde siempre. Si no, pues ste es el momento de hacerlo.

En este punto, tenemos un programa que permite al usuario escoger entre tres opciones presentadas en
pantalla: Movimiento Rectilneo, Cada Libre y Salir. Ninguna de estas opciones se ejecuta pues no han
sido escritas. Comencemos con la ltima, la opcin de salir. Para ello escriba el procedimiento Adi os
que se muestra a continuacin:
Semestre 3-2013. Programacin: Taller n 6 Pag. 6 de 6

Prof. Jos Ricardo Vargas Marzo 2014

Procedure Adi os;
Begin
Cl r Scr ;
Cent r a( MaxLi n di v 2, 15, ' *** HASTA LUEGO ***' ) ;
Sl eep( 2000) ;
End;
Insrtelo adecuadamente en el programa para ver de qu manera termina.
Tiene usted ahora una de las tres opciones ofrecidas en el Men. El instructor le indicar los otros
subprogramas a insertar para completar el programa. No olvide guardarlo en disco.
Con esto queda concluido el Taller.



Recomendaciones.
1) Se recomienda encarecidamente repetir, rigurosa y minuciosamente este taller en casa con el
objetivo de asentar los conocimientos adquiridos. Ms an, ya est en capacidad de resolver los
ejercicios propuestos de la gua en el captulo 9.
2) No se quede con ninguna duda. Aproveche la gran ventaja de contar con un equipo de preparadores
y auxiliares cuya presencia en el laboratorio es permanente y cuya obligacin es atenderlos, ayudarlos
a aclarar sus dudas y orientarlos en el proceso de resolucin de problemas.
3) Investigue a menudo los archivos de ayuda de Delphi. Ellos conforman quiz una de las ms
completas fuentes de informacin sobre algunos de los temas vistos en el curso. Revise tambin el
material que viene en el CD. Este es igualmente una fuente rica en datos valiosos.
4) Practique mucho. La destreza en el manejo de las herramientas de programacin vistas en este curso
es imprescindible para aprobar la materia. No es suficiente el conocimiento terico, es necesaria la
fluidez.
5) No pierda sus programas. Mantenga un respaldo de todos ellos y, si es posible, agrgueles
comentarios que indiquen cosas como: su identificacin, lo que hace el programa, cundo fue escrito,
etc. Recuerde que lo que escriba ahora puede serle de utilidad ms adelante. Adems pueden serle de
mucha ayuda a la hora de prepararse para un examen.

Asignacin.
Elabore los subprogramas que faltaron: el del movimiento rectilneo de una pelota que rebota con los
bordes de la pantalla que se hizo en clase y uno similar que debe mostrar el movimiento de la pelota pero
con gravedad y con un rebote perfectamente elstico (movimiento parablico), e insrtelos en el programa
que acaba de construir. En ambos casos se pide que el mismo muestre una pelota (que puede simularse
con el caracter O) movindose por la pantalla segn el tipo de movimiento. Cualquier otro detalle que le
quieran aadir contribuir a subir la nota. La tarea es estrictamente individual. Los trabajos copiados sern
sancionados. Fecha tope para entregar: mircoles 13 de junio.

Vous aimerez peut-être aussi