Pascal y Turbo Pascal. Estructura del lenguaje.

Anuncio
PASCAL y TURBO PASCAL
Algoritmos y Estructuras de Datos II
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
PASCAL: Es un lenguaje de Alto Nivel y propósito
general desarrollado por el prof. suizo Niklaus
WIRTH en 1968.
Características
􀂃 Excelente herramienta para aprender programacón
􀂃 Es un lenguaje de propósito general
􀂃 Lenguaje procedural (imperativo, orientado a
órdenes)
􀂃 Lenguaje estructurado (soporta while, for y repeat.
No necesita goto)
􀂃 Lenguaje recursivo
􀂃 Gran riqueza de tipos de datos predefinidos y
definidos por el usuario
􀂃 Códigos ejecutables rápidos y eficientes
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
TURBO PASCAL: Lanzado en 1983 por
BORLAND International.
Características adicionales:
􀂃
􀂃
􀂃
􀂃
􀂃
􀂃
􀂃
􀂃
􀂃
Entorno integrado de desarrollo
Editor de texto
Gráficos
Gestión de archivos
Compilación independiente
Gestión de proyectos
Enteros de gran presición
Programación orientada a objetos
Bilioteca de objetos
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Estructura de un Programa PASCAL
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
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.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Identificadores
Para poder manipular datos (I-O), 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.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Identificadores
Identificadores válidos
• Nombre
• Cadena
• Edad_Maxima
• X_Y_Z
• Etiqueta2
Identificadores no válidos
• Num&Dias carácter & no válido
• X nombre
Contiene un blanco
• begin
es una palabra reservada
• eje@s
carácter @ no válido
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.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Declaración de etiquetas
Si necesitara utilizar 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
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
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:
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Definición de constantes
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 :
Las constantes de caracteres pueden estar formadas por un solo carácter de
control, p.ej. :
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Definición de constantes
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  decimal 12 ( hoja_nueva o alimentación de forma)
#$1B  valor hexadecimal 1B ( escape ).
^G  carácter del timbre o campana.
^M  carácter de retorno de carro.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
CONSTANTES PREDEFINIDAS
Ademá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 )
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Definición de tipos
El Tipo indica 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.
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:
 Detectar errores de operaciones en programas.
 Determinar cómo ejecutar las operaciones.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Definición de tipos
Los tipos definidos por el programador pueden utilizarse para
definir nuevos tipos, por ejemplo :
Tipos Enteros
predefinidos
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Definición de tipos
Tipos reales
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 .
Deben tomarse en cuenta las siguientes 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.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Definición de tipos
Los números reales están siempre
disponibles en Turbo Pascal, pero si su
sistema incluye un coprocesador
matemático, 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)
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Definición de tipos. Real
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 : 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. 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.
Ej.: 'A' < 'a'
CADENA (STRING): 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.
Ej.: '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.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Operadores
Los operadores sirven para combinar los términos
de las expresiones.
En Pascal, se manejan tres grupos de operadores:
1. ARITMÉTICOS
2. RELACIONALES
3. LÓGICOS
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Operadores aritméticos
Sirven para operar términos numéricos.
a. UNARIOS
b. BINARIOS
UNARIOS: 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.
Ej: x = 100; -x dará como resultado -100.
BINARIOS: combinan DOS OPERANDOS , dando como
resultado un valor numérico cuyo tipo será igual al mayor de
los tipos que tengan los operandos.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Operadores aritméticos
Observe:
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.
4. 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
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
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.
Ejemplos
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Operadores lógicos
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
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:
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Expresiones
Las reglas de evaluación 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.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
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 ;
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Bloques de instrucciones
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.
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.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Procedimientos de entrada / salida
Las instrucciones de entrada y salida le ayudan al programa
a comunicarse con un periférico de la computadora tal
como una terminal, una impresora o un disco.
Las instrucciones de entrada estándar, sirven para leer
carácteres desde el teclado.
Las instrucciones de salida estándar despliegan carácteres
en la pantalla.
En Pascal todas las operaciones de entrada/salida se
realizan ejecutando unidades de programa especiales
denominados procedimientos de entrada/salida que
forman parte del compilador y sus nombres son
identificadores estándar:
Procedimientos de entrada 
Procedimientos de salida 
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Read
Write
ReadLn
WriteLn
Procedimientos Read y Readln
 Base para las instrucciones de entrada estándar.
 Proporcionan datos durante la ejecución de un programa.
 Las instrucciones para llamar a los procedimientos son:
