miércoles, 7 de octubre de 2009

TUTORIAL#2 (EJEMPLIFICACION DE ESTRUCTURA DE PROGRAMACION, CICLOS REPETITIVOS Y COMPARATIVOS)

ANTES DE EMPEZAR!!!...

contiguo a cada ejemplo se dará el enlace del mismo en un programa fuente .PAS para que lo puedan analizar también desde su compilador de pascal.


Ahora vamos a crear un programa básico en pascal solo por cogerle el hilo a todo lo que se a ido exponiendo en los posts anteriores.

Lo primero es crear un nuevo archivo .pas, si aun no le toman la idea al crearlo regresen
aquí y vuelvan a retomar la idea, una vez hecho esto, hacemos estos otros pasos:

  • le damos el nombre al programa-program nombre_programa;
  • declaramos las cabeceras USES--uses
----------------------------------------wincrt;
  • declaramos variables------------var
---------------------------------------a:integer; b:char; c:string; etc....
  • y creamos el programa principal Begin
---------------------------------------End.

NOTA!!: los que estan en negrita y coloreados son palabras reservadas de pascal y no puedes declarar variables con estos tipos de nombres.

ahora con esto hagan algo como imprimir mensajes en pantalla, variables, o leer datos por teclado, para que se vayan familiarizando con el lenguaje. luego vayan escalando el nivel de dificultad y van probando con cosas mas complejas.

Ahora vamos con algo mas interesante.... la utilización de CICLOS REPETITIVOS y COMPARATIVOS!!!
los mas distintivos y utilizados en pascal son: For, Repeat-Until , While, if
y case.. Ahora definiremos uno por uno para una mayor comprensión...

  • FOR
es una ciclo repetitivo de los mas utilizados en la mayoría de los lenguajes de programación, esta instrucción representa lo siguiente: "para a elemento hasta b elemento haga". Representado eso en pascal se demostraría con este ejemplo:
-> supongamos que queremos mostrar en pantalla la cuenta de los números del
1 al 10.. entonces en código pascal seria de la siguiente manera.

Program conteo;
uses
wincrt;
var
a:
integer;
Begin
clrscr;-------------{esto sirve para limpiar pantalla}
writeln('vamos a digitar la serie de números del 1 al 10');
for a:=1 to 10 do-- {en español: para a=1 hasta 10 haga lo que esta entre el begin y el end}
begin -------------{indispensable para abrir un for}
writeln('numero ',a);
end; -------------- { indispensable para cerrar un for}
readkey;
End.
descarga conteo.pas->>>http://www.mediafire.com/?m4mza0nagxw
  • WHILE
representación del ciclo "mientras que", este se usa para cumplir una condición siempre y cuando se mantenga ciertas condiciones previas a su ejecución, ejemplificando con el siguiente enunciado:
->supongamos que queremos hacer un programa que revise la recogida de un carácter, si la letra es 'S' entonces va a mostrar un mensaje positivo, si en caso contrario es 'N', mostrara el mensaje contrario.

Program validez;
uses
wincrt;
var
a:
char;
Begin
clrscr;-------------{esto sirve para limpiar pantalla}
writeln('digite su opción a seguir (S/N):: ');a:=readkey;
a:=
upcase(a);{la palabra reservada upcase se usa para convertir letras a mayúsculas}
while (a='S') do
begin
clrscr;
writeln('usted ha escogido seguir');
end;
readkey;

while (a='N') do
begin
clrscr;
writeln('usted ha escogido salir');
end;
readkey;
End.


Bueno, esto es un ejemplo bobo y sin sentido, porque cuando ejecuten esto lo que va a hacer es que va a entrar en un bucle infinito pero la idea es que sepan el funcionamiento de este ciclo, ademas, no se si prestaron mucha atención a este código, pero si lo detallamos un poco mas vamos a ver una linea un poco extraña en este paso, es esta:(a:= readkey;).
Se preguntaran para que sirve. Sencillo!!, esto lo que hace es recoger mi carácter de forma dinámica, en palabras mas rasas, ejecuta la instrucción apenas se le digite su carácter por teclado. Esto por algunos es conocido como
Variables interactivas.

Pero esta manera de validar es muy engorrosa y antipractica para ciertos casos. es una forma eficaz pero no eficiente habiendo una estructura mas facil de codificar para estos casos, y ahora como diria la señorita laura:: "QUE PASE EL IF".

  • IF
"Senorita yo a este codigo lo conoci en una POLLADA!!", jejejeje, basta de bromas esto es tema de gente seria, aunque los que la estudian al final se nos corre un poquitin la percepcion de la realidad(eso no quiere decir que nos volvamos locos, solo observamos mas alla que la gente promedio)...

el if en español es la representacion de la instruccion 'SI', si pasa esto hago aquello y si no hago esto otro, esa va a ser nuestra ventaja sobre el while, para demostrarlo hagamos el miso programa de los whiles pero con if y ustedes juzagaran la diferencia:

Program validez_2.0;
uses
wincrt;
var
a:
char;
Begin
clrscr;-------------{esto sirve para limpiar pantalla}
writeln('digite su opcion a seguir (S/N):: ');a:=readkey;
a:=
upcase(a);{la palabra resevada upcase se usa para convertir letras a mayusculas}
if (a='S') then
begin
clrscr;
writeln('usted ha escogido seguir');
end
else
begin
clrscr;
writeln('usted ha escogido salir');
end;
readkey;
End.

