Академический Документы
Профессиональный Документы
Культура Документы
Maturn, 2016
ndice
Introduccin.................................................................................................. 3
Planteamiento del problema.............................................................................4
CONTENIDO................................................................................................. 6
Programacin en pascal del caso planteado....................................................28
Conclusin.................................................................................................. 28
Bibliografas................................................................................................ 40
Introduccin
Pascal es un lenguaje de programacin desarrollado por el profesor suizo
Niklaus Wirth entre los aos 1968 y 1969 y publicado en 1970. Su objetivo era
2
CONTENIDO
Objetivo 5 Metodologa para la resolucin de problemas algortmicos.
Metodologa MAPS
La metodologa MAPS (Methodology for Algorithmic Problem Solving) es un
procedimiento estructurado que permite construir algoritmos para la solucin de
problemas. Presenta una serie de etapas que al ser seguidas con detalle, permite
un diseo adecuado.las etapas son las siguientes:
recibida.
Divisin: en el que a partir de la especificacin del algoritmo se divide el
proceso (algoritmo en abstracto) en varios subprocesos hasta llegar al nivel
de instruccin. Durante el proceso de divisin se determina la estructura de
6
IDENTIFICADORES
carcter de subrayado ( _ ).
2. Deben comenzar con un carcter alfabtico o el carcter de
subrayado.
3. Puede ser de cualquier longitud (slo los 63 primeros caracteres son
significativos
4. No se hace distincin entre maysculas y minsculas.
5. No se permite el uso de los IDENTIFICADORES RESERVADOS en los
nombres de variables, constantes, programas o sub-programas.
IDENTIFICADORES VLIDOS
Nombre
Cadena
Edad_ Mxima
X_Y_Z
Etiqueta2
IDENTIFICADORES NO VLIDOS
10
ELECCIN DE IDENTIFICADORES
La eleccin de identificadores permite una mejor lectura y
comprensin de un programa. No es aconsejable utilizar identificadores que
no sugieran ningn significado.
DECLARACIN DE ETIQUETAS
En el caso de que sea necesaria la utilizacin de la instruccin Goto,
deber marcarse con una etiqueta la lnea a donde desea enviarse el
control de flujo del programa. La declaracin deber encabezarse con el
identificador reservado Label, seguido por la lista de etiquetas separadas
por comas y terminada por un punto y coma.
Pascal estndar slo permite etiquetas formadas por nmeros de 1 a
4 dgitos.
Turbo-Pascal permite la utilizacin de nmeros y/o cualquier
identificador, excepto los identificadores reservados. Su uso no est
recomendado y en este tutorial no se emplear nunca.
DEFINICIN DE CONSTANTES
En la definicin de constantes se introducen identificadores que sirven
como sinnimos de valores fijos.
El identificador reservado Const debe encabezar la instruccin,
seguido por una lista de asignaciones de constantes.
11
valor_maximo =255;
precision
palabra_clave='Tutankamen';
=0.0001;
14
BEGIN
LEER B;
A:=B;
ESCRIBIR A;
END.
Colocar comentarios para la documentacin. Para ello pascal le
ofrece el uso de "{"
3.-
RELACIONAL.
DATOS: expresin general que describe los objetos con los
cuales trabaja una computadora.
DATOS SIMPLES:
NUMERICOS:
16
17
138 Cannot evaluate without System unit significa No se puede evaluar sin la
unidad System
139 Cannot access this symbol significa No se puede acceder a este smbolo
140 Invalid floating point operation significa Operacin de punto flotante no vlida
141 Cannot compile overlays to memory significa No se pueden compilar overlays
en memoria
142 Pointer or procedural variable expected significa Se esperaba una variable de
puntero o procedimiento
143 Invalid procedure or function reference significa Referencia a procedimiento o
funcin no valida
144 Cannot overlay this unit significa No se puede convertir en overlay esta unidad
145 Too many nested scopes significa Demasiados mbitos de anidacin
146 File access denied significa Acceso a archivo denegado
147 Object type expected significa Se esperaba un tipo objeto
148 Local object types are not allowed significa Tipos de objetos locales no se
permiten aqu
149 VIRTUAL expected significa Se esperaba VIRTUAL
150 Method identifier expected significa Se esperaba identificador de mtodo
151 Virtual constructors are not allowed significa Constructores virtuales no se
permiten aqu
152 Constructor identifier expected significa Se esperaba identificador de
contructor
153 Destructor identifier expected significa Se esperaba identificador de destructor
154 Fail only allowed within constructors significa Fail solo se permite dentro de los
constructores
155 Invalid combination of opcode and operands significa Combinacin de opcode
y operandos no vlida
156 Memory reference expected significa Se esperaba referencia a memoria
157 Cannot add or subtract relocatable symbols significa No se pueden sumar o
restar smbolos relocalizables
23
209 Overlay file read error significa Error de lectura en archivo overlay
210 Object not initialized significa Objeto no inicializado
211 Call to abstract method significa Llamada a mtodo abstracto
212 Stream registration error significa Error de registracin de stream
213 Collection index out of range significa ndice de coleccin fuera de rango
214 Collection overflow error significa Error de desbordamiento en coleccin
215 Arithmetic overflow error significa Error de desbordamiento aritmtico
216 General Protection fault significa Fallo de proteccin general
program TransitoNacional;
uses crt,dos;
const
type
end;
{tipo de array de registro}
tarray = array[1..max] of transito;
var
matricula: tarray;
26
i,d,c: integer;
procedure cargar;
var
opc : integer;
i,d : integer;
mat,op: char;
begin
clrscr;
for i:= 1 to max do
begin
clrscr;
writeln('Sistema de Registro de Vehiculos');
writeln;
writeln('Fecha
:');
repeat
writeln('Dia
:');
gotoxy(19,4);
read(d);
if (d>0) and (d<32) then
begin
matricula[i].Dia:=d
end
else
begin
writeln ('***** El dia debe estar entre 1 y 31*****');
op:=readkey;
end;
until ((d>0) and (d<32));
repeat
writeln('Mes
:');
gotoxy(19,8);
readln(d);
if (d>0) and (d<13) then
begin
matricula[i].Mes:=d
end
else
begin
writeln('***** El Mes debe estar entre 1 y 12*****');
op:=readkey;
end;
until ((d>0) and (d<13));
repeat
writeln('Ano
:');
gotoxy(19,12);
readln (d);
if (d>2015) and (d<2020) then
begin
matricula[i].Ano:=d
end
else
27
begin
writeln('***** El Ano debe estar entre 2015 and 2019*****');
op:=readkey;
end;
until ((d>2015) and (d<2020));
repeat
writeln('1: Particular / 2: Por Puesto / 3: Taxi / 4: Transporte
Publico');
writeln('Tipo de Vehiculo
:');
gotoxy(25,17);
readln(d);
if (d>0) and (d<5) then
begin
matricula[i].tipoveh:=d
end
else
begin
writeln('*****El Tipo De Vehiculo debe estar entre 1 y 4*****');
op:=readkey;
end;
until ((d>0) and (d<5));
writeln('Placa del Vehiculo (XXNNNXX)
:');
gotoxy(35,22);
readln(matricula[i].placa);
repeat
writeln('Numero de Pasajeros
: ');
gotoxy(35,23);
readln(d);
if (d>0) and (d<55) then
begin
matricula[i].numpax:=d
end
else
begin
writeln('***** El numero de pasajeros debe estar entre 1 y 54');
op:=readkey;
end;
until ((d>0) and (d<55));
writeln('Alcabala
: ');
gotoxy(48,27);
readln(matricula[i].alcabala);
writeln('Vehiculo Entrante o Saliente "E" "S" : ');
gotoxy(47,28);
readln(matricula[i].vehiculoes);
writeln('Entidad Federal
: ');
gotoxy(48,29);
readln(matricula[i].entidad);
end;
readkey;
end;
28
:');
writeln('Numero de Pasajeros:');
gotoxy(23,8);
writeln(matricula[i].numpax);
writeln('Alcabala: ');
gotoxy(15,9);
writeln(matricula[i].alcabala);
writeln('Vehiculo Entrante o Saliente "E" "S"
gotoxy(42,10);
writeln(matricula[i].vehiculoes);
writeln('Entidad Federal : ');
gotoxy(25,11);
writeln(matricula[i].entidad);
writeln('presione una tecla para salir');
end;
if Registro <> matricula[i].placa then
begin
clrscr;
writeln('Matricula No encontrada');
writeln('presione una tecla para salir');
end;
end;
readkey;
end;
procedure eliminar;
var
Registro : string;
validar : string;
begin
clrscr;
writeln('Eliminar Registro de Vehiculos ');
writeln('Indique Matricula: (
) ');
readln(Registro);
for i:= 1 to max do
begin
if Registro = matricula[i].placa then
begin
clrscr;
writeln('Mantenimiento de Sistema');
matricula[i].placa := '';
writeln('presione una tecla para salir');
end;
if Registro <> matricula[i].placa then
begin
clrscr;
writeln('Matricula No encontrada');
writeln('presione una tecla para salir');
end;
end;
readkey;
30
:');
end;
procedure modificar;
var
Registro : string;
op: char;
begin
clrscr;
writeln('Modificacion de Datos Por Vehiculo ');
writeln('Indique Matricula:
');
gotoxy(22,2);
readln(Registro);
for i:= 1 to max do
begin
if Registro = matricula[i].placa then
begin
clrscr;
writeln('Fecha :');
repeat
writeln('Dia
:');
gotoxy(9,2);
readln(d);
if (d>0) and (d<33) then
begin
matricula[i].dia:=d
end
else
begin
writeln('*****El Dia debe estar entre 1 y 31*****');
op:=readkey;
end;
until ((d>0) and (d<33));
repeat
writeln('Mes
:');
gotoxy(10,6);
readln(d);
if (d>0) and (d<13) then
begin
matricula[i].mes:=d
end
else
begin
writeln('***** El mes debe estar entre 1 y 12*****');
op:=readkey;
end;
until ((d>0) and (d<13));
repeat
writeln('Ano
:');
gotoxy(11,10);
read(d);
if (d>2015) and (d<2020) then
begin
31
matricula[i].Ano:=d
end
else
begin
writeln ('*****El Ano debe estar entre 2015 y
2019*****');
op:=readkey;
end;
until ((d>2015) and (d<2020));
writeln('1: Particular / 2: Por Puesto / 3: Taxi / 4:
Transporte Publico');
writeln('Tipo de Vehiculo
:');
gotoxy(23,15);
readln(matricula[i].tipoveh);
writeln('Placa del Vehiculo (XXNNNXX)
: ');
gotoxy(37,16);
readln(matricula[i].placa);
repeat
writeln('Numero de pasajeros
: ');
gotoxy(34,17);
readln(d);
if (d>0) and (d<55) then
begin
matricula[i].numpax:=d
end
else
begin
writeln('***** El Numero de pasajeros debe estar entre 1
y 54*****');
op:=readkey;
end;
until ((d>0) and (d<55));
writeln('Alcabala
: ');
gotoxy(38,21);
readln(matricula[i].alcabala);
writeln('Vehiculo Entrante o Saliente "E" "S"
: ');
gotoxy(45,22);
readln(matricula[i].vehiculoes);
writeln('Entidad Federal
:');
gotoxy(40,23);
readln(matricula[i].entidad);
writeln('presione una tecla para salir');
end;
if Registro <> matricula[i].placa then
begin
clrscr;
writeln('Matricula No encontrada');
writeln('presione una tecla para salir');
end;
end;
Readkey;
end;
32
procedure reporteplaca;
var
i,d:integer;
registro, p:string;
begin
clrscr;
gotoxy(10,10);
write('Indique la placa a buscar:
readln(p);
for i:= 1 to max do
if (matricula[i].placa=p) then
begin
clrscr;
write('*******matricula
Entidad*******');
gotoxy(12,3+i);
write(matricula[i].placa);
');
pasajeros
alcabala
gotoxy(26,3+1);
write(matricula[i].numpax);
gotoxy(38,3+1);
write(matricula[i].alcabala);
gotoxy(48,3+i);
write(matricula[i].vehiculoes);
gotoxy(55, 3+i);
write(matricula[i].entidad);
gotoxy(10,18);
write('***** Presione una tecla para salir*****');
readkey;
clrscr;
end;
end;
procedure reportealcabala;
var
i,d:integer;
registro,p:string;
begin
clrscr;
gotoxy(10,10);
write('Indique la alcabala a buscar:
readln(p);
for i:= 1 to max do
if (matricula[i].alcabala=p) then
begin
33
');
E/S
clrscr;
write('*******alcabala
pasajeros
Entidad*******');
gotoxy(12,3+i);
write(matricula[i].alcabala);
matricula
E/S
gotoxy(26,3+1);
write(matricula[i].numpax);
gotoxy(38,3+1);
write(matricula[i].placa);
gotoxy(48,3+i);
write(matricula[i].vehiculoes);
gotoxy(55, 3+i);
write(matricula[i].entidad);
gotoxy(10,18);
write('***** Presione una tecla para salir*****');
readkey;
clrscr;
end;
end;
procedure reporteentidad;
var
i,d:integer;
registro,p:string;
begin
clrscr;
gotoxy(10,10);
write('Indique la Entidad a buscar:
readln(p);
for i:= 1 to max do
if (matricula[i].entidad=p) then
begin
clrscr;
write('*******Entidad
pasajeros
matricula*******');
gotoxy(8,3+i);
write(matricula[i].entidad);
gotoxy(24,3+1);
write(matricula[i].numpax);
gotoxy(35,3+1);
write(matricula[i].alcabala);
gotoxy(45,3+i);
write(matricula[i].vehiculoes);
34
');
alcabala
E/S
gotoxy(55, 3+i);
write(matricula[i].placa);
gotoxy(10,18);
write('***** Presione una tecla para salir*****');
readkey;
clrscr;
end;
end;
procedure menureporte;
var
tecla
:
char;
sal
:
boolean;
nnm
:
longint;
len
:
integer;
begin
sal
:= false;
repeat
clrscr;
writeln('
***** Reporte de Estadisticas *****');
writeln;
writeln('
A = Por Alcabala');
writeln('
P = Por Placa');
writeln('
E = Por Entidad');
writeln('
V = Volver');
writeln;
writeln('
<<< Elija Opcion >>>');
repeat
tecla := upcase(readkey);
until tecla in['A','P','E','V'];
clrscr;
case tecla of
'A' : reportealcabala;
'P' : reporteplaca;
'E' : reporteentidad;
procedure menu;
var
tecla
:
char;
sal
:
boolean;
nnm
:
longint;
35
len
begin
sal
repeat
integer;
:=
false;
clrscr;
writeln('
***** Menu *****');
writeln;
writeln('
I = Incluir');
writeln('
C = Consultar');
writeln('
M = Modificar');
writeln('
E = Eliminar');
writeln('
R = Reporte de Estadisticas ');
writeln('
S = Salir');
writeln;
writeln('
<<< Elija Opcion >>>');
repeat
tecla := upcase(readkey);
until tecla in['I','C','M','E','R','S'];
clrscr;
case tecla of
'I' : cargar;
'C' : buscar(len);
'E' : Eliminar;
'M' : modificar;
'R' : menureporte;
{'M' : begin
write('
Entre Num. modificar: ');
readln(nnm);
modificadatos(nnm);
end;
'E' : begin
write('
Entre Num. eliminar : ');
readln(nnm);
eliminapaciente(nnm);
end;
'R' : begin
write('
Entre Num. reporte : ');
readln(nnm);
reporte(nnm);
end;
}
'S' : sal := true;
end;
until sal = true;
end;
begin
end.
clrscr;
i:= 1;
menu;
36
Conclusin
37
Bibliografas
38
39