Professional Documents
Culture Documents
Programacion en Pascal
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
Desarrollo"
Anlisis
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:
anidados"
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
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.
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:
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
Problemas Resueltos:
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.
----------------------------------------------------------------------------------------------------------------------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.
----------------------------------------------------------------------------------------------------------------------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;
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.
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:');
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.
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.
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.
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.
-------------------------------------------------------------------------------
(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;
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.
----------------------------------------
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);
link: http://www.youtube.com/watch?v=JoF5rfzzo_o
link: http://www.youtube.com/watch?v=tsDfGBlHFfs&feature=related
link: http://www.youtube.com/watch?v=R0HXdnj0weg&feature=related
link: http://www.youtube.com/watch?v=gq723jqgqAo&feature=related
link: http://www.youtube.com/watch?v=LihWEUNJ25k&feature=related
link: http://www.youtube.com/watch?v=iqUfBehhcgM&feature=related
link: http://www.youtube.com/watch?v=NnmZQsOP2MU&feature=related
link: http://www.youtube.com/watch?v=F1ohJmqC7b8&feature=related
link: http://www.youtube.com/watch?v=-JA4PhZX9Lg&feature=related
link: http://www.youtube.com/watch?v=1G2yCtp7-xc&feature=related
Bueno gente, espero que les sirva, mas a los que se estan
iniciando en la programacion, creo este material les viene de
pelos, comenten, acepto criticas constructivas, siempre y cuando
sean con respeto, los comentarios fuera de lugar o irrespetuosos
seran borrados, bloqueados o denunciados, gracias!!!!