Religion & Spirituality > Occult & Paranormal">
USO de CASE of en Pascal
USO de CASE of en Pascal
USO de CASE of en Pascal
Veamos la sintaxis de CASE OF, que nos permite tomar diferentes acciones:
PROGRAM uso_case;
var
nombre : string[40];
BEGIN
writeln('Ingrese su nombre');
readln(nombre);
case nombre[1] of
'0'..'9': writeln('Primer caracter de nombre es nmerico');
'a'..'z': writeln('Primer caracter en minsculas');
'A'..'Z': writeln('Primer caracter en maysculas');
else
writeln('Primer caracter es desconocido');
end; { case }
END.
case <expresin> of
<lista_de_constantes_1> : begin
<bloque_de_instrucciones_1>
end;
<lista_de_constantes_2> : begin
<bloque_de_instrucciones_2>
end;
...
<lista_de_constantes_n> : begin
<bloque_de_instrucciones_n>
end
[ else
begin
<bloque_de_instrucciones_n+1>
end ]
end
El resultado de evaluar la <expresin> debe ser un valor perteneciente a un tipo de dato finito y
ordenado, es decir, entero, lgico, carcter, enumerado o subrango.
Dependiendo del valor obtenido al evaluar la <expresin>, se ejecutar un bloque de instrucciones u otro.
En las listas de constantes se deben escribir los valores que determinan el bloque de instrucciones a ejecutar,
puediendo ser constantes (por ejemplo: 5 '5') o subrangos (por ejemplo: 1..5 '1'..'5').
Nota: Si el nmero de da introducido es menor que 1 mayor que 7, se mostrar el mensaje: "ERROR: Da
incorrecto.".
En pantalla:
Martes
Cuando un bloque de instrucciones slo contiene una instruccin, las palabras reservadas begin y end, que
enmarcan dicho bloque, son opcionales. As pues, podemos escribir:
programEJE12041;
usesCrt;
varDia:Integer;
begin
ClrScr;
GotoXY(4,2);
Write('Introduzcadiadelasemana:');
ReadLn(Dia);
GotoXY(4,4);
caseDiaof
1:Write('Lunes');
2:Write('Martes');
3:Write('Miercoles');
4:Write('Jueves');
5:Write('Viernes');
6:Write('Sabado');
7:Write('Domingo')
else
Write('ERROR:Diaincorrecto.')
end
end.
Programa (.PAS): Da de la semana
Cuando en una lista de constantes de una alternativa mltiple aparece ms de un valor, estos se escriben
separados por el carcter coma (,). Estdiese el siguiente ejemplo.
Ejemplo 2: En la siguiente tabla se muestran las categoras a las que pertenecen los signos del zodaco:
1) Muestre el listado de los signos del zodaco, con sus nmeros asociados.
2) Pida por teclado un nmero (dato entero) asociado a un signo del zodaco.
3) Muestre la categora a la que pertenece el signo del zodaco seleccionado.
Nota: Si el nmero introducido por el usuario, no est asociado a ningn signo del zodaco, se mostrar el
mensaje: "ERROR: <nmero> no est asociado a ningn signo.".
En pantalla:
1. Aries
2. Tauro
3. Geminis
4. Cancer
5. Leo
6. Virgo
7. Libra
8. Escorpio
9. Sagitario
10. Capricornio
12. Acuario
13. Piscis
Es un signo de Aire.
1. Aries
2. Tauro
3. Geminis
4. Cancer
5. Leo
6. Virgo
7. Libra
8. Escorpio
9. Sagitario
10. Capricornio
12. Acuario
13. Piscis
programEJE12051;
usesCrt;
varNumero:Integer;
begin
ClrScr;
GotoXY(4,2);
Write('Listadodesignosdelzodiaco:');
GotoXY(4,4);
Write('1.Aries');
GotoXY(4,5);
Write('2.Tauro');
GotoXY(4,6);
Write('3.Geminis');
GotoXY(4,7);
Write('4.Cancer');
GotoXY(4,8);
Write('5.Leo');
GotoXY(4,9);
Write('6.Virgo');
GotoXY(4,10);
Write('7.Libra');
GotoXY(4,11);
Write('8.Escorpio');
GotoXY(4,12);
Write('9.Sagitario');
GotoXY(4,13);
Write('10.Capricornio');
GotoXY(4,14);
Write('11.Acuario');
GotoXY(4,15);
Write('12.Piscis');
GotoXY(4,17);
Write('Introduzcanumerodesigno:');
Read(Numero);
GotoXY(4,19);
caseNumeroof
1,5,9:Write('EsunsignodeFuego.');
2,6,10:Write('EsunsignodeTierra.');
3,7,11:Write('EsunsignodeAire.');
4,8,12:Write('EsunsignodeAgua.')
else
Write('ERROR:',Numero,
'noestaasociadoaningunsigno.')
end
end.
Programa (.PAS): Signo del zodaco (Solucin 1)
usesCrt;
var
Numero:Integer;
Categoria:String[6];
begin
ClrScr;
GotoXY(4,2);
Write('Listadodesignosdelzodiaco:');
GotoXY(4,4);
Write('1.Aries');
GotoXY(4,5);
Write('2.Tauro');
GotoXY(4,6);
Write('3.Geminis');
GotoXY(4,7);
Write('4.Cancer');
GotoXY(4,8);
Write('5.Leo');
GotoXY(4,9);
Write('6.Virgo');
GotoXY(4,10);
Write('7.Libra');
GotoXY(4,11);
Write('8.Escorpio');
GotoXY(4,12);
Write('9.Sagitario');
GotoXY(4,13);
Write('10.Capricornio');
GotoXY(4,14);
Write('11.Acuario');
GotoXY(4,15);
Write('12.Piscis');
GotoXY(4,17);
Write('Introduzcanumerodesigno:');
Read(Numero);
caseNumeromod4of
1:Categoria:='Fuego';
2:Categoria:='Tierra';
3:Categoria:='Aire';
0:Categoria:='Agua'
end;
GotoXY(4,19);
if(Numero>=1)and(Numero<=12)then
Write('Esunsignode',Categoria,'.')
else
Write('ERROR:',Numero,
'noestaasociadoaningunsigno.')
end.
Programa (.PAS): Signo del zodaco (Solucin 2)
En esta segunda solucin existen las siguientes diferencias importantes con respecto a la solucin anterior:
En el cdigo se utiliza una alternativa doble (if), adems de una alternativa mltiple (case).
PROGRAM NUMEROS;
USES CRT;
VAR OPCION : INTEGER;
BEGIN
CLRSCR;
WRITE('INGRESA UN NUMERO ENTRE 1 Y 9 ');
READLN(OPCION);
CASE OPCION OF
1 : WRITELN('UNO');
2 : WRITELN('DOS');
3 : WRITELN('TRES');
4 : WRITELN('CUATRO');
5 : WRITELN('CINCO');
6 :WRITELN('SEIS');
7 : WRITELN ('SIETE');
8 : WRITELN('OCHO');
9 : WRITELN('NUEVE');
ELSE WRITELN('EL NUMERO NO ES ENTRE 1 Y 9');
END; {DEL CASE}
READKEY;
END.
case place of
1: ShowMessage('Medalla de oro');
2: ShowMessage('Medalla de plata');
3: ShowMessage('Medalla de bronce');
else ShowMessage('Mejor suerte la siguiente vez');
end;
PROGRAM EJER36;
USES CRT;
VAR num_dia_sem:INTEGER;
BEGIN
ClrScr;
CASE num_dia_sem OF
1: WRITELN('Lunes');
2: WRITELN('Martes');
3: WRITELN('Miercoles');
4: WRITELN('Jueves');
5: WRITELN('Viernes');
6: WRITELN('Sabado');
7: WRITELN('Domingo');
ELSE
WRITELN('No es un dia de la semana');
END;
END.
Manejo de la Pantalla
Como en un monitor funcionando bajo el modo texto, cada columna y cada fila de
caracteres en la pantalla estn numerada, es posible controlar apectos de la pantalla tales
como la posicin donde escribe un texto, hallar la posicion del cursor, o borrar todo el texto
de una fila. Para llevar a cabo estas tareas, la unidad Crt de Turbo Pascal dispone de varios
procedimientos que permiten tener control sobre como se visualiza la informacin en la
pantalla.
A continuacin se explicarn algunos procedimentos de manejo de pantalla, usando como
ejemplo una pantalla de 80 x 25 celdas, teniendo en cuenta que las columnas van
numeradas desde 1 hasta 80, partiendo de izquierda a derecha y las filas desde 1 hasta 25,
partiendo de arriba hacia abajo.
Procedimiento GotoXY
Este procedimiento permite ubicar del cursor en una coordenada de pantalla especifica,
controlando as la posicin donde se escribira un texto. La sintaxis de este procedimento es
la siguiente:
GotoXY(Columna, Fila);
Donde: Columna y Fila, como sus nombres lo indican, representan respectivamente el
numero de la columna y la fila, en donde se colocar el cursor. Con el siguiente programa
entenders mejor el uso del procedimiento GotoXY, y la diferencia entre columnas y filas:
PROGRAM Uso_de_gotoxy;
{+--------------------------------------------+
|Este programa escribir un saludo partiendo |
|desde la columna #20 y la fila #15 |
+--------------------------------------------+}
USES
crt;
BEGIN
CLRSCR;
GOTOxy (20, 15);
WRITELN('Hola!, Amigos de Turbo Pascal');
GOTOxy (1, 18);
WRITELN('El saludo apareci en las coordenadas (20, 15) de la
pantalla');
WRITE('Pulse ENTER para salir');
READLN;
END.
Para reproducir sonidos en Pascal tienes que llamar a la funcin "sound" y
pasarle como parmetro un nmero (el nmero representa la nota), pero
atencin, despus de reproducir una nota mediante esta funcin debes
detenerla mediante el "nosound", si no lo haces la nota se producira por un
tiempo indefinido, algo sencillo:
Program Nota;
uses crt;
begin
sound(10);
nosound;
end.
El programa anterior solo producira un "pitido", para que este "pitido" o sonido
muy breve dure ms tiempo puedes hacer uso de la funcin "delay", por
ejemplo:
Program Nota;
uses crt;
begin
sound(10);
delay(100);
nosound;
end.
Con respecto a los dibujos con caracteres, puedes colocarlos despus del
mismo "sound" y antes del "delay", as aparecera un "dibujo" por cada nota,
por ejemplo:
Program Nota;
uses crt;
begin
clrscr;
sound(10);
write('xD');
delay(200);
clrscr;
sound(12);
write('=)');
delay(200);
{ repetir segmento clrscr-delay }
readkey;
end.
Primero que nada, necesitas saber la frecuencia en Hz de las notas musicales. Aqui te la
dejo:
Ahora si el programa:
program musica;
uses crt;
const (aqui pones la frecuencia, de la lista que te pas... los nmeros que pongo son
demonstracin para hacer el ejemplo)
do = 65,406;
re = 73,416;
mi = 82,407 ;
fa = 87,307;
sol = 97,999;
la = 110;
si = 123,471 ;
var
i, op : integer;
begin
clrscr;
writeln('Seleccione dia festivo');
writeln(' (1)Navidad');
writeln(' (2) Pascua');
(aqui sigues con los dems das festivos)
writeln('Seleccione opcion');
readln(op);
case op of
begin
1:
begin
sound (do);
delay(5000); {5000 milisegundos o sea 5 segundos}
no sound; {termina de sonar}
{dependiendo de la cancion, aqui le sigues con las dems notas}
end;
2:
{lo mismo de la opcion 1}
end;
readkey;
end.
Ahora s, te dejo unas canciones de dias festivo para que tengas de donde hacer el programa
(los asteriscos es que la nota es aguda, en el tercer enlace que te puse vienen las
frecuencias)
Noche de paz
sol la sol mi
sol la sol mi
re* re* si do* do* so|
Fuente(s):
program sonido;
uses crt;
var
sonido:word;
begin
CLRSCR;
sound (820);
delay (2000);
nosound;
delay (5000);
sound (812);
delay (5000);
nosound;
delay (2000);
end.