descarga validez_2.0.pas->>>http://www.mediafire.com/?iwbz5c44gym

Fijense en dos cosas que tienen de particular el if. Primero es que cuando la primera condicion se cumple el end de esa condicion no lleva punto y coma, y eso por que???, porque eso significa que hay un sino(else) y que debajo de el hay mas instrucciones por ejecutar y ahi no termina el if.

Ahora trabajemos con algo mas chevere, digamos que la forma de trabajar con el for no quedo sonando de a mucho y quiero utilizar algo mas efectivo para el control de mis ciclos repetitivos, así que ahora usemos esto:

  • REPEAT-UNTIL
Esta instrucción es una variable de control, o ciclo repetitivo el cual hace una instrucción una y otra vez. hasta que se cumpla la condición establecida al final, a diferencia del while que necesita establecer la condición al inicio, y del for que lo hace dentro de un rango determinado de veces, sabiendo esto vamos a codificar lo siguiente:

-> Se necesita un programa para escribir datos de estudiantes tantas veces como uno pueda, los campos a utilizar son: NOMBRE, CODIGO, y EDAD.

Program datos_alumno;
uses
wincrt;
var
nombre:
string;
codigo:
integer;
edad:
shortint;
mas:
char;
Begin
REPEAT <----------inicio del repeat
clrscr;
writeln('programa de recoleccion de datos de alumnos');
writeln('digite nombre:: ');readln(nombre);
writeln('digite codigo :: ');readln(codigo);
writeln('digite edad:: ');read(edad);
writeln('desea guadar mas datos(S/N)?:: ');mas:=readkey;
mas:=upcase(mas);
UNTIL(mas='N'); <-------final del repeat
End.

descarga datos_alm.pas->>>http://www.mediafire.com/?ukzkykzlkzu

Ya hasta este punto se han visto los estructuras mas usados en la programacion, con respecto a la creacion de validaciones y ciclos repetitivos, y eso que nos falta una ultima estructura, para ponerlos un poc en sintonia con esta, piensen un poco en los programas y veran que la gran mayoria llevan menus de opciones para uno realizar diferentes actividades segun lo requiera. bueno, esto es l que vamos a ver a continuacion.

  • CASE
esta es nuestra estructura para realizar los menus de opciones, como no hay mucho tema que explicar sobre esto, solo les voy a poner un ejemplo de muestra y de paso, fusionaremos las demas estructuras anteriormente vistas para crear algo bonito:

-> En una compañia necesitan llevar el control de datos de su personal de manera sistematizada y se nos pide hacer un programa en el cual llenemos los siguientes campos: NOMBRE, APELLIDOS, EDAD, CARGO, TIEMPO LABORADO (en años). Asi como las siguientes instrucciones: si el empleado es menor de 25 años o si es mayor de esa edad pero no lleva mas de 2 años laborando no aspairara a ascenso, de lo contrario se le asignara un ascenso, asi como si es mayor de 50 y tenga mas de 10 años laborando se le asignara la cateogria de pensionado de la empresa. De lo contrario, no accedera a la pension.

Program empresa;
uses
wincrt;
var
nombre,apellidos,cargo:
string;
tiempo_laborado,op:
integer;
edad:
shortint;
mas:
char;
Begin
REPEAT
writeln('MENU DE OPCIONES');
writeln('1. gestionar empleados..');
writeln('2.salir del programa..');
writeln('selecione su opcion:: ');readln(op);
case (op) of
1:
Begin
REPEAT <----------inicio del repeat
clrscr;
writeln('programa de gestion de empleados de la compañia');
writeln('digite nombre del empleado:: ');readln(nombre);
writeln('digite apellidos del empleado:: ');readln(apellidos);
writeln('digite edad del empleado:: ');readln(edad);
writeln('digite cargo del empleado:: ');readln(cargo);
writeln('tiempo laborando en la empresa:: ');readln(tiempo_laborado);

{si el empleado es menor de 25 años o si es mayor de esa edad pero no lleva mas de 2 años laborando no aspairara a ascenso,de lo contrario se le asigna un ascenso}

if
(edad>=25)and(tiempo_laborado>2) then
begin
clrscr;
{si es mayor de 50 y tenga mas de 10 años laborando se le asignara la cateogria de pensionado de la empresa. De lo contrario, no accedera a la pension.}
while (tiempo_laborado>50) do
begin
clrscr;
if (edad>=50) then
begin
writeln('Usted ha sido pensionado ');
end
else
begin
writeln('Usted no ha sido pensionado ');
end;
end;
writeln('Usted ha sido ascendido ');
end
else
begin
clrscr;
writeln('Usted aun no cumple requisitos de ascenso');
end;
writeln('desea guadar mas datos(S/N)?:: ');mas:=readkey;
mas:=upcase(mas);
UNTIL (mas='N');
end;
2:
Begin
clrscr;
writeln('Ha salido del programa ');
end
else
begin
clrscr;
writeln('opcion no valida, intente de nuevo ');
end;
end;{este es el 'end' del case, necesario para cerrar el programa}
UNTIL (op=2);
End.

No hay comentarios:

Publicar un comentario