martes, 27 de mayo de 2008

DESCRIPCION DE ERRORES EN PASCAL

Mensajes de error en Turbo Pascal 7.0.

Turbo Pascal genera dos tipos de mensajes de error: mensajes de error del compilador y mensajes de error en tiempo de ejecución.

Mensajes de Error de Compilación:
Si tiene lugar un error de compilación mientras se está compilando dentro del IDE, Turbo Pascal hace activa la ventana de edición y sitúa el cursor en el punto del código fuente donde se produjo el error.
Si el error tiene lugar mientras se usa el compilador de línea de comandos, Turbo Pascal muestra el mensaje de error y el número de la línea de código fuente; un circunflejo (^) en la línea mostrada indica la localización del error.


Mensajes de Error en Tiempo de Ejecución:
Si el programa genera un error en tiempo de ejecución, se parará y aparecerá este mensaje:
Run-time error at
donde nnn es el número del error en tiempo de ejecución
xxxx:yyyy es la dirección del error en tiempo de ejecución.


Mensajes de Error de Compilación.

1 Out of memory
significa Memoria Agotada
2 Identifier expected significa Se esperaba un identificador
3 Unknown identifier
significa Identificador desconocido
4 Duplicate identifier significa Identificador duplicado
5 Syntax error
significa Error de sintaxis
6 Error in real constant significa Error en constante real
7 Error in integer constant significa Error en constante entera
8 String constant exceeds line significa Constante de cadena excede la línea
10 Unexpected end of file
significa Fin de archivo no esperado
11 Line too long
significa Línea demasiado larga
12 Type identifier expected significa Se esperaba identificador de tipo
13 Too many open files significa Demasiados archivos abiertos
14 Invalid file name
significa Nombre de archivo no válido
15 File not found
significa Archivo no encontrado
16 Disk full significa Disco lleno
17 Invalid compiler directive significa Directiva de compilación no válida
18 Too many files significa Demasiados archivos
19 Undefined type in pointer def significa Tipo no identificado en definición de puntero
20 Variable identifier expected significa Se esperaba identificador de variable
21 Error in type
significa Error en tipo
22 Structure too large significa Estructura demasiado grande
23 Set base type out of range
significa Tipo base del conjunto fuera de rango
24 File components may not be files or objects significa Componentes de archivos no deben ser archivos u objetos
25 Invalid string length significa Largo de cadena no válido
26 Type mismatch
significa Tipos no coinciden
27 Invalid subrange base type
significa Tipo subrango base no válido
28 Lower bound greater than upper bound significa Límite inferior es más grande que el límite superior
29 Ordinal type expected
significa Se esperaba tipo ordinal
30 Integer constant expected significa Se esperaba constante entera
31 Constant expected significa Se esperaba una constante
32 Integer or real constant expected significa Se esperaba una constante entera o real
33 Pointer Type identifier expected significa Se esperaba identificador de tipo de puntero
34 Invalid function result type
significa Tipo de resultado para la función no válido
35 Label identifier expected significa Se esperaba identificador de etiqueta
36 BEGIN expected
significa Se esperaba BEGIN
37 END expected
significa Se esperaba END
38 Integer expression expected significa Se esperaba una expresión entera
39 Ordinal expression expected significa Se esperaba una expresión ordinal
40 Boolean expression expected significa Se esperaba una expresión booleana
41 Operand types do not match
significa Tipos de operadores no coinciden
42 Error in expression significa Error en la expresión
43 Illegal assignment significa Asignación ilegal
44 Field identifier expected
significa Se esperaba identificador de campo
45 Object file too large significa Archivo de objeto demasiado grande
46 Undefined external significa External no definido
47 Invalid object file record significa Registro de archivo en objeto no válido
48 Code segment too large significa Segmento de código demasiado grande
49 Data segment too large
significa Segmento de datos demasiado grande
50 DO expected significa Se esperaba DO
51 Invalid PUBLIC definition significa Definición PUBLIC no válida
52 Invalid EXTRN definition significa Definición EXTRN no válida
53 Too many EXTRN definitions significa Demasiadas definiciones EXTRN
54 OF expected significa Se esperaba OF
55 INTERFACE expected significa Se esperaba INTERFACE
56 Invalid relocatable reference significa Referencia relocalizable no válida
57 THEN expected significa Se esperaba THEN
58 TO or DOWNTO expected significa Se esperaba TO o DOWNTO
59 Undefined forwarrd
significa Forward no definido
61 Invalid typecast significa Cambio de tipo inválido
62 Division by zero
significa División por cero
63 Invalid file type significa Tipo de archivo no válido
64 Cannot read or write variables of this type
significa No se pueden leer o escribir este tipo de variables
65 Pointer variable expected significa Se esperaba una variable de puntero (pointer)
66 String variable expected significa Se esperaba una variable de cadena (string)
67 String expression expected significa Se esperaba una expresión de cadena
68 Circular unit reference significa Referencia circular entre unidades
69 Unit name mismatch significa El nombre de la unidad no coincide
70 Unit version mismatch significa La versión de la unidad no coincide
71 Internal stack overflow
significa Desbordamiento interno de la pila
72 Unit file format error significa Error en el formato de la unidad
73 IMPLEMENTATION expected significa Se esperaba IMPLEMENTATION
74 Constant and case types do not match
significa El tipo en el CASE y la constante no coinciden
75 Record or object variable expected significa Se esperaba una variable objeto o registro
76 Constant out of range
significa Constante fuera de rango
77 File variable expected significa Se esperaba una variable de archivo
78 Pointer expression expected significa Se esperaba una expresión de punteros
79 Integer or real expression expected significa Se esperaba una expresión entera o real
80 Label not within current block significa Etiqueta no está dentro del bloque actual
81 Label already defined significa Etiqueta ya definida
82 Undefined label in peeding statement part
significa Etiqueta no definida en la parte de la sentencia anterior
83 Invalid @ argument significa Argumento para @ inválido
84 UNIT expected significa Se esperaba UNIT
85 "; " expected
significa Se esperaba ";"
86 ":" expected significa Se esperaba ":"
87 "," expected significa Se esperaba ","
88 "(" expected significa Se esperaba "("
89 ")" expected significa Se esperaba ")"
90 "=" expected significa Se esperaba "="
91 ":=" expected significa Se esperaba ":="
92 "[" or "(." expected significa Se esperaba "[" o "(."
93 "]" or ".)" expected significa Se esperaba "]" o ".)"
94 "." expected significa Se esperaba "."
95 ".." expected significa Se esperaba ".."
96 Too many variables significa Demasiadas variables
97 Invalid FOR control variable
significa Variable de control en el FOR no válida
98 Integer variable expected significa Se esperaba una variable entera
99 Files and procedure types are not allowed here significa Tipos archivos o procedimientos no se permiten aquí
100 String length mismatch significa Tamaño de la cadena no coincide
101 Invalid ordering of fields significa Orden de los campos inválido
102 String constant expected
significa Se esperaba constante de cadena
103 Integer or real variable expected significa Se esperaba una variable entera o real
104 Ordinal variable expected significa Se esperaba una variable ordinal
105 INLINE error significa Error en INLINE
106 Character expression expected
significa Se esperaba expresión de caracteres
107 Too many relocation items significa Demasiados items de relocalización
108 Overflow in arithmetic operation significa Desbordamiento en operación aritmética
109 No enclosing FOR, WHILE or REPEAT statement significa Sentencias FOR, WHILE o REPEAT no cerradas
110 Debug information table overflow significa Desbordamiento en la tabla de información de depuración
112 CASE constant out of range significa Constante CASE fuera de rango
113 Error in statement
significa Error en la sentencia
114 Cannot call an interrupt procedure significa No se puede llamar a un procedimiento de interrupción
116 Must be in 8087 mode to compile this
significa Debe estar en modo 8087 para compilar esto
117 Target address not found significa Dirección de destino no encontrada
118 Include files are not allowed here significa Archivos incluidos no se premiten aquí
119 No inherited methods are accessible here significa Ningún método heredado se permite aquí
121 Invalid qualifier significa Calificador no válido
122 Invalid variable referentence
significa Referencia a variable no válida
123 Too many symbols significa Demasiados símbolos

