You are on page 1of 57

Ejercicios resueltos de Pascal

Comparto los siguientes ejercicios resueltos en lenguaje de programacin Pascal.

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.

2. Se desea saber el rea un una circunferencia a partir de sus dimensiones, realice un


programa que resuelva dicho planteamiento. (rea de la circunferencia = pi * radio*radio,
utilice pi=3,1415)

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.

3. Realice un programa en pascal que muestre la factura de compra de dos artculos de


acuerdo a la cantidad y precio. Muestre el nombre del artculo, precio, cantidad comprada,
subtotal, iva y total a pagar

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.

Aqu os dejamos una serie de ejercicios resueltos (15 en total) y con su


explicacin a modo de ejemplos de construccin de diagramas de
flujo de procesos o flujograma de procesos. Si no tienes claro la teora
te recomendamos primero que veas este enlace: Diagramas de Flujo.

1. Hacer el diagrama de flujo para sumar dos nmeros ledos por teclado
y escribir el resultado.

2. Hacer un diagrama de flujo que permita leer 2 nmeros diferentes y


nos diga cual es el mayor de los 2 nmeros.
El pseudocdigo para este diagrama sera:

3. Crear un diagrama de flujo de procesos en el que se almacenen 3


nmeros en 3 variables A, B y C. El diagrama debe decidir cual es el mayor
y cual es el menor

4. Realizar el diagrama de flujo para que nos calcule la hipotenusa de un


tringulo rectngulo, conocidos su dos catetos.
5. Diagrama de Flujo para sumar 100 nmeros ledos por teclado.

Explicacin:

- En I contamos los nmeros que quedan por sumar.


- En S calculamos la suma.
- A se emplea para leer temporalmente cada nmero.

Vamos a ver paso a paso como funciona. Supongamos que los datos son:
7, -1, 8, 5, ...

(1) I=100 (nmeros a sumar)


(2) S=0 (suma, inicialmente 0) (3) Leer A. El primero es 7, luego A=7 (4)
S=S+A=0+7=7
(5) I=I-1=100-1=99 (6) I=0? NO
(3) Leer A, ahora A=-1
(4) S=S+A=7-1=6
(5) I=I-1=99-1=98
(6) I=0? NO

Cuando I=0 habremos sumado los 100 nmeros y pasaremos a: (7)


Escribir S que ser la suma.
6. Modificar el anterior para que permita sumar N nmeros. El valor de N
se debe leer previamente por teclado.

7. Hacer un diagrama de flujo que permita escribir los 100 primeros


pares.
Explicacin de la solucin:

P: Variable para contener el siguiente par que se debe escribir.

I: Contador de pares que quedan por escribir.

El proceso es similar al anterior. Necesitamos un bucle para contar 100


veces y dentro de l escribimos el par e incrementamos para obtener el
siguiente.

8. Hacer el diagrama de flujo para sumar los N primeros impares. Realizar


despus uno que haga lo mismo con los pares y otro con los mltiplos de 3.
9. Hacer un diagrama de flujo que simule un reloj.
10. Hacer un organigrama que lea N nmeros, calcule y escriba la suma
de los pares y el producto de los impares.
11. Calcular el mximo de N nmeros ledos desde teclado.
Explicacin del Ejemplo de Diagrama:

Vamos a almacenar en M el mximo de los nmeros que se hayan ledo,


el primero va directamente a M y los N-1 restantes los leemos en A,
comparamos con M y si son mayores cambiamos el mximo temporal.

Al final se escribe el resultado.

Vamos a ejecutarlo paso a paso para N=4, empleando como datos: 2, 3, -


1, 7.

(1) Leer N N=4


(2) Leer M M=2
(3) I=N-1=3
(4) Leer A A=3 (5) A>M? SI (6) M=A=3
(7) I=I-1=3-I=2
(8) I=0? NO (4) Leer A A=-1

