Está en la página 1de 119

Ejercicios de Pascal

1

METODOLOG A DE LA PROGRAMACI N. Programacin en Pascal

El objetivo de este documento es proveer de una gran batera de ejercicios resueltos en
Pascal que parten del nivel ms bsico hasta llegar a estructuras de datos ms
complejas.

Escribir un programa en Pascal que sume dos nmeros:

a = 4 b = 3

PROGRAM EJ ER01; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
var a, b, c: I NTEGER;

BEGI N

{Empezamos con l o bsi co, un pr ogr ama que escr i be l a suma de 2 numer os en pant al l a}

a: =4;
b: =3;

{Se asi gna un val or cual qui er a a l as var i abl es "a" y "b"}

c: =a+b;

WRI TE ( c) ; {Muest r a en pant al l a el val or de l a suma}

END.


PROGRAM EJ ER1B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b, c: I NTEGER;

BEGI N
Cl r Scr ;

WRI TELN ( ' Est e pr ogr ama suma dos numer os: ' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' I nt r oduzca un numer o: ' ) ; READLN ( a) ;
WRI TE ( ' I nt r oduzca ot r o numer o: ' ) ; READLN ( b) ;
WRI TELN ( ' ' ) ;
c: =a+b;

WRI TE ( ' EL RESULTADO ES: ' ) ;
WRI TE ( c) ;

END.


PROGRAM EJ ER01;
var a, b, c: I NTEGER;
BEGI N
a: =4;
b: =3;

c: =a+b;

WRI TE( c) ;
END.







Ejercicios de Pascal
2
Escribir un programa en Pascal que sume, reste, multiplique y divida dos nmeros:

x = 10 y = 2

PROGRAM EJ ER02; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT; {Nos va a per mi t i r l i mpi ar l a pant al l a j unt o con Cl r Scr }
VAR x, y: I NTEGER;
VAR suma, r est , mul t , di vi : I NTEGER;

BEGI N
x: =10;
y: =2;

suma: =x + y;
r est : =x - y;
mul t : =x * y;
di vi : =x di v y;

{Con est as 4 var i abl es r eal i zamos l as cuat r o oper aci ones ar i t mt i cas f undament al es:
suma, r est a, mul t i pl i caci n y di vi si n}

Cl r Scr ; {Li mpi a l a pant al l a}

WRI TE ( ' SUMA: ' ) ; WRI TELN ( suma) ;
WRI TE ( ' RESTA: ' ) ; WRI TELN ( r est ) ;
WRI TE ( ' MULTI PLI CACI ON: ' ) ; WRI TELN ( mul t ) ;
WRI TE ( ' DI VI SI ON: ' ) ; WRI TE ( di vi ) ;

END.


PROGRAM EJ ER2B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR x, y: REAL;
VAR suma, r est , mul t : REAL;
VAR di vi : REAL;

{suma, r est a, mul t i pl i ca y di vi de 2 numer os r eal es}

BEGI N
WRI TELN ( ' Est e pr ogr ama suma, r est a, mul t i pl i ca y di vi de: ' ) ;
WRI TELN ( ' Escr i ba dos numer os r eal es' ) ;
WRI TELN ( ' ' ) ;


READ ( x) ;
READ ( y) ;

suma: =x + y;
r est : =x - y;
mul t : =x * y;
di vi : =x / y;

Cl r Scr ;

WRI TE ( ' SUMA: ' ) ; WRI TELN ( suma: 3: 0) ;
WRI TE ( ' RESTA: ' ) ; WRI TELN ( r est : 3: 0) ;
WRI TE ( ' MULTI PLI CACI ON: ' ) ; WRI TELN ( mul t : 3: 0) ;
WRI TE ( ' DI VI SI ON: ' ) ; WRI TE ( di vi : 5: 2) ;

END.


PROGRAM EJ ER02;
USES CRT;
VAR x, y: I NTEGER;
VAR suma, r est , mul t , di vi : I NTEGER;
BEGI N
x: =10;
y: =2;

suma: =x + y;
r est : =x - y;
mul t : =x * y;
di vi : =x di v y;
Ejercicios de Pascal
3

Cl r Scr ;

WRI TE( ' SUMA: ' ) ; WRI TELN( suma) ;
WRI TE( ' RESTA: ' ) ; WRI TELN( r est ) ;
WRI TE( ' MULTI PLI CACI ON: ' ) ; WRI TELN( mul t ) ;
WRI TE( ' DI VI SI ON: ' ) ; WRI TELN( di vi ) ;
END.


Escribir un programa en Pascal que calcule el rea de un rectngulo:

lado1 = 3 lado2 = 4
rea del rectngulo=lado1 * lado2

PROGRAM EJ ER03; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR l ado1, l ado2: I NTEGER;
VAR ar ea: I NTEGER;

BEGI N

{Est e pr ogr ama nos va a ser vi r par a cal cul ar el ar ea de un r ect ngul o}

l ado1: =3;
l ado2: =4;
{Damos val or es par a l as var i abl es}

ar ea: =l ado1*l ado2; {Cal cul amos el ar ea}

Cl r Scr ;

WRI TE ( ' AREA DEL RECTANGULO: ' ) ; WRI TE ( ar ea) ; {Lo most r amos en pant al l a}

END.



PROGRAM EJ ER3B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR l ado1, l ado2: REAL;
VAR ar ea: REAL;

BEGI N
{Est e pr ogr ama cal cul a el ar ea de un r ect angul o}

Cl r Scr ;

WRI TELN ( ' Escr i ba l os l ados del r ect angul o' ) ;

READ ( l ado1) ;
READ ( l ado2) ;
WRI TELN ( ' ' ) ;

ar ea: =l ado1*l ado2;

WRI TE ( ' AREA DEL RECTANGULO: ' ) ; WRI TE ( ar ea: 5: 2) ;

END.



PROGRAM EJ ER03;
USES CRT;
VAR l ado1, l ado2: I NTEGER;
VAR ar ea: I NTEGER;
BEGI N
l ado1: =3;
l ado2: =4;

ar ea: =l ado1*l ado2;

Cl r Scr ;
Ejercicios de Pascal
4

WRI TE( ' AREA DEL RECTANGULO: ' ) ; WRI TE( ar ea) ;
END.


Escribir un programa en Pascal que calcule el rea de un tringulo:

base = 7 altura = 4 rea del tringulo = (base * altura)/2

PROGRAM EJ ER04; {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
base: =7;
al t ur a: =4;

ar ea: =( base * al t ur a) / 2;

Cl r Scr ;

WRI TE ( ' AREA DEL TRI ANGULO: ' ) ; WRI TE ( ar ea: 5: 2) ;
{: 5: 2 si r ve par a dar el f or mat o de sal i da al numer o, 5 posi ci ones y 2 deci mal es}
END.


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 ar ea de un t r i angul o}

Cl r Scr ;
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 ur a) ;
WRI TELN ( ' ' ) ;

ar ea: =( base * al t ur a) / 2;

WRI TE ( ' EL AREA DEL TRI ANGULO ES: ' ) ; WRI TE ( ar ea: 5: 2) ;
END.


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;

ar ea: =( base * al t ur a) / 2;

Cl r Scr ;

WRI TE( ' AREA DEL TRI ANGULO: ' ) ; WRI TE( ar ea: 5: 2) ;
END.

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 * radio
2


PROGRAM EJ ER05; {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 l ongi t ud, ar ea: REAL;
Ejercicios de Pascal
5

BEGI N
r adi o: =4;
l ongi t ud: =2*3. 1416*r adi o;

ar ea: =3. 1416*r adi o*r adi o;

Cl r Scr ;

WRI TE ( ' LONGI TUD DE LA CI RCUNFERENCI A: ' ) ; WRI TELN ( l ongi t ud: 5: 2) ;
WRI TE ( ' AREA DE LA CI RCUNFERENCI A: ' ) ; WRI TE ( ar ea: 5: 2) ;

END.


PROGRAM EJ ER5B; {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 l ongi t ud, ar ea: REAL;

BEGI N
{Est e pr ogr ama cal cul a l a l ongi t ud y el ar ea de una ci r cunf er enci a}

Cl r Scr ;

WRI TELN ( ' LONGI TUD Y AREA DE UNA CI RCUNFERENCI A' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' Escr i ba el r adi o: ' ) ; READLN ( r adi o) ;
WRI TELN ( ' ' ) ;

l ongi t ud: =2*3. 1416*r adi o;

ar ea: =3. 1416*r adi o*r adi o;


WRI TE ( ' LONGI TUD DE LA CI RCUNFERENCI A: ' ) ; WRI TELN ( l ongi t ud: 5: 2) ;
WRI TE ( ' AREA DE LA CI RCUNFERENCI A: ' ) ; WRI TE ( ar ea: 5: 2) ;

END.


PROGRAM EJ ER05;
USES CRT;
VAR r adi o: REAL;
VAR l ongi t ud, ar ea: REAL;
BEGI N
r adi o: =4;
l ongi t ud: =2*3. 1416*r adi o;

ar ea: =3. 1416*r adi o*r adi o;

Cl r Scr ;

WRI TE( ' LONGI TUD DE LA CI RCUNFERENCI A: ' ) ; WRI TELN( l ongi t ud: 5: 2) ;
WRI TE( ' AREA DE LA CI RCUNFERENCI A: ' ) ; WRI TE( ar ea: 5: 2) ;
END.


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 emai l : vi ct or ss18@hot mai l . com}
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) ;
Ejercicios de Pascal
6

Cl r Scr ;

WRI TE ( ' VELOCI DAD DEL PROYECTI L: ' ) ;
WRI TE ( vel oci dad: 5: 2) ; WRI TE ( ' m/ s' ) ;
END.


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 r Scr ;

WRI TE ( ' Par a cal cul ar l a vel oci dad debe escr i 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 ecor r i do: ' ) ; READLN ( espaci o) ;
WRI TE ( ' Escr i ba el t i 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 dat os: ' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' Escr i ba el espaci o r ecor r 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) ;

WRI TE ( vel oci dad2: 5: 2) ; WRI TE ( ' Km/ h ' ) ;
END.


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 r Scr ;

WRI TE( ' VELOCI DAD DEL PROYECTI L: ' ) ;
WRI TE( vel oci dad: 5: 2) ; WRI TE( ' m/ s' ) ;
END.


Escribir un programa en Pascal que calcule el volumen de una esfera:

radio = 3 volumen de la esfera = 4/3 * PI * radio
3


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*r adi o*r adi o) ;

Cl r Scr ;

Ejercicios de Pascal
7
WRI TE ( ' VOLUMEN DE LA ESFERA: ' ) ; WRI TE( vol umen) ;
END.


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 r Scr ;

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*r adi o*r adi o) ;

WRI TE ( ' VOLUMEN DE LA ESFERA: ' ) ; WRI TE( vol umen: 5: 2) ;
END.


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*r adi o*r adi o) ;

Cl r Scr ;

WRI TE( ' VOLUMEN DE LA ESFERA: ' ) ; WRI TE( vol umen) ;
END.


Escribir un programa en Pascal que evale la siguiente expresin:

(a+7*c)/(b+2-a)+2*b a = 3,b = 6,c = 4

PROGRAM EJ ER08; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
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 r Scr ;

WRI TE ( ' RESULTADO: ' ) ; WRI TE ( r esul t ado: 5) ;
END.

PROGRAM EJ ER8B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b, c: REAL;
VAR r esul t ado: REAL;

BEGI N
{Est e pr ogr ama cal cul a una expr esi on al gebr ai ca}

Cl r Scr ;

WRI TELN ( ' Est e pr ogr ama si r ve par a 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) ;

Ejercicios de Pascal
8
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 r Scr ;

WRI TE( ' RESULTADO: ' ) ; WRI TE( r esul t ado: 5) ;
END.

Escribir un programa en Pascal que evale la siguiente expresin:

(a+5) * 3 / 2 * b - b a = 3,b = 6

PROGRAM EJ ER09; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
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 r Scr ;

WRI TE ( ' RESULTADO: ' ) ; WRI TE( r esul t ado: 5: 2) ;


END.



PROGRAM EJ ER9B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b: REAL;
VAR r esul t ado: REAL;

BEGI N
{Est e pr ogr ama cal cul a el r esul t ado de una expr esi on al gebr ai ca}

Cl r Scr ;

WRI TE ( ' PARA CALCULAR LA SI GUI ENTE EXPRESI ON: ' ) ;
WRI TELN ( ' ( ( a+5) *3) / ( 2*b- b) ' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' Escr i ba a: ' ) ; READ ( a) ;
WRI TE ( ' Escr i 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.




Ejercicios de Pascal
9
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 r Scr ;

WRI TE( ' RESULTADO: ' ) ; WRI TE( r esul t ado: 5: 2) ;
END.

Escribir un programa en Pascal que evale la siguiente expresin:

(-b + (b
2
-4*a*c)/(2*a)
(es la solucin positiva de una ecuacin de 2 grado)

PROGRAM EJ ER10; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b, c: REAL;
VAR r esul t ado: REAL;

BEGI N
a: =6;
b: =6;
c: =1;

r esul t ado: =( - b+sqr t ( sqr ( b) - 4*a*c) ) / ( 2*a) ;

Cl r Scr ;

WRI TE ( ' RESULTADO: ' ) ; WRI TE( r esul t ado: 5: 2) ;

END.



PROGRAM EJ ER10B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b, c: REAL;
VAR r esul t ado: REAL;

BEGI N
{Cal cul a l a i ncogni t a posi t i va de una ecuaci on de 2 gr ado}

Cl r Scr ;

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 var i abl es: ' ) ;
WRI TELN ( ' ' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' Escr i ba a: ' ) ; READLN ( a) ;
WRI TE ( ' Escr i ba b; ' ) ; READLN ( b) ;
WRI TE ( ' Escr i ba c; ' ) ; READLN ( c) ;
WRI TELN ( ' ' ) ;

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 r esul t ado: r eal ;
begi n
a: =6;
b: =6;
Ejercicios de Pascal
10
c: =1;

r esul t ado: =( - b+sqr t ( sqr ( b) - 4*a*c) ) / ( 2*a) ;

Cl r Scr ;

WRI TE( ' RESULTADO: ' ) ; WRI TE( r esul t ado: 5: 2) ;
END.

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 emai l : vi ct or ss18@hot mai l . com}
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: =6;

ar ea: = ( 2 * ( 3. 1416 * r adi o * r adi o) ) + ( ( 2 * 3. 1416 * r adi o) * al t ur a) ;
vol umen: = ( 3. 1416 * r adi o * r adi o) * al t ur a;

{podr i amos cambi ar "r adi o*r adi o" por "sqr ( r adi o) " par a hacer el cuadr ado del r adi o}

Cl r Scr ;

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; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR r adi o, al t ur a: REAL;
VAR ar ea, vol umen: REAL;

BEGI N
{Cal cul a el ar ea y el vol umen de un ci l i ndr o}

Cl r Scr ;

WRI TELN ( ' CALCULA EL AREA Y VOLUMEN DE UN CI LI NDRO' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' Escr i ba el r adi o: ' ) ; READLN ( r adi o) ;
WRI TE ( ' Escr i ba l a al t ur a: ' ) ; READLN ( al t ur a) ;
WRI TELN ( ' ' ) ;

ar ea: = ( 2 * ( 3. 1416 * r adi o * r adi o) ) + ( ( 2 * 3. 1416 * r adi o) * al t ur a) ;
vol umen: = ( 3. 1416 * r adi o * r adi 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 r Scr ;

WRI TE( ' RADI O DEL CI LI NDRO: ' ) ; READLN( r ) ;
WRI TE( ' ALTURA DEL CI LI NDRO: ' ) ; READLN( h) ;
Ejercicios de Pascal
11

a: =( 2*( 3. 1416*sqr ( r ) ) ) + ( ( 2*3. 1416*r ) *h) ;
v: =( 3. 1416*sqr ( 2) ) *h;

Cl r Scr ;

WRI TE( ' AREA DEL CI LI NDRO: ' ) ; WRI TELN( a: 5: 2) ;
WRI TE( ' VOLUMEN DEL CI LI NDRO: ' ) ; WRI TELN( v: 5: 2) ;
END.


Escribir un programa en Pascal que calcule el rea y el volumen de un hexaedro

A = (l*l) * 6
V = l
3

PROGRAM EJ ER12; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR l ado: REAL;
VAR ar ea, vol umen: REAL;

BEGI N
l ado: =4;

ar ea: = ( l ado * l ado) * 6;
vol umen: = sqr ( l ado) * l ado;

Cl r Scr ;

WRI TE ( ' AREA DEL HEXAEDRO: ' ) ; WRI TE ( ar ea) ; WRI TELN ( ' m2' ) ;
WRI TE ( ' VOLUMEN DEL HEXAEDRO: ' ) ; WRI TE ( vol umen) ; WRI TE ( ' m3' ) ;

END.


PROGRAM EJ ER12B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR l ado: REAL;
VAR ar ea, vol umen: REAL;

BEGI N
Cl r Scr ;

WRI TE ( ' I NTRODUCE EL LADO DEL HEXAEDRO: ' ) ;

READLN ( l ado) ;
WRI TELN ( ' ' ) ;

ar ea: = ( 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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR l 1, l 2, l 3: REAL;
VAR ar ea, vol umen: REAL;

BEGI N
l 1: =3;
l 2: =6;
l 3: =4;
Ejercicios de Pascal
12

ar ea: =2 * ( l 1 * l 2) +( 2 * ( l 1 * l 3) ) + ( 2* ( l 2 * l 3) ) ;
vol umen: = l 1 * l 2 * l 3;

Cl r Scr ;

WRI TE ( ' AREA DEL PRI SMA: ' ) ; WRI TELN( ar ea) ;
WRI TE ( ' VOLUMEN DEL PRI SMA: ' ) ; WRI TE ( vol umen) ;

END.


PROGRAM EJ ER13B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR l 1, l 2, l 3: REAL;
VAR ar ea, vol umen: REAL;

BEGI N
{Cal cul a el ar ea y vol umen de un pr i sma}

Cl r Scr ;

WRI TELN ( ' PARA CALCULAR EL AREA Y EL VOLUMEN DEL PRI SMA, ESCRI BA: ' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' Lado1: ' ) ; READLN ( l 1) ;
WRI TE ( ' Lado2: ' ) ; READLN ( l 2) ;
WRI TE ( ' Lado3: ' ) ; READLN ( l 3) ;
WRI TELN ( ' ' ) ;

ar ea: =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 TELN ( ar ea: 5: 2) ;
WRI TE ( ' VOLUMEN DEL PRI SMA: ' ) ; WRI TE ( vol umen: 5: 2) ;

END.


Escribir un programa en Pascal que calcule el rea y el volumen de un tetraedro

A = a
2 *
razcuadrada(3)
V = (a
3
/12) * razcuadrada (2)

PROGRAM EJ ER14; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar i st a: REAL;
VAR ar ea, vol umen: REAL;

BEGI N

ar i st a: =5;

ar ea: = sqr ( ar i st a) * sqr t ( 3) ;
vol umen: = ( ( sqr ( ar i st a) * ar i st a) / 12) * sqr t ( 2) ;

WRI TE ( ' AREA DEL TETRAEDRO: ' ) ; WRI TELN ( ar ea) ;
WRI TE ( ' VOLUMEN DEL TETRAEDRO: ' ) ; WRI TE ( vol umen) ;

END.


PROGRAM EJ ER14B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar i st a: REAL;
VAR ar ea, vol umen: REAL;

BEGI N
{Cal cul a el ar ea y el vol umen de un oct aedr o}

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 ( ' ' ) ;
Ejercicios de Pascal
13


ar ea: = sqr ( ar i st a) * sqr t ( 3) ;
vol umen: = ( ( sqr ( ar i st a) * ar i st a) / 12) * sqr t ( 2) ;

WRI TE ( ' AREA DEL TETRAEDRO: ' ) ; WRI TELN ( ar ea: 5: 2) ;
WRI TE ( ' VOLUMEN DEL TETRAEDRO: ' ) ; 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
* razcuadrada(3)
V=(a
3
/3) * razcuadrada(2)

PROGRAM EJ ER15; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar i st a: REAL;
VAR ar ea, vol umen: REAL;

BEGI N

ar i st a: =4;

ar ea: = 2 * sqr ( ar i st a) * sqr t ( 3) ;
vol umen: = ( ( sqr ( ar i st a) * ar i st a) / 3) * sqr t ( 2) ;

WRI TE ( ' AREA DEL OCTAEDRO: ' ) ; WRI TELN( ar ea) ;
WRI TE ( ' VOLUMEN DEL OCTAEDRO: ' ) ; WRI TE( vol umen) ;

END.




PROGRAM EJ ER15B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar i st a: REAL;
VAR ar ea, vol umen: REAL;

BEGI N
{Si r ve par a cal cul ar el ar ea y el vol umen de un t et r 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 ( ' ' ) ;

ar ea: = 2 * sqr ( ar i st a) * sqr t ( 3) ;
vol umen: = ( ( sqr ( ar i st a) * ar i st a) / 3) * sqr t ( 2) ;

WRI TE ( ' AREA DEL OCTAEDRO: ' ) ; WRI TELN ( ar ea: 5: 2) ;
WRI TE ( ' VOLUMEN DEL OCTAEDRO: ' ) ; 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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR r adi o, l ado, al t ur a: REAL;
VAR ar ea, vol umen: REAL;

BEGI N

r adi o: =6;
l ado: =3;
al t ur a: =8;
Ejercicios de Pascal
14

ar ea: = ( 3. 1416 * r adi o * l ado) + ( 3. 1416 * sqr ( r adi o) ) ;
vol umen: = ( 3. 1416 * sqr ( r adi o) * al t ur a) / 3;

WRI TE ( ' AREA DEL CONO: ' ) ; WRI TELN ( ar ea) ;
WRI TE ( ' VOLUMEN DEL CONO: ' ) ; WRI TE ( vol umen) ;

END.


PROGRAM EJ ER16B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR r adi o, l ado, al t ur a: REAL;
VAR ar ea, vol umen: REAL;

BEGI N
{Se ut i l i za par a cal cul ar el ar ea y vol umen de un cono}

WRI TELN ( ' Par a cal cul ar el ar ea y el vol umen de un cono: ' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' Escr i ba el val or del r adi o: ' ) ; READLN ( r adi o) ;
WRI TE ( ' Escr i ba el val or del l ado: ' ) ; READLN ( l ado) ;
WRI TE ( ' Escr i ba el val or de l a al t ur a: ' ) ; READLN ( al t ur a) ;
WRI TELN ( ' ' ) ;

ar ea: = ( 3. 1416 * r adi o * l ado) + ( 3. 1416 * sqr ( r adi o) ) ;
vol umen: = ( 3. 1416 * sqr ( r adi o) * al t ur a) / 3;

WRI TE ( ' AREA DEL CONO: ' ) ; WRI TELN ( ar ea: 5: 2) ;
WRI TE ( ' VOLUMEN DEL CONO: ' ) ; 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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b, c: REAL;
VAR vol umen: REAL;

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; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b, c: REAL;
VAR vol umen: REAL;

BEGI N
{Cal cul a el vol umen de un el i psoi de}

Cl r Scr ;

WRI TELN ( ' PARA CALCULAR EL VOLUMEN DE UN ELI PSOI DE ESCRI BA: ' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' A: ' ) ; READLN ( a) ;
WRI TE ( ' B: ' ) ; READLN ( b) ;
WRI TE ( ' C: ' ) ; READLN ( c) ;

vol umen: = ( 4/ 3) * 3. 1416 * a * b * c;

Ejercicios de Pascal
15
WRI TE ( ' VOLUMEN DEL ELI PSOI DE: ' ) ; WRI TE ( vol umen: 5: 2) ;

END.

Escribir un programa en Pascal que calcule las races de una ecuacin de 2 grado

PROGRAM EJ ER18; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b, c: REAL;
VAR x1, x2: REAL;

BEGI N

a: =6;
b: =6;
c: =1;

x1: = ( - b + sqr t ( sqr ( b) - ( 4 * a * c) ) ) / 2 * a;
x2: = ( - b - sqr t ( sqr ( b) - ( 4 * a * c) ) ) / 2 * a;

WRI TE ( ' SOLUCI ON 1: ' ) ; WRI TELN ( x1) ;
WRI TE ( ' SOLUCI ON 2: ' ) ; WRI TE ( x2) ;

END.



PROGRAM EJ ER18B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR a, b, c: REAL;
VAR r esul t ado1, r esul t ado2: REAL;

BEGI N

{Cal cul a ecuaci ones de segundo gr ado}

Cl r Scr ;

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) ;

r esul t ado1: =( - b + sqr t ( sqr ( b) - 4*a*c) ) / ( 2*a) ;
r esul t ado2: =( - b - sqr t ( 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) ;
END.


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 emai l : vi ct or ss18@hot mai l . com}
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;

ar ea: = 2 * ( 3. 1416 * sqr ( r adi o) ) + ( ( 2 * 3. 1416 * r adi o) * al t ur a) ;
vol umen: = ( 3. 1416 * sqr ( r adi o) ) * al t ur a;

Cl r Scr ;
Ejercicios de Pascal
16

WRI TE ( ' EL AREA DEL CI LI NDRO ES: ' ) ; WRI TELN ( ar ea: 6: 2) ;
WRI TE ( ' EL VOLUMEN ES: ' ) ; WRI TE ( vol umen: 6: 2) ;
END.


PROGRAM EJ ER19B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR r adi o, al t ur a: REAL;
VAR ar ea, vol umen: REAL;
BEGI N
{Con est e pr ogr ama podr emos cal cul ar el ar ea y el vol umen
de un ci l i ndr o}

Cl r Scr ;

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 ur a) ;
WRI TELN ( ' ' ) ;

ar ea: = 2 * ( 3. 1416 * sqr ( r adi o) ) + ( ( 2 * 3. 1416 * r adi o) * al t ur a) ;
vol umen: = ( 3. 1416 * sqr ( r adi o) ) * al t ur a;

WRI TE ( ' EL AREA DEL CI LI NDRO ES: ' ) ; WRI TELN ( ar ea: 6: 2) ;
WRI TE ( ' EL VOLUMEN ES: ' ) ; WRI TE ( vol umen: 6: 2) ;
END.


Escribir un programa en Pascal que calcule la hipotenusa de un tringulo rectngulo

cateto 1 = 5
cateto 2 = 5

PROGRAM EJ ER20; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR cat et o1, cat et o2: REAL;
VAR hi pot enusa: REAL;

BEGI N

cat et o1: =5;
cat et o2: =5;

hi pot enusa: = sqr t ( sqr ( cat et o1) + sqr ( cat et o2) ) ;

Cl r Scr ;

WRI TE ( ' HI POTENUSA DEL TRI ANGULO: ' ) ;
WRI TE ( hi pot enusa: 5: 2) ; WRI TE ( ' cm' ) ;

END.


PROGRAM EJ ER20B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR cat et o1, cat et o2: 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 r Scr ;

WRI TE ( ' PARA CALCULAR LA HI POTENUSA DEL TRI ANGULO ' ) ;
WRI TELN ( ' ESCRI BA LOS CATETOS: ' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' Cat et o1: ' ) ; READLN ( cat et o1) ;
WRI TE ( ' Cat et o2: ' ) ; READLN ( cat et o2) ;
Ejercicios de Pascal
17
WRI TELN ( ' ' ) ;

hi pot enusa: = sqr t ( 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 r Scr ;

WRI TE( ' I nt r oduzca cat et o_1: ' ) ; READLN ( c1) ;
WRI TE( ' I nt r oduzca cat et o_2: ' ) ; READLN ( c2) ;

h: =sqr t ( sqr ( c1) +sqr ( c2) ) ;

WRI TE( ' Cat et o_1 - - - - - - > ' ) ; WRI TELN ( c1: 5: 2) ;
WRI TE( ' Cat et o_2 - - - - - - > ' ) ; WRI TELN ( c2: 5: 2) ;
WRI TE( ' Hi pot enusa - - - - > ' ) ; WRI TELN ( h: 5: 2) ;
END.


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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR T1, T2: REAL;
VAR T1C, T2F: REAL;
BEGI N
T1: =32;
T2: =10;

T1C: =T1 - 32;
T2F: =T2 + 32;

Cl r Scr ;

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' ) ;

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 ' ) ;
END.

PROGRAM EJ ER21B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR Fahr enhei t , Cel si us: REAL;
VAR T1C, T2F: REAL;
VAR r espuest a: CHAR;
BEGI N
Cl r Scr ;

REPEAT

BEGI N
Ejercicios de Pascal
18
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 par a pasar a Fahr enhei t : ' ) ;
WRI TE ( ' Cel si us: ' ) ; READLN ( Cel si us) ;


Fahr enhei 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 par a pasar a Cel si us: ' ) ;
WRI TE ( ' Fahr enhei t : ' ) ; READLN ( Fahr enhei t ) ;

Cel si us: = ( ( Fahr enhei t - 32) / 9) * 5;

WRI TE ( Cel si us: 5: 2, ' gr ados Cel si us. ' ) ;
END;
END.


PROGRAM EJ ER21;
USES CRT;
VAR t _C, t _F: REAL;
BEGI N

Cl r Scr ;

WRI TE( ' I nt r oduzca t emper at ur a: ( Cel si us) : ' ) ;
READLN( t _C) ;

t _F: =( ( t _C*9) / 5) +32;

Cl r Scr ;

WRI TE( t _C: 5: 2) ; WRI TE( ' Cel si us equi val en a ' ) ;
WRI TE( t _F: 5: 2) ; WRI TE( ' Fahr enhei t ' ) ;
END.

Escribir un programa que lea dos nmeros 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 r Scr ;
WRI TELN( ' I nt r oduzca dos numer os: ' ) ;
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 numer os ent er os}
WRI TELN( sol uc) ;
WRI TELN;

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) ;
End.
Ejercicios de Pascal
19

* program t 4e6( I nput , Out put ) ;
Uses Cr t ;
var A, B, aDb, aMb: i nt eger ;
begin
Cl r Scr ;
wr i t e( ' Di me un nmer o ent er o: ' ) ;
r eadl n( A) ;
wr i t e( ' Di me ot r o nmer o ent er o: ' ) ;
r eadl n( B) ;
aDb := A div B;
aMb := A mod B;
wr i t el n( ' A div B = ' , aDb) ;
wr i t el n( ' A mod B = ' , aMb) ;
r eadkey
end.


Escribir un programa en Pascal que calcule el nmero de horas, minutos y segundos
que hay en 3700 segundos.

PROGRAM EJ ER22; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

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 r Scr ;

WRI TELN ( ' EN 3700 SEGUNDOS HAY: ' ) ;
WRI TE ( hor as, ' hor a' , ' y ' , mi nut os, ' mi nut os ' , segundos, ' segundos' ) ;


END.


PROGRAM EJ ER22B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR hor as, mi nut os, segundos: I NTEGER;
VAR cant i dad: I NTEGER;

BEGI N
Cl r Scr ;

WRI TE ( ' Escr i ba l os segundos par a t r ansf or mar l o a hor as, ' ) ;
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 ( ' ' ) ;

hor as: = cant i dad di v 3600;
mi nut os: = ( cant i dad mod 3600) di v 60;
segundos: = ( cant i dad mod 3600) - ( mi nut os * 60) ;
{Los segundos son: l as hor as - l os mi nut os pasados a segundos}

WRI TELN ( ' EN ' , cant i dad, ' SEGUNDOS HAY: ' ) ;
WRI TE ( hor as, ' hor as ' , mi nut os, ' mi nut os ' , segundos, ' segundos' ) ;


END.


PROGRAM EJ ER22;
USES CRT;
VAR h, m, s1, s2: I NTEGER;
BEGI N

Cl r Scr ;

Ejercicios de Pascal
20
WRI TE( ' I nt r oduzca segundos: ' ) ; READLN( s1) ;

h: =s1 di v 3600;
s2: =s1 mod 3600;

m: =s2 di v 60;
s2: =s2 mod 60;

Cl r Scr ;

WRI TE( s1) ; WRI TE( ' segundos son - - - - - > ' ) ;
WRI TE( h) ; WRI TE( ' hor as ' ) ;
WRI TE( m) ; WRI TE( ' mi nut os ' ) ;
WRI TE( s2) ; WRI TE( ' segundos ' ) ;
END.


Escribir un programa en Pascal que calcule el capital producido por un capital de
1.000.000 de pesetas, al cabo de un ao depositado a un inters del 2%.

PROGRAM EJ ER23; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT; 7

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 r Scr ;

WRI TE ( ' En un ao 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 ER23B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR capi t al , t i empo, i nt er es: REAL;
VAR capi t al pr oduci do: REAL;

BEGI N
Cl r Scr ;

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 er es/ 100) * t i empo) ;

WRI TE ( ' En est os aos 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

Ejercicios de Pascal
21
Cl r Scr ;

WRI TE( ' Capi t al : ' ) ; READLN( capi t al ) ;
WRI TE( ' I nt ef es: ' ) ; READLN( i nt er es) ;

i nt er eses: =capi t al *( i nt er es/ 100) ;

Cl r Scr ;

WRI TE( ' Capi t al : ' ) ; WRI TELN( capi t al : 5: 2) ;
WRI TE( ' I nt er es: ' ) ; WRI TELN( i nt er es: 5: 2) ;
WRI TE( ' I nt er eses: ' ) ; WRI TELN( i nt er eses: 5: 2) ;
END.

Escribir un programa en Pascal que calcula la siguiente expresin trigonomtrica para
un valor angular de 90

(sen x * cos x)/(tan x)

PROGRAM EJ ER24B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

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 ( ' ' ) ;


r esul 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 r Scr ;

WRI TE( ' i nt r oduzca el val or del angul o ( gr ados) : ' ) ;
READLN ( angul o) ;

angul o: =angul o*( 6. 28/ 360) ;

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) ;
END.


Escribir un programa en Pascal que calcule el equivalente en pies de una longitud de
10 metros.

1 metro ------------- 39.27 pulgadas
12 pulgadas -------- 1 pie

PROGRAM EJ ER25; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
Ejercicios de Pascal
22

VAR met r os, pul gadas, pi es: REAL;

BEGI N

met r os: =10;
pul gadas: =met r os * 39. 27;
pi es: =( ( 1 * met r os) * pul gadas) / ( 12 * met r os) ;

Cl r Scr ;

WRI TE ( ' El equi val ent e en pi es a una di st anci a de 10mes de: ' ) ;
WRI TE ( pi es: 3: 2) ; WRI TE ( ' pi es' ) ;

END.


PROGRAM EJ ER25B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

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 met r os}