124 Statement part too large significa Parte ejecutable demasiado grande
126 Files must be var parameters significa Archivos deben ser parámetros var
127 Too many conditional symbols significa Demasiados símbolos condicionales
128 Misplaced conditional directive significa Directiva condicional fuera de lugar
129 ENDIF directive missing significa No se encontró la directiva ENDIF
130 Error in initial conditional defines significa Error en el defines condicional inicial
131 Header does not match previous definition significa Cabecera no coincide con la definición previa
133 Cannot evaluate this expression
significa No se puede evaluar esta expresión
134 Expression incorrectly terminated significa Expresión incorrectamente terminada
135 Invalid format specifier significa Especificador de formato no válido
136 Invalid indirect reference significa Referencia indirecta no válida
137 Structured variables are not allowed here significa Variables de estructura no se permiten aquí
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 símbolo
140 Invalid floating point operation significa Operación de punto flotante no válida
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 función 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 anidación
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 método
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 Combinación de opcode y operandos no válida
156 Memory reference expected significa Se esperaba referencia a memoria
157 Cannot add or subtract relocatable symbols significa No se pueden sumar o restar símbolos relocalizables
158 Invalid register combination significa Combinación de registros no válida
159 286/287 instructions are not enabled significa No están habilitadas las intrucciones 286/287
160 Invalid symbol reference significa Referencia a símbolo no válida
161 Code generation error significa Error de generación de código
162 ASM expected significa Se esperaba ASM
163 Duplicate dynamic method index significa Índice a método dinámico duplicado
164 Duplicate resource identifier significa Identificador de recurso duplicado
165 Duplicate or invalid export index significa Índice de exportación duplicado o no válido
166 Procedure or function identifier expected significa Se esperaba identificador de función o procedimiento
167 Cannot export this symbol significa No se puede exportar este símbolo
168 Duplicate export name significa Nombre de exportación duplicado
169 Executable file header too large significa Encabezado del archivo ejecutable demasiado grande
170 Too many segments significa Demasiados segmentos



Mensajes de Error en Tiempo de Ejecución

1 Invalid function number significa Número de función inválido
2 File not found
significa Archivo no encontrado
3 Path not found
significa Camino no encontrado
4 Too many open files significa Demasiados archivos abiertos
5 File access denied
significa Acceso al archivo denegado
6 Invalid file handle significa Manejador de archivo inválido
12 Invalid file access code significa Código de acceso al archivo inválido
15 Invalid drive number significa Número de dispositivo inválido
16 Cannot remove current directory significa No se puede eliminar el directorio actual
17 Cannot rename across drives significa No se puede renombrar en diferentes dispositivos
18 No more files significa No más archivos
100 Disk read error
significa Error de lectura en disco
101 Disk write error
significa Error de escritura en disco
102 File not assigned
significa Archivo no asignado
103 File not open
significa El archivo no está abierto
104 File not open for input
significa El archivo no está abierto en modo lectura
105 File not open for output
significa El archivo no está abierto en modo escritura
106 Invalid numeric format
significa Formato numérico inválido
150 Disk is write- protected
significa El disco está protegido contra escritura
151 Bad drive request struct length significa Tamaño erroneo en la estructura de petición al dispositivo
152 Drive not ready
significa Dispositivo no está preparado
154 CRC error in data significa Error de CRC en los datos
156 Disk seek error
significa Error de búsqueda en disco
157 Unknown media type significa Tipo de medio desconocido
158 Sector Not Found
significa Sector no encontrado
159 Printer out of paper significa Impresora sin papel
160 Device write fault significa Fallo de escritura en dispositivo
161 Device read fault significa Fallo de lectura en dispositivo
162 Hardware failure significa Fallo de hardware
200 Division by zero
significa División por cero
201 Range check error
significa Error en la comprobación de rango
202 Stack overflow error
significa Desbordamiento de pila
203 Heap overflow error
significa Desbordamiento de montículo
204 Invalid pointer operation significa Operación de puntero inválida
205 Floating point overflow
significa Desbordamiento de punto flotante
206 Floating point underflow significa Subdesbordamiento de punto flotante
207 Invalid floating point operation significa Operación de punto flotante inválida
208 Overlay manager not installed significa Administrador de overlay no instalado
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 método abstracto

212 Stream registration error significa Error de registración de stream
213 Collection index out of range significa Índice de colección fuera de rango
214 Collection overflow error significa Error de desbordamiento en colección
215 Arithmetic overflow error
significa Error de desbordamiento aritmético
216 General Protection fault
significa Fallo de protección general

viernes, 23 de mayo de 2008

jueves, 22 de mayo de 2008

EJERCICIOS

Sean 10 alumnos de la sección 3N6IS y dadas 5 notas por alumno de la materia programación.
Calcular y mostrar:
· El promedio de la materia por alumno.
· El promedio de la sección.

Program NOTAS1;
uses crt;
var
alumnos,materia,notas: integer;
promedioalumno,promedioseccion,sumaseccion,suma,nota: Real;
nombre:string[30];

BEGIN

alumnos:=1;
sumaseccion:=0;

while alumnos <=10 do

begin
writeln('Introduzca el nombre del alumno:'); r
eadln(nombre);
suma:=0;
notas:=1;
while notas <=5 do
begin
writeln('Introduzca las 5 notas:');
readln(nota);
suma:=suma+nota;
notas:=notas+1;
end;
promedioalumno:=suma/5;
sumaseccion:=sumaseccion+promedioalumno;
alumnos:=alumnos+1;
writeln('El nombre del alumnos es:', nombre);
writeln('El promedio del alumno es:', promedioalumno:2:2);
readln;
end;
promedioseccion:=sumaseccion/2;
writeln('El Promedio de la seccion es: ',promedioseccion:2:2);
readln;
END.

Un cajero cobra facturas por servicios a 60 personas en un caja de un banco, averiguar:
a) Cuantas facturas fueron mayores a 50 bs. Y cuantas menores o igual a 50.
b) Cuanto recaudo en total por facturas mayores a 50 y cuanto recaudo en total por facturas menores o iguala 50.


Program facturas;
Uses crt;
Var
contador,menor,mayor: INTEGER;
sumatotal,sumamayores,sumamenores,factura: Real;
be:char;

Begin
contador:=1;
menor:=0;
mayor:=0;
sumatotal:=0;
sumamayores:=0;
sumamenores:=0;

While contador<=60 do

begin
clrscr;
writeln('Usted lleva ingresadas: ', contador, ' facturas');
writeln('Ingrese el valor de una factura: ');
readln(factura);
contador:=contador+1;
sumatotal:= sumatotal+factura;

if factura>50 then
begin
mayor:=mayor+1;
sumamayores:=sumamayores+factura;
end;

if factura<=50 then

begin
menor:=menor+1;
sumamenores:=sumamenores+factura;
end;

sumatotal:=sumamenores+sumamayores;

end;
clrscr;
writeln('facturas mayores a 50:', mayor);
writeln('facturas menores o iguales a 50:', menor);
writeln('Recaudo total:', sumatotal:2:2);
writeln('Recaudo mayores a 50:',sumamayores:2:2);
writeln('Recaudo menores o iguales a 50:',sumamenores:2:2);
be:=readkey;
End.


Dada N notas de un estudiante calcular:
a) Cuantas notas tiene aprobadas y cuantas reprobadas.
b) El promedio de notas.
c) El promedio de notas aprobadas y el promedio de notas reprobadas.




Leer 15 números positivos y convertirlos a negativos e imprimir dichos números antes y después de la conversión.

Program positivo_negativo;
Uses crt;
var
numero,num_convertido:real;
c:integer;
const
negativo=-1;

begin
for c:=1 to 10 do
begin
writeln('Introduzca numero Positivo ó diferente de cero: ');
readln(numero);

if numero <> 0 then
begin
num_convertido:=numero*negativo;
writeln('El numero de entrada es:' , numero:2:2);
wruteln('El numero convertido es:' , num_convertido:2:2);
end;
end;
readln;
clrscr;
end.


Escribir un programa en Pascal que calcule el salario neto semanal de 10 trabajadores en función del número de horas trabajadas, valor hora trabajada 20 bs, las deducciones y asignaciones.
El salario bruto se calcula de la siguiente manera:
· Las primeras 35 horas se pagan a tarifa normal
· Las horas que pasen de 35 horas se pagan, 15% más del valor de la hora trabajada.
Para el salario neto se le deduce lo siguiente:
a) Si el salario es menor o igual a 50 bolívares fuertes no se hace deducciones.
b) Si el salario mayor a 50 y menor a 90 bolívares fuertes, la deducción es del 25% del salario
c) Para el salario mayor se 90 la deducción será de 45% del salario.
Para el salario neto se le asigna lo siguiente:
a) 20% del salario bruto, si tiene 3 o menos hijos.
b) 30% del salario bruto, si tiene más de 3 hijos.
Mostrar por pantalla:
a) Nombre del trabajador.
b) Cantidad de hijos del trabajador.
c) Sueldo neto del trabajador.

PROGRAM SALARIO_10;
USES CRT;
VAR
SALARIO_NETO,SAL_BRUTO,HORAS_TRA,HORAS_EX:REAL;
VALOR_EX,ASIGNACION,DEDUCCION:REAL;
N,CANT_HIJO:INTEGER;
NOMBRE:STRING[30];
CONST
POR1=0.25;
POR2=0.45;
VALOR_HORA=20;

PROCEDURE LEER_DATOS;
BEGIN
WRITE ('INTRODUZCA EL NOMBRE DEL TRABAJADOR:');
READLN (NOMBRE);
WRITE ('INTRODUZCA LA CANTIDAD DE HIJOS DEL TRABAJADOR:');
READLN (CANT_HIJO);
WRITE ('INTRODUZCA LA CANTIDAD DE HORAS TRABAJADAS:');
READLN (HORAS_TRA);
END;

PROCEDURE SALARIO_BRUTO;
BEGIN
IF HORAS_TRA <= 35 THEN SAL_BRUTO:= HORAS_TRA*VALOR_HORA; IF HORAS_TRA > 35 THEN
BEGIN
HORAS_EX:=HORAS_TRA-35;
VALOR_EX:=VALOR_HORA+(VALOR_HORA*0.15);
SAL_BRUTO:=(35*VALOR_HORA)+(HORAS_EX*VALOR_EX)
END;
END;

PROCEDURE CALCULO_DEDUCCIONES;
BEGIN
IF SAL_BRUTO<=50 THEN DEDUCCION:=0; IF (SAL_BRUTO>50) AND (SAL_BRUTO<=90) THEN DEDUCCION:=SAL_BRUTO*POR1; IF SAL_BRUTO >90 THEN
DEDUCCION:=SAL_BRUTO*POR2;
END;

PROCEDURE CALCULO_ASIGNACIONES;
BEGIN
IF CANT_HIJO<=3 THEN ASIGNACION:=SAL_BRUTO*0.20; IF CANT_HIJO>3 THEN
ASIGNACION:=SAL_BRUTO*0.30;
END;

PROCEDURE CALCULO_SUELDO_NETO;
BEGIN
SALARIO_NETO:= SAL_BRUTO+ASIGNACION-DEDUCCION;
END;

PROCEDURE MOSTRAR;
BEGIN
WRITELN('EL NOMBRE DEL TRABAJADOR ES:' ,NOMBRE);
WRITELN('LA CANTIDAD DE HIJOS DEL TRABAJADOR ES:' ,CANT_HIJO);
WRITELN('EL SUELDO NETO DEL TRABAJADOR ES:' ,SALARIO_NETO:2:2);
READLN;
END;

PROCEDURE CICLO;
BEGIN
N:=0;
WHILE N <=10 DO BEGIN LEER_DATOS; SALARIO_BRUTO; CALCULO_DEDUCCIONES; CALCULO_ASIGNACIONES; CALCULO_SUELDO_NETO; MOSTRAR; N:= N+1; END; END; (* PROGRAMA PRINCIPAL*) BEGIN CICLO; END.