12. Un ao es bisiesto si es mltiplo de 4, exceptuando los mltiplos de


100, que slo son bisiestos cuando son mltiplos adems de 400, por
ejemplo el ao 1900 no fue bisiesto, pero el ao 2000 si lo ser. Hacer un
organigrama que dado un ao A nos diga si es o no bisiesto.

13. Dados dos nmeros enteros positivos N y D, se dice que D es un


divisor de N si el resto de dividir N entre D es 0. Se dice que un nmero N
es perfecto si la suma de sus divisores (excluido el propio N) es N. Por
ejemplo 28 es perfecto, pues sus divisores (excluido elv28) son: 1, 2, 4, 7 y
14 y su suma es 1+2+4+7+14=28. Hacer un organigrama que dado un
nmero N nos diga si es o no perfecto.
14. Realiza el diagrama de flujo que simule una caja registradora.
El pseudocdigo para esta caja registradora es:
Estructuras de Control de Flujo de Datos

Accin Simple

Esta es la ms bsica de las estructuras. Se considera


accin simple a las acciones de leer (por teclado o desde
un archivo), escribir (por pantalla, impresora o en un
archivo) y asignar. Graficamente lo representamos de la
siguiente manera:

Lectura (o entrada) Leemos (por teclado) un valor y lo


almacenamos en la variable a.

Asignacin Asignamos el valor de la variable a a la


variable b.

Escritura (o salida) Mostramos (por pantalla o impresora)


la frase Hola Mundo seguida del valor que contenga la
variable b.

Variables y Tipos de Datos

Una variable representa un espacio de memoria (RAM) en el cual podemos


almacenar temporalmente valores.

Podemos tener valores numricos, alfanumricos, lgicos y


definidos por el programador. Es decir: valores de
diferentes tipos (de datos).

Si hablamos del valor 123 estamos hablando de un valor


numrico entero. Podemos decir entonces que 123 es un
entero. En cambio, si hablamos del valor 12.3 estamos
hablando de un valor numrico real.

Tambin podemos hablar del valor Hola Mundo. En este caso


estamos hablando de un valor alfanumrico. Decimos que este
valor es una cadena de caracteres o simplemente una
cadena.

Otro valor alfanumrico podra ser "123 Hola Mundo 456" que
contiene caracteres letras y nmeros. Es alfanumrico.

Obviamente no es lo mismo el valor 123 que 123. El


primero es un valor alfanumrico (est encerrado entre
comillas) mientras que el segundo es un entero.

Otro tipo de datos es el dato lgico o booleano. Los datos


booleanos solo pueden contener valores lgicos: verdadero o
falso (true o false).

Resumiendo lo anterior diremos que podemos tener variables


de diferentes tipos de datos. Los tipos de datos pueden ser
numricos, alfanumricos, booleanos o definidos por el
programador (pero esto lo veremos ms adelante).

Las variables se identifican con un nombre (o


identificador). El nombre de la variable debe comenzar con
una letra. No puede tener espacios ni caracteres
especiales.

Nombres vlidos son:


fechaNac
fecNac
f
iFechaNac
Nombres incorrectos son:
fecha nacimiento // no puede haber un espacio
fecha-nacimiento // el caracter " - " se utiliza para restar
12fecha // debe comenzar con una letra
fecha+nacimiento // el caracter " + " se utiliza para sumar

Comenzando a Programar

Con lo estudiado hasta aqu estamos en condiciones de


resolver el siguiente problema.

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.

Codificacin del Algoritmo

El grfico que acabamos de analizar representa el algoritmo


que resuelve el problema planteado.

Para que una computadora pueda interpretar y ejecutar este


algoritmo debemos codificarlo en algn lenguaje de
programacin. En este apunte utilizaremos el lenguaje de
programacin Pascal.

Para programar en Pascal tenemos que escribir el cdigo


fuente (sentencias e instrucciones que veremos a
continuacin) en un archivo de texto con extensin .pas.

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:

