Programación en Pascal Sesión 3 y 4 Universidad Técnica Federico Santa Maria
Contenido Estructura de un Programa pascal Declaraciones Tipos de datos simples Sentencias básicas de Entrada / Salida.
Estructura de un programa
Ejemplo simple:
Programa pascal (diagrama conway) ; ; ;
Estructura de un programa La estructura de un programa en pascal consta de un encabezamiento y un bloque. En el encabezamiento se especifica nombre del programa, y los nombres de los ficheros externos que se usan para entrada de datos y salida de resltados.
Estructura de un programa En el bloque esta dividido en dos partes: Parte de declaraciones: donde se declaran todos los datos y las rutinas. Sección ejecutable: que contiene todas las sentencias ejecutables. Sintacticamente un programa empieza con Program y termina con ( . )
Reglas sintácticas El punto y coma ( ; ) y el punto ( . ) son delimitadores en Pascal. ( ; ): separa sentencias consecutivas, también se usa para terminar encabezamiento de un programa y las declaraciones de los datos. ( . ): indica final del programa.
Reglas sintácticas BEGIN y END son delimitadores no son sentencias, con ellas se indica el inicio y el final de la sección ejecutable. Comentarios: { } o (* *)
Identificadores En las mayorías de los programas es necesario manejar datos de entradas y salidas, los cuales necesitan almacenarse en memoria principal del computador en el tiempo de ejecución. Para poder manipular dichos datos se necesita tener acceso a la memoria, donde están almacenados y se logra mediante nombre de datos o IDENTIFICADORES.
Reglas para formar identificadores Pueden estar compuestos de caracteres alfabéticos, numéricos, y el carácter de subrayado ( _ ). Deben comenzar con un carácter alfabético o carácter de subrayado. Pueden ser de cualquier longitud (solo los 63 caracteres son significativos) No se hace distinción entre mayúsculas y minúsculas. No se permite el uso de identificadores reservados en los nombres de variables, constantes, programas o subprogramas.
Ejemplos de identificadores Identificadores validos: Nombre Cadena Edad_maxima x_y_z Etiqueta1 Identificadores no validos Num&dias (carácter & no valido) X nombre (contiene un carácter blanco) begin (es una palabra reservada) eje@s (carácter @ no valido)
Ámbito y alcance de los identificadores
Descripción: Una variable declarada en chequear solo es conocida allí. Una variable declarada en altas es conocida altas, leer, chequear, mostrar, ingresar, pero no es conocida en las demás. Una variable declarada en actualizar es conocida en todos los procedimientos.
Encabezamiento: program Identificador ( identificador , ) ;
Declaraciones: Sección declaraciones: Todas las entidades definidas por el usuario que se usan en un programa debe ser declarados en esta sección, indicando un identificador y lo que representa: Etiquetas ( Label ) Constantes ( const ) Tipos (Type ) Variables ( var ) Procedimientos ( procedure ) Funciones ( function )
Declaraciones No es necesario que un programa contenga declaraciones en toda sus categorías anteriores. Ejemplos: Type estaciones =(primavera, verano, otoño, invierno); Var letra : char; Const pi = 3.1416; Label 100,200,300;
expresiones Es una combinación de variables, constantes y literales de tipos compatibles entre sí, estos elementos están combinados mediante operadores válidos; la expresión más simple está formada por un único elemento (variable, literal o constante) sin ningún operador. Es posible tener expresiones aritméticas (combinando expresiones de tipo entero y/o real), expresiones lógicas (combinando expresiones de tipo lógico) y expresiones de tipo carácter.
Tipos de Datos simples No ordinales Tipos de datos simples Tipos datos definidos por el usuario subintervalo predefinidos enumerados booleano carácter entero real ordinales No
Tipos de Datos En Pascal hay cuatro tipos categóricos de datos. 1) Los ordinales: Integer (números enteros) Char (caracteres) Boolean (valores lógicos TRUE y FALSE) Enumerativos Subcampo
Tipos de Datos 2) Reales: Real (números reales) 3) Estructurados: Array (tablas) Record (registros) File (secuencias) Set (conjuntos) 4) Punteros
Tipos ordinales Los valores de un tipo ordinal tienen una correspondencia biunívoca con el conjunto de enteros positivos. Tales valores están ordenados de manera que a cada uno le corresponde un valor ordinal único que indica su posición en la lista de todos los valores posibles de ese tipo.
Programa 01: funciones ordinales Program demo2; Uses crt; Var a,b:integer; Begin clrscr; writeln(‘ingrese un valor para obtener ordinal, sucesor y predecesor’); readln(a); writeln; b:= ord(a); writeln(‘el ordinal: ’,b); b:= succ(a); writeln(‘El sucesor: ’,b); b:= pred(a); writeln(‘El predecesor: ’,b); Readln; End.
ordinales -integer
ejemplos: ordinales - integer Valores enteros: 32 100 54
Operadores aritméticos
Ejemplos: ordinales - char Sus valores posibles son cada uno de los elementos de los caracteres ASCII, ocupan 8 bits en memoria. Se especifica una constante de tipo char: ‘A’ ‘?’ ’Z’ ‘0’ ‘.’
Ejemplo { programa lee el primer carácter e imprime 10 veces} Program demo2; Uses crt; Var A: char; Begin clrscr; writeln(‘ingrese una palabra’); readln(A); for i:= 1 to 10 do writeln(A); readln; End.
Tipos booleanos
Tipos enumerativos Es un conjunto de valores constantes ordenados representados por identificadores. Sintaxis: ( { identificador }, …………..) Ejemplo: (primavera, verano, otoño, invierno ) Estos tipos quedan ordenados según su posición en la lista.
Tipos subcampo Especifica una parte limitada de otro tipo ordinal, para ser usado como un tipo distinto. El programador lo define. Sintaxis: lim_inf .. lim_sup lim_inf: expresión constante que establece limite inferior del subcampo o subrango. lim_sup: expresión constante que establece limite superior del subcampo o subrango.
ejemplos ‘0’..’9’ ‘A’..’M’ 1..31 enero .. marzo 1 .. 366
Ejemplos: ordinales - reales (en pascal) Var total : real y los valores correctos serian: 3.14 97.45 0.0 7. .12
Tipos reales
Precedencia de operadores El orden de aplicación de precedencia puede alterarse mediante el paréntesis Resumen de prioridades:
Asignación
Literales
Operadores relacionales Una relación consiste en dos operandos separados por un operador relacional. Si la relación es satisfecha, el resultado tendrá un valor booleano True; si la relación no es satisfecha el resultado tendra un valor booleano False.
Operadores relacionales Ejemplos
Funciones aritméticas
Ejemplos de definiciones: Const long = 35; Type cadena = string[ long ]; Var nombre: cadena;
Tipos estructurados Predefinidos string set array record file Tipos de datos estructurales Predefinidos string Definidos por el usuario set array record file
Tipos estructurados Los tipos estructurados pueden contener mas de un componente a la vez, a diferencia de los tipos ordinales y reales. Cada componente puede ser de tipo ordinal, real, estructurado o puntero. Se puede tener acceso a cada uno de los componentes y procesar la estructura completa.
Tipos estructurados Las estructuras fundamentales son cuatro: ARRAY (tabla) RECORD (registro) SET (conjunto) FILE (secuencia)
Array Es una estructura homogénea que esta constituido por componentes del mismo tipo, llamado tipo base. Sintaxis: Type T = ARRAY [ I ] of To Definición de un tipo array T especifica un tipo base To y un tipo indice I.
Ejemplos Tipos Type Vector = ARRAY[1..5] OF INTEGER; Vec_1 = ARRAY[1..5] OF REAL; Linea = ARRAY[1..80] OF CHAR; nombres = array[1..30] OF CHAR; Var v1 : Vector ; a : Vec_1; L : Linea; name : nombres;
Ejemplos Tipos {programa que inicializa un vector de 0..5 elementos} Program demo7; Uses crt; Type vector = array[1..5] of integer; Var a : vector; i : integer; Begin clrscr; for i:=0 to 5 do begin a[ i ] := 0; writeln(‘Vector ’, ‘ a[ ’, i,’ ] ’,’ ’, a[ i ] ); end; Readln; End.
Ejemplo: 1 ENUNCIADO: Calcule los coeficientes de una recta trabajando con coordenadas homogéneas de la forma: L= [ A B 1 ]T Debe leer dos puntos en coordenadas homogéneas ( x, y, 1) Y reportar los coeficientes A B C => AX + BY + C ( Implemente el producto cruz para el calculo) Construya el seudocódigo. Construya el programa en Pascal. { en clase } Verifique este ejemplo: Lee M1 = [ 2 6 1 ] Lee M2 = [ -1 6 1 ] Debe resultar: [ 0 -3 18 ]
Ejercicios Se darán en clases …!
Referencias: