Está en la página 1de 16

Categoría de lenguajes

Los lenguajes máquina son aquellos cuyas instrucciones son directamente


entendibles por el ordenador sin la necesidad de traducción alguna. Sus instrucciones
no son más que ristras de ceros y unos (bits). Estas especifican la operación a
realizar, los registros del procesador y celdas de memoria implicados, etc.

Obviamente, este tipo de lenguajes serán fáciles de comprender para un ordenador


pero muy difíciles para el hombre. Esta razón nos lleva a buscar otro lenguaje para
comunicarnos con el ordenador.

La progración en lenguaje máquina es difícil, por ello se necesitan lenguajes que


permitan simplificar este proceso. Los lenguajes de bajo nivel han sido diseñados
para este fin.

Estos lenguajes son generalmente dependientes de la máquina, es decir, dependen de


un conjunto de instrucciones específicas del ordenador. Un ejemplo de este tipo de
lengujes es el ensamblador. En él, las instrucciones se escriben en códigos alfabéticos
conocidos como mnemotécnicos (generalmente, abreviaturas de palabras inglesas).

Las palabras mnemotécnicas son mucho más fáciles de recordar que las secuencias
de ceros y unos. Una instrucción típica de ensamblador puede ser:
ADD x,y,z

Esta instrucción significaría que se deben sumar los números almacenados en las
direcciones de memoria x e y, y almacenar el resultado en la dirección z. Pero aún así,
a medida que los programas crezcan en tamaño y complejidad, el ensamblador sigue
sin ser una buena solución

Los lenguajes de alto nivel son aquellos en los que las instrucciones o sentencias son
escritas con palabras similares a las de los lenguajes humanos (en la mayoría de los
casos, el Inglés). Esto facilita la escritura y comprensión del código al programador.

Existen muchos lenguajes de alto nivel, por citar algunos:


 ADA
 BASIC
 COBOL
 FORTRAN
 C
 Modula-2
 Pascal
 Java

Los traductores son un tipo de programas cuya función es convertir el código de un


lenguaje en otro. Por ejemplo un compilador, que traduce código fuente en código
objeto. Existen distintos tipos de traductores, entre ellos destacan:

 Ensambladores
 Preprocesadores
 Intérpretes
 Compiladores
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 ";". Con esto ya se cumplirían los requisitos mínimos que debe tener una cabecera,
pero se puede y es muy recomendable incluír también un comentario. Este comentario
lo utilizamos para documentar el programa, que es algo que la gente suele dejar en
segundo plano, pero es de lo más importante en programación. 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
 Otras cosas que te ayuden a documentar tu programa

Como en la mayoría de los casos, lo mejor para aprender algo es ver un ejemplo:

program MiPrimerPrograma;

(*************************************************)
(* Autor: Juan Perez *)
(* Version: 1.0 *) (* Fecha inicio: 16/08/2012 *) (*
Fecha modif.: 17/08/2012 *) (* Objetivo: El que
sea... *) (* Fichero: nombre-fichero.pas *)
(*************************************************)
CONTINUAMOS?

Declaración de unidades

NOS ENCONTRAMOS EN LA PARTE CORRESPONDIENTE A LA DECLARACIÓN


DEL USO DE UNIDADES.
SIN PROFUNDIZAR DEMASIADO EN EL TEMA, COMENTAR QUE 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 ",". SE FINALIZA LA SECCIÓN CON UN PUNTO Y COMA ";".
EVIDENTEMENTE, ESTA SECCIÓN NO ES OBLIGATORIA.
USESNOMBRE_UNIDAD1,NOMBRE_UNIDAD2,...,
NOMBRE_UNIDAD_N;

- LAS UNIDADES NO FORMAN PARTE DE PASCAL ESTÁNDAR, Y POR


LO TANTO, NO DISPONDRÁS DE ELLAS EN TODOS LOS
COMPILADORES.

Esta sección no es obligatoria, y sólo tendrás que declararla si quieres definir alguna
constante en tu programa.

A continuación se muestra la manera en que se escribe la sección de constantes. Es


tan fácil como empezar con la palabra reservada const, seguida de una lista de
parejas nombre_de_la_constante=valor_de_la_constante:

constidentificador1=valor1;...;identificadorn=valorn; Una constante es un objeto al que


