You are on page 1of 16

15/10/2015

HolaMundo.pascal(online):Captulo1

Ms Siguienteblog

Crearblog Acceder

Publicaciones del Autor


.pas

.c

.java

2 4 DE AG O STO DE 2 0 0 8

Captulo 1
.
Introduccin
Comenzaremos por dar algunas definiciones bsicas que nos ayudarn a comprender el alcance
de este trabajo.
Problema Situacin planteada que queremos resolver.
Algoritmo Secuencia finita de acciones con las que podemos resolver el problema.
Segn el Teorema de la Programacin Estructurada todo problema computacional puede
resolverse mediante la aplicacin de tres tipos de acciones fundamentales que llamaremos
"Estructuras de Control de Flujo de Datos".
Estas acciones son las siguientes:
Ejecutar una accin, luego otra, luego otra,... (lo llamamos accin simple)
Decidir entre ejecutar una u otra accin en funcin de que se cumpla o no una
determinada condicin (lo llamamos accin condicional)
Ejecutar repetidas veces la misma accin mientras se cumpla una determinada
condicin (lo llamamos accin iterativa).

>> Click para Ms Informacin <<

Recursos / Download
SZDelphi (por JDownloader)
Instalacin y uso de Delphi
Plantilla de Diagramas p/Visio

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.

Contenidos

1 Introduccin
2 Operadores
3 Procedimientos y Funciones
4 Corte de Control
5 Arrays
6 Archivos de Registros
7 Estructuras Dinmicas

Asignacin Asignamos el valor de la variable a a la variable b.

8 Arboles y Recursividad
9 Teora de Objetos (intro)
EjemplosResueltos

Escritura (o salida) Mostramos (por pantalla o impresora) la frase Hola Mundo seguida del
valor que contenga la variable b.

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

Ahora en Video!

1/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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.

Acerca del Autor


Ing. Pablo A. Sznajdleder
Agradecimientos

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.

No al blog de Java

Super Baterista

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

Sitios Relacionados
PascAlgo (por Lic. Hugo Cuello)
Algoritmia.net
Java Algorithm Framework

Nombres incorrectos son:


fecha nacimiento // no puede haber un espacio
fechanacimiento // 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.

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

2/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:

varnom:string[20];
begin
//escribeestemensajeporpantalla
write('Ingresesunombre:');
//leeunvaloryloguardaenlavariablenom
//(elusuariodebeescribirsunombreporteclado)
readln(nom);
//escribe(enpantalla)lacadena'HolaMundo'
//seguidadelvalorquecontienelavariablenom
writeln('HolaMundo',nom);
end.

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 beginend encierran un bloque de cdigo. Cada sentencia termina con punto y coma
salvo el end final que termina con punto.

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