jueves, 15 de mayo de 2008

EJERCICIOS PROPUESTOS Y RESUELTOS

EJERCICIOS RESUELTOS

1. Escribir un programa en Pascal que detecte si un número introducido desde le teclado es positivo o negativo.

PROGRAM positivo_negativo;
USES CRT;
VAR
NUM:INTEGER;

BEGIN
WRITELN ('INTRODUZCA NUMERO ENTERO: ');
READLN (NUM);


IF NUM > 0 THEN
WRITELN('EL NUMERO ES POSITIVO');

IF NUM < 0
WRITELN('EL NUMERO ES NEGATIVO');

IF NUM=0 THEN
WRITELN('EL NUMERO NO ES NI POSITIVO NI NEGATIVO ES CERO');

READLN;
CLRSCR;
END.

2. Escribir un programa en Pascal que calcule el importe de una factura sabiendo que el IVA a aplicar es del 9% y que si el importe bruto de la factura es superior a 50 BsF, se debe realizar un descuento del 5%.

PROGRAM FACTURA;
USES CRT;
VAR
MONTO_BRUTO,MONTO_NETO,MONTO_IVA,DESCUENTO:REAL;
CONST
IVA=0.09;
DES=0.05;


BEGIN

WRITELN ('INTRODUZCA MONTO BRUTO DE LA FACTURA: ');
READLN (MONTO_BRUTO);

MONTO_IVA:=MONTO_BRUTO*IVA;

IF MONTO_BRUTO > 50 THEN
BEGIN
DESCUENTO:=MONTO_BRUTO*DES;
MONTO_NETO:=MONTO_BRUTO+MONTO_IVA-DESCUENTO;
WRITE('EL MONTO NETO DE LA FACTURA ES:' , MONTO_NETO);

END;


IF MONTO_BRUTO<=50 THEN BEGIN DESCUENTO:=0; MONTO_NETO:=MONTO_BRUTO+MONTO_IVA;

WRITE('EL MONTO NETO DE LA FACTURA ES:' , MONTO_NETO);
END;
READLN;
CLRSCR;
END.


3. Hacer un algoritmo que calcule y muestre el total a pagar por la compra de pantalones, se debe pedir como entrada el valor del pantalón y la cantidad de pantalones comprados, además si se compra 5 pantalones o mas se aplica un descuento del 25% al monto total a pagar y si son menos de 5 pantalones el descuento es del 10% al monto total a pagar.

PROGRAM FACTURA;
USES CRT;
VAR
CANT_PANT:INTEGER;
PRECIO_PANT,MONTO_PAGAR,DESCUENTO:REAL;
CONST
DES1=0.10;
DES2=0.25;


BEGIN
WRITELN ('INTRODUZCA LA CANTIDAD DE PANTALONES A COMPRAR: ');
READLN (CANT_PANT);
WRITELN('INTRODUZCA EL PRECIO DEL PANTALON: ');

READLN(PRECIO_PANT);


IF CANT_PANT >= 5 THEN
BEGIN
DESCUENTO:=(CANT_PANT*PRECIO_PANT)*DES2;
MONTO_PAGAR:=(CANT_PANT*PRECIO_PANT)-DESCUENTO;
WRITE('EL MONTO TOTAL A PAGAR ES:' , MONTO_PAGAR);
END;


IF CANT_PANT<=5 THEN BEGIN DESCUENTO:=(CANT_PANT*PRECIO_PANT)*DES1; MONTO_PAGAR:=(CANT_PANT*PRECIO_PANT)-DESCUENTO; WRITE('EL MONTO TOTAL A PAGAR ES:' , MONTO_PAGAR); END;


READLN;
CLRSCR;
END.

4. Sumar los números del 1 al 10.

PROGRAM SUMAR;
USES CRT;
VAR
NUM,SUMA,CONTADOR:INTEGER;

BEGIN

CONTADOR:=1; SUMA:=0;


WHILE CONTADOR<=10 DO

BEGIN

WRITELN ('INTRODUZCA LOS 10 NUMEROS A SUMAR: ');

READLN (NUM); SUMA:= SUMA + NUM; CONTADOR:=CONTADOR+1;

END;
WRITELN ('LA SUMA ES:', SUMA);
READLN;
CLRSCR;
END.

EJERCICIOS PROPUESTOS

1. Escribir un programa en Pascal que detecte si un número leído desde el teclado es mayor o menor que 100.


2. un comerciante efectúa durante el mes N ventas a distintos clientes. Se desea saber:
a) Cuantas ventas fueron mayores a 550 bsf.
b) Cuantas ventas fueron mayores a 200 bsf. y menores o iguales a 550bsf.
c) Calcular los promedios de cada grupo (puntos ay b).
d) Mostrar por pantalla lo solicitado en los puntos a, b y c.

3. Un profesor de un curso, hace un examen de matemática a cada uno de sus N alumnos. De acuerdo a los resultados obtenidos se procede de la siguiente manera: En caso de obtener nota menor a 4 el alumno esta reprobado y debe reparar en marzo, En caso contrario el alumno esta aprobado.
Se desea saber:
a) Cuantos alumnos reprobaron la materia.
b) Cuantos alumnos aprobaron la materia.
c) Calcular los promedios de los alumnos reprobados y aprobador.
d) Mostrar por pantalla lo solicitado en a, b, c.

4. Un vendedor recibe un sueldo base, más 12% extra por comisiones de sus ventas, el vendedor desea saber cuanto dinero cobrará por concepto de comisiones por las cuatro ventas que realizo en el mes y el total que recibirá en el mes por sueldo base y comisiones.


5. Un profesor hace dos exámenes de matemática y física a cada uno de sus 40 alumnos. Desea saber:
a) Cuantos alumnos sacaron más de 7 en cada examen.
b) Cuantos alumnos sacaron menos o igual a 7 en cada examen.
b) Calcular los promedios de notas de cada examen.
d) Mostrar por pantalla lo solicitado en a, b, c.


lunes, 5 de mayo de 2008

PROGRAMACION MODULAR

Programacion Modular:

Uno de los métodos más conocidos para resolver un problema es dividirlo en problemas más pequeños, llamados subproblemas. De esta manera, en lugar de resolver una tarea compleja y tediosa, resolvemos otras más sencillas y a partir de ellas llegamos a la solución.

Si traslados este metodo a la programación, se puede crear y trabajar con subprogramas para resolverlos los problemas. A estos subprogramas se les suele llamar módulos, de ahí viene el nombre de programación modular. En Pascal disponemos de dos tipos de módulos: los procedimientos y las funciones.

