miércoles, 12 de octubre de 2011

Unidad 2 Pascal

2.1 Estructuras general de programas en Pascal

Pascal es un lenguaje de programación de alto nivel, que facilita la práctica de la programación estructurada. Utiliza un traductor que produce código ejecutable, lo cual disminuye los tiempos de ejecución de los programas.
El lenguaje Pascal fue desarrollado por Niklaus Wirth, con el propósito de ayudar a los estudiantes en el manejo de las técnicas de la programación estructurada, pero en la actualidad su aplicación es de propósitos generales.
La construcción de programas en Pascal se basa en módulos que guardan las siguientes reglas de construcción :

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.
Las cinco secciones de declaración -Label, Const, Type y Procedure y/o Function , así como la cláusula Uses y Program, no tiene que estar presentes en todos los programas. Turbo Pascal es muy flexible al momento de escribir las secciones de declaración, ya que se pueden hacer en cualquier orden (en Pascal estándar ISO si se require este orden). Sin embargo es conveniente seguir el orden establecido, le evitará futuros problemas.
Ejemplo:
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. 
Nota: Las declaraciones de constantes, tipos y variables también se pueden poner en los procedimientos y/o funciones.
Todo objeto referenciado en un programa debe haber sido previamente definido.
Ejemplo:
Program Incorrecto; {cabecera}
Const
  pi=3.141592;Var
  Meses:array [1..Max] of string[15];begin
  ...................................
end. 
El programa anterior es incorrecto ya que hacemos referencia a la constante Max en la declaración de variables sin haberla definido en la declaración de constantes.
2.2 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.
Los identificadores también se utilizan para los nombres de los programas, los nombres de los procedimientos y los nombres de las funciones, así como para las etiquetas, constantes y variables.
Las reglas para formar los identificadores en Pascal son las siguientes :
  1. Pueden estar compuestos de caracteres alfabéticos, numéricos y el carácter de subrayado ( _ ).
  2. Deben comenzar con un carácter alfabético o el carácter de subrayado.
  3. Puede ser de cualquier longitud (sólo los 63 primeros caracteres son significativos).
  4. No se hace distinción entre mayúsculas y minúsculas.
  5. 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álidoX nombre : Contiene un blancobegin    : es una palabra reservadaeje@s    : carácter @ no válido 

Elección de identificadores

La elección de identificadores permite una mejor lectura y comprensión de un programa. No es aconsejable utilizar identificadores que no sugieran ningún significado.

La siguiente tabla muestra los IDENTIFICADORES RESERVADOS en Turbo-Pascal. Los marcados con un asterisco no están definidos en Pascal estándar . Los marcados con ? no se utilizan en Turbo-Pascal

*ABSOLUTEINVARRECORD
*AND *OVERLAYGOTOELSE
ARRAY*STRING?PACKEDWHILE
*EXTERNALBEGINTOLABEL
FILEFORDIVREPEAT
FORWARDOF*INLINEWITH
NILTHENPROCEDUREEND
*SHLCASEUNTILMOD
ANDFUNCTIONDOSET
FILEORIF*XOR
NOTTYPEPROGRAM
*SHRCONSTDOWNTO
Turbo-Pascal define los siguientes IDENTIFICADORES ESTANDAR de tipos predefinidos, constantes, variables, procedimientos y funciones. Cualquiera de ellos puede ser redefinido, perdiéndose así la facilidad de utilizar su definición original.
ADDRDELAYLENGTHRELEASE
ARCTANDELETELNRENAME
ASSIGNEOFLORESET
AUXEOLNLOWVIDEOREWRITE
AUXINPTRERASELSTROUND
AUXOUTPTREXECUTELSTOUTPTRSEEK
BLOCKREADEXITMARKSIN
BLOCKWRITEEXPMAXINTSIZEOF
BOOLEANFALSEMEMSEEKEOF
BUFLENFILEPOSMEMAVAILSEEKEOLN
BYTEFILESIZEMOVESQR
CHAINFILLCHARNEWSQRT
CHARFLUSHNORMVIDEOSTR
CHRFRACODDSUCC
CLOSEGETMEMORDSWAP
CLREOLGOTOXYOUTPUTTEXT
CLRSCRHALTPITRM
CONHEAPPTRPORTTRUE
CONINPTRHIPOSTRUNC
CONOUTPTRIORESULTPREDUPCASE
CONCATINPUTPTRUSR
CONSTPTRINSLINERANDOMUSRINPTR
COPYINSERTRANDOMIZEUSROUTPTR
COSINTREADVAL
CRTEXITINTEGERREADLNWRITE
CRTINITKBDREALWRITELN
DELLINEKEYPRESSED

