70
Magter. Oscar Adolfo Vallejos FaCENA - UNNE PASCAL y TURBO PASCAL Algoritmos y Estructuras de Datos II

PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

  • Upload
    others

  • View
    20

  • Download
    2

Embed Size (px)

Citation preview

Page 1: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

PASCAL y TURBO PASCAL

Algoritmos y Estructuras de Datos II

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

PASCAL Es un lenguaje de Alto Nivel y propoacutesito general desarrollado por el prof suizo Niklaus WIRTH en 1968

Caracteriacutesticas

1048707 Excelente herramienta para aprender programacoacuten

1048707 Es un lenguaje de propoacutesito general

1048707 Lenguaje procedural (imperativo orientado a oacuterdenes)

1048707 Lenguaje estructurado (soporta while for y repeat No necesita goto)

1048707 Lenguaje recursivo

1048707 Gran riqueza de tipos de datos predefinidos y definidos por el usuario

1048707 Coacutedigos ejecutables raacutepidos y eficientes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

TURBO PASCAL Lanzado en 1983 por BORLAND International

Caracteriacutesticas adicionales

1048707 Entorno integrado de desarrollo

1048707 Editor de texto

1048707 Graacuteficos

1048707 Gestioacuten de archivos

1048707 Compilacioacuten independiente

1048707 Gestioacuten de proyectos

1048707 Enteros de gran presicioacuten

1048707 Programacioacuten orientada a objetos

1048707 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 tambieacuten se

pueden poner en los

procedimientos yo

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 tambieacuten se utilizan para los nombres de los programas los nombres de los procedimientos y los nombres de las funciones asiacute como para las etiquetas constantes y variables

Las reglas para formar los identificadores en Pascal son las siguientes

1 Pueden estar compuestos de caracteres alfabeacuteticos numeacutericos y el caraacutecter de subrayado ( _ )

2 Deben comenzar con un caraacutecter alfabeacutetico o el caraacutecter de subrayado

3 Puede ser de cualquier longitud (soacutelo los 63 primeros caracteres son significativos)

4 No se hace distincioacuten entre mayuacutesculas y minuacutesculas

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 vaacutelidos

bull Nombre

bull Cadena

bull Edad_Maxima

bull X_Y_Z

bull Etiqueta2

Identificadores no vaacutelidos

bull NumampDias caraacutecter amp no vaacutelido

bull X nombre Contiene un blanco

bull begin es una palabra reservada

bull ejes caraacutecter no vaacutelido

La eleccioacuten de identificadores permite una mejor lectura y comprensioacuten de un programa No es aconsejable utilizar identificadores que no sugieran ninguacuten significado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 2: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

PASCAL Es un lenguaje de Alto Nivel y propoacutesito general desarrollado por el prof suizo Niklaus WIRTH en 1968

Caracteriacutesticas

1048707 Excelente herramienta para aprender programacoacuten

1048707 Es un lenguaje de propoacutesito general

1048707 Lenguaje procedural (imperativo orientado a oacuterdenes)

1048707 Lenguaje estructurado (soporta while for y repeat No necesita goto)

1048707 Lenguaje recursivo

1048707 Gran riqueza de tipos de datos predefinidos y definidos por el usuario

1048707 Coacutedigos ejecutables raacutepidos y eficientes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

TURBO PASCAL Lanzado en 1983 por BORLAND International

Caracteriacutesticas adicionales

1048707 Entorno integrado de desarrollo

1048707 Editor de texto

1048707 Graacuteficos

1048707 Gestioacuten de archivos

1048707 Compilacioacuten independiente

1048707 Gestioacuten de proyectos

1048707 Enteros de gran presicioacuten

1048707 Programacioacuten orientada a objetos

1048707 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 tambieacuten se

pueden poner en los

procedimientos yo

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 tambieacuten se utilizan para los nombres de los programas los nombres de los procedimientos y los nombres de las funciones asiacute como para las etiquetas constantes y variables

Las reglas para formar los identificadores en Pascal son las siguientes

