Unidades en PASCAL (Units)

Documentos relacionados
1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura:

Departamento de Informática Universidad de Valladolid Campus de Segovia LABORATORIO: INTRODUCCIÓN A LAS UNIDADES EN TURBO PASCAL

Manual de turbo pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

Excepciones. Prof. Laura Lanzarini

Definición de Tipo de Dato Abstracto (TDA)

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL.

UNIDAD 3: TIPOS ABSTRACTOS DE DATOS

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN

Módulo 8: Primitivas en Pascal

FUNDAMENTOS DE OBJECT PASCAL

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

INTRODUCCION PASCAL-FC

Pilas. Uso (I) * 2 = * + Transformación de expresiones aritméticas de notación infija a postfija. Ejemplo:

Java para no Programadores

Calidad del Software. Ejercicios Tema 4 Conceptos de pruebas

Repetición Condicional

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Donde Condicion es una expresión booleana, es decir, que puede tomar el valor verdadero (true) o falso (false).

4. Pilas ESTRUCTURAS DE DATOS 1

Estructuras de Control. Secuencia y Selección

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA

Java para no Programadores

Turbo Pascal 7, FPS y sus herramientas de análisis de errores.

Listas, Pilas y Colas

ESTRATEGIAS PARA LA RESOLUCIÓN DE PROBLEMAS CON MATRICES N-DIMENSIONALES

Estructuras de Control. Secuencia y Selección

Ordinales, Enumerados y Conjuntos

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

Universidad Central Del Este U.C.E. Facultad de Ciencias Administrativas y de Sistemas Escuela de Ingeniería de Sistemas

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

SUBRANGO ENUMERADOS CONJUNTOS

MATRICES. nombrematriz = array[puntoinicialfila..puntofinalfila, puntoinicialcolumna..puntofinalcolumna ] of tipodato

TEMA 4: Programación estructurada

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Trabajo Práctico 6 Funciones, Procedimientos y División de Problemas

ALGORITMOS Y ESTRUCTURAS DE DATOS EJERCICIOS RESUELTOS SEGUNDA PARTE

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Repaso Visual Basic Interfaz Gráfica

1. Suma de dos números introducidos por teclado. 2. Comparación de dos números introducidos por teclado. program suma; uses crt;

Estudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es:

Datos en Turbo Pascal

Registros. Programación 1. InCo - FING. Programación 1 Registros InCo - FING 1 / 20

Programación modular en Pascal

Primer Parcial. Programación 1 Instituto de Computación Año 2017

LISTAS DOBLES y multiples

6. Estructuras básicas de control 1. Pseudocódigo

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Motivación. 4: Control de flujo Condicionales. Motivación. Condicionales

UTN FRRo Algoritmos y Estructuras de Datos Bibliotecas Un ejemplo : Gestión de Pantalla, Retardo y Sonido

Introducción al Lenguaje de Programación Ada

324 MR Versión 1 1 Prueba Integral 1/6 Lapso UNIVERSIDAD NACIONAL ABIERTA Semana 12 VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA

FUNDAMENTOS DE INFORMÁTICA

Asumiremos que se dispone de procedimientos para leer y escribir caracteres. Se desarrollan algunas funciones primitivas que nos serán útiles.

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Procedimientos, Funciones y Recursividad

Análisis semántico I Traducción dirigida por la sintaxis

Declaración de Procedimientos

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Introducción a la Programación Ingenieria en Informática Junio 2008

TAD. TAD Conjunto Análisis del TAD Conjunto Posibles implemantaciones A.E.D.

ALGORITMOS Y ESTRUCTURAS DE DATOS PRIMERA PARTE

FUNCIONES EN C QUÉ SIGNIFICA VOID? QUÉ ES EL TIPO DE RETORNO? PARA QUÉ SIRVE RETURN? MÓDULOS (CU00547F)

Fundamentos de Programación

Guías técnicas Grupo Danysoft: Creación de Componentes en Delphi (parte II)

UTN FRLP Ing. en Sistemas de Información Algoritmos y Estructura de Datos Trabajos Prácticos Curso 2010

Sentencias DO-WHILE EN C++

324 MR Versión 1 Primera Integral 1/5 Lapso 2009/2. ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Primera Integral FECHA DE APLICACIÓN: 24/10/09;

Parte I: Programación en Ada

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

GUIA EXAMEN FINAL/EXTRAORDINARIO

FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 2ª Convocatoria. 21 de junio de 2001

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Tablas de Dispersión (Hashing Tables)

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Práctica 1. TAD número racional

Concepto de Recursión. Características de algoritmos recursivos. Ejemplos

Guías técnicas Grupo Danysoft: Creación de Componentes en Delphi (parte I)

Resolución de Problemas y Algoritmos

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.

Estructura de datos Tema 6: Tablas de dispersión (hashing)

Lenguajes de Programación. Capítulo 4. Expresiones.

Trabajo Práctico 8 División de Problemas en Subproblemas Uso de Procedimientos y Funciones

Compiladores: Análisis Semántico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inès Alvarez V.

BUCLES EN LENGUAJE C (ESTRUCTURA DE REPETICIÓN) CONDICIÓN, CONTADOR. EJEMPLOS. (CU00533F)

>> Programación Visual (GUI)

Transcripción:

Programación II - Prof. Alejandro H. Gonzalez - 1 Unidades en PASCAL (Units) Aquellos que quieran probar los ejercicios de TAD en Pc pueden utilizar las UNITS de Pascal. En este documento se explican los conceptos básicos para la creación de Units en Pascal. Este tema esta relacionado a la construcción de TAD s (Tipos Abstractos de Datos) La forma que tiene Pascal de trabajar con tipos de datos abstractos es a través de la generación de Units. Definición Las unidades son grupos de funciones o procedimientos compilados que pueden ser llamados y utilizados desde cualquier programa sin necesidad de escribirlos de nuevo. Estructura de las Unidades Las unidades no son ejecutables por si solas, dependen del programa que las llama para poder realizar su función. Las unidades están compuestas por cuatro partes: 1) DECLARACIÓN 2) INTERFAZ 3) IMPLEMENTACION 4) INICIALIZACION 1) DECLARACION Es obligatoria, provee el nombre de la unidad que se creará. Su sintaxis es: UNIT nombre de la unidad; 2) INTERFAZ En esta sección se encuentran las declaraciones de todos los elementos que pueden ser utilizados por el programa que llama a la unidad, por ejemplo otras unidades, variables, constantes, type, procedimientos y funciones. En esta sección no se incluyen los códigos de los procedimientos ni funciones, únicamente su declaración. Observar que el TIPO (type exportado) se define en la interfaz a diferencia de la sintaxis (en pseudocódigo) de los TADS visto en la teoría y la práctica.

Programación II - Prof. Alejandro H. Gonzalez - 2 Su sintaxis es: INTERFACE { declaración de funciones, procedimientos, otras unidades, variables constantes y el type } 3) IMPLEMENTACION La sección de implementación es exclusiva para la unidad que se está creando, contiene declaraciones de etiquetas, variables, constantes, así como el contenido de los procedimientos y funciones declarados en la sección de interfaz. Su sintaxis es: IMPLEMENTATION {implementaciones y declaraciones privadas} 4) INICIALIZACION Esta sección se utiliza para inicializar los valores de las variables, no es indispensable y por lo mismo no siempre se incluye. Su sintaxis es parecida a la del cuerpo principal de un programa, se inicia con BEGIN y termina con un END. Observar que esto no es obligatorio y se puede obviar. BEGIN {inicialización de variables } END Uniendo todo lo visto hasta ahora UNIT nombre de la unidad; INTERFACE declaración de funciones, procedimientos, constantes y type. otras unidades, variables, IMPLEMENTATION implementaciones y declaraciones privadas BEGIN inicialización de variables END.

Programación II - Prof. Alejandro H. Gonzalez - 3 Compilación y uso de las Unidades Para que una unidad este lista para su utilización en programas posteriores, es necesario que se realice la compilación de la misma, en forma separada al programa. Una vez compilada la unidad se podrá incorporar al programa agregando la sentencia USES. Esta palabra reservada debe ir inmediatamente después de la sentencia PROGRAM del programa en el que desea utilizar la unidad. PROGRAM nombre del programa USES nombre de la unidad {sentencias del programa} end. Ejemplo: Unit para construir una Cola de Enteros Unit Cola_enteros; Interface {declaración de tipos y variables } Type Pun_Nodo_Cola = ^Tipo_Nodo_Cola; Tipo_Nodo_Cola = record Elem: Integer; Siguiente:Pun_Nodo_Cola; Tipo_Cola =record Primero,Ultimo:Pun_Nodo_Cola; CantElementos: integer;

