Professional Documents
Culture Documents
1. Una compaa de construccin quiere hacer un programa que ayude a los granjeros que
quieran hacer corrales en forma rectangular para sus animales, a partir de las dimensiones del
espacio, se desea saber el rea que ocupara en el terreno.
program construccion;
uses crt;
var
ancho, largo:real;
area:real;
z :integer;
Begin
writeln(' . : Constructora de corrales : .');
writeln;
writeln('Ingrese las dimensiones del corral que desea construir ');
write('Ingrese el largo del corral: ');
read(largo);
write('Ingrese el ancho del corral: ');
read(ancho);
area:=largo*ancho;
writeln;
write('El area que ocupara el corral es de: ');
write(area:3:2);
read(z);
end.
program areacircunsferencia;
uses crt;
var
radio:real;
area:real;
z :integer;
Begin
writeln(' . : Calcula el area de una circunsferencia : .');
writeln;
write('Ingrese el radio de la circunsferencia: ');
read(radio);
area:=3,1415*radio*radio;
writeln;
write('El area de la circunsferencia es: ');
write(area:3:2);
read(z);
end.
program Facturas;
uses crt;
var
cant1,precio1,cant2,precio2: integer;
articulo1,articulo2:real;
iva,subt,total:real;
z:integer;
begin
writeln('*-Factura de compras: ');
writeln;
write('Ingrese la cantidad de guitarra a comprar: ');
read(cant1);
write('Ingrese el precio unitario de la guitarra: ');
read(precio1);
write('Ingrese la cantidad de pianos a comprar: ');
read(cant2);
write('Ingrese el precio unitario de los pianos: ');
read(precio2);
articulo1:=cant1*precio1;
articulo2:=cant2*precio2;
subt:=articulo1+articulo2;
iva:=subt*12/100;
total:=subt+iva;
writeln('Descripcion de la compra: ');
write('subtotal: ');
write(subt:2:3);
writeln;
write('Iva');
write(iva:2:3);
writeln;
write('Total a pagar: ');
write(total:2:3);
writeln;
read(z);
end.
4.- Realizar un programa que lea un numero del 1 al 7 y me indique que da de la semana
corresponde.
program dia;
uses crt;
var
n:integer;
z:integer;
begin
writeln('Identifica que dia de la semana seleccionaste');
writeln;
write('Ingresa un numero del 1 al 7: ');
read(n);
if(n=1)then
begin
writeln('El dia es Lunes');
end;
if(n=2)then
begin
writeln('El dia es Martes');
end;
if(n=3)then
begin
writeln('El dia es Miercoles');
end;
if(n=4)then
begin
writeln('El dia es Jueves');
end;
if(n=5)then
begin
writeln('El dia es Viernes');
end;
if(n=6)then
begin
writeln('El dia es Sabado');
end;
if(n=7)then
begin
writeln('El dia es Domingo');
end;
if(n>7)then
begin
writeln('Opcion invalida');
end;
read(z);
end.
5. Realiza un programa que lea la nota de un estudiante y me diga el literal que corresponde
de acuerdo a la siguiente tabla:
Nota Literal
19 y 20 A
15 al 18 B
10 al 14 C
0 al 9 D
program notas;
uses crt;
var
nota,z:integer;
begin
writeln('Ingresa tu nota y sabras a que literal corresponde');
writeln;
write('Tu nota es: ');
read(nota);
writeln;
if((nota>=19)and(nota<=20))then
begin
write('Tu nota corresponde al literal A');
end;
if((nota>=15)and(nota<=18))then
begin
write('Tu nota corresponde al literal B');
end;
if((nota>=10)and(nota<=14))then
begin
write('Tu nota corresponde al literal C');
end;
if((nota>=0)and(nota<=9))then
begin
write('Tu nota corresponde al literal D');
end;
read(z);
end.
6.- Realizar un programa que me permita mostrar la factura de compra de una pizzeria de
acuerdo a la siguiente tabla:
Tamao Costo
Grande 800
Mediana 600
Pequea 400
program pizzeria;
uses crt;
var
ncant,tipo:integer;
subt,iva,total:real;
z:integer;
begin
writeln(' . : Pizzeria Los Informaticos C.A. : . ');
writeln;
writeln('Menu: (1) Grande (2) Mediana (3) Pequena');
write('Opcion: ');
read(tipo);
writeln;
writeln('Cantidad de pizzas a pagar: ');
read(ncant);
if(tipo=1)then
begin
subt:=ncant*800;
iva:=subt*12/100;
total:=subt+iva;
end;
if(tipo=2)then
begin
subt:=ncant*600;
iva:=subt*12/100;
total:=subt+iva;
end;
if(tipo=3)then
begin
subt:=ncant*400;
iva:=subt*12/100;
total:=subt+iva;
end;
writeln;
writeln('Descripcion de la compra');
write('Subtotal: ');
writeln(subt:3:2);
write('I.V.A.: ');
writeln(iva:3:2);
write('Total: ');
writeln(total:3:2);
read(z);
end.
1. Hacer el diagrama de flujo para sumar dos nmeros ledos por teclado
y escribir el resultado.
Explicacin:
Vamos a ver paso a paso como funciona. Supongamos que los datos son:
7, -1, 8, 5, ...
Accin Simple
Otro valor alfanumrico podra ser "123 Hola Mundo 456" que
contiene caracteres letras y nmeros. Es alfanumrico.
Comenzando a Programar
Problema 1.0
Se requiere un programa que permita ingresar el nombre de
una persona y que luego escriba la leyenda Hola Mundo
seguida del nombre ingresado.
Anlisis
Primero emitimos un mensaje indicando al usuario que debe
ingresar su nombre (utilizamos la accin simple escritura).
Para leer el nombre utilizamos la accin simple de lectura.
El usuario ingresa por teclado su nombre, lo leemos y lo
almacenamos en la variable nom. Luego utilizamos la accin
simple de escritura para mostrar la cadena Hola Mundo
seguida del valor que contiene la variable nom. Las letras
C y F encerradas en un crculo indican donde comienza y
donde finaliza el programa.
problema1.0.pas
1:
2:var nom:string[20];
3:begin
4: // escribe este mensaje por pantalla
5: write('Ingrese su nombre: ');
6:
7: // lee un valor y lo guarda en la variable nom
8: // (el usuario debe escribir su nombre por teclado)
9: readln(nom);
10:
11: // escribe (en pantalla) la cadena 'Hola Mundo'
12: // seguida del valor que contiene la variable nom
13: writeln('Hola Mundo ',nom);
14:end.
15:
Problema 1.1
Leer un valor e indicar si el valor ingresado es mayor que
10.
Anlisis
Leemos el valor en la variable v. Luego con una accin
condicional evaluamos si el valor de v es mayor que 10. Si
resulta verdadero (esto depende de lo que ingrese el
usuario) entonces se ejecuta la parte izquierda de la
estructura y se muestra un mensaje indicando que el valor
ingresado es mayor que 10.
problema1.1.pas
1:
2:var v:integer;
3:begin
4: // leemos un valor por teclado
5: writeln('Ingrese un valor: ');
6: readln(v);
7:
8: // si v (el valor leido) es mayor que 10 entonces
9: if( v>10 ) then begin
10: writeln('El valor mayor que 10');
11: end else begin // si v no es mayor que 10...
12: writeln('El valor NO es mayor que 10');
13: end;
14:end.
15:
Problema 1.2
Idem anterior pero indicar si el valor ingresado es mayor,
menor o igual que 10.
Anlisis
Para resolver este problema leemos v y preguntamos si es
mayor que 10. Si resulta verdadero entonces podemos mostrar
ese resultado. Si no es mayor entonces puede ser igual o
menor. Tenemos que preguntar por alguna de estas
posibilidades. Preguntamos si v=10. Si es verdadero
entonces ya sabemos que se ingres el valor 10. Si es falso
entonces (como no es mayor ni es igual) resulta que v es
menor que 10.
problema1.2.pas
1:
2:var v:integer;
3:begin
4: write('Ingrese un valor: ');
5: readln(v);
6: if( v>10 ) then begin // es mayor
7: writeln('El valor mayor que 10');
8: end else begin // es igual
9: if( v=10 ) then begin
10: writeln('Es igual a 10');
11: end else begin // es menor
12: writeln('Es menor que 10');
13: end;
14: end;
15:end.
16:
En este problema vemos estructuras de desicin anidadas (o
Problema 1.3
Leer tres valores numricos. Indicar cual es mayor, medio y
menor.
Nota: se asume que los tres valores sern diferentes.
Anlisis
Leemos los tres valores y comenzamos a comparar.
Preguntamos si a>b. Si esto se verifica entonces
preguntamos si a>c. Si esto tambin se verifica resulta que
a>b y a>c. No hay dudas de que a es el mayor. Luego tenemos
que comparar b y c para ver cual esta en segundo y en
tercer lugar.
problema1.3.pas
1:
2:var a,b,c:integer;
3:begin
4: write('Ingrese tres valores: ');
5:
6: // lee los 3 valores numericos
7: // separados por espacio en blanco
8: readln(a,b,c);
9:
10: if( a>b ) then begin
11: if( a>c ) then begin
12: writeln('Mayor:',a);
13: if( b>c ) then begin
14: writeln('Medio:',b);
15: writeln('Menor:',c);
16: end else begin
17: writeln('Medio:',c);
18: writeln('Menor:',b);
19: end;
20: end else begin
21: writeln('Mayor:',c);
22: writeln('Medio:',a);
23: writeln('Menor:',b);
24: end;
25: end else begin
26: if( b>c ) then begin
27: writeln('Mayor:',b);
28: if( a>c ) then begin
29: writeln('Medio:',a);
30: writeln('Menor:',c);
31: end else begin
32: writeln('Medio:',c);
33: writeln('Menor:',a);
34: end;
35: end else begin
36: writeln('Mayor:',c);
37: writeln('Medio:',b);
38: writeln('Menor:',a);
39: end;
40: end;
41:end.
42:
Operadores Lgicos
Anlisis
La solucin es similar: varios if anidados, pero en este
caso utilizamos operadores lgicos para evaluar ms de una
condicin en un mismo if.
problema1.3v2.pas
1:
2:var a,b,c,mayor,medio,menor:integer;
3:begin
4: write('Ingrese tres valores: ');
5: readln(a,b,c);
6:
7: // pregunto si a es el mayor
8: if( (a>b) AND (a>c) ) then begin
9: mayor:=a;
10: // como a es el mayor, comparo b con c
11: if( b>c ) then begin
12: medio:=b;
13: menor:=c;
14: end else begin
15: medio:=c;
16: menor:=b;
17: end;
18: end else begin
19: // a no es el mayor, pregunto si el mayor es b
20: if( (b>a) AND (b>c) ) then begin
21: mayor:=b;
22: // el mayor es b, comparo a con c
23: if( a>c ) then begin
24: medio:=a;
25: menor:=c;
26: end else begin
27: medio:=c;
28: menor:=a;
29: end;
30: end else begin
31: // el mayor no es a ni es b. Entonces es c
32: mayor:=c;
33: // solo queda comparar a con b
34: if( a>b ) then begin
35: medio:=a;
36: menor:=b;
37: end else begin
38: medio:=b;
39: menor:=a;
40: end;
41: end;
42: end;
43:
44: // muestro los resultados obtenidos
45: writeln('Mayor: ', mayor);
46: writeln('Medio: ', medio);
47: writeln('Menor: ', menor);
48:end.
49:
Problema 1.4
Imprimir por pantalla los primeros n nmeros positivos (el
valor n se ingresa por teclado).
Anlisis
La estrategia para solucionar este problema consiste
utilizar una variable i con el valor inicial 1 (primer
nmero positivo) e ir mostrando e incrementando su valor
mientras este sea menor o igual al valor ingresado por el
usuario (n).
problema1.4.pas
1:
2:var i,n: integer;
3:begin
4: // leo un valor por teclado
5: write('Ingrese un valor: ');
6: readln(n);
7:
8: // inicializo la variable i con el valor 1
9: i:=1;
10:
11: // itero mientras que i sea menor o igual a n
12: while( i<=n ) do begin
13:
14: // muestro el valor de i
15: writeln(i);
16:
17: // incremento el valor de i
18: i:=i+1;
19: end;
20:end.
21:
Ciclo repeat-until
Lo representamos as:
problema1.4v2.pas
1:
2:var i,n: integer;
3:begin
4: write('Ingrese un valor: ');
5: readln(n);
6: i:=1;
7:
8: repeat
9: writeln(i);
10: i:=i+1;
11: until( i>n );
12:end.
13:
Ciclo for.
problema1.4v3.pas
1:
2:var i,n: integer;
3:begin
4: write('Ingrese un valor: ');
5: readln(n);
6: for i:=1 to n do begin
7: writeln(i);
8: end;
9:end.
10:
Contadores y Acumuladores
Problema 1.5
Leer un conjunto de valores que corresponden a las edades
de un grupo de personas, indicar:
problema1.5.pas
1:
2:var e,mayores,cantPersonas, sumEdades:integer;
3: edadProm:real;
4:begin
5: mayores:=0;
6: cantPersonas:=0;
7: sumEdades:=0;
8:
9: write('Ingrese Edad:');
10: readln(e);
11:
12: while( e >= 0 ) do begin
13: // contador de edades ingresadas
14: cantPersonas:=cantPersonas+1;
15:
16: // acumulador de edades
17: sumEdades:=sumEdades+e;
18:
19: if( e >= 21 ) then begin
20: mayores:=mayores+1;
21: end;
22:
23: write('Ingrese Edad:');
24: readln(e);
25: end;
26:
27: edadProm:=sumEdades/cantPersonas;
28: writeln('Cantidad de Personas: ',cantPersonas);
29: writeln('Mayores de 21: ',mayores);
30: writeln('Edad Promedio: ',edadProm);
31:end.
32:
cont:=cont+1
acum:=acum+n
Problemas Resueltos:
----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que sume dos nmeros:
a = 4 b = 3
PROGRAM EJER01;
var a,b,c:INTEGER;
BEGIN
a:=4;
b:=3;
c:=a+b;
WRITE (c); {Muestra en pantalla el valor de la suma}
END.
PROGRAM EJER1B;
USES CRT; {Lo usamos para poder borrar la pantalla}
VAR a,b,c:INTEGER;
BEGIN
ClrScr; {Limpiamos la pantalla}
END.
----------------------------------------------------------------------
----------------------------------------------------
x = 10 y = 2
PROGRAM EJER02;
USES CRT; {Nos va a permitir limpiar la pantalla junto con
ClrScr}
VAR x,y:INTEGER;
VAR suma,rest,mult,divi:INTEGER;
BEGIN
x:=10;
y:=2;
suma:=x + y;
rest:=x - y;
mult:=x * y;
divi:=x div y;
END.
PROGRAM EJER2B;
USES CRT;
VAR x,y:REAL;
VAR suma,rest,mult:REAL;
VAR divi:REAL;
BEGIN
WRITELN ('Este programa suma, resta, multiplica y
divide:');
WRITELN ('Escriba dos numeros reales');
WRITELN (' ');
Read(x);
Read(y);
suma:=x + y;
rest:=x - y;
mult:=x * y;
divi:=x / y;
ClrScr;
END.
PROGRAM EJER02;
USES CRT;
VAR x,y:INTEGER;
VAR suma,rest,mult,divi:INTEGER;
BEGIN
x:=10;
y:=2;
suma:=x + y;
rest:=x - y;
mult:=x * y;
divi:=x div y;
ClrScr;
WRITE('SUMA:'); WRITELN(suma);
WRITE('RESTA:'); WRITELN(rest);
WRITE('MULTIPLICACION:'); WRITELN(mult);
WRITE('DIVISION:'); WRITELN(divi);
END.
----------------------------------------------------------------------
----------------------------------------------------
lado1 = 3 lado2 = 4
rea del rectngulo=lado1 * lado2
PROGRAM EJER03;
USES CRT;
VAR lado1,lado2:INTEGER;
VAR area:INTEGER;
BEGIN
ClrScr;
PROGRAM EJER3B;
USES CRT;
VAR lado1,lado2:REAL;
VAR area:REAL;
BEGIN
{Este programa calcula el area de un rectangulo}
ClrScr;
Read(lado1);
Read(lado2);
WRITELN (' ');
area:=lado1*lado2;
----------------------------------------------------------------------
----------------------------------------------------
base = 7 altura = 4 rea del tringulo = (base * altura)/2
PROGRAM EJER04;
USES CRT;
VAR base,altura:REAL;
VAR area:REAL;
BEGIN
base:=7;
altura:=4;
area:=(base * altura) / 2;
ClrScr;
PROGRAM EJER4B;
USES CRT;
VAR base,altura:REAL;
VAR area:REAL;
BEGIN
{Este programa sirve para calcular el area de un
triangulo}
ClrScr;
WRITELN ('PARA CALCULAR EL AREA DE UN TRIANGULO:');
WRITELN (' ');
WRITE ('ESCRIBE LA BASE: '); READLN (base);
WRITE ('ESCRIBE LA ALTURA: '); READLN (altura);
WRITELN (' ');
area:=(base * altura) / 2;
----------------------------------------------------------------------
----------------------------------------------------
radio = 4 longitud de la circunferencia = 2 * PI * radio
rea de la circunferencia = PI * radio2
PROGRAM EJER05;
USES CRT;
VAR radio:REAL;
VAR longitud,area:REAL;
BEGIN
radio:=4;
longitud:=2*3.1416*radio;
area:=3.1416*radio*radio;
ClrScr;
----------------------------------------------------------------------
----------------------------------------------------
Velocidad = espacio/tiempo
PROGRAM EJER06;
USES CRT;
VAR espacio,tiempo:REAL;
VAR velocidad:REAL;
BEGIN
espacio:=2;
tiempo:=5;
velocidad:=(espacio*1000)/(tiempo*60);
ClrScr;
PROGRAM EJER6B;
USES CRT;
VAR espacio,tiempo,espacio2,tiempo2:REAL;
VAR velocidad,velocidad2:REAL;
BEGIN
{Este programa calcula la velocidad de un cuerpo}
ClrScr;
velocidad:=(espacio)/(tiempo);
velocidad2:=(espacio2)/(tiempo2);
PROGRAM EJER06;
USES CRT;
VAR espacio,tiempo:REAL;
VAR velocidad:REAL;
BEGIN
espacio:=2;
tiempo:=5;
velocidad:=(espacio*1000)/(tiempo*60);
ClrScr;
WRITE('VELOCIDAD DEL PROYECTIL:');
WRITE(velocidad:5:2); WRITE(' m/s');
END.
----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que calcule el volumen de una esfera:
PROGRAM EJER07;
USES CRT;
VAR radio:REAL;
VAR volumen:REAL;
BEGIN
radio:=3;
volumen:=(4/3)*3.1416*(radio*radio*radio);
ClrScr;
PROGRAM EJER7B;
USES CRT;
VAR radio:REAL;
VAR volumen:REAL;
BEGIN
{Este programa calcula el volumen de una esfera}
ClrScr;
volumen:=(4/3)*3.1416*(radio*radio*radio);
volumen:=(4/3)*3.1416*(radio*radio*radio);
ClrScr;
----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que evale la siguiente expresin:
PROGRAM EJER08;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
a:=3;
b:=6;
c:=4;
resultado:=(a+7*c)/(b+2-a)+2*b;
ClrScr;
PROGRAM EJER8B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
{Este programa calcula una expresion algebraica}
ClrScr;
resultado:=(a+7*c)/(b+2-a)+2*b;
WRITELN (' ');
WRITE ('RESULTADO: '); WRITE (resultado:5:2);
END.
PROGRAM EJER08;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
a:=3;
b:=6;
c:=4;
resultado:=(a+7*c)/(b+2-a)+2*b;
ClrScr;
----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que evale la siguiente expresin:
PROGRAM EJER08;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
a:=3;
b:=6;
c:=4;
resultado:=(a+7*c)/(b+2-a)+2*b;
ClrScr;
PROGRAM EJER8B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
{Este programa calcula una expresion algebraica}
ClrScr;
resultado:=(a+7*c)/(b+2-a)+2*b;
WRITELN (' ');
WRITE ('RESULTADO: '); WRITE (resultado:5:2);
END.
PROGRAM EJER08;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
a:=3;
b:=6;
c:=4;
resultado:=(a+7*c)/(b+2-a)+2*b;
ClrScr;
----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que evale la siguiente expresin:
(a+5) * 3 / 2 * b - b a = 3,b = 6
PROGRAM EJER09;
USES CRT;
VAR a,b:REAL;
VAR resultado:REAL;
BEGIN
a:=3;
b:=6;
resultado:=((a+5)*3) / (2*b-b);
ClrScr;
PROGRAM EJER9B;
USES CRT;
VAR a,b:REAL;
VAR resultado:REAL;
BEGIN
{Este programa calcula el resultado de una expresion
algebraica}
ClrScr;
resultado:=((a+5)*3) / (2*b-b);
----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que evale la siguiente expresin:
(-b + (b2-4*a*c)/(2*a)
(es la solucin positiva de una ecuacin de 2 grado)
PROGRAM EJER10;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
a:=6;
b:=6;
c:=1;
ClrScr;
PROGRAM EJER10B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
{Calcula la incognita positiva de una ecuacion de 2
grado}
ClrScr;
END.
----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que calcule el rea y el volumen de un
cilindro:
PROGRAM EJER11;
USES CRT;
VAR radio,altura:REAL;
VAR area,volumen:REAL;
BEGIN
radio:=3;
altura:=6;
ClrScr;
PROGRAM EJER11B;
USES CRT;
VAR radio,altura:REAL;
VAR area,volumen:REAL;
BEGIN
{Calcula el area y el volumen de un cilindro}
ClrScr;
PROGRAM EJER11;
USES CRT;
VAR r,h:REAL;
VAR a,v:REAL;
BEGIN
ClrScr;
a:=(2*(3.1416*sqr(r))) + ((2*3.1416*r)*h);
v:=(3.1416*sqr(2))*h;
ClrScr;