Donde : lista_de_variables : es una lista de identificadores de variables
separados por comas, los datos que se pueden leer son : enteros,
caracteres, o cadenas. No se puede leer un boolean o un elemento de tipo
enumerado.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Procedimientos Read y Readln
Los datos estructurados , arrays, registros o conjuntos, no se pueden leer globalmente y se suele
recurrir a diseñar procedimientos específicos.
La acción de la instrucción es obtener, del teclado, tantos valores de datos como elementos hay en
lista_de_variables. Los datos deberán ser compatibles con los tipos de las variables.
Cada valor entero o real en el flujo de entrada puede ser representado como una secuencia de
caracteres en alguna de las formas permitidas para tales números, y puede estar
inmediatamente precedido por un signo más o un signo menos. Cada valor entero o real puede
ser precedido por cualquier cantidad de caracteres blancos o fines de línea, pero no deberá
haber blancos o fines de línea entre el signo y el número.
La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente
instrucción continúe leyendo valores en la misma línea; mientras que, con ReadLn la siguiente
lectura se hará después de que se haya tecleado el carácter de fin de línea.
Cuando se tienen datos de tipo char en una instrucción Read, los caracteres blancos y los de fin de
línea son considerados en el conteo de los elementos de las cadenas de caracteres mientras
no se complete el total especificado para cada una de ellas. Cada fin de línea es tratado como
un carácter, pero el valor asignado a la variable será un carácter blanco.
Es aconsejable que cada cadena de caracteres se lea en una instrucción Read o ReadLn por
separado, para evitar el tener que ir contando hasta completar la cantidad exacta de caracteres
que forman la cadena ( o de lo contrario se tendrán resultados sorpresivos y frustrantes al
verificar los datos leídos ).
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Procedimientos Read y Readln
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Procedimientos Write Y Writeln
La salida estándar se realiza en base a estos procedimientos predefinidos,
y las instrucciones para invocarlos toman las siguientes formas :
Donde: lista_de_salida es una lista de
variables, expresiones y/o constantes,
cuyos valores van a ser desplegados
en la pantalla.
El procedimiento Write permite que la
siguiente instrucción se realice en la
misma línea , mientras que WriteLn
alimenta una nueva línea, antes de
finalizar. Ej::
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Patrones Lógicos
• Secuencia
• Selección
• Iteración
– Hacer Mientras
– Hacer Hasta
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Secuencia
En este caso, las instrucciones se ejecutan una
después de la otra sin omitir ninguna de ellas.
Begin
N := 0;
Write (“Nombrey Apellido”, NYA);
N := N + 1
End.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Selección
La selección de alternativas en Pascal se
realiza con alguna de las dos siguientes
formas :
1. La sentencia if
2. La sentencia case
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Selección. Sentencia “IF – THEN - ELSE”
Se evalúa condición y si el resultado arroja un valor verdadero, se
ejecuta instrucción_1 ; en caso contrario se ejecuta instrucción_2..
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Selección. Sentencia “IF – THEN - ELSE”
Omitiendo el “ELSE”
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Usando el “ELSE”
Selección. Sentencia “IF – THEN - ELSE”
Nota: Antes de la cláusula else no se antepone un punto y coma, si lo
hubiese el compilador producirá un mensaje de error, puesto que no
existe ninguna sentencia en Pascal que comience con else. La parte
else es opcional, pero la ejecución siempre continuará en otra
instrucción.
En lugar de utilizar instrucciones simples, se pueden usar bloques de
instrucciones:
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Selección. Sentencia “IF – THEN - ELSE”
Sentencia IF anidadas
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Selección. Sentencia CASE-OF-ELSE
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Selección. Sentencia CASE-OF-ELSE
Dependiendo del valor que tenga la expresión selector, se ejecutarán las
instrucciones etiquetadas por constante.
Aquí también los bloques de instrucciones pueden ser reemplazados por
instrucciones simples.
Conviene tener presente que no debe escribirse punto y coma antes de la palabra
else.
Reglas:
1. La expresión <selector> se evalúa y se compara con las constantes; las
constantes son listas de uno o más posibles valores de <selector> separados
por comas. Ejecutadas la(s) <instrucciones>, el control se pasa a la primera
instrucción a continuación de end (fin de case).
2. La cláusula else es opcional.
3. Si el valor de <selector> no está comprendido en ninguna lista de constantes y
no existe la cláusula else, no sucede nada y sigue el flujo del programa; si
existe la cláusula else se ejecutan la(s) <instrucciones> a continuación de la
cláusula else.
4. El selector debe ser un tipo ordinal ( integer, char, boolean o enumerado). Los
tipos string, longint y word no son válidos.
5. Todas las constantes case deben ser únicas y de un tipo ordinal compatible con
el tipo del selector.
6. Cada sentencia, excepto la última, deben ir seguidas del punto y coma.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Selección. Sentencia CASE-OF-ELSE
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Iteración
Las formas de iteración sirven para ejecutar ciclos
repetidamente, dependiendo de que se cumplan ciertas
condiciones. Una estructura de control que permite la
repetición de una serie determinada de sentencias se
denomina bucle1 (lazo o ciclo).
El cuerpo del bucle contiene las sentencias que se repiten.
Pascal proporciona tres estructuras o sentencias de
control para especificar la repetición:
1. While
2. Repeat
3. For
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Iteración. WHILE-DO
La estructura repetitiva while(mientras) es aquella en la que
el número de iteraciones no se conoce por anticipado y el
cuerpo del bucle se ejecuta repetidamente mientras que
una condición sea verdadera
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Iteración. WHILE-DO
Reglas de funcionamiento:
 La condición se evalúa antes y después de cada ejecución del
