introduccion a la programacion

Download Introduccion a la programacion

If you can't read please download the document

Upload: radicaled

Post on 20-Jun-2015

907 views

Category:

Documents


11 download

TRANSCRIPT

  • 1. UNIVERSIDAD NACIONAL AUTNOMA DE MXICOFACULTAD DE CONTADURA Y ADMINISTRACIN DIVISIN DEL SISTEMA UNIVERSIDAD ABIERTA TUTORIALPARA LA ASIGNATURA INTRODUCCIN A LAPROGRAMACIN2003

2. DIRECTORC. P. C. y Mtro. Arturo Daz AlonsoSECRETARIO GENERALL. A. E. Flix Patio Gmez JEFE DE LA DIVISIN-SUA L. A. y Mtra. Gabriela Montero Montiel COORDINACIN DE OPERACIN ACADMICA L. A. Ramn Arcos GonzlezCOORDINACIN DE PROYECTOS EDUCATIVOSL. E. Arturo Morales CastroCOORDINACIN DE MATERIAL DIDCTICO L. A. Francisco Hernndez MendozaCOORDINACIN DE ADMINISTRACIN ESCOLARL. C. Virginia Hidalgo Vaca COORDINACIN ADMINISTRATIVAL. C. Danelia C. Us Nava 3. TUTORIALPARA LA ASIGNATURAINTRODUCCIN A LA PROGRAMACIN 2003 4. ColaboradoresDiseo y coordinacin generalL. A. Francisco Hernndez MendozaCoordinacin operativaL. A. Francisco Hernndez MendozaAsesora pedaggicaCorreccin de estilo Jos Alfredo Escobar MelladoEdicin L. C. Aline Gmez Angel 5. PRLOGOEn una labor editorial ms de la Facultad de Contadura y Administracin, los Tutoriales del Sistema Universidad Abierta, representan un esfuerzo dirigidoprincipalmente a ayudar a los estudiantes de este Sistema a que avancen en ellogro de sus objetivos de aprendizaje.Al poner estos Tutoriales a disposicin tanto de alumnos como de asesores,esperamos que les sirvan como punto de referencia; a los asesores para quedispongan de materiales que les permitan orientar de mejor manera, y con mayorsencillez, a sus estudiantes y a stos para que dispongan de elementos que lespermitan organizar su programa de trabajo, para que le facilite comprender culesson los objetivos que se persiguen en cada materia y para que se sirvan de losapoyos educativos que contienen.Por lo anterior y despus de haberlos utilizado en un periodo experimental paraprobar su utilidad y para evaluarlos en un ambiente real, los ponemos ahora adisposicin de nuestra comunidad, esperando que cumplan con sus propsitos.ATENTAMENTE Cd. Universitaria D.F., mayo de 2003.C. P. C. Y MAESTRO ARTURO DAZ ALONSO, DIRECTOR. 6. Prohibida la reproduccin total o parcial de esta obra, por cualquier medio, sinautorizacin escrita del editor.Primera edicin mayo de 2003DR 2001 Universidad Nacional Autnoma de MxicoFacultad de Contadura y AdministracinFondo editorial FCACircuito Exterior de Cd. Universitaria, Mxico D.F., 04510Delegacin CoyoacnImpreso y hecho en MxicoISBN 7. ContenidoIntroduccin................................................................................................................. 7Caractersticas de la asignatura ................................................................................ 11Objetivo general de la asignatura.............................................................................. 11Temario oficial (68 horas sugeridas) ......................................................................... 11Temario detallado...................................................................................................... 11Unidad 1. Plataforma terico-conceptual .................................................................. 15Unidad 2. Datos, constantes, variables, tipos, expresiones y asignaciones.............. 27Unidad 3. Control de flujo en el lenguaje de programacin pascal............................ 36Unidad 4. Procedimientos y funciones ...................................................................... 48Unidad 5. Definicin de tipos..................................................................................... 70Unidad 6. Manejo dinmico de memoria e introduccin a la implantacin deestructuras de datos.................................................................................................. 86Unidad 7. Archivos .................................................................................................. 105Unidad 8. Compilacin separada y diseo de programas ....................................... 121Bibliografa .............................................................................................................. 142Apndice. Elaboracin de un mapa conceptual ...................................................... 143 8. 7 IntroduccinEl principal propsito de este tutorial es orientar a los estudiantesque cursan sus estudios en el sistema abierto, que se caracteriza,entre otras cosas, porque ellos son los principales responsablesde su propio aprendizaje. Como en este sistema cada alumno debe estudiar por sucuenta, en los tiempos y lugares que ms le convengan, se vuelvenecesaria un material que le ayude a lograr los objetivos deaprendizaje y que le facilite el acceso a los materiales didcticos(libros, publicaciones, audiovisuales, etctera) que requiere. Porestas razones, se han estructurado estos tutoriales bsicamenteen cuatro grandes partes: 1. Informacin general de la asignatura 2. Panorama de la asignatura 3. Desarrollo de cada una de las unidades 4. Bibliografa 9. 8A su vez, estas cuatro partes contienen las siguientes secciones:La informacin general de la asignatura que incluye: portada, caractersticas oficiales de la materia, ndice de contenido del tutorial y los nombres de las personas que han participado en la elaboracin del material.El panorama de la asignatura contiene el objetivo general del curso, el temario oficial (que incluye solamente el ttulo de cada unidad), y el temario detallado de todas las unidadesPor su parte, el desarrollo de cada unidad que est estructurado en los siguientes apartados:1. Temario detallado de la unidad que es, simplemente, laparte del temario detallado global que corresponde a cadaunidad.2. Desarrollo de cada uno de los puntos de cada unidad.3. Bibliografa general sugerida. Como no se pretende imponerninguna bibliografa a los profesores, es importante observarque se trata de una sugerencia, ya que cada profesor 10. 9 est en entera libertad de sugerir a sus alumnos la bibliografa que le parezca ms conveniente. Esperamos que este tutorial cumpla con su cometido y, entodo caso, deseamos invitar a los lectores, tanto profesores comoalumnos, a que nos hagan llegar todo comentario o sugerenciaque permita mejorarla.AtentamenteL. A. y Mtra. Gabriela Montero MontielJefe de la Divisin del Sistema Universidad AbiertaMayo de 2003. 11. 11Caractersticas de la asignaturaIntroduccin a la programacinClave: 1137Plan: 98Crditos: 8Licenciatura: Informtica Semestre: 1rea: Informtica Horas de asesora: 2Requisitos: Ninguno Horas por semana: 4Tipo de asignatura: Obligatoria (x) Optativa( )Objetivo general de la asignaturaEl alumno implantar algoritmos y estructuras de datos fundamentales en unlenguaje de programacin imperativa.Temario oficial (68 horas sugeridas)1. Plataforma terico conceptual (6 horas)2. Datos constantes, variables, tipos, expresiones y asignaciones (6 horas)3. Control de flujo en el lenguaje de programacin Pascal (12 horas)4. Procedimientos y funciones (14 horas)5. Definicin de tipos (8 horas)6. Manejo dinmico de memoria e introduccin a la implantacin de estructuras dedatos (10 horas)7. Archivos (6 horas)8. Compilacin separada y diseo de programas (6 horas)Temario detallado1. Plataforma terico-conceptual1.1 Antecedentes histricos del lenguaje de programacin Pascal1.2 Conceptos de programacin estructurada1.3 Conceptos de compilador, compilacin y ejecucin1.4 Estructura de un programa en el lenguaje de programacin Pascal 12. 12 1.5 Definicin formal de un lenguaje de programacin mediante diagramas. sintcticos de tren y ecuaciones de Backus-Naur2. Datos, constantes, variables, tipos, expresiones y asignaciones 2.1 Identificadores 2.2 Constantes 2.3 Qu es un tipo? 2.4 Tipos nativos del lenguaje de programacin Pascal 2.5 Operadores aritmticos 2.6 Expresiones aritmticas 2.7 Operadores lgicos 2.8 Expresiones booleanas3. Control de flujo en el lenguaje de programacin Pascal 3.1 Condicionales 3.2 Iteraciones 3.3 Salto incondicional4. Procedimientos y funciones 4.1 Concepto de procedimiento 4.2 Concepto de funcin en programacin 4.2.1 Funciones internas 4.2.2 Funciones propias 4.3 Alcance de variables 4.3.1 Locales 4.3.2 Globales 4.4 Pase de parmetros 4.4.1 Por valor 4.4.2 Por referencia 4.5 Funciones recursivas.5. Definicin de tipos 5.1 Escalares 5.2 Subintervalos 13. 13 5.3 Arreglos 5.3.1 Unidimensionales 5.3.2 Multidimensionales 5.4 Registros.6. Manejo dinmico de memoria e introduccin a la implantacin de estructuras de datos 6.1 Apuntadores 6.2 Listas ligadas 6.3 Pilas 6.4 Colas 6.5 rboles binarios7. Archivos 7.1 Secuenciales 7.2 De texto 7.3 De entrada-salida8. Compilacin separada y diseo de programas 8.1 Diseo descendente y ascendente de programas 8.2 Encapsulamiento de mdulos 8.3 Uso de mdulos en otros programas 8.4 Las secciones de interfase e implementacin 8.5 Uso de los comandos make y build de Turbo Pascal 14. 15Unidad 1. Plataforma terico-conceptualTemario detallado1. Plataforma terico-conceptual1.1 Antecedentes histricos del lenguaje de programacin Pascal1.2 Conceptos de programacin estructurada1.3 Conceptos de compilador, compilacin y ejecucin1.4 Estructura de un programa en el lenguaje de programacin Pascal1.5 Definicin formal de un lenguaje de programacin mediante diagramas. sintcticos de tren y ecuaciones de Backus-Naur1.1. Antecedentes histricos del lenguaje de programacin PascalPascal es un lenguaje de programacin de computadoras de alto nivel con propsitogeneral. Fue desarrollado entre 1967 y 1971 por el Profesor Niklaus Wirth, en laUniversidad Tcnica de Zurich, Suiza. El nombre del programa fue elegido en honorde Blaise Pascal (1623-1662), brillante cientfico y matemtico francs, entre cuyoslogros se encuentra la primera mquina calculadora mecnica en el mundo.El propsito de Wirth fue producir un lenguaje apropiado para ensear, clara ysistemticamente,las nuevas tcnicas de desarrollo dela programacinestructurada. La motivacin inicial fue exclusivamente acadmica.La amplia deteccin automtica de errores ofrecida por los compiladores dePascal es de gran ayuda para los principiantes, cosa que los hace bastanteadecuados como introduccin en la programacin de computadoras. Suscaractersticas permiten escribir programas avanzados para diferentes reas deaplicacin.Pascal ha sido bautizado como "el FORTRAN de los 80" y ha tenido graninfluencia en lenguajes como ADA. Adems, es descendiente de ALGOL 60, conquiencompartemuchascaractersticas: estructuracinenbloques (con 15. 16declaraciones de procedimientos anidados), fuerte tipificacin de datos, soportedirecto de recursividad Por otra parte, incluye otras estructuras de datos (comoregistros y conjuntos) y permite la definicin de tipos y el uso de punteros por partedel programador. A pesar de lo anterior, el profesor Wirth intent que Pascal fuera loms simple posible, a diferencia de ALGOL 68 (otro sucesor de ALGOL 60). Aunquehay que sealar que esta simplicidad no implica carencia de estructuras ylimitaciones en el lenguaje, sino transparencia, claridad e integridad. Sin embargo, nodebemos excluir algunas caractersticas costosas de esta programacin, como lasmatrices de tamao dinmico.El antecesor directo de Pascal es ALGOL W, de quien toma los enunciadoswhile y case, as como la definicin de registros. Una innovacin importante dePascal es la definicin de tipos de datos por el usuario, que no exista en lenguajesanteriores derivados de ALGOL. Por otra parte, Pascal es gua importante para laformalizacin de lenguajes de programacin (semntica axiomtica, utilizada paradescribir formalmente la de Pascal) y para la verificacin formal de programas.La primera versin de Pascal, de 1973, con errores de diseo detectadosgracias a los trabajos de Hoare en verificacin formal de programas, fue corregida yformalizada. En 1974, se present una segunda versin, el Pascal actual, por NiklausWirth y Kathleen Jensen: Pascal User Manual and Report.Una versin muy conocida de Pascal fue desarrollada en la Universidad deCalifornia en San Diego: UCSD Pascal. Entre los lenguajes derivados de Pascal,estn Pascal Concurrente, MODULA-2 y Euclid.El xito de Pascal se debi, adems, a que sus versiones de lenguaje trabajanen un rango muy amplio de computadoras. Razn por la cual, la aceptacin dePascal aument considerablemente en 1984, cuando la compaa BorlandInternational introdujo Turbo Pascal (compilador de alta velocidad y bajo costo parasistemas MS-DOS, del que se vendieron ms de un milln de copias en diferentesversiones). 16. 171.2. Conceptos de programacin estructuradaEdgser W. Dijsktra, de la Universidad de Hainover, es considerado como el padre dela programacin estructurada. En 1965, propuso sus aportes en un volumen tituladoNotas de programacin estructurada. Otras ideas recogidas en las obras Notas sobredatos estructurados, de Hoare, y Programacin estructurada, de Dijsktra y Dahl(1972, Academic Press) influyeron en el desarrollo de Pascal.La idea bsica de la programacin estructurada consiste en que la estructuradel texto del programa debe auxiliarnos para entender la funcin del programa.Precisamente Pascal fue el primer lenguaje que utiliz plenamente los principios dela programacin estructurada. Pero hasta mediados de los setenta comenz apopularizarse esta filosofa.La tcnica de Pascal aumenta considerablemente la productividad delprograma reduciendo en mucho el tiempo requerido para escribir, verificar, depurar ymantener los programas. Sin embargo, an sigue mal interpretndose el verdaderoobjetivo de la programacin estructurada. Algunos la reducen simplemente a laeliminacin del salto incondicional de los programas como estructura de control.La Programacin Estructurada est enfocada a las estructuras de control deun programa. Su tcnica primaria consiste en la eliminacin del salto incondicional ysu reemplazo por sentencias bien estructuradas de bifurcacin y control.La programacin estructurada es un caso especial de la programacinmodular. El diseo de un programa estructurado se realiza construyendo bloques tanpequeos que puedan ser codificados fcilmente, lo que se logra hasta que sealcanza el nivel de mdulos atmicos, es decir, sentencias individuales (si- entonces,haz-mientras, etctera).La definicin de la programacin estructurada exige sistemas de control bienorganizados, definidos por los siguientes principios:Teorema de la estructura: establece que se requiere tres bloques bsicos paraconstruir cualquier programa: Caja de proceso 17. 18 Decisin binaria Mecanismo de repeticinPrograma propio: debe cubrir los siguientes requisitos: Tener un slo punto de entrada hasta arriba. Leerse de arriba hacia abajo. Poseer un solo punto de salida hasta abajo.Con el teorema de la estructura y el concepto de programa propio seconstruyen todas las estructuras sintcticamente vlidas para esta filosofa deprogramacin. Por una parte, el salto incondicional debe ser eliminado como unaforma de programacin; por otra, cualquier estructura que deseemos elaborar debeestar construida slo por los tres elementos bsicos mencionados en el teorema dela estructura, que debe cumplir con el concepto de programa propio.Las estructuras que cumplen con las condiciones anteriores son: Bloque de proceso Decisin binaria Estructuras de repeticin HAZ - MIENTRAS REPITE - HASTA Seleccin mltiple1.3. Conceptos de compilador, compilacin y ejecucinCompiladorPascal es un lenguaje de alto nivel, ya que sus instrucciones se asemejan al lenguajedel ser humano. Antes de que una computadora ejecute un programa escrito enPascal, primero debe traducirlo al lenguaje mquina por medio de un compilador. Enesta fase, las instrucciones del programa se convierten en cdigos numricosbinarios para operaciones y direcciones numricas de datos y se almacenan en la 18. 19memoria RAM (memoria de acceso aleatorio) de la computadora para ejecutarse. Elcompilador asigna una direccin de memoria a cada variable utilizada en elprograma.CompilacinLa compilacin de un programa es el paso mediante el cual traducimos dichoprograma al lenguaje mquina entendible por la computadora (cdigo binario), paradespus ejecutarlo en la memoria.El compilador o traductor analiza todo el programa fuente (conjunto deinstrucciones escritas en texto simple) y detecta limitaciones de sintaxis ocasionadaspor fallas en la codificacin o la transcripcin (los errores de lgica que pueda tenernuestro programa fuente no son detectadas por el compilador). Cuando no hay fallasgraves en la compilacin, el compilador traduce cada orden del programa fuente ainstrucciones propias de la mquina, creando el programa objeto.Algunas computadoras utilizan interpretadores (ordinariamente, para ellenguaje Basic) para reemplazar los compiladores. La limitacin del interpretador esque recibe, desde una terminal, slo una instruccin a la vez, la analiza y, si estbien, la convierte al formato propio de la mquina. Si la instruccin tiene algn error,el interpretador lo indica al usuario para que haga la correccin.Como resultado de la corrida del compilador, podemos obtener, entre otros,listados del programa fuente, de los errores detectados y de campos utilizados.Debemos corregir las fallas sobre el mismo programa fuente, ya sea en el discoflexible o en el duro. Este paso de la compilacin lo debemos repetir hasta eliminartodos los errores y obtener el programa ejecutable.Ejecucin. Para ejecutar un programa, la unidad de control de la computadora(encargada de llevar a cabo las instrucciones del sistema operativo) examina cadauna de las instrucciones del programa almacenadas en la memoria y enva sealesde mando para realizarlas. Los datos entran a la memoria y se realizan clculossobre stos (los resultados intermedios pueden guardarse en la memoria; los finales, 19. 20de acuerdo con las instrucciones dadas, pueden permanecer en la memoria o darlessalida a algn dispositivo perifrico como el monitor o a una impresora).MONITOR O MEMORIA RAMIMPRESORA DATOS15 3 INSTRUCCIONES DEL PROGRAMA42UNIDAD DE CONTROL DATOS PARA EL PROCESO CALCULOS INTERMEDIOSRESULTADOS FINALES1.4. Estructura de un programa en el lenguaje de programacin PascalUn programa en Pascal se divide en tres partes fundamentales: cabecera (nombre ylista de parmetros del programa), zona de declaraciones y definiciones (etiquetas,constantes, tipos, variables, procedimientos y funciones [que pueden anidarse]) ycuerpo (equivalente a la funcin main de C). La forma general de un programa en Pascal es la siguiente:PROGRAM nombre del programa (INPUT, OUTPUT); (*encabezado*)CONST Definicin de constante Parte declarativa Definicin de constanteVAR Definicin de variable Definicin de variableBEGIN Proposicin del programaCuerpo del programa Proposicin del programaEND. 20. 21Cada identificador usado en el programa debe ser registrado en la parte dedeclaracin. No puede utilizarse el mismo identificador para una constante y unavariable. Todas las definiciones de constantes y variables se colocan despus de laspalabras reservadas CONST y VAR, respectivamente. Cada proposicin, ya sea enla parte de declaracin o en el cuerpo, debe separarse de la siguiente mediantepunto y coma, exceptuando la que antecede a la palabra reservada END (que indicael final del programa).A cada variable debe asignrsele un valor inicial en el cuerpo del programaantes de ser manejada en una expresin o de que vaya a ser impresa.Ejemplo de un programa de Pascal:PROGRAM INVERSO (INPUT, OUTPUT);CONSTMARCO=|;VARA, B, C: CHAR;BEGINREAD(A,B,C);WRITELN (MARCO,C,B,A,MARCO)END.Opcionalmente, pueden usarse comentarios en el programa (no forman partede l) y colocarse en cualquier parte del programa. Deben ir entre parntesis yasterisco (*comentario*) o entre llaves. Sintaxis: reglas que deben seguirse en la escritura del programa. Estatutos: comandos de Pascal diseados para un propsito especfico. Instruccin: indicacin a la computadora sobre lo que ha de realizar. Lasinstrucciones se forman con los correspondientes estatutos de Pascal,siguiendo las reglas de sintaxis que dicho lenguaje determine. 21. 22 Programa: conjunto de instrucciones que indican a la computadora qu llevar a cabo. Es necesario que se especifiquen de acuerdo con la sintaxis de Pascal y en el orden lgico apropiado. Palabras reservadas: trminos que slo pueden ser usados para un propsito especfico, ya que tienen un significado estndar predefinido (en la estructura bsica, las negritas indican palabras reservadas en Pascal). Identificadores creados por el programador: palabras creadas por el programador (identificador para dar nombre al programa, nombres de variables, por ejemplo).Algunas consideracionesLa computadora es una herramienta poderosa. Los datos de entrada puedenalmacenarse en la memoria y manejarse a velocidades excepcionalmente altas paraproducir resultados (salida del programa). Podemos describirle a la computadora una tarea de manejo de datospresentndole una lista de instrucciones (programa) que debe llevar a cabo. Programacin es elaborar una lista de instrucciones, es decir, escribir unprograma. Disear un programa de computadora es muy similar a describir a alguienlas reglas de un juego que nunca ha jugado. En ambos casos se requiere de unlenguaje de descripcin que entiendan las partes involucradas en el fenmenocomunicativo. Los lenguajes utilizados para la comunicacin entre el hombre y lacomputadora son llamados de programacin. Las instrucciones dadas a lacomputadora deben ser representadas y combinadas de acuerdo con las reglas desintaxis del lenguaje de programacin. Las reglas de un lenguaje de programacinson muy precisas y no permiten excepciones o ambigedades. El xito del lenguaje de programacin Pascal se debe a su acertada seleccindel programa de control de estructuras que provee soporte efectivo para 22. 23programacin estructurada, y a su variedad de datos que permite que stos seandescritos detalladamente. Asimismo, este lenguaje ha sido diseado paraimplementarse fcilmente, y su disponibilidad de modelos hace que se expandarpidamente. La combinacin de registros variantes, arreglos y punteros permite que seandefinidas, creadas y manipuladas gran variedad de estructuras de datos. Pascal es estticamente tipeado y la verificacin de tipos en tiempo decompilacin permite eliminar muchos errores de programacin (indexar un arreglocon valor fuera del rango o asignar un nmero a una variable declarada como decadena, por ejemplo). En este lenguaje podemos definir un subrango de tipo primitivo discreto, elegircualquier tipo primitivo discreto para el ndice de un arreglo, escoger libremente eltipo de los componentes de un arreglo o emplear conjuntos como elementos de untipo primitivo discreto. El comando For puede ser usado para iterar sobre los ndices de cualquierarreglo o rango de elementos potenciales de cualquier conjunto. Pascal es una estructura de datos medianamente complicada, pero lasdefiniciones de tipos la hacen clara. Muchos tipos punteros son usados en estelenguaje, y sera fcil confundirlos en operaciones con punteros. No obstante,cualquier error de asignaciones de punteros en Pascal, sera prevenido por unaverificacin de tipos en tiempo de ejecucin. De acuerdo con el prrafo anterior, programar punteros en Pascal es msseguro que en cualquier otro lenguaje con punteros sin tipos (como PL/I). Lospunteros son usados en la implementacin de objetos y tipos abstractos donde laexplcita manipulacin de los primeros es localizada y escondida; adems, tienen dostipos de roles distintos: aplicar tipos recursivos y compartir tipos de datos. Por eso,ahorran almacenamiento, pero lo ms importante, reducen el riesgo de lainconsistencia de datos. Debemos tener en cuenta que los tipos primitivos no fueron bien entendidoscuando se dise el lenguaje Pascal. Adems, el criterio de Wirth consisti en hacer 23. 24un modelo simple de computacin que permita a los programadores ver si correrneficientemente sus programas. As las cosas, no proveer tipos recursivos directos enPascal fue razonable.El repertorio de expresiones de Pascal es muy limitado, no considera lascondicionales de ninguna clase. Adems, carece de expresiones no triviales de tiposcompuestos, debido al seguro de los agregados y porque las funciones no puedendevolver resultados compuestos. Estas omisiones fuerzan al programador a usarcomandos en situaciones donde las expresiones podran haber sido suficientes. Porejemplo, la nica forma de construir un valor de registro o arreglo es asignando uno auno los componentes de una variable, arreglo o registro. En consecuencia, Pascal esun lenguaje de programacin muy imperativo (soporta slo abstracciones deprocedimientos y funciones, que en Pascal no son valores de primera clase, peropueden ser asignados o usados como componentes de tipos compuestos).Pascal tiene gran repertorio de comandos. Los comandos si y case seemplean para ejecuciones condicionales; repeat y while, para iteraciones indefinidas;y For para finitas. Estos comandos pueden ser compuestos libremente.En Pascal podemos declarar constantes, tipos, variables y abstracciones defunciones y procedimientos. Las declaraciones slo pueden ser ubicadas en lacabecera de los bloques que van dentro de una funcin, procedimiento o delprograma principal (por lo que los programadores estn obligados a poner todas susdeclaraciones en lugares comparativamente pequeos). Adems, las declaracionesde Pascal deben ser agrupadas por clases, lo que dificulta mantenerlas relacionadas.Hay cuatro mecanismos de variables: parmetros por valor, variable,procedural y funcional. stos permiten que los valores, referencias a variables,abstracciones de procedimientos y funciones puedan ser pasados como argumentos.Los procedimientos y funciones solamente son clases de mdulos que soportaPascal. El concepto de encapsulamiento no est definido o soportado directamenteen Pascal, pero puede ser usado en algunos de sus programas muy particulares. 24. 251.5. Definicin formal de un lenguaje de programacin mediante diagramassintcticos de tren y ecuaciones de Backus-NaurLos diagramas sintcticos de tren o de vas son una tcnica para especificar lasintaxis de cada proposicin. Ayudan al usuario a tener una comprensin precisa delas reglas del lenguaje Pascal en el momento de escribir o depurar programas.Los crculos en los diagramas son palabras reservadas y smbolos especialesdel lenguaje Pascal. Adems, los elementos encerrados en los rectngulos son otrasformas sintcticas (a cada una de ellas corresponde un diagrama separado). Cadadiagrama debe ser rastreado en la direccin indicada por la flecha (de izquierda aderecha).Pueden rastrearse muchas rutas a travs del diagrama sintctico para unaproposicin compuesta segn el ciclo. El diagrama indica que una proposicincompuesta est siempre delimitada por las palabras BEGIN y END. Adems, debeutilizarse punto y coma para separar cada proposicin de la siguiente.Los smbolos utilizados en los diagramas sintcticos tienen su equivalente enlas ecuaciones Backus-Naur, como lo muestra el siguiente cuadro. Smbolo Uso Ecuaciones de Backus-naur Subproceso. Referencia a Se indica con itlicas o entre los signos otro bloque mas detallado. < y >.Se escriben las palabras Se indican con negritas.reservadas.Secuencia del texto. Bifurcaciones. Son caminos alternos que indican rutas o Se encierran entre corchetes [ y ]. textos opcionales. Bucles. Son ciclos queOcurrencias indicanrepeticionesuSe indica por medio de llaves { y }. ocurrencias mltiples de un elemento 25. 26Ejemplo de utilizacinDefinicin de un programa:::=PROGRAM ;Direcciones electrnicashttp://elvex.ugr.es/etexts/spanish/pl/pascal.htmhttp://www.itlp.edu.mx/publica/tutoriales/pascal/u1_1_4.htmlhttp://aketzali.super.unam.mx/~edma/programacion/estructurada.html#estructuradahttp://www.itlp.edu.mx/publica/tutoriales/pascal/u1_1_4.htmlhttp://tarwi.lamolina.edu.pe/~jsalinas/pascal-1.htmlhttp://www.e-mas.co.cl/categorias/informatica/turbo.htmBibliografa de la Unidad 26. 27Unidad 2. Datos, constantes, variables, tipos, expresiones yasignacionesTemario detallado2. Datos, constantes, variables, tipos, expresiones y asignaciones2.1 Identificadores2.2 Constantes2.3 Qu es un tipo?2.4 Tipos nativos del lenguaje de programacin Pascal2.5 Operadores aritmticos2.6 Expresiones aritmticas2.7 Operadores lgicos2.8 Expresiones booleanasIdentificadoresSe utilizan para dar nombre (secuencia de longitud que oscila entre 8 y 64caracteres, de acuerdo con el compilador usado) a los objetos de un programa(constantes, variables, tipos de datos, procedimientos, funciones, unidades,programas y campos de registros). Los nombres aplicados deben ser significativos,es decir, que nos informen algo sobre el objeto que designan (por ejemplo, nombre,apellido y direccin); evitaremos nominaciones como xyz, rewlja, etctera.Un identificador se caracteriza por observar las siguientes reglas:Inicia con una letra (A-Z) mayscula o minscula; no tiene espacios ni smbolos (&, !,*) ni es alguna palabra reservada de Pascal como: PROGRAM, BEGIN, END,CONST, VAR, TYPE, ARRAY, RECORD, SET, FILE, FUNCTION, PROCEDURE,LABEL, PACKED. AND, OR, NOT, DIV, MOD, IF, THEN, ELSE, CASE, OF,REPEAT, UNTIL, WHILE, DO, FOR, TO, DOWNTO, WITH, GOTO, NIL, IN, etctera. 27. 28Letras, dgitos y caracteres subrayados ( _ ) estn permitidos despus delprimer carcter.Para Pascal no hay diferencias entre maysculas y minsculas. As, a unidentificador denominado "valor" se le puede referir como "VALOR" o "VaLoR".Hay dos tipos de identificadores: predefinidos, de Pascal, y definidos por elprogramador.Algunos de los identificadores predefinidos son: integer, real, byte...Los identificadores definidos por el programador son los elementos dellenguaje: variables, procedimientos, funciones, etctera.Todo identificador en Pascal debe ser definido previamente a su utilizacin.ConstantesUna constante es un valor que no puede cambiar durante la ejecucin delprograma. Por ejemplo, si un programa va a utilizar el valor PI para algunos clculos,puede definirse un identificador PI con valor de 3.1415926 constante, de tal formaque PI no pueda variar de valor; as, ya no es necesario escribir todo el nmero cadavez que se necesite en el programa, slo PI.Las constantes son de todos tipos: numricas con cifras enteras o reales,caracteres, cadenas de caracteres, etctera.Las constantes, que se identifican con un nombre y un valor asignados, debenpresentarse en el programa con el siguiente formato:ConstIdentificador = valorEjemplos:constPi = 3.141592 {valor real}Caracter = FCA{carcter}Cuenta = 510{nmero entero}Hay constantes literales, que utilizan valores sin nombre, tales como 3,Francisco o true, 0.20; nominales, identificadores que asignan un valor a un nombre(por ejemplo, IVA=0.15, pi=3.1416, da=mircoles); y constantes de expresin, 28. 29donde se asigna al nombre un valor, resultado de una expresin (varios operadores yoperandos) situada a la derecha del signo = (salario_trimestral=(40.35*365)/4,asigna el resultado 3681.94 a la constante salario_trimestral al realizar primero elclculo matemtico).Qu es un tipo? Los tipos de datos que se manejan en el programa son de dos clases:variables o constantes. Lo primeros, pueden cambiar a lo largo de la ejecucin de unprograma; en cambio, los constantes, son valores fijos durante todo el proceso. Porejemplo, tenemos un tipo variable cuando sumamos dos nmeros que sernintroducidos por el usuario del programa, que puede agregar dos valorescualesquiera. Hay diferentes tipos de datos. Algunos de los que usa Pascal principalmenteson: Integer Nmeros enteros sin parte decimal de 16 bits, desde 32568 hasta +32567. Char Caracteres del cdigo ASCII de 8 bits definidos del 0 al 127. Bolean Pueden contener los valores falso o verdadero. Real Nmeros que pueden incluir una parte decimal, normalmente almacenados en 32 64 bits. String En una secuencia de caracteres que se trata como un solo dato. Cada nuevo tipo se declara en la seccin TYPE del programa principal y encada bloque de ste. El tipo se distingue con un nombre seguido del signo = y eltipo asignado, terminando con ;. Este ltimo puede ser uno de los bsicos,subrango de enteros, tipo enumerado o estructurado como arreglo, registro, conjuntoo archivo. Tipos nativos del lenguaje de programacin PascalTIPOS ENTEROS (integer). Se expresan en el rango de valores. 29. 30TIPOS REALES (real). Son aquellos que representan al conjunto de los nmerosreales.TIPOS CARCTER (char). Pueden contener un solo carcter. Los tipos carcterpueden manifestarse gracias al cdigo ASCII (en realidad ASCII ampliado).TIPO CADENA (string). Secuencia de cero o ms caracteres correspondientes alcdigo ASCII, escritos en una lnea sobre el programa y encerrados entre apstrofos.Operadores aritmticosLos operadores aritmticos utilizados por Pascal para realizar operacionesmatemticas son los siguientes:+ Identidad y suma- Negacin y resta* Multiplicacin/ Divisin de nmeros fraccionarios**, ^ Exponenciacindiv Divisin entera con truncamientomod Mdulo o residuo de una divisinLos smbolos +, -, *, ^, y las palabras clave div y mod son conocidos comooperadores aritmticos. En la expresin 8 + 6 los valores 8 y 6 se denominanoperandos. El valor de la expresin 8+6 es llamado tambin resultado de laexpresin. Los clculos que implican tipos de datos reales y enteros suelen sernormalmente del mismo tipo de los operandos.OPERADORSIGINIFICADOTIPO DE OPERANDOS TIPO DE RESULTADO ^,** Exponenciacin Entero o real Entero o real+SumaEntero o real Entero o real-Resta Entero o real Entero o real*MultiplicacinEntero o real Entero o real 30. 31/ DivisinRealReal DivDivisin entera Entero EnteroModMdulo (residuo) Entero EnteroAdems de los operadores aritmticos bsicos, tenemos los div y mod (se puedenusar nicamente con nmeros enteros).Operador DIVCalcula el cociente entero de la divisin de dos nmeros: el smbolo / se utiliza parala divisin real y el operador div representa la entera.C div DSlo se puede utilizar si C Y D son expresiones enteras y se obtiene la parte enterade C/D. As, el resultado de 27 div 9 es 3.FormatoOperando1 div operando2Operador MODEl operador mod calcula el residuo de la divisin.FormatoOperando1 mod operando2Ejemplo: 16 mod 3 = 1Expresiones aritmticasLas expresiones aritmticas son anlogas a las frmulas matemticas. Las variablesy constantes son numricas (reales o enteras) y las operaciones, aritmticas. 31. 32El lenguaje Pascal permite representar frmulas con expresiones que puedenusar operadores mltiples y parntesis, con lo que se consigue buena capacidadmatemtica. Los parntesis se emplean para agrupar trminos de la misma maneracomo se utilizan en lgebra.Las expresiones que tienen dos o ms operandos requieren reglasmatemticas (de prioridad o precedencia) que permitan determinar el orden de lasoperaciones. Las principales reglas son las siguientes:Las operaciones que estn estructuradas entre parntesis se evalan primero.Si existen diferentes parntesis anidados (interiores unos a otros) las expresionesms internas se evalan primero.Las operaciones aritmticas dentro de una expresin suelen seguir elsiguiente orden de importancia:- Operador exponencial (^, **)- Operadores *, /- Operadores +, -- Operadores div y modEn caso de coincidir varios operadores de igual prioridad en una expresin osubexpresin encerrada entre parntesis, el orden de relevancia va de izquierda aderecha.Ejemplo:PROGRAM FRMULA (INPUT,OUTPUT)VARA,B,C,D:REALBEGIN(*ASIGNACIN DE VALORES A LAS VARIABLES*)A:=5B:=15C:=2D:=10(*IMPRESIN DEL RESULTADO DE LA FRMULA*)WRITELN(A+B*((D-A)/C))END 32. 33La evaluacin de la expresin se lleva a cabo en el orden siguiente: +,-,* y /, tomandoen cuenta la agrupacin de los operandos. As, en el programa anterior obtenemosun resultado dando los siguientes pasos:Paso 1: sumar la variable A ms la variable B: 5 + 15 = 20Paso 2: restar a la variable D la variable A: 10 5 = 5Paso 3: dividir el resultado anterior entre la variable C: 5 / 2 = 2.5Paso 4: multiplicar el resultado del paso 1 por el resultado del paso anterior: 20*2.5=50Resultado: 50Operadores lgicosLos operadores lgicos o booleanos bsicos son NOT (negacin no), AND(conjuncin y) y OR (disyuncin o). OPERADORES LGICOS Operador lgico Expresin lgica Significado NO (NOT) No p (not p)Negacin de p Y (AND)P y q (p and q) Interseccin de p y q O (OR) P o q (p or q)Unin de p y qLas definiciones de las operaciones NO, Y, O se resumen en las tablas denominadasde verdad.TABLAS DE VERDADANO A Verdadero FalsoFalsoVerdadero 33. 34 A B AyB ABAoBVerdadero Verdadero Verdadero Verdadero Verdadero VerdaderoFalso VerdaderoFalso Falso Verdadero VerdaderoVerdaderoFalso FalsoVerdaderoFalso VerdaderoFalsoFalso Falso Falso Falso FalsoEn las expresiones lgicas es posible mezclar operadores de relacin y lgicos.Operadores de relacinLos operadores relacionales o de relacin permiten hacer comparaciones de valoresde tipo numrico o carcter. Sirven para expresar las condiciones en los algoritmos.OPERADORES DE RELACIN < Menor que > Mayor que =Igual que= Mayor o igual a Distinto deEl formato general para las comparaciones:Expresin 1 operador de relacin Expresin 2El resultado de la operacin ser verdadero o falso.Los operadores de relacin pueden aplicarse a cualquiera de los cuatro tipos dedatos estndar: entero, real, lgico y carcter.Prioridad de los operadores lgicos y relacionalesLos operadores lgico-relacionales tambin siguen un orden de prioridad cuando hayms de un operador en la expresin. 34. 35Expresiones booleanasEl valor de este tipo de expresiones lgicas es siempre verdadero o falso. Sedenominan booleanas en honor al matemtico britnico George Boole, quiendesarroll el lgebra lgica o de Boole.Las expresiones lgicas se forman combinando constantes o variables lgicas yotras expresiones de este rango, utilizando los operadores lgicos NOT, AND y OR ylos relacionales (de relacin o comparacin) =, , =, .Ejemplos de expresiones lgicas:NOT ((altura1.80)): evala primero los parntesis internos; laaltura debe estar entre 1.20 y 1.80 para que el resultado sea verdadero.(curso_ingls=true) AND (posgrado=maestra): si la variable posgrado toma el valorde maestra y la variable curso_ingls contiene el valor true, entonces toda laexpresin es cierta.(sabe_ingls=true) OR (sabe_programar=true): si sabe ingls o sabe programar, laexpresin es cierta.Direcciones electrnicashttp://aketzali.super.unam.mx/~edma/programacion/operadores.htmlhttp://www-gris.ait.uvigo.es/~belen/isi/doc/tutorial/unidad1p.htmlhttp://tarwi.lamolina.edu.pe/~jsalinas/pascal-1.htmlBibliografa de la Unidad 35. 36Unidad 3. Control de flujo en el lenguaje de programacin pascalTemario detallado3. Control de flujo en el lenguaje de programacin Pascal 3.1 Condicionales 3.2 Iteraciones 3.3 Salto incondicional 3.1 CondicionalesUn algoritmo es ejecutado siguiendo la lista de los pasos, determinados por losvalores de ingreso, que lo describen. Estos valores estn contenidos en variables,con base en las cuales se evala una condicin: el resultado especifica los puntos aseguir. Las condiciones (condicionales) de las decisiones se valoran mediante unaexpresin de Boole, cuyo resultado puede ser verdadero o falso. Asimismo, ladecisin se representa mediante una expresin booleana (describe una relacinentre dos variables por medio de los operadores de relacin mayor que >, menor que= o menor igual que =10 THEN precio_neto:= precio*.8 ELSE precio_neto:=precio*.9; WRITELN(TOTAL A PAGAR,cant_art*precio_neto)END.Explicacin: en este programa llamado descuento, se le asigna a laconstante PRECIO el valor 10 (venta normal al pblico) y se declaran las variablesCANT_ART y PRECIO_NETO de tipo real. En el cuerpo del programa, se le solicitaal usuario el ingreso del valor de la variable CANT_ART (condicin a evaluar en laexpresin booleana CANT_ART>=10). Si es verdad que CANT_ART es mayor oigual a 10, se asignar a la variable PRECIO_NETO el 80% de la variable PRECIO;si no, el 90%. Aqu termina la estructura de decisin para, luego, poder imprimir lacadena TOTAL A PAGAR: y el producto CANT_ART por el PRECIO_NETO, comoresultado del precio neto total a pagar por el cliente. (En esta estructura es posibleomitir ELSE con sus instrucciones, pues son opcionales).Adems, a la estructura IF THEN ELSE se le pueden anidar otras del mismotipo (sentencias IF anidadas). As, cuando la condicin es verdadera, pueden ser 39. 40ejecutadas una o ms estructuras IF THEN ELSE dentro de la primera. Sucede lomismo con la alternativa falsa, a la que tambin se le puede anidar este tipo deestructuras. En forma lgica, se evala una condicin dentro de otra y as,sucesivamente, las veces necesarias. Por ejemplo: IF qualification>5 THEN BEGIN IF calificacion=6 THEN final:=Suficiente; IF calificacion=8 THEN final:=Bien; IF calificacion=10 THEN final:=Excelente; END; ELSE final:=No Acreditado 3.2 IteracionesLas iteraciones constituyen la ejecucin repetida de un conjunto de instruccionesmientras se cumple determinada condicin. Las estructuras que cubren esteconcepto son: FOR, WHILE y REPEAT-UNTIL, que estudiamos a continuacin. FORCumple una serie de rdenes las veces que la variable de control del ciclo cambie devalor, desde el inicial hasta el final. Para comprender mejor est definicin,mencionemos la sintaxis de este ciclo: FOR identificador: = valor inicial TO valor final DO Instrucciones. Donde la variable identificador cambiar de valores desde el inicio hasta elfinal. Las instrucciones son las sentencias que sern ejecutadas por cada valornuevo que tome el identificador. 40. 41Consideremos las siguientes peculiaridades de los ciclos FOR: en la variableidentificador, los valores inicial y final pueden ser de cualquier tipo: CHAR, INTEGERo BOLEAN, y representar una variable, constante o expresin. La variableidentificador no cambiar mientras se ejecuta el ciclo; una vez terminado, aqulla seconsidera como no definida. El valor final puede cambiar una vez que se cumpla elciclo, independientemente del nmero de veces que se ejecutan las instrucciones. Elvalor final debe ser mayor que el inicial; si no, el ciclo no podr ejecutarse, a menosque se utilice la forma: FOR identificador := valor inicial DOWNTO valor final DO Instrucciones.En este caso, la variable identificador sigue un conteo decreciente.El siguiente programa escribe los nmeros del 1 al 100: PROGRAM Conteo; VAR ciclo : Integer; BEGIN FOR ciclo := 1 to 100 DO Writeln(ciclo); END.La desventaja de los ciclos FOR es que, una vez iniciados, se ejecutarn sloel nmero de veces definido en identificador.Para que un ciclo cuente en forma decreciente, debemos utilizar la palabraDOWNTO en lugar de TO, y el valor inicial debe ser mayor que el final. Tomemos elejemplo anterior: 41. 42 PROGRAM Conteo; VAR ciclo : Integer; BEGINFOR ciclo := 100 downto 1 DO Writeln(ciclo); END. WHILELa sintaxis de WHILE es la siguiente: WHILE condicin DO InstruccionesEn esta estructura, primero se evala la condicin. Si el resultado es verdadero, seejecutan las instrucciones y se evala nuevamente la condicin; si resulta falsa, sesale del ciclo (en caso contrario, reinicia el procedimiento).El diagrama de flujo para esta estructura es:En estecaso, el bloqueA se ejecuta repetidamentemientrasque la condicinP es verdadera. Tambin tiene entrada y salida nicas. Asimismo, el proceso A puede ser cualquier estructura bsica o conjunto de estructuras.Si la condicin resulta falsa en la primera evaluacin de la condicin, es posible que las instrucciones no se lleguen a ejecutar. Una vez que se sale del ciclo, se llevarn a cabo las rdenes que siguen a la estructura WHILE. 42. 43Pongamos como ejemplo este programa, que imprime una lista de precios: PROGRAM lista_precios (input, output); CONST punit=10; VAR cant,precio : integer; BEGIN cant:=0; WHILE cant