1. NOTACION Y CONCEPTOS FUNDAMENTALES

Un computador es una maquina que puede llevar a cabo largas, complejas y repetitivas secuencias de operaciones a velocidad muy alta. Estas operaciones son aplicadas a información o datos suministrados por el usuario para producir otra información o resultados que requiera el usuario. Los componentes esenciales de un computador son un procesador, una memoria, y algún dispositivo de entrada y salida.
El procesador es el que realiza la secuencia de operaciones especificadas por el programa.
La memoria es usada para almacenar la información a la cual son aplicadas las operaciones del procesador.
La memoria es de dos clases, la memoria principal y la memoria secundaria. La memoria principal guarda tanto las instrucciones como los datos sobre los que opera el procesador. Los dispositivos de almacenamiento secundario son cintas magnéticas, discos o tambores que tienen las siguientes características. Su capacidad de almacenamiento es más grande que la memoria principal y la información puede ser guardada permanentemente en ellos.
Los dispositivos de entrada y salida son usados para transmitir información del mundo exterior a la memoria principal del computador (entrada) y la memoria principal del mundo exterior (salida)
El uso de un computador para una labor particular implica tres pasos esenciales
a) especificar la labor que el computador  realizara en términos de los datos de entrada que serán suministrados y los datos de salida.
b) crear un algoritmo o secuencia de datos por los cuales el computador pueda producir la salida requerida a partir de la entrada.
c) expresa este algoritmo como un programa de computador en un lenguaje de programación tal como PASCAL.
La estructura de un algoritmo puede estructurar en un diagrama estructurado en forma de bloques donde se encuentran las diferentes tareas que deben ser realizadas y su relación entre ellas. Los diagramas de flujo han sido la herramienta de programación por excelencia.
Un diagrama de flujo utiliza símbolos estándar y en el que cada paso del algoritmo se visualiza dentro del símbolo adecuado y el orden en que estos pasos se ejecutan se indica conectándolos con flechas llamadas líneas de flujo, porque indican el flujo lógico del algoritmo.
Los programas deben ser escritos en un lenguaje que pueda entender la computadora, escribir los algoritmos en una imitación de código de las computadoras: pseudocódigo, este surgió para superar las principales desventajas de el diagrama de flujo, es mas fácil de utilizar ya que maneja expresiones básicas de la lengua nativa del programador.
Así por ejemplo los símbolos matemáticos para expresar en pseudocódigos las operaciones matemáticas son:
+    Suma
 -   Resta