Cl r Scr ;

WRI TELN ( ' I NTRODUZCA LOS METROS PARA PASARLOS A PI ES: ' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' Met r os: ' ) ; READLN ( met r 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 r Scr ;

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' ) ;
END.


Escribir un programa en Pascal que calcule el rea de un rectngulo a partir de sus
coordenadas:

x1 = 10 x2 = 20
y1 = 10 y2 = 20

PROGRAM EJ ER26; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR l ado1, l ado2: REAL;
VAR ar ea: REAL;

BEGI N

l ado1: =10;
l ado2: =10;

Ejercicios de Pascal
23
ar ea: = l ado1 * l ado2;

Cl r Scr ;

WRI TE ( ' El ar ea del r ect angul o es de: ' ) ; WRI TE ( ar ea: 5: 2) ;

END.


PROGRAM EJ ER26B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR x1, x2, y1, y2: REAL;
VAR ar ea: REAL;

BEGI N
{Si r ve par a cal cul ar el ar ea de un r ect angul o a par t i r de
coor denadas}

WRI TELN ( ' Par a cal cul ar el ar ea del r ect angul o ' ) ;
WRI TELN ( ' i nt r oduzca el val or de l as coor denadas' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' x1: ' ) ; READLN ( x1) ;
WRI TE ( ' y1: ' ) ; READLN ( y1) ;
WRI TE ( ' x2: ' ) ; READLN ( x2) ;
WRI TE ( ' y2: ' ) ; READLN ( y2) ;
WRI TELN ( ' ' ) ;

ar ea: = ( x2 - x1) * ( y2 - y1) ;
{Se r est an l as coor denadas de X e Y par a sacar l os l ados y
l uego se mul t i pl i can}

WRI TE ( ' El ar ea del r ect angul o es de: ' ) ; WRI TE ( ar ea: 5: 2) ;

END.


PROGRAM EJ ER26;
USES CRT;
VAR x1, y1, x2, y2: REAL;
BEGI N
Cl r Scr ;

WRI TE( ' I nt r oduaca coor denada x1: ' ) ; READLN( x1) ;
WRI TE( ' I nt r oduzca coor denada y1: ' ) ; READLN( y1) ;
WRI TE( ' I nt r oduzca coor denada x2: ' ) ; READLN( x2) ;
WRI TE( ' I nt r oduzca coor denada y2: ' ) ; READLN( y2) ;

WRI TE( ' Ar ea del r esct angul o: ' ) ; WRI TE( ( x2- x1) *( y2- y1) : 5: 2) ;
END.


Un coche se mueve, partiendo del reposo, con una aceleracin constante de 8 m/s
2.

Escribir un programa en Pascal que calcule:

a) La velocidad instantnea al cabo de5 segundos.
b) La velocidad media durante los primeros 5 segundos del recorrido.

velocidad instantnea = velocidad inicial + aceleracin * tiempo
velocidad media = (velocidad inicial + velocidad final)/2

PROGRAM EJ ER27; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR vel oci dad0, acel er aci on, t i empo: REAL;
VAR vel oci dad5, vel ocmedi a5: REAL;
BEGI N
vel oci dad0: =0;
acel er aci on: =8;
t i empo: =5;

Ejercicios de Pascal
24
vel oci dad5: =vel oci dad0 + ( acel er aci on * t i empo) ;
vel ocmedi a5: = ( vel oci dad0 + vel oci dad5) / 2;

Cl r Scr ;

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; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

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;
BEGI N
Cl r Scr ;

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 er aci on * t i empo) ;

I F vi nst ant 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 nst ant anea < 0 THEN
WRI TE ( ' NO SE PUEDE HALLAR AL ESTAR PARADO' ) ;
I F vi nst ant 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 ( ' ' ) ;

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' ) ;
END.


PROGRAM EJ E27;
USES CRT;
VAR v, a, t : REAL;
BEGI N
Cl r Scr ;

WRI TE( ' Vel oci dad i ni ci al ( m/ s) - > ' ) ; READLN( v) ;
WRI TE( ' Acel er aci on ( m/ s2) - - - - - - > ' ) ; READLN( a) ;
WRI TE( ' Ti empo ( s) - - - - - - - - - - - - - - > ' ) ; READLN( t ) ;

WRI TE( ' Vel oci dad i nst ant anea: ' ) ; WRI TELN( v+a*t : 5: 2) ;
WRI TE( ' Vel oci dad medi a: ' ) ; WRI TELN( ( v+( v+a*t ) ) / 2: 5: 2) ;
END.


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 instantnea = (velocidad inicial) (aceleracin de la gravedad * tiempo)

PROGRAM EJ ER28; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
Ejercicios de Pascal
25
USES CRT;

CONST gr avedad = 9. 81;
VAR vel oci dad0, t i empo, vel oci dadf i nal : REAL;
BEGI N
vel oci dad0: =500;
t i empo: =40;

vel oci dadf i nal : =vel oci dad0 - ( gr avedad * 40) ;

Cl r Scr ;


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; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

CONST gr avedad = 9. 81;
VAR vel oci dad0, t i empo, vel oci dadf i nal : REAL;
BEGI N
{Est e pr ogr ama si r ve par a cal cul ar l a vel oci dad i nst ant anea
de un cohet e}

Cl r Scr ;

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: ' ) ; READLN ( vel oci dad0) ;
WRI TE ( ' I NTRODUZCA EL TI EMPO: ' ) ; READLN ( t i empo) ;
WRI TELN ( ' ' ) ;

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 par ado. ' ) ;

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 r Scr ;

g: =9. 8;

WRI TE( ' Vel oci dad i ni ci al ( m/ s) - > ' ) ; READLN( v) ;
WRI TE( ' Ti empo ( s) - - - - - - - - - - - - - - > ' ) ; READLN( t ) ;

WRI TE( ' Vel oci dad i nst ant anea: ' ) ; WRI TELN( v- ( g*t ) : 5: 2) ;
END.


Escribir un programa en Pascal que detecte si un nmero introducido desde le teclado
es positivo o negativo.

PROGRAM EJ ER29; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
Ejercicios de Pascal
26
VAR num: I NTEGER;

BEGI N

Cl r Scr ;

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 numer o es negat i vo' )
ELSE
WRI TE ( ' El numer o no es posi t i vo ni negat i vo, es 0' ) ;

END.


Escribir un programa en Pascal que detecte si se han introducido en orden creciente
tres nmeros introducidos por el usuario.

PROGRAM EJ ER30; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR num1, num2, num3: I NTEGER;
BEGI N
Cl r Scr ;

WRI TE ( ' I nt r oduzca un numer o ( 1) : ' ) ; READLN ( num1) ;
WRI TE ( ' I nt r oduzca un numer o ( 2) : ' ) ; READLN ( num2) ;
WRI TE ( ' I nt r oduzca un numer o ( 3) : ' ) ; READLN ( num3) ;

I F ( ( num1 < num2) AND ( num2 < num3) ) THEN
WRI TE ( ' Los numer os se han i nt r oduci do en or den cr eci ent e' )
ELSE
WRI TE ( ' Los numer os no se han i nt r oduci do en or den cr eci ent e' ) ;
END.


PROGRAM EJ ER30;
USES CRT;
VAR num1, num2, num3: I NTEGER;
BEGI N

Cl r Scr ;

WRI TE( ' I nt r oduzca un numer o ( 1) : ' ) ; READLN( num1) ;
WRI TE( ' I nt r oduzca un numer o ( 2) : ' ) ; READLN( num2) ;
WRI TE( ' I nt r oduzca un numer o ( 3) : ' ) ; READLN( num3) ;

I F ( ( num1 < num2) AND ( num2 < num3) ) THEN
WRI TE( ' Los numer os se han i nt r oduci do en or den cr eci ent e' )
ELSE
WRI TE( ' Los numer os no se han i nt r oduci do en or den cr eci ent e' ) ;
END.


Escribir un programa en Pascal que detecte el carcter introducido por el usuario.

PROGRAM EJ ER31; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR car act er : CHAR;

BEGI N

Cl r Scr ;

WRI TE ( ' I nt r oduzca un car act er al f anumer i co: ' ) ; READLN ( car act er ) ;
WRI TE ( ' El car act er i nt r oduci do es - - - - - > ' + car act er )


END.

Ejercicios de Pascal
27

PROGRAM EJ ER31;
USES CRT;
VAR pat o_donal d: CHAR;
BEGI N
Cl r Scr ;

WRI TE( ' I nt r oduzca un car act er al f anumer i co: ' ) ; READLN( pat o_donal d) ;
WRI TE( ' El car act er i nt r oduci do es - - - - > ' + pat o_donal d)
END.


Escribir un programa en Pascal que muestre un mensaje afirmativo si el numero
introducido es mltiplo de 5.

PROGRAM EJ ER32; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

var num: I nt eger ;
Begi n
Cl r Scr ;

WRI TE( ' I nt r oduzca un numer o : ' ) ; READLN( num) ;
I F nummod 5 = 0 THEN
WRI TE( ' El numer o i nt r oduci do es ml t i pl o de 5' )
ELSE
WRI TE( ' El numer o i nt r oduci do no es ml t i pl o de 5' ) ;
End.


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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;

var num, sol uc: Real ;
Begi n
Cl r Scr ;
WRI TE( ' I nt r oduzca un numer o: ' ) ;
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;

WRI TE( ' ( ' , num: 5: 2, ' * 5) / 7) = ' , sol uc: 5: 2) ;
{Poni endo ": 5: 2" l e deci mos el f or mat o de sal i da del numer o,
5 posi ci ones y 2 deci mal es - Pr ueba a cambi ar l o como mas t e gust e}
End.


Escribir un programa en Pascal que determine si un nmero ledo desde el teclado es
par o impar.

PROGRAM EJ ER34; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num: I NTEGER;

BEGI N
Cl r Scr ;