Los procedimientos: Es un subprograma que realiza una tarea específica. Para hacer que se ejecute, hay que escribir su nombre en el cuerpo de otro procedimiento o en el programa principal. Hay que tener en cuenta que la declaración debe hacerse antes de que sea llamado por otro módulo.

Un procedimiento se compone de la palabra procedure seguida del nombre del procedimiento y una lista de parámetros que es opcional.
Las secciones de declaración de constantes (const), de tipos (type) y de variables (var) también pueden aparecer en la estructura de cualquier procedimiento.

El cuerpo del procedimiento, se delimita por las palabras reservadas begin y end, y en su interior puede contener sentencias simples o estructuradas
.

Procedure nombre (lista_parametros);
const declarar_ctes;
type declarar_tipos;
var declarar_vars;
begin
cuerpo_procedimiento
end ;

En los programas y procedimientos se puede usar variables globales y locales

Variable local: Es una variable que se declara dentro de un subprograma, y se dice que es local al subprograma. Y lo que la caracteriza es que su valor sólo está disponible mientras se ejecuta el subprograma, el programa principal no tiene conocimiento alguno de las variables locales
.
Variable Global: Es una variable que se declara en la sección de declaración de variables en
el programa principal, a diferencia de las locales, su valor está disponible tanto en el cuerpo del programa principal como en el de cualquiera de los subprogramas declarados.

Funciones:
Funciones predefinidas:
Las funciones predefinidas, también llamadas estándar, son las que el propio lenguaje Pascal pone a disposición del programador. Por ejemplo, si necesitas calcular el valor absoluto de un número, no es necesario construir la función, pues ya se dispone de una que lo hace.
Dependiendo del tipo de compilador
de Pascal que se use, se dispondrá de más o menos funciones estándar, pero siempre se tendrá un grupo básico que comparten todos.

Algunas de las funciones básicas:
sin(x:real)
seno de x
cos(x:real)
coseno de x
sqr(x:real)
cuadrado de x
sqrt(x:real)
raíz cuadrada de x
abs(x:real)
valor absoluto de x
ln(x:real)
logaritmo neperiano de x
int(x:real)

Funciones definidas por el usuario: Son las que el propio usuario declara, de igual manera que declara procedimientos. Las funciones nacen con el propósito de ser subprogramas que siempre tienen que devolver algún valor.
Las dos principales diferencias entre procedimientos
y funciones son:

- Las funciones siempre devuelven un valor al programa que las invocó.
- Para llamar a un procedimiento se escribe su nombre en el cuerpo del programa, y si los necesita, se incluyen los parámetros entre paréntesis. Para invocar una función es necesario hacerlo en una expresión.

El cuerpo de las funciones, function seguido del nombre de la funcion, luego los parametros a usar y el tipo de dato que devolvera la función, se delimita por las palabras reservadas begin y end, y en su interior puede contener sentencias simples o estructuradas.

function nombre [(p1,p2,...)] : tipo;
const lista_ctes;
type lista_tipos;
var lista_vars;
begin
nombre := valor_devuelto
end;

Una vez declarados los procedimientos y funciones que van a formar el programa se debe realizar el llamado de dichos procedimientos y funciones en el programa principal, este programa debe contener un Inicio y End.
Ejemplo:

Program Calcular; (*nombre del programa*)
uses crt; (*Declaracion de las unidades*);
var (*Declaracion de las variables*)
const (*Declaracion de las constantes es opcional*)

begin (*Inicio del programa principal*)
leer; (*llamada del procedimiento leer, previamente declarado*)
sumar; (*llamada del procedimiento sumar, previamente declarado*)
calcular_sueldo; (*llamada del procedimiento calcular sueldo, previamente declarado*)
End. (*Fin del programa principal*)

Nota: todo lo que esta entre parentesis son comentarios, no influyen en la ejecución del programa.

Ejemplo: Una compañía de electricidad desea imprimir el costo del consumo de electricidad de sus clientes. El costo se efectúa de acuerdo a las siguientes condiciones:
- Los primeros 140 kwh o menos paga una tarifa fija de 35 bsf.
- Si es mayor a 140 kwh y menor a 170 kwh, se cobra la tarifa fija más los kwh extras multiplicados 0.15.
- Las mediciones que superen los 170 kwh, se cobra la tarifa fija mas los kwh extras multiplicados por 0.50
Imprimir el monto de la factura y el consumo.
PROGRAM FACTURA;
USES CRT;
VAR
CONSUMO,COSTO,EXTRA:REAL;
CONST
TARIFA_FIJA=35;
POR1=0.50;
POR2=0.15;
BEGIN
WRITELN ('INTRODUZCA LA CANTIDAD KWH CONSUMIDOS: ');
READLN (CONSUMO);

IF CONSUMO <= 140 THEN
BEGIN
COSTO:=TARIFA_FIJA;
WRITELN('EL MONTO TOTAL A PAGAR ES:' , COSTO);
READLN;
END;
IF (CONSUMO > 140) AND (CONSUMO <= 170) THEN
BEGIN
EXTRA:=(CONSUMO-140)*POR2;
COSTO:=TARIFA_FIJA+EXTRA;
WRITE('EL MONTO TOTAL A PAGAR ES:' ,COSTO);
READLN;
END;
IF CONSUMO > 170 THEN
BEGIN
EXTRA:=(CONSUMO-140)*POR1;
COSTO:=TARIFA_FIJA+EXTRA;
WRITE('EL MONTO TOTAL A PAGAR ES:' ,COSTO);
READLN
END;

CLRSCR;
READLN;
END.

ESTE ES EL MISMO EJEMPLO, USANDO PROGRAMACION MODULAR.(Con programa principal)

PROGRAM FACTURA;
USES CRT;
VAR
CONSUMO,COSTO,EXTRA:REAL;
CONST
TARIFA_FIJA=35;
POR1=0.50;
POR2=0.15;

PROCEDURE LEER;
BEGIN

WRITELN ('INTRODUZCA LA CANTIDAD KWH CONSUMIDOS: ');
READLN (CONSUMO);
END;

PROCEDURE CALCULO_CONSUMO;
BEGIN

IF CONSUMO <= 140 THEN
BEGIN
COSTO:=TARIFA_FIJA;
WRITELN('EL MONTO TOTAL A PAGAR ES:' , COSTO:2:2);
READLN; END;

IF (CONSUMO > 140) AND (CONSUMO <= 170) THEN
BEGIN
EXTRA:=(CONSUMO-140)*POR2;
COSTO:=TARIFA_FIJA+EXTRA;
WRITE('EL MONTO TOTAL A PAGAR ES:' ,COSTO:2:2);
READLN;
END;
IF CONSUMO > 170 THEN
BEGIN
EXTRA:=(CONSUMO-140)*POR1;
COSTO:=TARIFA_FIJA+EXTRA;
WRITE('EL MONTO TOTAL A PAGAR ES:' ,COSTO:2:2);
READLN
END;
END;