1 Pueden estar compuestos de caracteres alfabeacuteticos numeacutericos y el caraacutecter de subrayado ( _ )

2 Deben comenzar con un caraacutecter alfabeacutetico o el caraacutecter de subrayado

3 Puede ser de cualquier longitud (soacutelo los 63 primeros caracteres son significativos)

4 No se hace distincioacuten entre mayuacutesculas y minuacutesculas

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 vaacutelidos

bull Nombre

bull Cadena

bull Edad_Maxima

bull X_Y_Z

bull Etiqueta2

Identificadores no vaacutelidos

bull NumampDias caraacutecter amp no vaacutelido

bull X nombre Contiene un blanco

bull begin es una palabra reservada

bull ejes caraacutecter no vaacutelido

La eleccioacuten de identificadores permite una mejor lectura y comprensioacuten de un programa No es aconsejable utilizar identificadores que no sugieran ninguacuten significado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 3: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

TURBO PASCAL Lanzado en 1983 por BORLAND International

Caracteriacutesticas adicionales

1048707 Entorno integrado de desarrollo

1048707 Editor de texto

1048707 Graacuteficos

1048707 Gestioacuten de archivos

1048707 Compilacioacuten independiente

1048707 Gestioacuten de proyectos

1048707 Enteros de gran presicioacuten

1048707 Programacioacuten orientada a objetos

1048707 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 tambieacuten se

pueden poner en los

procedimientos yo

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 tambieacuten se utilizan para los nombres de los programas los nombres de los procedimientos y los nombres de las funciones asiacute como para las etiquetas constantes y variables

Las reglas para formar los identificadores en Pascal son las siguientes

1 Pueden estar compuestos de caracteres alfabeacuteticos numeacutericos y el caraacutecter de subrayado ( _ )

2 Deben comenzar con un caraacutecter alfabeacutetico o el caraacutecter de subrayado

3 Puede ser de cualquier longitud (soacutelo los 63 primeros caracteres son significativos)

4 No se hace distincioacuten entre mayuacutesculas y minuacutesculas

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 vaacutelidos

bull Nombre

bull Cadena

bull Edad_Maxima

bull X_Y_Z

bull Etiqueta2

Identificadores no vaacutelidos

bull NumampDias caraacutecter amp no vaacutelido

bull X nombre Contiene un blanco

bull begin es una palabra reservada

bull ejes caraacutecter no vaacutelido

La eleccioacuten de identificadores permite una mejor lectura y comprensioacuten de un programa No es aconsejable utilizar identificadores que no sugieran ninguacuten significado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 4: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

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 tambieacuten se

pueden poner en los

procedimientos yo

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 tambieacuten se utilizan para los nombres de los programas los nombres de los procedimientos y los nombres de las funciones asiacute como para las etiquetas constantes y variables

Las reglas para formar los identificadores en Pascal son las siguientes

1 Pueden estar compuestos de caracteres alfabeacuteticos numeacutericos y el caraacutecter de subrayado ( _ )

2 Deben comenzar con un caraacutecter alfabeacutetico o el caraacutecter de subrayado

3 Puede ser de cualquier longitud (soacutelo los 63 primeros caracteres son significativos)

4 No se hace distincioacuten entre mayuacutesculas y minuacutesculas

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 vaacutelidos

bull Nombre

bull Cadena

bull Edad_Maxima

bull X_Y_Z

bull Etiqueta2

Identificadores no vaacutelidos

bull NumampDias caraacutecter amp no vaacutelido

bull X nombre Contiene un blanco

bull begin es una palabra reservada

bull ejes caraacutecter no vaacutelido

La eleccioacuten de identificadores permite una mejor lectura y comprensioacuten de un programa No es aconsejable utilizar identificadores que no sugieran ninguacuten significado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 5: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Nota Las declaraciones

de constantes tipos y

variables tambieacuten se

pueden poner en los

procedimientos yo

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 tambieacuten se utilizan para los nombres de los programas los nombres de los procedimientos y los nombres de las funciones asiacute como para las etiquetas constantes y variables