WRI TE ( I nt r oduzca un numer o ent er o: ' ) ; READLN ( num) ;

I F num= 0 THEN
WRI TE ( ' El numer o i nt r oduci do no es par ni i mpar , es 0' )
ELSE I F ( ( nummod 2 = 0) ) THEN
WRI TE ( ' El numer o i nt r oduci do es par ' )
ELSE
Ejercicios de Pascal
28
WRI TE ( ' El numer o i nt r oduci do es i mpar ' )

END.


PROGRAM EJ ER34;
USES CRT;
VAR num: I NTEGER;
BEGI N

Cl r Scr ;

WRI TE( ' I nt r oduzca un numer o: ' ) ;
READLN( num) ;

I F ( nummod 2 = 0) THEN
WRI TE( ' NUMERO PAR' )
ELSE
WRI TE( ' NUMERO I MPAR' ) ;
END.


Escribir un programa en Pascal que detecte si un nmero ledo desde el teclado es
mayor o menor que 100.

PROGRAM EJ ER35; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num: I NTEGER;

BEGI N
Cl r Scr ;

WRI TE ( ' Escr i ba un numer o ent er o: ' ) ; READLN ( num) ;
WRI TELN ( ' ' ) ;


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 numer o que ha escr i t o es mayor de 100' )
ELSE
WRI TE ( ' El numer o es 100' )

END.


PROGRAM EJ ER35;
USES CRT;
VAR num: REAL;

BEGI N
Cl r Scr ;

WRI TE( ' I nt r oduzca un numer o : ' ) ; READLN( num) ;

I F ( num<= 100) THEN
WRI TE( ' NUMERO MENOR O I GUAL A 100 ' )
ELSE
WRI TE( ' NUMERO MAYOR DE 100' )
END.


Escribir un programa en Pascal que dado un nmero del 1 a 7 escriba el
correspondiente nombre del da de la semana.

PROGRAM EJ ER36; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num: I NTEGER;

BEGI N
Ejercicios de Pascal
29

Cl r Scr ;

WRI TE ( ' Escr i ba un numer o par a ver con que di a cor r 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 r Scr ;

WRI TE( ' Di a de l a semana ( numer o) - > ' ) ; READLN( num_di a_sem) ;

CASE num_di a_semOF
1: WRI TELN( ' Lunes' ) ;
2: WRI TELN( ' Mar t es' ) ;
3: WRI TELN( ' Mi er col es' ) ;
4: WRI TELN( ' J ueves' ) ;
5: WRI TELN( ' Vi er nes' ) ;
6: WRI TELN( ' Sabado' ) ;
7: WRI TELN( ' Domi ngo' ) ;
ELSE
WRI TELN( ' No es un di a de l a semana' ) ;
END;
END.


Escribir un programa en Pascal que lea dos nmeros 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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num1, num2: I NTEGER;
BEGI N
Cl r Scr ;

WRI TELN ( ' Escr i ba dos numer os: ' ) ;
READLN ( num1) ; WRI TE ( ' ' ) ; READLN ( num2) ;
WRI TELN ( ' ' ) ;

I F num1 > num2 THEN
BEGI N
WRI TE( num2, ' ' , num1, ' . El pr i mer numer o i nt r oduci do es mayor . ' ) ;
WRI TE( ' Se cambi a el or den. ' ) ;
END

ELSE
BEGI N
WRI TE( num1, ' ' , num2, ' . El segundo numer o i nt r oduci do es mayor . ' ) ;
WRI TE( ' No se cambi a el or den. ' ) ;
END;
END.


PROGRAM EJ ER37;
Ejercicios de Pascal
30
USES CRT;
VAR num1, num2, t emp: I NTEGER;
BEGI N
Cl r Scr ;

WRI TE( ' Numer o 1: ' ) ; READLN( num1) ;
WRI TE( ' Numer o 2: ' ) ; READLN( num2) ;

I F ( num1 > num2) THEN
BEGI N
t emp: =num1;
num1: =num2;
num2: =t emp;
WRI TELN( ' Numer o i nt er cambi ados' ) ;
WRI TE( ' Numer o 1: ' ) ; WRI TELN( num1) ;
WRI TE( ' Numer o 2: ' ) ; WRI TELN( num2) ;
END
ELSE
BEGI N
WRI TELN( ' Numer os si n i nt er cambi ar ' ) ;
WRI TE( ' Numer o 1: ' ) ; WRI TELN( num1) ;
WRI TE( ' Numer o 2: ' ) ; WRI TELN( num2) ;
END;
END.


Escribir un programa en Pascal que dada una calificacin en valor alfabtico
(A,B,C,D E) indique su equivalente en valor numrico (4,5,6,7 u 8).

PROGRAM EJ ER38; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR val or : CHAR;
BEGI N
Cl r Scr ;

WRI TE ( ' Escr i ba una cal i f i caci on ent r e a y e: ' ) ;
READLN ( val or ) ;
WRI TELN ( ' ' ) ;

CASE UPCASE( val or ) OF
' A' : WRI TE ( ' El val or cor r espondi ent e es: 4' ) ;
' B' : WRI TE ( ' El val or cor r espondi ent e es: 5' ) ;
' C' : WRI TE ( ' El val or cor r espondi ent e es: 6' ) ;
' D' : WRI TE ( ' El val or cor r espondi ent e es: 7' ) ;
' E' : WRI TE ( ' El val or cor r espondi ent e es: 8' )
ELSE
WRI TE ( ' La cal i f i caci on no exi st e' ) ;
END;
END.


PROGRAM EJ ER38;
USES CRT;
VAR cal : CHAR;
BEGI N
Cl r Scr ;

WRI TE( ' I nt r oduzca una cal i f i caci on ( A- E) : ' ) ;
READLN( cal ) ;

CASE cal OF
' A' : Wr i t eLn( ' Cal i f i caci on numer i ca - - > 4' ) ;
' B' : Wr i t eLn( ' Cal i f i caci on numer i ca - - > 5' ) ;
' C' : Wr i t eLn( ' Cal i f i caci on numer i ca - - > 6' ) ;
' D' : Wr i t eLn( ' Cal i f i caci on numer i ca - - > 7' ) ;
' E' : Wr i t eLn( ' Cal i f i caci on numer i ca - - > 8' ) ;
ELSE
Wr i t eLn( ' Cal i f i caci on i ncor r ect a' ) ;
END;
END.


Ejercicios de Pascal
31
Escribir un programa en Pascal que lea desde teclado el importe bruto de una factura
y determine el importe neto segn los siguientes criterios.

Importe bruto menor de 20.000 -> sin descuento
Importe bruto mayor de 20.000 -> 15% de descuento

PROGRAM EJ ER39; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR i mpor t e_br ut o: REAL;
VAR descuent o, t ot al : REAL;

BEGI N
Cl r Scr ;

WRI TE ( ' I ndi que el i mpor t e de su f act ur a par a ver ' ) ;
WRI TELN ( ' si l e "descont amos" al go' ) ;
WRI TELN ( ' ' ) ;
READLN ( i mpor t e_br ut o) ;
WRI TELN ( ' ' ) ;

{cal cul a el i mpor t e br ut o con descuent o del 15%}
descuent o: =i mpor t e_br ut o * 0. 15;

I F i mpor t e_br ut o > 20000 THEN

BEGI N
WRI TELN ( ' SE MERECE UN DESCUENTO DE: ' , descuent o: 5: 2, ' PTS' ) ;
t ot al : =i mpor t e_br ut o - descuent o;
WRI TELN ( ' El t ot al es de l a f act ur a 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 r Scr ;

WRI TE( ' I mpor t e Br ut o - > ' ) ; READLN( i mp_br u) ;

I F i mp_br u <= 20000 THEN
i mp_net : =i mp_br u
ELSE
i mp_net : =i mp_br u- ( 0. 15*i mp_br u) ;

WRI TE( ' I mpor t e a pagar : ' ) ; WRI TE( i mp_net : 5: 2)
END.


Escribir un programa en Pascal que una vez leda 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 var i abl es son: hor as, mi nut os y segundos}
{Son l as hor as, 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 segunt os a l os que se l es sumar a}
BEGI N
Cl r Scr ;

WRI TE ( ' Escr i ba en f or mat o hor as, mi nut os y segundos' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' Hor as ' ) ; READLN ( h) ;
Ejercicios de Pascal
32
WRI TE ( ' Mi nut os ' ) ; READLN ( m) ;
WRI TE ( ' Segundos ' ) ; READLN ( s) ;
WRI TELN ( ' ' ) ;
WRI TELN ( ' Se l e sumar a un segundo a l a hor a act ual . ' ) ;
WRI TELN ( ' ' ) ;

s: = s + 1;

I F s = 60 THEN
s2 : = 0
ELSE
s2 : = 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;

WRI TELN ( h2, ' : ' , m2, ' : ' , s2) ;
END.


PROGRAM EJ ER40;
USES CRT;
VAR h1, m1, s1: I NTEGER;
VAR h2, m2, s2: I NTEGER;
BEGI N
Cl r scr ;

WRI TE( ' Hor as - - - - - - > ' ) ; READLN( h1) ;
WRI TE( ' Mi nut os - - - - > ' ) ; READLN( m1) ;
WRI TE( ' Segundos - - - > ' ) ; READLN( s1) ;

s2: =s1+1;

I F s2=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: ' ) ;

WRI TE( h2) ; WRI TE( ' hh ' ) ;
WRI TE( m2) ; WRI TE( ' mm' ) ;
WRI TE( s2) ; WRI TE( ' ss ' ) ;
END.


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.
Ejercicios de Pascal
33

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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR ht r ab, pt sh: REAL; {Hor as t r abaj adas y pt s hor a}
VAR nhext r a, hext r a: REAL; {Numer o de hor as ext r a y hor as ext r a}
VAR sal ar i o_semanal : REAL;
BEGI N
Cl r Scr ;

WRI TE ( ' I nt r oduzca l as hor as t r abaj adas y l as pt s/ hor a que se cobr an ' ) ;
WRI TELN ( ' par a cal cul ar el sal ar i o semanal . ' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' Hor as t r abaj adas: ' ) ; READLN ( ht r ab) ;
WRI TE ( ' Pt s/ hor a: ' ) ; READLN ( pt sh) ;
WRI TE ( ' Hor as ext r a: ' ) ; READLN ( nhext r a) ;
WRI TELN ( ' ' ) ;

hext r a: =nhext r a * ( pt sh * 1. 5) ;
Sal ar i o_semanal : = ( ht r ab) * ( pt sh) + hext r a;

WRI TE ( ' El sal ar i o semanal son ' , sal ar i o_semanal : 5: 0, ' pt s. ' ) ;
END.

PROGRAM EJ ER41;
USES CRT;
VAR pr e_hor , hor _t r a, hor _ext , sal _sem: REAL;
BEGI N
Cl r Scr ;

pr e_hor : =2000;

WRI TE( ' Hor as 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;

WRI TE( ' Sal ar i o semanal : ' ) ; WRI TELN( sal _sem: 5: 2) ;
END.


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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR x: I NTEGER;
BEGI N
x: =0;

Cl r Scr ;

WHI LE X <= 10 DO
BEGI N
WRI TELN ( x) ;
x: =x+1;

END;
END.


PROGRAM EJ ER42;
USES CRT;
Ejercicios de Pascal
34
VAR x: I NTEGER;
BEGI N
x: =0;

Cl r Scr ;

WHI LE x <= 10 DO
BEGI N
WRI TELN( x) ;
x: =x+1;
END;
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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR x: I NTEGER;
BEGI N
x: =0;

Cl r Scr ;

REPEAT
WRI TELN ( x) ;
x: =x+1;
UNTI L x=10;
END.

PROGRAM EJ ER43;
USES CRT;
VAR x: I NTEGER;
BEGI N
x: =0;

Cl r Scr ;

REPEAT
WRI TELN( x) ;
x: =x + 1;
UNTI L x=10;
END.


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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR x: I NTEGER;
BEGI N

Cl r Scr ;

FOR x: =0 TO 10 DO
WRI TELN ( x) ;

END.


PROGRAM EJ ER44;
USES CRT;
VAR x: I NTEGER;
BEGI N
Cl r Scr ;

FOR x: =0 TO 10 DO
WRI TELN( x) ;
Ejercicios de Pascal
35
END.


Escribir un programa en Pascal que visualice en pantalla los nmeros pares entre 1 y
25.

PROGRAM EJ ER45; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num: I NTEGER;


BEGI N

num: =2;

Cl r Scr ;

REPEAT

WRI TELN ( num) ;
num: = num+ 2;
UNTI L num= 26;

END.


PROGRAM EJ ER45;
USES CRT;
VAR sem: I NTEGER;
BEGI N
Cl r Scr ;

sem: =1;

WHI LE sem<= 25 DO
BEGI N
I F semmod 2=0 THEN
WRI TELN( sem) ;
sem: =sem+ 1;
END;
END.


Escribir un programa en Pascal que visualice en pantalla los nmeros mltiplos de 5
comprendidos entre 1 y 100.

PROGRAM EJ ER46; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num: I NTEGER;
BEGI N
num: = 5;

Cl r Scr ;

WHI LE num<= 100 DO
BEGI N
WRI TELN ( num) ;
num: = num+ 5;
END;
END.


PROGRAM EJ ER46;
USES CRT;
VAR sem: I NTEGER;
BEGI N
Cl r Scr ;

FOR sem: = 1 TO 100 DO
Ejercicios de Pascal
36
BEGI N
I F semmod 5=0 THEN
WRI TELN( sem) ;
END;
END.


Escribir un programa en Pascal que sume los nmeros comprendidos entre 1 y 10.

PROGRAM EJ ER47; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num, x: I NTEGER;
BEGI N
Cl r Scr ;

num: =1;
x: =1;

WHI LE num<= 10 DO
BEGI N
WRI TELN ( x) ;
num: = num+ 1;
x: = x + num;
END;
END.



Escribir un programa en Pascal que genere la tabla de multiplicar de un nmero
introducido por el teclado.

PROGRAM EJ ER48; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR t abl a, x, num: I NTEGER;
BEGI N
Cl r Scr ;

WRI TE ( ' I nt r oduzca un numer o par a hacer su t abl a de mul t i pl i car : ' ) ;

READLN ( num) ; WRI TELN ( ' ' ) ;

REPEAT
WRI TELN ( t abl a) ;
x: = x + 1;
t abl a: = num* x;
UNTI L x=11;
END.


PROGRAM EJ ER48;
USES CRT;
VAR num, sem: I NTEGER;
BEGI N
Cl r Scr ;

WRI TE( ' I nt r oduzca un numer o ent er o: ' ) ; 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;
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.
Ejercicios de Pascal
37

PROGRAM EJ ER49; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR r espuest a: CHAR;

BEGI N

Cl r Scr ;

REPEAT
WRI TELN ( ' DESEA CONTI NUAR: S/ N ' ) ; READLN ( r espuest a) ;
UNTI L r espuest a=' N' ;

END.


PROGRAM EJ ER49B; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR r espuest a: STRI NG;

BEGI N

Cl r Scr ;


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 r esp: CHAR;

BEGI N
Cl r Scr ;

r esp: =' S' ;

WHI LE UPCASE( r esp) =' S' DO
BEGI N
WRI TE( ' Desea cont i nuar ? ' ) ; READLN( r esp) ;
END;
END.


Escribir un programa en Pascal que calcule cuantos aos tarda en duplicarse un
capital depositado al 5% de inters anual

PROGRAM EJ ER50; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR t i empo: REAL;
VAR cap_i ni , cap_f i n: REAL;
CONST i nt er es = 0. 05;
BEGI N
Cl r Scr ;

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 car se, 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 negat i vo' ) ;
EXI T;
END;

Ejercicios de Pascal
38
t i empo: =0;
cap_f i n: = cap_i ni ;

REPEAT
cap_f i n: =cap_f i n + ( cap_f i n * i nt er es) ;
t i empo: = t i empo + 1;
UNTI L cap_f i n > ( cap_i ni * 2) ;

WRI TELN ( ' Tar dar a' , t i empo: 3: 0, ' aos en dupl i car se' ) ;
WRI TELN ( ' Capi t al f i nal : ' , cap_f i n: 5: 2, ' pt s' ) ;
END.

PROGRAM EJ ER50;
USES CRT;
VAR cap_i ni , cap_f i n: REAL;
VAR num_year : I NTEGER;
const I NTERES=0. 05;
BEGI N
Cl r Scr ;
num_year : =0;

WRI TE( ' Capi t al i ni ci al - - - - - : ' ) ; READLN( cap_i ni ) ;

cap_f i n: =cap_i ni ;

WHI LE cap_f i n < ( cap_i ni *2) DO
BEGI N
cap_f i n: =cap_f i n+( cap_f i n*i nt er es) ;
num_year : =num_year + 1;
END;

WRI TE( ' Capi t al i ni ci al - - - - - : ' ) ; WRI TELN( cap_i ni : 5: 2) ;
WRI TE( ' Capi t al f i nal - - - - - - - : ' ) ; WRI TELN( cap_f i n: 5: 2) ;
WRI TE( ' Capi t al dupl i cado en ' ) ; WRI TE( num_year ) ; WRI TE( ' aos' ) ;
END.


Escribir un programa que calcule la suma de los nmeros hasta un nmero dado
(introducido por el usuario).

PROGRAM EJ ER51; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR x, y, num: I NTEGER;
BEGI N
Cl r Scr ;

WRI TE ( ' Est e pr ogr ama cal cul a l a suma de l os numer os hast a uno ' ) ;
WRI TE ( ' i nt r oduci do por el usuar i o: ' ) ;

READLN ( num) ; WRI TELN ( ' ' ) ;
x: =0;

WHI LE num>= 0 DO
BEGI N
WRI TELN ( x) ;
x: = x + num;
num: =num- 1;
END;
END.


PROGRAM EJ ER51;
USES CRT;
VAR i , num: I NTEGER;
VAR suma: LONGI NT;
BEGI N
Cl r Scr ;

WRI TE( ' I nt r oduzca un numer o - > ' ) ; READLN( num) ;

FOR i : =0 TO numDO
suma: =suma+ i ;

WRI TE( ' Suma ' ) ; WRI TE( ' 0- ' ) ; WRI TE( num) ; WRI TE( ' - - - - >' ) ; WRI TE( suma) ;
Ejercicios de Pascal
39
END.


Escribir un programa que pida un nmero y si el que se introduce por el teclado es
menor de 100 que vuelva a solicitarlo.

PROGRAM EJ ER52; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num: I NTEGER;
BEGI N
{Est e pr ogr ama no f i nal i za hast a que se escr i be un numer o mayor a 100}

Cl r Scr ;

REPEAT
WRI TELN ( ' I nt r oduzca un numer o: ' ) ;
READLN ( num) ;
UNTI L num> 100;
END.


PROGRAM EJ ER52;
USES CRT;
VAR num: I NTEGER;
BEGI N
Cl r Scr ;

WRI TE( ' I nt r oduzca un numer o - > ' ) ; READLN( num) ;

WHI LE num<=100 DO
BEGI N
WRI TE( ' I nt r oduzca un numer o - > ' ) ; READLN( num) ;
END;
END.




Escribir un programa en Pascal que calcule el factorial de un nmero.

PROGRAM EJ ER53; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR f act or i al , x, num, y: REAL;
BEGI N
{Est e pr ogr ama hace el f act or i al de un numer o}

Cl r Scr ;

WRI TE ( ' I nt r oduzca un numer o par a hacer su f act or i al : ' ) ;

READLN ( num) ; WRI TELN ( ' ' ) ;

x: =1;

WHI LE num> 1 DO
BEGI N
x: =x * num;
num: =num- 1;
WRI TELN ( x) ;
END;
END.


PROGRAM EJ ER53;
USES CRT;
VAR t emp, num, f ac: LONGI NT;
BEGI N
Cl r Scr ;

Ejercicios de Pascal
40
f ac: =1;
t emp: =num;

WRI TE( ' I nt r oduzca un numer o - > ' ) ; READLN( num) ;

t emp: =num;

WHI LE num>=1 DO
BEGI N
f ac: =f ac*num;
num: =num- 1;
END;

WRI TE( ' El f act or i al de ' ) ; WRI TE( t emp) ; WRI TE( ' es ' ) ; WRI TE( f ac) ;
END.


Escribir un programa en Pascal que calcule la media de 5 nmeros introducidos por el
teclado.

PROGRAM EJ ER54; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR n1, n2, n3, n4, n5: REAL;
VAR r esul t ado: REAL;
BEGI N
Cl r Scr ;

WRI TELN ( ' I nt r oduzca 5 numer os par a hacer su medi a' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' N 1: ' ) ; READLN ( n1) ;
WRI TE ( ' N 2: ' ) ; READLN ( n2) ;
WRI TE ( ' N 3: ' ) ; READLN ( n3) ;
WRI TE ( ' N 4: ' ) ; READLN ( n4) ;
WRI TE ( ' N 5: ' ) ; READLN ( n5) ;
WRI TELN ( ' ' ) ;

r esul t ado: = ( n1 + n2 + n3 + n4 + n5) / 2;

WRI TE ( r esul t ado: 5: 2) ;
END.

PROGRAM EJ ER54;
USES CRT;
VAR i : I NTEGER;
VAR num, suma: REAL;
BEGI N
Cl r Scr ;

i : =0;

REPEAT
WRI TE( ' I nt r oduzca un numer o: ' ) ; READLN( num) ;
suma: =suma+num;
i : =i +1;
UNTI L i =5;

WRI TE( ' La medi a es: ' ) ; WRI TELN( suma/ i : 5: 2) ;
END.


Escribir un programa en Pascal que calcule el salario neto semanal de un trabajador
en funcin del nmero de horas trabajadas y la tasa de impuestos de acuerdo a las
siguientes hiptesis.

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 dlares son libres de impuestos
Ejercicios de Pascal
41
b: Los siguientes 40 dlares tienen un 25% de impuestos
c: Los restantes de 45% de impuestos

PROGRAM EJ ER55; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

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_ext r 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 r Scr ;

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 der ar l as como hor as ext r a. Escr i ba en dol ar es. ' ) ;
WRI TELN ( ' ' ) ;
WRI TE ( ' Hor as t r abaj adas: ' ) ; READLN ( h_t r abaj adas) ;
WRI TE ( ' Hor as ext r a: ' ) ; READLN ( h_ext r a) ;
WRI TE ( ' Pr eci o por cada hor a: ' ) ; 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_ext r a * pr eci o_h_ext r a) ;

i mpuest os0: =0;
i mpuest os25: =sns - ( ( sns - 50) * 0. 25) ;
i mpuest os45: =sns - ( ( sns - 90) * 0. 45) ;

I F sns <= 50 THEN
WRI TELN ( ' El sal ar i o net o semanal es: ' , sns: 5: 2)
ELSE I F sns < 90 THEN
WRI TELN ( ' El sal ar i o net o semanal es: ' , i mpuest os25: 5: 2)
ELSE I F sns > 90 THEN
WRI TELN ( ' El sal ar i o net o semanal es: ' , i mpuest os45: 5: 2) ;
END.





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 r Scr ;

WRI TE( ' Numer o de hor as t r abaj adas: ' ) ; READLN( hor _t r a) ;

{Cal cul o del sal ar i 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 _br u- 50) *t asa_i mp1
ELSE
t as_i mp: =( 40*t asa_i mp1) +( ( sal _br u- 90) *t asa_i mp2) ;

{Cal cul o sal ar i o net o}

sal _net : =sal _br u- t as_i mp;

Ejercicios de Pascal
42
WRI TE( ' Hor as t r abaj adas - - - - - - - > ' ) ; WRI TELN( hor _t r a: 5: 2) ;
WRI TE( ' Sal ar i o br ut o- - - - - - - - - - - > ' ) ; WRI TELN( sal _br u: 5: 2) ;
WRI TE( ' I mpuest os- - - - - - - - - - - - - - - > ' ) ; WRI TELN( t as_i mp: 5: 2) ;
WRI TE( ' Sal ar i o net o- - - - - - - - - - - - > ' ) ; WRI TELN( sal _net : 5: 2) ;
END.


Escribir un programa en Pascal que detecte si un nmero es primo o no. Un nmero
es primo si slo es divisible por s mismo y por la unidad.

Ejemplo: 2,3,4,7,11,17,19 son nmeros primos
9 no es nmero primo, es divisible por 1, 9, 3
El algoritmo para resolver este problema pasa por dividir sucesivamente el nmero
estudiado por 2,3,4, etc., hasta el propio nmero.

Pr ogr ampr i mo ( I NPUT, OUTPUT) ;
Uses Cr t ;

Var
num: Wor d; {Los numer os pr i mos son 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, except o el 2.
Sol o es necesar i 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 nt eger ; {Guar damos el val or de l a r ai z del numer o}
noespr i mo: Bool ean; {Var i abl e par a deci r que un numer o 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; {Var i abl e que usamos dent r o del bucl e}

Begi n {p. p}
Cl r Scr ;

Repeat
Wr i t e( ' I nt r oduzca un numer o ent er o par a ver si es pr i mo: ' ) ;
Read( num) ;
Wr i t el n;
Unt i l num> 1; {Pedi mos un numer o y no l o acept amos hast a que sea > 1}

par : = nummod 2 = 0; {par va a ser Tr ue cuando el numer o sea par }

I f num= 2 Then
Wr i t e( ' El 2 es pr i mo, es el uni co numer o par que l o es. ' )

El se i f par Then
Wr i t e( ' Todo numer o par no es pr i mo, except o el 2. ' )

El se
Begi n
r ai znum: = r ound( sqr t ( num) ) ;
{Al macenamos l a r ai z del numer o, r edondeada}

For i : = r ai znumTo ( num- 1) Do
Begi n
I f ( nummod i ) = 0 Then
noespr i mo : = t r ue
End;
{Compr obamos l a di vi si bi l i dad de l os numer os super i or es
a l a r ai z cuadr ada del numer o i nt r oduci do. Si al gun numer o
di vi de al numer o, noespr i mo t oma el val or t r ue. }

I f noespr i mo Then
Wr i t e( num, ' no es un numer o pr i mo' )
El se
Wr i t e( num, ' es un numer o pr i mo' ) ;
{Most r amos por pant al l a si el numer o es pr i mo o no}
End;

End. {p. p}




Ejercicios de Pascal
43
PROGRAM EJ ER56;
USES CRT;
VAR i , num, f l ag: I NTEGER;

BEGI N
Cl r Scr ;
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 ( nummod i ) =0 THEN
f l ag: =1;
END;

I F f l ag=1 THEN
BEGI N
WRI TE( num) ; WRI TE( ' no es un numer o pr i mo' ) ;
END
ELSE
BEGI N
WRI TE( num) ; WRI TE( ' es un numer o pr i mo' ) ;
END;
END.


Escribir un programa en Pascal que calcule la depreciacin de un objeto segn el
mtodo de la lnea recta. Calcular el nmero de aos que tarda en hacerse 0. En este
mtodo el valor original del objeto se divide por su vida (nmero de aos). El cociente
resultante ser la cantidad en la que el objeto se deprecia anualmente. Por ejemplo, si un
objeto se deprecia 8000 dlares en diez aos, entonces la depreciacin anual ser
8000/10=800 dlares. Por tanto, el valor del objeto habr disminuido en 800 dlares
cada ao. Ntese que la depreciacin anual es la misma cada ao cuando se utiliza este
mtodo.

PROGRAM EJ ER57; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR annos, val or : REAL;
VAR depr eci aci onanno: REAL;
VAR x: I NTEGER;
BEGI N
Cl r Scr ;

WRI TELN ( ' Escr i ba l os dat os par a conocer l a depr eci aci on anual ' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' Val or or i gi nal : ' ) ; READLN ( val or ) ;
WRI TE ( ' Numer o de aos: ' ) ; READLN ( annos) ;
WRI TELN ( ' ' ) ;

depr eci aci onanno: = val or / annos;
x: =0;

WHI LE val or > 0. 1 DO
BEGI N
val or : =val or - depr eci aci onanno;
x: = x + 1;
WRI TELN ( ' AO ' , x: 2, ' : ' , val or : 8: 0, ' pt s. ' ) ;
END;
END.



PROGRAM EJ ER57;
USES CRT;

VAR val _i ni , val _dep, t as_dep: REAL;
VAR i , ani os: I NTEGER;
BEGI N
Ejercicios de Pascal
44
Cl r Scr ;

WRI TE( ' Val or i ni ci al - - - - - > ' ) ; READLN( val _i ni ) ;
WRI TE( ' Numer o de aos - - - - > ' ) ; READLN( ani os) ;

t as_dep: =val _i ni / ani os; ;
val _dep: =val _i ni - t as_dep;

FOR I : =1 TO ani os DO
BEGI N
WRI TE( ' Ao ' ) ;
WRI TE( i : 3) ;
WRI TE( ' - - - - - - ' ) ;
WRI TELN( val _dep: 10: 2) ;
val _dep: =val _dep- t as_dep;
END;
END.


Escribir un programa en Pascal que calcule la depreciacin de un objeto segn el
mtodo del balance doblemente declinante. En este mtodo, el valor del objeto
disminuye cada ao en un porcentaje constante. Por tanto, la verdadera cantidad
depreciada, en dlares, variara de un ao al siguiente. Para obtener el factor de
depreciacin, dividimos por dos la vida del objeto. Este factor se multiplica por el valor
del objeto al comienzo de cada ao (y no el valor del original del objeto) para obtener la
depreciacin anual. Supongamos, por ejemplo que deseamos depreciar un objeto de
8000 dlares por diez aos; el factor de depreciacin ser 2/10=0.2. Por tanto, la
depreciacin el primer ao ser 0,2 X 8000 = 1600 dlares, la depreciacin del segundo
ao ser 0,2 X 6400=1280 dlares; la depreciacin del tercer ao ser 0,2 X 5120 =
1024 dlares, 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 et o = aos}
VAR depr eci aci onanno: REAL;
VAR val or obj : REAL; {Val or del obj et o}
VAR x: I NTEGER;
BEGI N
Cl r Scr ;
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: ' ) ; READLN ( val or obj ) ;
WRI TE ( ' AOS: ' ) ; READLN ( vi daobj ) ;
WRI TELN ( ' ' ) ;

f dd: = 2 / vi daobj ;
x: =1;

REPEAT
depr eci aci onanno: = f dd * val or obj ;
val or obj : =val or obj - depr eci aci onanno;
WRI TELN ( ' AO ' , x: 2, ' : ' , val or obj : 8: 2, ' pt s. ' ) ;
x: = x + 1;
UNTI L x > vi daobj ;

WRI TELN ( ' ' ) ;
x: = x - 1;
WRI TELN ( ' EL VALOR A LOS ' , x, ' AOS SERA DE: ' , val or obj : 6: 2, ' pt s. ' ) ;
END.

PROGRAM EJ ER58;
USES CRT;

VAR val _i ni , val _dep, coe_dep, t as_dep: REAL;
VAR i , ani os: I NTEGER;
BEGI N
Ejercicios de Pascal
45
Cl r Scr ;

WRI TE( ' Val or i ni ci al - - - - - >' ) ; READLN( val _i ni ) ;
WRI TE( ' Numer o de aos - - - - > ' ) ; READLN( ani os) ;

coe_dep: =2/ ani os;
t as_dep: =val _i ni *coe_dep;
val _dep: =val _i ni - t as_dep;

FOR i : =1 TO ani os DO
BEGI N
WRI TE( ' Ao ' ) ;
WRI TE( i : 3) ;
WRI TE( ' - - - - - - ' ) ;
WRI TELN( val _dep: 10: 2) ;
val _dep: =val _dep- ( val _dep*coe_dep) ;
END;
END.


Escribir un programa que calcule las races de la ecuacin (ax
2
+ 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
ecuacin es degenerada.
b. Si a es igual a 0 y b no es igual a 0, existe una raz nica con valor c/b.
c. En los dems casos, utilizaremos la frmula siguiente:
xi = (-b (b2 4ac))/(2a)
La expresin d = b
2
4ac se denomina discriminante.
Si d es mayor o igual que 0 entonces hay dos races reales
Si d es menor que 0 entonces hay dos races complejas de la forma: x+yi,x-yi.
Siendo x el valor b/2a e y el valor absoluto de (b
2
-4ac)/(2a)

PROGRAM EJ ER59; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

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 r Scr ;
WRI TELN ( ' I nt r oduzca l os val or es par a cal cul ar l a ecuaci on de 2 gr ado' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' a: ' ) ; READLN ( a) ;
WRI TE ( ' b: ' ) ; READLN ( b) ;
WRI TE ( ' c: ' ) ; READLN ( c) ;
WRI TELN ( ' ' ) ;

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 st e una r ai z con val or - c/ b: ' , - c/ b: 5: 2)
ELSE
BEGI N
sp: =( - b + sqr t ( sqr ( b) - ( 4 * a * c) ) ) / 2 * a;
sn: =( - b - sqr t ( sqr ( b) - ( 4 * a * c) ) ) / 2 * a;
d: =sqr ( b) - ( 4 * a * c) ;

WRI TE ( ' La sol uci on posi t i va es: ' ) ; WRI TELN ( sp: 5: 2) ;
WRI TE ( ' La sol uci on negat i va es: ' ) ; WRI TELN ( sn: 5: 2) ;
END;
END.

PROGRAM EJ ER59;
USES CRT;
VAR a, b, c, d, r 1, r 2, x, y: REAL;
BEGI N
Cl r Scr ;
Ejercicios de Pascal
46

WRI TE( ' Coef i ci ent e a - > ' ) ; READLN( a) ;
WRI TE( ' Coef i ci ent e b - > ' ) ; READLN( b) ;
WRI TE( ' Coef i ci ent e c - > ' ) ; READLN( c) ;

I F ( a=0) AND ( b=0) THEN
BEGI N
WRI TE( ' La ecuaci on es degener ada' ) ;
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
r 1: =( - b+sqr t ( sqr ( b) - 4*a*c) ) / ( 2*a) ;
r 2: =( - b- sqr t ( 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- sqr t ( abs( sqr ( b) - 4*a*c) ) ;
WRI TE( ' r 1 = ' ) ; WRI TE( x: 5: 2) ; WRI TE( ' + ' ) ; WRI TE( y: 5: 2) ;
WRI TELN( ' i ' ) ;
WRI TE( ' r 2 = ' ) ; WRI TE( x: 5: 2) ; WRI TE( ' - ' ) ; WRI TE( y: 5: 2) ;
WRI TELN( ' i ' ) ;
END;
END;
END.

Escribir un programe en Pascal que resuelva una matriz 3 x 3.

PROGRAM DETER3; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR a11, a12, a13, a21, a22, a23, a31, a32, a33: REAL;
VAR M: REAL;

BEGI N

Cl r Scr ;

WRI TELN ( ' I nt r oduzca l os val or es de l a mat r i z 3x3' ) ;
WRI TELN ( ' ' ) ;

WRI TE ( ' a11: ' ) ; READLN ( a11) ;
WRI TE ( ' a12: ' ) ; READLN ( a12) ;
WRI TE ( ' a13: ' ) ; READLN ( a13) ;
WRI TE ( ' a21: ' ) ; READLN ( a21) ;
WRI TE ( ' a22: ' ) ; READLN ( a22) ;
WRI TE ( ' a23: ' ) ; READLN ( a23) ;
WRI TE ( ' a31: ' ) ; READLN ( a31) ;
WRI TE ( ' a32: ' ) ; READLN ( a32) ;
WRI TE ( ' a33: ' ) ; READLN ( 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).
Ejercicios de Pascal
47

PROGRAM EJ ER60; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
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 r Scr ;

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 r Scr ;

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.


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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR numer o: LONGI NT;
VAR l et r a: STRI NG;
BEGI N
Cl r Scr ;

numer o: =56789312;
l et r a: =' F' ;

WRI TE ( ' EL NUMERO DEL DNI ES: ' ) ;
WRI TE ( numer o, ' - ' , + l et r a) ;
END.


PROGRAM EJ ER61;
USES CRT;
VAR cad1, cad2: STRI NG;
BEGI N
cad1: =' 56789312' ;
cad2: =' X' ;

Cl r Scr ;

WRI TE( ' NI F: ' + cad1 + ' - ' + cad2) ;
END.


Ejercicios de Pascal
48
Transformar la cadena Esto es una prueba, en la cadena Esto es prueba. Utilizar la
funcin DELETE(S,P,N) que elimina N caracteres de la cadena S, a partir de la posicin
P.

PROGRAM EJ ER62; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR f r ase: STRI NG;
BEGI N
Cl r Scr ;

{Tr ansf or ma l a cadena "Est o es una pr ueba" en "Est o es pr ueba"}

WRI TELN ( ' Est e pr ogr ama supr i me un numer o 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) ;

DELETE ( f r ase, 9, 4) ;
WRI TELN ( f r ase) ;
END.

PROGRAM EJ ER62;
USES CRT;
VAR cad1, cad2: STRI NG;
BEGI N
cad1: =' Est o es una pr ueba' ;

Cl r Scr ;

WRI TELN( cad1) ;
DELETE( cad1, 9, 4) ;
WRI TELN( cad1) ;
END.


Transformar la cadena Curso de Pascal en la cadena Curso de Programacin en
Pascal. Utilizar la funcin INSERT(SO,SD,P) que inserta la cadena SO en la cadena
SD a partir de la posicin P.

PROGRAM EJ ER63; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR f r ase1: STRI NG;
VAR f r ase2: STRI NG;
BEGI N
Cl r Scr ;

{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: =' Pr ogr amaci on en ' ;

WRI TE ( ' Fr ase1: ' ) ; WRI TELN ( f r ase1) ;
WRI TE ( ' Fr ase2: ' ) ; WRI TELN ( f r ase2) ;
WRI TELN ( ' ' ) ;

i nser t ( f r ase2, f r ase1, 10) ;

WRI TELN ( f r ase1) ;
END.


PROGRAM EJ ER63;
USES CRT;
VAR cad1, cad2: STRI NG;
BEGI N
Ejercicios de Pascal
49
cad1: =' Cur so de Pascal ' ;
cad2: =' Pr ogr amaci on en ' ;

Cl r Scr ;

WRI TELN( cad1) ;
I NSERT( cad2, cad1, 10) ;
WRI TELN( cad1) ;
END.



Transformar los valores 91 y 8631217 almacenados en dos variables de tipo REAL
en la cadena 91-8631217. Previamente transformar los dos valores numricos a
variables tipo cadena con la funcin STR(X,S) que almacena en S, como una cadena
alfanumrica, el valor X.

PROGRAM EJ ER64; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR val or 1, val or 2: REAL;
VAR val or _1, val or _2: STRI NG;
BEGI N
Cl r Scr ;

val or 1: =91;
val or 2: =5550908;

STR( val or 1: 5: 2, val or _1) ;
STR( val or 2: 10: 2, val or _2) ;

WRI TELN ( val or _1, ' - ' , + val or _2) ;
END.



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 r Scr ;

WRI TELN( cad1 + ' - ' + cad2) ;
END.


Concatenar las cadenas El, hombre, invisible en una sola el hombre invisible. Utilizar
la funcin CONCAT (S1,S2,S3...) que retorna la concatenacin de todas las cadenas
pasadas como parmetros.

PROGRAM EJ ER65; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR S1, S2, S3: STRI NG;
VAR cadena_f i nal : STRI NG;
BEGI N
Cl r Scr ;

S1: =' El ' ;
S2: =' hombr e' ;
S3: =' i nvi si bl e' ;

Ejercicios de Pascal
50
cadena_f i nal : =CONCAT( S1, S2, S3) ;

WRI TE ( cadena_f i nal ) ;
END.


PROGRAM EJ ER65;
USES CRT;
VAR cad1, cad2, cad3, cad4, esp: STRI NG;
BEGI N
cad1: =' el ' ;
cad2: =' hombr e' ;
cad3: =' i nvi si bl e' ;
esp: =' ' ;

cad4: =CONCAT( cad1, esp, cad2, esp, cad3) ;

Cl r Scr ;

WRI TELN( cad1) ;
WRI TELN( cad2) ;
WRI TELN( cad3) ;
WRI TELN( cad4) ;
END.


Extraer la cadena SOFIA de la cadena FILOSOIA. Utilizar la funcin COPY(S,P,N),
que devuelve una subcadena de S, de N caracteres, el primero de los cuales ocupa la
posicin P de S.

PROGRAM EJ ER66; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR S1, S2: STRI NG;
BEGI N
Cl r Scr ;

S1: =' FI LOSOFI A' ;

S1: =COPY ( S1, 5, 5) ; {' SOFI A' }

WRI TE ( S1) ;
END.


PROGRAM EJ ER66;
USES CRT;
VAR cad1, cad2: STRI NG;
BEGI N
cad1: =' FI LOSOFI A' ;
cad2: =COPY( cad1, 5, 5) ;

Cl r Scr ;

WRI TELN( cad1) ;
WRI TELN( cad2) ;
END.


Obtener la longitud de la cadena esternocleidomastoideo, utilizando la funcin
LENGTH(S), que devuelve la longitud de la cadena S.

PROGRAM EJ ER67; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR cadena: STRI NG;
BEGI N
Cl r Scr ;

WRI TELN ( ' I nt r oduzca una cadena par a saber su l ongi t ud: ' ) ;
WRI TELN ( ' ' ) ;
Ejercicios de Pascal
51

READLN ( cadena) ;

WRI TELN ( ' ' ) ; WRI TE ( ' La l ongi t ud de l a cadena es de: ' ) ;

WRI TE ( LENGTH( cadena) , ' car act er es' ) ;
END.


Obtener la primera posicin en la que comienza la subcadena fragi en la cadena
supercalifragilisticoexpialidoso. Utilizar la funcin POS(SB,S) que devuelve la
posicin de la primera aparicin de la subcadena SB en la cadena S.

PROGRAM EJ ER68; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR cadena: STRI NG;
VAR subcadena: STRI NG;
VAR posi : I NTEGER;
BEGI N
Cl r Scr ;

cadena: =' super cal i f r agi l i st i coexpi al i doso' ;
subcadena: =' f r agi ' ;

posi : =POS( subcadena, cadena) ;

WRI TE ( posi ) ;
END.


PROGRAM EJ ER68;
USES CRT;
VAR cad1, cad2: STRI NG;
VAR posi : I NTEGER;
BEGI N
cad1: =' super cal i f r agi l i st i coexpi al i doso' ;
cad2: =' f r agi ' ;
posi : =POS( cad2, cad1) ;

Cl r Scr ;

WRI TE( ' Posi ci on: ' ) ; WRI TELN( posi ) ;
END.


Transformar la cadena Lenguaje Pascal en la cadena LENGUAJE PASCAL. Utilizar
la funcin UPCASE(C) que transforma un carcter C a mayscula.

PROGRAM EJ ER69; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR cadena: STRI NG;
VAR i : I NTEGER;
BEGI N
Cl r Scr ;

cadena: =' Lenguaj e Pascal ' ;

i : =0;

FOR i : =1 TO LENGTH( cadena) DO
cadena[ i ] : =UPCASE( cadena[ i ] ) ;

WRI TE ( cadena) ;
i : = i + 1;
END.



PROGRAM EJ ER69;
Ejercicios de Pascal
52
USES CRT;
VAR i : I NTEGER;
VAR cad1: STRI NG;
BEGI N
i : =0;
cad1: =' Lenguaj e Pascal ' ;

Cl r Scr ;

WRI TELN( cad1) ;

WHI LE i <= LENGTH( cad1) DO
BEGI N
cad1[ i ] : =UPCASE( cad1[ i ] ) ;
i : =i +1;
END;

WRI TELN( cad1) ;
END.



Transformar la cadena VACA en la cadena vaca.

PROGRAM EJ ER70; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR cadena: STRI NG;
VAR i , v_asci i : I NTEGER;
BEGI N
Cl r Scr ;

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;

WRI TE ( cadena) ;
END.


PROGRAM EJ ER70;
USES CRT;
VAR i , val _asc: I NTEGER;
VAR cad1: STRI NG;
BEGI N
i : =0;
cad1: =' VACA' ;

Cl r Scr ;

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;

WRI TELN( cad1) ;
END.

Escribir un programa en Pascal que lea 4 datos, calcule y visualice en pantalla su
producto, suma y media aritmtica.

PROGRAM EJ ER71; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

Ejercicios de Pascal
53
VAR a, b, c, d: REAL;
VAR pr oduct o, suma, medi a: REAL;
BEGI N
Cl r Scr ;

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;

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 numer os es: ' , suma: 10: 2) ;
WRI TELN ( ' El val or de l a medi a de l os numer o ses: ' , medi a: 10: 2) ;
END.



PROGRAM EJ ER71;
USES CRT;
VAR i : I NTEGER;
VAR dat o, pr oduct o, suma, medi a: REAL;
BEGI N
Cl r Scr ;

pr oduct o: =1;
suma: =0;

FOR i : =1 TO 4 DO
BEGI N
WRI TE( ' Dat o ' ) ; WRI TE( i ) ; WRI TE( ' - > ' ) ;
READLN( dat o) ;
pr oduct o: =pr oduct o*dat o;
suma: =suma+dat o;
END;

medi a: =suma/ i ;

WRI TE( ' Pr oduct o: ' ) ; WRI TELN( pr oduct o: 5: 2) ;
WRI TE( ' Suma: ' ) ; WRI TELN( suma: 5: 2) ;
WRI TE( ' Medi a: ' ) ; WRI TELN( medi a: 5: 2) ;
END.


Escribir un programa en Pascal que lea un peso en libras y a continuacin visualice su
equivalente en kilos y en gramos. 1 libra = 0.45 Kg

PROGRAM EJ ER72; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR l i br as, ki l os, gr amos: REAL;
BEGI N
Cl r Scr ;

WRI TE ( ' I nt r oduzca el numer o de l i br as par a 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;

WRI TELN ( ' Son ' , ki l os: 5: 2, ' ki l os y ' , gr amos: 5: 2, ' gr amos. ' ) ;
END.

PROGRAM EJ ER72;
USES CRT;
VAR l i br as: REAL;
BEGI N
Cl r Scr ;

Ejercicios de Pascal
54
WRI TE( ' Li br as - > ' ) ; READLN( l i br as) ;
WRI TE( ' Ki l ogr amos - > ' ) ; WRI TELN( l i br as*0. 45: 7: 2) ;
WRI TE( ' Gr amos - > ' ) ; WRI TELN( ( l i br as*0. 45) / 1000: 7: 4) ;
END.


Escribir un programa en Pascal que calcule y escriba el cuadrado de 821.

PROGRAM EJ ER73; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR numer o, cuadr ado: REAL;
BEGI N
Cl r Scr ;

WRI TE ( ' Escr i ba un numer o par a hacer su cuadr ado: ' ) ;
READLN ( numer o) ;
WRI TELN ( ' ' ) ;

cuadr ado: = sqr ( numer o) ;

WRI TELN ( ' El cuadr ado es: ' , cuadr ado: 5: 2)
END.


PROGRAM EJ ER73;
USES CRT;
VAR numer o: LONGI NT;
BEGI N
Cl r Scr ;

numer o: =821;

WRI TE( ' Cuadr ado de 821: ' ) ; WRI TE( sqr ( numer o) ) ;
END.



Escribir un programa en Pascal que escriba los nmeros comprendidos entre 1 y 100.
El programa escribir en la pantalla los nmeros en grupos de 20, solicitando al usuario
si quiere o no continuar visualizando el siguiente grupo de nmeros.

PROGRAM EJ ER74; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR num, f l ag, x: I NTEGER;
VAR r esp: CHAR;
BEGI N
Cl r Scr ;
num: =0;
x: =1;

FOR num: =1 TO 100 DO
BEGI N
I F ( nummod 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;
END.

PROGRAM EJ ER74;
USES CRT;
VAR f i l a, i : I NTEGER;
VAR r esp: CHAR;
Ejercicios de Pascal
55
BEGI N
f i l a: =1;
Cl r Scr ;

FOR i : =1 TO 100 DO
BEGI N
WRI TELN( i ) ;
f i l a: =f i l a+1;

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 r Scr ;
f i l a: =0;
CONTI NUE;
END
ELSE
EXI T;
END;
END;
END.

Escribir un programa en Pascal que calcule, independientemente, la suma y la media
de los nmeros pares e impares comprendidos entre 1 y 200.

PROGRAM EJ ER75; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

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 r Scr ;

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: =t ot al _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 / t ot al _i ;
medi a_p: = suma_p / t ot al _p;
WRI TELN ( ' La suma de l os i mpar es es: ' , suma_i ) ;
WRI TELN ( ' La suma de l os par es es : ' , suma_p) ;
WRI TELN ( ' La medi a de l os i mpar es es: ' , medi a_i : 5: 2) ;
WRI TELN ( ' La medi a de l os par es es: ' , medi a_p: 5: 2) ;
END.

PROGRAM EJ ER75;
USES CRT;
VAR i , conpar , coni mp, sumapar , sumai mp: I NTEGER;
BEGI N
Cl r Scr ;

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
Ejercicios de Pascal
56
sumai mp: =sumai mp+i ;
coni mp: =coni mp+1;
END;
END;

WRI TE( ' Suma par es: ' ) ; WRI TELN( sumapar : 7) ;
WRI TE( ' Medi a par es: ' ) ; WRI TELN( sumapar di v conpar : 7) ;

WRI TE( ' Suma i mpar es: ' ) ; WRI TELN( sumai mp: 7) ;
WRI TE( ' Medi a i mpar es: ' ) ; WRI TELN( sumai mp di v coni mp: 7) ;
END.

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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR i _br ut o, i _net o, i mpor t e: REAL;
CONST I VA=0. 12;
BEGI N
Cl r Scr ;

WRI TE ( ' Escr i ba el i mpor t e br ut o: ' ) ; READLN ( i _br ut o) ;
WRI TELN ( ' ' ) ;

i _br ut o: = i _br ut o + ( I VA * i _br ut o) ;

I F i _br ut o > 50000 THEN

BEGI N
i _net o: = i _br ut o - ( i _br ut o * 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

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;
END.


PROGRAM EJ ER76;
USES CRT;
VAR i mp_br ut o: REAL;
BEGI N
Cl r Scr ;

WRI TE( ' I mpor t e br ut o - > ' ) ; READLN( i mp_br ut o) ;

I F i mp_br ut o <= 50000 THEN
BEGI N
WRI TE( ' I mpor t e net o: ' ) ;
WRI TELN( i mp_br ut o+( i mp_br ut o*0. 12) : 9: 2) ;
END
ELSE
BEGI N
WRI TE( ' I mpor t e net o - > ' ) ;
i mp_br ut o: =i mp_br ut o- ( i mp_br ut o*0. 05) ;
WRI TELN( i mp_br ut o+( i mp_br ut o*0. 12) : 9: 2) ;
END;
END.


Escribir un programa en Pascal que calcule la suma de los cuadrados de los 100
primeros nmeros enteros.

PROGRAM EJ ER77; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
Ejercicios de Pascal
57
USES CRT;

VAR x: I NTEGER;
VAR suma: REAL;
BEGI N
Cl r Scr ;

FOR x: =1 TO 100 DO

BEGI N
suma: = suma + ( sqr ( x) ) ;
END;

WRI TE ( suma) ;
END.


PROGRAM EJ ER77;
USES CRT;
VAR i : I NTEGER;
VAR sumacuad: LONGI NT;
BEGI N
Cl r Scr ;

FOR i : =1 TO 100 DO
sumacuad: =sumacuad+sqr ( i ) ;

WRI TE( ' Suma de Cuadr ados ( 1- 100) - - - > ' ) ; WRI TE( sumacuad) ;
END.


Escribir un programa en Pascal que visualice una tabla de conversin de kilmetros 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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR m, m_mar , m_t er r : REAL; {met r os, mi l l as mar i nas y t er r est r es}
BEGI N
Cl r Scr ;

WRI TE ( ' I nt r oduzca el numer o de met r os: ' ) ; READLN ( m) ;
WRI TELN ( ' ' ) ;

m_mar : =m/ 1852;
m_t er r : =m/ 1609;

WRI TE ( m: 5: 2, ' met r os son: ' , m_mar : 5: 2, ' mi l l as mar i nas y ' ) ;
WRI TE ( m_t er r : 5: 2, ' mi l l as t er r est r es' ) ;
END.


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 r Scr ;

WRI TELN( ' Ki l omet r os' + ' - - - - ' + ' Mi l l as M. ' + ' - - - - ' + ' Mi l l as T. ' ) ;

FOR ki l omet r os: =1 TO 10 DO
BEGI N
WRI TE( ki l omet r os: 6) ;
WRI TE( ki l omet r os/ 1. 852: 15: 2) ;
WRI TELN( ki l omet r os/ 1. 609: 15: 2) ;
END;
END.
Ejercicios de Pascal
58


Escribir un programa en Pascal que lea 10 datos desde el teclado y sume slo
aquellos que sean negativos.

PROGRAM EJ ER79; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR y, suma: REAL;
VAR x: I NTEGER;
BEGI N
Cl r Scr ;

WRI TELN ( ' Debe i nt r oduci r 10 dat os, se sumar an sol o l os negat i vos: ' ) ;
WRI TELN ( ' ' ) ;

FOR x: =1 TO 10 DO

BEGI N
WRI TE( ' I nt r oduzca el dat o ' , x: 2, ' : ' ) ; READLN ( y) ;
I F y < 0 THEN suma : = suma + y;
END;

WRI TELN ( ' ' ) ;
WRI TE ( ' El r esul t ado de l a suma de l os numer os negat i vos es: ' ) ;
WRI TELN ( suma: 5: 2) ;
END.



PROGRAM EJ ER79;
USES CRT;
VAR i : I NTEGER;
VAR num, sumaneg: REAL;
BEGI N
Cl r Scr ;

sumaneg: =0;

FOR i : =1 TO 10 DO
BEGI N
WRI TE( ' Numer o ' ) ; WRI TE( i ) ; WRI TE( ' - > ' ) ; READLN( num) ;
I F num< 0 THEN
sumaneg: =sumaneg+num;
END;

WRI TE( ' Suma de negat i vos: ' ) ; WRI TE( sumaneg) ;
END.


Escribir un programa en Pascal que calcule el sueldo semanal de un trabajador a
partir del nmero de horas trabajadas por da y las siguientes tarifas:

600 pts/hora Turno de maana
800 pts/hora Turno de noche
1000 pts/hora Turno de das festivos

PROGRAM EJ ER80; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;

VAR t _mannana, t _noche, t _f est i vos: I NTEGER;
VAR t ot al : LONGI NT;
BEGI N
Cl r Scr ;

WRI TE ( ' I nt r oduzca l as hor as 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 ur no de maana: ' ) ; READLN ( t _mannana) ;
Ejercicios de Pascal
59
WRI TE ( ' Hor as del t ur no de noche: ' ) ; READLN ( t _noche) ;
WRI TE ( ' Hor as del t ur no de di as f est i vos: ' ) ; READLN ( t _f est i vos) ;
WRI TELN ( ' ' ) ;

t ot al : =( 600 * t _mannana) + ( 800 * t _noche) + ( 1000 * t _f est i vos) ;

WRI TE ( ' El suel do semanal es de: ' , t ot al ) ;
END.





PROGRAM EJ ER80;
USES CRT;
VAR t ur no, r esp: CHAR;
VAR numhor as: REAL;
BEGI N
Cl r Scr ;
r esp: =' S' ;

WRI TE( ' Tur no ? ( M/ N/ F) - - - > ' ) ; READLN( t ur no) ;
WRI TE( ' Numer o de hor as ( di a) - - - > ' ) ; READLN( numhor as) ;

WHI LE UPCASE( r esp) = ' S' DO
BEGI N
I F UPCASE( t ur no) = ' M' THEN
BEGI N
WRI TE( ' Sal ar i o net o: ' ) ; WRI TELN( numhor as*5*600: 7: 2) ;
END
ELSE I F UPCASE( t ur no) = ' N' THEN
BEGI N
WRI TE( ' Sal ar i o net o: ' ) ; WRI TELN( numhor as*5*800: 7: 2) ;
END
ELSE I F UPCASE ( t ur no) = ' F' THEN
BEGI N
WRI TE( ' Sal ar i o net o: ' ) ; WRI TELN( numhor as*5*1000: 7: 2) ;
END
ELSE
WRI TELN( ' Tur no i ncor r ect o' ) ;
WRI TE( ' Desea cont i nuar ( S/ N) ? - - - > ' ) ;
READLN( r esp) ;

I F UPCASE( r esp) = ' S' THEN
BEGI N
Cl r Scr ;
WRI TE( ' Tur no ? ( M/ N/ F) - - - >' ) ; READLN( t ur no) ;
WRI TE( ' Numer o de hor as ( di a) - - - >' ) ; READLN( numhor as) ;
END
ELSE
EXI T;
END;
END.


Escribir un programa en Pascal que rellene un array con los nmeros enteros
comprendidos entre 4 y 14.

PROGRAM EJ ER81; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar r _num: ARRAY [ 4. . 14] of I NTEGER;
VAR i : I NTEGER;
BEGI N
Cl r Scr ;

FOR i : =4 TO 14 DO
ar r _num[ i ] : =i ;

FOR i : =4 TO 14 DO
BEGI N
WRI TELN( ' Numer o: ' , ar r _num[ i ] ) ;
END;
END.

Ejercicios de Pascal
60

PROGRAM EJ ER81;
USES CRT;
VAR ar r _num: ARRAY[ 1. . 11] of I NTEGER;
VAR i , num: I NTEGER;
BEGI N
Cl r Scr ;

num: =4;

FOR i : =1 TO 11 DO
BEGI N
ar r _num[ i ] : =num;
num: =num+1;
END;

FOR i : =1 TO 11 DO
BEGI N
WRI TE( ' Posi ci n ' , i : 2, ' : ' ) ; WRI TELN( ar r _num[ i ] : 5) ;
END;
END.


Escribir un programa en Pascal que rellene un array con los nmeros pares
comprendidos entre 1 y 10.

PROGRAM EJ ER82; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar r _num: ARRAY [ 1. . 10] of I NTEGER;
VAR i , b: I NTEGER;
BEGI N
Cl r Scr ;
i : =1;

WHI LE i <= 10 DO
BEGI N
ar r _num[ i ] : =i ;

I F ( i mod 2) =0 THEN
BEGI N
WRI TELN( ar r _num[ i ] ) ;
END;

i : = i + 1;
END;
END.


PROGRAM EJ ER82;
USES CRT;
VAR ar r _num: ARRAY[ 1. . 10] of I NTEGER;
VAR i , num: I NTEGER;
BEGI N
Cl r Scr ;
i : =1;
num: =1;

WHI LE num<=10 DO
BEGI N
I F nummod 2 = 0 THEN
BEGI N
ar r _num[ i ] : =num;
i : =i +1;
END;
num: =num+1;
END;

ar r _num[ i ] : =3;
i : =1;

WHI LE ar r _num[ i ] <> 3 DO
BEGI N
WRI TE( ' Posi ci on ' , i : 2, ' : ' ) ; WRI TELN( ar r _num[ i ] : 5) ;
i : =i +1;
Ejercicios de Pascal
61
END;
END.


Escribir un programa en Pascal que rellene un array con los nmeros comprendidos
entre 25 y 35 divididos por 3.

PROGRAM EJ ER83; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar r _num: ARRAY [ 1. . 11] of REAL;
VAR i : I NTEGER;
BEGI N
Cl r Scr ;

FOR i : =25 TO 35 DO
ar r _num[ i ] : =i ;

FOR i : =25 TO 35 DO
WRI TELN( ar r _num[ i ] / 3: 5: 2) ;
END.


PROGRAM EJ ER83;
USES CRT;
VAR ar r _num: ARRAY[ 1. . 11] of REAL;
VAR i , num: I NTEGER;
BEGI N
Cl r Scr ;

i : =1;
num: =025;

FOR i : =1 TO 10 DO
BEGI N
ar r _num[ i ] : =num/ 3;
num: =num+1;
END;

i : =1;

WHI LE i <= 10 DO
BEGI N
WRI TE( ' Posi ci on ' , i : 2, ' : ' ) ; WRI TELN( ar r _num[ i ] : 5) ;
i : =i +1;
END;
END.


Escribir un programa en Pascal que rellene un array con cinco nmeros 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 r Scr ;

FOR i : =5 TO 10 DO
BEGI N
ar r _num1[ i ] : =i ;
ar r _num2[ i ] : =ar r _num1[ i ] ;
END;

FOR i : =5 TO 10 DO
WRI TELN ( ar r _num2[ i ] ) ;

END.


PROGRAM EJ ER84;
USES CRT;
Ejercicios de Pascal
62
VAR ar r _num1, ar r _num2: ARRAY[ 1. . 5] of I NTEGER;
VAR i , num: I NTEGER;
BEGI N
Cl r Scr ;

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
ar r _num2[ i ] : =ar r _num1[ i ] ;

i : =1;

WRI TELN( ' ARRAY 1 ARRAY 2' : 30) ;

WHI LE i <= 5 DO
BEGI N
WRI TE( ' Posi ci on ' , i : 2, ' : ' ) ;
WRI TE( ar r _num1[ i ] : 5) ;
WRI TELN( ar r _num2[ i ] : 10) ;
i : =i +1;
END;
END.

Escribir un programa en Pascal que rellene un array de 10 elementos con los nmeros
comprendidos entre 23 y 32 y copie en otro array esos nmeros 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 r Scr ;

FOR i : =23 TO 32 DO
BEGI N
ar r _num1[ i ] : =i ;
ar r _num2[ i ] : =( ar r _num1[ i ] * 0. 35) ;
END;

FOR i : =23 TO 32 DO
WRI TELN( ar r _num2[ i ] : 5: 2) ;
END.


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 r Scr ;

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
ar r _num2[ i ] : =ar r _num1[ i ] *0. 35;

i : =1;
WRI TELN( ' ARRAY 1 ARRAY 2' : 30) ;

WHI LE i <= 10 DO
BEGI N
Ejercicios de Pascal
63
WRI TE( ' Posi ci on ' , i : 2, ' : ' ) ;
WRI TE( ar r _num1[ i ] : 5: 2) ;
WRI TELN( ar r _num2[ i ] : 10: 2) ;
i : =i +1;
END;
END.


Escribir un programa en Pascal que rellene un array con los veinte primeros nmeros
pares y calcule su suma.

PROGRAM EJ ER86; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar r _par es: ARRAY [ 1. . 40] of I NTEGER;
VAR i , suma: I NTEGER;
BEGI N
Cl r Scr ;

i : =1;

FOR i : = 1 TO 40 DO
BEGI N
I F ( i mod 2) = 0 THEN
BEGI N
ar r _par es[ i ] : =i ;
suma: = suma + i ;
END;
END;

WRI TELN( ' La suma de l os 20 pr i mer os numer os par es es: ' , suma) ;
END.


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 r Scr ;

i : =1;
num: =1;
suma_par : =0;

WHI LE i <=20 DO
BEGI N
I F nummod 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;

WHI LE i <= 20 DO
BEGI N
WRI TE( ' Posi ci n ' , i : 2, ' : ' ) ;
WRI TELN( ar r _num[ i ] : 5) ;
i : =i +1;
END;
WRI TE( ' SUMA: ' , suma_par : 12) ;
END.


Escribir un programa en Pascal que solicite cinco nmeros, los almacene en un array
y luego calcule la media aritmtica de esos nmeros.

PROGRAM EJ ER87; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar r _num: ARRAY [ 1. . 5] of REAL;
Ejercicios de Pascal
64
VAR i , num: I NTEGER;
VAR medi a: REAL;
BEGI N
Cl r Scr ;

WRI TELN ( ' Escr i ba 5 numer os par a hacer su medi a ar i t met i 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 + ar r _num[ i ] ;

medi a: = medi a / i ;

WRI TELN ( ' La medi a ar i t met i ca es: ' , medi a: 5: 2) ;
END.




PROGRAM EJ ER87;
USES CRT;
VAR ar r _num: ARRAY[ 1. . 10] of REAL;
VAR num, suma, medi a: REAL;
VAR i : I NTEGER;
BEGI N
Cl r Scr ;

i : =0;
suma: =0;
medi a: =0;

WHI LE i <5 DO
BEGI N
WRI TE( ' Numer o ' , i +1, ' - - - >' ) ; READLN( num) ;
ar r _num[ i ] : =num;
suma: =suma+num;
i : =i +1;
END;

medi a: =( suma/ i ) ;

WRI TE( ' Medi a: ' , medi a: 5: 2) ;
END.


Escribir un programa en Pascal que tras asignar los nmeros, 23, 45, 68, 99, 10, 15 y
4 a un array, determine la posicin del array en la que se encuentra el mximo 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 r Scr ;

FOR i : =1 TO 7 DO
BEGI N

I F ar r _num[ i ] =99 THEN
WRI TE ( ' La posi ci on del mayor numer o ( ' , ar r _num[ i ] , ' ) es: ' , i ) ;
END;
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;
Ejercicios de Pascal
65
BEGI N
Cl r Scr ;

FOR i : =1 TO 7 DO
BEGI N
I F ar r _num[ i ] > val _max THEN
BEGI N
val _max: =ar r _num[ i ] ;
posi _max: =i ;
END;
END;

WRI TE( ' VALOR MAXI MO: ' , val _max, ' POSI CI ON: ' , posi _max) ;
END.


Escribir un programa en Pascal que tras asignar los nmeros, -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 r Scr ;

FOR i : =1 TO 7 DO
BEGI N
I F ar r _num[ i ] >= 0 THEN
suma_p: = suma_p + ar r _num[ i ]
ELSE I F ar r _num[ i ] < 0 THEN
suma_i : = suma_i + ar r _num[ i ] ;
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 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 r Scr ;

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;

WRI TELN( ' SUMA POSI TI VOS: ' , suma_pos) ;
WRI TELN( ' SUMA NEGATI VOS: ' , suma_neg) ;
END.

Escribir un programa en Pascal que tras asignar los nmeros, 23, 45, 68, 99, 10, 15 y
4 a un array, determine las posiciones del array en las que se encuentran el mximo y el
mnimo valor.

PROGRAM EJ ER90; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
CONST ar r : 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 r Scr ;

mayor : = ar r [ 1] ;
menor : = ar r [ 1] ;
Ejercicios de Pascal
66

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 ar r [ i ] <= menor THEN
BEGI N
menor : = ar r [ i ] ;
posi _menor : =i ;
END
ELSE
CONTI NUE;
END;

WRI TELN ( ' El numer o menor es: ' , menor : 3) ;
WRI TELN ( ' Su posi ci on es: ' , posi _menor : 3) ;
END.


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 r Scr ;

val _mi n: =ar r _num[ 1] ;
val _max: =ar r _num[ 1] ;

FOR i : =1 TO 7 DO
BEGI N
I F ar r _num[ i ] > val _max THEN
BEGI N
val _max: =ar r _num[ i ] ;
pos_max: =i ;
END;

I F ar r _num[ i ] < val _mi n THEN
BEGI N
val _mi n: =ar r _num[ i ] ;
pos_mi n: =i ;
END;
END;

WRI TELN( ' VALOR MXI MO: ' , val _max: 3, ' POSI CI N: ' , pos_max: 3) ;
WRI TELN( ' VALOR MNI MO: ' , val _mi n: 3, ' POSI CI N: ' , pos_mi n: 3) ;
END.


Escribir un programa en Pascal que determine la posicin de la siguiente matriz en la
que se encuentra el valor mximo.

23 45 68
34 99 12
25 78 89

PROGRAM EJ ER91B;
USES CRT;
CONST ar r _num: ARRAY[ 1. . 3, 1. . 3] of I NTEGER=( ( 23, 45, 68) ,
Ejercicios de Pascal
67
( 34, 99, 12) ,
( 25, 78, 89) ) ;
VAR i , j , val _max, pos_max_i , pos_max_j : I NTEGER;
BEGI N
Cl r Scr ;

val _max: =ar r _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( ' VALOR MAXI MO: ' , val _max: 3,
' POSI CI ON: ' , pos_max_i : 3, pos_max_i : 3) ;
END.



Escribir un programa en Pascal que sume, independientemente, los elementos
positivos y negativos de la siguiente matriz:

-12 23 32
45 -56 -10
25 78 89

PROGRAM EJ ER92; {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. . 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 r Scr ;

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 + ar r _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 ar r _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 r Scr ;

FOR i : =1 TO 3 DO
BEGI N
Ejercicios de Pascal
68
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;
END;

WRI TELN( ' SUMA POSI TI VOS: ' , suma_pos: 5) ;
WRI TELN( ' SUMA NEGATI VOS: ' , suma_neg: 5) ;
END.


Escribir un programa en Pascal que multiplique por dos los elementos de la siguiente
matriz:

4 7 8
6 9 1
5 0 3

PROGRAM EJ ER93; {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. . 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 r Scr ;

FOR i : = 1 TO 3 DO
BEGI N
FOR j : =1 TO 3 DO
BEGI N
mul t : =ar r _num[ i , j ] * 2;
WRI TELN( ' El ement o ( ' , i , ' , ' , j , ' ) mul t i pl i cado por 2: ' , mul t : 3) ;
END;
END;
END.

PROGRAM EJ ER93;
USES CRT;
CONST ar r _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 r Scr ;

FOR i : =1 TO 3 DO
FOR j : =1 TO 3 DO
ar r _num[ i , j ] : =ar r _num[ i , j ] *2;

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;
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 6 7 8 9
0 0 0 0 0

Ejercicios de Pascal
69
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 r Scr ;

i : =1;

FOR j : =1 TO 5 DO
BEGI N
FOR i : =1 TO 1 DO
BEGI N
cuad: =sqr ( ar r _num[ i , j ] ) ;
ar r _num[ 2, j ] : = cuad;
WRI TELN ( ar r _num[ 2, j ] ) ;
END;
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 r Scr ;

FOR i : =1 TO 1 DO
FOR j : =1 TO 5 DO
ar r _num[ i +1, j ] : =sqr ( ar r _num[ i , j ] ) ;

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;
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 posicin de cada fila:

3 6 7 8 9 0
1 4 3 2 7 0

PROGRAM EJ ER95; {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. . 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 r Scr ;

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;

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) ;
END.


PROGRAM EJ ER95;
USES CRT;
Ejercicios de Pascal
70
CONST ar r _num: ARRAY[ 1. . 2, 1. . 6] of I NTEGER=( ( 3, 6, 9, 7, 8, 0) ,
( 1, 4, 3, 2, 7, 0) ) ;
VAR suma_f i l a, i , j : I NTEGER;
BEGI N
Cl r Scr ;

FOR i : =1 TO 2 DO
BEGI N
suma_f i l a: =0;
FOR j : =1 TO 6 DO
suma_f i l a: =suma_f i l a+ar r _num[ i , j ] ;
ar r _num[ i , j ] : =suma_f i l a;
END;

FOR i : =1 TO 2 DO
BEGI N
FOR j : =1 TO 6 DO
WRI TE( ar r _num[ i , j ] : 3) ;
WRI 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 posicin de cada columna:

3 2
4 6
8 9
0 0

PROGRAM EJ ER96; {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. . 4, 1. . 2] of I NTEGER=( ( 3, 2) , ( 4, 6) ,
( 8, 9) , ( 0, 0) ) ;
VAR i , j , suma1, suma2: I NTEGER;
BEGI N
Cl r Scr ;

FOR j : =1 TO 2 DO
BEGI N
FOR i : =1 TO 4 DO
BEGI N
I F j =1 THEN suma1: = suma1 + ar r _num[ i , j ] ;
I F j =2 THEN suma2: = suma2 + ar r _num[ i , j ] ;
END;
END;

WRI TELN ( ' El r esul t ado de l a suma 1 es: ' , suma1) ;
WRI TELN ( ' El r esul t ado de l a suma 2 es: ' , suma2) ;
END.


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 posicin de la fila o columna correspondiente. Adems la suma total de todos los
elementos de la matriz se almacenar en el elemento de la esquina inferior derecha de la
matriz:

1 7 0
5 6 0
6 4 0
7 3 0
0 0 0

PROGRAM EJ ER97; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
Ejercicios de Pascal
71
USES CRT;
CONST ar r _num: ARRAY [ 1. . 5, 1. . 3] of I NTEGER=( ( 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 NTEGER; {Es l a suma hor i zont al y ver t i cal }

BEGI N
Cl r Scr ;

FOR i : =1 TO 5 DO
BEGI N
FOR j : =1 TO 3 DO
BEGI N
suma_h: = suma_h + ar r _num[ i , j ] ;
END;

WRI TELN ( ' La suma de l a f i l a ' , i , ' es: ' , suma_h: 3) ;
t ot al : =t ot al + suma_h;
suma_h: =0;
END; WRI TELN ( ' ' ) ;

FOR j : =1 TO 2 DO
BEGI N
FOR i : =1 TO 5 DO
BEGI N
suma_v: = suma_v + ar r _num[ i , j ] ;
END;

WRI TELN ( ' La suma de l a col umna ' , j , ' es: ' , suma_v: 3) ;
suma_v: =0;
t ot al : =t ot al + suma_v;
END; WRI TELN ( ' ' ) ;

WRI TELN ( ' La suma t ot al es: ' , t ot al ) ;

END.


PROGRAM EJ ER97;
USES CRT;
CONST ar r _num: ARRAY[ 1. . 5, 1. . 3] of I NTEGER=( ( 1, 7, 0) ,
( 5, 6, 0) ,
( 6, 4, 0) ,
( 7, 3, 0) ,
( 0, 0, 0) ) ;
VAR suma_f i l a, suma_col u, suma_t ot a, i , j : I NTEGER;
BEGI N

Cl r Scr ;

FOR i : =1 TO 4 DO
BEGI N
suma_f i l a: =0;
FOR j : =1 TO 2 DO
BEGI N
suma_f i l a: =suma_f i l a+ar r _num[ i , j ] ;
suma_t ot a: =suma_t ot a+ar r _num[ i , j ] ;
END;
ar r _num[ i , j +1] : =suma_f i l a;
END;
ar r _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+ar r _num[ i , j ] ;
END;
ar r _num[ i +1, j ] : =suma_col u;
END;

FOR i : =1 TO 5 DO
BEGI N
FOR j : =1 TO 3 DO
WRI TE( ar r _num[ i , j ] : 3) ;
Ejercicios de Pascal
72
WRI TELN( ' ' ) ;
END;
END.



Escribir un programa en Pascal que divida todos los elementos de una matriz M (3,4)
por el elemento situado en la posicin 2,2.

PROGRAM EJ ER98; {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. . 3, 1. . 4] of I NTEGER=( ( 23, 45, - 68, 99) ,
( 45, 65, - 76, 34) ,
( 56, - 75, 34, 98) ) ;
VAR i , j : I NTEGER;
VAR di vi : REAL;
BEGI N
Cl r Scr ;

FOR i : =1 TO 3 DO
BEGI N
FOR j : =1 TO 4 DO
BEGI N
di vi : = ar r _num[ i , j ] / ar r _num[ 2, 2] ;
WRI TE ( ' Di vi di do ' , ar r _num[ i , j ] : 3, ' por el numer o ' ) ;
WRI TELN ( ar r _num[ 2, 2] : 3, ' : ' , di vi : 5: 2) ;
END;
END;
END.


PROGRAM EJ ER98;
USES CRT;
CONST mat r i z_m: ARRAY[ 1. . 3, 1. . 4] OF REAL = ( ( 2, 3, 4, 12) ,
( 7, 9, 8, 11) ,
( 5, 6, 1, 19) ) ;
VAR i , j : I NTEGER;
VAR el e_22: REAL;
BEGI N
el e_22: =mat r i z_m[ 2, 2] ;

Cl r Scr ;

FOR i : =1 TO 3 DO
BEGI N
FOR j : =1 TO 4 DO
WRI TE( mat r i z_m[ i , j ] : 5: 2, ' ' ) ;
WRI TELN( ' ' ) ;
END;

FOR i : =1 TO 3 DO
FOR j : =1 TO 4 DO
mat r i z_m[ i , j ] : =mat r i z_m[ i , j ] / el e_22;

WRI TELN( ' ' ) ;

FOR i : =1 TO 3 DO
BEGI N
FOR j : =1 TO 4 DO
WRI TE( mat r i z_m[ i , j ] : 5: 2, ' ' ) ;
WRI TELN( ' ' ) ;
END;
END.


Escribir un programa en Pascal que almacene en un array los nmeros primos
comprendidos entre 1 y 100.

PROGRAM EJ ER99; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR ar r _num: ARRAY [ 1. . 100] of I NTEGER;
Ejercicios de Pascal
73
VAR f l ag: I NTEGER;
VAR i , num: I NTEGER;
BEGI N
Cl r Scr ;

num: =1;

WHI LE num< 100 DO
BEGI N
FOR i : =2 TO ( num- 1) DO
BEGI N
I F ( nummod i ) =0 THEN
f l ag: =1;
END;

I F f l ag<>1 THEN
WRI TELN ( num: 3, ' es un nmer o pr i mo. ' ) ;

num: = num+ 1;
f l ag: =0;
END;
END.


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 numMOD di vi sor = 0 THEN
f l ag: =0;
END;

I F f l ag=1 THEN
BEGI N
ar r a_pr i m[ i ] : =num;
i : =i +1;
END;
END;
ar r a_pr i m[ i ] : =0;

i : =1;
WHI LE( ar r a_pr i m[ i ] <>0) DO
BEGI N
WRI TE( ar r a_pr i m[ i ] , ' ' ) ;
i : =i +1;
END;
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 r Scr ;
Ejercicios de Pascal
74

FOR c: =1 TO 3 DO
BEGI N
FOR f : =1 TO 4 DO
BEGI N
m_t r a[ f , c] : =mat r i z[ c, f ] ;
WRI TE ( ' ( ' , f , ' , ' , c, ' ) ' ) ;
WRI TELN ( m_t r a[ f , c] : 3) ;
END;
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 r Scr ;

FOR i : =1 TO 3 DO
FOR j : =1 TO 4 DO
m_t r an[ 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( ' ' ) ;

FOR i : =1 TO 4 DO
BEGI N
FOR j : =1 TO 3 DO
WRI TE( m_t r an[ i , j ] : 5: 2, ' ' ) ;
WRI TELN( ' ' ) ;
END;
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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR or i gi nal : ARRAY [ 1. . 4] of STRI NG;
VAR i nver t i da: ARRAY [ 1. . 4] of STRI NG;
VAR cadena: STRI NG;
VAR i : I NTEGER;
BEGI N
Cl r Scr ;
cadena: =' hol a' ;

FOR i : =1 TO LENGTH( cadena) DO
BEGI N
or i gi nal [ i ] : = cadena[ i ] ;
WRI TE ( or i gi nal [ i ] ) ;
END;

WRI TELN ( ' ' ) ;

FOR i : =LENGTH( cadena) DOWNTO 1 DO
BEGI N
i nver t i da[ i ] : =cadena[ i ] ;
WRI TE ( i nver t i da[ i ] ) ;
END;
END.


Ejercicios de Pascal
75
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 r Scr ;
WRI TELN( cad_or i g) ;
j : =9;

FOR i : =1 TO 9 DO
BEGI N
cad_copi [ j ] : =cad_or i g[ i ] ;
j : =j - 1;
END;

FOR i : =1 TO 9 DO
BEGI N
WRI TE( cad_copi [ i ] ) ;
END;
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 r Scr ;
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, ' ) ' ) ; {Muest r a l a posi ci on}
WRI TELN ( m3[ f , c] ) ;
END;
END.


PROGRAM EJ ERC102;
USES CRT;
CONST m_1: ARRAY[ 1. . 3, 1. . 4] OF REAL= ( ( 12, 13, 14, 10) ,
( 15, 16, 17, 10) ,
( 18, 19, 20, 10) ) ;
CONST m_2: ARRAY[ 1. . 3, 1. . 4] OF REAL= ( ( 1, 1, 1, 1) ,
( 1, 1, 1, 1) ,
( 1, 1, 1, 1) ) ;
VAR m_suma: ARRAY[ 1. . 3, 1. . 4] OF REAL;
VAR i , j : I NTEGER;
BEGI N
Cl r Scr ;

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( ' ' ) ;
Ejercicios de Pascal
76
END;

WRI TELN( ' ' ) ;

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;
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 emai l : vi ct or ss18@hot mai l . com}
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;

BEGI N
Cl r Scr ;

FOR i : =1 TO LENGTH( cad_or i ) DO
BEGI N
I F cad_or i [ i ] <>' ' THEN
BEGI N
cad_t r a[ i ] : =cad_or i [ i ] ;
WRI TE ( cad_t r a[ i ] ) ;
END;
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 r Scr ;

i : =1;
nc: =LENGTH( cad_or i g) ;

j : =1;
FOR i : =1 TO nc DO
BEGI N
I F cad_or i g[ i ] <> ' ' THEN
BEGI N
cad_t r an[ j ] : =cad_or i g[ i ] ;
j : =j +1;
END
END;

WRI TELN( cad_or i g) ;

FOR i : =1 TO j - 1 DO
BEGI N
WRI TE( cad_t r an[ i ] ) ;
END;
END.


Escribir un programa en Pascal que cuente las maysculas 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' ) ;
Ejercicios de Pascal
77
VAR i , mayus: I NTEGER;

BEGI N
Cl r Scr ;

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 r Scr ;

nc: =LENGTH( cad_or i 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;

WRI TELN( cad_or i g) ;
WRI TELN( ' MAYUSCULAS: ' , n_may) ;
END.


Escribir un programa en Pascal que cambie las maysculas de una cadena de
caracteres a minsculas y viceversa.

PROGRAM EJ ERC105; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR cadena: STRI NG;
VAR v_asci i , i : I NTEGER;
BEGI N
Cl r Scr ;

{Est e pr ogr ama 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;

WRI TE ( cadena[ i ] ) ;
END;
END.


PROGRAM EJ ERC105;
Ejercicios de Pascal
78
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 r Scr ;

WRI TELN( cad_or i g) ;

nc: =LENGTH( cad_or i 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_or i g[ i ] : =CHR( ORD( cad_or i g[ i ] ) + 32)
ELSE I F ( ORD( cad_or i g[ i ] ) >= 97) AND ( ORD( cad_or i g[ i ] ) <= 122) THEN
cad_or i g[ i ] : =CHR( ORD( cad_or i g[ i ] ) - 32) ;
END;

WRI TELN( cad_or i g) ;
END.


Escribir un programa en Pascal que encripte una cadena de caracteres sumando 2 al
cdigo ASCII de cada uno de sus caracteres.

PROGRAM EJ ERC106; {Aut or : Vi ct or Sanchez Sanchez emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR cadena: STRI NG;
VAR encr i p: I NTEGER;
VAR i : I NTEGER;
BEGI N
Cl r Scr ;

WRI TE ( ' I nt r oduzca una cadena par a encr i pt ar l a: ' ) ;
READLN ( cadena) ;
WRI TELN( ' ' ) ;

FOR i : =1 TO LENGTH( cadena) DO
BEGI N
encr i p: =ORD( cadena[ i ] ) ;
cadena[ i ] : =( CHR( encr i p + 2) ) ;
WRI TE( cadena[ i ] ) ;
END;
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 r Scr ;

WRI TELN( cad_or i g) ;

nc: =LENGTH( cad_or i g) ;

FOR i : =1 TO nc DO
cad_or i g[ i ] : =CHR( ORD( cad_or i g[ i ] ) +2) ;

WRI TELN( cad_or i g) ;
END.


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 emai l : vi ct or ss18@hot mai l . com}
USES CRT;
VAR cadena: STRI NG;
VAR encr i p, i : I NTEGER;
Ejercicios de Pascal
79
BEGI N
Cl r Scr ;

WRI TE ( ' I nt r oduzca una cadena par a encr i pt ar l 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( encr i p + 2) ) ;
END
ELSE
BEGI N
encr i p: =ORD( cadena[ i ] ) ;
cadena[ i ] : = ( CHR( encr i p + 3) ) ;
END;

WRI TE( cadena[ i ] ) ;
END;
END.


Escribir un programa que lea tres nmeros enteros e indique si estn o no, en orden
numrico ascendente o descendente.

PROGRAM EJ ER001;
Uses Cr t ;
var num1, num2, num3: I nt eger ;

Begi n
Cl r Scr ;

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;

I f ( num1 > num2) and ( num2 > num3) t hen
WRI TELN( ' Ha i nt r oduci do l os numer os en or den decr eci ent e. ' )
El se i f ( num1 < num2) and ( num2 < num3) t hen
WRI TELN( ' Ha i nt r oduci do l os numer os en or den cr eci ent e. ' )
El se
WRI TELN( ' No ha i nt r oduci do l os numer os en or den. ' ) ;
End.

* Program EJ 001( I nput , Out put ) ;
Uses Cr t ;
Var n1, n2, n3: i nt eger ;

Function or denados( i , j : I nt eger ) : Bool ean;
{Funci n bool eana de dos par met r os ent er os, que devuel ve TRUE si el
pr i mer nmer o es menor o i gual que el segundo y FALSE si es mayor : }

begin
or denados := ( i <= j )
end;

Begin
Cl r Scr ;
wr i t el n( ' *** I nt r oduce t r es nmer os ent er os ***' ) ;
wr i t e( ' Pr i mer o: ' ) ;
r eadl n( n1) ;
wr i t e( ' Segundo: ' ) ;
r eadl n( n2) ;
wr i t e( ' Ter cer 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 nmer o es menor que
Ejercicios de Pascal
80
el segundo, y si el segundo es adems 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 nmer os est n en or den. ' )
else wr i t el n( ' Los t r es nmer os NO est n en or den' ) ;
r eadkey
end.


Escribir un programa que lea 5 valores de temperatura, y escriba el nmero 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 or es de t emper at ur a: ' ) ;
WRI TELN;

cont : = 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 nput , Out put ) ;
var cont , t emp, i ndex: i nt eger ;
begin
cont := 0;
{Cont ador , n de veces que l a t emper at ur a es i nf er i or a 0 gr ados. }

for i ndex := 1 to 7 do
begin
wr i t e( ' Di me t emper at ur a( ' , i ndex, ' ) : ' ) ;
r eadl n( t emp) ;
{ Leer t emper at ur a desde t ecl ado}

if t emp < 0 then cont := cont + 1
{ Si es menor que cer o, i ncr ement ar el cont ador }

end;
wr i t e( ' La t emper at ur a f ue ' , cont ) ;
{ Escr i bi r r esul t ado por pant al l a. }

if cont = 1 then wr i t e( ' vez ' ) else wr i t e( ' veces ' ) ;
wr i t el n( ' i nf er i or a cer o. ' )

end.


Se realiza un examen, se piden las notas del nmero 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. Tambin deben decirse las notas introducidas que no sean 0, 5 o
10.


PROGRAM EJ ER003;
Uses Cr t ;
var cer o, ci nco, di ez: I nt eger ;
Ejercicios de Pascal
81
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 r Scr ;

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) ;
I f not a = 0 t hen i nc( cer o)
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 ] : = not a;
End;

WRI TELN;
WRI TE( ' Ha habi do ' , cer o) ;
I f cer o = 1 t hen WRI TELN( ' cer o. ' ) el se WRI TELN( ' cer os. ' ) ;
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 not as 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 ] , ' , ' ) ;
END.

* program EJ 003( I nput , Out put ) ;
Uses Cr t ;
var Not as: Set of 0. . 10;
i ndex, al umno, veces0, veces5, veces10, N: i nt eger ;
begin
cl r scr ;
Not as := [ ] ;
{Se i ni ci al i za a conj unt o vac o el conj unt o donde se guar dar n
l as cal i f i caci ones obt eni das por l os al umnos}

wr i t e( ' Cunt 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 cont ador es que guar dar 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 nmer o de al umnos. }
{Repet i r N veces el si gui ent e pr oceso: }

begin
wr i t e( ' Not a de al umno( ' , i ndex, ' ) : ' ) ;
r eadl n( al umno) ;
{Leer l a not a del al umno. Si l a not a no est a en el conj unt o,
ent onces se aade: }

if not( al umno i n not as) then not as := not as + [ al umno] ;
case al umno of
{si l a not a es 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 el n;
wr i t el n( ' Nmer o de al umnos con un cer o: ' , veces0) ; {Se muest r an l os }
wr i t el n( ' Nmer o de al umnos con un ci nco: ' , veces5) ; {r esul t ados }
wr i t el n( ' Nmer o de al umnos con un di ez: ' , veces10) ;
wr i t el n;
Ejercicios de Pascal
82
wr i t el n( ' Ni ngn 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 ngn al umno habr obt eni do esa cal i f i caci n. }

for i ndex := 0 to 10 do
if not( i ndex i n not as) then wr i t e( i ndex, ' ' ) ;
r eadkey
end.

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 ;
Const vocal 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 usuar i o que l as i nt r oduzca en mayuscul as o mi nuscul as}
var cont , i : I nt eger ;
var l et r a: Char ;
var f r ase: Ar r ay[ 1. . 85] of Char ;

Begi n
Cl r Scr ;
WRI TELN( ' Escr i ba una f r ase, acabando con un punt o' ) ; WRI TELN;
i : =0;
cont : =0;

REPEAT

l et r a : = Readkey; {Readkey no most r ar a l os car act er es en pant al l a}
WRI TE ( l et r a) ; {Debemos i ncl ui r l o par a que nos muest r e l os car act er es}

i f UPCASE( l et r 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;
WRI TE ( ' El numer o de vocal es i nt r oduci das es ' , cont ) ;
End.

PROGRAM EJ ER004_2;
Uses Cr t ;
Const vocal 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 usuar i o que l as i nt r oduzca en mayuscul as o mi nuscul as}
var cont , i : I nt eger ;
var l et r a: Char ;
var f r ase: St r i ng; {Es l o uni co que cambi a con r espect o a l a ot r a ver si on}

Begi n
Cl r Scr ;
WRI TELN( ' Escr i ba una f r ase, acabando con un punt o' ) ; WRI TELN;
i : =0;
cont : =0;

REPEAT

l et r a : = Readkey; {Readkey no most r ar a l os car act er es en pant al l a}
WRI TE ( l et r a) ; {Debemos i ncl ui r l o par a que nos muest r e l os car act er es}

i f UPCASE( l et r 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;
Ejercicios de Pascal
83
WRI TE ( ' El numer o de vocal es i nt r oduci das es ' , cont ) ;
End.

* Program EJ 004( I nput , Out put ) ;
Uses Cr t ;
Const vocal es: Set of Char = ( [ ' A' , ' E' , ' I ' , ' O' , ' U' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' ] ) ;
Let Buenas: Set of Char = ( [ ' a' . . ' z' , ' A' . . ' Z' , ' 0' . . ' 9' ,
' ' , ' . ' , ' , ' , ' : ' , ' ; ' , ' ( ' , ' ) ' , ' - ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' ,
' ' , ' ?' , ' - ' , ' ! ' , ' "' , ' %' , ' / ' , ' <' , ' >' ] ) ;

Var l et r a: Char ; {par a guar dar cada car ct er i nt r oduci do desde t ecl ado. }
Fr ase: array [ 1. . 80] of Char ;
i ndex, numvocal es: i nt eger ;

Begin
Cl r Scr ;
Wr i t el n( ' Escr i be t u f r ase, y t er mi 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
{par a no guar dar car act er es especi al es. }

begin
i nc( i ndex) ;
{i ncr ement ar el ndi ce del array. }

wr i t e( l et r a) ;
{Readkey no muest r a por pant al l a el car ct er l e do. }

f r ase[ i ndex] := l et r a;
{se asi gna el car ct er al array. }

if upcase( l et r a) i n vocal es then i nc( numvocal es)
{Si el car ct er 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 el n;
wr i t el n;
wr i 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 nt eger ;

Begi n
Cl r Scr ;

WRI TELN( ' Escr i ba una f r ase, t er mi nando con un punt o' ) ;
WRI TELN;

i : = 0;
l ongi t ud : = 0;

REPEAT
car act er : = Upcase( Readkey) ;
WRI TE( car act er ) ;
I f car act er i n [ ' A' . . ' Z' ] t hen
Begi n
abc[ i ] : = car act er ;
{el ar r ay abc quedar a con espaci os vaci os, l os que no sean
l et r as del abedecar i o, si no se pone el i ncr ement o de i dent r o+
de est e begi n- end. Pr ueba a qui t ar el begi n- end si t i enes
Ejercicios de Pascal
84
cur i osi dad en ver l o}
i nc( i ) ;
End;
UNTI L car act er = ' . ' ;
l ongi t ud : = i ;

WRI TELN;
WRI TELN;
WRI TELN( ' Las l et r as del abecedar i o i nt r oduci das son: ' ) ;
WRI TELN;

For i : = 0 To l ongi t ud Do
WRI TE( abc[ i ] , ' ' ) ;
End.

* program EJ 005( I nput , Out put ) ;
Uses Cr t ;
var Est an: Set of Char ;
Ent r ada: Char ;
begin
cl r scr ;
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) ;
{Se l ee de t ecl ado un car ct er , y se pasa a mayscul as con
l a f unci n upcase( ) . }

if ent r ada i n [ ' A' . . ' Z' , ' ' , ' , ' , ' . ' , ' ; ' ] then wr i t e( ent r ada) ;
{Si el car ct er i nt r oduci 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 n Est an) then Est an := Est an + [ ent r ada]
{Si el car ct er no est a en el conj unt o "Est an", ent onces se aade}

until ent r ada = ' *' ;
{Se r epi t e el pr oceso hast a que se i nt r oduzca un *}

wr i t el n;
wr i t el n;
wr i t el n( ' Las si gui ent es l et r as han apar eci do: ' ) ;
{Se pr ocede a most r ar l os car act er es que per t enecen al conj unt o}

for ent r ada := ' A' to ' Z' do
{Se r ecor r en l os val or es desde l a A hast a l a Z}

if ent r ada i n Est an then wr i t e( ent r ada, ' ' ) ;
{par a cada l et r a, si est en el conj unt o "Est an", si gni f i ca
que ha si do i nt r oduci do por t ecl ado, y ent onces 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 apar eci do: ' ) ;
{Ahor a se pr ocede a most r ar l os que no per t enecen al conj unt o. Par a el l o
se si gue el mi smo pr oceso que ant es, per o most r ando l a l et r a sl o si NO
per t enece al conj unt o. }

for ent r ada := ' A' to ' Z' do
if not( ent r ada i n 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 revs.


PROGRAM EJ ER006;
Uses Cr t ;
var f r ase: St r i ng; {Se puede hacer con ar r ays}
var f _i nv: St r i ng; {Cada uno debe el egi r l a maner a que mej or ent i da,
Ejercicios de Pascal
85
y cont r ol e, eso si , si empr e hay que domi nar l as
dos f or mas. }
var i : I nt eger ;
Begi n
Cl r Scr ;

i : = 0;

WRI TELN( ' Escr i 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 mer a posi ci on de l a f r ase hast a
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 ] ;

FOR i : = l engt h( f r ase) downt o 0 do
WRI TE( f _i nv[ i ] ) ;
End.

PROGRAM EJ ER006_2;
Uses Cr t ;
var f r ase: St r i ng; {Se puede hacer con ar r 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 empr e hay que domi nar l as
dos f or mas. }
var i : I nt eger ;
Begi n
Cl r Scr ;

i : = 0;

WRI TELN( ' Escr i 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
car act er }
WRI TE( f r ase[ i ] ) ;

{Si l o uni co que qui er es es most r ar l a cadena de car act er es 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}
End.

* Program EJ 006( I nput , Out put ) ;
Uses Cr t ;
Const l ong_f r ase = 80;
Type f r ase = array [ 1. . l ong_f r ase] of Char ;
Var Fr ase1: f r ase;
i gual es: bool ean;
i ndex, max: i nt eger ;

Procedure l eer f r ase( var ar r aychar : f r ase; var i ndex: i nt eger ) ;
{Lee una f r ase desde t ecl ado, y l a al macena en un array.
Adems, devuel ve en una var i abl e ent er a l a l ongi t ud de l a f r ase. }

var l et r 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) ;
ar r aychar [ i ndex] := l et r a;
until ( i ndex >= l ong_f r ase) or ( l et r a = ' . ' ) ;
wr i t el n
end;

Begin
Cl r Scr ;
wr i t el n( ' Vi sual i zar una f r ase al r evs. ' ) ;
Wr i t el n( ' Escr i 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 wr i t e( f r ase1[ i ndex] ) ;
Ejercicios de Pascal
86
{Par a vi sual i zar l a f r ase al r evs, se r ecor r e el array que l a cont i 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
idnticos o no.

PROGRAM EJ ER007;
Uses Cr t ;
var f r ase1, f r ase2: St r i 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 r a: Char ;
var i gual es: Bool ean;
Begi n
Cl r Scr ;

WRI TELN ( ' I nt r oduzca l a pr i mer a cadena de car act er es, 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 car act 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 var i abl e}
i ndex : = i ndex + 1;
End;
UNTI L l et r a=' . ' ;
l ong1 : = i ndex; {medi mos l a l ongi t ud de l a cadena}

WRI TELN;
WRI TELN;
WRI TE( ' I nt r oduzca l a segunda cadena de car act er es, f i nal i zando con un punt o' ) ;
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 var i abl e}
i ndex : = i ndex + 1;
End;
UNTI L l et r a=' . ' ;
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 car act er es 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 car act er es 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
Ejercicios de Pascal
87
i gual es}
End;
End;

I f i gual es = t r ue t hen WRI TELN ( ' Las cadenas de car act er es son i gual es' ) ;
End.


* Program EJ 007( I nput , Out put ) ;
Uses Cr t ;
Const l ong_f r ase = 80; {Mxi ma l ongi t ud per mi t i da par a una f r ase. }

Type f r ase = array [ 1. . l ong_f r ase] of Char ;

Var Fr ase1, f r ase2: f r ase; {Ar r ays donde se al macenar n l as f r ases. }
i gual es: bool ean;
i ndex: i nt eger ;

Procedure l eer f r ase( var ar r aychar : f r ase) ;
{Lee desde t ecl ado una f r ase, y l a al macena en un array de car act er es. }

var l et r 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) ;
ar r aychar [ i ndex] := l et r a;
until ( i ndex >= l ong_f r ase) or ( l et r a = #13) ;
{La f r ase t er mi na con I NTRO }
wr i t el n
end;
Begin
Cl r Scr ;
Wr i t el n( ' Escr i be l a pr i mer a f r ase, y t er mi na con I NTRO. ' ) ;
l eer f r ase( f r ase1) ;
{Leer l a pr i mer a 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 eer f r ase( f r ase2) ;
{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 segn el pr i mer car ct er de
"f r ase1" sea i gual al pr i mer car ct er 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 t r 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 mxi 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 wr i t el n( ' Las dos f r ases son i dnt i cas. ' )
else begin
wr i t el n( ' Las f r ases NO son i dnt i cas. ' ) ;
wr i t el n( ' Di f i er en a par t i r del car ct er n' , i ndex)
end;
r eadkey
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 r ay [ 1. . N, 1. . N] of I nt eger = ( ( 1, 2, 3, 4) ,
( 5, 6, 7, 8) ,
( 9, 10, 11, 12) ,
( 13, 14, 15, 16) ) ;
Ejercicios de Pascal
88
{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 or es 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 pr i nci pal , sumar es: 2 + 3 + 4 + 7 + 8 + 12}

{Escr i bi mos l a mat r i z or i gi nal y col or eamos l os val or es 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( mat r i z[ i , j ] : 3) ;
End;
WRI TELN( ' ' ) ;
End;

WRI TELN; {Suma de l os val or es de l a pr i mer a 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, podr i amos
escr i bi r un wr i 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 or es de l a t er cer a f i l a}

i : = 3;

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 f i nal es: ' , suma) ;
End;
End.

* Program t 7e20( I nput , Out put ) ;
Uses Cr t ;
Const N = 4;
mat 1: array [ 1. . N, 1. . N] of i nt eger
= ( ( 1, 2, 3, 4) ,
( 5, 6, 7, 8) ,
( 9, 10, 11, 12) ,
( 13, 14, 15, 16) ) ;

Type mat r i z = array [ 1. . N, 1. . N] of i nt eger ;

Var col , 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 r Scr ;
wr i t el n;
wr i t el n( ' Se pr ocede a sumar l os el ement os de l a mat r i z' ) ;
wr i t el n( ' que se encuent r en por enci ma de l a di agonal : ' ) ;
for mf i l a := 1 to N do
Ejercicios de Pascal
89
for col := 1 to N do
{Todos 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 col > mf i l a then t ext col or ( 12)
else t ext col or ( 7) ;
{se escr i bi r n en r oj o l os 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 el n;
wr i t el 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 calificacin de 5 o NO APTO si no lo alcanza.
Hacerlo para un nmero de 5 alumnos.


PROGRAM EJ ER009;
Uses Cr t ;
Const numal umnos = 5;

Type t not as = r ecor d
nombr e2 : St r 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 par t es: t not as, nombr e2,
n_par ci al 2, n_f i nal 2. Es como una t abl a de Wor d, l a cual
i r emos r el l enando con l os dat os obt eni dos}

not as = Ar r ay[ 1. . numal umnos] of t not as;
{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 cl ase : not as;
var nombr e: St r i ng;
var n_par ci al , n_f i nal , n_medi a: Real ;
var i : I nt eger ;
Begi n
Cl r Scr ;

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 not a par ci al : ' ) ;
READLN( n_par ci al ) ;
WRI TE( ' I nt r oduzca su not a f i nal : ' ) ;
READLN( n_f i nal ) ;
WRI TELN;
Wi t h cl ase[ i ] Do
Begi n
n_par ci al 2 : = n_par ci al ;
n_f i nal 2 : = n_f i nal ;
nombr e2 : = nombr e;
End;
End;

Cl r Scr ;
Ejercicios de Pascal
90

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_par ci 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;
t ext col or ( 7) ;
End;
End.

* Program EJ 009( I nput , Out put ) ;
Uses Cr t ;
Const numal umnos = 5;
Type t i ponot as = record
nombr e: String;
par ci al , f i nal : r eal
end;
not ascl ase = array [ 1. . Numal umnos] of t i ponot as;
Var I 3: not ascl ase;
not a1, not a2: r eal ;
al umno: String;
i ndex: i nt eger ;
Begin
Cl r Scr ;
for i ndex := 1 to numal umnos do
begin
wr i t e( ' Nombr e de al umno( ' , i ndex, ' ) : ' ) ;
r eadl n( al umno) ;
wr i t e( ' Not a del examen par ci al : ' ) ;
r eadl n( not a1) ;
wr i t e( ' Not a del examen f i nal : ' ) ;
r eadl n( not a2) ;
wr i t el n;
wi t h i 3[ i ndex] do
begin
nombr e := al umno;
par ci al := not a1;
f i nal := not a2
end
end;
Cl r Scr ;
wr i t el n( ' NOMBRE ' : 30, ' Par ci al ' : 10, ' Fi nal ' : 10, ' Medi a' : 10, ' CALI FI CACI ON' ) ;
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
begin
{Escr i bi r l a l i st a con l os r esul t ados. }
not a1 := ( par ci al +f i nal ) / 2;
{Se cal cul a l a medi a. }
wr i t e( nombr e: 30, par ci al : 10: 2, f i nal : 10: 2) ;
wr i t e( not a1: 10: 2) ;
{Si l a not a medi a es super i or a 5, el al umno est apr obado: }
if not a1 >= 5 then wr i t el n( ' *** APTO *** ' )
else wr i t el n( ' NO APTO' )
end;
r eadkey
end.

Ejercicios de Pascal
91
Escribir un programa en Pascal que almacene en un array de registros las
caractersticas de cada persona: nombre, sexo, edad, peso, color de pelo, color de piel,
color de ojos, nacionalidad y telfono.

PROGRAM EJ ER010;
Uses Cr t ;
Const numper sonas = 2; {Cambi ando est e val or l o podr emos hacer par a
el numer o de per sonas 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 er ent es apar t 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 como per sonas haya}

var per sons : 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 r Scr ;

For i : = 1 t o numper sonas 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) ;
Unt i 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 per sons[ i ] do
Begi n
nombr e2 : = nombr e;
edad2 : = edad;
naci onal i dad2 : = naci onal i dad;
I f ( sexo = ' H' ) or ( sexo = ' h' ) t hen
sexo2 : = ' S gr aci as' ;

t f 2 : = t f ;
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 t o numper sonas 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;

{Las car act er i st i cas que se pi den al usuar i o par a obt ener i nf or maci on de l as
di f er ent es per sonas son si mpl es ej empl os. Si se qui er en cambi ar , y poner
por ej empl o, si est a casado o sol t er o, sus est udi os, et c. , uni cament e habr a
que cr ear nuevas var i abl es o sust i t ui r l as exi st ent es. }
End.

Ejercicios de Pascal
92
Program EJ 010B( I nput , Out put ) ;
Uses Cr 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;
est adi st i ca = array [ 1. . t ot al muest r eo] of dat os;

Var Gr upo1: Est adi st i ca;
nom: String[ 25] ;
cont , i ndex: i nt eger ;

Begin
Cl r Scr ;
i ndex := 1;
repeat
{Repet i r hast a que se i nt r oduzca un nombr e en bl anco: }
wi t h gr upo1[ i ndex] do
begin
wr i t e( ' Nombr e ( ' , i ndex, ' ) : ' ) ;
r eadl n( nom) ;
{Leer el nombr e. }
if not( nom= ' ' ) then
{Si no se i nt r oduj o un nombr e vac o, ent onces l eer el r est o de dat os. }
begin
nombr e := nom;
wr i t e( ' Pa s de or i gen: ' ) ;
r eadl n( naci on) ;
wr i t e( ' r egi n: ' ) ;
r eadl n( r egi on) ;
wr i t e( ' Sexo [ V/ M] : ' ) ;
repeat
sexo := upcase( r eadkey)
until sexo i n [ ' V' , ' M' ] ;
{r est r i nge l a ent r ada a "V" o "M". }
wr i t el n( sexo) ;
wr i t e( ' Al t ur a [ x. xx met r os] : ' ) ;
r eadl n( al t ur a) ;
wr i 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 el n( col oj os) ;
wr i t e( ' Col or de pi el [ N, B, A, R] : ' ) ;
repeat
col pi el := upcase( r eadkey)
until col pi el i n [ ' N' , ' B' , ' A' , ' R' ] ;
wr i t el n( col pi el ) ;
wr i t e( ' Col or de pel o [ N, B, C, R, P] : ' ) ;
repeat
col pel o := upcase( r eadkey)
until col pel o i n [ ' N' , ' B' , ' C' , ' R' , ' P' ] ;
wr i t el n( col pel o) ;
wr i t el n;
i ndex := i ndex + 1
{Se i ncr ement a el nmer o de muest r as. }
end
end
until ( i ndex >= t ot al muest r eo) or ( nom= ' ' ) ;

Cl r Scr ;
wr i t e( ' NOMBRE' : 25, ' NACI ON' : 12, ' REGI ON' : 12, ' EDAD' , ' SEXO' , ' ALT. ' ) ;
wr i t el n( ' OJ OS' , ' PI EL' , ' PELO' ) ;
for cont := 1 to 79 do wr i t e( ' ' ) ;
wr i t el 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) ;
wr i t el n( col oj os: 4, col pi el : 5, col pel o: 5)
Ejercicios de Pascal
93
end;
r eadkey
end.


Escribir un programa que lea dos nmeros 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 r Scr ;
WRI TELN( ' I nt r oduzca dos numer os: ' ) ;
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 numer os ent er os}
WRI TELN( sol uc) ;
WRI TELN;

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) ;
End.

program ej er di vb( I nput , Out put ) ;
Uses Cr t ;
var A, B, aDb, aMb: i nt eger ;
begin
Cl r Scr ;
wr i t e( ' Di me un nmer o ent er o: ' ) ;
r eadl n( A) ;
wr i t e( ' Di me ot r o nmer o ent er o: ' ) ;
r eadl n( B) ;
aDb := A div B;
aMb := A mod B;
wr i t el n( ' A div B = ' , aDb) ;
wr i t el n( ' A mod B = ' , aMb) ;
r eadkey
end.

Escribir un programa que convierta un nmero 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 r Scr ;
WRI TE( ' I nt r oduzca l os segundos: ' ) ; READLN( seg0) ;
WRI TELN;

mi n : = seg0 di v 60;
seg : = seg0 mod 60;

WRI TE( seg0, ' segundos son ' , mi n, ' mi nut os y ' , seg, ' segundos. ' ) ;
End.

program ej er segb( I nput , Out put ) ;
uses Cr t ;
var i ni seg, segundos, mi nut os: i nt eger ;
begin
Cl r Scr ;
wr i t e( ' Di me un nmer o de segundos: ' ) ;
r eadl n( i ni seg) ;
Ejercicios de Pascal
94
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 segundos 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
numrica.

PROGRAM EJ EMEDI A;
Uses Cr t ;
var sumapar , sumai mp, n_par , n_i mp: I nt eger ;
var i : I nt eger ;
var medi a_p, medi a_i : Real ;
const num=10;
var numer os: Ar r ay[ 1. . num] of Real ;
Begi n
Cl r Scr ;
WRI TELN( ' I nt r oduzca l os ' , num, ' numer os' ) ;
WRI TELN;

sumapar : = 0;
sumai mp : = 0;
n_par : = 0;
n_i mp : = 0; {I ni ci al i zamos l as var i abl es a 0 par a evi t ar sor pr 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 nummod 2 = 0 t hen
{par a 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}

WRI TELN;
medi a_p : = sumapar / n_par ;
medi a_i : = sumai mp / n_i mp;
WRI TELN( ' La medi a de l os numer os par es es: ' , medi a_p: 5: 2) ;
WRI TELN;
WRI TELN( ' La medi a de l os numer os i mpar es es: ' , medi a_i : 5: 2) ;
End.


Program ej emedi ab( I nput , Out put ) ;
uses Cr t ;
Const maxnum= 5;
Type l i st adenumer os = array [ 1. . maxnum] of r eal ;
Var l i st a: l i st adenumer os;
par es, i mpar es, i ndex: i nt eger ;
i medi a, pmedi a, i suma, psuma: r eal ;

Begin
Cl r Scr ;
wr i t el n( ' Dada una l i st a de nmer 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 mpar es. ' ) ;
wr i t el n;
wr i t el n( ' I nt r oduce l os ' , maxnum, ' nmer os de l a l i st a: ' ) ;
i suma := 0; {acumul ador de i mpar es}
psuma := 0; {acumul ador de par es}
Ejercicios de Pascal
95
par es := 0; {cont ador de par es}
i mpar es := 0; {cont ador de i mpar es}
for i ndex := 1 to maxnumdo
begin
wr i t e( ' El ement o ' , i ndex, ' : ' ) ;
r eadl n( l i st a[ 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 nmer os i mpar es, }

i suma := i suma + l i st a[ 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 nmer os par es, }

psuma := psuma + l i st a[ i ndex]
{sumar al acumul ador de par es}
end
end;
i medi a := i suma / i mpar es; {cal cul ar l a medi a de i mpar es}
pmedi a := psuma / par es; {cal cul ar l a medi a de par es}
wr i t el n;
wr i t el n( i mpar es, ' el ement os i mpar es y ' , par es, ' el ement os par es. ' ) ;
wr i t el n;
wr i t el n( ' Medi a de l os el ement os i mpar es: ' , 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 r Scr ;
l et r a_V; WRI TELN;
l et r 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.

Ejercicios de Pascal
96

Hacer un programa que incremente un nmero 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 r Scr ;
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 parmetros, lea desde el
teclado las unidades y el precio que quiere comprar, y en funcin 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, pr eci o: I NTEGER;
Tot al , cant Desc: REAL;
PROCEDURE descuent o ( VAR cant i dad, descuent o: REAL; por ci ent o: I NTEGER) ;
BEGI N
Descuent o : = cant i dad * por ci ent o/ 100; {el descuent o es el 15%del t ot al }
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 r Scr ;
WRI TE( ' I nt r oduzca el numer o de uni dades: ' ) ;
READLN( uni dades) ;
WRI TELN;
WRI TE( ' I nt r oduzca el pr eci 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) ;
{escr i bi mos en pant al l a el t ot al y el descuent o}
REPEAT Unt i l Keypr essed;
END.


Hacer un programa que calcule el area de un crculo (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
ar ea : = pi * SQR( r adi o) ;
END;
BEGI N
Cl r Scr ;
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 r c > 0) THEN
BEGI N
ar eaci r cul o( r adi oci r c, r esul t ado) ;
Ejercicios de Pascal
97
{r adi oci r c se cor r esponde con r adi o y r esul t ado con ar ea}
GOTOXY( 20, 5) ;
WRI TELN( ' El ar ea del ci r cul o es: ' , r esul t ado: 8: 2) ;
END
ELSE
WRI TE( ' No puede i nt r oduci r un r adi o negat i vo. ' ) ;

REPEAT Unt i l Keypr essed;
END.


Escribir un programa, que con funciones, verifique si un caracter introducido es
un nmero o no.

PROGRAM escar act er ( I NPUT, OUTPUT) ;
Uses Cr t ;
VAR car ac: CHAR;
FUNCTI ON ver i f i car ( car act er : CHAR) : BOOLEAN;
BEGI N
ver i f i car : = ( car act er >= ' 0' ) AND ( car act er <= ' 9' ) ;
END;

BEGI N
Cl r Scr ;
WRI TE( ' I nt r oduce un car act er par a ver si es numer i co. ' ) ; READLN( car ac) ;
WRI TELN;
I F ver i f i car ( car ac) THEN
WRI TELN( ' El car act er i nt r oduci do es numer i co. ' )
ELSE
WRI TELN( ' El car act er i nt r oduci do no es numer i co. ' ) ;
REPEAT Unt i l Keypr essed;
END.


Escribir un programa en Pascal que reciba un numero del 1 al 12 desde el teclado y
muestre el nmero de dias correspondiente al mes que corresponda con ese da (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 est o}
END;
END;
BEGI N
Cl r Scr ;
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 t i 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 tamao 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;
Ejercicios de Pascal
98
l et r 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 et r a : = r eadkey;
i nc( i ) ;
I F l et r a <> #13 t hen
BEGI N
WRI TE( l et r a) ;
ar r aychar [ i ] : = l et r a;
END
ELSE
BEGI N
I F NOT pul sado THEN
BEGI N
pul sado : = t r ue;
wr i t e( ' <ent er >' ) ;
ar r aychar [ 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 et r a =' *' ) ;
I F l et r a =' *' THEN
des( i ndex) ;
WRI TELN;
END;
BEGI N {pr ogr ama pr i nci pal }
Cl r Scr ;
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 er i 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) {decr ement ar l a posi ci on del ar r ay par a compr obar l a}
END;

{Par a el i mi nar l os bl ancos, se copi an l os car act er es 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 r ase. }

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( ' <ent er >' ) ;

WRI TELN;
Readkey
end.


Escribir un programa en Pascal que transforme numeros entre 0 y 999 a numeros
romanos.


PROGRAM r oma;
Uses Cr t ;
Ejercicios de Pascal
99
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 r Scr ;
t ext col 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 }

WRI TELN( ' Most r ar emos el equi val ent e en numer os r omanos del numer o que
desee. ' ) ;
WRI TELN;
WRI TE( ' Cuant os di gi t os t i ene el numer o 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 numOF
' 1' : r omano : = ' I ' ;
' 2' : r omano : = ' I I ' ;
' 3' : r omano : = ' I I I ' ;
' 4' : r omano : = ' I V' ;
' 5' : r omano : = ' 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 omano : = ' X' ;
' 2' : r omano : = ' XX' ;
' 3' : r omano : = ' XXX' ;
' 4' : r omano : = ' XL' ;
' 5' : r omano : = ' L' ;
' 6' : r omano : = ' LX' ;
' 7' : r omano : = ' LXX' ;
' 8' : r omano : = ' LXXX' ;
' 9' : r omano : = ' XC' ;
' 0' : r omano : = ' ' ;
END
ELSE I F num= ' . ' THEN
CONTI NUE
ELSE I F cont ador = 3 THEN
CASE numOF
' 1' : r omano : = ' C' ;
' 2' : r omano : = ' CC' ;
' 3' : r omano : = ' CCC' ;
' 4' : r omano : = ' CD' ;
' 5' : r omano : = ' D' ;
' 6' : r omano : = ' DC' ;
' 7' : r omano : = ' DCC' ;
' 8' : r omano : = ' DCCC' ;
' 9' : r omano : = ' CM' ;
' 0' : r omano : = ' ' ;
END;
Ejercicios de Pascal
100

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 r omanos no usaban el 0! ' ) {Es ci er t o, como l o har i an si n el }
ELSE
BEGI N
WRI TE( ' En numer os r omanos es i gual a: ' ) ;
t ext col 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 r Scr ;

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 r i 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 r i angul o es i soscel es. ' )
ELSE
WRI TE( ' El t r i angul o es escal eno. ' ) ;

REPEAT Unt i l Keypr essed;
END.


Decir si una frase es o no un palndromo, 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 par a guar dar en una var i 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) ;
Ejercicios de Pascal
101
VAR
i , j : i nt eger ;
car 1, car 2: st r 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( cad1) ) 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 r Scr ;
got oxy( 3, 3) ; WRI TE ( ' ESCRI BA UNA FRASE: ' ) ;
READLN ( CAD1) ;
i nver t i r ( cad1, cad2) ;
compar ar ( 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 nmero
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 se;
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 r ue;
I F j =1 THEN
Ejercicios de Pascal
102
WRI TE( i : 2) ;
j : =j - 1;
END;
END;
END;
END;

BEGI N {pr ogr ama pr i nci pal }
REPEAT
Cl r Scr ;
WRI TE( ' I nt r oduzca un numer o ent er o posi t i vo: ' ) ; READLN( n) ;
WRI TELN;
UNTI L n>0;
f act or es( n) ;
REPEAT UNTI L Keypr essed;
END.




Escribir un programa en Pascal que escriba, por un lado, de la A a la Z en
maysculas y por otro de z hasta a en minsculas.


PROGRAM abc;
USES cr t ;
VAR
cont _az: byt e;
cont _za: byt e;
BEGI N
Cl r Scr ;

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 _za: =122; {Tomamos el val oz de z y l l egamos hast a a}
got oxy( 5, 5) ;

REPEAT
BEGI N
WRI TE ( chr ( cont _az) : 2) ;
i nc( cont _az) ;
END
UNTI L cont _az=91;

got oxy( 5, 10) ;

REPEAT
BEGI N
WRI TE ( chr ( cont _za) : 2) ;
dec( cont _za) ;
END
UNTI L cont _za=96;

REPEAT UNTI L Keypr essed;
END.


Escribir un programa en Pascal que genere 6 nmeros aleatorios con un rango
de entre 1 y 49, al igual que se hace en la lotera.


PROGRAM l ot er i apr i mi t i va;
USES cr t ;
TYPE
casi l l a=ar r ay[ 1. . 6] OF I NTEGER;
VAR
num, posi bl e, cont , i : I NTEGER;
ok: bool ean;
cas: casi l l a;
BEGI N
Cl r Scr ;

num: =1;
cont : =1;
ok: =t r ue;
Ejercicios de Pascal
103
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;
got oxy( 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 r Scr ;

dado1: =0;
dado2: =0;
suma1: =0;
suma2: =0;
t i r ada: =1;
pos: =0;

WRI TE( ' I nt r oduzca su nombr e: ' ) ; READLN( nombr e) ;

r andomi ze;

got oxy( 25, 3) ; WRI TE( nombr e, ' J UGADOR 2' ) ;
got oxy( 25, 4) ; WRI TE( ' - - - - - - - - - - - - - - - - - - ' ) ;
got oxy( 10, 6) ; WRI TE( ' TI RADA 1' ) ;
got oxy( 10, 8) ; WRI TE( ' TI RADA 2' ) ;
got oxy( 10, 10) ; WRI TE( ' TI RADA 3' ) ;

REPEAT

dado1 : = r andom( 6) + 1;
dado2 : = r andom( 6) + 1;
got oxy( 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;
got oxy( 44, 6+pos) ; WRI TE( dado1, ' , ' , dado2) ;
suma2 : = dado1 + dado2;
sumat 2 : = sumat 2 + suma2;
Ejercicios de Pascal
104
i nc( t i r ada) ;
pos : = pos + 2;
UNTI L t i r ada = 4;

I F sumat 1 > sumat 2 THEN
BEGI N
got oxy( 25, 15) ; WRI TELN( ' Ha ganado ' , nombr e, ' . ENHORABUENA' ) ;
END
ELSE
BEGI N
I F sumat 1 < sumat 2 THEN
BEGI N
got oxy( 25, 15) ; WRI TELN( ' Ha ganado el j ugador 2, ust ed pi er de' ) ;
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
funcin FaC que, dado un entero (la temperatura en la escala Fahrenheit), devuelva la
correspondiente temperatura en la escala Celsius (redondeando).

PROGRAM gr ados( i nput , out put ) ;
Uses Cr t ;

VAR f , c: i nt eger ; {t emper at ur a 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: = r ound( 5/ 9 * ( f - 32. 0) )
END; {FaC}

BEGI N {p. p}
Cl r Scr ;

WRI TE( ' Escr i be l a t emper at ur a en Fahr enhei t : ' ) ;
READLN( f ) ; WRI TELN;

WRI TELN( ' Conver si on de t emper at ur as: ' ) ;
WRI TELN( ' Fahr enhei 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 funcin, calcule el resultado de
restar el doble de un numero a su cuadrado.


Pr ogr amej 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}
cal c : = sqr ( x) - ( 2*x) ;
END; {cal c}

BEGI N {p. p}
Ejercicios de Pascal
105
Cl r Scr ;

WRI TE( ' I nt r oduzca un numer o: ' ) ; READLN( a) ;
r esul 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.

Pr ogr amvect or ( 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 st anci a : = sqr t ( sqr ( abs( cx2- cx1) ) + sqr ( abs( Cy2- Cy1) ) ) ;

END; {di st anci a}

BEGI N {p. p}
Cl r Scr ;

WRI TELN( ' I nt r oduzca l as dos coor denadas de cada punt o: ' ) ; WRI TELN;

WRI TE( ' x1: ' ) ; READLN( x1) ;
WRI TE( ' y1: ' ) ; READLN( y1) ;
WRI TELN;
WRI TE( ' x2: ' ) ; READLN( x2) ;
WRI TE( ' Y2: ' ) ; READLN( y2) ;
WRI TELN;

r esul t ado : = di st anci 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 mximo y el mnimo de dos nmeros.
Sin embargo,dicho programa debe apoyarse en la subprogramacin. Con tal fin, proceda
como sigue:
a) Escriba un procedimiento Leer que lea dos nmeros reales.
b) Escriba una funcin que dados dos nmeros reales, devuelva el mximo de ellos.
c) Escriba una funcin que dados dos nmeros reales, devuelva el mnimo de ellos.
d) Escriba el programa principal que lea dos nmeros reales, obtenga el mayor y el
menor de ellos, y muestre el resultado en pantalla de la siguiente forma. (los nmeros
reales justificado a la derecha y con dos dgitos despus de la coma):

Primer nmero --- Segundo nmero --- 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 }
Ejercicios de Pascal
106
WRI TELN( ' I nt r oduzca dos numer os 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 r Scr ;

l eer ( x, y) ;
WRI TELN( ' Pr i mer Numer o Segundo Numer o Mayor Menor ' ) ;
WRI TELN( x: 13: 2, y: 18: 2, max( x, y) : 9: 2, mi n( x, y) : 9: 2) ;

REPEAT Unt i l Keypr essed;
END. {p. p}


Escriba un programa que pida al usuario introducir un carcter, y le informa si se
trata de una vocal o no.
Con tal fin, escriba los siguientes subprogramas:
a) Una funcin EsMayuscula, que determine si un carcter es mayscula o no.
b) Una funcin AMinuscula que, a partir de un carcter c, devuelva el carcter en
minscula con tal de que sea mayscula. De lo contrario, debe devolver el mismo
carcter c.
c) Una funcin EsVocal que determine si un carcter es una vocal o no.
El programa principal ha de apoyarse en la funcin EsVocal.


PROGRAM mayus( i nput , out put ) ;
Uses Cr t ;

VAR car : char ;

FUNCTI ON EsMayuscul a ( c : char ) : bool ean;
BEGI N {EsMayuscul a}
EsMayuscul a : = ( c >= ' A' ) and ( c <= ' Z' )
END; {EsMayuscul a}

FUNCTI ON AMi nuscul a ( c: char ) : char ;
CONST of f set = or d( ' a' ) - or d( ' A' ) ;
BEGI N {AMi nuscul a}
I F esMayuscul a( c) THEN
AMi nuscul a : = chr ( or d( 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 r Scr ;

WRI TE( ' I nt r oduzca un car act er : ' ) ;
READLN( car ) ;
I F EsVocal ( car ) THEN
WRI TELN( ' El car act er ' ' ' , car , ' ' ' es una vocal ' )
ELSE
Ejercicios de Pascal
107
wr i t el n( ' El car ct er ' ' ' , car , ' ' ' NO es una vocal ' ) ;

REPEAT Unt i l Keypr essed;
END. {p. p}


Construye un programa en Pascal que realice la conversin de moneda de dlares de
USA a dlares Canadienses y pida la fecha para saber el da que se realiz.

PROGRAM Conver t i r Moneda1( i nput , out put ) ;
Uses Cr t ;

VAR
MesAct ual , {mes act ual }
Di aAct ual , {di a act ual }
AnnoAct ual , {anno act ual }
Codi goMoneda : i nt eger ; {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 er t e moneda est adouni dense a' ) ;
WRI TELN( ' canadi ense y vi cever sa. I nt r oduzca' ) ;
WRI TELN( ' 1 par a conver t 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 ar I nst r ucci ones};

PROCEDURE Conver t i r USACanada;

VAR
USACanada, {val or de cambi o}
Dol ar es : r eal ; {cant i dad de dol ar es est adouni 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 ar es est adouni denses: ' ) ;
READLN( Dol ar es ) ;
WRI TELN( ' Es equi val ent e a ' ,
USACanada * Dol ar es: 4: 2, ' dol ar es canadi enses. ' )
END {Conver t i r USACanada};


PROCEDURE Conver t i r CanadaAUS;

VAR
CanadaAUS, {val or de cambi o}
Dol ar es : r eal ; {cant i dad de dol ar es 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 ar es canadi enses: ' ) ;
READLN( Dol ar es ) ;
WRI TELN;
WRI TELN( ' Es equi val ent e a ' ,
CanadaAUS * Dol ar es: 4: 2, ' dol ar es est adouni denses. ' ) ;
WRI TELN;
END {Conver t i r CanadaAUS};


BEGI N {p. p}
Cl r Scr ;

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 ar I nst r ucci ones;
READLN( Codi goMoneda ) ;
I F Codi goMoneda = 1 THEN
Conver t i r USACanada
ELSE
Conver t i r CanadaAUS;
Ejercicios de Pascal
108
WRI TELN( ' *** FECHA DE LA OPERACI ON: ' , Di aAct ual : 1, ' - ' , MesAct ual : 1,
' - ' , AnnoAct ual : 1 ) ;

REPEAT Unt i 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 , {mes act ual }
Di aAct ual , {di a act ual }
AnnoAct ual , {anno act ual }
Codi goMoneda : i nt eger ; {i ndi ca el t i po de l a moneda a ser conver t i da}
Val or Cambi o, {el val or de cambi o de moneda EE. UU. - Canada}
Di ner o, {cant i dad monet ar i a a conver t i r }
Tot al : r eal ; {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 er t e moneda est adouni dense a' ) ;
WRI TELN( ' canadi ense y vi cever sa, y cal cul a l a cant i dad t ot al . ' ) ;
WRI TELN( ' I nt r oduzca 0 par a i ndi car que se han pr ocesado t odas' ,
' l as cant i dades. ' ) ;
WRI TELN;
WRI TELN( ' I nt r oduzca 1 par a conver t 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 ar I nst r ucci ones};

PROCEDURE Conver t i r ( Codi go : i nt eger ; {codi go de moneda}
Cambi o, {val or de cambi o}
Cant i dad: r eal ) ; {cant i dad monet ar i a}

VAR
Cant Equi v : r eal ; {cant i dad equi val ent e en ot r o si st ema monet ar 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 ar es 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 ar es est adouni denses' )
END {ELSE}
END {Conver t i r };
BEGI N {p. p}
Cl r Scr ;
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 ar I 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 ner o > 0 DO
Ejercicios de Pascal
109
BEGI N
Conver t i r ( Codi goMoneda, Val or Cambi o, Di ner o ) ;
Tot al : = Tot al + Di ner o;
WRI TELN;
WRI TE( ' I nt r oduzca cant i dad ( 0 par a t er mi 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,
' - ' , AnnoAct ual : 1 ) ;
WRI TELN;
WRI TELN( ' La cant i dad t ot al conver t i da es $' , Tot al : 4: 2 ) ;

REPEAT Unt i l Keypr essed;
END. {p. p}

Hacer el mismo programa que los anteriores pero este debe tener parmetros por
valor y por variable.

PROGRAM Conver t i r Moneda3( i nput , out put ) ;
Uses Cr t ;

VAR
MesAct ual , {mes act ual }
Di aAct ual , {di a act ual }
AnnoAct ual , {anno act ual }
MonedaCasa, {i ndi ca el t i po de moneda del l ugar }
Codi goMoneda : i nt eger ; {i ndi ca el t i po de l a moneda a ser conver t i da}
Val or Cambi o, {el val or de cambi o de moneda EE. UU. - Canada}
Di ner o, {cant i dad monet ar i a a conver t i r }
Di ner oConv, {cant i dad equi val ent e en ot r o si st ema monet ar i o}
Tot al : r eal ; {t ot al de l as cant i dades}

PROCEDURE Most r ar I nst r ucci ones;

BEGI N
Wr i t el n;
Wr i t el n( ' Est e pr ogr ama convi er t e moneda est adouni dense a' ) ;
Wr i t el n( ' canadi ense y vi cever sa, y cal cul a l a cant i dad t ot al . ' ) ;
Wr i t el n;
Wr i t el n( ' I nt r oduzca 0 par a i ndi car que se han pr ocesado t odas' ,
' l as cant i dades. ' ) ;
Wr i t el n;
Wr i 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 par a conver t i r moneda canadi ense a ' ,
' est adouni dense: ' )
END {Most r ar I nst r ucci ones};

PROCEDURE Conver t i r 2( Codi go : i nt eger ; {t i po de moneda}
Cambi o, {val or de cambi o}
Cant i dad : r eal ; {cant i dad a conver t i r }
VAR Cant Equi v : r eal ) ; {cant i dad equi val ent e}
BEGI N
Wr i t e( ' Es equi val ent e a ' ) ;
I F Codi go = 1 THEN
BEGI N
Cant Equi v : = Cambi o * Cant i dad;
Wr i t el n;
Wr i t el n( Cant Equi v: 4: 2, ' dol ar es canadi enses' )
END {I F}
ELSE
BEGI N
Cant Equi v : = ( 1. 0 / Cambi o) * Cant i dad;
Wr i t el n;
Wr i t el n( Cant Equi v: 4: 2, ' dol ar es est adouni denses' )
END {ELSE}
END {Conver t i r 2};

BEGI N {p. p}
Cl r Scr ;

Wr i t el n;
Ejercicios de Pascal
110
Wr i t el n( ' I nt r oduzca el di a, mes y anno act ual es: ' ) ;
Wr i t e( ' Di a: ' ) ; Readl n( Di aAct ual ) ;
Wr i t e( ' Mes: ' ) ; Readl n( MesAct ual ) ;
Wr i t e( ' Ao: ' ) ; Readl n( AnnoAct ual ) ;
Most r ar I 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 or Cambi o ) ;
Tot al : = 0;

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 ) ;
WHI LE Di ner o > 0 DO
BEGI N
I F Codi goMoneda <> MonedaCasa THEN
BEGI N
Conver t i r 2( Codi goMoneda, Val or Cambi o, Di ner o,
Di ner oConv ) ;
Tot al : = Tot al + Di ner oConv
END {I F}
ELSE
Tot al : = Tot al + Di ner o;
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};

Wr i t el n;
Wr i t el n( ' *** FECHA DE LA OPERACI ON: ' , Di aAct ual : 1, ' - ' , MesAct ual : 1,
' - ' , AnnoAct ual : 1 ) ;
Wr i t el n( ' La cant i dad t ot al conver t i da es $' , Tot al : 4: 2 )
END {p. p}.


Modificar el programa ConvertirMoneda3 de forma que la fecha de operacin
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 , {mes act ual }
Di aAct ual , {di a act ual }
AnnoAct ual , {anno act ual }
MonedaCasa, {i ndi ca el t i po de moneda del l ugar }
Codi goMoneda : i nt eger ; {i ndi ca el t i po de l a moneda a ser conver t i da}
Val or Cambi o, {el val or de cambi o de moneda EE. UU. - Canada}
Di ner o, {cant i dad monet ar i a a conver t i r }
Di ner oConv, {cant i dad equi val ent e en ot r o si st ema
monet ar i o}
Tot al : r eal ; {t ot al de l as cant i dades}

PROCEDURE Most r ar I nst r ucci ones;

BEGI N
Wr i t el n;
Wr i t el n( ' Est e pr ogr ama convi er t e moneda est adouni dense a' ) ;
Wr i t el n( ' canadi ense y vi cever sa, y cal cul a l a cant i dad t ot al . ' ) ;
Wr i t el n( ' I nt r oduzca 0 par a i ndi car que se han pr ocesado t odas' ,
' l as cant i dades. ' ) ;
Wr i t el n;
Wr i 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 par a conver t i r moneda canadi ense a ' ,
' est adouni dense: ' )
END {Most r ar I nst r ucci ones};

PROCEDURE Conver t i r 2( Codi go : i nt eger ; {t i po de moneda}
Cambi o, {val or de cambi o}
Cant i dad : r eal ; {cant i dad a conver t i r }
VAR Cant Equi v : r eal ) ; {cant i dad equi val ent e}

BEGI N
Wr i t el n;
Wr i t e( ' Es equi val ent e a ' ) ;
Ejercicios de Pascal
111
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 ar es 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 ar es est adouni denses' )
END {ELSE}
END {Conver t i r 2};


PROCEDURE Most r ar Fecha( Di a, {el di a}
Mes, {el mes}
Anno : i nt eger ) ; {el ao}


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 r Scr ;

Wr i t el n( ' I nt r oduzca el di a, mes y anno act ual es: ' ) ;
Wr i t e( ' Di a: ' ) ; Readl n( Di aAct ual ) ;
Wr i t e( ' Mes: ' ) ; Readl n( MesAct ual ) ;
Wr i t e( ' Ao: ' ) ; Readl n( AnnoAct ual ) ;
Most r ar I 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 or Cambi o ) ;
Tot al : = 0;

Wr i t el n;
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 ) ;
WHI LE Di ner o > 0 DO
BEGI N
I F Codi goMoneda <> MonedaCasa THEN
BEGI N
Conver t i r 2( Codi goMoneda, Val or Cambi o, Di ner o,
Di ner oConv ) ;
Tot al : = Tot al + Di ner oConv
END {I F}
ELSE
Tot al : = Tot al + Di ner o;
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};

Wr i t el n;
Wr i t el n( ' *** FECHA DE LA OPERACI ON: ' ) ;
Most r ar Fecha( Di aAct ual , MesAct ual , AnnoAct ual ) ;
Wr i t el n( ' La cant i dad t ot al conver t i da es $' , Tot al : 4: 2 )
END {p. p}.


Un programilla simple para amenizar el rato y hacerlo ms llevadero.
Escriba un programa PASCAL que produzca las siguiente salida:

*
***
*****
*******
Ejercicios de Pascal
112
*********
***********
*************
*


PROGRAM ar bol ( out put ) ;
Uses Cr t ;

BEGI N
Cl r Scr ;

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) ;

REPEAT Unt i l Keypr essed;
END.




Ahora vamos a comenzar con las prcticas que vamos realizando en mi
universidad (Universidad Autnoma de Madrid Espaa):

Si hay algn error o alguna forma mejor de hacerlo, por favor decrmelo
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.


Pr ogr amP1;

Var
a: Shor t I nt ;
b: St r i ng;
c: Real ;
d: Bool ean;
e: Char ;
f : I nt eger ;
g: LongI nt ;
h: Doubl e;
i : Wor d;
j : Byt e;

Begi n {p. p}

a : = - 90;
b : = ' 9. 0' ;
c : = 9e30;
d : = t r ue;
e : = ' 9' ;
f : = 32700;
g : = 70000;
h : = 9e40;
i : = 65500;
j : = 90;
Ejercicios de Pascal
113

End. {p. p}


P2. Constantes
Repitan el ejercicio anterior definiendo (y asignandoles valor en la
declaracin) los valores anteriores como constantes.


Pr ogr amP2; {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
declaracin) los valores anteriores como constantes con tipo.


Pr ogr amP3; {p. p}

Const
a: Shor t I nt = - 90;
b: St r i ng = ' 9. 0' ;
c: Real = 9e30;
d: Bool ean = t r ue;
e: Char = ' 9' ;
f : I nt eger = 32700;
g: LongI nt = 70000;
h: Doubl e = 9e40;
i : Wor d = 65500;
j : 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. Bsqueda de errores.
Encuentren todos los errores (tanto de compilacin como de ejecucin) del
siguiente programa, sealen 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.


Pr ogr amEr r or es ( OUTPUT) ;
Const
vPr ec = 19;
Ejercicios de Pascal
114
Var
A, B, E : I nt eger ;
C, D : Shor t i nt ;
F : Real ;
Begi n
vPr ec : = vPr ec + 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 par a poder hacer l o}

B : = ( A + 2 ) * 2; {Deber i amos haber i ni ci al i zado A ant er i or ment e par a
que el pr ogr ama f unci one con nor mal i dad}
wr i t el 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 var i abl e de t i po ent er o no se l e puede asi gnar
un val or r eal . Par a hacer l o E deber i a ser de t i 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 }
End.


P.5 Correcin 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


Pr ogr amEr r 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 : Shor t 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}
vPr ec : = vPr ec + 1;
A : = 1; {I ni ci al i amos a con val or 1 par a 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 super aba el r ango, por eso se ha
decl ar ado C como I nt eger }
F : = 2 * vPr ec / 3 + C;
E : = F + 1; {E pasa a ser de t i po Real par a 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 par a cont r ol ar que
en l a sal i da haya 5 espaci os, mas
ot r os 3 par a l a par t e deci mal }
End. {p. p}


P6. Escribir un programa que pida al usuario el nombre de un artculo, su
precio en Euros, la cantidad de artculos 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.


Ejercicios de Pascal
115
Pr ogr amP6 ( I NPUT, OUTPUT) ;

Const
Eur o = 166. 386;

Var
ar t i cul o : St r i ng[ 40] ; {Nombr e del ar t i cul o}
num_ar t i : Byt e; {Numer o de ar t i cul os que nos i ndi can}
pr eci o : Real ; {Pr eci o de una uni dad}
pr eci o_t : Real ; {Pr eci o Tot al }
descuent o : Real ; {Descuent o a apl i car }
t ot al : Real ; {Pr eci o con el descuent o apl i cado}

Begi n {p. p}

Wr i t e( ' I nt r oduzca el nombr e del ar t i cul o: ' : 50) ;
Readl n( ar t i cul o) ;
Wr i t el n( ' ' ) ;
Wr i t e( ' I nt r oduzca su pr eci o en Eur os: ' : 50) ;
Readl n( pr eci o) ;
Wr i t el n( ' ' ) ;
Wr i t e( ' Cuant os ar t i cul os desea?: ' : 50) ;
Readl n( num_ar t i ) ;
Wr i t el n( ' ' ) ;
Wr i t e( ' Descuent o a apl i car en %: ' : 50) ;
Readl n( descuent o) ;
Wr i t el n( ' ' ) ;

pr eci o_t : = pr eci o * num_ar t i ; {obt enemos el pr eci o t ot al }
descuent o : = ( pr eci o_t * descuent o) / 100; {t ot al 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 al : 35: 3, ' Eur os. ' ) ;

t ot al : = t ot al * Eur o; {Pasamos a pt s el pr eci o t ot al }

Wr i t e( t ot al : 35: 3, ' Pt s. ' ) ;

End. {p. p}


P7. E/S por teclado y pantalla.
Escriban un programa que lea tres nmeros enteros introducidos por
teclado en la misma lnea. El programa aceptar a continuacin tres nuevos
nmeros enteros escritos en lneas sucesivas, y escribir por pantalla cuatro
lneas con los siguientes datos:

1. Los seis nmeros introducidos, separados por blancos.
2. La suma de los seis nmeros.
3. El resultado obtenido al dividir la suma de los tres primeros nmeros
por la suma de los tres segundos.
4. El cociente entero y el resto obtenidos al dividir la suma de los tres
primeros nmeros por la suma de los tres segundos.


Pr ogr amP7 ( I NPUT, OUTPUT) ;

VAR
num1, num2, num3: I nt eger ; {Tr es pr i mer os numer os que pedi mos}
num4, num5, num6: I nt eger ; {Tr es ul t i mos numer os que pedi mos}
suma1, suma2, sumat ot al : I nt eger ; {Guar dan l as sumas que r eal i zamos}
di v_ent , r est o: I nt eger ; {Di vi si n ent er a y su r est o}
di v_r eal : Real ; {Di vi si n r eal }
Ejercicios de Pascal
116

Begi n {p. p}

Wr i t e( ' I nt r oduzca 3 numer os ent er os: ' ) ;
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( ' Numer o 4: ' ) ; Readl n( num4) ;
Wr i t e( ' Numer o 5: ' ) ; Readl n( num5) ;
Wr i t e( ' Numer o 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 numer os i nt r oduci dos}

Wr i t el n( ' ' ) ;
suma1 : = ( num1 + num2 + num3) ; {sumamos l os 3 pr i mer os numer os}
suma2 : = ( num4 + num5 + num6) ; {sumamos l os 3 ul t i mos numer os}

sumat ot al : = suma1 + suma2; {hacemos l a suma de t odos l os numer os}
di v_r eal : = suma1 / suma2; {guar damos l a di vi si n r eal }
di v_ent : = suma1 di v suma2; {obt enemos l a di vi si n ent er a}
r est o : = suma1 mod suma2; {cal cul amos el r est o de l a di vi si n}

Wr i t el n( ' La suma de l os 6 numer os es: ' , sumat ot 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 mer os numer os ent r e l os 3 ul t i mos es: ' ) ;

Wr i t el n( ' ' ) ;
Wr i t el n( ' Di vi si n r eal : ' : 50, di v_r eal : 6: 2) ;
Wr i t el n( ' Di vi si n ent er a: ' : 50, di v_ent : 6) ;
Wr i t el n( ' El r est o de l a di vi si n ent er a es: ' : 50, r est o: 6) ;
{Most r 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 estndar, 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 carcter < . 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 encontrarn en el archivo
con el siguiente formato:

Esta lnea se tiene que con
catenar con esta otra.
La salida va a ocu
par slo dos lneas.
Ejercicios de Pascal
117

{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 lnea:

Esta lnea se tiene que concatenar con esta otra.
La salida va a ocupar slo dos lneas.



Pr ogr amP8 ( I NPUT, OUTPUT) ;

VAR
l i nea1, l i nea2, l i nea3, l i nea4: St r i ng[ 30] ;
{Decl ar amos l as 4 l i neas que encont r ar emos
en el ar chi 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 mer a y segunda l i nea}
Wr i t el n( l i nea3, l i nea4) ; {Uni mos l a t er cer a y cuar t a l i nea}
{As obt enemos ni cament e l as 2 l neas que se necesi t an}

{Par a el cor r ect o f unci onami ent o de est e pr ogr ama se nos pi de l eer
l os dat os de un ar chi vo y pasar l o a ot r o que ocupe sl o 2 l neas.
Ut i l i zando DOS l ogr ar emos 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 crculo inscrito (radio = semilado)
el rea del crculo circunscrito (radio = semidiagonal);
el permetro del crculo circunscrito

La salida del programa, para un valor de entrada igual a 2.0, ser:

Area del cuadrado = 4.00
Area del crculo inscrito = 3.14
Area del crculo circunscrito = 6.28
Permetro del crculo circunscrito = 8.99


Pr ogr amP9 ( I NPUT, OUTPUT) ;
Ejercicios de Pascal
118

CONST
PI = 3. 14159; {Decl ar amos como const ant e el val or de PI }

VAR
l adocuad: Real ; {Lado del cuadr ado}
a_cuad: Real ; {Ar ea del cuadr ado}
a_ci ns: Real ; {Ar ea del c r cul o i nscr i t o}
a_cci r : Real ; {Ar ea del c r cul o ci r cunscr i t o}
p_cci r : Real ; {Per met r o del c r cul o ci r cunscr i 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 cuadr ado}

a_cuad : = sqr ( l adocuad) ; {Lado al cuadr ado}
a_ci ns : = PI * ( sqr ( l adocuad / 2) ) ; {PI * r adi o al cuadr ado}
a_cci r : = PI * ( sqr ( sqr t ( sqr ( l adocuad) + sqr ( l adocuad) ) / 2) ) ;
{PI * r adi o al cuadr ado. Radi o = mi t ad de l a di agonal del cuadr ado}
p_cci r : = 2 * PI * ( sqr t ( 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) ;
Wr i t el n( ' Ar ea del c r cul o i nscr i t o = ' , a_ci ns: 5: 2) ;
Wr i t el n( ' Ar ea del c r cul o ci r cunscr i t o = ' , a_cci r : 5: 2) ;
Wr i t el n( ' Per met r o del c r cul o ci r cunscr i t o = ' , p_cci r : 5: 2) ;
{Most r amos por pant al l a el cl cul o de l as r eas y el per met r o}

End. {p. p}


P.10 Operaciones aritmticas
Escriban un programa que lea dos nmeros reales positivos y devuelva la
potencia entera a la que hay que elevar el primero para que de el nmero
ms prximo posible al segundo.


Pr ogr amP10 ( I NPUT, OUTPUT) ;

VAR
num1, num2: Real ; {Nmer os con l os que cal cul ar emos l a pot enci a}
n: Real ; {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 ogar i t mos}

n : = Round( n) ;
{Redondeamos l a pot enci a y obt enemos l a pot enci a ent er a ms 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 ent er a a l a que hay que el evar el numer o 1 es: ' ) ;
Wr i t e( n: 3: 0) ; {Sacamos por pant al l a el val or de l a pot enci a ent er a}

End. {p. p}


P11. Nmeros pseudoaleatorios
Escriban un programa que genere un nmero entero aleatorio entre 1800 y
20000, utilizando la funcin Random ( y NO Random(x)! ). Considerando,
adems, que dicho nmero representa un lapso de tiempo en segundos, dar
el resultado en forma de horas, minutos y segundos (formato HH:MM:SS).
Ejercicios de Pascal
119


Pr ogr amP11 ( OUTPUT) ;

VAR
al eat or i o: I nt eger ;
{Va a ser el nmer o donde guar dar emos el val or .
El r ango va a est ar ent r e 1800 y 20000}
hor as, mi nut os, segundos: I nt eger ; {Van a ser l as hor as, mi nut os
y segundos a l os que conver t i mos
el numer o al eat or i o}

Begi n {p. p}

Randomi ze; {I ni ci al i zamos Random}

al eat or i o : = 20000 - ( Round( Random* 18200) ) ;
{Como al eat or i o debe est ar ent r e 1800 y 20000, a 20000 l e r est amos
un numer o gener ado ent r e 0 y 18200, con l o cual , vamos a obt ener
el r ango deseado:
Si Random= 0, el val or ser mxi mo = 20000
Si Random= 1, el val or ser m ni mo = 1800}

Wr i t el n( ' ' ) ; {Dej amos una l i nea en bl anco}
Wr i t el n( ' Gener amos un numer o al eat or i o: ' , al eat or i o) ;
{Most r amos el val or por pant al l a}

hor as : = al eat or i o di v 3600; {Vemos l as hor as que hay en t ot al }
segundos : = al eat or i o mod 3600; {El r est o l o guar damos como segundos}
mi nut os : = segundos di v 60; {Sacamos l os mi nut os t ot al es}
segundos : = segundos mod 60; {El r est o van a ser l os segundos}

Wr i t el n( ' ' ) ;
Wr i t e( al eat or i o, ' segundos son: ' ) ;
{Sacamos un mensaj e most r ando el numer o de segundos a conver t i r }

Wr i t e( hor as, ' : ' , mi nut os, ' : ' , segundos) ;
{Sacamos por pant al l a l os dat os en el f or mat o deseado}

End. {p. p}

También podría gustarte