(*PROGRAMA PRINCIPAL*)
BEGIN
LEER;
CALCULO_CONSUMO;
CLRSCR;
READLN;
END.




viernes, 2 de mayo de 2008

ALMACENAMIENTOS DE DATOS

2.2.1 Instrucciones de decisión:

La instrucción If...Then: Permite ejecutar distintos bloques de código dependiendo de cuál sea la evaluación de un determinado enunciado. Si la condición es verdadera, se ejecuta el código que se encuentra a continuación de la instrucción If...Then. Si la condición es falsa, se ejecuta el código siguiente a la instrucción Else (si existiera).

Sintaxis:

if {enunciado} then
begin
{bloque de código}
end;

o bien:

if {enunciado} then
begin
{bloque de código}
end
else
begin
{bloque de código}
end;


Nota: Si el bloque de código es de una sola instrucción, los comandos begin y end pueden ser omitidos.

Ejemplos con estructuras de decisión:
- Calcular el mayor dado 2 numeros.


program ejemploDecision1;
var
a, b: integer;

begin
a := 8;
b := 2;

if a > b then
begin
writeln('a es el mayor');
end;
end.


program ejemploDecision2;
var
a, b: integer;


begin
writeln('Ingrese un número');
readln(a);
writeln('Ingrese otro número');
readln(b);

if a > b then
begin
writeln(a,' es mayor que ',b);
end

else

begin
if a <>If anidados: Son los if q estan uno dentro de otro if, ver el siguiente ejemplo, el programa distingue si el usuario es un niño, un joven o un adulto de acuerdo a la edad.

program niño_joven_adulto;
var
a: integer;

begin
writeln('¿Cuál es tu edad?');
readln(a);

if a <>= 0) AND ( a <= 12) then begin writeln('Sos un niño'); end; if (a >= 13) AND (a <= 21) then begin writeln('Sos un joven'); end; if a >= 22 then
begin
writeln('Sos un adulto');
end;
end.


Estructura de decisión Case: La instrucción case nos permite tomar distintos caminos en el flujo del programa teniendo en cuenta el valor de una variable de tipo integer o char.

Sintaxis:

case {miVariable} of
{caso 1}:
begin
{bloque de código}
end;

{caso 2}:
begin
{bloque de código}
end;

else:{opcional}
begin
{bloque de código}
end;
end;

Ejemplo de case: hacer un prograna que escriba en palabras el número ingresado por el usuario. Si es más grande que diez escribe: MUY GRANDE

program numero;
var
a: integer;

begin
writeln('Ingrese un número del 1 al 10');
readln(a);

case a of
1: writeln('UNO');
2: writeln('DOS');
3: writeln('TRES');
4: writeln('CUATRO');
5: writeln('CINCO');
6: writeln('SEIS');
7: writeln('SIETE');
8: writeln('OCHO');
9: writeln('NUEVE');
10: writeln('DIEZ');

else
writeln('MUY GRANDE');
end;
end.

Instrucciones de repetición:

While...Do: La instrucción while ... do nos permite repetir un bloque de código mientras se cumpla una condición determinada. Dicha condición también es conocida como "guarda". La sintaxis es la siguiente:

while {enunciado} do
begin
{bloque de código}
end;

La estructura while...do chequea la condición antes de entrar al ciclo. Puede suceder que la condición siempre sea falsa con lo cual nunca se ejecute el bloque interno.

El siguiente ejemplo muestra el resultado es: ¡hola! ¡hola! ¡hola! usando while..... do

program RepeticionHola;
var
i : integer;
begin
i := 1;

while i <= 3 do begin writeln('¡hola!'); i := i + 1; end; end. Repeat...Until: La instrucción Repeat...Until es similar a la instrucción While. La diferencia entre ambas es que en las estructuras while, la condición se evalúa al principio del ciclo y en las estructuras repeat..until, al final. En las estructuras while, si la condición es falsa cuando comienza el ciclo, éste no se ejecuta nunca. Como en repeat...until la condición se evalúa al final, el ciclo se ejecutará por lo menos una vez.

sintaxis:

repeat
{bloque de código}

until {enunciado};

Después de cada repetición del ciclo se evalúa la condición. Si la condición es verdadera, el ciclo termina y se sale de él, ejecutándose la instrucción siguiente al ciclo. Si la condición es falsa, el cuerpo del ciclo no se vuelve a ejecutar. Notar que la lógica es inversa a la de la instrucción while. La sintaxis no requiere begin y end.

El siguiente ejemplo muestra el resultado es: ¡hola! ¡hola! ¡hola! usando repeat..... until:

program RepeticionHolaCase;
var
i: integer;

begin
i := 1;
repeat
writeln('¡hola!');
i := i + 1;
until i >= 3;
end.


Repetición For...Do: La instrucción For...Do se utiliza para repetir una determinada cantidad de veces un bloque de código. La instrucción va incrementando una variable determinada dentro del rango de valores especificado.

Sintaxis:

for MiVar:= valorInicial to valorFinal do
begin
{bloque de código}
end;

La variable miVar se irá incrementando desde valorInicial hasta valorFinal, y tomará todos los valores enteros de dicho rango.

Análogamente se puede obtener el resultado inverso (decrementar la variable) modificando levemente la sintaxis:

for MiVar:= valorInicial downto valorFinal do
begin
{bloque de código}
end;


program RepeticionFor;
var
i: integer;
begin

for i := 1 to 5 do
begin
writeln(i);
end;
end.
{el programa muestra en pantalla: 1
2
3
4
5}









ESTRUTURA DE UN PROGRAMA

La estructura de un programa son cada una de las partes que los constituyen, genericamente la estructura de un programa seria la siguiente:

Partes de un programa
Cabecera (título)
Declaración de unidades
Declaración de constantes
Declaración de tipos
Declaración de variables

Inicio
Declaración de subprogramas, procedimientos /funciones
Cuerpo del programa
End.

En pascal seria de la siguiente manera:

PROGRAM nombre;
USES crt, dos;
CONST
nom_cte1 = valor1;
nom_cteN = valorN;

TYPE
tipo1=string [15];
VAR
nom_var1 : tipo1;
nom_varN : tipoN;
BEGIN
Read/Readln(datos)

Function o procedure (incluye el conjunto de instrucciones, condiciones y procedimientos que conforman el programa)
Write/Writeln(‘El valor de a es ´,a)
END.