Las reglas para formar los identificadores en Pascal son las siguientes

1 Pueden estar compuestos de caracteres alfabeacuteticos numeacutericos y el caraacutecter de subrayado ( _ )

2 Deben comenzar con un caraacutecter alfabeacutetico o el caraacutecter de subrayado

3 Puede ser de cualquier longitud (soacutelo los 63 primeros caracteres son significativos)

4 No se hace distincioacuten entre mayuacutesculas y minuacutesculas

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 vaacutelidos

bull Nombre

bull Cadena

bull Edad_Maxima

bull X_Y_Z

bull Etiqueta2

Identificadores no vaacutelidos

bull NumampDias caraacutecter amp no vaacutelido

bull X nombre Contiene un blanco

bull begin es una palabra reservada

bull ejes caraacutecter no vaacutelido

La eleccioacuten de identificadores permite una mejor lectura y comprensioacuten de un programa No es aconsejable utilizar identificadores que no sugieran ninguacuten significado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 6: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Nota Las declaraciones

de constantes tipos y

variables tambieacuten se

pueden poner en los

procedimientos yo

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 tambieacuten se utilizan para los nombres de los programas los nombres de los procedimientos y los nombres de las funciones asiacute como para las etiquetas constantes y variables

Las reglas para formar los identificadores en Pascal son las siguientes

1 Pueden estar compuestos de caracteres alfabeacuteticos numeacutericos y el caraacutecter de subrayado ( _ )

2 Deben comenzar con un caraacutecter alfabeacutetico o el caraacutecter de subrayado

3 Puede ser de cualquier longitud (soacutelo los 63 primeros caracteres son significativos)

4 No se hace distincioacuten entre mayuacutesculas y minuacutesculas

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 vaacutelidos

bull Nombre

bull Cadena

bull Edad_Maxima

bull X_Y_Z

bull Etiqueta2

Identificadores no vaacutelidos

bull NumampDias caraacutecter amp no vaacutelido

bull X nombre Contiene un blanco

bull begin es una palabra reservada

bull ejes caraacutecter no vaacutelido

La eleccioacuten de identificadores permite una mejor lectura y comprensioacuten de un programa No es aconsejable utilizar identificadores que no sugieran ninguacuten significado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 7: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

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 tambieacuten se utilizan para los nombres de los programas los nombres de los procedimientos y los nombres de las funciones asiacute como para las etiquetas constantes y variables

Las reglas para formar los identificadores en Pascal son las siguientes

1 Pueden estar compuestos de caracteres alfabeacuteticos numeacutericos y el caraacutecter de subrayado ( _ )

2 Deben comenzar con un caraacutecter alfabeacutetico o el caraacutecter de subrayado

3 Puede ser de cualquier longitud (soacutelo los 63 primeros caracteres son significativos)

4 No se hace distincioacuten entre mayuacutesculas y minuacutesculas

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 vaacutelidos

bull Nombre

bull Cadena

bull Edad_Maxima

bull X_Y_Z

bull Etiqueta2

Identificadores no vaacutelidos

bull NumampDias caraacutecter amp no vaacutelido

bull X nombre Contiene un blanco

bull begin es una palabra reservada

bull ejes caraacutecter no vaacutelido

La eleccioacuten de identificadores permite una mejor lectura y comprensioacuten de un programa No es aconsejable utilizar identificadores que no sugieran ninguacuten significado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 8: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Identificadores

Identificadores vaacutelidos

bull Nombre

bull Cadena

bull Edad_Maxima

bull X_Y_Z

bull Etiqueta2

Identificadores no vaacutelidos

bull NumampDias caraacutecter amp no vaacutelido

bull X nombre Contiene un blanco

bull begin es una palabra reservada

bull ejes caraacutecter no vaacutelido

La eleccioacuten de identificadores permite una mejor lectura y comprensioacuten de un programa No es aconsejable utilizar identificadores que no sugieran ninguacuten significado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 9: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Declaracioacuten de etiquetas