se le asigna un valor al declararlo
y lo mantiene durante toda la ejecución del programa. Mira el siguiente ejemplo y verás
que declarar constantes es una de las cosas más fáciles que hay en Pascal.

const En este ejemplo se declaran seis


Min = 0; constantes. Las tres primeras son
Max = 1000; de tipo entero y se les asignan
Incremento = 5;
N = Max div Incremento; (* N vale 20 *) valores numéricos directamente.
Saludo = 'Hola'; (* Esta es una cadena de caracteres En la cuarta y la sexta se observa
*) otra manera de darle valores
Suma = (3 * 2) + (5 * 4); (* Suma tiene el valor 26 enteros a constantes, y es
*)
mediante el uso de expresiones
aritméticas. Y en la quinta, se declara una constante de tipo cadena de caracteres.
Pero en este ejemplo no están reflejadas todas las posibilidades. Falta, por ejemplo, el
declarar una constante de tipo real.

CONTINUAMOS?
 
RETROCEDEMOS?

Declaracion de tipos

Esta sección no es obligatoria, y sólo tendrás que declararla si quieres definir tus
propios tipos de datos en el programa.

Para programas sencillos no te hará falta declarar tipos, te bastará con los que te
proporciona Pascal (Integer, Real, Boolean, String, ...). Aunque a veces es interesante
declarar tipos para hacer el código más legible. Por ejemplo:
Declarar tipos de datos no es
(*tipo que define una cadena de 15 nada complicado. A continuación,
caract.*) tienes la forma genérica que
describe cómo hacerlo. La sección
type tNombre = String[15]; comienza con la palabra
reservada type, seguida de una
lista de
(*variable con espacio para 15 caract.*) pares nombre_del_tipo=valor_del
_tipo:
var Nombre : tNombre;
typeidentificador1=valor1;...;identificadorn=valorn; Todo objeto de información que se
use en Pascal tiene un tipo
asociado.

Para que vayas familiarizándote, en el siguiente ejemplo se declararan unos cuantos:

type En este ejemplo se declaran cinco


tContador = Integer;
tipos de datos. En los dos
tPalabra = String[20]; primeros lo que se hace es dar
tFinSemana = (Sabado,Domingo); (* tipo enumerado *) otro nombre a tipos que ya existen
tHorasDia = 0..23; (* tipo subrango *) en Pascal (integer,String). Como
ya se ha mencionado, esto sirve para que el código del programa sea más legible; ya
que no es lo mismo ver String[20], que ver tPalabra.

Por otro lado, los dos últimos son dos ejemplos de tipos definidos por el usuario.
Para este propósito Pascal dispone de dos tipos especiales, los enumerados y
los subrangos.

eclaració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. Por ejemplo, si
utilizas algún bucle en tu programa, tienes que tener por lo menos una variable para la
progresión de éste.

Nota: Cuando hablamos de un bucle nos estamos refiriendo a las estructuras de control


repetitivas.

La forma de declarar variables es muy sencilla. Esta sección 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:

varlistaVar1:tipo1;...;listaVarn:tipon; Una variable no representa más


que 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. Otra diferencia, es que a una variable no basta con
declararla, sino que también es necesario iniciarla. Esto se refiere a darle un valor
inicial, y es importante ya que si no lo hacemos, igual nos encontramos con errores
cuando ejecutemos el programa.

Observa el siquiente ejemplo de declaración de variables:

var En este ejemplo se declaran seis


variables. Las cuatro primeras son
I, J, K : Integer; (* valores enteros *)
de tipo entero. La quinta es de tipo
Contador : Integer; real, o sea, un número con parte
decimal. Y la sexta es un carácter,
Radio : Real; (* valor real *) que no es lo mismo que una
Letra : Char; (* un caracter *) cadena de un carácter (String[1]).

Declaración de Procedimientos y Funciones

Esta sección es muy importante, aunque para tus primeros programas no la


necesitarás. En ella puedes declarar procedimientos y funciones (subprogramas) para
que los uses en otros subprogramas o en el cuerpo principal.

Puedes incluír cuantos procedimientos y funciones desees, incluso alternar entre ellos.
Aunque debes de tener cuidado con el orden en el que los escribes. 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. A continuación, tienes un
ejemplo en el que se declaran una función y un procedimiento:

