118
UNIDAD 1: PASCAL ELEMENTOS BASICOS TEMA 1: INTRODUCCION PASCAL Los nuevos sistemas de informacion son costosos en tiempos y recursos, la solucion moderna de sistemas de informacion exigen nuevas herramientas y metodologias para resolver rapida, economica y eficiente los problemas de informacion planteados por las organizaciones. Aun mas el pleno potencial del hardware no es aprovechado plenamente y existe un considerable retraso con el software y sus aplicaciones, generando lo que se conoce como “crisis del software”. En programacion tradicional, modular o estructurada un programa describe una serie de pasos a ser realizados para la solucion de un problema, es decir es un algoritmo, en particular este modelo de programacion se uso mucho para generar programas o aplicaciones en ambientes pc's y con consolas, es decir el programa se ejecutaba en una consola de msdos por ejemplo, y el programa o aplicacion se tenia que portar fisicamente a otras pc's, al final de su ciclo de vida de este modelo se habia mejorado y ya era posible que se ejecutara en alguna ventana- consola de ambientes windows, con mejor interfase como fonts, colores, background, etc. En programacion orientada a objetos ( OOP ) un programa es considerado como un sistema de objetos interactuando entre si, ambientes de desarrollo visuales facilitan aun mas la construccion de programas y solucion de problemas, porque permiten abstraer al ingeniero de software de todo el GUI (interfase grafica) del problema, que constituye mas del 60% del codigo normal de un programa, en general este ambiente permitio una mejora en la interfase del programa con el usuario de la aplicacion ya que en este caso solo se manejaban formas o ventanes llenas de componentes o controles especializados en alguna tarea especifica.

Curso de Pascal

Embed Size (px)

Citation preview

Page 1: Curso de Pascal

UNIDAD 1: PASCAL ELEMENTOS BASICOS

TEMA 1: INTRODUCCION PASCAL

Los nuevos sistemas de informacion son costosos en tiempos y recursos, la solucion moderna de sistemas de informacion exigen nuevas herramientas y metodologias para resolver rapida, economica y eficiente los problemas de informacion planteados por las organizaciones.

Aun mas el pleno potencial del hardware no es aprovechado plenamente y existe un considerable retraso con el software y sus aplicaciones, generando lo que se conoce como “crisis del software”.

En programacion tradicional, modular o estructurada un programa describe una serie de pasos a ser realizados para la solucion de un problema, es decir es un algoritmo, en particular este modelo de programacion se uso mucho para generar programas o aplicaciones en ambientes pc's y con consolas, es decir el programa se ejecutaba en una consola de msdos por ejemplo, y el programa o aplicacion se tenia que portar fisicamente a otras pc's, al final de su ciclo de vida de este modelo se habia mejorado y ya era posible que se ejecutara en alguna ventana-consola de ambientes windows, con mejor interfase como fonts, colores, background, etc.

En programacion orientada a objetos ( OOP ) un programa es considerado como un sistema de objetos interactuando entre si, ambientes de desarrollo visuales facilitan aun mas la construccion de programas y solucion de problemas, porque permiten abstraer al ingeniero de software de todo el GUI (interfase grafica) del problema, que constituye mas del 60% del codigo normal de un programa, en general este ambiente permitio una mejora en la interfase del programa con el usuario de la aplicacion ya que en este caso solo se manejaban formas o ventanes llenas de componentes o controles especializados en alguna tarea especifica.

A este modelo de programacion o construccion de programas los compiladores modernos se adaptaron rapidamente y tenemos aplicaciones fantasticas, en donde alguna forma o ventana esta llena de controles visibles e invisibles que realizan muchas tareas donde ademas de los componentes o controles que proporciona directamente el compilador cuando se instala, existen miles de controles o componentes extras en muchas partes del mundo realizados por programadores talentosos y que enriquecen el contenido de nuestros programas y aplicaciones visuales.

Al principio estas aplicaciones, se construian pensando en que se ejecutaban en una pc con ambiente grafico o en una serie de pc's proximas fisicamente sin embargo el rapido avance de las redes dentro de las empresas u organizaciones conllevan a que los fabricantes de compiladores cada vez incluyeran mas y mas controles o componentes que permitan ejecutar el programa o aplicacion simultaneamente en una red de pc's.

Sin embargo cuando se habla de redes actuales estamos hablando de la red de redes (internet) y si en redes internas o intranets el retraso en el tiempo de comunicacion entre sus pc's internas y la cantidad de informacion a trasmitir entre las mismas no es algo muy importante o inmanejable, este problema de tiempo de trasmision y cantidad de informacion, si es un factor muy

Page 2: Curso de Pascal

importante cuando se pretende construir programas o aplicaciones que deban compartirse o usarse por muchas pc's conectadas a internet, desgraciadamente como factor externo que es, no esta bajo control de la empresa o del programador.

PASCAL, es un compilador que permite usar cualquiera de los tres enfoques en la solucion de problemas de informacion que puedan y deban ser resueltos empleando el computador y el lenguaje aunque se repite este curso esta enfocado al primer modelo.

 

UNIDAD 1: PROGRAMACION PASCAL ELEMENTOS BASICOS

TEMA 2: MODELO DE SOLUCION TURBO PASCAL

En general un problema de informacion es posible entenderlo, analizarlo y descomponerlo en todos sus componentes o partes que de una u otra manera intervienen tanto en su planteamiento como en su solucion.

Una herramienta rapida que nos permite descomponer en partes un problema para su solucion, es el llamado modelo de solucion, este consiste de una pequena caja que contiene los tres elementos mas basicos en que se puede descomponer cualquier problema sencillo de informacion, estas tres partes son:

1. LA PRIMERA PARTE son todos los datos que el computador ocupa para resolver el problema, estos datos son almacenados internamente en la memoria del computador en las llamadas variables de entrada.

2. LA SEGUNDA PARTE son todas las operaciones generalmente algebraicas necesarias para solucionar el problema, generalmente esta parte del modelo es una formula (o igualdad matematica, ej. X= y + 5).

3. LA TERCERA PARTE es el resultado o solucion del problema que generalmente se obtiene de la parte de operaciones del modelo y dichos datos estan almacenados en las llamadas variables de salida.

En resumen para todo problema sencillo de informacion es necesario plantearse las siguientes preguntas:

Que datos ocupa conocer el computador para resolver el problema y en cuales variables de entrada se van a almacenar ?

Que procesos u operaciones debe realizar el computador para resolver el problema planteado.

Que informacion o variables de salida se van a desplegar en pantalla para responder al problema planteado originalmente?

Page 3: Curso de Pascal

Como nota importante no confundir los terminos datos, variables e informacion;

Datos se refiere a informacion en bruto, no procesada ni catalogada, por ejemplo “Tijuana”, “calle primera # 213”,”15 anos”, ” $2,520.00”, etc.

Variables es el nombre de una localidad o direccion interna en la memoria del computador donde se almacenan los datos, ejemplo de variables para los casos del inciso anterior, CIUDAD, DIRECCION, EDAD, SUELDO, ETC.

Informacion son datos ya procesados que resuelven un problema planteado.

EJEMPLO DE MODELO DE SOLUCION

Construir un modelo de solucion que resuelva el problema de calcular el area de un triangulo con la formula area igual a base por altura sobre dos.

Variable(s) de Entrada Proceso u Operacion Variable(s) de Salida BASE ALTURA AREA= BASE * ALTURA / 2 AREA

PROBLEMA 2.- CONVERTIR LA EDAD EN ANOS DE UNA PERSONA A MESES.

PROBLEMA 3.- CONVERTIR PESOS A DOLARES.

PROBLEMA 4.- CALCULAR EL AREA DE UN CIRCULO CON LA FORMULA

PROBLEMA 5.- EVALUAR LA FUNCION PARA CUALQUIER VALOR DE X.

Observar para el caso de constantes fijas o conocidas (PI) no se debe dar como dato de entrada su valor, en cambio colocar directamente su valor dentro de la formula, en la parte de operaciones del problema.

Pero recordar tambien que existiran problemas sencillos donde:

No se ocupan entradas o no se ocupan operaciones, pero todos ocupan salida.

Una formula grande o muy compleja puede ser mas segura y facil de resolver, si es descompuesta y resuelta en partes, juntando al final los parciales para obtener el resultado final.

Un problema puede tener mas de una solucion correcta.

El problema no esta suficientemente explicado o enunciado, entonces, estudiarlo, analizarlo y construirlo de manera generica.

Page 4: Curso de Pascal

TAREAS PROGRAMACION PASCAL

Construir los modelos de solucion de los siguientes problemas:

PROBLEMA 6.- Convertir millas a kilometros(caso normal)

PROBLEMA 7.- Convertir 125 metros a centimetros(no ocupa entradas)

PROBLEMA 8.- Se calcula que en promedio hay 4.7 nidos en cada arbol en la UABC, tambien se calcula que en cada nido existen un promedio de 5.8 pajaros, se pide calcular la cantidad total de nidos y de pajaros en los 227 arboles que existen en la UABC. (no ocupa entradas)

PROBLEMA 9.- La gorda Sra. Lopez y sus 8 hijos solo compran una vez al mes su mandado en conocido supermercado, en dicha tienda el kilogramo de frijol cuesta $8.75, el paquete de tortillas cuesta $3.55 y el frasco de cafe vale $14.25, si solo compran de estos tres productos para su mandado, calcular su gasto total. ( problema no claro)

PROBLEMA 10.- Capturar y desplegar los cinco datos mas importantes de un automovil(no ocupa operaciones)

PROBLEMA 11.- La distancia Tijuana - Ensenada es de 110 kilometros. Si un automovil la recorre a una velocidad constante de 30 millas por hora, cuanto tiempo tarda en llegar. ( 1 milla = 1.609 Km.) (dos maneras correctas de resolverlo).

PROBLEMA 12.-Evaluar la funcion para cualquier valor de x.(caso normal).

PROBLEMA 13.-Evaluar la funcion para cuando x vale 4 . (no ocupa entradas).

14.- Evaluar el factorial de cualquier numero usando la formula: n!=n!-1

15.-La distancia que recorre un auto es de 50 kms y su velocidad es de 30 millas por hora .?Cuanto tiempo tardara en llegar?

16.-Encontrar la derivada de x para cualquier valor con la formula(d/dx(x)=1)

17.-Calcular l interes que gana un capital de x pesos a una tasa de interes del 15% annual en un periodo de n anos.

18.-Que aceleracion tiene un tren que parte de tijuana a 10 km/hr y pasa por ensenada una hora despues a 50 km/hr.

19.-Calcular el numero de aulas en una escuela que tiene 10 edificios y cada edificio 3 pisos y cada piso 5 aulas, excepto un edificio que solo tiene dos pisos.

Page 5: Curso de Pascal

20.-Si en una escuela hay 30 maestros y 15 son hombres que atienden a 10 alumnos cada uno. Cuantas maestras hay?

21.-Calcular la corriente de un circuito con un voltaje de 15v y una resistencia de 6 ohms. Formula (I= V/R)

22.-Calcular la normal estandar(z) dados los datos por el usuario: X=dato, ƒÊ=media, d=desviacion. Formula (Z = X-M / d)

23.-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada .

24.-Determinar la media de 5 numeros diferentes.

25.-Determinar la velocidad v requerida para recorrer una distancia d en un tiempo t . Formula (V = d * t)

26.-Determinar la pendiente de una recta. Formula (y = m x + b)

27.-Calcular la funcion de y= x2 + 8x + 3 para cualquier x

28.-Convertir minutos a horas.

29.-Aplicar la formula general para a=1, b=2, c=3.

30.-Se desea instalar un cable de red, el cliente pide 30 pies, considerando que se venden en metros, cuantos debera comprar.

31.-Un campesino siembra trigo en un area cuadrada de 25 mts., ? cual es el largo del cerco frontal en cms.?

32.-Resolver x2 + 15x - 8 para cualquier variable (X).

33.-Convertir �‹C a �‹F.

34.-Si cada salon de la escuela tiene 40 alumnos y son 30 salones ?Cuantos alumnos son en toda la escuela?

35.-Si Juan trabaja 5 dias a la semana y descansa 2 ?Cuantos dias trabajo en 4 anos?

36.-Si en una oficina se procesan 20 facturas cada 10 minutos cuantas se procesaran si se trabajan 5 horas?

37.-Si una empresa tiene _ de activo y un pasivo de _ ?Cual es su capital?. Formula (C = A-P)

38.-Calcule el voltaje de un circuito dada una intensidad I y una resistencia R. Formula (V=IR)

Page 6: Curso de Pascal

39.-Calcule la frecuencia de una onda que circula con un tiempo t. Formula (F=1/t)

40.-Calcule la potencia de un circuito con un voltaje V y una intensidad I. Formula (f = VI)

41.-Calcule el total que tendra que pagar una persona que va al cine dependiendo del no. de boletos a comprar y el precio.

42.-Calcule las anualidades que tendra que pagar una persona que pidio un prestamo. Dependiendo del tiempo que el elija y el interes por ano. Formula (Anualidad=(Prestamo/Tiempo)+interes)

43.-Determinar cuanto ganara una persona en base a la horas trabajadas. Tomando en cuenta el pago por hora.

44.-Convertir horas a segundos.

45.-Calcular la fuerza. Formula (fuerza = trabajo / tiempo)

UNIDAD 1: PROGRAMACION PASCAL ELEMENTOS BASICOS

TEMA 3: PASCAL PROGRAMACION VARIABLES

Identificadores son conjuntos de letras y/o numeros que se utilizan para simbolizar todos los elementos que en un programa, son definibles por el usuario (programador o ingeniero de software) del mismo, como son las variables donde se almacenan datos, funciones( pequenos modulos con codigo), etiquetas, clases, objetos, etc.

En PASCAL un identificador es una palabra compuesta de letras y/o numeros de hasta 32 caracteres significativos, empezando siempre con una letra.

Una variable se define como un identificador que se utiliza para almacenar todos los datos generados durante la ejecucion de un programa.

Existen ciertas reglas en cuanto a variables:

Claras y con referencia directa al problema.

No espacios en blanco, ni simbolos extranos en ellas.

Se pueden usar abreviaturas, pero solo de caracter general.

No deben ser palabras reservadas del lenguaje.

Ejemplos de buenas variables:

Nombre, Edad, SdoDiario, IngMensual, Perimetro, Calif1, etc.

Page 7: Curso de Pascal

UNIDAD 1: PASCAL ELEMENTOS BASICOS

TEMA 4: TIPOS DE DATOS TURBO PASCAL

A toda variable que se use en un programa, se le debe asociar (generalmente al principio del programa) un tipo de dato especifico.

Un tipo de dato define todo el posible rango de valores que una variable puede tomar al momento de ejecucion del programa y a lo largo de toda la vida util del propio programa.

Los tipos de datos mas comunes en pascal son:

TIPO DATO RANGO char Caracter ASCII byte 0 a 255 integer -32,768 a 32,767 Real 1E-38 a 1E+38 Boolean TRUE o FALSE shortint -128 a 127 word 0 a 65535 longint -2147483648 a 214748364 String Cadena 255 caracteres

Para el caso de strings se prodra usar cualquiera de los dos siguientes formatos:

Var

Nombre:string;

Carrera:string[30];

Para el primer caso pascal reserva 255 bytes de memoria, para el caso de carrera pscal solo reservara 30 bytes, es obvio cual de los dos casos es mas eficiente.

 

UNIDAD 1: PROGRAMACION PASCAL ELEMENTOS BASICOS

TEMA 5: OPERADORES ARITMETICOS PASCAL PROGRAMACION

Un operador es un simbolo especial que indica al compilador que debe efectuar una operacion matematica o logica.

Pascal reconoce los siguientes operadores aritmeticos:

Page 8: Curso de Pascal

Operador Operacion + SUMA - RESTA * MULTIPLICACION / DIVISION Div DIVISION ENTERA Mod MODULO O RESIDUO

Como nota importante a recordar siempre;

Si se usa el operador DIV en problemas de division entre enteros, pascal trunca la parte residual, es decir;

// area de declaracion de variables

real a;

// area de operaciones

a := 10 div 4;

// area de despliegue de resultados

desplegar a; s --- En pantalla sale ( 2.000000 )

El problema no es el tipo real, sino que por definicion de la division entre enteros pascal trunca la parte residual.

El operador (%) devuelve el residuo entero de una division entre enteros, ejemplo;

// area de declaracion

integer alfa;

// area de operaciones

alfa := 23 mod 4;

// area de despliegue

desplegar alfa; <- El resultado en pantalla es 3

Otro ejemplo;

alfa := 108 mod 10;

Page 9: Curso de Pascal

desplegar alfa; ← El resultado en pantalla es 8

Para resolver los problemas de potencias y raices, se usan ciertas instrucciones especiales que proporciona el lenguaje, llamadas funciones matematicas, en pascal existe todo un conjunto de instrucciones o funciones matematicas.

Y ademas deberan recordar sus leyes de logaritmos y de potencias:

Con el uso de los logaritmos, los procesos de multiplicacion, division, elevacion a potencias y extraccion de raices entre numeros reales pueden simplificarse de la manera siguiente.

1.- El logaritmo de un producto es igual a la suma de los logaritmos de los factores.

Log ( a . m) = log a + log m

2.- El logaritmo de un cociente es igual a la diferencia de los logaritmos de los terminos

Log(a:m) = log a - log m

3.-El logaritmo de una potencia es igual al exponente por el logaritmo de la base.

Log am = m * Log a

4.- El logaritmo de una raiz es igual al logaritmo del radicando dividido por el indice de la raiz

log = m/n log a

Las dos funciones que se usan para resolver este problema son:

Ln(x) ←- Nos regresa el logaritmo natural del numero x.

EXP(x) ←- nos regresa eX es decir el antilogaritmo de un numero.

Otra vez si se ocupa resolver la multiplicacion de 5 * 20, la regla de logaritmos nos dice que el resultado es = log(5) + log(20) aunque en pascal se usa Ln(5) + Ln(20) pro en estos casos lo que se tiene de resultado no es 100 sino el logaritmo de 100, porque estamos sumando los logaritmos, es decir al resultado de la suma de logaritmos le tenemos que sacar su antilogaritmo, para conocer el resultado final(100) de la mulptiplicacion.

Ejemplo en pascal

Real alfa

Page 10: Curso de Pascal

Alfa := Exp( Ln(5) + Ln(20) );

Como se observa primero se calculan los logaritmos de 5 y de veinte con (Ln), luego los sumamos y a este resultado le extraemos el antilogaritmo con (EXP) que seria el resultado final.

Otro ejemplo si se tiene la potencia 53 entonces aplicando la regla de logaritmos el programa quedaria:

Real alfa

Alfa := EXP(5 * Ln(3));

Y si se tiene que obtener la raiz de 9 en programacion pascal sera:

Alfa := EXP( 1/2 * Ln(9));

UNIDAD 1: PROGRAMACION PASCAL ELEMENTOS BASICOS

TEMA 6: JERARQUIA DE OPERACIONES TURBO PASCAL PROGRAMACION

El problema de no tomar en cuenta la jerarquia de los operadores al plantear y resolver una operacion casi siempre conduce a resultados muchas veces equivocados como estos:

Ejemplos:

2+ 3* 4 := 20(incorrecto)

:= 14 (correcto)

b) si calif1=60 y calif2=80 y si entonces en programa se usa

promedio := calif1 + calif2/2

la pc daria como resultado promedio = 100

Recordar siempre, que antes de plantear una formula en un programa se debera evaluar contra el siguiente:

Orden de operaciones:

1.- Parentesis

2.- Potencias y raices

Page 11: Curso de Pascal

3.- Multiplicaciones y divisiones

4.- Sumas y restas

5.- Dos o mas de la misma jerarquia u orden, entonces resolver de izquierda a derecha

Nota: Si se quiere alterar el orden normal de operaciones, entonces usar parentesis.

Nota: Tampoco es bueno usar parentesis de mas en una operacion, esto solo indica que no se evaluo bien la formula, como en el siguiente ejemplo;

aqui los parentesis estan de mas, porque por orden de operaciones, multiplicacion y division tienen la misma jerarquia y entonces se resuelven de izquierda a derecha, en otras palabras ni que falten parentesis ni que sobren parentesis.

ou are here: start » pascal:start » pascal:compilador

UNIDAD 1: PASCAL ELEMENTOS BASICOS

TEMA 7: COMPILADOR Turbo Pascal

Para poder construir programas o aplicaciones se usara el compilador Turbo Pascal que se encuentra en la siguiente direccion de internet.

http://community.borland.com/museum/

El compilador tiene el nombre de:

Antique Software: Turbo Pascal V5.5

Bajarlo, descomprimirlo en un folder o subdirectorio temporal, dentro se encontraran dos folders llamados disk1, disk2, copiar el contenido de disk2 al folder disk1, luego correr un programa llamado install, esto creara un nuevo folder en el disco duro llamado TP, que ya contendra nuestro compilador a usar.

Para correr el compilador y el editor de programas que trae integrado, solo abrir una sesion de msdos prompt en la barra de start de windows y luego navegar al directorio tP con la orden:

C:\CD TP

Luego cargar el compilador con la orden:

Page 12: Curso de Pascal

C:\TP\ TURBO

Debera mostrarse la siguiente pantalla con el editor:

Recordar que dentro de este compilador no funciona el raton o mouse, todas las opciones se cargan con la tecla ALT y la letra en rojo correspondiente, tambien se podran usar las teclas de flechas del teclado para navegar por las opciones de los menus.

 

UNIDAD 1: PASCAL ELEMENTOS BASICOS

TEMA 8: PROGRAMACION PASCAL

La estructura de un programa en pascal es;

PROGRAM NOMPROG;

CONST

VAR

Page 13: Curso de Pascal

BEGIN

INSTRUCCIONES;

END.

EJEMPLO Prog1.pas

program prog1;

var

area,base,altura :real;

begin

(* area de captura *)

write('Dame Base :');

readln(base);

write('Dame Altura:');

readln(altura);

(* area de operaciones *)

area := base * altura / 2;

(* area de despliegue *)

writeln('El Area es =',area:0:2);

readln;

end.

Corrida:

Reglas para escribir un programa en PASCAL :

Page 14: Curso de Pascal

a) Se sigue la estructura del programa, escrita al principio del tema.

b) Primero declarar la variables.

c) El cuerpo de instrucciones del programa debera encerrarse entre el begin —- end.

d) Todas las instrucciones ejecutables terminan con punto y coma.

e) Los comentarios se ponen encerrados entre (* comentario *)

f La declaracion de variables ocupa la primera posicion.

g) Se utiliza una instruccion llamada write() o writeln() para desplegar mensajes u otros elementos en el dispositivo de salida standar(pantalla).

h.- Se utiliza una instruccion llamada read() o readln() para capturar datos desde el dispositivo de entrada standar (teclado).

i.- Se usa una instruccion readln; al final para detener la pantalla hasta que el usuario pulse la tecla “any key” para continuar o el programa responde tan aprisa que no se alcanza a ver y se regresa al editor.

Ya creadas y cargadas las variables normales se efectuan los procesos u operaciones normales con ellas.

Este programa se debera crear usando el editor del turbo pascal y grabarlo como prog1.pas en el folder de su preferencia, para ejecutarlo usar la opcion RUN del propio editor.

RECORDAR nunca grabarlo con un nombre que contenga mas de 8 letras o caracteres, recordar que estamos hablando de los tiempos de msdos

INSTRUCCION WRITE() y WRITELN()

Es una de las mas poderosas herramientas de despliegue de datos que posee el lenguaje.

Su formato completo es:

WRITE(lista de parametros);

* Donde lista de parametros pueden ser:

a).- Mensaje o texto

b).- variables

c).- Combinacion de los dos

Page 15: Curso de Pascal

ejemplos;

write('el area es')'

write('el area es=',area);

write('base=',base,'altura='altura');

Ademas cada argumento ya sea texto o variable puede incluir el sguiente modificador;

Texto o variable:tamanocampo:tamanodecimal

Ejemplo

Write('mama':10); ←- se desplegara centrado en los 10 primeros espacios de los 80 espacios que tiene una pantalla de msdos.

Si el texto es mayor que el tamano asignado, TP ignora el tamano asignado y despliega todo el texto.

Ejemplo

Pi:real;

Begin

Pi:=3.1416;

Write(pi:10:2);

End.

Estamos pidiendo desplegar todo el numero en 10 espacios, en este caso TP centra y redondea al entero mas cercano, es decir la slida es 3.14.

La diferencia entre WRITE y WRITELN, es que el segundo incluye un cambio de renglon al final del despligue.

RECORDAR que en este compilador, cuando esten capturando una string y luego un dato numerico con read(), el compilador se va a saltar la captura del dato numerico, esto es un bug del compilador, para resolver este problema, solo agregar uno o varios readln; sin nada despues del read de captura de string o mejor aun solo usar readln() para captura.

INSTRUCCION READ() Y READLN();

Page 16: Curso de Pascal

Esta instruccion permite que el dato entrado desde el teclado sea capturado y almacenado en la variable correspondiente su formato completo es:

read(lista de variables);

ejemplo

read(base,altura,nombre,edad);

Aqui se pretende capturar cuatro variables en una sola pasada.

Lo mas sensato es usar un read(variable) por cada variable que se ocupe capturar en el programa.

Recordar tambien que en el caso de captura de reales es preferible agregar un cero (0) para decimales que no lo contengan, es decir no capturar .234 sino 0.234

La diferencia entre read() y readln(), es que el primero deja el cursor en el renglon de captura y readln() lo avanza un renglon.

Tareas PROGRAMACION PASCAL

CONSTRUIR 15 PROGRAMAS CUALESQUIERA DE LOS EJEMPLOS QUE ESTAN EL TEMA DEL MODELO DE SOLUCION.

UNIDAD 1: PROGRAMACION PASCAL ELEMENTOS BASICOS

TEMA 9: FORMATO PANTALLA PROGRAMACION PASCAL

Uses crt; Libreria a usar

Esta libreria se pone despues del program prog; y antes de CONST o VAR o BEGIN dependiendo del problema.

1.- ClrScr(); Limpia pantalla

ESTA INSTRUCCION NO OCUPA ACLARACION

2.- Gotoy(#de col,#de ren); posiciona cursor en lugar indicado

RECORDAR QUE UNA CONSOLA NORMAL TIENE 24 RENGLONES Y 80 COLUMNAS

En particular poner un gotoxy(); antes de cada write() en el programa.

Page 17: Curso de Pascal

Recordar ademas que en el folder TP esta tambien el programa THELP que les da un miniprograma residente con ayuda para pascal.

Tareas PROGRAMACION PASCAL

REARREGLAR LOS PROGRAMAS CONSTRUIDOS PARA SU MEJOR PRESENTACION.

 

PALABRAS RESERVADAS PASCAL

Absolute And Array Asm Begin break case const constructor continue destructor div do downto else end file for function goto if implementation in inherited inline interface label mod nil not object of on operator or packed procedure program record repeat self set shr shl string then to type unit until uses var while with xor  

UNIDAD 2: PROGRAMACION PASCAL CONTROL DE PROGRAMA

TEMA 1: PASCAL INTRODUCCION PROGRAMACION

Instrucciones de control de programa permiten alterar la secuencia normal de ejecucion de un programa.

Estas instrucciones se dividen en tres grandes categorias:

Instrucciones Condicionales que en pascal se implementan con las instrucciones if y case.

Instrucciones de ciclos con, for, while, repeat until.

Instruccion de salto incondicional goto.

Page 18: Curso de Pascal

UNIDAD 2: PROGRAMACION PASCAL CONTROL DE PROGRAMA

TEMA 2: PROGRAMACION PASCAL INSTRUCCIONES CONDICIONALES

Una de las mas poderosas caracteristicas de cualquier computador es la capacidad que tiene de tomar decisiones.

Es decir al comparar dos alternativas diferentes el computador puede tomar una decision, basandose en la evaluacion que hace de alguna condicion.

ejemplo de instrucciones condicionales ;

a)

si sueldo > 3000

desplegar “rico”

si no

desplegar “pobre”

fin-si

b)