Si necesitara utilizar la instruccioacuten Goto deberaacute marcarse con una etiqueta la liacutenea a donde desea enviarse el control de flujo del programa

La declaracioacuten deberaacute encabezarse con el identificador

reservado rdquoLabelrdquo seguido por la lista de etiquetas separadas por comas y terminada por un punto y coma

Pascal estaacutendar soacutelo permite etiquetas formadas por nuacutemeros de 1 a 4 diacutegitos

Turbo-Pascal permite la utilizacioacuten de nuacutemeros yo cualquier identificador excepto los identificadores reservados

Su uso no estaacute recomendado

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 10: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

En la definicioacuten de constantes se introducen identificadores que sirven como sinoacutenimos de valores fijos

El identificador reservado Const debe encabezar la instruccioacuten seguido por una lista de asignaciones de constantes Cada asignacioacuten de constante debe consistir de un identificador seguido por un signo de igual y un valor constante como se muestra a continuacioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 11: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Un valor constante puede consistir de un nuacutemero ( entero o real ) o de una constante de caracteres

La constante de caracteres consiste de una secuencia de caracteres encerrada entre apoacutestrofes ( ) y en

Turbo-Pascal tambieacuten puede formarse concatenaacutendola con caracteres de control ( sin separadores ) por ejemplo

Las constantes de caracteres pueden estar formadas por un solo caraacutecter de

control pej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 12: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de constantes

Existen dos notaciones para los caracteres de control en Turbo Pascal a saber

1 El siacutembolo seguido de un nuacutemero entero entre 0 y 255 representa el caraacutecter al que corresponde dicho valor decimal en el codigo ASCII

2 El siacutembolo ^ seguido por una letra representa el correspondiente caraacutecter de control

Ejemplos

12 decimal 12 ( hoja_nueva o alimentacioacuten de forma)

$1B valor hexadecimal 1B ( escape )

^G caraacutecter del timbre o campana

^M caraacutecter de retorno de carro

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 13: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

CONSTANTES PREDEFINIDAS

Ademaacutes de las constantes literales para los tipos integer y real con representacioacuten decimal y hexadecimal y las constantes literales para el conjunto de caracteres ASCII maacutes los caracteres especiales ( no incluidos en el conjunto estaacutendar del ASCII )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 14: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

El Tipo indica el espacio de memoria en que se almacenaraacuten 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 alguacuten otro definido por el programador

Los tipos definidos por el programador deben basarse en los tipos estaacutendar predefinidos para lo cual debe iniciar con el identificador reservado Type seguido de una o maacutes asignaciones de tipo separadas por punto y coma

Cada asignacioacuten de tipo debe consistir de un identificador de tipo seguido por un signo de igual y un identificador de tipo previamente definido

La asignacioacuten de tipos a los datos tiene dos objetivos principales

Detectar errores de operaciones en programas

Determinar coacutemo ejecutar las operaciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 15: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten 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

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 16: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

Tipos reales

En el contexto de Pascal un nuacutemero real es aquel que estaacute compuesto de una parte entera y una parte decimal separadas por un punto El rango de estos nuacutemeros estaacute 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

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 17: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos

Los nuacutemeros reales estaacuten siempre disponibles en Turbo Pascal pero si su sistema incluye un coprocesador matemaacutetico se dispone ademaacutes de otros tipos de nuacutemeros reales

bull real (real)

bull single (real corto)

bull comp (entero ampliado)

bull double (real de doble precisioacuten)

bull extended (real ampliado)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 18: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Definicioacuten de tipos Real

BOOLEAN Puede asumir cualquiera de los valores de verdad denotados por los identificadores true y false los cuales estaacuten definidos de tal manera que false lt true Un valor de tipo boolean ocupa UN OCTETO en la memoria

CHAR Es cualquier caraacutecter que se encuentre dentro del conjunto ASCII ampliado el cual estaacute formado por los 128 caracteres del ASCII maacutes los 128 caracteres especiales Los valores ordinales del coacutedigo ASCII ampliado se encuentran en el rango de 0 a 255 Dichos valores pueden representarse escribiendo el caraacutecter correspondiente encerrado entre apoacutestrofes