... Son dos subprogramas muy sencillos.


function Suma(a:integer;b:i La función recibe como parámetros dos variables
nteger):integer; de tipo entero, las suma y devuelve su valor.
begin
Suma := a + b El procedimiento recibe una cadena de caracteres
end; e invoca a writeln para escribirla en pantalla.

procedure Escribe(frase:s
tring);
begin
writeln(frase) Cuerpo de un programa
end;
...
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
RESERVADASBEGIN Y END RESPECTIVAMENTE.
Muy importante: 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), sentencias iterativas(sentencias for,
while). Veamos un pequeño ejemplo:

begin El ejemplo es muy


i := 0;
sencillo. Se trata de un
while i<10 do bucle que escribe en
begin pantalla lineas que
writeln('El valor de i es ',i); consisten en la frase "El
i := i + 1;
valor de i es" seguidas
end
end. del valor que tiene en ese
momento la
variable i (0..9).

UNA CONSTANTE ES UN DATO CUYO VALOR NO PUEDE CAMBIAR DURANTE


LA EJECUCIÓN DEL PROGRAMA. RECIBE UN VALOR EN EL MOMENTO DE LA
COMPILACIÓN Y ESTE PERMANECE INALTERADO DURANTE TODO EL
PROGRAMA.

LAS CONSTANTES SE DECLARAN EN


UNA SECCIÓN QUE COMIENZA CON LA
PALABRA RESERVADA CONST.
DESPUÉS DE DECLARAR UNA
CONSTANTE YA PUEDES USARLA EN
EL CUERPO PRINCIPAL DEL
PROGRAMA. TIENEN VARIOS USOS:
SER MIEMBRO EN UNA EXPRESION, EN
UNA COMPARACIÓN, ASIGNAR SU
VALOR A UNA VARIABLE, ETC.
EN EL SIGUIENTE EJEMPLO SE
CONTEMPLAN VARIOS CASOS:
CONST MIN = 0; MAX = 100; SEP = 10; VAR I :
INTEGER; BEGIN I := MIN; WHILE I < MAX DO
BEGIN WRITELN(I); I := I + SEP END END.

EN ESTE EJEMPLO SE DECLARAN TRES


CONSTANTES (MIN, MAX Y SEP). EN LA
PRIMERA LÍNEA DEL CUERPO DEL
PROGRAMA SE ASIGNA UNA
CONSTANTE A UNA VARIABLE. EN LA
SIGUIENTE, SE USA UNA CONSTANTE
EN UNA COMPARACIÓN. Y EN LA
CUARTA, LA
CONSTANTE SEP INTERVIENE EN UNA
EXPRESIÓN QUE SE ASIGNA A UNA
VARIABLE. EL RESULTADO DE
EJECUTAR ESTE PROGRAMA SERÍA
UNA IMPRESIÓN EN PANTALLA DE LOS
NÚMEROS: 0, 10, 20, 30, 40, 50, 60, 70,
80 Y 90.
onstantes-2

Se puede hacer una división de las constantes en tres clases:


 constantes literales (sin nombre)
 constantes declaradas (con nombre)
 constantes expresión

Constantes literales
Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no
tienen nombre. En el siguiente ejemplo tienes un par de constantes literales (el 3, el 4,
y el 3.1416):

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


* Radio;
Constantes declaradas
También llamadas constantes con nombre, son las que se declaran en la
sección const asignándoles un valor directamente. Por ejemplo:

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;

Variables-1

def: Una variable es un nombre asociado a un elemento de datos que


está situado en posiciones contiguas de la memoria principal, y su valor
puede cambiar durante la ejecución de un programa.
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
 Iniciación
 Utilización

Declaración de variables
Esta es la primera fase en la vida de cualquier variable. La declaración se realiza en la
sección que comienza con la palabra var.

Nota: Toda variable que vaya a ser utilizada en Pascal tiene que ser


previamente declarada.
Iniciación de variables
Esto no es más que darle un valor inicial a una variable. Así como lo primero que se
hace con una variable es declararla, lo siguiente tiene que ser 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)

Veamos un ejemplo que reúne los dos casos:

begin

i:=1;

readln ( n ) ;