2.3 Declaración de etiquetas
En el remoto caso de que sea necesaria la utilización de la instrucción Goto, deberá marcarse con una etiqueta la línea a donde desea enviarse el control de flujo del programa.
La declaración deberá encabezarse con el identificador reservado Label, seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma.
Pascal estándar sólo permite etiquetas formadas por números de 1 a 4 dígitos.
Turbo-Pascal permite la utilización de números y/o cualquier identificador, excepto los identificadores reservados.
Su uso no está recomendado y en este tutorial no se empleará nunca.
2.4 Definición de constantes
En la definición de constantes se introducen identificadores que sirven como sinónimos de valores fijos.
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 '; 
Un valor constante puede consistir de un número ( entero o real ), o de una constante de caracteres.
La constante de caracteres consiste de una secuencia de caracteres encerrada entre apóstrofes ( ' ), y, en Turbo-Pascal, también puede formarse concatenándola con caracteres de control ( sin separadores ), por ejemplo :
'Teclee su opción ==>'^G^G^G ;
Esta constante sirve para desplegar el mensaje :
Teclee su opción ==> 
y a continuación suena el timbre tres veces.
Las constantes de caracteres pueden estar formadas por un solo carácter de control, p.ej. :
hoja_nueva = ^L 
Existen dos notaciones para los caracteres de control en Turbo Pascal, a saber :
  1. El símbolo # seguido de un número entero entre 0 y 255
    representa el carácter al que corresponde dicho valor decimal en el codigo ASCII.
  2. El símbolo ^ seguido por una letra, representa el correspondiente carácter de control.
Ejemplos :
#12  representa el valor decimal 12 
     ( hoja_nueva o alimentación de forma ). 
#$1B representa el valor hexadecimal 1B ( escape ). 
^G   representa el carácter del timbre o campana. 
^M   representa el carácter de retorno de carro.
Pascal proporciona las siguientes CONSTANTES PREDEFINIDAS :

NombreTipoValor
pi real3.1415926536 (Sólo en Turbo Pascal)
falseboolean
trueboolean
MaxIntinteger32767
idemás de las constantes literales para los tipos integer y real con representación decimal y hexadecimal, y las constantes literales para el conjunto de caracteres ASCII, más los caracteres especiales ( no incluidos en el conjunto estándar del ASCII )


2.5 Definición de tipos
Además de identificadores, los datos deben tener asignado algún tipo que indique el espacio de memoria en que se almacenarán y que al mismo tiempo evita el error de tratar de guardar un dato en un espacio insuficiente de memoria .
Un tipo de dato en Pascal puede ser cualquiera de los tipos predefinidos ( integer, real, byte, boolean, char ), o algún otro definido por el programador en la parte de definición de tipos .
Los tipos definidos por el programador deben basarse en los tipos estándar predefinidos, para lo cual, debe iniciar con el identificador reservado Type , seguido de una o más asignaciones de tipo separadas por punto y coma. Cada asignación de tipo debe consistir de un identificador de tipo, seguido por un signo de igual y un identificador de tipo previamente definido.
La asignación de tipos a los datos tiene dos objetivos principales:
  1. Detectar errores de operaciones en programas.
  2. Determinar cómo ejecutar las operaciones.
Pascal se conoce como un lenguaje "fuertemente tipeado" (strongly-typed) o de tipos fuertes. Esto significa que todos los datos utilizados deben tener sus tipos declarados explícitamente y el lenguaje limita la mezcla de tipos en las expresiones. Pascal detecta muchos errores de programación antes de que el programa se ejecute.
Los tipos definidos por el programador pueden utilizarse para definir nuevos tipos, por ejemplo :
Type
  entero      = integer;

  otro_entero = entero;
A continuación se hace una breve descripción de los tipos predefinidos .

Tipos enteros

Tipos enteros predefinidos

TipoRangoFormato
byte0 .. 2558 bits sin signo
integer-32768 .. 3276716 bits con signo
longint-247483648 .. 214748364732 bits con signo
shortint-128 .. 1278 bits con signo
word0 .. 6553516 bits sin signo

BYTE
El tipo byte es un subconjunto del tipo integer, en el rango de 0 a 255 . Donde quiera que se espere un valor byte, se puede colocar un valor integer; y viceversa ( EXCEPTO cuando cuando son pasados como PARAMETROS ). Asimismo, se pueden mezclar identificadores de tipo byte y de tipo integer en las expresiones.
Los valores de tipo byte se guardan en UN OCTETO de memoria.
INTEGER
El rango de los valores definidos por el tipo integer , en Turbo Pascal, se encuentra entre -32768 y 32767 .
Cada valor de este tipo se guarda en DOS OCTETOS de memoria.
LONGINT (enteros largos)
A partir de la versión 4.0 se han incorporado números que amplían el rango de variación de los enteros a -2,147,483,648. Este tipo de datos se denomina longint (enteros largos). Ocupan CUATRO OCTETOS de memoria. Existe una constante predefinida de tipo longint, denominada MaxLongInt, cuyo valor es 2,147,483,647.
SHORTINT (enteros cortos)
En ciertos casos, puede ser práctico disponer de valores enteros positivos y negativos cuyo alcance sea más restringido que el de los tipos enteros. Los tipos shortint pueden tomar valores entre -128 y 127. Ocupan UN OCTETO de memoria.
WORD
Existen casos en los que se desea representar únicamente valores positivos. Este es el caso. Por ejemplo, cuando se desea acceder desde un programa hasta una dirección de memoria. En tal situación, no tiene sentido una dirección negativa. Turbo Pascal dispone del tipo word (o palabra, de palabra de memoria), cuyo intervalo posible de valores es de 0 a 65535. Ocupa DOS OCTETOS de memoria.

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 . Cada valor de este tipo se guarda en SEIS OCTETOS de memoria.
Durante una operación aritmética con números reales, un valor mayor que 1E+38 (sobreflujo) causará la detención del programa y desplegará un mensaje de error ; mientras que un valor menor que 1E-38 (bajoflujo), producirá un resultado igual a cero.
Deben tomarse en cuenta las siguentes restricciones para los valores de tipo real :
  1. No pueden utilizarse como subindices en las definiciones del tipo estructurado array.
  2. No pueden formar subrangos.
  3. No se pueden usar para definir el tipo base de un conjunto (tipo estructurado set)
  4. No deben utilizarse para el control de las instrucciones for y case.
  5. Las funciones pred y succ no pueden tomarlos como argumentos.
Los números reales están siempre disponibles en Turbo Pascal, pero si su sistema incluye un coprocesador matemático como 8087, 80287 u 80387, se dispone además de otros tipos de números reales:
  • real (real)
  • single (real corto)
  • comp (entero ampliado)
  • double (real de doble precisión)
  • extended (real ampliado)
Computadoras sin coprocesador matemático (emulación por software)
datos disponibles : real, comp, double, extended y single.
Computadoras con coprocesador matemático
datos disponibles : real, comp, double, extended y single (reales IEEE)
Desde la versión 5.0 se permite utilizar los datos tipo coprocesador matemático aunque su computadora no lo tenga incorporado. La razón es que se emula dicho coprocesador. Los diferentes tipos reales se diferencian por el dominio de definición, el número de cifras significativas (precisión) y el espacio ocupado en memoria.
  • Turbo Pascal 4.0 requiere obligatoriamente un chip coprocesador matemático para hacer uso de números reales de coma flotante IEEE.
  • Turbo Pascal 5.0 a 7.0 emula el chip coprocesador matemático totalmente en software, permitiendo ejecutar tipos IEEE tanto si tiene como si no un chip 8087/287/387 instalado en su máquina.

TipoRangoCifras Tamaño y bytes
real2.910 E -39 .. 1.710 E 3811 -126
single1.510 E -45 .. 3.410 E 387 - 84
double5.010 E -324 .. 1.710 E 30815 - 168
extended1.910 E -4932 .. 1.110 E 493219 - 2010
comp-2 E 63 +1 .. 2 E 63 - 119 - 208
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 .
Un valor de tipo boolean ocupa UN OCTETO en la memoria.
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 "
Un valor de tipo char se guarda en UN OCTETO de memoria.

CADENA (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:
'Turbo Pascal','Tecnológico', #13#10  
Nota:
  • Una cadena sin nada entre los apóstrofos se llama cadena nula o cadena vacía.
  • La longitud de una cadena es el número de carácteres encerrados entre los apóstrofos.  
    2.6 Operadores
    Los operadores sirven para combinar los términos de las expresiones.
    En Pascal, se manejan tres grupos de operadores :
  • ARITMÉTICOS
  • RELACIONALES
  • LÓGICOS

2.6.1 Operadores aritméticos
Son aquellos que sirven para operar términos numéricos. Estos operadores podemos clasificarlos a su vez como :
  1. UNARIOS
  2. BINARIOS
Los operadores UNARIOS son aquellos que trabajan con UN OPERANDO.
Pascal permite el manejo de un operador unario llamado :
MENOS UNARIO
Este operador denota la negación del operando, y se representa por medio del signo menos ( - ) colocado antes del operando.
Por ejemplo :
Si x tiene asignado el valor 100, -x dará como resultado -100 ; esto es que el resultado es el inverso aditivo del operando.
Los operadores BINARIOS, son los que combinan DOS OPERANDOS , dando como resultado un valor numérico cuyo tipo será igual al mayor de los tipos que tengan los operandos.
La siguiente tabla muestra los símbolos de los operadores binarios de Pascal así como los nombres de las operaciones que realizan.
Operadores aritméticos básicos

OperadorOperaciónOperandosEjemploResultado
+Sumareal , integera + bsuma de a y b
- Restareal , integera - bDiferencia de a y b
*Multiplicaciónreal , integera * bProducto de a por b
/Divisiónreal , integera / bCociente de a por b
divDivisión enteraintegera div bCociente entero de a por b
modMódulointegera mod bResto de a por b
shlDesplazamiento a la izquierdaa shl bDesplazar a la izquierda b bits
shrDesplazamiento a la derechaa shr bDesplazar a la derecha b bits
Conviene observar lo siguiente :
  1. Cuando los dos operandos sean del tipo integer, el resultado será de tipo integer.
  2. Cuando cualquiera de los dos operandos, o ambos, sean del tipo real, el resultado será de tipo real.
  3. 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     = -27    div (-3)  = -2 15.0 div 3.0   = no válido15   div (4/2) = no válido
La operación div almacena sólo la parte entera del resultado, perdiéndose la parte fraccionaria (truncamiento).
  1. 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.6.2 Operadores relacionales
Una RELACIÓN consiste de dos operandos separados por un operador relacional. Si la relación es satisfecha, el resultado tendrá un valor booleano true ; si la relación no se satisface, el resultado tendrá un valor false. Los operadores deben ser del mismo tipo, aunque los valores de tipo real, integer y byte pueden combinarse como operandos en las relaciones. A continuación se describen los operadores relacionales utilizados en Pascal:

SímboloSignificado
=IGUAL que
<>NO IGUAL que
<MENOR que
>MAYOR que
<=MENOR o IGUAL que
>=MAYOR o IGUAL que
Ejemplos:
RelaciónResultado
20 = 11false
15 < 20true
PI > 3.14true
'A' < 20false
'A' = 65true


2.6.3 Operadores lógicos


 

Al igual que las relaciones, en las operaciones con operadores lógicos se tienen resultados cuyo valor de verdad toma uno de los valores booleanos true o false.
Los operadores lógicos en Pascal son : 

NOT Sintaxis : not operando 
Descripción : Invierte el valor de verdad de operando. 
Ejemplo : 
Si bandera tiene un valor de verdad true, not bandera produce un resultado con valor de verdad false. 
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. 
XOR  Sintaxis : operando.1 xor operando.2 
Descripción : Un operando debe tener valor de verdad true y el otro false para que el resultado tenga valor de verdad true.

Turbo Pascal también permite las siguientes operaciones entre los bits de operandos exclusivamente de tipo entero : 
AND  Sintaxis : operando.1 and operando.2
Descripción: Pone a ceros los bits de operando.2
cuyos correspondientes en operando.1 estén en ceros. 
Los valores se pasan a binario, y, sobre cada bit de operando.1 se 
realiza la operación and lógica con el correspondiente bit de operando.2. 
Ejemplo : 29 and 30 = 28
Cuya forma en binario es : 
    0000000000011101 = 29 (operando.1)
and 0000000000011110 = 30 (operando.2)
    _____________________
    0000000000011100 = 28 (resultado)   
OR ( o inclusiva )  Sintaxis : operando.1 or operando.2
Descripción : Pone a uno los bits de operando.1 cuyos correspondientes bits en operando.2 están a uno. 
Ejemplo : 17 or 30 = 31 
En binario: 
   0000000000010001 = 17 (operando.1)
or 0000000000011110 = 30 (operando.2)
   _____________________
   0000000000011111 = 31 (resultado) 
XOR ( o exclusiva )  Sintaxis : operando.1 xor operando.2 
Descripción : Invierte el estado de los bits de operando.1, cuyos correspondientes en operando.2 están a uno. 
Ejemplo : 103 xor 25 = 126 
En binario: 
    0000000001100111 = 103 (operando.1)
xor 0000000000011001 = 25  (operando.2)
    ______________________
    0000000001111110 = 126 (resultado)
SHL  Sintaxis : operando.1 shl operando.2 
Descripción : Desplaza hacia la izquierda los bits de operando.1, el número de posiciones establecidas por operando.2.
Los bits que salen por el extremo izquierdo se pierden. 
Ejemplo : 10 shl 2 = 40 
En binario: 
         0000000000001010 = 10 (operando.1)
shl 2 <= 0000000000101000 = 40 (resultado) 
(operando.2)                    
SHR Sintaxis : operando.1 shr operando.2
Descripción : Desplaza hacia la derecha los bits de operando.1 el número de posiciones establecidas por operando.2. 
Los bits que salen por el extremo derecho se pierden 
Ejemplo : 125 shr 3 = 15 
En binario : 
         0000000001111101 = 125 (operando.1)
shr 3 => 0000000000001111 = 15  (resultado)
(operando.2) 

2.7 Expresiones
Las expresiones son secuencias de constantes y/o variables separadas por operadores válidos.
Se puede construir una expresión válida por medio de :
  1. Una sola constante o variable, la cual puede estar precedida por un signo + ó - .
  2. Una secuencia de términos (constantes, variables, funciones) separados por operadores.
Además debe considerarse que:
Toda variable utilizada en una expresión debe tener un valor almacenado para que la expresión, al ser evaluada, dé como resultado un valor.
Cualquier constante o variable puede ser reemplazada por una llamada a una función.
Como en las expresiones matemáticas, una expresión en Pascal se evalúa de acuerdo a la precedencia de operadores. La siguiente tabla muestra la precedencia de los operadores en Turbo Pascal:

Precedencia de operadores
5- (Menos unario)
4not
3* / div mod and shl shr
2+ - or xor
1= <> > < >= <=
Las reglas de evaluación para las expresiones son :
  1. Si todos los operadores en una expresión tienen la misma precedencia, la evaluación de las operaciones se realiza de izquierda a derecha.
  2. 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.
  3. Las reglas 1) y 2) pueden ser anuladas por la inclusión de paréntesis en una expresión.