Ej A lt a

CADENA (STRING) Es una secuencia de caracteres de cero o maacutes caracteres correspondientes al coacutedigo ASCII escrito en una liacutenea sobre el programa y encerrado entre apoacutestrofos

Ej Turbo PascalTecnoloacutegico 1310

Nota

bull Una cadena sin nada entre los apoacutestrofos se llama cadena nula o cadena vaciacutea

bull La longitud de una cadena es el nuacutemero de caraacutecteres encerrados entre los apoacutestrofos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 19: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores

Los operadores sirven para combinar los teacuterminos

de las expresiones

En Pascal se manejan tres grupos de operadores

1 ARITMEacuteTICOS

2 RELACIONALES

3 LOacuteGICOS

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 20: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Sirven para operar teacuterminos numeacutericos

a UNARIOS

b BINARIOS

UNARIOS trabajan con UN OPERANDO

Pascal permite el manejo de un operador unario llamado MENOS UNARIO

Este operador denota la negacioacuten del operando y se representa por medio del signo menos ( - ) colocado antes del operando Ej x = 100 -x daraacute como resultado -100

BINARIOS combinan DOS OPERANDOS dando como resultado un valor numeacuterico cuyo tipo seraacute igual al mayor de los tipos que tengan los operandos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 21: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores aritmeacuteticos

Observe

1 Cuando los dos operandos sean del tipo integer el resultado seraacute de tipo integer

2 Cuando cualquiera de los dos operandos o ambos sean del tipo real el resultado seraacute de tipo

real

3 Cuando en la operacioacuten 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 operacioacuten MODULO estaacute definida solamente para OPERANDO-2 positivo El resultado se daraacute

como el entero no negativo maacutes pequentildeo que puede ser restado de OPERANDO-1 para obtener un

muacuteltiplo de OPERANDO-2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 22: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores relacionales

Una RELACIOacuteN consiste de dos operandos separados por un operador relacional Si la relacioacuten es satisfecha el resultado tendraacute un valor booleano true si la relacioacuten no se satisface el resultado tendraacute 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 loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 23: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operadores loacutegicos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 24: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las expresiones son secuencias de constantes yo variables separadas por operadores vaacutelidos

Se puede construir una expresioacuten vaacutelida por medio de

1 Una sola constante o variable la cual puede estar precedida por un signo + oacute -

2 Una secuencia de teacuterminos (constantes variables funciones) separados por operadores

Ademaacutes debe considerarse que

1048707 Toda variable utilizada en una expresioacuten debe tener un valor almacenado para que la expresioacuten al ser evaluada deacute como resultado un valor

1048707 Cualquier constante o variable puede ser reemplazada por una llamada a una funcioacuten Como en las expresiones matemaacuteticas una expresioacuten en Pascal se evaluacutea 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 evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 25: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Expresiones

Las reglas de evaluacioacuten son

1 Si todos los operadores en una expresioacuten tienen la misma precedencia la evaluacioacuten de las operaciones se realiza de izquierda a derecha

2 Cuando los operadores sean de diferentes precedencias se evaluacutean primero las operaciones de maacutes alta precedencia (en una base de izquierda a derecha ) luego se evaluacutean las de precedencia siguiente y asiacute sucesivamente

3 Las reglas 1) y 2) pueden ser anuladas por la inclusioacuten de pareacutentesis en una expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 26: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Instrucciones

Aunque un programa en Pascal puede contar con una sola instruccioacuten (tambieacuten llamada enunciado sentencia o estatuto) normalmente incluye una cantidad considerable de ellas Uno de los tipos de instrucciones maacutes importantes lo forman las instrucciones de asignacioacuten las cuales asignan a una variable (por medio del

siacutembolo = ) el resultado de la evaluacioacuten de una expresioacuten

La sintaxis para las instrucciones de asignacioacuten es identificador = expresioacuten

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 27: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Bloques de instrucciones