si sexo = 'm'

imprime mujer

si no

imprime hombre

fin-si

De los ejemplos observar que los caminos por el computador dependeran de la evaluacion que el computador hace con y de la condicion.

Todo lenguaje de programacion debe tener instrucciones que permitan formar condiciones e instrucciones que pueden evaluar esas condiciones.

El formato general de una instruccion condicional es:

Page 19: Curso de Pascal

Como se observa son cuatro partes bien diferenciadas entre si;

La propia instruccion condicional en si La condicion El grupo cierto de instrucciones El grupo falso de instrucciones

Cuando el computador evalua una condicion, el resultado de esa evaluacion solo es evaluado de dos maneras o la condicion es CIERTA o la condicion es FALSA.

Esto dependera del valor que tenga asignado o que se haya capturado para la variable que esta en la condicion, por ejemplo si se capturo 6000 en sueldo en el ejemplo a), entonces el computador indicaria que la condicion es CIERTA, pero en otro caso, si a la variable sueldo primero se le asigno un valor de 250 entonces el computador indicaria que la condicion es FALSA.

Ya dependiendo del resultado de la evaluacion, el computador ejecuta las instrucciones contenidas en la parte CIERTA o en la parte FALSA de la condicion.

Empezaremos el analisis por la CONDICION.

UNIDAD 2: PROGRAMACION PASCAL CONTROL DE PROGRAMA

TEMA 3: CONDICIONES SIMPLE PROGRAMACION PASCAL

En general todas las condiciones simples se forman con:

variables operadores relacionales constante o var.

sexo = 'm'

sueldo > 300000

Page 20: Curso de Pascal

Una condicion simple se define como el conjunto de variables y/o constantes unidas por los llamados operadores relacionales.

Los operadores relacionales que reconoce el lenguaje pascal son:

Operador Significado = Igual que > Mayor que < Menor que >= Mayor o igual que ⇐ Menor o igual que <> No es igual que o es diferente que IN Pertenece A

NOTA IMPORTANTE, Para el caso de objetos de tipo string, los operadores mencionados arriba funcionan, es decir es valido usar la siguiente condicion:

string carrera;

if (carrera=“informatica) etc, etc, etc,

UNIDAD 2: PROGRAMACION PASCAL CONTROL DE PROGRAMA

TEMA 4: INSTRUCCION IF PROGRAMACION PASCAL

Es la instruccion condicional mas usada en los diversos lenguajes de programacion, su formato completo y de trabajo en pascal es :

cargar o asignar la variable de condicion;

if condicion Then

begin

grupo cierto de instrucciones;

end

else

brgin

grupo falso de instrucciones;

Page 21: Curso de Pascal

end;

Primus.- Observar donde van y donde no van los puntos y comas;

Secundus.- Si un if no ocupa un grupo falso de instrucciones, entonces no se pone el else y el end antes del else si terminaria con punto y coma.

PROG2.pas

program prog2;

uses crt;

var

edad:integer;

ciudad,nombre:string;

begin

clrscr;

(* area captura datos *)

gotoxy(20,5);write('dame nombre :');

readln(nombre);

gotoxy(20,6);write('dame ciudad :');

readln(ciudad);

gotoxy(20,7);write('dame edad :');

readln(edad);

(* area de condicion *)

if ciudad = 'tijuana' then

begin

edad:=edad*12;

gotoxy(20,10);write(nombre,' tienes ',edad,' meses');

end

else

begin

gotoxy(20,10);write('no cumple la condicion');

Page 22: Curso de Pascal

end;

readln; readln;

end.

CORRIDA:

TAREAS PROGRAMACION PASCAL

1.- Capturar un numero cualesquiera e informar si es o no es mayor de 100

2.- Capturar un numero entero cualesquiera e informar si es o no es multiplo de 4 ( recordar el operador mod, analizado en el tema de operadores aritmeticos).

3.- Capturar los cinco datos mas importantes de un Empleado, incluyendo el sueldo diario y los dias trabajados , desplegarle su cheque semanal solo si gano mas de $500.00 en la semana, en caso contrario desplegarle un bono de despensa semanal de $150.00 .

4.- Capturar los datos mas importantes de un estudiante incluyendo tres calificaciones, desplegar una pantalla con una boleta de calificaciones si el estudiante es de la carrera de medicina, en caso contrario otra pantalla despliega un oficio citando a los padres del estudiante a una platica amistosa con los maestros de la escuela.

5.- Capturar los datos mas importantes de un producto cualesquiera, incluyendo cantidad, precio, etc., desplegar una orden de compra, solo si el producto es de origen nacional, en caso contrario no hacer nada.

UNIDAD 2: PROGRAMACION PASCAL CONTROL DE PROGRAMA

TEMA 5: CONDICIONES COMPUESTAS PROGRAMACION PASCAL

Page 23: Curso de Pascal

En muchas ocasiones es necesario presentar mas de una condicion para su evaluacion al computador.

Por ejemplo que el computador muestre la boleta de un alumno, si este estudia la carrera de medicina y su promedio de calificaciones es mayor de 70.

Una condicion compuesta se define como dos o mas condiciones simples unidas por los llamados operadores logicos.

Los operadores logicos que PASCAL reconoce son:

OPERADOR SIGNIFICADO AND “Y” LOGICO OR “O” LOGICO NOT “NO” NEGACION

Ejemplo:

if (sueldo > 700 and sexo='m' then etc, etc, etc.

Notas:

Observar que cada condicion simple lleva sus propios parentesis.

Para que el computador evalue como CIERTA una condicion compuesta que contiene el operador logico “and”, las dos condiciones simples deben ser ciertas.

Para que el computador evalue como CIERTA una condicion compuesta que contiene el operador logico “or”, basta con que una de las condiciones simples sea cierta.

La cantidad total de casos posibles cuando se unen dos o mas condiciones simples esta dada por

la relacion donde n = cantidad de condiciones, la primera mitad de ellos ciertos y la segunda mitad falsos.

Ejemplo, si formamos una condiciona compuesta con dos condiciones simples y el operador

logico “y”, la cantidad total de casos posibles serian y se puede construir la siguiente tabla de verdad.

Tabla de verdad con “y”

IRA COND SIMPLE 2DA COND SIMPLE EVALUACION C C C C F F F C F F F F

Page 24: Curso de Pascal

La evaluacion final se obtiene usando la regla anteriormente descrita para una condicion compuesta que contiene el operador “and”.

Esta tabla significa lo siguiente;

1.- Cualquiera que san la cantidad de datos procesados, siempre caera en uno de estos cuatro posibles casos.

La tabla de verdad para una condicion compuesta con “or” es la siguiente;

IRA COND SIMPLE 2DA COND SIMPLE EVALUACION C C C C F C F C C F F F

Como se observa, una condicion compuesta con “O”, es menos restrictiva, o el 75% de los casos terminarian ejecutando el grupo CIERTO de instrucciones de la instruccion condicional.

Construir una tabla de verdad para una condicion compuesta de tres o mas condiciones simples, es tambien tarea sencilla, solo recordar que;

1.- La cantidad posible de casos posibles es la mitad empiezan con cierto y la otra mitad empiezan con falso.

2.- Para evaluar esta condicion triple, primero se evaluan las dos primeras incluyendo su operador bajo las reglas ya descritas y luego se evalua el resultado parcial contra la ultima condicion y el ultimo operador para obtener la evaluacion final.

Ejemplo una condicion compuesta de tres condiciones simples, donde el primer operador logico es el “y” y el segundo operador logico es el “O”, daria la siguiente tabla de verdad.

Ira cond 2da cond Eval 1a Y 2a 3ra cond Eval eval O 3ra C C C C C C C C F C C F F C C C F F F F F C F C C F C F F F F F F C C F F F F F

TAREAS PROGRAMACION PASCAL

Page 25: Curso de Pascal

1.- Construir un programa que capture un numero cualesquiera e informe si es o no es mayor de 50 y multiplo de tres. ( solo escribir el mensaje de respuesta de manera muy clara y esto resuelve el problema )

2.- Construir un programa que indique si un numero es un par positivo.

3.- Capturar los datos de un producto incluyendo su cantidad en existencia, desplegar una orden de compra si la cantidad en existencia del producto es menor que el punto de reorden o si el origen del producto es nacional.

4.- Construir un programa que capture los datos de un empleado, desplegar en una pagina su cheque semanal si gana mas de $500.00 y si esta en el departamento de produccion, en caso contrario desplegarle en otra pagina un bono de despensa del 25% de su sueldo semanal.

UNIDAD 2: PASCAL CONTROL DE PROGRAMA

TEMA 6: INSTRUCCION CASE TURBO PASCAL

Tambien existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez, en estos casos o se usa una condicion compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instruccion CASE.

La instruccion CASE es una instruccion de decision multiple, donde el compilador prueba o busca el valor contenido en una variable contra una lista de constantes ints o chars, cuando el computador encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este ultimo es opcional.

El formato de esta instruccion es el siguiente;

capturar o asignar variable de condicion;

CASE var int o char OF

const1: begin instruccion(es); end;

const2: begin instruccion(es); end;

const3: begin instruccion(es); end;

else begin instruccion(es); end

END;

OBSERVAR donde se usan y donde no se usan los ( : ) y los ( ; )

Page 26: Curso de Pascal

Mejor un ejemplo practico:

Prog3.pas

program prog3;

uses crt;

var

letra:char;

begin

clrscr;

gotoxy(20,5);write('dame una letra :');

readln(letra);

(* empieza case *)

case letra of

'a': begin gotoxy(50,5); write('aguila'); readln; end;

'b','B': begin gotoxy(50,5); write('becerro'); readln; end;

'c': begin gotoxy(50,5); write('caballo ');write('camello'); readln; end;

else begin gotoxy(50,5);write('no hay');readln; end

end;

end.

corrida:

Notas:

Page 27: Curso de Pascal

1.- Solo se puede usar como variable de condicion una variable entera o variable char.

2.- Las constantes que estamos buscando y comparando son de tipo char, por eso se deben encerrar entre apostrofes ( ').

3.- Si se quiere resolver el problema de mayusculas o minusculas en el teclado, observar que solo se separan con una coma ( , )

6.- Recordar que case solo trabaja con constantes y variables de tipo char o int, en este ultimo caso solo usar una variable de opcion de tipo entero y en los case poner la constante numerica sin apostrofes.

En particular, instrucciones de tipo case se usan para construir programas de seleccion de menus, donde al usuario se le plantean dos o tres problemas distintos y el propio usuario seleccionaba cual de ellos se ejecuta

TAREAS PROGRAMACION PASCAL

1.- Construir una programa que contenga el siguiente menu

1. conversion de pesos a dolares2. conversion de libras a kilogramos3. conversion de kilometros a millas4. fin de menu

seleccionar opcion [ ]

2.- Construir un programa que capture un deporte y despliegue dos implementos deportivos apropiados.

3.- Evaluar cualquier funcion vista para cuando x = 3, -4, 5

 

UNIDAD 2: PASCAL CONTROL DE PROGRAMA

TEMA 7: CICLO FOR PASCAL

Instrucciones para ciclos resuelven el problema de repetir todo el programa o cierta parte del programa mas de una vez.

Este ciclo es uno de los mas usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instruccion simple o compuesta.

Su formato general es:

Page 28: Curso de Pascal

for VARCONTROL := ValorInicial to ValorFinal do

begin instrucciones; end;

EJEMPLO

Codigo prog4.pas

program prog4;

uses crt;

var

x:integer;

begin

clrscr;

for x:= 1 to 5 do

begin

gotoxy(10,4+x);write(x,' tecnologico');

end;

readln;

end.

corrida:

En pascal solo puede haber incrementos de uno en uno, lo mas que existen son decrementos de uno en uno, usando la instruccion:

Page 29: Curso de Pascal

for VarControl := ValIniGde DOWNTO ValFinChico do

begin instruccion(es); end;

Se pueden usar los siguientes casos;

a) valor incial diferente de uno ejemplo for x:= 5 to 8 do etc

b) valor inicial negativo for x:= -5 to 3 do etc

c) para incrementos diferentes de uno en uno , usar dentro del begin end un acumulador del tipo x := x + 5 pero recordar que el ultimo valor del ciclo corresponda con el valor de parada o la maquina se les cicla y se van divertir mucho cuando esto les pase.

d) para decrementos diferentes de uno en uno usar una tecnica similar x:= x- 20 dentro de un ciclo for DOWNTO, pero recordar la nota anterior.

