En este tipo de diagramas, muy usados para describir la sintaxis en PASCAL, lo que
está dentro de círculos o de óvalos debe aparecer exactamente tal como se muestra. Lo que
está dentro de rectángulos, se describe con otro diagrama.
El identificador se representa asi :
letra
$
_
letra
$
_
dígitos
decimales
domingo, 3 de abril de 2011
El encabezamiento
Un programa escrito en PASCAL empieza siempre con un encabezamiento que
consiste en :
.
La palabra reservada PROGRAM .
.El nombre del programa .
Los nombres de los ficheros externos que se usan para entrada y .
salida.Se escriben separados por comas y entre paréntesis.
.El delimitador punto y coma .
En un diagrama de Conway, se representa así:
PROGRAM ( )
;
,
Identificador Identificado
consiste en :
.
La palabra reservada PROGRAM .
.El nombre del programa .
Los nombres de los ficheros externos que se usan para entrada y .
salida.Se escriben separados por comas y entre paréntesis.
.El delimitador punto y coma .
En un diagrama de Conway, se representa así:
PROGRAM ( )
;
,
Identificador Identificado
Reglas sintácticas
El punto y coma ( ; ) y el punto ( . ) son DELIMITADORES en PASCAL.
El punto y coma separa sentencias consecutivas. También se usa para terminar el
encabezamiento del programa y las declaraciones de los datos. No es necesario
escribir punto y coma después de la palabra BEGIN ni antes de la palabra END
porque BEGIN y END no son sentencias.
El punto indica el final del programa.
2. Las palabras BEGIN y END también son delimitadores, no son sentencias.Se
usan para separar las partes funcionales de un programa. Con ellas se indica el
principio y el final de la sección ejecutable. También sirven para delimitar una
sentencia compuesta. Cada BEGIN debe estar asociado con un END, excepto en
dos casos : la sentencia CASE y la declaración de RECORD.
3. El PASCAL permite formato libre en la escritura del texto que compone el
programa. Se pueden colocar las sentencias en cualquier lugar de una línea,
escribir una sentencia en más de una línea y colocar varias sentencias en una
misma línea. Pero no se puede dividir un nombre y un número entre varias líneas
o con un espacio en blanco.
4. Un programa puede contener comentarios en cualquier lugar. Los comentarios
se delimitan encerrándolos entre llaves ( { } ). También es posible comenzar un
comentario con " (
*
" y acabarlo con "
*
." (
En el segundo ejemplo que se muestra a continuación, se presenta un programa algo
más completo para indicar el aspecto de las partes que lo componen. En este momento no
hay que prestar demasiada atención a las sentencias que contiene porque se estudiarán más
adelante. El programa simula el comportamiento de un transeunte cuando se dispone a
cruzar un paso de peatones con semáforo. Evidentemente es demasiado simple.
El punto y coma separa sentencias consecutivas. También se usa para terminar el
encabezamiento del programa y las declaraciones de los datos. No es necesario
escribir punto y coma después de la palabra BEGIN ni antes de la palabra END
porque BEGIN y END no son sentencias.
El punto indica el final del programa.
2. Las palabras BEGIN y END también son delimitadores, no son sentencias.Se
usan para separar las partes funcionales de un programa. Con ellas se indica el
principio y el final de la sección ejecutable. También sirven para delimitar una
sentencia compuesta. Cada BEGIN debe estar asociado con un END, excepto en
dos casos : la sentencia CASE y la declaración de RECORD.
3. El PASCAL permite formato libre en la escritura del texto que compone el
programa. Se pueden colocar las sentencias en cualquier lugar de una línea,
escribir una sentencia en más de una línea y colocar varias sentencias en una
misma línea. Pero no se puede dividir un nombre y un número entre varias líneas
o con un espacio en blanco.
4. Un programa puede contener comentarios en cualquier lugar. Los comentarios
se delimitan encerrándolos entre llaves ( { } ). También es posible comenzar un
comentario con " (
*
" y acabarlo con "
*
." (
En el segundo ejemplo que se muestra a continuación, se presenta un programa algo
más completo para indicar el aspecto de las partes que lo componen. En este momento no
hay que prestar demasiada atención a las sentencias que contiene porque se estudiarán más
adelante. El programa simula el comportamiento de un transeunte cuando se dispone a
cruzar un paso de peatones con semáforo. Evidentemente es demasiado simple.
ESTRUCTURA DE UN PROGRAMA
Un programa escrito en PASCAL consta de un ENCABEZAMIENTO y un
BLOQUE.
En el encabezamiento se especifica el nombre del programa y los nombres de los
ficheros externos que se usan para entrada de datos y salida de resultados.
El bloque está dividido en dos partes :
. La sección de las declaraciones, donde se declaran todos los datos y las
rutinas.
. La sección ejecutable, que contiene sentencias ejecutables.
Un programa también puede contener lineas de comentario intercaladas en cualquier
lugar.
Sintácticamente, un programa comienza con la palabra PROGRAM y termina con un
punto "."
El primer ejemplo muestra un caso sencillo donde sólo se pretende ofrecer un visión
general :
PROGRAM Uno ( INPUT, OUTPUT ) ; (* Este es el encabezamiento *)
(* Ejemplo PAS001 *)
(* Aqui no hay declaraciones. No se necesitan *)
BEGIN
WRITELN (' Que tal va con este capítulo ? ') ; (* Esta es la única sentencia ejecutable *)
END.
El resultado de su ejecución consiste en escribir por la terminal el texto siguente:
Que tal va con este capítulo ?
BLOQUE.
En el encabezamiento se especifica el nombre del programa y los nombres de los
ficheros externos que se usan para entrada de datos y salida de resultados.
El bloque está dividido en dos partes :
. La sección de las declaraciones, donde se declaran todos los datos y las
rutinas.
. La sección ejecutable, que contiene sentencias ejecutables.
Un programa también puede contener lineas de comentario intercaladas en cualquier
lugar.
Sintácticamente, un programa comienza con la palabra PROGRAM y termina con un
punto "."
El primer ejemplo muestra un caso sencillo donde sólo se pretende ofrecer un visión
general :
PROGRAM Uno ( INPUT, OUTPUT ) ; (* Este es el encabezamiento *)
(* Ejemplo PAS001 *)
(* Aqui no hay declaraciones. No se necesitan *)
BEGIN
WRITELN (' Que tal va con este capítulo ? ') ; (* Esta es la única sentencia ejecutable *)
END.
El resultado de su ejecución consiste en escribir por la terminal el texto siguente:
Que tal va con este capítulo ?
Identificadores
Son nombres que denotan constantes, tipos, variables, procedimientos y funciones.
Pueden incluir letras y dígitos cumpliendo las restricciones siguientes:
.
Un identificador no puede comenzar con un dígito .
.Un identificador no puede tener espacios en blanco ni dígitos especiales .
Los primeros caracteres de un identificador (31 en VAX PASCAL) deben designar .
un nombre único dentro del bloque de programa en el que ha sido definido.
En PASCAL hay algunos identificadores que están predeclarados como nombres de
procedimientos, de funciones, tipos de datos, constantes simbólicas y variables de fichero.
En la tabla 2.4 se indican los incluidos en el estándar.
ABS FALSE PACK SQR
ARCTAN GET PAGE SQRT
BOOLEAN INPUT PRED SUCC
CHAR INTEGER PUT TEXT
CHR LN READ TRUE
COS MAXINT READLN TRUNC
DISPOSE NEW REAL UNPACK
EOF NIL RESET WRITE
EOLN ODD REWRITE WRITELN
EXP ORD ROUND
OUTPUT SIN
Pueden incluir letras y dígitos cumpliendo las restricciones siguientes:
.
Un identificador no puede comenzar con un dígito .
.Un identificador no puede tener espacios en blanco ni dígitos especiales .
Los primeros caracteres de un identificador (31 en VAX PASCAL) deben designar .
un nombre único dentro del bloque de programa en el que ha sido definido.
En PASCAL hay algunos identificadores que están predeclarados como nombres de
procedimientos, de funciones, tipos de datos, constantes simbólicas y variables de fichero.
En la tabla 2.4 se indican los incluidos en el estándar.
ABS FALSE PACK SQR
ARCTAN GET PAGE SQRT
BOOLEAN INPUT PRED SUCC
CHAR INTEGER PUT TEXT
CHR LN READ TRUE
COS MAXINT READLN TRUNC
DISPOSE NEW REAL UNPACK
EOF NIL RESET WRITE
EOLN ODD REWRITE WRITELN
EXP ORD ROUND
OUTPUT SIN
Símbolos especiales
Se usan para representar delimitadores, operadores y otros elementos sintácticos.
Cuando un símbolo está formado por más de un carácter, éstos deben escribirse
seguidos sin espacios en blanco de separación.
Nombre Símbolo Nombre Símbolo
Sumar, signo más + Menor que <
Restar, signo menos - Menor o igual que <=
Multiplicar * Mayor que >
Dividir / Mayor o igual que >=
Operador de asignación := Paréntesis ( )
Punto . Corchetes [ ]
Punto y coma ; Comentarios { }, (* *)
Dos puntos : Puntero @, ^
Apóstrofo ' Operador de subrango . .
Igual = Dis
Cuando un símbolo está formado por más de un carácter, éstos deben escribirse
seguidos sin espacios en blanco de separación.
Nombre Símbolo Nombre Símbolo
Sumar, signo más + Menor que <
Restar, signo menos - Menor o igual que <=
Multiplicar * Mayor que >
Dividir / Mayor o igual que >=
Operador de asignación := Paréntesis ( )
Punto . Corchetes [ ]
Punto y coma ; Comentarios { }, (* *)
Dos puntos : Puntero @, ^
Apóstrofo ' Operador de subrango . .
Igual = Dis
Conjunto de caracteres ASCII
Significado de algunas abreviaturas:
nul nulo nl salto de linea
ht tabulador horizontal esc escape
cr retorno de carro bs retroceso
bel campana vs tabulador vertical
Observaciones:
• Los códigos de los caracteres 0 a 31 y 127 no son imprimibles
• Los códigos de las letras mayúsculas, los de las minúsculas y los de las cifras son
contiguos entre sí.
• La diferencia entre una letra mayúscula y su correspondiente minúscula es 32.
nul nulo nl salto de linea
ht tabulador horizontal esc escape
cr retorno de carro bs retroceso
bel campana vs tabulador vertical
Observaciones:
• Los códigos de los caracteres 0 a 31 y 127 no son imprimibles
• Los códigos de las letras mayúsculas, los de las minúsculas y los de las cifras son
contiguos entre sí.
• La diferencia entre una letra mayúscula y su correspondiente minúscula es 32.
Conjunto de CaractereS
El conjunto de caracteres
El PASCAL estandar usa el conjunto de la tabla de codificación ASCII ( American
Standard Code for Information Interchange ) que contiene 128 caracteres puestos en orden.
Hay varias clases de caracteres :
Las letras mayúsculas y las minúsculas desde la " A " a la " Z " y desde la " a " a .
la " z ".
." los números del " 0 " al " 9 .
,(?) Caracteres especiales, tales como el "ampersand" (&), el signo de interrogación .
el signo de igualdad (=).
Caracteres no imprimibles, tales como el espacio en blanco, el tabulador, el salto .
de linea, el retorno de carro, el pitido.
En general, los compiladores de PASCAL no distinguen entre letras mayúsculas y
minúsculas excepto cuando se escriben entre apóstrofos.
Ejemplo : PROGRAM Uno y PROGRAM UNO son equivalentes.
' Pepe Pérez ' y ' PEPE PEREZ ' son diferentes.
La tabla 2.1 resume el conjunto de caracteres ASCII. Cada elemento es un valor
constante del tipo predefinido CHAR.
El número decimal que lleva asociado cada elemento es el ordinal que devuelve la
función ORD de PASCAL aplicada a ese carácter.Elementos básicos
2 - 4
Derecha
0 1 2 3 4 5 6 7 8 9
Izda.
0 nul soh stx etx eot enq ack bel bs ht
1 nl vt np cr so si dle dc1 dc2 dc3
2 dc4 nak syn etb can em sub esc fs gs
3 rs us sp ! " # $ % & '
4 ( ) * + , - . / 0 1
5 2 3 4 5 6 7 8 9 : ;
6 < = > ? @ A B C D E
7 F G H I J K L M N O
8 P Q R S T U V W X Y
9 Z [ \ ] ^ _ ` a b c
10 d e f g h i j k l m
11 n o p q r s t u v w
12 x y z { | } ~ del
El PASCAL estandar usa el conjunto de la tabla de codificación ASCII ( American
Standard Code for Information Interchange ) que contiene 128 caracteres puestos en orden.
Hay varias clases de caracteres :
Las letras mayúsculas y las minúsculas desde la " A " a la " Z " y desde la " a " a .
la " z ".
." los números del " 0 " al " 9 .
,(?) Caracteres especiales, tales como el "ampersand" (&), el signo de interrogación .
el signo de igualdad (=).
Caracteres no imprimibles, tales como el espacio en blanco, el tabulador, el salto .
de linea, el retorno de carro, el pitido.
En general, los compiladores de PASCAL no distinguen entre letras mayúsculas y
minúsculas excepto cuando se escriben entre apóstrofos.
Ejemplo : PROGRAM Uno y PROGRAM UNO son equivalentes.
' Pepe Pérez ' y ' PEPE PEREZ ' son diferentes.
La tabla 2.1 resume el conjunto de caracteres ASCII. Cada elemento es un valor
constante del tipo predefinido CHAR.
El número decimal que lleva asociado cada elemento es el ordinal que devuelve la
función ORD de PASCAL aplicada a ese carácter.Elementos básicos
2 - 4
Derecha
0 1 2 3 4 5 6 7 8 9
Izda.
0 nul soh stx etx eot enq ack bel bs ht
1 nl vt np cr so si dle dc1 dc2 dc3
2 dc4 nak syn etb can em sub esc fs gs
3 rs us sp ! " # $ % & '
4 ( ) * + , - . / 0 1
5 2 3 4 5 6 7 8 9 : ;
6 < = > ? @ A B C D E
7 F G H I J K L M N O
8 P Q R S T U V W X Y
9 Z [ \ ] ^ _ ` a b c
10 d e f g h i j k l m
11 n o p q r s t u v w
12 x y z { | } ~ del
ElemenTos GramaticaleS
Las sentencias de un programa en PASCAL se forman con elementos que pueden ser :
- símbolos individuales, tales como los operadores aritméticos.
- palabras con un significado especial en PASCAL y palabras definidas
por el usuario.
Los elementos gramaticales se construyen con caracteres. Un carácter es cualquier
elemento de la tabla de codificación ASCII ( Tabla 2.1 ).
Algunos caracteres son SIMBOLOS ESPECIALES que se usan en PASCAL como
delimitadores de sentencias, como operadores y como elementos sintácticos del lenguaje.
Ejemplo : " ; " , " > ", " < > " , " = " . En la tabla 2.2 se indican todos.Elementos básicos
2 - 3
Las PALABRAS usadas en un programa en PASCAL son combinaciones de
caracteres alfabéticos y numéricos. Ocasionalmente pueden incluirse el signo del dólar ($),
el de subrayar ( _ ) y el del tanto por ciento (%) en algunas implementaciones.
Algunas PALABRAS están RESERVADAS para nombres de sentencias ejecutables,
de operaciones y de estructuras de datos predefinidas. En la tabla 2.3 se presentan todas las
PALABRAS RESERVADAS. Ejemplo : ARRAY, BEGIN, CASE, DIV, etc...
Otras PALABRAS usadas en los programas son los IDENTIFICADORES. Algunos
están PREDEFINIDOS y representan rutinas y tipos de datos que proporciona el PASCAL.
Otros identificadores usados son los DEFINIDOS POR EL USUARIO para poner nombre
a programas, constantes simbólicas, variables y cualquier elemento del programa que no
haya sido denominado. En las tablas 2.4 y 2.5 se indican los IDENTIFICADORES
PREDEFINIDOS. Ejemplo : CHAR, EOF, EXP, WRITE, etc...
- símbolos individuales, tales como los operadores aritméticos.
- palabras con un significado especial en PASCAL y palabras definidas
por el usuario.
Los elementos gramaticales se construyen con caracteres. Un carácter es cualquier
elemento de la tabla de codificación ASCII ( Tabla 2.1 ).
Algunos caracteres son SIMBOLOS ESPECIALES que se usan en PASCAL como
delimitadores de sentencias, como operadores y como elementos sintácticos del lenguaje.
Ejemplo : " ; " , " > ", " < > " , " = " . En la tabla 2.2 se indican todos.Elementos básicos
2 - 3
Las PALABRAS usadas en un programa en PASCAL son combinaciones de
caracteres alfabéticos y numéricos. Ocasionalmente pueden incluirse el signo del dólar ($),
el de subrayar ( _ ) y el del tanto por ciento (%) en algunas implementaciones.
Algunas PALABRAS están RESERVADAS para nombres de sentencias ejecutables,
de operaciones y de estructuras de datos predefinidas. En la tabla 2.3 se presentan todas las
PALABRAS RESERVADAS. Ejemplo : ARRAY, BEGIN, CASE, DIV, etc...
Otras PALABRAS usadas en los programas son los IDENTIFICADORES. Algunos
están PREDEFINIDOS y representan rutinas y tipos de datos que proporciona el PASCAL.
Otros identificadores usados son los DEFINIDOS POR EL USUARIO para poner nombre
a programas, constantes simbólicas, variables y cualquier elemento del programa que no
haya sido denominado. En las tablas 2.4 y 2.5 se indican los IDENTIFICADORES
PREDEFINIDOS. Ejemplo : CHAR, EOF, EXP, WRITE, etc...
ElemenTos BasicoS
En PASCAL también existen las EXPRESIONES que, igualmente, corresponden a
algun tipo siempre. Una expresión representa al valor resultante de operar alguna
combinación de constantes, variables, funciones, con ciertos operadores. Se pueden usar
operadores aritméticos, relacionales, lógicos, de manejo de cadenas de caracteres, y de
conjuntos. Las operaciones aritméticas producen valores enteros o reales. Las operaciones
relacionales y lógicas producen valores booleanos. Las operaciones entre conjuntos permiten
obtener la unión, la intersección y las diferencias entre conjuntos.
Resumiendo y hablando en términos generales, se puede enunciar el principio básico
de que cada constante, variable, expresión o función es de un tipo determinado.
Como en los equipos de proceso de datos sólo hay un tipo de escritura, la norma que
se adopta para hacer distinciones consiste en manifestar explicitamente el tipo asociado a
cada entidad en sentencias de declaración y hacer que esta declaración preceda en el texto a
la utilización de las constantes, variables o funciones.
Las características del concepto de TIPO que están incorporadas al PASCAL son las
siguientes :
1. Un tipo de datos determina el conjunto de valores al que pertenece una
constante,o que puede tomar una variable o expresión, o que pueden ser
generados por un operador o función.
2. El tipo de valor identificado por una constante, variable o expresión puede
deducirse de su forma o de su declaración sin necesidad de ejecutar el proceso
de cálculo.
3. Cada operador o función presupone argumentos de un tipo determinado y
produce un resultado también de un tipo determinado. Si un operador admite
argumentos de varios tipos ( por ejemplo, se utiliza el símbolo "+" igualmente
para sumar enteros y reales ) el tipo del resultado puede determinarse a partir
de reglas específicas del lenguaje.
algun tipo siempre. Una expresión representa al valor resultante de operar alguna
combinación de constantes, variables, funciones, con ciertos operadores. Se pueden usar
operadores aritméticos, relacionales, lógicos, de manejo de cadenas de caracteres, y de
conjuntos. Las operaciones aritméticas producen valores enteros o reales. Las operaciones
relacionales y lógicas producen valores booleanos. Las operaciones entre conjuntos permiten
obtener la unión, la intersección y las diferencias entre conjuntos.
Resumiendo y hablando en términos generales, se puede enunciar el principio básico
de que cada constante, variable, expresión o función es de un tipo determinado.
Como en los equipos de proceso de datos sólo hay un tipo de escritura, la norma que
se adopta para hacer distinciones consiste en manifestar explicitamente el tipo asociado a
cada entidad en sentencias de declaración y hacer que esta declaración preceda en el texto a
la utilización de las constantes, variables o funciones.
Las características del concepto de TIPO que están incorporadas al PASCAL son las
siguientes :
1. Un tipo de datos determina el conjunto de valores al que pertenece una
constante,o que puede tomar una variable o expresión, o que pueden ser
generados por un operador o función.
2. El tipo de valor identificado por una constante, variable o expresión puede
deducirse de su forma o de su declaración sin necesidad de ejecutar el proceso
de cálculo.
3. Cada operador o función presupone argumentos de un tipo determinado y
produce un resultado también de un tipo determinado. Si un operador admite
argumentos de varios tipos ( por ejemplo, se utiliza el símbolo "+" igualmente
para sumar enteros y reales ) el tipo del resultado puede determinarse a partir
de reglas específicas del lenguaje.
ElemenTos BasicoS
Un programa en PASCAL es un conjunto de instrucciones o sentencias, escritas según
ciertas reglas, para realizar operaciones sobre entidades de datos conocidas como
constantes, variables y resultados de funciones.
La constante es una entidad cuyo valor no puede ser modificado durante la ejecución.
La variable es una entidad cuyo valor puede modificarse durante la ejecución.
Una función es un conjunto de operaciones asociadas a un nombre y que devuelve un
valor.
EL CONCEPTO DE TIPO DE DATOS
En PASCAL, todo dato está asociado a un TIPO de datos y debe ser declarado antes
de utilizarse.
Un TIPO de datos está representado por un identificador y determina el rango de
valores que un elemento de datos puede tomar, así como las operaciones a que puede ser
sometido. Además, el TIPO determina el espacio en memoria necesario para almacenar
cualquiera de los valores posibles que puede tomar esa entidad.
El compilador de PASCAL proporciona identificadores para algunos tipos que están
predefinidos : números enteros y reales, valores lógicos, caracteres alfanuméricos, registros,
tablas, cadenas de caracteres, conjuntos, ficheros y punteros a estructuras dinámicas. Pero,
además, el PASCAL permite al usuario crear sus propios tipos definiendo identificadores de
su elección para representar rangos de valores. Estos también llevan asociados un conjunto
de operadores admisibles y unas necesidades determinadas de espacio en memoria.
El tipo de una constante es el tipo de su valor correspondiente. El tipo de una variable
es el tipo establecido cuando se declaró y no puede modificarse en general. El tipo de una
función es el del valor que devuelve.
Los valores de las variables y de las funciones pueden cambiar tantas veces como se
desee durante la ejecución de un programa, pero esos valores deben permanecer siempre
dentro del rango establecido por su tipo. Una variable no adopta un valor hasta que el
programa le asigna uno. El valor de una función se calcula durante la ejecución de dicha
función.
ciertas reglas, para realizar operaciones sobre entidades de datos conocidas como
constantes, variables y resultados de funciones.
La constante es una entidad cuyo valor no puede ser modificado durante la ejecución.
La variable es una entidad cuyo valor puede modificarse durante la ejecución.
Una función es un conjunto de operaciones asociadas a un nombre y que devuelve un
valor.
EL CONCEPTO DE TIPO DE DATOS
En PASCAL, todo dato está asociado a un TIPO de datos y debe ser declarado antes
de utilizarse.
Un TIPO de datos está representado por un identificador y determina el rango de
valores que un elemento de datos puede tomar, así como las operaciones a que puede ser
sometido. Además, el TIPO determina el espacio en memoria necesario para almacenar
cualquiera de los valores posibles que puede tomar esa entidad.
El compilador de PASCAL proporciona identificadores para algunos tipos que están
predefinidos : números enteros y reales, valores lógicos, caracteres alfanuméricos, registros,
tablas, cadenas de caracteres, conjuntos, ficheros y punteros a estructuras dinámicas. Pero,
además, el PASCAL permite al usuario crear sus propios tipos definiendo identificadores de
su elección para representar rangos de valores. Estos también llevan asociados un conjunto
de operadores admisibles y unas necesidades determinadas de espacio en memoria.
El tipo de una constante es el tipo de su valor correspondiente. El tipo de una variable
es el tipo establecido cuando se declaró y no puede modificarse en general. El tipo de una
función es el del valor que devuelve.
Los valores de las variables y de las funciones pueden cambiar tantas veces como se
desee durante la ejecución de un programa, pero esos valores deben permanecer siempre
dentro del rango establecido por su tipo. Una variable no adopta un valor hasta que el
programa le asigna uno. El valor de una función se calcula durante la ejecución de dicha
función.
CaracteristicAs
MODULARIDAD:
La mayor parte de los programas largos se pueden dividir en un conjunto de
subtareas identificables. Es una buena práctica implementar cada una de esas tareas
como un módulo separado de programa ( en PASCAL se les llama "procedimientos" o
"funciones" ).
El uso de estructuras modulares favorece la fiabilidad y claridad de los programas
y facilita las modificaciones futuras.
El diseño modular conviene aplicarlo desde el principio. Un caso complejo se
analiza y se va descomponiendo sucesivamente en partes más simples hasta que resulten
fáciles de programar en una página de papel. Los módulos pueden ser probados por
separado y ser escritos entre las diferentes personas que integran un equipo de trabajo.
GENERALIDAD:
El valor de un programa aumenta con su rango de validez. No deberían escribirse
programas válidos para un sólo caso, pero construir programas de alcance general es lo
más difícil seguramente y exige una gran dedicación de recursos humanos y de tiempo.
El aumento de generalidad suele ir en contra de la simplicidad y de la eficiencia.
Los programas se hacen más complejos. Conseguir programas de validez general,
simples y eficientes es difícil y sólo está al alcance de personal muy cualificado.
Pero casi siempre se puede obtener una generalidad considerable y suficiente con
muy poco esfuerzo de programación adicional. Por tanto conviene que ésta sea una
tendencia permanente en los programadores.
TRANSPORTABILIDAD:
Las ventajas de escribir programas transportables se reconocen en su valor cuando
se sufren las consecuencias derivadas de cambiar de equipo y fabricante.
El hecho de utilizar un lenguaje de alto nivel supone una garantía de
transportabilidad notable, pero no es suficiente. Hoy aún estamos lejos de la
compatibilidad entre fabricantes diferentes que añaden a sus compiladores mejoras
diferenciadoras sobre el estándar.
El grado de transportabilidad óptimo se consigue utilizando un compilador
ajustado a normas estándar y renunciando a las extensiones de mejora introducidas por
el fabricante; pero ello va en contra de la eficiencia en muchos casos.
La mayor parte de los programas largos se pueden dividir en un conjunto de
subtareas identificables. Es una buena práctica implementar cada una de esas tareas
como un módulo separado de programa ( en PASCAL se les llama "procedimientos" o
"funciones" ).
El uso de estructuras modulares favorece la fiabilidad y claridad de los programas
y facilita las modificaciones futuras.
El diseño modular conviene aplicarlo desde el principio. Un caso complejo se
analiza y se va descomponiendo sucesivamente en partes más simples hasta que resulten
fáciles de programar en una página de papel. Los módulos pueden ser probados por
separado y ser escritos entre las diferentes personas que integran un equipo de trabajo.
GENERALIDAD:
El valor de un programa aumenta con su rango de validez. No deberían escribirse
programas válidos para un sólo caso, pero construir programas de alcance general es lo
más difícil seguramente y exige una gran dedicación de recursos humanos y de tiempo.
El aumento de generalidad suele ir en contra de la simplicidad y de la eficiencia.
Los programas se hacen más complejos. Conseguir programas de validez general,
simples y eficientes es difícil y sólo está al alcance de personal muy cualificado.
Pero casi siempre se puede obtener una generalidad considerable y suficiente con
muy poco esfuerzo de programación adicional. Por tanto conviene que ésta sea una
tendencia permanente en los programadores.
TRANSPORTABILIDAD:
Las ventajas de escribir programas transportables se reconocen en su valor cuando
se sufren las consecuencias derivadas de cambiar de equipo y fabricante.
El hecho de utilizar un lenguaje de alto nivel supone una garantía de
transportabilidad notable, pero no es suficiente. Hoy aún estamos lejos de la
compatibilidad entre fabricantes diferentes que añaden a sus compiladores mejoras
diferenciadoras sobre el estándar.
El grado de transportabilidad óptimo se consigue utilizando un compilador
ajustado a normas estándar y renunciando a las extensiones de mejora introducidas por
el fabricante; pero ello va en contra de la eficiencia en muchos casos.
CaracteristicAs
El arte de la buena programación
Antes de abordar el estudio del lenguaje PASCAL se van a examinar brevemente
algunas características importantes de los programas bien escritos. Ello es aplicable a
cualquier lenguaje, no sólo al PASCAL.
Después será conveniente utilizar este esquema como guía cuando se comience a
escribir programas en PASCAL para adquirir la costumbre de hacerlo bien desde el
principio.
FIABILIDAD:
Un programa ha de ser fiable ante todo. Deben estar previstos todos los casos que
se puedan presentar durante su ejecución y los resultados deben ser correctos.
A veces, el programador que no ha seguido método y disciplina tiene que dedicar
mucho tiempo y esfuerzo a depurar el programa hasta que se ejecuta sin errores
sintácticos. Para él, el éxito ha consistido en conseguir un programa que cumple las
reglas sintácticas del lenguaje ( funciona ) y no tiene errores de escritura. Ello le ha
costado un gran esfuerzo y no se detiene a comprobar si el programa funciona bien.
Luego, el usuario puede sufrir las consecuencias de obtener resultados incorrectos que
obligarán al programador a una depuración que puede resultar laboriosa y poco fiable
por la falta de método en el diseño. En esas condiciones, es frecuente que todo el
proceso deba repetirse varias veces con los consiguientes trastornos que se ocasionan al
usuario.
Antes de instalar un programa, debe someterse a un conjunto exhaustivo de
pruebas para garantizar cotas altas de fiabilidad.
EFICIENCIA:
Se suele valorar en términos de tiempo de ejecución y consumo de memoria.
El aumento de potencia de los procesadores y el abaratamiento de los componentes
han permitido que los programadores trabajen con gran abundancia de medios, lo que
induce a muchos a no preocuparse por la eficiencia de los algoritmos que aplican. Estas
circunstancias, unidas a la divulgación alcanzada en el uso de las herramientas
informáticas, están dando lugar a que la potencia de los ordenadores se desaproveche.
Una parte del tiempo ejecutan cálculos inútiles por la aplicación de algoritmos
ineficientes. En las comunidades de usuarios universitarios, ya es típica la figura de
aquel a quien cualquier máquina se le queda pequeña, acude al Administrador del
Sistema para solicitar la disponibilidad de grandes cantidades de memoria y días enteros
de uso de procesador; y cuando se analiza su caso , se encuentra que tales necesidades
tan desmesuradas eran consecuencia de la programación de algoritmos súmamente
ineficientes.
La eficiencia de los algortimos es un aspecto fundamental a considerar en la
programación. Antes de utilizar un algoritmo debe analizarse su complejidad, que puede
representarse mediante la variación del tiempo de cálculo en función de la dimensión del
problema.
Para comprobar que la cuestión tiene enorme trascendencia, se puede considerar
como ejemplo la comparación entre dos algoritmos para localizar un elemento en una
lista ordenada. Con el método de búsqueda secuencial, es necesario recorrer toda la lista
en el peor de los casos. Con el método de bisección o búsqueda binaria, se va partiendo
por la mitad la lista en consideración hasta que queda vacía en el peor de los casos. En
el algoritmo de búsqueda secuencial, el tiempo crece linealmente con el tamaño de la
lista (n); en el de bisección, varía según log
2
n.
El segundo es un algoritmo de orden inferior porque crece más lentamente con
"n"; así que cuanto mayor sea el valor de "n", más tiempo se ahorra utilizando el
segundo algoritmo. Para una lista de 50.000 elementos, con la búsqueda secuencial se
necesitarían 50.000 comparaciones en el peor de los casos; mientras que con la
búsqueda binaria nunca se necesitarían más de log
2
(50.000), que es alrededor de 16.
El segundo algoritmo supone un factor de mejora de 3.000.Introducción
1 - 5
Pero el tema de la eficacia debe ser enfocado desde un punto de vista realista y
pragmático. No sería razonable la obsesión del programador que dedica un gran
esfuerzo en complicar extraordinariamente un algoritmo sólo para ahorrar algunos
milisegundos en tiempo de cálculo, porque resultaría antieconómico y el producto final
podría llegar a ser indescifrable para el propio autor.
Para la mayor parte de los casos, se admite que es preferible renunciar a la
optimización total de los algoritmos en beneficio de la sencillez y claridad en la
programación.
Sin embargo, también hay que considerar que en algunos tipos de aplicaciones,
como el control de procesos en tiempo real, por ejemplo, el tiempo de ejecución puede
ser crítico obligando a utilizar algoritmos de la máxima eficiencia.
CLARIDAD:
El programa debe estar escrito de forma que resulte legible especialmente en su
lógica subyacente.
Si un programa está escrito con claridad, deberá ser posible que otro programador
siga su lógica sin un esfuerzo excesivo.
Cuando un programa es poco claro, su mismo autor puede tener dificultades para
entenderlo al cabo de un tiempo, hasta el punto de preferir escribirlo de nuevo si tiene
que hacer alguna modificación.
Uno de los objetivos del PASCAL es favorecer la consecución de programas
claros y legibles a través de un acercamiento disciplinado a la programación.
SIMPLICIDAD:
La fiabilidad y la claridad de los programas se potencian generalmente si se
mantienen tan sencillos como sea posible.
Un programa simple es más fácil de modificar y ello adquiere importancia en la
fase de mantenimiento de las aplicaciones. Las aplicaciones informáticas suelen simular
sistemas reales que, son cambiantes por naturaleza. Cambian las circunstancias, los
criterios, las condiciones, y es inevitable tener que modificar los programas alguna vez.
En ese momento puede ocurrir que el autor no pueda dedicarse a ello porque ya no
pertenezca a la organización o por estar dedicado a otro proyecto, y tenga que hacerlo
otra persona. Entonces es cuando adquiere importancia la simplicidad de diseño en el
programa.
En muchas ocasiones es preferible sacrificar parte de la eficacia de cálculo para
mantener una estructura simple y directa. Ello no será posible en casos específicos
donde se necesitan respuestas en tiempos críticos o existen condiciones muy restrictivas
en la configuración del ordenador.
Antes de abordar el estudio del lenguaje PASCAL se van a examinar brevemente
algunas características importantes de los programas bien escritos. Ello es aplicable a
cualquier lenguaje, no sólo al PASCAL.
Después será conveniente utilizar este esquema como guía cuando se comience a
escribir programas en PASCAL para adquirir la costumbre de hacerlo bien desde el
principio.
FIABILIDAD:
Un programa ha de ser fiable ante todo. Deben estar previstos todos los casos que
se puedan presentar durante su ejecución y los resultados deben ser correctos.
A veces, el programador que no ha seguido método y disciplina tiene que dedicar
mucho tiempo y esfuerzo a depurar el programa hasta que se ejecuta sin errores
sintácticos. Para él, el éxito ha consistido en conseguir un programa que cumple las
reglas sintácticas del lenguaje ( funciona ) y no tiene errores de escritura. Ello le ha
costado un gran esfuerzo y no se detiene a comprobar si el programa funciona bien.
Luego, el usuario puede sufrir las consecuencias de obtener resultados incorrectos que
obligarán al programador a una depuración que puede resultar laboriosa y poco fiable
por la falta de método en el diseño. En esas condiciones, es frecuente que todo el
proceso deba repetirse varias veces con los consiguientes trastornos que se ocasionan al
usuario.
Antes de instalar un programa, debe someterse a un conjunto exhaustivo de
pruebas para garantizar cotas altas de fiabilidad.
EFICIENCIA:
Se suele valorar en términos de tiempo de ejecución y consumo de memoria.
El aumento de potencia de los procesadores y el abaratamiento de los componentes
han permitido que los programadores trabajen con gran abundancia de medios, lo que
induce a muchos a no preocuparse por la eficiencia de los algoritmos que aplican. Estas
circunstancias, unidas a la divulgación alcanzada en el uso de las herramientas
informáticas, están dando lugar a que la potencia de los ordenadores se desaproveche.
Una parte del tiempo ejecutan cálculos inútiles por la aplicación de algoritmos
ineficientes. En las comunidades de usuarios universitarios, ya es típica la figura de
aquel a quien cualquier máquina se le queda pequeña, acude al Administrador del
Sistema para solicitar la disponibilidad de grandes cantidades de memoria y días enteros
de uso de procesador; y cuando se analiza su caso , se encuentra que tales necesidades
tan desmesuradas eran consecuencia de la programación de algoritmos súmamente
ineficientes.
La eficiencia de los algortimos es un aspecto fundamental a considerar en la
programación. Antes de utilizar un algoritmo debe analizarse su complejidad, que puede
representarse mediante la variación del tiempo de cálculo en función de la dimensión del
problema.
Para comprobar que la cuestión tiene enorme trascendencia, se puede considerar
como ejemplo la comparación entre dos algoritmos para localizar un elemento en una
lista ordenada. Con el método de búsqueda secuencial, es necesario recorrer toda la lista
en el peor de los casos. Con el método de bisección o búsqueda binaria, se va partiendo
por la mitad la lista en consideración hasta que queda vacía en el peor de los casos. En
el algoritmo de búsqueda secuencial, el tiempo crece linealmente con el tamaño de la
lista (n); en el de bisección, varía según log
2
n.
El segundo es un algoritmo de orden inferior porque crece más lentamente con
"n"; así que cuanto mayor sea el valor de "n", más tiempo se ahorra utilizando el
segundo algoritmo. Para una lista de 50.000 elementos, con la búsqueda secuencial se
necesitarían 50.000 comparaciones en el peor de los casos; mientras que con la
búsqueda binaria nunca se necesitarían más de log
2
(50.000), que es alrededor de 16.
El segundo algoritmo supone un factor de mejora de 3.000.Introducción
1 - 5
Pero el tema de la eficacia debe ser enfocado desde un punto de vista realista y
pragmático. No sería razonable la obsesión del programador que dedica un gran
esfuerzo en complicar extraordinariamente un algoritmo sólo para ahorrar algunos
milisegundos en tiempo de cálculo, porque resultaría antieconómico y el producto final
podría llegar a ser indescifrable para el propio autor.
Para la mayor parte de los casos, se admite que es preferible renunciar a la
optimización total de los algoritmos en beneficio de la sencillez y claridad en la
programación.
Sin embargo, también hay que considerar que en algunos tipos de aplicaciones,
como el control de procesos en tiempo real, por ejemplo, el tiempo de ejecución puede
ser crítico obligando a utilizar algoritmos de la máxima eficiencia.
CLARIDAD:
El programa debe estar escrito de forma que resulte legible especialmente en su
lógica subyacente.
Si un programa está escrito con claridad, deberá ser posible que otro programador
siga su lógica sin un esfuerzo excesivo.
Cuando un programa es poco claro, su mismo autor puede tener dificultades para
entenderlo al cabo de un tiempo, hasta el punto de preferir escribirlo de nuevo si tiene
que hacer alguna modificación.
Uno de los objetivos del PASCAL es favorecer la consecución de programas
claros y legibles a través de un acercamiento disciplinado a la programación.
SIMPLICIDAD:
La fiabilidad y la claridad de los programas se potencian generalmente si se
mantienen tan sencillos como sea posible.
Un programa simple es más fácil de modificar y ello adquiere importancia en la
fase de mantenimiento de las aplicaciones. Las aplicaciones informáticas suelen simular
sistemas reales que, son cambiantes por naturaleza. Cambian las circunstancias, los
criterios, las condiciones, y es inevitable tener que modificar los programas alguna vez.
En ese momento puede ocurrir que el autor no pueda dedicarse a ello porque ya no
pertenezca a la organización o por estar dedicado a otro proyecto, y tenga que hacerlo
otra persona. Entonces es cuando adquiere importancia la simplicidad de diseño en el
programa.
En muchas ocasiones es preferible sacrificar parte de la eficacia de cálculo para
mantener una estructura simple y directa. Ello no será posible en casos específicos
donde se necesitan respuestas en tiempos críticos o existen condiciones muy restrictivas
en la configuración del ordenador.
miércoles, 30 de marzo de 2011
Introducción
El PASCAL es un lenguaje de programación de alto nivel y de propósito general
que ha derivado del ALGOL-60 y fue diseñado para enseñar técnicas de programación
estructurada. Es de alto nivel porque su repertorio de instrucciones lo hacen próximo a
los lenguajes humanos y a los procesos humanos de pensamiento. Sus instrucciones o
sentencias se componen de expresiones de apariencia algebraica y de ciertas palabras
inglesas como BEGIN, END, READ, WRITE, IF, THEN, REPEAT, WHILE, DO.
Es de propósito general como el BASIC, el COBOL, el FORTRAN, el PL/I;
porque no está enfocado a un tipo especifico de aplicaciones.
Pero el PASCAL, a diferencia de otros lenguajes, contiene algunos rasgos
singulares que han sido diseñados para estimular el uso de la "programación
estructurada", un enfoque ordenado y disciplinado de la programación que conduce a
la obtención de programas claros, eficientes y libres de errores. Por ello, el PASCAL se
utiliza ampliamente en la enseñanza de la informática.
Con PASCAL no sólo se dispone de un lenguaje de programación, sino que
además se adquiere una metodología para el diseño y escritura de programas.
El nombre PASCAL fue elegido en honor de Blaise Pascal (1623-1662), brillante
científico y matemático francés entre cuyos logros se encuentra la invención de la
primera máquina de calcular mecánica.
El PASCAL fue desarrollado inicialmente a principios de los años 70 por Niklaus
Wirth, en la Universidad Técnica de Zurich, Suiza. El propósito original de Wirth fue
crear un lenguaje de alto nivel para enseñar programación estructurada.
La definición original del lenguaje debida a Wirth se suele conocer como
PASCAL estándar o " PASCAL estándar según definición de Jensen y Wirth " (4) .Pero
en la actualidad el término " PASCAL estándar " resulta ambiguo porque hoy existen
varios estándares diferentes.
Suscribirse a:
Entradas (Atom)