bucle. Si la condición es verdadera, se ejecuta el bucle, y si es
falsa, el control pasa a la sentencia siguiente al bucle.
 Si la condición se evalúa a falso cuando se ejecuta el bucle por
primera vez, el cuerpo del bucle no se ejecutará nunca.
 Mientras la condición sea verdadera el bucle se ejecutará. Esto
significa que el bucle se ejecutará indefinidamente a menos que
"algo" en el interior del bucle modifique la condición haciendo
que su valor pase a falso. Si la expresión nunca cambia de valor,
entonces el bucle no termina nunca y se denomina bucle infinito
lo cual no es deseable.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Iteración. WHILE-DO
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
REPEAT-UNTIL
La acción de repeat-until es repetir una serie de instrucciones
hasta que se cumpla una determinada condición .
Reglas de funcionamiento:
1.
La condición se evalúa al final del bucle, después de ejecutarse todas las sentencias.
2.
Si la condición es falsa, se vuelve a repetir el bucle y se ejecutan todas sus
instrucciones.
3.
Si la condición es falsa, se sale del bucle y se ejecuta la siguiente instrucción a until.
4.
La sintaxis no requiere begin y end.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
REPEAT-UNTIL
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
FOR-TO-DO
Cuando se sabe de antemano el número de veces que deberá
ejecutarse un ciclo determinado, ésta es la forma más conveniente.
Al ejecutarse la sentencia for la primera vez, a contador se le asigna un valor inicial
(expresion.1), y a continuación se ejecutan las intrucciones del interior del bucle,
enseguida se verifica si el valor final (expresión.2) es mayor que el valor inicial
(expresión.1); en caso de no ser así se incrementa contador en uno y se vuelven a
ejecutar las instrucciones, hasta que el contador sea mayor que el valor final, en cuyo
momento se termina el bucle. Aquí, contador no puede ser de tipo real.
El contador se puede decrementar sustituyendo la palabra to por la palabra downto.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
FOR-TO-DO
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Tipos de datos
Pascal requiere que todos los tipos de datos sean
formalmente definidos antes de ser utilizados, ya que tal
definición será usada por el compilador para determinar
cuanto espacio de memoria se reservará para las
variables de cada tipo, así como para establecer los
límites de los valores que pueden asignarse a cada
variable.
Se establecen las siguientes reglas:
 Cada variable debe tener un solo tipo en el bloque donde
fue declarada.
 El tipo de cada variable debe ser declarado antes de que
la variable sea utilizada en una instrucción ejecutable.
 A cada tipo de dato se le pueden aplicar ciertos
