Independientemente de lo largo o pequeño que sea, todo programa debe comenzar con una cabecera de programa. Esta cabecera es la primera línea, comienza con la palabra clave Program seguida del nombre y terminada por ;.
Definiciones y declaraciones
Lo normal es que un programa necesite datos. Un dato es cualquier información que sea manipulada por un programa y necesite un espacio de almacenamiento en el ordenador al ejecutarse el programa. Los datos que no cambian nunca se denominan constantes, mientras que los que cambian se conocen como variables. Para reservar espacio en la memoria se han de declarar mediante una declaración de variables. Los identificadores deben comenzar con un carácter alfabético o el símbolo de subrayado. El primer carácter puede estar seguido de hasta 126 adicionales, alfabéticos, numéricos o de subrayado.
Tipos
En Pascal además de dar identificadores para las variables se debe de indicar el tipo de los datos que se usará para esa variable. El tipo de un dato tiene dos propósitos, una asignar cuánta memoria se va a asignar a un dato de tipo particular. El otro es prevenir un mal emparejamiento de tipos.
En Pascal, los tipos pueden categorizarse en predefinidos y definidos por el usuario.
Los tipos predefinidos son:
- Boolean, admite los valores FALSE y TRUE
- Char, son caracteres del conjunto de códigos ASCII
- Integer, son números en el rango -32768 a 32767
- Byte, es un subrango del tipo Integer, de 0 a 255
- Real, son números reales en el rango 1E-38 a 1E+38
Constantes
Se usan para asociar un valor fijo a un identificador. Este puede estar definido por el usuario o puede ser literal que describe un valor. Por otra parte las constantes definidas por el usuario, llamadas constantes con nombre deben definirse en la parte de definición de constante, como por ejemplo, const PUERTO = 98. Cons es la palabra reservada correspondiente. A su vez la constante se puede definir con tipo, como por ejemplo, Const PUERTO: Integer 98;
Variables
Cuando se declara una variable, se le asigna memoria, suministrándole un lugar para poner un tipo de dato. Una declaración también suministra un nombre para ese lugar. La palabra clave es Var, pudiendo aparecer a continuación uno o más identificadores de variables, separados por comas y los tipos se separan con dos puntos (:), a continuación se muestran ejemplos,
Var tipo_interes
cant_nominal
principal : Real;
año : Integer;
mes : Byte;
inchr : Char;
salida : Boolean;
Var tipo_interes, cant_nomina, principal: Real;
Constantes con tipo
Pueden usarse para ahorrar memoria y como variables inicializadas. A continuación se da un ejemplo:
Const TEXTO="T";
MAYUSCULA="U";
peso : Byte = 80;
tipo_entrada : Char = MAYUSCULA;
Las constantes son una forma eficiente y clara de indicar al compilador que un valor no debería modificarse. Se usa como las variables, con la única diferencia que solo se puede escribir en la constante la primera vez que se declara.
Declaración de constantes
program leccion5;
const
PI = 3.14156;
var
radio : Integer;
begin
write('Escribe el radio: '); readln(radio);
writeln(2*PI*radio);
end.
Las constantes pueden contener cualquier tipo de dato, incluso strings o tipos de datos más avanzados como veremos más adelante.
No es posible asignar a una constante el valor de una variable, pues no es posible saber que valor tendrá hasta que el programa se ejecute. Sin embargo, una característica curiosa de las constantes, es que pueden contener un valor consecuencia de hacer operaciones sencillas con otras constantes. Por ejemplo:
const
PI = 3.14156;
PI2 = 2 * PI;
Eficiencia de las constantes
Las constantes son sustituidas en tiempo de compilación por su valor declarado, cada vez donde se encuentren usadas. Esto repercute en que el procesador del ordenador no tiene que leer una dirección de memoria, sino que el valor se encuentra directamente empotrado en el código. Gracias a esto, el acceso a constantes es más rápido que el acceso a memoria.Es una buena idea usar
Operadores
Gran parte de la manipulación de datos en un programa se ejecuta mediante operadores. Los operadores se clasifican en tres categorías, aritméticos, lógicos y relacionales.
El término expresión se refiere a una combinación de una o más constantes literales o con nombre o identificadores de variables, con uno o más operadores.
Cuando aparece más de un operador hay un orden de precedencia, y si es al mismo nivel la evaluación se efectúa de izquierda a derecha. Las precedencias son:
1 - (menos unario)
2 not
3 *, /,div,mod,and,shl,shr
4 *,-,or,xor
5 =,<,<,,<=,=,in
Sentencias
La parte de sentencias es en donde se define la lógica de un programa, es donde se manipulan los datos para obtener el resultado deseado por el usuario del programa. Las sentencias se pueden clasificar en los tipos:
- Sentencias de asignación
- Sentencias compuestas
- Sentencias de control de la lógica
Una sentencia de asignación consta de un identificador de variable (o función) seguido del operador de la asignación (:=) seguido de una expresión. A continuación se indican ejemplos,
salida:=FALSE
interes:=10
pago:=principal/periodo
Una sentencia compuesta se ha de identificar en el principio con Begin y al final con end;. Una sentencia de este tipo puede estar formada por todos los tipos de sentencias incluyendo otras sentencias compuestas.
Sentencias de control de lógica
- Bucle while. Ejecuta una sentencia repetidamente hasta que la condición del bucle da FALSE. La forma es, While condicion Do sentencia
While condicion Do
Begin
sentencia 1
sentencia 2
......
End;
- Bucle Repeat-Until. Se usa cuando es necesario que el bucle se ejecute al menos una vez. En este caso la verificaciónde la condición ofrece esa posibilidad. La forma del bucle es,
Repeat
sentencia 1
sentencia 2
......
Until condicion
- Bucle For-Do. Es ideal para los casos en que está predeterminado el número de veces que se ejecutará una sentencia. La forma es, For contador:= exp1 To exp2 Do sentencia
For contador:=exp1 To exp2 do
Begin
sentencia1
sentencia2
.......
End;- If-Then-Else. Esta sentencia ejecuta una, muchas o ninguna sentencia dependiendo de la evaluación de la condición establecida. La forma general es,
If condicion Then sentencia1 [Else sentencia2]
- Sentencia Case. La forma de esta sentencia es,
Case selector Of
Constante1 : sentencia1;
Constante2 : sentencia2;
Constanten : sentencian;
Else
sentencia;
Cuando se ejecuta una sentencia Case, el valor del selector, que es una variable y puede ser cualquier tipo escalar excepto Real, se usa para determinar cuál, si la hubiera de las, sentencias del Case se ejcuta. Las constantes asociadas con la sentencia deben de ser del mismo tipo que la variable selector.
Declaración de variables
Una variable no es más que un símbolo, que representa un valor en la memoria que puede cambiar. En programación, las variables son imprescindibles, pues almacenan los datos de las operaciones que se realizan.
Todas las variables tienen un tipo
En Pascal hay que escribir un punto y coma (;) después de la declaración de una o más variables. Así pues, la sintaxis para declarar una variable es:
<nombre_de_la_variable> : <nombre_del_tipo_de_dato>; |
Y para más de una variable del mismo tipo se utiliza la sintaxis:
<variable_1>, <variable_2>, ..., <variable_n> : <tipo_de_dato>; |
Nota: recomiendo que, para todos los ejemplos que veas en este curso, abras un nuevo proyecto y le pongas el nombre de la lección, tal y como aprendiste en la lección anterior. Además, recomiendo que copies el código a mano, para que vayas familiarizándote con escribir código Pascal. Sobre la forma de escribir el código, ten en cuenta que el espaciado interior generalmente no importa, así por ejemplo es lo mismo numero1:=5; que numero1 := 5. Tampoco importa dejar o no espacios al principio de la línea, pero, como puede comprobarse de un primer vistazo, ello facilita ENORMEMENTE la lectura, así que es altamente recomendable respetar este estilo. Tampoco hay distinción entre mayúsculas y minúsculas, significa lo mismo Integer que integer o inTeger.
Lo primero que llama la atención de este ejemplo es la palabra clave var. Ello significa que, lo que venga a partir de ahora y hasta que no se indique lo contrario, es para declarar variables.
Declaración de las variables
Las variables se declaran poniendo el nombre que se desee, dos puntos (no importa si hay espacios o no entre medias), y el tipo de variable. Se termina con un punto y coma (obligatorio). El nombre que se desee puede ser, efectivamente, lo que se quiera, con dos normas básicas: debe empezar por una letra, y no contener símbolos. Estos son nombres válidos de variables:a b c pericoEldeLosPalotes mi_variable a9988 variable2g
78s mi-variable
Lo siguiente interesante es el tipo. Efectivamente, estas variables tienen el tipo Integer. Esto significa, en inglés, entero. Si recuerdas cuando aprendiste matemáticas, el tipo de número enteros es aquel que no tiene decimales, por ejemplo -6, 89, 7878787, etc. Pues esto es lo que significa, aunque con algunas limitaciones. Este tipo de datos no admite decimales. Así que asignar a estas variables un número real, por ejemplo, 6.78, producirá un error en tiempo de compilación.
Aprenderás muchos más tipos de datos más adelante.
Expresiones básicas
El programa empieza con begin, ya lo sabemos.A continuación vienen tres asignaciones. Las asignaciones en Pascal se realizan con el símbolo := . Es fácil comprender que esta expresión:
numero1 := 5;
Y la expresión:
resultado := numero1 + numero2;
La siguiente instrucción es la ya usada writeln, que como recordarás lo que hace es imprimir en la consola algo. Si te fijas, en este caso no tiene comillas. Es debido a que en vez de imprimir una cadena de caracteres, ahora lo que se imprime es directamente una variable. Más sobre esto más tarde.
Puedes ejecutar el programa y verás como produce en la salida un bonito número 11, consecuencia de imprimir la variable resultado.
Unas notas sobre los puntos y comas
Seguramente te preguntarás que utilidad tienen esos puntos y comas. ¿Porqué están ahí y porque si no los pongo el compilador me devuelve errores raros? Muy sencillo, los puntos y comas sirven para separar instrucciones. Así, por ejemplo, es posible meter varias instrucciones en una sola linea:numero1 := 5; numero2 := 6;
numero1 := 5;
numero2 := 6;
numero1 :=
5;
numero2
:= 6;
Hay algunas excepciones. Como ves, no se deben poner detrás de begin o de var. El último end. debe tener un punto, que como estarás pensando significa punto y final.
Instrucciones matemáticas permitidas en pascal
~Operador | ~Operación | ~Válido entre |
+ | adición | enteros y reales |
- | resta | enteros y reales |
* | multiplicación | enteros y reales |
/ | división | enteros y reales |
div | división entera | enteros |
mod | resto | enteros |
Por ejemplo:
program leccion3;
var
PI : Single;
r : Single;
begin
PI := 3.14156;
r := 6.7;
write ('La circunferencia es:');
writeln (2 * PI * r);
end.
La circunferencia es: 4.209690396E+01
Los tipos char y string
Hasta ahora, hemos estado usando caracteres y cadenas de caracteres (strings) directamente, sin asignarlos a variables, para la función writeln. Pero se pueden usar en variables, y hacer algunas operaciones con ellos:program leccion3;
var
nombre : string;
resultado : string;
begin
write('Dime tu nombre: ');
readln(nombre);
resultado := 'Hola ' + nombre + ', ¿qué tal estás?';
writeln (resultado);
end.
Dime tu nombre: Javier
Hola Javier, ¿qué tal estás?
El tipo char es simplemente un carácter solo. El tipo string es una cadena (array) de caracteres. Más adelante aprenderemos a manejar cadenas.
Quizá te estés preguntando: ¿puedo introducir números con readln? Prueba:
program leccion3;
var
r : Single;
resultado : Single;
begin
write('Dime el radio del círculo: ');
readln(r);
resultado := 2 * 3.14 * r;
writeln (resultado);
end.
¿Y qué sucede si sumas un string y un número? Prueba:
program leccion3;
var
r : Single;
resultado : string;
begin
write('Dime el radio del círculo: ');
readln(r);
resultado := 'El resultado es: ' + 2 * 3.14 * r;
writeln (resultado);
end.
No hay comentarios:
Publicar un comentario