Cabecera de un programa: La cabecera es una sección obligatoria, debe figurar en todos los programas. Debe comenzar con la palabra reservada PROGRAM seguida del nombre del programa y un ";". Es recomendable incluír también un comentario lo utilizamos para documentar el programa, en el comentario se debe incluír el mayor número de componentes de los que se citan a continuación:
Autor del programa
Versión actual
Fecha de inicio del programa
Fecha de la última modificación
Qué se pretende que haga el programa
Nombre del fichero fuente en el que se guarda

PROGRAM MiPrimerPrograma;
(*************************************************)
(* Autor: Benito Santos Feijoo *)
(* Version: 1.0 *)
(* Fecha inicio: 25/11/2000 *)
(* Fecha modif.: 29/11/2000 *)
(* Objetivo: El que sea... *)
(* Fichero: nombre-fichero.pas *)
(*************************************************)


Declaración de unidades: En esta sección se declaran las unidades que se van a usar en el programa. La palabra reservada que comienza la declaración de unidades es USES y que va seguida de los nombres de las unidades que se quieran utilizar en el programa separados por coma ",". Se finaliza la sección con un punto y coma ";". esta sección no es obligatoria.

USES nombre_unidad1,nombre_unidad2,...,nombre_unidad_n;

Declaración de constantes: Esta sección se usa para las constantes que se van a usar en el programa, para declarar las constantes se debe empezar con la palabra reservada CONST, seguida de una lista de parejas nombre_de_la_constante=valor_de_la_constante.
Una constante es un objeto al que se le asigna un valor al declararlo y lo mantiene durante toda la ejecución del programa.

CONST
Min = 0;
Max = 1000;
Incremento = 5;
Saludo = 'Hola';

Tipos de constantes:

Constantes literales: Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no tienen nombre. Ejemplo de declaracón de constantes literales

VolumenEsfera := 4/3 * 3.1416 * Radio * Radio * Radio;

en este ejemplo 3, 4, y 3.1416 son constantes literales


Constantes declaradas: También llamadas constantes con nombre, son las que se declaran en la sección CONST asignándoles un valor directamente.

CONST
Pi = 3.141592; (* valor real *)

Min = 0; (* entero *)

Max = 99; (* entero *)

Saludo = 'Hola'; (* cadena caract. *)


Constantes expresión: También se declaran en la sección CONST, pero a estas no se les asigna un valor directamente, sino que se les asigna una expresión. Esta expresión se evalúa en tiempo de compilación y el resultado se le asigna a la constante.

Ejemplo:
CONST
Min = 0;

Max = 100;

Intervalo = 10;

N = (Max - Min) div Intervalo;

Centro = (Max - Min) div 2;


Declaración de tipos: Esta parte se usa cuando el programador necesita definir sus propios tipos de datos en el programa. Para programas sencillos no hará falta declarar tipos, bastará con los que proporciona Pascal (Integer, Real, Boolean, String). Los tipos que se declaren en esta seccion serán utilizador luuego para declarar las variables. A veces es importante declarar tipos para hacer el código más legible pero no es es obligatorio hacerlo.

Para declarar los tipos se comienza con la palabra reservada TYPE
el siguiente ejemplo se declararan unos cuantos:
TYPE
tContador = Integer;
tPalabra = String[20];
tFinSemana = (Sabado,Domingo); (* tipo enumerado *)
tHorasDia = 0..23; (* tipo subrango *)


Declaración de variables: Esta sección, aunque no es obligatoria casi siempre se declara. Pues un programa por muy pequeño que sea, casi siempre va a hacer uso de variables.
La forma de declarar variables es la siguiente se debe comenzar con la palabra reservada VAR, seguida de una lista de parejas lista_de_variables=tipo_al_que_pertenecen. Cada par debe ir seguido por un punto y coma. La lista_de_variables es uno o más nombres de variables separados por comas.

Una variable representa una porción de memoria en donde guardamos un dato que dependerá del tipo al que pertenezca la variable. A diferencia de una constante, el valor de una variable puede cambiar durante la ejecución de un programa.
Ejemplo de declaración de variables:

VAR
I, J, K : Integer;
Contador : Integer;
Radio : Real;
Letra : Char;

Toda variable pertenece a un tipo de dato concreto. En la declaración de una variable se debe indicar el tipo al que pertenece. Así tendremos variables enteras, reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la vida de una variable:

Declaración de variables: La declaración se realiza en la sección que comienza con la palabra VAR
Iniciación de variables: Esto no es más que darle un valor inicial a una variable, lo primero que se hace con una variable es declararla, lo siguiente es iniciarla. Esto se hace para evitar posibles errores en tiempo de ejecución, pues una variable tiene un valor indeterminado después de declararla. Principalmente, existen dos maneras de otorgar valores iniciales a variables:
Mediante una sentencia de asignación
Mediante uno de los procedimientos de entrada de datos (read o readln)


Este ejemplo reúne los dos casos:
begin

n := 10; (* asignamos valor al maximo *)

i := 1; (* asignamos valor al contador *)

while (i <= n) do

begin

writeln('El valor de i es ',i);

i := i + 1

end

end.


Utilización de variables: Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que presenta varias formas de hacerlo. A continuación se muestran unas cuantas:
Incrementar su valor: i := i + 1
Controlar un bucle: for i:=1 to 10 do
Chequear una condición: if i<10>Participar en una expresión: n := (Max - Min) div i

Las variables se pueden declarar en diferentes tipos de datos

Clasificaciones de los tipos de datos:

Tipos estáticos: Casi todos los tipos de datos son estáticos, la excepción son los punteros y no se tratarán debido a su complejidad. Que un tipo de datos sea estático quiere decir que el tamaño que ocupa en memoria no puede variar durante la ejecución del programa. Es decir, una vez
declarada una variable de un tipo determinado, a ésta se le asigna un trozo de memoria fijo, y este trozo no se podrá aumentar ni disminuír.

Tipos dinámicos: Dentro de esta categoría entra sólamente el tipo puntero. Este tipo te permite tener un mayor control sobre la gestión de memoria en los programas. Con ellos se maneja el tamaño de las variables en tiempo de ejecución, o sea, cuando el programa se está ejecutando.
Los punteros quizás sean el concepto más complejo a la hora de aprender un lenguaje de programación, sobre todo si es el primero que aprendes. Debido a esto, no lo trataremos. .

Tipos simples: Como su nombre indica son los tipos básicos en Pascal. Son los más sencillos y los más fáciles de aprender. Por todo esto, serán en los que nos centremos.
Los tipos simples más básicos son: entero, logico, caracter y real
. La mayoría de los lenguajes de programación los soportan, no como ocurre con los estructurados que pueden variar de un lenguaje a otro.

Tipos estructurados: Mientras que una variable de un tipo simple sólo referencia a un elemento, los estructurados se refieren a colecciones de elementos.
Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy variadas: tenemos colecciones ordenadas que se representan mediante el tipo array (arreglo), colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen otros tipos, son los llamados registros.