El cdigo comienza con la definicin de la variable nom.


Pascal es un leguaje fuertemente tipado por lo que todos
los recursos que vayamos a utilizar en el programa
(variables, funciones, etc) deben ser previamente
especificados, indicando explicitamente su tipo de datos.
En el caso de la variable nom su tipo de datos es string
(alfanumrico, cadena de caracteres). En particular lo
definimos como string[20] (arbitrareamente) por lo tanto en
la variable nom podremos almacenar cadenas de a lo sumo 20
caracteres.

Luego, podemos ver que el programa est encerrado entre las


palabras begin y end. Se dice que begin-end encierran un
bloque de cdigo. Cada sentencia termina con punto y coma
salvo el end final que termina con punto.

Dentro del cdigo podemos escribir comentarios para


ayudarnos a comprender mejor el programa. Los comentarios
deben comenzar con doble barra.

No es una buena prctica utilizar caracteres especiales


dentro de un archivo de cdigo. Es decir: no debemos usar
acentos ni "ees" en los comentarios ni en ninguna parte
del cdigo fuente.

Nota: el cdigo anterior es compatible con Free


Pascalhttp://www.freepascal.org/. Difiere en algunos detalles con
Borland Turbo Pascal. En este apunte utilizaremos Free
Pascal.

Para editar y compilar el programa vamos a necesitar