TAREAS PROGRAMACION PASCAL :

1.- CONSTRUIR UN PROGRAMA QUE DESPLIEGUE LOS NUMEROS DEL 20 AL 30.

2.- DESPLEGAR LOS ENTEROS ENTRE 50 Y 30 ACOMPANADOS DE SU POTENCIA CUADRADA Y RAIZ CUBICA RESPECTIVA(revisar el tema de operadores aritmeticos).

3.- DESPLEGAR LOS MULTIPLOS DE 5, ENTRE 10 Y 50, ACOMPANADOS DE SU FACTORIAL (este algortimo lo tienen que buscar en el www) Y LOGARITMO RESPECTIVO(revisar el tema de operadores aritmeticos tambien).

4.- DESPLEGAR LA TABLA DE MULTIPLICAR QUE EL USUARIO INDIQUE.

5.- EVALUAR LA FUNCION Y=5X^2 + 3X + 8 CUANDO X–> -3…10 (RANGO DE -3 HASTA 10)

UNIDAD 2: PROGRAMACION PASCAL CONTROL DE PROGRAMA

TEMA 8: CICLO WHILE PROGRAMACION PASCAL

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condicion permanezca como verdadera en el momento en que la condicion se convierte en falsa el ciclo termina.

while BooleanExpression do

statement;

Su formato general es :

Page 30: Curso de Pascal

cargar o inicializar variable de condicion;

while condicion do

begin

grupo cierto de instrucciones;

instruccion(es) para salir del ciclo;

end;

Un error muy comun con el while, es poner un punto y coma(;) despues de la (condicion) ejemplo while condicion do ; ←-esto es y causa un error.

Prog5.pas

program prog5;

uses crt;

var

x:integer;

begin

clrscr;

x:=1;

while x <= 5 do

begin

gotoxy(10,4+x);write(x,' pato');

x:=x+1;

end;

readln;

end.

Corrida:

Page 31: Curso de Pascal

While puede llevar dos condiciones en este caso inicializar 2 variables de condicion y cuidar que existan 2 de rompimiento o terminacion de ciclo.

El grupo cierto de instrucciones puede ser una sola instruccion o todo un grupo de instrucciones.

La condicion puede ser simple o compuesta.

Los casos generales de for tambien se aplican a while.

A este ciclo tambien se le conoce tambien como ciclo de condicion de entrada o prueba por arriba porque este ciclo evalua primero la condicion y posteriormente ejecuta las instrucciones.

TAREAS PROGRAMACION PASCAL

1.- DESPLEGAR ENTEROS ENTRE 50 Y 80

2.- DESPLEGAR MULTIPLOS DE 4 ENTRE 60 Y 20 ACOMPANADOS DE SU LOGARITMOS RESPECTIVOS.

3.- CONSTRUIR LA TABLA DE DIVIDIR QUE EL USUARIO INDIQUE.

4.- Evaluar una funcion cualesquiera para el rango de valores de x de -3 a +5

UNIDAD 2: PROGRAMACION PASCAL INSTRUCCIONES DE CONTROL DE PROGRAMA

TEMA 9: CICLO REPEAT UNTIL PASCAL

Su diferencia basica con el ciclo while es que la prueba de condicion es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una vez porque primero ejecuta las instrucciones y al final evalua la condicion;

Tambien se le conoce por esta razon como ciclo de condicion de salida.

Page 32: Curso de Pascal

Su formato general es :

cargar o inicializar variable de condicion;

repeat

begin

instrucciones;

end

until condicion;

OBSERVAR QUE NO LLEVA PUNTO Y COMA (;) ANTES DEL UNTIL

Prog6.PAS

program prog6;

uses crt;

var

x:integer;

begin

clrscr;

x:=1;

REPEAT

BEGIN

gotoxy(10,4+x);

write(x,' CONEJITO BLANCO HIMALAYA');

x:=x+1;

END

UNTIL x = 5;

readln;

end.

Page 33: Curso de Pascal

Corrida prog

Observar que nada mas se ve hasta x=4, pero en realidad la x llego hasta el 5, cuando termino lo que esta desplegandose en pantalla la x se incremento a 5 y luego se probo la condicion y como era CIERTA o VERDADERA entonces acabo el ciclo.

Lo del conejito blanco del himalaya esta explicacado aqui TUTORIAL HTML

Otra diferencia basica con el ciclo while es que, aunque la condicion sea falsa desde un principio el cuerpo de instrucciones se ejecutara por lo menos una vez.

PROGRAMACION TAREAS PASCAL

1.- tres del for

2.- tres del while

UNIDAD 2: PASCAL INSTRUCCIONES DE CONTROL DE PROGRAMA

TEMA 10: CONCLUSIONES ACERCA DE CICLOS TURBO PASCAL

El problema de dado un problema cualesquiera cual ciclo se debe usar se resuelve con:

1. Si se conoce la cantidad exacta de veces que se quiere que se ejecute el ciclo o si el programa de alguna manera puede calcularla usar for.

2. Si se desconoce la cantidad de veces a repetir el ciclo o se quiere mayor control sobre la salida o terminacion del mismo entonces usar while.

3. Si se quiere que al menos una vez se ejecute el ciclo entonces usar repeat until.

 

Page 34: Curso de Pascal

UNIDAD 3: PASCAL ARREGLOS

TEMA 1: INTRODUCCION PASCAL

Uno de los problemas mas comunes en los diversos sistemas de informacion es el tratamiento o procesamiento de una gran volumen de datos o de informacion.

Las variables manejados hasta ahora no pueden ayudar a resolver este problema.

Las variables usadas hasta ahora reciben propiamente el nombre de variables escalares, porque solo permiten almacenar o procesar un dato a la vez.

No confundir esto con el tipo de dato o rango de datos que una variable tiene la capacidad de almacenar.

Por ejemplo si se quiere almacenar nombre y edad de 15 personas con el metodo tradicional se ocuparan 30 variables y esto solo es nombre y edad de 15 personas, agreguen mas datos y mas personas y ya es tiempo de empezar a analizar otro tipo de variables.

Se ocupan entonces variables que sean capaces de almacenar y manipular conjuntos de datos a la vez.

Variables de tipo arreglo si permiten almacenar y procesar conjuntos de datos del mismo tipo a la vez.

Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y procesa (captura, operacion, despliegue ) usando el nombre del arreglo respectivo y un subindice indicando la posicion relativa del elemento con respecto a los demas elementos del arreglo

NOMBRES

Juan –>nombres[1] Pedro → nombres[2]) Rosa –> nombres[3] Jose –> nombres[4]

Sin embargo sus problemas son similares a los de variables normales es decir hay que declararlos, capturarlos, hacer operaciones con ellos, desplegarlos, compararlos, etc.

 

UNIDAD 3: PASCAL ARREGLOS

TEMA 2: ARREGLOS EN PASCAL

Page 35: Curso de Pascal

En programacion tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos:

a) LISTAS

EDAD

18 34 22 15

B) TABLAS

CIA ACME

ING MENS VTAS

(MILES DE $)

…….ENE FEB MAR ABR MAY

SUC A 10 20 30 40 SUC B 50 60 70 80 SUC D 90 100 110 120

Como se observa la diferencia principal entre un arreglo tipo lista y unarreglo tipo tabla son las cantidades de columnas que contienen.

NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLES ADMINISTRATIVOS.

EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS SON PRECISAMENTE LOS DEL ALGEBRA MATRICIAL.

UNIDAD 3: PROGRAMACION PASCAL ARREGLOS

Page 36: Curso de Pascal

TEMA 3: PROGRAMACION PASCAL ARREGLO TIPO LISTA (1)

Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de datos del mismo tipo organizados en una sola columna y uno o mas renglones.

Tambien reciben el nombre de vectores en algebra o arreglos unidimensionales en programacion.

Los procesos normales con una lista o con sus elementos incluyen declarar toda la lista, capturar sus elementos, desplegarlos, realizar operaciones con ellos, desplegarlos, etc.

Para declarar una lista se usa el siguiente formato;

VAR nomlista = ARRAY [1..n] of tipodato;

ejemplos;

VAR

edad = array[1..5] of integer;

sueldos = array[1..10] of real;

carreras = arrar[1.4] of string[20]; ←- OBSERVAR QUE PARA STRINGS SE TIENE QUE AGREGAR LA CANTIDAD DE CARACTERES A ALMACENAR

Para inicializar una lista se tendra que cargar uno a uno cada elemento de la lista ejemplo;

Edad[1]:=20;edad[2]:=23;edad[3]:=[44]; etc etc etcte formato;

VAR nomlista = ARRAY [1..n] of tipodato;

ejemplos;

VAR

edad = array[1..5] of integer;

sueldos = array[1..10] of real;

carreras = arrar[1.4] of string[20]; ← OBSERVAR QUE PARA STRINGS SE TIENE QUE AGREGAR LA CANTIDAD DE CARACTERES A ALMACENAR

Para inicializar una lista se tendra que cargar uno a uno cada elemento de la lista ejemplo;

Edad[1]:=20;edad[2]:=23;edad[3]:=[44]; etc etc etc

Page 37: Curso de Pascal

UNIDAD 3: PASCAL ARREGLOS

TEMA 4: TURBO PASCAL LISTAS (2)

Prog7.PAS

program prog7;

USES crt;

VAR

edad : ARRAY[1..3] of integer;

nombre : ARRAY[1..3] of string[20];

ren:integer;

begin

clrscr;

(* captura de arreglos *)

for ren := 1 to 3 do

begin

gotoxy(10,ren*2+2);write('edad ',ren,':'); readln(edad[ren]);

gotoxy(10,ren*2+3);write('nombre',ren,':');read(nombre[ren]);

end;

(* despliegue de arreglos *)

for ren := 1 to 3 do

begin

gotoxy(10,ren*2+10);write('edad= ',edad[ren]);

gotoxy(10,ren*2+11);write('nombre= ',nombre[ren]);

end;

readln;readln;

end.

corrida:

Page 38: Curso de Pascal

Captura este procedimiento es similar para despliegue.

Se debera usar siempre un ciclo for con una variable de control llamada renglon, misma que tambien se usa como indice del arreglo.

Siempre que se use un elemento de una lista en pascal con cualquier proceso (captura, despliegue, operaciones)debera acompanarse de su indice respectivo.

Para procesar (hacer operaciones con ellos, o comparaciones, etc) los elementos de la lista se debera usar un ciclo for con una variable de control llamda renglon, misma que se usara tambien como indice de la lista.

Para desplegar los elementos de la lista, tambien se usa un ciclo for con su variable de control renglon, tal como se muestra en el ejemplo.

El mismo ciclo de proceso o despliegue se puede utilizar para procesar o desplegar los elementos de mas de una lista, siempre y cuando las listas sean del mismo tamano.

PROGRAMACION PASCAL

1.- Capturar y desplegar 5 precios de productos cualesquiera.

2.- Capturar 4 sueldos y desplegarlos aumentados en un 25%

UNIDAD 3: PROGRAMACION PASCAL ARREGLOS

TEMA 5: PROGRAMACION PASCAL SORTEOS U ORDENAMIENTOS

Un proceso muy comun con listas es el llamado sorteo u ordenamiento.

Page 39: Curso de Pascal

Este proceso consiste en reacomodar los elementos de la lista en un nuevo orden, de acuerdo a algun criterio.

Lista original Ord crec Ord decr 15 2 15 2 8 10 10 10 8 8 15 3

Existen muchos metodos u algoritmos de sorteos, el mas comun de ellos, es el denominado sorteo de burbuja que se basa en el siguiente algoritmo :

/*area de ordenamiento*/

n=cantidad de elementos de la lista;

for k:=1 to n-1 do

begin

renglon := 1;

while renglon < n-k do

begin

if lista[renglon] > lista[renglon+1] then

begin

temp := lista[renglon];

lista[renglon] := lista[renglon+1];

lista[renglon+1]:= temp;

end;

renglon := renglon+1;

end;

end;

Las notas a considerar con respecto al algoritmo son:

- Las variables n, k, renglon, son variables de control y deberan ser declaradas de tipo integer.

- La variable temp, debera ser declarada de acuerdo al tipo de dato de los elementos de la lista.

Page 40: Curso de Pascal

- Todas las referencias a LISTA, deberan ser cambiadas por el nombre verdadero de la lista real.

- Es el simbolo del if, quien determina el tipo de sorteo, es decir, (>)ascendente, (<) descendente.

TAREAS PROGRAMACION PASCAL :

1.- ORDENAR ASCENDENTEMENTE 5 MATRICULAS

2.- ORDENAR DESCENDENTEMENTE 6 CIUDADES

3.- ORDENAR A CRITERIO DEL USUARIO 7 ANIMALITOS

UNIDAD 3:PASCAL ARREGLOS

TEMA 6: ARREGLOS TIPO TABLA PASCAL

Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo organizados en dos o mas columnas y uno o mas renglones.

Para procesar ( recordar solo operaciones y comparaciones) internamente todos los elementos de la tabla se ocupan dos ciclos for() uno externo para controlar renglon y uno interno para controlar columna.

Los elementos de la tabla se deberan simbolizar con el nombre de la tabla y 2 subindices, el primer subindice referencia al renglon y el siguiente subindice referencia la columna.

La declaracion de una tabla sera de acuerdo al siguiente formato.

Nomtabla : array[1..cantren,1..cantcol]of tipodato;

ejemplo:

calif : array[1..3,1..4] of integer;

ciudades: array[1..3,1..4] of string[20];

Para efectuar procesos tales como operaciones despliegue con todos los elementos de la tabla se deberan usar 2 ciclos un for externo para controlar renglon y un for interno para controlar columna.