operadores específicos.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Tipos de datos. Clasificación
Tipos simples. Hasta aquí, hemos considerado los tipos simples
estándar integer, real, boolean, char y byte proporcionados por Turbo
Pascal.
Estos tipos de datos pueden ser utilizados para declarar variables
numéricas, de caracteres y/o lógicas. Sin embargo, es posible que
ninguno de ellos satisfaga los requerimientos de un determinado
problema, haciéndose necesaria la utilización de otros tipos como:
TIPO SUBRANGO:
TIPO SUBRANGO:
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
TIPO ENUMERADOS:
Cadenas
TIPO CADENAS (strings) : Turbo Pascal proporciona el tipo string para el procesamiento de
cadenas (secuencias de caracteres ). La definición de un tipo string debe especificar el
número máximo de caracteres que puede contener, esto es, la máxima longitud para las
cadenas de ese tipo. La longitud se especifíca por una constante entera en el rango de 1
a 255.
Las variables de cadena se declaran en la
sección Var o Type.
Una Vez declaradas las variables se pueden realizar
asignaciones u operaciones de lectura/escritura.
El contenido de la cadena se debe encerrar entre
apóstrofes.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Operaciones entre cadenas
Las operaciones básicas entre cadenas son : asignación, comparación y
concatenación.
Es posible asignar una cadena a otra cadena, incluso aunque sea de longitud
física más pequeña en cuyo caso ocurriría un truncamiento de la cadena.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Reglas de comparación de cadenas
Las comparaciones de las cadenas de caracteres se hacen según el
orden de los caracteres en el código ASCII y con los operadores de
relación.
'0' < '1' '2' > '1' 'A' < 'B' 'm' > 'l
Las dos cadenas se comparan de izquierda a derecha hasta que se
encuentran dos caracteres diferentes. El orden de las dos cadenas
es el que corresponde al orden de los dos caracteres diferentes. Si
las dos cadenas son iguales pero una de ella es más corta que la
otra, entonces la más corta es menor que la más larga.
Ejemplo :
'Alex' > 'Alas„  {puesto que 'e' > 'a'}
'ADAN' < 'adan„  {puesto que 'A' < 'a'}
'Damian' < 'Damiana„  {'Damian' tiene menos caracteres que
'Damiana'}
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Cadenas. concatenación
Otra operación básica es la concatenación. La concatenación es un proceso de combinar dos
o más cadenas en una sola cadena. El signo + se puede usar para concatenar cadenas (
al igual que la función concat ), debiendo cuidarse que la longitud del resultado no sea
mayor que 255.
Ejemplos :
'INSTITUTO '+'TECNOLOGICO'='INSTITUTO TECNOLOGICO„
'CONTAB'+'.'+'PAS„ = 'CONTAB.PAS'
Se puede asignar el valor de una expresión de cadena a una variable cadena, por ejemplo :
fecha := 'lunes';
y utilizar la variable fecha en:
frase:='El próximo '+fecha+' inician las clases';
Si la longitud máxima de una cadena es excedida, se pierden los caracteres sobrantes a la
derecha.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
PROCEDIMIENTOS Y FUNCIONES DE CADENA INTERNOS
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Procedimientos. DELETE
Procedimientos. INSERT
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Procedimientos. STR
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
PROCEDEMINTO VAL
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Función Concat, Función Copy, Lenght, Pos
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Arreglos (array)
Un arreglo está formado por un número fijo de elementos contíguos de un
mismo tipo. Al tipo se le llama tipo base del arreglo.
Los datos individuales se llaman elementos del arreglo.
Para definir un tipo estructurado arreglo, se debe especificar el tipo base y
el número de elementos.
Un array se caracteríza por:
 Almacenar los elementos del array en posiciones de memoria contínua
 Tener un único nombre de variable que representa a todos los
elementos, y éstos a su vez se diferencían por un índice o subíndice.
 Acceso directo o aleatorio a los elementos individuales del array.
Los arrays se clasifican en :
 Unidimensionales (vectores o listas)
 Multidimensionales ( tablas o matrices)
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Arreglos (array)
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Arrays unidimensionales
Un array de una dimensión (vector o lista) es un tipo de
datos estructurado compuesto de un número de
elementos finitos, tamaño fijo y elementos homogéneos.
Supongamos que desea conservar las edades de 10
personas. Para almacenar estas edades se necesita
reservar 10 posiciones de memoria, darle un nombre al
array, y a cada persona asignarle su edad
correspondiente.
Nombre del vector edades
Subíndice [1],[2],...
Contenido edades[2]= 28
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Arrays unidimensionales
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Arrays paralelos
Dos o más arrays que utilizan el mismo subíndice para referirse a términos
homólogos se llaman arrays paralelos. Basados en el programa anterior se
tienen las edades de 'x' personas, para saber a que persona se refiere
dicha edad se puede usar otro arreglo en forma paralela y asociarle los
nombres de manera simultánea con las edades.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Arrays bidimensionales (tablas)
Un array bidimensional (tabla o matríz) es un array con dos
índices, al igual que los vectores que deben ser
ordinales o tipo subrango.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Arrays multidimensionales
Turbo Pascal no limita el número de dimensiones de un array, pero sí
que debe estar declarado el tipo de cada subíndice.
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Después continuamos …
Magter. Oscar Adolfo Vallejos
FaCENA - UNNE
Descargar