utilizar una herramienta de desarrollo: Una IDE ("Entorno
Integrado de Desarrollo" . Utilizaremos EditPad PRO +
FreePascal.
Accin Condicional o Estructura de Decisin

La estructura de decisin permite decidir entre ejecutar un


conjunto de acciones u otro en funcin una expresin
lgica. Es decir: una expresin que tenga valor de verdad.

Representamos la accin condicional de la siguiente manera:

Cuando el algoritmo (o programa) llega a una accin


condicional debe evaluar la expresin lgica (ubicada en la
parte superior). Si esta tiene valor de verdad true
(verdadero) entonces se ejecutan las acciones que se
encuentran en la parte izquierda de la estructura. Si la
expresin resulta false (falsa) entonces se ejecutan las
acciones ubicadas a la derecha.

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.

Si la condicin resulta falsa entonces podemos asegurar que


el valor NO es mayor que 10. Pero no sabemos si es menor o
igual. Esto lo estudiaremos en el prximo problema.

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:

La accin condicional se codifica con la sentencia if (ver


lnea 9). Esta sentencia evala la expresin lgica ubicada
dentro de los parntesis y decide (en funcin de que
resulte true o false) que bloque de cdigo ejecutar. Si la
expresin v>10 resulta verdadera entonces se ejecuta la
lnea 10, si no (else) se ejecuta la lnea 12.

Notemos que tanto la lnea 10 como la lnea 12 estn


encerradas en bloques begin-end. Por eso hablamos de
"bloques de cdigo". Dentro un bloque de cdigo puede haber
ms de una instruccin como veremos en los prximos
ejemplos.

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.

Utilizamos estructuras de desicin anidadas (o "ifes"


anidados).

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

"ifes anidados" pero an as los bloques de cdigo


encerrados en los if-else tienen una nica accin. El if de
la lnea 6 encierra una nica accin writeln. Su else
encierra una nica accin if que a su vez encierra una
nica accin, tanto por verdadero (lnea 10) como por falso
(lnea 12).

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.

Si resulta que a>b pero no se verifica que a>c (o sea que c


es mayor que a) ser c el mayor, a el medio y b el menor.

Por otro lado, si no se verifica que a>b preguntamos si


b>c. Si esto es as entonces el mayor ser b (ya que b es
mayor que a y b es mayor que c). Preguntamos si a>c y ya
podremos deducir cual est en segundo y tercer lugar.

Para finalizar, si es falso que b>c entonces el mayor ser


c, medio b y menor a.

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:

En este cdigo vemos bloques if-else con ms de una


instruccin. El if de la lnea 10 tiene una nica
instruccin (un if que comienza en la lnea 11 y finaliza
en la lnea 24). El if de la lnea 11 tiene dos
instrucciones: un writeln y un if que a su vez tiene dos
instrucciones por verdadero (lneas 14 y 15) y otras dos
por falso (lneas 17 y 18).

Operadores Lgicos

Una proposicin es una expresin que tiene valor de verdad


(true o false). Es decir: puede verificarse o no.

Los siguientes ejemplos son proposiciones y por lo tanto


tienen valor de verdad.
Una semana tiene 7 das (true)
7 es nmero primo (true)
2 es mayor que 5 (false)
4 = 2+3 (false)
Podemos utilizar operadores lgicos para realizar
operaciones entre proposiciones y as obtener nuevas
proposiciones con sus correspondientes valores de verdad.

Los operadores lgicos son: AND, OR y NOT.

Las siguientes tablas muestran el valor de verdad de la


proposicin que resulta luego de operar dos proposiciones p
y q con los diferentes operadores lgicos.

Veamos otra solucin para el problema 1.3 (versin 2)

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.

Comenzamos preguntando si a>b AND a>c para asegurarnos de


que a es el mayor valor. Teniendo esto seguro (entramos por
la parte izquierda de la estructura) tenemos que ver cual
es el valor medio y cual es el menor.

Si a no es el mayor (ingresamos por la parte derecha de la


estructura) preguntamos si b es el mayor (b>a AND b>c). Si
esto es as entonces comparamos a con c para ver quien est
en segundo y tercer lugar. Si no (si b no es el mayor)
entonces por descarte el mayor ser c. Luego tambin
comparamos a y b para ver quien es medio y menor.

Otra diferencia con la solucin anterior es que en este


caso estamos utilizando tres variables temporales: mayor,
medio y menor para asignar los valores a medida que podemos
deducir que posicin tienen. Luego simplemente mostramos el
valor de estas variables para informar los resultados.

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:

Accin iterativa o Estructura de Repeticin

La tercer y ltima estructura de control de flujo de datos


es la estructura de repeticin (o iterativa). Existen tres
estructuras interativas: while, repeat-until y for.

El while, lo representamos de la siguiente manera:

Decimos que mientras se verifique la condicin indicada en


la parte superior de la estructura se repetirn las
acciones que se encuentran dentro del cuerpo principal de
la misma (secuencialmente).

Como existe la posibilidad de que la condicin no se cumpla


al momento de llegar al while y que no se ingrese al ciclo
ni siquiera la primera vez se dice que el while es una
estructura repetitiva de 0-n (cero a ene) ya que puede
iterar desde cero hasta n veces.

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

Supongamos que el usuario ingresa un valor n=3. Al llegar


al ciclo de repeticin la condicin "i es menor o igual a
n" resultar verdadera ya que i vale 1 (dado que lo
asignamos antes de ingresar al ciclo) y n vale 3 (es lo que
estamos asumiendo). Entonces el programa ingresa al ciclo y
muestra el valor de la variable i. A continuacin vemos la
asignacin i <-- i+1. Esto debe leerse as: a i le asigno
el valor que i tena ms 1. Es decir que si i vala 1
entonces ahora a i le asignamos 1 (lo que tena) +1 dejando
su valor en 2. Es decir: incrementamos el valor de i. Como
no hay mas acciones para ejecutar dentro del ciclo, el
prximo paso es volver a evaluar la condicin para ver si
se contina verificando.

En la siguiente iteracin i vale 2 y n vale 3. Todava se


verifica que "i es menor o igual a n". Se vuelve a ingresar
al ciclo y se imprime el valor de i (2). Luego se
incrementa i y as hasta que no se cumpla la condicin.

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:

El ciclo repeat-until es un ciclo de 1 a n. Para ingresar


