PROGRAMACIÓN ESTRUCTURADA Asignatura Clave: COM002 Número de Créditos: 9 Teórico: 4 Práctico: 5 INSTRUCCIONES PARA OPERACIÓN ACADÉMICA: El Sumario representa un reto, los Contenidos son los ejes temáticos, los Activos una orientación inicial para resolverlo y la síntesis concluyente, como posibilidad de integración conceptual corresponderá a lo factible de un punto de vista temático amplio. La visión global de los asuntos resueltos como Titular Académico, te ofrecerá oportunidades de discusión que se enriquecerán en la medida que intensificas las lecturas, asistes a tu comunidad de estudio, te sirves de los asesores y analizas la ciberinformación disponible posicionándote de los escenarios informativos adecuados. Los períodos de evaluación son herramientas de aprendizaje. Mantén informado a tu Tutor de tus avances académicos y estado de ánimo. Selecciona tus horarios de asesoría. Se recomienda al Titular Académico (estudiante) que al iniciar su actividad de dilucidación, lea cuidadosamente todo el texto guión de las asignaturas. COMPETENCIA: El conocimiento de las etapas necesarias para el diseño de programas estructurados en los lenguajes de programación en general. La utilización del entorno de programación del lenguaje Turbo Pascal en particular para el desarrollo de sistemas de cómputo a partir de necesidades específicas de resolución de problemas cotidianos. SUMARIO: Percepción del por qué del desarrollo del lenguaje Turbo Pascal y sus antecedentes. La unión de todos sus componentes para estructurarlos y ordenarlos para la solución. Reconocer todo el proceso, dándole un seguimiento a través de la inclusión de sus variables y constantes, para que, en su manipulación de condiciones y ciclos, lograr la solución deseada. LENGUAJE DE PROGRAMACIÓN CONTENIDOS: Unidad I Unidad II Unidad III Unidad IV Unidad V Unidad VI Unidad VII Unidad VIII Unidad IX Introducción Básica a Algoritmos. Introducción a Pascal. Elementos básicos de turbo Pascal. Estructura de un programa. Instrucciones de entrada / salida. Condiciones. Ciclos. Funciones y procedimientos. Archivos. A C T I V O S UNIDAD I Introducción Básica a Algoritmos. I.1.I.2.I.3.I.4.I.5.I.6.I.7.- Conceptos básicos. Lenguajes algoritmicos. Metodología para la solución de problemas por computadora. Entidades básicas para el desarrollo de algoritmos. Expresiones. Técnicas básicas de diseño. Técnicas de representación de algoritmos. UNIDAD II Introducción a Pascal. II.8.- Lenguaje de programación pascal. II.9.- Características del lenguaje pascal. UNIDAD III Elementos Básicos de Turbo Pascal III.10.- Identificadores. III.11.- Palabras reservadas. III.12.- Tipos de datos. UNIDAD IV Estructura de un Programa IV.13.- Cabecera. IV.14.- Declaraciones. IV.15.- Programa principal. UNIDAD V Instrucciones de Entrada / Salida V.16.- Instrucciones de salida. V.17.- Instrucciones de entrada. UNIDAD VI Condiciones VI. 18.- IF…THEN ó IF…THEN…ELSE. VI. 19.- IF anidados. VI. 20.- CASE…OF. UNIDAD VII Ciclos VII.21.VII.22.VII.23.VII.24.- FOR. WHILE. REPEAT-UNTIL. Ciclos anidados. UNIDAD VIII Funciones y Procedimientos VIII.25.- Funciones y Procedimientos. UNIDAD IX Archivos IX.26.- Archivos directos. Actividad 1: Ejercicios de práctica. Actividad 2: Elaboración de proyecto. • • • • • • • ESCENARIOS INFORMATIVOS: Disposición en Internet. Curso de Pascal: http://members.es.tripod.de/ncabanes/cupas0.htm Tutorial de Turbo Pascal: http://members.xoom.com/tutoriales/ Aprendizaje de Pascal: http://www.algonet.se/~khaan/tutor/index.html http://www.borland.com/pascal/pascalnet.html Puntualidad en Intranet. Fuentes Directas e Indirectas. BIBLIOGRAFÍA: 1992 Joyanes Aguilar, Luis. Programación en Turbo Pascal. Editorial Mc Graw Hill, México, 822 pp. 1992 0’brien, Stephen. Turbo Pascal 6, Manual de Referencia. Editorial Mc Graw Hill, México, 667 pp. LENGUAJE DE PROGRAMACIÓN PRINCIPIA TEMÁTICA: I.1.- CONCEPTOS BÁSICOS. Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A la transmisión de mensajes se le conoce comúnmente como comunicación. La comunicación es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes: z Los mensajes deben correr en un sentido a la vez. z Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicación y Mensaje. Lenguajes de Programación: Es un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación. Los lenguajes de programación se clasifican en: – Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria mas pequeña el bit (dígito binario 0 o 1). – Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas. – Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC, pascal, cobol, frotran, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensión del programa. La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. 9 Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema especifico. 9 Un Algoritmo es una secuencia de pasos, bien definidos, bien precisos y con un fin, para reolver un problema determinado. I.2.- LENGUAJES ALGORITMICOS. Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. Tipos de Lenguajes Algoritmicos: Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo). I.3.- METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS POR COMPUTADORA. Definición del Problema: Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. Análisis del Problema: Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir: 9 Los datos de entrada. 9 Cual es la información que se desea producir (salida) 9 Los métodos y fórmulas que se necesitan para procesar los datos. 9 Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. Diseño del Algoritmo Las características de un buen algoritmo son: 9 Debe tener un punto particular de inicio. 9 Debe ser definido, no debe permitir dobles interpretaciones. 9 Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema. 9 Debe ser finito en tamaño y tiempo de ejecución. Codificación La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel. Prueba y Depuración Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración. La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se debe considerar con el mismo interés y entusiasmo. Resulta conveniente observar los siguientes principios al realizar una depuración, ya que de este trabajo depende el éxito de nuestra solución. Documentación Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentación se divide en tres partes: 9 Documentación Interna 9 Documentación Externa 9 Manual del Usuario Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer mas claro el entendimiento de un proceso. Documentación Externa: Se define en un documento escrito los siguientes puntos: Descripción del Problema, Nombre del Autor , Algoritmo (diagrama de flujo o pseudocodigo), Diccionario de Datos, Código Fuente (programa), etc. Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el usuario obtenga el resultado deseado. Mantenimiento Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado. I.4.- ENTIDADES BÁSICAS PARA EL DESARROLLO DE ALGORITMOS. Tipos De Datos: Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable. Simples: Numéricos Alfanuméricos (string) Lógicos Estructurados Arreglos Registros Apuntadores (Def. por (Vectores, el usuario): matrices) Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes. Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos). Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas. Ejemplo: “Hola Mundo” “1999” I.5.- EXPRESIONES. Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo: a+(b + 3)/c Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas. Una expresión consta de Operadores y Operandos. Según sea el tipo de datos que manipulan, se clasifican las expresiones en: -Aritméticas -Relaciónales -Lógicas Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores. Los Tipos de Operadores que existen son tres: los Relaciónales, los Aritméticos y por último los Lógicos. Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes). Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. * Operando * * (constante o variable) (Operador) Operando Valor I.6.- TÉCNICAS BÁSICAS DE DISEÑO. Bottom Up El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computarizarse con forme vayan apareciendo, su análisis como sistema y su codificación, o bien, la adquisición de paquetes de software para satisfacer el problema inmediato. Cuando la programación se realiza internamente y haciendo un enfoque ascendente, es difícil llegar a integrar los subsistemas al grado tal de que el desempeño global, sea fluido. Los problemas de integración entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programación alcanza la fecha limite para la integración total del sistema. En esta fecha, ya se cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema como una entidad global, adolece de ciertas limitaciones por haber tomado un enfoque ascendente. Uno de ellos es la duplicación de esfuerzos para accesar el software y mas aun al introducir los datos. Otro es, que se introducen al sistema muchos datos carentes de valor. Un tercero y tal vez el mas serio inconveniente del enfoque ascendente, es que los objetivos globales de la organización no fueron considerados y en consecuencia no se satisfacen. I.7.- TÉCNICAS DE REPRESENTACIÓN DE ALGORITMOS Diagrama de Flujo Pseuducódigo Diagrama de Flujo: Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados. Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI). Pseudocódigo: Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a realizar. Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo Ocupa menos espacio en una hoja de papel Permite representar en forma fácil operaciones repetitivas complejas Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de programación. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación. II.8.- LENGUAJE DE PROGRAMACIÓN PASCAL. El lenguaje de programación PASCAL es un lenguaje de alto nivel y propósito general, es decir, es usado para un grán número de aplicaciones diversas. Fue desarrollado por el Profesor Suizo Niklaus Wirth para enseñar la programación de modo disciplinado y sistemático. Una versión preliminar de este lenguaje apareció en 1968, y el primer compilador totalmente completo apareció a finales de 1970, (en 1971, según algunos historiadores informáticos) desde entonces muchos compiladores hán sido construidos. II.9.- CARACTERÍSTICAS DEL LENGUAJE PASCAL. El lenguaje pascal estándar presenta una serie de características que los hacen idóneo como primero o segundo lenguaje de programación, desde el punto de vista del aprendizaje y como lenguaje de propósito general para la resolución de aplicaciones de todo tipo: de gestión, científicas, de ingeniería, etc. A continuación se destacan las características más sobresalientes del lenguaje Pascal: Lenguaje excelente para aprendizaje de programación. Lenguaje de propósito general. Lenguaje procedural (imperativo, orientado a órdenes). Lenguaje estructurado (soporta las estructuras básicas while, for y repeat). Lenguaje recursivo (soporta recursividad, que es la propiedad de llamarse a sí mismo, una función o procedimiento). Gran riqueza de tipos, con tipos de datos simples y estructurados, así como datos definidos por el usuario. Producción por los compiladores de programas ejecutables rápidos y eficientes. Facilidad para realizar la programación modular, debido a la posibilidad de diseñar subprogramas o módulos del tipo procedimiento y función. En 1983, la firma Borland International lanzó con gran éxito al mercado un compilador de Pascal llamado Turbo Pascal (versión 1.0), cuya razón fundamental de su éxito no solo residió en su bajo costo, sino que ofrecía al mismo tiempo un entorno de programación (editor/compilador) y numerosas utilidades inexistentes en las versiones anteriores de Pascal tales como gráficos, colores, gestionador de archivo, etc. Posteriormente, Borland lanzó nuevas versiones con mejoras significativas. En 1989, sacó Turbo Pascal versión 5.5 que sigue las nuevas filosofías de la programación: programación orientada a objetos, que es a decir de los expertos la programación del futuro. Turbo Pascal es sin lugar a dudas una herramienta de programación potente, fácil de utilizar e idónea para el aprendizaje de profesionales y aficionados a la programación. III.10.- IDENTIFICADORES. Los identificadores son palabras que representan constantes, variables, tipos de datos, procedimientos, funciones y algunos otros datos. Existen dos tipos de identificadores: los predefinidos de Turbo Pascal y los definidos por el programador. Algunos de los identificadores predefinidos son: integer, real, byte, sin, etc. Los identificadores definidos por el programador son los elementos del lenguaje tales como variables, procedimientos, funciones, etc. Un identificador es una secuencia de 1 a 127 caracteres, que inicia con una letra, no tienen espacios ni símbolos: &, !, *, etc., y no es alguna palabra reservada. Para Turbo Pascal no existen diferencias entre mayúsculas y minúsculas, así que a un identificador denominado "valor", se le puede referir como "VALOR" o "Valor". Todo identificador en Pascal debe ser definido previamente a su utilización. III.11.- PALABRAS RESERVADAS. Para poder programar en cualquier lenguaje, es necesario conocer los códigos mediante los cuales podamos expresar las tareas que queremos realizar. Turbo Pascal, como lenguaje de programación, posee su propio código con palabras de uso exclusivo para ciertas funciones, a estas palabras les llamaremos palabras reservadas de Turbo Pascal. Las palabras reservadas de Turbo Pascal (versiones 6.0 o mayores) son: Pascal Estándar y Turbo Pascal 6.0 AND ARRAY BEGIN CASE CONST DIV DO DOWNTO ELSE END FILE FOR FORWARD FUNCTION GOTO IF IN LABEL MOD NIL NOT OF OR PACKED PROCEDURE PROGRAM RECORD REPEAT SET THEN TO TYPE UNTIL VAR WHILE WITH Turbo Pascal ABSOLUTE IMPLEMENTATION PRIVATE VIRTUAL INLINE STRING ASM INTERFACE SHR CONSTRUCTOR INTERRUPT USES DESTRUCTOR OBJECT UNIT EXTERNAL SHL XOR Estas palabras no pueden ser usadas como identificadores (siguiente tópico), ya que cada una de ellas tiene una función definida en Turbo Pascal. III.12.- TIPOS DE DATOS El manejo de la información en Turbo Pascal se realiza mediante diferentes clases de datos. En este apartado se tratarán los principales tipos: Integer Números enteros sin parte decimal. Char Bolean Real String Caracteres del código ASCII Pueden contener los valores de falso o verdadero Números que pueden incluir una parte decimal En una secuencia de caracteres que se trata como un solo dato. Un programa debe ser capaz de manejar diferentes tipos de datos, como pueden ser: números enteros, reales, caracteres, cadenas de caracteres, etc. Para lograr el manejo de toda esta información, Turbo Pascal provee diferentes tipos de datos para los identificadores que se utilizarán. Algunos de los más importantes se citan enseguida: Enteros.- En esta categoría Turbo Pascal cuenta con 5 tipos diferentes, cada uno abarca un rango específico de valores y utilizan una diferente cantidad de memoria dependiendo de ese rango. Naturalmente el trabajar con rangos menores nos ofrece una mayor velocidad y menor espacio en memoria, pero si se utilizan enteros largos se cuenta con mayor precisión. Los tipos de enteros en Turbo Pascal son: Tipo Integer Word ShortInt Byte LongInt Rango de valores que acepta -32,768 a 32,767 0 a 65535 -128 a 127 0 a 255 -2,147,483,648 a 2,147,483,648 Al utilizar los tipos enteros es posible representar en el programa un número en formato hexadecimal, para hacer esto solo se le antepone el símbolo "$" al valor hexadecimal, al momento de visualizar dicho valor, o utilizarlo en alguna operación será como decimal. Por ejemplo: Cantidad:= $10; El valor que se guarda en "Cantidad" es 16. Reales.- Los números reales son aquellos que cuentan con una parte decimal. En Turbo Pascal contamos con varios tipos de datos reales, pero no se pueden utilizar, más que el tipo real, en máquinas que no cuenten con un coprocesador matemático. Los tipos de datos reales son: Tipo Real Single Double Extended Comp Rango de valores que acepta 2.9E-39 a 1.7E38 1.5E-45 a 3.4E38 5.0E-324 a 1.7E308 1.9E-4851 a 1.1E4932 -9.2E18 a 9.2E18 Los números reales deben llevar por fuerza al menos un dígito de cada del punto decimal así sea éste un cero. Como ejemplo, el número 5 debe representarse como 5.0, el .5 como 0.5, etc. En este tipo de datos se utiliza la notación científica, que es igual a la de las calculadoras, el dígito que se encuentra a continuación de la E representa la potencia a la que se elevará el número 10 para multiplicarlo por lado la cantidad a la izquierda de dicha E: 3.0E5 = 3.0 * 10^5 = 3.0 * 100000 = 300000 1.5E-4 = 1.5 * 10^-4 = 1.5 * 0.0001 = 0.00015 Caracter.Los caracteres son cada uno de los símbolos que forman el código ASCII, el tipo estándar de Pascal para estos datos es Char. Los caracteres se especifican entre apóstrofes: ’a’</TD 'B'</TD '2' '#' El tipo Char es un tipo ordinal de Pascal, esto quiere decir que sus elementos válidos siguen una secuencia ordenada de valores individuales. La secuencia de caracteres para este tipo corresponden al número del código ASCII, del 0 al 255. Es posible accesar a cada uno de los caracteres utilizando un signo # antes de su valor correspondiente, por ejemplo, la letra A puede ser representada como #65, el retorno de carro, o enter, se representa como #13, y así cualquier carácter. Cadena de Las cadenas son secuencias de caracteres o arreglos que tienen una longitud máxima de 255 caracteres. Se definen entre apóstrofes. El tipo Pascal para las cadenas es String. PROGRAM Cadena; VAR Nombre: String; BEGIN Nombre:= 'Ernesto Chávez'; Writeln (Nombre); END. IV.13.- CABECERA. que El lenguaje utilizado en Turbo Pascal es estructurado, lo que significa cada programa requiere una forma específica de escritura para que sea entendido por el compilador. Todo programa cuenta con algunas partes o módulos los cuales son: Cabecera Declaraciones Programa La cabecera del programa únicamente lleva el nombre del programa. En la sección de declaraciones se le indica al compilador todos los identificadores y unidades que se utilizarán durante la ejecución del programa. En la sección del programa se escribe el código de instrucciones que se llevarán a cabo. Cabecera PROGRAM Nombre del programa; USES Nombre de unidad1, Nombre de unidad2, .., Nombre de unidadN; LABEL Declaraciones de etiquetas; CONST Declaraciones de constantes; Declaraciones TYPE Declaraciones de tipos definidos por el usuario; VAR Declaraciones de variables; PROCEDURE, FUNCTION Declaraciones de procedimientos y funciones; BEGIN Programa principal ........ Cuerpo Sentencias del programa principal ........ END. CABECERA. Sentencia PROGRAM La sentencia PROGRAM es la declaración del nombre del programa. Consta de tres partes: la palabra reservada PROGRAM, a continuación un identificador utilizado como el nombre del programa y al final un punto y coma ";". Por ejemplo: PROGRAM suma_de_dos_números ; Esta declaración es siempre la primer línea en cualquier programa de Turbo Pascal. IV.14 DECLARACIONES. Declaración de unidades Las unidades son módulos independientes del programa que, aunque no son ejecutables por si mismos, pueden ser utilizados por el programa principal sin necesidad de reescribir el código que contienen. Para la utilización de estos "subprogramas" es necesaria su declaración. La palabra reservada USES cumple el propósito de declarar las unidades en el formato siguiente: USES crt, dos; Esta línea declara y habilita para su uso a la unidad crt y a la unidad dos Cada unidad que se declara deberá estar separada de la siguiente por una coma. Al final de todas las unidades declaradas se deberá colocar un punto y coma ";". Declaración de constantes y variables para declarar las constantes se utiliza la palabra reservada CONST seguida de un identificador al que se le dará un valor determinado, un signo de igual "=", el valor que recibirá el identificador y al final un punto y coma ";". Ejemplo: CONST pi = 3.1415926; De esta forma el identificador pi recibirá el valor de 3.1415926 y no será posible cambiarlo en el transcurso del programa. Es posible declarar varias constantes sucesivamente, puede ser una por renglón o varias en un solo renglón. Cuando se hace esto, la palabra CONST solo se pone una sola vez como cabecera y a continuación todas las constantes por definir. Ejemplo: CONST PI = 3.1415926; Nombre = 'Juan Gutiérrez'; Unidad = 1; Otra forma de escribir lo mismo es así: CONST PI = 3.1415926; Nombre = 'Juan Gutiérrez'; Unidad = 1; en Pero por cuestiones de legibilidad es preferible la primera opción. La declaración de variables se lleva a cabo de la misma forma, solo que lugar de la palabra CONS utilizamos la palabra VAR, y en lugar de "= valor;", utilizamos : Tipo, sustituyendo "tipo" por alguna clase válida de datos en Turbo Pascal. Ejemplo: VAR Num_entero : Integer; Nombre : String; IV.15 SECCION EJECUTABLE O PROGRAMA PRINCIPAL se con se o Programa principal después de haber realizado todas las declaraciones puede iniciar con el programa principal. (Es posible, antes del programa, declarar las funciones y procedimientos, pero eso se analizará posteriormente). El programa principal inicia con la palabra reservada BEGIN y termina la palabra END., esta última con un punto al final. Cada línea de código, enunciado, sentencia o instrucción completa que escriba deberá terminar con un punto y coma ";". Solo se omitirá el punto y coma cuando se utiliza la palabra reservada ELSE. Aunque puede también omitirse si la siguiente expresión es END UNTIL. Ya conociendo la estructura es posible escribir un primer programa: PROGRAM Primera_Prueba; VAR Entero: Integer; CONST Mensaje = 'Introduce un valor entero: '; Respuesta = 'El valor es: '; BEGIN Write(Mensaje); {Escribe en pantalla el mensaje definido como constante} ReadLn(Entero); {Lee un valor de teclado y lo almacena en la variable Entero} WriteLn(Respuesta, Entero); {Escribe en pantalla el contenido de Respuesta y el valor que se ingresó de teclado} END. las Como podrá apreciarse, no es importante el orden en el que se declaran variables y constantes (aplicable solo al Turbo Pascal), es decir, pueden declararse primero las variables y luego las constantes y viceversa: PROGRAM Primera_Prueba; CONST Mensaje = 'Introduce un valor entero: '; Respuesta = 'El valor es: '; VAR Entero : Integer; BEGIN Write(Mensaje); {Escribe en pantalla el mensaje definido como constante} ReadLn(Entero); {Lee un valor de teclado y lo almacena en la variable Entero} WriteLn(Respuesta, Entero); {Escribe en pantalla el contenido de Respuesta y el valor que se ingresó de teclado} END. V.16 INSTRUCIONES DE SALIDA. los Salida de datos a la pantalla Las instrucciones que permiten mostrar datos en la pantalla de la computadora son: Write y WriteLn. Aunque ya se hizo uso de ellas en pequeños programas anteriores de ejemplo, aquí se describirán a fondo. La sintaxis de los procedimientos es la siguiente: Write (indentificadores); WriteLn (indentificadores); Donde los identificadores son aquellos que contienen la información que se desea mandar a la pantalla. Es posible utilizar varios de ellos por cada instrucción Write o WriteLn, únicamente se separan unos de otros por comas ",". Ejemplo: Write (Nombre, ApellidoP, ApellidoM); Esta línea de código desplegará consecutivamente los contenidos de los identificadores Nombre, ApellidoP y ApellidoM. En caso de que la variable Nombre almacenara el valor 'Rodrigo ', la variable ApellidoP 'González ' y la variable ApellidoM 'García', el resultado en pantalla sería: Rodrigo González García Podemos obtener el mismo resultado si utilizamos la siguiente estructura: Write (Nombre); Write (ApellidoP); Write (ApellidoM); la Si en lugar de utilizar la instrucción Write hacemos uso de WriteLn con misma sintaxis del ejemplo anterior: WriteLn (Nombre); WriteLn (ApellidoP); WriteLn (ApellidoM); lo que obtendríamos sería: Rodrigo González García De este ejemplo es posible concluir que la diferencia entre las instrucciones Write y WriteLn es que esta última imprime el contenido de los identificadores y cambia el cursor al siguiente renglón de la pantalla, y la primera solo escribe el contenido y deja el cursor al final del dato escrito. V.17 INSTRUCCIONES DE ENTRADA. Entrada de datos desde teclado Las instrucciones estándar de Turbo Pascal para obtener datos desde el teclado son Read y ReadLn. La sintaxis de estas instrucciones es muy parecida a la de Write y WriteLn: Read (Identificador); El identificador puede ser cualquier variable definida previamente, NO puede ser una constante. Puede ser también un conjunto de variables, separadas entre comas, en este caso se guardara el primer valor dado antes del [Enter] en el primer identificador proporcionado, luego el segundo y así sucesivamente hasta el último identificador. La diferencia en el uso de la instrucción Read con respecto a ReadLn es que en la primera, si se le dan mas datos de los que se introducirán se guardan en un buffer y se usarán en la siguiente instrucción Read o ReadLn del programa, en cambio ReadLn ignora todo dato posterior a los que estén definidos en la instrucción. En caso de que se le indique a Read o ReadLn que lea un tipo específico de valor, y se le proporcione otro diferente se generará un error y se detendrá la ejecución del programa. Asignaciones La asignación nos permite situar un valor que es el resultado de la evaluación de una expresión. El símbolo utilizado para la asignación es:= (dos puntos igual) y el formato es el siguiente: variable := expresión; donde variable es el identificador que ha sido declarado en la sección de declaración de variables, expresión puede ser una constante o variable simple, o bien una combinación de constantes, variables y operadores aritméticos. Un ejemplo sería: Nombre:='Fernando A. Hinojosa L.'; Suma := 10 + 30; Total := Suma * (n-1); Contador := Contador + 1; VI.18 IF…THEN ó IF…THEN…ELSE Para crear un buen programa es necesario dotarlo con capacidad de decisión con base en las variables o eventos definidos por el programador, para que el programa sea aplicable en un entorno más generalizado y no solo para un problema específico. Para lograr este control se cuenta con las estructuras de control que, en Turbo Pascal, son las siguientes: Sentencia sencilla IF...THEN y sentencia doble IF...THEN...ELSE Sentencia sencilla: La forma más sencilla de bifurcación condicional es la sentencia IF...THEN, que hace que un programa ejecute un bloque de código si es cierta una condición Sentencia doble IF...THEN...ELSE Expresión cierto ¿cierto o falso? Ejecutar sentencia falso Continuar con el programa Esta expresión es utilizada para ejecutar una sentencia en el caso que una condición establecida sea verdadera, de lo contrario se podrá ejecutar una sentencia distinta. Su sintaxis es: IF condición THEN instrucción ELSE otro Donde condición es la expresión que se evaluará, en caso de ser verdadera se ejecutará la sentencia dada como instrucción, en caso de que la condición sea falsa se ejecutara la sentencia dada como otro. Ejemplo: Expresión booleana FALSO CIERTO ¿cierto o falso? Ejecutar sentencia sentencia del IF...THEN ELSE Continuar con el programa PROGRAM IF_THEN_ELSE; VAR Contador: Integer; BEGIN Ejecutar del FOR contador: = 1 to 50 DO BEGIN IF contador > 10 THEN WriteLn(Contador) ELSE WriteLn('*'); END; END. En este pequeño programa la variable Contador se incrementará desde 1 hasta 50, la sentencia condicional IF verificará si es verdad que Contador es mayor a 10, de ser así se escribirá en pantalla el valor de la variable, de lo contrario se escribirá en la pantalla un carácter "*". Como el contador inicia desde 1, tenemos que se imprimirán 10 asteriscos antes del primer número, que será el 11, valor que si cumple la condición "Contador > 10" (la hace verdadera). La sección ELSE con su correspondiente sentencia son opcionales y pueden omitirse en caso de no necesitarse. VI.19 IF…ANIDADAS Es posible utilizar en una expresión del tipo IF..THEN..ELSE una sentencia compuesta como la sentencia a ejecutarse en caso de que la condición sea verdadera, así como en la sentencia posterior a un ELSE, de esta forma podemos utilizar otra sentencia IF..THEN..ELSE dentro de la anterior, para de esta forma evaluar varias condiciones una dentro de otra. Ejemplo: IF Número > 5 THEN BEGIN IF Número < 10 THEN Opción := Número; IF Número < 30 THEN Opcion2 := Número; END; VI.20 CASE…OF Esta forma de control se utiliza cuando se va a evaluar una expresión que puede contener varios datos diferentes y en cada dato deberá realizar una acción especial. Por ejemplo, si se crea un menú con diferentes opciones se realizará un determinado proceso para cada acción, aunque la selección por parte del usuario se haga desde el mismo lugar. El siguiente programa ilustra el uso de la forma CASE, el programa preguntará un número al usuario y lo clasificará de acuerdo a su valor. PROGRAM Case; VAR Numero: Integer; BEGIN WriteLn('Introduzca un número entero del 1 al 5: '); ReadLn(Numero); CASE Numero OF 1 : WriteLn('El número fue 1'); 2 : WriteLn('El número fue 2'); 3 : WriteLn('El número fue 3'); 4 : WriteLn('El número fue 4'); 5 : WriteLn('El número fue 5'); ELSE WriteLn('El número no estaba en el rango indicado'); END. VII.21 FOR El ciclo FOR repite una sentencia un determinado número de veces que se indica al momento de llamar al ciclo. Lo que hace FOR es que incrementa una variable en uno desde un valor inicial hasta un valor final ejecutando en cada incremento la sentencia que se quiere repetir. Su sintaxis es: FOR identificador := inicio TO fin DO instrucción; Donde el identificador es la variable que se incrementará, inicio es el primer valor que tendrá dicha variable y fin es el valor hasta el cual se incrementará la misma; instrucción es la sentencia (sencilla o compuesta) que se ejecutará en cada incremento de la variable. El siguiente ejemplo escribe los números del 1 al 50 en pantalla. La variable utilizada es "Numero". PROGRAM Ciclo_FOR; VAR Numero : Integer; BEGIN FOR Numero := 1 to 50 DO WriteLn(Numero); END. Una de las limitaciones de los ciclos FOR es que una vez iniciado el ciclo se ejecutará el número de veces predefinido sin posibilidad de agregar o eliminar ciclos. Es posible hacer que un ciclo cuente hacia atrás, es decir que la variable en lugar de incrementarse se decremente. Para ésto cambiamos la palabra TO por DOWNTO, y colocamos el valor mayor a la izquierda y el menor a la derecha. Ejemplo: PROGRAM Ciclo_FOR_2; VAR Número: Integer; BEGIN FOR Número := 50 DOWNTO 1 DO WriteLn (Número); END. VII.22 WHILE Los ciclos WHILE ofrecen la ventaja de que la ejecución se realiza mientras se cumpla una condición, por lo tanto es posible controlar el número de repeticiones una vez iniciado el ciclo. Su sintaxis es: WHILE condición DO instrucción Donde condición es la condición que se evaluará, mientras ésta sea verdadera se ejecutará la instrucción, que es una sentencia simple o compuesta. Un programa que escriba los números del 1 al 50, utilizando el ciclo WHILE se vería como sigue: PROGRAM Ciclo_WHILE; VAR Número: Integer; BEGIN Número := 1; WHILE Número <= 50 DO BEGIN WriteLn (Número); Número := Número +1; END; END. Al final del programa la variable Número guardará el valor 51, que fue el valor que no cumplió con la condición establecida en el ciclo WHILE. VII.23 REPEAT UNTIL Este tipo de ciclos es muy parecido a los ciclos WHILE, la diferencia entre ambos es que en WHILE la condición se evalúa al principio del ciclo, en cambio en REPEAT-UNTIL se evalúa al final, lo que significa que en un ciclo REPEAT-UNTIL la sentencia se ejecutará por lo menos una vez, cosa que puede no ocurrir en el ciclo WHILE. Ejemplo: PROGRAM Ciclo_RepeatUntil; VAR Número : Integer; BEGIN Número := 1; REPEAT WriteLn (Número); Número := Número + 1; UNTIL Número = 50; END. VII.24 CICLOS ANIDADOS Puede constar de un número ilimitado de sentencias de cualquier ciclo. Observándose que cada ciclo debe iniciarse y cerrarse sin llegar a cruzar ningún otro ciclo: PROGRAM CASCADA; USES CRT; VAR NOMBRE:STRING[30]; X,J,Y,I:INTEGER; BEGIN TEXTBACKGROUND(BROWN); CLRSCR; GOTOXY(7,9);WRITE('DAME EL TEXTO:'); READLN(NOMBRE); FOR I:=1 TO LENGTH(NOMBRE) DO BEGIN GOTOXY(20+I,9);WRITE(' '); FOR Y:= 10 TO 18 DO BEGIN GOTOXY(20+I+Y-9,Y); WRITE(NOMBRE[I]); DELAY(4000); GOTOXY(20+I+Y-9,Y); WRITE(' '); END; GOTOXY(20+I+Y-9,19);WRITE(NOMBRE[I]); END; DELAY(15000); END. VIII.25 PROCEDIMIENTOS Definición de procedimiento Un procedimiento es un grupo de sentencias que realizan una tarea concreta. En lugar de reescribir el código completo de esa tarea cada vez que se necesite, únicamente se hace una referencia al procedimiento. Por ejemplo, es muy común que se quiera visualizar un título determinado varias veces en un programa, para evitar teclear ese título en nuestro programa fuente todas las veces que sea necesario creamos un procedimiento llamado "Titulo" que se encargará de escribirlo. Una vez creado un procedimiento actuará como una instrucción más de Turbo Pascal, y para ejecutarlo únicamente teclearemos el nombre de dicho procedimiento. Para poder ejecutar un procedimiento es necesario declararlo en el programa que se este utilizando. Creación de los procedimientos El primer paso para crear un procedimiento es saber que queremos que haga. Una vez definiendo este punto declaramos el procedimiento después de haber declarado variables y constantes, antes del cuerpo del programa principal. La palabra reservada para su declaración es Procedure seguida del nombre del procedimiento. Vamos a crear un procedimiento encargado de escribir en pantalla el enunciado "Programa de Turbo Pascal": PROCEDURE Titulo; BEGIN WriteLn ('Programa de Turbo Pascal'); END; Uso de los procedimientos Una vez declarado el procedimiento es posible utilizarlo como una instrucción de Turbo Pascal. Al uso de un procedimiento se le conoce como llamada al procedimiento. El siguiente programa ilustra el uso o la llamada al procedimiento creado anteriormente: PROGRAM Procedimientos; PROCEDURE Titulo; BEGIN WriteLn ('Programa de Turbo Pascal'); END; BEGIN WriteLn ('Programa ejemplo del uso de procedimientos'); Titulo; {Llama al procedimiento} WriteLn; Titulo; {Vuelve a llamar al procedimiento} END; IX.26 ARCHIVOS DIRECTOS Un archivo contiene una secuencia de componentes accesibles individualmente todos pertenecientes al mismo tipo de datos. Puesto que las posiciones de los registros individuales son directamente accesibles se usa el término de acceso aleatorio para describir el uso de dichos archivos. Un archivo puede por sí mismo ser una variable, en la declaración se usa las palabras reservada FILE OF en el siguiente formato: Var TYPE FILE VAR : FILE OF ComponentType. El commando Seek es la llave para accesar el archivo en un registro particular. El programa puede cargar el registro en memoria ó escribirlo en cierta posición. Assign es un procedimiento que establece una asociación entre variable de archivo y el nombre del archivo en disco. Reset abre un nuevo archivo ó un existente en disco cuando no se asocia con el procedimiento Rewrite para generarlo. la existe Las operaciones de lectura de cierto registro o de escritura se hacen con las típicas instrucciones Read, Write. Ya que se han efectuado las operaciones del archivo se debe cerrar con Close. File Size regresa el número de registros almacenados en el archivo. { I - } { I + } directivas de compilador para validar errores en la apertura de archivos el I – O RESULT función que regresa un valor 0 cuando se abre con éxito archivo, de lo contrario la variable a la que se asigna toma un valor negativo. Program empleados; uses Crt; Type Datos=record cve:byte; nom:string [30]; pago:longint; end; Var Empleado:File of Datos; em:Datos; Op, I:Byte; Len:Integer; Procedure Abrir; var A:Byte; Begin Assign(Empleado,'A:empleado.dat'); {$ I-} Reset(empleado); {$ I+} A:=IORESULT; If A<> 0 then Begin Writeln('Archivo no existe'); Rewrite (empleado); End; End; Actividad 1: Ejercicios de Práctica. EJERCICIOS Que deberán entregarse impresos y en diskette 1.- Un año es bisiesto si es divisible por 4, pero no por 100. Una excepción son los años divisibles por 400, que son todos bisiestos. Escriban un programa que lea un año, suministrado por teclado, y determine y escriba si ese año es o no bisiesto. PROGRAM BISIESTO; uses crt,dos; var A:integer; op:char; Begin Clrscr; Textcolor(27); Repeat Gotoxy(20,5); WriteLn('Programa para conocer si un año es bisiesto'); Until KeyPressed; Textcolor(10); Repeat Clrscr; Write('dame un Año: ');readln(A); If ((A mod 4=0) And (A mod 100<>0) Or (A mod 400=0)) Then Write(A, ' es un año bisiesto') else Write(A, ' No es un año bisiesto'); WriteLn; Writeln('Deseas conocer otro Año Si/No ...');Readln(op);op:=Upcase(op); Until op='N'; End. 2.- La serie Fibonacci: 1,1,2,3,,5,8,13,21,… Se define suponiendo que los dos primeros términos tienen el valor de 1 y que cada término subsiguiente está dado por la suma de los términos procedentes: 1+1=2 1+2=3 2+3=5 3+5=8 Etcétera. Diseñe el programa en Pascal. 3.- Elabore un programa en Pascal que nos diga si el número que le damos es número primo. Los números primos son enteros mayores que 1 sin divisores enteros positivos, excepto el 1 y ellos mismos. Una observación interesante es que todos los números primos son impares excepto el 2. Otra observación es que sólo necesitamos comprobar la divisibilidad por números superiores a la raíz cuadrada del número. 4.- Escribir un programa para calcular las comisiones sobre ventas de un agente de el cual basa sus comisiones en: Si la venta es menor a 1,000 000 obtiene el 5% Si la venta > = 1,000 000 y < = 3,000 000 obtiene el 8% Si la venta es mayor 3,000 000 obtiene el 10% 5.- Ejecutar el siguiente programa y hacer las modificaciones pertinentes. Aquí se usan los comandos para la escritura de archivos de datos. Program emplea; uses crt; Type Datos=Record cve:Byte; nom:String[30]; pago:LongInt; end; Var Empleado:File of Datos; em:Datos; op,I:Byte; Len:Integer; {***************} Procedure Abrir; Var A:Byte; Begin Assign(Empleado,'C:empleado.Dat'); {$I-} Reset(Empleado); {$I+} A:=IOResult; If A<>0 Then begin WriteLn('Archivo no Existe'); ReWrite(Empleado); end; End; {***************} Procedure Cerrar; Begin Close(empleado); End; {***************} Procedure Altas; Var cla:Byte; B: Boolean; Begin Repeat ClrScr; GotoXY(7,2);WriteLn('*** Altas al Archivo de empleados'); GotoXY(7,12);WriteLn(' Para salir la clave es 0'); Len:=Filesize(empleado); GotoXY(10,4);Write('Clave:');Readln(Cla); If Cla<>0 Then begin B:=False; For I:=1 To Len Do begin Seek(empleado,I-1); Read(empleado, em); If em.cve=cla Then begin GotoXY(10,5);WriteLn('Nombre: ',em.nom); GotoXY(10,6);WriteLn('Pago: ',em.pago); GotoXY(10,8);WriteLn('Registro ya existe'); Delay(50000); B:=True; I:=Len; end; end; If Not B then begin With em Do begin GotoXY(10,5);Write('Nombre');Readln(nom); GotoXY(10,6);Write('Pago');Readln(pago); cve:=cla; end; Write(empleado,em); end; end; Until cla=0; End; {***************} Procedure Bajas; var cla:Byte; B:Boolean; Begin Repeat ClrScr; GotoXY(7,2);Write('Bajas'); Len:=FileSize(empleado); GotoXY(10,4);Write('Clave');Readln(cla); If cla<>0 Then begin B:=False; For I:=1 To Len Do begin Seek(empleado, I-1); Read(empleado, em); If em.cve=cla Then begin GotoXY(10,5);Write('Nombre',em.nom); GotoXY(10,6);Write('Pago',em.pago); GotoXY(10,8);Write('Registro no existe'); Delay(500); B:=True; I:=Len; em.cve:=0; em.nom:=''; em.pago:=0; Seek(empleado, I-1); Write(empleado,em); end; end; If Not B Then begin GotoXY(15,8);WriteLn('Registro No Existe'); Delay(3000); end; end; If Not B Then begin GotoXY(15,8);Write('Registro No existe'); Delay(3000); end; Until cla=0; End; {***************} Procedure Consultas; begin Clrscr; GotoXY(18,15);Write('falta de tu parte terminar este procedimiento'); Readln; end; {***************} Procedure Reportes; begin Clrscr; GotoXY(18,15);Write('Aqui es la seccion de mandar a imprimir, opcional'); Readln; end; {***************} Begin Textcolor(7); TextBackGround(9); ClrScr; Window(10,5,70,19); TextBackground(3); ClrScr; Window(15,6,65,17); Textbackground(5); Abrir; Repeat ClrScr; GotoXY(14,2);Write('MENU DE OPCIONES'); GotoXY(18,4);Write('1] ALTAS'); GotoXY(18,5);Write('2] BAJAS'); GotoXY(18,6);Write('3] CONSULTAS'); GotoXY(18,7);Write('4] REPORTES'); GotoXY(18,8);Write('5] SALIR'); GotoXY(18,9);Write('OPCION [ ] '); GotoXY(27,9);Readln(op); Case op Of 1:ALTAS; 2:BAJAS; 3:CONSULTAS; 4:REPORTES; 5:CERRAR; Else begin Writeln('OPCION NO VALIDA'); Delay(3000); end; End; Until op=5 End. 6.- Ejecutar el siguiente programa que está basado en el modo gráfico de Pascal. {en Pascal podemos programar en modo Texto y modo gráfico En el curso anterior vimos únicamente el modo texto. Este programa ilustra el modo gráfico, donde se utilizan algunos comandos para dibujar figuras, se recomienda ejecutar este programa para su visualización, aclarándose que no es sujeto de evaluación el tema de modo gráfico} program dibujo; {En este programa se utiliza el modo Grafico} uses crt,graph; { Uso de la Unidad GRAPH } var CODIGOERROR, MODOGRAF, MODO, DRVGRAF,x,y: INTEGER; (***********************************************) Procedure A; Begin x:=0;y:=0; For x:=425 Downto 50 Do begin linea(x,50,x-10,50); {trazar linea} Delay(200); end; End; (**************************************************) Procedure B; Begin x:=0;y:=0; ARC(45,75,90,180,25); {trazar un arco} End; (**************************************************) Procedure C; Begin x:=0;y:=0; For y:=75 to 400 Do begin line(20,y,20,y+10); Delay(150); end; End; (**************************************************) Procedure D; Begin x:=0;y:=0; ARC(45,410,180,270,25); End; (**************************************************) Procedure E; Begin x:=0;y:=0; For x:=55 to 450 Do begin line(x,435,x-10,435); Delay(100); end; End; (**************************************************) Procedure F; Begin x:=0;y:=0; ARC(446,399,270,120,35); End; (**************************************************) Procedure G; Begin x:=0;y:=0; SetColor(11); SetLineStyle(1,1,1); For x:=430 Downto 300 Do begin line(x,370,x-10,370); Delay(5); end; End; (**************************************************) Procedure H; Begin x:=0;y:=50; SetColor(11); SetLineStyle(1,1,1); {Estilo de linea, grosor,} ARC(245,291,30,300,90); End; (**************************************************) Procedure I; Begin x:=0;y:=50; SetColor(11); SetLineStyle(1,1,1); ARC(342,245,180,45,20); End; (**************************************************) Procedure J; Begin x:=0;y:=50; SetColor(11); SetLineStyle(1,1,1); ARC(390,230,280,180,35); End; (**************************************************) Procedure K; Begin x:=0;y:=50; SetColor(11); SetLineStyle(1,1,1); ARC(400,290,330,100,25); End; (**************************************************) Procedure L; Begin x:=0;y:=50; SetColor(11); SetLineStyle(1,1,1); ARC(425,325,370,100,20); End; (***********************************************) Procedure M; Begin x:=0;y:=0; SetColor(11); SetLineStyle(1,1,3); For x:=446 Downto 250 Do begin line(x,321,x-10,321); Delay(5); end; End; (**************************************************) Procedure Texto; Begin SetTextStyle(0,0,5); {Estilo de letra} outtextXY(250,100,'Mouse'); {Salida de texto} End; (**************************************************) BEGIN clrscr; DRVGRAF := DETECT; {detectar el controlador de graficos} INITGRAPH(DRVGRAF,MODOGRAF,'C:\pascal'); {iniciar en modo grafico} CODIGOERROR := GRAPHRESULT; IF CODIGOERROR <> GROK THEN { GROK es igual a Cero, ya definido} BEGIN WRITELN('ERROR DE GRAFICOS.',GRAPHERRORMSG(CODIGOERROR)); HALT; END; SetLineStyle(1,1,3); SetColor(10); A;B;C;D;E;F;G;H;I;J;K;L;M; Texto; readln; CloseGraph; {cerrar el modo grafico} end. Actividad 2: Elaboración de Proyecto. Elaboración de un Proyecto: Que deberá entregarse al final del Trimestre Impreso y en Diskette. PROYECTO 1.Elaborar un Sistema de cómputo en contabilidad de una Empresa del ramo ferretero. Donde se involucren: Clientes, empleados, marcas, productos, ventas, facturas. PROYECTO 2.Visitar las oficinas de la Comisión Federal de Electricidad en Los Mochis, Sin. para observar el mecanismo de pago de consumo de electricidad en los dispositivos de CFEMático de pago automático instalados dentro y fuera de dichas oficinas. Elaborar de acuerdo con las posibilidades de Pascal algunas de las opciones que presenta dicho sistema de pago. Nota.- Se escogerá un proyecto por titular académico en base a la terminación de su matrícula (Sí es Non el proyecto 1, Par escogerá el proyecto 2). INTEGRACIÓN CONCEPTUAL: (El titular académico conocerá las respuestas) Adquisición de los conocimientos para realizar un análisis y un diseño correcto de programas que nos ayuden a resolver un problema utilizando el lenguaje de programación TURBO PASCAL para posteriormente estar en posición de adecuarlos a los lenguajes más actuales. ---------------------------------------------------------------------------------------------------------REPORTES CRÍTICOS O SUGERENTES A: Dr. Ernesto Guerra García, Coordinador General Educativo. (Correo electrónico: eguerra@uaim.edu.mx ) Benito Juárez No. 39, Mochicahui, El Fuerte, Sinaloa, México. C.P. 81890, Tel. 01 (698) 8 92 00 42. ---------------------------------------------------------------------------------------------------------- UNIVERSIDAD AUTÓNOMA INDÍGENA DE MÉXICO Mochicahui, El Fuerte, Sinaloa Juárez 39, C.P. 81890. Tel y fax: (698)8 92 00 42 y 8 92 00 23 Correo electrónico:_ uaim@uaim.edu.mx Página Web: http//www.uaim.edu.mx