while i < n do

begin (* cuerpo del bucle *)

i := i + 1

end;

end.

Variables-2

Utilización de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte
que presenta un mayor abanico de posibilidades. A continuación tienes unas cuantas:

 Incrementar su valor:

i := i + 1

 Controlar un bucle:

for i:=1 to 10 do ...

 Chequear una condición:

if i<10 then ...

 Participar en una expresión:

n := (Max - Min) div i

 Y otras que ya irás descubriendo

DIFERENCIAS ENTRE CONSTANTES Y VARIABLES


Después de haber visto cada una por separado, pasemos a explicar las diferencias que
existen entre constantes y variables. A primera vista pudieran parecer conceptos
similares, pero realmente son cosas muy distintas. Y esta distinción viene dada por la
posibilidad que tienen las variables para cambiar de valor.

Principales diferencias:

 Las constantes ya reciben un valor inicial en su declaración


 Las variables primero se declaran, luego se inician, y luego se usan
 Las constantes, una vez declaradas mantienen su valor durante toda la ejecución del
programa
 En cambio, las variables pueden cambiar su valor tantas veces como deseen
 Además de cambiar su valor, las variables también pueden cambiar de tamaño en
tiempo de ejecución (punteros)

Tpos de datos-1
Tipos simples. Realmente de los tipos simples veremos los más básicos, que
son: integer, boolean, char y real. Además, también hablaremos un poco de las
cadenas de caracteres, los llamados strings.

El tipo integer (entero)
Como ya habrás leído el tipo de datos entero es un tipo simple, y dentro de estos, es
ordinal. Al declarar una variable de tipo entero, estás creando una variable numérica
que puede tomar valores positivos o negativos, y sin parte decimal.

Este tipo de variables, puedes utilizarlas en asignaciones, comparaciones,


expresiones aritméticas, etc. Algunos de los papeles más comunes que desarrollan
son:

 Controlar un bucle
 Usarlas como contador, incrementando su valor cuando sucede algo
 Realizar operaciones enteras, es decir, sin parte decimal
 Y muchas más...

A continuación tienes un ejemplo en el que aparecen dos variables enteras. Como


puedes ver, en el ejemplo se muestran las dos maneras de declarar una variable de
tipo entero:

type tContador = integer; El tipo boolean (lógico)


var i : tContador;
n : integer;
El tipo de datos lógico es
begin el que te permite usar
n := 10; (* asignamos valor al maximo *) variables que disponen
i := 1; (* asignamos valor al contador *) sólo de dos posibles
while (i <= n) do
begin
valores: cierto o falso.
writeln('El valor de i es ',i); Debido a esto,
i := i + 1 su utilidad salta a la
end vista, y no es otra
end.
que variables de
chequeo. Nos sirven para mantener el estado de un objeto mediante dos valores:

 si/no
 cierto/falso
 funciona/no funciona
 on/off
 etc.

Para aclararlo, veamos un ejemplo:

type tLogico = boolean;


var llueve : tLogico; (* si llueve o no *)
paraguas : boolean; (* si encuentro o no el paraguas *)
begin (* aqui se determinarian los valores de "llueve" y
"paraguas" *)
if llueve and (not paraguas)
then writeln('Me quedo en casita')
else writeln('Me voy a dar un paseo')
end.
Tipos de datos-2

El tipo real (real)
Como ya has visto, Pascal soporta el conjunto entero de números. Pero no es el único,
también te 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. Por ejemplo en los estadísticos, ya que se caracterizan
por tratar fundamentalmente con valores decimales.

nota: Aunque pueda que estés acostumbrado a escribir con coma los decimales, te
advierto que en Pascal y en todos los lenguajes de programación se escribe con
un punto. Por ejemplo: 3.1416

A continuación tienes un ejemplo en el que se utiliza el tipo real. En el puedes ver las


dos formas de declarar una variable real, y tambíen el uso de una constante real. Por si
tienes curiosidad, el resultado de ejecutar el programa compilado es:

El area para un radio de 3.14 es 63.6174