al ciclo no hay condicin por lo tanto las acciones que se
encuentran dentro del ciclo se realizarn al menos una vez.
Luego de la ltima accin (en este caso accin3) se evala
la condicin que se encuentra en la parte posterior de la
estructura.

El ciclo iterar hasta que se verifique la condicin ("repeat-until" significa


"repetir-hasta" .

Tenemos que tener clara la diferencia entre el ciclo while


y el ciclo repeat-until. El primero repite mientras, en
cambio el segundo repite hasta que se cumpla la condicin.

Veamos como podemos resolver el problema 1.4 utilizando un


ciclo repeat-until en lugar de un ciclo while.

Basicamente la diferencia est en la condicin del ciclo.


Antes iteraba "mientras que i sea menor o igual que n".
Ahora itera "hasta que i sea mayor que n".

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.

Este es otro ciclo iterativo de 0 a n iteraciones. Se


representa as:

El ciclo for funciona con una variable de control (en el


grfico es la variable i) que toma un valor inicial (h) y
un valor final (t). La variable de control se incrementa
automaticamente en cada iteracin tomando el valor h en la
primer iteracin, h+1 en la segunda y t en la ltima. As,
el ciclo dar exactamente t-h+1 iteraciones.

Como vemos en el grfico tenemos dos opciones para


representarlo. Podemos utilizar cualquiera de las dos.

Veamos como lo aplicamos en el problema 1.4

Vemos que en este caso el uso de un ciclo for simplifica la


solucin del problema. Simplemente leemos el valor n y
luego entramos en un ciclo for con la variable i
incrementndose desde 1 hasta n.

Dentro del ciclo solo tenemos que mostrar el valor de i. Ya


no es necesario incrementarla porque el mismo ciclo la
incrementa automaticamente.

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

Para explicar estos temas analizaremos el siguiente


problema.

Problema 1.5
Leer un conjunto de valores que corresponden a las edades
de un grupo de personas, indicar:

a - Cuantas personas (sus edades) se ingresaron.


b - Cuantas son mayores de edad (21 aos o ms).
c - Edad promedio de las personas.

El conjunto de valores finaliza cuando se ingresa una edad


menor que cero.
Anlisis
La estructura principal de este algoritmo consiste en un
ciclo repetitivo que itera mientras la edad leida (e) sea
mayor o igual que cero (ya que se ingresar un valor
negativo para indicar el fin de datos). Se lee la edad
antes de ingresar al while y antes de cerrarlo.

Para calcular cuantas personas se ingresaron (punto a)


utilizamos la variable cantPersonas. Esta variable se
inicializa con cero (cantPersonas:=0) antes de ingresar al
while, y dentro del while (por cada iteracin) la
incrementamos asignndole el valor que tena ms 1.
(cantPersonas:=cantPersonas+1).

La variable cantPersonas incrementa su valor en 1 por cada


iteracin del while. A su vez, el while itera tantas veces
como edades vlidas de personas se ingresen. Decimos
entonces que cantPersonas es un contador que cuenta (en
este caso) la cantidad de personas cuyas edades se
ingresaron. O bien: cantPersonas es el contador de
personas.

Es muy importante notar que el contador debe inicializarse


en cero ya que para incrementar su valor hacemos referencia
al valor que tena ms 1. En el momento inicial (primera
iteracin) debe valer cero.

Para calcular cuantas personas son mayores de 21 aos


(punto b) utilizamos otro contador (mayores) solo que antes
de incrementarlo preguntamos si la edad leida es mayor o
igual que 21.

Para calcular el promedio de las edades grupo (punto c)


necesitamos dos datos: la cantidad de edades ingresadas y
la sumatoria de las edades. La cantidad de edades
ingresadas ya la tenemos en la variable cantPersonas. Por
lo tanto necesitamos obtener la sumatoria de las edades.
Para esto utilizamos un acumulador.

A la variable sumEdades (que inicializamos en cero) le


incrementamos su valor en cada iteracin del while. Pero no
lo incrementamos en 1. Le asignamos lo que tena ms el
valor de la variable e (la edad).

Decimos entonces que sumEdades es un acumulador que acumula


(en este caso) las edades leidas. O simplemente: sumEdades
es el acumulador de edades.

Al finalizar el while tenemos en cantPersonas la cantidad


de personas del conjunto, en mayores la cantidad de
personas mayores de 21. Luego a edadProm le asignamos
sumEdades/cantPersonas para calcular la edad promedio del
conjunto.

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:

Resumiendo, decimos que una variable es un contador cuando


incrementamos su valor en una unidad.

cont:=cont+1

Decimos que una variable es un acumulador cuando


incrementamos su valor en una cantidad variable.

acum:=acum+n

donde n es una variable cuyo valor puede variar.

Problemas Resueltos:

----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que sume dos nmeros:

a = 4 b = 3

PROGRAM EJER01;
var a,b,c:INTEGER;

BEGIN

{Empezamos con lo bsico, un programa que escribe la suma


de 2 numeros en pantalla}

a:=4;
b:=3;

{Se asigna un valor cualquiera a las variables "a" y "b"}

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}