Es posible utilizar una instruccioacuten 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 perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 28: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos de entrada salida

Las instrucciones de entrada y salida le ayudan al programa a comunicarse con un perifeacuterico de la computadora tal como una terminal una impresora o un disco

Las instrucciones de entrada estaacutendar sirven para leer caraacutecteres desde el teclado

Las instrucciones de salida estaacutendar despliegan caraacutecteres en la pantalla

En Pascal todas las operaciones de entradasalida se realizan ejecutando unidades de programa especiales denominados procedimientos de entradasalida que forman parte del compilador y sus nombres son identificadores estaacutendar

Procedimientos de entrada Read ReadLn

Procedimientos de salida Write WriteLn

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 29: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Base para las instrucciones de entrada estaacutendar

Proporcionan datos durante la ejecucioacuten 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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 30: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

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 disentildear procedimientos especiacuteficos

La accioacuten de la instruccioacuten es obtener del teclado tantos valores de datos como elementos hay en lista_de_variables Los datos deberaacuten 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 nuacutemeros y puede estar inmediatamente precedido por un signo maacutes o un signo menos Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de liacutenea pero no deberaacute haber blancos o fines de liacutenea entre el signo y el nuacutemero

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instruccioacuten continuacutee leyendo valores en la misma liacutenea mientras que con ReadLn la siguiente lectura se haraacute despueacutes de que se haya tecleado el caraacutecter de fin de liacutenea

Cuando se tienen datos de tipo char en una instruccioacuten Read los caracteres blancos y los de fin de liacutenea 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 liacutenea es tratado como un caraacutecter pero el valor asignado a la variable seraacute un caraacutecter blanco

Es aconsejable que cada cadena de caracteres se lea en una instruccioacuten 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 tendraacuten resultados sorpresivos y frustrantes al verificar los datos leiacutedos )

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 31: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Read y Readln

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 32: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos Write Y Writeln

La salida estaacutendar 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 yo constantes

cuyos valores van a ser desplegados

en la pantalla

El procedimiento Write permite que la

siguiente instruccioacuten se realice en la

misma liacutenea mientras que WriteLn

alimenta una nueva liacutenea antes de

finalizar Ej

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 33: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Patrones Loacutegicos

bull Secuencia

bull Seleccioacuten

bull Iteracioacuten

ndash Hacer Mientras

ndash Hacer Hasta

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 34: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Secuencia

En este caso las instrucciones se ejecutan una

despueacutes de la otra sin omitir ninguna de ellas

Begin

N = 0

Write (ldquoNombrey Apellidordquo NYA)

N = N + 1

End

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 35: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten

La seleccioacuten de alternativas en Pascal se

realiza con alguna de las dos siguientes

formas

1La sentencia if

2La sentencia case

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 36: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Se evaluacutea condicioacuten y si el resultado arroja un valor verdadero se

ejecuta instruccioacuten_1 en caso contrario se ejecuta instruccioacuten_2

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 37: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Omitiendo el ldquoELSErdquo Usando el ldquoELSErdquo

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 38: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Nota Antes de la claacuteusula else no se antepone un punto y coma si lo hubiese el compilador produciraacute un mensaje de error puesto que no existe ninguna sentencia en Pascal que comience con else La parte else es opcional pero la ejecucioacuten siempre continuaraacute en otra instruccioacuten

En lugar de utilizar instrucciones simples se pueden usar bloques de instrucciones

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 39: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia ldquoIF ndash THEN - ELSErdquo

Sentencia IF anidadas

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 40: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 41: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Dependiendo del valor que tenga la expresioacuten selector se ejecutaraacuten las instrucciones etiquetadas por constante

Aquiacute tambieacuten 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 expresioacuten ltselectorgt se evaluacutea y se compara con las constantes las constantes son listas de uno o maacutes posibles valores de ltselectorgt separados por comas Ejecutadas la(s) ltinstruccionesgt el control se pasa a la primera instruccioacuten a continuacioacuten de end (fin de case)