Prog8.pas

program prog8;

Page 41: Curso de Pascal

USES crt;

VAR

calif : ARRAY[1..3,1..2] of integer;

r,c,nc:integer;

begin

nc :=5;

clrscr;

(* captura tabla *)

for r := 1 to 3 do

begin

for c := 1 to 2 do

begin

gotoxy(nc,r+2);write('calif ',r,c,' :'); readln(calif[r,c]);

nc:=nc+20;

end;

nc:=5

end;

(* regalando 10 puntos a la calif *)

for r := 1 to 3 do

for c := 1 to 2 do

calif[r,c] := calif[r,c] + 10;

(* despliegue arreglo *)

for r := 1 to 3 do

begin

for c := 1 to 2 do

begin

gotoxy(nc,r+7);write('calif= ',calif[r,c]);

nc:=nc+20;

Page 42: Curso de Pascal

end;

nc:=5;

end;

readln;

end.

corrida:

tareas PROGRAMACION PASCAL

1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE CUATRO PRODUCTOS CUALESQUIERA, QUE SE PRODUCEN EN TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA.

2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES POR VENTAS DURANTE LOS TRES PRIMEROS MESES DEL ANO DE CUATRO SUCURSALES DE UNA CADENA DE AUTO REFACCIONES, AGREGAR AL FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR SUCURSAL.

3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS POR TRES VENDEDORES, DE LOS 5 TIPOS DE LINEA BLANCA DE CONOCIDA MUEBLERIA, ADEMAS LISTAS DE COMISIONES TOTALES Y PROMEDIOS GANADAS POR LOS VENDEDORES, ASI COMO LISTAS DE COMISIONES TOTALES Y PROMEDIOS POR TIPO DE LINEA BLANCA.

ANALIZAR ESTE CODIGO:

Page 43: Curso de Pascal

' PARA TOTALES Y PROMEDIOS POR RENGLON

FOR R = 0 TO 3

FOR C = 0 TO 2

TOTRENG(R) = TOTRENG(R) + TABLA(R,C)

NEXT C

PROMRENG(R) = TOTRENG(R)/3

NEXT R

'PARA TOTALES Y PROMEDIOS POR COLUMNA

FOR C = 0 TO 2

FOR R = 0 TO 3

TOTCOL(C)=TOTCOL(C) + TABLA(R,C)

NEXT R

PROMCOL(C) = TOTCOL(C) / 4

NEXT C

SUGERENCIA: CONSTRUIR PRIMERO LOS CUADROS EN PAPEL.

UNIDAD 4: PASCAL PROCEDIMIENTOS Y FUNCIONES

TEMA 1: PROCEDIMIENTOS PASCAL

Un camino para dividir un gran programa en partes mas pequenas es el uso de los llamados procedimientos.

Un procedimiento es un grupo de instrucciones, variables, constantes, etc, que estan disenados con un proposito particular y tiene su nombre propio.

Es decir un procedimiento es un modulo de un programa que realiza tareas especificas y que no puede regresar valores a la parte principal del programa u otro procedimiento que lo este invocando.

Despues de escribir un procedimiento se usa su propio nombre como una sola instruccion o llamada al procedimiento.

Los procedimientos se podran escribir despues del cuerpo principal del programa utilizando el formato:

Page 44: Curso de Pascal

procedure nombre;

const

(* Constantes *)

var

(* Variables *)

begin

(* instrucciones *)

end;

Observar que es similar a un programa completo y se declara en la parte de arriba despues sel USES.

Pero tambien los procedimientos deberan declararse antes del main como lo muestra el programa ejemplo.

Un programa puede tener tantos procedimientos como se deseen para hacer una llamada o invocacion al procedimiento durante la ejecucion de un programa solo se debera escribir el nombre del procedimiento.

Prog9.pas

program prog9;

uses crt;

procedure edadmeses;

var

edad,meses:integer;

begin

clrscr;

write('dame edad :');readln(edad);

meses:=edad*12;

write('meses = ',meses);

readln;

Page 45: Curso de Pascal

end;

begin

(* invocando procedimiento *)

edadmeses;

end.

corrida:

Recordar tambien que un programa puede tener muchos procedimientos, y estos pueden llamarse o invocarse entre si.

MUCHO OJO con la nota anterior, es valido que un procedimiento se llame o invoque o se active a si mismo o usando una referencia circular, por ejemplo proc1, activa proc2 que a su vez llama a proc1 esto se llama recursion y si no se controla con una instruccion if(condicion)break o exit(no me acuerdo cual de las dos) se va a obtener un hermoso ciclo infinito, muy divertido cuando le pasa a los programas de los companeros, estan avisados.

Como se observa un procedimiento puede ser un programa completo.

TAREAS PROGRAMACION BORLAND PASCAL

Construir los siguientes programas con procedimientos

a) Convertir $800.00 Pesos a dolares.

b) Calcular el Area de un triangulo de base=20 y altura=30.

c) Desplegar una Boleta de calificaciones.

 UNIDAD 4: PASCAL PROCEDIMIENTOS Y FUNCIONES

Page 46: Curso de Pascal

TEMA 2: PARAMETROS PASCAL

Un parametro es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algun proceso.

Estos valores que se pasan del cuerpo principal del programa o de un procedimiento a otros procedimientos se llaman parametros.

Entonces la declaracion completa de un procedimiento es :

Procedure nomproc(lista de parametros);

Donde lista de parametros es una o mas variables separadas por punto y coma como lo muestra el pograma ejemplo.

prog10.pas

program prog10;

uses crt;

var

edad1:integer;

procedure edadmeses(nombre:string; edad:integer);

var

meses:integer;

begin

meses:=edad*12;

write(nombre,' tus meses son= ',meses);

readln;

end;

begin

(* capturando el dato *)

clrscr;

write('dame edad : ');readln(edad1);

(* invocando procedimiento y pasando parametros *)

Page 47: Curso de Pascal

edadmeses('JUAN', edad1);

end.

Y no olvidar declarar el procedimiento antes del BEGIN-END incluyendo sus parametros como lo muestra el ejemplo.

Recordar tambien que se pueden mandar como parametros, datos, variables y expresiones algebraicas(no formulas o ecuaciones algebraicas)

Corrida:

Observar que en el procedimiento los parametros son dos variables locales es decir variables que solo se pueden usar dentro del procedimiento estas variables son quienes reciben los datos o valores.

REGLAS PARA EL USO DE PARAMETROS

1.- Cuando se usan variables como parametros, la variable que se manda debe ser declarada dentro del principal o del procedimiento de donde se esta enviando.

2.- La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre o el mismo nombre por claridad de programa, pero recordar que internamente en la memoria del computador existiran dos variables diferentes.

3.- La cantidad de variables que se envian deben ser igual en cantidad, orden y tipo a las variables que reciben.

4.- La variable que se recibe tiene un ambito local dentro del procedimiento, es decir solo la puede usar ese procedimiento.

5.- Se puede mandar a un procedimiento un dato, una variable(como lo muestran los ejemplos) o una expresion algebraica (no ecuacion o formula, pero siempre se deberan recibir en una variable.

TAREAS

Page 48: Curso de Pascal

1.- Programa que captura 3 calificaciones en principal, calcular promedio en procedimiento uno e imprimir nombre y promedio en un segundo procedimiento.

2.- Construir una tabla de multiplicar que el usuario indique captura y control de ciclo en principal, calculo y despliegue en un procedimiento.

3.- Construir un procedimiento que reciba un numero entero y que mande llamar a un segundo procedimiento pasando el letrero “PAR O IMPAR”

UNIDAD 4: PROGRAMACION PASCAL PROCEDIMIENTOS Y FUNCIONES

TEMA 3: VARIABLES LOCALES Y GLOBALES PROGRAMACION PASCAL

El lugar donde sea declarada una variable afectara el uso que el programa quiera hacer de esa variable.

Las reglas basicas que determinan como una variable puede ser usada depende de 3 lugares donde se puede declarar una variable.

En primer lugar es dentro de cualquier funcion o procedimiento a estas se les llama variables locales y solo pueden ser usadas por instrucciones que esten dentro de esa funcion o procedimiento.

En segundo lugar es como parametro de una funcion donde despues de haber recibido el valor podra actuar como variable local en esa funcion o procedimiento.

En escencia una variable local solo es conocida por el codigo de esa funcion o procedimieto y es desconocida por otras funciones o procedimientos.

En tercer lugar es fuera de todas los procedimiento o funciones a este tipo de variables se les llama variables globales y podran ser usadas por cualquier funcion o procedimiento del programa.

En programacion en serio no es acostumbrado usar muchas variables globales por varias razones, una de ellas es que variables globales estan vivas todo el tiempo de ejecucion del programa y si una global solo la ocupan unos cuantos procedimientos no tiene caso que este viva para todo el resto, otra razon es que es peligroso tener variables globales porque todo el conjunto de procedimiento y funciones que componen un programa tienen acceso o comparten su valor y se corre el riesgo de que inadvertidamente alguno de ellos modifique su valor.

Prog11.pas

program prog11;

uses crt;

Page 49: Curso de Pascal

var

(* realmente estas son variables globales *)

edad,meses:integer;

nombre:string;

procedure edadmeses;

begin

meses:=edad*12;

write(nombre,' tus meses son= ',meses);

readln;

end;

begin

(* capturando el dato *)

clrscr;

write('dame edad : ');readln(edad);

(* invocando procedimiento sinparametros *)

nombre :='PEDRO';

edadmeses;

end.

Es muy agradable trabajar sin parametros pero recordar la nota de arriba que no es muy bueno usar muchas variables globales:

Corrida:

TAREAS PROGRAMACION PASCAL

Page 50: Curso de Pascal

1.- BOLETA DE CALIFICAIONES Y SOLO USAR DOS VARIABLES GLOBALES

2.- UNA TABLA DE MULTIPLICAR Y SOLO USAR UNA VARIABLE GLOBAL

 

UNIDAD 4: PASCAL PROCEDIMIENTOS Y FUNCIONES

TEMA 4: FUNCIONES TURBO PASCAL

Una funcion es un modulo de un programa separado del cuerpo principal, que realiza una tarea especifica y que puede regresar un valor a la parte principal del programa u otra funcion o procedimiento que la invoque.

La forma general de una funcion es:

Function NomFuncion(parametros): tipodatoregresa;

Begin

Instrucciones;

End;

Donde tipodato especifica el tipo de dato que regresara la funcion.

Y el NomFuncion tiene dos papeles en pascal:

A) Es el nombre que se invocara dentro del principal o de algun procedimiento u otra funcion .

B) Es tambien una variable que debera cargarse dentro del cuerpo de instrucciones (begin ..end) para que pueda regresar el dato o resultado al principal o procedimiento o funcion que la este invocando.

La lista de parametros formales es una lista de variables separadas por punto y coma ( ;) que almacenaran los valores que reciba la funcion, estas variables actuan como locales dentro del cuerpo de la funcion.

Recordar ademas que cuando se llame una funcion debera haber una variable que reciba el valor que regresara la funcion, es decir generalmente se llama una funcion mediante una sentencia de asignacion, por ejemplo resultado=funcion(5, 3.1416);

Prog12.pas

Page 51: Curso de Pascal

program prog11;

uses crt;

var

dolar:real;

FUNCTION dolares(pesos,tc:real):real;

begin

dolares := pesos /tc;

end;

begin

clrscr;

(* llamando funcion y cargando resultado *)

dolar := dolares(123.45 , 11.25);

write('SON ',dolar:0:2, ' DOLARES');

readln;

end.

Corrida:

EXISTEN 3 CLASES USUALES DE FUNCIONES.

Las primeras son de tipo computacional que son disenadas para realizar operaciones con los argumentos y regresan un valor basado en el resultado de esa operacion.

Las segundas funciones son aquellas que manipulan informacion y regresan un valor que indican la terminacion o la falla de esa manipulacion.

Las terceras son aquellas que no regresan ningun valor, es decir son estrictamenta procedurales.

Page 52: Curso de Pascal

Esto quiere decir que en general toda operacion o calculo en un programa debera convertirse a una o muchas funciones y el resto deberan ser procedimientos.

TAREAS PROGRAMACION PASCAL

1.- Capturar 3 calificaciones y nombre en un procedimiento, calcular promedio en una funcion, desplegar en otro procedimiento.

2.- Crear una tabla de multiplicar, captura y control de ciclo en el principal, operaciones en una funcion, despliegue en el principal.

 

UNIDAD 4: PROGRAMACION PASCAL PROCEDIMIENTOS Y FUNCIONES

TEMA 5: PROGRAMACION PASCAL PARAMETROS POR VALOR Y POR REFERENCIA

Un concepto interesante que se maneja facilmente en pascal es el paso de parametros por calor y por referencia.

Hasta ahora todos los parametros que se han usado en esta unidad se han pasado por valor, esto es el caso normal.

Cuando se pasa un parametro por valor, el compilador basicamente crea una copia del dato y lo almacena en la variable parametro que lo recibe, esto ocasiona que si el procedimiento o la funcion le hacen algun cambio a la variable parametro, la variable original que se mando como parametro no sufre ningun cambio.

Sin embargo cuando se manda un dato por referncia cualquier cambio que se realize a la variable parametro, tambien se le estara haciendo a la variable original, es decir cuando se manda una variable a un procedimiento o funcion el compilador no saca una copia de la variable, en su lugar sigue usando el mismo espacio de memoria donde la tiene almacenada pero ahora este espacio de memoria estara apuntado tanto por la variable original como por la variable parametro.