WRITELN ('Este programa suma dos numeros:');


WRITELN (' ');
WRITE ('Introduzca un numero: '); READLN (a);
WRITE ('Introduzca otro numero: ' ); READLN (b);
WRITELN (' ');
c:=a+b;

WRITE ('EL RESULTADO ES: ');


WRITE (c);

END.

Escribir un programa en Pascal que sume, reste, multiplique y divida


dos nmeros:

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

{Con estas 4 variables realizamos las cuatro operaciones


aritmticas fundamentales: suma, resta, multiplicacin y
divisin}

ClrScr; {Limpia la pantalla}

WRITE ('SUMA:'); WRITELN (suma);


WRITE ('RESTA:'); WRITELN (rest);
WRITE ('MULTIPLICACION:'); WRITELN (mult);
WRITE ('DIVISION:'); WRITE (divi);

END.

PROGRAM EJER2B;
USES CRT;
VAR x,y:REAL;
VAR suma,rest,mult:REAL;
VAR divi:REAL;

{suma, resta, multiplica y divide 2 numeros reales}

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;

WRITE ('SUMA:'); WRITELN (suma:3:0);


WRITE ('RESTA:'); WRITELN (rest:3:0);
WRITE ('MULTIPLICACION:'); WRITELN (mult:3:0);
WRITE ('DIVISION:'); WRITE (divi:5:2);

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.

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

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

PROGRAM EJER03;
USES CRT;
VAR lado1,lado2:INTEGER;
VAR area:INTEGER;

BEGIN

{Este programa nos va a servir para calcular el area de un


rectngulo}

{Damos valores para las variables}


lado1:=3;
lado2:=4;
area:=lado1*lado2; {Calculamos el area}

ClrScr;

WRITE ('AREA DEL RECTANGULO: '); WRITE (area); {Lo


mostramos en pantalla}
END.

PROGRAM EJER3B;
USES CRT;
VAR lado1,lado2:REAL;
VAR area:REAL;

BEGIN
{Este programa calcula el area de un rectangulo}

ClrScr;

WRITELN ('Escriba los lados del rectangulo');

Read(lado1);
Read(lado2);
WRITELN (' ');

area:=lado1*lado2;

WRITE ('AREA DEL RECTANGULO:'); WRITE (area:5:2);


END.

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

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

WRITE ('AREA DEL TRIANGULO: '); WRITE (area:5:2);


{:5:2 sirve para dar el formato de salida al numero, 5
posiciones y 2 decimales}
END.

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;