2 La claacuteusula else es opcional

3 Si el valor de ltselectorgt no estaacute comprendido en ninguna lista de constantes y no existe la claacuteusula else no sucede nada y sigue el flujo del programa si existe la claacuteusula else se ejecutan la(s) ltinstruccionesgt a continuacioacuten de la claacuteusula else

4 El selector debe ser un tipo ordinal ( integer char boolean o enumerado) Los tipos string longint y word no son vaacutelidos

5 Todas las constantes case deben ser uacutenicas y de un tipo ordinal compatible con el tipo del selector

6 Cada sentencia excepto la uacuteltima deben ir seguidas del punto y coma

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 42: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Seleccioacuten Sentencia CASE-OF-ELSE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 43: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten

Las formas de iteracioacuten sirven para ejecutar ciclos repetidamente dependiendo de que se cumplan ciertas condiciones Una estructura de control que permite la repeticioacuten 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 repeticioacuten

1 While

2 Repeat

3 For

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 44: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

La estructura repetitiva while(mientras) es aquella en la que

el nuacutemero de iteraciones no se conoce por anticipado y el

cuerpo del bucle se ejecuta repetidamente mientras que

una condicioacuten sea verdadera

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 45: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Reglas de funcionamiento

La condicioacuten se evaluacutea antes y despueacutes de cada ejecucioacuten del bucle Si la condicioacuten es verdadera se ejecuta el bucle y si es falsa el control pasa a la sentencia siguiente al bucle

Si la condicioacuten se evaluacutea a falso cuando se ejecuta el bucle por primera vez el cuerpo del bucle no se ejecutaraacute nunca

Mientras la condicioacuten sea verdadera el bucle se ejecutaraacute Esto significa que el bucle se ejecutaraacute indefinidamente a menos que algo en el interior del bucle modifique la condicioacuten haciendo que su valor pase a falso Si la expresioacuten 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

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 46: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Iteracioacuten WHILE-DO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 47: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

La accioacuten de repeat-until es repetir una serie de instrucciones

hasta que se cumpla una determinada condicioacuten

Reglas de funcionamiento

1 La condicioacuten se evaluacutea al final del bucle despueacutes de ejecutarse todas las sentencias

2 Si la condicioacuten es falsa se vuelve a repetir el bucle y se ejecutan todas sus

instrucciones

3 Si la condicioacuten es falsa se sale del bucle y se ejecuta la siguiente instruccioacuten 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

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 48: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

REPEAT-UNTIL

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

FOR-TO-DO

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 49: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

FOR-TO-DO

Al ejecutarse la sentencia for la primera vez a contador se le asigna un valor inicial (expresion1) y a continuacioacuten se ejecutan las intrucciones del interior del bucle enseguida se verifica si el valor final (expresioacuten2) es mayor que el valor inicial (expresioacuten1) en caso de no ser asiacute 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 Aquiacute contador no puede ser de tipo real

El contador se puede decrementar sustituyendo la palabra to por la palabra downto

Cuando se sabe de antemano el nuacutemero de veces que deberaacute

ejecutarse un ciclo determinado eacutesta es la forma maacutes conveniente

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 50: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 51: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

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 definicioacuten seraacute usada por el compilador para determinar cuanto espacio de memoria se reservaraacute para las variables de cada tipo asiacute como para establecer los liacutemites 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 instruccioacuten ejecutable

A cada tipo de dato se le pueden aplicar ciertos operadores especiacuteficos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 52: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Tipos de datos Clasificacioacuten

Tipos simples Hasta aquiacute hemos considerado los tipos simples estaacutendar integer real boolean char y byte proporcionados por Turbo Pascal

Estos tipos de datos pueden ser utilizados para declarar variables numeacutericas de caracteres yo loacutegicas Sin embargo es posible que ninguno de ellos satisfaga los requerimientos de un determinado problema hacieacutendose necesaria la utilizacioacuten de otros tipos como

TIPO SUBRANGO TIPO ENUMERADOS