Tipos ordinales: Dentro de los tipos simples, los ordinales son los más abundantes. De un tipo se dice que es ordinal porque el conjunto de valores que representa se puede contar, es decir, podemos establecer una relación uno a uno entre sus elementos y el conjunto de los números naturales.
Dentro de los tipos simples ordinales, los más importantes son:
El tipo entero (
integer)
El tipo lógico, (boolean)
El tipo carácter (char)

Tipos no-ordinales: Simplificando, podríamos reducir los tipos simples no-ordinales al tipo real. Este tipo sirve para declarar variables que pueden tomar valores dentro del conjunto de los números reales.


Los tipos básicos que nos interesan
Después de ver una de las posibles clasificaciones para los tipos de datos, pasemos a ver los que nos interesan por ahora: los tipos simples. Realmente de los tipos simples veremos: integer, boolean,char, strings y real

El tipo integer (entero): Al declarar una variable de tipo entero, se crea una variable numérica que puede tomar valores positivos o negativos, y sin parte decimal.
Este tipo de variables, se pueden utilizar en asignaciones, comparaciones, expresiones aritméticas, en algunos casos se usan para:
Controlar un bucle (sentencias repetitivas)
Usarlas como contador, incrementando su valor cuando sucede algo
Realizar operaciones enteras, es decir, sin parte decimal

El tipo boolean (lógico): El tipo de datos lógico es el que permite usar variables que disponen sólo de dos posibles valores cierto o falso. Debido a esto, su utilidad salta a la vista, y no es otra que variables de chequeo. Sirven para mantener el estado de un objeto mediante dos valores:
si/no
cierto/falso
funciona/no funciona
on/off

El tipo real (real): Pascal soporta el conjunto entero de números. Pero no es el único, también permite trabajar con números pertenecientes al conjunto real. El tipo de datos real es el que se corresponde con los números reales. Este es un tipo importante para los cálculos.
nota: En Pascal y en todos los lenguajes de programación los numeros reales se escribe con un punto, ejemplo: 3.1416
Los tipos char (carácter): Con el tipo carácter puedes tener objetos que representen una letra, un número, etc. Es decir, puedes usar variables o constantes que representen un valor alfanumérico, cada variable sólo podrá almacenar un carácter.

Los tipos string (cadena): Con las cadenas de caracteres (strings) se puede contener en una sóla variable más de un carácter. Por ejemplo, puedes tener en una variable tu nombre.

Declaración de procedimientos y funciones: Esta sección es muy importante, aunque para los programas sencillos no se necesita. En ella puedes declarar procedimientos y funciones (subprogramas) para que se usen en otros subprogramas o en el cuerpo principal.
Se puede incluír cuantos procedimientos y funciones se desee, incluso alternar entre ellos. Se debe tener cuidado con el orden en que se escriben. Ya que si un subprograma llama a otro, debería estar declarado primero el que es llamado.
La diferencia principal entre una función y un procedimiento es que la primera devuelve un valor y el segundo no devuelve nada.
Ejemplo de como se declaran una función y un procedimiento:


FUNCTION Suma(a:integer;b:integer):integer;
begin
Suma := a + b end;
End.

PROCEDURE Escribe(frase:string);
begin
writeln(frase)
end;


Son dos subprogramas muy sencillos. La función recibe como parámetros dos variables de tipo entero, las suma y devuelve su valor. El procedimiento recibe una cadena de caracteres e invoca a writeln para escribirla en pantalla.

Cuerpo del programa: También se le llama bloque del programa, y es junto con la cabecera, la única sección obligatoria en un programa Pascal. Debe comenzar y finalizar con las palabras reservadas begin y end respectivamente.
Muy imortante: Después de la palabra end, siempre tiene que ir un punto que indica el final del programa.
Entre begin y end se escriben una o más sentencias, ya sean simples o compuestas. Las sentencias pueden ser varias: asignaciones, llamadas a procedimientos y funciones, sentencias selectivas (sentencias if, case), sentencias repetitivas (sentencias for, while, repeat).

UNIDADES DE PASCAL

Turbo Pascal y las unidades estándar:

Las unidades son un conjunto de constantes, tipos de datos, variables, procedimientos y funciones encapsuladas bajo un mismo identificador, poseen una estructura bien definida, Las unidades pueden ser predefinidas (estándar) o definidas por el usuario.

Declaración de las unidades:
PROGRAM Ejemplo;
USES
Dos, Graph, Crt;
Entre las unidades estandar de Turbo Pascal tenemos las siguientes:

  • SYSTEM
  • CRT
  • DOS
  • PRINTER

UNIDAD SYSTEM

Contiene los procedimientos y funciones estándar de Turbo Pascal relativas a la entrada/salida, cadenas de caracteres, calculo en coma flotante, gestión de memoria, entre otras d¡funciones. Esta unidad no necesita ser referenciada ya que se carga automáticamente en la compilación de cada programa.

UNIDAD CRT

Esta unidad proporciona un conjunto de declaraciones que permiten el acceso al control de
los modos de pantalla, de teclado, posicionamiento del cursor, entre otros.


Algunos de sus procedimientos son:
– clrscr: borra la pantalla.
– keypressed: detecta la pulsación de una tecla.
– Sound: hace sonar el altavoz interno
– window: define una ventana de texto en la pantalla.


UNIDAD DOS

Esta unidad contiene declaraciones, constantes, tipos variables, procedimientos y funciones
relacionadas con el sistema operativo DOS y la gestión de archivos.


Algunos de sus procedimientos son:
– gettime: proporciona la hora a través del reloj interno
– getdate: proporciona fecha registrada en el ordenador.
– Disksize: proporciona el tamaño de la unidad de almacenamiento señalada.


UNIDAD PRINTER

Esta unidad facilita la tarea del programador cuando utiliza la impresora como dispositivo de salida. Permite enviar la salida estándar de Pascal a la impresora utilizando para ello los procedimientos “write” y “writeln.”


Enlaces de interes:

http://www.cmat.edu.uy/cmat/cursos/2004/introcomp/labo/unidades.pdf

CONTENIDO UNIDAD II

UNIDAD 2: ESTRUCTURA DE DATOS.

2.1 Estructura de un programa.
2.1.1 Definición de constantes
2.1.2 Definición de variables
2.1.3 Definición de tipos de datos.
2.2 Almacenamiento de datos.
2.2.1 Instrucciones de decisión.
2.2.2 Instrucciones de repetición.
2.3 Arreglos
2.3.1 Definición de arreglo unidimensional
2.3.2 Arreglo multidimensionales
2.3.3 Manejo de Arreglos.