*   Multiplicación
/   División
Como ejemplo de palabras reservadas de distintos lenguajes de alti nivel expresadas en pseudocódigos podríamos tener las siguientes:
Inicio                     begin
Fin                         end/stop
Leer                        read/imput
Escribir                  write/print
Si                             if
Repetir                   repeat
Entero                    integer
Carácter                 char
La ventaja de utilizar un lenguaje de programación de lato nivel, tal como PASCAL es que un programa puede ser usado en cualquier computador para cual haya sido provisto el compilador del lenguaje. La provisión de un compilador para un lenguaje dado y un computador dado se llama una implementación del lenguaje.
Codificar es escribir en lenguaje de programación de alto nivel la representación del algoritmo, para realizar la conversión de algoritmo en programa se debe sustituir las palabras reservadas en castellano por sus homónimos en ingles.
Una ves que el algoritmo se ha convertido en programa fuente mediante el proceso de codificación, es preciso traducir  a código o lenguaje maquina, único que la computadora es capas de entender y ejecutar. El encargado de realizar esta función es un programa traductor (compilador). Si tras la compilación se presentan errores de compilación es preciso modificar la codificación del programa de forma que esta se adapte alas reglas de sintaxis del lenguaje elegido con el fin de corregir los errores.
Una ves obtenido el programa ejecutable se pone en funcionamiento con solo teclear su nombre suponiendo que no existen errores durante la ejecución se obtendrá la salida de los resultados del programa. Las instrucciones u órdenes para compilar un programa pueden variar según el tipo de compilador.
Los objetivos de la programación son los siguientes:
Exactitud, un factor clave en el logro de exactitud es la simplicidad. La innecesaria complejidad no cumple propósito alguno en la programación de computadores.
Claridad, el diseño y la limpieza del programa es indispensable para el programador y para otros que puedan leer y alterar el programa posteriormente.
Eficiencia, el tiempo tomado por el computador para llevar acabo la secuencia de operaciones y la cantidad de memoria que el computador usa para esta tarea.
Un programa de computador primero es contruido como una secuencia de simbolos o caracteres que forman el texto del programa.
Ejemplo (programa simple escrito en lenguaje de programación (PASCAL)
program             adicion (imput, output);
var                       primero, segundo, suma: integer;
begin                   
                            read (primero, segundo)
                            suma : =primero+segundo;
                            write (suma)
end.
Todo lenguaje de programación tiene todo un conjunto estrictamente definido de reglas asociadas con el que describe como puede ser construido en el lenguaje un programa valido estas reglas son necesarias para que el programador pueda estar seguro de la corrección y el efecto del programa que describe y para que este programa pueda ser entendido tanto para el sistema como para quien lo lea.
Las reglas del lenguaje están constituidas de dos partes conocidas como la sintaxis y la semántica del lenguaje. Las reglas de sintaxis definen como las palabras (o vocabulario) del lenguaje pueden ser puestas juntas para formar frases. Las reglas de semántica atribuyen sentido y significado a estas confinaciones de palabras. Estas reglas de semántica son usualmente establecidas con menos formalidad que las reglas de sintaxis las cuales para el lenguaje PASCAL están descritas mediante un formalismo conocido como FBNE (Forma Backus-Naur) la forma de un programa PASCAL esta definida por la siguiente regla:
programa = encabezamiento bloque “.”
Esta regla es leída como “un programa esta definido como un encabezamiento seguido por un bloque seguido por un punto “.”
En el programa ejemplo dado antes la primera línea de símbolos es el encabezamiento. Los símbolos siguientes desde var hasta end forman un bloque. En una regla FBNE la aparición de un símbolo de lenguaje dentro de comillas “.” Denota el símbolo mismo. Cada regla es terminada con un punto.
El vocabulario de lenguaje de programación PASCAL  consiste de letras, dígitos y símbolos especiales. Las frases del lenguaje son entonces construidas a partir de este vocabulario de acuerdo con la sintaxis de PASCAL. Conforme a la definición estándar de PASCAL  una letra puede ser cualquiera de las 26 del alfabeto romano, en forma mayúscula o minúscula, esto es, existen 52 letras en la categoría sintáctica letra.
Letra =  A, B, C, D, E, F, G, H, I, J, K, L, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z.
Un digito en PASCAL es cualquiera de los diez dígitos arábigos, es decir:
Digito =  0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
El número de símbolos especiales requeridos por PASCAL para puntuación y otros propósitos es bastante alto. Muchos de estos símbolos especiales están representados como palabras más bien que como caracteres especiales.
Símbolo especial  =  +,  -,  *,  /,  =,   <>,  <,  >,  <=,  >=,  (,  ),  {,  },  :=,  .,  ,  :,  ;,  div, nil, in, or, and, not, if, then, else, case, of, repeat, until, while, do, for, to, begin, end, with, goto, const, var, type,record, set, file, function, procedure, level, packed, program.
Los números en pascal pueden estar representados en una de las dos formas: números enteros o reales.
Un numero entero puede ser positivo, negativo o cero. El numero es escrito como una secuencia de dígitos de cualquier longitud la cual puede o n estar precedida por un signo (+ o -)
Ejemplo de enteros validos:
6, o, -6, +7000000
Enteros no validos:
6,437,876         un entero no puede contener no-dígitos
-6.0                    un entero no puede contener un punto decimal
El número máximo de dígitos que pueden ser usados en un entero depende del tamaño de la localización de memoria en el computador que almacenara el entero. La representación de números reales en un computador es solamente una aproximación mientras que los enteros son representados exactamente.
PASCAL requiere que las varias cantidades usadas en un programa, como las piezas del texto del programa, le sean dados nombres por los cuales puedan ser identificados. Estos nombres son conocidos como identificadores, y son creados por el programa. Un identificador consiste en una letra seguida por cualquier número de letras y dígitos, es decir.
Identificador =  letra {letra/digito}
Un identificador puede ser de cualquier longitud, PASCAL impone una restricción a la longitud de cada línea de texto del programa. En implementaciones que provean tanto mayúsculas como minúsculas, pueden ser usadas letras de cualquiera de las dos formas en los identificadores pero el estándar PASCAL exige que el significado de un programa no sea alterado por el cambio de forma de alguna letra, en tal caso los siguientes identificadores son considerados como idénticos:
algunnombre         ALGUNNOMBRE         Algun Nombre
Ejemplo de identificadores validos:
I
 Ufo
 PC49
 unnombremylargo
Los siguientes son identificadores no permitidos:
1 abc                   un identificador debe comenzar con una letra
MA-ÑANA          un identificador no debe contener un guiño
$100                    un identificador debe comenzar con una letra
Algunos de los símbolos especiales de PASCAL  son palabras reservadas que no pueden ser usadas para otros propósitos como array y begin no pueden ser usadas como identificadores.
Ciertos identificadores, conocidos como identificadores estándar son pre declarados en toda implementación de PASCAL estándar, estos describen cantidades estándar y facilidades proporcionadas por el lenguaje, tales como funciones trigonométricas y aritméticas.
Lista completa de identificadores estándar:
abs, arctan, boolean, char, chr, cos, dispose, eof, eoln, exp, false, get, input, integer, in, maxint, new, odd, ord, output, pack, page, pred, put, read, readln, real, reset, rewrite, round, sin, sqr, sqrt, succ, text, true, trunc, unpack, write, writeln.
Una secuencia de caracteres ecerrada por apostrofes forma lo que es conocida como una cadena. Es usada dentro de un programa para denotar la secuencia de caracteres mismos. Si la cadena de caracteres incluye un apostrofe, entonces deberá ser escrito dos veces por consiguiente la definición sintáctica de una cadena es
Cadena  =    ‘ carácter-cadena {carácter-cadena} ‘
Carácter-cadena  =  cualquier-carácter-exepto-comillas(“…”)
Un programa PASCAL se expresa como una secuencia de identificadores, números, cadenas y símbolos especiales. En PASCAL estándar toda secuencia de caracteres encerrada por los símbolos {  } forman lo que es conocido como un comentario. Los comentarios pueden aparecer donde quiera que un blanco o un fin de línea pueda aparecer, pero no tiene absolutamente ningún significado en cuanto a la ejecución del programa. Sirve solamente como un recurso con el cual un programador puede hacer el sentido d un programa mas claro mediante la inclusión de observaciones explicativas en lenguaje natural.
Ejemplo:  {este es un comentario escrito en lenguaje natural}
En el siguiente ejemplo se muestra la estructura básica de un programa en PASCAL, el propósito es leer dos números enteros e imprimir su suma. La primera línea es el encabezamiento, el cual da al programa en nombre de adición e indica que serán ejecutadas tanto la entrada como la salida, la segunda línea es la parte de declaraciones, que denomina los tres ítems de datos usados en el programa y establece que serán números enteros.
program     adicion (imput, output);
var              primero, segundo, suma: integer;
begin         
                   read (primero,segundo);
                   suma: =primero+segundo;
                   write (suma)
end.
La cabecera de un programa en PASCAL consta de tres partes claramente definidas: cabecera del programa, sección de declaraciones y cuerpo del programa.
La cabecera del programa consta de tres partes; la palabra reservada program, el nombre del programa (un identificador) y un punto y coma (;).
Los lenguajes de programación de alto nivel como PASCAL permite al programador ignorar la  representación de maquina existente y expresar la naturaleza de los datos en términos de tipos de datos. Un tipo de datos define un conjunto de valores todos los tipos de datos están estructurados de tipos no estructurados. En PASCAL un tipo no estructurado es  definido por el programador o en caso contrario es uno de los cuatro tipos predefinidos estándar proporcionados, los tipos integer, real, char, boolean.
El tipo integer representa el conjunto de números enteros y todo valor de este tipo es por tanto un número entero. PASCAL define un número de operadores aritméticos que toman operandos enteros y retornan resultados enteros estos son.
Símbolo                                                 Operación            resultado
+(adición)                                                   7+3                          10
-(sustracción)                                             7-3                           4
*(multiplicación)                                       7*3                         21
div(división con truncamiento)              7 div 3                    2
mod(modulo)                                            7 mod 3                 1
El tipo real son el conjunto de números reales PASCAL suministra un numero de operadores matemáticos que toman operadores reales  y producen resultados reales, estos son
Símbolo                                              operación                        resultado
+(Adición)                                           2.1+1.4                              3.5
-(sustracción)                                     2.1-1.4                              0.7
*(Multiplicación)                               2.1*1.4                             2.94   
/(División)                                           2.1/1.4                             1.5
En PASCAL el tipo char esta definido como e conjunto de caracteres disponible en el sistema computador que ejecuta el programa. Un valor particular de tipo char es denotado por encerramiento del carácter en comillas sencillas (apostrofes) por ejemplo.
‘a’      ‘4’     ‘?’                 ‘+’
Un valor boolean es uno de los valores de verdad lógicos representaos   por los identificadores PASCAL  estándar true (verdadero) false (falso). PASCAL proporciona operadores estándar que toman valores booleanos como operandos y producen un resultado booleano. Estos operadores incluyen
and            y lógica
or               o inclusiva lógica
not             negación lógica
Los valores booleanos pueden también ser producidos por aplicación de operadores relacionales a operandos de otros tipos. PASCAL suministra los seis operadores relacionales de las matemáticas, que son:
=             igual a
<>             No igual a
<               menor o igual a
<=             menor que o igual a
 >              Mayor que
>=             mayor que igual a
Los ítems de datos que un programa manipula pueden ser divididos en dos clases, aquellos cuyos valores permanecen fijos durante la ejecución de un programa, y aquellos cuyos valores son cambiados por la ejecución. Los primeros mencionados son conocidos como constantes. Los segundos son conocidos como variables. Los ítems introducidos en un programa pascal dependen de su clase.
123                denota un valor particular de tipo integer
12.72            denota un valor particular de tipo real
‘A’                  denota un valor particular de tipo char
True              denota un valor particular de tipo boolean
Corazón        denota un valor particular de tipo enumerado
La sección de declaraciones de un programa esta compuesta por:
1.    Declaración de unidades UEES
2.    Declaración de etiquetas LAVEL
3.    Declaración de constante CONST
4.    Definición de tipos TYPE
5.    Declaración de variables VAR
6.    Declaración de procedimientos y funciones PROCEDIRE, FUNKTION
En PASCAL las constantes pueden ser de cualquier tipo, incluso constantes estructuradas, como arrays y registros las constantes  se declaran después de la palabra const y su forma es
Const
            Nomconstante =  valor;
            … ;
La declaración de una constante comienza ocn un identificador o nombre de constante seguido por el signo (=) y el valor correspondiente y terminado en un carácter punto y coma (;)
Ejemplo
Const
             Pueblo  = ‘castillo chido’;
              Peso  =   75.5;
PASCAL tiene varias constantes con nombre.
MAXINT                   contiene el valor entero 32767
MAXLONGINT         contiene el valor entero 2.147.483.647
PI                              contiene el valor de Pi = 3.1415926536
TRUE, FALSE           típico lógico (boolean)
La declaración de etiquetas comienza con la palabra determinada label, seguida de todas la etiquetas del programa, separadas por comas. Una etiqueta se representa mediante un identificador o mediante un número entero comprendido entre 0 y 9999. Las etiquetas se utilizan para la transferencia incondicional de flujo de programa (sentencia GOTO)
Label  
            Cerrar, 1, 275;
La declaración de tipos sirve para definir los distintos tipos de datos la declaración se inicia con la palabra reservada type seguida por las declaraciones de los distintos tipos que el usuario quiere definir., a su vez una declaración de tipo consta del identificador de tipo y la definición del mismo separadas por un signo =. El formato general de la sección tipe es:
Type
         Identificador1 = tipodato1;
         Identificador2 = tipodato2;
        
La declaración de variables va precedida por la palabra reservada var y seguida por la declaración de las variables, la declaración de variables utiliza el carácter (:)  para separar el nombre de la variable de su tipo, el formato general de la sección var es:
Var
          Nomvariable1 : tipo 1;
          Nomvariable2 : tipo 2;
                                 : …
O bien el caso de diferentes variables del mismo tipo:
Var
        Nomvariable1,
        Nomvariable2,
        Nomvariable3 : tipo 3;
Los procedimientos y funciones son de PASCAL son pequeños programas o grupos de sentencias que realizan tareas especificas o bien que se ejecutan a lo largo del programa varias veces. La estructura de un procedimiento o función es similar a la del programa con la diferencia de que los procedimientos y funciones comienzan su declaración en su cabecera con las palabras reservadas PROCEDURE o FUNCTION en lugar de program y que en ves de terminar con un punto finaliza con un punto y coma.
Tras la sección de declaraciones comienza el programa principal que se encuentra acotado por las palabras reservadas BEGIN y END. Todas las sentencias que perteneces al programa principal deben terminar con un punto y coma (;)  las reglas relativas a los puntos y coma separadores de sentencia son:
-          Cada sentencia debe terminar con un punto y coma
-          Se puede omitir el punto y coma final si va seguido de las palabras reservadas end y until
-          Se debe omitir el punto y coma si le sigue la palabra reservada else
-          8salvo si se trata de una estructura selectiva case…of)
Ejemplo.
Program saludo;
Var
      Tu nombre: string {40}
Begin
      Write       (’dime tu nombre: ‘); (*sentencia de salida*)
      Readln     (tu nombre);              (*entrada de datos*)
      Writeln    (‘hola’, tu nombre)
End.
Todo elemento del programa que quiera ser referenciado o usado en un momento determinado del programa debe haber sido previamente definido (declarado).
La parte de declaraciones de PASCAL son los tipos de datos, constantes y variables. La manipulación que el programa ejecuta sobre sus ítems de datos es definida por su parte de sentencias. La parte de sentencias de fine las acciones a ser llevadas a cabo como una secuencia de sentencias donde cada sentencia especifica una acción correspondiente. PASCAL es un lenguaje de programación secuencial ya que estas sentencias son ejecutadas una después de otra y nunca simultáneamente. La estructura de parte de sentencia es

Parte de sentencias = “begin” sentencia ;   sentencia  “end”
Ejemple tres sentencias ejecutadas
Begin
          Read (primero, segundo);
          Suma: = primero+segundo;
          Write (suma)
End.