WRITE ('EL AREA DEL TRIANGULO ES: '); WRITE (area: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 * 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;

WRITE ('LONGITUD DE LA CIRCUNFERENCIA:'); WRITELN


(longitud:5:2);
WRITE ('AREA DE LA CIRCUNFERENCIA:'); WRITE (area: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 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.

PROGRAM EJER6B;
USES CRT;
VAR espacio,tiempo,espacio2,tiempo2:REAL;
VAR velocidad,velocidad2:REAL;
BEGIN
{Este programa calcula la velocidad de un cuerpo}

ClrScr;

WRITE ('Para calcular la velocidad debe escribirlo en


unidades ');
WRITE ('del sistema internacional');
WRITELN (' ');
WRITE ('Escriba el espacio recorrido: '); READLN
(espacio);
WRITE ('Escriba el tiempo transcurrido: '); READLN
(tiempo);
WRITELN (' ');

velocidad:=(espacio)/(tiempo);

WRITE ('VELOCIDAD DEL PROYECTIL: ');


WRITE (velocidad:5:2); WRITELN (' m/s');

WRITELN (' ');


WRITELN ('Si lo desea en Km/h introduzca los datos: ');
WRITELN (' ');
WRITE ('Escriba el espacio recorrido: '); READLN
(espacio2);
WRITE ('Escriba el tiempo transcurrido: '); READLN
(tiempo2);
WRITELN (' ');

velocidad2:=(espacio2)/(tiempo2);

WRITE (velocidad2:5:2); WRITE (' Km/h ');


END.

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:

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

PROGRAM EJER07;
USES CRT;
VAR radio:REAL;
VAR volumen:REAL;
BEGIN
radio:=3;
volumen:=(4/3)*3.1416*(radio*radio*radio);

ClrScr;

WRITE ('VOLUMEN DE LA ESFERA:'); WRITE(volumen);


END.

PROGRAM EJER7B;
USES CRT;
VAR radio:REAL;
VAR volumen:REAL;
BEGIN
{Este programa calcula el volumen de una esfera}

ClrScr;

WRITELN ('PARA CALCULAR EL VOLUMEN DE LA ESFERA ESCRIBA EL


RADIO: ');
READLN (radio);

volumen:=(4/3)*3.1416*(radio*radio*radio);

WRITE ('VOLUMEN DE LA ESFERA: '); WRITE(volumen:5:2);


END.
PROGRAM EJER07;
USES CRT;
VAR radio:REAL;
VAR volumen:REAL;
BEGIN
radio:=3;

volumen:=(4/3)*3.1416*(radio*radio*radio);

ClrScr;

WRITE('VOLUMEN DE LA ESFERA: '); WRITE(volumen);


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

WRITE ('RESULTADO:'); WRITE (resultado:5);


END.

PROGRAM EJER8B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;

BEGIN
{Este programa calcula una expresion algebraica}
ClrScr;

WRITELN ('Este programa sirve para calcular la siguiente


expresion:');
WRITELN ('(a+7*c)/(b+2-a)+2*b');
WRITELN (' ');
WRITE ('Introduzca a: '); READLN (a);
WRITE ('Introduzca b: '); READLN (b);
WRITE ('Introduzca c: '); READLN (c);

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;

WRITE('RESULTADO: '); WRITE(resultado:5);


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

WRITE ('RESULTADO:'); WRITE (resultado:5);


END.

PROGRAM EJER8B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;

BEGIN
{Este programa calcula una expresion algebraica}

ClrScr;

WRITELN ('Este programa sirve para calcular la siguiente


expresion:');
WRITELN ('(a+7*c)/(b+2-a)+2*b');
WRITELN (' ');
WRITE ('Introduzca a: '); READLN (a);
WRITE ('Introduzca b: '); READLN (b);
WRITE ('Introduzca c: '); READLN (c);

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;

WRITE('RESULTADO: '); WRITE(resultado:5);


END.

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

WRITE ('RESULTADO: '); WRITE(resultado:5:2);


END.

PROGRAM EJER9B;
USES CRT;
VAR a,b:REAL;
VAR resultado:REAL;

BEGIN
{Este programa calcula el resultado de una expresion
algebraica}

ClrScr;

WRITE ('PARA CALCULAR LA SIGUIENTE EXPRESION: ');


WRITELN ('((a+5)*3) / (2*b-b)');
WRITELN (' ');
WRITE ('Escriba a: '); READ (a);
WRITE ('Escriba b: '); READ (b);
WRITELN (' ');

resultado:=((a+5)*3) / (2*b-b);

WRITE ('RESULTADO: '); WRITE(resultado:5:2);


END.

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

resultado:=(-b+sqrt(sqr (b) - 4*a*c))/(2*a);

ClrScr;

WRITE ('RESULTADO:'); WRITE(resultado:5:2);


END.

PROGRAM EJER10B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;

BEGIN
{Calcula la incognita positiva de una ecuacion de 2
grado}

ClrScr;

WRITE ('Para calcular la incognita positiva de una


ecuacion');
WRITE (' de segundo grado escriba todas las variables:');
WRITELN (' ');
WRITELN (' ');

WRITE ('Escriba a: '); READLN (a);


WRITE ('Escriba b; '); READLN (b);
WRITE ('Escriba c; '); READLN (c);
WRITELN (' ');

resultado:=(-b +sqrt(sqr (b) - 4*a*c))/(2*a);

WRITE ('RESULTADO: '); WRITE(resultado:5:2);

END.

----------------------------------------------------------------------
----------------------------------------------------
Escribir un programa en Pascal que calcule el rea y el volumen de un
cilindro:

A = (2 * (PI * r2)) + ((2 * PI * r) * h)


V = (PI * r2) * h

PROGRAM EJER11;
USES CRT;
VAR radio,altura:REAL;
VAR area,volumen:REAL;

BEGIN
radio:=3;
altura:=6;

area:= (2 * (3.1416 * radio * radio)) + ((2 * 3.1416 *


radio) * altura);
volumen:= (3.1416 * radio * radio) * altura;

{podriamos cambiar "radio*radio" por "sqr(radio)" para


hacer el cuadrado del radio}

ClrScr;

WRITE ('AREA DEL CILINDRO:'); WRITE (area); WRITELN ('


m2');
WRITE ('VOLUMEN DEL CILINDRO:'); WRITE (volumen); WRITE ('
m3');
END.

PROGRAM EJER11B;
USES CRT;
VAR radio,altura:REAL;
VAR area,volumen:REAL;

BEGIN
{Calcula el area y el volumen de un cilindro}

ClrScr;

WRITELN ('CALCULA EL AREA Y VOLUMEN DE UN CILINDRO');


WRITELN (' ');

WRITE ('Escriba el radio: '); READLN (radio);


WRITE ('Escriba la altura: '); READLN (altura);
WRITELN (' ');

area:= (2 * (3.1416 * radio * radio)) + ((2 * 3.1416 *


radio) * altura);
volumen:= (3.1416 * radio * radio) * altura;

WRITE ('AREA DEL CILINDRO: '); WRITE (area:5:2); WRITELN ('


m2');
WRITE ('VOLUMEN DEL CILINDRO: '); WRITE (volumen:5:2);
WRITE (' m3');
END.

PROGRAM EJER11;
USES CRT;
VAR r,h:REAL;
VAR a,v:REAL;
BEGIN

{AREA Y VOLUMEN DE UN CILINDRO}

ClrScr;

WRITE('RADIO DEL CILINDRO: '); READLN(r);


WRITE('ALTURA DEL CILINDRO: '); READLN(h);

a:=(2*(3.1416*sqr(r))) + ((2*3.1416*r)*h);
v:=(3.1416*sqr(2))*h;
ClrScr;

WRITE('AREA DEL CILINDRO: '); WRITELN(a:5:2);


WRITE('VOLUMEN DEL CILINDRO: '); WRITELN(v:5:2);
END.

You might also like