TIPO SUBRANGO

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 53: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas

TIPO CADENAS (strings) Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias de caracteres ) La definicioacuten de un tipo string debe especificar el nuacutemero maacuteximo de caracteres que puede contener esto es la maacutexima longitud para las cadenas de ese tipo La longitud se especifiacuteca por una constante entera en el rango de 1 a 255

Las variables de cadena se declaran en la

seccioacuten Var o Type

Una Vez declaradas las variables se pueden realizar

asignaciones u operaciones de lecturaescritura

El contenido de la cadena se debe encerrar entre

apoacutestrofes

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 54: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Operaciones entre cadenas

Las operaciones baacutesicas entre cadenas son asignacioacuten comparacioacuten y concatenacioacuten

Es posible asignar una cadena a otra cadena incluso aunque sea de longitud fiacutesica maacutes pequentildea en cuyo caso ocurririacutea un truncamiento de la cadena

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 55: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Reglas de comparacioacuten de cadenas

Las comparaciones de las cadenas de caracteres se hacen seguacuten el orden de los caracteres en el coacutedigo ASCII y con los operadores de relacioacuten

0 lt 1 2 gt 1 A lt B m gt 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 maacutes corta que la otra entonces la maacutes corta es menor que la maacutes larga

Ejemplo

Alex gt Alasbdquo puesto que e gt a

ADAN lt adanbdquo puesto que A lt a

Damian lt Damianabdquo Damian tiene menos caracteres que Damiana

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 56: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Cadenas concatenacioacuten

Otra operacioacuten baacutesica es la concatenacioacuten La concatenacioacuten es un proceso de combinar dos o maacutes cadenas en una sola cadena El signo + se puede usar para concatenar cadenas ( al igual que la funcioacuten concat ) debiendo cuidarse que la longitud del resultado no sea mayor que 255

Ejemplos

INSTITUTO +TECNOLOGICO=INSTITUTO TECNOLOGICObdquo

CONTAB++PASbdquo = CONTABPAS

Se puede asignar el valor de una expresioacuten de cadena a una variable cadena por ejemplo

fecha = lunes

y utilizar la variable fecha en

frase=El proacuteximo +fecha+ inician las clases

Si la longitud maacutexima 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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 57: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 58: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

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

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 59: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Procedimientos STR

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

PROCEDEMINTO VAL

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 60: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

PROCEDEMINTO VAL

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 61: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Funcioacuten Concat Funcioacuten Copy Lenght Pos

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 62: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Un arreglo estaacute formado por un nuacutemero fijo de elementos contiacuteguos 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 nuacutemero de elementos

Un array se caracteriacuteza por

Almacenar los elementos del array en posiciones de memoria contiacutenua

Tener un uacutenico nombre de variable que representa a todos los elementos y eacutestos a su vez se diferenciacutean por un iacutendice o subiacutendice

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 dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 63: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arreglos (array)

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Un array de una dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 64: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Un array de una dimensioacuten (vector o lista) es un tipo de datos estructurado compuesto de un nuacutemero de elementos finitos tamantildeo fijo y elementos homogeacuteneos 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

Subiacutendice [1][2]

Contenido edades[2]= 28

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 65: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays unidimensionales

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 66: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays paralelos

Dos o maacutes arrays que utilizan el mismo subiacutendice para referirse a teacuterminos

homoacutelogos 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 simultaacutenea con las edades

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 67: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matriacutez) es un array con dos iacutendices 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 nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 68: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays multidimensionales

Turbo Pascal no limita el nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 69: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Arrays multidimensionales

Turbo Pascal no limita el nuacutemero de dimensiones de un array pero siacute que debe estar declarado el tipo de cada subiacutendice

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip

Page 70: PASCAL y TURBO PASCAL - Facultad de Ciencias Exactas y ... · Definición de tipos Tipos reales En el contexto de Pascal, un número real es aquel que está compuesto de una parte

Magter Oscar Adolfo Vallejos

FaCENA - UNNE

Despueacutes continuamos hellip