Ejemplos :
  1. 3 + 2*5   {*,+}
    4 + 10 =14
  2. 20*4 div 5  
    {Igual prioridad de izquierda a derecha : *,div}
    80   div 5 = 16
  3. 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}
    

    2.8 Instrucciones

    Aunque un programa en Pascal puede contar con una sola instrucción (también llamada enunciado, sentencia o estatuto), normalmente incluye una cantidad considerable de ellas. Uno de los tipos de instrucciones más importantes lo forman las instrucciones de asignación; las cuales asignan a una variable (por medio del símbolo := ) , el resultado de la evaluación de una expresión.
    La sintaxis para las instrucciones de asignación es :
    identificador := expresión ;
    Al símbolo := le llamaremos, en lo sucesivo : "simbolo de asignación"
    Los siguientes son ejemplos de instrucciones de asignacion :
    numero := 100 ; importe := precio * cantidad ; hipotenusa := sqrt(sqr(cateto_op)+sqr(cateto_ad ));
    Es posible construir una instrucción vacía escribiendo sólamente el punto y coma de una instrucción.
    Así podemos escribir :
    valor := valor + 1;;
    Lo que incluye las dos instrucciones :
    valor := valor + 1; y la instrucción vacía : ;

    Bloques de instrucciones

    En todo lugar donde sea válido utilizar una instrucción simple, es posible utilizar una instrucción compuesta o bloque de instrucciones, el cual se forma agrupando varias instrucciones simples por medio de los identificadores begin y end.
    Por ejemplo:
    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.
    No es necesario escribir el punto y coma antes de end ya que el punto y coma se usa para separar instrucciones, no para terminarlas.
    begin y end son delimitadores de bloque