Esto quiere decir que cambios a la variable parametro, realmente se le estaran haciendo a la variable original, como lo demuestra el programa ejemplo mas abajo.

Para pasar una variable por referencia a una variable parametro se usara el siguiente formato.

Procedure nomproc(VAR lista de parametros);

Solo agregar la palabra reservada VAR a la lista de parametros que se quieran pasar como referencia.

Prog13.pas

Page 53: Curso de Pascal

program prog13;

uses crt;

var

nombre:string;

edad:integer;

procedure pasar(nombre1:string; var edad1:integer);

begin

(* cambiando los parametros *)

nombre1:='maria elena';

edad1:=50;

end;

BEGIN

clrscr;

(* cargando las variables *)

nombre:='juan fernando';

edad:=15;

(* mandando a procedimiento *)

pasar(nombre,edad);

(* desplegando *)

writeln('nombre : ',nombre);

writeln('edad : ',edad);

readln;

END.

corrida:

Page 54: Curso de Pascal

Observar que se pueden mandar parametros por valor ( EL CASO DE NOMBRE) y paramteros por referencia (EL CASO DE EDAD).

Observar tambien en la corrida que para el caso de edad, el cambio que se le hizo dentro del procedimiento realmente se le esta haciendo a la variable original.

PROGRAMACION TAREAS PASCAL

1.- Inicializar 5 datos de alumno en principal y mandar la mitad de ellos por referencia a un procedimiento para practicar este concepto

2.- Construir un tabla de dividir usando alguna variable por referencia.

UNIDAD 4: PROGRAMACION PASCAL PROCEDIMIENTOS Y FUNCIONES

TEMA 6: ARREGLOS COMO PARAMETROS PROGRAMACION PASCAL

En este tema usaremos una instruccion nueva en pascal la instruccion TYPE, basicamente se usa para crear un tipo de dato nuevo que no exista dentro del estandar de pascal, por ejemplo;

TYPE

Meses = (ene, feb, mar, abr);

Pares = (2,4,6,8);

VAR

Mes:Meses;

Num:Pares

Page 55: Curso de Pascal

Como se observa se crearon dos tipos de datos nuevos y se declararon dos variables de ese tipo.

Para pasar un arreglo completo como parametro a un procedimiento a una funcion solo se manda el nombre del arreglo sin corchetes e indices.

En el procedimiento o funcion que recibe solo se declara un arreglo del mismo tipo.

Recordar tambien que el arreglo se podra mandar POR VALOR o POR REFERENCIA en este ultimo caso mas util ( evitamos gastar memoria duplicando el arreglo ) cambios que se le hagan a los datos del arreglo que recibe realmente se esta haciendo al arreglo original como lo muestra el siguiente ejemplo:

Prog14.pas

program prog14;

uses crt;

type

rango = array[1..3] of integer;

var

vector:rango;

r1:integer;

PROCEDURE listas(var lista:rango);

var

r:integer;

begin

for r:=1 to 3 do

lista[r] := lista[r] + 1000;

end;

begin

clrscr;

(* cargando vector *)

vector[1]:=50;vector[2]:=100;vector[3]:=200;

(* pasandolo a procedimiento *)

Page 56: Curso de Pascal

listas(vector);

for r1:=1 to 3 do

writeln(vector[r1]);

readln;

end.

corrida:

Es de recordar que los cambios que le hagan al arreglo dentro de la funcion se reflejaran en el arreglo original, es por esto que si se quiere modificar un arreglo en una funcion no hay necesidad de regresar ningun valor.

TAREAS PROGRAMACION PASCAL

1.- Inicializar 10 edades en el principal mandar la lista a un procedimiento que la convierte a meses, desplegar en principal.

2.- Capturar un arreglo de 7 ciudades en principal, sortear u ordenar o alfabetizar (sorteo burbuja) en un procedimiento y desplegar en otro procedimiento tanto la lista original como la lista ordenada.

NIDAD 5: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 2: REGISTROS ARCHIVOS DISCO PASCAL

En este tema exploramos en pascal la estructura mas comun de representacion de datos RECORD.

Page 57: Curso de Pascal

Variables simples o escalares pueden almacenar un datum de informacion y arreglos pueden almacenar conjuntos de ellos del mismo tipo y al mismo tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones pero a menudo se necesita trabajar sobre datos de diversos tipos en este caso ni variables escalares ni arreglos son adecuados.

Para resolver este problema PASCAL provee de un tipo de dato especial llamado RECORD.

Los elementos individuales de una variable registro reciben el nombre de campos.

Ej:

RECORD alumno

nombre → campo1

direccion → campo2

edad → campo3

etc

EL FORMATO GENERAL DE UNA ESTRUCTURA ES:

TYPE

Nomreg = RECORD

Campo1: tipo dato

Campo2: tipo dato

. . . . . .

end;

VAR

varReg:nomreg;

Recomendacion es que en type usar el plural por ejemplo ALUMNOS y en la variable el singular por ejemplo ALUMNO, ver ejemplo mas abajo.

Es el registro completo quien se declara en cualquiera de los lugares adecuados para ello.

Son los campos del registro a quienes se les va a asignar, inicializar, capturar, etc y de esta manera a los campos se les considera como variables normales.

Page 58: Curso de Pascal

Para indicar a pascal durante cualquier proceso que la variable a utilizar es un campo de una estructura se utiliza el siguiente formato.

varreg.nombredelcampo

Ejemplo.

prog15.pas

program prog15;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

BEGIN

clrscr;

(* capturando registro *)

write('dame clave : ');readln(alumno.clave);

write('dame nombre : ');readln(alumno.nombre);

write('dame estatura : ');readln(alumno.estatura);

(* operaciones *)

alumno.estatura := alumno.estatura + 0.23456;

(* despliegue *)

writeln;writeln;

writeln('clave : ',alumno.clave);

writeln('nombre : ',alumno.nombre);

writeln('estatura : ',alumno.estatura:0:2);

Page 59: Curso de Pascal

readln;

END.

corrida:

Las operaciones mas elementales con los campos de una estructura incluyen captura e inicializacion.

PROGRAMACION TAREAS PASCAL :

1.-Crear un registro de alumno con 3 califaciones.

2.-Declarar un registro de empleado capturar y desplegar un numero indeterminado de veces.

3.-Capturar un registro local de un producto en el principal, mandarlo como parametro a un procedimiento y desplegarlo.

4.-Capturar un registro local en el principal, mandar el sueldo a una funcion que le aumente el 25% y desplegar en el principal.

5.-Capturar en principal un registro local de cuentas por cobrar, mandar a un procedimiento e imprimir un aviso si el saldo esta atrasado.

UNIDAD 5: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 3: PROGRAMACION PASCAL ARCHIVOS DISCO (INTRODUCCION)

Si bien es cierto que ya se pueden manejar gran cantidad de datos del mismo y diferente tipo al mismo tiempo el problema es que al terminar de ejecutarse el programa los datos se pierden.

Page 60: Curso de Pascal

De esta situacion nace el concepto de archivos que son medios que facilita el lenguaje para almacenar los datos en forma permanente, normalmente en los dispositivos de almacenamiento standar.

En general es necesario entender algunos conceptos elementales de sistemas de archivos tradicionales.

Como nota a tomar en cuenta los datos que se van almacenando en un archivo de disco, se almacenan en renglones consecutivos y cada renglon en disco, se conoce como registro del archivo, favor de no confundir el concepto de registro de archivo y registro o estructura como variable ya analizada, son dos cosas totalmente diferentes aunque desafortunadamente se llamen igual.

Primero: Operaciones con archivos

ESCRIBIR O GRABAR: Es la operacion mas elemental con un archivo, consiste en tomar un o unos datos en variables de cualquier tipo (escalar, mezcla de datos, arreglos, estructuras) y almacenarlas en un archivo de datos en disco.

LEER: Operacion consistente en sacar los datos del archivo en disco y mandarlos o cargar la variable respectiva

Segundo: Organizacion de archivos

En general existen dos tipos de archivos:

Archivos Secuenciales.- En este caso los datos se almacenan en forma consecutiva y no es posible leer (recuerdan que significa esta operacion) ningun registro (recuerdan la nota de arriba) directmente, es decir para leer el registro n se debera recorrer o accesar los n-1 registros anteriores.

Archivos Directos o Random.- Para este caso si se puede acceder o leer un renglon n cualquiera.

PARA PROPOSITO DE ESTE CURSO, ENTONCES NOS CONCENTRAMOS EN ARCHIVOS DE REGISTROS , SECUENCIALES Y DIRECTOS.

UNIDAD 5: PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 4: PASCAL ARCHIVOS (CONTINUACION)

Existen muchas operaciones asociadas a archivos, las mas elementales son:

1.- Creacion de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco con su nombre tipo y especialidad de almacenamiento de datos apropiado.

Page 61: Curso de Pascal

2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para procesarlo ya sea para cargar o grabar estructuras en sus registros o leer algun registro en especial para mandarlo a una variable de cualquier tipo.

No confundir creacion con apertura, creacion es un proceso que solo se ejecuta una sola vez en la vida de un archivo, mientras que apertura, seimpre se esta realizando por los programas especializados en algun proceso.

3.-Cierre de archivos: Es la operacion mas importante en cualquier programa que maneje archivos, o se cierra el archivo como ultima instruccion del pograma o se vera el anuncio ABORT,RETRY,FAIL.

98, /s, scandisk

4.-Altas en archivo.- En este proceso se captura una estructura en memoria con sus datos pertinentes y despues se graba la estructura al archivo en disco.

5.-Lectura de archivo.- En este proceso se abre el archivo, se manda el registro de disco a una estructura en memoria para su procesamiento.

6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla.

7.-Busqueda en archivos: Una de las operaciones mas comunes consiste en que el usuario pide toda la informacion de algun renglon en disco porporcionando la informacion de algun campo generalmente el campo clave de la estructura.

8.- Filtros.- En este proceso el usuario esta interesado en algun conjunto de renglones con caracteristicas comunes (condicion), por ejemplo todos los alumnos de “sistemas” o todos los empleados que ganen mas de $500.00 pesos, o todos los clientes que sean de “tijuana”, etc

9.-Modificaciones de registros o archivos: Problema muy comun, donde los datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era “juan” es “juana”, o la calificacion no es 100 es 20, etc.

10.- Bajas de registros: tambien muy comun este proceso,por ejemplo el alumno ya egreso, el cliente huyo, etc.

 

UNIDAD 5: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 5: CREACION ARCHIVOS SECUENCIAL PASCAL

Page 62: Curso de Pascal

En este proceso se pretende solamente crear un archivo secuencial en disco.

Prog16.pas

program prog16;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

BEGIN

clrscr;

assign(archivo,'c:\prog\alumnos.dat');

rewrite(archivo);

close(archivo);

(* avisando *)

write('archivo creado');

readln;

END.

CORRIDA:

Page 63: Curso de Pascal

Recordar que el registro que se uso para crear el archivo se debera usar siempre y con el mismo orden cuando se acceda al archivo con los procesos u operaciones anteriormente mencionados.

Primero creamos una variable registro de tipo normal.

Luego se crea una variable VARARCHIVO de tipo ( file of) REGISTRO, esta variable se estara usando mucho a lo largo de los programas.

Pueden pensar de esta variable como un ALIAS al archivo en disco, es decir en el disco duro quedara grabado an algun lugar un archivo llamado C:\FOLDE\DIRECTORIO\DATOS.DAT pero pascal ocupara una manera mas recortada de estarlo manejando, para esto se usa la VARARCHIVO, es decir a juan francisco lopez montejo se le conoce mejor como pancho.

Las instrucciones nuevas a usar son:

A) ASSIGN(VARARCHIVO,RUTA DIRECTORIO NOMARCHIVO), esta instruccion asigna la variable de archivo, al archivo real en disco, es decir VARARCHIVO quedara cargada con la direccion o ruta y el nombre del archivo en disco.

B) REWRITE(VARARCHIVO)

Esta instruccion crea y abre un archivo fisico en disco, si el archivo ya existe rewrite eliminara todo lo que tenga y el archivo quedara listo para el proceso de escribirle o grabarle registros.

C) CLOSE(VARARCHIVO) ultimo proceso que debe incluir todo programa que maneje archivos en pascal, esta instruccion le indica al compilador que cierre el archivo fisico en disco, esto lo hace agregandole una marca de fin de archivo (EOF) al final del archivo.

Es importante siempre cerrar el archivo fisico en el disco o van a tener una situacion de ABORT,RETRY,IGNORE muy divertida.

UNIDAD 5: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 6: GRABACION Y LECTURA DISCO PROGRAMACION PASCAL

Como ya se menciono grabar y lectura de registros o estructuras a renglones o registros de archivos en disco, son los procesos mas comunes y frecuentes que se pueden realizar con un archivo de disco.

GRABACION DE UNA ESTRUCTURA A UN ARCHIVO EN DISCO

prog17.pas

program prog17;

Page 64: Curso de Pascal

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

ren:integer;

BEGIN

clrscr;

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

rewrite(archivo);

(* ciclo para capturar y grabar tres registros *)

for ren:= 1 to 3 do

begin

(* capturando registro *)

write('dame clave : ');readln(alumno.clave);

write('dame nombre : ');readln(alumno.nombre);

write('dame estatura : ');readln(alumno.estatura);

(* grabando el registro al archivo *)

write(archivo, alumno);

end;

(* cerrando archivo y avisando *)

close(archivo);

Page 65: Curso de Pascal

writeln;writeln;

writeln('REGISTROS INSERTADOS');

readln;

END.

corrida:

La unica instrucion nueva es:

write(archivo,alumno);

Como se observa ocupa 2 parametros que son:

El alias del archivo y el registro.

POR SUPUESTO QUE USTEDES NO DEBEN USAR CICLO FOR SINO UN CICLO WHILE Y ESTARLE PREGUNTANDO AL USUARIO SI QUIERE CAPTURAR Y GRABAR OTRO REGISTRO.

AGREGAR NUEVOS REGISTROS

El siguiente procedimiento nos permitira agregar nuevos registros a un archivo existente, recordar que rewrite borra un archivo si ya existe;

Prog18.pas

program prog18;

uses crt;

type

alumnos = RECORD

Page 66: Curso de Pascal

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

BEGIN

clrscr;

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

(* moviendo apuntador al final del archivo existente *)

seek(archivo,filesize(archivo));

(* capturando registro *)

write('dame clave : ');readln(alumno.clave);

write('dame nombre : ');readln(alumno.nombre);

write('dame estatura : ');readln(alumno.estatura);

(* grabando el registro al archivo *)

write(archivo, alumno);

(* cerrando archivo y avisando *)

close(archivo);

writeln;writeln;

writeln('NUEVO REGISTRO INSERTADO');

readln;

END.

Corrida:

Page 67: Curso de Pascal

Las instrucciones nuevas son:

Reset(archivo), abre el archivo PERO EL ARCHIVO YA DEBE EXISTIR ya sea con el programa de creacion (prog16.pas) o con el de grabacion de registros (prog17.pas), si el archivo no existe, reset manadara un error de IO.

Seek(archivo,filesize(archivo)) esta instruccion mueve el apuntador o puntero al final del archivo en disco.

Otra vez por cada registro estamos grabando 38 bytes de informacion, la string de 30 y 8 bytes por el entero y el real, ademas recordar que al cerrarse el archivo pascal le aumento 1 byte con la marca o simbolo de fin de archivo (EOF), por esta razon si ustedes desde msdos ven el archivo, msdos les avisa que tiene 39 bytes.

Filesize(archivo) es otra funcion de archivos que nos regresa cuantos bytes tiene el archivo en este caso 39.

Seek nos posiciona en el byte 39, que es precisamente la marca de EOF, la sigueinte escritura de archivos de 38 bytes, empezara sobreescribiendo la marca EOF, que es realmente lo que se quiere realizar.

LECTURA DE REGISTROS

Prog19.pas

program prog19;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

Page 68: Curso de Pascal

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

BEGIN

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

(* iniciando ciclo de lectura de registros en archivo *)

while not(EOF(archivo)) do

begin

clrscr;

READ(archivo,alumno);

write('clave : ');writeln(alumno.clave);

write('nombre : ');writeln(alumno.nombre);

write('estatura : ');writeln(alumno.estatura:0:2);

write('<enter> para continuar');readln;

end;

(* cerrando archivo *)

close(archivo);

readln;

END.

corrida:

Page 69: Curso de Pascal

Las instrucciones nuevas son:

while not(EOF(archivo)) do

NOT(EOF), se esta indicando al compilador que lea los registros mientras no se encuentre la marca o simbolo de fin de archivos (END OF FILE).

READ(archivo,alumno);

Funcion complementp de write, read lee el archivo y carga el registro.

PROGRAMACION TAREAS PASCAL

1.-crear, cargar y leer un archivo de empleados y otro de productos convirtiendo los programas a procedimientos, dejar el registro global y en principal hacer un menu con case.

 

UNIDAD 5: PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 7: BUSQUEDA ARCHIVOS DISCO PASCAL

En este tema se analiza la busqueda de un registro o renglon determinado.

En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacion proporcionando un dato de busqueda generalmente la clave del registro.

prog20.pas

program prog20;

uses crt;

Page 70: Curso de Pascal

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

clave:integer;

BEGIN

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

(* capturando clave a buscar *)

clrscr;

write('clave a buscar : ');readln(clave);

(* iniciando ciclo de lectura de registros en archivo *)

while not(EOF(archivo)) do

begin

READ(archivo,alumno);

if clave = alumno.clave then

begin

write('clave : ');writeln(alumno.clave);

write('nombre : ');writeln(alumno.nombre);

write('estatura : ');writeln(alumno.estatura:0:2);

write('<enter> para continuar');readln;

end;

Page 71: Curso de Pascal

end;

(* cerrando archivo *)

close(archivo);

END.

corrida:

Recordar que la caracteristica principal de un archivo secuencial, es que no es posible acceder o accesar a un registro o renglon especifico o determinado sino que se debera recorrer todos los n-1 renglones anteriores.

Esta situacion se da porque al construir un registro cualquiera con una monton de campos strings a la hora de almacenar dichos registros, estos registros tendran tamanos diferentes, esta es la razon principal por la cual al buscar un registro especifico se tiene que recorrer y validar todos los registros anteriores.

En el programa ejemplo se esta usando un ciclo while noteof para recorrer todos los registros del archivo, por supuesto que si se tiene un archivo con 5000 registro y el buscado es el 4500 al menos se se tendra que recorrer todos los 4499 registros anteriores.

TAREAS PROGRAMACION PASCAL

Construirles programas de busquedas a los archivos y menus ya construidos.

UNIDAD 5: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 8: FILTROS ARCHIVOS PROGRAMACION PASCAL

Otro problema similar al anterior es el de filtros, es decir en muchas ocasiones es necesario obtener informacion acerca de un subconjunto de renglones de el archivo.

Page 72: Curso de Pascal

Por ejemplo todos los estudiantes que sean mayores de 17 anos, o todos los clientes que sean de Tijuana, etc., a esto le llamamos filtros o condiciones.

prog21.pas

program prog21;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

clave:real;

BEGIN

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

(* capturando condicion *)

clrscr;

write('clave >= que : ');readln(clave);

(* iniciando ciclo de lectura de registros en archivo *)

while not(EOF(archivo)) do

begin

READ(archivo,alumno);

if alumno.clave > clave then

begin

Page 73: Curso de Pascal

write('clave : ');writeln(alumno.clave);

write('nombre : ');writeln(alumno.nombre);

write('estatura : ');writeln(alumno.estatura:0:2);

end;

end;

(* cerrando archivo *)

close(archivo);

write('<enter> para continuar');readln;

END.

corrida:

Como se observa es un problema y una solucion similar al tema anterior de busquedas.

TAREAS PROGRAMACION PASCAL

HACERLES PROGRAMAS DE FILTRADO A LOS ARCHIVOS ANTERIORES, PERO LA CONDICION DE BUSQUEDA FORMARLA COMPLETAMENTE CON VARIABLES UNO PARA LA VARIABLE Y OTRO PARA EL OPERADOR RELACIONAL PARA EL DATO, ESTO PERMITIRIA QUE SE PUDIERA FILTRAR EL ARCHIVO POR CUALQUIER CAMPO excepto los reales que no se pueden meter en condiciones.

 

UNIDAD 5: PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 9: BAJAS O ELIMINACIONES PASCAL ARCHIVOS

Page 74: Curso de Pascal

Eliminacion o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen dos maneras por las cuales se puede realizar ese proceso.

En la primera manera de la cual se proporciona el ejemplo correspondiente se usaran dos archivos, el archivo original y un archivo temporal, el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se termina de procesar todo el archivo original, el archivo temporal solo contendra todos los registros que no se quisieron eliminar, ya con estos dos archivo se procede a eliminar o borrar usando la instruccion remove de el archivo original y se procede a renombrar usando la instruccion rename de el archivo temporal como nuevo archivo original.

prog22.pas

program prog22;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

temporal: file of alumnos;

clave:integer;

BEGIN