3/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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 Pascal (http://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

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

4/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:

varv:integer;
begin
//leemosunvalorporteclado
writeln('Ingreseunvalor:');
readln(v);
//siv(elvalorleido)esmayorque10entonces
if(v>10)thenbegin
writeln('Elvalormayorque10');
endelsebegin//sivnoesmayorque10...
writeln('ElvalorNOesmayorque10');
end;
end.

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

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

5/16

15/10/2015

HolaMundo.pascal(online):Captulo1

problema1.2.pas
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

varv:integer;
begin
write('Ingreseunvalor:');
readln(v);
if(v>10)thenbegin//esmayor
writeln('Elvalormayorque10');
endelsebegin//esigual
if(v=10)thenbegin
writeln('Esiguala10');
endelsebegin//esmenor
writeln('Esmenorque10');
end;
end;
end.

En este problema vemos estructuras de desicin anidadas (o "ifes anidados") pero an as los
bloques de cdigo encerrados en los ifelse 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: vara,b,c:integer;
3: begin
4: write('Ingresetresvalores:');

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

6/16

15/10/2015

HolaMundo.pascal(online):Captulo1
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:

//leelos3valoresnumericos
//separadosporespacioenblanco
readln(a,b,c);
if(a>b)thenbegin
if(a>c)thenbegin
writeln('Mayor:',a);
if(b>c)thenbegin
writeln('Medio:',b);
writeln('Menor:',c);
endelsebegin
writeln('Medio:',c);
writeln('Menor:',b);
end;
endelsebegin
writeln('Mayor:',c);
writeln('Medio:',a);
writeln('Menor:',b);
end;
endelsebegin
if(b>c)thenbegin
writeln('Mayor:',b);
if(a>c)thenbegin
writeln('Medio:',a);
writeln('Menor:',c);
endelsebegin
writeln('Medio:',c);
writeln('Menor:',a);
end;
endelsebegin
writeln('Mayor:',c);
writeln('Medio:',b);
writeln('Menor:',a);
end;
end;
end.

En este cdigo vemos bloques ifelse 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.

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

7/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:

vara,b,c,mayor,medio,menor:integer;
begin
write('Ingresetresvalores:');
readln(a,b,c);
//preguntosiaeselmayor
if((a>b)AND(a>c))thenbegin
mayor:=a;
//comoaeselmayor,comparobconc
if(b>c)thenbegin
medio:=b;
menor:=c;
endelsebegin
medio:=c;
menor:=b;
end;
endelsebegin
//anoeselmayor,preguntosielmayoresb
if((b>a)AND(b>c))thenbegin
mayor:=b;
//elmayoresb,comparoaconc
if(a>c)thenbegin
medio:=a;

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

8/16

15/10/2015

HolaMundo.pascal(online):Captulo1
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:

menor:=c;
endelsebegin
medio:=c;
menor:=a;
end;
endelsebegin
//elmayornoesaniesb.Entoncesesc
mayor:=c;
//soloquedacompararaconb
if(a>b)thenbegin
medio:=a;
menor:=b;
endelsebegin
medio:=b;
menor:=a;
end;
end;
end;
//muestrolosresultadosobtenidos
writeln('Mayor:',mayor);
writeln('Medio:',medio);
writeln('Menor:',menor);
end.

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, repeatuntil 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 0n (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).

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

9/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

vari,n:integer;
begin
//leounvalorporteclado
write('Ingreseunvalor:');
readln(n);
//inicializolavariableiconelvalor1
i:=1;
//iteromientrasqueiseamenoroigualan
while(i<=n)dobegin
//muestroelvalordei
writeln(i);
//incrementoelvalordei
i:=i+1;
end;
end.

Ciclo repeatuntil
Lo representamos as:

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

10/16

15/10/2015

HolaMundo.pascal(online):Captulo1

El ciclo repeatuntil 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 ("repeatuntil" significa "repetirhasta").
Tenemos que tener clara la diferencia entre el ciclo while y el ciclo repeatuntil. 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 repeatuntil 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:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

vari,n:integer;
begin
write('Ingreseunvalor:');
readln(n);
i:=1;
repeat
writeln(i);
i:=i+1;
until(i>n);
end.

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

11/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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 th+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: vari,n:integer;
3: begin
4 : write('Ingreseunvalor:');
5: readln(n);
6: fori:=1tondobegin
7: writeln(i);
8: end;

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

12/16

15/10/2015

HolaMundo.pascal(online):Captulo1
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

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

13/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:

vare,mayores,cantPersonas,sumEdades:integer;
edadProm:real;
begin
mayores:=0;
cantPersonas:=0;
sumEdades:=0;
write('IngreseEdad:');
readln(e);
while(e>=0)dobegin
//contadordeedadesingresadas
cantPersonas:=cantPersonas+1;
//acumuladordeedades
sumEdades:=sumEdades+e;
if(e>=21)thenbegin
mayores:=mayores+1;
end;
write('IngreseEdad:');
readln(e);
end;
edadProm:=sumEdades/cantPersonas;
writeln('CantidaddePersonas:',cantPersonas);
writeln('Mayoresde21:',mayores);
writeln('EdadPromedio:',edadProm);
end.

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

14/16

15/10/2015

HolaMundo.pascal(online):Captulo1

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.

Nomenclatura
Pascal es un lenguaje de programacin "insensible" a las maysculas y minsculas por lo tanto
podemos escribir cdigo Pascal en mayscula, en minscula o con combinaciones de
maysculas y minsculas.
Las variables (o identificadores) tambin son "insensibles" por lo que la variable a es la misma
que la variable A. La variable fechanacimiento es la misma que FECHANACIMIENTO y la
misma que fechaNacimiento.
Sin embargo en este trabajo utilizaremos la siguiente convensin de nomenclatura:
Todas las palabras reservadas de Pascal (while, for, repeatuntil, if, etc) las escribiremos en
minscula.
Todos los nombres de variables deben comenzar con minscula. Si el nombre de la variable
est compuesto por ms de una palabra entonces la primer inicial ir en minscula pero las
iniciales siguientes deben ir en mayscula.
Por ejemplo:
fechaNacimiento
fecNac
nomPersona
edad
legajo
legajoEmpleado

.
Algoritmos y Estructuras de Datos UTN UBA.
Publicado por PabloSZ

8 comentarios:
Ricardo Garcia dijo...
Hola me llamo ricardo
bueno escribo solo para darte las gracias por tu publicacion, me a servido de alluda
con unos problemas que tenia para que me corriera un programa, a sido muy
ilustrativo. (claro que no es era para programar en pascal si no en c :S) pero me a
servido gracias.
05 mayo, 2008 17:25
Annimo dijo...
Curs algoritmos con vos hace un tiempo. Ahora estoy pronto a dar el final y sigo
utilizando este blog para resolver dudas.
Una vez mas gracias!
22 julio, 2008 03:13

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

15/16

15/10/2015

HolaMundo.pascal(online):Captulo1
Anonimo dijo...
Hola, en la parte de operadores logicos, si bien lo entiendo, no entiendo la parte q
dice que tengo que agregar 3 variables mas, osea, no entienod bien para uqe me sive
eso, puedo hacer el programa sin tener que poner esas variables (medio,
menor,mayor)?
19 agosto, 2008 11:13
Annimo dijo...
Hola. Muy buena la publicacin... es brbaro que gente con tanta facilidad para
explicar determinados temas se tome el trabajo de publicarlos de esta manera. Ayuda
mucho a quienes cursan la materia con algn profesor que no es del todo prctico a la
hora de explicar, o bien, no es muy capaz de hacerce entender de temas que,
seguramente, el domina pero que los alumnos no conocen y necesitan ser introducidos
de una maera prctica y clara para lograr entenderlos. Gracias!
21 octubre, 2008 10:06
Annimo dijo...
Hola, me parece muy bueno este blog para aprender pascal ya que soy novato en esto;
te queria hacer una consulta, en la parte "Veamos otra solucin para el problema 1.3
(versin 2)" en el diagrama, cuando ya se asigno a "b" como mayor y comparas "a>c" no
tendria que asignar medio y menor a "a" y "c" en vez de "a" y "b".
24 diciembre, 2008 00:16
Diego dijo...
Gracias Pablo, es buenisimo el Blog.
Hoy compre la edicin impresa en la facu, que me enter que existia gracias al Blog...
Me parece genial la seccin donde te tomaste el trabajo de hacer una transicin de
Pascal a C para poder iniciarse en este lenguaje. Cuando termine la cursada (y
apruebe algoritmos=) espero poder empezar a sacarle provecho.
Saludos!
Diego.
04 mayo, 2009 15:49
Annimo dijo...
Hola! muy bueno el blog... es la primera vez que entro y me parecio de mucha ayuda.
estoy cursando progrmamacion, al principio no casaba una. ahora soy toda una
experta gracias a este apunte ! gracias
04 junio, 2009 18:36
Annimo dijo...
Hola:
queria saber como hacer para en el ejercicio problema1.5.pas
poder salir sin usar un numero negativo sino usar la tecla "Esc" o alguna en especial.
Muchas gracias. Muy bueno elblog
01 septiembre, 2009 19:29

Publicar un comentario en la entrada

Entrada ms reciente

Pgina principal

Entrada antigua

Suscribirse a: Enviar comentarios (Atom)

Todos los Derechos Reservados Propiedad Intelectual Nro. 591212

http://holamundopascal.blogspot.mx/2007/08/capitulo1_9518.html

16/16

You might also like