1) El documento describe diferentes tipos de datos en el lenguaje de programación Pascal, incluyendo tipos definidos por el programador, tipos enumerados, subrangos y tipos ordinales. 2) También explica sentencias como entrada/salida, asignación, condicionales y repetitivas. 3) Finalmente incluye una sección de bibliografía sobre temas relacionados a sistemas, matemáticas y programación.
3. Tipos de datos definidas por el programador El programador puede redefinir o renombrar tipos definidos por el lenguaje Pascal o crear nuevos tipos para renombrar: TYPE entero = integer; caracter = char; logico = boolean; VAR numero: entero; Una_letra : caracter; valido: logico;
4. Tipos de datos enumerados definidos por el programador El programador puede definir tipos de datos enumerados, indicando expresamente los valores que lo forman. Esos valores deben ser identificadores en Pascal. <identificador> = (id1, id2...... idn) cada id-i es un identificador que representa un valor perteneciente al tipo de dato descripto. TYPE tfiguras = (triangulo, cuadrado, pentágono); tcolores= ("azul, verde, amarillo, rojo, negro);
5. Tipos de datos subrangos definidos por el programador De lodos los tipos de datos ordinales, es decir, aquellos que dado un valor se puede encontrar el siguiente, se pueden definir tipos llamados subrangos, indicando un valor inicial y un valor final del tipo ordinal. El tipo subrango contiene todos los valores comprendidos entre el inicial y el final incluyendo éstos. <identificador> =<valor inicial>. .<valor final> TYPE tmes = 1 ...12; tletras = 'a'..'z‘;
6. Tipos de datos subrangos definidos por el programador TYPE Tfiguras = (triangulo, cuadrado, rombo, rectángulo, pentágono); Tcuadrilateros = cuadrado .. rectángulo; Tilias = (lunes, martes, miércoles, jueves, viernes, sábado, domingo); Tdiashabiles = lunes .. viernes;
7. Tipos ordinales en Pascal Los tipos ordinales son aquellos cuyos valores están ordenados ( de acuerdo a ciertos criterios). Cada valor tiene un sucesor ( excepto el último). Y cada valor tiene un predecesor ( excepto el primero). Son tipos ordinales: INTEGER BOOLEAN CHAR enumerado subrango Observación: El tipo de dato real queda fuera de esta consideraciones.
8. Tipos ordinales en Pascal Los tipos ordinales tienen funciones que les son características: ORD(x) devuelve el valor correspondiente a la posición que ocupa x de acuerdo al orden de la declaración del tipo de dato. Si Tdias = (lunes, martes, miércoles, jueves, viernes, sábado, domingo); ord(lunes) = 0; ord(jueves) = 3 ord(martes)= 1; ord(domingo)= 6
9. Escritura en Pascal Pascal provee primitivas para comunicar al usuario con el programa, en tiempo de ejecución. write: Muestra valores en pantalla. writeln: Muestra valores en pantalla y baja de línea. Ejemplos: write ('el '); write ('resultado '); write ('es:'); write (35) El resultado es: 35
10. Escritura en Pascal writeln('el '); writeln('resultado'); writeln('es: '); writeln(35) Program Area-triangulo var Base,altura:rea!; {datos de entada} area: real; {dato de salida} begin writeln ('ingrese la base y la altura de un triángulo'); base:= 4; altura:= 5; area := base* altura; writeln ('el area del triangulo en‘, area); El Resultado es: 35
11. Lectura en Pascal READ: asigna a las variables los valores que son ingresados por teclado. READLN: asigna a las variables los valores que son ingresados por teclado y espera un fin de línea. Ejemplo: read(a); read(b); read(c); 26 8 34
12. readln (a); readln (b); readln (c); Program Area-triangulo; var base, altura: real; {datos de entrada} area: real; {datos de salida} begin writeln ('ingrese la base y la altura de un triángulo'); read (base, altura); area:= base* altura; writeln ('el area del triangulo es=', area) end. 26 8 34
13. Importante Pascal no permite utilizar las sentencias write y read. como así tampoco writeln y readln, con tipos enumerados y subrangos de los enumerados definidos por oí programador.
14. Sentencia de asignación Pascal permite explícitamente asignar un valor a una variable. La forma general de una asignación es la siguiente: identificador de variable : =expresión Es equivalente a la del lenguaje de diseño dato expresión car2 := 'j'; dias := 31; cari:= succ(car2); valido := días >= 25; valor := 1 - ( 3.4-5 +11+sin (2));
15. var dias: integer; car1, car2: char; valido: boolean; temperatura, valor: real; begin car2 := 'j'; dias:= 31; car1:= succ(car2); valido := días >= 25; valor := 1 - ( 3.4 - 2.67* 0.21) + sin (2)
16. Sentencia compuesta begin S1; S2; . . . Sn; end. Se usa cuando una secuencia de sentencias constituye una unidad. El cuerpo del programa es una sentencia compuesta.
17. El cuerpo del programa es una sentencia compuesta Program Ejemplo; Const..... Type..... Var...... begin S1; S2; . . . Sn; End. Estructuras de control Secuencia: Todo programa se ejecuta desde la primera sentencia hacia la última. En forma similar a los algoritmos.
18. Ejemplo: escribir un programa en Pascal que permita calcular el área de un círculo. Borra la Pantalla Espera comando Enter para finalizar la ejecución. Primer número indica la cantidad de espacios blancos a izquierda Segundo numero indica la cantidad de decimales con la que se mostrara el número real
19. Sentencias condicionales Permiten elegir una entre varias alternativas. Sentencia if-then equivale a si- entonces de algoritmos if expresión booleana then sentencia if expresión booleana then sentencia compuesta si condición entonces acción si condición entonces acciones
20. Sentencia if-then-else si condición entonces acción 1 si no acción 2 Ejemplo si a> 0 entonces a a - 1 si no aa * a ifexpresion booleana then sentencia 1 else sentencia 2 if a> 0 then a : = a -1; else a := sqr(a) ;
21. Sentencia if - then - else si condición if expresión booleana entoncesthenbegin Acciones sentencia 1; sentencia 2; si no Accioneselse begin sentencia m; sentencia m+1;
23. Condicionales anidados El significado en lenguaje de Diseño de Algoritmos es distinto que en lenguaje Pascal
24. SentenciaCASE Los cijson valores constantes del mismo tipo que expresión ordinal. Si son valores consecutivos del tipo, se pueden indicar como sub- intervalos. ( como se define los tipo subrango,cpr) Si algún valor de constante se repite en más de una línea se considera válido el que se encuentra en la línea superior. Las sentencias pueden ser también una sentencia CASE CASEexpi. ordinalof c11 ,c12,..,c1j : sentencia1; c21,c22,..., c2i: sentencia2; cn1, cn2,...cnm: sentencia n; END
25. SentenciaCASE En Turbo Pascal se permite indicar la alternativa ELSE, que significa que si ninguno de los valores de las constantes coincide con el de la expresión ordinal se ejecuta la sentencia n+1 CASEexpi. ordinalof c11 ,c12,..,c1j : sentencia1; c21,c22,..., c2i: sentencia2; cn1, cn2,...cnm: sentencia n; ELSE sentencia n+1 END
26. Sentencias de control iterativas en Pascal Sentenciafor-to for variable:=expr-ord1to expr-ord2 do sentencia repetir n veces acción 1 El tipo de dato de la variable y de las expresiones debe ser el mismo, ordinal no real. 2) Si valor de expr-ord1 <= valor de expr-ord2, la sentencia se ejecuta (valor de expr-ord2 - valor de expr-ord1 + 1) veces. 3) Si valor de expr-ord1 > valor de expr-ord 2, la sentencia no se ejecuta.
27. 4) La secuencia de ejecución es la siguiente: se evalúa expr-ord1 se evalúa expr-ord2 Variable := valor de expr-ord1 si variable <= expr-ord2 entonces sentencia variable := succ(variable) si variable <= expr-ord2 entonces sentencia Hasta que variable asuma un valor mayor que expr-ord2. 5)Los valores de los datos que participan en las expresiones deben estar inicializados con anterioridad a la ejecución de la repetición.
28. 6) La variable de control de la repetición no tiene un valor definido fuera de la misma. 7) Si bien Pascal lo permite no se debe modificar el valor de la variable de control durante la ejecución de la repetición. 8) La modificación del valor de los datos que intervienen en las expresiones, durante la ejecución de las sentencias de la repetición, no modifican el valor de aquellas. 9)Cuando la repetición requiere más de una sentencia a repetir se indica mediante una sentencia compuesta.
29.
30. Pudeprobar en Pascal con lassiguientessentencias el funcionamiento de la función for-to-do for i:= 1 to n do begin read( x); Suma:=suma+ x; writeln( suma; 6:2) end
31. Sentenciafor- downto. for variable:= expr-ord1downto expr-ord2do sentencia El tipo de dato de la variable y de las expresiones debe ser el mismo, ordinal, no real. 2) Si valor de expr-ord1 >= valor de expr-ord2, la sentencia se ejecuta (valor de expr-ord1 - valor de expr-ord2 + 1) veces. 3) La sentencia no se ejecuta si valor de expr-ord1 < valor de expr-ord2.
32. 4) La secuencia de ejecución es la siguiente: se evalúa expr-ord1 se evalúa expr-ord2 variable := valor de expr-ord1 si variable >= expr-ord2 entonces sentencia variable := pred(variable) si variable >= expr-ord2 entonces sentencia Hasta que variable asuma un valor mayor que expr-ord2. 5) Los valores de los datos que participan en las expresiones deben estar inicial izados con anterioridad a la ejecución de la repetición.
33. 6)La variable de control de la repetición no tiene un valor definido fuera de la misma. 7) Si bien Pascal lo permite, no se debe modificar el valor de la variable de control durante la ejecución del mismo. 8) La modificación del valor de los datos que intervienen en las expresiones, durante la ejecución de las sentencias de la repetición, no modifican el valor de aquellas. 9) Cuando la repetición requiere más de una sentencia a repetir, ésta se indica mendiante una sentencia compuesta.
35. Factorial factorial :=1; for i := n downto1 do factorial := factorial * i; factorial:= 1; for i := 1 to n do factorial:= factorial*i;
36. Sentencia while Todos los datos que intervienen en la expresión lógica deben estar inicializados antes de la ejecución del while para que se pueda evaluar la condición. 2) Al menos uno de los datos que intervienen en la expresión lógica debe ser adecuadamente modificado durante la ejecución de la sentencia, para evitar ciclos infinitos.
37. 3) la secuencia de ejecución es la siguiente: -si el valor de la expresión booleana es verdadero entonces sentencia si no se continúa con la sentencia siguiente al while. Este condicional se repite hasta que el valor de la expresión lógica sea falso. si el valor de la expresión booleana es falso en la primera evaluación, la sentencia no se ejecuta y se continúa con la sentencia siguiente al while.
38. Ejemplo: read(a); n:= 10; while (a< n) do begin a:= sqr(a); writeln(a); read(a); end
39. Sentencia repeat - until 1 ) todos los datos que intervienen en la expresión booleana deben estar inicializados antes de que se evalúe la expresión booleana. 2) al menos uno de los datos que intervienen en la expresión booleana debe ser adecuadamente modificado durante la ejecución de la sentencia.
40. 3) La sentencia interior al repeat se ejecuta al menos una vez, sin considerar el valor de la expresión booleana. 4) La secuencia de ejecución es la siguiente: -se ejecuta la sentencia -si la condición es falsa entonces sentencia sino finaliza el repeat -Se evalúa el condicional hasta que la expresión sea verdadera en cuyo caso se continúa con la ejecución del programa.
41. Ejemplo: Indique las diferencias que aprecia en los segmentos de programas anteriores read(x); while x<>0 do begin p:= sqr(x); write(x,p); read(x) end repeat read(x); p:= sqr(x); write(x,p); until x = 0
42. Sentencias repetitivas anidadas repeat read(x); if (trunc(x) = x) then for i := x to sqr(x) do begin suma:=suma+ i; writeln ( x, suma); end; {for} until (trunc(x) = x) read (x); while (trunc(x) = x) do begin fori := x tosqr(x) do begin suma:= suma +i; writeln ( x, suma); end; {for} read(x) end {while}
43.
44. Snyder, Ilana –compiladora (2004): Alfabetismos digitales. Comunicación,innovación y educación en la era electrónica. Málaga: Aljibe Stallman, Richard M. (2004) Software libre para una sociedad libre. Introducción de Lawrence Lessig.
45. Curso Nivelación 2011 - Universidad Nacional de Chilecito Lic. en Sistemas - Ing. En Sistemas – Tecnicatura Univ. Desarrollo Aplic. WEB.