Ejercicios de Pascal
M ET ODOL OGÍA D E L A PROGRAM ACI ÓN. Programación Programación en en Pascal Pascal El objetivo de este documento es proveer de una gran batería de ejercicios resueltos en Pascal que parten del nivel más básico hasta llegar a estructuras de datos más complejas.
☺Escribir un programa en Pascal que sume dos números: a=4
b=3
PRO PROGRAM EJ ER01 ER01;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez var var a, b, c: I NTEG TEGER;
emai l : vi ct or ss18@hot hot mai l . com}
BEGI BEGI N {Em {Empezam pezamos c on l o bási co, un pr pr ograma que que escr i be l a suma de 2 num numer os en pant pant al l a} a: =4; b: =3; {Se asi asi gna un un val val or cual cual qui er a a l as vari vari abl abl es " a" y "b"} c: =a+b; WRI TE ( c) ; {Muest uest r a en en pan pantt al l a el el val val or de l a suma} END END. PRO PROGRAM EJ ER1B ER1B;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT; VAR a, b, c: I NTEG TEGER; ER; BEGI BEGI N
emai l : vi ct or ss18@hot hot mai l . com}
Cl rScr; rScr; WRI TELN TELN ( ' Est e pr pr ograma suma dos dos num numer os: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' I nt r odu oduzca un numero: ' ) ; READLN ( a) ; WRI TE ( ' I nt r odu oduzca otr o num numero: ' ); READLN ( b); WRI TELN ( ' ' ) ; c: =a+b; WRI TE ( ' EL RES RESU ULTAD LTADO ES: ES: ' ) ; WRI TE ( c) ;
END END. PRO PROGRAM EJ ER01; ER01; var var a, b, c: I NTEG TEGER; BEGI BEGI N a: =4; b: =3; c: =a+b; END END.
WRI TE( TE( c) ;
1
Ejercicios de Pascal rest e, multiplique y divida dos números: ☺Escribir un programa en Pascal que sume, reste, x = 10
y=2
PRO PROGRAM EJ ER02 ER02;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez emai l : vi ct or ss18@hot hot mai l . com} USES CRT; {Nos va va a permi t i r l i mpi ar l a pantal pantal l a j unt unt o con con Cl r Scr } VAR x, y: I NTEGER; ER; VAR suma, r est , mul t , di vi : I NTEG TEGER; ER; BEGI BEGI N
x: =10; 10; y: =2; suma: =x r est: =x mul t : =x di vi : =x
+ y; - y; * y; di v y; y;
{Con {Con est as 4 var var i abl abl es r eal eal i zamos l as cuat cuat r o operaci operaci ones ones ari t méti cas f undam dament ent al es: sum suma, r est a, mul t i pl i caci caci ón y di di vi si ón} Cl r Scr; {Li mpi a l a pa pant al l a} WRI TE WRI TE WRI TE WRI TE
( ' SUM SUMA: ' ) ; ( ' RESTA: TA: ' ) ; ( ' MULTI PLI CACI ON: ' ) ; ( ' DI VI SI ON: ' ) ;
WRI TELN TELN ( suma) ; WRI TELN TELN ( r est ) ; WRI TELN TELN ( mul t ) ; WRI TE ( di vi ) ;
END END. PRO PROGRAM EJ ER2B ER2B;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT; VAR x, x, y: REAL; EAL; VAR suma, r est , mul t : REAL; EAL; VAR di vi : REAL; EAL;
emai l : vi ct or ss18@hot hot mai l . com}
{sum {suma, r est a, mul t i pl i ca y di vi de 2 numeros r eal eal es} BEGI BEGI N
WRI TELN TELN ( ' Est e pr ogr ogr ama sum suma, r est a, mul t i pl i ca y di di vi de: ' ) ; WRI TELN TELN ( ' Escri ba dos dos nu numeros r eal eal es' ) ; WRI TELN ( ' ' ) ; READ EAD ( x) ; READ EAD ( y) ; suma: =x r est: =x mul t : =x di vi : =x
+ y; - y; * y; / y;
Cl rScr; rScr; WRI TE WRI TE WRI TE WRI TE
( ' SUM SUMA: ' ) ; ( ' RESTA: TA: ' ) ; ( ' MULTI PLI CACI ON: ' ) ; ( ' DI VI SI ON: ' ) ;
WRI TELN TELN ( suma: 3: 0) ; WRI TELN TELN ( r est: 3: 0) ; WRI TELN TELN ( mul t : 3: 0); WRI TE ( di vi : 5: 2) ;
END END. PRO PROGRAM EJ ER02; ER02; USES CRT; CRT; VAR x, y: I NTEGER; ER; VAR suma, r est , mul t , di vi : I NTEG TEGER; ER; BEGI BEGI N x: =10; 10; y: =2; suma: =x r est: =x mul t : =x di vi : =x
+ y; - y; * y; di v y; y;
2
Ejercicios de Pascal rest e, multiplique y divida dos números: ☺Escribir un programa en Pascal que sume, reste, x = 10
y=2
PRO PROGRAM EJ ER02 ER02;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez emai l : vi ct or ss18@hot hot mai l . com} USES CRT; {Nos va va a permi t i r l i mpi ar l a pantal pantal l a j unt unt o con con Cl r Scr } VAR x, y: I NTEGER; ER; VAR suma, r est , mul t , di vi : I NTEG TEGER; ER; BEGI BEGI N
x: =10; 10; y: =2; suma: =x r est: =x mul t : =x di vi : =x
+ y; - y; * y; di v y; y;
{Con {Con est as 4 var var i abl abl es r eal eal i zamos l as cuat cuat r o operaci operaci ones ones ari t méti cas f undam dament ent al es: sum suma, r est a, mul t i pl i caci caci ón y di di vi si ón} Cl r Scr; {Li mpi a l a pa pant al l a} WRI TE WRI TE WRI TE WRI TE
( ' SUM SUMA: ' ) ; ( ' RESTA: TA: ' ) ; ( ' MULTI PLI CACI ON: ' ) ; ( ' DI VI SI ON: ' ) ;
WRI TELN TELN ( suma) ; WRI TELN TELN ( r est ) ; WRI TELN TELN ( mul t ) ; WRI TE ( di vi ) ;
END END. PRO PROGRAM EJ ER2B ER2B;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT; VAR x, x, y: REAL; EAL; VAR suma, r est , mul t : REAL; EAL; VAR di vi : REAL; EAL;
emai l : vi ct or ss18@hot hot mai l . com}
{sum {suma, r est a, mul t i pl i ca y di vi de 2 numeros r eal eal es} BEGI BEGI N
WRI TELN TELN ( ' Est e pr ogr ogr ama sum suma, r est a, mul t i pl i ca y di di vi de: ' ) ; WRI TELN TELN ( ' Escri ba dos dos nu numeros r eal eal es' ) ; WRI TELN ( ' ' ) ; READ EAD ( x) ; READ EAD ( y) ; suma: =x r est: =x mul t : =x di vi : =x
+ y; - y; * y; / y;
Cl rScr; rScr; WRI TE WRI TE WRI TE WRI TE
( ' SUM SUMA: ' ) ; ( ' RESTA: TA: ' ) ; ( ' MULTI PLI CACI ON: ' ) ; ( ' DI VI SI ON: ' ) ;
WRI TELN TELN ( suma: 3: 0) ; WRI TELN TELN ( r est: 3: 0) ; WRI TELN TELN ( mul t : 3: 0); WRI TE ( di vi : 5: 2) ;
END END. PRO PROGRAM EJ ER02; ER02; USES CRT; CRT; VAR x, y: I NTEGER; ER; VAR suma, r est , mul t , di vi : I NTEG TEGER; ER; BEGI BEGI N x: =10; 10; y: =2; suma: =x r est: =x mul t : =x di vi : =x
+ y; - y; * y; di v y; y;
2
Ejercicios de Pascal
Cl rScr; rScr;
END.
WRI TE( TE( ' SUM SUMA: ' ) ; WRI TE( TE( ' RESTA: TA: ' ) ; WRI TE( TE( ' MULTI PLI CACI ON: ' ) ; WRI TE( TE( ' DI VI SI ON: ' ) ;
WRI TELN TELN(( suma) ; WRI TELN TELN(( r est ) ; WRI TELN TELN(( mul t ) ; WRI TELN TELN(( di vi ) ;
rec tángulo: ☺Escribir un programa en Pascal que calcule el área de un rectángulo: lado1 = 3 lado2 = 4 área del rectángulo=lado1 * lado2 PRO PROGRAM EJ ER03 ER03;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT; VAR l ado1 ado1,, l ado2 ado2:: I NTEG TEGER; ER; VAR ar ea: I NTEG TEGER; ER;
emai l : vi ct or ss18@hot hot mai l . com}
BEGI BEGI N {Est {Est e pr pr ogr ogr ama nos nos va a ser vi r para cal cul ar el area de de un un rect áng ángul o} l ado1 ado1:: =3; l ado2 ado2:: =4; {Damos val val ores para l as vari abl abl es} area: =l ado1 ado1*l *l ado2 ado2;; {Cal cul amos el area} Cl rScr; rScr; WRI TE ( ' AREA DEL REC RECTA TAN NGULO: LO: ' ) ;
WRI TE ( ar ea) ; {Lo most r amos en pant pant al l a}
END END.
PRO PROGRAM EJ ER3B ER3B;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT; VAR l ado1 ado1,, l ado2 ado2:: REAL; EAL; VAR ar ar ea: REAL; EAL; BEGI BEGI N
emai l : vi ct or ss18@hot hot mai l . com}
{Est {Est e pr pr ogr ogr ama cal cul a el el ar ea de un r ect angu angull o} Cl rScr; rScr; WRI TELN ( ' Escri ba l os l ados del del r ect angul o' ) ; READ EAD ( l ado1 ado1)) ; READ EAD ( l ado2 ado2)) ; WRI TELN ( ' ' ) ; area: =l ado1 ado1*l *l ado2 ado2;; WRI TE ( ' AREA DEL RECTA ECTAN NGULO: LO: ' ) ;
WRI TE ( ar ea: 5: 2) ;
END END.
PRO PROGRAM EJ ER03; ER03; USES CRT; CRT; VAR l ado1 ado1,, l ado2 ado2:: I NTEG TEGER; ER; VAR ar ea: I NTEG TEGER; ER; BEGI BEGI N l ado1 ado1:: =3; l ado2 ado2:: =4; area: =l ado1 ado1*l *l ado2 ado2;; Cl rScr; rScr;
3
Ejercicios de Pascal
END.
WRI TE( ' AREA DEL RECTANGULO: ' ) ;
WRI TE( ar ea) ;
☺Escribir un programa en Pascal que calcule el área de un triángulo: base = 7
altura = 4
área del triángulo = (base * altura)/2
PROGRAM EJ ER04; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR base, al t ur a: REAL; VAR ar ea: REAL; BEGI N base: =7; al t ur a:=4;
emai l : vi ct or ss18@hot mai l . com}
area: =( base * al t ur a) / 2; Cl rScr;
END.
WRI TE ( ' AREA DEL TRI ANGULO: ' ) ; WRI TE ( ar ea: 5: 2) ; {: 5: 2 si r ve para dar el f ormato de sal i da al numero, 5 posi ci ones y 2 deci mal es}
PROGRAM EJ ER4B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; VAR base, al t ur a: REAL; VAR ar ea: REAL; BEGI N {Est e pr ogr ama si r ve par a cal cul ar el area de un t r i angul o} Cl rScr; WRI TELN ( ' PARA CALCULAR EL AREA DE UN TRI ANGULO: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' ESCRI BE LA BASE: ' ) ; READLN ( base) ; WRI TE ( ' ESCRI BE LA ALTURA: ' ) ; READLN ( al t ura) ; WRI TELN ( ' ' ) ; area: =( base * al t ur a) / 2; END.
WRI TE ( ' EL AREA DEL TRI ANGULO ES: ' ) ;
WRI TE ( ar ea: 5: 2) ;
PROGRAM EJ ER04; USES CRT; VAR base, al t ur a: REAL; VAR ar ea: REAL; BEGI N base: =7; al t ur a:=4; area:=( base * al t ur a)/ 2; Cl rScr; END.
WRI TE( ' AREA DEL TRI ANGULO: ' ) ;
WRI TE( ar ea: 5: 2) ;
☺Escribir un programa que calcule la longitud y el área de una circunferencia: radio = 4 longitud de la circunferencia = 2 * PI * radio área de la circunferencia = PI * radio2 PROGRAM EJ ER05; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR r adi o: REAL; VAR l ongi t ud, area: REAL;
emai l : vi ct or ss18@hot mai l . com}
4
Ejercicios de Pascal
BEGI N
r adi o: =4; l ongi t ud: =2*3. 1416*r adi o; area: =3. 1416*r adi o*radi o; Cl rScr; WRI TE ( ' LONGI TUD DE LA CI RCUNFERENCI A: ' ) ; WRI TE ( ' AREA DE LA CI RCUNFERENCI A: ' ) ;
WRI TELN ( l ongi t ud: 5: 2) ; WRI TE ( ar ea: 5: 2) ;
END. PROGRAM EJ ER5B; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR r adi o: REAL; VAR l ongi t ud, area: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Est e pr ogr ama cal cul a l a l ongi t ud y el area de una ci r cunf erenci a} Cl rScr; WRI TELN ( ' LONGI TUD Y AREA DE UNA CI RCUNFERENCI A' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Escri ba el r adi o: ' ) ; READLN ( r adi o); WRI TELN ( ' ' ) ; l ongi t ud: =2*3. 1416*r adi o; area: =3. 1416*r adi o*radi o; WRI TE ( ' LONGI TUD DE LA CI RCUNFERENCI A: ' ) ; WRI TE ( ' AREA DE LA CI RCUNFERENCI A: ' ) ;
WRI TELN ( l ongi t ud: 5: 2) ; WRI TE ( ar ea: 5: 2) ;
END. PROGRAM EJ ER05; USES CRT; VAR r adi o: REAL; VAR l ongi t ud, area: REAL; BEGI N r adi o: =4; l ongi t ud: =2*3. 1416*r adi o; area: =3. 1416*r adi o*radi o; Cl rScr;
END.
WRI TE( ' LONGI TUD DE LA CI RCUNFERENCI A: ' ) ; WRI TE( ' AREA DE LA CI RCUNFERENCI A: ' ) ;
WRI TELN( l ongi t ud: 5: 2) ; WRI TE( ar ea: 5: 2) ;
☺Escribir un programa en Pascal que calcule la velocidad de un proyectil que recorre 2 Km en 5 minutos. Expresar el resultado en metros/segundo. Velocidad = espacio/tiempo PROGRAM EJ ER06; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR espaci o, t i empo: REAL; VAR vel oci dad: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
espaci o: =2; t i empo: =5; vel oci dad: =( espaci o*1000) / ( t i empo*60) ;
5
Ejercicios de Pascal
Cl rScr;
END.
WRI TE ( ' VELOCI DAD DEL PROYECTI L: ' ) ; WRI TE ( vel oci dad: 5: 2) ; WRI TE ( ' m/ s' ) ;
PROGRAM EJ ER6B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; VAR espaci o, t i empo, espaci o2, t i empo2: REAL; VAR vel oci dad, vel oci dad2: REAL; BEGI N {Est e pr ogr ama cal cul a l a vel oci dad de un cuer po} Cl rScr; WRI TE (' Par a cal cul ar l a vel oci dad debe escri bi r l o en uni dades ' ) ; WRI TE ( ' del si st ema i nt er naci onal ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Escr i ba el espaci o r ecorr i do: ' ) ; READLN ( espaci o); WRI TE ( ' Escr i ba el ti empo t r anscur r i do: ' ) ; READLN ( t i empo); WRI TELN ( ' ' ) ; vel oci dad: =( espaci o)/ ( t i empo) ; WRI TE ( ' VELOCI DAD DEL PROYECTI L: ' ) ; WRI TE ( vel oci dad: 5: 2) ; WRI TELN ( ' m/ s' ) ; WRI TELN ( ' ' ) ; WRI TELN ( ' Si l o desea en Km/ h i nt r oduzca l os datos: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Escr i ba el espaci o r ecorr i do: ' ) ; READLN ( espaci o2) ; WRI TE ( ' Escr i ba el t i empo t r anscur r i do: ' ) ; READLN ( t i empo2) ; WRI TELN ( ' ' ) ; vel oci dad2: =( espaci o2) / ( t i empo2) ; END.
WRI TE ( vel oci dad2: 5: 2) ; WRI TE ( ' Km/ h ' ) ;
PROGRAM EJ ER06; USES CRT; VAR espaci o, t i empo: REAL; VAR vel oci dad: REAL; BEGI N espaci o: =2; t i empo: =5; vel oci dad: =( espaci o*1000) / ( t i empo*60) ; Cl rScr;
END.
WRI TE( ' VELOCI DAD DEL PROYECTI L: ' ) ; WRI TE( vel oci dad: 5: 2) ; WRI TE( ' m/ s' ) ;
☺Escribir un programa en Pascal que calcule el volumen de una esfera: radio = 3 volumen de la esfera = 4/3 * PI * radio3 PROGRAM EJ ER07; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; VAR r adi o: REAL; VAR vol umen: REAL; BEGI N r adi o: =3; vol umen: =( 4/ 3) *3. 1416*( r adi o*radi o*radi o); Cl rScr;
6
Ejercicios de Pascal WRI TE ( ' VOLUMEN DE LA ESFERA: ' ) ;
END.
WRI TE( vol umen) ;
PROGRAM EJ ER7B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; VAR r adi o: REAL; VAR vol umen: REAL; BEGI N {Est e pr ogr ama cal cul a el vol umen de una esf er a} Cl rScr; WRI TELN ( ' PARA CALCULAR EL VOLUMEN DE LA ESFERA ESCRI BA EL RADI O: ' ) ; READLN ( r adi o) ; vol umen: =( 4/ 3) *3. 1416*( r adi o*radi o*radi o); WRI TE ( ' VOLUMEN DE LA ESFERA: ' ) ;
END.
WRI TE( vol umen: 5: 2) ;
PROGRAM EJ ER07; USES CRT; VAR r adi o: REAL; VAR vol umen: REAL; BEGI N r adi o: =3; vol umen: =( 4/ 3) *3. 1416*( r adi o*radi o*radi o); Cl rScr; END.
WRI TE( ' VOLUMEN DE LA ESFERA: ' ) ;
WRI TE( vol umen) ;
☺Escribir un programa en Pascal que evalúe la siguiente expresión: (a+7*c)/(b+2-a)+2*b
a = 3,b = 6,c = 4
PROGRAM EJ ER08; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR a, b, c: REAL; VAR r esul t ado: REAL; BEGI N a: =3; b: =6; c: =4;
emai l : vi ct or ss18@hot mai l . com}
r esul t ado: =( a+7*c) / ( b+2- a) +2*b; Cl rScr; END.
WRI TE ( ' RESULTADO: ' ) ;
WRI TE ( r esul t ado: 5) ;
PROGRAM EJ ER8B; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR a, b, c: REAL; VAR r esul t ado: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Est e progr ama cal cul a una expresi on al gebrai ca} Cl rScr; WRI TELN ( ' Est e pr ogr ama si r ve para cal cul ar l a si gui ent e expr esi on: ' ) ; WRI TELN ( ' ( a+7*c) / ( b+2- a) +2*b' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' I nt r oduzca a: ' ) ; READLN ( a); WRI TE ( ' I nt r oduzca b: ' ) ; READLN ( b) ; WRI TE ( ' I nt r oduzca c: ' ) ; READLN ( c) ;
7
Ejercicios de Pascal
r esul t ado: =( a+7*c) / ( b+2- a) +2*b; WRI TELN ( ' ' ) ; WRI TE ( ' RESULTADO: ' ) ; WRI TE ( r esul t ado: 5: 2) ;
END. PROGRAM EJ ER08; USES CRT; VAR a, b, c: REAL; VAR r esul t ado: REAL; BEGI N a: =3; b: =6; c: =4; r esul t ado: =( a+7*c) / ( b+2- a) +2*b; Cl rScr; END.
WRI TE( ' RESULTADO: ' ) ;
WRI TE( r esul t ado: 5);
☺Escribir un programa en Pascal que evalúe la siguiente expresión: (a+5) * 3 / 2 * b - b
a = 3,b = 6
PROGRAM EJ ER09; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR a, b: REAL; VAR r esul t ado: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
a: =3; b: =6; r esul t ado:=( ( a+5) *3) / ( 2*b- b) ; Cl rScr; WRI TE ( ' RESULTADO: ' ) ;
WRI TE( r esul t ado: 5: 2) ;
END.
PROGRAM EJ ER9B; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR a, b: REAL; VAR r esul t ado: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Est e pr ogr ama cal cul a el r esul t ado de una expresi on al gebr ai ca} Cl rScr; WRI TE ( ' PARA CALCULAR LA SI GUI ENTE EXPRESI ON: ' ) ; WRI TELN ( ' ( ( a+5) *3) / ( 2*b- b) ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Escri ba a: ' ) ; READ ( a) ; WRI TE ( ' Escri ba b: ' ) ; READ ( b) ; WRI TELN ( ' ' ) ; r esul t ado:=( ( a+5) *3) / ( 2*b- b) ; WRI TE ( ' RESULTADO: ' ) ;
WRI TE( r esul t ado: 5: 2) ;
END.
8
Ejercicios de Pascal PROGRAM EJ ER09; USES CRT; VAR a, b: REAL; VAR r esul t ado: REAL; BEGI N a: =3; b: =6; r esul t ado: =( a+5) *3/ 2*b-b; Cl rScr; END.
WRI TE( ' RESULTADO: ' ) ;
WRI TE( r esul t ado: 5: 2);
☺Escribir un programa en Pascal que evalúe la siguiente expresión: (-b + √(b2-4*a*c)/(2*a) (es la solución positiva de una ecuación de 2º grado) PROGRAM EJ ER10; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR a, b, c: REAL; VAR r esul t ado: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
a: =6; b: =6; c: =1; r esul t ado: =( - b+sqrt ( sqr ( b) - 4*a*c)) / ( 2*a) ; Cl rScr; WRI TE ( ' RESULTADO: ' ) ;
WRI TE( r esul t ado: 5: 2);
END.
PROGRAM EJ ER10B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR a, b, c: REAL; VAR r esul t ado: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Cal cul a l a i ncogni t a posi t i va de una ecuaci on de 2º gr ado} Cl rScr; WRI TE (' Par a cal cul ar l a i ncogni t a posi t i va de una ecuaci on' ) ; WRI TE ( ' de segundo gr ado escr i ba t odas l as vari abl es: ' ) ; WRI TELN ( ' ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Escr i ba a: ' ) ; WRI TE ( ' Escr i ba b; ' ) ; WRI TE ( ' Escr i ba c; ' ) ; WRI TELN ( ' ' ) ;
READLN ( a); READLN ( b) ; READLN ( c) ;
r esul t ado: =( - b +sqr t ( sqr ( b) - 4*a*c)) / ( 2*a) ; WRI TE ( ' RESULTADO: ' ) ;
WRI TE( r esul t ado: 5: 2) ;
END. PROGRAM EJ ER10; USES CRT; VAR a, b, c: REAL; VAR resul t ado: r eal ; begi n a: =6; b: =6;
9
Ejercicios de Pascal
c: =1; r esul t ado: =( - b+sqrt ( sqr( b) - 4*a*c)) / ( 2*a) ; Cl rScr;
END.
WRI TE( ' RESULTADO: ' ) ;
WRI TE( r esul t ado: 5: 2) ;
☺Escribir un programa en Pascal que calcule el área y el volumen de un cilindro: A = (2 * (PI * r 2)) + ((2 * PI * r) * h) V = (PI * r 2) * h PROGRAM EJ ER11; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR r adi o, al t ur a: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
r adi o: =3; al t ur a:=6; area: = ( 2 * ( 3. 1416 * radi o * radi o) ) + ( ( 2 * 3. 1416 * radi o) * al t ura); vol umen: = ( 3. 1416 * r adi o * radi o) * al t ur a;
{podr i amos cambi ar "r adi o*radi o" por "sqr ( r adi o)" para hacer el cuadr ado del r adi o} Cl rScr; WRI TE ( ' AREA DEL CI LI NDRO: ' ) ; WRI TE ( ar ea) ; WRI TELN ( ' m2' ) ; WRI TE ( ' VOLUMEN DEL CI LI NDRO: ' ) ; WRI TE ( vol umen) ; WRI TE ( ' m3' ) ; END. PROGRAM EJ ER11B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR r adi o, al t ur a: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Cal cul a el area y el vol umen de un ci l i ndr o} Cl rScr; WRI TELN ( ' CALCULA EL AREA Y VOLUMEN DE UN CI LI NDRO' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Escri ba el r adi o: ' ) ; WRI TE ( ' Escri ba l a al t ur a: ' ) ; WRI TELN ( ' ' ) ;
READLN ( r adi o); READLN ( al t ur a) ;
area: = ( 2 * ( 3. 1416 * radi o * radi o) ) + ( ( 2 * 3. 1416 * radi o) * al t ura); vol umen: = ( 3. 1416 * r adi o * radi o) * al t ur a; WRI TE ( ' AREA DEL CI LI NDRO: ' ) ; WRI TE ( ar ea: 5: 2) ; WRI TELN ( ' m2' ) ; WRI TE ( ' VOLUMEN DEL CI LI NDRO: ' ) ; WRI TE ( vol umen: 5: 2); WRI TE ( ' m3' ) ; END. PROGRAM EJ ER11; USES CRT; VAR r , h: REAL; VAR a, v: REAL; BEGI N {AREA Y VOLUMEN DE UN CI LI NDRO} Cl rScr; WRI TE( ' RADI O DEL CI LI NDRO: ' ) ; WRI TE( ' ALTURA DEL CI LI NDRO: ' ) ;
READLN( r ) ; READLN( h) ;
10
Ejercicios de Pascal
a: =( 2*( 3. 1416*sqr ( r) ) ) + ( ( 2*3. 1416*r) *h) ; v: =( 3. 1416*sqr( 2) ) *h; Cl rScr;
END.
WRI TE( ' AREA DEL CI LI NDRO: ' ) ; WRI TE( ' VOLUMEN DEL CI LI NDRO: ' ) ;
WRI TELN( a: 5: 2) ; WRI TELN( v: 5: 2) ;
☺Escribir un programa en Pascal que calcule el área y el volumen de un hexaedro A = (l*l) * 6 V = l3 PROGRAM EJ ER12; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR l ado: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
l ado: =4; area: = ( l ado * l ado) * 6; vol umen: = sqr ( l ado) * l ado; Cl rScr; WRI TE ( ' AREA DEL HEXAEDRO: ' ) ; WRI TE ( ' VOLUMEN DEL HEXAEDRO: ' ) ;
WRI TE ( ar ea) ; WRI TELN ( ' m2' ) ; WRI TE ( vol umen) ; WRI TE ( ' m3' ) ;
END. PROGRAM EJ ER12B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR l ado: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
Cl rScr; WRI TE ( ' I NTRODUCE EL L ADO DEL HEXAEDRO: ' ) ; READLN ( l ado) ; WRI TELN ( ' ' ) ; area: = ( l ado * l ado) * 6; vol umen: = sqr ( l ado) * l ado; WRI TE ( ' AREA DEL HEXAEDRO: ' ) ; WRI TE ( ar ea: 5: 2); WRI TELN ( ' m2' ) ; WRI TE ( ' VOLUMEN DEL HEXAEDRO: ' ) ; WRI TE ( vol umen: 5: 2) ; WRI TE ( ' m3' ) ;
END.
☺Escribir un programa en Pascal que calcule el área y el volumen de un prisma A = (2 *(l1 * l2)) + (2 * (l1 * l3)) + (2*(l2 * l3)) V = l1 * l2 * l3 PROGRAM EJ ER13; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR l 1, l 2, l 3: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
l 1: =3; l 2: =6; l 3: =4;
11
Ejercicios de Pascal
area: =2 * (l 1 * l 2) +(2 * (l 1 * l 3)) + (2* ( l 2 * l 3) ); vol umen: = l 1 * l 2 * l 3; Cl rScr; WRI TE ( ' AREA DEL PRI SMA: ' ) ; WRI TE ( ' VOLUMEN DEL PRI SMA: ' ) ;
WRI TELN( ar ea) ; WRI TE ( vol umen) ;
END. PROGRAM EJ ER13B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR l 1, l 2, l 3: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Cal cul a el ar ea y vol umen de un pr i sma} Cl rScr; WRI TELN ( ' PARA WRI TELN ( ' ' ) ; WRI TE ( ' Lado1: WRI TE ( ' Lado2: WRI TE ( ' Lado3: WRI TELN ( ' ' ) ;
CALCULAR EL AREA Y EL VOLUMEN DEL PRI SMA, ESCRI BA: ' ) ; ' ); ' ); ' );
READLN ( l 1) ; READLN ( l 2) ; READLN ( l 3) ;
area: =2 * (l 1 * l 2) +(2 * (l 1 * l 3)) + (2* ( l 2 * l 3) ); vol umen: = l 1 * l 2 * l 3; WRI TE ( ' AREA DEL PRI SMA: ' ) ; WRI TE ( ' VOLUMEN DEL PRI SMA: ' ) ;
WRI TELN ( ar ea: 5: 2) ; WRI TE ( vol umen: 5: 2) ;
END.
☺Escribir un programa en Pascal que calcule el área y el volumen de un tetraedro A = a2 * raízcuadrada(3) V = (a3/12) * raízcuadrada (2) PROGRAM EJ ER14; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR ari st a: REAL; VAR ar ea, vol umen: REAL;
emai l : vi ct or ss18@hot mai l . com}
BEGI N ari sta: =5; ar ea: = s qr ( ar i s t a) * s qr t ( 3) ; vol umen: = ( (sqr( ari sta) * ari sta) / 12) * sqrt (2); WRI TE ( ' AREA DEL TETRAEDRO: ' ) ; WRI TE ( ' VOLUMEN DEL TETRAEDRO: ' ) ;
WRI TELN ( ar ea) ; WRI TE ( vol umen) ;
END. PROGRAM EJ ER14B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR ari st a: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Cal cul a el ar ea y el vol umen de un oct aedro} WRI TELN ( ' SI DESEA CALCULAR EL AREA Y EL VOLUMEN DE UN TETRAEDRO: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' I NTRODUZCA EL VALOR DE SU ARI STA: ' ) ; READLN ( ar i st a) ; WRI TELN ( ' ' ) ;
12
Ejercicios de Pascal
ar ea: = s qr ( ar i s t a) * s qr t ( 3) ; vol umen: = ( (sqr( ari sta) * ari sta) / 12) * sqrt (2); WRI TE ( ' AREA DEL TETRAEDRO: ' ) ; WRI TE ( ' VOLUMEN DEL TETRAEDRO: ' ) ;
WRI TELN ( ar ea: 5: 2) ; WRI TE ( vol umen: 5: 2) ;
END.
☺Escribir un programa en Pascal que calcule el área y el volumen de un octaedro A = 2 * a 2 * raízcuadrada(3) V=(a3/3) * raízcuadrada(2) PROGRAM EJ ER15; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR ari st a: REAL; VAR ar ea, vol umen: REAL;
emai l : vi ct or ss18@hot mai l . com}
BEGI N ari sta: =4; area: = 2 * sqr( ari sta) * sqrt ( 3); vol umen: = ( (sqr( ari sta) * ari sta) / 3) * sqrt ( 2); WRI TE ( ' AREA DEL OCTAEDRO: ' ) ; WRI TE ( ' VOLUMEN DEL OCTAEDRO: ' ) ;
WRI TELN( ar ea) ; WRI TE( vol umen) ;
END.
PROGRAM EJ ER15B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR ari st a: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Si r ve para cal cul ar el area y el vol umen de un t etr aedr o} WRI TELN ( ' PARA CALCULAR EL AREA Y VOLUMEN DE UN TETRAEDRO: ' ) ; WRI TE ( ' ESCRI BA EL VALOR DE LA ARI STA: ' ) ; READLN ( ar i st a) ; WRI TELN ( ' ' ) ; area: = 2 * sqr( ari sta) * sqrt ( 3); vol umen: = ( (sqr( ari sta) * ari sta) / 3) * sqrt ( 2); WRI TE ( ' AREA DEL OCTAEDRO: ' ) ; WRI TE ( ' VOLUMEN DEL OCTAEDRO: ' ) ;
WRI TELN ( ar ea: 5: 2) ; WRI TE ( vol umen: 5: 2) ;
END.
☺Escribir un programa en Pascal que calcule el área y el volumen de un cono A = (PI * r * l)+ (PI * r 2) V = (PI * r 2 * h)/3 PROGRAM EJ ER16; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR r adi o, l ado, al t ur a: REAL; VAR ar ea, vol umen: REAL;
emai l : vi ct or ss18@hot mai l . com}
BEGI N r adi o: =6; l ado: =3; al t ur a:=8;
13
Ejercicios de Pascal
area: = ( 3. 1416 * r adi o * l ado) + ( 3. 1416 * sqr ( radi o) ) ; vol umen: = ( 3. 1416 * sqr ( r adi o) * al t ur a) / 3; WRI TE ( ' AREA DEL CONO: ' ) ; WRI TE ( ' VOLUMEN DEL CONO: ' ) ;
WRI TELN ( ar ea) ; WRI TE ( vol umen) ;
END. PROGRAM EJ ER16B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR r adi o, l ado, al t ur a: REAL; VAR ar ea, vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Se ut i l i za para cal cul ar el area y vol umen de un cono} WRI TELN ( ' Par a cal cul ar el area y el vol umen de un cono: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Escri ba el val or del r adi o: ' ) ; READLN ( r adi o) ; WRI TE ( ' Escri ba el val or del l ado: ' ) ; READLN ( l ado); WRI TE ( ' Escri ba el val or de l a al t ur a: ' ) ; READLN ( al t ur a) ; WRI TELN ( ' ' ) ; area: = ( 3. 1416 * r adi o * l ado) + ( 3. 1416 * sqr ( radi o) ) ; vol umen: = ( 3. 1416 * sqr ( r adi o) * al t ur a) / 3; WRI TE ( ' AREA DEL CONO: ' ) ; WRI TE ( ' VOLUMEN DEL CONO: ' ) ;
WRI TELN ( ar ea: 5: 2) ; WRI TE ( vol umen: 5: 2) ;
END.
☺Escribir un programa en Pascal que calcule el volumen de un elipsoide V = (4/3) * PI * a * b *c PROGRAM EJ ER17; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR a, b, c: REAL; VAR vol umen: REAL;
emai l : vi ct or ss18@hot mai l . com}
BEGI N a: =3; b: =5; c: =4; vol umen: = ( 4/ 3) * 3. 1416 * a * b * c; WRI TE ( ' VOLUMEN DEL ELI PSOI DE: ' ) ;
WRI TE ( vol umen) ;
END. PROGRAM EJ ER17B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR a, b, c: REAL; VAR vol umen: REAL; BEGI N
emai l : vi ct or ss18@hot mai l . com}
{Cal cul a el vol umen de un el i psoi de} Cl rScr; WRI TELN ( ' PARA CALCULAR EL VOLUMEN DE UN ELI PSOI DE ESCRI BA: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' A: ' ) ; WRI TE ( ' B: ' ) ; WRI TE ( ' C: ' ) ;
READLN ( a); READLN ( b) ; READLN ( c) ;
vol umen: = ( 4/ 3) * 3. 1416 * a * b * c;
14
Ejercicios de Pascal WRI TE ( ' VOLUMEN DEL ELI PSOI DE: ' ) ;
WRI TE ( vol umen: 5: 2) ;
END.
☺Escribir un programa en Pascal que calcule las raíces de una ecuación de 2º grado PROGRAM EJ ER18; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR a, b, c: REAL; VAR x1, x2: REAL;
emai l : vi ct or ss18@hot mai l . com}
BEGI N a: =6; b: =6; c: =1; x1: = ( - b + s qr t ( s qr ( b) - ( 4 * a * c ) ) ) / 2 * a; x2: = ( - b - sqrt (sqr( b) - (4 * a * c))) / 2 * a; WRI TE ( ' SOLUCI ON 1: ' ) ; WRI TE ( ' SOLUCI ON 2: ' ) ;
WRI TELN ( x1) ; WRI TE ( x2) ;
END.
PROGRAM EJ ER18B; {Autor : Vi ct or Sanchez Sanchez USES CRT; VAR a, b, c: REAL; VAR r esul t ado1, r esul t ado2: REAL;
emai l : vi ct or ss18@hot mai l . com}
BEGI N {Cal cul a ecuaci ones de segundo gr ado} Cl rScr; WRI TE ( ' ESTE PROGRAMA SI RVE PARA CALCULAR ECUACI ONES ' ) ; WRI TELN ( ' DE SEGUNDO GRADO' ) ; WRI TELN ( ' ' ) ; WRI TELN ( ' I nt r oduzca: a, b y c: ' ) ; WRI TELN ( ' ' ) ; READLN ( a) ; READLN ( b) ; READLN ( c) ;
END.
r esul t ado1: =( - b + sqrt ( sqr( b) - 4*a*c)) / ( 2*a) ; r esul t ado2: =( - b - sqrt ( sqr( b) - 4*a*c)) / ( 2*a) ; WRI TELN ( ' RESULTADO DE LA EXPRESI ON: ' ) ; WRI TE ( ' VALOR 1: ' ) ; WRI TELN ( r esul t ado1: 5: 2); WRI TE ( ' VALOR 2; ' ) ; WRI TE ( r esul t ado2: 5: 2) ;
☺Escribir un programa en Pascal que calcule el área y el volumen de un cilindro: radio = 3 altura = 4 PROGRAM EJ ER19; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR r adi o, al t ur a: REAL; VAR ar ea, vol umen: REAL; BEGI N r adi o: =3; al t ur a:=4;
emai l : vi ct or ss18@hot mai l . com}
area: = 2 * ( 3. 1416 * sqr( radi o) ) + ( ( 2 * 3. 1416 * r adi o) * al t ura); vol umen: = ( 3. 1416 * sqr ( r adi o) ) * al t ur a; Cl rScr;
15
Ejercicios de Pascal
WRI TE ( ' EL AREA DEL CI LI NDRO ES: ' ) ; WRI TE ( ' EL VOLUMEN ES: ' ) ;
END.
PROGRAM EJ ER19B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
BEGI N
WRI TELN ( ar ea: 6: 2) ; WRI TE ( vol umen: 6: 2);
emai l : vi ct or ss18@hot mai l . com}
VAR r adi o, al t ur a: REAL; VAR ar ea, vol umen: REAL; {Con est e pr ograma podremos cal cul ar el ar ea y el vol umen de un ci l i ndr o} Cl rScr; WRI TELN ( ' PARA CALCULAR EL AREA Y VOLUMEN DE UN CI LI NDRO: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' ESCRI BA EL RADI O- ' ) ; READLN ( r adi o) ; WRI TE ( ' ESCRI BA LA ALTURA- ' ) ; READLN ( al t ura) ; WRI TELN ( ' ' ) ; area: = 2 * ( 3. 1416 * sqr( radi o) ) + ( ( 2 * 3. 1416 * r adi o) * al t ura); vol umen: = ( 3. 1416 * sqr ( r adi o) ) * al t ur a; WRI TE ( ' EL AREA DEL CI LI NDRO ES: ' ) ; WRI TE ( ' EL VOLUMEN ES: ' ) ;
END.
WRI TELN ( ar ea: 6: 2) ; WRI TE ( vol umen: 6: 2);
☺Escribir un programa en Pascal que calcule la hipotenusa de un triángulo rectángulo cateto 1 = 5 cateto 2 = 5 PROGRAM EJ ER20; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR catet o1, cat eto2: REAL; VAR hi pot enusa: REAL; BEGI N cat eto1: =5; cat eto2: =5; hi pot enusa: = sqrt ( sqr( cat et o1) + sqr( cat et o2) ) ; Cl rScr; WRI TE ( ' HI POTENUSA DEL TRI ANGULO: ' ) ; WRI TE ( hi potenusa: 5: 2) ; WRI TE ( ' cm' ) ; END. PROGRAM EJ ER20B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR catet o1, cat eto2: REAL; VAR hi pot enusa: REAL; BEGI N
{Con est e pr ogr ama podr emos cal cul ar l a hi pot enusa de un t r i angul o} Cl rScr; WRI TE ( ' PARA CALCULAR LA HI POTENUSA DEL TRI ANGULO ' ) ; WRI TELN ( ' ESCRI BA LOS CATETOS: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Catet o1: ' ) ; READLN ( catet o1) ; WRI TE ( ' Catet o2: ' ) ; READLN ( catet o2) ;
16
Ejercicios de Pascal WRI TELN ( ' ' ) ; hi pot enusa: = sqrt ( sqr( cat et o1) + sqr( cat et o2) ) ; WRI TE ( ' HI POTENUSA DEL TRI ANGULO: ' ) ; WRI TE ( hi pot enusa: 5: 2) ; END. PROGRAM EJ ER20; USES CRT; VAR c1, c2, h: REAL; BEGI N Cl rScr; WRI TE( ' I nt r oduzca catet o_1: ' ) ; WRI TE( ' I nt r oduzca catet o_2: ' ) ;
READLN ( c1) ; READLN ( c2) ;
h: =sqr t ( sqr ( c1) +sqr ( c2) ) ;
END.
WRI TE( ' Cat et o_1 - - - - - - > ' ) ; WRI TE( ' Cat et o_2 - - - - - - > ' ) ; WRI TE( ' Hi pot enusa - - - - > ' ) ;
WRI TELN ( c1: 5: 2) ; WRI TELN ( c2: 5: 2) ; WRI TELN ( h: 5: 2) ;
☺Escribir un programa en Pascal que calcula el equivalente en grados Fahrenheit o Celsius de las siguientes temperaturas. Temperatura 1 = 32º Fahrenheit Temperatura 2 = 10 º Celsius {Regla de 3: Celsius / 5 = (Fahrenheit – 32) 9} PROGRAM EJ ER21; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
BEGI N
emai l : vi ct or ss18@hot mai l . com}
VAR T1, T2: REAL; VAR T1C, T2F: REAL; T1: =32; T2: =10; T1C: =T1 - 32; T2F: =T2 + 32; Cl rScr; WRI TE ( ' TEMPERATURA EQUI VALENTE: ' ) ; WRI TE ( T1: 3: 0) ; WRI TE ( ' º Fahr enhei t - ' ) ; WRI TE ( T1C: 3: 0) ; WRI TELN ( ' º Cel si us' ) ;
END.
WRI TE ( ' TEMPERATURA EQUI VALENTE: ' ) ; WRI TE ( T2: 3: 0) ; WRI TE ( ' º Cel si us - ' ) ; WRI TE ( T2F: 3: 0) ; WRI TE ( ' º Fahr enhei t ' ) ;
PROGRAM EJ ER21B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
BEGI N
emai l : vi ct or ss18@hot mai l . com}
VAR Fahr enhei t , Cel si us: REAL; VAR T1C, T2F: REAL; VAR r espuest a: CHAR; Cl rScr; REPEAT BEGI N
17
Ejercicios de Pascal WRI TE ( ' ¨DESEA PASARLO A FAHRENHEI T O CELSI US? F/ C: ' ) ; READLN ( r espuest a) ; WRI TELN ( ' ' ) ; END; UNTI L ( r espuest a=' C' ) OR ( r espuest a=' F' ) OR ( r espuest a=' c' ) OR ( r espuest a=' f ' ) ; I F UPCASE( r espuest a) =' F' THEN BEGI N WRI TELN ( ' I nt r oduzca l os gr ados para pasar a Fahr enhei t : ' ) ; WRI TE ( ' Cel si us: ' ) ; READLN ( Cel si us) ; Fahrenhei t: = ( (9 * Cel si us) / 5) + 32; WRI TE (Fahr enhei t : 5: 2, ' gr ados Fahr enhei t . ' ) ; WRI TELN ( ' ' ) ; END ELSE I F UPCASE ( r espuest a) =' C' THEN BEGI N WRI TELN ( ' I nt r oduzca l os gr ados para pasar a Cel si us: ' ) ; WRI TE ( ' Fahr enhei t : ' ) ; READLN ( Fahr enhei t ) ; Cel si us: = ( ( Fahrenhei t - 32) / 9) * 5;
END.
WRI TE (Cel si us: 5: 2, ' grados Cel si us. ' ) ; END;
PROGRAM EJ ER21; USES CRT; VAR t _C, t _F: REAL; BEGI N Cl rScr; WRI TE( ' I nt r oduzca t emper atur a: ( ºCel si us) : ' ) ; READLN( t _C); t _F: =( ( t _C*9) / 5) +32; Cl rScr;
END.
WRI TE( t _C: 5: 2) ; WRI TE( t _F: 5: 2) ;
WRI TE( ' ºCel si us equi val en a ' ) ; WRI TE( ' ºFahr enhei t ' ) ;
☺Escribir un programa que lea dos números enteros A y B, y obtenga los valores A div B, A mod B. PROGRAM EJ ERDI V; Uses Cr t ; Var A, B: I nt eger ; Var sol uc: I nt eger ; Begi n Cl rScr; WRI TELN( ' I nt r oduzca dos numeros: ' ) ; WRI TELN; WRI TE( ' A: ' ) ; READLN( A) ; WRI TE( ' B: ' ) ; READLN( B) ; WRI TELN; WRI TE( ' A di v B = ' ) ; sol uc : = A di v B; {di v hace l a di vi si on de 2 numeros ent eros} WRI TELN( sol uc); WRI TELN;
End.
WRI TE( ' A mod B = ' ) ; sol uc : = A mod B; {mod muest r a el r est o de una di vi si on de 2 numer os ent er os} WRI TELN( sol uc);
18
Ejercicios de Pascal
* program t 4e6( I nput , Uses C r t ; var A, B, aDb, aMb: i begin
Out put ) ; nt eger ;
Cl rScr; wr i t e(' Di me un número ent ero: ' ) ; r eadl n( A) ; wr i t e( ' Di me otr o númer o ent er o: ' ) ; r eadl n( B) ; aDb := A div B; aMb := A mod B; wri tel n(' A div B = ' , aDb); wri tel n(' A mod B = ' , aMb); r eadkey . end
☺Escribir un programa en Pascal que calcule el número de horas, minutos y segundos que hay en 3700 segundos. PROGRAM EJ ER22; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR hor as, mi nut os, segundos: I NTEGER; BEGI N hor as: = 3700 di v 3600; mi nut os: = ( 3700 mod 3600) di v 60; segundos: = ( 3700 mod 3600) - ( mi nut os * 60) ; Cl rScr; WRI TELN ( ' EN 3700 SEGUNDOS HAY: ' ) ; WRI TE ( horas, ' hora' , ' y ' , mi nut os, ' mi nut os ' , segundos, ' segundos' ) ; END. PROGRAM EJ ER22B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR hor as, mi nut os, segundos: I NTEGER; VAR cant i dad: I NTEGER; BEGI N
Cl rScr; WRI TE ( ' Escr i ba l os segundos para t r ansf ormarl o a horas, ' ) ; WRI TELN ( ' mi nut os y segundos' ) ; READLN ( cant i dad) ; {Es el numer o de segundos que se i nt r oducen} WRI TELN ( ' ' ) ; horas: = cant i dad di v 3600; mi nut os: = ( cant i dad mod 3600) di v 60; segundos: = ( cant i dad mod 3600) - ( mi nutos * 60); {Los s egundos s on: l as hor as - l os mi nut os pasados a segundos} WRI TELN ( ' EN ' , canti dad, ' SEGUNDOS HAY: ' ) ; WRI TE ( horas, ' horas ' , mi nut os, ' mi nut os ' , segundos, ' segundos' ) ;
END. PROGRAM EJ ER22; USES CRT; VAR h, m, s1, s2: I NTEGER; BEGI N Cl rScr;
19
Ejercicios de Pascal WRI TE( ' I ntr oduzca segundos: ' ) ;
READLN( s1);
h: =s1 di v 3600; s2: =s1 mod 3600; m: =s2 di v 60; s2: =s2 mod 60; Cl rScr;
END.
WRI TE( s1) ; WRI TE( h) ; WRI TE( m) ; WRI TE( s2);
WRI TE( ' segundos son - - - - - > ' ) ; WRI TE( ' hor as ' ) ; WRI TE( ' mi nut os ' ) ; WRI TE( ' segundos ' ) ;
☺Escribir un programa en Pascal que calcule el capital producido por un capital de 1.000.000 de pesetas, al cabo de un año depositado a un interés del 2%. PROGRAM EJ ER23; {Aut or : Vi ct or Sanchez Sanchez USES CRT; 7
emai l : vi ct or ss18@hot mai l . com}
VAR capi t al , t i empo, i nt er es: REAL; VAR capi t al pr oduci do: REAL; BEGI N capi t al : =1000000; t i empo: =1; i nt er es: =2; capi t al pr oduci do: = capi t al * 0. 02; Cl rScr; WRI TE ( ' En un año se produci r a un capi t al de ' ) ; WRI TE ( capi t al pr oduci do: 5: 2) ; WRI TE ( ' peset as' ) ; END. PROGRAM EJ ER23B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR capi t al , t i empo, i nt er es: REAL; VAR capi t al pr oduci do: REAL; BEGI N
Cl rScr; WRI TELN ( ' PARA CALCULAR EL CAPI TAL PRODUCI DO I NTRODUZCA ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Capi t al : ' ) ; READLN ( capi t al ) ; WRI TE ( ' Ti empo: ' ) ; READLN ( t i empo) ; WRI TE ( ' I nt er es: ' ) ; READLN ( i nt er es) ; WRI TELN ( ' ' ) ; capi t al pr oduci do: = ( capi t al * ( i nt eres/100) * t i empo) ; WRI TE ( ' En est os años se pr oduci r a un capi t al de ' ) ; WRI TE ( capi t al pr oduci do: 5: 2) ; WRI TE ( ' peset as. ' ) ;
END. PROGRAM EJ ER23; USES CRT; VAR capi t al , i nt er es, i nt er eses: REAL; BEGI N
20
Ejercicios de Pascal
Cl rScr; WRI TE( ' Capi t al : ' ) ; WRI TE( ' I nt ef es: ' ) ;
READLN( capi t al ) ; READLN( i nt er es) ;
i nt ereses: =capi t al *( i nt er es/ 100) ; Cl rScr;
END.
WRI TE( ' Capi t al : ' ) ; WRI TE( ' I nt er es: ' ) ; WRI TE( ' I nt er eses: ' ) ;
WRI TELN( capi t al : 5: 2) ; WRI TELN( i nt er es: 5: 2) ; WRI TELN( i nt er eses: 5: 2) ;
☺Escribir un programa en Pascal que calcula la siguiente expresión trigonométrica para un valor angular de 90º (sen x * cos x)/(tan x) PROGRAM EJ ER24B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR r esul t ado, r esul t ado2, x: REAL; BEGI N WRI TE ( ' PARA CALCULAR LA EXPRESI ON: ( si n( x) * cos( x) ) / t an( x) ' ) ; WRI TELN ( ' I NTRODUZCA EL VALOR DE X EN RADI ANES: ' ) ; READLN ( x) ; WRI TELN ( ' ' ) ; resul t ado: =(si n(x) * cos(x)) / (si n(x) / cos(x)) ; WRI TE ( ' El r esul t ado de l a expr esi on ( si nx * cosx / t gx) es i gual a: ' ) ; WRI TE ( r esul t ado: 5: 2) ; END. PROGRAM EJ ER24; USES CRT; VAR angul o: REAL; VAR val _exp: REAL; BEGI N Cl rScr; WRI TE( ' i nt r oduzca el val or del angul o ( gr ados) : ' ) ; READLN ( angul o) ; angul o: =angul o*( 6. 28/ 360) ;
END.
WRI TE( ' Val or de l a expr esi on: ' ) ; WRI TE( ( si n( angul o) *cos(angul o) ) / ( ( si n( angul o) / cos(angul o) ) ) : 5: 2) ;
☺Escribir un programa en Pascal que calcule el equivalente en pies de una longitud de 10 metros. 1 metro ------------- 12 pulgadas --------
39.27 pulgadas 1 pie
PROGRAM EJ ER25; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
21
Ejercicios de Pascal
VAR metr os, pul gadas, pi es: REAL; BEGI N met r os: =10; pul gadas: =met r os * 39. 27; pi es: =( ( 1 * metr os) * pul gadas) / ( 12 * met r os); Cl rScr; WRI TE ( ' El equi val ent e en pi es a una di st anci a de 10m es de: ' ) ; WRI TE ( pi es: 3: 2) ; WRI TE ( ' pi es' ) ; END. PROGRAM EJ ER25B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR met r os, pi es: REAL; BEGI N
{Par a cal cul ar l a equi val enci a ent r e pi es y metr os} Cl rScr; WRI TELN ( ' I NTRODUZCA LOS METROS PARA PASARLOS A PI ES: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Metr os: ' ) ;
READLN ( metr os) ;
pi es: = met r os / ( 12/ 39. 27) ; { 1 pi e = 0. 3048 met r os} { 1 pul gada = 25. 4 mm} WRI TE ( ' El equi val ent e en pi es es de: ' ) ; WRI TE ( pi es: 3: 2) ; WRI TE ( ' pi es' ) ; END. PROGRAM EJ ER25; USES CRT; VAR l ongi t ud: REAL; BEGI N Cl rScr;
END.
WRI TE( ' Longi t ud ( met r os): ' ) ;
READLN( l ongi t ud) ;
WRI TE( ( l ongi t ud*39. 27) / 12: 5: 2) ;
WRI TE( ' pi es' ) ;
☺Escribir un programa en Pascal que calcule el área de un rectángulo a partir de sus coordenadas: x1 = 10 y1 = 10
x2 = 20 y2 = 20
PROGRAM EJ ER26; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR l ado1, l ado2: REAL; VAR ar ea: REAL; BEGI N l ado1: =10; l ado2: =10;
22
Ejercicios de Pascal area: = l ado1 * l ado2; Cl rScr; WRI TE ( ' El area del r ect angul o es de: ' ) ; WRI TE ( area: 5: 2) ; END. PROGRAM EJ ER26B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR x1, x2, y1, y2: REAL; VAR ar ea: REAL; BEGI N
{Si r ve para cal cul ar el area de un r ect angul o a part i r de coor denadas} WRI TELN ( ' Par a cal cul ar el ar ea del r ectangul o ' ) ; WRI TELN ( ' i nt r oduzca el val or de l as coordenadas' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' x1: ' ) ; READLN ( x1) ; WRI TE ( ' y1: ' ) ; READLN ( y1) ; WRI TE ( ' x2: ' ) ; READLN ( x2) ; WRI TE ( ' y2: ' ) ; READLN ( y2) ; WRI TELN ( ' ' ) ; area: = ( x2 - x1) * (y2 - y1) ; {Se rest an l as coordenadas de X e Y par a sacar l os l ados y l uego se mul t i pl i can} WRI TE ( ' El area del r ect angul o es de: ' ) ; WRI TE ( area: 5: 2) ;
END. PROGRAM EJ ER26; USES CRT; VAR x1, y1, x2, y2: REAL; BEGI N Cl rScr; WRI TE( ' I ntr oduaca WRI TE( ' I ntr oduzca WRI TE( ' I ntr oduzca WRI TE( ' I ntr oduzca END.
coor denada coor denada coor denada coor denada
x1: y1: x2: y2:
' ); ' ); ' ); ' );
READLN( x1) ; READLN( y1) ; READLN( x2) ; READLN( y2) ;
WRI TE( ' Ar ea del r esctangul o: ' ) ; WRI TE( ( x2- x1) *( y2- y1) : 5: 2) ;
☺Un coche se mueve, partiendo del reposo, con una aceleración constante de 8 m/s 2. Escribir un programa en Pascal que calcule: a) La velocidad instantánea al cabo de5 segundos. b) La velocidad media durante los primeros 5 segundos del recorrido. velocidad instantánea = velocidad inicial + aceleración * tiempo velocidad media = (velocidad inicial + velocidad final)/2 PROGRAM EJ ER27; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
BEGI N
emai l : vi ct or ss18@hot mai l . com}
VAR vel oci dad0, acel eraci on, t i empo: REAL; VAR vel oci dad5, vel ocmedi a5: REAL; vel oci dad0: =0; acel er aci on: =8; t i empo: =5;
23
Ejercicios de Pascal vel oci dad5: =vel oci dad0 + ( acel er aci on * t i empo); vel ocmedi a5: = ( vel oci dad0 + vel oci dad5) / 2; Cl rScr; WRI TE ( ' LA VELOCI DAD AL CABO DE 5 s ES DE: ' ) ; WRI TE ( vel oci dad5: 2: 0) ; WRI TELN ( ' m/ s' ) ; END. PROGRAM EJ ER27B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
BEGI N
emai l : vi ct or ss18@hot mai l . com}
VAR vel oci dad0, acel er aci on, t i empo, vel oci dadf i nal : REAL; VAR vi nst ant anea, vmedi a: REAL; Cl rScr; WRI TE ( ' ESCRI BA EL VALOR DE LA VELOCI DAD I NI CI AL, LA ACELERACI ON' ) ; WRI TE ( ' Y EL TI EMPO, EN UNI DADES DEL SI STEMA I NTERNACI ONAL, ' ) ; WRI TE ( ' PARA CALCULAR LA VELOCI DAD I NSTANTANEA' ) ; WRI TELN ( ' ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Vel oci dad i ni ci al : ' ) ; READLN ( vel oci dad0) ; WRI TE ( ' Acel er aci on: ' ) ; READLN ( acel er aci on) ; WRI TE ( ' Ti empo: ' ) ; READLN ( t i empo) ; WRI TELN ( ' ' ) ; vi nst ant anea: =vel oci dad0 + ( acel eraci on * t i empo); I F vi nstant anea > 0 THEN WRI TE ( ' LA VELOCI DAD I NSTANTANEA ES DE: ' , vi nst ant anea: 5: 2, ' m/ s' ) ELSE WRI TE ( ' EL COCHE ESTA PARADO. ' ) ; WRI TELN ( ' ' ) ;
I F vi nstant anea < 0 THEN WRI TE ( ' NO SE PUEDE HALLAR AL ESTAR PARADO' ) ; I F vi nstant anea > 0 THEN WRI TE (' Si desea saber l a vel oci dad medi a i nt r oduzca l a vel oci dad f i nal : ' ) ; READLN ( vel oci dadf i nal ) ; WRI TE (' ' ); WRI TELN ( ' ' ) ;
END.
vmedi a: = ( vel oci dad0 + vel oci dadf i nal ) / 2; WRI TE ( ' LA VELOCI DAD MEDI A ES DE: ' , vmedi a: 5: 2) ; WRI TELN ( ' m/ s' ) ;
PROGRAM EJ E27; USES CRT; VAR v, a, t : REAL; BEGI N Cl rScr;
END.
WRI TE( ' Vel oci dad i ni ci al ( m/ s) - > ' ) ; WRI TE( ' Acel eraci on ( m/ s2) - - - - - - > ' ) ; WRI TE( ' Ti empo (s) - - - - - - - - - - - - - - > ' ) ;
READLN( v) ; READLN( a) ; READLN(t ) ;
WRI TE( ' Vel oci dad i nst ant anea: ' ) ; WRI TE( ' Vel oci dad medi a: ' ) ;
WRI TELN( v+a*t: 5: 2) ; WRI TELN( ( v+( v+a*t) ) / 2: 5: 2) ;
☺Un cohete se lanza verticalmente con una velocidad de 500 m7s calcular la velocidad al cabo de 40 segundos mediante un programa en Pascal velocidad instantánea = (velocidad inicial) – (aceleración de la gravedad * tiempo) PROGRAM EJ ER28; {Aut or : Vi ct or Sanchez Sanchez
emai l : vi ct or ss18@hot mai l . com}
24
Ejercicios de Pascal USES CRT;
BEGI N
CONST gr avedad = 9. 81; VAR vel oci dad0, t i empo, vel oci dadf i nal : REAL; vel oci dad0: =500; t i empo: =40; vel oci dadf i nal : =vel oci dad0 - ( gr avedad * 40) ; Cl rScr; WRI TE ( ' La vel oci dad a l os 40 s es de: ' ) ; WRI TE ( vel oci dadf i nal : 4: 2, ' m/ s' ) ;
END.
PROGRAM EJ ER28B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
BEGI N
emai l : vi ct or ss18@hot mai l . com}
CONST gr avedad = 9. 81; VAR vel oci dad0, t i empo, vel oci dadf i nal : REAL; {Est e pr ogr ama si r ve para cal cul ar l a vel oci dad i nst ant anea de un cohet e} Cl rScr; WRI TE ( ' PARA CALCULAR LA VELOCI DAD DE UN COHETE EN UN I NSTANTE, ' ) ; WRI TELN ( ' I NTRODUZCA LOS DATOS: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' I NTRODUZCA LA VELOCI DAD I NI CI AL: ' ) ; WRI TE ( ' I NTRODUZCA EL TI EMPO: ' ) ; WRI TELN ( ' ' ) ;
READLN ( vel oci dad0) ; READLN ( t i empo) ;
vel oci dadf i nal : =vel oci dad0 - ( gr avedad * t i empo); I F vel oci dadf i nal <= 0 THEN WRI TE ( ' El cohet e ya se ha parado. ' ) ; I F vel oci dadf i nal > 0 THEN WRI TE ( ' La vel oci dad f i nal es de: ' ) ; I F vel oci dadf i nal > 0 THEN WRI TE ( vel oci dadf i nal : 4: 2) ; I F vel oci dadf i nal > 0 THEN WRI TE ( ' m/ s. ' ) ; END. PROGRAM EJ ER28; USES CRT; VAR v, g, t : REAL; BEGI N Cl rScr; g: =9. 8;
END.
WRI TE( ' Vel oci dad i ni ci al ( m/ s) - > ' ) ; WRI TE( ' Ti empo (s) - - - - - - - - - - - - - - > ' ) ;
READLN( v) ; READLN(t ) ;
WRI TE( ' Vel oci dad i nst ant anea: ' ) ;
WRI TELN( v-( g*t ) : 5: 2) ;
☺Escribir un programa en Pascal que detecte si un número introducido desde le teclado es positivo o negativo. PROGRAM EJ ER29; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
25
Ejercicios de Pascal VAR num: I NTEGER; BEGI N Cl rScr; WRI TE ( ' I nt r oduzca un numer o ent er o: ' ) ;
READLN ( num) ;
I F num > 0 THEN WRI TE ( ' El numer o es posi t i vo' ) ELSE I F num < 0 THEN WRI TE ( ' El numero es negat i vo' ) ELSE WRI TE ( ' El numer o no es posi t i vo ni negati vo, es 0' ) ; END.
☺Escribir un programa en Pascal que detecte si se han introducido en orden creciente tres números introducidos por el usuario. PROGRAM EJ ER30; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR num1, num2, num3: I NTEGER; BEGI N Cl rScr; WRI TE ( ' I nt r oduzca un numer o ( 1) : ' ) ; WRI TE ( ' I nt r oduzca un numer o ( 2) : ' ) ; WRI TE ( ' I nt r oduzca un numer o ( 3) : ' ) ;
emai l : vi ct or ss18@hot mai l . com}
READLN ( num1); READLN ( num2); READLN ( num3);
I F ( ( num1 < num2) AND ( num2 < num3) ) THEN WRI TE ( ' Los numeros se han i nt r oduci do en orden cr eci ent e' ) ELSE WRI TE ( ' Los numeros no se han i ntr oduci do en orden cr eci ent e' ) ;
END.
PROGRAM EJ ER30; USES CRT; VAR num1, num2, num3: I NTEGER; BEGI N Cl rScr; WRI TE( ' I nt r oduzca un numer o ( 1) : ' ) ; WRI TE( ' I nt r oduzca un numer o ( 2) : ' ) ; WRI TE( ' I nt r oduzca un numer o ( 3) : ' ) ;
END.
READLN( num1) ; READLN( num2) ; READLN( num3) ;
I F ( ( num1 < num2) AND ( num2 < num3) ) THEN WRI TE( ' Los numeros s e han i nt r oduci do en orden cr eci ent e' ) ELSE WRI TE( ' Los numeros no se han i nt r oduci do en or den cr eci ent e' ) ;
☺Escribir un programa en Pascal que detecte el carácter introducido por el usuario. PROGRAM EJ ER31; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR car act er : CHAR;
emai l : vi ct or ss18@hot mai l . com}
BEGI N Cl rScr; WRI TE ( ' I nt r oduzca un car act er al f anumer i co: ' ) ; READLN ( caract er ) ; WRI TE (' El caract er i ntr oduci do es - - - - - > ' + caract er) END.
26
Ejercicios de Pascal
PROGRAM EJ ER31; USES CRT; VAR pat o_donal d: CHAR; BEGI N Cl rScr;
END.
WRI TE( ' I nt r oduzca un caracter al f anumeri co: ' ) ; READLN( pato_donal d) ; WRI TE( ' El caracter i nt roduci do es - - - - > ' + pat o_donal d)
☺Escribir un programa en Pascal que muestre un mensaje afirmativo si el numero introducido es múltiplo de 5. PROGRAM EJ ER32; {Aut or : Vi ct or Sanchez Sanchez USES CRT; Begi n
End.
emai l : vi ct or ss18@hot mai l . com}
var num: I nt eger; Cl rScr; WRI TE( ' I ntr oduzca un numero : ' ) ; READLN( num) ; I F num mod 5 = 0 THEN WRI TE( ' El numero i nt r oduci do es múl t i pl o de 5' ) ELSE WRI TE( ' El numero i nt r oduci do no es múl t i pl o de 5' ) ;
☺Escribir un programa en Pascal que lea un numero y lo devuelva multiplicado por 5 y dividido por 7. PROGRAM EJ ER34; {Aut or : Vi ct or Sanchez Sanchez USES CRT; Begi n
emai l : vi ct or ss18@hot mai l . com}
var num, sol uc: Real ; Cl rScr; WRI TE( ' I ntr oduzca un numero: ' ) ; READLN( num) ; WRI TELN; {mul t i pl i camos y di vi di mos el numer o obt eni do} sol uc := (num * 5) / 7;
End.
WRI TE(' ( ' , num: 5: 2, ' * 5) / 7) = ' , sol uc:5:2); {Poni endo " : 5: 2" l e deci mos el f ormat o de sal i da del numero, 5 posi ci ones y 2 deci mal es - Pr ueba a cambi ar l o como mas t e gust e}
☺Escribir un programa en Pascal que determine si un número leído desde el teclado es par o impar. PROGRAM EJ ER34; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR num: I NTEGER; BEGI N
Cl rScr; WRI TE ( I nt r oduzca un numer o ent er o: ' ) ;
READLN ( num) ;
I F num = 0 THEN WRI TE ( ' El numero i nt r oduci do no es par ni i mpar , es 0' ) ELSE I F ( ( num mod 2 = 0)) THEN WRI TE ( ' El numero i nt r oduci do es par' ) ELSE
27
Ejercicios de Pascal WRI TE ( ' El numero i nt r oduci do es i mpar' ) END. PROGRAM EJ ER34; USES CRT; VAR num: I NTEGER; BEGI N Cl rScr; WRI TE( ' I ntr oduzca un numero: ' ) ; READLN( num) ;
END.
I F ( num mod 2 = 0) THEN WRI TE( ' NUMERO PAR' ) ELSE WRI TE( ' NUMERO I MPAR' ) ;
☺Escribir un programa en Pascal que detecte si un número leído desde el teclado es mayor o menor que 100. PROGRAM EJ ER35; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR num: I NTEGER; BEGI N
Cl rScr; WRI TE ( ' Escr i ba un numero ent er o: ' ) ; WRI TELN ( ' ' ) ;
READLN ( num) ;
I F num < 100 THEN WRI TE ( ' El numer o que ha escr i t o es menor de 100' ) ELSE I F num > 100 THEN WRI TE (' El numero que ha escr i t o es mayor de 100' ) ELSE WRI TE ( ' El numero es 100' ) END. PROGRAM EJ ER35; USES CRT; VAR num: REAL; BEGI N Cl rScr; WRI TE( ' I nt r oduzca un numer o : ' ) ;
END.
READLN( num) ;
I F ( num <= 100) THEN WRI TE( ' NUMERO MENOR O I GUAL A 100 ' ) ELSE WRI TE( ' NUMERO MAYOR DE 100' )
☺Escribir un programa en Pascal que dado un número del 1 a 7 escriba el correspondiente nombre del día de la semana. PROGRAM EJ ER36; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR num: I NTEGER; BEGI N
28
Ejercicios de Pascal
Cl rScr; WRI TE (' Escri ba un numero par a ver con que di a corr esponde: ' ) ; READLN ( num) ; I F num=1 THEN WRI TE ( ' Lunes' ) ; I F num=2 THEN WRI TE ( ' Mar t es' ) ; I F num=3 THEN WRI TE ( ' Mi er col es' ) ; I F num=4 THEN WRI TE ( ' J ueves' ) ; I F num=5 THEN WRI TE ( ' Vi er nes' ) ; I F num=6 THEN WRI TE ( ' Sabado' ) ; I F num=7 THEN WRI TE ( ' Domi ngo' ) ; END. PROGRAM EJ ER36; USES CRT; VAR num_di a_sem: I NTEGER; BEGI N Cl rScr; WRI TE( ' Di a de l a semana ( numer o) - > ' ) ;
END.
READLN( num_di a_sem) ;
CASE num_di a_sem OF 1: WRI TELN( ' Lunes' ) ; 2: WRI TELN( ' Mart es' ) ; 3: WRI TELN( ' Mi er col es' ) ; 4: WRI TELN( ' J ueves' ) ; 5: WRI TELN( ' Vi ernes' ) ; 6: WRI TELN( ' Sabado' ) ; 7: WRI TELN( ' Domi ngo' ) ; ELSE WRI TELN( ' No es un di a de l a semana' ) ; END;
☺Escribir un programa en Pascal que lea dos números desde el teclado y si el primero es mayor que el segundo intercambie sus valores. PROGRAM EJ ER37; {Aut or : Vi ct or Sanchez Sanchez USES CRT; BEGI N
emai l : vi ct or ss18@hot mai l . com}
VAR num1, num2: I NTEGER; Cl rScr; WRI TELN ( ' Escri ba dos numeros: ' ) ; READLN ( num1) ; WRI TE ( ' ' ) ; READLN ( num2) ; WRI TELN ( ' ' ) ; I F num1 > num2 THEN BEGI N WRI TE( num2, ' ' , num1, ' . El pr i mer numero i nt r oduci do es mayor. ' ) ; WRI TE( ' Se cambi a el orden. ' ) ; END
END.
ELSE BEGI N WRI TE( num1, ' ' , num2, ' . El segundo numero i nt r oduci do es mayor. ' ) ; WRI TE( ' No se cambi a el orden. ' ) ; END;
PROGRAM EJ ER37;
29
Ejercicios de Pascal USES CRT; VAR num1, num2, t emp: I NTEGER;
BEGI N Cl rScr;
WRI TE( ' Numer o 1: ' ) ; WRI TE( ' Numer o 2: ' ) ;
END.
READLN( num1) ; READLN( num2) ;
I F ( num1 > num2) THEN BEGI N t emp: =num1; num1: =num2; num2: =t emp; WRI TELN( ' Numer o i nter cambi ados' ) ; WRI TE( ' Numer o 1: ' ) ; WRI TELN( num1) ; WRI TE( ' Numer o 2: ' ) ; WRI TELN( num2) ; END ELSE BEGI N WRI TELN( ' Numeros si n i nt ercambi ar' ) ; WRI TE( ' Numer o 1: ' ) ; WRI TELN( num1) ; WRI TE( ' Numer o 2: ' ) ; WRI TELN( num2) ; END;
☺Escribir un programa en Pascal que dada una calificación en valor alfabético (A,B,C,D ó E) indique su equivalente en valor numérico (4,5,6,7 u 8). PROGRAM EJ ER38; {Aut or : Vi ct or Sanchez Sanchez USES CRT; BEGI N
emai l : vi ct or ss18@hot mai l . com}
VAR val or : CHAR; Cl rScr; WRI TE ( ' Escri ba una cal i f i caci on ent r e a y e: ' ) ; READLN ( val or) ; WRI TELN ( ' ' ) ;
END.
CASE UPCASE( val or ) OF ' A' : WRI TE ( ' El val or corr espondi ent e es: ' B' : WRI TE (' El val or cor respondi ent e es: ' C' : WRI TE ( ' El val or corr espondi ent e es: ' D' : WRI TE ( ' El val or corr espondi ent e es: ' E' : WRI TE ( ' El val or corr espondi ent e es: ELSE WRI TE ( ' La cal i f i caci on no exi ste' ) ; END;
4' ) ; 5' ) ; 6' ) ; 7' ) ; 8' )
PROGRAM EJ ER38; USES CRT; VAR cal : CHAR; BEGI N Cl rScr; WRI TE( ' I nt roduzca una cal i f i caci on ( A- E) : ' ) ; READLN( cal ) ;
END.
CASE cal OF ' A' : Wri t eLn(' Cal i f i caci on numeri ca ' B' : Wri t eLn(' Cal i f i caci on numeri ca ' C' : Wri t eLn(' Cal i f i caci on numeri ca ' D' : Wri t eLn(' Cal i f i caci on numeri ca ' E' : Wri t eLn(' Cal i f i caci on numeri ca ELSE Wri teLn( ' Cal i f i caci on i ncorr ecta' ) ; END;
--> --> --> --> -->
4' ); 5' ); 6' ); 7' ); 8' );
30
Ejercicios de Pascal
☺Escribir un programa en Pascal que lea desde teclado el importe bruto de una factura y determine el importe neto según los siguientes criterios. · Importe bruto menor de 20.000 -> · Importe bruto mayor de 20.000 ->
sin descuento 15% de descuento
PROGRAM EJ ER39; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR i mpor t e_brut o: REAL; VAR descuent o, t ot al : REAL; BEGI N
Cl rScr; WRI TE ( ' I ndi que el i mport e de su f actura para ver ' ) ; WRI TELN ( ' si l e "descont amos" al go' ) ; WRI TELN ( ' ' ) ; READLN ( i mpor t e_brut o) ; WRI TELN ( ' ' ) ; {cal cul a el i mpor t e br uto con descuent o del 15%} descuent o: =i mpor t e_br uto * 0. 15; I F i mpor t e_brut o > 20000 THEN BEGI N WRI TELN ( ' SE MERECE UN DESCUENTO DE: ' , descuent o: 5: 2, ' PTS' ) ; t otal : =i mport e_br ut o - descuent o; WRI TELN ( ' El t ot al es de l a f actura es de: ' , t ot al : 5: 2, ' pt s' ) END ELSE
WRI TE ( ' CON ESE DI NERO NO SE MERECE UN DESCUENTO' )
END. PROGRAM EJ ER39; USES CRT; VAR i mp_br u, i mp_net : REAL; BEGI N Cl rScr; WRI TE( ' I mport e Br ut o - > ' ) ;
READLN( i mp_bru);
I F i mp_br u <= 20000 THEN i mp_net : =i mp_br u ELSE i mp_net: =i mp_bru- ( 0. 15*i mp_bru) ; END.
WRI TE( ' I mport e a pagar: ' ) ;
WRI TE( i mp_net: 5: 2)
☺Escribir un programa en Pascal que una vez leída una hora en formato (horas, minutos, segundos) indique cual será el tiempo dentro de un segundo. PROGRAM EJ ER40; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; {Las vari abl es son: horas, mi nut os y segundos} {Son l as horas, mi nut os y segundos i nt r oduci dos por el usuar i o} VAR h, m, s: I NTEGER; VAR h2, m2, s2: I NTEGER; {Son l as hor as, mi nut os y seguntos a l os que se l es sumar a} BEGI N Cl rScr; WRI TE ( ' Escri ba en f ormat o horas, mi nutos y segundos' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Horas ' ) ; READLN ( h);
31
Ejercicios de Pascal WRI TE ( ' Mi nut os ' ) ; READLN ( m) ; WRI TE ( ' Segundos ' ) ; READLN ( s) ; WRI TELN ( ' ' ) ; WRI TELN ( ' Se l e sumara un segundo a l a hora act ual . ' ) ; WRI TELN ( ' ' ) ; s: = s + 1; I F s = 60 THEN s2 : = 0 ELSE s 2 : = s; m: = (( m * 60) + s) di v 60; I F m = 60 THEN m2 : = 0 ELSE m2 : = m; h2: =( ( h * 60) + m) di v 60; I F h2 = 24 THEN h2 : = 0; END.
WRI TELN ( h2, ' : ' , m2, ' : ' , s2) ;
PROGRAM EJ ER40; USES CRT; VAR h1, m1, s1: I NTEGER; VAR h2, m2, s2: I NTEGER; BEGI N Cl r s c r ; WRI TE( ' Horas - - - - - - > ' ) ; WRI TE( ' Mi nut os - - - - > ' ) ; WRI TE( ' Segundos - - - > ' ) ;
READLN( h1) ; READLN( m1) ; READLN( s1) ;
s2: =s1+1; I F s 2=60 THEN BEGI N s2: =0; m2: =m1+1; END; I F m2=60 THEN BEGI N m2: =0; h2: =h1+1; END; I F h2=24 THEN BEGI N s2: =0; m2: =0; h2: =0; END; WRI TE( h1) ; WRI TE( ' hh ' ) ; WRI TE( m1) ; WRI TE( ' mm ' ) ; WRI TE( s1) ; WRI TE( ' ss ' ) ; WRI TE( ' + 1 segundo son: ' ) ;
END.
WRI TE( h2) ; WRI TE( ' hh ' ) ; WRI TE( m2) ; WRI TE( ' mm ' ) ; WRI TE( s2) ; WRI TE( ' ss ' ) ;
☺Escribir un programa en Pascal que calcule el salario semanal de un trabajador en base a las horas trabajadas y el pago por hora trabajada. 32
Ejercicios de Pascal
· Horas ordinarias (40 primeras horas de trabajo) – 2.000 Pts/hora · 1.5 veces precio hora ordinaria PROGRAM EJ ER41; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR ht r ab, pt sh: REAL; {Horas t r abaj adas y pt s hora} VAR nhext r a, hext r a: REAL; {Numero de hor as ext r a y hor as ext r a} VAR sal ar i o_semanal : REAL;
BEGI N Cl rScr;
WRI TE ( ' I nt r oduzca l as horas t r abaj adas y l as pt s/ hora que se cobr an ' ) ; WRI TELN ( ' para cal cul ar el sal ar i o semanal . ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Horas t r abaj adas: ' ) ; WRI TE ( ' Pts/ hora: ' ) ; WRI TE ( ' Horas extr a: ' ) ; WRI TELN ( ' ' ) ;
READLN ( ht r ab) ; READLN ( pt sh) ; READLN ( nhextr a);
hextr a: =nhextr a * ( pt sh * 1. 5) ; Sal ari o_semanal : = ( ht r ab) * ( pt sh) + hext ra; END.
WRI TE (' El sal ari o semanal son ' , sal ar i o_semanal : 5: 0, ' pt s. ' ) ;
PROGRAM EJ ER41; USES CRT; VAR pr e_hor , hor_t r a, hor_ext, sal _sem: REAL; BEGI N Cl rScr; pre_hor : =2000; WRI TE( ' Horas t r abaj adas ' ) ; READLN( hor_t r a); I F hor _t r a<=40 THEN sal _sem: =hor_ t r a*pr e_hor ELSE BEGI N hor_ext : =hor_t r a- 40; sal _sem: =( 40*pr e_hor ) +( hor_ext*( pr e_hor *1. 5) ) ; END; END.
WRI TE( ' Sal ari o semanal : ' ) ; WRI TELN( sal _sem: 5: 2) ;
☺Escribir un programa en Pascal que realice un bucle con While y muestre en pantalla del 1 al 10. PROGRAM EJ ER42; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR x: I NTEGER; BEGI N x: =0;
emai l : vi ct or ss18@hot mai l . com}
Cl rScr; WHI LE X <= 10 DO BEGI N WRI TELN ( x) ; x: =x+1; END.
END;
PROGRAM EJ ER42; USES CRT;
33
Ejercicios de Pascal VAR x: I NTEGER; BEGI N x: =0; Cl rScr;
END.
WHI LE x <= 10 DO BEGI N WRI TELN( x) ; x: =x+1; END;
☺Escribir un programa en Pascal que realice un bucle con Repeat y muestre en pantalla del 1 al 10. PROGRAM EJ ER43; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR x: I NTEGER; BEGI N x: =0;
emai l : vi ct or ss18@hot mai l . com}
Cl rScr;
END.
REPEAT WRI TELN ( x) ; x: =x+1; UNTI L x=10;
PROGRAM EJ ER43; USES CRT; VAR x: I NTEGER; BEGI N x: =0; Cl rScr;
END.
REPEAT WRI TELN( x) ; x:=x + 1; UNTI L x=10;
☺Escribir un programa en Pascal que realice un bucle con For y muestre en pantalla del 1 al 10. PROGRAM EJ ER44; {Aut or : Vi ct or Sanchez Sanchez USES CRT; BEGI N
emai l : vi ct or ss18@hot mai l . com}
VAR x: I NTEGER;
Cl rScr; FOR x: =0 TO 10 DO WRI TELN ( x) ; END. PROGRAM EJ ER44; USES CRT; VAR x: I NTEGER; BEGI N Cl rScr; FOR x: =0 TO 10 DO WRI TELN( x) ;
34
Ejercicios de Pascal END.
☺Escribir un programa en Pascal que visualice en pantalla los números pares entre 1 y 25. PROGRAM EJ ER45; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR num: I NTEGER; BEGI N num: =2; Cl rScr; REPEAT WRI TELN ( num) ; num: = num + 2; UNTI L num= 26; END. PROGRAM EJ ER45; USES CRT; VAR sem: I NTEGER; BEGI N Cl rScr; sem: =1;
END.
WHI LE s em <= 25 DO BEGI N I F s em mod 2=0 THEN WRI TELN( sem) ; sem: =sem + 1; END;
☺Escribir un programa en Pascal que visualice en pantalla los números múltiplos de 5 comprendidos entre 1 y 100. PROGRAM EJ ER46; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR num: I NTEGER; BEGI N num: = 5; Cl rScr;
END.
WHI LE num <= 100 DO BEGI N WRI TELN ( num) ; num: = num + 5; END;
PROGRAM EJ ER46; USES CRT; VAR sem: I NTEGER; BEGI N Cl rScr; FOR sem: = 1 TO 100 DO
35
Ejercicios de Pascal
END.
BEGI N END;
I F s em mod 5=0 THEN WRI TELN( sem) ;
☺Escribir un programa en Pascal que sume los números comprendidos entre 1 y 10. PROGRAM EJ ER47; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR num, x: I NTEGER; BEGI N Cl rScr; num: =1; x: =1;
END.
WHI LE num <= 10 DO BEGI N WRI TELN ( x) ; num: = num + 1; x: = x + num; END;
☺Escribir un programa en Pascal que genere la tabla de multiplicar de un número introducido por el teclado. PROGRAM EJ ER48; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR t abl a, x, num: I NTEGER; BEGI N Cl rScr; WRI TE ( ' I nt r oduzca un numer o para hacer su tabl a de mul t i pl i car: ' ) ; READLN ( num) ;
END.
WRI TELN ( ' ' ) ;
REPEAT WRI TELN ( t abl a) ; x: = x + 1; tabl a: = num * x; UNTI L x=11;
PROGRAM EJ ER48; USES CRT; VAR num, sem: I NTEGER; BEGI N Cl rScr; WRI TE( ' I nt r oduzca un numer o ent er o: ' ) ;
END.
READLN( num) ;
FOR sem: =1 TO 10 DO BEGI N WRI TE( num) ; WRI TE( ' * ' ) ; WRI TE( sem) ; WRI TE( ' = ' ) ; WRI TELN( num*sem) ; END;
☺Escribir un programa en Pascal que realice la pregunta ¿Desea continuar S/N? y que no deje de hacerla hasta que el usuario teclee N.
36
Ejercicios de Pascal
PROGRAM EJ ER49; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR r espuest a: CHAR; BEGI N Cl rScr; REPEAT WRI TELN ( ' DESEA CONTI NUAR: S/ N ' ) ; READLN ( r espuest a) ; UNTI L r espuest a=' N' ; END. PROGRAM EJ ER49B; {Autor : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR r espuest a: STRI NG; BEGI N Cl rScr; REPEAT WRI TELN ( ' DESEA CONTI NUAR: SI / NO ' ) ; READLN ( r espuest a) ; UNTI L r espuest a=' NO' ; END. PROGRAM EJ ER49; USES CRT; VAR resp: CHAR; BEGI N Cl rScr; r esp: =' S' ;
END.
WHI LE UPCASE( r esp) =' S' DO BEGI N WRI TE( ' Desea cont i nuar ? ' ) ; READLN( r esp) ; END;
☺Escribir un programa en Pascal que calcule cuantos años tarda en duplicarse un capital depositado al 5% de interés anual PROGRAM EJ ER50; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR t i empo: REAL; VAR cap_i ni , cap_f i n: REAL; CONST i nt eres = 0. 05;
BEGI N Cl rScr;
WRI TE ( ' I nt r uduzca el capi t al par a cal cul ar cuant o t ar dar a ' ) ; WRI TE ( ' en dupl i carse, con un i nt er es del 5%: ' ) ; READLN ( cap_i ni ) ; WRI TELN ( ' ' ) ; I F cap_i ni < 0 THEN BEGI N WRI TE ( ' No se puede i ncl ui r un capi t al negati vo' ) ; EXI T; END;
37
Ejercicios de Pascal
t i empo: po: =0; c ap ap_ f i n: = c ap ap_ i ni ; REPEAT
cap cap_f i n: =cap cap_f i n + ( cap cap_f i n * i nt er es); t i empo:= t i empo + 1; UNTI L cap cap_f i n > ( cap cap_i ni * 2) 2) ;
END END.
WRI TELN TELN ( ' Tarda ardar a' , t i empo:3: 0, ' a¤o a¤os en du dupl i car car se' se' ) ; WRI TELN ( ' Capi tal f i nal : ' , cap cap_f i n: 5: 2, ' pts' ) ;
PRO PROGRAM EJ ER50; ER50; USES CRT; CRT; VAR cap_i cap_i ni , cap_f cap_f i n: REAL; VAR VAR num_ year : I NTEGER TEGER;; const I NTERES TERES= =0. 05; 05; BEGI BEGI N Cl rScr; rScr; num_ year : =0; WRI TE( ' Capi t al i ni ci al - - - - - : ' );
READLN(ca LN(cap p_i ni );
cap cap_f i n: =cap cap_i ni ; WHI LE cap_f cap_f i n < ( cap_i cap_i ni *2) DO DO BEGI N cap cap_f i n: =cap cap_f i n+( cap cap_f i n*i nt er es) ; num_ year : =num_year _y ear + 1; END END;
END END.
WRI TE( ' Capi t al i ni ci al - - - - - : ' ); WRI TE( ' Capi t al f i nal - - - - - - - : ' ); WRI TE( TE( ' Capi api t al dupl i cado cado en ' ) ;
WRI TELN(ca LN(cap p_i ni : 5: 2); WRI TELN(ca LN(cap p_f i n: 5: 2); WRI TE( TE( num_year) _year) ; WRI TE( TE( ' a¤os' a¤os' ) ;
☺Escribir un programa que calcule la suma de los números hasta un número dado (introducido por el usuario). PRO PROGRAM EJ ER51 ER51;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT;
emai l : vi ct or ss18@hot hot mai l . com}
VAR x, y, num num: I NTEGER; ER; BEGI BEGI N Cl rScr; rScr; WRI TE ( ' Est e pr pr ogr ogr ama cal cul a l a sum suma de de l os num numer os hast hast a uno uno ' ) ; WRI TE (' i nt r oduci do po por el usua suari o: ' ) ; READ EADLN ( num num) ; x: =0;
END END.
WRI TELN TELN ( ' ' ) ;
WHI LE num >= 0 DO DO BEGI N WRI TELN TELN ( x) ; x: = x + num; num num: =num num - 1; END END;
PRO PROGRAM EJ ER51; ER51; USES CRT; CRT; VAR i , num num: I NTEGER; ER; VAR VAR s uma: LONGI NT; BEGI BEGI N Cl rScr; rScr; WRI TE( TE( ' I nt r oduzca oduzca un num numer o - > ' ) ; READ EADLN( LN( num num) ; FOR FOR i : =0 TO num DO suma: =suma+ i ; WRI TE( TE( ' Suma ' ) ; WRI TE( TE( ' 0- ' ) ; WRI TE( TE( num num) ; WRI TE( TE( ' - - - - >' ) ; WRI TE( TE( suma) ;
38
Ejercicios de Pascal END END.
☺Escribir un programa que pida un número y si el que se introduce por el teclado es menor de 100 que vuelva a solicitarlo. PRO PROGRAM EJ ER52 ER52;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT;
emai l : vi ct or ss18@hot hot mai l . com}
VAR VAR num: I NTEGER; TEGER; BEGI BEGI N {Est {Est e pr pr ogr ama no no f i nal i za hast a que que se escr i be un num numer o mayor a 100} 100} Cl rScr; rScr;
END END.
REPEAT WRI TELN TELN ( ' I nt r odu oduzca un un nu numero: ' ) ; READ READLN ( num) ; UNTI L nu num > 100; 00;
PRO PROGRAM EJ ER52; ER52; USES CRT; CRT; VAR VAR num: I NTEGER; TEGER; BEGI BEGI N Cl rScr; rScr; WRI TE( TE( ' I nt r oduzca oduzca un num numer o - > ' ) ; READ EADLN( LN( num num) ;
END END.
WHI L E num num<=100 100 DO BEGI N WRI TE( TE( ' I nt r oduzca oduzca un num numer o - > ' ) ; READ EADLN( LN( num num) ; END END;
☺Escribir un programa en Pascal que calcule el factorial de un número. PRO PROGRAM EJ ER53 ER53;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT;
emai l : vi ct or ss18@hot hot mai l . com}
VAR f actor i al , x, num, y: REAL; BEGI BEGI N {Est {Est e pr pr ogr ogr ama hace hace el el f act or i al de un num numer o} Cl rScr; rScr; WRI TE ( ' I nt r odu oduzca un un numer o para para hace hacerr su f actor i al : ' ) ; READ EADLN ( num num) ;
WRI TELN TELN ( ' ' ) ;
x: =1;
END END.
WHI LE num > 1 DO DO BEGI N x: =x * num; num num: =num num - 1; WRI TELN TELN ( x) ; END END;
PRO PROGRAM EJ ER53; ER53; USES CRT; CRT; VAR VAR t emp, num, f ac: LON LONGI NT; BEGI BEGI N Cl rScr; rScr;
39
Ejercicios de Pascal
f ac: =1; t emp: =num; WRI TE( TE( ' I nt r oduzca oduzca un num numer o - > ' ) ; READ EADLN( LN( num num) ; t emp: =num; WHI L E num num>=1 DO BEGI N f ac: =f ac*num ac*num; num: =num- 1; END END;
END END.
WRI TE( TE( ' El f act act or i al de ' ) ; WRI TE( t emp) ; WRI TE( TE( ' es ' ) ; WRI TE( f ac) ;
☺Escribir un programa en Pascal que calcule la media de 5 números introducidos por el teclado. PRO PROGRAM EJ ER54 ER54;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT; VAR n1, n1, n2, n2, n3, n3, n4, n4, n5: n5: REAL; EAL; VAR r esul esul t ado: ado: REAL; EAL; BEGI BEGI N Cl rScr; rScr;
emai l : vi ct or ss18@hot hot mai l . com}
WRI TELN TELN ( ' I nt r oduzca oduzca 5 num numer os par par a hacer hacer s u medi edi a' ) ; WRI TELN TELN ( ' ' ) ; WRI TE ( ' Nø 1: WRI TE ( ' Nø 2: WRI TE ( ' Nø 3: WRI TE ( ' Nø 4: WRI TE ( ' Nø 5: WRI TELN TELN ( ' ' ) ;
' ); ' ); ' ); ' ); ' );
READLN READLN READLN READLN READLN
( n1) n1) ; ( n2) n2) ; ( n3) n3) ; ( n4) n4) ; ( n5) n5) ;
r esul sul t ado: = ( n1 + n2 + n3 + n4 + n5) / 2; END END.
WRI TE ( r esul esul t ado: ado: 5: 2) ;
PRO PROGRAM EJ ER54; ER54; USES CRT; CRT; VAR i : I NTEG TEGER; ER; VAR VAR num, s uma: REAL; REAL; BEGI BEGI N Cl rScr; rScr; i : =0; REPEAT WRI TE( TE( ' I ntr oduzca oduzca un num numero: ' ) ; s uma: =s uma+num; i : =i +1; UNTI L i =5; END END.
WRI TE( TE( ' La medi edi a es: ' ) ;
READ EADLN( LN( num num) ;
WRI TELN TELN(( suma/ i : 5: 2) ;
☺Escribir un programa en Pascal que calcule el salario neto semanal de un trabajador en función del número de horas trabajadas y la tasa de impuestos de acuerdo a las siguientes hipótesis. · Las primeras 35 horas se pagan a tarifa normal · Las horas que pasen de 35 se pagan 1.5 veces la tarifa normal · Las tasas de impuestos son: a: Los primeros 50 dólares son libres de impuestos 40
Ejercicios de Pascal b: Los siguientes 40 dólares tienen un 25% de impuestos c: Los restantes de 45% de impuestos PROGRAM EJ ER55; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR sns: REAL; {sal ar i o net o semanal } VAR h_t r abaj adas, h_ext r a: REAL; VAR pr eci o_h, pr eci o_h_extr a: REAL; VAR t ot al : REAL; VAR i mpuest os0, i mpuest os25, i mpuest os45: REAL; {I mpuest os con cada % cor r espondi ent e}
BEGI N Cl rScr;
WRI TELN ( ' I NTRODUZCA LOS DATOS PARA CALCULAR EL SALARI O NETO SEMANAL' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Las hor as t r abaj adas semanal es son 35, l as demas debe ' ) ; WRI TELN ( ' consi derarl as como horas extr a. Escr i ba en dol ares. ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Horas t r abaj adas: ' ) ; READLN ( h_t r abaj adas); WRI TE ( ' Horas extr a: ' ) ; READLN ( h_ext r a); WRI TE ( ' Preci o por cada hora: ' ) ; READLN ( pr eci o_h) ; WRI TELN ( ' ' ) ; pr eci o_h_ext r a: =pr eci o_h * 1. 5; sns: =( h_t r abaj adas * pr eci o_h) + ( h_extr a * pr eci o_h_extr a) ; i mpuest os0: =0; i mpuest os25: =sns - ( ( sns - 50) * 0. 25) ; i mpuest os45: =sns - ( ( sns - 90) * 0. 45) ;
END.
I F s ns <= 50 THEN WRI TELN ( ' El sal ari o net o semanal es: ' , sns: 5: 2) ELSE I F sns < 90 THEN WRI TELN ( ' El sal ari o net o semanal es: ' , i mpuest os25: 5: 2) ELSE I F sns > 90 THEN WRI TELN ( ' El sal ari o net o semanal es: ' , i mpuest os45: 5: 2) ;
PROGRAM EJ ER55; USES CRT; VAR hor_t r a, sal _br u, t as_i mp, sal _net : r eal ; CONST t ar _hor =2; CONST t asa_ i mp1=0. 25; CONST t asa_ i mp2=0. 45; BEGI N Cl rScr; WRI TE( ' Numero de horas t r abaj adas: ' ) ;
READLN( hor_ t r a) ;
{Cal cul o del sal ari o br ut o} I F hor _t r a <= 35 THEN sal _br u: =hor_t r a*t ar_hor ELSE sal _br u: =( 35*t ar _hor) +( ( hor _t r a- 35) *( 1. 5*t ar_hor ) ) ; {Cal cul o de i mpuest os} I F sal _br u <= 50 THEN t as_i mp: =0 ELSE I F sal _br u <= 90 THEN t as_i mp: =( sal _bru- 50) *t asa_i mp1 ELSE t as_i mp: =( 40*t asa_i mp1)+( ( sal _bru- 90) *t asa_i mp2) ; {Cal cul o sal ari o net o} sal _net : =sal _br u- t as_i mp;
41
Ejercicios de Pascal
END.
WRI TE( ' Horas t rabaj adas - - - - - - - > ' ) ; WRI TE( ' Sal ari o bruto- - - - - - - - - - - > ' ); WRI TE( ' I mpuestos- - - - - - - - - - - - - - - > ' ); WRI TE( ' Sal ari o neto-- - - - - - - - - - - > ' );
WRI TELN( hor _tr a: 5: 2) ; WRI TELN(sal _bru:5: 2); WRI TELN(t as_i mp: 5: 2); WRI TELN(sal _net: 5: 2);
☺Escribir un programa en Pascal que detecte si un número es primo o no. Un número es primo si sólo es divisible por sí mismo y por la unidad. Ejemplo: 2,3,4,7,11,17,19 son números primos 9 no es número primo, es divisible por 1, 9, 3 El algoritmo para resolver este problema pasa por dividir sucesivamente el número estudiado por 2,3,4, etc., hasta el propio número. Pr ogr am pri mo ( I NPUT, OUTPUT) ; Uses Cr t ; Var
num: Wor d; {Los numer os pr i mos s on ent er os mayor es que 1 si n di vi sor es ent er os posi t i vos, except uando el 1 y el l os mi smos. Todos l os pr i mos son i mpar es, excepto el 2. Sol o es necesari o compr obar l a di vi si bi l i dad por numer os super i or es a l a r ai z cuadr ada del numer o. } r ai znum: I nteger; {Guardamos el val or de l a r ai z del numero} noespr i mo: Bool ean; {Var i abl e par a deci r que un numero no es pr i mo} par : Bool ean; {Nos si r ve par a mar car l os numer os que son par es} i : Byt e; {Vari abl e que usamos dent r o del bucl e}
Begi n {p. p} Cl rScr; Repeat Wr i t e( ' I nt r oduzca un numero ent er o para ver si es pri mo: ' ) ; Read( num) ; Wri t el n; Unti l num > 1; {Pedi mos un numero y no l o acept amos hast a que sea > 1} par : = num mod 2 = 0; {par va a ser Tr ue cuando el numero s ea par } I f num = 2 Then Wr i t e( ' El 2 es pr i mo, es el uni co numero par que l o es. ' ) El se i f par Then Wr i t e(' Todo numero par no es pri mo, except o el 2. ' ) El se Begi n rai znum : = round( sqrt ( num) ) ; {Al macenamos l a r ai z del numer o, r edondeada} For i : = rai znum To ( num - 1) Do Begi n I f ( num mod i ) = 0 Then noespr i mo : = t r ue End; {Compr obamos l a di vi si bi l i dad de l os numeros s uperi ores a l a r ai z cuadr ada del numero i ntr oduci do. Si al gun numero di vi de al numero, noespr i mo t oma el val or t r ue. } I f noespri mo Then Wr i t e( num, ' no es un numer o pri mo' ) El se Wr i t e( num, ' es un numer o pri mo' ) ; {Most r amos por pant al l a si el numer o es pr i mo o no} End; End. {p. p}
42
Ejercicios de Pascal PROGRAM EJ ER56; USES CRT; VAR i , num, f l ag: I NTEGER; BEGI N Cl rScr; f l ag: =0; WRI TE( ' I nt r oduzca un numer o - > ' ) ; READLN( num) ; FOR i : =2 TO ( num- 1) DO BEGI N I F ( num mod i ) =0 THEN f l ag: =1; END;
END.
I F f l ag=1 THEN BEGI N WRI TE( num) ; END ELSE BEGI N WRI TE( num) ; END;
WRI TE( ' no es un numer o pr i mo' ) ;
WRI TE( ' es un numer o pr i mo' ) ;
☺Escribir un programa en Pascal que calcule la depreciación de un objeto según el método de la línea recta. Calcular el número de años que tarda en hacerse 0. En este método el valor original del objeto se divide por su vida (número de años). El cociente resultante será la cantidad en la que el objeto se deprecia anualmente. Por ejemplo, si un objeto se deprecia 8000 dólares en diez años, entonces la depreciación anual será 8000/10=800 dólares. Por tanto, el valor del objeto habrá disminuido en 800 dólares cada año. Nótese que la depreciación anual es la misma cada año cuando se utiliza este método. PROGRAM EJ ER57; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR annos, val or : REAL; VAR depreci aci onanno: REAL; VAR x: I NTEGER;
BEGI N Cl rScr;
WRI TELN ( ' Escr i ba l os datos para conocer l a depr eci aci on anual ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Val or or i gi nal : ' ) ; WRI TE ( ' Numer o de años: ' ) ; WRI TELN ( ' ' ) ;
READLN ( val or) ; READLN ( annos) ;
depr eci aci onanno: = val or / annos; x: =0;
END.
WHI LE val or > 0. 1 DO BEGI N val or: =val or - depr eci aci onanno; x: = x + 1; WRI TELN (' AÑO ' , x: 2, ' : ' , val or: 8: 0, ' pts. ' ) ; END;
PROGRAM EJ ER57; USES CRT;
BEGI N
VAR val _i ni , val _dep, t as_dep: REAL; VAR i , ani os: I NTEGER;
43
Ejercicios de Pascal
Cl rScr; WRI TE( ' Val or i ni c i al - - - - - > ' ) ; WRI TE( ' Numero de años - - - - > ' ) ;
READLN( v al _ i ni ) ; READLN( ani os) ;
t as_dep: =val _i ni / ani os; ; val _dep: =val _i ni - t as_dep;
END.
FOR I : =1 TO ani os DO BEGI N WRI TE( ' A¤o ' ) ; WRI TE( i : 3) ; WRI TE( ' - - - - - - ' ) ; WRI TELN( val _dep: 10: 2); val _dep: =val _dep- t as_dep; END;
☺Escribir un programa en Pascal que calcule la depreciación de un objeto según el método del balance doblemente declinante. En este método, el valor del objeto disminuye cada año en un porcentaje constante. Por tanto, la verdadera cantidad depreciada, en dólares, variara de un año al siguiente. Para obtener el factor de depreciación, dividimos por dos la vida del objeto. Este factor se multiplica por el valor del objeto al comienzo de cada año (y no el valor del original del objeto) para obtener la depreciación anual. Supongamos, por ejemplo que deseamos depreciar un objeto de 8000 dólares por diez años; el factor de depreciación será 2/10=0.2. Por tanto, la depreciación el primer año será 0,2 X 8000 = 1600 dólares, la depreciación del segundo año será 0,2 X 6400=1280 dólares; la depreciación del tercer año será 0,2 X 5120 = 1024 dólares, y así sucesivamente. PROGRAM EJ ER58; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; VAR f dd: REAL; {Fact or de depr eci aci on} VAR vi daobj : REAL; {Vi da del obj eto = años} VAR depreci aci onanno: REAL; VAR val orobj : REAL; {Val or del obj eto} VAR x: I NTEGER; BEGI N Cl rScr; WRI TE ( ' PARA CALCULAR LA DEPRECI ACI ON POR EL METODO DEL BALANCE ' ) ; WRI TELN ( ' DOBLEMENTE DECLI NANTE ESCRI BA LOS DATOS: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' VALOR DEL OBJ ETO: ' ) ; WRI TE ( ' AÑOS: ' ) ; WRI TELN ( ' ' ) ;
READLN ( val or obj ) ; READLN ( vi daobj ) ;
f dd: = 2 / vi daobj ; x: =1; REPEAT depr eci aci onanno: = f dd * val or obj ; val orobj : =val orobj - depr eci aci onanno; WRI TELN ( ' AÑO ' , x: 2, ' : ' , val orobj : 8: 2, ' pts. ' ); x: = x + 1; UNTI L x > vi daobj ;
END.
WRI TELN ( ' ' ) ; x: = x - 1; WRI TELN ( ' EL VALOR A LOS ' , x, ' AÑOS SERA DE: ' , val orobj : 6: 2, ' pt s. ' ) ;
PROGRAM EJ ER58; USES CRT;
BEGI N
VAR val _i ni , val _dep, coe_dep, t as_dep: REAL; VAR i , ani os: I NTEGER;
44
Ejercicios de Pascal
Cl rScr; WRI TE( ' Val or i ni ci al - - - - - >' ); WRI TE( ' Numero de años - - - - > ' ) ;
READLN(val _i ni ); READLN( ani os) ;
coe_dep: =2/ ani os; t as_dep: =val _i ni *coe_dep; val _dep: =val _i ni - t as_dep;
END.
FOR i : =1 TO ani os DO BEGI N WRI TE( ' A¤o ' ) ; WRI TE( i : 3) ; WRI TE( ' - - - - - - ' ) ; WRI TELN( val _dep: 10: 2); val _dep: =val _dep- ( val _dep*coe_dep) ; END;
☺Escribir un programa que calcule las raíces de la ecuación (ax2 + bx + c = 0) teniendo en cuenta los siguientes casos: a. Si a es igual a 0 y b es igual a 0, imprimiremos un mensaje diciendo que la ecuación es degenerada. b. Si a es igual a 0 y b no es igual a 0, existe una raíz única con valor –c/b. c. En los demás casos, utilizaremos la fórmula siguiente: xi = (-b ± √(b2 – 4ac))/(2a) La expresión d = b 2 – 4ac se denomina discriminante. · Si d es mayor o igual que 0 entonces hay dos raíces reales · Si d es menor que 0 entonces hay dos raíces complejas de la forma: x+yi,x-yi. Siendo x el valor –b/2a e y el valor absoluto de √(b2-4ac)/(2a) PROGRAM EJ ER59; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR a, b , c: REAL; VAR sp, sn: REAL; {Sol uci on posi t i va y negat i va} VAR d: REAL; {Di scr i mi nant e}
BEGI N Cl rScr; WRI TELN ( ' I nt r oduzca l os val ores para cal cul ar l a ecuaci on de 2º grado' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' a: ' ) ; WRI TE ( ' b: ' ) ; WRI TE ( ' c: ' ) ; WRI TELN ( ' ' ) ;
READLN ( a); READLN ( b) ; READLN ( c) ;
I F ( a=0) and ( b=0) THEN WRI TELN ( ' La ecuaci on es degener ada. ' ) ELSE I F ( a=0) and ( b<>0) THEN WRI TELN ( ' Exi ste una rai z con val or - c/ b: ' , - c/ b: 5: 2) ELSE BEGI N sp: =(- b + sqrt (sqr( b) - (4 * a * c)) ) / 2 * a; sn: =( - b - sqrt ( sqr( b) - ( 4 * a * c)) ) / 2 * a; d: =sqr ( b) - ( 4 * a * c);
END.
WRI TE ( ' La sol uci on posi t i va es: ' ) ; WRI TE ( ' La sol uci on negati va es: ' ) ; END;
WRI TELN ( sp: 5: 2) ; WRI TELN ( sn: 5: 2) ;
PROGRAM EJ ER59; USES CRT; VAR a, b, c, d, r 1, r 2, x, y: REAL; BEGI N Cl rScr;
45
Ejercicios de Pascal
WRI TE( ' Coef i ci ent e a - > ' ) ; WRI TE( ' Coef i ci ent e b - > ' ) ; WRI TE( ' Coef i ci ent e c - > ' ) ;
END.
READLN( a) ; READLN( b) ; READLN( c) ;
I F ( a=0) AND ( b=0) THEN BEGI N WRI TE( ' La ecuaci on es degenerada' ) ; EXI T; END ELSE I F ( a=0) AND ( b<>0) THEN BEGI N r 1: =c/ b; WRI TE( ' r 1 = ' ) ; WRI TELN( r 1: 5: 2) ; EXI T; END ELSE BEGI N d: =sqr ( b) - 4*a*c; I F ( d>=0) THEN BEGI N r1: =( - b+sqrt ( sqr( b) - 4*a*c)) / ( 2*a) ; r2:=(- b- sqrt (sqr( b)- 4*a*c) )/ (2*a); WRI TE( ' r 1 = ' ) ; WRI TELN( r 1: 5: 2) ; WRI TE( ' r 2 = ' ) ; WRI TELN( r 2: 5: 2) ; END ELSE BEGI N x: =- b/ ( 2*a) ; y: =- b- sqrt ( abs(sqr ( b) - 4*a*c)) ; WRI TE( ' r1 = ' ) ; WRI TE( x:5:2); WRI TE( ' + ' ) ; WRI TE( y: 5: 2) ; WRI TELN( ' i ' ) ; WRI TE( ' r2 = ' ) ; WRI TE( x:5:2); WRI TE( ' - ' ) ; WRI TE( y: 5: 2) ; WRI TELN( ' i ' ) ; END; END;
☺Escribir un programe en Pascal que resuelva una matriz 3 x 3. PROGRAM DETER3; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR a11, a12, a13, a21, a22, a23, a31, a32, a33: REAL; VAR M: REAL; BEGI N Cl rScr; WRI TELN ( ' I nt r oduzca l os val ores de l a matr i z 3x3' ) ; WRI TELN ( ' ' ) ; WRI TE WRI TE WRI TE WRI TE WRI TE WRI TE WRI TE WRI TE WRI TE
( ' a11: ( ' a12: ( ' a13: ( ' a21: ( ' a22: ( ' a23: ( ' a31: ( ' a32: ( ' a33:
'); '); '); '); '); '); '); '); ');
READLN READLN READLN READLN READLN READLN READLN READLN READLN
( a11); ( a12); ( a13); ( a21); ( a22); ( a23); ( a31); ( a32); ( a33);
WRI TELN ( ' ' ) ; M: =( a11*a22*a33) +( a21*a32*a13) +( a31*a12*a23) - ( a13*a22*a31) - ( a11*a23*a32) - ( a12*a21*a33) ; WRI TE ( ' El r esul t ado es: ' ) ;
WRI TE ( M: 5: 2) ;
END.
☺Escribir un programa en Pascal que sume dos cadenas. (los datos vienen en el cuerpo del ejercicio). 46
Ejercicios de Pascal
PROGRAM EJ ER60; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR t i t _pel 1: STRI NG; VAR t i t _pel 2: STRI NG; VAR t i t _pel 3: STRI NG;
BEGI N t i t _ pel 1: =' Al i en' ; t i t_pel 2: =' Bl ade ' ; t i t _pel 3: =' Runner ' ; Cl rScr;
WRI TELN ( ' TI TULOS DE PELI CULAS' ) ; WRI TELN ( t i t _pel 1) ; WRI TELN ( t i t _pel 2 + t i t _pel 3) ;
END. PROGRAM EJ ER60; USES CRT; VAR t i t _pel 1: STRI NG; VAR t i t _pel 2: STRI NG; VAR t i t _pel 3: STRI NG; BEGI N t i t _ pel 1: =' Al i en' ; t i t_pel 2: =' Bl ade' ; t i t _pel 3: =' Runner ' ; Cl rScr; WRI TELN( ' TI TULOS DE PELI CULAS' ) ;
END.
WRI TELN( t i t _pel 1) ; WRI TELN( t i t _pel 2 + t i t _pel 3) ;
☺A partir de las cadenas de caracteres 70809207 y Q, construir y visualizar en la pantalla la cadena 70809207-Q. PROGRAM EJ ER61; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR numer o: LONGI NT; VAR l etr a: STRI NG;
BEGI N Cl rScr;
numer o: =56789312; l et r a: =' F' ;
END.
WRI TE ( ' EL NUMERO DEL DNI ES: ' ) ; WRI TE ( numer o, ' - ' , + l et ra);
PROGRAM EJ ER61; USES CRT; VAR cad1, cad2: STRI NG; BEGI N cad1: =' 56789312' ; cad2: =' X' ; Cl rScr; END.
WRI TE( ' NI F: ' + cad1 + ' - ' + cad2) ;
47
Ejercicios de Pascal
☺Transformar la cadena Esto es una prueba, en la cadena Esto es prueba. Utilizar la función DELETE(S,P,N) que elimina N caracteres de la cadena S, a partir de la posición P. PROGRAM EJ ER62; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR f r ase: STRI NG; BEGI N Cl rScr; {Tr ansf or ma l a cadena " Est o es una prueba" en "Est o es pr ueba" } WRI TELN ( ' Est e progr ama supr i me un numero det er mi nado de l et r as' ) ; WRI TELN ( ' ' ) ; f r ase: =' Est o es una pr ueba' ; WRI TELN ( f r ase) ;
END.
DELETE ( f r ase, 9, 4) ; WRI TELN ( f r ase) ;
PROGRAM EJ ER62; USES CRT; VAR cad1, cad2: STRI NG; BEGI N cad1: =' Est o es una prueba' ; Cl rScr;
END.
WRI TELN( cad1) ; DELETE( cad1, 9, 4) ; WRI TELN( cad1) ;
☺Transformar la cadena Curso de Pascal en la cadena Curso de Programación en Pascal. Utilizar la función INSERT(SO,SD,P) que inserta la cadena SO en la cadena SD a partir de la posición P. PROGRAM EJ ER63; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR f r ase1: STRI NG; VAR f r ase2: STRI NG;
BEGI N Cl rScr;
{Est e pr ogr ama i nser t a l a f r ase2 en l a f r ase1} WRI TELN ( ' Se i nt r oduci r a l a f r ase2 en l a f r ase1' ) ; WRI TELN ( ' ' ) ; f r ase1: =' Cur so de Pascal ' ; f r ase2: =' Progr amaci on en ' ; WRI TE ( ' Frase1: ' ) ; WRI TE ( ' Frase2: ' ) ; WRI TELN ( ' ' ) ;
WRI TELN ( f r ase1) ; WRI TELN ( f r ase2) ;
i nsert (f rase2, f rase1, 10) ; END.
WRI TELN ( f r ase1) ;
PROGRAM EJ ER63; USES CRT; VAR cad1, cad2: STRI NG; BEGI N
48
Ejercicios de Pascal cad1: =' Cur so de Pascal ' ; cad2: =' Programaci on en ' ; Cl rScr;
END.
WRI TELN( cad1) ; I NSERT( cad2, cad1, 10) ; WRI TELN( cad1) ;
☺Transformar los valores 91 y 8631217 almacenados en dos variables de tipo REAL en la cadena 91-8631217. Previamente transformar los dos valores numéricos a variables tipo cadena con la función STR(X,S) que almacena en S, como una cadena alfanumérica, el valor X. PROGRAM EJ ER64; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR val or1, val or2: REAL; VAR val or_ 1, val or_ 2: STRI NG;
BEGI N Cl rScr;
val or1: =91; val or 2: =5550908; STR( val or 1: 5: 2, val or_1); STR( val or 2: 10: 2, val or _2) ; END.
WRI TELN ( val or_1, ' - ' , + val or_2);
PROGRAM EJ ER64; USES CRT; VAR val 1, val 2: REAL; VAR cad1, cad2: STRI NG; BEGI N val 1: =91; val 2: =5550908; STR( val 1, cad1) ; STR( val 2, cad2) ; Cl rScr; END.
WRI TELN( cad1 + ' - ' + cad2) ;
☺Concatenar las cadenas El, hombre, invisible en una sola el hombre invisible. Utilizar la función CONCAT (S1,S2,S3...) que retorna la concatenación de todas las cadenas pasadas como parámetros. PROGRAM EJ ER65; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR S1, S2, S3: STRI NG; VAR cadena_f i nal : STRI NG;
BEGI N Cl rScr;
S1: =' El ' ; S2: =' hombre' ; S3: =' i nvi s i bl e' ;
49
Ejercicios de Pascal cadena_f i nal : =CONCAT( S1, S2, S3) ; END.
WRI TE ( cadena_f i nal ) ;
PROGRAM EJ ER65; USES CRT; VAR cad1, cad2, cad3, cad4, esp: STRI NG; BEGI N cad1: =' el ' ; cad2: =' hombre' ; cad3: =' i nvi si bl e' ; esp: =' ' ; cad4: =CONCAT( cad1, esp, cad2, esp, cad3) ; Cl rScr;
END.
WRI TELN( cad1) ; WRI TELN( cad2) ; WRI TELN( cad3) ; WRI TELN( cad4) ;
☺Extraer la cadena SOFIA de la cadena FILOSOIA. Utilizar la función COPY(S,P,N), que devuelve una subcadena de S, de N caracteres, el primero de los cuales ocupa la posición P de S. PROGRAM EJ ER66; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR S1, S2: STRI NG; BEGI N Cl rScr; S1: =' FI LOSOFI A' ; S1: =COPY (S1, 5, 5) ; {' SOFI A' } END.
WRI TE ( S1) ;
PROGRAM EJ ER66; USES CRT; VAR cad1, cad2: STRI NG; BEGI N cad1: =' FI LOSOFI A' ; cad2: =COPY(c ad1, 5, 5) ; Cl rScr;
END.
WRI TELN( cad1) ; WRI TELN( cad2) ;
☺Obtener la longitud de la cadena esternocleidomastoideo, utilizando la función LENGTH(S), que devuelve la longitud de la cadena S. PROGRAM EJ ER67; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR cadena: STRI NG; BEGI N Cl rScr; WRI TELN ( ' I ntr oduzca una cadena par a saber su l ongi t ud: ' ) ; WRI TELN ( ' ' ) ;
50
Ejercicios de Pascal
READLN ( cadena) ; WRI TELN ( ' ' ) ; END.
WRI TE ( ' La l ongi t ud de l a cadena es de: ' ) ;
WRI TE ( LENGTH( cadena) , ' caract eres' ) ;
☺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. PROGRAM EJ ER68; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR cadena: STRI NG; VAR subcadena: STRI NG; VAR posi : I NTEGER;
BEGI N Cl rScr;
cadena: =' super cal i f r agi l i sti coexpi al i doso' ; subcadena:=' f r agi ' ; posi : =POS( subcadena, cadena) ; END.
WRI TE ( posi ) ;
PROGRAM EJ ER68; USES CRT; VAR cad1, cad2: STRI NG; VAR posi : I NTEGER; BEGI N cad1: =' supercal i f ragi l i sti coexpi al i doso' ; cad2: =' f ragi ' ; posi : =POS(cad2, cad1) ; Cl rScr; END.
WRI TE( ' Posi ci on: ' ) ;
WRI TELN( posi ) ;
☺Transformar la cadena Lenguaje Pascal en la cadena LENGUAJE PASCAL. Utilizar la función UPCASE(C) que transforma un carácter C a mayúscula. PROGRAM EJ ER69; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR cadena: STRI NG; VAR i : I NTEGER;
BEGI N Cl rScr;
cadena: =' Lenguaj e Pascal ' ; i : =0; FOR i : =1 TO LENGTH( cadena) DO cadena[ i ] : =UPCASE( cadena[ i ] ) ;
END.
WRI TE ( cadena) ; i : = i + 1;
PROGRAM EJ ER69;
51
Ejercicios de Pascal USES CRT; VAR i : I NTEGER; VAR cad1: STRI NG;
BEGI N i : =0; cad1: =' Lenguaj e Pascal ' ; Cl rScr; WRI TELN( cad1) ; WHI LE i <= LENGTH( cad1) DO BEGI N cad1[ i ] : =UPCASE( cad1[ i ] ) ; i : =i +1; END; END.
WRI TELN( cad1) ;
☺Transformar la cadena VACA en la cadena vaca. PROGRAM EJ ER70; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR cadena: STRI NG; VAR i , v_asci i : I NTEGER;
BEGI N Cl rScr;
cadena: =' VACA' ; FOR i : =1 TO LENGTH ( cadena) DO BEGI N v_asci i : =ORD ( cadena[i ] ) ; cadena[i ] : =( CHR( v_asci i +32) ) ; END; END.
WRI TE ( cadena) ;
PROGRAM EJ ER70; USES CRT; VAR i , val _asc: I NTEGER; VAR cad1: STRI NG; BEGI N i : =0; cad1: =' VACA' ; Cl rScr; WRI TELN( cad1) ; WHI LE i <= LENGTH( cad1) DO BEGI N val _asc: =ORD( cad1[ i ] ) ; cad1[ i ] : =( CHR( val _asc+32) ) ; i : =i +1; END; END.
WRI TELN( cad1) ;
☺Escribir un programa en Pascal que lea 4 datos, calcule y visualice en pantalla su producto, suma y media aritmética. PROGRAM EJ ER71; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
52
Ejercicios de Pascal VAR a, b, c, d: REAL; VAR pr oduct o, suma, medi a: REAL;
BEGI N Cl rScr;
WRI TELN( ' I nt r oduzca 4 dat os par a cal cul ar l as sol uci ones: ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' a: ' ) ; READLN ( a); WRI TE ( ' b: ' ) ; READLN ( b) ; WRI TE ( ' c: ' ) ; READLN ( c) ; WRI TE ( ' d: ' ) ; READLN ( d) ; WRI TELN ( ' ' ) ; pr oduct o: = a * b * c * d; suma: = a + b + c + d; medi a: = suma / 2;
END.
WRI TELN ( ' El val or del pr oduct o de l os numer os es: ' , pr oduct o: 10: 2) ; WRI TELN ( ' El val or de l a suma de l os numeros es: ' , suma: 10: 2); WRI TELN ( ' El val or de l a medi a de l os numero ses: ' , medi a: 10: 2) ;
PROGRAM EJ ER71; USES CRT; VAR i : I NTEGER; VAR dat o, product o, suma, medi a: REAL; BEGI N Cl rScr; product o: =1; suma: =0; FOR i : =1 TO 4 DO BEGI N WRI TE( ' Dat o ' ) ; WRI TE( i ) ; READLN( dat o) ; product o: =pr oducto*dat o; suma: =suma+dat o; END;
WRI TE( ' - > ' ) ;
medi a: =suma/ i ;
END.
WRI TE( ' Product o: WRI TE( ' Suma: WRI TE( ' Medi a:
' ) ; WRI TELN( pr oduct o: 5: 2) ; ' ) ; WRI TELN( suma: 5: 2); ' ) ; WRI TELN( medi a: 5: 2) ;
☺Escribir un programa en Pascal que lea un peso en libras y a continuación visualice su equivalente en kilos y en gramos.
1 libra = 0.45 Kg
PROGRAM EJ ER72; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR l i br as, ki l os, gr amos: REAL; BEGI N Cl rScr;
emai l : vi ct or ss18@hot mai l . com}
WRI TE ( ' I nt r oduzca el numer o de l i br as para pasar l o a ki l os y gr amos: ' ) ; READLN ( l i br as); WRI TELN ( ' ' ) ; ki l os : = l i br as * 0. 45; gr amos: = ki l os * 1000; END.
WRI TELN ( ' Son ' , ki l os: 5: 2, ' ki l os y ' , gramos: 5: 2, ' gramos. ' ) ;
PROGRAM EJ ER72; USES CRT; VAR l i br as: REAL; BEGI N Cl rScr;
53
Ejercicios de Pascal
END.
WRI TE( ' Li bras -> WRI TE( ' Ki l ogr amos - > WRI TE( ' Gr amos ->
' ) ; READLN( l i br as); ' ) ; WRI TELN( l i br as*0. 45: 7: 2) ; ' ) ; WRI TELN( ( l i br as*0. 45) / 1000: 7: 4) ;
☺Escribir un programa en Pascal que calcule y escriba el cuadrado de 821. PROGRAM EJ ER73; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR numer o, cuadr ado: REAL; BEGI N Cl rScr; WRI TE (' Escri ba un numero par a hacer su cuadr ado: ' ) ; READLN ( numer o) ; WRI TELN ( ' ' ) ; cuadr ado: = sqr ( numer o); END.
WRI TELN ( ' El cuadr ado es: ' , cuadr ado: 5: 2)
PROGRAM EJ ER73; USES CRT; VAR numer o: LONGI NT; BEGI N Cl rScr; numer o: =821; END.
WRI TE( ' Cuadr ado de 821: ' ) ;
WRI TE( sqr( numero) ) ;
☺Escribir un programa en Pascal que escriba los números comprendidos entre 1 y 100. El programa escribirá en la pantalla los números en grupos de 20, solicitando al usuario si quiere o no continuar visualizando el siguiente grupo de números. PROGRAM EJ ER74; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR num, f l ag, x: I NTEGER; VAR resp: CHAR;
BEGI N Cl rScr; num: =0; x: =1;
END.
FOR num: =1 TO 100 DO BEGI N I F ( num mod 20) = 0 THEN f l ag : = x; WRI TELN ( num) ; I F f l ag = x THEN BEGI N WRI TE( ' DESEA CONTI NUAR: S/ N - - > ' ) ; READLN( r esp) ; I F UPCASE ( r esp) <>' S' THEN BEGI N WRI TE ( ' Est e pr ogr ama ha f i nal i zado' ) ; EXI T END; END; x: = x + 20; END;
PROGRAM EJ ER74; USES CRT; VAR f i l a, i : I NTEGER; VAR resp: CHAR;
54
Ejercicios de Pascal BEGI N f i l a: =1; Cl rScr; FOR i : =1 TO 100 DO BEGI N WRI TELN( i ) ; f i l a: =f i l a+1;
END.
END;
I F f i l a = 21 THEN BEGI N WRI TE( ' Desea cont i nuar ( S/ N) ?' ) ; READLN( r esp) ; I F UPCASE( r esp) =' S' THEN BEGI N Cl rScr; f i l a: =0; CONTI NUE; END ELSE EXI T; END;
☺Escribir un programa en Pascal que calcule, independientemente, la suma y la media de los números pares e impares comprendidos entre 1 y 200. PROGRAM EJ ER75; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR medi a_p, medi a_i : REAL; VAR suma_p, suma_i : LONGI NT; VAR i , t ot al _p, t ot al _i : LONGI NT;
BEGI N Cl rScr;
END.
FOR i : =1 TO 200 DO BEGI N I F ( i mod 2) =0 THEN BEGI N suma_p: =suma_p + i ; t ot al _p: =total _p + 1; END ELSE BEGI N suma_i : =suma_i + i ; t ot al _ i : =t ot al _ i + 1; END; END; medi a_i : = suma_i / total _i ; medi a_p: = suma_p / t otal _p; WRI TELN ( ' La suma de l os i mpares es: WRI TELN ( ' La suma de l os par es es : WRI TELN ( ' La medi a de l os i mpar es es: WRI TELN ( ' La medi a de l os par es es:
' , suma_i ) ; ' , suma_p) ; ' , medi a_i : 5: 2); ' , medi a_p: 5: 2);
PROGRAM EJ ER75; USES CRT; VAR i , conpar , coni mp, sumapar , sumai mp: I NTEGER; BEGI N Cl rScr; sumapar : =0;
sumai mp: =0;
conpar : =0;
coni mp: =0;
FOR i : =1 TO 200 DO BEGI N I F ( i mod 2) = 0 THEN BEGI N sumapar : =sumapar +i ; conpar : =conpar +1; END ELSE BEGI N
55
Ejercicios de Pascal END;
END.
END;
sumai mp: =sumai mp+i ; coni mp: =coni mp+1;
WRI TE( ' Suma par es: WRI TE( ' Medi a par es:
' ); ' );
WRI TELN( sumapar : 7) ; WRI TELN( sumapar di v conpar: 7) ;
WRI TE( ' Suma i mpar es: WRI TE( ' Medi a i mpar es:
' ); ' );
WRI TELN( sumai mp: 7) ; WRI TELN( sumai mp di v coni mp: 7);
☺Escribir un programa en Pascal que calcule el importe de una factura sabiendo que el IVA a aplicar es del 12% y que si el importe bruto de la factura es superior a 50.000 pts se debe realizar un descuento del 5%. PROGRAM EJ ER76; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR i _bruto, i _neto, i mport e: REAL; CONST I VA=0. 12;
BEGI N Cl rScr;
WRI TE ( ' Escri ba el i mpor t e br ut o: ' ) ; WRI TELN ( ' ' ) ;
READLN ( i _br ut o) ;
i _ br ut o : = i _ br ut o + ( I VA * i _ br ut o ) ; I F i _brut o > 50000 THEN BEGI N i _neto: = i _bruto - ( i _bruto * 0. 05); WRI TE ( ' El i mpor t e net o con descuent o del 5% es de: ' , i _net o:5: 2, ' pt s' ) END ELSE
END.
BEGI N i _ net o : = i _ br ut o ; WRI TE ( ' El i mpor t e br ut o si n descuent o es de: ' , i _net o:5: 2, ' pt s. ' ) ; END;
PROGRAM EJ ER76; USES CRT; VAR i mp_br ut o: REAL; BEGI N Cl rScr; WRI TE( ' I mport e br ut o - > ' ) ; READLN( i mp_bruto) ;
END.
I F i mp_br ut o <= 50000 THEN BEGI N WRI TE( ' I mpor t e net o: ' ); WRI TELN( i mp_brut o+( i mp_br ut o*0. 12): 9: 2) ; END ELSE BEGI N WRI TE( ' I mpor t e net o - > ' ) ; i mp_brut o: =i mp_br ut o- ( i mp_br ut o*0. 05); WRI TELN( i mp_brut o+( i mp_br ut o*0. 12): 9: 2) ; END;
☺Escribir un programa en Pascal que calcule la suma de los cuadrados de los 100 primeros números enteros. PROGRAM EJ ER77; {Aut or : Vi ct or Sanchez Sanchez
emai l : vi ct or ss18@hot mai l . com}
56
Ejercicios de Pascal USES CRT; VAR x: I NTEGER; VAR suma: REAL;
BEGI N Cl rScr;
FOR x: =1 TO 100 DO BEGI N suma:= suma + ( sqr ( x)) ; END; END.
WRI TE ( suma) ;
PROGRAM EJ ER77; USES CRT; VAR i : I NTEGER; VAR sumacuad: LONGI NT; BEGI N Cl rScr; FOR i : =1 TO 100 DO sumacuad: =sumacuad+sqr ( i ) ; END.
WRI TE( ' Suma de Cuadrados ( 1- 100) - - - > ' ) ;
WRI TE( sumacuad) ;
☺Escribir un programa en Pascal que visualice una tabla de conversión de kilómetros a millas marinas y millas terrestres: 1 milla marina = 1852 metros 1 milla terrestre = 1609 metros PROGRAM EJ ER78; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR m, m_mar , m_t er r : REAL; {met r os, mi l l as mar i nas y t err est r es} BEGI N Cl rScr; WRI TE ( ' I ntr oduzca el numero de met r os: ' ) ; WRI TELN ( ' ' ) ;
READLN ( m) ;
m_mar : =m/ 1852; m_t er r : =m/ 1609;
END.
WRI TE ( m: 5: 2, ' metr os son: ' , m_mar: 5: 2, ' mi l l as mari nas y ' ) ; WRI TE ( m_t er r: 5: 2, ' mi l l as terr estr es' ) ;
PROGRAM EJ ER78; USES CRT; VAR mi l l a_mar i na: REAL; VAR mi l l a_t er r est r e: REAL; VAR ki l omet r os: I NTEGER; BEGI N Cl rScr; WRI TELN( ' Ki l omet r os' + ' - - - - ' + ' Mi l l as M. ' + ' - - - - ' + ' Mi l l as T. ' ) ;
END.
FOR ki l omet r os: =1 TO 10 DO BEGI N WRI TE( ki l ometr os: 6) ; WRI TE( ki l ometr os/ 1. 852: 15: 2) ; WRI TELN( ki l ometr os/ 1. 609: 15: 2) ; END;
57
Ejercicios de Pascal
☺Escribir un programa en Pascal que lea 10 datos desde el teclado y sume sólo aquellos que sean negativos. PROGRAM EJ ER79; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR y, suma: REAL; VAR x: I NTEGER;
BEGI N Cl rScr;
WRI TELN ( ' Debe i nt r oduci r 10 datos, se sumaran sol o l os negati vos: ' ) ; WRI TELN ( ' ' ) ; FOR x: =1 TO 10 DO BEGI N WRI TE( ' I nt roduzca el dat o ' , x: 2, ' : ' ) ; I F y < 0 THEN suma : = suma + y; END;
END.
READLN ( y);
WRI TELN ( ' ' ) ; WRI TE ( ' El r esul t ado de l a suma de l os numeros negat i vos es: ' ) ; WRI TELN ( suma: 5: 2) ;
PROGRAM EJ ER79; USES CRT; VAR i : I NTEGER; VAR num, sumaneg: REAL; BEGI N Cl rScr; sumaneg: =0; FOR i : =1 TO 10 DO BEGI N WRI TE( ' Numero ' ) ; WRI TE( i ) ; WRI TE( ' - > ' ) ; READLN( num) ; I F num < 0 THEN sumaneg: =sumaneg+num; END; END.
WRI TE( ' Suma de negat i vos:
' );
WRI TE( sumaneg) ;
☺Escribir un programa en Pascal que calcule el sueldo semanal de un trabajador a partir del número de horas trabajadas por día y las siguientes tarifas: 600 pts/hora Turno de mañana 800 pts/hora Turno de noche 1000 pts/hora Turno de días festivos PROGRAM EJ ER80; {Aut or : Vi ct or Sanchez Sanchez USES CRT;
emai l : vi ct or ss18@hot mai l . com}
VAR t_ mannana, t _noche, t _f est i vos: I NTEGER; VAR t ot al : LONGI NT;
BEGI N Cl rScr;
WRI TE ( ' I nt r oduzca l as horas t r abaj adas por di a, en cada t ur no, ' ) ; WRI TELN ( ' par a cal cul ar el suel do semanal . ' ) ; WRI TELN ( ' ' ) ; WRI TE ( ' Hor as del t urno de ma¤ana:
' );
READLN ( t _mannana) ;
58
Ejercicios de Pascal WRI TE ( ' Horas del t urno de noche: ' ); WRI TE ( ' Hor as del t ur no de di as f est i vos: ' ) ; WRI TELN ( ' ' ) ;
READLN ( t _noche) ; READLN ( t _f est i vos) ;
t otal : =( 600 * t _mannana) + ( 800 * t _noche) + ( 1000 * t _f esti vos) ; END.
WRI TE ( ' El suel do semanal es de: ' , t ot al ) ;
PROGRAM EJ ER80; USES CRT; VAR t urno, r esp: CHAR; VAR numhor as: REAL; BEGI N Cl rScr; r esp: =' S' ; WRI TE( ' Tur no ? ( M/ N/ F) ---> ' ); WRI TE( ' Numero de horas ( di a) - - - > ' ) ;
READLN( t ur no); READLN( numhoras) ;
WHI LE UPCASE( r esp) = ' S' DO BEGI N I F UPCASE( t urno) = ' M' THEN BEGI N WRI TE( ' Sal ari o neto: ' ) ; WRI TELN( numhoras*5*600: 7: 2) ; END ELSE I F UPCASE( t urno) = ' N' THEN BEGI N WRI TE( ' Sal ari o neto: ' ) ; WRI TELN( numhoras*5*800: 7: 2) ; END ELSE I F UPCASE ( t ur no) = ' F' THEN BEGI N WRI TE( ' Sal ari o neto: ' ) ; WRI TELN( numhoras*5*1000: 7: 2); END ELSE WRI TELN( ' Tur no i ncorr ect o' ) ; WRI TE( ' ¨Desea cont i nuar ( S/ N) ? - - - > ' ) ; READLN( r esp) ;
END.
END;
I F UPCASE(r esp) = ' S' THEN BEGI N Cl rScr; WRI TE( ' Tur no ? ( M/ N/ F) - - - >' ) ; WRI TE( ' Numer o de hor as ( di a) - - - >' ) ; END ELSE EXI T;
READLN( t ur no); READLN( numhor as) ;
☺Escribir un programa en Pascal que rellene un array con los números enteros comprendidos entre 4 y 14. PROGRAM EJ ER81; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR ar r _num: ARRAY [ 4. . 14] of I NTEGER; VAR i : I NTEGER; BEGI N Cl rScr;
emai l : vi ct or ss18@hot mai l . com}
FOR i : =4 TO 14 DO ar r_num[ i ] : =i ;
END.
FOR i : =4 TO 14 DO BEGI N WRI TELN( ' Numer o: ' , arr _num[ i ] ) ; END;
59
Ejercicios de Pascal
PROGRAM EJ ER81; USES CRT; VAR ar r _num: ARRAY[ 1. . 11] of I NTEGER; VAR i , num: I NTEGER; BEGI N Cl rScr; num: =4; FOR i : =1 TO 11 DO BEGI N ar r _num[ i ] : =num; num: =num+1; END;
END.
FOR i : =1 TO 11 DO BEGI N WRI TE( ' Posi ci ón ' , i : 2, ' : ' ) ; WRI TELN( arr _num[ i ] : 5) ; END;
☺Escribir un programa en Pascal que rellene un array con los números pares comprendidos entre 1 y 10. PROGRAM EJ ER82; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR ar r _num: ARRAY [ 1. . 10] of I NTEGER; VAR i , b: I NTEGER; BEGI N Cl rScr; i : =1;
emai l : vi ct or ss18@hot mai l . com}
WHI LE i <= 10 DO BEGI N arr _num[ i ] : =i ; I F ( i mod 2) =0 THEN BEGI N WRI TELN( arr _num[ i ] ) ; END;
END.
END;
i : = i + 1;
PROGRAM EJ ER82; USES CRT; VAR ar r _num: ARRAY[ 1. . 10] of I NTEGER; VAR i , num: I NTEGER; BEGI N Cl rScr; i : =1; num: =1; WHI LE num<=10 DO BEGI N I F num mod 2 = 0 THEN BEGI N ar r _num[ i ] : =num; i : =i +1; END; num: =num+1; END; arr _num[ i ] : =3; i : =1; WHI LE ar r _num[ i ] <> 3 DO BEGI N WRI TE( ' Posi ci on ' , i : 2, ' : ' ) ; WRI TELN( arr _num[ i ] : 5) ; i : =i +1;
60
Ejercicios de Pascal END; END.
☺Escribir un programa en Pascal que rellene un array con los números comprendidos entre 25 y 35 divididos por 3. PROGRAM EJ ER83; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR ar r _num: ARRAY [ 1. . 11] of REAL; VAR i : I NTEGER; BEGI N Cl rScr;
emai l : vi ct or ss18@hot mai l . com}
FOR i : =25 TO 35 DO ar r_num[ i ] : =i ;
END.
FOR i : =25 TO 35 DO WRI TELN( arr _num[ i ] / 3: 5: 2) ;
PROGRAM EJ ER83; USES CRT; VAR arr _num: ARRAY[ 1. . 11] of REAL; VAR i , num: I NTEGER; BEGI N Cl rScr; i : =1; num: =025; FOR i : =1 TO 10 DO BEGI N arr _num[ i ] : =num/ 3; num: =num+1; END; i : =1;
END.
WHI LE i <= 10 DO BEGI N WRI TE( ' Posi ci on ' , i : 2, ' : ' ) ; WRI TELN( arr _num[ i ] : 5) ; i : =i +1; END;
☺Escribir un programa en Pascal que rellene un array con cinco números enteros consecutivos y haga una copia de ese array en otro. PROGRAM EJ ER84; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; VAR ar r _num1, ar r _num2: ARRAY [ 5. . 10] of I NTEGER; VAR i : I NTEGER; BEGI N Cl rScr; FOR i : =5 TO 10 DO BEGI N ar r _num1[ i ] : =i ; arr _num2[ i ] : =arr _num1[ i ] ; END; FOR i : =5 TO 10 DO WRI TELN ( arr _num2[ i ] ) ;
END. PROGRAM EJ ER84; USES CRT;
61
Ejercicios de Pascal VAR ar r _num1, ar r _num2: ARRAY[ 1. . 5] of I NTEGER; VAR i , num: I NTEGER;
BEGI N Cl rScr;
i : =1; num: =100; FOR i : =1 TO 5 DO BEGI N ar r _num1[ i ] : =num; num: =num+1; END; FOR i : =1 TO 5 DO arr _num2[ i ] : =arr _num1[ i ] ; i : =1; WRI TELN( ' ARRAY 1
END.
ARRAY 2' : 30) ;
WHI LE i <= 5 DO BEGI N WRI TE( ' Pos i c i on ' , i : 2, ' : ' ) ; WRI TE( arr _num1[ i ] : 5) ; WRI TELN( arr _num2[ i ] : 10) ; i : =i +1; END;
☺Escribir un programa en Pascal que rellene un array de 10 elementos con los números comprendidos entre 23 y 32 y copie en otro array esos números multiplicados por 0.35. PROGRAM EJ ER85; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; VAR ar r _num1, ar r _num2: ARRAY [ 23. . 32] of REAL; VAR i : I NTEGER; BEGI N Cl rScr; FOR i : =23 TO 32 DO BEGI N arr _num1[ i ] : =i ; arr _num2[ i ] : =( arr _num1[ i ] * 0. 35) ; END;
END.
FOR i : =23 TO 32 DO WRI TELN( arr _num2[i ] : 5: 2) ;
PROGRAM EJ ER85; USES CRT; VAR ar r _num1, ar r _num2: ARRAY[ 1. . 10] of REAL; VAR i , num: I NTEGER; BEGI N Cl rScr; i : =1; num: =23; FOR i : =1 TO 10 DO BEGI N ar r _num1[ i ] : =num; num: =num+1; END; FOR i : =1 TO 10 DO arr _num2[ i ] : =arr _num1[ i ] *0. 35; i : =1; WRI TELN( ' ARRAY 1
ARRAY 2' : 30) ;
WHI LE i <= 10 DO BEGI N
62
Ejercicios de Pascal
END.
END;
WRI TE( ' Pos i c i on ' , i : 2, ' : ' ) ; WRI TE( arr _num1[ i ] : 5: 2) ; WRI TELN( arr _num2[ i ] : 10: 2) ; i : =i +1;
☺Escribir un programa en Pascal que rellene un array con los veinte primeros números pares y calcule su suma. PROGRAM EJ ER86; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR ar r _par es: ARRAY [1. . 40] of I NTEGER; VAR i , suma: I NTEGER; BEGI N Cl rScr;
emai l : vi ct or ss18@hot mai l . com}
i : =1; FOR i : = 1 TO 40 DO BEGI N I F ( i mod 2) = 0 THEN BEGI N arr _pares[ i ] : =i ; suma: = suma + i ; END; END; END.
WRI TELN( ' La suma de l os 20 pr i mer os numer os par es es: ' , suma) ;
PROGRAM EJ ER86; USES CRT; VAR ar r _num: ARRAY[ 1. . 25] of I NTEGER; VAR i , num, suma_par : I NTEGER; BEGI N Cl rScr; i : =1; num: =1; suma_par : =0; WHI LE i <=20 DO BEGI N I F num mod 2 = 0 THEN BEGI N ar r _num[ i ] : =num; i : =i +1; suma_par : =suma_par +num; END; num: =num+1; END; i : =1;
END.
WHI LE i <= 20 DO BEGI N WRI TE( ' Pos i c i ón ' , i : 2, ' : ' ) ; WRI TELN( arr _num[ i ] : 5); i : =i +1; END; WRI TE( ' SUMA: ' , suma_par : 12) ;
☺Escribir un programa en Pascal que solicite cinco números, los almacene en un array y luego calcule la media aritmética de esos números. PROGRAM EJ ER87; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR ar r _num: ARRAY [ 1. . 5] of REAL;
emai l : vi ct or ss18@hot mai l . com}
63
Ejercicios de Pascal VAR i , num: I NTEGER; VAR medi a: REAL;
BEGI N Cl rScr;
WRI TELN ( ' Escr i ba 5 numeros par a hacer su medi a ar i t meti ca: ' ) ; FOR i : = 1 TO 5 DO BEGI N READLN( num) ; ar r _num[ i ] : =num; END; FOR i : =1 TO 5 DO medi a: = medi a + arr _num[ i ] ; medi a: = medi a / i ; END.
WRI TELN ( ' La medi a ar i t meti ca es: ' , medi a: 5: 2) ;
PROGRAM EJ ER87; USES CRT; VAR arr _num: ARRAY[ 1. . 10] of REAL; VAR num, suma, medi a: REAL; VAR i : I NTEGER; BEGI N Cl rScr; i : =0; suma: =0; medi a: =0; WHI LE i <5 DO BEGI N WRI TE( ' Numero ' , i +1, ' - - - >' ) ; ar r _num[ i ] : =num; suma: =suma+num; i : =i +1; END;
READLN( num) ;
medi a: =( suma/ i ) ; END.
WRI TE( ' Medi a: ' , medi a: 5: 2) ;
☺Escribir un programa en Pascal que tras asignar los números, 23, 45, 68, 99, 10, 15 y 4 a un array, determine la posición del array en la que se encuentra el máximo valor. PROGRAM EJ ER88; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST ar r _num: ARRAY [ 1. . 7] of I NTEGER=( 23, 45, 68, 99, 10, 15, 4) ; VAR i : I NTEGER; BEGI N Cl rScr; FOR i : =1 TO 7 DO BEGI N
END.
I F ar r _num[ i ] =99 THEN WRI TE ( ' La posi ci on del mayor numer o ( ' , arr _num[ i ] , ' ) es: ' , i ) ; END;
PROGRAM EJ ER88; USES CRT; CONST ar r _num: ARRAY[ 1. . 7] of I NTEGER=( 23, 45, 68, 99, 10, 15, 4) ; VAR i , posi _max, val _max: I NTEGER;
64
Ejercicios de Pascal BEGI N Cl rScr; FOR i : =1 TO 7 DO BEGI N I F arr _num[ i ] > val _max THEN BEGI N val _max: =arr _num[ i ] ; posi _max: =i ; END; END; END.
WRI TE( ' VALOR MAXI MO: ' , val _max, ' POSI CI ON: ' , posi _max) ;
☺Escribir un programa en Pascal que tras asignar los números, -2, 5, 8, -9, 10, 15 y –4 a un array calcule, independientemente, la suma de los elementos positivos y negativos. PROGRAM EJ ER89; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST ar r _num: ARRAY [ 1. . 7] of I NTEGER=( - 2, 5, 8, - 9, 10, 15, - 4); VAR i : I NTEGER; VAR suma_p, suma_i : I NTEGER; BEGI N Cl rScr; FOR i : =1 TO 7 DO BEGI N I F ar r _num[ i ] >= 0 suma_p: = suma_p ELSE I F ar r _num[ i ] suma_i : = suma_i END;
END.
THEN + arr _num[ i ] < 0 THEN + ar r _num[ i ] ;
WRI TELN ( ' La suma de l os numer os par es es: ' , suma_p) ; WRI TELN ( ' La suma de l os numer os i mpar es es: ' , suma_i ) ;
PROGRAM EJ ER89; USES CRT; CONST ar r _num: ARRAY[ 1. . 7] of I NTEGER=( - 2, 5, 8, - 9, 10, 15, - 4) ; VAR i , suma_pos, suma_neg: I NTEGER; BEGI N Cl rScr; FOR i : =1 TO 7 DO BEGI N I F ar r _num[ i ] > 0 THEN suma_pos: =suma_pos+ar r _num[ i ] ELSE suma_neg: =suma_neg+ar r _num[ i ] ; END;
END.
WRI TELN( ' SUMA POSI TI VOS: ' , suma_pos) ; WRI TELN( ' SUMA NEGATI VOS: ' , suma_neg) ;
☺Escribir un programa en Pascal que tras asignar los números, 23, 45, 68, 99, 10, 15 y 4 a un array, determine las posiciones del array en las que se encuentran el máximo y el mínimo valor. PROGRAM EJ ER90; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST arr : ARRAY [ 1. . 7] of I NTEGER=( 23, 45, 68, 99, 10, 15, 4) ; VAR i , mayor , menor , posi _mayor , posi _menor : I NTEGER; BEGI N Cl rScr; mayor: = arr [ 1] ; menor: = arr [ 1] ;
65
Ejercicios de Pascal
FOR i : =2 TO 7 DO BEGI N I F ar r [ i ] >= mayor THEN BEGI N mayor : = ar r [ i ] ; posi _mayor: =i ; END ELSE CONTI NUE; END; WRI TELN ( ' El numer o mayor es: ' , mayor : 3); WRI TELN ( ' Su posi ci on es: ' , posi _mayor: 3) ; WRI TELN ( ' ' ) ; FOR i : =2 TO 7 DO BEGI N I F arr [ i ] <= menor THEN BEGI N menor: = arr [i ]; posi _menor: =i ; END ELSE CONTI NUE; END;
END.
WRI TELN ( ' El numer o menor es: ' , menor : 3); WRI TELN ( ' Su posi ci on es: ' , posi _menor: 3) ;
PROGRAM EJ ER90; USES CRT; CONST ar r _num: ARRAY[ 1. . 7] of I NTEGER=( 23, 45, 68, 99, 10, 15, 4) ; VAR i , val _max, val _mi n, pos_ max, pos_ mi n: I NTEGER; BEGI N Cl rScr; val _mi n: =arr _num[ 1] ; val _max: =ar r _num[ 1]; FOR i : =1 TO 7 DO BEGI N I F arr _num[ i ] > val _max THEN BEGI N val _max: =arr _num[ i ] ; pos_ max: =i ; END;
END;
END.
I F ar r _num[ i ] < val _mi n THEN BEGI N val _mi n: =arr _num[ i ] ; pos_mi n: =i ; END;
WRI TELN( ' VALOR MµXI MO: ' , val _max: 3, ' POSI CI àN: ' , pos_max: 3) ; WRI TELN( ' VALOR MÖNI MO: ' , val _mi n: 3, ' POSI CI àN: ' , pos_mi n: 3) ;
☺Escribir un programa en Pascal que determine la posición de la siguiente matriz en la que se encuentra el valor máximo. 23 34 25
45 99 78
68 12 89
PROGRAM EJ ER91B; USES CRT; CONST ar r _num: ARRAY[ 1. . 3, 1. . 3] of I NTEGER=( ( 23, 45, 68) ,
66
Ejercicios de Pascal
( 34, 99, 12) , ( 25, 78, 89) ) ; VAR i , j , val _max, pos_max_i , pos_max_j : I NTEGER;
BEGI N Cl rScr;
val _max: =arr _num[ 1, 1]; FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 3 DO BEGI N I F ar r _num[ i , j ] > val _max THEN BEGI N val _max: =ar r _num[ i , j ] ; pos_max_i : =i ; pos_max_j : =j ; END; END; END; WRI TELN( END.
' VALOR MAXI MO: ' , val _max: 3, ' POSI CI ON: ' , pos_max_i : 3, pos_max_i : 3) ;
☺Escribir un programa en Pascal que sume, independientemente, los elementos positivos y negativos de la siguiente matriz: -12 45 25
23 -56 78
32 -10 89
PROGRAM EJ ER92; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST arr _num: ARRAY [ 1. . 3, 1. . 3] of I NTEGER=( ( - 12, 23, - 32) , ( 45, - 56, - 10) , ( 25, 78, 89) ) ; VAR i , j , suma_p, suma_i : I NTEGER; BEGI N Cl rScr; FOR i : =1 TO 3 DO BEGI N FOR j : = 1 TO 3 DO BEGI N I F ar r _num[ i , j ] >=0 THEN suma_p: = suma_p + arr _num[ i , j ] ELSE suma_i : = suma_i + ar r_num[ i , j ] ; END; END; WRI TELN ( ' La suma de l os numer os par es es: ' , suma_p) ; WRI TELN ( ' La suma de l os numer os i mpar es es: ' , suma_i ) ; END. PROGRAM EJ ER92; USES CRT; CONST arr _num: ARRAY[ 1. . 3, 1. . 3] of I NTEGER=( ( - 12, 23, - 32) , (45, - 56, - 10), ( 25, 78, 89) ); VAR i , j , suma_pos, suma_neg: I NTEGER; BEGI N suma_pos: =0; suma_neg: =0; Cl rScr; FOR i : =1 TO 3 DO BEGI N
67
Ejercicios de Pascal
END;
END.
FOR j : =1 TO 3 DO BEGI N I F ar r _num[ i , j ] < 0 THEN suma_neg: =suma_neg+ar r _num[ i , j ] ELSE suma_pos: =suma_pos+ar r _num[ i , j ] END;
WRI TELN( ' SUMA POSI TI VOS: ' , suma_pos: 5) ; WRI TELN( ' SUMA NEGATI VOS: ' , suma_neg: 5) ;
☺Escribir un programa en Pascal que multiplique por dos los elementos de la siguiente matriz: 4 6 5
7 9 0
8 1 3
PROGRAM EJ ER93; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST arr _num: ARRAY [ 1. . 3, 1. . 3] of I NTEGER=( ( 4, 7, 8), (6,9,1), (5,0,3) ); VAR mul t , i , j : I NTEGER; BEGI N Cl rScr;
END.
FOR i : = 1 TO 3 DO BEGI N FOR j : =1 TO 3 DO BEGI N mul t : =arr _num[ i , j ] * 2; WRI TELN(' El emento (' , i , ' , ' , j , ' ) mul t i pl i cado por 2: ' , mul t : 3); END; END;
PROGRAM EJ ER93; USES CRT; CONST arr _num: ARRAY[ 1. . 3, 1. . 3] of I NTEGER=( ( 4, 7, 8) , ( 6, 9, 1) , (5,0,3) ); VAR i , j : I NTEGER; BEGI N Cl rScr; FOR i : =1 TO 3 DO FOR j : =1 TO 3 DO arr _num[ i , j ] : =arr _num[ i , j ] *2;
END.
FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 3 DO WRI TE( ar r _num[ i , j ] : 3) ; WRI TELN ( ' ' ) ; END;
☺Escribir un programa en Pascal que almacene en la segunda fila de la siguiente matriz los cuadrados de los datos de la primera fila: 3 0
6 0
7 0
8 0
9 0
68
Ejercicios de Pascal PROGRAM EJ ER94; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST ar r _num: ARRAY [1. . 2, 1. . 5] of I NTEGER=( ( 3, 6, 7, 8, 9) , ( 0, 0, 0, 0, 0) ) ; VAR i , j , cuad: I NTEGER; BEGI N Cl rScr; i : =1;
END.
FOR j : =1 TO 5 DO BEGI N FOR i : =1 TO 1 DO BEGI N cuad: =sqr( arr _num[ i , j ] ) ; arr _num[ 2, j ] : = cuad; WRI TELN ( arr _num[ 2, j ] ) ; END; END;
PROGRAM EJ ER94; USES CRT; CONST ar r _num: ARRAY[ 1. . 2, 1. . 5] of I NTEGER=( ( 3, 6, 7, 8, 9), ( 0, 0, 0, 0, 0) ) ; VAR i , j : I NTEGER; BEGI N Cl rScr; FOR i : =1 TO 1 DO FOR j : =1 TO 5 DO arr _num[ i +1, j ] : =sqr( ar r_num[ i , j ] ) ;
END.
FOR i : =1 TO 2 DO BEGI N FOR j : =1 TO 5 DO WRI TE( ar r _num[ i , j ] : 3) ; WRI TELN( ' ' ) ; END;
☺Escribir un programa en Pascal que sume los datos de cada una de las filas de la siguiente matriz; el resultado se almacenará en la última posición de cada fila: 3 1
6 4
7 3
8 2
9 7
0 0
PROGRAM EJ ER95; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST arr _num: ARRAY [ 1. . 2, 1. . 6] of I NTEGER=( ( 3, 6, 9, 7, 8, 0), ( 1, 4, 3, 2, 7, 0) ) ; VAR i , j , suma1, suma2: I NTEGER; BEGI N Cl rScr; FOR i : =1 TO 2 DO BEGI N FOR j : =1 TO 6 DO BEGI N I F i =1 THEN suma1: = suma1 + ar r _num[ 1, j ] ; I F i =2 THEN suma2: = suma2 + ar r _num[ 2, j ] ; END; END;
END.
WRI TELN ( ' La suma de l a f i l a 1 es: ' , suma1) ; WRI TELN ( ' La suma de l a f i l a 2 es: ' , suma2) ;
PROGRAM EJ ER95; USES CRT;
69
Ejercicios de Pascal CONST arr _num _num: ARRAY[ 1. . 2, 1. . 6] of I NTEG TEGER=( ( 3, 6, 9, 7, 8, 0) , ( 1, 1, 4, 3, 2, 7, 0) ) ; VAR sum suma_f i l a, i , j : I NTEG TEGER;
BEGI BEGI N Cl rScr; rScr;
FOR i : =1 TO 2 DO BEGI N sum suma_f i l a: =0; FOR j : =1 TO 6 DO sum suma_f i l a: =sum suma_f i l a+ar r _nu _num[ i , j ] ; arr _nu _num[ i , j ] : =sum suma_f i l a; END END;
END END.
FOR i : =1 TO 2 DO BEGI N FOR j : =1 TO 6 DO WRI TE( ar r _nu _num[ i , j ] : 3) ; WRI TELN TELN(( ' ' ) ; END END;
☺Escribir un programa en Pascal que sume los datos de cada una de las columnas de la siguiente matriz; el resultado se almacenará en la última posición de cada columna: 3 4 8 0
2 6 9 0
PRO PROGRAM EJ ER96 ER96;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez emai l : vi ct or ss18@hot hot mai l . com} USES CRT; CRT; CONST arr _num _num: ARRAY [ 1. . 4, 1. . 2] of I NTEG TEGER= ER=( ( 3, 2), ( 4, 6) , (8,9),(0,0) ); VAR i , j , suma1, a1, suma2: a2: I NTEG TEGER; ER; BEGI BEGI N Cl rScr; rScr; FOR j : =1 TO 2 DO BEGI N FOR i : =1 TO 4 DO BEGI N I F j =1 TH THEN suma1: a1: = suma1 + arr _num _num[ i , j ] ; I F j =2 TH THEN suma2: a2: = suma2 + arr _num _num[ i , j ] ; END END; END END;
END END.
WRI TELN TELN ( ' El r esul esul t ado ado de de l a sum suma 1 es: ' , suma1) a1) ; WRI TELN TELN ( ' El r esul esul t ado ado de de l a sum suma 2 es: ' , suma2) a2) ;
☺Escribir un programa en Pascal que sume los elementos de cada una de las filas y de las columnas de la siguiente matriz; el resultado de cada suma se almacenará en la última posición de la fila o columna correspondiente. Además la suma total de todos los elementos de la matriz se almacenará en el elemento de la esquina inferior derecha de la matriz: 1 5 6 7 0
7 6 4 3 0
0 0 0 0 0
PRO PROGRAM EJ ER97 ER97;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez
emai l : vi ct or ss18@hot hot mai l . com}
70
Ejercicios de Pascal USES CRT; CRT; CONST arr _num _num: ARRAY [ 1. . 5, 1. . 3] of I NTEG TEGER=( ( 1, 7, 0) , ( 5, 6, 0) , (6,4,0),(7,3,0), (0,0,0) ); VAR i , j , t ot al : I NTEGER; VAR suma_h, suma_v: I NTEG TEGER; ER; {Es {Es l a suma hor hor i zontal y vert i cal } BEGI BEGI N Cl rScr; rScr; FOR i : =1 TO 5 DO BEGI N FOR j : =1 TO 3 DO BEGI N sum suma_h: a_h: = sum suma_h + arr _num _num[ i , j ] ; END END; WRI TELN TELN ( ' La sum suma de l a f i l a ' , i , ' es: ' , sum suma_h: _h: 3) ; t ot al : =t otal + sum suma_h; _h; suma_h: =0; END; WRI TELN TELN ( ' ' ) ; FOR j : =1 TO 2 DO BEGI N FOR i : =1 TO 5 DO BEGI N sum suma_v: a_v: = sum suma_v + arr _num _num[ i , j ] ; END END; WRI TELN TELN ( ' La sum suma de de l a col col umna ' , j , ' es: ' , sum suma_v: a_v: 3) ; suma_v: =0; t ot al : =t otal + sum suma_v; END; WRI TELN TELN ( ' ' ) ; WRI TELN TELN ( ' La sum suma total es: ' , t ot al ) ; END END. PRO PROGRAM EJ ER97; ER97; USES CRT; CRT; CONST arr _num _num: ARRAY[ 1. . 5, 1. . 3] of I NTEG TEGER=( ( 1, 7, 0) , (5,6,0), (6,4,0), (7,3,0), (0,0,0) ); VAR sum suma_f i l a, sum suma_col a_col u, sum suma_tot a, i , j : I NTEG TEGER; BEGI BEGI N Cl rScr; rScr; FOR i : =1 TO 4 DO BEGI N sum suma_f i l a: =0; FOR j : =1 TO 2 DO BEGI N sum suma_fi l a: =sum suma_fi l a+ar r _nu _num[ i , j ] ; suma_t ot a: =suma_t ot a+arr _num _num[ i , j ] ; END END; arr _nu _num[ i , j +1] : =sum suma_fi l a; END END; arr _num _num[ i +1, j +1]: =suma_t ot a; FOR j : =1 TO 2 DO BEGI N suma_col u: =0; FOR i : =1 TO 4 DO BEGI N suma_col u: =suma_col u+arr _num _num[ i , j ] ; END END; arr _num _num[ i +1, j ] : =suma_col u; END END; FOR i : =1 TO 5 DO BEGI N FOR j : =1 TO 3 DO WRI TE( ar r _nu _num[ i , j ] : 3) ;
71
Ejercicios de Pascal
END END.
END END;
WRI TELN TELN(( ' ' ) ;
☺Escribir un programa en Pascal que divida todos los elementos de una matriz M (3,4) por el elemento situado en la posición 2,2. PRO PROGRAM EJ ER98 ER98;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez emai l : vi ct or ss18@hot hot mai l . com} USES CRT; CRT; CONST arr _num _num: ARRAY[ 1. . 3, 1. . 4] of I NTEG TEGER=( ( 23, 23, 45, 45, - 68, 99), ( 45, 65, - 76, 34) , ( 56, - 75, 34, 98) ) ; VAR i , j : I NTEG TEGER; VAR di vi : REAL; EAL; BEGI BEGI N Cl rScr; rScr;
END END.
FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 4 DO BEGI N di vi : = arr _nu _num[ i , j ] / arr _nu _num[2, 2] ; WRI TE ( ' Di vi di do ' , ar r_num r_num[ i , j ] : 3, ' po por el nu numer o ' ) ; WRI TELN ( arr _nu _num[ 2, 2] : 3, ' : ' , di vi : 5: 2) ; END END; END END;
PRO PROGRAM EJ ER98; ER98; USES CRT; CRT; CONST mat r i z_m: ARRAY[1. . 3, 1. . 4] OF OF RE REAL = ( ( 2, 3, 4, 12) 12) , (7, 9, 8, 11), ( 5, 5, 6, 1, 19) ) ; VAR i , j : I NTEG TEGER; VAR el e_22: e_22: REAL; EAL; BEGI BEGI N el e_22: _22: =matr i z_m[ 2, 2] ; Cl rScr; rScr; FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 4 DO WRI TE(matr i z_m[i , j ] : 5: 2, ' ' ); WRI TELN TELN(( ' ' ) ; END END; FOR i : =1 TO 3 DO FOR j : =1 TO 4 DO mat r i z_m[ i , j ] : =mat ri z_m[ i , j ] / el e_22 _22; WRI TELN TELN(( ' ' ) ;
END END.
FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 4 DO WRI TE(matr i z_m[i , j ] : 5: 2, ' ' ); WRI TELN TELN(( ' ' ) ; END END;
☺Escribir un programa en Pascal que almacene en un array los números primos comprendidos entre 1 y 100. PRO PROGRAM EJ ER99 ER99;; {Aut {Aut or : Vi ct or Sanch Sanchez ez Sanch Sanchez ez USES CRT; CRT; VAR ar r _num: ARRAY [ 1. . 100] 100] of I NTEGER; ER;
emai l : vi ct or ss18@hot hot mai l . com}
72
Ejercicios de Pascal VAR f l ag: I NTEGER; VAR i , num: I NTEGER;
BEGI N Cl rScr;
num: =1; WHI LE num < 100 DO BEGI N FOR i : =2 TO ( num- 1) DO BEGI N I F ( num mod i ) =0 THEN f l ag: =1; END; I F f l ag<>1 THEN WRI TELN ( num: 3, ' es un n£mer o pr i mo. ' ) ;
END.
END;
num: = num + 1; f l ag: =0;
PROGRAM EJ ER99; USES CRT; VAR ar r a_pr i m: ARRAY[ 1. . 100] OF I NTEGER; VAR i , di vi sor: I NTEGER; VAR f l ag, num: I NTEGER; BEGI N i : =1; FOR num: =2 TO 100 DO BEGI N f l ag: =1; FOR di vi sor : =2 TO num- 1 DO BEGI N I F num MOD di vi sor = 0 THEN f l ag: =0; END; I F f l ag=1 THEN BEGI N arr a_pr i m[ i ] : =num; i : =i +1; END;
END; arr a_pri m[ i ] : =0;
END.
i : =1; WHI LE( ar r a_pr i m[ i ] <>0) DO BEGI N WRI TE(arr a_pri m[i ], ' ' ) ; i : =i +1; END;
☺Escribir un programa en Pascal que genera la matriz transpuesta de una matriz de 3 filas y 4 columnas. La matriz transpuesta de una matriz M(m,n) se obtiene intercambiando filas por columnas y viceversa; el resultado se tiene que almacenar en una nueva matriz M_TRANS(n,m). PROGRAM EJ ERC100; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST mat r i z: ARRAY [ 1. . 3, 1. . 4] of I NTEGER=( ( 12, 67, - 23, - 45) , ( 45, - 34, 23, - 12) , (- 34, 22, 88, - 10) ); VAR m_t r a: ARRAY [ 1. . 4, 1. . 3] of I NTEGER; VAR f , c: I NTEGER; BEGI N Cl rScr;
73
Ejercicios de Pascal
END.
FOR c: =1 TO 3 DO BEGI N FOR f : =1 TO 4 DO BEGI N m_tr a[f , c]: =mat ri z[c, f ] ; WRI TE ( ' ( ' , f , ' , ' , c , ' ) ' ) ; WRI TELN ( m_t r a[ f , c] : 3) ; END; END;
PROGRAM EJ ERC100; USES CRT; CONST m_or i g: ARRAY[ 1. . 3, 1. . 4] OF REAL = ( ( 2, 3, 4, 12) , (7, 9, 8, 11) , ( 5, 6, 1, 19) ) ; VAR m_t r an: ARRAY[ 1. . 4, 1. . 3] OF REAL; VAR i , j : I NTEGER; BEGI N Cl rScr; FOR i : =1 TO 3 DO FOR j : =1 TO 4 DO m_ t r a n[ j , i ] : =m_ or i g[ i , j ] ; FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 4 DO WRI TE( m_ or i g[ i , j ] : 5: 2, ' ' ) ; WRI TELN( ' ' ) ; END; WRI TELN( ' ' ) ;
END.
FOR i : =1 TO 4 DO BEGI N FOR j : =1 TO 3 DO WRI TE(m_tr an[ i , j ]: 5: 2, ' ' ); WRI TELN( ' ' ) ; END;
☺Escribir un programa en Pascal que genera la inversa de una cadena de caracteres. La cadena original y la invertida deben almacenarse en arrays independientes. PROGRAM EJ ERC101; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR ori gi nal : ARRAY [ 1. . 4] of STRI NG; VAR i nvert i da: ARRAY [1. . 4] of STRI NG; VAR cadena: STRI NG; VAR i : I NTEGER; BEGI N Cl rScr; cadena: =' hol a' ;
emai l : vi ct or ss18@hot mai l . com}
FOR i : =1 TO LENGTH( cadena) DO BEGI N or i gi nal [ i ] : = cadena[ i ] ; WRI TE (ori gi nal [ i ]) ; END; WRI TELN ( ' ' ) ;
END.
FOR i : =LENGTH( cadena) DOWNTO 1 DO BEGI N i nvert i da[ i ] : =cadena[ i ] ; WRI TE ( i nver t i da[ i ] ) ; END;
74
Ejercicios de Pascal PROGRAM EJ ERC101; USES CRT; CONST cad_or i g: ARRAY[ 1. . 9] of CHAR=' GUAYABI TA' ; VAR cad_copi : STRI NG; VAR i , j : I NTEGER; BEGI N Cl rScr; WRI TELN( cad_or i g) ; j : =9; FOR i : =1 TO 9 DO BEGI N cad_copi [ j ]: =cad_ori g[i ]; j : =j - 1; END;
END.
FOR i : =1 TO 9 DO BEGI N WRI TE( cad_copi [ i ] ) ; END;
☺Escribir un programa en Pascal que sume dos matrices bidimensionales. Las matrices para que puedan sumarse deben tener las mismas dimensiones. PROGRAM EJ ERC102; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST m1: ARRAY [1. . 2, 1. . 2] of I NTEGER=( ( 3, 1) , ( 4, 5) ) ; CONST m2: ARRAY [1. . 2, 1. . 2] of I NTEGER=( ( 1, 3) , ( 4, 2) ) ; VAR m3: ARRAY [ 1. . 2, 1. . 2] of I NTEGER; VAR f , c: I NTEGER; BEGI N Cl rScr; FOR f : =1 TO 2 DO FOR c: =1 TO 2 DO BEGI N m3[ f , c]: =( m1[ f , c] + m2[ f , c]) ; WRI TE ( ' ( ' , f , ' , ' , c , ' ) ' ) ; {Mues t r a l a pos i c i on} WRI TELN ( m3[f , c] ) ; END; END. PROGRAM EJ ERC102; USES CRT; CONST m_1: ARRAY[1. . 3, 1. . 4] OF REAL= ( CONST m_2: ARRAY[1. . 3, 1. . 4] OF REAL= ( VAR m_s uma: ARRAY[ 1. . 3, 1. . 4] OF REAL; VAR i , j : I NTEGER;
( 12, 13, 14, 10) , ( 15, 16, 17, 10) , ( 18, 19, 20, 10) ) ; ( 1, 1, 1, 1) , ( 1, 1, 1, 1) , ( 1, 1, 1, 1) ) ;
BEGI N Cl rScr;
FOR i : =1 TO 3 DO FOR j : =1 TO 4 DO m_suma[i , j ] : =m_1[ i , j ] +m_2[ i , j ] ; FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 4 DO WRI TE(m_1[i , j ]: 5: 2, ' ' ); WRI TELN( ' ' ) ; END; WRI TELN( ' ' ) ; FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 4 DO WRI TE(m_2[i , j ]: 5: 2, ' ' ); WRI TELN( ' ' ) ;
75
Ejercicios de Pascal
END; WRI TELN( ' ' ) ;
END.
FOR i : =1 TO 3 DO BEGI N FOR j : =1 TO 4 DO WRI TE( m_suma[ i , j ] : 5: 2, ' ' ) ; WRI TELN( ' ' ) ; END;
☺Escribir un programa en Pascal que elimine los blancos de una cadena de caracteres. La cadena original y la transformada deben almacenarse en arrays independientes. PROGRAM EJ ERC103; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR cad_t r a: ARRAY [ 1. . 20] of STRI NG; CONST cad_or i : STRI NG=' l a casa es azul ' ; VAR i : I NTEGER;
emai l : vi ct or ss18@hot mai l . com}
BEGI N Cl rScr;
END.
FOR i : =1 TO LENGTH( cad_or i ) DO BEGI N I F cad_ori [ i ] <>' ' THEN BEGI N cad_tr a[ i ]: =cad_ori [i ] ; WRI TE ( cad_t r a[i ] ) ; END; END;
PROGRAM EJ ERC103; USES cr t ; CONST cad_or i g: STRI NG=' Ar chi pi el ago de Cabo Ver de' ; VAR cad_t r an: STRI NG; VAR i , j , nc: I NTEGER; BEGI N Cl rScr; i : =1; nc: =LENGTH( cad_ori g) ; j : =1; FOR i : =1 TO nc DO BEGI N I F cad_or i g[ i ] <> ' ' THEN BEGI N cad_tr an[j ]: =cad_ori g[i ]; j : =j +1; END END; WRI TELN( cad_or i g) ;
END.
FOR i : =1 TO j - 1 DO BEGI N WRI TE( cad_t r an[ i ] ) ; END;
☺Escribir un programa en Pascal que cuente las mayúsculas de una cadena de caracteres. PROGRAM EJ ERC104; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com} USES CRT; CONST cadena: STRI NG=( ' Est O es PROGr aMAci on' ) ;
76
Ejercicios de Pascal VAR i , mayus: I NTEGER; BEGI N Cl rScr; FOR i : =1 TO LENGTH( cadena) DO BEGI N I F cadena[ i ] = UPCASE( cadena[ i ] ) THEN mayus: =mayus + 1; I F cadena[ i ] =' ' THEN mayus: =mayus - 1; END; WRI TELN ( ' El numer o de mayuscul as es: ' , mayus) ; END.
PROGRAM EJ ERC104; USES CRT; CONST cad_or i g: STRI NG=' Ar chi pi el ago de Cabo Ver de' ; VAR i , nc, n_may: I NTEGER; BEGI N Cl rScr; nc: =LENGTH( cad_ori g) ; n_may: =0; FOR i : =1 TO nc DO BEGI N I F ( ORD( cad_or i g[ i ] ) >= 65) AND ( ORD( cad_or i g[ i ] ) <= 90) THEN n_may: =n_may+1; END;
END.
WRI TELN( cad_or i g) ; WRI TELN( ' MAYUSCULAS: ' , n_may) ;
☺Escribir un programa en Pascal que cambie las mayúsculas de una cadena de caracteres a minúsculas y viceversa. PROGRAM EJ ERC105; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR cadena: STRI NG; VAR v_asci i , i : I NTEGER; BEGI N Cl rScr;
emai l : vi ct or ss18@hot mai l . com}
{Est e pr ograma cambi a l as mayuscul as a mi nuscul as y vi cever sa} cadena: =' Vi Ct Or ' ; FOR i : =1 TO LENGTH( cadena) DO BEGI N I F cadena[ i ] = UPCASE ( cadena[i ] ) THEN BEGI N v_asci i : =ORD( cadena[i ] ) ; cadena[i ] : =( CHR( v_asci i +32) ) ; END ELSE BEGI N cadena[ i ] : =UPCASE ( cadena[ i ] ) ; END;
END.
END;
WRI TE ( cadena[i ] ) ;
PROGRAM EJ ERC105;
77
Ejercicios de Pascal USES CRT; CONST cad_or i g: STRI NG=' Ar chi pi el ago de Cabo Ver de' ; VAR i , nc: I NTEGER;
BEGI N Cl rScr;
WRI TELN( cad_or i g) ; nc: =LENGTH( cad_ori g) ; FOR i : =1 TO nc DO BEGI N I F ( ORD( cad_or i g[ i ] ) >= 65) AND ( ORD( cad_or i g[ i ] ) <= 90) THEN cad_ori g[ i ] : =CHR( ORD( cad_ori g[ i ] ) + 32) ELSE I F ( ORD( cad_or i g[ i ] ) >= 97) AND ( ORD( cad_or i g[ i ] ) <= 122) THEN cad_ori g[ i ] : =CHR( ORD( cad_ori g[ i ] ) - 32) ; END; END.
WRI TELN( cad_or i g) ;
☺Escribir un programa en Pascal que encripte una cadena de caracteres sumando 2 al código ASCII de cada uno de sus caracteres. PROGRAM EJ ERC106; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR cadena: STRI NG; VAR encr i p: I NTEGER; VAR i : I NTEGER; BEGI N Cl rScr;
emai l : vi ct or ss18@hot mai l . com}
WRI TE ( ' I nt r oduzca una cadena para encr i pt arl a: ' ) ; READLN ( cadena) ; WRI TELN( ' ' ) ;
END.
FOR i : =1 TO LENGTH( cadena) DO BEGI N encr i p: =ORD( cadena[i ] ) ; cadena[ i ] : =( CHR( encri p + 2) ) ; WRI TE( cadena[i ] ) ; END;
PROGRAM EJ ERC106; USES CRT; CONST cad_or i g: STRI NG=' Ar chi pi el ago de Cabo Ver de' ; VAR i , nc: I NTEGER; BEGI N Cl rScr; WRI TELN( cad_or i g) ; nc: =LENGTH( cad_ori g) ; FOR i : =1 TO nc DO cad_ori g[ i ] : =CHR( ORD( cad_ori g[ i ] ) +2) ; END.
WRI TELN( cad_or i g) ;
☺Escribir un programa en Pascal que encripte los caracteres de una cadena sumando 2 a los que situados en posiciones pares y 3 a los situados en posiciones impares. PROGRAM EJ ERC107; {Aut or : Vi ct or Sanchez Sanchez USES CRT; VAR cadena: STRI NG; VAR encr i p, i : I NTEGER;
emai l : vi ct or ss18@hot mai l . com}
78
Ejercicios de Pascal BEGI N Cl rScr; WRI TE ( ' I nt r oduzca una cadena para encr i pt arl a: ' ) ; READLN ( cadena) ; WRI TELN ( ' ' ) ; FOR i : =1 TO LENGTH ( cadena) DO BEGI N I F ( i mod 2) =0 THEN BEGI N encr i p: =ORD( cadena[i ] ) ; cadena[ i ] : = ( CHR( encri p + 2) ) ; END ELSE BEGI N encr i p: =ORD( cadena[i ] ) ; cadena[ i ] : = ( CHR( encri p + 3) ) ; END;
END.
END;
WRI TE( cadena[i ] ) ;
☺Escribir un programa que lea tres números enteros e indique si están o no, en orden numérico ascendente o descendente. PROGRAM EJ ER001; Uses Cr t ; var num1, num2, num3: I nt eger ; Begi n Cl rScr; WRI TELN( ' I nt r oduzca t r es numer os: ' ) ; WRI TE( ' Numer o 1: ' ) ; READLN( num1) ; WRI TE( ' Numer o 2: ' ) ; READLN( num2) ; WRI TE( ' Numer o 3: ' ) ; READLN( num3) ; WRI TELN; WRI TELN;
End.
I f ( num1 > num2) and ( num2 > num3) t hen WRI TELN( ' Ha i ntr oduci do l os numeros en orden decr eci ent e. ' ) El se i f ( num1 < num2) and ( num2 < num3) t hen WRI TELN( ' Ha i ntr oduci do l os numeros en orden cr eci ent e. ' ) El se WRI TELN( ' No ha i ntr oduci do l os numeros en or den. ' ) ;
EJ 001( I * Program Uses C r t ; Var n1, n2, n3: i
nput , Out put ) ; nt eger ;
Function ordenados(i , {Funci ón bool eana de
j : I nt eger) : Bool ean; dos par ámet r os ent er os, que devuel ve TRUE si el pr i mer númer o es menor o i gual que el segundo y FALSE si es mayor : } begin
or denados ; end
:=
( i <= j )
Begin
Cl rScr; wr i t el n( ' *** I nt r oduce t r es númer os ent er os ***' ) ; wr i t e( ' Pr i mer o : ' ) ; r eadl n( n1) ; wri t e( ' Segundo: ' ) ; r eadl n( n2) ; wr i t e( ' Ter c er o : ' ) ; r eadl n( n3) ; wr i t el n; {Medi ant e l a f unci ón, se compr ueba si el pr i mer númer o es menor que
79
Ejercicios de Pascal el segundo, y si el segundo es además menor que el t er cer o. } if
or denados( n1, n2) and or denados( n2, n3) then wr i t el n( ' Los t r es númer os est án en orden. ' ) eros NO est án en orden' ) ; else wr i t el n(' Los tr es núm r eadkey end .
☺Escribir un programa que lea 5 valores de temperatura, y escriba el número de veces que estuvo bajo 0º. PROGRAM EJ ER002; Uses Cr t ; var t emp, i , cont : I nt eger; Begi n WRI TELN ( ' I nt r oduzca 5 val ores de t emper atura: ' ) ; WRI TELN; c ont : = 0; For i : = 0 t o 4 do Begi n WRI TE(' Val or ' , i + 1, ' : ' ) ; Readl n(t emp); I f t emp < 0 Then i nc(cont ); End; WRI TELN; WRI TE( ' La t emper at ur a ha est ado ' , cont ) ; I f cont = 1 t hen WRI TE ( ' vez baj o 0' ) El se WRI TE ( ' veces baj o 0' ) ;
End.
* program EJ 002( I var cont , t emp, i begin cont := 0; {Cont ador, nº de for i
ndex := begin
1
nput , Out put ) ; ndex: i nt eger ;
to
veces que l a t emperat ur a es i nf eri or a 0 gr ados. } 7
do
wri t e( ' Di me t emperatura(' , i ndex, ' ) : ' ) ; r eadl n( t emp) ; { Leer t em per at ura desde tecl ado } if t emp { Si es
< 0 then cont := cont + 1 menor que cer o, i ncr ement ar el cont ador
}
end ; wr i t e( ' La t emper atura f ue ' , cont ) ; { Escri bi r resul t ado por pant al l a. } if
cont = 1 then wr i t e ( ' vez ' ) wr i t el n( ' i nf er i or a c er o. ' )
else
wri te(' veces ' ) ;
end .
☺Se realiza un examen, se piden las notas del número de alumnos introducidos por el usuario, las cuales pueden ser únicamente enteras entre 0 y 10. Debe decirse cuantos 0, 5 y 10 han aparecido. También deben decirse las notas introducidas que no sean 0, 5 o 10. PROGRAM EJ ER003; Uses Cr t ; var cero, ci nco, di ez: I nt eger;
80
Ejercicios de Pascal var not a, i , al umnos: I nt eger ; var not as_no: Ar r ay [ 1. . 30] of I nt eger ; Begi n Cl rScr; WRI TE( ' I nt r oduzca el numer o de al umnos: ' ) ; READLN( al umnos) ; WRI TELN; WRI TELN( ' I nt r oduzca l as cal i f i caci ones: ( en val or es ent er os) ' ) ; WRI TELN; For i : = 1 t o al umnos do Begi n WRI TE( ' Al umno: ' ) ; READLN( not a); If not a = 0 t hen i nc(cero) el se i f not a = 5 t hen i nc(ci nco) el se i f not a = 10 t hen i nc(di ez) el se not as_no[i ] : = nota; End;
END.
WRI TELN; WRI TE( ' Ha habi do ' , cer o); I f cer o = 1 t hen WRI TELN( ' cero. ' ) el se WRI TELN( ' ceros. ' ) ; WRI TE( ' Ha habi do ' , ci nco) ; I f ci nco = 1 t hen WRI TELN( ' ci nco. ' ) el se WRI TELN( ' ci ncos. ' ) ; WRI TE( ' Ha habi do ' , di ez); I f di ez = 1 t hen WRI TELN( ' di ez. ' ) el se WRI TELN( ' di eces. ' ) ; WRI TELN; WRI TELN( ' Las notas apar eci das que no son 0, 5 o 10 son: ' ) ; For i : = 1 t o i DO I F not as_no[ i ] <> 0 t hen WRI TE( not as_no[ i ] , ' , ' ) ;
EJ 003( I nput , Out put ) ; * program Uses C r t ; var Not as: Set of 0. . 10;
i ndex, al umno, veces0, veces5, veces10, N: i nteger;
begin
cl r s cr ; Not as := [ ] ; {Se i ni ci al i za a conj unt o vací o el conj unt o donde se guardar n l as cal i f i caci ones obt eni das por l os al umnos} wr i t e( ' Cuánt os al umnos hay en cl ase?: ' ) ; r eadl n( N) ; veces0 := 0; veces5 := 0; veces10 := 0; {Se i ni ci al i zan a cer o l os contador es que guardarán l as veces que se obt uvi er on punt uaci ones de 0, 5, y 10 } for i ndex := 1 to N do {N es el núm er o de al umnos. } {Repeti r N veces el si gui ent e
pr oceso: }
begin
wri t e( ' Nota de al umno( ' , i ndex, ' ): ' ) ; r eadl n( al umno); {Leer l a nota del al umno. Si l a nota no est a en el conj unt o, ent onces se añade: } if not( al umno i case al umno of {si l a nota es
n not as)
then not as
:=
notas + [ al umno];
cer o, ci nco o di ez, se i ncr ement a en uno el cont ador cor r espondi ent e: veces0, veces5 o veces10} 0: veces0 := veces0 + 1; 5: veces5 := veces5 + 1; 10: veces10 := veces10 + 1 end ;
end
wr i t e l n; wr i t el n( ' Número de al umnos con un cer o: ' , veces0) ; {Se muest r an l os wr i t el n( ' Número de al umnos con un ci nco: ' , veces5) ; {r esul t ados wr i t el n( ' Número de al umnos con un di ez: ' , veces10); wr i t e l n;
} }
81
Ejercicios de Pascal wr i t el n( ' Ni ngún al umno ha obt eni do ni nguna de l as si gui ent es punt uaci ones: ' ) ; {Se muest r an l as not as que no est n en el conj unt o, que no est ar n, por que ni ngún al umno habr á obt eni do esa cal i f i caci ón. } for i
ndex
:= 0 to if not( i ndex
r eadkey end.
10 do i n not as)
then
wr i t e( i ndex, '
' );
☺Decir el numero de vocales que aparecen en una frase introducida por el usuario. Debe acabar con un punto. PROGRAM EJ ER004; Uses Cr t ; Cons t voc al es : Set of Char = ( [ ' A' , ' E' , ' I ' , ' O' , ' U' ] ) ; {Poni endol as en mayuscul as consegui mos uni f i car el val or de l as vocal es y evi t amos deci r al usuari o que l as i nt r oduzca en mayuscul as o mi nuscul as} var cont, i : I nteger; var l et ra: Char; var f r ase: Arr ay[ 1. . 85] of Char; Begi n Cl rScr; WRI TELN( ' Escr i ba una f r ase, acabando con un punto' ) ; WRI TELN; i : =0; cont : =0; REPEAT l etr a : = Readkey; {Readkey no most r ara l os car act eres en pant al l a} WRI TE ( l etr a) ; {Debemos i ncl ui r l o para que nos muest r e l os caract eres} i f UPCASE( l etr a) i n vocal es t hen {pr egut amos si l a l et r a i nt r oduci da es una vocal } i nc(cont) ; f r ase[ i ] : =l et r a; {guar damos el val or de l a l et r a en el ar r ay f r ase}
End.
UNTI L l et r a = ' . ' ; WRI TELN; WRI TELN; WRI TE ( ' El numer o de vocal es i nt r oduci das es ' , cont ) ;
PROGRAM EJ ER004_2; Uses Cr t ; Cons t voc al es : Set of Char = ( [ ' A' , ' E' , ' I ' , ' O' , ' U' ] ) ; {Poni endol as en mayuscul as consegui mos uni f i car el val or de l as vocal es y evi t amos deci r al usuari o que l as i nt r oduzca en mayuscul as o mi nuscul as} var cont, i : I nteger; var l et ra: Char; var f r ase: St r i ng; {Es l o uni co que cambi a con respect o a l a ot r a versi on} Begi n Cl rScr; WRI TELN( ' Escr i ba una f r ase, acabando con un punto' ) ; WRI TELN; i : =0; cont : =0; REPEAT l etr a : = Readkey; {Readkey no most r ara l os car act eres en pant al l a} WRI TE ( l etr a) ; {Debemos i ncl ui r l o para que nos muest r e l os caract eres} i f UPCASE( l etr a) i n vocal es t hen {pr egut amos si l a l et r a i nt r oduci da es una vocal } i nc(cont) ; f r ase[ i ] : =l et r a; {guar damos el val or de l a l et r a en el ar r ay f r ase} UNTI L l et r a = ' . ' ; WRI TELN; WRI TELN;
82
Ejercicios de Pascal
End.
WRI TE ( ' El numer o de vocal es i nt r oduci das es ' , cont ) ;
EJ 004( I nput , Out put ) ; * Program Uses C r t ; Const vocal es: Set of Char = ( [ ' A' , ' E' Let Buenas: Set of Char = ( [ ' a' . .
, ' I ' , ' O' , ' U' , ' ' , ' ‚ ' , ' ¡ ' , ' ó' , ' £' , ' ' ] ) ; ' z' , ' A' . . ' Z' , ' 0' . . ' 9' , ' ' , ' . ' , ' , ' , ' : ' , ' ; ' , ' ( ' , ' ) ' , ' - ' , ' ¨ ' , ' ' , ' ‚ ' , ' ¡ ' , ' ó' , ' £' , ' ' , ' ? ' , ' - ' , ' ! ' , ' " ' , ' %' , ' / ' , ' <' , ' >' ] ) ;
Var
l etr a: Char; {para guardar cada caráct er i nt r oduci do desde tecl ado. } Frase: array [1. . 80] of Char; i ndex, numvocal es: i nt eger;
Begin
Cl rScr; Wr i t el n( ' Escri be t u f r ase, y termi na con un punt o. ' ) ; i ndex := 0; numvocal es := 0; repeat
l et r a := r eadkey; if l et r a i n l et buenas then {para no guardar car act eres especi al es. } begin
i nc(i ndex); {i ncrement ar el ¡ í ndi ce del
array . }
wr i t e ( l et r a) ; {Readkey no m uest r a por pant al l a el caráct er l eí do. } f rase[ i ndex] := l et r a; {se asi gna el car áct er al
array. }
if upcase( l et r a) {Si el carácter
i n vocal es then i nc(numvocal es) está en el conj unt o "vocal es" se i ncr ement a el cont ador de vocal es " numvocal es": } end until ( i ndex
>= 80) or ( l et r a = ' . ' ) ; {La f r ase t er mi na con un punt o. } wr i t e l n; wr i t e l n; wri t el n( ' La f r ase t i ene ' , numvocal es, ' vocal es. ' ) ; r eadkey . end
☺Pedir que se introduzca una frase, acabada con un punto, en la que se lean las letras del abecedario introducidas y se muestren posteriormente. PROGRAM EJ ER005; Uses Cr t ; var car act er : Char; var abc : St r i ng; var i , l ongi t ud: I nteger; Begi n Cl rScr; WRI TELN( ' Escr i ba una f r ase, t ermi nando con un punto' ) ; WRI TELN; i : = 0; l ongi t ud : = 0; REPEAT car act er : = Upcase( Readkey); WRI TE( caracter ) ; I f car ac t er i n [ ' A' . . ' Z' ] t hen Begi n abc [ i ] : = c ar a ct e r ; {el ar r ay abc quedar a con espaci os vaci os, l os que no sean l et r as del abedecari o, si no se pone el i ncr ement o de i dent r o+ de est e begi n- end. Prueba a qui t ar el begi n- end si t i enes
83
Ejercicios de Pascal cur i osi dad en ver l o} inc(i);
End; UNTI L caract er = ' . ' ; l ongi t ud : = i ;
WRI TELN; WRI TELN; WRI TELN( ' Las l et r as del abecedari o i nt r oduci das son: ' ) ; WRI TELN;
End.
For i : = 0 To l ongi t ud Do WRI TE(abc[i ], ' ' );
EJ 005( I nput , * program Uses C r t ; var Est an: Set of Char;
Out put ) ;
Ent r ada: Char;
begin
cl r s cr ; Wr i t el n( ' I nt r oduce una f r ase, y t er mi na con un * ( ast er i sco) : ' ) ; wr i t el n; Est an := [ ] ; {Se i ni ci al i za el conj unt o "Est an" como vací o} repeat
ent r ada := upcase( r eadkey) ; ayúscul as con {Se l ee de t ecl ado un car áct er , y se pasa a m l a f unci ón upcase( ) . } if ent r ada i n [ ' A' . . ' Z' , ' {Si el carácter i nt r oduci
' , ' , ' , ' . ' , ' ; ' ] then wr i t e( ent r ada) ; do es una l et r a, un si gno de punt uaci ón, o un espaci o en bl anco, ent onces se muest r a por pant al l a. }
if not( ent r ada i {Si el caráct er
{Se
n Est an) then Est an := Est an + [ ent r ada] no est a en el conj unto "Est an" , ent onces se añade}
until ent r ada = ' * ' ; repi t e el pr oceso hast a que se i nt r oduzca un * }
wr i t el n; wr i t el n; wri t el n( ' Las si gui ent es l et ras han apareci do: ' ) ; {Se pr ocede a most r ar l os car act eres que pert enecen al conj unt o} for {Se
ent r ada := ' A' to ' Z' do recor r en l os val ores desde l a A hasta l a Z} if ent r ada {par a cada
i n Est an then wr i t e ( ent r ada, ' ' ) ; l et ra, si est en el conj unt o "Estan", si gni f i ca que ha si do i ntr oduci do por t ecl ado, y entonces se muest r a por pant al l a} wr i t el n; wr i t el n; wr i t el n( ' Las si gui ent es l et r as NO han apareci do: ' ) ; ost r ar l os que no pert enecen al conj unto. Par a el l o {Ahor a se pr ocede a m se si gue el mi smo pr oceso que ant es, per o most r ando l a l et r a sól o si NO per t enece al conj unt o. } for
ent r ada
:= ' A' to ' if not( ent r ada i n
Z' do Est an)
then wr i
t e ( ent r ada, ' ' ) ;
r eadkey end .
☺Escribir un programa en Pascal que lea una frase introducida desde el teclado y la escriba al revés. PROGRAM EJ ER006; Uses Cr t ; var f r ase: St r i ng; {Se puede hacer con arr ays} var f _i nv: St r i ng; {Cada uno debe el egi r l a manera que mej or ent i da,
84
Ejercicios de Pascal
var i : I nt eger; Begi n Cl rScr;
y cont r ol e, eso si , si empre hay que domi nar l as dos f or mas. }
i : = 0; WRI TELN( ' Escri ba una f r ase: ' ) ; READLN( f r ase) ; WRI TELN; WRI TELN; For i : = 0 t o l engt h( f r ase) do {desde l a pr i mera posi ci on de l a f r ase hasta l a ul t i ma al macenamos l a f r ase en una var i abl e} f _ i nv[ i ] : = f r ase[ i ] ;
End.
FOR i : = l engt h( f r ase) downt o 0 do WRI TE( f _i nv[i ] );
PROGRAM EJ ER006_2; Uses Cr t ; var f r ase: St r i ng; {Se puede hacer con arr ays} {Cada uno debe el egi r l a maner a que mej or ent i da, y cont r ol e, eso si , si empre hay que domi nar l as dos f or mas. } var i : I nt eger; Begi n Cl rScr; i : = 0; WRI TELN( ' Escri ba una f r ase: ' ) ; WRI TELN; READLN( f r ase) ; WRI TELN; FOR i : = l engt h(f r ase) downt o 1 do {Si ponemos " downt o 0" nos pasar i amos en un caract er } WRI TE( f r ase[ i ] ) ;
End.
{Si l o uni co que qui eres es most r ar l a cadena de caract eres a l a i nver sa, en est a ver si on l o hemos hecho uni cament e con una var i abl e}
EJ 006( I nput , * Program Uses C r t ; Const l ong_f rase = 80; Type f rase = array [ 1. Var Frase1: f rase;
Out put ) ; . l ong_f rase]
of
Char ;
i gual es: bool ean; i ndex, max: i nt eger ; Procedure l eer f rase( var arr aychar: {Lee una f r ase desde t ecl ado, y l a
f rase; var i ndex: i nt eger) ; al macena en un array. Además, devuel ve en una var i abl e ent era l a l ongi t ud de l a f r ase. } var l
etr a: Char;
begin
i ndex
:=
0;
repeat
l et r a := r eadkey; i nc(i ndex); wr i t e ( l et r a) ; arr aychar[ i ndex] := l et r a ; until ( i ndex >= l ong_f r ase) or ( l et r a = ' . ' ) ; wri t el n ; end Begin
Cl rScr; wri tel n(' Vi sual i zar una f rase al revés. ' ) ; Wr i t el n( ' Escri be l a f r ase, y t er mi na con un punt o:' ) ; l eer f r ase( f r ase1, max) ; for i ndex := max downto 1 do wri t e( f r ase1[ i ndex] ) ;
85
Ejercicios de Pascal {Para
vi sual i zar l a fr ase al r evés, se recorr e el array que l a conti ene empezando desde el f i nal , que se ha guar dado en l a var i abl e "max". } wr i t el n; r eadkey . end
☺Escribir un programa que compare dos arrays de caracteres y nos diga si son idénticos o no. PROGRAM EJ ER007; Uses Cr t ; var f r ase1, f r ase2: St ri ng; var i ndex, l ong1, l ong2: I nt eger ; {l ong1 y l ong2 son l a l ongi t ud de l as cadenas} var l et ra: Char; var i gual es: Bool ean; Begi n Cl rScr; WRI TELN ( ' I nt r oduzca l a pr i mer a cadena de car acteres, f i nal i zando con un punt o' ) ; WRI TELN; i ndex : = 0; l ong1 : = 0; l ong2 : = 0; REPEAT Begi n l et r a : = Readkey; wr i t e( l et r a); {Readkey no muest r a l os caract er es en pant al l a, wr i t e si } f r ase1[ i ndex] : = l et r a; {vamos al macenando cada l et r a en l a vari abl e} i ndex : = i ndex + 1; End; UNTI L l et ra=' . ' ; l ong1 : = i ndex; {medi mos l a l ongi t ud de l a cadena} WRI TELN; WRI TELN; WRI TE( ' I ntr oduzca l a segunda cadena de caract eres, f i nal i zando con un punto' ) ; WRI TELN; WRI TELN; l et r a : = ' ' ; i ndex : = 0; REPEAT Begi n l et r a : = Readkey; wr i t e ( l et r a) ; f r ase2[ i ndex] : = l et r a; {vamos al macenando cada l et r a en l a vari abl e} i ndex : = i ndex + 1; End; UNTI L l et ra=' . ' ; l ong2 : = i ndex; {medi dos l a l ongi t ud de l a cadena} WRI TELN; WRI TELN; I f l ong1 <> l ong2 t hen {Si l a l ongi t ud es di st i nt a, SEGURO que no son i gual es} WRI TELN ( ' Las cadenas de caract eres son di st i nt as' ) {*Pongo dos mensaj es di st i nt os par a que veamos en que bucl e ha ent r ado en l os di f er ent es casos que se pueden dar } El se Begi n For i ndex : = 0 t o l ong1 do Begi n i f f r ase1[ i ndex] <> f r ase2[ i ndex] t hen Begi n WRI TE( ' Las cadenas de caract eres no son i gual es' ) ; {*Pongo dos mensaj es di st i nt os par a que veamos en que bucl e ha ent r ado en l os di f er ent es casos que se pueden dar } exi t ; End el se i gual es : = t r ue; {al macenamos en una var i abl e que l as cadenas son
86
Ejercicios de Pascal
i gual es}
End; End;
I f i gual es = t r ue then WRI TELN ( ' Las cadenas de caract er es son i gual es' ) ;
End.
* Program EJ 007( I Uses C r t ; Const l ong_f rase Type Var
f rase =
nput , Out put ) ; = 80;
array
{Máxi ma
[ 1. . l ong_f rase]
Frase1, f rase2: f rase; i gual es: bool ean; i ndex: i nt eger ; Procedure l {Lee desde var l
l ongi t ud per mi t i da par a una f r ase. } of
{Ar r ays
Char ; donde se al macenar án l as f r ases. }
eer f rase( var arr aychar: f rase) ; t ecl ado una f r ase, y l a al macena en un
array
de caracteres.
}
etr a: Char; i ndex: i nt eger;
begin
i ndex
:=
0;
repeat
l et r a := r eadkey; i nc(i ndex); wr i t e ( l et r a) ; arr aychar[ i ndex] := l et r a ; until ( i ndex >= l ong_f r ase) or ( l et ra = #13); {La f r ase t er mi na con I NTRO } wri t el n ; end Begin
Cl rScr; Wr i t el n( ' Escri be l a pr i mer a f r ase, y termi na con I NTRO. ' ) ; l eerf rase(f rase1) ; {Leer l a pr i mera f r ase} Wr i t el n( ' Escr i be l a segunda f r ase, y t er mi na con I NTRO. ' ) ; l eerf rase(f rase2) ; {Leer l a segunda f r ase} i ndex := 1; i gual es := (f r ase1[ i ndex] = f r ase2[ i ndex]) ; {Se i ni ci al i za "i gual es" a t r ue o f al se según el pr i mer car áct er de "f r ase1" sea i gual al pr i mer car ácter de "f r ase2" } while i gual es and ( i ndex <= l ong_f r ase) and ( f r ase1[ i ndex] <> #13) do {Mi ent r as que i gual es sea tr ue y no se al cance el f i nal de l a f r ase,
que puede ser por que se det ect e un I NTRO o por que se l l egue a l a l ongi t ud máxi ma de f r ase "l ong_f r ase". }
begin
i nc(i ndex); i gual es := ( f r ase1[ i ndex] = f r ase2[ i ndex] ) end ; if i gual es then wri t el n( ' Las dos f r ases son i dént i cas. ' ) else begin
r eadkey . end
wri t el n( ' Las f r ases NO son i dént i cas. ' ) ; wri t el n(' Di f i eren a part i r del carácter nº' , i ndex) end ;
☺Escribir un programa en Pascal que sume los valores que hay por encima de la diagonal principal. Los valores se pueden asignar como una constante. PROGRAM EJ ER008; Uses Cr t ; Const N = 4; {Numer o de f i l as y col umnas de l a mat r i z} Const mat r i z: Ar ray [ 1. . N, 1. . N] of I nt eger = ( ( 1, 2, 3, 4) , ( 5, 6, 7, 8), ( 9, 10, 11, 12) , ( 13, 14, 15, 16) ) ;
87
Ejercicios de Pascal {Decl ar amos l a mat r i z} var i , j , suma: I nt eger; {i se cor r esponde con l as f i l as y j con l as col umnas}
Begi n Cl r Scr ; {l i mpi amos l a pant al l a}
{l os val ores de l a di agonal pr i nci pal son ( 1, 1) ( 2, 2) ( 3, 3) ( 4, 4) . Como est e ej er ci ci o consi st e en sumar l os val or es que hay enci ma de l a di agonal pri nci pal , sumares: 2 + 3 + 4 + 7 + 8 + 12} {Escr i bi mos l a mat r i z ori gi nal y col oreamos l os val ores que necesi t amos} For i : = 1 t o N Do Begi n For j : = 1 t o N Do Begi n I f j > i t hen Text col or ( 9) {Cambi ando el numer o el egi r emos el col or } El se Text Col or ( 7) ; WRI TE(matr i z[i , j ]: 3) ; End; WRI TELN( ' ' ) ; End; WRI TELN; {Suma de l os val ores de l a pr i mera f i l a de l a mat r i z} i : = 1; FOR j : = 2 t o N do Begi n suma := suma + mat r i z[i , j ] ; WRI TELN( suma) ; {Lo escr i bi mos par a chequear l os val or es, podri amos escri bi r un wri t e al f i nal y ser i a suf i ci ent e} End; {Suma de l os val or es de l a segunda f i l a} i : = 2; FOR j : = 3 t o N do Begi n suma := suma + mat r i z[i , j ] ; WRI TELN( suma) ; End; WRI TELN; {Suma de l os val ores de l a t ercer a f i l a} i : = 3;
End.
FOR j : = 4 t o N do {N ya val e 4, por l o que sol o se r eal i za 1 vez el bucl e} Begi n suma := suma + mat r i z[i , j ] ; WRI TELN( ' El r esul t ado fi nal es: ' , suma) ; End;
t7e20( I nput , * Program Uses C r t ; Const N = 4; mat 1: array [ 1. .
Out put ) ;
N, 1. . N] of i nt eger = ( ( 1, 2, 3, 4) , ( 5, 6, 7, 8) , ( 9, 10, 11, 12) , ( 13, 14, 15, 16) ) ;
Type Var
matr i z =
array
[ 1. . N, 1. . N]
of
i nt eger ;
c ol , mf i l a: i nt eger ; suma: i nt eger; {I r acumul ando l a suma de l os el ement os deseados. }
Begin
Cl rScr; wr i t el n; wr i t el n( ' wr i t el n( ' for mf i l a
Se pr ocede a sumar l os el ement os de l a matr i z' ) ; que se encuent r en por enci ma de l a di agonal : ' ) ; := 1 to N do
88
Ejercicios de Pascal for col { Todos
:= 1 to N do l os el ement os por enci ma de l a di agonal , cumpl en l a pr opi edad de ser su ¡ í ndi ce de col umna mayor que su ¡ í ndi ce de f i l a} begin if c ol > mf i l a then t ext col else text col or( 7) ; {se escr i bi r n en roj o l os
or( 12) el ement os a sumar.
}
got oxy( 4*mcol +18, mf i l a+4) ; wr i t e( mat 1[ mf i l a, mcol ] : 2) ; end
suma := 0; for mf i l a := 1 to N do for col := mf i l a+1 to N do suma := suma + mat 1[ mf i l a, mcol ] ; wr i t e l n; wr i t e l n; wr i t el n( ' La suma de l os el ement os' ) ; wr i t e( ' por enci ma de l a di agonal es: ' ) ; t ext col or( 12); wr i t el n( suma); t ext col or( 7) ; r eadkey end .
☺Escribir un programa en Pascal que almacene en un array de registros los nombres de los alumnos, sus notas parciales y finales. Hallar la nota media y mostrar un mensaje de APTO si el alumno supera o iguala la calificación de 5 o NO APTO si no lo alcanza. Hacerlo para un número de 5 alumnos. PROGRAM EJ ER009; Uses Cr t ; Const numal umnos = 5; Type t not as = r ecor d nombr e2 : Str i ng; n_par ci al 2, n_f i nal 2: Real ; {Not a par ci al y f i nal } end; {Hacemos una f i l a di vi di da en 4 part es: t not as, nombr e2, n_parci al 2, n_f i nal 2. Es como una t abl a de Word, l a cual i r emos r el l enando con l os dat os obt eni dos} notas = Ar r ay[ 1. . numal umnos] of t notas; {Ahor a l a copi amos t ant as veces como numer o de al umnos hay, es deci r , obt enemos 5 f i l as i gual es} var var var var
Begi n Cl rScr;
cl ase : not as; nombre: Str i ng; n_parci al , n_f i nal , n_medi a: Real ; i : I nt eger;
For i : = 1 t o numal umnos Do Begi n WRI TE( ' I nt r oduzca el nombr e del al umno ' , i , ' : ' ) ; READLN( nombr e) ; WRI TE( ' I nt r oduzca su nota parci al : ' ) ; READLN( n_par ci al ) ; WRI TE( ' I nt roduzca su not a fi nal : ' ) ; READLN( n_f i nal ) ; WRI TELN; Wi t h cl ase[ i ] Do Begi n n_parci al 2 : = n_parci al ; n_ f i nal 2 : = n_ f i nal ; nombr e2 : = nombr e; End; End; Cl rScr;
89
Ejercicios de Pascal
WRI TELN( ' NOMBRE' : 25, ' Par ci al ' : 8, ' Fi nal ' : 8, ' Medi a' : 8, ' CALI FI CACI ON' : 15) ; WRI TELN; For i : = 1 t o numal umnos do Wi t h cl ase[ i ] do Begi n n_medi a : = ( n_parci al 2 + n_f i nal 2) / 2; WRI TE( nombr e2: 25, n_par ci al 2: 8: 2, n_f i nal 2: 8: 2) ; t ext col or( 14) ; WRI TE( n_medi a: 8: 2) ; I f n_medi a >= 5 t hen Begi n t ext col or( 11); WRI TELN ( ' APTO : - ) ' : 15) ; End El se Begi n t ext col or( 1) ; WRI TELN ( ' NO APTO : - ( ' : 15); End; text col or( 7) ; End;
End.
* Program EJ 009( I nput , Out put ) ; Uses C r t ; nos = 5; Const numal um Type t i ponotas = record nombr e: String ;
Var
par c i al , f i nal : r eal end ; notascl ase = array [ 1. . Numal umnos] I 3: not ascl ase; not a1, nota2: r eal ; al umno: String ; i ndex: i nt eger ;
of t i
ponot as;
Begin
Cl rScr; for i ndex
:= begin
1
to numal
umnos
do
wr i t e( ' Nombr e de al umno( ' , i ndex, ' ) : ' ) ; r eadl n( al umno); wr i t e( ' Nota del examen parci al : ' ) ; r eadl n( nota1) ; wri t e( ' Not a del examen fi nal : ' ) ; r eadl n( nota2) ; wr i t e l n; wi t h i 3[ i ndex] do begin
nombr e := al umno; parci al := not a1; f i n a l := not a2
end ;
end
Cl rScr; wri t el n( ' NOMBRE ' : 30, ' Par ci al ' : 10, ' Fi nal ' : 10, ' Medi a' : 10, ' for i ndex := 1 to 75 do wr i t e( ' - ' ) ; wr i t el n; for i ndex := 1 to numal umnos do wi t h i 3[ i ndex] do
CALI FI CACI ON' ) ;
begin {Escri
r eadkey end .
bi r l a l i sta con l os resul t ados. } not a1 := ( par c i al +f i nal ) / 2; edi a. } {Se cal cul a l a m wr i t e( nombre: 30, parci al : 10: 2, f i nal : 10: 2) ; wr i t e( not a1: 10: 2) ; {Si l a not a m edi a es superi or a 5, el al umno est *** APTO *** ' ) if not a1 >= 5 then wri t el n( ' NO APTO' ) else wr i t el n( ' ; end
apr obado: }
90
Ejercicios de Pascal
☺ Escribir un programa en Pascal que almacene en un array de registros las características de cada persona: nombre, sexo, edad, peso, color de pelo, color de piel, color de ojos, nacionalidad y teléfono. PROGRAM EJ ER010; Uses Cr t ; Const numper sonas = 2; {Cambi ando est e val or l o podr emos hacer para el numer o de personas que deseemos} Type car act er i st i cas = r ecor d nombr e2, naci onal i dad2, sexo2: St r i ng; edad2: I nt eger ; c_oj os2: Char; t f 2: Real ; {Cr eamos una f i l a con di f erent es apart ados} end; per sonas = Ar r ay[ 1. . numper sonas] of car act er i st i cas; {La copi amos t ant as veces c omo per sonas haya} var persons : per sonas; nombr e, naci onal i dad, sexo: St r i ng; edad, i : I nt eger ; c_oj os: Char; t f : Real ;
Begi n Cl rScr;
For i : = 1 to numpersonas do Begi n WRI TELN( ' I nt r oduzca l os dat os de l a per sona numer o ' , i , ' : ' ) ; WRI TELN; WRI TE( ' Nombr e: ' ) ; READLN( nombr e) ; WRI TE( ' Edad: ' ) ; READLN( edad) ; WRI TE( ' Naci onal i dad: ' ) ; READLN( naci onal i dad) ; Repeat WRI TE( ' Sexo ( H, M) : ' ) ; READLN( sexo) ; Unti l ( sexo = ' H' ) or (sexo = ' M' ) or (sexo = ' h' ) or (sexo = ' m' ); WRI TE( ' Tel ef ono: ' ) ; READLN( t f ) ; Repeat WRI TE( ' Col or de oj os ( A, V, M) : ' ) ; READLN( c_oj os); c_oj os : = UPCASE( c_oj os) ; Unt i l ( c _ oj os = ' A' ) or ( c_ oj os = ' V' ) or ( c _oj os = ' M' ) ; WRI TELN; Wi t h persons[ i ] do Begi n nombr e2 : = nombr e; edad2 : = edad; naci onal i dad2 : = naci onal i dad; I f ( s exo = ' H' ) or ( s exo = ' h' ) t hen sexo2 : = ' S¡ graci as' ; tf2 := tf; c_oj os2 : = c_oj os; {Al macenamos l os dat os dent r o del ar r ay de r egi st r o} End;
End; t ext col or( 11); WRI TELN( ' Nombr e' : 14, ' Edad' : 6, ' Naci onal i dad' : 14, ' Sexo' : 12, ' Tel ef ono' : 12, ' Col or oj os ' : 12) ; t ext col or( 7) ; For i : = 1 to numpersonas do Begi n wi t h per sons[ i ] do Begi n WRI TELN( nombr e2: 14, edad2: 6, Naci onal i dad2: 14, sexo2: 12, t f 2: 12: 0, c_oj os2: 12) ; End; End;
End.
{Las caract eri st i cas que se pi den al usuari o para obt ener i nf ormaci on de l as di f erent es personas son si mpl es ej empl os. Si se qui eren cambi ar, y poner por ej empl o, si est a casado o sol t ero, sus estudi os, et c. , uni cament e habr a que crear nuevas var i abl es o sust i t ui r l as exi st ent es. }
91
Ejercicios de Pascal Program EJ 010B( I nput , Out put ) ; Uses C r t ; Const t ot al muest r eo = 5; Type dat os = record nombr e: String [25]; naci on, r egi on: String [11];
edad: i nt eger; al t ur a: r eal ; sexo, Col Oj os, col Pel o, col Pi el : Char ; end estadi sti ca = array [ 1. . t ot al muestr eo] of dat os;
Var
Gr upo1: Est adi st i ca; nom: String [25]; cont , i ndex: i nt eger ;
Begin
Cl rScr; i ndex := 1; repeat {Repet i
r hast a que se i nt r oduzca un nombre en bl anco: } wi t h grupo1[ i ndex] do
begin
wri t e( ' Nombre (' , i ndex, ' ) : ' ); r eadl n(nom) ; {Leer el nombr e. } if not( nom = ' ' ) then br e vací o, ent onces l eer el r est o de dat os. } {Si no se i ntr oduj o un nom begin
nombr e := nom; wri t e(' Paí s de ori gen: ' ) ; r eadl n( naci on) ; wr i t e( ' r egi ón: ' ) ; r eadl n( regi on) ; wri t e(' Sexo [V/ M] : ' ); repeat sexo := upcase( r eadkey) until s exo i n [ ' V' , ' M' ] ; {r est r i nge l a ent r ada a
"V" o "M". } wri t el n( sexo) ; wri t e(' Al tura [ x. xx met ros]: ' ) ; readl n( al tura); wri t e( ' Col or de oj os [V, A, M, N, G] : ' ) ; repeat
col oj os := upcase( r eadkey) until col oj os i n [ ' V' , ' A' , ' M' , ' N' , ' G' ] ; wr i t e l n( c ol oj os ) ; wri t e(' Col or de pi el [N, B, A, R] : ' ); repeat
c ol pi el := upcase( r eadkey) until col pi el i n [ ' N' , ' B' , ' A' , ' R' ] ; wr i t e l n( c ol pi el ) ; wri t e(' Col or de pel o [N, B, C, R, P] : ' ); repeat
col pel o := upcase( r eadkey) until c ol pel o i n [ ' N' , ' B' , ' C' , ' R' , ' P' ] ; wri t el n(col pel o); wr i t e l n; i ndex := i ndex + 1 {Se i ncr ement a el núm er o de muest r as. } end end until ( i ndex >=
t otal muest r eo)
or
( nom = ' ' ) ;
Cl rScr; wr i t e( ' NOMBRE' : 25, ' NACI ON' : 12, ' REGI ON' : 12, ' EDAD' , ' SEXO' , ' ALT. ' ) ; wr i t e l n( ' OJ OS' , ' PI EL ' , ' PELO' ) ; for cont := 1 to 79 do wr i t e( ' Í ' ) ; wr i t e l n; for cont := 1 to i ndex do {Pr esent ar l os r esul t ados por pant al l a. } wi t h gr upo1[ cont ] do {Cada el ement o del array es un r egi st r o.
}
begin
wr i t e( nombr e: 25, naci on: 12, r egi on: 12, edad: 5, sexo: 5, al t ur a: 5: 2) ; wri t el n(col oj os: 4, col pi el : 5, col pel o: 5)
92
Ejercicios de Pascal
r eadkey end .
end ;
☺Escribir un programa que lea dos números enteros A y B, y obtenga los valores A div B, A mod B. PROGRAM EJ ERDI V; Uses Cr t ; Var A, B: I nt eger ; Var sol uc: I nt eger ; Begi n Cl rScr; WRI TELN( ' I nt r oduzca dos numeros: ' ) ; WRI TELN; WRI TE( ' A: ' ) ; READLN( A) ; WRI TE( ' B: ' ) ; READLN( B) ; WRI TELN; WRI TE( ' A di v B = ' ) ; sol uc : = A di v B; {di v hace l a di vi si on de 2 numeros ent eros} WRI TELN( sol uc); WRI TELN;
End.
WRI TE( ' A mod B = ' ) ; sol uc : = A mod B; {mod muest r a el r est o de una di vi si on de 2 numer os ent er os} WRI TELN( sol uc);
program ej Uses C r t ; var A, B, begin
erdi vb( I nput , Out put ) ; aDb, aMb: i nt eger ;
Cl rScr; wr i t e(' Di me un número ent ero: ' ) ; r eadl n( A) ; wr i t e( ' Di me otr o númer o ent er o: ' ) ; r eadl n( B) ; aDb := A div B; aMb := A mod B; wri tel n(' A div B = ' , aDb); wri tel n(' A mod B = ' , aMb); r eadkey . end
☺ Escribir un programa que convierta un número de segundos en su equivalente en minutos y segundos. PROGRAM EJ ERSEG; Uses Cr t ; var seg0, seg, mi n: I nt eger ; Begi n Cl rScr; WRI TE( ' I nt r oduzca l os segundos: ' ) ; READLN( seg0); WRI TELN; mi n : = seg0 di v 60; seg : = seg0 mod 60; End.
WRI TE( seg0, ' segundos son ' , mi n, ' mi nut os y ' , seg, ' segundos. ' ) ;
program ej er segb( I
nput , Out put ) ; uses Cr t ; var i ni seg, segundos, mi nut os: i nt eger ;
begin
Cl rScr; wr i t e( ' Di me un númer o de segundos: ' ) ; readl n(i ni seg) ;
93
Ejercicios de Pascal mi nut os := i ni seg div 60; {Cada 60 segundos, son 1 mi nut o} segundos := i ni seg mod 60; {Son l os s egundos que sobr an de hacer gr upos de 60 segundos } wr i t el n( i ni seg, ' segundos son ' , mi nut os, ' mi nut os y ' , segundos, ' segundos. ' ) ; r eadkey end .
☺ Imprimir la media de los elementos que se encuentran en las posiciones pares y la media de los elementos que se encuentran en las posiciones impares de un vector numérica. PROGRAM EJ EMEDI A; Uses Cr t ; var sumapar , sumai mp, n_par , n_i mp: I nt eger; var i : I nteger; var medi a_p, medi a_i : Real ; cons t num=10; var numeros: Ar r ay[ 1. . num] of Real ; Begi n Cl rScr; WRI TELN( ' I nt r oduzca l os ' , num, ' numer os' ) ; WRI TELN; sumapar sumai mp n_par n_i mp
: = 0; : = 0; : = 0; : = 0; {I ni ci al i zamos l as var i abl es a 0 par a evi t ar sorpr esas}
For i : = 1 t o 10 do Begi n WRI TE( ' I nt r oduzca el numer o ' , i , ' : ' ) ; READLN( numer os[ i ] ) ; I f num mod 2 = 0 t hen {para que sea par, el r est o de una di vi si on debe ser 0} Begi n n_par : = n_par + 1; {t ambi en se puede hacer con “i nc(n_par ) "} sumapar : = sumapar + num; End El se {si no es par , DEBE ser i mpar } Begi n n_i mp : = n_i mp + 1; sumai mp : = sumai mp + num; End; End; {Vamos a hal l ar l a medi a de l os par es y l os i mpar es}
End.
WRI TELN; medi a_p : = sumapar / medi a_i : = sumai mp / WRI TELN( ' La medi a de WRI TELN; WRI TELN( ' La medi a de
n_par ; n_i mp; l os numer os par es es: ' , medi a_p: 5: 2); l os numeros i mpares es: ' , medi a_i : 5: 2);
ej Program
emedi ab( I nput , Out put ) ; uses Cr t ; Const maxnum = 5; Type l i st adenum eros = array [ 1. . maxnum] of r eal ; Var l i sta: l i stadenumeros; par es, i mpar es, i ndex: i nt eger ; i medi a, pmedi a, i suma, psuma: r eal ; Begin
Cl rScr; wr i t el n( ' Dada una l i st a de númer os, cal cul ar l a medi a de l os que ocupan ' ) ; wr i t el n( ' posi ci ones par es, y l a de l os que ocupan posi ci ones i mpares. ' ) ; wr i t el n; wr i t el n( ' I nt r oduce l os ' , maxnum, ' númer os de l a l i st a: ' ) ; {acumul ador de i mpar es } i suma := 0; {acumul ador de par es } ps uma := 0;
94
Ejercicios de Pascal {cont ador de par es} par es := 0; i mpares := 0; {cont ador de i mpares} for i ndex := 1 to maxnum do begin
wr i t e ( ' El ement o ' , i ndex, ' : ' ) ; readl n(l i sta[i ndex]) ; {l eer el ement o de l a l i st a. } if odd(i ndex) then {si ocupa posi ci ón i mpar : } begin
i nc( i mpar es) ; {i ncr ement ar cont ador de númer os i mpares, } i suma := i suma + l i sta[i ndex] {sumar al acumul ador de i mpar es}
end else begin {si no ocupa
posi ci ón i mpar : }
i nc(par es); {i ncr ement ar cont ador de númer os par es, } ps uma := psuma + l i st a[i ndex] {sumar al acum ul ador de par es} end end ; a := i suma a := psuma
i medi / i mpares; {cal cul ar l a medi a de i mpares } pmedi / par es; edi a de pares } {cal cul ar l a m wr i t e l n; wr i t el n( i mpares, ' el ement os i mpar es y ' , par es, ' el ement os par es. ' ) ; wr i t e l n; wr i t el n( ' Medi a de l os el ement os i mpares: ' , i medi a: 10: 5) ; wr i t el n( ' Medi a de l os el ement os par es. . : ' , pmedi a:10: 5) ; r eadkey . end
☺ Escribir un programa que muestre en pantalla VS2 realizado por nosotros (usar procedimiento). PROGRAM VS2 ( I NPUT, OUTPUT) ; Uses Cr t ; PROCEDURE l et r a_V; BEGI N WRI TELN( ' V V' ) ; WRI TELN( ' V V ' ); WRI TELN( ' V V ' ); WRI TELN( ' V V ' ); WRI TELN( ' V ' ); END; PROCEDURE l et r a_S; BEGI N WRI TELN( ' SSSSSSS' ) ; WRI TELN( ' S ' ); WRI TELN( ' SSSSSSS' ) ; WRI TELN( ' S' ) ; WRI TELN( ' SSSSSSS' ) ; END; PROCEDURE num_2; BEGI N WRI TELN( ' 2222222' ) ; WRI TELN( ' 2' ) ; WRI TELN( ' 2222222' ) ; WRI TELN( ' 2 ' ); WRI TELN( ' 2222222' ) ; END; BEGI N {empezamos el pr ogr ama pr i nci pal } Cl rScr; l etr a_V; WRI TELN; l etr a_S; WRI TELN; num_2; REPEAT Unt i l Keypr essed; {mant enemos l a pant al l a vi endo l a sol uci ón hast a que se pul se una t ecl a} END.
95
Ejercicios de Pascal
☺ Hacer un programa que incremente un número usando un procedimiento. PROGRAM i ncr ement ar ( I NPUT, OUTPUT) ; Uses Cr t ; VAR num: I NTEGER; PROCEDURE i ncr ement o; BEGI N num : = num + 1; END; BEGI N Cl rScr; WRI TE( ' I nt r oduzca un numer o par a i ncr ement ar l e: ' ) ; READLN( num) ; WRI TELN; i ncr ement o; WRI TE( ' El numer o, i ncr ement ado en una uni dad, es: ' , num) ; REPEAT Unt i l Keypr essed; END.
☺ Escribir un programa que, utilizando procedimientos con parámetros, lea desde el teclado las unidades y el precio que quiere comprar, y en función de las unidades introducidas le haga un descuento o no. PROGRAM pr oduct os ( I NPUT, OUTPUT) ; Uses Cr t ; CONST Desc = 15; {l e har emos un 15% de descuent o} VAR Uni dades, preci o: I NTEGER; Tot al , cant Desc: REAL; PROCEDURE descuent o ( VAR cant i dad, descuent o: REAL; porc i ent o: I NTEGER) ; BEGI N Descuent o : = cant i dad * por ci ent o/ 100; {el descuent o es el 15% del t otal } Cant i dad : = cant i dad - descuent o; {l a cant i dad f i nal es l a cant i dad - el descuent o} END; BEGI N Cl rScr; WRI TE( ' I ntr oduzca el numero de uni dades: ' ) ; READLN( uni dades) ; WRI TELN; WRI TE( ' I nt roduzca el preci o: ' ) ; READLN( pr eci o) ; WRI TELN; Tot al : = pr eci o * uni dades; {Cal cul amos el t ot al } I F ( uni dades > 5) THEN descuent o ( t ot al , cant Desc, desc) {apl i camos el descuent o} ELSE cant Desc : = 0; WRI TELN( ' Tot al : ' , t ot al : 5: 2, ' Descuent o: ' , cant desc:5: 2) ; {escri bi mos en pant al l a el t otal y el descuent o} REPEAT Unt i l Keypr essed; END.
☺ Hacer un programa que calcule el area de un círculo (usar un procedimiento). PROGRAM ar ea ( I NPUT, OUTPUT) ; Uses Cr t ; VAR r adi oci r c, r esul t ado: REAL; PROCEDURE ar eaci r cul o ( r adi o: REAL; VAR ar ea: REAL) ; CONST pi = 3. 1415926535; BEGI N area : = pi * SQR( radi o) ; END;
BEGI N Cl rScr;
WRI TE( ' I nt r oduzca el r adi o del ci r cul o: ' ) ; READLN( r adi oci r c) ; WRI TELN; I F (r adi oci rc > 0) THEN BEGI N areaci rcul o(r adi oci rc, resul t ado);
96
Ejercicios de Pascal {r adi oci r c se cor r esponde con r adi o y r esul t ado con area} GOTOXY( 20, 5) ; WRI TELN( ' El area del ci rcul o es: ' , resul t ado: 8: 2) ;
END ELSE WRI TE( ' No puede i nt r oduci r un r adi o negati vo. ' ) ; END.
REPEAT Unt i l Keypr essed;
☺ Escribir un programa, que con funciones, verifique si un caracter introducido es un número o no. PROGRAM escar act er ( I NPUT, OUTPUT) ; Uses Cr t ; VAR car ac: CHAR; FUNCTI ON veri f i car ( car act er : CHAR) : BOOLEAN; BEGI N veri f i car : = (caracter >= ' 0' ) AND (caract er <= ' 9' ); END; BEGI N Cl rScr;
END.
WRI TE( ' I nt r oduce un car act er para ver si es numer i co. ' ) ; READLN( carac); WRI TELN; I F ver i f i car ( car ac) THEN WRI TELN( ' El caracter i nt r oduci do es numer i co. ' ) ELSE WRI TELN( ' El caracter i nt r oduci do no es numeri co. ' ) ; REPEAT Unt i l Keypr essed;
☺ Escribir un programa en Pascal que reciba un numero del 1 al 12 desde el teclado y muestre el número de dias correspondiente al mes que corresponda con ese día (usar funciones). PROGRAM di ames ( I NPUT, OUTPUT) ; Uses Cr t ; VAR mes: I NTEGER; FUNCTI ON di a_mes ( i : I NTEGER) : I NTEGER; BEGI N CASE i OF 1, 3, 5, 7, 8, 10, 12: di a_mes : = 31; 4, 6, 9, 11: di a_mes : = 30; 2: di a_mes : = 28; {emi t i r emos un mensaj e di ci endo que puede ser bi si esto} END; END; BEGI N Cl rScr; WRI TE( ' I nt r oduzca un numer o del 1 al 12: ' ) ; READLN( mes) ; WRI TELN; I F ( mes < 1) OR ( mes > 12) THEN WRI TE( ' El numer o i nt r oduci do no cor r esponde a ni ngun mes. ' ) ELSE I F mes = 2 THEN WRI TE( ' Febr er o ti ene 28 di as, si es bi si est o 29' ) ELSE WRI TE( ' El mes t i ene ' , di a_mes( mes) , ' di as. ' ) ; REPEAT Unt i l Keypr essed; END.
☺ Eliminar los espacios que existen delante del caracter salto de carro de un vector que contiene un texto de tamaño N. El final del texto de marcará con *. PROGRAM t ext o ( I NPUT, OUTPUT) ; Uses Cr t ; CONST l ongi t ud = 80; Type f r ase = ar r ay [ 1. . l ongi t ud] of CHAR; VAR f r ase1: f r ase; bl ancos, cont a, cont 2, l ong: I NTEGER;
97
Ejercicios de Pascal l etr a: CHAR; PROCEDURE l eer f r ase( var ar r aychar: f r ase; var pos_i nt r o, i ndex: i nt eger) ; VAR l et r a: CHAR; pul sado: bool ean; BEGI N WRI TELN( ' La f r ase acaba cuando se pul se *' ) ; pul sado : = f al se; i : = 0; REPEAT l etr a := readkey; inc(i); I F l etr a <> #13 t hen BEGI N WRI TE( l et r a) ; ar r a yc har [ i ] : = l et r a; END ELSE BEGI N I F NOT pul sado THEN BEGI N pul sado : = t rue; wri t e( ' ' ) ; ar r a yc har [ i ] : = l et r a; pos _i nt r o : = i END ELSE dec ( i ) ; END; UNTI L (i >= l ongi t ud) or ( l etr a =' *' ); I F l et r a =' *' THEN des( i ndex); WRI TELN;
END; BEGI N {pr ogr ama pri nci pal } Cl rScr; WRI TELN( ' Escr i be una f r ase con bl ancos y un I NTRO en medi o. ' ) ; l eer f r ase( f r ase1, cont a, l ong) ; cont 2=cont a - 1; {Posi ci on ant eri or a l a del I NTRO} numbl ancos : = 0; WHI LE (f r ase1[ cont 2] = ' ' ) and( cont s >=1) DO BEGI N i nc(bl ancos); dec( cont 2){decrement ar l a posi ci on del arr ay para comprobarl a} END; {Par a el i mi nar l os bl ancos, se copi an l os car acteres que ocupan l as posi ci ones si gui ent es a l as del I NTRO, enci ma de l as que ocupan l os bl ancos hast a el f i nal de l a f rase. } FOR cont 2 : = ( cont a - bl ancos) t o ( l ong - numbl ancos) DO f r ase[ cont 2] : = f r ase1[ cont 2 + bl ancos]; WRI TELN; WRI TELN( ' La f r ase si n bl ancos ant es del I NTRO: ' ) ; WRI TELN; FOR cont 2 : = 1 TO ( l ong - numbl ancos) DO I F f r ase1[ cont 2] <> #13 THEN WRI TE( f r ase1[ cont 2] ) ELSE WRI TE( ' ' ) ;
end.
Readkey
WRI TELN;
☺ Escribir un programa en Pascal que transforme numeros entre 0 y 999 a numeros romanos. PROGRAM r oma; Uses Cr t ;
98
Ejercicios de Pascal VAR cont ador , di gi t os: I nt eger ; VAR num_r omano, r omano: St r i ng; VAR num: CHAR; BEGI N Cl rScr; t extcol or ( 10) ; {7 es el col or de l as l et r as por def ect o, con est a f unci on cambi amos su val or } desee. ' );
WRI TELN( ' Most r ar emos el equi val ent e en numer os r omanos del numer o que WRI TELN; WRI TE( ' ¨Cuant os di gi t os ti ene el numero que va a i nt r oduci r ? ' ) ; READLN( di gi t os); WHI LE ( di gi t os > 3) or ( di gi t os < 1) DO BEGI N WRI TE( ' Debe est ar ent r e 1 y 3, i nt r oduzca l os di gi t os: ' ) ; READLN( di gi t os); I F di gi t os = 1 THEN cont ador : = 1 ELSE I F di gi t os = 2 THEN cont ador : = 2 ELSE I F di gi t os = 3 THEN cont ador : = 3 END; WRI TELN; WRI TE( ' I nt r oduzca el numer o: ' ) ; REPEAT num : = Readkey; WRI TE( num) ; I F cont ador = 1 THEN CASE num OF ' 1' : r omano : = ' I ' ; ' 2' : r omano : = ' I I ' ; ' 3' : r omano : = ' I I I ' ; ' 4' : r omano : = ' I V' ; ' 5' : r o mano : = ' V' ; ' 6' : r omano : = ' VI ' ; ' 7' : r omano : = ' VI I ' ; ' 8' : r omano : = ' VI I I ' ; ' 9' : r omano : = ' I X' ; ' 0' : r omano : = ' ' ; END ELSE I F num = ' . ' THEN CONTI NUE ELSE I F cont ador = 2 THEN CASE NUM OF ' 1' : r o mano : = ' X' ; ' 2' : romano : = ' XX' ; ' 3' : r omano : = ' XXX' ; ' 4' : r omano : = ' XL' ; ' 5' : r o mano : = ' L ' ; ' 6' : r omano : = ' LX' ; ' 7' : romano := ' LXX' ; ' 8' : r omano : = ' LXXX' ; ' 9' : romano := ' XC' ; ' 0' : r omano : = ' ' ; END ELSE I F num = ' . ' THEN CONTI NUE ELSE I F cont ador = 3 THEN CASE num OF ' 1' : r o mano : = ' C' ; ' 2' : romano := ' CC' ; ' 3' : r omano : = ' CCC' ; ' 4' : romano := ' CD' ; ' 5' : r omano : = ' D' ; ' 6' : romano := ' DC' ; ' 7' : r omano := ' DCC' ; ' 8' : r omano : = ' DCCC' ; ' 9' : r omano : = ' CM' ; ' 0' : r omano : = ' ' ; END;
99
Ejercicios de Pascal
num_r omano : = num_r omano + r omano; cont ador : = cont ador - 1 ; UNTI L cont ador < 1; WRI TELN; WRI TELN; I F num_r omano = ' ' THEN WRI TE( ' - Los romanos no usaban el 0!' ) {Es ci ert o, como l o hari an si n el } ELSE BEGI N WRI TE( ' En numeros r omanos es i gual a: ' ) ; textcol or( 9); WRI TE( num_r omano) ; END; REPEAT Unt i l Keypr essed;
END.
☺ Hacer un program que lea los 3 lados de un triangulo desde el teclado y nos diga si es equilatero (3 lados iguales), isosceles (2 lados iguales) o escalano (3 lados desiguales). PROGRAM t r i angul o; Uses Cr t ; VAR l ado1, l ado2, l ado3: REAL; BEGI N Cl rScr; WRI TELN( ' I nt r oduzca l os 3 l ados de un t r i angul o: ' ) ; WRI TELN; WRI TE( ' Lado 1: ' ) ; READLN( l ado1) ; WRI TE( ' Lado 2: ' ) ; READLN( l ado2) ; WRI TE( ' Lado 3: ' ) ; READLN( l ado3) ; WRI TELN; I F (l ado1 = l ado2) and ( l ado2 = l ado3) Then WRI TE( ' El t ri angul o es equi l at er o. ' ) ELSE I F ( l ado1 = l ado2) OR ( l ado2 = l ado3) OR ( l ado1 = l ado3) Then WRI TE( ' El t ri angul o es i soscel es. ' ) ELSE WRI TE( ' El t ri angul o es escal eno. ' ) ; END.
REPEAT Unt i l Keypr essed;
☺ Decir si una frase es o no un palíndromo, es decir, si se lee igual de derecha a a izquierda que de izquierda a derecha. PROGRAM pal i ndr omo; USES cr t ; VAR cad1, cad2: STRI NG; es_pal : bool ean; {es pal í ndr omo - l o usamos para guardar en una vari abl e l a r espuest a a si es un pal í ndr omo o no} PROCEDURE i nver t i r ( cad1: STRI NG; VAR cad2: STRI NG) ; VAR i : i nt eger ; BEGI N cad2: =' ' ; FOR i : =l engt h( cad1) DOWNTO 1 DO cad2: =cad2+copy( cad1, i , 1) ; END; PROCEDURE compar ar ( cad1: st r i ng; cad2: st r i ng; VAR sw: bool ean) ;
100
Ejercicios de Pascal
VAR
i,j:integer; car1,car2: str i ng; BEGI N es_pal : =t r ue; I F l engt h( cad1) <> l engt h( cad2) THEN {Si l a l ongi t ud de l as cadenas es di st i nt a} es_pal : =f al se {no puede ser un pal í ndr omo} ELSE BEGI N i : =1; j : =1; WHI LE (es_ pal ) AND ( i <= l engt h(c ad1) ) DO BEGI N car 1: =copy(cad1, i , 1) ; car 2: =copy(cad2, j , 1) ; I F car 1 = ' ' THEN BEGI N i : =i +1; car 1: =copy(cad1, i , 1) ; END; I F car 2 = ' ' THEN BEGI N j : =j +1; car 2: =copy(cad2, j , 1) ; END; I F car 1=car 2 THEN es_pal : =t r ue ELSE es_pal : =f al se; i : =i +1; j : =j +1; END; END; END;
BEGI N Cl rScr; got oxy( 3, 3) ; WRI TE ( ' ESCRI BA UNA FRASE: ' ) ; READLN ( CAD1) ; i nver t i r( cad1, cad2) ; comparar ( cad1, cad2, es_pal ) ; I F es_pal = t r ue THEN BEGI N got oxy( 10, 13) ; WRI TELN ( ' LA FRASE ESCRI TA ES UN PALI NDROMO' ) ; END ELSE BEGI N got oxy( 10, 13) ; WRI TELN ( ' LA FRASE ESCRI TA NO ES UN PALI NDROMO' ) ; END; REPEAT Unt i l Keypr essed; END.
☺ Escribir un programa en Pascal que obtenga los factores primos de un número introducido desde el teclado. PROGRAM f act or espr i mos; USES cr t ; VAR n: I NTEGER; pr ocedur e f act or es( n: i nt eger ) ; VAR i , j : I NTEGER; f i n: BOOLEAN; BEGI N WRI TELN( ' Los f act or es pr i mos de ' , n, ' son: ' ) ; WRI TELN; FOR i : =n DOWNTO 1 DO BEGI N I F ( n MOD i ) =0 THEN BEGI N f i n: =f al s e; j : =i - 1; WHI LE ( i >1) AND ( NOT f i n) DO BEGI N I F ( i MOD j ) =0 THEN f i n: =t rue; I F j =1 THEN
101
Ejercicios de Pascal
END;
END;
END;
WRI TE( i : 2) ; j : =j - 1; END;
BEGI N {pr ogr ama pri nci pal } REPEAT Cl rScr; WRI TE( ' I nt r oduzca un numero ent ero posi t i vo: ' ) ; READLN( n) ; WRI TELN; UNTI L n>0; factores(n); REPEAT UNTI L Keypr essed; END.
☺ Escribir un programa en Pascal que escriba, por un lado, de la A a la Z en mayúsculas y por otro de z hasta a en minúsculas. PROGRAM abc; USES cr t ; VAR cont _az: byte; cont _za: byte; BEGI N Cl rScr; cont _az: =65; {Tomamos el val or donde comi enza l a l et r a A y l l egar emos hast a el val or de Z} cont _z a: =122; {Tomamos el val oz de z y l l egamos hast a a} gotoxy(5, 5) ; REPEAT BEGI N WRI TE ( chr ( cont _az): 2) ; i nc(cont _az); END UNTI L cont _az=91; gotoxy(5, 10) ; REPEAT BEGI N WRI TE ( chr ( cont _za): 2) ; dec( cont _za) ; END UNTI L cont _z a=96; END.
REPEAT UNTI L Keypr essed;
☺ Escribir un programa en Pascal que genere 6 números aleatorios con un rango de entre 1 y 49, al igual que se hace en la lotería. PROGRAM l ot er i apr i mi t i va; USES cr t ; TYPE casi l l a=arr ay[ 1. . 6] OF I NTEGER; VAR num, posi bl e, cont , i : I NTEGER; ok: bool ean; cas : c as i l l a; BEGI N Cl rScr; num: =1; cont : =1; ok: =t r ue;
102
Ejercicios de Pascal
posi bl e: =0; REPEAT I F cont =1 THEN BEGI N r andomi ze; cas[ num] : =r andom( 49) ; i nc(num) ; i nc(cont ) ; END ELSE BEGI N REPEAT posi bl e: =r andom( 49); ok: =t r ue; FOR i : =1 TO 6 DO BEGI N I F cas[ i ] =posi bl e THEN ok: =f al se; END; I F ok THEN BEGI N cas[ num] : =posi bl e; i nc(num) ; i nc(cont ) ; END UNTI L ok END UNTI L cont =7; gotoxy( 10, 10) ; FOR i : =1 TO 6 DO wr i t e ( cas [ i ] : 4) ;
REPEAT UNTI L Keypr essed; END.
☺ Escribir un programa en Pascal que realice un juego de dados entre 2 jugadores. PROGRAM dados; USES cr t ; VAR dado1, dado2, pos: BYTE; suma1, suma2, sumat 1, sumat 2, t i r ada: I NTEGER; j ugador : I NTEGER; nombr e: STRI NG; BEGI N Cl rScr; dado1: =0; dado2: =0; suma1: =0; suma2: =0; t i r ada:=1; pos: =0; WRI TE( ' I ntr oduzca su nombre: ' ) ; READLN( nombre) ; r andomi ze; got oxy( 25, 3) ; WRI TE( nombre, ' got oxy( 25, 4) ; WRI TE( ' - - - - - - - - gotoxy( 10, 6) ; WRI TE( ' TI RADA 1' ) ; gotoxy( 10, 8) ; WRI TE( ' TI RADA 2' ) ; gotoxy( 10, 10) ; WRI TE( ' TI RADA 3' ) ;
J UGADOR 2' ) ; -- -- - -- - -' );
REPEAT dado1 : = r andom( 6) + 1; dado2 : = r andom( 6) + 1; gotoxy( 26, 6+pos); WRI TE( dado1, ' , ' , dado2) ; suma1 : = dado1 + dado2; sumat 1 : = sumat 1 + suma1; dado1 : = r andom( 6) + 1; dado2 : = r andom( 6) + 1; gotoxy( 44, 6+pos); WRI TE( dado1, ' , ' , dado2) ; suma2 : = dado1 + dado2; sumat 2 : = sumat 2 + suma2;
103
Ejercicios de Pascal
i nc ( t i r a da) ; pos : = pos + 2; UNTI L ti r ada = 4; I F s umat 1 > sumat 2 THEN BEGI N got oxy( 25, 15) ; WRI TELN( ' Ha ganado ' , nombre, ' . ENHORABUENA' ) ; END ELSE BEGI N I F s umat 1 < sumat 2 THEN BEGI N got oxy( 25, 15) ; WRI TELN( ' Ha ganado el j ugador 2, ust ed pi erde' ) ; END ELSE BEGI N got oxy( 25, 15) ; WRI TE( ' Han empat ado' ) END; END; got oxy( 10, 20) ; WRI TE( ' La suma del j ugador 1 es: ' , sumat 1); got oxy( 10, 22) ; WRI TE( ' La suma del j ugador 2 es: ' , sumat 2);
REPEAT UNTI L Keypr essed END.
☺ Se pide un programa en PASCAL que lea una temperatura en la escala Fahrenheit, la convierta en la correspondiente temperatura en la escala Celsius, y muestre las dos temperaturas justificadas a la derecha. El programa principal ha de apoyarse en una función FaC que, dado un entero (la temperatura en la escala Fahrenheit), devuelva la correspondiente temperatura en la escala Celsius (redondeando). PROGRAM grados( i nput, out put ) ; Uses Cr t ; VAR f , c: i nteger;
{t emperat ura en Fahr enhei t y Cel si us}
FUNCTI ON FaC( f ahr enhei t : i nt eger ) : i nt eger; BEGI N {FaC} FaC: = round( 5/ 9 * ( f - 32. 0) ) END; {FaC} BEGI N {p. p} Cl rScr; WRI TE( ' Escr i be l a temper atura en Fahr enhei t : ' ) ; READLN( f ) ; WRI TELN; WRI TELN( ' Conver si on de t emperat ur as: ' ) ; WRI TELN( ' Fahrenhei t : ' , f : 5) ; WRI TELN( ' Cel si us: ' , FaC( f ) : 5) ; REPEAT Unt i l Keypr essed; END. {p. p}
☺ Realice un programa en Pascal que, mediante una función, calcule el resultado de restar el doble de un numero a su cuadrado. Program ej f un( i nput , out put ) ; Uses Cr t ; VAR a, r esul t ado: I nt eger ; FUNCTI ON cal c( x: i nt eger ) : i nt eger; BEGI N {cal c} c al c : = s qr ( x) - ( 2* x) ; END; {cal c} BEGI N {p. p}
104
Ejercicios de Pascal
Cl rScr;
WRI TE( ' I ntr oduzca un numero: ' ) ; READLN( a) ; resul t ado : = cal c(a) ; WRI TELN; WRI TELN( ' Resul t ado de sqr ( x) - ( 2*x) = ' , r esul t ado) ; REPEAT Unt i l Keypr essed; END. {p. p}
☺ Hacer un programa que obtenga la distancia entre dos puntos que se encuentran en el plano. Program vector( i nput , out put ) ; Uses Cr t ; VAR x1, x2, y1, y2: Real ; r esul t ado: Real ; FUNCTI ON di st anci a(VAR cx1, cx2, Cy1, Cy2: Real ) : Real ; BEGI N {di st anci a} di stanci a : = sqrt ( sqr( abs(cx2- cx1) ) + sqr ( abs(Cy2- Cy1) ) ) ; END; {di st anci a} BEGI N {p. p} Cl rScr; WRI TELN( ' I nt r oduzca l as dos coor denadas de cada punt o: ' ) ; WRI TELN; WRI TE( ' WRI TE( ' WRI TELN; WRI TE( ' WRI TE( ' WRI TELN;
x1: ' ) ; READLN( x1) ; y1: ' ) ; READLN( y1) ; x2: ' ) ; READLN( x2) ; Y2: ' ) ; READLN( y2) ;
r esul t ado : = di stanci a( x1, x2, y1, y2) ; WRI TE( ' La di st anci a ent r e l os dos punt os es de: ' ) ; Text col or ( 9) ; WRI TE( r esul t ado: 5: 5) ; REPEAT Unt i l Keypr essed; END. {p. p}
☺ Escriba un programa PASCAL que calcule el máximo y el mínimo de dos números. Sin embargo,dicho programa debe apoyarse en la subprogramación. Con tal fin, proceda como sigue: a) Escriba un procedimiento Leer que lea dos números reales. b) Escriba una función que dados dos números reales, devuelva el máximo de ellos. c) Escriba una función que dados dos números reales, devuelva el mínimo de ellos. d) Escriba el programa principal que lea dos números reales, obtenga el mayor y el menor de ellos, y muestre el resultado en pantalla de la siguiente forma. (los números reales justificado a la derecha y con dos dígitos después de la coma): Primer número --- Segundo número --- Mayor --- Menor 220.59 356.85 356.85 220.59 PROGRAM maxmi n( i nput , out put ) ; Uses Cr t ; VAR x, y:r eal ; PROCEDURE l eer ( VAR a, b: r eal ) ; BEGI N {l eer}
105
Ejercicios de Pascal WRI TELN( ' I ntr oduzca dos numeros r eal es: ' ) ; WRI TE( ' 1: ' ) ; READLN( a); WRI TE( ' 2: ' ) ; READLN( b) ; END; {l eer } FUNCTI ON max( a, b: r eal ) : r eal ; BEGI N {max} max : = or d( a>b) *a+or d( a<=b) *b END; {max} FUNCTI ON mi n( a, b: r eal ) : r eal ; BEGI N {mi n} mi n : = - max(- a, - b) ; END; {mi n} BEGI N {p. p} Cl rScr; l eer ( x, y) ; WRI TELN( ' Pr i mer Numer o Segundo Numer o Mayor WRI TELN( x:13: 2, y: 18: 2, max( x, y): 9: 2, mi n( x, y): 9: 2) ;
Menor' ) ;
REPEAT Unti l Keypr essed; END. {p. p}
☺ Escriba un programa que pida al usuario introducir un carác ter, y le informa si se trata de una vocal o no. Con tal fin, escriba los siguientes subprogramas: a) Una función EsMayuscula, que determine si un cará cter es mayúscula o no. b) Una función AMinuscula que, a partir de un carácter c, devuelva el carácter en minúscula con tal de que sea mayúscula. De lo contrario, debe devolver el mismo carácter c. c) Una función EsVocal que determine si un car ácter es una vocal o no. El programa principal ha de apoyarse en la función EsVocal. PROGRAM mayus( i nput , out put ) ; Uses Cr t ; VAR car : char; FUNCTI ON EsMayuscul a BEGI N {EsMayuscul EsMayuscul a END; {EsMayuscul
( c : char ) : bool ean; a} : = ( c >= ' A' ) and ( c <= ' Z' ) a}
FUNCTI ON AMi nuscul a ( c: char) : char ; CONST of f set = ord(' a' ) - ord( ' A' ); BEGI N {AMi nuscul a} I F esMayuscul a( c) THEN AMi nuscul a : = chr ( ord(c) + of f set ) ELSE AMi nuscul a : = c END; {AMi nuscul a} FUNCTI ON EsVocal ( c: char ) : bool ean; VAR mi nus: char ; BEGI N {EsVocal } mi nus : = AMi nuscul a(c) ; EsVocal : = ( mi nus = ' a' ) OR ( mi nus = ' e' ) OR ( mi nus = ' i ' ) OR ( mi nus = ' o' ) OR ( mi nus = ' u' ) END; {EsVocal } BEGI N {p. p} Cl rScr; WRI TE( ' I nt r oduzca un car act er : ' ) ; READLN( car ) ; I F EsVocal ( car) THEN WRI TELN( ' El caracter ' ' ' , car, ' ' ' es una vocal ' ) ELSE
106
Ejercicios de Pascal wr i t e l n( ' El c ar c t er ' ' ' , c ar , ' ' ' NO es una voc al ' ) ; REPEAT Unti l Keypr essed; END. {p. p}
☺ Construye un programa en Pascal que realice la conversión de moneda de dólares de USA a dólares Canadienses y pida la fecha para saber el día que se realizó. PROGRAM Conver t i r Moneda1( i nput , out put ) ; Uses Cr t ; VAR MesAct ual , Di aAct ual , AnnoAct ual , Codi goMoneda : i nt eger;
{mes act ual } {di a actual } {anno act ual } {i ndi ca el t i po de l a moneda a ser conver t i da}
PROCEDURE Most r ar I nst r ucci ones; BEGI N WRI TELN( ' Est e pr ogr ama convi ert e moneda est adouni dense a' ) ; WRI TELN( ' canadi ense y vi cever sa. I nt r oduzca' ) ; WRI TELN( ' 1 par a convert i r moneda est adouni dense a canadi ense' ) ; WRI TE( ' 2 par a conver t i r moneda canadi ense a est adouni dense: ' ) END {Most r arI nst r ucci ones}; PROCEDURE Conver t i r USACanada; VAR USACanada, {val or de cambi o} Dol ares : r eal ; {cant i dad de dol ares estadouni denses a conver t i r } BEGI N WRI TE( ' I nt r oduzca el val or de cambi o act ual EE. UU. - Canada: ' ) ; READLN( USACanada ) ; WRI TE( ' I nt r oduzca l a cant i dad en dol ares est adouni denses: ' ) ; READLN( Dol ar es ) ; WRI TELN( ' Es equi val ent e a ' , USACanada * Dol ares: 4: 2, ' dol ares canadi enses. ' ) END {Conver t i r USACanada}; PROCEDURE Conver t i r CanadaAUS; VAR CanadaAUS, {val or de cambi o} Dol ares : r eal ; {cant i dad de dol ares canadi enses a conver t i r } BEGI N WRI TELN; WRI TE( ' I nt r oduzca el val or de cambi o act ual Canada- EE. UU. : ' ) ; READLN( CanadaAUS ) ; WRI TE( ' I nt r oduzca l a cant i dad en dol ares canadi enses: ' ) ; READLN( Dol ar es ) ; WRI TELN; WRI TELN( ' Es equi val ent e a ' , CanadaAUS * Dol ares: 4: 2, ' dol ares estadouni denses. ' ) ; WRI TELN; END {Conver t i r CanadaAUS}; BEGI N {p. p} Cl rScr; WRI TELN; WRI TE( ' I nt r oduzca el di a, mes y anno act ual es: ' ) ; READLN( Di aAct ual , MesAct ual , AnnoAct ual ) ; WRI TELN; Most r arI nst r ucci ones; READLN( Codi goMoneda ) ; I F Codi goMoneda = 1 THEN Conver t i r USACanada ELSE Conver t i r CanadaAUS;
107
Ejercicios de Pascal WRI TELN( ' *** FECHA DE LA OPERACI ON: ' , Di aAct ual : 1, ' - ' , MesAct ual : 1, ' - ' , AnnoActual : 1 ); REPEAT Unti l Keypr essed; END. {p. p}
☺ Mejorar el anterior programa unificando los dos procedimientos en uno solo llamado convertir. PROGRAM Conver t i r Moneda2( i nput , out put ) ; Uses Cr t ; VAR MesAct ual , Di aAct ual , AnnoAct ual , Codi goMoneda : i nt eger; Val or Cambi o, Di ner o, Tot al : r eal ;
{mes act ual } {di a actual } {anno act ual } {i ndi ca el t i po de l a moneda a ser conver t i da} {el val or de cambi o de moneda EE. UU. - Canada} {cant i dad monetar i a a conver t i r } {t ot al de l as cant i dades}
PROCEDURE Most r ar I nst r ucci ones; BEGI N WRI TELN; WRI TELN( ' Est e pr ogr ama convi ert e moneda est adouni dense a' ) ; WRI TELN( ' canadi ense y vi cever sa, y cal cul a l a cant i dad total . ' ) ; WRI TELN( ' I nt r oduzca 0 para i ndi car que se han procesado t odas' , ' l as c ant i dades . ' ) ; WRI TELN; WRI TELN( ' I nt r oduzca 1 par a convert i r moneda est adouni dense a ' , ' canadi ense' ) ; WRI TE( ' 2 par a conver t i r moneda canadi ense a ' , ' est adouni dense: ' ) ; END {Most r arI nst r ucci ones}; PROCEDURE Conver t i r ( Codi go : i nt eger ; Cambi o, Cant i dad: real ) ; VAR Cant Equi v : r eal ;
{codi go de moneda} {val or de cambi o} {cant i dad monet ari a}
{cant i dad equi val ent e en ot r o si st ema monetar i o}
BEGI N WRI TE( ' Es equi val ent e a ' ) ; I F Codi go = 1 THEN BEGI N Cant Equi v : = Cambi o * Cant i dad; WRI TELN( Cant Equi v: 4: 2, ' dol ares canadi enses' ) END {I F} ELSE BEGI N Cant Equi v : = ( 1. 0 / Cambi o) * Cant i dad; WRI TELN( Cant Equi v: 4: 2, ' dol ares estadouni denses' ) END {ELSE} END {Convert i r }; BEGI N {p. p} Cl rScr; WRI TELN; WRI TE( ' I nt r oduzca el di a, mes y anno act ual es: ' ) ; READLN( Di aAct ual , MesAct ual , AnnoAct ual ) ; Most r arI nst r ucci ones; READLN( Codi goMoneda ) ; WRI TELN; WRI TE( ' I nt r oduzca el val or de cambi o EE. UU. - Canada: ' ) ; READLN( Val or Cambi o ) ; WRI TELN; Tot al : = 0; WRI TELN; WRI TE( ' I nt r oduzca cant i dad: ' ) ; READLN( Di ner o ) ; WRI TELN; WHI LE Di nero > 0 DO
108
Ejercicios de Pascal
BEGI N Conver t i r ( Codi goMoneda, Val orCambi o, Di nero ) ; Tot al : = Tot al + Di nero; WRI TELN; WRI TE( ' I nt r oduzca cant i dad ( 0 par a termi nar ) : ' ) ; READLN( Di ner o ) ; WRI TELN; END {WHI LE}; WRI TELN; WRI TELN( ' *** FECHA DE LA OPERACI ON: ' , Di aAct ual : 1, ' - ' , MesAct ual : 1, ' - ' , AnnoActual : 1 ); WRI TELN; WRI TELN( ' La cant i dad t otal conver t i da es $' , Total : 4: 2 ) ;
REPEAT Unti l Keypr essed; END. {p. p}
☺ Hacer el mismo programa que los anteriores pero este debe tener parámetros por valor y por variable. PROGRAM Conver t i r Moneda3( i nput , out put ) ; Uses Cr t ; VAR MesAct ual , Di aAct ual , AnnoAct ual , MonedaCasa, Codi goMoneda : i nt eger; Val or Cambi o, Di ner o, Di ner oConv, Tot al : r eal ;
{mes act ual } {di a actual } {anno act ual } {i ndi ca el t i po de moneda del l ugar } {i ndi ca el t i po de l a moneda a ser conver t i da} {el val or de cambi o de moneda EE. UU. - Canada} {cant i dad monetar i a a conver t i r } {canti dad equi val ent e en ot r o si st ema monet ar i o} {t ot al de l as cant i dades}
PROCEDURE Most r ar I nst r ucci ones; BEGI N Wri t el n; Wr i t el n( ' Est e pr ogr ama convi ert e moneda est adouni dense a' ) ; Wri t el n( ' canadi ense y vi ceversa, y cal cul a l a cant i dad t ot al . ' ) ; Wri t el n; Wr i t el n( ' I nt r oduzca 0 para i ndi car que se han pr ocesado todas' , ' l as c ant i dades . ' ) ; Wri t el n; Wri t el n; Wr i t el n( ' I nt r oduzca 1 par a conver t i r moneda est adouni dense a ' , ' canadi ense' ) ; Wr i t e( ' 2 para conver t i r moneda canadi ense a ' , ' est adouni dense: ' ) END {Most r arI nst r ucci ones}; PROCEDURE Conver t i r 2(
Codi go : i nt eger ; Cambi o, Cant i dad : r eal ; VAR Cant Equi v : r eal ) ;
{t i po de moneda} {val or de cambi o} {cant i dad a conver t i r } {cant i dad equi val ent e}
BEGI N Wri t e( ' Es equi val ent e a ' ) ; I F Codi go = 1 THEN BEGI N Cant Equi v : = Cambi o * Cant i dad; Wri t el n; Wr i t el n( Cant Equi v: 4: 2, ' dol ares canadi enses' ) END {I F} ELSE BEGI N Cant Equi v : = ( 1. 0 / Cambi o) * Cant i dad; Wri t el n; Wr i t el n( Cant Equi v: 4: 2, ' dol ares estadouni denses' ) END {ELSE} END {Convert i r 2}; BEGI N {p. p} Cl rScr; Wri t el n;
109
Ejercicios de Pascal Wr i t el n( ' I nt r oduzca el di a, mes y anno act ual es: ' ) ; Wri t e( ' Di a: ' ) ; Readl n( Di aActual ) ; Wr i t e( ' Mes: ' ) ; Readl n( MesActual ) ; Wr i t e( ' A¤o: ' ) ; Readl n( AnnoAct ual ) ; Most r arI nst r ucci ones; Readl n( MonedaCasa ) ; Wr i t e( ' I nt r oduzca el val or de cambi o EE. UU. - Canada: ' ) ; Readl n( Val orCambi o ) ; Tot al : = 0; Wr i t e( ' I nt r oduzca ti po de moneda y cant i dad ( 0 0 para t er mi nar) : ' ) ; Readl n( Codi goMoneda, Di ner o ) ; WHI LE Di nero > 0 DO BEGI N I F Codi goMoneda <> MonedaCasa THEN BEGI N Conver t i r 2( Codi goMoneda, Val orCambi o, Di ner o, Di ner oConv ) ; Tot al : = Tot al + Di neroConv END {I F} ELSE Tot al : = Tot al + Di nero; Wr i t e( ' I nt r oduzca t i po de moneda y cant i dad ' , ' ( 0 0 par a t er mi nar ) : ' ) ; Readl n( Codi goMoneda, Di ner o ) END {WHI LE}; Wri t el n; Wr i t el n( ' *** FECHA DE LA OPERACI ON: ' , Di aAct ual : 1, ' - ' , MesAct ual : 1, ' - ' , AnnoActual : 1 ); Wri t el n( ' La cant i dad t ot al convert i da es $' , Tot al : 4: 2 ) END {p. p}.
☺ Modificar el programa ConvertirMoneda3 de forma que la fecha de operación introducida por el usuario sea visualizada de la forma dd/mm/aa. PROGRAM Conver t i r Moneda4( i nput , out put ) ; Uses Cr t ; VAR MesAct ual , Di aAct ual , AnnoAct ual , MonedaCasa, Codi goMoneda : i nt eger; Val or Cambi o, Di ner o, Di ner oConv, Tot al : r eal ;
{mes act ual } {di a actual } {anno act ual } {i ndi ca el t i po de moneda del l ugar } {i ndi ca el t i po de l a moneda a ser conver t i da} {el val or de cambi o de moneda EE. UU. - Canada} {cant i dad monetar i a a conver t i r } {cant i dad equi val ent e en ot r o si st ema monet ar i o} {t ot al de l as cant i dades}
PROCEDURE Most r ar I nst r ucci ones; BEGI N Wri t el n; Wr i t el n( ' Est e pr ogr ama convi ert e moneda est adouni dense a' ) ; Wri t el n( ' canadi ense y vi ceversa, y cal cul a l a cant i dad t ot al . ' ) ; Wr i t el n( ' I nt r oduzca 0 para i ndi car que se han pr ocesado todas' , ' l as c ant i dades . ' ) ; Wri t el n; Wri t el n; Wr i t el n( ' I nt r oduzca 1 par a conver t i r moneda est adouni dense a ' , ' canadi ense' ) ; Wr i t e( ' 2 para conver t i r moneda canadi ense a ' , ' est adouni dense: ' ) END {Most r arI nst r ucci ones}; PROCEDURE Conver t i r 2(
Codi go : i nt eger ; Cambi o, Cant i dad : r eal ; VAR Cant Equi v : r eal ) ;
{t i po de moneda} {val or de cambi o} {cant i dad a conver t i r } {cant i dad equi val ent e}
BEGI N Wri t el n; Wri t e( ' Es equi val ent e a ' ) ;
110
Ejercicios de Pascal I F Codi go = 1 THEN BEGI N Cant Equi v : = Cambi o * Cant i dad; Wr i t el n( Cant Equi v: 4: 2, ' dol ares canadi enses' ) END {I F} ELSE BEGI N Cant Equi v : = ( 1. 0 / Cambi o) * Cant i dad; Wr i t el n( Cant Equi v: 4: 2, ' dol ares estadouni denses' ) END {ELSE} END {Convert i r 2}; PROCEDURE Most r ar Fecha( Di a, Mes, Anno : i nt eger ) ;
{el di a} {el mes} {el año}
BEGI N I F Di a < 10 THEN Wr i t e( ' 0' ) ; Wr i t e( Di a: 1, ' / ' ) ; I F Mes < 10 THEN Wr i t e( ' 0' ) ; Wr i t e ( Mes : 1, ' / ' ) ; Anno : = Anno MOD 100; I F Anno < 10 THEN Wr i t e( ' 0' ) ; Wr i t el n( Anno: 1 ) END {Most r ar Fecha}; BEGI N {p. p} Cl rScr; Wr i t el n( ' I nt r oduzca el di a, mes y anno act ual es: ' ) ; Wri t e( ' Di a: ' ) ; Readl n( Di aActual ) ; Wr i t e( ' Mes: ' ) ; Readl n( MesActual ) ; Wr i t e( ' A¤o: ' ) ; Readl n( AnnoAct ual ) ; Most r arI nst r ucci ones; Readl n( MonedaCasa ) ; Wr i t e( ' I nt r oduzca el val or de cambi o EE. UU. - Canada: ' ) ; Readl n( Val orCambi o ) ; Tot al : = 0; Wri t el n; Wr i t e( ' I nt r oduzca ti po de moneda y cant i dad ( 0 0 para t er mi nar) : ' ) ; Readl n( Codi goMoneda, Di ner o ) ; WHI LE Di nero > 0 DO BEGI N I F Codi goMoneda <> MonedaCasa THEN BEGI N Conver t i r 2( Codi goMoneda, Val orCambi o, Di ner o, Di ner oConv ) ; Tot al : = Tot al + Di neroConv END {I F} ELSE Tot al : = Tot al + Di nero; Wr i t e( ' I nt r oduzca t i po de moneda y cant i dad ' , ' ( 0 0 par a t er mi nar ) : ' ) ; Readl n( Codi goMoneda, Di ner o ) END {WHI LE}; Wri t el n; Wr i t el n( ' ** * FECHA DE LA OPERACI ON: ' ) ; Mostr arFecha( Di aAct ual , MesAct ual , AnnoAct ual ) ; Wri t el n( ' La cant i dad t ot al convert i da es $' , Tot al : 4: 2 ) END {p. p}.
☺ Un programilla simple para amenizar el rato y hacerlo más llevadero. Escriba un programa PASCAL que produzca las siguiente salida: * *** ***** *******
111
Ejercicios de Pascal
********* *********** ************* *
PROGRAM arbol ( out put) ; Uses Cr t ; BEGI N Cl rScr; Text col or ( 2) ; WRI TELN; WRI TELN( ' *' : 9) ; WRI TELN( ' ***' : 10) ; WRI TELN( ' *****' : 11) ; WRI TELN( ' *******' : 12) ; WRI TELN( ' *********' : 13) ; WRI TELN( ' ***********' : 14) ; WRI TELN( ' *************' : 15) ; WRI TELN( ' *' : 9) ; END.
REPEAT Unt i l Keypr essed;
Ahora vamos a comenzar con las prácticas que vamos realizando en mi universidad (Universidad Autónoma de Madrid – España): Si hay algún error o alguna forma mejor de hacerlo, por favor decírmelo para poder corregirlo: ☺ P1. Variables
Escribir un programa en el que se declare una variable por cada uno de los siguientes tipos de datos: Integer, LongInt, ShortInt, Byte, Word, String, Char, Real, Double, Boolean. Progr amP1; Var
a: b: c: d: e: f: g: h: i: j :
Short I nt ; Str i ng; Real ; Bool ean; Char; I nt e ger ; LongI nt ; Doubl e; Wor d; Byt e;
Begi n {p. p} a b c d e f g h i j
: = - 90; : = ' 9. 0' ; : = 9e30; : = t r ue; : = ' 9' ; : = 32700; : = 70000; : = 9e40; : = 65500; : = 90;
112
Ejercicios de Pascal
End. {p. p}
☺ P2. Constantes
Repitan el ejercicio anterior definiendo (y asignandoles valor en la declaración) los valores anteriores como constantes. Program P2; {p. p} Const a = 32700; b = - 90; c = 90; d = 65500; e = ' 9. 0' ; f = ' 9' ; g = 9e30; h = 9e40; i = Tr ue; j = 70000; Begi n {p. p} {Pr ogr ama que asi gna l os val or es ant er i or es como const ant es} End. {p. p}
☺ P3. Constantes con tipo.
Repetir el ejercicio anterior definiendo (y asignandoles valor en la declaración) los valores anteriores como constantes con tipo. Program P3; {p. p} Const a: b: c: d: e: f: g: h: i: j :
Short I nt = - 90; St r i ng = ' 9. 0' ; Real = 9e30; Bool ean = t r ue; Char = ' 9' ; I nt eger = 32700; LongI nt = 70000; Doubl e = 9e40; Word = 65500; Byt e = 90;
Begi n {p. p} {Pr ogr ama que asi gna l os val or es ant er i or es como const ant es con t i po} End. {p. p}
☺ P4. Búsqueda de errores.
Encuentren todos los errores (tanto de compilación como de ejecución) del siguiente programa, señalen la causa del error. Tecleen y ejecuten paso a paso si es necesario. Se debe entregar el programa tal cual indicando, dentro de comentarios Pascal, los errores que se han encontrado junto con el motivo que los produce. Program Err ores ( OUTPUT); Const vPr ec = 19;
113
Ejercicios de Pascal Var
A, B, E : I nt eger; C, D : Short i nt ; F : Real ; Begi n vPrec : = vPrec + 1; {No podemos sumar l e 1 por que es una const ant e deber i a ser una const ant e con t i po para poder hacer l o}
End.
B : = ( A + 2 ) * 2; {Deber i amos haber i ni ci al i zado A ant er i orment e para que el pr ograma f unci one con nor mal i dad} wri tel n(' El val or de B es ' , B); D : = vPr ec*6; C : = D * 100 + 18; {No podemos asi gnar l e a C un val or mayor a su r ango, deber i amos decl ar ar C como I nt eger } E : = F + 1; {A una vari abl e de ti po ent er o no se l e puede asi gnar un val or r eal . Par a hacerl o E deberi a ser de ti po Real } Wr i t el n( ' El val or de E es ' , E: 3: 3) ; {No podemos pedi r que nos escr i ba E con deci mal es por que es un ent er o deber i amos haber l o decl ar ado como un Real }
☺ P.5 Correción de programas
Arreglar el programa P4 para que el resultado que aparece en la pantalla sea: El valor de B es 6 El valor de E es 12032.333 Progr amErr or es ( Out put ) ; Const vPr ec: I nt eger = 19; {Es necesar i o def i ni r vPr ec como const ant e con t i po par a que post er i or ment e podamos sumar l e 1} Var A, B, C : I nt eger; D : Short i nt ; F, E : Real ; {Asi gnamos l os t i pos de dat os adecuados par a el cor r ect o f unci onami ent o del pr ogr ama. E l o decl ar amos como Real y C como I nt eger } Begi n {p. p} vPrec : = vPrec + 1; A : = 1; {I ni ci al i amos a con val or 1 para que B val ga 6} B : = ( A + 2 ) * 2; Wr i t el n( ' El val or de B es ' , B) ; D : = vPr ec*6; C : = D * 100 + 18; {El val or de C superaba el r ango, por eso se ha decl ar ado C como I nt eger } F := 2 * vPrec / 3 + C; E : = F + 1; {E pasa a ser de ti po Real para obt ener el r esul t ado deseado} Wr i t el n( ' El val or de E es ' , E: 5: 3) ; {Ponemos 5: 3 para cont r ol ar que en l a sal i da haya 5 espaci os, mas ot r os 3 par a l a part e deci mal } End. {p. p}
☺ P6. Escribir un programa que pida al usuario el nombre de un artículo, su
precio en Euros, la cantidad de artículos que se desean y el descuento a aplicar (en tanto por ciento, por unidad) sobre el precio inicial. Con esos datos obtener el total, haciendo el descuento. Presentar el PVP final de los productos solicitados por pantalla, en pesetas y Euros. Elijan los tipos adecuados para cada variable del programa.
114
Ejercicios de Pascal Pr ogr am P6 ( I NPUT, OUTPUT) ; Const Var
Eur o = 166. 386; ar t i cul o num_ar t i pr eci o pr eci o_t descuent o t otal
: : : : : :
Str i ng[ 40] ; Byt e; Real ; Real ; Real ; Real ;
{Nombr e del art i cul o} {Numer o de ar t i cul os que nos i ndi can} {Preci o de una uni dad} {Pr eci o Tot al } {Descuent o a apl i car} {Preci o con el descuent o apl i cado}
Begi n {p. p} Wri t e( ' I nt r oduzca el nombre del art i cul o: Readl n( art i cul o) ; Wr i t el n( ' ' ) ; Wr i t e( ' I nt r oduzca su pr eci o en Eur os: Readl n( pr eci o) ; Wr i t el n( ' ' ) ; Wr i t e( ' ¨Cuant os ar t i cul os desea?: Readl n( num_art i ) ; Wr i t el n( ' ' ) ; Wr i t e( ' Descuent o a apl i car en %: Readl n(descuento) ; Wr i t el n( ' ' ) ;
' : 50) ; ' : 50) ; ' : 50) ; ' : 50) ;
pr eci o_t : = pr eci o * num_art i ; {obt enemos el pr eci o t otal } descuent o : = ( pr eci o_t * descuent o) / 100; {t otal del descuent o} t ot al : = pr eci o_t - descuent o; Wr i t el n( ' El val or t ot al de l a compr a es de: ' : 50) ; Wr i t el n( ' ' ) ; Wr i t el n( t ot a l : 35: 3, ' Eur o s. ' ) ; t ot al : = t otal * Eur o; {Pasamos a pt s el pr eci o t ot al } Wr i t e( t ot a l : 35: 3, ' Pt s . ' ) ; End. {p. p}
☺ P7. E/S por teclado y pantalla.
Escriban un programa que lea tres números enteros introducidos por teclado en la misma línea. El programa aceptará a continuación tres nuevos números enteros escritos en líneas sucesivas, y escribirá por pantalla cuatro líneas con los siguientes datos: 1. Los seis números introducidos, separados por blancos. 2. La suma de los seis números. 3. El resultado obtenido al dividir la suma de los tres primeros números por la suma de los tres segundos. 4. El cociente entero y el resto obtenidos al dividir la suma de los tres primeros números por la suma de los tres segundos. Pr ogr am P7 ( I NPUT, OUTPUT) ; VAR num1, num2, num3: I nt eger; num4, num5, num6: I nt eger; suma1, suma2, sumat ot al : I nt eger ; di v_ent , r est o: I nt eger ; di v_real : Real ;
{Tr es pr i mer os numer os que pedi mos} {Tr es ul t i mos numer os que pedi mos} {Guar dan l as s umas que real i zamos} {Di vi si ón ent er a y su r est o} {Di vi si ón real }
115
Ejercicios de Pascal
Begi n {p. p} Wr i t e(' I nt r oduzca 3 numeros ent eros: ' ) ; Readl n( num1, num2, num3) ; {Leemos l os t r es pr i mer os dat os} Wr i t el n( ' ' ) ; Wr i t el n( ' I nt r oduzca ot r os 3 numer os ent er os: ' ) ; Wr i t e(' Numero 4: ' ) ; Readl n(num4); Wr i t e(' Numero 5: ' ) ; Readl n(num5); Wr i t e(' Numero 6: ' ) ; Readl n(num6); {Leemos l os t r es dat os si gui ent es} Wr i t el n( ' ' ) ; Wr i t e(' Los numer os i nt r oduci dos son: ' ) ; Wr i t e( num1, ' ' , num2, ' ' , num3, ' ' , num4, ' ' , num5, ' ' , num6) ; {Sacamos por pant al l a l os numeros i nt r oduci dos} Wr i t el n( ' ' ) ; suma1 : = ( num1 + num2 + num3) ; suma2 : = ( num4 + num5 + num6) ;
{sumamos l os 3 pr i mer os numer os} {sumamos l os 3 ul t i mos numer os}
sumat ot al di v_r eal di v_ent r est o
{hacemos l a suma de t odos l os numer os} {guar damos l a di vi si ón r eal } {obt enemos l a di vi si ón ent er a} {cal cul amos el r est o de l a di vi si ón}
: = suma1 : = suma1 : = suma1 : = suma1
+ suma2; / suma2; di v suma2; mod suma2;
Wr i t el n( ' La suma de l os 6 numer os es: ' , sumatot al ) ; {Saca por pant al l a el r esul t ado de l a suma de t odos l os numer os} Wr i t el n( ' ' ) ; Wr i t el n( ' La di vi si on de l os 3 pr i meros numeros ent r e l os 3 ul t i mos es: ' ) ; Wr i t el n( ' ' ) ; Wr i t e l n( ' Di vi s i ón r eal : ' : 50, di v_ r eal : 6: 2) ; Wri tel n( ' Di vi si ón entera: ' : 50, di v_ent: 6); Wri t el n( ' El resto de l a di vi si ón ent era es: ' : 50, r esto: 6) ; {Mostr amos por pant al l a el r esul t ado de l as di vi si ones y el r est o} End. {p. p}
☺ P8. Redireccionamiento de la E/S.
Cualquier programa E/S estándar, como el P7, escribe por defecto en la pantalla y lee del teclado. En DOS, la lectura de un programa puede ser redireccionada desde un archivo utilizando el carácter < . Si el nombre del fichero ejecutable del programa es P8.exe, con el comando P8 < entrada.dat se ejecutará el programa P8 tomando los datos de entrada.dat Escriban un programa que lea los datos de un archivo y los esciba en otro. Los datos que ha de leer son los siguientes, y se encontrarán en el archivo con el siguiente formato: Esta línea se tiene que con catenar con esta otra. La salida va a ocu par sólo dos líneas.
116
Ejercicios de Pascal
{Estas son las lineas que debemos grabas en nuestro archivo. El archivo debe tener extension .txt o .dat}
El programa escribirá cada frase en una única línea: Esta línea se tiene que concatenar con esta otra. La salida va a ocupar sólo dos líneas.
Pr ogr am P8 ( I NPUT, OUTPUT) ; VAR l i nea1, l i nea2, l i nea3, l i nea4: Str i ng[ 30]; {Decl ar amos l as 4 l i neas que encont r ar emos en el archi vo que vamos a i nt r oduci r } Begi n {p. p} {Vamos a l eer cada l i nea del ar chi vo. Lo al macenamos en l as var i abl es} Readl n( l i nea1) ; Readl n( l i nea2) ; Readl n( l i nea3) ; Readl n( l i nea4) ; Wr i t el n( l i nea1, l i nea2) ; {Escr i bi mos pr i mera y segunda l i nea} Wr i t el n( l i nea3, l i nea4) ; {Uni mos l a tercera y cuar t a l i nea} {As¡ obt enemos £ni cament e l as 2 l ¡ neas que se necesi t an} {Para el corr ecto f unci onami ent o de est e pr ogr ama se nos pi de l eer l os dat os de un archi vo y pasar l o a ot r o que ocupe sól o 2 l ¡ neas. Ut i l i zando DOS l ogr aremos obt ener l os dat os de ent r ada y de sal i da. Ej : 3C12P8. EXE < TEX_E. TXT > TEX_S. TXT} End. {p. p}
☺ P9. Salida con formato
Escriban un programa que lea del teclado el valor del lado de un cuadrado, y calcule los siguientes valores: el área del cuadrado el área del círculo inscrito (radio = semilado) el área del círculo circunscrito (radio = semidiagonal); el perímetro del círculo circunscrito La salida del programa, para un valor de entrada igual a 2.0, será: Area del cuadrado = 4.00 Area del círculo inscrito = 3.14 Area del círculo circunscrito = 6.28 Perímetro del círculo circunscrito = 8.99 Pr ogr am P9 ( I NPUT, OUTPUT) ;
117
Ejercicios de Pascal
CONST PI = 3. 14159; {Decl ar amos como const ant e el val or de PI } VAR l adocuad: Real ; a_cuad: Real ; a_ci ns: Real ; a_cci r : Real ; p_cci r : Real ;
{Lado del cuadrado} {Ar ea del cuadrado} {Ar ea del c¡r cul o i nscri t o} {Area del c¡ r cul o ci r cunscri t o} {Per ¡ met r o del c¡r cul o ci r cunscri t o}
Begi n {p. p} Wr i t e( ' I nt r oduzca el l ado del cuadr ado: ' ) ; Readl n( l adocuad) ; {Leemos del t ecl ado el val or del l ado del cuadrado} a_cuad : = sqr( l adocuad) ; {Lado al cuadr ado} a_ci ns : = PI * ( sqr ( l adocuad / 2)) ; {PI * radi o al cuadr ado} a_cci r : = PI * ( sqr( sqrt (sqr( l adocuad) + sqr( l adocuad)) / 2)) ; {PI * r adi o al cuadrado. Radi o = mi t ad de l a di agonal del cuadr ado} p_cci r : = 2 * PI * (sqrt ( sqr( l adocuad) + sqr( l adocuad) ) / 2) ; {2 * PI * r adi o. El r adi o es l a mi t ad de l a di agonal del cuadr ado} Wr i t el n( ' ' ) ; Wr i t el n( ' Ar ea del cuadr ado = ' , a_cuad: 5: 2) ; Wri tel n( ' Area del c¡r cul o i nscri to = ' , a_ci ns:5:2) ; Wri tel n( ' Area del c¡r cul o ci rcunscri t o = ' , a_cci r: 5: 2) ; Wri tel n( ' Per¡ met ro del c¡r cul o ci rcunscri to = ' , p_cci r: 5: 2) ; {Most r amos por pant al l a el cál cul o de l as ár eas y el perí metr o} End. {p. p}
☺ P.10 Operaciones aritméticas
Escriban un programa que lea dos números reales positivos y devuelva la potencia entera a la que hay que elevar el primero para que de el número más próximo posible al segundo. Pr ogr am P10 ( I NPUT, OUTPUT) ; VAR
num1, num2: Real ; n: Real ;
{N£mer os con l os que cal cul ar emos l a pot enci a} {Pot enci a}
Begi n {p. p} Wr i t e( ' I nt r oduzca dos numer os r eal es posi t i vos: ' ) ; Readl n( num1, num2) ; {Leemos l os 2 numer os r eal es} n : = l n( num2) / l n( num1) ; {Cal cul amos l a pot enci a t omando l ogari t mos} n : = Round( n) ; {Redondeamos l a pot enci a y obt enemos l a pot enci a ent er a m s cer cana a l a que hay que el evar el pr i mer numer o par a obt ener el segundo} Wr i t e(' La pot enci a enter a a l a que hay que el evar el numero 1 es: ' ) ; Wr i t e(n: 3: 0) ; {Sacamos por pant al l a el val or de l a potenci a ent era} End. {p. p}
☺ P11. Números pseudoaleatorios
Escriban un programa que genere un número entero aleatorio entre 1800 y 20000, utilizando la función Random ( ¡y NO Random(x)! ). Considerando, además, que dicho número representa un lapso de tiempo en segundos, dar el resultado en forma de horas, minutos y segundos (formato HH:MM:SS). 118