Ayudantía desarrollada en la UTFSM. Este documento es un draft o sea falta modificar algunas cosas yo solo ocupaba esto como apoyo.
Ayudantía I Francisco Riveros E. | 21/03/2006 |
I .Introducción: Programas antiguos ->Programación de ahora.
II. INTRODUCCION PSEUDOCODIGO
PALABRA | UTILIZACIÓN |
ABRE | Abre un archivo |
CASO | Selección entre múltiples alternativas |
CIERRA | Cierra un archivo |
ENTONCES | Complemento de la selección |
ESCRIBE | Visualiza un dato en pantalla |
FIN | Finaliza un bloque de instrucciones |
HASTA | Cierra la iteración HAZ - HASTA |
HAZ | Inicia la iteración HAZ - HASTA |
INICIO | Inicia un bloque de instrucciones |
LEER | Leer un dato del teclado |
MIENTRAS | Inicia la iteración mientras |
NO | Niega la condición que le sigue |
II.a SELECCIÓN
También conocida como la estructura SI-CIERTO-FALSO, plantea la selección entre dos alternativas con base en el resultado de la evaluación de una condición o predicado; equivale a la instrucción IF de todos los lenguajes de programación y se representa gráficamente de la siguiente manera:
III. ESTRUCTURA GENERAL DE UN PROGRAMA PASCAL
Program identificador ; {cabecera opcional en Turbo Pascal}
Uses identificadores
Label lista de etiquetas ; {sección de etiquetas}
Const
definiciones de constantes
Type
declaración de tipos de datos definidos por el usuario
Var
declaración de variables
Procedure
definiciones de procedimientos
Function
definiciones de funciones
begin {cuerpo del programa}
sentencias
end.
Program MiPrimerPrograma; {cabecera} Uses Crt; {declaraciones} Const iva =0.10; Type cadena =string[35]; meses =1..12; Var sueldo :real; numero :integer; nombre :cadena; Nmes :meses; begin ClrScr; {Limpia la pantalla} Write ('Escribe tu nombre : '); {Visualiza información en pantalla} ReadLn(nombre);{Leer un dato del teclado} WriteLn ('Bienvenido ', nombre); {Visualiza información en pantalla} Readkey; {Espera la pulsación de una tecla} ClrScr end. |
ADVERTENCIA:
Todo objeto referenciado en un programa debe haber sido previamente definido.
IV. IDENTIFICADORES
En la mayoría de los programas de computador, es necesario manejar datos de entrada o de salida, los cuales necesitan almacenarse en la memoria principal del computador en el tiempo de ejecución. Para poder manipular dichos datos, necesitamos tener acceso a las localidades de memoria donde se encuentran almacenados; esto se logra por medio de los nombres de los datos o IDENTIFICADORES.
Las reglas para formar los identificadores en Pascal son las siguientes:
- Pueden estar compuestos de caracteres alfabéticos, numéricos y el carácter de subrayado ( _ ).
- Deben comenzar con un carácter alfabético o el carácter de subrayado.
- Puede ser de cualquier longitud (sólo los 63 primeros caracteres son significativos).
- No se hace distinción entre mayúsculas y minúsculas.
- No se permite el uso de los IDENTIFICADORES RESERVADOS en los nombres de variables, constantes, programas o sub-programas.
Identificadores válidos
Nombre
Cadena
Edad_Maxima
X_Y_Z
Etiqueta2
Identificadores no válidos
Num&Dias : carácter & no válido
X nombre : Contiene un blanco
begin : es una palabra reservada
eje@s : carácter @ no válido
V. DEFINICION DE CONSTANTES
El identificador reservado Const debe encabezar la instrucción, seguido por una lista de asignaciones de constantes. Cada asignación de constante debe consistir de un identificador seguido por un signo de igual y un valor constante, como se muestra a continuación:
Const
valor_maximo =255;
precision =0.0001;
palabra_clave='Tutankamen';
encabezado =' NOMBRE DIRECCION TELEFONO ';
CONSTANTES PREDEFINIDAS :
Nombre | Tipo | Valor |
pi | real | 3.1415926536 (Sólo en Turbo Pascal) |
false | boolean | |
true | boolean | |
MaxInt | integer | 32767 |
VI. DEFINICION DE TIPOS
La asignación de tipos a los datos tiene dos objetivos principales:
- Detectar errores de operaciones en programas.
- Determinar cómo ejecutar las operaciones.
Los tipos definidos por el programador pueden utilizarse para definir nuevos tipos, por ejemplo :
Type
entero = integer;
Var
i,n :entero;
VI.a TIPOS ENTEROS
Tipos enteros predefinidos
Tipo | Rango | Formato |
byte | 0 .. 255 | 8 bits sin signo |
integer | -32768 .. 32767 | 16 bits con signo |
longint | -247483648 .. 2147483647 | 32 bits con signo |
shortint | -128 .. 127 | 8 bits con signo |
word | 0 .. 65535 | 16 bits sin signo |
VI.b TIPOS REALES
REAL
En el contexto de Pascal, un número real es aquel que está compuesto de una parte entera y una parte decimal, separadas por un punto. El rango de estos números está dado entre los valores 1E-38 y 1E+38 .
BOOLEAN
Un valor de tipo boolean puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false, los cuales están definidos de tal manera que false < true .
CHAR
Un valor de tipo char es cualquier carácter que se encuentre dentro del conjunto ASCII ampliado, el cual está formado por los 128 caracteres del ASCII más los 128 caracteres especiales que presenta, en este caso, IBM.
Los valores ordinales del código ASCII ampliado se encuentran en el rango de 0 a 255. Dichos valores pueden representarse escribiendo el carácter correspondiente encerrado entre apóstrofes.
Así podemos escribir :
'A' < 'a'
Que significa : " El valor ordinal de A es menor que el de a " o " A está antes que a
STRING
Un tipo string (cadena) es una secuencia de caracteres de cero o más caracteres correspondientes al código ASCII, escrito en una línea sobre el programa y encerrado entre apóstrofos.
El tratamiento de cadenas es una característica muy potente de Turbo Pascal que contiene ISO Pascal estándar.
Ejemplos:
VAR
Nombre : String[30];
{Permite un máximo de 30 caracteres en la variable, si no es 255}
BEGIN
Nombre := 'Ernesto Chávez';
WriteLn (Nombre[5]);
{Visualiza el 5to caracter de la cadena}
END.
'Turbo Pascal','Tecnológico', #13#10
Nota:
|
PROGRAM Test;
VAR
x : REAL; { variable name is x, type is real
i : INTEGER: { variable name is i, type is integer
c : CHAR; { variable name is c, type is character
s : STRING; { variable name is s, type is string
BEGIN
x := -34.55; { valid real number assigned to variable x }
x := -3.9E-3; { valid real number assigned to variable x }
WRITELN(x); { x contains the value -3.9E-3 }
i := 10; { valid integer number assigned to variable i }
i := i * i; { valid (!) - i will be 100 now }
i := 9933; { valid integer number assigned to variable i }
i := -99999; { invalid integer - too small }
i := 999.44; { invalid assignment - types do not match }
c := '1'; { valid character assigned to variable c }
c := 1; { invalid assignment - types do not match }
c := 'Bert'; { invalid assignment - types do not match }
c := 'd'; { valid character assigned to variable c }
WRITELN(c); { c contains the value 'd' }
d := 'c'; { unknown variable - the variable d is not declared }
WRITELN(s); { invalid reference - s has undefined value }
END.
VII. OPERADORES
En Pascal, se manejan tres grupos de operadores:
1.- OPERADORES ARITMETICOS BASICOS.
Operador | Operación | Operandos | Ejemplo | Resultado |
+ | Suma | real , integer | a + b | suma de a y b |
- | Resta | real , integer | a - b | Diferencia de a y b |
* | Multiplicación | real , integer | a * b | Producto de a por b |
/ | División | real , integer | a / b | Cociente de a por b |
div | División entera | integer | a div b | Cociente entero de a por b |
mod | Módulo | integer | a mod b | Resto de a por b |
Conviene observar lo siguiente:
- Cuando los dos operandos sean del tipo integer, el resultado será de tipo integer.
- Cuando cualquiera de los dos operandos, o ambos, sean del tipo real, el resultado será de tipo real.
- Cuando, en la operación div, OPERANDO-1 y OPERANDO-2 tienen el mismo signo, se obtiene un resultado con signo positivo; si los operandos difieren en signo, el resultado es negativo y el truncamiento tiene lugar hacia el cero.
Ejemplos:
7 div 3 = 2
(-7) div (-3) = 2
(-7) div 3 = -2
7 div (-3) = -2
15.0 div 3.0 = no válido
15 div (4/2) = no válido
La operación div almacena sólo la parte entera del resultado, perdiéndose la parte fraccionaria (truncamiento).
- La operación MODULO está definida solamente para OPERANDO-2 positivo. El resultado se dará como el entero no negativo más pequeño que puede ser restado de OPERANDO-1 para obtener un múltiplo de OPERANDO-2 ; por ejemplo :
6 mod 3 = 0
7 mod 3 = 1
(-6) mod 3 = 0
(-7) mod 3 = -1
(-5) mod 3 = -2
(-15) mod (-7) = -1
En la operaciones aritméticas, debe asegurarse que el resultado de sumar, restar o multiplicar dos valores, no produzca un resultado fuera de los rangos definidos por la implementación para los diferentes tipos.
2.- OPERADORES RACIONALES
Símbolo | Significado |
= | IGUAL que |
<> | NO IGUAL que |
< | MENOR que |
> | MAYOR que |
<= | MENOR o IGUAL que |
>= | MAYOR o IGUAL que |
Ejemplos
Relación | Resultado |
20 = 11 | false |
15 < 20 | true |
PI > 3.14 | true |
'A' < 20 | false |
'A' = 65 | true |
3.- OPERADORES LOGICOS
NOT
Sintaxis : not operando
Descripción : Invierte el valor de verdad de operando.
AND
Sintaxis : operando.1 and operando.2
Descripción : Produce un resultado con valor de verdad true cuando ambos operandos tienen valor de verdad true; en cualquier otro caso el resultado tendrá un valor de verdad false.
OR
Sintaxis : operando.1 or operando.2
Descripción : Produce un resultado con valor de verdad false cuando ambos operadores tienen valores de verdad false; en cualquier otro caso el resultado tendrá un valor de verdad true.
Expresiones
Precedencia de operadores | |
5 | - (Menos unario) |
4 | not |
3 | * / div mod and shl shr |
2 | + - or xor |
1 | = <> > < >= <= |
Las reglas de evaluación para las expresiones son :
- Si todos los operadores en una expresión tienen la misma precedencia, la evaluación de las operaciones se realiza de izquierda a derecha.
- Cuando los operadores sean de diferentes precedencias, se evalúan primero las operaciones de más alta precedencia (en una base de izquierda a derecha ), luego se evalúan las de precedencia siguiente, y así sucesivamente.
- Las reglas 1) y 2) pueden ser anuladas por la inclusión de paréntesis en una expresión.
Ejemplos :
· 3 + 2*5 {*,+}
4 + 10 =14
· 20*4 div 5
{Igual prioridad de izquierda a derecha : *,div}
80 div 5 = 16
3 - 5 * (20+(6/2))
3 - 5 * (20+(6/2)) = 3 - 5 * (20 + 3)
{paréntesis más interno}
= 3 - 5 * 23 {segundo paréntesis}
= 3 - 115 {Multiplicación}
= -112 {resta}
VIII.INSTRUCCIONES DE ASIGNACION
numero := 100 ;
importe := precio * cantidad ;
hipotenusa := sqrt(sqr(cateto_op)+sqr(cateto_ad ));
begin
suma := 1000.0;
incr := 20.0;
total := suma + incr
{Obsérvese la ausencia de punto y coma
al final de la instrucción}
end.
READLN y READ
Var
nombre :string[30] ;
edad :integer;
estatura :real;
.
.
.
ReadLn(nombre);
ReadLn(edad);
ReadLn(estatura);
WRITELN Y WRITE
Write ('! HOLA ');
WriteLn('AMIGOS !');
Ejemplo
Valor:= 25.0776;
Sentencias | Resultados | Comentario |
WriteLn (Valor); | 2.5077600000E+01 | |
WriteLn(Valor:2); | 2.5E+01 | |
WriteLn(Valor:2:1); | 25.1 | Notese el redondeo |
WriteLn(Valor:2:4); | 25.0776 | |
WriteLn(Valor:2:8); | 25.07760000 | |
WriteLn('Tec':1); | Tec | |
WriteLn('Tec':3); | Tec | |
WriteLn('Tec':5); | _ _ Tec | Espacios vacios _ |
IX. IF-THEN-ELSE
Dado que una condición produce un valor verdadero o falso, se necesita una sentencia de control que ejecute determinada sentencia si la condición es verdadera , y otra si es falsa. En Pascal esta alternativa se realiza con la sentencia IF-THEN-ELSE. A continuación se describe el diagrama de flujo y el formato de la sentencia.
Formatos de la sentencia IF:
if <condición> then <instrucción_1> else <instrucción_2> | if <condición> then <instrucción_1> else <instrucción_2> |
En este caso, primero se evalúa condición y si el resultado arroja un valor de verdad(verdadero), se ejecuta instrucción_1 ; en caso contrario se ejecuta instrucción_2.
La condición es una expresión Booleana que puede ser verdadera o falsa (true o false). Una expresión Booleana se forma comparando valores de las expresiones utilizando operadores de relación (relacionales) o comparación y los operadores lógicos vistos anteriormente.
Ejemplos :
Sin ELSE
Program Edades;
Uses Crt;
Var
edad : integer ;
begin
WriteLn('Escribe tu edad : ');
ReadLn(edad);
if edad >= 18 then
WriteLn('!Eres Mayor de edad !');
WriteLn('Esta instrucción siempre se ejecuta');
ReadKey
end.
Con ELSE:
Program Edades;
Uses Crt;
Var
edad : integer ;
begin
WriteLn('Escribe tu edad : ') ;
ReadLn(edad) ;
if edad >= 18 then
begin
WriteLn('!Eres Mayor de edad !');
WriteLn('!Ya puedes Votar!')
end
else
begin
WriteLn('!Eres Menor de edad !');
WriteLn('!Aún no puedes votar!')
end;
WriteLn('Esta instrucción siempre se ejecuta');
ReadKey
end.