type tArea = real; nota: Fijate que cuando lo
const pi = 3.1416; vas a imprimir, el dato
var A : tArea; (* area *)
R : real; (* radio *) real (A:8:4) va
begin acompañado de una
R := 4.50; expresión de : un número
A := pi * R * R; (* calculamos el area *) (indica la longitud total del
writeln('El area para un radio de ',R:4:2,' es ',A:8:4)
end. dato) otro : un número
(que indica la cantidad de
decimales).

Tipos de datos-3

Los tipos char y string (carácter y cadena)

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.
Pero ojo, cada variable sólo podrá almacenar un carácter.
Sin embargo, con las cadenas de caracteres (strings) puedes contener en una sóla
variable más de un carácter. Por ejemplo, puedes tener en una variable tu nombre.

Veamos cómo se usan ambos tipos en el siguiente ejemplo

type tNombre = string[10]; (* puede almacenar 10 caracteres


*)

var nombre : tNombre; (* variable para almacenar el nombre


*)

letra_NIF : char; (* caracter para contener la letra del NIF *)

begin

nombre := 'Beni';

letra_NIF := 'L';

writeln('Mi nombre es ',nombre,' y mi letra es ',letra_NIF)

end.

WRITE Y WRITELN
Un programa por simple que sea, va a tener que mostrar cierta información de salida.
Esto se consigue en Pascal mediante los verboswrite y writeln.

Veamos como es la sintaxis de los procedimientos write y writeln, es decir, ¿cuál es la


manera correcta de escribirlos?:

write (ítem, ítem, ...); Cada uno de estos ítems puede ser:


writeln (ítem, ítem, ...);
 un valor literal
 una constante con nombre
 unavariable
program Prueba_write;  una llamada a una
const iva_factor = 0.16;
función
var num_udes : integer;
total, precio_udad : real;
begin
precio_udad := 198;
num_udes := 4;
total := num_udes * precio_udad;
write ('El precio sin IVA de',num_udes:3,' unidades es');
writeln(total:8:0,' pesetas'); nota: Un función especial
writeln; writeln; (* separamos 2 lineas *) que tiene writeln es
total := total + total * iva_factor; como espaciador entre
write ('El precio con IVA de',num_udes:3,' unidades es');
writeln(total:8:2,' pesetas')
end.
Salida del programa:
El precio sin iva de 4 unidades es 792 pesetas El precio con
iva de 4 unidades es 918.72 pesetas
líneas. Así, llamando al procedimiento sin ningún parámetro produciremos un salto de
línea.

READ Y READLN
Trataremos ahora la entrada de datos, también conocida como lectura de datos.
En Pascal existen dos verbos que nos permiten leer datos de la entrada estándar (el
teclado) son read y readln.

A continuación puedes echarle un vistazo a la sintaxis de estos verbos:

read (variable1, variable2, ...); A diferencia de los verbos write,


con read y readln sólo puedes usar variables como
readln (variable1,variable2, ...); parámetros. Esto es lógico ya que las variables
pueden cambiar su valor en el cuerpo del programa.
Los tipos de datos permitidos para estas variables son: enteros, reales,
caracteres o cadenas de caracteres.

¿Cómo funcionan read y readln?

Ambos procedimientos esperan a que pulses la tecla INTRO antes de asignar valores a


variables .

En el siguiente ejemplo se utilizan varias llamadas a read y readln. Es un ejemplo típico


de entrada/salida. En el, se solicitan datos al usuario, y este tiene que introducirlos por
teclado. A continuación del código tienes una de las posibles entradas correctas.

program Datos_Personales; 
var Nombre : string[15];
Ap1, Ap2 : string[20];
Edad : integer;
Si intentas leer más de
begin una variable en una
write('Introduce nombre: '); llamada, tendrás que
readln(Nombre); teclearlas en el orden en
write('Primer apellido : ');
readln(Ap1);
el que aparecen en el
write('Segundo apellido: '); procedimiento
readln(Ap2); write('Introduce edad : ');
readln(Edad); Además, si no quieres
end.
tener problemas, lo mejor
Una posible entrada correcta será que dejes uno o
Introduce nombre:Benito más espacios entre los
Primer apellido :Santos datos que teclees.
Segundo apellido:Feijoo
Introduce edad :21 La
principal diferencia entre ambas es que después de leer los datos, read deja el cursor
a continuación del último carácter, mientras que readln lo pasa al comienzo de la
siguiente línea.

También podría gustarte