(* creando y abriendo los dos archivos *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

assign(temporal,'c:\prog\temporal.dat');

rewrite(temporal);

(* capturando clave a eliminar *)

Page 75: Curso de Pascal

clrscr;

write('clave a eliminar : ');readln(clave);

(* iniciando ciclo de lectura de registros en archivo original *)

while not(EOF(archivo)) do

begin

READ(archivo,alumno);

if clave <> alumno.clave then

WRITE(temporal,alumno);

end;

(* cerrando archivos *)

close(archivo);

close(temporal);

(* borrando y eliminando archivos *)

erase(archivo);

rename(temporal,'c:\prog\alumnos.dat');

(* avisando *)

write('Registro Eliminado <enter> para continuar');

readln;

END.

corrida prog22

Para ver el archivo original usar el prog19.pas o mejor aun llamen el modulo apropiado del menu que ya estan construyendo.

Page 76: Curso de Pascal

EL problema con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de recuperar esa informacion posteriormente.

Es por eso que otra tecnica comun de eliminacion es incluir un campo de estado, status o bandera o semaforo en el registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' –>alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura, busqueda y filtros deberan revisar esta campo de estado antes de hacer algo con el registro.

tareas PROGRAMACION PASCAL :

Construir procedimientos de bajas para los archivos construidos.

UNIDAD 5: PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 9: BAJAS O ELIMINACIONES PASCAL ARCHIVOS

Eliminacion o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen dos maneras por las cuales se puede realizar ese proceso.

En la primera manera de la cual se proporciona el ejemplo correspondiente se usaran dos archivos, el archivo original y un archivo temporal, el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se termina de procesar todo el archivo original, el archivo temporal solo contendra todos los registros que no se quisieron eliminar, ya con estos dos archivo se procede a eliminar o borrar usando la instruccion remove de el archivo original y se procede a renombrar usando la instruccion rename de el archivo temporal como nuevo archivo original.

prog22.pas

program prog22;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

Page 77: Curso de Pascal

alumno:alumnos;

archivo: file of alumnos;

temporal: file of alumnos;

clave:integer;

BEGIN

(* creando y abriendo los dos archivos *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

assign(temporal,'c:\prog\temporal.dat');

rewrite(temporal);

(* capturando clave a eliminar *)

clrscr;

write('clave a eliminar : ');readln(clave);

(* iniciando ciclo de lectura de registros en archivo original *)

while not(EOF(archivo)) do

begin

READ(archivo,alumno);

if clave <> alumno.clave then

WRITE(temporal,alumno);

end;

(* cerrando archivos *)

close(archivo);

close(temporal);

(* borrando y eliminando archivos *)

erase(archivo);

rename(temporal,'c:\prog\alumnos.dat');

(* avisando *)

write('Registro Eliminado <enter> para continuar');

Page 78: Curso de Pascal

readln;

END.

corrida prog22

Para ver el archivo original usar el prog19.pas o mejor aun llamen el modulo apropiado del menu que ya estan construyendo.

EL problema con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de recuperar esa informacion posteriormente.

Es por eso que otra tecnica comun de eliminacion es incluir un campo de estado, status o bandera o semaforo en el registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' –>alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura, busqueda y filtros deberan revisar esta campo de estado antes de hacer algo con el registro.

tareas PROGRAMACION PASCAL :

Construir procedimientos de bajas para los archivos construidos.

UNIDAD 5: PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 10: OPERACIONES CON CAMPOS PASCAL

En este tema se analiza la manera de poder realizar operaciones o procesos con los campos de los registros en el archivo secuencial, lo unico importante a considerar es que los campos del registro son en cierta medida igual que variables normales y por tanto se pueden procesar de manera normal como lo muestra el ejemplo.

prog23.cpp

program prog23;

uses crt;

Page 79: Curso de Pascal

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

temporal: file of alumnos;

BEGIN

(* creando y abriendo los dos archivos *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

assign(temporal,'c:\prog\temporal.dat');

rewrite(temporal);

clrscr;

(* iniciando ciclo de lectura de registros en archivo original *)

while not(EOF(archivo)) do

begin

READ(archivo,alumno);

(* realizando operacion ejemplo aumentar 15 cms a cada estatura *)

alumno.estatura := alumno.estatura + 0.15 ;

(* grabando a temporal *)

WRITE(temporal,alumno);

end;

(* cerrando archivos *)

close(archivo);

Page 80: Curso de Pascal

close(temporal);

(* borrando y eliminando archivos *)

erase(archivo);

rename(temporal,'c:\prog\alumnos.dat');

(* avisando *)

write('ESTATURAS AUMENTADAS <enter> para continuar');

readln;

END.

corrida:

como se observa la solucion es muy sencilla solo se ocupa el registro original y los dos archivos el original y el temporal, se va leyendo registro a registro de archivo original al registro en memoria correspondiente, se realiza la operacion u proceso deseado con el registro y se graba el registro modificado en el archivo temporal, al final se elimina archivo original y se renombra el archivo temporal.

PROGRAMACION TAREAS PASCAL :

CONSTRUIR PROCEDIMEINTOS QUE PROCESEN ALGUNOS CAMPOS DE LOS ARCHIVOS EJEMPLOS QUE YA TIENEN CONSTRUIDOS.��

UNIDAD 5: PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 11: EDICION DE REGISTROS ARCHIVOS DISCO PASCAL

Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacion o para corregir algun error de captura original o para agregar alguna columna que no existia por modificacion de la tabla o la base de datos.

Page 81: Curso de Pascal

La solucion es similar a los temas anterior, es decir se ocupan los dos archivos el original y el temporal y ya sea que se modifique una sola clave o se modifiquen todos los registros el ejemplo que se construye va mostrando los registros del archivo y pregunta y modifica o edita el registro pedido.

Prog24.pas

program prog24;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

estatura:real;

end;

var

alumno:alumnos;

archivo: file of alumnos;

temporal: file of alumnos;

clave:integer;

BEGIN

(* creando y abriendo los dos archivos *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

assign(temporal,'c:\prog\temporal.dat');

rewrite(temporal);

(* capturando clave a editar *)

clrscr;

write('clave a editar : ');readln(clave);

(* iniciando ciclo de lectura de registros en archivo original *)

while not(EOF(archivo)) do

Page 82: Curso de Pascal

begin

READ(archivo,alumno);

if clave = alumno.clave then

begin

(* capturando nuevos datos *)

write('dame nueva clave : ');readln(alumno.clave);

write('dame nuevo nombre: ');readln(alumno.nombre);

write('dame estatura : ');readln(alumno.estatura);

(* escribiendo reg editado a temporal *)

WRITE(temporal,alumno);

end

else

WRITE(temporal,alumno);

end;

(* cerrando archivos *)

close(archivo);

close(temporal);

(* borrando y eliminando archivos *)

erase(archivo);

rename(temporal,'c:\prog\alumnos.dat');

(* avisando *)

write('Registro Editado <enter> para continuar');

readln;

END.

corrida:

Page 83: Curso de Pascal

tareas PROGRAMACION PASCAL :

1.- construir procedimientos de edicion para sus archivos, pero primero desplegar el registro a eliminar y luego pedirle los nuevos campos

UNIDAD 6: PASCAL REGISTROS Y ARCHIVOS DIRECTOS

TEMA 1: INTRODUCCION ARCHIVOS PASCAL

SE DICE QUE UN ARCHIVO ES DE ACCESO U ORGANIZACION DIRECTA CUANDO PARA ACCEDER A UN REGISTRO N CUALESQUIERA NO SE TIENE QUE PASAR POR LOS N-1 REGISTROS ANTERIIORES.

Como se observa de esta definicion los archivos directos tienen una gran ventaja( son mucho mas rapidos) cuando se comparan con los archivos de acceso u organizacion secuencial estudiados en la unidad anterior.

Aunque lo anterior no quiere decir que son mejores que los secuenciales, es decir es el propio problema planteado quien exigira una solucion u otra, por ejemplo si se quiere construir un archivo para almacenar los datos de un guestbook, si se construye de manera directa seria muy rapido pero si lo construimos de manera secuencial, se podran almacenar datos con cantidades de informacion mas adecuados al problema.

Es decir un archivo de acceso directo tiene que tener sus registros o renglones de un tamano fijo o predeterminado de antemano.

Un archivo de acceso directo permite posicionar el apuntador de interno de registros, a cualquier registro determinado sin necesidad de pasar por todos los registros anteriores, usando las siguientes funciones.

1) seek(archivo,numregistro);

Esta funcion posiciona el apuntador de registro en el registro indicado. Regresa 0 si se pudo posicionar.

2) filepos(archivo);

Page 84: Curso de Pascal

Regresa un valor long int indicando el registro donde se encuentra el cursor interno de registros de archivo.

 

UNIDAD 6: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS DIRECTOS

TEMA 2: CREACION LECTURA Y GRABACION ARCHIVOS DISCO PASCAL

Son completamente similares a lo que se hizo con archivos secuenciales

GRABACION

Prog25.PAS

program prog25;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

edad:integer;

status:char;

end;

var

alumno:alumnos;

archivo: file of alumnos;

BEGIN

clrscr;

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

Page 85: Curso de Pascal

(* moviendo apuntador al final del archivo existente *)

seek(archivo,filesize(archivo));

(* capturando registro *)

write('dame clave : ');readln(alumno.clave);

write('dame nombre : ');readln(alumno.nombre);

write('dame edad : ');readln(alumno.edad);

(* cargando status *)

alumno.status :='A';

(* grabando el registro al archivo *)

write(archivo, alumno);

(* cerrando archivo y avisando *)

close(archivo);

writeln;writeln;

writeln('NUEVO REGISTRO INSERTADO');

readln;

END.

Recordar que la estructura que se uso para crear el archivo se debera usar siempre y con el mismo orden cuando se acceda al archivo con los procesos u operaciones anteriormente mencionados.

Observar que es completamente similar a la creacion de archivos secuenciales.

Se agergo un campo de status de tipo char que se cargo con el caracter 'A' para significar que este registro esta en altas, pueden usar status numericos para cargarlo con numeros que signifiquen diferentes cosas por ejemplo 1.-alta, 2.-baja, 3.- baja temporal, 4.- permiso, etc.

Recuerden que para que funcione el archivo ya debes estar creado, si no quieren usar el programa de creacion de archivos, pueden crearlo directamente en windows con file new text.

LECTURA

Prog26.pas

program prog26;

Page 86: Curso de Pascal

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

edad:integer;

status:char;

end;

var

alumno:alumnos;

archivo: file of alumnos;

BEGIN

clrscr;

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

(* ciclo de lectura y despliegue registro *)

while not(EOF(archivo)) do

begin

read(archivo,alumno);

(* revisando status registro *)

if alumno.status = 'A' then

begin

write('clave : ');writeln(alumno.clave);

write('nombre : ');writeln(alumno.nombre);

write('edad : ');writeln(alumno.edad);

write('<enter> para continuar ');readln;;

end;

end;

Page 87: Curso de Pascal

(* cerrando archivo *)

close(archivo);

END.

Corrida:

Recordar que siempre debes estar revisando o validando el campo se status o bandera para conocer el estado del registro.

Tareas PROGRAMACION PASCAL

Crear archivos directos de alumnos, provedores, libros, productos, peliculas.

UNIDAD 6: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS DIRECTOS

TEMA 3: BUSQUEDA ARCHIVOS DISCO PASCAL

En este tema se analiza la busqueda de un registro o renglon determinado.

En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacion proporcionando un dato de busqueda generalmente la clave del registro.

Recordar que en esta operacion se muestra la diferencia fundamental entre archivos secuenciales y archivos directos, es decir aqui se puede accesar directamente un registro n cualesquiera.

Prog27.pas

program prog27;

Page 88: Curso de Pascal

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

edad:integer;

status:char;

end;

var

alumno:alumnos;

archivo: file of alumnos;

clave:integer;

BEGIN

clrscr;

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

(* clave a buscar *)

write('clave a buscar');readln(clave);

(* moviendo apuntador a registro buscado *)

seek(archivo,clave-1);

(* leyendo registro *)

read(archivo,alumno);

(* revisando status registro *)

if alumno.status = 'A' then

begin

write('clave : ');writeln(alumno.clave);

write('nombre : ');writeln(alumno.nombre);

Page 89: Curso de Pascal

write('edad : ');writeln(alumno.edad);

write('<enter> para continuar ');readln;;

end;

(* cerrando archivo *)

close(archivo);

END.

corrida:

Observar que cuando se busco la clave se desconto uno ( seek(archivo,clave-1 ), la razon es que pascal no empieza internamente el registro uno, sino el registro 0 (cero) por eso aunque grabemos cinco registros, para pascal los registros almacenados son los registros 0,1,2,3,4

Observar tambien que no se ocupo un ciclo de lectura de todo el archivo porque nos podemos estar posicionando directamente en cualquier registro del archivo.

TAREAS PROGRAMACION PASCAL

Empezar a construir un menu de archivo directo para productos o mercancias.

UNIDAD 6: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS DIRECTOS

TEMA 4: PROGRAMACION PASCAL FILTROS CONDICIONES ARCHIVOS

Otro problema similar al anterior es el de filtros o condiciones, es decir en muchas ocasiones es necesario obtener informacion acerca de un subconjunto de renglones de el archivo.

Por ejemplo todos los estudiantes que sean mayores de 17 anos, o todos los clientes que sean de Tijuana, etc. a esto le llamamos filtros o condiciones.

Tambien se resuelve de manera similar a los de archivos secuenciales es decir usando un ciclo de lectura de todo el archivo e ir desplegando todos los registros que cumplan la condicion.

Page 90: Curso de Pascal

Prog28.pas

program prog28;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

edad:integer;

status:char;

end;

var

alumno:alumnos;

archivo: file of alumnos;

edad1 : integer;

BEGIN

clrscr;

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

(* capturando condicion *)

writeln('edad >= ');readln(edad1);

(* ciclo de lectura y despliegue registro *)

while not(EOF(archivo)) do

begin

read(archivo,alumno);

(* revisando status registro y condicion tambien *)

if alumno.status = 'A' then

if alumno.edad >= edad1 then

Page 91: Curso de Pascal

begin

write('clave : ');writeln(alumno.clave);

write('nombre : ');writeln(alumno.nombre);

write('edad : ');writeln(alumno.edad);

end;

end;

(* cerrando archivo *)

close(archivo);

write('<enter>para continuar');readln;

END.

corrida:

Como se observa es un problema y una solucion similar al tema anterior de busquedas.

PROGRAMACION PASCAL

HACERLES PROGRAMAS DE FILTRADO A LOS ARCHIVOS ANTERIORES

 

UNIDAD 6: PASCAL REGISTROS Y ARCHIVOS DIRECTOS

TEMA 5: BAJAS O ELIMINACIONES ARCHIVOS PASCAL

Eliminacion o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen dos maneras por las cuales se puede realizar ese proceso.

Page 92: Curso de Pascal

En la primera manera se usan dos archivos, el archivo original y un archivo temporal, el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se termina de procesar todo el archivo original, el archivo temporal solo contendra todos los registros que no se quisieron eliminar, ya con estos dos archivo se procede a eliminar o borrar usando la instruccion remove el archivo original y se procede a renombrar usando la instruccion rename de el archivo temporal como nuevo archivo original.

Sin embargo en archivos directos no se puede ni se debe eliminar fisicamente registros de los archivos porque recordar que la clave del registro esta enlazada directamente a la posicion que dicho registro tiene en disco y no seria muy conveniente estarle cambiando la matricula al alumno cada rato o el numero de serie al auto, etc.

Aparte de que con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de recuperar esa informacion posteriormente.

Es por eso que otra tecnica comun de eliminacion es incluir un campo de estado, status o bandera o semaforo en el registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' –>alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura, busqueda y filtros deberan revisar esta campo de estado antes de hacer algo con el registro.

Como ya se incluyo el campo de status en el registro el programa es muy sencillo;

Prog29.pas

program prog29;

uses crt;

type

alumnos = RECORD

clave:integer;

nombre:string[30];

edad:integer;

status:char;

end;

var

alumno:alumnos;

archivo: file of alumnos;

Page 93: Curso de Pascal

clave:integer;

BEGIN

clrscr;

(* creando y abriendo el archivo *)

assign(archivo,'c:\prog\alumnos.dat');

reset(archivo);

(* clave a buscar *)

write('clave a eliminar');readln(clave);

(* moviendo apuntador a registro buscado *)

SEEK(archivo,clave-1);

(* leyendo registro *)

READ(archivo,alumno);

(* cambiando status registro *)

alumno.status := 'B';

(* moviendonos otra vez a posicion inicial *)

(* o sobreescribimos el registro que sigue *)

SEEK(archivo,clave-1);

(* grabando el registro actualizado *)

WRITE(archivo,alumno);

(* avisando *)

writeln('Registro Eliminado ');

write('<enter> para continuar ');readln;;

(* cerrando archivo *)

close(archivo);

END.

Corrida:

Page 94: Curso de Pascal

Como se observa es mas facil eliminar registros que incluyan banderas de estado y que ademas estan en archivos random o directos.

PROGRAMACION PASCAL :

Construir procedimientos de eliminacion para los archivos construidos.

UNIDAD 6: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS DIRECTOS

TEMA 6: OPERACIONES CON CAMPOS PASCAL ARCHIVOS

En este tema se analiza la manera de poder realizar operaciones o procesos con los campos de los registros en el archivo DIRECTO, lo unico importante a considerar es que los campos del registro son en cierta medida igual que variables normales y por tanto se pueden procesar de manera normal como lo muestra el ejemplo.

La tecnica depende de si se quiere modificar a) un solo registro, b) o un subconjunto de registros que cumplan una condicion o c) todo los registros del archivo.

Para el caso A) solo usar el caso de eliminacion o bajas, solo cambiar la parte donde cambiamos el estatus por la operaciony regrabar.

Para los casos B y C, realizar un ciclo de lectura del archivo y usar dentro el siguiente algoritmo

WHILE NOT EOF

READ(ARCHIVO,REGISTRO)

OPERACION CON CAMPO

SEEK(ARCHIVO, REGISTRO.CLAVE - 1)

WRITE(ARCHIVO,REGISTRO)

END WHILE

Page 95: Curso de Pascal

y no se ocupan los dos archivos como en el caso secuencial.

TAREA PROGRAMACION PASCAL :

CONSTRUIRLES PROCESIMIENTOS QUE PROCESEN ALGUNOS CAMPOS DE LOS ARCHIVOS EJEMPLOS QUE YA TIENEN CONSTRUIDOS.

UNIDAD 6: PASCAL REGISTROS Y ARCHIVOS DIRECTOS

TEMA 7: EDICION MODIFICACION DE REGISTROS PASCAL

Modificar o editar un registro es uno de los procesos mas comunes con archivos en disco, generalmente despues de un fuerte proceso de captura de registros, una revision o consulta general muestra muchos de ellos con errores de captura.

PROGRAMA DE BUSQUEDA

DESPLEGAR REGISTRO BUSCADO

PEDIR NUEVOS CAMPOS ( Y NO CAMBIAR NINGUNA CLAVE NI DE BUSQUEDA NI DE ARCHIVO )

SEEK(ARCHIVO, CLAVE O REGISTRO.CLAVE - 1)

WRITE(ARCHIVO,REGISTRO)

CLOSE(ARCHIVO)

TAREAS PROGRAMACION PASCAL

CONSTRUIRLES PROCEDIMIENTO DE EDICION O MODIFICACION A LOS ARCHIVOS YA CONSTRUIDOS.

partner-pub-8555 ISO-8859-1