llenguatge pascal
DESCRIPTION
Llenguatge de programació PascalTRANSCRIPT
1Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Introducción Conceptos generales, estructura de un
programa y tipos de datosIN
2Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
• Estructura general.– Bloques– Sintaxis
• Identificadores de variables.• Palabras reservadas.• Tipos de variables y necesidad de su
definición.
Características generales de un lenguaje
3Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Estructura de un programa en Pascal/Delphi
PROGRAM nombreProg;
PROCEDUREFUNCTION
BEGIN
END.
cabecera del programa
USESCONSTTYPEVAR
identificadores de libreríasdefinición de constantes
declaración de tipos de datos declaración de variables
definición de procedimientosdefinición de funciones
………. cuerpo del programa
{$APPTYPE CONSOLE} aplicación de consola, caso del Delphi
4Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
DATOS
INTERNOS
ESTATICOS
DINAMICOS
SIMPLES
ESTRUCTURADOS
EXTERNOS
SET
ESTANDAR
NO ESTANDAR
BOOLEANCHAR
ESCALAR
SUBRANGE
(Enumerado)
(Intervalo)
HOMOGENEOS
HETEROGENEOS
(ARRAY)
(RECORD)
Tipos de datosTipos de datos
(POINTER)
REALINTEGER
5Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
TIPOS estándar: Definición de variables
{Comentarios acerca del programa}PROGRAM {nombrePro} ;
{$APPTYPE CONSOLE} uses SysUtils ;
VAR{lista idVar}: INTEGER ;{lista idVar}: REAL ;{lista idVar}: CHAR ;{lista idVar}: BOOLEAN ;
BEGIN………………………………
END.
Los comentarios pueden estar en cualquier posición. También puede utilizarse:
(*……..*)
Directivas Delphi paraaplicaciones de Consola.
6Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Datos tipo INTEGER
Son números enteros positivos y negativos, sin parte decimal los valores máximo y mínimo dependerán de la representación elegida.
Si la representación interna es de32 bits en complemento a 2, entonces:
Ejemplos: 1234 válido
1.2 no válido; no se permiten decimales
- 231 … +(231-1)[–2147483648 … +2147483647]
Concepto
Representación
Conviene entender que si no hay verificación (a veces sucede o es opcional por cuestión de eficiencia), pueden darse situaciones curiosas como codificar un positivo como negativo.
7Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Datos tipo REAL
En Informática, son los números con o sin decimales representados en formato científico.
Representación interna:
Ejemplos: 3.65E-4 válidoválido3.14
Intervalo (range) de representación
s Exponente Mantisa
Como siempre, según representación
3.28976543456789213456789 (atención a la precisión)
Ver, por ejemplo ejercicios IEEE 754
Precisión 15–16 dígitos significativosEn Delphi, el IEEE754 de doble precisión, tiene:5.0 x 10^–324 .. 1.7 x 10^308
8Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Tipos Alfanuméricos
Datos tipo CHAR
Representación interna: código ASCII8 bits
Corresponden a los símbolos alfanuméricos que componen el conjunto de caracteres ASCII.
Prácticamente todas las versiones (no std) incluyen un tipo CADENA o STRING como tipo elemental .
Ejemplos: 'M’válidoválido
no válido'1'A
(Sólo como texto)
'Mi casa’ no válido (El tipo CHAR acepta sólo un carácter)
Ejemplo: 'Mi casa’ Sería válido
Pero el PASCAL estándar lo considera variable estructurada (vector de caracteres): lo veremos más adelante
Datos tipo STRING
9Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Tipos lógicos , booleanos o de decisión
Toman dos únicos valores: Verdadero (TRUE) y Falso (FALSE).
Representación interna: Con 1 bit sería suficiente, pero dependerá de la implementación: 8 bits o incluso más puede ser normal.
Operadores lógicos: AND, OR, XOR, NOT
Ejemplos: si FALSE
TRUEA = 2B = 3X = 0
A = B
B > A
( (A+B)>2 ) OR ( X=1 ) TRUE
True False
Cualquier expresión lógica podrá ser asignada a una variable lógica (lo veremos más adelante)
10Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Composición SECUENCIALCS
COMPOSICIÓN SECUENCIAL
11Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
COMPOSICIÓN
ITERATIVA
SECUENCIAL
ALTERNATIVA
COMPOSICIÓN SECUENCIAL
12Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Definición: Una acción compuesta, está formada por una secuencia de acciones elementales.
Pseudocódigo Formato PASCALOrdinograma equivalente
SECUENCIA
{a1}; {a2}; ... {an}
FSECUENCIA
BEGIN{a1}; {a2}; .. {an}
END
{a1}
{an}
Composición Secuencial
A
COMPOSICIÓN SECUENCIAL
13Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Operación ASIGNACIÓN
• Formato:
{id_variable} := {expresión válida}
suma := num1 + num2
Operación básica, junto a las de E/S
{expresión válida} puede ser una constante o variable del mismo tipo o cualquier expresión válida para el tipo.
COMPOSICIÓN SECUENCIAL
14Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi COMPOSICIÓN SECUENCIAL
• lógicos
AND, OR, XOR, NOT
• de relación
• matemáticos
+ , - , * , / , DIV , MOD
< , <=, > , >= , = , <>
Operadores básicos Pascal/Delphi
15Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Operadores matemáticosPueden ser utilizados con tipos enteros o reales.
Se puede asignar un resultado INTEGER a una variable REAL (mixed mode). En algunas versiones y lenguajes es necesario una función de conversión para cambio de tipo.
IntegerInteger
IntegerIntegerInteger
IntegerInteger
RealRealReal
RealRealReal
RealRealRealRealReal Real Real
ErrorErrorError
ErrorErrorError
+-*/
MODDIV
IntegerInteger RealRealReal
Realoperador
TIPO DE LOS OPERANDOS
COMPOSICIÓN SECUENCIAL
16Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Expresiones lógicas:………….
VAR
i,j: INTEGER;
a,b: BOOLEAN;
BEGIN
…………….
i:=3; j:= 4;
a:= i<j;
b:= (i=j) OR a;
a:=b;………..
END.
Notar que las variables a y b sólo pueden tomar los valores TRUE o FALSE
COMPOSICIÓN SECUENCIAL
Operadores lógicos/de relación
17Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
A B = A B
Recordar que según el teorema de Shanon-Morgan podemos escribir una expresión lógica.
noEs:= NOT (((Cantidad MOD 10) = 0 ) OR ((Cantidad MOD 12) = 0))
Así, si queremos evaluar una expresión lógica para saber si una cantidad no es múltiplo de 10 ni de 12, podemos escribir:
o bien:noES:= (NOT((Cantidad MOD 10) = 0 )) AND (NOT ((Cantidad MOD 12) = 0))
Complementario de unión es lo mismo que intersección de complementarios.
COMPOSICIÓN SECUENCIAL
Operadores lógicos/de relación
noEs:= ((Cantidad MOD 10) <> 0 ) AND ((Cantidad MOD 12) <> 0)
aunque también seria correcto:
18Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Problemática de ambigüedad en las operaciones
y:= a + b * c ;
posibilidades de lectura: ( a + b ) * c
a + ( b * c )
Para resolver estas ambigüedades, los lenguajes establecen unos criterios de “prioridad” de evaluación.
Sea el caso de la expresión
COMPOSICIÓN SECUENCIAL
19Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Prioridades en las operaciones
Todas las subexpresiones entre paréntesis se evalúan primero.
Cuando las subexpresiones son con paréntesis anidados, se evalúa primero el paréntesis más interno.
Prioridad de los operadores en Delphi:
Los operadores con igual orden de operación en una misma expresión se evalúan de izquierda a derecha.
primero NOT* , / , DIV , MOD , AND+ , - , OR , XOR
último = , <> , < , > , <= , >=
1.
2.
3.
4.
COMPOSICIÓN SECUENCIAL
20Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Operaciones de entrada/salida
PROCEDIMIENTO DE ENTRADA
sirve para leer datos
exterior ordenador
READ ({lista_var})
READLN ({lista_var})
formato:
PROCEDIMIENTO DE SALIDA
sirve para escribir datos
exteriorordenador
WRITE ({lista_var y/o constantes})
WRITELN ({lista_var y/o constantes})
formato:
La diferencia entre Write y Writeln es obvia.
La diferencia entre Read y Readln es más sutil : tiene que ver con el bloque leído y el separador utilizado (no es demasiado importante por ahora pero es bueno que lo entienda)
COMPOSICIÓN SECUENCIAL
21Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Formato salida
{id_var}:a:d a: ancho total del campo d: numero de decimales ( sólo en el tipo REAL)
Ejemplos:
Writeln (‘Hola’);Writeln (’Hola’:10);
Writeln (radio:10:2,contador:4);
si radio := 3,5 (REAL) contador := 3 (INTEGER)
_ _ _ _ _ _ 3.50_ _ _ 3
La mayoría de lenguajes de programación permiten que las primitivas de salida especifiquen el formato. En el caso de Pascal, se hace de una manera muy simple, mediante descriptores de ancho de campo.
Hola_ _ _ _ _ _Hola
Visto por pantalla
COMPOSICIÓN SECUENCIAL
22Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Ejemplo Composición SECUENCIAL
PROGRAM sumar ;{Algoritmo para calcular la
suma de dos enteros}
VAR
BEGINSECUENCIA
END.FSECUENCIA
a,b,suma : INTEGER;
Writeln (’Suma de dos enteros’);{Presentación}
Writeln ; Writeln (’Hasta otra'){Despedida}Writeln (’la suma vale: ’, suma:6);Mostrar (suma)
Write (’Entre dato 2:'); Readln (b);Write (’Entre dato 1:'); Readln (a);Leer (a)
Leer (b)suma := a+b;suma = a+b
COMPOSICIÓN SECUENCIAL
{$APPTYPE CONSOLE}uses SysUtils;
23Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
algunas Funciones librerías estándar Delphi
COMPOSICIÓN SECUENCIAL
Matemáticas (System, Sysutils, Math)(F) Abs (V: Tipo): Tipo; devuelve el valor absoluto de V
(F) Round (V: Extended): Int64; devuelve el redondeo matemático de V
(F) Trunc (V: Extended): Int64; devuelve la parte entera de V
(F) Ceil (V: Extended): Integer; devuelve el redondeo por exceso de V
(F) Frac (V: Extended): Extended; devuelve la parte fraccionaria de V
(F) Int (V: Extended): Extended; devuelve la parte entera de V
(F) Sqr (V: Extended): Extended; devuelve el cuadrado de V
(F) Sqrt (V: Extended): Extended; devuelve la raíz cuadrada de V
(F) Power (Base, Exp: Extended): Extended; devuelve Base^Exp
(F) Exp (V: Real): Real; devuelve número e^V
(F) Ln (V: Real): Real; logaritmo neperiano (V)
(F) Pi: Extended devuelve 3.1415926535897932385
(F) Sin (A: Extended): Extended; devuelve el seno de A (A en radianes)
(F) Cos (A: Extended): Extended; devuelve el coseno de A (A en radianes)
(F) Tan (A: Extended): Extended; devuelve la tangente de A (sin(a)/cos(a))
Como ejemplo entre muchas otras funciones.
Consultar manual del lenguaje.
24Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Variables y operaciones alfanuméricas
Definición: VAR
text1,text2: STRING[25];
Operaciones básicas:
Lectura/escritura: READ/READLN
WRITE/WRITELN
ASIGNACION: text2:= text1;
(text1)
COMPOSICIÓN SECUENCIAL
25Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Composición ALTERNATIVACA
26Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
COMPOSICIÓN
ITERATIVA
ALTERNATIVA
SECUENCIAL
COMPOSICIÓN ALTERNATIVA
27Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Composición Alternativa SIMPLEDefinición: La acción se produce únicamente si se cumple una determinada
expresión lógica o predicado {p}.
Pseudocódigo Formato PASCAL Ordinograma equivalente
SI {p}
ENTONCES {Sq-A}
FSI
IF {p}
THEN {a} ;NO
SIVF
{p}
{Sq-A}notar que: - la acción {a}, en el caso de Pascal, es una acción elemental. Si es una secuencia, debe explicitarse. - en cualquier caso, al final de la composición, se continua a partir del punto de salida. - el final del IF no existe en forma diferenciada.
Delimitador
COMPOSICIÓN ALTERNATIVA
28Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
ejemplo ALTERNATIVA SIMPLE
PROGRAM comparacion;
VAR a,b: REAL;
BEGIN
IF a>bTHEN
Writeln (a:8:2, ' es el mayor ');END.
Writeln ('introducir datos ');
Readln (a,b);
Recordar: Para evitar el problema de separador entre datos se puede acudir a dos READLN independientes.
COMPOSICIÓN ALTERNATIVA
Programa que dados dos números, identifica el mayor de ellos.
29Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Composición Alternativa DOBLE
Definición: Permite la elección entre dos tratamientos alternativos en función de que se cumpla o no el predicado {p}
Pseudocódigo Formato PASCAL Ordinograma equivalente
SI {p} ENTONCES
{Sq-A} SI_NO
{Sq-B} FSI
IF {p} THEN
{a1} ELSE
{a2} ;
NOSI{p}
{Sq-A} {Sq-B}
notar que, en Pascal, las acciones {a1} y {a2} son elementales. Si son una secuencia, debe explicitarse (BEGIN/END)
delimitador
;
COMPOSICIÓN ALTERNATIVA
30Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Comentarios a estructuras alternativas simple y doble
c1.
c2.
{p} es cualquier expresión evaluable a resultado booleano (donde una variable boolean sería un caso particular)
En Pascal, las acciones {a1} o {a2} son acciones elementales, entre ellas, cualquier estructura básica.
BEGIN __________ _________ __{SQ}___ __________
END
{a}
A > B(A > B) AND (Y=0) OR SWITCH
SWITCH siendo SWITCH una variable booleanasí:
podrían ser expresiones lógicas válidas.
Por consiguiente, como ha quedado indicado previamente, si desea incluirse una secuencia, ésta debe explicitarse mediante BEGIN/END
COMPOSICIÓN ALTERNATIVA
31Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
ejemplo composición ALTERNATIVA DOBLE
Reconsideremos nuestro anterior programa de comparar de modo que aporte mayor información
En cualquier caso, este programa es sintácticamente correcto pero el lector habrá observado que incorpora un error semántico
notar que un delimitador en esta posición provocaría un error ya que significaría el final del IF. En Pascal, es el propio ELSE quien hace las veces de delimitador
PROGRAM comparacion;
VAR a,b: REAL;BEGIN
Writeln ('introducir datos ');
IF a>bTHEN Writeln (a:8:2,' es el mayor ')
END.
ELSE Writeln (b:8:2,' es el mayor');
Readln (a,b);
COMPOSICIÓN ALTERNATIVA
32Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Composiciones ALTERNATIVAS ANIDADAS
PROGRAM comparación;VAR a,b: REAL;
BEGINWriteln ('introducir datos ');
IF a>b
IF a<b
THEN Writeln (a:8:2,' es el mayor ')
END.
ELSE
THEN Writeln (b:8:2,' es el mayor')ELSE Writeln ('son iguales');
Readln (a,b);
En efecto, resulta claro que la condición contraria a a>b no es a<b sino a<=b. Así pues, el programa correcto se podría construir a partir de estructuras alternativas imbricadas. Es decir, donde la acción {a} de una estructura alternativa es, a su vez, otra estructura alternativa.
COMPOSICIÓN ALTERNATIVA
33Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Otro ejemplo general
FSECUENCIA
SECUENCIA
{Presentación}Leer (dato1 , dato2)
SI dato1<dato2
SI dato2<dato1
ENTONCES
ENTONCES
ENTONCES Mostrar (dato1, ‘es divisor de’, dato2}
ENTONCES Mostrar (dato2, ‘es divisor de’, dato1}
SI_NO Mostrar (‘no son divisores’)
SI_NO
SI_NO
SI_NO
SI
SI
FIN_SI
FIN_SI
FIN_SIFIN_SI
{cociente dato2/dato1 es exacto}
{cociente dato1/dato2 es exacto}
Mostrar (‘no son divisores’)
Mostrar (‘son iguales’)
{Despedida}
COMPOSICIÓN ALTERNATIVA
Dados dos valores, indicar si uno es divisor del otro.
34Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Problemática de las ESTRUCTURAS ALTERNATIVAS ANIDADAS no completas
Sea un tramo de programa con el aspecto siguiente
- En este caso existen dos estructuras alternativas anidadas IF/THEN pero un solo ELSE.
- La cuestión, ahora está en discernir a cuál de las dos estructuras IF/THEN corresponde el único ELSE. - La identación de la escritura parece sugerir que la regla ELSE corresponde al IF de {p1}, y sin embargo, esto no es así.
IF {p1}
IF {p2}THEN
ELSE
THEN{acción_A}
{acción_B}
COMPOSICIÓN ALTERNATIVA
35Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Regla del THEN más internoEl primer ELSE que se encuentra constituye la alternativa del THEN más interno.
así:
COMPOSICIÓN ALTERNATIVA
IF {p1}
IF {p2}
THEN
ELSE
THEN{acción_A} ;
{acción_B} ;
BEGIN
END
36Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
composición alternativa MULTIPLE (presentación)
- En muchas ocasiones la decisión no debe tomarse entre dos, sino entre más alternativas.
- De hecho, deberíamos diferenciar, como mínimo, dos casos:
a) cuando las alternativas son mutuamente excluyentes
b) cuando las alternativas no tienen por qué ser excluyentes (pueden darse más de una)
El caso a) puede materializarse mediante composiciones alternativas dobles anidadas
El caso b) puede materializarse mediante composiciones alternativas simples en secuencia
IF {p1} THEN {acción_1} ELSE
IF {p2} THEN {acción_2}. ELSE ........
IF {p1} THEN {acción_1};
IF {p2} THEN {acción_2};
IF .....
COMPOSICIÓN ALTERNATIVA
37Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
composición alternativa MULTIPLE ( SELECCION 1 entre N)
{lista_const_i} son listas de constantes del mismo tipo que la expresión de control de la selección que ha de ser de tipo enumerado (por ahora, cualquier estándar, excepto REAL)
Pseudocódigo Formato PASCAL Ordinograma equivalente
SEGUN_SEA {id_var} HACER
{lista_const_1} : {S1} {lista_const_2} : {S2}
..... {lista_const_n} : {Sn} [NINGUNA : {Sx}]
FSEGUN_SEA
CASE {var} OF
{lista_1} : {a1} {lista_2} : {a2}
..... {lista_n} : {an} [ELSE : {ax}]
END;
{expr}
...S1 S2 Sn Sx
1
1 -expresión evaluable a variable enumerada
Así pues, la mayoría de lenguajes de programación, al hablar de estructura alternativa múltiple, se refieren a una selección 1 entre n, según el valor de una variable forme parte de una u otra lista de valores no repetidos.
COMPOSICIÓN ALTERNATIVA
38Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Composición ITERATIVACI
39Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
COMPOSICION
SECUENCIAL
ITERATIVA
ALTERNATIVACOND. INICIAL
COND. FINAL
repetitiva
COND. INTERMEDIA
variante
COMPOSICIÓN ITERATIVA
40Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Descripción: La condición de salida del lazo se evalúa al principio de la composición.Por consiguiente, si la expresión no es cierta, la acción puede no ejecutarse ni una sola vez.
Pseudocódigo Formato PASCALOrdinograma equivalente
MIENTRAS {p} HACER
{SQ}
FMIENTRAS
WHILE {p}DO
Composición ITERATIVA de condición inicial
NO
SI
{predicado}
{SQ}delim
{Acción}
fin del WHILE
COMPOSICIÓN ITERATIVA
41Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Ejemplo de composición ITERATIVA de condición INICIAL
PROGRAM suma;
VAR suma,numero,n_limite : INTEGER;
SECUENCIA
FSECUENCIA.
opcional
Algoritmo para obtener la suma de losn primeros números naturales:
suma:=0;{Presentación}
Leer (n_limite)numero:=1
MIENTRAS numero <= n_limite
suma:=suma+numeronumero:=numero+1
FMIENTRAS
HACER
Mostrar (suma)
BEGIN
suma:=0;Writeln ('Suma n primeros naturales');
Write ('Entre n: '); Readln (n_limite);numero:=1;
WHILE numero<= n_limite
suma:=suma+numero;numero:=numero+1
END;
END.
BEGINDO
;
Writeln ('La suma vale:’,suma:8:2);
COMPOSICIÓN ITERATIVA
42Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Definición:En este caso, el predicado de salida se sitúa después de ejecutar la acción. Por consiguiente, ésta se realiza siempre, al menos una vez.
Como en el caso de la estructura iterativa de condición inicial, el número de veces que se realiza la acción depende de la condición. Naturalmente, la acción deberá contener alguna sub-acción que modifique algún elemento de la expresión lógica que constituye la condición de salida.
Pseudocódigo Formato PASCAL Ordinograma equivalente
REPETIR
HASTA_QUE {p}
REPEAT
UNTIL {p}
{SQ}{SQ} {SQ}
exp_logNO
SI
Composición ITERATIVA de condición final
delim
COMPOSICIÓN ITERATIVA
43Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Ejemplo composición ITERATIVA de condición FINAL
SECUENCIA SECUENCIA
suma:=0 suma:=0 , numero:=1{Presentación} {Presentación}
Leer (n_limite)numero:=1
MIENTRAS numero <= n_limite REPETIR
suma:=suma+numerosuma:=suma+numero
numero:=numero+1numero:=numero+1
FMIENTRASHASTA QUE numero > n_limite
FSECUENCIA
FSECUENCIA.
HACER
Tomemos el mismo ejemplo que ya empleamos para ilustrar la estructura iterativa de condición inicial
No es casualidad que la expresión lógica de la variante con condición final sea la complementaria a la de condición inicial.Nótese, que el algoritmo, ahora, no es valido para n_limite=0.
y realicemos una propuesta alternativa con condición final.
Mostrar (suma)
COMPOSICIÓN ITERATIVA
Mostrar (suma)
Leer (n_limite)
44Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Ejemplo composición ITERATIVA de condición FINAL
SECUENCIA
suma:=0;{Presentación}
Leer (n_limite}numero:=1
REPETIRsuma:=suma+numeronumero:=numero+1
HASTA QUE numero > n_limite
FSECUENCIA
PROGRAM suma;
suma,numero,n_limite : INTEGER;
BEGIN
suma:=0;Writeln ('Suma n primeros naturales');
Write ('Entre n: '); Readln (n_limite);numero:=1;
REPEAT
UNTIL numero> n_limite ;
suma:=suma+numero;numero:=numero+1;
END.
El programa correspondiente al algoritmo de estructura iterativa con condición final:
VAR
Writeln (‘La suma vale: ‘,suma);
COMPOSICIÓN ITERATIVA
Mostrar (‘La suma vale: ‘,suma}
45Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Composición REPETITIVA
Concepto: Podemos pensar en un caso particular de iteración, basada en conocer la lista de valores de una variable de control para los cuales debe realizarse la acción (variables enumeradas de Pascal)
Pseudocódigo estructura repetitiva Pseudocódigo equivalente iterativo
DESDE {var}={valor inicial} HASTA {valor final}{var}={valor inicial}
HACER HACER
FMIENTRAS
MIENTRAS {var} <> {valor fina}
{Sq} {Sq}
FDESDE
Caso particular:
{var}:= {valor siguiente}
COMPOSICIÓN ITERATIVA
46Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Composición REPETITIVA
Caso Pascal
FOR {var}={valor inicial} {valor final}
{var}:={valor inicial};
DODO BEGIN
END
WHILE {var} <> {valor fina}
{Acción} {Acción}
{var}:= succ({var}) {caso TO}
{var}:= pred({var}) {para el caso DOWNTO}
TO DOWNTO
;
Formato general Equivalente con iterativa de condición inicial
{var} deberá ser una variable de tipo enumerada ('scalar' o 'subrange') y tomará todos los valores del intervalo recorrido en sentido ascendente (TO) o descendente (DOWNTO). Al principio, probablemente, no trabajará con variables declaradas explícitamente como enumeradas. Baste saber, por ahora, que los tipos estandar INTEGER y CHAR son dos casos especiales de tipos enumerados y que el tipo REAL, obviamente, no lo es.
La manera de recorrer la relación de valores en la estructura equivalente sería mediante la función valor siguiente (succ). Obviamente en el caso de enteros, la función succ equivale a incrementar una unidad.
i:= i + 1 equivale a i:= succ(i)Lógicamente, esto no tendría sentido para otras variables enumeradas, ni siquiera para el tipo estándar CHAR.
COMPOSICIÓN ITERATIVA
47Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Ejemplo Composición REPETITIVA
SECUENCIASECUENCIA
FSECUENCIA
{Presentación}
DESDE numero:=1 HASTA n_limite
suma:=suma+numero
suma:=0;
HACER
FDESDE
suma:=0{Presentación}
Leer (n_limite}numero:=1
MIENTRAS numero <= n_limite
suma:=suma+numero;numero:=numero+1
FMIENTRAS
FSECUENCIA
HACER
Si tomamos nuevamente nuestro antiguo ejemplo, veremos que, en efecto, se trataba de una estructura repetitiva ...
... y, por tanto, podríamos haber descrito el algoritmo en la forma
Nótese como, en este caso, la variable de control es actualizada automáticamente por la propia estructura
COMPOSICIÓN ITERATIVA
Mostrar (‘La suma vale: ‘,suma}
Leer (n_limite}
Mostrar (‘La suma vale: ‘,suma}
48Fundamentos de Informática. Electrónica. EUETIB.
Programación estructurada y Pascal/Delphi
Ejemplo Composición REPETITIVA
SECUENCIA{Presentación}
Leer (n_limite)
Mostrar (suma)
DESDE numero:=1 HASTA n_limite
suma:=suma+numero;
suma:=0
HACER
FDESDE
FSECUENCIA
A partir de este pseudocódigo, El texto del programa Delphi correspondiente:
PROGRAM suma;
FOR numero:=1 TO n_limite
VAR suma,numero,n_limite : INTEGER;
BEGIN
suma:=0;Writeln ('Suma n primeros naturales');
Write ('Entre n: '); Readln (n_limite);
Writeln ('El resultado es :',suma)
suma:=suma+numero;
END.
DO
COMPOSICIÓN ITERATIVA
{$APPTYPE CONSOLE}uses SysUtils;