{declaración de procesos y procedimiento} Procedure q_create(var C:Tipo_Cola); {se crea una cola vacia} Function q_empty(c:tipo_cola):boolean; {consulta si la cola esta vacia} Procedure q_push(var C:Tipo_Cola; E:Integer); {Agregar un elemento al final de la cola } Programación II - Prof. Alejandro H. Gonzalez - 4 Procedure q_pop(var C:Tipo_Cola; var E:Integer); {Sacar un elemento del comienzo de la cola, la cola debe tener elementos} Procedure q_top(c:tipo_cola; var E:Integer); {Devuelve el elemento del comienzo de la cola sin sacarlo; la cola debe tener elementos } Procedure q_bottom(c:tipo_cola; var E:Integer; {Devuelve el elemento del final de la cola sin sacarlo; la cola debe tener elementos } Function q_length(c:tipo_cola) : integer; {Devuelve la cantidad de elementos que hay en la cola} Procedure asignar(c1:tipo_cola; var c2:tipo_cola); {recibe C1 y devuelve en C2 los mimos elementos que tiene c1 } Implementation {Implementación de funciones y procedimientos} Procedure q_create(var C:Tipo_Cola); C.Primero:=nil; C.Ultimo:=nil; C.CantElementos:=0; Function q_empty(c:tipo_cola):boolean; q_empty:=(c.primero=nil);

Programación II - Prof. Alejandro H. Gonzalez - 5 Procedure q_push(var C:Tipo_Cola; E:Integer); var paux:pun_nodo_cola; new(paux); paux^.elem:=e; paux^.siguiente:=nil; if (C.Ultimo=nil) then C.Primero:=pAux else C.Ultimo^.Siguiente:=pAux; C.Ultimo:=pAux; C.CantElementos:= C.CantElementos +1; Procedure q_pop(var C:Tipo_Cola; var E:Integer); var paux:pun_nodo_cola; paux:=c.primero; C.Primero:=pAux^.siguiente; E:=pAux^.Elem; if (C.Primero=nil) then C.Ultimo:=nil; dispose(paux); C.CantElementos:= C.CantElementos -1; Procedure q_top(c:tipo_cola; var E:Integer); E:=C.Primero^.Elem; Procedure q_bottom(c:tipo_cola; var E:Integer); E:=C.Ultimo^.Elem; Function q_length(c:tipo_cola) : integer;

Programación II - Prof. Alejandro H. Gonzalez - 6 q_length:=c.cantelementos; Procedure asignar(c1:tipo_cola; var c2:tipo_cola); c2.primero:= c1.primero; c2.ultimo:= c1.ultimo; c2.cantelementos:= c1.cantelementos; End. Ejemplo del uso de la cola de enteros Enunciado: Leer números enteros de teclado y generar una cola de enteros. Una vez generada la cola mostrar cuántos elementos se cargaron y cuantos elementos iguales a 5 se ingresaron. {Observar en la solución que en ningún momento se trabaja con la estructura interna de la cola, esa definición es desconocida para el programa usuario de la UNIT (SERIA INCORRECTO ACCEDER DESDE AFUERA DE LA UNIT A LA ESTRUCTURA QUE LA MISMA TIENE). Solo puedo utilizar el tipo exportado y las funciones y procedimientos definidos en la interfaz. También observar el grado de modularización logrado} PROGRAM ejemplocola; Uses Cola_enteros; Var colae: Tipo_Cola; Procedure CargarC(var colae: Tipo_Cola); Var num: integer; Writeln ( Ingrese un número entero ó 0 (cero) para terminar: ); Readln(num); While (num <> 0) do q_push(colae,num); Writeln ( Ingrese un número entero ó 0 (cero) para terminar: ); Readln(num);

Programación II - Prof. Alejandro H. Gonzalez - 7 Function Cuantos5 (colae: Tipo_Cola): integer; Var nume: integer; tot:=0; While not q_empty(colae) do q_pop (colae,nume); if nume = 5 then tot:=tot+1; Cuantos5:= tot; {del programa principal} Q_create(colaE); CargarC(colaE); Writeln( La cantidad de elementos ingresados es de: ; q_length(colae)); Writeln ( La cantidad de numeros iguales a 5 de la cola es de: Cuantos5(colaE)); End.