Colegio Nacional de Educación Profesional Técnica Manual Teórico Práctico del Módulo Autocontenido Específico Programación en Pseudocódigo PROFESIONAL TÉCNICO BACHILLER EN INFORMÁTICA e-cbcc Educación-Capacitación Basadas en Competencias Contextualizadas Capacitado por: Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo TECNOLOGÍAS DE LA INFORMACIÓN Capacitado por: e-cbcc Educación-Capacitación Basadas en Competencias Contextualizadas PT Bachiller en Informática 1 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo PARTICIPANTES Suplente del Director General Joaquín Ruiz Nando Secretario de Desarrollo Académico y de Capacitación Marco Antonio Norzagaray Director de Diseño de Curricular de la Formación Ocupacional Gustavo Flores Fernández Coordinador del Área Tecnologías de la Información Ma. Cristina Martínez Mercado Grupo de Trabajo para el Diseño del Módulo Asociación Mexicana de Ingenieros Mecánicos y Electricistas (AMIME) Adriana Morales Ramírez y Jesus Castillo Reyes. Revisor de contenido Sandra Luz Lozano Ramírez Revisión Pedagógica Patricia Toledo Márquez (CONALEP) Sandra Rubio Rosete (AMIME) Revisores de la Contextualización Agustín Valerio y Guillermo Armando Prieto Becerril Tecnologías de la información Informática Manual del curso – módulo Autocontenido Específico “Programación en Pseudocódigo” Informática D.R. © 2004 CONALEP. Prohibida la reproducción total o parcial de esta obra, incluida la portada, por cualquier medio sin autorización por escrito del CONALEP. Lo contrario representa un acto de piratería intelectual perseguido por la Ley Penal. E-CBCC Av. Conalep N° 5, Col. Lázaro Cárdenas, C.P. 52140 Metepec, Estado de México. 2 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo ÍNDICE I II III IV V VI Mensaje al capacitando ¿Cómo utilizar este manual? Propósito del Módulo Autocontenido Normas de Competencia Laboral Especificaciones de evaluación Mapa curricular del Módulo Capítulo 1 Capítulo 2 Capítulo 3 Capítulo 4 Elaboración previa de programas de computo 1.1 Identificar lenguajes de programación con base al uso y características de los mismos. 1.2 Diseñar la programación mediante su secuencia de pasos lógica. Prácticas y Listas de Cotejo Aplicación de pseudocódigo en técnicas de lenguajes de programación 2.1 Emplear pseudocódigo en programación estructurada utilizando estructuras de datos. 2.2 Emplear pseudocódigo en programación funcional y lógica utilizando recursividad y cláusulas 2.3 Emplear pseudocódigo en programación orientada a objetos y dirigida por eventos utilizando sentencias de herencia, controles, eventos y multitareas Prácticas y Listas De Cotejo Resumen Autoevaluación de Conocimientos Respuestas de Autoevaluación de Conocimientos Glosario de Términos Referencias Documentales Anexos PT Bachiller en Informática PÁG. 4 5 8 9 10 11 13 75 165 167 169 176 190 3 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo I. MENSAJE AL CAPACITANDO ¡CONALEP TE DA LA BIENVENIDA AL CURSO-MÓDULO AUTOCONTENIDO ESPECIFICO PROGRAMACION EN PSEUDOCODIGO ! EL CONALEP, a partir de la Reforma Académica 2003, diseña y actualiza sus carreras, innovando sus perfiles, planes y programas de estudio, manuales teórico-prácticos, con los avances educativos, científicos, tecnológicos y humanísticos predominantes en el mundo globalizado, acordes a las necesidades del país para conferir una mayor competitividad a sus egresados, por lo que se crea la modalidad de Educación y Capacitación Basada en Competencias Contextualizadas, que considera las tendencias internacionales y nacionales de la educación tecnológica, lo que implica un reto permanente en la conjugación de esfuerzos. Este manual teórico práctico que apoya al módulo autocontenido, ha sido diseñado bajo la Modalidad Educativa Basada en Competencias Contextualizadas, con el fin de ofrecerte una alternativa efectiva para el desarrollo de conocimientos, habilidades y actitudes que contribuyan a elevar tu potencial productivo y, a la vez que satisfagan las demandas actuales del sector laboral, te formen de manera integral con la oportunidad de realizar estudios a nivel superior. Esta modalidad requiere tu participación e involucramiento activo en ejercicios y prácticas con simuladores, vivencias y casos reales para promover un aprendizaje integral y significativo, a través de experiencias. Durante este proceso deberás mostrar evidencias que permitirán evaluar tu aprendizaje y el desarrollo de competencias laborales y complementarias requeridas. El conocimiento y la experiencia adquirida se verán reflejados a corto plazo en el mejoramiento de tu desempeño laboral y social, lo cual te permitirá llegar tan lejos como quieras en el ámbito profesional y laboral. II. CÓMO UTILIZAR ESTE MANUAL Las instrucciones generales que a continuación se te pide que cumplas, tienen la intención de conducirte a vincular las competencias requeridas por el mundo de trabajo con tu formación de profesional técnico. • 4 Redacta cuáles serían tus objetivos específicas), elementos de competencia, criterio de desempeño, campo de aplicación, evidencias de desempeño, evidencias de conocimiento, evidencias por producto, norma técnica de institución educativa, formación ocupacional, módulo PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo autocontenido, módulo integrador, unidad de aprendizaje, y resultado de aprendizaje. Si desconoces el significado de los componentes de la norma, te recomendamos que consultes el apartado Glosario, que encontrarás al final del manual. personales al estudiar este cursomódulo autocontenido. • Analiza el Propósito del cursomódulo autocontenido que se indica al principio del manual y contesta la pregunta ¿Me queda claro hacia dónde me dirijo y qué es lo que voy a aprender a hacer al estudiar el contenido del manual? Si no lo tienes claro, pídele al docente te lo explique. • Revisa el apartado Especificaciones de evaluación, son parte de los requisitos por cumplir para aprobar el curso-módulo. En él se indican las evidencias que debes mostrar durante el estudio del mismo para considerar que has alcanzado los resultados de aprendizaje de cada unidad. • Es fundamental que antes de empezar a abordar los contenidos del manual tengas muy claros los conceptos que a continuación se mencionan: competencia laboral, competencia central, competencia básica, competencia clave, unidad de competencia (básica, genéricas • • Analiza el apartado Normas Técnicas de Competencia Laboral, Norma Técnica de Institución Educativa. • Revisa el Mapa Curricular del curso–módulo autocontenido. Esta diseñado para mostrarte esquemáticamente las unidades y los resultados de aprendizaje que te permitirán llegar a desarrollar paulatinamente las competencias laborales requeridas por la ocupación para la cual te estás formando. • Revisa la Matriz de Competencias del curso-módulo autocontenido. Describe las competencias laborales, básicas y claves que se contextualizan como parte de la metodología que refuerza el aprendiza lo integra y lo hace significativo En el desarrollo del contenido de cada capítulo, encontrarás ayudas visuales como las siguientes, haz lo que ellas te sugieren. Si no lo haces no aprendes, no desarrollas habilidades, y te será difícil realizar los ejercicios de evidencias de conocimientos y los de desempeño. PT Bachiller en Informática 5 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo • Analiza la Matriz de contextualización del curso-módulo autocontenido. Puede ser entendida como la forma en que, al darse el proceso de aprendizaje, el sujeto establece una relación activa del conocimiento y sus habilidades sobre el objeto desde un contexto científico, tecnológico, social, cultural e histórico que le permite hacer significativo su aprendizaje, es decir, el sujeto aprende durante la interacción social, haciendo del conocimiento un acto individual y social. • Realiza la lectura del contenido de cada capítulo y las actividades de aprendizaje que se te recomiendan. Recuerda que en la educación basada en normas de competencia laborales la responsabilidad del aprendizaje es tuya, pues eres quien desarrolla y orienta sus conocimientos y habilidades hacia el logro de algunas competencias en particular. IMÁGENES DE REFERENCIA 6 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Estudio individual Investigación documental Consulta con el docente Redacción de trabajo Comparación del resultado con otros compañeros Repetición del ejercicio Trabajo en equipo Sugerencias o notas Realización del ejercicio Resumen Observación Consideraciones sobre seguridad e higiene Investigación de campo Portafolio de evidencias PT Bachiller en Informática 7 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo III. PROPÓSITO DEL CURSO-MÓDULO AUTOCONTENIDO Al finalizar el módulo, el alumno elaborará programas en pseudocódigo mediante estructuras de datos, recursividad, cláusulas, sentencias de herencia, controles, eventos y multitareas, para aplicar en la solución de problemas complejos. 8 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo IV. NORMAS TÉCNICAS DE COMPETENCIA LABORAL Para que analices la relación que guardan las partes o componentes de la NTCL o NIE con el contenido del programa del curso–módulo autocontenido de la carrera que cursas, te recomendamos consultarla a través de las siguientes opciones: • Acércate con el docente para que te permita revisar su programa de estudio del curso-módulo autocontenido de la carrera que cursas, para que consultes el apartado de la norma requerida. • Visita la página WEB del CONOCER en www.conocer.org.mx en caso de que el programa de estudio del curso - módulo ocupacional esta diseñado con una NTCL. • Consulta la página de Intranet del CONALEP http://intranet/ en caso de que el programa de estudio del curso - módulo autocontenido está diseñado con una NIE PT Bachiller en Informática 9 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo V. ESPECIFICACIONES DE EVALUACIÓN Durante el desarrollo de las prácticas de ejercicio también se estará evaluando el desempeño. El docente, mediante la observación directa y con auxilio de una lista de cotejo, confrontará el cumplimiento de los requisitos en la ejecución de las actividades y el tiempo real en que se realizó. En éstas quedarán registradas las evidencias de desempeño. Las autoevaluaciones de conocimientos correspondientes a cada capítulo, además de ser un medio para reafirmar los conocimientos sobre los contenidos tratados, son también una forma de evaluar y recopilar evidencias de conocimiento. Al término del curso-módulo deberás presentar un Portafolios de Evidencias1, el cual estará integrado por las listas de cotejo correspondientes a las prácticas de ejercicio, las autoevaluaciones de conocimientos que se encuentran al final de cada capítulo del manual y muestras de los trabajos realizados durante el desarrollo del curso-módulo, con esto se facilitará la evaluación del aprendizaje para determinar que se ha obtenido la competencia laboral. Deberás asentar datos básicos, tales como: nombre del alumno, fecha de evaluación, nombre y firma del evaluador y plan de evaluación. 1 El portafolio de evidencias es una compilación de documentos que le permiten al evaluador, valorar los conocimientos, las habilidades y las destrezas con que cuenta el alumno, y a éste le permite organizar la documentación que integra los registros y productos de sus competencias previas y otros materiales que demuestran su dominio en una función específica (CONALEP. Mtodología para el diseño e instrumentación de la educación y capacitación basada en competencias, Pág. 180). 10 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo VI. MAPA CURRICULAR Programación en Pseudocódigo Módulo 108 hrs. Unidad de Aprendizaje 1. Elaboración previa de programas de cómputo 14 HORAS 2. Aplicación pseudocódigo técnicas lenguajes programación de en de de 94 HORAS 1.1 Identificar lenguajes de programación con base al uso y características de los mismos. 1.2 Diseñar la programación mediante su secuencia de pasos lógicos. Resultados de Aprendizaje 2.1 Emplear pseudocódigo en programación estructurada utilizando estructuras de datos. 2.2 Emplear pseudocódigo en programación funcional y lógica utilizando recursividad y cláusulas. 2.3 Emplear pseudocódigo en programación orientada a objetos y dirigida por eventos utilizando sentencias de herencia, controles, eventos y multitareas. PT Bachiller en Informática 4 hrs. 10 hrs. 34 hrs. 30 hrs. 30 hrs. 11 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo ELABORACIÓN PREVIA DE PROGRAMAS DE CÓMPUTO Al finalizar la unidad, el alumno elaborará algoritmos de estructuras de datos con estructura y rutinas en pseudocódigo para la resolución de problemas. 12 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo VII. MAPA CURRICULAR Programación en Pseudocódigo Módulo 108 hrs. Unidad de Aprendizaje 1. Elaboración previa de programas de cómputo. 14 HORAS 2. Aplicación de seudocódigo en técnicas de lenguajes de programación 94 HORAS 1.1 Identificar lenguajes de programación con base al uso y características de los mismos. 1.2 Diseñar la programación mediante su secuencia de pasos lógica. Resultados de Aprendizaje 2.1 Emplear pseudocódigo en programación estructurada utilizando estructuras de datos. 2.2 Emplear pseudocódigo en programación funcional y lógica utilizando recursividad y cláusulas. 2.3 Emplear pseudocódigo en programación orientada a objetos y dirigida por eventos utilizando sentencias d herencia, controles, eventos y multitareas. PT Bachiller en Informática 4 hrs. 10 hrs. 34 hrs. 30 hrs. 30 hrs. 13 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo 1. ELABORACIÓN PREVIA DE PROGRAMAS DE CÓMPUTO SUMARIO Historia sobre software Tratamiento del Problema Tipos de Software Elementos de Programas Estructura de datos. RESULTADO DE APRENDIZAJE 1.1 1.2 Identificar lenguajes de programación con base al uso y características de los mismos. Diseñar la programación mediante su secuencia de pasos lógica. 1.1.1 Historia sobre software. Concepto programación. lenguajes de Los ordenadores no hablan nuestro idioma, son maquinas y como tales, necesitan un lenguaje especifico pensado por el hombre para ellas. Además, necesitan constantemente interpretar todas las instrucciones que reciben. Dada la dificultad de comunicación insalvable entre el computador y el programador, pronto aparecieron lenguajes de programación que hacen posible la comunicación con el microprocesador, utilizando términos y símbolos relacionados con el tipo de problema que se debe resolver, mediante el empleo de herramientas que brinda la informática. Estos lenguajes permiten, por un lado, escribir las operaciones que son necesarias realizar para resolver el problema de un 14 modo parecido a como se escribiría convencionalmente (es decir, redactar adecuadamente el algoritmo de resolución del problema) y, por el otro, se encarga de traducir el algoritmo al lenguaje máquina (proceso conocido como compilación) con lo que se le confiere al programa la capacidad de corre (ser ejecutado) en el ordenador. El ordenador es en realidad tan sólo una máquina virtual, capaz de resolver todos los problemas que los usuarios seamos capaces de expresar mediante un algoritmo (programa). En la actualidad hay muchos tipos de lenguajes de programación, cada uno de ellos con su propia gramática, su terminología especial y una sintaxis particular. Por ejemplo, existen algunos creados especialmente para aplicaciones científicas o matemáticas generales (BASIC, FORTRAN, PASCAL, etc. ); otros, en cambio, se orientan al campo empresarial y al manejo de textos y ficheros, es decir, PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica son en realidad fundamentalmente gestores de información (COBOL, PL/1, etc. ), o muy relacionados con el lenguaje máquina del ordenador (como el C y el ASSEMBLER). Los ordenadores se programaban en lenguaje máquina pero las dificultades que esto conllevaba, junto con la enorme facilidad de cometer errores, cuya localización era larga y compleja, hicieron concebir, en la década de los 40, la posibilidad de usar lenguajes simbólicos. Los primeros en aparecer fueron los ensambladores, fundamentalmente consistía en dar un nombre (mnemónico) a cada tipo de instrucción y cada dirección (etiqueta). Al principio sé hacia el programa sobre papel y, después se traducía a mano con la ayuda de unas tablas, y se introducían en la máquina en forma numérica, pero pronto aparecieron programas que se ensamblaban automáticamente. Así nos podemos dar cuenta de la importancia que tiene la programación y la creación de estos lenguajes para sintetizar la información y agilizar así los procesos sistemáticos de los sistemas que trabajan por medio de computadoras así como la importancia de que estos lenguajes nos permiten cada día mas cosas debido a su desarrollo al paso de los años como nos podemos dar cuenta en este trabajo al igual hace mas fácil el trabajo para el programador y mas fácil para nosotros los consumistas de tecnología. Lenguaje de programación, en informática, cualquier lenguaje artificial Programación en Pseudocódigo que puede utilizarse para definir una secuencia de instrucciones para su procesamiento por un ordenador o computadora. Es complicado definir qué es y qué no es un lenguaje de programación. Se asume generalmente que la traducción de las instrucciones a un código que comprende la computadora debe ser completamente sistemática. Normalmente es la computadora la que realiza la traducción. Un lenguaje de programación es una notación para escribir programas, a través de los cuales podemos comunicarnos con el hardware y dar así las ordenes adecuadas para la realización de un determinado proceso. Un lenguaje esta definido por una gramática o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de símbolos utilizados. Los distintos niveles de programación existentes nos permiten acceder al hardware, de tal forma que según utilicemos un nivel u otro, así tendremos que utilizar un determinado lenguaje ligado a sus correspondientes traductores. Conjunto de normas “lingüísticas” (palabras y símbolos) que permiten escribir un programa y que éste sea entendido por el ordenador y pueda ser trasladado a ordenadores similares para su funcionamiento en otros sistemas. Conjunto de instrucciones, ordenes y símbolos reconocibles por autómata, a través de su unidad de programación, que le permite ejecutar la secuencia de control deseada. PT Bachiller en Informática 15 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Al conjunto total de estas instrucciones, ordenes y símbolos que están disponibles se le llamar lenguajes de programación del autómata. El programa esta formado por un conjunto de instrucciones, sentencias, bloques funcionales y grafismos que indican las operaciones a realizar. Las instrucciones representan la tarea más elemental de un programa: leer una entrada, realizar una operación, activar una salida, etc. La sentencia representa el mínimo conjunto de instrucciones o sentencias que realizan una tarea o función compleja: encontrar el valor de una función lógica en combinación de varias variables, consultar un conjunto de condiciones, etc. El bloque funcional es el conjunto de instrucciones o sentencias que realizan una tarea o 16 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica función compleja: contadores, registros de desplazamientos, transferencias de información, etc. Todos estos elementos están relacionados entre sí mediante los símbolos o grafismos. Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute. Los lenguajes de programación deben tener instrucciones que pertenecen a las categorías ya familiares de entrada/salida, Cálculo/manipulación de textos, logica/comparación, y almacenamiento/recuperación. Evolución de los lenguajes de programación. Programación en Pseudocódigo influía en todo el programa, gracias a que las estructuras globales de datos eran accesibles por todas las subrutinas. Segunda Generación: La segunda generación de lenguajes fue desarrollada a finales de los años 50 y principios de los 60 y ha servido como base para todos los lenguajes de programación modernos (tercera generación). La segunda generación de lenguajes está caracterizada por su amplio uso, la enorme cantidad de bibliotecas de software y la gran familiaridad y aceptación. Prácticamente nadie pone en duda que FORTRAN, COBOL, ALGOL y (de alguna forma) BASIC son lenguajes de base, debido a su madurez y su aceptación. FORTRAN ha subsistido a 30 años de Primera Generación: La primera generación de lenguajes se remonta a los días en que se codificaba a nivel de máquina. El código máquina y su equivalente más humanamente legible, el lenguaje ensamblador, representan la primera generación de lenguajes. Estos lenguajes dependientes de la máquina muestran el menor nivel de abstracción con el que se puede representar un programa. El lenguaje de máquina está formado por cadenas de ceros y unos, por lo tanto para realizar un programa se necesita de programadores altamente entrenados. Algunos ejemplos de lenguajes de esta generación son el FORTRAN y el ALGOL que presentaban las características de abstracción matemática, estructura física plana y consistían únicamente de datos globales y subrutinas o subprogramas. Como consecuencia de esto un error podía tener un gran efecto e PT Bachiller en Informática 17 Informática Colegio Nacional de Educación Profesional Técnica críticas y sigue siendo el primer lenguaje de programación en el ambiente científico y de ingeniería. FORTRAN sigue siendo el lenguaje elegido, pero para aplicaciones de software de sistemas, de tiempo real o de productos empotrados, otros lenguajes tienen ventajas más significativas. COBOL, al igual que FORTRAN, ha alcanzado la madurez y es el lenguaje aceptado como “estándar” para aplicaciones de procesamiento de datos comerciales. Aunque el lenguaje ha sido a veces criticado por su falta de unidad. tiene excelentes posibilidades de definición de datos, es muy auto-documentado y proporciona soporte para un gran rango de técnicas algorítmicas relativas al procesamiento de datos en los negocios. ALGOL es el predecesor de muchos de los lenguajes de tercera generación y ofrece un repertorio extremadamente rico de construcciones procedimentales y de tipificación de datos. ALGOL ha sido extensamente usado en Europa, pero ha encontrado poca aceptación en Estados Unidos (exceptuando el entorno académico). Programación en Pseudocódigo seguirá usando ampliamente FORTRAN durante el siglo XXI. Tercera Generación: Los lenguajes de tercera generación (también denominados lenguajes de programación moderna o estructurada) están caracterizados por sus potentes posibilidades procedimentales, abstracción de datos, compilación de módulos en forma separada, orientación a objetos y estructuración de datos. Los lenguajes de esta clase se pueden dividir en tres amplias categorías, lenguajes de alto nivel de propósito general, lenguajes de alto nivel orientados a los objetos y lenguajes especializados. Los lenguajes especializados, han sido diseñados para satisfacer requisitos especiales y, a menudo, tienen una formulación y una sintaxis únicas. BASIC es un lenguaje que fue originalmente diseñado para enseñar programación en modo de tiempo compartido. El lenguaje parecía destinado a quedarse obsoleto a principios de los anos 70, pero con el advenimiento de las computadoras personales ha renacido. Existen cientos de versiones de BASIC. lo que hace difícil discutir las ventajas y las deficiencias del lenguaje. Sin embargo, se 18 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Lenguajes de alto nivel de propósito general. El lenguaje de alto nivel de propósito general más antiguo (también un lenguaje de base) ,ALGOL, ha servido como modelo para otros lenguajes de esta categoría. Sus descendientes, PL/l, PASCAL. Modula-2, C ,y Ada , han sido adoptados como lenguajes con potencial para un gran espectro de aplicaciones (p. ej.: para uso en áreas de ciencia e ingeniería, de productos empotrados, comerciales y/o aplicaciones de sistemas). PL/1 debería clasificarse más apropiadamente como lenguaje de generación 2,5. Fue el primer lenguaje de amplio espectro, desarrollado con un amplio rango de posibilidades que le permiten ser usado en muchas áreas de aplicación diferentes. PL/1 da soporte a aplicaciones convencionales de ciencia e ingeniería y de negocios, permitiendo la especificación de sofisticadas estructuras de datos, la multitarea, una compleja E/S, el procesamiento de listas y muchas otras posibilidades. Se han desarrollado subconjuntos del lenguaje para enseñar programación (PL/C), para su uso en aplicaciones de microprocesadores (PL/M) y para programación de sistemas (PL/S). Programación en Pseudocódigo aplicaciones de ciencia e ingeniería y de programación de sistemas (el lenguaje ha sido llamado “el FORTRAN de los 80”). PASCAL es un descendiente directo de ALGOL y contiene muchas de sus propias características: estructuración en bloques, fuerte triplicación de datos, soporte directo de la recursividad y otras características suplementarias. Ha sido implementado en computadoras de todo tipo. Modula-2 es un descendiente evolucionado de PASCAL y (como dirían algunos) una posible alternativa para el lenguaje de programación Ada. Modula2 junta las posibilidades de implementación directa del diseño, como el ocultamiento de información, la abstracción y la fuerte tipificación de PASCAL es un moderno lenguaje de programación desarrollado a principios de los años 70 para enseñar técnicas modernas de desarrollo de software (p. ej.: programación estructurada). Desde su introducción, PASCAL ha encontrado mucho apoyo en grandes audiencias de personal dedicado al desarrollo de software y es usado ampliamente en PT Bachiller en Informática 19 Informática Colegio Nacional de Educación Profesional Técnica datos, con las estructuras de control que soportan la recursividad y la concurrencia. Hasta ahora, el uso de Modula-2 en aplicaciones industriales ha estado muy limitado. El lenguaje de programación C fue originalmente desarrollado como lenguaje para implementaciones de sistemas operativos. El sistema operativo UNIX está implementado en C. Sin embargo, actualmente se ha construido una gran cantidad de productos de software, de aplicaciones empotradas y de software de sistemas, usando el lenguaje C. El lenguaje C fue desarrollado para el ingeniero de software sofisticado y contiene potentes posibilidades que le dan una considerable flexibilidad. Como otros lenguajes de esta categoría, C soporta estructuras de datos sofisticadas y tiene características de tipificación, hace un uso intensivo de los punteros y tiene un rico conjunto de operadores para el cálculo y la manipulación de datos. Además, permite al programador “acercarse a la máquina” al suministrar posibilidades similares al lenguaje ensamblador. Programación en Pseudocódigo tareas, así como un conjunto de características únicas como el paquete. Ada ha creado mucha controversia y continúa generándola. Sus adictos alaban su rica estructura de lenguaje y su enfoque de entorno Ada para la ingeniería del software en lugar de toda una parafernalia orientada al lenguaje. Lenguajes objetos. a los Aunque han aparecido docenas de lenguajes orientados a los objetos durante la pasada década, sólo unos pocos han tenido éxito y fama en el mercado: dialectos de C (p. ej.: C++ y Objective-C), Smalltalk y Eiffel. Smalltalk. un lenguaje "fundador" orientado a los objetos, se desarrolló Ada es un lenguaje desarrollado bajo contrato del Departamento de Defensa de EE UU como un nuevo estándar para sistemas de computadora de tiempo real y empotrado. Similar a PASCAL en notación y estructura (aunque más potente y complejo), Ada soporta un rico conjunto de posibilidades que incluyen la multitarea, el manejo de interrupciones, la sincronización y comunicación entre 20 orientados PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica originalmente a principio de los años 70 para explorar los conceptos de la orientación a los objetos. Hoy en día, hay disponibles versiones de Smalltalk para computadoras de todo tipo, aunque el uso del lenguaje para el desarrollo de productos y sistemas de calidad industrial está limitado. El uso de los dialectos de C orientados a los objetos se ha difundido mucho en la comunidad de usuarios de UNIX y entre los nuevos desarrolladores de sistemas orientados a los objetos. Basados en la fortaleza del propio C, los dialectos orientados a los objetos permiten llevar a cabo una suave transición a partir de este lenguaje de alto nivel, de propósito general y ampliamente usado. Eiffel es uno de los “nuevos” lenguajes orientados a los objetos que es suficientemente robusto como para su aplicación en la industria. Al igual que Smalltalk y los dialectos de C. Eiffel proporciona soporte directo para las definiciones de clases, la herencia, la encapsulación y el paso de mensajes. Lenguajes especializados. Programación en Pseudocódigo símbolos y el procesamiento de listas en problemas combinatorios. Usado casi exclusivamente por la comunidad de la inteligencia artificial, el lenguaje es especialmente adecuado para la prueba de teoremas, las búsquedas en árboles y otras actividades de resolución de problemas. PROLOG es otro lenguaje de programación que se ha usado mucho en la construcción de sistemas expertos. Al igual que LISP, PROLOG proporciona medios de soporte para la representación del conocimiento. APL es un lenguaje extremadamente conciso y potente para la manipulación de vectores y matrices. Contiene poco soporte para la tipificación de datos y Los lenguajes especializados están caracterizados por su inusual formulación sintáctica que ha sido especialmente diseñada para una aplicación particular. Actualmente se usan cientos de lenguajes especializados. En general, estos lenguajes tienen una base de usuarios mucho menor que los lenguajes de propósito general. Entre los lenguajes que han encontrado aplicación en la comunidad de la ingeniería del software están LISP, PROLOG, APL y FORTH. LISP es un lenguaje especialmente adecuado para la manipulación de PT Bachiller en Informática 21 Informática Colegio Nacional de Educación Profesional Técnica las construcciones estructuradas. Lo que APL proporciona es un rico conjunto de operadores computacionales. Ganando entusiastas entusiastas seguidores en la resolución de problemas matemáticos. FORTH es un lenguaje diseñado para el desarrollo de software de microprocesadores. El lenguaje soporta la definición de funciones de usuario (implementadas con notación postfija (polaca inversa)) que se ejecutan de forma orientada a pila proporcionando una gran eficiencia en velocidad y utilización de memoria. Cuarta Generación: A lo largo de la historia del desarrollo de software, siempre hemos intentado generar programas de computadora con cada vez mayores niveles de abstracción. Los lenguajes de la primera generación trabajaban a nivel de instrucciones máquina, el menor nivel de abstracción posible. Los lenguajes de segunda y tercer generación han subido el nivel de representación de los programas de computadora, pero aún hay que especificar distintos procedimientos algorítmicos perfectamente detallados. Durante la pasada década, los lenguajes de cuarta generación (L4G) han elevado aún más el nivel de abstracción. Programación en Pseudocódigo Los lenguajes de esta generación, al igual que los lenguajes de inteligencia artificial, contienen una sintaxis distinta para la representación del control y para la representación de las estructuras de datos. Sin embargo, un L4G representa a estas estructuras en un mayor nivel de abstracción, eliminando la necesidad de especificar los detalles algorítmicos. Un ejemplo de lenguajes de cuarta generación son SQL y QBE Los lenguajes de cuarta generación pueden ser divididos en las siguientes categorías: Lenguaje de Petición Hasta ahora, la gran mayoría de los 4GL se han desarrollado para ser usados conjuntamente con aplicaciones de bases de datos. Tales Los lenguajes 4GL o lenguajes de cuarta generación fueron proyectados para estar más cerca del lenguaje natural. Los lenguajes para acceder a las bases de datos son generalmente descritos como 4GL. 22 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica lenguajes de petición permiten al usuario manipular de forma sofisticada la información contenida en una base de datos previamente creada. Algunos lenguajes de petición tienen una sintaxis compleja que no es más sencilla (en algunos casos peor) que la de los lenguajes de tercera generación. Generadores de Programas Los generadores de programas son otra clase de 4GL, aunque algo más sofisticado. Más que basarse en una base de datos previamente definida, un generador de programas permite al usuario crear programas en un lenguaje de tercera generación usando notablemente menos sentencias. Estos lenguajes de programación de muy alto nivel hacen un gran uso de la abstracción de datos y de procedimientos. Programación en Pseudocódigo además de proporcionar medios para la modelización de datos. Los lenguajes de especificación formal se pueden considerar L4G cuando producen código máquina ejecutable. Por último, las herramientas utilizadas en entornos de computadoras personales (p. ej.: hojas de cálculo, sistemas de bases de datos, Hypercard para el Macintosh) permiten al usuario “programar” a un nivel más alto de abstracción del que se disponía previamente. Quinta Generación: El lenguaje de quinta generación es programación que utiliza una interface de desarrollo gráfica para crear código fuente que es usualmente compilado usando un compilador de 3era o 4ta generación. Otros Lenguajes de Cuarta Generación. Aunque los lenguajes de petición y los generadores de programas son los L4G más comunes, existen otras categorías. Los lenguajes de soporte a la toma de decisiones permiten que los no programadores lleven a cabo una gran variedad de análisis qué pasa si, que van desde los simples modelos de hojas de cálculo bidimensionales hasta los sofisticados sistemas de modelos estadísticos y de investigación operativa. Los lenguajes de prototipos se han desarrollado para asistir en la creación de prototipos facilitando la creación de interfaces de usuario y de diálogos, PT Bachiller en Informática 23 Informática Colegio Nacional de Educación Profesional Técnica Microsoft, Borland, IBM, y otras compañías hacen productos de programación visual para desarrollar aplicaciones por ejemplo en Java. La programación visual le permite a uno fácilmente visualizar las jerarquías de las clases orientadas a objetos y arrastrar iconos para ensamblar componentes del programa. Microbrew AppWare e IBM VisualAge para Java son ejemplos de 5GL. Aquí se muestran las épocas en que fueron desarrollados algunos lenguajes de programación. Basado en el cálculo numérico Lenguaje Época de creación Creador FORTRAN 1955-1957 Backus IAL , ALGOL 1960-1962 Naur NPL, MPPL, PL/I 1963 IBM Orientado a Negocios Lenguaje COBOL Época de creación Creador 1959-1962 Depto. de defensa (EE. UU. AA.) Para Inteligencia Artificial Lenguaje LISP COMIT SNOBOL Prolog 24 Época de creación Creador 1950 -1959 McCarthy Yngve Laboratorios Bell Programación en Pseudocódigo Para Sistemas Lenguaje C Época de creación Creador 1970 Ritchie Concepto de Sistemas Operativos Conjunto de programas que se integran con el hardware para facilitar al usuario, el aprovechamiento de los recursos disponibles. Algunos de sus objetivos principales son: Provee de un ambiente conveniente de trabajo. o Hace uso eficiente del Hardware. o Provee de una adecuada distribución de los recursos. o Para un Sistema Operativo real deberá satisfacer las siguientes funciones: o o o Gobierna el Sistema. Asigna los recursos. Administra y controlar la ejecución de los programas. Un sistema de computo en muchos casos cuenta con demasiados recursos para ser utilizados por un solo usuario, es en estos casos cuando se puede dar servicio a varios procesos. Llamadas al Sistema. El Sistema Operativo en conjunto con el Hardware aparecen al usuario como un solo dispositivo con un conjunto de instrucciones más flexibles y variadas a las que se conoce como Llamadas al Sistema (System Callings). PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Intérprete de Comandos. También conocido por su nombre en inglés, Shell, es un programa que interpreta las órdenes del usuario y las convierte en Llamadas al Sistema. Programación en Pseudocódigo Es el programa o programas que tienen todas las computadoras modernas, el usuario de un equipo de computo no tiene que preocuparse de como funciona, por ejemplo, una unidad lectora de disco, sólo necesita pedirle Núcleo (o Kernel). Es la parte del Sistema Operativo que se encarga de sincronizar la activación de los procesos y definir prioridades. Programas del Sistema. Son programas de servicio que debe ser solicitados explícitamente por los usuarios. Como ejemplos de estos tenemos: 1. Compiladores. Son programas que traducen Programas Fuente en programas Objeto. 2. Ensambladores. Traducen programas escritos con mnemónicos a lenguaje de máquina. 3. Editores. Son programas que permiten escribir textos y guardarlos en memoria secundaria. 4. Utilerías de Archivos. Programas para dar mantenimiento a los archivos. 5. Bibliotecas. Programas que contienen rutinas para realizar funciones frecuentemente requeridas. Estas funciones pueden ser ligadas a los programas escritos por el usuario. Programas de Aplicación. Programas externos al sistema, utilizados para realizar tareas específicas como simulación, creación y edición de gráficas e imágenes, etc.. PT Bachiller en Informática 25 Informática Colegio Nacional de Educación Profesional Técnica al sistema operativo que lo lea o escriba en el disco mediante un comando. El más comúnmente usado es el MS-DOS. Conjunto de programas que sirven como interfaz entre el usuario (Sirve como agente de intercambio de información entre la computadora y el usuario.) y la computadora, además de que administran los recursos de la misma (Entendiéndose como recursos: Memoria, Disco Duro, Procesador, Monitor, Etc.). Evolución de Sistemas Operativos Los sistemas operativos, al igual que el hardware , han sufrido cambios a través del tiempo, los cuales se pueden agrupar en generaciones. La evolución del hardware ha marcado el paralelismo de la evolución de los sistemas operativos. Programación en Pseudocódigo multiprogramación, en los cuales se utilizan varios procesadores en un solo sistema, con la finalidad de incrementar el poder de procesamiento de la máquina. El programa especificaba tan sólo que un archivo iba a ser escrito en una unidad de cinta con cierto número de pistas y cierta densidad. El sistema operativo localizaba entonces una unidad de cinta disponible con las características deseadas, y le indicaba al operador que montara una cinta en esa unidad. Tercera Generación (primera mitad de los 70’s). En esta época surge la familia de computadores IBM/360 diseñados como sistemas para uso general, por lo que requerían manejar grandes volúmenes de información de distinto Primera Generación (Finales de la década de los 50's). En esta década aparecen los sistemas de procesamiento por lotes, donde los trabajos se reunían por grupos o lotes. Cuando se ejecutaba alguna tarea, ésta tenía control total de la máquina. Al terminar cada tarea, el control era devuelto al sistema operativo, el cual limpiaba, leía e iniciaba la siguiente tarea. Aparece el concepto de nombres de archivo del sistema para lograr independencia de información. Los laboratorios de investigación de General Motors poseen el crédito de haber sido los primeros en poner en operación un sistema operativo para su IBM 701. Segunda Generación (Mitad de la década de los 60's). En esta generación se desarrollan los sistemas compartidos con 26 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo tipo, lo cual provocó una nueva evolución de los sistemas operativos: los sistemas de modos múltiples, que soportan simultáneamente procesos por lotes, tiempo compartido, procesamiento en tiempo real y multiprocesamiento. Cuarta Generación (Mitad de la década de los 70’s hasta nuestros días). Los sistemas operativos conocidos en la época actual son los considerados sistemas de cuarta generación. Con la ampliación del uso de redes de computadoras y del procesamiento en línea es posible obtener acceso a computadoras alejadas geográficamente a través de varios tipos de terminales. Con estos sistemas operativos aparece el concepto de máquinas virtuales, en el cual el usuario no se involucra con el hardware de la computadora con la que se quiere conectar y en su lugar el usuario observa una interfaz gráfica creada por el sistema operativo. Estudio individual Competencia Información de Identificar el proceso de desarrollo del software, características y conceptos relacionados.. El alumno: • • Elaborará resumen mostrando los conceptos de lenguaje de programación y su evolución. Diseñará un cuadro sinóptico ubicando las generaciones y los lenguajes de programación que las integran. Como habrá notado los lenguajes de programación, no son nuevos, existe una historia que los respalda, algunos han evolucionado, otros prácticamente han desaparecido y han surgido nuevos. Además, como pudiste apreciar, existen lenguajes de programación enfocados a las distintas áreas del conocimiento humano, algunos son aplicables a las áreas científicas, otros a las actividades administrativas de la industria y el comercio y otros más a actividades recreativas como lenguajes de programación que se usan para crear los juegos que a ti te agrada jugar en el computador. PT Bachiller en Informática 27 Informática Colegio Nacional de Educación Profesional Técnica 1.1.2 Tipos de Software Programación en Pseudocódigo Server y Professional son sistemas operativos de red. Software de sistema (sistemas operativos) La estructura básica que deberá obedecer cualquier sistema operativo es: Un Sistema Operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un Sistema Operativo es, entonces, lograr que el Sistema de computación se use de manera cómodoa, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. Los sistemas opertivos se clasifican en: A) CARGADOR. Cualquier programa que requiere ser ejecutado en la computadora, deberá ser transferido desde su lugar de residencia a la memoria principal. Sistema operativo monousuario. Este tipo de sistema operativo puede ser utilizado solamente por un usuario a la vez; Por ejemplo: MS-DOS, OS/2 v. 3.0, Windows 95, Windows 98, Windows Me y Windows XP son sistemas operativos monousuarios. B) CARGADOR PARA EL SISTEMA OPERATIVO. Este programa se encarga de transferir desde algún medio de almacenamiento externo (disco, cinta o tambor) a la memoria principal, los programas del sistema operativo que tienen como finalidad establecer el ambiente de trabajo del equipo de Sistema operativo multiusuario. Es un sistema operativo que puede ser utilizado por varios usuarios al mismo tiempo. Por ejemplo: Unix, Solaris y Windows 2000 (Terminal server) son sistemas operativos multiusuarios. Sistema operativo de red. Sistema operativo que permite la conexión entre varias computadoras personales y compartir sus recursos entre ellas. Por ejemplo: Novell, Windows NT, Windows 2000 Professional, Windows 2000 Server, Windows XP Professional y Windows 2003 28 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica cómputo. Existe un programa especial almacenado en memoria ROM que se encarga de accesar a este programa cargador. Cuando el sistema operativo esta cargado en memoria toma el control absoluto de las operaciones del sistema. C) CARGADOR INCLUIDO EN EL SISTEMA OPERATIVO. Su función es cargar a memoria todos los archivos necesarios para la ejecución de un proceso. D) SUPERVISOR (EJECUTIVO O MONITOR). Es el administrador del sistema que controla todo el proceso de la información por medio de un gran número de rutinas que entran en acción cuando son requeridos. Funge como enlace entre los programas del usuario y todas las rutinas que controlan los recursos requeridos por el programa para posteriormente continuar con su ejecución. El supervisor también realiza otras funciones como son: - - Programación en Pseudocódigo que permiten seleccionar diversas operaciones de entre los que dispone el comando. F) UTILERÍA DE SISTEMA. Son programas o rutinas del sistema operativo que realizan diversas funciones de uso común o aplicación frecuente como son: clasificar, copiar e imprimir información. Funciones básicas de un sistema operativo PROGRAMAS DE CONTROL: ADMINISTRACIÓN DE TRABAJOS. Cuando existen varios programas en espera de ser procesados, el sistema Administra la memoria. Administración de las rutinas que controlan el funcionamiento de los recursos de la computadora. Manejo de Archivos. Administración y control de la ejecución de los programas. E) LENGUAJE DE COMUNICACIÓN. Es el medio a través del cual el usuario interactúa directamente con el sistema operativo y esta formado por comandos que son introducidos a través de algún dispositivo. Generalmente un comando consta de dos partes, la primera formada por una palabra que identifica el comando y la acción a realizar y la segunda parte por un conjunto de valores o parámetros PT Bachiller en Informática 29 Informática Colegio Nacional de Educación Profesional Técnica operativo debe decidir el orden de procesamiento de ellos, así como asignar los recursos necesarios para su proceso. ADMINISTRACIÓN DE RECURSOS. Mediante está función el sistema operativo esta en capacidad de distribuir en forma adecuada y en el momento oportuno los diferentes recursos (memoria, dispositivos, etc.,...) entre los div, para esto, lleva un registro que le permite conocer que recursos están disponibles y cuales están siendo utilizados, por cuanto tiempo y por quien, etc. CONTROL DE OPERACIONES DE ENTRADA Y SALIDA. Mediante esta actividad el sistema operativo decide que proceso hará uso del recurso, durante cuánto tiempo y en que momento. Programación en Pseudocódigo utilerías y se pueden clasificar en tres tipos: A) UTILERÍAS DEL SISTEMA. Se ejecutan bajo el control del sistema operativo y se utilizan para preparar algunos recursos usados por el sistema. Son de uso interno. B) UTILERÍAS PARA ARCHIVOS. Manejan información de los archivos tales como imprimir, clasificar, copiar, etc. C) UTILERÍAS INDEPENDIENTES. Realizar funciones que se relacionan con la iniciación de dispositivos de Entrada/Salida, carga del sistema operativo, etc. TIPOS DE SISTEMA OPERATIVO. El sistema operativo como controlador y supervisor de todas las actividades que ADMINISTRACIÓN DE LA MEMORIA. Supervisa que áreas de memoria están en uso y cual están libre, determina cuanta memoria asignará a un proceso y en que momento, además libera la memoria cuando ya no es requerida para el proceso. RECUPERACIÓN DE ERRORES. El sistema operativo contiene rutinas que intentan evitar perder el control de una tarea cuando se suscitan errores en la trasferencia de información hacia y desde los dispositivos de entrada / salida. PROGRAMAS DE PROCESO. El sistema operativo contiene programas de servicios que sirven de apoyo al procesamiento de los trabajos, se conocen también como 30 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica realiza la computadora tiene características que le permiten soportar técnicas avanzadas de procesamiento de datos como: - La utilización de Lenguaje de Alto Nivel. Tiempo Compartido. Multiprogramación. Memoria Virtual. Existen dos tipos generales de sistemas operativos: Los basados en caracteres y los de interfaz gráfica (ambientes amigables). El sistema basado en caracteres es ejemplificado perfectamente con el sistema operativo utilizado por las computadoras IBM y compatibles. El Sistema Operativo está listo para recibir un comando desplegando el tipo de indicador (A> o C>) en la pantalla; en donde el usuario escribe carácter por carácter el comando que se desea ejecutar. Programación en Pseudocódigo Cada programa en Windows tiene reservada un área de la pantalla conocida con el nombre de ventana. Un sistema operativo que se opera mediante el uso de imágenes y símbolos en vez de palabras se denomina interfaz gráfica para el usuario, o GUI (Graphic User Interface). Software de Desarrollo (lenguajes de programación). Los lenguajes de programación nos permiten crear aplicaciones para resolver problemas específicos de empresas o personas a través de la computadora. Un lenguaje de programación esta formado por un conjunto de palabras (Instrucciones) y una serie de reglas para escribir adecuadamente estas palabras (Sintaxis) con la finalidad de que sean entendibles por la computadora. Ante las justificadas quejas de los usuarios por la falta de programas amigables, los desarrolladores de software respondieron añadiendo menús y mensajes en pantalla. Los menús mejoran en mucho la cordialidad de los programas, reduciendo el número de comandos que se necesitan conocer. La Macintosh logró crear la primera interfaz gráfica, posteriormente Microsoft introdujo la interfaz gráfica Windows para las computadoras IBM y compatibles. PT Bachiller en Informática 31 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Recordando que un programa es un conjunto de instrucciones con secuencia lógica para realizar una tarea especifica en la computadora. Los lenguajes de programación se clasifican de acuerdo a la forma en que se traducen las instrucciones del programa. Lenguaje de programación INTÉRPRETE. Este tipo de lenguaje traduce y ejecuta al mismo tiempo las instrucciones de un programa. Si encuentra un error en la sintaxis de una instrucción se detiene la ejecución del programa y se continúa en la siguiente instrucción hasta que se corrige el error encontrado en el programa. Observación Competencia Analítica Identificar las diferencias interprete y un compilador. entre un El alumno: • Observará los diagramas anteriormente mostrados. Lenguaje de programación compilador. Lenguaje que primero traduce las instrucciones que componen a un programa y puede ser ejecutado siempre y cuando no tenga errores de sintaxis el programa. Otra característica principal de un lenguaje compilador es que el programa compilado podrá ser ejecutado sin necesidad de que la computadora tenga instalado el lenguaje de programación. 32 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica • • Identificará las diferencias entre un intérprete y un compilador. Elabora un mapa conceptual ubicando las funciones de un intérprete y un compilador. Software de aplicación (paquetes de escritorio y sistemas) Los programas de aplicación están diseñados para realizar una tarea específica dependiendo de la finalidad para la cual fueron creados. Existe una gran variedad de programas de aplicación de acuerdo a su uso. Procesadores de palabras. Programas orientados a la creación de documentos de texto, tienen las funciones similares a las de una máquinas de escribir con la diferencia de tener grandes ventajas en su uso con respecto a estas. Por ejemplo: Ami pro, Works, Word Perfect, Microsoft Word son procesadores de palabras. Programación en Pseudocódigo Estos programas hacen mas accesible el área de dibujo para que todas las personas puedan desarrollar su creatividad. Por ejemplo: Autocad, Page Maker, Photo Draw, Front Page, Corel y Publisher son programas de diseño gráfico y autoedición. Navegadores. Programas que nos permiten navegar por la red mundial de la información (INTERNET) y aprovechar al máximo las bondades que nos ofrece Internet. Por ejemplo: NetScape, Opera e Internet Explorer son algunos programas navegadores. Multimedia. Programas orientados a la creación de material donde usted podrá combinar Imágenes, Sonido y Texto para desarrollar material atractivo en la computadora. Hojas de calculo. Programas orientados al manejo de información donde se requiera realizar cálculos matemáticos. Una hoja de calculo es similar a las hojas tabulares utilizadas en contabilidad y se desarrollaron para que realicen las mismas funciones que estas con la ventaja de que los cálculos y la actualización de la información se puede hacer mas rápido, sencillo y con menos margen de error. Por ejemplo: Lotus, Works, Quatro pro y Microsoft Excel son hojas de calculo. Diseño gráfico y autoedición. Programas orientados al diseño y creación de material publicitario, de dibujo técnico y artístico. PT Bachiller en Informática 33 Informática Colegio Nacional de Educación Profesional Técnica Por ejemplo: Flash, Director, Microsoft Producer, Movie Maker, Corel RAVE y Media Player son programas de Multimedia. Manejadores de bases de datos. Programas que permiten manipular grandes cantidades de información, son utilizados para administrar los sistemas de información de las empresas como control de inventario, facturación, control escolar, recursos humanos, etc. Por ejemplo: SQL, Access, Visual FoxPro son programas manejadores de bases de datos. Antivirus. Programas orientados a la protección de las computadoras que hayan sido infectadas por los programas denominados virus. Por ejemplo: Virus Scan, Norton Antivirus y Panda son programas antivirus. Presentadores gráficos. Estos programas permiten generar material de apoyo para la realización de una presentación. Donde se podrá utilizar Texto, Gráficos, Sonidos, Efectos especiales en los archivos para lograr un mejor impacto con la audiencia. Por ejemplo: Freelance y PowerPoint son programas para realizar presentaciones gráficas. Programas de comunicaciones. Programas orientados a la comunicación entre computadoras. Por lo general son utilizados cuando se maneja una red de computadoras, o se quiere dar soporte a distancia de una computadora a otra. Por ejemplo: PC Anywhere y Outlook son programas de comunicación. 34 Programación en Pseudocódigo Existen diferentes tipos de software, Software de sistemas (sistemas operativos) el que nos sirve para administrar los recursos del computador; Software de desarrollo (lenguajes de programación) con el que desarrollamos programas para realizar tareas necesarias en el ámbito laboral en que nos desempeñamos; y software de aplicación (paquetes de escritorio y sistemas) que es software desarrollado para facilitarnos el trabajo con este tipo de software tu estas ya familiarizado pues ya conoces word, excel, power point etc. Estudio individual Competencia científico teórica. Identificar los tipos de software y el propósito para el que fueron desarrollados. El alumno: • • Analizará el tema para identificar los tipos de software existentes. Elaborará resumen que deberá contener: el tipo de software que existe, sus características y funciones. (Qué es software de sistema, cuál es su estructura básica y su función; que es el software de desarrollo; qué es el software de aplicación y cuales son los más usados). 1.2.1 Tratamiento del problema PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Análisis del problema. Cuando se nos presenta un problema, es necesario, comprender lo que queremos hacer, una vez que se ha comprendido lo que se desea de la computadora, es necesario analizar el problema y así definir cuales van a ser los pasos a seguir para la solución de este, y entonces podemos definimos cuales son : 1. Los datos de entrada. 2. Cual es la información que se desea producir (salida). 3. Los métodos y fórmulas que se necesitan para procesar los datos. Una recomendación muy práctica 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. Diagramas de flujo. Es aquel diagrama que utiliza símbolos estándar y en el que cada paso del algoritmo se visualiza dentro del símbolo adecuado y el orden en que los pasos se ejecutan se indica conectándolos con flechas llamadas "líneas de flujo" porque indican el flujo lógico del algoritmo. Es un medio de presentación visual y gráfica del flujo de datos, las operaciones ejecutadas y la secuencia en que se ejecutan dentro del algoritmo. PT Bachiller en Informática 35 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Los diagramas de flujo son fáciles de diseñar porque el flujo lógico del algoritmo se muestra en un dibujo (símbolo) en lugar de con palabras. Sin embargo, tienen una limitación grande: son difíciles de actualizar y complejos de leer si ocupan varias páginas; cuando se tienen que modificar, resulta difícil por su carácter gráfico. Los símbolos utilizados en los diagramas de flujo han sido normalizados por las organizaciones ANSI (American National Institute) y por ISO (International Standard Organization). Algunos de los símbolos más empleados en los diagramas de flujo son los siguientes: A. Inicio / Fin Representa el inicio o el fin de un programa. B. Entrada/Salida Representa cualquier tipo de introducción de datos o salida de información a la pantalla. C. Proceso Indica cualquier tipo de operación que pueda originar un cambio de valor, operaciones aritméticas, etc. 36 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo D. Decisión Indica operaciones lógicas de comparación de valores. En función al resultado de la misma se determinará el camino a seguir. E. Conector Enlaza dos partes de un diagrama de flujo. F. Líneas de Flujo sentido de operaciones. Muestran ejecución de el las G. Impresora Se usa como símbolo de salida de información a través de impresora. Estudio individual Competencia Lógica Aplicar el uso de diagramas de flujo en un caso real. El alumno: • Elaborará un diagrama de flujo que muestre el proceso a seguir para cambiar una llanta ponchada del auto, recordar que no se debe omitir o dar por obvio ningún paso. Comparación del resultado con otros compañeros Competencia para la Vida Competencia Analítica Identificar los simbolos usados en los diagramas de flujo y su función. Compartir experiencias y razonamientos con sus compañeros. El alumno: • • Analizará cada uno de los símbolos que se usan para elaborar un diagrama de flujo. Elaborará un gráfico donde se muestre por separado el uso de cada uno de los símbolos, describiendo con sus propias palabras su uso y proporcionando ejemplos. Realización del ejercicio PT Bachiller en Informática 37 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo El alumno: • Formará equipo de trabajo de 3 compañeros. Comparará el ejercicio anteriormente realizado exponiendo a sus compañeros el razonamiento seguido. Elaborará nuevamente el ejercicio ahora en equipo con las conclusiones tomadas. • • Diseño solución: del procedimiento de ALGORITMO: Por algoritmo se entiende "una lista de instrucciones donde se especifica una sucesión de operaciones necesarias para resolver cualquier problema de un tipo dado". Los algoritmos son modos de resolución de problemas, cabe aclarar que no sólo son aplicables a la actividad intelectual, sino también a todo tipo de problemas relacionados con actividades cotidianas. El algoritmo es de carácter general y puede aplicarse a cualquier operación matemática o a cualquier problema. ♥ Preciso.- Esto quiere decir que debe indicar el orden en cada paso y no puede tener ambigüedades. ♥ Definido.- Es decir, si se sigue dos veces, obtiene el mismo resultado cada vez. ♥ Finito.- Que tiene fin, o sea número definido de pasos. ♥ Debe ser sencillo y legible. ♥ Modular. ♥ Eficiente y efectivo. ♥ Debe tener al menos una salida y ésta debe ser tangible. Todo problema de cómputo se puede resolver ejecutando una serie de acciones en un orden específico. Un procedimiento para resolver un problema en términos de: 1. Las acciones por ejecutar y 2. El orden en que dichas acciones deben ejecutarse. Un algoritmo es una serie de pasos lógicos para realizar una acción, programa o tarea ya que es el primer paso para realizar un programa. Y tiene ciertas características que son: 38 un PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Así que el lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. Inicio Al diseñar nuestro algoritmo es necesario especificar siempre cual es su inicio. Declaración constantes. de variables y Variables. Una variable es un nombre asociado a un elemento de datos que está situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecución de un programa. Toda variable pertenece a un tipo de dato concreto. La lista_de_variables es uno o más nombres de variables separados por comas: var listaVar1:tipo1;...;listaVarn:tipon; Una variable no representa más que una porción de memoria en donde guardamos un dato que dependerá del tipo al que pertenezca la variable. A diferencia de una constante, el valor de una variable puede cambiar durante la ejecución de un programa. Otra diferencia, es que a una variable no basta con declararla, sino que también es necesario iniciarla. Esto se refiere a darle un valor inicial, y es importante ya que si no lo hacemos, igual nos encontramos con errores cuando ejecutemos el programa. En la declaración de una variable se debe indicar el tipo al que pertenece. Así tendremos variables enteras, reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la vida de una variable: Declaración de variables. Esta es la primera fase en la vida de cualquier variable. La forma de declarar variables es muy sencilla. Esta sección debe comenzar con la palabra reservada var, seguida de una lista de parejas lista_de_variables=tipo_al_que_pertenece n. Cada par debe ir seguido por un punto y coma. PT Bachiller en Informática 39 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo fin. Ejemplo de declaración de variables: ... var I, J, K : Integer; (* valores enteros *) Contador : Integer; Radio : Real; (* valor real *) Letra : Char; (* un caracter *) ... En este ejemplo se declaran seis variables. Las cuatro primeras son de tipo entero. La quinta es de tipo real, o sea, un número con parte decimal. Y la sexta es un carácter. Utilización de variables. Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que presenta un mayor abanico de posibilidades. A continuación se presentan unas cuantas: Iniciación de variables. Esto no es más que darle un valor inicial a una variable. Así como lo primero que se hace con una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se hace para evitar posibles errores en tiempo de ejecución, pues una variable tiene un valor indeterminado después de declararla. Principalmente, existen dos maneras de otorgar valores iniciales a variables: Participar en una expresión: n := (Max - Min) div I Incrementar su valor: i := i + 1 Controlar un bucle: for i:=1 to 10 do ... Checar una condición: if i<10 then ... Constantes. Una constante es un dato cuyo valor no puede cambiar durante la ejecución del programa. Recibe un valor en el momento de la compilación y este permanece inalterado durante todo el programa. Mediante una sentencia de asignación. Mediante uno de los procedimientos de entrada de datos (read o readln). Veamos un ejemplo que reúne los dos casos: inicio ... i:=1; readln(n); while i < n do inicio (* cuerpo del bucle *) i := i + 1 fin; ... 40 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Las constantes se declaran en una sección que comienza con la palabra reservada const . Después de declarar una constante se puede usar en el cuerpo principal del programa. Tienen varios usos: ser miembro en una expresión, en una comparación, asignar su valor a una variable, etc. En el siguiente ejemplo se contemplan varios casos: const Min = 0; Max = 100; Sep = 10; var i : integer; inicio i := Min; while i < Max do inicio writeln(i); i := i + Sep fin fin. - Programación en Pseudocódigo Constantes literales(sin nombre) Constantes declaradas (con nombre) Constantes expresión Constantes literales Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no tienen nombre. En el siguiente ejemplo tienes un par de constantes literales (el 3, el 4, y el 3.1416): VolumenEsfera := 4/3 * 3.1416 * Radio * Radio * Radio; Constantes declaradas. También llamadas constantes con nombre, son las que se declaran en la sección Const asignándoles un valor directamente. En este ejemplo se declaran tres constantes (Min, Max y Sep). En la primera línea del cuerpo del programa se asigna una constante a una variable. En la siguiente, se usa una constante en una comparación. Y en la cuarta, la constante Sep interviene en una expresión que se asigna a una variable. El resultado de ejecutar este programa sería una impresión en pantalla de los números: 0, 10, 20, 30, 40, 50, 60, 70, 80 y 90. Se puede hacer una división de las constantes en tres clases: PT Bachiller en Informática 41 Informática Colegio Nacional de Educación Profesional Técnica Por ejemplo: - const Pi = 3.141592; (* valor real *) Min = 0; (* entero *) Max = 99; (* entero *) Saludo = \'Hola\'; (* cadena caract. *) Constantes expresión. También se declaran en la sección Const pero a estas no se les asigna un valor directamente, sino que se les asigna una expresión. Esta expresión se evalúa en tiempo de compilación y el resultado se le asigna a la constante. Ejemplo: const Min = 0; Max = 100; Intervalo = 10; N = (Max - Min) div Intervalo; Centro = (Max - Min) div 2; - Programación en Pseudocódigo Por un lado, detectar errores en las operaciones. Por el otro, determinar cómo ejecutar estas operaciones. Proceso Una vez estructurado nuestro algoritmo, es necesario realizar el proceso ejecutando paso a paso ya con los datos que se manejaran en el algoritmo a fin de obtener el resultado, aquí podremos definir la efectividad y exactitud de la estructura del algoritmo. Escritura del Resultado. Como mencionamos anteriormente todo algoritmo deberá tener como mínimo una salida y ésta será la escritura del resultado. Fin Petición de datos. Los datos es el conjunto de valores que puede tomar durante el programa. Si se le intenta dar un valor fuera del conjunto se producirá un error. El tipo de dato le indica al compilador del lenguaje de programación dos cosas: el número de bytes requeridos para guardar el dato, y la manera en que se manipulara y operara el dato. La asignación de tipos a los datos tiene dos objetivos principales: 42 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Igualmente como indicamos el inicio del algoritmo, también indicamos el fin del mismo. Escritura de pseudocódigo. la solución en Es un lenguaje muy parecido al lenguaje utilizado para escribir programas por computadora, es decir, un lenguaje de pseudoprogramación. El pseudocódigo se concibió para superar las dos principales limitaciones de los lenguajes algorítmicos gráficos: son lentos de crear y difíciles de modificar sin un nuevo dibujo. Por otra parte, el pseudocódigo es más fácil de utilizar ya que es similar al nuestro, es una mezcla de lenguaje natural y símbolos, términos y otras características utilizadas en lenguajes de alto nivel (palabras reservadas). Las principales características de los pseudocódigos son: 1. 2. 3. 4. 5. 6. Programación en Pseudocódigo general en los diferentes lenguajes de programación: PSEUDOCÓDIGO, VARIABLES, INICIO, FIN, LEE, ESCRIBE, IMPRIME, IF_THEN_ELSE, CASE OF, FOR DO, WHILE DO REPEAT UNTIL, ARRAY. Deben iniciar con el nombre del pseudocódigo, seguido de la declaración de variables y luego el cuerpo del pseudocódigo: PSEUDOCÓDIGO nombre DECLARACIONES DE VARIABLES INICIO \\ CUERPO DEL PSEUDOCÓDIGO FIN Ejemplo: Diseñar un pseudocódigo que lea 3 números, los sume e imprima su resultado. Utilizan los operadores Aritméticos, Relacionales y Lógicos. Los nombres de sus identificadores. (variables, constantes, nombre del pseudocódigo, etc.), deben cumplir con las reglas para la creación de los mismos. Se pueden incluir comentarios dentro del pseudocódigo para hacerlo más entendible, utilizando dos diagonales invertidas [\\]. Se debe dejar una indentación (sangría o margen) en los bloques de instrucciones. Usa ciertas palabras claves (reservadas) utilizadas de modo PT Bachiller en Informática 43 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo PSEUDOCÓDIGO sumatoria VARIABLES eN1, eN2, eN3, eSuma: Entero INICIO ESCRIBE ´Dame tres números:´ LEE eN1, eN2, eN3 eSuma = eN1 + eN2 + eN3 ESCRIBE ´El resultado de la suma es: ´, eSuma FIN Prueba de Escritorio Se denomina prueba de escritorio a la acción de realizar paso a paso las instrucciones escritas en el pseudocódigo con datos reales y siguiendo tanto la operación y acciones que se especificaron así como anotando los resultados obtenidos. Así nos aseguraremos que nuestro pseudocódigo funciona a la perfección, esto nos facilitará la construcción del programa. Estudio individual Construcción de programa en lenguaje de programación. Competencia Lógica Elaborar algoritmos estructura descrita. siguiendo la El alumno: • • Elaborará un algoritmo para determinar si un número es par. Repetirá el algoritmo modificando el valor del número inicial para probar su funcionalidad. Elaborado, y probado nuestro pseudocódigo, nos encontramos listos para construir nuestro programa en el lenguaje que se nos haya designado. La diferencia es que ahora deberemos codificar las instrucciones que anotamos en el pseudocódigo de Consulta con el docente Competencia para la Vida Consultar con el P.S.A. elaboración del ejercicio. la correcta El alumno: • 44 Consultará con el P.S.A. la correcta elaboración del algoritmo. PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo acuerdo a la estructura, instrucciones, operadores tanto lógicos como aritméticos que cada lenguaje de programación requiere para su elaboración. Compilación o Interpretes. Compilador. Un compilador es un programa que lee el código escrito en un lenguaje (lenguaje origen), y lo traduce o traduce en un programa equivalente escrito en otro lenguaje (lenguaje objetivo). Como una parte fundamental de este proceso de traducción, el compilador le hace notar al usuario la presencia de errores en el código fuente del programa. Además el compilador de C++ al realizar su tarea realiza una comprobación de errores en el programa, es decir, revisa que todo este en orden por ejemplo variables y funciones bien definidas, revisa todo lo referente a cuestiones sintácticas, esta fuera del alcance del compilador que por ejemplo el algoritmo utilizado en el problema funcione bien. La siguiente figura muestra los pasos para tener un programa ejecutable desde el código fuente. El C++ es un lenguaje que utiliza un compilador y su trabajo es el de llevar el código fuente escrito en C++ a un programa escrito en lenguaje máquina. Un programa en código fuente es compilado obteniendo un archivo parcial (un objeto) que tiene extensión obj luego el compilador invoca al linker que convierte al archivo objeto en un ejecutable con extensión exe que como ya sabemos es un archivo que esta en formato binario (ceros y unos) y que puede funcionar por si solo. PT Bachiller en Informática 45 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Diferencia entre Compilador e Intérprete. Los compiladores difieren de los intérpretes en varios aspectos: Un programa que ha sido compilado puede correr por si solo, pues en el proceso de compilación se lo transformo en otro lenguaje (lenguaje máquina). Interprete. Los interpretes en lugar de producir un Lenguaje objetivo, como en los compiladores, lo que hacen es realizar la operación que debería realizar el Lenguaje origen. Un intérprete lee el código como esta escrito y luego lo convierte en acciones, es decir, lo ejecuta en ese instante. Un intérprete traduce el programa cuando lo lee, convirtiendo el código del programa directamente en acciones. La ventaja del intérprete es que dado cualquier programa se puede interpretarlo en cualquier plataforma Existen lenguajes que utilizan un Interprete, como por ejemplo JAVA, y su interprete traduce en el instante mismo de lectura, el código en lenguaje máquina para que pueda ser ejecutado. La siguiente figura muestra funcionamiento de un interprete. 46 el PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica (sistema operativo), en cambio el archivo generado por el compilador solo funciona en la plataforma en donde se lo ha creado. Pero por otro lado un archivo compilado puede ser distribuido fácilmente conociendo la plataforma, mientras que un archivo interpretado no funciona si no se tiene el intérprete. Hablando de la velocidad de ejecución una archivo compilado es de 10 a 20 veces más rápido que un archivo interpretado. Así, según el lenguaje de programación que se haya utilizado será compilado o traducido en su respectivo software. Ejecución del programa. Ejecución y Verificación de errores: introducir el programa en la memoria, ejecutarlo y probar sus resultados, corrigiendo los errores ya que los errores detectados por compilados y traductores son únicamente en su sintaxis y no en la lógica del programa, en ocasiones, será necesario realizar nuevamente pruebas de escritorio que nos permitan localizar dichos errores hasta su punto final de tal forma que se obtenga la solución a su problema. Programación en Pseudocódigo La documentación es estrictamente necesaria una vez que nuestro programa se encuentra listo para funcionar sin nuestra intervención. Sin embargo, existe la posibilidad de que se le requiera dar mantenimiento y contando con la documentación necesaria será más fácil esta labor. La documentación deberá contener toda la documentación que se produjo desde su inicio hasta su terminación. - Documento en el que se plasmó el problema. Diagrama de flujo. Diseño de algoritmo. Escritura de la solución en pseudocódigo. Prueba de escritorio. Construcción de programa en lenguaje de programación (impresión de nuestro programa). Pruebas y documentación Será necesario realizar pruebas con diferentes datos para estar seguros del correcto funcionamiento de nuestro programa. PT Bachiller en Informática 47 Informática Colegio Nacional de Educación Profesional Técnica - Resultados de la Ejecución del programa. - Listado de las pruebas realizadas. Como se habrá notado, para resolver un problema, existe una metodología, esto es una secuencia de pasos que debes seguir en el orden establecido, con objeto de resolver el problema de la forma más sencilla posible, y además, quede implementado de tal forma que pueda ser utilizado por cualquier persona que tenga la necesidad de acceder a éste ya sea por conocimiento o porque sea necesario darle mantenimiento. 1.2.2 Elementos de programas. Datos Programación en Pseudocódigo ¾ 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. Estructurados (definidos por el usuario): ¾ ¾ ¾ ¾ Arreglos (vectores, matrices). Registros Archivos Apuntadores 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. Tipos de Datos ¾ 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). 48 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Constantes y Variables. ¾ Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. Ejemplo: pi = 3.1416 ¾ Variable: Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo. Ejemplo: área = pi * radio ^ 2 Programación en Pseudocódigo ¾ Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales). Ejemplo: letra=’a’ apellido=’lopez’ direccion=’Av. Libertad #190’ Por su Uso ¾ Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa. Ejemplo: suma=a+b/c ¾ Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Las variables son : el radio, el área y la constate es pi Clasificación de las variables. Por su contenido: ¾ Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo: iva=0.15 pi=3.1416 costo=2500 ¾ Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos. PT Bachiller en Informática 49 Informática Colegio Nacional de Educación Profesional Técnica Con los incrementos generalmente de uno en uno. ¾ Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. 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. ¾ 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. Programación en Pseudocódigo Prioridad de los Operadores Aritméticos. Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis mas interno se evalúa primero. Dentro de una misma expresión los operadores se evalúan en el siguiente orden. 1.- ^ Exponenciación 2.- *, /, mod Multiplicación, división, modulo. 3.- +, - Suma y resta. Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha. Ejemplos: 4 + 2 * 5 = 14 Operadores Aritméticos + Suma Resta * Multiplicación / División ^ Exponenciación Mod Residuo de la división entera Ejemplos: Expresión Resultado 7/2 3.5 12 mod 7 5 4 +2*5 14 50 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica 23 * 2 / 5 = 9.2 46 / 5 = 9.2 3 + 5 * (10 - (2 + 4)) = 23 3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23 3.5 + 5.09 - 14.0 / 40 = 5.09 3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09 2.1 * (1.5 + 3.0 * 4.1) = 28.98 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98 Programación en Pseudocódigo d) ¿Qué valor imprime la última instrucción? Consulta con el docente Competencia para la Vida Consultar con el P. S. A. para confirmar el resultado del ejercicio. Realización del ejercicio El alumno: Competencia Analítica. Aplicar el uso de operadores aritméticos en la elaboración de algoritmos. • Mostrará la solución del ejercicio al docente para la confirmación del resultado. El alumno: • Observará la siguiente secuencia de instrucciones: 1. A=5 2. B=7 3. C=2 4. A=A+B+C 5. B=C/2 6. A=A/B+A^C 7. Imprimir(A) • Responderá las siguientes cuestiones: a) ¿Qué valor contiene A después de la cuarta instrucción? b) ¿Qué valor contiene B después de la quinta instrucción? c) ¿Qué valor contiene A después de la sexta instrucción? PT Bachiller en Informática 51 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo ¾ Operadores Relaciónales: Competencia Lógica Se utilizan para establecer una relación entre dos valores. Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas) Tienen el mismo nivel de prioridad en su evaluación. Los operadores relaciónales tiene menor prioridad que los aritméticos. Operadores Relaciónales > Mayor que < Menor que > = Mayor o igual que < = Menor o igual que < > Diferente = Igual Ejemplos: Si a = 10 b = 20 Aplicar el uso de operadores de relación en la elaboración de algoritmos. El alumno: • Analizará la siguiente secuencia de instrucciones: 1. A = 5 2. B = 7 3. C = 1 4. D = (A == B) 5. E = (A <> B) 6. F = (MOD(B/A) >= C) • Responderá las siguientes cuestiones: a) ¿Qué valor contiene D después de la cuarta instrucción? c = 30 a + b > c Falso a-b<c Verdadero a-b=c Falso a * b < > c Verdadero Ejemplos no lógicos: a<b<c 10 < 20 < 30 T < 30 (no es lógico porque tiene diferentes operandos) Realización del ejercicio 52 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica b) ¿Qué valor contiene E después de la quinta instrucción? c) ¿Qué valor contiene F después de la sexta instrucción? d) ¿Cuánto valen A, B y C después de la última instrucción? Consulta con el docente Competencia para la Vida Consultar con el P. S. A. para confirmar el resultado del ejercicio. do 1 T T F F Programación en Pseudocódigo dor do 2 AND T T F F T F F F Operador Or Operando 1 T T F F Opera dor OR Operando 2 T F T F Resultado T T T F Operador Not Operando Resultado T F F T El alumno: • Mostrará la solución del ejercicio al docente para la confirmación del resultado. ¾ Operadores Lógicos: Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valores pueden ser resultado de una expresión relacional. Operadores Lógicos And Y Or O Not Negación Operador And Operan- Opera Operan- Resultado PT Bachiller en Informática 53 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Ejemplos: (a < b) and (b < c) (10<20) and (20<30) T and T T Prioridad de los Operadores Lógicos Not And Or Prioridad de los Operadores en General 1.- ( ) 2.- ^ 3.- *, /, Mod, Not 4.- +, -, And 5.- >, <, > =, < =, < >, =, Or Estructuras básicas de control. . AccionN Fin Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: - Simples: Consiste en pasar un valor constate a una variable (a=15). - Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a=a+1). - Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b). Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estructura secuencial La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: Inicio Accion1 Accion2 . 54 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica - De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a=c+b*2/4). Programación en Pseudocódigo El alumno: • • Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se representa en un pseudocodigo como sigue: Leer a, b Donde “a” y “b” son las variables que recibirán los valores Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue: Elaborará un diagrama de flujo de sus actividades diarias usando una estructura secuencial. Elaborará el algoritmo correspondiente al diagrama de flujo realizado. Estructura condicional Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen dos tipos básicos, las simples y las múltiples. Simples: Las estructuras condicionales simples se les conocen como “Tomas de decisión”. Escribe “El resultado es:”, R Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que contiene un valor. Realización del ejercicio Competencia Lógica Diseñar una estructura secuencial. PT Bachiller en Informática 55 Informática Colegio Nacional de Educación Profesional Técnica Estas tomas de decisión tienen la siguiente forma: Si <condición> entonces Acción(es) Fin-si Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma: Si <condición> entonces Acción(es) si no Acción(es) Fin-si Programación en Pseudocódigo Si <condición> entonces Acción(es) si no Si <condición> entonces Acción(es) si no . . Varias condiciones . Forma General Casos Variable Op1: Acción(es) Op2: Acción(es) . . OpN: acción Fin-casos Donde: Si ……Indica el comando de comparación. Condición… Indica la condición a evaluar. entonces… Precede a las acciones a realizar cuando se cumple la condición. Acción(es)… Son las acciones a realizar cuando se cumple o no la condición. si no………Precede a las acciones a realizar cuando no se cumple la condición. Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones. Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones específicas. La forma común es la siguiente: 56 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Realización del ejercicio Competencia Lógica Diseñará una estructura condicional. El alumno: • • Programación en Pseudocódigo Accion1 Vc = LS V Accion2 vc=vc+1 . F . AccionN Cuerpo del ciclo Fin-para Elaborará un diagrama de flujo que contenga sus actividades diarias incluyendo aquellas que estén condicionadas. Elaborará el correspondiente algoritmo para mostrar las estructuras condicionales. Estructura repetitiva. Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad específica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa).Los ciclos se clasifican en: Ciclos Determinado Para) con un Número de Iteraciones (Hacer- Son aquellos en que el número de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura es la siguiente: Hacer para V.C = L.I a L.S VC=LI PT Bachiller en Informática 57 Informática Colegio Nacional de Educación Profesional Técnica VC=LI vc=vc+ 1 V Vc= LS F CUERPO DEL CICLO Programación en Pseudocódigo que debe contener un programa, claro está, todo depende del problema que queremos resolver, es el tipo de datos que usamos, las constantes, variables, operadores y estructura de datos que usamos, poco a poco desarrollará las habilidades necesarias para definir lo que se necesita, esto es, desarrollará su propia lógica. 1.2.3 Estructura de Datos Donde: V.C L.I L.S Arreglos Variable de control del ciclo Limite inferir Limite superior En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de control llegue al limite superior. Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a una colección de datos del mismo tipo. Los arreglos se caracterizan por: - Almacenan los elementos en posiciones contiguas de memoria Realización del ejercicio Competencia Lógica Diseñar una estructura repetitiva. El alumno: • • En base al diagrama de flujo y el algoritmo antes diseñado. Estructurará el algoritmo de tal forma que contenga una o varias estructuras repetitivas incluyendo actividades de su vida diaria que así lo requieran. En esta sección del manual, se pudo apreciar cuales son los elementos básicos 58 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Fin-para Tienen un mismo nombre de variable que representa a todos los elementos. - Hacer mientras I <= 10 Leer vec[I] Fin-mientras Para hacer referencia a esos elementos es necesario utilizar un índice que especifica el lugar que ocupa cada elemento dentro del archivo. - I=1 Repetir Leer vec[I] I=I+1 Hasta-que I>10 - Tipo de Arreglos Unidimensionales (Vectores) Bidimensionales (Matrices) Realización del ejercicio Vectores y Matrices Vectores. Es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el nombre de longitud o tamaño del vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del índice (entre corchetes), el cual indica una posición en particular del vector. Por ejemplo: 0 9 21 -1 8 5 -9 15 7 6 -4 33 Vec[x] Competencia Lógica Aplicar el concepto de vectores. El alumno: • • • Elaborará un pseudocódigo para: Almacenar 20 números en un vector. Elevará al cuadrado cada valor almacenado en el vector. Almacenará el resultado en otro vector. Imprimir el vector original y el vector resultante. Consulta con el docente Donde: Vec………… Nombre del arreglo x…………… Numero de datos que constituyen el arreglo Llenado de un Vector - Hacer para I = 1 a 10 Leer vec[I] Competencia para la Vida Solicitar asesoría del docente. El alumno: PT Bachiller en Informática 59 Informática Colegio Nacional de Educación Profesional Técnica • Consultará con el P. S. A. la correcta elaboración del ejercicio. Matrices. Es un arreglo de M * N elementos organizados en dos dimensiones donde “M” es el numero de filas o reglones y “N” el numero de columnas. Representación gráfica de una matriz Mat [R,C] 1, 1, 1, 1,4 Fila o 1 2 3 Renglon 2, 2, 2, 2.4 [R] 1 2 3 3, 3, 3, 3,4 1 2 3 4, 4, 4, 4,4 1 2 3 Columna [C] Para representar una matriz se necesita un nombre de matriz se necesita un nombre de matriz acompañado de dos índices. Mat [R,C] Donde R indica el renglón y C indica la columna, donde se encuentra almacenado el dato. Llenado de una matriz - 60 Por renglones Hacer para R = 1 a 5 Hacer para C = 1 a 5 Leer Mat [R,C] Fin-para Fin-para Por columnas Hacer para C = 1 a 5 Programación en Pseudocódigo Hacer para R = 1 a 5 Leer Mat [R,C] Fin-para Fin-para Nota: Para hacer el llenado de una matriz se deben de usar dos variables para los índices y se utilizan 2 ciclos uno para los renglones y otro para las columnas; a estos ciclos se les llama ciclos anidados (un ciclo dentro de otro ciclo). Pilas y Colas Las pilas y las colas son dos de las estructuras de datos más utilizadas. Se trata de dos casos particulares de las estructuras lineales generales (secuencias o listas) que, debido a su amplio ámbito de aplicación, conviene ser estudiadas de manera independiente. Pilas. La pila es una lista de elementos caracterizada porque las operaciones de inserción y eliminación se realizan solamente en un extremo de la estructura. El extremo donde se realizan estas operaciones se denomina habitualmente 'cima' (top en nomenclatura inglesa). Un ejemplo típico de pila lo constituye un montón de platos, cuando se quiere introducir un nuevo plato, éste se pone en la posición más accesible, encima del último plato. Cuando se coge un nuevo plato, éste se extrae, igualmente, del punto más accesible, el último que se ha introducido. Dada una pila P=(a,b,c,...k), se dice que a, que es el elemento más inaccesible de la pila, está en el fondo de la pila (bottom) y PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo que k, por el contrario, el más accesible, está en la cima. Las restricciones definidas para la pila implican que si una serie de elementos A,B,C,D,E se añaden, en este orden a una pila, entonces el primer elemento que se borre de la estructura deberá ser el E. Por tanto, resulta que el último elemento que se inserta en una pila es el primero que se borra. Por esta razón, se dice que una pila es una lista LIFO (Last In First Out, es decir, el último que entra es el primero que sale en español última entrada primera salida). Como en cualquier estructura de datos, asociadas con la estructura pila existen una serie de operaciones necesarias para su manipulación, éstas son: - Crear la pila. PT Bachiller en Informática 61 Informática Colegio Nacional de Educación Profesional Técnica - - Comprobar si la pila está vacía. Es necesaria para saber si es posible eliminar elementos. Acceder al elemento situado en la cima. Añadir elementos a la cima. Eliminar elementos de la cima. La especificación correcta de todas estas operaciones permitirá definir adecuadamente una pila. La forma más simple, y habitual, de representar una pila es mediante un vector unidimensional. Este tipo de datos permite definir una secuencia de elementos (de cualquier tipo) y posee un eficiente mecanismo de acceso a la información contenida en él. Al definir un array (arreglo) hay que determinar el número de índices válidos y, por lo tanto, el número de componentes definidos. Entonces, la estructura pila representada por un array (arreglo) tendrá limitado el número de posibles elementos. Se puede definir una pila como una variable: Programación en Pseudocódigo sucesivamente. En general, el elemento iúltimo estará almacenado en Pila[i]. Como todas las operaciones se realizan sobre la cima de la pila, es necesario tener correctamente localizada en todo instante esta posición. Es necesaria una variable, cima, que apunte al último elemento (ocupado) de la pila. Colas: Las colas son secuencias de elementos caracterizadas porque las operaciones de inserción y borrado se realizan sobre extremos opuestos de la secuencia. La inserción se produce en el "final" de la secuencia, mientras que el borrado se realiza en el otro extremo, el "inicio" de la secuencia. Las restricciones definidas para una cola hacen que el primer elemento que se inserta en ella sea, igualmente, el primero en ser extraído de la estructura. Pila: array [1..n] de T donde T es el tipo que representa la información contenida en la pila (enteros, registros, etc.) El primer elemento de la pila se almacenará en Pila[1], será el fondo de la pila, el segundo elemento en Pila[2] y así 62 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Si una serie de elementos A, B, C, D, E se insertan en una cola en ese mismo orden, entonces los elementos irán saliendo de la cola en el orden en que entraron. Por esa razón, en ocasiones, las colas se conocen con el nombre de listas FIFO (First In First Out, el primero que entra es el primero que sale). Las colas, al igual que las pilas, resultan de aplicación habitual en muchos problemas informáticos. Quizás la aplicación más común de las colas es la organización de tareas de un ordenador. En general, los trabajos enviados a un ordenador son "encolados" por éste, para ir procesando secuencialmente todos los trabajos en el mismo orden en que se reciben. Cuando el ordenador recibe el encargo de realizar una tarea, ésta es almacenada al final de la cola de trabajos. - - Crear una cola vacía. Determinar si la cola está vacía, en cuyo caso no es posible eliminar elementos. Acceder al elemento inicial de la cola. Insertar elementos al final de la cola. Eliminar elementos al inicio de la cola. Para determinar correctamente cada una de estas operaciones, es necesario especificar un tipo de representación para las colas. La representación de una cola finita en forma de vector es una tarea algo más compleja que la realizada para el caso En el momento que la tarea que estaba realizando el procesador acaba, éste selecciona la tarea situada al principio de la cola para ser ejecutada a continuación. Todo esto suponiendo la ausencia de prioridades en los trabajos. En caso contrario, existirá una cola para cada prioridad. Del mismo modo, es necesaria una cola, por ejemplo, a la hora de gestionar eficientemente los trabajos que deben ser enviados a una impresora (o a casi cualquier dispositivo conectado a un ordenador). De esta manera, el ordenador controla el envío de trabajos al dispositivo, no enviando un trabajo hasta que la impresora no termine con el anterior. Análogamente a las pilas, es necesario definir el conjunto de operaciones básicas para especificar adecuadamente una estructura cola. Estas operaciones serían: PT Bachiller en Informática 63 Informática Colegio Nacional de Educación Profesional Técnica de las pilas. Además de un array unidimensional, son necesarias un par de variables que indiquen dónde está el inicio de la cola y dónde el final. Hay diferentes formas de implementar las operaciones relacionadas con colas pero una de las más eficientes es representar el array Cola[1..n] como si fuese circular, es decir, cuando se dé la condición de cola llena se podrá continuar por el principio de la misma si esas posiciones no están ocupadas. Redacción de trabajo Competencia emprendedora Confirmar los conceptos de pilas y colas, sus usos y diferencia en las estructuras de datos. Programación en Pseudocódigo tipo determinado (que por lo general denominaremos T). A menudo se representa una lista como una sucesión de elementos separados por comas: a(1), a(2), a(3), ... , a(n) donde a "n" (n >= 0) se le llama longitud de la lista. Al suponer n>=1, se dice que a(1) es el primer elemento de la lista y a(n) el último elemento. Si n=0, se tiene una lista vacía. Una propiedad importante de una lista es que sus elementos pueden estar ordenados en forma lineal de acuerdo con sus posiciones en la lista. Se dice que a(i) precede a a(i+1), para i=1,2, .., n-1, y que a(i) sucede a a(i-1), para i=2, 3, .., n. También se dice que el elemento a(i) está en la posición i de la lista. El alumno: • Redactará un trabajo donde se plasme los concepto de pilas y colas, las características y diferencias entre cada una. Listas Las listas son secuencias de elementos, donde estos elementos pueden ser accedidos, insertados o suprimidos en cualquier posición de la lista. No existe restricción alguna acerca de la localización de esas operaciones. Se trata de estructuras muy flexibles puesto que pueden crecer o acotarse como se quiera. Matemáticamente, una lista es una secuencia de cero o más elementos de un 64 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Por lo que podemos ver, las estructuras pila y cola, estudiadas en el capítulo anterior, no son más que casos particulares de la estructura lista generalizada. Al igual que en los casos anteriores, se puede pensar en representar una lista mediante un array unidimensional, lo que permite un acceso eficiente a cada uno de los componentes de la estructura, lo que, en principio, parece proporcionar un esquema adecuado para representar las operaciones que normalmente se desean realizar sobre la lista: acceder a un elemento (nodo) arbitrario de la lista, insertar y borrar nodos, etc. Sin embargo, si bien todas estas consideraciones eran ciertas para las pilas y las colas, cuando se trata de otro tipo de listas, las operaciones a realizar sobre el array resultan bastante más costosas. Por ejemplo, supongamos la siguiente lista: Programación en Pseudocódigo para de esta forma dejar una posición libre en el array y poder insertar allí el nuevo valor. Por otro lado, si suponemos que lo que se desea es borrar de la lista el elemento 'Carlos', de nuevo es necesario desplazar elementos para mantener la estructura secuencial de la lista. En este caso es preciso mover una posición hacia la izquierda todos los elementos situados a partir de la cuarta posición. Cuando el problema es manipular diferentes listas de tamaño variable, la representación secuencial prueba ser, de nuevo, poco apropiada. Si se decide almacenar en distintos arrays cada una de las listas, se tendrán grandes necesidades de almacenamiento. Si, por el contrario, se toma la decisión de (Antonio, Bartolomé, Carlos, David, Emilio, Germán, Jaime, José, Luis, Manuel) Si se desea añadir el valor 'Fernando' a esta lista ordenada de nombres, la operación se debe realizar en la sexta posición de la lista, entre los valores 'Emilio' y 'Germán'. Cuando la lista está representada con un array, dicha inserción implicará tener que desplazar una posición hacia la derecha todos los elementos situados ya en la lista a partir de la posición seis (Germán,...Manuel), PT Bachiller en Informática 65 Informática Colegio Nacional de Educación Profesional Técnica usar un único array, se necesitará una cantidad mucho mayor de desplazamientos de información. Una solución elegante al problema del desplazamiento de información en el almacenamiento secuencial se logra mediante la utilización de representaciones enlazadas (o ligadas). A diferencia de la representación secuencial, en la representación enlazada los elementos se pueden situar en cualquier posición de memoria, y no necesariamente igualmente distantes dentro de ella. También se puede decir que, si bien en la representación con arrays el orden de los elementos es el mismo que el orden en la lista, en una representación enlazada la secuencia de orden de la lista no tiene porque coincidir con la secuencia de almacenamiento en memoria. Realización del ejercicio Programación en Pseudocódigo distingue del resto como raíz, junto con una relación que impone una estructura jerárquica entre los nodos. Formalmente, un árbol se puede definir de manera recursiva como sigue: Definición: una estructura de árbol con tipo base T es: (i) Bien la estructura vacía. (ii) Un conjunto finito de uno o más nodos, tal que existe un nodo especial, llamado nodo raiz, y donde los restantes nodos están separados en n >= 0 conjuntos disjuntos, cada uno de los cuales es a su vez un árbol (llamados subárboles del nodo raíz). La definición implica que cada nodo del árbol es raíz de algún subárbol contenido en el árbol principal. El índice de un libro es un buen ejemplo Competencia Lógica Identificar el elementos. concepto de listas de El alumno: • Elaborará un vector que contenga una lista de sus mejores amigos, la cual deberá estar ordenada alfabéticamente. Árboles Un árbol es una colección de elementos llamados nodos, uno de los cuales se 66 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica de representación en forma de árbol. Ejemplos de estructuras arborescentes: • • Programación en Pseudocódigo Longitud de camino de un árbol: suma de las longitudes de los caminos a todos sus componentes. Bosque: conjunto de n >= 0 árboles disjuntos. Árbol Simple Términos importantes asociados con el concepto de árbol • • • • • • • • • • Grado de un nodo: es el número de subárboles que tienen como raíz ese nodo (cuelgan del nodo). Nodo terminal u hoja: nodo con grado 0. No tiene subárboles. Grado de un árbol: grado máximo de los nodos de un árbol. Hijos de un nodo: nodos que dependen directamente de ese nodo, es decir, las raíces de sus subárboles. Padre de un nodo: antecesor directo de un nodo del cual depende directamente. Nodos hermanos: nodos hijos del mismo nodo padre. Camino: sucesión de nodos del árbol: n(1), n(2), .. n(k), tal que n(i) es el padre de n(i+1). Antecesores de un nodo: todos los nodos en el camino desde la raíz del árbol hasta ese nodo. Nivel de un nodo: longitud del camino desde la raíz hasta el nodo. El nodo raíz tiene nivel 1. Altura o profundidad de un árbol: nivel máximo de un nodo en un árbol. La representación de un árbol simple dependerá de su grado, es decir, del número de relaciones máximo que puede tener un nodo del árbol. Resulta más simple la representación y manipulación de una estructura árbol cuando el grado de éste es fijo e invariable. Árbol Binario Los árboles binarios constituyen un tipo particular de árboles de gran aplicación. Estos árboles se caracterizan porque no existen nodos PT Bachiller en Informática 67 Informática Colegio Nacional de Educación Profesional Técnica con grado mayor a dos, es decir, un nodo tendrá como máximo dos subárboles. Definición: un árbol binario es un conjunto finito de nodos que puede estar vacío o consistir en un nodo raíz y dos árboles binarios disjuntos, llamados subárbol izquierdo y subárbol derecho. En general, en un árbol no se distingue entre los subárboles de un nodo, mientras que en un árbol binario se suele utilizar la nomenclatura subárbol izquierdo y derecho para identificar los dos posibles subárboles de un nodo determinado. De forma que, aunque dos árboles tengan el mismo número de nodos, puede que no sean iguales si la disposición de esos nodos no es la misma: Programación en Pseudocódigo Lema 2: para cualquier árbol binario no vacío, si m es el número de nodos terminales y n es el número de nodos de grado dos, entonces se cumple que m = n + 1. Igualmente, para poder entender alguna de las formas de representación de los árboles binarios, vamos a introducir dos nuevos conceptos, lo que se entiende por árbol binario lleno y por árbol binario completo. Definición: se dice que un árbol binario está lleno si es un árbol binario de profundidad k que tiene (2^k) - 1 nodos. Un árbol binario lleno es aquel que contiene el número máximo de posibles nodos. Como en estos casos no existen subárboles vacíos excepto para los nodos terminales, es posible realizar una representación secuencial eficiente de este tipo de árboles. Esta representación suele implicar la Antes de pasar a la representación de los árboles binarios, vamos a hacer algunas observaciones relevantes acerca del número y características de los nodos en este tipo de árboles. Lema 1: el número máximo de nodos en el nivel i de un árbol binario es 2^(i-1), con i >= 1, y el número máximo de nodos en un árbol binario de altura k es (2^k) - 1, con k >= 1. 68 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica numeración de los nodos. La numeración se realiza por niveles y de izquierda a derecha. Este proceso de numeración (etiquetado) de los nodos permite una identificación elegante de las relaciones de parentesco entre los nodos del árbol y se verá más adelante. Definición: un árbol binario con n nodos y profundidad k se dice que es completo si y sólo si sus nodos se corresponden con los nodos numerados de 1 a n en el árbol binario lleno de profundidad k. Cuando un árbol no es lleno pero es completo, también es posible la representación secuencial eficiente de la estructura de nodos que lo componen. Representación de los árboles binarios. Como hemos visto, si el árbol binario que se desea representar cumpla las condiciones de árbol lleno o árbol completo, es posible encontrar una buena representación secuencial del mismo. En esos casos, los nodos pueden ser almacenados en un array unidimensional, A, de manera que el nodo numerado como i se almacena en A[i]. Esto permite localizar fácilmente las posiciones de los nodos padre, hizo izquierdo e hijo derecho de cualquier nodo i en un árbol binario arbitrario que cumpla tales condiciones. Programación en Pseudocódigo si i <> 1. Si i=1, se trata del nodo raíz y no tiene padre. (2) El hijo izquierdo del nodo estará localizado en la posición [2i] si 2i <= n. Si 2i>n, el nodo no tiene hijo izquierdo. (3) El hijo derecho del nodo estará localizado en la posición [2i+1] si 2i+1 <= n. Si (2i+1) > n, el nodo no tiene hijo derecho. Evidentemente, la representación puramente secuencial de un árbol se podría extender inmediatamente a cualquier árbol binario, pero esto implicaría, en la mayoría de los casos, desaprovechar gran cantidad del espacio reservado en memoria para el array. Lema 3: si un árbol binario completo con n nodos se representa secuencialmente, se cumple que para cualquier nodo con índice i, entre 1 y n, se tiene que: (1) El padre del nodo i estará localizado en la posición [i div 2] PT Bachiller en Informática 69 Informática Colegio Nacional de Educación Profesional Técnica Así, aunque para árboles binarios completos la representación es ideal y no se desaprovecha espacio, en el peor de los casos para un árbol lineal (una lista) de profundidad k, se necesitaría espacio para representar (2^k) - 1 nodos, y sólo k de esas posiciones estarían realmente ocupadas. Programación en Pseudocódigo donde se almacenan los respectivos hijos del nodo. Ejemplo: Además de los problemas de eficiencia desde el punto de vista del almacenamiento en memoria, hay que tener en cuenta los problemas generales de manipulación de estructuras secuenciales. Las operaciones de inserción y borrado de elementos en cualquier posición del array implican necesariamente el movimiento potencial de muchos nodos. Estos problemas se pueden solventar adecuadamente mediante la utilización de una representación enlazada de los nodos. Representación enlazada Se podría simular una estructura de enlaces, como la utilizada para las listas, mediante un array. En ese caso, los campos de enlace de unos nodos con otros no serían más que índices dentro del rango válido definido para el array. La estructura de esa representación enlazada pero ubicada secuencialmente en la memoria correspondería al siguiente esquema para cada nodo: información hijo izquierdo Hijo derecho donde el campo informacion guarda toda la información asociada con el nodo y los campos hijo izquierdo e hijo derecho guardan la posición dentro del array 70 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Los problemas de esta representación están asociados con la manipulación de la misma. En el caso de la inserción de nuevos nodos, el único problema que puede aparecer es que se supere el espacio reservado para el array, en cuyo caso no se podrán insertar más nodos. Sin embargo, la operación de borrado implica mayores problemas de manipulación. Al poder borrar cualquier nodo del árbol, se van a dejar "huecos" en la estructura secuencial del array, esto se podría solucionar, como siempre, mediante el desplazamiento de elementos dentro del vector. Sin embargo, si de por sí esa operación no resulta recomendable, en este caso mucho menos, ya que implica a su vez modificar los enlaces que hayan podido variar con el desplazamiento. Otra solución, podría consistir en almacenar las posiciones del array que están libres y que se pueden ocupar en la inserción de nodos. Esto podría resultar más eficiente, pues no implica el desplazamiento de información, pero requiere de la utilización de otra estructura de datos auxiliar que maneje esa información. La mejor solución, de nuevo, para evitar los problemas asociados con la manipulación de arrays, es la representación de los árboles binarios mediante estructuras dinámicas "puras", en el sentido de la creación en tiempo de ejecución de los nodos que sean necesarios (no más) y la utilización de punteros para enlazar estos nodos. La estructura de cada nodo en esta representación coincide con la estructura de tres campos vista anteriormente. La única diferencia reside en la naturaleza de Programación en Pseudocódigo los campos de enlace, en este caso se trata de punteros y no de índices de un array. La implementación en Pascal, sería: Type Valor = ??; arbol = ^Nodo; Nodo = record Info: Valor; Izq, Der: arbol; end; Var raiz: arbol; Se puede comprobar como la representación en memoria de la estructura, en cuanto a definición de tipos de datos, coincide exactamente PT Bachiller en Informática 71 Informática Colegio Nacional de Educación Profesional Técnica con la de, por ejemplo, una lista doblemente ligada, sin que ello implique que se esté hablando de la misma estructura de datos. De nuevo hay que dejar muy claro que es la interpretación que hacemos de la representación en memoria la que define una estructura de datos, no la representación en sí misma. La representación enlazada tiene como principal desventaja que no resulta inmediato la determinación del padre de un nodo. Es necesario buscar el camino de acceso al nodo dentro del árbol para poder obtener esa información. Sin embargo, en la mayoría de las aplicaciones es la representación más adecuada. En el caso en que la determinación del padre de un nodo sea una operación importante y frecuente en una aplicación concreta, se puede modificar ligeramente la estructura de cada nodo añadiendo un cuarto campo, también de tipo enlace, que guarde la posición del padre de cada nodo. Programación en Pseudocódigo árbol. Este orden puede ser útil en determinadas ocasiones. Cuando se recorre un árbol se desea tratar cada nodo y cada subárbol de la misma manera. Existen entonces seis posibles formas de recorrer un árbol binario. (1) nodo - subárbol izquierdo - subárbol derecho (2) subárbol izquierdo - nodo - subárbol derecho (3) subárbol izquierdo - subárbol derecho - nodo (4) nodo - subárbol derecho - subárbol izquierdo (5) subárbol derecho - nodo - subárbol izquierdo Al igual que en la representación enlazada de las listas, es necesario mantener un puntero al primer elemento de la estructura, en este caso el nodo raíz del árbol, que permita acceder a la misma. Recorrido de árboles binarios. Si se desea manipular la información contenida en un árbol, lo primero que hay que saber es cómo se puede recorrer ese árbol, de manera que se acceda a todos los nodos del mismo solamente una vez. El recorrido completo de un árbol produce un orden lineal en la información del 72 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo (6) subárbol derecho - subárbol izquierdo - nodo Si se adopta el convenio de que, por razones de simetría, siempre se recorrera antes el subárbol izquierdo que el derecho, entonces tenemos solamente tres tipos de recorrido de un árbol, los tres primeros en la lista anterior. Estos recorridos, atendiendo a la posición en que se procesa la información del nodo, reciben, respectivamente, el nombre de recorrido prefijo, infijo y posfijo y dan lugar a algoritmos eminentemente recursivos: Algoritmo Prefijo Infijo(p^.Izq) procesar(p^.info) Infijo(p^.Der) fin_si Fin Algoritmo Posfijo Entrada p: arbol Inicio si (p <> NULO) entonces Posfijo(p^.Izq) Posfijo(p^.Der) procesar(p^.info) fin_si Entrada p: arbol Inicio Fin si (p <> NULO) entonces procesar(p^.info) Prefijo(p^.Izq) Prefijo(p^.Der) fin_si Ejemplo de recorrido de un árbol: Fin Algoritmo Infijo Entrada p: arbol Inicio si (p entonces <> NULO) Inestigación de campo PT Bachiller en Informática 73 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo dirección base del arreglo, la cota superior y la inferior. Competencia Tecnológica Observar el informática. concepto REPRESENTACIÓN EN MEMORIA de árbol en Los arreglos se representan en memoria de la forma siguiente: El alumno: • • • Accederá al explorador de windows en un ordenador. Apreciará como está conformado el árbol de la unidad C. Elaborará la representación gráfica mostrando los nodos y el recorrido del árbol de la unidad C del ordenador. Tablas (arreglos) De Acceso Directo Una tabla o arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a las tablas o arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la 74 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica x : array[1..5] of integer Programación en Pseudocódigo Arreglos Bidimensionales Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogéneo. El acceso a ellos también es en forma directa por medio de un par de índices. Para establecer el rango del arreglo (número total de elementos) que componen el arreglo se utiliza la siguiente formula: RANGO = Ls - (Li+1) donde: ls = Límite superior del arreglo li = Límite inferior del arreglo Para calcular la dirección de memoria de un elemento dentro de un arreglo se usa la siguiente formula: Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas. La primera dimensión del arreglo representa las columnas, cada elemento contiene un valor y cada dimensión representa una relación. La representación en memoria se realiza de dos formas: almacenamiento por columnas o por renglones. Para determinar el número total de elementos en un arreglo bidimensional usaremos las siguientes fórmulas: A[i] = base(A) + [(i-li) * w] donde : A = Identificador único del arreglo i = Índice del elemento li = Límite inferior w = Número de bytes tipo componente Si el arreglo en el cual estamos trabajando tiene un índice numerativo utilizaremos las siguientes fórmulas: RANGO = ord (ls) - (ord (li)+1) A[i] = base (A) + [ord (i) - ord (li) * w] PT Bachiller en Informática 75 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RANGO DE RENGLONES (R1) = Ls1 (Li1+1) RANGO DE COLUMNAS (R2) = Ls2 (Li2+1) No. TOTAL DE COMPONENTES = R1 * R2 REPRESENTACIÓN EN MEMORIA POR COLUMNAS Para calcular la dirección de memoria de un elemento se usan la siguiente formula: A[i,j] = base (A) + [((i - li1) R2 + (j + li2))*w] donde: i = Índice del renglón a calcular j = Índice de la columna a calcular li1 = Límite inferior de renglones li2 = Límite inferior de columnas w = Número de bytes tipo componente Arreglos Multidimensionales Este también es un tipo de dato estructurado, que está compuesto por n dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar n índices, uno para cada dimensión. x : array [1..5,1..7] of integer Para calcular la dirección de memoria de un elemento se usan la siguiente formula: A[i,j] = base (A) + [((j - li2) R1 + (i + li1))*w] Para determinar el número de elementos en este tipo de arreglos se usan las siguientes fórmulas: REPRESENTACIÓN EN MEMORIA POR RENGLONES x : array [1..5,1..7] of integer 76 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica RANGO (Ri) = lsi - (lii + 1) No. TOTAL DE ELEMENTOS = R1 * R2* R3 * ...* Rn donde: i = 1 ... n n = No. total de dimensiones Para determinar la dirección de memoria se usa la siguiente formula: LOC A[i1,i2,i3,...,in] = base(A) + [(i1li1)*R3*R4*Rn + (i2-li2)*R3*R2*... (in lin)*Rn]*w De búsqueda lineal (look-up) Consiste en empezar al inicio del conjunto de elementos, e ir a través de ellos hasta encontrar el elemento indicado ó hasta llegar al final de arreglo. Programación en Pseudocódigo importante de este método es que puede ocasionar colisiones. funcion hash (valor_buscado) inicio hash <- valor_buscado mod numero_primo fin inicio <- hash (valor) il <- inicio encontrado <- falso repite si arreglo[il] = valor entonces encontrado <- verdadero en caso contrario il <- (il +1) mod N hasta encontrado o il = inicio Este es el método de búsqueda más lento, pero si nuestro arreglo se encuentra completamente desordenado es el único que nos podrá ayudar a encontrar el dato que buscamos. ind <- 1 encontrado <- falso mientras no encontrado y ind < N haz si arreglo[ind] = valor_buscado entonces encontrado <- verdadero en caso contrario ind <- ind +1 De Hash La idea principal de este método consiste en aplicar una función que traduce el valor del elemento buscado en un rango de direcciones relativas. Una desventaja PT Bachiller en Informática 77 Informática Colegio Nacional de Educación Profesional Técnica Estudio individual Competencia Analítica Identificar los conceptos de tablas y sus correspondientes métodos de acceso. El alumno: • Elaborará un trabajo escrito donde muestre los conceptos de las tablas (arreglos) de acceso directo, de búsqueda lineal y método de acceso. Estructurar la información que vamos a usar es muy importante, pues es aquí donde definimos como se va a acceder a dicha información para obtener los resultados deseados, ahora cuentas con los elementos necesarios para conformar tus estructuras según convenga al tipo de datos que vas a manejar. Programación en Pseudocódigo Registro lógico. Es la información organizada tal como la percibe el usuario por medio del programa. Registro físico. Son los bloques de información que la memoria transfiere desde la unidad de almacenamiento masivo hasta la memoria central del sistema para procesarlos. Registro de longitud fija. Es en el que al configurar el fichero se le asigna un determinado tamaño en bytes y lo mantiene a no ser que el registro sea modificado. Esto es así independientemente de la cantidad de información que contenga (Access). Registro de longitud variable. En éstos el programa mide la cantidad de información de los registros y adapta su tamaño a ellos (bases de datos documentales = Knosys). Ficheros (archivos) Fichero. Es una colección de registros similares. El archivo es tratado como una entidad individual por los usuarios y las aplicaciones y puede ser referenciada por el nombre. Los archivos tienen nombres únicos y pueden crearse y borrarse. En un sistema compartido, los usuarios y los programas tienen garantizado o denegado el acceso a archivos completos. En algunos sistemas más complejos, dicho control se aplica a los registros o a los campos. 78 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Fichero secuencial ¾ Los registros están grabados en orden y deben ser leídos en ese mismo orden. Para leer un registro hay que pasar por los anteriores. • ¾ Solo pueden añadirse registros al final del fichero. No permite la inserción de registros en un punto cualquiera. • ¾ La modificación de información, solo puede efectuarse si la nueva información no excede de la longitud del registro. ¾ El borrado es lógico y consiste en una marca que el programa le pone a ese registro, para que cuando el programa vaya a leerlo, lo ignore saltando al registro siguiente. No se borra físicamente el registro. Programación en Pseudocódigo - Ciclo escolar al que corresponde. A la hoja de papel donde registró la lista le asignaremos el nombre de “LIBROS TEXTO”. Este es un fichero que contiene los nombres de sus libros de texto y otros datos. Es secuencial porque para buscar uno deberá leer toda la lista hasta que localice el que busca. Fichero indexado ¾ La grabación del registro es igual que en el anterior (secuencialmente). ¾ La lectura, se hace a través de un índice de ahí la denominación de Indexado. El índice, recoge todas las claves de los registros, y asociados a esta clave, la dirección que tiene el registro en el fichero. Realización del ejercicio Competencia Lógica Identificar el concepto de archivo o fichero secuencial. El alumno: • Elaborará una lista de sus libros de texto que contenga los siguiente datos: - Nombre del libro. - Número de páginas. - Autor. PT Bachiller en Informática 79 Informática Colegio Nacional de Educación Profesional Técnica De esta forma, no hay que leer todos los registros uno por uno hasta llegar a la información que nos interesa, sino que lee el disco por sectores. Realización del ejercicio b) Fichero constante : contiene un tipo de datos de carácter fijo, por ejemplo, un fichero que contuviese un alista de autoridades. Competencia Lógica Identificar indexado. el concepto de Programación en Pseudocódigo a) Fichero maestro : contiene los datos indispensables para el funcionamiento de una aplicación determinada y muestra el estado actual de la misma, por ejemplo. el catálogo de una biblioteca. archivo El alumno: • Al fichero que se creó anteriormente al que se llamó “LIBROS TEXTO”, le agregará una clave. • Esta clave estará integrada por las dos primeras letras de la materia a que corresponde cada libro y un número de progresivo. • Bien, ahora tendrá un fichero que contiene el nombre del texto , número de páginas que contiene, autor y una clave, esta clave será él índice. • Por este índice accedemos a los datos del fichero, el índice es como la llave de la puerta de su casa, es única, esto es no puede haber dos iguales. c) Fichero histórico : es el fichero donde van los registros eliminados del fichero maestro. Fichero temporal Fichero permanente Son los que contienen información relevante para el programa. Existen tres clases de ficheros permanentes : 80 PT Bachiller en Informática de movimientos o Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Contienen información relevante para determinado programa, pero no para la aplicación en su conjunto. Sus datos proceden de los ficheros permanentes, como por ejemplo: una consulta. Existen dos tipos de ficheros temporales: Competencia Ambiental Proteger los recursos naturales. • a) Intermedios: son los que almacenan resultados de un programa que han de ser utilizados por otro programa en una misma aplicación. b) De resultados, en los que se almacenan ficheros elaborados que se destinan a un dispositivo de salida (impresora...etc.) Los ficheros o archivos contienen registros, (en los ejercicios que realizaste, cada uno de tus libros es un registro) y, cada registro contiene la información de cada uno de ellos, a cada dato que contiene se le denomina campo, así tenemos un campo que es alfanumerico y es el nombre del libro, existe otro campo numérico que es el número de páginas, etc. Hay varios tipos de archivos, un archivo permanente es aquel que contiene la información relevante para nuestro proceso y que puede ser actualizada pero el archivo permanece en el ordenador, un archivo de movimientos es aquel que contiene la información que usaremos por una sola ocasión y que puede ser eliminado después de ser usado. • El alumno, utilizará las hojas de papel por ambos lados. Depositará las hojas de papel de desperdicio en los recipientes destinados para su reciclaje. Sugerencias o Notas Competencia de Calidad Realizar el trabajo en forma eficiente y oportuna. • • • El alumno, realizará los ejercicios y prácticas incluídas en este manual con orden, limpieza, eficiencia y responsabilidad. Evitará el uso de software ilegal, garantizando su funcionamiento y calidad del mismo. Participará con responsabilidad, iniciativa y dinamismo individualmente y en equipos de trabajo. Sugerencias o Notas PT Bachiller en Informática 81 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo 82 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Practicas de Ejercicio y listas de cotejo Portafolio de evidencias Unidad de aprendizaje: 1 Práctica número: 1 Nombre de la práctica: Elaboración de diagramas de flujo. Propósito de la práctica: Al finalizar la práctica el alumno elaborará diagramas de flujo previos a la realización de programas en pseudocódigo mediante las estructuras de secuencia, decisión condicional repetitiva, procedimientos y funciones para la solución de problemas. Escenario: Aula Duración: 4 hrs. Materiales Maquinaria y equipo Herramienta • Hojas • Lápiz • Goma PT Bachiller en Informática 83 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1. Elaborar el diagrama de flujo para la elaboración de un programa en pseudocódigo que despliegue un menú y controle la ejecución de las siguientes opciones. 2. • Calcular el promedio de cinco números.· • Comparar tres números reales.· • Resolver una ecuación cuadrática utilizando la fórmula general.· • Calcular la serie fibonacci hasta obtener 10 elementos.· • Terminar. 3. Realizar prueba de escritorio para el diagrama elaborado. 4. Elaborar un diagrama de flujo para la elaoración de un programa en pseudocódigo del cálculo del promedio de cinco números. 5. Realizar pruebas de escritorio para el diagrama anterior. 6. Elaborar un diagrama de flujo para la elaoración de un programa en pseudocódigo que compare tres números reales. 84 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento 7. Realizar prueba de escritorio para el diagrama anterior. 8. Elaborar un diagrama de flujo para la elaboración de un programa en pseudocódigo para la resolución de una ecuación cuadrática utilizando la fórmula general. 9. Realizar prueba de escritorio para el diagrama anterior. 10. Elaborar un diagrama de flujo para la elaboración de un programa en pseudocódigo que calcule la serie fibonacci hasta obtener 10 elementos. 11. Realizar prueba de escritorio del diagrama de flujo anterior. 12. Integrar los cuatro diagramas anteriores al diagrama principal, realizando las modificaciones pertinentes a los mismos para formar uno solo. 13. Realizar prueba de escritorio del diagrama anterior. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). PT Bachiller en Informática 85 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Lista de cotejo de la práctica número 1: Elaboración de diagramas de flujo. Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo ®Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1. Elaboró un diagrama de flujo para la elaboración de un programa en pseudocódigo que despliegue un menú. 2. Realizó prueba de escritorio del diagrama de flujo. 3. Elaboró un diagrama de flujo para la elaboración de un programa en pseudocódigo del cálculo del promedio de cinco números. 4. Realizó pruebas de escritorio del diagrama anterior. 5. Elaboró un diagrama de flujo para la elaboración de un programa en pseudocódigo que compare tres números reales. 6. Realizó prueba de escritorio del diagrama anterior. 86 PT Bachiller en Informática Sí No No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Desarrollo Sí No No Aplica 7. Elaboró un diagrama de flujo para la elaboración de un programa en pseudocódigo para la resolución de una ecuación cuadrática utilizando la fórmula general. 8. Realizó prueba de escritorio del el diagrama anterior. 9. Elaboró un diagrama de flujo para la elaboración de un programa en pseudocódigo que calcule la serie fibonacci hasta obtener 10 elementos. 10. Realizó prueba de escritorio del diagrama anterior.. 11. Integró los cuatro diagramas de flujo para la elaboración de programas en pseudocódigo anteriores al diagrama principal, realizando las modificaciones pertinentes a los mismos para formar uno solo . 12. Realizó prueba de escritorio del diagrama . 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: Hora de término: PT Bachiller en Informática Evaluación: 87 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 1 Práctica número: 2 Nombre de la práctica: Elaboración de programas en pseudocódigo con estructuras de control Propósito de la práctica: Al finalizar la práctica el alumno elaborará programas en pseudocódigo mediante las estructuras de secuencia, decisión condicional repetitiva, procedimientos y funciones para la solución de problemas. Escenario: Aula Duración: 8 hrs. Materiales Maquinaria y equipo • Hojas • Lápiz • Goma 88 PT Bachiller en Informática Herramienta Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1. Elaborar un programa en pseudocódigo que despliegue un menú y controle la ejecución de las siguientes opciones. • • • • • Calcular el promedio de cinco números.· Comparar tres números reales.· Resolver una ecuación cuadrática utilizando la fórmula general.· Calcular la serie fibonacci hasta obtener 10 elementos.· Terminar. 2. Realizar prueba de escritorio para el programa elaborado. 3. Elaborar un programa en pseudocódigo del cálculo del promedio de cinco números. 4. Realizar pruebas de escritorio para el pseudocódigo anterior. 5. Elaborar un programa en pseudocódigo que compare tres números reales. 6. Realizar prueba de escritorio del pseudocódigo anterior. PT Bachiller en Informática 89 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento 7. Elaborar un programa en pseudocódigo para la resolución de una ecuación cuadrática utilizando la fórmula general. 8. Realizar prueba de escritorio del pseudocódigo anterior. 9. Elaborar un programa en pseudocódigo que calcule la serie fibonacci hasta obtener 10 elementos. 10. Realizar prueba de escritorio del pseudocódigo anterior. 11. Integrar los cuatro programas en pseudocódigo anteriores al menú principal, realizando las modificaciones pertinentes a los mismos para formar uno solo . 12. Realizar prueba de escritorio del pseudocódigo anterior. 13. Repetir los procedimientos con asesoría del PSA. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). 90 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Lista de cotejo de la práctica número 2: Elaboración de programas en pseudocódigo con estructuras de control. Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño. Desarrollo Sí No No Aplica ®Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1. Elaboró un programa en pseudocódigo que despliegue un menú. 2. Realizó prueba de escritorio para el programa elaborado. 3. Elaboró un programa en pseudocódigo del cálculo del promedio de cinco números. 4. Realizó pruebas de escritorio para el pseudocódigo anterior. 5. Elaboró un programa en pseudocódigo que compare tres números reales. 6. Realizó prueba de escritorio del pseudocódigo anterior. 7. Elaboró un programa en pseudocódigo para la resolución de una ecuación cuadrática utilizando la fórmula general. PT Bachiller en Informática 91 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Desarrollo Sí 8. Realizó prueba de escritorio del pseudocódigo anterior. 9. Elaboró un programa en pseudocódigo que calcule la serie fibonacci hasta obtener 10 elementos. 10. Realizó prueba de escritorio del pseudocódigo anterior. 11. Integró los cuatro programas en pseudocódigo anteriores al menú principal, realizando las modificaciones pertinentes a los mismos para formar uno solo . 12. Realizó prueba de escritorio del pseudocódigo anterior. 13. Repitió los procedimientos con asesoría del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: 92 Hora de término: PT Bachiller en Informática Evaluación: No No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo APLICACIÓN DE PSEUDOCÓDIGO EN TÉCNICAS DE LENGUAJES DE PROGRAMACIÓN Al finalizar la unidad, el alumno elaborará documentos, con operaciones automatizadas mediante planillas, formularios, autocorrección y herramientas adicionales para su implementación. PT Bachiller en Informática 93 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo VII. MAPA CURRICULAR Programación en Pseudocódigo Módulo 108 hrs. 1. Elaboración previa de programas de cómputo. Unidad de Aprendizaje 14 hrs. 2. Aplicación de pseudocódigo en técnicas de lenguajes de programación 94 hrs. 1.1 Identificar lenguajes de programación con base al uso y características de los mismos. 1.2 Diseñar la programación mediante su secuencia de pasos lógica. Resultados de Aprendizaje 94 2.1 Emplear pseudocódigo en programación estructurada utilizando estructuras de datos. 2.2 Emplear pseudocódigo en programación funcional y lógica utilizando recursividad y cláusulas. 2.3 Emplear pseudocódigo en programación orientada a objetos y dirigida por eventos utilizando sentencias d herencia, controles, eventos y multitareas. PT Bachiller en Informática 4 hrs. 10 hrs. 34 hrs. 30 hrs. 30 hrs. Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo 2. APLICACIÓN DE PSEUDOCÓDIGO EN TÉCNICAS DE LENGUAJES DE PROGRAMACIÓN Sumario Programación estructurada Programación estructurada en la representación arborecente Programación funcional Programación lógica Programación orientada a objetos Programación dirigida por eventos. RESULTADO DE APRENDIZAJE 2.1 Emplear pseudocódigo en programación estructurada utilizando estructuras de datos. 2.2 Emplear pseudocódigo en programación funcional y lógica utilizando recursividad y cláusulas. 2.3 Emplear pseudocódigo en programación orientada a objetos y dirigida por eventos utilizando sentencias de herencia, controles, eventos y multitareas. PT Bachiller en Informática 95 Informática Colegio Nacional de Educación Profesional Técnica 2.1.1 Programación Estructurada. Concepto La programación estructurada es una teoría de programación que consiste en construir programas de fácil comprensión. La programación estructurada es especialmente útil, cuando se necesitan realizar correcciones o modificaciones después de haber concluido un programa o aplicación. Al haberse utilizado la programación estructurada, es mucho más sencillo entender la codificación del programa, que se habrá hecho en diferentes secciones. Programación en Pseudocódigo aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programación estructurada, esta integración debe ser sencilla y no presentar problemas al integrar la misma y de presentar algún problema, será rápidamente detectable para su corrección. Características La programación estructurada se basa en una metodología de desarrollo de programas llamada refinamientos sucesivos: Se plantea una operación como un todo y se divide en segmentos más sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las 96 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica La representación grafica de la programación estructurada se realiza a través de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas. La programación estructurada propone segregar los procesos en estructuras lo más simple posibles, las cuales se conocen como secuencia, selección e interacción. Ellas están disponibles en todos los lenguajes modernos de programación imperativa en forma de sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fácil entendimiento. Programación en Pseudocódigo mas ligadas o relacionadas entre sí, por lo que es más fácil comprender lo que hace cada función. 2. Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas("debugging") se facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y corregir mas fácilmente. Se ha demostrado que un programa propio puede ser escrito utilizando solamente tres tipos de estructuras de control: —secuenciales, selectivas y repetitivas. Un programa es propio si posee un sólo punto de entrada y uno de salida, si existen caminos desde el inicio hasta el fin que se pueden seguir y que pasan por todas las partes del programa, y si todas las instrucciones son ejecutables sin que hayan bucles infinitos. Ventajas de la programación estructurada. 1. Los programas son más fáciles de entender. Un programa estructurado puede ser leído en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica, lo cual es típico de otros estilos de programación. La estructura del programa es mas clara puesto que las instrucciones están PT Bachiller en Informática 97 Informática Colegio Nacional de Educación Profesional Técnica 3. Reducción de los costos de mantenimiento. 4. Programas más sencillos y más rápidos 5. Aumento de la productividad del programador 6. Se facilita la utilización de las otras técnicas para el mejoramiento de la productividad en programación 7. Los programas quedan mejor documentados internamente. Lenguajes Máquina – Ensamblador Programación en Pseudocódigo realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria. Ventajas Velocidad.- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la máquina la computadora lo procesa mas rápido. Eficiencia de tamaño .- Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel. Los lenguajes máquina son aquellos cuyas instrucciones son directamente entendibles por el ordenador sin la necesidad de traducción alguna. Sus instrucciones no son más que ristras de ceros y unos (bits). Estas especifican la operación a realizar, los registros del procesador y celdas de memoria implicados, etc. Obviamente, este tipo de lenguajes serán fáciles de comprender para un ordenador pero muy difíciles para el hombre. Esta razón nos lleva a buscar otro lenguaje para comunicarnos con el ordenador. La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden 98 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Flexibilidad .- Es flexible porque todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina. O sea que en lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite. Desventajas Tiempo de programación .- Como es un lenguaje de bajo nivel requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución. Programación en Pseudocódigo este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialize. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel. Falta de portabilidad.- Porque para cada máquina existe un lenguaje ensamblador; por ello, evidentemente no es una selección apropiada de lenguaje cuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. Basic BASIC (Beginner’s All Purpose Symbolic Instruction Code) fue desarrollado en 1964 por John Kemeny y Thomas Programas fuente grandes .- Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos más instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores. Peligro de afectar recursos inesperadamente .- Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la maquina, programar en PT Bachiller en Informática 99 Informática Colegio Nacional de Educación Profesional Técnica Kurtz. Fue desarrollado para enseñar a los estudiantes de Dartmouth College a cómo usar computadoras y escribir programas. BASIC se dice ser un lenguaje muy simple de aprender y uno fácil de traducir, además de ser capaz de hacer casi todas las tareas de una computadora desde inventario hasta cálculos matemáticos. BASIC incluyó componentes de FORTRAN y ALGOL. El primer BASIC tenía 14 comandos, entre ellos LET, PRINT, GOTO, IF THEN. BASIC era un programa compilado, queriendo decir que las instrucciones era traducidas a lenguaje o código de máquina antes de ser ejecutadas. Para el 1970, existían más de 20 versiones diferentes de BASIC corriendo en computadoras "mainframe" y microcomputadoras. Programación en Pseudocódigo y nuevas versiones estan influenc iadas por programación orientada a objetos (OOP). OOP crea módulos de data y procedimientos de manipulación. En 1989, en un artículo de la revista BYTE, Bill Gates habla de una nueva versión visual de BASIC, que sería una mezcla de código, objetos "programmer-written", y objetos visualmente específicados. Tres años más tarde, Microsot lanza al mercado Visual BASIC, una versión diseñada específicamente para desarrollar y realzar aplicaciones para Microsoft Windows. Cobol El deseo de desarrollar un lenguaje de programación que fuera aceptado por cualquier marca de computadora, reunió en Estados Unidos, en Mayo de 1959, una comisión (denominada Diez años más tarde, una versión de BASIC fue escrita por Bill Gates y Pauel Allen e incluida en la "Altair", (la primera computadora personal) y luego de tres décadas, BASIC se convirtió el lenguaje programación de computadoras más popular. En adición a las versiónes de BASIC de Microsoft y Eubanks, se escribieron muchas más, incluyendo RadioShack Level 1 BASIC, Apple Ineteger BASIC, RMBASIC, Better BASIC, QuickBASIC, y Professional BASIC. Para mediados de los 1980’s, varias cien versiónes de BASIC estaban siendo utilizadas. En 1998, 14 años luego de comenzar esta tarea, el "American National Standards Institute" (ANSI), sometió el Standard BASIC. Hoy día, las versiones de BASIC estan cayendo a un lado, algunas han sido remplazadas con versiones que se unieron a Standard Basic, 100 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica CODASYL: Conference On Data Systems Languages) integrada por fabricantes de computadoras, empresas privadas y representantes del Gobierno. Dando lugar a la creación del lenguaje COBOL (COmmon Business Oriented Language) orientado a los negocios, llamándose ésta primera versión COBOL-60, por ser éste el año que vio la luz. COBOL, estaba en constante evolución gracias a las sugerencias de los usuarios y expertos dando lugar a las revisiones de 1.961, 1.963 y 1.965. La primera versión standard nació en 1968, siendo revisada en 1.974, llamadas COBOL ANSI o COBOL74, muy extendidas todavía. En la actualidad es COBOL-85 la última versión revisada del lenguaje COBOL, estando pendiente la de 1.997. Programación en Pseudocódigo elementales, suma, resta, multiplicación y división, sino que su empleo es apropiado para el proceso de datos en aplicaciones comerciales, utilización de grandes cantidades de datos y obtención de resultados ya sea por pantalla o impresos. Con Cobol se pretendía un lenguaje universal, sin embargo, los numerosos fabricantes existentes en la actualidad han ido incorporando retoques y mejoras, aunque las diferencias esenciales entre ellos es mínima. Con la llegada del Sistema Operativo Windows, son muchos los que intentan proveer al Cobol de esa interface gráfica, Objective Cobol, Visual Object Cobol de Microfocus, Fujitsu PowerCobol, Acucobol-GT, Vangui y Cobol es un lenguaje compilado, es decir, existe el código fuente escrito con cualquier editor de textos y el código objeto (compilado) dispuesto para su ejecución con su correspondiente runtime. Cuando se ve un programa escrito en Cobol saltan a la vista varios aspectos: Existen unos márgenes establecidos que facilitan su comprensión. Esta estructurado en varias partes, cada una de ella con un objetivo dentro del programa. Nos recuerda mucho al lenguaje inglés, puesto que su gramática y su vocabulario están tomados de dicho idioma. En contraste con otros lenguajes de programación, COBOL no se concibió para cálculos complejos matemáticos o científicos, de hecho solo dispone de comandos para realizar los cálculos mas PT Bachiller en Informática 101 Informática Colegio Nacional de Educación Profesional Técnica Cobol-WOW de Liant (RM), etc.. que están consiguiendo que éste lenguaje siga estando presente en moda visual de ofrecer los programas. Sin embargo, son muchas las empresas que siguen dependiendo del Cobol-85 tradicional para sus proyectos debido principalmente a la estructura de su sistema informático. Fortran Fortran que originalmente significa Sistema de Traducción de Fórmulas Matemáticas pero se ha abreviado a la FORmula TRANslation, es el más viejo de los establecidos lenguajes de "alto-nivel", fue diseñado por un grupo en IBM durante los años 50 (1950). El idioma se hizo tan popular en los 60s fue cuando otros vendedores empezaron a producir sus propias versiones y esto llevó a una divergencia creciente de dialectos (a través de 1963 había 40 recopiladores diferentes). Fue reconocido que tal divergencia no estaba en los intereses de los usuarios de la computadora o los vendedores de la computadora y para que FORTRAN 66 se volviera el primer idioma en ser regularizado oficialmente en 1972 La publicación de la norma significó que ese Fortran se llevó a cabo más ampliamente que cualquier otro idioma. A mediados de los años setenta se proporcionaron virtualmente cada computadora, mini o mainframe, con un sistema FORTRAN 66 normal. Era por consiguiente posible escribir programas en Fortran en cualquier sistema y estar bastante seguro que éstos pudieran 102 Programación en Pseudocódigo moverse para trabajar en cualquier otro sistema bastante fácil. Esto, y el hecho que pudieran procesarse programas de Fortran muy eficazmente. La definición normal de Fortran se puso al día en 1970 y una nueva norma, ANSI X3.9-1978, fueron publicadas por el Instituto de las Normas Nacional americana. Esta norma era seguida (en 1980) adoptado por la Organización de Normas Internacionales (ISO) como una Norma Internacional (ES 1539: 1980). El idioma es normalmente conocido como FORTRAN 77 (desde que el proyecto final realmente se completó en 1977) y es ahora la versión del idioma en su uso extendido. Muchos rasgos deseables no estaban disponibles, por ejemplo, en FORTRAN 77 es muy difícil de representar datos estructura sucintamente y la falta de cualquier medios del almacenamiento dinámico que todas las series deben tener un tamaño fijo que no puede excederse; estaba claro de una fase muy temprana, más moderno, el idioma necesitó ser desarrollado. El trabajo empezó en los 80s en un idioma conocido como "Fortran 8x". El trabajo tomó 12 años en parte debido al deseo de guardar FORTRAN 77 un subconjunto estricto y también para asegurar esa eficacia, pero el idioma no se compuso. Idiomas como Pascal, ADA y Algol son muy fáciles de usar pero no pueden igualar la eficacia de Fortran. Fortran 90 es un desarrollo mayor del idioma pero no obstante incluye todos los PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo de FORTRAN 77 como un subconjunto estricto y para que cualquier FORTRAN conformando normalmente como el programa del 77 continuará siendo un programa valido en Fortran 90. Muchos hombre han puesto toda su vida en escribir estos programas que, después de tantos años de uso, es muy fiable. Además de las viejas estructuras de FORTRAN 77, Fortran 90 permite expresar los programas de maneras que se satisfacen más a un ambiente de la informática moderna y han quedado obsoletos muchos de los mecanismos que eran apropiados en FORTRAN 77. En Fortran 90 algunos rasgos de FORTRAN 77 han sido reemplazados por rasgos mejores, más seguros y más eficaces, muchos de éstos fueron quitados de la siguiente revisión interina del idioma Fortran 95. Como la norma de Fortran 90 es muy grande y compleja hay (inevitablemente) un número pequeño de ambigüedades y conflictos, las áreas grises. Las tales anomalías a menudo sólo vienen a observarse cuando se desarrollan compiladores. En los últimos años el idioma basado en Fortran 90 conocido como High Performance Fortran (HPF) se ha desarrollado. Este idioma contiene todo de Fortran 90 y también incluye otras extensiones que son muy deseables. Fortran 95 incluirá muchos de los nuevos rasgos de HPF. PT Bachiller en Informática 103 Informática Colegio Nacional de Educación Profesional Técnica Pascal El lenguaje de programación Pascal fue desarrollado originalmente por Niklaus Wirth, un miembro de la International Federation of Information Processing (IFIP) El Profesor Niklaus Wirth desarrolló Pascal para proporcionar rasgos que estaban faltando en otros idiomas en ese entonces. Sus principales objetivos para Pascal eran para el lenguaje eran ser eficiente para llevarse a cabo y correrse los programas, permita bien el desarrollo de estructuras y también organizar programas, y para servir como un vehículo para la enseñanza de los conceptos importantes de programación de la computadora. Pascal que se nombró gracias al matemático Blaise Pascal es un descendiente directo de ALGOL 60, qué ayudó a su desarrollo. Pascal también tomo componentes de ALGOL 68 y ALGOL-W. Programación en Pseudocódigo elemento de información ocupaba un 'palabra' en memoria y la tarea de tratar cada elemento de datos como número entero, real, o arreglos, no recaía en el programador. C era conocido como el lenguaje con el cual se desarrolló el sistema operativo UNIX, y actualmente la mayoría de los sistemas operativos se codifican en C. Lo bueno de este lenguaje es que no depende de la arquitectura de hardware. Es posible escribir código en C, y llevarlos a otras máquinas. Eso lo convirtió en unos de los lenguajes más portátiles del mercado. A fines de los 70s, evolucionó lo que conocemos como... 'C de Kernigham y Ritchie', y el libro The C Programming Languaje que publicó Prentice Hall en El original idioma de Pascal aparecido en 1971 con última revisión publicada en 1973. Fue diseñado para enseñar las técnicas de programación y otros temas a los estudiantes de la universidad y era el idioma de opción de los años 60 a los 80s. C En 1972, Dennis Ritchie, estaba finalizando su proyecto, en los famosos Laboratorios Bell. "El lenguaje C", una evolución del B, implementado originalmente en una DEC PDP-11. Al contrario de sus antecesores, C era un lenguaje con tipos, es decir, que cada 104 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica 1978 se hizo impresionantemente famoso. Programación en Pseudocódigo ++ Programming Languaje, publicado por Addison-Wesley en 1986. Claro que C tuvo un inconveniente, su amplia difusión ahora le estaba jugando una mala pasada, al ser tan universal, habían muchas variantes, además bastante incompatibles, creando serios problemas para los desarrolladores de software, que necesitaban escribir código para diferentes plataformas, y claro que era imprescindible que exista compatibilidad. El nombre de C ++, fue porque éste último era una variante del C original. En el lenguaje C, el operador ++ significa, incrementar la variable, se eligió en nombre C ++, debido a que éste agregaba al C original el término de Programación Orientada a Objetos (POO), basadas en Simula 67. Todo el mundo necesitaba que se cree una versión universal de C. Tarea llevada a cabo por la ANSI, que no fué sino hasta 1989 para que se aprobara el estándar. La ANSI cooperó con la ISO, en la estandarización mundial de C, el documento se publicó en 1990 y es posible pedirle a la ANSI una copia de ese documento. Al ser C ++ una variación de C, los programas codificados en C pueden correr tranquilamente en C ++. En 1990, el lenguaje ha sido descrito por Stroustrup y Ellis en el Annotated C ++ Reference Manual editado por Addison -Wesley, existiendo una versión en español del mismo, con el título de C ++. Manual de Referencia con Ahora, volvemos al principio de los 80s. Donde Bjarne Stroustrup, diseñó una extensión del lenguaje C, llamándolo C con Clases. El término clase provenía de Simula 67, y servía para entender mas el comportamiento del mundo real y llevarlo a los códigos, ocultando los detalles de su implementación. En 1984, C con Clases fue rediseñado en un compilador y se lo denominó C ++. Como lo indica la nota Data Abstraction in C, en el Técnical Journal de AT&T Bell Laboratories. (vol. 63, núm 8, Octubre 1984). En 1985 estuvo disponible la primera versión del lenguaje C ++ y se realizó el libro de Bjarne Struostrup: The C PT Bachiller en Informática 105 Informática Colegio Nacional de Educación Profesional Técnica anotaciones publicado por Wesley/Días de Santos en 1994. Addison- La versión actual estandarizada por ANSI, la versión 3.0 es la que soportan la mayoría de los fabricantes mundiales, como ser, Borland, AT&T, Wat Com, Microsoft, etc, es sus respectivas actualizaciones. Hoy en día, Borland ofrece el compilador de C++ en la versión 5.5 de forma gratuita. La programación estructurada como su nombre lo indica, consiste en descomponer nuestro programa en estructuras lo más simple posibles y de fácil manejo, para posteriormente integrarlos en un solo programa. Un programa, por largo y complejo que sea, se puede diseñar anidando convenientemente en tres estructuras básicas. Esto ayudara mucho a que los programas sean fácilmente leídos por cualquier persona, a que el números de errores en el proceso de programación sea bajo, a que los programas sean autodocumentados y a que puedan mantenerse fácilmente. Programación en Pseudocódigo Identificar las características de la programación estructurada y los lenguajes de programación que la integran. El alumno: • Elaborará un resumen que contenga las características y ventajas de la programación estructurada y una breve descripción de los lenguajes de programación que la integran. 2.1.2 Programación estructurada en la representación arborecente. Estructura Secuencial Es aquella en que una acción sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente. Estudio individual Competencia de Información 106 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Diagrama de Flujo Pseudocódigo Inicio . acción acción acción . . 1 2 3 . Fin Cuando se quiere indicar que unas determinadas acciones se deben realizar en secuencia, se escriben unas a continuación de otras. Por ejemplo: Leer cantidad, precio Importe = cantidad * precio Imprime importe Programación en Pseudocódigo IF expresión THEN Acción del then ELSE Acción del else ENDIF Por ejemplo, para calcular el importe de la venta de un determinado artículo, sabiendo que al comprar entre 1 y 15 unidades del mismo, el descuento es de un 10%, y si la compra es superior a 15 unidades, el descuento será de un 15%, y escribimos: Leer artículo, cantidad, precio unitario Importe= cantidad* precio unitario IF cantidad>0 AND cantidad<16 THEN Importe= importe*0.9 ELSE Importe=importe*0.85 ENDIF Imprimir cantidad, precio unitario, importe Estructura condicional o selectiva Se utilizan para tomar decisiones lógicas. En éstas se evalúa una condición y en función del resultado de la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. En pseudocódigo éstas palabras son if, then, else. Las estructuras selectivas pueden ser: – simples, dobles o múltiples. Si utilizamos una condicional o selectiva, es para indicar que según el resultado cierto o falso de una expresión hay que realizar una acción u otra de las dos especificadas. En general, una estructura alternativa se escribe de la siguiente forma: PT Bachiller en Informática 107 Informática Colegio Nacional de Educación Profesional Técnica Simples. Ejecuta una determinada acción cuando se cumple una determinada condición. La selección if – then (si – entonces) evalúa la condición y si es verdadera ejecuta la acción de lo contrario no hará nada. Su representación es la siguiente: IF <Condición> THEN <Acción> Dobles Permite elegir entre dos opciones posibles en función del cumplimiento o no de una determinada condición. Si la condición es verdadera, se ejecuta la acción 1, si es falsa, se ejecuta la acción 2. La selectiva en pseudo código es if – then – else. Programación en Pseudocódigo La representación de esta estructura es la siguiente: CASE <Expresión> OF INICIO OP1:Acción1 OP2:Acción2 OP3:Acción3 ELSE <AcciónX> FIN Estructura Repetitiva Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se llaman bucles, e iteración al hecho de repetir la ejecución de una secuencia de acciones. Su representación es: IF <Condición> THEN <Acción> ELSE <Acción> Selectivas múltiples La estructura de selección múltiple (case en pseudocódigo) evaluará una expresión que podrá tomar n valores distintos 1, 2, 3, 4, …..n. Según que elija uno de estos valores en la condición, se realizará una de las n acciones. 108 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Mientas (while). La estructura repetitiva mientras es aquella en que el cuerpo del bucle se repite mientras se cumple una determinada condición. Cuando se ejecuta esta instrucción, la primera cosa que sucede es que se evalúa la condición. Si la expresión es verdadera, entonces se ejecuta el cuerpo del bucle. Este proceso se repite una y otra vez mientras la condición sea verdadera. Hasta (do/while) Se ejecuta hasta que se cumpla una condición determinada que se comprueba al final del bucle, esto permite que la iteración se ejecute al menos una vez antes de que la condición sea evaluada. • • • • Preguntará a 10 de sus compañeros de clase cuál es su estatura. Con estos datos, elaborará una rutina en pseudocódigo que calcule el valor medio de la altura de los alumnos que integran su grupo. Finalizará la entrada de datos con un valor 0 para la variable altura. Imprimirá la media obtenida. En la programación estructurada existen diferentes estructuras de control, estas nos sirven para estructurar el programa de modo que sea sencilla su identificación y en un momento si se requiere mantenimiento (modificar o incluir otras estructuras) nos sea fácil encontrar el lugar o la estructura a modificar. Para (for) Se utilizan las estructuras for cuando se conocen con certeza el número de veces que desea repetir un bucle, es decir, cuando es un número fijo de veces. Realización del ejercicio Competencia Lógica Elaborar programación en pseudocódigo usando las estructuras que caracterizan la programación estructurada. El alumno: PT Bachiller en Informática 109 Informática Colegio Nacional de Educación Profesional Técnica 2.2.1 Programación Funcional Concepto La Programación Funcional es un Paradigma de Programación declarativa basado en la utilización de funciones matemáticas. Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos laterales. Programación en Pseudocódigo instrucciones se lleven a cabo por medio de funciones recursivas). Existen dos grandes categorías de lenguajes funcionales: los funcionales puros y los híbridos. La diferencia entre ambos estriba en que los lenguajes funcionales híbridos son menos dogmáticos que los puros, al admitir conceptos tomados de los lenguajes procedimentales, como las secuencias de instrucciones o la asignación de variables. Características En programación funcional, un programa consta de: Un conjunto de operaciones primitivas cuyo significado está predeterminado El objetivo es conseguir lenguajes expresivos y matemáticamente elegantes, en los que no sea necesario bajar al nivel de la máquina para describir el proceso llevado a cabo por el programa, y evitando el concepto de estado del cómputo. La secuencia de computaciones llevadas a cabo por el programa se regiría única y exclusivamente por la reescritura de definiciones más amplias a otras cada vez más concretas y definidas, usando lo que se denominan definiciones dirigidas. Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteración (lo que obliga en la práctica a que todas las repeticiones de 110 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica en el sistema. Por ejemplo, la suma de números enteros, la resta, el producto, etc. Un conjunto de definiciones de función, establecidas por el programador, que eventualmente emplearán las operaciones primitivas. Por ejemplo, la función factorial. Un dato de entrada (entendido como la aplicación de una de las funciones definidas sobre otros datos). Por ejemplo: fact(2*fact(2)). La ejecución del programa funcional consiste en el cálculo del valor asociado al dato de entrada de acuerdo con las definiciones dadas para las funciones en el programa. El proceso de cálculo de dicho valor se conoce como evaluación del dato de entrada. Dicha evaluación puede realizarse de muchas formas, pero hay dos estrategias fundamentales para llevarla a cabo: la estrategia voraz (eager) y la estrategia perezosa (lazy). La elección de una u otra tiene importantes repercusiones en la implementación y en el comportamiento operacional del proceso de evaluación. Programación en Pseudocódigo argumentos t1, ..., tn. Ejemplo: 1) Para calcular el valor del dato de entrada num1+num2 es preciso saber el valor de ambos argumentos, num1 y num2 en cualquier caso. 2) Para calcular el valor del dato de entrada 0*num no es necesario evaluar num, pues cualquier valor multiplicado por 0 es 0. Hay dos estrategias fundamentales para llevar a cabo la evaluación del dato de entrada: La estrategia voraz (eager) evalúa todos los argumentos de la llamada a función antes de evaluar la función en si. La ejecución de un programa funcional consiste en el cálculo del valor asociado al dato de entrada de acuerdo con las definiciones dadas para las funciones en el programa. Un dato de entrada es una llamada a una función f sobre un conjunto de argumentos t1, ..., tn que se expresa como f(t1,...,tn). Para calcular el valor de f(t1,...,tn) puede o no ser necesario calcular primero los valores de los PT Bachiller en Informática 111 Informática Colegio Nacional de Educación Profesional Técnica La estrategia perezosa (lazy) solo evalúa los argumentos de la llamada a función si es necesario hacerlo para evaluar la función. Lenguajes LISP LISP se encuentra entre los más antiguos lenguajes de programación de alto nivel aún en uso generalizado. Fue desarrollado alrededor de 1958 por John McCarthy. La idea de LISP surgió a partir de un sistema lógico llamado "lambda calculus'' desarrollado por Alonzo Church. Existen diversas variantes (o dialectos) de LISP, entre las cuales se encuentran Scheme, T, etc. LISP llegó a ser fundamental como lenguaje de programación para las investigaciones de Inteligencia Artificial, y sigue aún hoy siendo uno de los más utilizados en este campo. En la década de los '80 se intentó estandardizar el lenguaje. Programación en Pseudocódigo lenguaje. De hecho, se propone la utilización de un subconjunto de las muchas funciones disponibles para con ellas examinar las técnicas que hacen de LISP un lenguaje tan especial. LISP: PARADIGMA DEL ESTILO DE PROGRAMACIÓN FUNCIONAL. Una de Las características de LISP es la posibilidad de tratar las propias funciones como datos. En LISP, funciones e incluso programas enteros pueden ser utilizados directamente como entrada a otros programas o subrutinas. En esto el prototipo para la concepción del lenguaje ha sido la estructura de las funciones matemáticas. Todos sabemos cómo resolver una expresión del tipo (8 * ((17 + 3) / 4)). Como resultado surgió el Common LISP cyas especificaciones se recogen en Common LISP: The Language, 2nd Edition (CLTL2). Common LISP es actualmente el dialecto más difundido y la base para el desarrollo de numerosas implementaciones. Las razones para ello se encuentran en el hecho de poseer una de las formas de sintaxis menos restrictivas entre los lenguajes de alto nivel. Esto facilita su aprendizaje, al ser muy corto el número de estructuras y funciones que el estudiante debe conocer para llegar a dominar las técnicas de programación en este 112 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Primero hallaríamos el resultado de 17 + 3, que entonces dividiríamos entre 4, para el resultado multiplicarlo por 8. Es decir, que iríamos resolviendo los paréntesis más interiores y pasando los resultados a las operaciones descritas en los paréntesis que los contienen. (* 8 (/ (+ 3 17) 4)) sería la función LISP equivalente. *, / y + son nombres de funciones LISP. Los números en (+ 3 17) son los argumentos que se pasan a la función '+'. Pero en (/ (+ 3 17) 4) a la función '/' se le está pasando un argumento numérico 4, pero también (+ 3 17), otra función con dos argumentos numéricos. Esta es la esencia de un lenguaje de programación funcional y por eso decimos que LISP lo es. "Programación funcional significa, según Graham, escribir programas que operan a base de devolver valores en lugar de producir efectos colaterales. Estos efectos colaterales incluyen cambios destructivos en los objetos y la asignación de variables (con setq, por ejemplo)." Sigue explicando Graham que "una función destructiva es una que puede alterar los argumentos que se le pasan. Sólo unos pocos operadores LISP están pensados para producir efectos colaterales. En general, los operadores propios del lenguaje están pensados de manera tal que se invoquen para obtener los valores que devuelven. Nombres como sort (vl-sort), remove (vl-remove) o substitute (subst) no deben llamarnos a engaño. Si usted quiere efectos Programación en Pseudocódigo colaterales, utilice setq sobre el valor devuelto. Esta misma regla sugiere" -sigue explicando Graham- "que algunos efectos colaterales son inevitables. Tener la programación funcional como ideal no implica que los programas nunca debieran tener efectos colaterales. Sólo quiere decir que no deben tener más de los necesarios." Esta característica de la programación funcional no es arbitraria. Los programadores LISP no adoptaron el estilo funcional por razones meramente estéticas. Lo usan porque facilita su trabajo. En el entorno dinámico de LISP, los programas funcionales pueden ser escritos a una PT Bachiller en Informática 113 Informática Colegio Nacional de Educación Profesional Técnica velocidad poco usual, y a la vez, pueden ser inusualmente confiables. En LISP es comparativamente fácil el depurar los programas. Una gran cantidad de información se encuentra disponible en tiempo de ejecución, lo que ayuda en el rastreo de los errores. Pero aún más importante es la facilidad con la que pueden probarse los programas. No es necesario el compilar el programa para probar su funcionamiento como un todo. Podemos probar las funciones individualmente, llamándolas desde el nivel superior del evaluador. Esta comprobación de carácter incremental es tan valiosa que el estilo de programación LISP ha evolucionado para aprovecharla. Los programas escritos en un estilo funcional pueden ser comprendidos una función a la vez, y desde el punto de vista del lector, esta es su principal ventaja. Sin embargo, el estilo funcional se adapta perfectamente a la comprobación incremental: los programas escritos en este estilo pueden ser también probados una función a la vez. Cuando una función ni examina ni altera el estado exterior, los errores se harán aparentes de inmediato. Una función así diseñada sólo puede afectar el mundo exterior a través de los valores que devuelve. En la medida que estos valores sean los esperados, podemos confiar en el código que los produjo. Programación en Pseudocódigo Tratan de aislar los efectos colaterales en unas pocas funciones, de manera que la mayor parte del programa pueda ser escrito en un estilo puramente funcional. Si una función debe producir efectos colaterales, tratan de que al menos posea una interfaz funcional. Le dan a cada función un propósito único y bien definido. Cuando acaba de escribirse una función, pueden probarla sobre una selección de casos representativos, y una vez hecho esto pasar a la próxima función. En LISP, como en cualquier otro lenguaje, el desarrollo se lleva a cabo en ciclos de escritura y comprobación. Los programadores LISP experimentados de hecho diseñan sus programas de manera que puedan ser fácilmente probados. 114 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Pero en LISP el ciclo es muy corto: funciones aisladas, e incluso partes de funciones. Y si comprobamos todo a medida que lo escribimos, sabremos dónde buscar cuando se produzca un error: en lo último que se escribió. Hay implementaciones de LISP para uso en el desarrollo de aplicaciones de todo tipo. El lenguaje se ha normalizado con el nombre de Common LISP (norma ANSI). Camel Ocaml es uno entre muchos lenguajes funcionales (como Lisp, Scheme, Haskell) que además de programación funcional pura, permite programar empleando características imperativas, algunas características propias de lenguajes orientados a objetos e incluye un sistema de módulos que facilita el desarrollo de proyectos grandes (con signaturas y funciones). Cuenta con un sistema de tipos fuerte, con un derivador de tipos que facilita el chequeo estático de programas sin requerir del programador tiempo en declaración explicita de tipos. Además de tipos básicos (enteros, flotantes, booleanos, caracteres y cadenas) ofrece diversas formas de construir nuevos tipos como tuplas, arreglos, listas, registros, conjuntos, streams y facilidades para definir tipos recursivos, polimórficos y paramétricos. En cuanto a interpretación/compilación se basa en un modelo de máquina abstracta portable (máquina Zinc). Cuenta con un interprete (ocaml) que es a su vez un entorno interactivo útil para experimentar y dos compiladores: Se ha desarrollado desde 1992, con base en su predecesor Caml Special Light (inicio de la década 1990), cuyo predecesor a su vez es Caml Light (1985-1990) que pertenece a la familia de lenguajes de programación funcionales ML (que se inicio en la década de 1970). Como los demás lenguajes funcionales emplea un recolector de basura que permite en muchos casos desentenderse del manejo de memoria dinámica (el recolector elimina automáticamente memoria que no se usa --de forma que no es necesario usar free como en C). PT Bachiller en Informática 115 Informática Colegio Nacional de Educación Profesional Técnica Ocamlc que genera bytecode utilizable por la máquina Zinc y portable a toda arquitectura donde se ha portado la máquina Zinc (incluyendo x386/OpenBSD, x386/Linux, x386/Windows 95-NT, Mac, Digital, Solaris, IRIX). Ocamlopt que genera binarios para diversas arquitecturas (incluyendo procesadores i386 con sistemas operativos OpenBSD y Linux). Incluso hay un compilador sobre la marcha (JIT o Just in Time Compiler) que traduce en línea bytecode a código de máquina. Cuenta con herramientas que facilitan el desarrollo como un depurador simbólico; herramientas para análisis léxico y sintáctico; herramientas para automatizar compilación de proyectos grandes; editor y visualizador gráfico de módulos; modos para diversos editores; preprocesador muy configurable pues permite redefinir la sintaxis del lenguaje; extractor de documentación técnica; medidor de desempeño. Programación en Pseudocódigo oportunidades, el segundo puesto en 2 y el tercero en uno. En cuanto a licencia, las herramientas de Ocaml emplean la GPL, mientras que las librerías la LGPL la cual permite poner la licencia que se desee a programas producidos con Ocaml y enlazados con las librerías. Hope Hope es un pequeño lenguaje de programación funcional, con escritura polimorfica y algebraica, patrón de comprobaciones y funciones de orden superior. Esta versión es un completo intérprete. Ciertos tipos de problemas pueden programarse de forma MUY eficiente empleando Ocaml como lo muestran los resultados en las competencias internacionales ICFP realizadas desde 1998, en los que han participado grupos de programadores empleando su lenguaje de programación favorito (incluyendo lenguajes imperativos como C, orientados a objetos como Java y funcionales como Ocaml). De las 5 versiones de 1998 a 2002, equipos que han programado en Ocaml han ocupado el primer puesto en 3 116 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo que hacen uso de bucles while, do-while, for, etc. Función Las funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado que sustituirá a la función en el punto de invocación (las funciones devuelven un resultado). Cada función se evoca utilizando su nombre en una expresión con los argumentos actuales o reales encerrados entre paréntesis. Para hacer una referencia a una función se invoca mediante un nombre y en caso de existir, una lista de parámetros actuales necesarios (argumentos). Los argumentos deben coincidir en cantidad, tipo y orden con los de la función que fue definida. La función devuelve un valor único. Ejemplo: Obtener el sexto carácter de un nombre y si dicho carácter no existe, se asumirá un asterisco como tal. Algo es recursivo si se define en términos de sí mismo (cuando para definirse hace mención a sí mismo). Para que una definición recursiva sea válida, la referencia a sí misma debe ser relativamente más sencilla que el caso considerado. Ejemplo: definición de nº natural: -> el N º 0 es natural -> El Nº n es natural si n-1 lo es. En un algoritmo recursivo distinguimos como mínimo 2 partes: Caso trivial, base o de fin de recursión: Es un caso donde el problema puede resolverse sin tener que hacer uso de una nueva llamada a sí mismo. Evita la continuación indefinida de las partes recursivas. Función SEXTO(n:cadena):carácter Inicio si longitud(n) >= 6 entonces SEXTO Subcadena(n,6,1) en caso contrario SEXTO ‘*’ Fin Recursividad El concepto de recursividad va ligado al de repetición. Son recursivos aquellos algoritmos que, estando encapsulados dentro de una función, son llamados desde ella misma una y otra vez, en contraposición a los algoritmos iterativos, PT Bachiller en Informática 117 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Parte puramente recursiva: Relaciona el resultado del algoritmo con resultados de casos más simples. Se hacen nuevas llamadas a la función, pero están más próximas al caso base. La recursividad es una manera elegante, intuitiva y concisa de plantear una solución, y es uno de los pilares de la programación funcional. Pero no quiere decir que sea un sistema eficiente, es decir, que el número de operaciones que hay que hacer sea inferior que si se utiliza otra forma de resolverlo, como seria mediante una estructura repetitiva. Al contrario la recursividad es cara y exige un mayor procesamiento. Ejemplo: //Función Fibonacci recursiva FIB (X): Inicio_Fibonacci Si (X = 0 ó X = 1) entonces FIB = X Si no FIB = FIB (X-1) + FIB (X-2) Fin_si Fin_Fibonacci //Función Fibonacci no recursiva FIB (X): Inicio_Fibonacci Si (X = 0 ó X = 1) entonces FIB = N Si no A=0 B=1 Para (i = 2; i <= X; i++) C=A+B A=B B=C Fin_para FIB = C 118 Fin_si Fin_Fibonacci Composición funcional Un modelo de composición funcional es aquel donde el resultado del cálculo de una función es la entrada a la siguiente y así sucesivamente hasta que la composición resuelve el problema. En este tipo de programación un programa se concibe como un conjunto de funciones, que se llaman unas a otras con composición funcional para resolver un problema. Transparencia referencial Decir que una función tiene transparencia referencial, quiere decir que se comporta como una función PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica matemática, en el sentido de que si recibe un valor de entrada, siempre producirá el mismo valor de salida y que el resultado del cálculo de la función únicamente se produce por el nombre de la función. Función de orden superior Esta es una característica fundamental que deben tener las funciones que participen en la construcción de un programa funcional. Una función de orden superior es aquella que acepta como argumento otra función que puede retornar como valor de la función otra función. Es decir que tienen el status de cualquier otro objeto. Pero para que ello sea posible es necesario que estas funciones tengan transparencia referencial, es decir, que siempre que les pase un mismo valor como argumento de entrada deben devolver el mismo resultado. Y este resultado ha de ser devuelto por el nombre de la función. En otras palabras, que se comporten como las funciones matemáticas. • • Programación en Pseudocódigo Copiará el ejemplo //Función Fibonacci recursiva en tu cuaderno. Realizará el ejercicio paso a paso introduciendo un valor diferente a “X” para que aprecie su funcionamiento. En programación funcional, un programa consta de: Un conjunto de operaciones primitivas cuyo significado está predeterminado en el sistema. Por ejemplo, la suma de números enteros, la resta, el producto, etc. Un conjunto de definiciones de función, establecidas por el programador, que eventualmente emplearán las operaciones primitivas. Por ejemplo, la función factorial. Repetición del ejercicio Competencia Analítica Identificar el concepto, características y aplicación de la programación funcional. El alumno: PT Bachiller en Informática 119 Informática Colegio Nacional de Educación Profesional Técnica Un dato de entrada (entendido como la aplicación de una de las funciones definidas sobre otros datos)Por ejemplo: fact(2*fact(2)). 2.2.2 Programación Lógica Concepto El arte de la programación consiste en dar una serie de especificaciones, las cuales dicen que resultados se requieren, para que a partir de estas se conviertan en código ejecutable, el cual sigue los detalles de como los resultados son llevados a cabo. La programación lógica parte del establecimiento de una base de datos de sentencias y reglas de inferencia que son declaradas por el programador, dada la naturaleza declarativa de la lógica. A partir de esto la máquina resolverá las cuestiones que se plantean mediante una manipulación lógica. La idea principal que esta atrás de la programación lógica es el uso de la lógica matemática que se traduce en una especificación mediante la declaración de fórmulas lógicas y la computación es el proceso de deducción o construcción de pruebas. Todo lo anterior hace que la programación lógica sea fundamentalmente diferente de los otros lenguajes de programación. Programación en Pseudocódigo toma como un lenguaje de programación. Un poco después Colmerauer lo lleva a una implementación en donde lo bautiza como PROLOG (PROgramming in LOGic). A finales de los setentas, una de las implementaciones relevantes fue la que llevó a cabo David Warren [Warren ]. En una máquina PDP-10 el denominado PROLOG-10 o PROLOG de Edinburgo [Pereira 1978], [Bowen 1981] y [Clocksin 1981]. Características La programación Lógica está basada en la noción de Relación. Debido a que en la relación es un concepto mas general de una Aplicación. La programación lógica es un vástago de la demostración mecánica de teoremas, en donde el principio de resolución forma la base de la mayoría de los sistema de programación lógica. En 1974 Kowalski [Kowalski 1974], introduce la idea de usar lógica matemática, considerando un subconjunto de la lógica de primer orden llamada lógica de cláusulas de Horn, lo 120 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica La Programación Lógica es potencialmente de alto nivel. Los lenguajes de Programación Lógica pueden explotar la Inteligencia Artificial. Lenguajes Prolog PROLOG es la abreviatura de PROgramación LOGica, con lo que hacemos mención a la procedencia del lenguaje: Es una realización de lógica de predicados, como lenguaje de programación. Como una especie de semiestándar se han establecido el DECsystem-10 PROLOG de Edimburgo y el PROLOG descrito en el libro "PROGRAMMING IN PROLOG" de W.F.Clocksin y C.S.Melish. Programación en Pseudocódigo de conocimientos se le pueden formular preguntas. Los mecanismos importantes del PROLOG son: recursividad, instanciación, verificación, unificación, backtracking e inversión. La Recursividad representa la estructura más importante en el desarrollo del programa. En la sintaxis del PROLOG no existen los bucles FOR ni los saltos; los bucles WHILE son de difícil incorporación, ya que las variables sólo pueden unificarse una sóla vez. La recursión es más apropiada que otras estructuras de desarrollo para procesar estructuras de datos recursivas como son las listas y destacan en estos casos por una La mayoría de los dialectos PROLOG se basan en este y contienen el DECsystem10 PROLOG en su ámbito linguístico. Al contrario que el LISP (y otros lenguajes), en el PROLOG los programas son confeccionados de forma distinta. " Algorithm = Logic + Control". Con esto podemos decir que los algoritmos pueden ser divididos en su lógica y en sus mecanismos de control. La lógica se representa en forma de predicados. Estos predicados aparecen en tres formas distintas: como hechos, como reglas y como preguntas. La lógica formulada como hechos y reglas se define como base de conocimientos. A esta base PT Bachiller en Informática 121 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo representación más sencilla y de mayor claridad. La Instanciación es la unión de una variable a una constante o estructura. La variable ligada se comporta luego como una constante. La Verificación es el intento de derivar la estructura a comprobar de una pregunta desde la base de conocimientos, es decir, desde los hechos y reglas. Si es posible, la estructura es verdadera, en caso contrario es falsa. Perspectiva del lenguaje. El programa prolog se compone de unos hechos (datos) y un conjunto de reglas, es decir, relaciones entre objetos de la base de datos. La Unificación es el componente principal de la verificación de estructuras. Una estructura estará comprobada cuando puede ser unificada con un hecho, o cuando puede unificarse con la cabecera de una regla y las estructuras del cuerpo de dicha regla pueden ser verificadas. La ejecución del programa cargado en memoria consiste en realizar una pregunta de forma interactiva: el intérprete generará por inferencia los resultados que se deducen a partir del contenido de la base de datos. PROLOG está orientado a la resolución de problemas mediante el cálculo de predicados, basado en: Preguntas a la base de datos. Pruebas matemáticas. PROLOG tiene una sintaxis y semántica simples. Sólo busca relaciones entre los objetos creados, las variables y las listas, que son sus estructuras básicas. Objetos de datos El programa PROLOG específica cómo debe ser la solución, en vez de dar el algoritmo para su resolución. La solución se obtiene mediante búsqueda aplicando la lógica de predicados. Un ejemplo sencillo 122 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Tipos de datos primitivos: variables y constantes: Enteros Reales Caracteres Los identificadores con minúscula representan hechos, los que van con mayúscula variables. El alcance de una variable es la regla donde aparece. Tipos de datos estructurados: Átomos: constantes y variables de cadena. Listas, representadas entre [ ]. Tipos definidos por el usuario. Las reglas para definir relaciones pueden actuar como tipos de usuario. Representación de almacenamiento. Las reglas y hechos son almacenadas en memoria como listas enlazadas. La ejecución de prolog consiste en una búsqueda en profundidad de un árbol conteniendo todas las posibles soluciones. Para cada una de ellas se evaluará su corrección. La búsqueda se puede hacer más eficiente mediante la poda del árbol de búsqueda (corte). Control de secuencia. evaluación es secuencial. El orden Cortes, (!), fuerza el retroceso en la búsqueda. Esto puede impedir que se encuentren ciertas soluciones, pero puede hacer más eficiente la búsqueda. Entrada y salida, nl y write. Subprogramas y gestión almacenamiento de PROLOG tiene dos modos: Modo consulta, se introducen nuevas relaciones (hechos) en el almacenamiento dinámico de la base de datos. Modos pregunta, se ejecuta un intérprete basado en pilas para evaluar las preguntas del usuario. Alcance de las variables: Ambiente local de referencia, todas las variables son locales a la regla en que están definidas. de Expresiones, operaciones aritméticas y operadores relacionales. Not(). Enunciados. Hechos, relaciones que se expresan en una consulta. Son tuplas con un nombre de predicado y unos argumentos. Reglas, implicaciones que se expresan en una operación consult. Preguntas, sucesión de términos que finalizan con un punto. PT Bachiller en Informática 123 Informática Colegio Nacional de Educación Profesional Técnica La unificación hace interaccionar nombres locales de una regla con los de otras reglas. Ambiente común de referencia, todos los datos son compartidos. Paso de parámetros, la unificación proporciona el paso de parámetros entre reglas. Funciones normales, van integradas en el lenguaje: Consult(nommbrearchivo) Fail, siempre fracasa. See(nombrearchivo), lee las entradas de un archivo y las incorpora al conjunto de reglas. Write(término). Tell(término), reorienta la salida del write al archivo. Told, cierra el archivo anterior. Nl, salto de línea. Atom(X), devuleve cierto si X es un átomo. Var(X), devuelve cierto si X es una variable. Integer(X), devuelve cierto si X es un entero. Trace, activa la depuración del programa. Programación en Pseudocódigo Alice Alice es un sistema pionero para el modelado y resolución de CSPs (problemas de satisfacción de restricciones) de programación lógica con restricciones. La caracterización de estos lenguajes se da por: La especificación del sistema particular de restricciones. La especificación de las reglas de computación y selección. De cualquier manera la mayoría comparten el universo de Herbrand con "=", pero añaden diferentes dominios y/o algoritmos resolutores. La mayoría usan las reglas estándar de Computación y Selección de Prolog. Evaluación del lenguaje: PROLOG va bien para problemas de relaciones, por ejemplo: Tratamiento del lenguaje natural, y consulta de bases de datos. A pesar de que es posible desarrollar programas sin especificar el algoritmo de resolución a veces hay que echar mano de otro tipo de programación para hacer los programas más eficientes, y a menudo se emplea el corte para limitar el espacio de búsqueda. 124 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Forma Clausal Programación en Pseudocódigo c) Que sólo existen condiciones (B1, B2, ..., Bm no existen). En la programación lógica son las relaciones las que definen un programa y la forma normal de representar una relación es mediante la utilización de cláusulas. ¿Qué significa una cláusula sin condiciones? Quiere decir que el hecho es cierto en todos los casos. B1, B2, ..., Bm <- A1, A2, ..., An. A este tipo de cláusulas se les denomina «asertos» o «hechos», porque representan verdades. Y tienen una gran importancia en la programación lógica. en que: A1, A2, ..., An son condiciones de la cláusula y van unidas por la conjunción «Y». Mientras B1, B2, ..., Bm son conclusiones de la cláusula y van unidas por la disyunción «O». Por eso, se dice que las condiciones son conjuntivas y las conclusiones disyuntivas. EJEMPLO: «Luis es varón», se representa por: varón (Luis) «María es madre», se representa por: madre (María) ¿Qué significa una cláusula sin conclusiones? Una cláusula es una expresión de la forma: Por ejemplo: La relación que dice que «una persona es padre si es varón y además es progenitor» se representaría mediante la cláusula: padre (X) <- varón(X), progenitor (X) En este ejemplo: A1 es varón (X), A2 es progenitor (X), y B1 es padre (X). Es decir las condiciones de la cláusula son dos A1 y A2; y la conclusión es una sola B1. Al definir una relación de forma clausal se puede uno encontrar con tres casos: a) Que existan en la cláusula condiciones y conclusiones. b) Que sólo existen conclusiones (A1, A2, ..., An no existen). PT Bachiller en Informática 125 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Quiere decir que esa información no es cierta en ningún caso. EJEMPLO: «Luis no es varón» es falso, y se representa por: <- varón (Luis) «María no es madre» es falso, y se representa por: <- madre (María) A este tipo de cláusulas que tienen condiciones sin conclusiones se les denomina «negaciones». Cuando una cláusula tiene ambas partes, las conclusiones y las condiciones, se le denomina «regla lógica». Así, la regla lógica: abuelo (X,Y) <- padre (X, Z), padre (Z, Y) indica que «X es el abuelo de Y, si X es el padre de Z y Z es el padre de Y». La vaca, la sardina y el reno son animales. La vaca y el reno son rumiantes, pero la sardina no. Un animal rumiante es mamífero. Este sería de la forma: animal (vaca) animal (sardina) animal (reno) rumiante (vaca) rumiante (reno) <- rumiante (sardina) mamífero (X)<- animal (X), rumiante (X) En el programa se han definido cinco asertos, una negación, y una regla lógica. A toda esta información se le denomina «base de hechos y reglas» o En este instante ya se tienen todos los ingredientes para poder construir un programa lógico: Los asertos que permiten declarar las verdades (los hechos). Las negaciones que permiten declarar las falsedades. Las reglas lógicas que permiten obtener (inferir) unas conclusiones a partir de unas condiciones. EJEMPLO: Si se quiere construir el programa lógico «que permita inferir qué animal es un mamífero» y se cuenta con la siguiente información: 126 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo «base de conocimientos» en Inteligencia Artificial. ¿Cómo se trabaja con la base de hechos y reglas? Después de que el programador la ha creado, el usuario la «consulta» realizando preguntas sobre ella (que se denominan cuestiones lógicas). El sistema espera una pregunta con un ? y responde a la pregunta con un >. En el ejemplo anterior se produciría el siguiente diálogo entre el usuario y el sistema: ? rumiante (sardina) > falso ? mamífero (vaca) > cierto ? mamífero (X) > X= vaca, reno Fue Alfred Horn, un lógico alemán, quién en 1951 llegó a la conclusión que para realizar una inferencia correcta y así eliminar las ambigüedades, las cláusulas sólo debían de tener una conclusión. Es decir, debían de ser de la forma: B <- A1, A2, ..., An Podía tener una o varias condiciones A1, A2, ..., An, pero con una única conclusión B1. Por lo que si A1, A2, ..., An son ciertas, se puede inferir que B1 es cierta. Horn también demostró que cualquier problema que pueda expresarse en forma lógica clausal se puede transformar en un conjunto de «cláusulas de Horn». NOTA: La vaca y el reno son mamíferos porque son animales rumiantes. Si se analiza la «base de hechos y reglas» anterior, es decir, el programa lógico, se comprueba que no hace falta señalar las cláusulas que indiquen la falsedad de los hechos, ya que se sobreentiende que si la sardina no está como «aserto» de animal rumiante quiere decir que no es rumiante, por lo que se puede eliminar la negación <- rumiante (sardina). Esta forma de programar no es válida por las ambigüedades que se pueden crear con las reglas lógicas. Por ello en programación lógica se utiliza un tipo de cláusula muy especial que es la cláusula de Horn. Cláusula de Horn PT Bachiller en Informática 127 Informática Colegio Nacional de Educación Profesional Técnica Ejemplo: En este caso se trata de crear un programa «que permita inferir la paternidad de una persona», para lo que se cuenta con la siguiente información: Programación en Pseudocódigo 1.- Estudiar el enunciado del problema detenidamente buscando las relaciones que puedan existir para resolver el problema. Luis es hijo de Fernando y María. Beatriz es hija de Esteban y Teresa. 2.- Definir las relaciones encontradas y transformarlas en cláusulas de Horn. hijo (Luis, Fernando, María) hijo (Beatriz, Esteban, Teresa) padre (Y) <- hijo (X, Y, Z) madre (Z) <- hijo (X, Y, Z) NOTA: Indica el primer aserto que Luis es hijo de Fernando y María; y el segundo, que Beatriz es hija de Esteban y Teresa. Las reglas lógicas señalan que si X es hijo de Y y Z, entonces Y es el padre y Z es la madre. Por lo que a la pregunta (cuestión lógica): 3.- Codificar el programa lógico con un pseudocódigo lógico o directamente con instrucciones de un lenguaje lógico de programación. Observación Competencia Analítica Identificar las características y funciones de la programación lógica. ? padre (X) el sistema responderá: > X= Fernando, Esteban Y a la pregunta: ? madre (X) el sistema responderá: > X= María, Teresa Desarrollo de programa lógico. Como ya comentamos, un programa lógico está basado en relaciones, por consiguiente los pasos a seguir para el desarrollo de un programa lógico son: 128 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo La programación lógica se fundamenta en relaciones, que son entidades de un nivel superior a las funciones. El alumno: • Observará lo siguiente: (1) planeta (Tierra) (2) gira (Luna, tierra) (3) vecino (X, Y) <- planeta (X), gira(Y, X) (4) vecino (X, Y) <- vecino (Y, X) Realización del ejercicio Competencia Lógica Reconocer el concepto, uso y aplicación de relaciones en la programación lógica. El alumno: • Identificará ¿Qué relaciones se encuentran en la base de hechos anterior? Las relaciones se describen, en lógica, mediante cláusulas que presenten condiciones y conclusiones. Cuando no existen condiciones, las cláusulas se denominan asertos o hechos. Cuando no existen conclusiones, se denominan negaciones. Y cuando existen ambos términos, condiciones y conclusiones, se denominan reglas lógicas. Una regla lógica indica, pues, que se verifican las conclusiones (parte izquierda de la regla) si las condiciones (parte derecha de la regla) son ciertas. Un programa lógico es un conjunto de asertos y reglas lógicas que definen una «base de hechos y reglas» o una «base de conocimientos» en Inteligencia Artificial, siendo de gran Comparación del resultado con otros compañeros Competencia para la Vida Cotejar las compañeros. respuestas con sus El alumno: • Comparará sus respuestas al ejercicio para la comprobación de resultados. PT Bachiller en Informática 129 Informática Colegio Nacional de Educación Profesional Técnica aplicación en esta área: para programar juegos (como el ajedrez), para la demostración automática de teoremas y para el desarrollo de sistemas expertos. Un sistema experto es un programa informático en el que se han codificado los conocimientos de un experto en una actividad concreta de la vida, por lo que es capaz de dar soluciones como si fuera el propio experto. Así, si se cogen los conocimientos de un médico experto en enfermedades del corazón, y se crea un programa con sus conocimientos, el programa podrá dar un diagnóstico experto de un enfermo que tenga una serie de sintomatologías del corazón. Comparar. La programación lógica es convencional (existe un diálogo entre el usuario y el programa), es declarativa (se declaran asertos y reglas, pero no se indica el orden en que hay que ejecutarlas), y es recursiva (la definición de las reglas se describen recurrentemente). términos métodos. Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de Modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha o parar. Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar. Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema 2.3.1 Programación Orientada a Objetos Concepto La Programación Orientada a Objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en 130 Programación en Pseudocódigo de objetos, propiedades, PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2. Programación en Pseudocódigo su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos. La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc. Métodos en las clases. Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto. Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de matemáticas harás uso de objetos fracción y en un programa que gestione un taller de coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc. Objetos en POO. Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar (que viene de una mala traducción de la palabra instace que en inglés significa Clases en POO. Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablábamos de las clases coche o fracción porque sólo estuvimos definiendo, aunque por encima, sus formas. Propiedades en clases. Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y PT Bachiller en Informática 131 Informática Colegio Nacional de Educación Profesional Técnica Ejemplar ). Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto. Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee, pero será algo parecido a esto. miCoche = new Coche() Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar el objeto de la clase coche. Programación en Pseudocódigo llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje “ponte en marcha”. Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos imbocar. miCoche.ponerseEnMarcha() En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros. Otras cosas. La herencia sirve para crear objetos que incorporen propiedades y métodos de otros objetos. Así podremos construir unos objetos a partir de otros sin tener que reescribirlo todo. Estados en objetos. Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama estado. Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto. miCoche.color = rojo El objeto es miCoche, luego colocamos el operador punto y por último el nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad del objeto a rojo con una simple asignación. Mensajes en objetos . Un mensaje en un objeto es la acción de efectuar una 132 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que estamos trabajando, y abstraernos para definir un código que sea compatible con objetos de varios tipos. Características Abstracción. Es el mecanismo de diseño en la POO. Nos permite extraer de un conjunto de entidades datos y comportamientos comunes para almacenarlos en clases. Encapsulamiento. Mediante esta técnica conseguiremos que cada clase sea una caja negra, de tal manera que los objetos de esa clase se puedan manipular como unidades básicas. Programación en Pseudocódigo que se realice. Es decir, podemos acceder a una variedad de métodos distintos (con el mismo nombre) mediante el mismo mecanismo de acceso. En C++ el polimorfismo se consigue mediante la definición de clases derivadas, funciones virtuales y el uso de punteros a objetos. Lenguajes C++ Se pronuncia "ce plus plus". Fue desarrollado por Bjarne Stroustrup en los Bell Laboratories a principios de la década de los '80. C++ introduce la programación orientada al objeto en C. Es un lenguaje extremadamente poderoso y eficiente. C++ es un súper conjunto de C, para aprender C++ Los detalles de la implementación se encuentran dentro de la clase, mientras que desde el exterior, un objeto será simplemente una entidad que responde a una serie de mensajes públicos (también denominados interfaz de la clase). Herencia. Es el mecanismo que nos permite crear clases derivadas (especialización) a partir de clases bases (generalización). Es decir, podríamos tener la clase "Empleado" (clase base) y la clase "Vendedor" derivando de la anterior. Una librería de clases (como la MFC) no es más que un conjunto de definiciones de clases interconectadas por múltiples relaciones de herencia. Polimorfismo. Esta característica nos permite disponer de múltiples implementaciones de un mismo método de clase, dependiendo de la clase en la PT Bachiller en Informática 133 Informática Colegio Nacional de Educación Profesional Técnica significa aprender todo acerca de C, luego aprender programación orientada al objeto y el uso de éstas con C++. El nacimiento de C está fuertemente ligado a los sistemas Unix. Fue creado por Dennis Ritchie sobre un DEC PDP-11 con sistema operativo UNIX. Vista la ausencia de restricciones y generalidad del lenguaje, UNIX se reescribió en su mayor parte en C, y asi continúa siendo en nuestros días. Se crearon multitud de portes para diferentes arquitecturas, y durante mucho tiempo el estándar fue el definido por el libro de D.Ritchie y B.Kernighan The C programming Language de 1978. Sin embargo la falta de un estándar de ley provocó que empezasen a aparecer discrepancias entre los códigos de diferentes implementaciones. Programación en Pseudocódigo Podemos afirmar sin miedo que la mayor parte de sitemas operativos y aplicaciones del mundo están escritas en C ó C++, los lenguajes que todo programador profesional debe conocer. C/C++ C es un lenguaje tipado pero su tipificación no es estricta y esto es lo que nos permite realizar virguerías con nuestro código fuente. En C el concepto básico a manejar en realidad es el de posición de memoria y cóntenido de esa memoria. Gracias a ello, la misma cosa puede realizarse de varias maneras perféctamente válidas. C es un lenguaje estructurado y tiene todos los constructos necesarios para desarrollar programas estructurados (y no estructurados, porque hay goto La asociación americana de estándares tomo cartas en el asunto, y en 1983 creó un comité para la estandarización de C. En 1990 se adopta definitivamente ANSI C. Esta es la versión estándar de C que se usa hoy en día. C++ nace como una expansión de C. Cuando la crísis del software hizo patente que el modelo de programación estructurada estaba agotado surgió un nuevo paradigma: la programación orientada a objetos. La extensiones de C++ intentan cubrir este paradigma. Inicialmente su creador Bjarne Stroustrup lo llamo "C con clases", pero en el año 1983 se adoptó el ya familiar nombre de C++. El lenguaje ha sufrido dos revisiones en 1985 y en 1990. 134 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica también, aunque como dijo Djkstra, goto es una sentencia peligrosa). C++ usa la sintaxis de C y añade nuevos constructos como son las clases, y todos los conceptos relacionados con la programación orientada a Objetos. Herencia, polimorfismo, encapsulaciión, sobrecarga, etc. La libertad que da al programador es lo que convierte a C/C++ en un arma de doble filo. Se consigue códigos muy eficientes sin tener que bajar a nivel de ensamblador pero la complejidad para mantener códigos grandes y depurarlos puede llegar a ser inmanejable. Nunca sabremos como definir C/C++, como el cielo de los infiernos ó el infierno en el cielo. Lo que es innegable es que hoy en día, a pesar de nuevos lenguajes como Java (que tiene una sintaxis muy parecida a C/C++) C/C++ sigue funcionando a pleno rendimiento, sobre todo en lo que es mundo UNIX/Linux y Windows. Además el uso de API's se ha generalizado hasta ser el pan nuestro de cada día, lo que hace que haya menos código místico e indescifrable. Programación en Pseudocódigo objeto es, pues, una mesa, una silla, un alumno, una clase, etc., pues son elementos reales que se pueden comprender y están bien definidos. Un objeto también es un concepto abstracto como un elemento denominado «Ordenador» que es capaz de recibir un conjunto de números y los ordena ascendente o descendentemente. Las características que definen un objeto son tres: su estado, su comportamiento y su identidad. Estado. Viene determinado para el conjunto de propiedades o atributos que tiene el objeto (que es su estructura estática), junto con los valores que pueden asumir cada uno Hay compiladores para multiples arquitecturas. Por nombrar algunos usados actualmente, tenemos cc en sistemas Unix, gcc en Linux y los compiladores Borland C++ Builder y Microsoft Visual C++ para DOS/Windows. Objeto Un objeto es un elemento real o abstracto, que tiene un estado, un comportamiento y una identidad. Un PT Bachiller en Informática 135 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo de esos dinámica). atributos (su estructura Así, en el caso del alumno Luis Pérez Gómez sus atributos son: Nombre y apellidos, edad, sexo, dirección donde vive, curso en que está matriculado y asignaturas en que se ha matriculado dentro de ese curso. Estos atributos constituyen su estructura estática, porque son permanentes como tales. Mientras que el contenido de ellos es su estructura dinámica, que puede variar. Por ejemplo, Luis este año está matriculado en un curso y en unas asignaturas, y al año que viene en otras. También cambia su edad y puede cambiar de dirección. En el caso del objeto abstracto «Ordenador», sus atributos son las celdas donde almacena los números y una variable que indica si los números están ordenados ascendentemente, descendentemente o están sin ordenar (es su estructura estática). Mientras que el contenido de las celdas y de la variable, en un momento dado, es su estructura dinámica. — Curso: — Asignaturas: • Estructura dinámica (en 1996). — Nombre y apellidos: Luis Pérez Gómez — Edad: 17 — Sexo: varón — Dirección: calle del Pez, 24 — Curso: 3º BUP — Asignaturas: Matemáticas, Física, Química, Inglés, Historia • Estructura dinámica (en 1997). — Nombre y apellidos: Luis Pérez Gómez — Edad: 18 — Sexo: varón Véanse ambos ejemplos con datos concretos: Objeto alumno "Luis Pérez Gómez". • Estructura estática (su contenido no importa). — Nombre y apellidos: — Edad: — Sexo: — Dirección: 136 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo — Dirección: calle Atocha, 18 — Curso: COU — Asignaturas: Curso Completo NOTA: El alumno Luis Pérez Gómez ha cambiado, entre 1996 y 1997, de edad, dirección, curso y asignaturas, porque es un objeto activo. Objeto "Ordenador". • Estructura estática — Celdas de memoria: c1, c2, …, cn. — Variable de estado: ve. • Estructura dinámica Si se le pide al objeto que ordene ascendentemente los números: 4, -5, 3, 10, -1, 2 su estructura dinámica va variando de la siguiene forma: El hecho de que un objeto tenga un estado implica que ocupa un espacio, sea en el mundo real o en la memoria de la computadora, exista durante un tiempo, cambie el valor de sus atributos, y sea creado y destruido. Así, el objeto alumno «Luis Pérez Gómez» descrito anteriormente se crea cuando se le matricula en el colegio; existe como alumno durante toda su vida escolar; cambia sus datos al cambiar de curso o por otras circunstancias, y deja de ser alumno cuando sale del colegio. Comportamiento. El comportamiento de un objeto viene determinado por la forma de actuar al recibir un mensaje para que realice una acción. — Estado inicial: Los números se leen y se almacenan en las celdas. c1 c2 c3 c4 c5 c6 4 -5 3 10 -1 2 ve=0 — Estado final ordenado: Los números han sido ordenados ascendentemente. c1 -5 c2 -1 c3 c4 2 3 ve=1 c5 4 c6 10 NOTA: Se ha supuesto que la variable de estado (ve) del objeto «Ordenador» toma los valores 0, 1 ó 2, según que la información esté sin ordenar, ordenada ascendentemente u ordenada descendentemente. PT Bachiller en Informática 137 Informática Colegio Nacional de Educación Profesional Técnica Un «mensaje» es una orden que se manda a un objeto para que realice una operación con un propósito específico. Así, en el caso del objeto «Ordenador», se le podrían mandar los siguientes mensajes: — «leer_números», para que leyera números enteros desde el teclado y los almacenara en las celdas de memoria: c1,c2,…,cn. — «ordenar_ascendentemente», para que el contenido almacenado en c1,c2,…,cn, quedase ordenado ascendentemente. Programación en Pseudocódigo — Los argumentos, que son los valores que se transmiten con el selector y que, en muchos casos, pueden ser nulos. Por ejemplo: Ordenador.Ordenar_ascendentemente(), es un mensaje que se envía al objeto receptor Ordenador, para que ordene ascendentemente los números (selector), y no se transmite ningún argumento. Mientras que los mensajes: Luis_Perez_Gomez.Asignaturas(curso) Luis_Perez_Gomez.Asignaturas(todas) — «ordenar_descendentemente», para obtener un contenido con orden descendente. — «indicar_estado», para que especificara mediante la variable de estado ve si los números están sin ordenar (ve=0) ordenados ascendentemente (ve=1), u ordenados descendentemente (ve=2). — «mostrar_números», para que visualizase por la pantalla de la computadora los números almacenados en las celdas de memoria c1,c2,…,cn. Un mensaje viene definido por tres componentes: — El objeto receptor del mensaje, es decir, al objeto que se envía el mensaje. — El selector del mensaje, que es la acción que se quiere que realice el objeto. 138 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Señalan: el primero, que se desea conocer las asignaturas del curso en que Luis está matriculado, y el segundo, que se desea conocer todas las asignaturas en que está matriculado. En estos dos ejemplos, el argumento del selector (curso o todas) permite seleccionar unas asignaturas u otras. Identidad. Se entiende por identidad de un objeto la propiedad característica que tiene ese objeto que le distingue de todos los demás. Realmente, es difícil encontrar un dato específico que permanentemente identifique al objeto. Así, si se hace referencia a Luis Pérez Gómez, ¿se puede seleccionar algún dato que lo identifique durante toda su vida?: Al hablar de los objetos, es importante comentar el concepto de encapsulación. Se dice que un objeto está encapsulado (literalmente, está dentro de una cápsula) cuando está protegido del acceso indiscriminado de cualquier persona. Así, cuando se tiene en las manos un «transistor», se ve que se puede encender o apagar, poner la emisora que más guste, aumentar o disminuir el volumen, pero no se puede mover físicamente el dial ( esto se realiza con un mando), ni tocar el indicador de encendido, ni acceder a otras cosas que están dentro del transistor. Esto último lo debe tocar un profesional. — ¿Su nombre? - Lo puede cambiar en el Registro Civil. — ¿Su edad? - Cambia continuamente. — ¿Su DNI?, ¿Su sexo? - También pueden cambiar. Pero es indudable que pasará el tiempo y Luis Pérez no perderá su identidad y se podrá diferenciar de todas las demás personas. Si en la vida real es difícil identificar permanentemente un objeto que evoluciona, mucho más lo es en el mundo de la computadora. Normalmente se utiliza, como en la vida real, un nombre definido por el programador que lo identifique. Así, en el caso del objeto anterior que lee datos y los ordena ascendente o descendentemente se le ha identificado con la palabra «Ordenador». PT Bachiller en Informática 139 Informática Colegio Nacional de Educación Profesional Técnica Por ello, se dice que: — El dial, el indicador de encendido y la circuitería están encapsuladas. — Los mandos de sintonía, volumen, encendido/apagado, etc., no están encapsulados y son de acceso normal para todos los usuarios del transistor. La encapsulación es el proceso que aplica el diseñador de un objeto para ocultar aquellos detalles del objeto que no son específicamente necesarios para su uso. A la encapsulación se le denomina también «ocultamiento de información». Programación en Pseudocódigo La interfaz del transistor son el interruptor de encendido/apagado, los mandos de sintonía, volumen,…; todos ellos, elementos que permiten su manejo. Un objeto es, pues, un elemento autónomo de información, que tiene una estructura definida por sus atributos o propiedades y que proporciona unos servicios que definen su comportamiento. Su estructura está encapsulada (está oculta al acceso del usuario) y sus servicios no. Estos servicios, que definen la interfaz del objeto, son lo que solicita el usuario para que el objeto realice una acción específica. Así, en el ejemplo del objeto «Ordenador», parece claro que deberían estar encapsuladas la celdas de memoria c1,c2,…,cn; y la variable de estado ve, ya que el usuario que maneja este objeto no necesita acceder directamente a estos datos. Mientras que no deberían estar encapsuladas las operaciones que realiza: «leer_números», «ordenar_ascendentemente», …, «mostrar_números». Por lo tanto, un objeto, que es una unidad indivisible, tiene una parte interna que no es accesible al usuario y una parte externa que sí que es accesible. A esta parte accesible se le llama la interfaz (o protocolo) del objeto y lo constituye el conjunto de servicios que proporciona el objeto. Es realmente mediante esta interfaz como el usuario maneja el objeto. 140 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Clase Los objetos no aparecen así porque así, es necesario construirlos (en la terminología orientada a objetos se dice crearlos). Para crear un objeto, al igual que para producir un billete de Banco, es necesario disponer de una matriz o plantilla que le permita crear muchos objetos como ese. Objetos que tienen todos los mismos comportamientos, actúan igual, y la misma estructura estática con los mismos atributos. La clase es la plantilla que permite crear objetos de la misma estructura y comportamiento. Pero se ha de tener en cuenta que los valores de los atributos de cada objeto pueden ser diferentes, cosa que no ocurre con los billetes de Banco que salen del mismo molde. Programación en Pseudocódigo cuando se les envíe el mismo mensaje, aunque el resultado será diferente. Así, el mensaje: Luis_Pérez_Gómez.Asignaturas_matricul ado(), proporcionará: • Matemáticas, Física, Química, Inglés e Historia. Mientras que el mensaje: Luisa_Alvarez_Gómez.Asignaturas_matri culado(), proporcionará: • Todas las de 1er curso. EJEMPLO: Si se tiene la plantilla (clase) alumno, que se ha visto anteriormente, cuya estructura está definida por los atributos: Nombre y Apellidos, Edad, Sexo, Dirección, Curso y Asignaturas. Se puede crear con esta clase el objeto: Luis Pérez Gómez, 17 años, varón, con dirección en la calle del Pez 24, matriculado en 3º BUP en las asignaturas de Matemáticas, Física, Química, Inglés e Historia. O el objeto: Luisa Alvarez Gómez, 15 años, mujer, con dirección en la calle Marquez 12, matriculada en 1º BUP en todas las asignaturas. Evidentemente, ambos objetos alumnos van a proporcionar los mismos servicios PT Bachiller en Informática 141 Informática Colegio Nacional de Educación Profesional Técnica Las clases, al igual que los objetos que salen de ellos están formadas por dos partes: Una la constituyen las variables de la clase. Estas variables son los elementos que definen los atributos de los objetos. Y la otra, los métodos de la clase, que van a ser los servicios que proporcionan los objetos. Es decir, una clase es una plantilla con variables y métodos. De esta plantilla salen los objetos (que son instancias de la clase) con unos atributos y unos servicios. Los atributos son las variables de la clase y los servicios son los métodos de la clase. Programación en Pseudocódigo rectángulo, y se representa en OO Esto quiere decir que se tendrá un prototipo persona o rectángulo y un prototipo empleado o cuadrado que derivan de ellos. Como se indica a continuación: Clase persona { // variables de persona nombre, edad, peso, altura públicos: // métodos de persona persona(nombre,edad,peso,altura) // constructor datos_persona() // proporciona nombre, edad, peso y altura Pero, ¿cómo se crean estos objetos a partir de la clase? El sistema es muy sencillo. Dentro de la clase existe un método que es el constructor y se encarga de construir todos los objetos que salen de esa clase de forma que tengan la misma estructura que la clase. Asimismo, dentro de la clase se suele incorporar otro método (el destructor) que se le llama automáticamente cuando se destruye el objeto. Herencia El concepto de herencia en orientación a objetos deriva del concepto de herencia biológica, en el que un descendiente (por ejemplo, un hijo) hereda las características de sus ascendientes (por ejemplo, los padres). Además, es normal que el descendiente tenga alguna característica propia no heredada. Así, se dice que un empleado es una persona, y un cuadrado es un tipo de 142 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica actualiza_persona(...) // actualiza nombre, edad, peso y altura ... }; clase empleado: persona{ // variables de empleado empresa, tipo_trabajo, departamento, retribución públicos: // métodos de empleado empleado(nombre,edad,peso,altura,em presa, tipo_trabajo,...) datos_empleado() // proporciona los de empleado y los de persona actualiza_empleado(...) // actualiza Programación en Pseudocódigo suyos propios (empresa, tipo_trabajo,…) más los que hereda de persona (nombre, edad, peso,…). Y los métodos de empleado son los suyos propios: el constructor; datos_empleado() que proporciona todos los datos del empleado y de la persona, para lo cual tendrá que llamar al método datospersona(); actualiza_empleado(…) que actualiza sólo los datos propios del empleado;…. Y los métodos de persona, descritos anteriormente, que hereda. Así, el siguiente programa: // Programa principal Inicio empleado e1("Luis Pérez”,25,75,1.75,"Iberia", "analista","informático",...) empresa, tipo_trabajo, departamento, // retribución ... }; La clase persona tiene como variables propias el nombre, la edad, el peso y la altura. Y como métodos: el constructor de personas; datos_persona() que proporciona todas las variables de la persona; actualiza_persona(…) que permite actualizar el nombre, la edad, el peso o la altura de las personas; etc. Mientras que la clase empleado, que deriva de la clase persona, es una subclase de persona (otras subclases de persona son empresario, autónomo,…). Por ello, los datos de empleado son los PT Bachiller en Informática 143 Informática Colegio Nacional de Educación Profesional Técnica e1.datos_persona() // nombre, edad, peso y altura e1.datos_empleado() // nombre, edad, peso, altura, empresa, // tipo_trabajo,... e1.actualiza_empleado(empresa=" TWA") // modifica Iberia por TWA ... Fin Crea un objeto empleado e1; . Una parte es la de «persona» que hereda, y otra es la específica de «empleado». Por ello, cuando se le manda el mensaje e1.datos_persona() utiliza el método de la clase persona y visualiza «Luis Pérez, 25 años, 75 Kg, 1,75 m de alto». Y cuando se le manda el mensaje e1.datos_empleado(), utiliza el método de la clase empleado y visualiza todos los datos: «Luis Pérez, 25 años, 75 Kg, 1,75 m de alto, trabaja en Iberia, como analista, en Informática, con una retribución de tres millones». Programación en Pseudocódigo reutilizar el código de la clase persona) y para ampliarlo (por ejemplo, la clase persona se amplía por herencia con la clase empleado). En la Programación Orientada a Objetos un problema se modela diseñando los objetos, que interactúan entre ellos mandándose mensajes (como en la vida real). Un objeto es una entidad autónoma que tiene un estructura, un comportamiento y una identidad que lo diferencia de todos los demás. La estructura viene definida por los atributos del objeto, su comportamiento por las operaciones (o servicios) que proporciona el objeto El mensaje e1.actualiza_empleado(empresa= «TWA»), cambia la empresa donde trabaja, de Iberia a la TWA. Gracias a la herencia el programador se ahorra tener que codificar gran parte del programa. Por ejemplo, si la clase persona ya estuviera codificada debido al desarrollo de un programa anterior, el programador la importaría a su programa y sólo tendría que codificar la clase empleado, y el programa principal. Por ello, se dice que la herencia es el mecanismo apropiado para reutilizar código ya programado (por ejemplo, 144 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica y su identidad por el nombre del objeto. El hecho de que un objeto incorpore su estructura y comportamiento juntos en una misma unidad autónoma, se denomina «encapsulación». Un objeto es una cápsula que contiene sus atributos y las operaciones que puede realizar. Los objetos se obtienen de «plantillas» (clases) que proporcionan elementos con la misma estructura estática y comportamiento. Las clases constan de dos partes: las variables y los métodos. Las variables definen los atributos de los objetos, y los métodos definen los servicios. Las variables son privadas, es decir, sólo se puede acceder a ellas desde los propios métodos de la clase, mientras que los métodos son públicos para que puedan ser solicitados por otras clases o por el programa principal; por ello, al conjunto de métodos de una clase al que se puede acceder desde el exterior de la clase se llama la interfaz o protocolo de la clase. Programación en Pseudocódigo ser una subclase de otra superior). Mientras que en la herencia múltiple, una clase hereda a la vez de varias superclases. 2.3.2 Programación eventos dirigida por Concepto Los programas dirigidos por eventos son los programas típicos de Windows, tales como Netscape, Word, Excel, PowerPoint y otros. Cuando uno de estos programas ha arrancado, lo único que hace es quedarse a la espera de las acciones del usuario, que en este caso son llamadas eventos. Los objetos no son elementos todos iguales, ya que su estructura dinámica les diferencia a unos de otras. Al igual que como en la vida real los hijos heredan las propiedades de los padres, los objetos derivados heredan los atributos y los servicios de sus clases base. Dicho de otra forma, las subclases heredan de las superclases. Esta herencia puede ser simple o múltiple. En el primer caso, cada subclase tiene una única superclase de la que es derivada (aunque esta superclase puede PT Bachiller en Informática 145 Informática Colegio Nacional de Educación Profesional Técnica El usuario dice si quiere abrir y modificar un fichero existente, o bien comenzar a crear un fichero desde el principio. Estos programas pasan la mayor parte de su tiempo esperando las acciones del usuario (eventos) y respondiendo a ellas. Las acciones que el usuario puede realizar en un momento determinado son variadísimas, y exigen un tipo especial de programación: la programación dirigida por eventos orientada a eventos. Este tipo de programación es sensiblemente más complicada que la secuencial y la interactiva, pero con los lenguajes visuales de hoy, se hace sencilla y agradable. Los lenguajes visuales orientada al evento y con manejo de componentes dan al usuario que no cuenta con mucha experiencia en desarrollo, la posibilidad de construir sus propias aplicaciones utilizando interfaces gráficas sobre la base de ocurrencia de eventos. Programación en Pseudocódigo elegir una opción de un menú, el escribir en una caja de texto, o simplemente mover el ratón. Más adelante se verán los distintos tipos de eventos reconocidos por Windows 95 y por Visual Basic. Cada vez que se produce un evento sobre un determinado tipo de control, el programa arranca una determinada función o procedimiento que realiza la acción programada por el usuario para ese evento concreto. Estos procedimientos se llaman con un nombre que se forma a partir del nombre del objeto y el nombre del evento. Lenguajes HTML Para soportar este tipo de desarrollo interactúan dos tipos de herramientas, una que permite realizar diseños gráficos y, un lenguaje de alto nivel que permite codificar los eventos. Con dichas herramientas es posible desarrollar cualquier tipo de aplicaciones basadas en el entorno. Características Las acciones del usuario sobre el programa se llaman eventos. Son eventos típicos el click sobre un botón, el hacer doble click sobre el nombre de un fichero para abrirlo, el arrastrar un icono, el pulsar una tecla o combinación de teclas, el 146 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica El HTML (Hyper Text Markup Language) es un lenguaje que sirve para escribir hipertexto, es decir, documentos de texto presentado de forma estructurada, con enlaces (links) que conducen a otros documentos o a otras fuentes de información (por ejemplo bases de datos) que pueden estar en tu propia máquina o en máquinas remotas de la red. Todo ello se puede presentar acompañado de cuantos gráficos estáticos o animados y sonidos seamos capaces de imaginar. Por supuesto, la estética de los documentos escritos en HTML no se limita a texto digamos normal; consigue todos los efectos que habitualmente se pueden producir con un moderno procesador de textos: negrita, cursiva, distintos tamaños y fuentes, tablas, párrafos tabulados, sangrías, incluso texto y fondo de página de colores, y muchos más. Programación en Pseudocódigo sinónimos debido a que el browser Mosaic del NCSA (National Center for Supercomputing Applications) era el más extendido debido a las mejoras que incorporaba. Era entonces cuando nace HTML 2.0 en un draft realizado también por Dan Connelly. El crecimiento exponencial que comienza a sufrir el sistema lleva a organizar la First International WWW Conference en Mayo de 1994. El principal avance de la versión 2.0 de HTML es la incorporación de los llamados forms, formularios que permiten que el usuario cliente envíe información al servidor y ésta sea recogida y procesada allí: Precisamente con este fin, NCSA presenta la especificación del CGI, El lenguaje en sí es sencillo de entender, HTML como tal NO es un lenguaje de programación, sino un lenguaje de presentación de información y documentos varios. El lenguaje HTML nace en 1991 de manos de Tim Berners-Lee de CERN como un sistema hipertexto con el único objetivo de servir como medio de transmisión entre físicos de alta energía como parte de la iniciativa WWW. En 1993 Dan Connelly escribe el primer el primer DTD (Document Type Definition) de SGML describiendo el lenguaje. En 1994 el sistema había tenido tal aceptación que la especificación se había quedado ya obsoleta. Por aquel entonces WWW y Mosaic eran casi PT Bachiller en Informática 147 Informática Colegio Nacional de Educación Profesional Técnica Common Gateway Interface, versión 1.0 que define un interfaz entre programas ejecutables y el sistema WWW. Con la incorporación de los forms, aparece por primera vez campos donde el usuario puede escribir, menús pull-down y los denominados radio-buttons (pulsadores) integrados en páginas WWW. Desde entonces el Lenguaje ha seguido creciendo como algo dinámico como una lengua humana, algo vivo, siendo modificado sobre todo por las personas que lo utilizan. Así, una evolución con el lenguaje suele seguir de una propuesta que es adoptada por algunos clientes (browsers). Con el uso se ve si es eficiente y es adoptada y si es así, finalmente se incorpora al standar. Programación en Pseudocódigo visualizador de Internet como Netscape o Explorer. El lenguaje HTML se construye a base de códigos como <B>, que significa que el texto que le sigue está en negrita. Este cambio de estilo se desactiva con </B> Hay que indicar que es indiferente utilizar mayúsculas o minúsculas para escribir el código, es decir, que <B> produce el mismo efecto que <b>, aunque el uso de las mayúsculas facilita la lectura del documento en HTML y el reconocimiento de los códigos. El diseño básico de un documento HTML exige ciertas reglas sobre la distribución de la página. Esta debe comenzar con el código <HTML> y finalizar con </HTML>. El HTML (HyperText Markup Language o, libremente traducido, lenguaje de enlaces hipertexto) no tiene nada que ver con un lenguaje de programación, quizá se parezca más al uso de un procesador de texto para MS-DOS como el Wordperfect por la utilización de códigos de comienzo y finalizado de estilo. Además de resultar bastante más sencillo, no se necesita ninguna herramienta de programación, compilador o similares, sino que cualquier editor de texto como el "edit" del DOS, por ejemplo, puede servir para realizar las páginas más sorprendentes. Para la realización, conversión y tratamiento de imágenes cualquier utilidad de dominio público como Paint Shop Pro es perfectamente válida. Por último, para ir observando cómo cambia la página es necesario un navegador o 148 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Dentro de estos códigos la página posee dos partes: una cabecera indicada con <HEAD> y finalizada con </HEAD> y un cuerpo de la página iniciado con <BODY> y finalizado con </BODY>. La cabecera se suele utilizar para establecer únicamente el título de la ventana y el cuerpo para diseñar el resto de la página. Indicar que <TITLE> y </TITLE> es para definir el título de la ventana. Una vez se tengan sus paginas listas para ser publicadas en Internet, necesitará un servidor de paginas Web donde alojarlas. Y si tienen un tamaño mas grande que el permitido, se tendrá que usar un programa de FTP para poder subirlas a la red. Un servidor Web es un ordenador que esta permanentemente conectado a Internet, por lo que situando nuestras paginas en el, estas serán accesibles a todo el mundo. Generalmente los proveedores de Internet ofrecen a sus clientes espacios Web gratuitos para publicar paginas personales. o con costos dependiendo de tus necesidades... Programación en Pseudocódigo "comprendan" en su totalidad el contenido de un documento.Básicamente, el HTML consta de una serie de órdenes o directivas, que indican al visor que estemos utilizando, la forma de representar los elementos (texto, gráficos, etc...) que contenga el documento. JAVA Java es una tecnología que hace sencilla la construcción de aplicaciones distribuidas, programas que son ejecutables por múltiples ordenadores a través de la red. En el estado del arte en la programación de red, Java promete extender el papel de Internet desde el terreno de las comunicaciones hacia una red en la cual Hyper Text Markup Language: es un sistema para estructurar documentos. Estos documentos pueden ser mostrados por los visores de paginas Web en Internet, como Netscape, Mosaic o Microsoft Explorer etc. Por el momento no existe un estándar de HTML ya que tanto Netscape como Microsoft se empeñan en incluir directivas que solo funcionan con sus respectivos navegadores. De cualquier manera existen diferentes revisiones o niveles de estandarización, el 1.0, el 2.0 y el 3.0 etc, lo que produce que algunos visores no PT Bachiller en Informática 149 Informática Colegio Nacional de Educación Profesional Técnica puedan ejecutarse las aplicaciones completas. Su novedosa tecnología permitirá a los negocios proporcionar servicios de transacción a gran escala y en tiempo real y contener informacion interactiva en Internet. Java simplifica también la construcción de agentes software, programas que se mueven a través de la red y desempeñan funciones en ordenadores remotos en nombre del usuario. En un futuro cercano, los usuarios podrán enviar agentes software desde sus PCs hacia Internet para localizar información específica o para realizar transacciones en el menor tiempo posible en cualquier lugar del mundo. Java llevará estos adelantos todavía más lejos haciendo posible suministrar aplicaciones completamente interactivas vía Web. Las razones por las cuales se ha prestado tanta atención al lenguaje Java podrían resumirse en la siguiente lista de posibilidades que Java ofrece a sus usuarios: Escribir programas fiables y robustos. Programación en Pseudocódigo Breve Historia sobre Java. En 1990, Sun Microsystems comenzó un proyecto llamado Green para desarrollar software destinado a electrónica de consumo. James Gosling, un veterano en el diseño de software de red, fue asignado al nuevo proyecto. Gosling comenzó a escribir software en C++ para utilizarlo en aparatos como tostadoras, videos, etc. Este software se utilizó para crear electrodomésticos más inteligentes, añadiéndoles displays digitales o utilizando inteligencia artificial para controlar mejor los mecanismos. Sin embargo, pronto se dio cuenta de que C++ era demasiado susceptible a errores que pueden detener el sistema. Y aunque todo el mundo está acostumbrado a que el ordenador se cuelgue, nadie espera que su tostadora deje de funcionar. Construir una aplicación para prácticamente cualquier plataforma, y ejecutar dicha aplicación en cualquier otra plataforma soportada sin tener que repetir la compilación del código. Distribuir sus aplicaciones a lo largo de la red de una forma segura. En particular, los programas Java se pueden incrustar en documentos Web, convirtiendo páginas estáticas en aplicaciones que se ejecutan en el ordenador del usuario. 150 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica La solución de Gosling a este problema fue un nuevo lenguaje llamado Oak. Oak mantuvo una sintaxis similar a C++ pero omitiendo las características potencialmente peligrosas. Para conseguir que fuese un lenguaje de programación de sistemas controladores eficiente, Oak necesitaba poder responder a eventos provenientes del exterior en cuestión de microsegundos. También era necesario que fuese portátil; esto es, que fuese capaz de ejecutarse en un determinado número de chips y entornos diferentes. Esta independencia del hardware podría proporcionar al fabricante de una tostadora cambiar el chip que utiliza para hacerla funcionar sin necesidad de cambiar el software. El fabricante podría utilizar también partes del mismo código que utiliza la tostadora para hacer funcionar un horno. Programación en Pseudocódigo presentado en Sun World 1995. Incluso antes de la primera distribución del compilador de Java en Junio de 1996, Java ya era considerado como el estándar en la industria para la programación en Internet. La Arquitectura Java. La fortaleza de Java reside precisamente en su arquitectura única. Los diseñadores de Java necesitaban un lenguaje que fuera, sobre todo, sencillo de utilizar para el programador. A pesar de todo, y con el propósito de crear aplicaciones de red eficientes, Java necesitaba también la posibilidad de ejecutarse de forma segura en la red y trabajar en una amplísima gama de plataformas. Java cumple todos estos puntos y muchos más. Esto podría reducir costos, tanto de desarrollo como de hardware, aumentando también su fiabilidad. Al mismo tiempo que Oak maduraba, la WWW se encontraba en su periodo de crecimiento y el equipo de desarrollo de Sun se dio cuenta de que Oak era prefectamente adecuado para la programación en Internet. En 1994 completaron su trabajo en un producto conocido como WebRunner, un primitivo visor Web escrito en Oak. WebRunner se renombró posteriomente como HotJava y demostró el poder de Oak como herramienta de desarrollo en Internet. Finalmente, en 1995, Oak se renombró como Java por razones de marketing y fue PT Bachiller en Informática 151 Informática Colegio Nacional de Educación Profesional Técnica Cómo trabaja Java. Como muchos otros lenguajes de programación, Java utiliza un compilador para convertir el código fuente, legible para el ser humano, en programas ejecutables. Los compiladores tradicionales genera código que puede ejecutarse únicamente por un hardware específico. Los compiladores Java generan código binario o bytecode independiente de la arquitectura. Estos bytecodes se ejecutarán exclusivamente en una Máquina Virtual Java, Virtual Machine, VM, un procesador Java idealizado que normalmente se implementa por software, aunque la VM se ha implementado también como un chip hardware por Sun y otros. Los archivos binarios Java se denominan archivos de clases debido a que contienen clases simples Java. Para ejecutar bytecodes, la máquina virtual utiliza cargadores de clases para obtener los bytecodes del disco o de la red. Cada archivo de clases se lleva entonces a un verificador de bytecodes que se asegura de que la clase tienen un formato correcto y que no llegará a corromper la memoria cuando se ejecute. Una vez verificados los bytecodes se interpretan por un interprete. Programación control dirigida Programación en Pseudocódigo Lectura de los datos ingresados. Procesamiento de los datos. Visualización o ejecución de los resultados. Programación dirigida por los eventos En una aplicación controlada por eventos, el código no sigue una ruta predeterminada; ejecuta distintas secciones de código como respuesta a los eventos. Los eventos pueden desencadenarse por acciones del usuario, por mensajes del sistema o de otras aplicaciones, o incluso por la propia aplicación. La secuencia de estos eventos determina la secuencia en la que se ejecuta el código, por lo por Los programas dirigidos por control se ejecutan típicamente desde una línea de comando o automáticamente desde otra aplicación (tipo scheduler) y tienden al siguiente patrón: Inicialización interna de los datos. 152 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica que la ruta a través del código de la aplicación es diferente cada vez que se ejecuta el programa. Puesto que no puede predecir la secuencia de los eventos, el código debe establecer ciertos supuestos acerca del "estado del mundo" cuando se ejecute. Cuando haga suposiciones (por ejemplo, que un campo de entrada debe contener un valor antes de ejecutar un procedimiento para procesar ese valor), debe estructurar la aplicación de forma que asegure que esa suposición siempre será válida (por ejemplo, deshabilitando el botón de comando que inicia el procedimiento hasta que el campo de entrada contenga un valor). El código también puede desencadenar eventos durante la ejecución. Por ejemplo, cambiar mediante programación el texto de un cuadro de texto hace que se produzca el evento Cambio del cuadro de texto. Esto causaría la ejecución del código (si lo hay) contenido en el evento Cambio. Si supone que este evento sólo se desencadenará mediante la interacción del usuario, podría ver resultados inesperados. Por esta razón es importante comprender el modelo controlado por eventos y tenerlo en cuenta cuando diseñe su aplicación. Programación en Pseudocódigo si.... el 2 si.... etc. tienes que oprimir un número para continuar. Eventos simultáneos son los eventos que se realizan al mismo tiempo. Ejemplo, cuando ingresas a tu coreo electrónico te solicita el ordenador tu identificación y contraseña, estos son eventos simultáneos. Eventos concurrentes son los eventos que se ocurren al mismo tiempo., esto es concurren en su ejecución. Ejemplo, cuando realizas la apertura de un nuevo correo electrónico, el ordenador te solicita varios datos entre ellos tu edad y te pide ingreses el día de tu cumpleaños, para ello se abre una caja donde debes seleccionar tu día de nacimiento, igualmente sucede al ingresar tu mes de nacimiento, estos son eventos concurrentes. Eventos Secuenciales, Simultáneos y Concurrentes Eventos secuenciales son aquellos que se ejecutan en secuencia esto es uno después que el otro. Un ejemplo puede ser cuando efectúas una llamada telefónica a Teléfonos de México y te contesta una grabación y te dice oprima el número 1 PT Bachiller en Informática 153 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Multitarea El término multitarea se refiere a la capacidad del Sistema Operativo para correr mas de un programa al mismo tiempo. Existen dos esquemas que los programas de sistemas operativos utilizan para desarrollar SO multitarea, el primero requiere de la cooperación entre el SO y los programas de aplicación. Los programas son escritos de tal manera que periódicamente inspeccionan con el SO para ver si cualquier otro programa necesita a la CPU, si este es el caso, entonces dejan el control del CPU al siguiente programa, a este método se le llama multitarea cooperativa y es el método utilizado por el SO de las computadoras de Machintosh y DOS corriendo Windows de Microsoft. El segundo método es el llamada multitarea con asignación de prioridades. Con este esquema el SO mantiene una lista de procesos (programas) que están corriendo. Cuando se inicia cada proceso en la lista el SO le asigna una prioridad. En cualquier momento el SO puede intervenir y modificar la prioridad de un proceso organizando en forma efectiva la lista de prioridad, el SO también mantiene el control de la cantidad de tiempo que utiliza con cualquier proceso antes de ir al siguiente. Con multitarea de asignación de prioridades el SO puede sustituir en cualquier momento el proceso que esta corriendo y reasignar el tiempo a una tarea de mas prioridad. Unix OS-2 y Windows NT emplean este tipo de multitarea. Consiste en ejecutar varios procesos (programas) a la vez. Por ejemplo, si junto con el programa “colegio” se ha introducido en la computadora otro programa que “lea una serie de números y muestre en la pantalla el mayor, el menor y los números que sean primos”, se dice que existe multitarea “basada en procesos” si se pueden ejecutar ambos programas a la vez: por un lado el profesor puede solicitar sus listados de alumnos, y por el otro, se van introduciendo los números para obtener el mayor, el menor y aquellos que sean primos. Evidentemente, esta forma multitarea es apropiada cuando la computadora dispone de dos terminales y los Basada en procesos. 154 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica usuarios pueden trabajar cada uno con su programa en un terminal diferente. Pero en el caso normal, en que se dispone sólo de una computadora con su pantalla y su teclado, es decir de un PC, el usuario del PC podría trabajar simultáneamente con ambos programas pero primero tendría que atender a uno y luego al otro, lo que sería francamente complicado ya que la interfaz de usuario de un programa no es la misma que la del otro y distraería su atención. Basada en hebras (hilos) Consiste en ejecutar varias partes de un mismo programa simultáneamente. Una hebra es un fragmento del programa en ejecución. Todos los programas en ejecución tienen una hebra como mínimo. Y cuando el programa se ejecuta con multitarea de hebras, quiere decir que varias partes del programa ese están ejecutando simultáneamente. Programación en Pseudocódigo A continuación se presenta un ejemplo que describe las dos modalidades de multitarea. Supóngase que Juan y Luis que comparten el mismo apartamento desean preparar la comida del mediodía y comer en el apartamento. Una solución es que cada uno se prepare su propia comida independientemente. Para lo cual ambos tendrían que: Preparar el primer plato. Preparar el segundo plato. Preparar el postre Disponer sus cubiertos, platos y vasos en la mesa. Comer Esta soluciones asimilable a una “multitarea de procesos”. Cada proceso sería la preparación de la Realmente, decir que los programas (o las hebras) se están ejecutando simultáneamente no es correcto, pues como se ha visto antes se están ejecutando concurrentemente en la misma computador ay por lo tanto ambos programas comparten los mismos recursos. Por eso se habla de que los programas se ejecuten concurrentemente (y no simultáneamente). Ello quiere decir que cuando los dos soliciten el Sistema Operativo a la vez un mismo recurso (concurren en la petición), éste da prioridad a uno u otro según el caso. PT Bachiller en Informática 155 Informática Colegio Nacional de Educación Profesional Técnica comida de cada uno, que se estaría resolviendo en paralelo (a la vez están preparando su propia comida) y concurrentemente (los dos utilizan los mismos recursos por ejemplo, ambos están utilizando la cocina, la mesa de comer, etc.). Si alguno de estos recursos no puede ser compartido, por ejemplo la cocina sólo tiene un fuego, entonces ambos procesos deberán estar sincronizados. Ello quiere decir que cuando Luis está utilizando la cocina, este recurso quedaría bloqueado para que no la utilizase Juan, y si Juan desea utilizarla debe quedar a la espera de que el recurso “cocina” quede disponible. Otra solución, más acorde problema, es que Juan y Luis de acuerdo y preparen una común compartiendo tareas. ejemplo: con este se pongan comida en Como por Programación en Pseudocódigo 2do plato necesitan utilizar la cocina y ésta solo tiene un fuego, entonces Luis o Juan debería esperar a que acabara el otro). Obviamente en este ejemplo, la solución de “multitarea de hebras” es más rápida (eficiente)que la de “multitarea de procesos”. No obstante, si Juan y Luis han discutido y están enfadados es posible que utilicen la segunda. En el caso de diseñar un “programa dirigido por evento” lo normal es estructurar el programa en hebras para aplicar la “multitarea de hebras”, Por ejemplo, si en el programa del “colegio” se diseña una interfaz de usuario más vistosa como puede ser. Una literal que se enciende y apaga. Preparar el primer plato /Juan) Preparar el segundo plato (Luis) Preparar el postre (Juan) Disponer los cubiertos, platos y vasos en la mesa (Luis) Comer (Juan y Luis) Esta solución es asimilable a una “multitarea de hebras”. Sólo existe un único proceso (la preparación de la comida conjunta) con dos hebras (una es la actuación de Juan que debe preparar el 1er plato y el postre, y otra es la actuación de Luis que se encarga del 2do plato y de la mesa). Ambas hebras se estarían ejecutando en paralelo y concurrentemente (si el 1er y 156 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Botones que están fijos esperando una petición del profesor. Es el nombre del colegio que, como en un letrero luminoso, se mueve de izquierda derecha, desapareciendo por el extremo derecho y apareciendo por el izquierdo. En tal caso el programa constaría de tres hebras, una por cada parte, que se estarían ejecutando a la vez y concurrentemente. Programación en Pseudocódigo cajero electrónico, tenga una “interfaz de usuario” donde existe la posibilidad de solicitar muchas cosas. En este caso, es el programa el que esta pendiente del usuario para ver lo que pide y proporcionárselo (Programa dirigido por eventos). Sugerencias o Notas Competencia Ambiental Resumen Proteger los recursos naturales. Competencia Información de • • Identificar la programación dirigida por eventos. El alumno, utilizará las hojas de papel por ambos lados. Depositará las hojas de papel de desperdicio en los recipientes destinados para su reciclaje. El alumno: • Elaborará resumen sobre la programación dirigida por eventos donde se mencionarán el concepto y sus características. Hasta hace unos años, lo normal era diseñar un programa informático que fuera pidiendo datos al usuario de una forma controlada por el programa. Es decir, el programa se iba ejecutando secuencialmente y cuando necesitaba un dato lo solicitaba al usuario y seguía con la ejecución del programa hasta que finalizaba (Programa dirigido por control). Hoy en día lo usual es diseñar un programa que, como en el caso de un PT Bachiller en Informática 157 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Sugerencias o Notas Competencia de Calidad Realizar el trabajo en forma eficiente y oportuna. • • • 158 El alumno, realizará los ejercicios y prácticas incluídas en este manual con orden, limpieza, eficiencia y responsabilidad. Evitará el uso de software ilegal, garantizando su funcionamiento y calidad del mismo. Participará con responsabilidad, iniciativa y dinamismo individualmente y en equipos de trabajo. PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Practicas de Ejercicio y listas de cotejo Portafolio de evidencias Unidad de aprendizaje: 2 Práctica número: 3 Nombre de la práctica: Elaboración de programas en pseudocódigo con estructuras de datos. Propósito de la práctica: Al finalizar la práctica el alumno elaborará programas en pseudocódigo mediante estructuras de arreglo, registro, conjunto, secuencia, listas y árbol para la solución de problemas. Escenario: Aula Duración: 8 hrs. Materiales Maquinaria y equipo Herramienta • Hojas • Lápiz • Goma PT Bachiller en Informática 159 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Elaborar un programa en pseudocódigo que despliegue un menú y controle la ejecución de las siguientes opciones. • Invertir una cadena de caracteres. • Realizar el recorrido de una lista doblemente encadenada del inicio al final (utilizando ligas derechas). • Realizar el recorrido de una lista doblemente encadenada del final al inicio (utilizando ligas izquierdas). • Insertar un elemento en una lista doblemente encadenada. • Terminar. 1. Elaborar un programa en pseudocódigo que invierta una cadena de caracteres. 2. Realizar prueba de escritorio del programa elaborado. 3. Elaborar un programa en pseudocódigo que realice el recorrido de una lista doblemente encadenada del inicio al final (utilizando ligas derechas). 4. Realizar prueba de escritorio del programa elaborado. 5. Elaborar un programa en pseudocódigo que realice el recorrido de una lista doblemente encadenada del final al inicio (utilizando ligas izquierdas). 6. Realizar prueba de escritorio del programa elaborado. 160 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento 7. Elaborar un programa en pseudocódigo que realice la inserción de un elemento en una lista doblemente encadenada. 8. Realizar prueba de escritorio del programa elaborado. 9. Integrar los cuatro programas anteriores al programa del menú principal, realizando las modificaciones a los mismos para formar un solo programa. 10. Realizar prueba de escritorio del programa integrado. 11. Realizar la documentación del programa integrado. 12. Repetir los procedimientos con asesoría del PSA. 13. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 14. 4 Separar los residuos recuperables (usar las dos caras de las hojas y desechos en el lugar indicado). PT Bachiller en Informática colocar los 161 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Lista de cotejo de la práctica número 3: Elaboración de programas en pseudocódigo con estructuras de datos. Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño. Desarrollo ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1. Elaboró un programa en pseudocódigo que despliegue un menú. 2. Elaboró un programa en pseudocódigo que invierta una cadena de caracteres. 3. Realizó prueba de escritorio del programa elaborado. 4. Elaboró un programa en pseudocódigo que realice el recorrido de una lista doblemente encadenada del inicio al final (utilizando ligas derechas). 5. Realizó prueba de escritorio del programa elaborado. 6. Elaboró un programa en pseudocódigo que realice el recorrido de una lista doblemente encadenada del final al inicio (utilizando ligas izquierdas). 162 PT Bachiller en Informática Sí No No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Desarrollo Sí No No Aplica 7. Realizó prueba de escritorio del programa elaborado. 8. Elaboró un programa en pseudocódigo que realice la inserción de un elemento en una lista doblemente encadenada. 9. Realizó prueba de escritorio del programa elaborado. 10. Integró los cuatro programas anteriores al programa del menú principal, realizando las modificaciones a los mismos para formar un solo programa. 11. Realizó prueba de escritorio del programa integrado. 12. Realizó la documentación del programa integrado. 13. Repitió los procedimientos con acesoria del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: Hora de término: PT Bachiller en Informática Evaluación: 163 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 2 Práctica número: 4 Nombre de la práctica: Pseudocódigo para calcular el valor absoluto de un número Propósito de la práctica: Al finalizar la práctica, el alumno realizará un programa en pseudocódigo para calcular el valor absoluto de números. Escenario: Aula. Duración: 6 hrs. Materiales Maquinaria y equipo • Hojas • Lápiz • Goma 164 PT Bachiller en Informática Herramienta Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Algoritmo en pseudocódigo para calcular el valor absoluto de un número 1.- Escribir el siguiente pseudocódigo en una hoja de papel. 2.- Escribir “Inicio” 3.- Escribir “Leer Número” 4.- Escribir “Si NUMERO > igual 0 Entonces” 5.- Escribir “escribe NÚMERO” 6. - Escribir “Otro Caso” 7. - Escribir “escribe -1 x NÚMERO” 8. - Escribir “Fin” Inicio Leer NÚMERO Sí NÚMERO > IGUAL 0 ENTONCES Escribe NÚMERO En Otro Caso Escribe -1 x NÚMERO FIN 1. Repetir los procedimientos con acesoria del PSA. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). PT Bachiller en Informática 165 Informática Colegio Nacional de Educación Profesional Técnica Lista de cotejo de la práctica número 4: Programación en Pseudocódigo Pseudocódigo para calcular el valor absoluto de un número Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo Sí No ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1.-Escribir el siguiente pseudocódigo en una hoja de papel. 2.-Escribir “Inicio” 3.-Escribir “Leer Número” 4.-Escribir “Si NUMERO > igual 0 Entonces” 5.-Escribir “escribe NÚMERO” 6. Escribir “Otro Caso” 7. Escribir “escribe -1 x NÚMERO” 8. Escribir “Fin” 9. Repitió los procedimientos con acesoria del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: 166 Hora de término: PT Bachiller en Informática Evaluación: No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 2 Práctica número: 5 Nombre de la práctica: Pseudocódigo para convertir un número decimal a su equivalente binario. Propósito de la práctica: Al finalizar la práctica el alumno elaborará un programa en pseudocódigo que convierta de un número decimal a binario. Escenario: Aula Duración: 6 hrs. Materiales Maquinaria y equipo Herramienta • Hojas • Lápiz • Goma PT Bachiller en Informática 167 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). ALGORITMO EN PSEUDOCODIGO PARA CONVERTIR UN NÚMERO DECIMAL A SU EQUIVALENTE BINARIO 1.-Escribir el siguiente pseudocódigo en una hoja de papel. 2. Escribir “Inicio” 3. Escribir “Leer DECIMAL” 4. Escribir “DIVIDIENDO =DECIMAL” 5. Escribir “COCIENTE =1” 6. Escribir “Mientras COCIENTE diferente 0 Hacer” 7. Escribir “Inicio” 8. Escribir “COCIENTE = Cociente(entero) de 2 DIVIDIENDO” 9. Escribir “RESIDUO = Residuo de 2” 10. Escribir “DIVIDIENDO” 11. Escribir “Escribir RESIDUO” 12. Escribir “DIVIDIENDO = COCIENTE” 13. Escribir “Fin” 14. Escribir “Fin” Inicio Leer DECIMAL DIVIDIENDO=DECIMAL COCIENTE=1 Mientras COCIENTE diferente 0 Hacer Inicio COCIENTE=cociente(entero) de DIVIDENDO RESIDUO=Residuo de 2 DIVIDENDO Escribir RESIDUO DIVIDENDO= COCIENTE Fin 15. Repetir los procedimientos con asesoría del PSA. Fin Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Lista de cotejo de la práctica número 5: Pseudocódigo para convertir un número decimal a su equivalente binario. Nombre del alumno: 168 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Instrucciones: Programación en Pseudocódigo A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo Sí No No Aplica ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1.-Escribió el siguiente pseudocódigo en una hoja de papel. 2. Escribió “Inicio” 3. Escribió “Leer DECIMAL” 4. Escribió “DIVIDIENDO =DECIMAL” 5. Escribió “COCIENTE =1” 6. Escribió “Mientras COCIENTE diferente 0 Hacer” 7. Escribió “Inicio” 8. Escribió “COCIENTE = Cociente(entero) de 2 DIVIDIENDO” 9. Escribió “RESIDUO = Residuo de 2” “0- Escribió DIVIDIENDO” 11. – Escribió “Escribir RESIDUO” 12. – Escribió “DIVIDIENDO = COCIENTE” 13. – Escribió “Fin” 14. – Escribió “Fin” 9. Repitió los procedimientos con asesoría del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: PT Bachiller en Informática 169 Informática Colegio Nacional de Educación Profesional Técnica Hora de inicio: 170 Hora de término: PT Bachiller en Informática Programación en Pseudocódigo Evaluación: Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 2 Práctica número: 6 Nombre de la práctica: Pseudocódigo del mayor de tres números. Propósito de la práctica: Al finalizar la práctica el alumno elaborará un programa en pseudocódigo que calcule el número el mayor de tres números. Escenario: Laboratorio de Informática. Duración: 6 hrs. Materiales Maquinaria y equipo Herramienta • Hojas • Lápiz • Goma PT Bachiller en Informática 171 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Algoritmo en pseudocódigo del mayor de tres números 1. - Escribir el siguiente pseudocódigo en una hoja de papel. 2. - Determinar cuál de ellos es el mayor. 3. - Comparar los tres números mediante operadores relacionales. 4. - Escribir el siguiente algoritmo con pseudocódigo. 5. - Escribir “Inicio” 6. - Escribir “Leer A, B, C” 7. - Escribir “Si A > B Entonces” 8. - Escribir “Sí A > C Entonces” 9. - Escribir “Escribir “El mayor es”, A. 10. -Escribir “En otro caso” 11. -Escribir “Escribir “El mayor es”, Capacitación 12. -Escribir “En otro caso” 13. -Escribir “Sí B > C Entonces” 14. -Escribir “Escribir “El mayor es”, B 15. -Escribir en otro caso. 16. -Escribir “Escribir “El mayor es”, Capacitación. Inicio 17. - Escribir “Fin”. 18.- Repetir los procedimientos con asesoría del PSA. Fin Leer A, B, C Sí A > B Entonces Sí A > C Entonces Escribir “El mayor es”, A En otro caso Escribir “El mayor es”, C En otro caso Sí B > C Entonces Escribir “El mayor es”, B En otro caso Escribir “El mayor es”, C Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). 172 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Lista de cotejo de la práctica número 6: Programación en Pseudocódigo Pseudocódigo del mayor de tres números. Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1.-Escribió el siguiente pseudocódigo en una hoja de papel. 2. Determinó cuál de ellos es el mayor. 3. Comparó los tres números mediante operadores relacionales. 4. Escribió el siguiente algoritmo con pseudocódigo. 5. Escribió “Inicio” 6. Escribió “Leer A, B, C” 7. Escribió “Si A > B Entonces” 8. Escribió “Sí A > C Entonces” 9. Escribió “Escribir “El mayor es”, A. 10–Escribió “En otro caso” 11. Escribió “Escribir “El mayor es”, Capacitación PT Bachiller en Informática Sí No No Aplica • 173 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Desarrollo Sí No 12. Escribió “En otro caso” 13. Escribió “Sí B > C Entonces” 14. Escribió “Escribir “El mayor es”, B 15. Escribió en otro caso. 16. Escribió “Escribir “El mayor es”, Capacitación. 17. Escribió “Fin”. 18. Repitió los procedimientos con acesoria del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: 174 Hora de término: PT Bachiller en Informática Evaluación: No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 2 Práctica número: 7 Nombre de la práctica: Algoritmo en pseudocódigo para resolver una ecuación cuadrática. Propósito de la práctica: Al finalizar la práctica el alumno elaborará un programa en pseudocódigo de la resolución de una ecuación cuadrática. Escenario: Aula. Duración: 6 hrs. Materiales Maquinaria y equipo Herramienta • Hojas • Lápiz • Goma PT Bachiller en Informática 175 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Algoritmo en pseudocódigo para resolver una ecuación cuadrática 1. -Escribir el siguiente pseudocódigo en una hoja de papel. 2. -Enunciar el problema. 3. -Solucionar el problema. 4. -Describir el algoritmo. 5. -Considerar las condiciones iniciales. 6. -Escribir “Inicio” 7. -Escribir “Leer A, B, C” 8. -Escribir “Sí A= 0 Entonces” 9. -Escribir “Escribir No es una ecuación Cuadrática” 10. Escribir “En otro caso” 11. Escribir “Inicio” 12. Escribir “DISCRIMINANTE= B al cuadrado - 4AC” 13. Escribir “Sí DISCRIMINANTE < 0 Entonces” 14. Escribir “Escribir el discriminante es Negativo” 15.-Escribir “En Otro caso. 16. Escribir “Inicio”. 17. Escribir “X1= (-B + raíz cuadrada de DISCRIMINANTE) / (2A)” 18. Escribir “X2= (-B - raíz cuadrada de DISCRIMINANTE) / (2A)” 19. Escribir “Imprimir X1,X2” 20. Escribir “Fin” 21. Escribir “Fin” 22. Escribir “Fin” 23.-Repetir los procedimientos con asesoría del PSA. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). 176 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Lista de cotejo de la práctica número 7: Programación en Pseudocódigo Algoritmo en pseudocódigo para resolver una ecuación cuadrática. Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo Sí No No Aplica ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1. -Escribió el siguiente pseudocódigo en una hoja de papel. 2. –Enunció el problema. 3. –Solucionó el problema. 4. –Describió el algoritmo. 5. –Consideró las condiciones iniciales. 6. -Escribió “Inicio” 7. –Escribió “Leer A, B, C” 8. –Escribió “Sí A= 0 Entonces” 9. –Escribió “Escribir No es una ecuación Cuadrática” 10. Escribió “En otro caso” 11. Escribió “Inicio” PT Bachiller en Informática 177 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Desarrollo Sí No 12. Escribió “DISCRIMINANTE= B al cuadrado - 4AC” 13. Escribió “Sí DISCRIMINANTE < 0 Entonces” 14. Escribió “Escribir el discriminante es Negativo” 15.-Escribió “En Otro caso. 16. Escribió “Inicio”. 17. Escribió “X1= (-B + raíz cuadrada de DISCRIMINANTE) / (2A)” 18. Escribió “X2= (-B - raíz cuadrada de DISCRIMINANTE) / (2A)” 19. Escribió “Imprimir X1,X2” 20. Escribió “Fin” 21. Escribió “Fin” 22. Escribió “Fin” 23. Repitió los procedimientos con asesoría del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: 178 Hora de término: PT Bachiller en Informática Evaluación: No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 2 Práctica número: 8 Nombre de la práctica: Algoritmo en pseudocódigo función factorial. Propósito de la práctica: Al finalizar la práctica, el alumno elaborará un programa en pseudocòdigo que obtenga el valor factorial de un número mediante una llamada a función. Escenario: Aula. Duración: 6 hrs. Materiales de Maquinaria y equipo la Herramienta • Hojas • Lápiz • Goma PT Bachiller en Informática 179 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Algoritmo en pseudocódigo para obtener el valor factorial de un número 1.-Elaborar un algoritmo que obtenga y muestre en pantalla el valor factorial de un número X, leído desde el teclado y que utilice la función factorial para calcularlo. 2.-Hacer que la función factorial sea recursiva, llamándose a sí misma hasta resolver el problema. 3.-Teclear el siguiente pseudocódigo: Pseudocódigo de la función factorial recursiva //función factorial recursiva FACTORIAL (X): Inicio_ factorial Si X=0 Entonces FACTORIAL =1 Si no FACTORIAL = X* FACTORIAL (X-1) Fin_si Fin_factorial //programa que obtiene valores del factorial (X) Inicio leer el numero (X) mientras haya_números si X> = 0 Entonces RESULTADO = FACTORIAL (X) Mostrar RESULTADOS Si no Mostrar <<el numero X es negativo>> Fin_si < Leer un numero (X) Fin_mientras Fin 4.-Repetir los procedimientos con asesoría del PSA. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Lista de cotejo de la práctica número 8: 180 Algoritmo en pseudocódigo de la función factorial. PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo Sí No No Aplica ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Algoritmo en pseudocódigo para obtener el valor factorial de un número. 1.-Elaborò un algoritmo que obtiene y muestra en pantalla el valor factorial de un número X, leído desde el teclado y que utiliza la función factorial para calcularlo. 2.-Hizo la función factorial recursiva, llamándose a sí misma hasta resolver el problema. 3.-Tecleó el pseudocódigo correspondiente. 4.-Repetió los procedimientos con asesoría del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: Hora de término: PT Bachiller en Informática Evaluación: 181 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 2 Práctica número: 9 Nombre de la práctica: Pseudocódigo con programación lógica. Propósito de la práctica: Al finalizar la práctica, el alumno elaborará programas en pseudocódigo mediante la programación lógica. Escenario: Aula. Duración: 8 hrs. Materiales Maquinaria y equipo • Hojas • Lápiz • Goma 182 PT Bachiller en Informática Herramienta Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Sentencias de cláusulas sin condiciones 1.- Diseñar un algoritmo en pseudocódigo de una claúsula sin condiciones. 2.- Las cláusulas van a tener un echo que va a ser cierto en todos los casos 3.-Teclear las siguientes sentencias: <<Luis es varón>>, se representa por: varón (luis) <<María es madre>>, se representa por: madre(María) <<Dos es par>>, se representa por: par(2) Sentencias de cláusulas sin conclusiones 1.- Diseñar un algoritmo en pseudocódigo de una claúsula sin conclusiones. 2.- Las cláusulas van a tener un echo que no es cierto en ningún caso, tienen condiciones sin conclusiones. 3..-Teclear la s siguientes sentencias: <<Luis no es varón>> es falso, y se representa por: <-varón(Luis) <<María no es madre>> es falso, y se representa por: <-madre(María) <<Dos no es un número par>> es falso, y se representa por: <-par(2) Sentencia de regla lógica 1.-Diseñar un algoritmo en pseudocódigo de regla lógica. 2.-Las cláusulas tienen ambas partes, conclusiones y condiciones. 3.-Inferir que animal es mamífero y se cuenta con la siguiente información: -La vaca, la sardina y el reno son animales. -La vaca y el reno son rumiantes, pero la sardina no. -Un animal rumiante es mamífero. 4.-Teclee las siguientes sentencias: animal(vaca) animal(sardina) animal(reno) rumiante(vaca) rumiante(reno) <-rumiante(sardina) mamífero(X)<- animal (X), rumiante(X) PT Bachiller en Informática 183 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento 5.-Preguntar cuestiones lógicas al programa, el sistema espera una pregunta con ? y responde con > 6.-El resultado al preguntar es el siguiente: ? rumiante(sardina) >falso ? mamífero(vaca) >cierto ? X= vaca, reno 7.-Crear otro algoritmo semejante. Algoritmo de ordenar N números 1.-Desarrollar un programa imperativo o funcional que lea serie de tres números A, B, C, y las muestre ordenadas por la pantalla ascendente mente a partir de un enunciado de un problema con los pasos siguientes: -Estudiar el enunciado del problema detenidamente. -Transformar la letra del enunciado en un diagrama estructurado del tipo arborecente, que resuelva el problema. -Codificar el diagrama mediante un pseudocódigo. 2.-Las acciones a seguirse serían: -Primero se leen 3 números A, B, y C. -Si A>B se intercambian sus contenidos (A<->B). - Si B>C se intercambian sus contenidos (B<->C), y se pregunta si el contenido de A>B. En caso afirmativo, se intercambian (A<->B). -Se muestran los contenidos de A, B, y C, hasta que no queden números de leer. 3.-Teclee el siguiente pseudocódigo. 184 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento // Programa que ordena N números InicioLeer A, B, C Mientras haya_números Si A>B Entonces T=A A=B B=T Fin_si Si B>C Entonces T=B B=C C=T Si A>B Entonces T=A A=B B=T Fin_si Fin_si Mostrar <<Orden de los números:>>, A, B, C Leer A,B,C Fin_mientras Fin 4.-Repetir los procedimientos con asesoría del PSA. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). PT Bachiller en Informática 185 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Lista de cotejo de la práctica número 9: Pseudocódigo con programación lógica. Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Sentencias de cláusulas sin condiciones 1.-Diseñó un algoritmo en pseudocódigo de una claúsula sin condiciones. 2.-Las cláusulas fueron ciertas en todos los casos 3.-Tecleó las sentencias correspondientes: Sentencias de cláusulas sin conclusiones 1.-Diseño un algoritmo en pseudocódigo de una claúsula sin conclusiones. 2.-Las cláusulas fueron no ciertos en ningún caso. 3.-Tecleó las sentencias correspondientes: 186 PT Bachiller en Informática Sí No No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Desarrollo Sí No No Aplica Sí No No Aplica Sentencia de regla lógica 1.-Diseñó un algoritmo en pseudocódigo de regla lógica. 2.-Las cláusulas tuvieron ambas partes, conclusiones y condiciones. 3.-Inferió que animal fué mamífero con la siguiente información: -La vaca, la sardina y el reno son animales. -La vaca y el reno son rumiantes, pero la sardina no. -Un animal rumiante es mamífero. 4.-Tecleó las sentencias correspondientes: 5.-Preguntó cuestiones lógicas al programa. 6.-Se obtuvo el resultado al preguntar 4.-Creó otro algoritmo semejante. Desarrollo Algoritmo de ordenar N números 1.-Desarrolló un programa imperativo o funcional que lea serie de tres números A, B, C, y las muestre ordenadas por la pantalla ascendente mente a partir de un enunciado de un problema con los pasos siguientes: -Estudió el enunciado del problema detenidamente. PT Bachiller en Informática 187 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo -Transformó la letra del enunciado en un diagrama estructurado del tipo arborecente, que resuelva el problema. -Codificó el diagrama mediante un pseudocódigo. 2.-Realizó las acciones a seguirse 3.-Tecleó el pseudocódigo correspondiente. 4.-Repitió los procedimientos con asesoría del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: 188 Hora de término: PT Bachiller en Informática Evaluación: Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 2 Práctica número : 10 Nombre de la práctica: Pseudocódigo con orientada a objetos Propósito de la práctica: Al finalizar la práctica, el alumno elaborará programas en pseudocódigo basados en programación orientada a objetos. Escenario: Aula. Duración: 8 hrs. Materiales programación Maquinaria y equipo Herramienta • Hojas • Lápiz • Goma PT Bachiller en Informática 189 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Algoritmo de programa de objeto “Ordenador” 1.-Crear un algoritmo donde se cree el objeto “ Ordenador”. 2.-Elaborar la plantilla (clase) que permita crearlo y que se llame “Plantilla_ordenar”. 3.-Establecimiento de variables: − − − Celdas de memoria (variables enteras para almacenar números enteros) Variable de estado (variable entera) Variable que almacena la cantidad de números por el objeto “Ordenador”, para su ordenación. (variable entera). 4.- El método que se sigue es: − − − − − − El constructor, que crea un objeto. Leer_números, que leen los datos de entrada. Ordenar_ascendente, que ordena de menor a mayor. Ordenar_descendente, que ordena de mayor a menor. Indicar_estado, que devuelve el estado de la variable de estado (ve). Mostrar números, que visualiza el contenido de las celdas de memoria. El destructor, que visualiza un mensaje de que el objeto ya no existe. − 5.- Teclear el siguiente pseudocódigo: clase plantilla_ordenador { c1, c2, c3, ..., cn // son las celdas de memoria ve // variable de estado n // números leídos 190 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento públicos: plantilla-ordenador(): // es el construcctor Inicio_opantalla c1= c2=c3=...=cn=0 ve=-1 n=0 Fin_plantilla Leer_números(): Inicio_leer I=0 Mientras Haya_números I=I+1 Leer cI Fin_mientras Ve=0 Ordenar_ascendentemente(): // ordena c1, c2, .., cn de menor a mayor Inicio_ordenar Si ve>=0 Entonces Para I desde 1 hasta n-1 Para J desde I+1 hasta n si cI>cJ Entonces Fin_si VAR=cI cI=cJ cJ=VAR Fin_para Fin_para Ve=1 Si no Mostrar <<no se puede ordenar porque no hay números>> Fin_si Fin_ordenar Ordenar_descendentemente(): // ordena c1, c2, ..., cn de mayor a menor Inicio_ordenar Si ve>=0 PT Bachiller en Informática 191 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento Entonces Para I desde 1 hasta n-1 Para J desde I+1 hasta n Si cI<cJ Entonces Fin_si VAR0=cI cI=cJ cJ=VAR Fin_para Fin_para Ve=2 Si no Mostrar <<no se puede ordenar porque no hay números>> Fin_si Fin_ordenar Indicar_estado(): //devuelve el valor de ve Inicio_indicar Retornar ve Fin_indicar mostrar_números(): // visualiza el contenido de c1, c2, ..., cn Inicio_mostrar Si ve<0 Entonces Mostrar <<no se puede ordenar porque no hay números>> Si no Para I desde 1 hasta n Mostrar cI Fin_para Fin_si Fin_inicio ¬plantilla_ordenador(): // es el destructor Inicio_plantilla Mostrar <<el objeto ha finalizado>> Fin_plantilla 192 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento 6.-Diseñar un programa que cree el objeto “Ordenador” y le mande los mensajes apropiados para que haga lo que el programador desea: − Lea los números –4, 25, -7, 2, 10. − Ordene ascendentemente los números leídos. − Muestre en pantalla los números así ordenados. − Ordene, ahora, los números ascendentemente. − Muestre en pantalla los números así ordenados. − Indique el estado de ve. 7.- Teclear el siguiente pseudocódigo del programa principal:: // Programa principal Inicio Plantilla_ordenador Ordenador Ordenador.leer_numeros() Ordenador.ordenar_ascendentemente() Ordenador.ordenar descendentemente() Ordenador.mostrar_números() Mostrara Ordenador.indicar_estado() Fin Nota: El resultado que se obtiene en pantalla es el siguiente: -7,-4,2,10,25 25,10,2,-4,-7 2 el objeto a finalizado 8.-Repetir los procedimientos con asesoría del PSA. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). PT Bachiller en Informática 193 Informática Colegio Nacional de Educación Profesional Técnica Lista de cotejo de la práctica número 10: Programación en Pseudocódigo Pseudocódigo con programación orientada a objetos. Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). Algoritmo de programa de objeto “Ordenador” 1.-Creó un algoritmo donde se cree el objeto “ Ordenador”. 2.-Elaboró la plantilla (clase) que permita crearlo y que se llame “Plantilla_ordenar”. 3.-Estableció de variables: − Celdas de memoria (variables enteras para almacenar números enteros). − Variable de estado (variable entera) − Variable que almacena la cantidad de números por el objeto “Ordenador”, para su ordenación. (variable entera). 194 PT Bachiller en Informática Sí No No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Desarrollo Sí No No Aplica 4.- El método que se siguó fue: − El constructor, que crea un objeto. − Leer_números, que leen los datos de entrada. − Ordenar_ascendente, que ordena de menor a mayor. − Ordenar_descendente, que ordena de mayor a menor. − Indicar_estado, que devuelve el estado de la variable de estado (ve). − Mostrar números, que visualiza el contenido de las celdas de memoria. − El destructor, que visualiza un mensaje de que el objeto ya no existe. 5.- Tecleó el pseudocódigo correspondiente 6.--Diseño un programa que cree el objeto “Ordenador” y le mande los mensajes apropiados para que haga lo que el programador desea: − Lea los números –4, 25, -7, 2, 10. − Ordene ascendentemente los números leídos. − Muestre en pantalla los números así ordenados. − Ordene, ahora, los números ascendentemente. − Muestre en pantalla los números así ordenados. − Indique el estado de ve. 7.- Tecleó el pseudocódigo del programa principal correspondiente 8.-Repetió los procedimientos con asesoría del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). PT Bachiller en Informática 195 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Observaciones: PSA: Hora de inicio: 196 Hora de término: PT Bachiller en Informática Evaluación: Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Unidad de aprendizaje: 2 Práctica número: 11 Nombre de la práctica: Pseudocódigo con programación dirigida por eventos. Propósito de la práctica: Al finalizar la práctica, el alumno elaborará programas pseudocódigo basados en programación dirigida por eventos. Escenario: Aula. Duración: 8 hrs. Materiales Maquinaria y equipo en Herramienta • Hojas • Lápiz • Goma PT Bachiller en Informática 197 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento ­Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos. • Tener condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1.-Algoritmo de programa dirigido por control. • Diseñar un programa que vaya pidiendo datos al usuario y que, en base a ellos, ejecute una serie de acciones a través de los objetos que define el problema. • Teclear el siguiente pseudocódigo. *Modulo de Control “colegio” Inicio //Crea los objetos “clase” c11, c12,... ,cli //Crea los objetos “alumno” a11, a12,... ,alz //Crea los objetos “asignatura” as1, as2,... ,ask //Inicio_petición_profesores Mientras existan peticiones de los profesores Mostrar:” ¿Qué listado desea obtener? Teclee: Lapa -> si desea el listado d e alumnos por asignatura Lapc -> si desea el listado d e alumnos por clase fin -> si terminar “ Leer un dato (AP) Si AP = lapa Entonces Mostrar : “Teclee el código d e la asignatura: “ Leer código_asignatura (AS) // A continuación se obtiene el listado de alumnos de esa // asignatura al ejecutar el método listado_asignatura (). AS.listado_asignatura() Si no Si AP= lapc Entonces Mostrar : “Teclee el código d e la clase: “ Leer código_clase (CL) // a continuación, obtiene el listado de alumnos de // esa clase ejecutando el método listado_clase() CL.Listado_clase() 198 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento Si no Si AP = fin Entonces Mostrar : “Fin de las peticiones “ Si no Mostrar: “Solo puede escribir lapa, lapc o fin. Repita por favor” Fin _si Fin_si Fin_si Fin_Mientras Fin 2.-Algoritmo de programa dirigido por eventos. • Diseñar una interfaz de usuario, que es una ventana principal que se ubica en la pantalla de la computadora en el que se presentan todas las posibilidades que permiten que el programa y el usuario, al igual que un cajero electrónico, escoger la acción que se desee realizar. • Teclear el siguiente pseudocódigo: *Modulo de Control “colegio” Inicio //Crea los objetos “clase” c11, c12,... ,cli //Crea los objetos “alumno” a11, a12,... ,alz //Crea los objetos “asignatura” as1, as2,... ,ask // Define las características del programa principal : - Estilo de ventana. - -Forma del ratón que accede a la ventana ( si es una flecha, un reloj de arena, etc.) - -El color del fondo de la ventana (si es blanco, negro, gris, etc.) // Crea la ventana principal con: - - un título para la ventana ( * Petición de profesores “) - - Coordenadas origen de la ventana y dimensiones de la misma. - - Información que aprenderá la ventana que en el caso de el ejemplo, seria: . La etiqueta “pulse el botón que desea solicitar”, y . Los botones “ Listado de alumnos por asignatura” y “Listado de alumnos por clase”. // Visualiza la ventana principal para que se vean en la pantalla de la computadora. // Crea un bucle (“bucle de mensajes”) para tratar todos los mensajes // procedientes de las ventanas, que capta el Sistema Operativo y // envía al Módulo de Control. El bucle tiene la siguiente forma: PT Bachiller en Informática 199 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Procedimiento Mientras existan mensajes Coge un mensaje proporcionado por el Sistema operativo. Lo analiza. Devuelve el mensaje al sistema Operativo. Fin_Mientras Fin 3.-Algoritmo de programa de una función de ventana. • Programar una función ventana asociada al cuadro de dialogo o ventana “colegio” • Teclear el siguiente pseudocódigo: *Función de ventana asociado a la Ventana Principal Función_Ventana_Principal (mensaje) Inicio Función_Ventana _Principal Si mensaje = “ listado de alumnos por asignatura” Entonces Crear el cuado de diálogo de asignatura Retornar Fin_si Si mensaje = “Listado de alumnos por clase” Entonces Crear el Cuadro de Diálogo de clase Retornar Fin_si Fin Función_Ventana 4.-Repetir los procedimientos con asesoría del PSA. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta. 4 Separar los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). 200 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Lista de cotejo de la práctica número 11: Pseudocódigo eventos. con programación dirigida por Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una 9 aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño Desarrollo Sí No No Aplica ­Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos. • Tuvo condiciones adecuadas en el aula (iluminación, ventilación y limpieza). 1.-Algoritmo de programa dirigido por control. • Diseñó un programa que vaya pidiendo datos al usuario y que, en base a ellos, ejecute una serie de acciones a través de los objetos que define el problema. • Tecleó el pseudocódigo correspondiente. 2.-Algoritmo de programa dirigido por eventos. • Diseñó una interfaz de usuario, en el que se presentan todas las posibilidades que permiten que el programa y el usuario, al igual que un cajero electrónico, escoger la acción que se desee realizar. • Tecleó el pseudocódigo correspondiente. PT Bachiller en Informática 201 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo Desarrollo Sí No 3.-Algoritmo de programa de una función de ventana. • Programó una función ventana asociada al cuadro de dialogo o ventana “colegio” • Tecleó el pseudocódigo correspondiente. 4.- Repitió los procedimientos con asesoría del PSA. 4 Separó los residuos recuperables (usar las dos caras de las hojas y colocar los desechos en el lugar indicado). Observaciones: PSA: Hora de inicio: 202 Hora de término: PT Bachiller en Informática Evaluación: No Aplica Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESUMEN La resolución de un problema se puede dividir en tres fases importantes: ¾ Analisis del problema ¾ Diseño o desarrollo del algoritmo ¾ Resolución del algoritmo en la computadora El primer paso -analisis del problema- requiere que el problema sea definido y comprendido claramente para que pueda ser analizado con todo detalle una vez analizado el problema, se debe desarrollar el algoritmo-procedimiento paso a paso para solucionar el problema dado-. Por último para resolver el algoritmo mediante una computadora se necesita codificar el algoritmo en un lenguaje de programación. ANALISIS DEL PROBLEMA. El propósito del analisis de un problema es ayudar al programador para llegar a una cierta compresión de la naturaleza del problema, el problema debe estar bien definido si se desea llegar a una solución satisfactoria para poder definir con presición el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle. Una buena definición del problema junto con una descripción detallada de las especificaciones de entrada y salida, son los requisitos mas importantes para llegar a una solución eficaz. DISEÑO DEL ALGORITMO. Una computadora no tiene capacidad para solucionar problemas más que cuando se le proporciona los sucesivos pasos a realizar, estos pasos sucesivos que indican instrucciones a ejecutar por la máquina constituyen el algoritmo. Los problemas complejos se pueden resolver más eficazmente con la computadora cuando se rompen en subproblemas que sean más fáciles de solucionar que el original, normalmente los pasos diseñados en el primer esbozo del algoritmo son incompletos le indicarán solo unos pocos pasos, tras esta primera descripción estos se amplian en una descrpción más detallada con más pasos específicos esto proceso se denomina refinamiento del algoritmo.Para problemas complejos diferentes niveles de refinamiento se necesitan con frecuencia antes de que un algoritmo claro, preciso, completo se pueda obtener. PT Bachiller en Informática 203 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESUMEN El sistema para describir un algoritmo consiste en realizar una descripción paso a paso con un lenguaje natural del sitado algoritmo, en cálculos elementales estas reglas tienen las siguientes propiedades: a) Deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un resultado diferente. b) Solo puede ejecutarse una operación a la vez. Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido.Ello permitirá que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje, para conseguir esto se precisa que el algoritmo sea representado gráfica o numéricamente, de modo que las acciones sucesivas no dependan de la sintaxis de ningún lenguaje de programación, sino que la descripción pueda servir fácilmente para su transformación en un programa es decir su codificación. Los métodos mas usuales para representar un algoritmo son: Diagrama de flujo. Lenguaje de especificación de algoritmos: Pseudocódigo. DIAGRAMA DE FLUJO: Un diagrama de flujo es una de las técnicas de representación de algoritmos más antigua y a la vez más utilizada.Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) estándar y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar. PSEUDOCODIGO. El pseudocódigo es un lenguaje de especificación de algoritmos, el uso de tal lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil. 204 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESUMEN El pseudocódigo nació como un lenguaje similar al inglés y era un medio de representar básicamente la estructuras de control de programación estructurada, se considera un primer borrador dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación. El pseudocódigo no puede ser ejecutado por una computadora, es también fácil de modificar el pseudocódigo si se descubren errores o anomalias en la lógica del programa, el pseudocódigo puede ser traducido a cualquier lenguaje de programación, el pseudocódigo utiliza para representar las acciones sucesivas, palabras reservadas en inglés similares a sus homónimas en su lenguaje de programación, la escritura exige normalmente la indentación (sangría en el margen izquierdo) de diferentes líneas. Aunque el pseudocódigo nació como un sustituto del lenguaje de programación y, por consiguiente, sus palabras reservadas se conservaron o fueron muy similares a las de dichos lenguajes, practicamente el inglés, el uso del pseudocódigo se ha extendido con terminos en español como, inicio, fin parada, leer, escribir, si entonces sino, mientras, fin mientras, repetir, hasta que, sin duda el uso de la terminologia de pseudocódigo en español ha facilitado y facilitará considerablemente el aprendizaje de uso diario de la programación. PT Bachiller en Informática 205 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo AUTOEVALUACIÓN DE CONOCIMIENTOS 1. ¿Qué es un lenguaje de programación? 2. ¿Defina qué es un sistema operativo? 3. ¿Cuál es la estructura básica de un sistema operativo? 4. ¿Cuáles son los símbolos más usados en la representación de un diagrama de flujo? 5. ¿Cuáles son los pasos a seguir para el tratamiento de un problema? 6. ¿A qué denominamos “dato”? 7. ¿Cuáles son los tipos de datos existentes? 8. ¿Qué es una constante? 9. Cuál es la definición de variable? 10. ¿Cómo se encuentran clasificadas las variables y cuales son? 11. ¿A qué llamamos operador? 12. ¿Cuáles son los operadores aritméticos y cual es su función? 13. ¿Cuáles son los operadores relacionales y para que nos sirven? 14. ¿Cuáles son los operadores lógicos? 15. ¿A qué llamamos estructura básica de control? 16. ¿Cuáles son los tipos de estructuras básicas de control? 17. ¿A qué llamamos arreglo? 18. ¿Qué es un vector? 19. ¿Qué es una matriz? 20. ¿Cuáles son los conceptos de pilas y colas? 21. ¿A qué denominamos listas? 22. ¿En informática a que llamamos árbol? 23. ¿Qué es un fichero o archivo? 24. ¿A qué denominamos fichero secuencial? 25. ¿A qué denominamos fichero indexado? 26. ¿Cuáles son las características de la programación estructurada? 206 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo AUTOEVALUACIÓN DE CONOCIMIENTOS 27. ¿A qué llamamos estructura secuencial? 28. ¿Para que se utiliza la estructura condicional? 29. ¿A que llamamos estructura repetitiva? 30. ¿A qué llamamos programación funcional? 31. ¿Cuáles son los lenguajes comprendidos en la programación funcional? 32. ¿Cuál es el concepto de Recursividad? 33. ¿Cuáles son las características de la programación lógica? 34. ¿Qué es PROLOG? 35. ¿Qué es la forma clausal? 36. ¿Cuáles son las características de la programación orientada a objetos? 37. ¿Qué es un objeto? 38. ¿A qué llamamos encapsulación en la programación orientada a objetos? 39. ¿A qué llamamos clase? 40. ¿Cuál es el concepto de herencia? 41. ¿Qué es la identidad de un objeto? 42. ¿Para qué nos sirve el HTML? 43. ¿A qué denominamos Multitareas? 44. ¿Cuáles son los tipos de multitareas que existen? PT Bachiller en Informática 207 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESPUESTAS A LA AUTOEVALUACIÓN DE CONOCIMIENTOS 1. Un lenguaje de programación es una notación para escribir programas, a través de los cuales podemos comunicarnos con el hardware. Conjunto de normas “lingüísticas” (palabras y símbolos) que permiten escribir un programa y que éste sea entendido por el ordenador y pueda ser trasladado a ordenadores similares para su funcionamiento en otros sistemas. Los lenguajes de programación deben tener instrucciones que pertenecen a las categorías ya familiares de entrada/salida. 2. Conjunto de programas que se integran con el hardware para facilitar al usuario, el aprovechamiento de los recursos disponibles. Algunos de sus objetivos principales son: o o o Provee de un ambiente conveniente de trabajo. Hace uso eficiente del Hardware. Provee de una adecuada distribución de los recursos. 3. Cargador, Cargador para el sistema operativo, Cargador incluido en el sistema operativo, Supervisor, Lenguaje de comunicación, Utilería de sistema. Es aquel diagrama que utiliza símbolos estándar y en el que cada paso del algoritmo se visualiza dentro del símbolo adecuado y el orden en que los pasos se ejecutan se indica conectándolos con flechas llamadas "líneas de flujo" porque indican el flujo lógico del algoritmo. 208 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESPUESTAS A LA AUTOEVALUACIÓN DE CONOCIMIENTOS 4. A: Inicio / Fin Representa el inicio o el fin de un programa. B: Entrada / Salida Representa cualquier tipo de introducción de datos o salida de información a la pantalla. C: Proceso Indica cualquier tipo de operación que pueda originar un cambio de valor, operaciones aritméticas, etc. D: Decisión Indica operaciones lógicas de comparación de valores. En función al resultado de la misma se determinará el camino a seguir. E: Conector Enlaza dos partes de un diagrama de flujo. F: Líneas de Flujo Muestran el sentido de ejecución de las operaciones. G: Impresora Se usa como símbolo de salida de información a través de impresora. 5. Análisis del problema; Elaboración del diagrama de flujo; Diseño del procedimiento de solución (algoritmo); Escritura de la solución en pseudocódigo; Prueba de escritorio; Construcción de programa en lenguaje de programación; Compilar o interpretar, según sea el caso; Ejecución del programa; Pruebas y documentación. 6. 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. PT Bachiller en Informática 209 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESPUESTAS A LA AUTOEVALUACIÓN DE CONOCIMIENTOS 7. Numéricos, Lógicos y Alfanuméricos. 8. Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. 9. Una variable es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo. 10. Pila: Es una lista de elementos caracterizada porque las operaciones de inserción y eliminación se realizan solamente en un extremo de la estructura. El extremo donde se realizan estas operaciones se denomina habitualmente 'cima' (top en nomenclatura inglesa). Cola: Son secuencias de elementos caracterizadas porque las operaciones de inserción y borrado se realizan sobre extremos opuestos de la secuencia. La inserción se produce en el "final" de la secuencia, mientras que el borrado se realiza en el otro extremo, el "inicio" de la secuencia. 11. Listas: Son secuencias de elementos, donde estos elementos pueden ser accedidos, insertados o suprimidos en cualquier posición de la lista. No existe restricción alguna acerca de la localización de esas operaciones. Se trata de estructuras muy flexibles puesto que pueden crecer o acotarse como se quiera. 12. Un árbol es una colección de elementos llamados nodos, uno de los cuales se distingue del resto como raíz, junto con una relación que impone una estructura jerárquica entre los nodos. 210 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESPUESTAS A LA AUTOEVALUACIÓN DE CONOCIMIENTOS 13. Un fichero es una colección de registros similares. El archivo es tratado como una entidad individual por los usuarios y las aplicaciones y puede ser referenciada por el nombre. 14. Es aquel en el que los registros están grabados en orden y deben ser leídos en ese mismo orden. Para leer un registro hay que pasar por los anteriores. 15. Es aquel en el que existe un índice y el acceso al fichero se realiza en base al índice. 16. En la programación estructurada Se plantea una operación como un todo y se divide en segmentos más sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. La representación grafica de la programación estructurada se realiza a través de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas. La programación estructurada propone segregar los procesos en estructuras lo más simple posibles, las cuales se conocen como secuencia, selección e interacción. 17. Estructura secuencial es aquella en que una acción sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente. 18. La estructura condicional se utilizan para tomar decisiones lógicas. En éstas se evalúa una condición y en función del resultado de la misma se realiza una opción u otra. 19. Estructura repetitiva son aquellas que repiten una secuencia de instrucciones un número determinado de veces se llaman bucles, e iteración al hecho de repetir la ejecución de una secuencia de acciones. PT Bachiller en Informática 211 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESPUESTAS A LA AUTOEVALUACIÓN DE CONOCIMIENTOS 20. Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones). 21. Lisp, Camel Hope. 22. El concepto de recursividad va ligado al de repetición. Son recursivos aquellos algoritmos que, estando encapsulados dentro de una función, son llamados desde ella misma una y otra vez. 23. La programación Lógica está basada en la noción de Relación. Debido a que en la relación es un concepto mas general de una Aplicación. La Programación Lógica es potencialmente de alto nivel. Los lenguajes de Programación Lógica pueden explotar la Inteligencia Artificial. 24. PROLOG es un lenguaje de programación Logica. En la programación lógica son las relaciones las que definen un programa y la forma normal de representar una relación es mediante la utilización de cláusulas. 25. Abstracción. Abstracción. Es el mecanismo de diseño en la Programación Orientada a Objetos. Nos permite extraer de un conjunto de entidades datos y comportamientos comunes para almacenarlos en clases. 212 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESPUESTAS A LA AUTOEVALUACIÓN DE CONOCIMIENTOS Encapsulamiento. Mediante esta técnica conseguiremos que cada clase sea una caja negra, de tal manera que los objetos de esa clase se puedan manipular como unidades básicas. Los detalles de la implementación se encuentran dentro de la clase, mientras que desde el exterior, un objeto será simplemente una entidad que responde a una serie de mensajes públicos (también denominados interfaz de la clase). Herencia. Es el mecanismo que nos permite crear clases derivadas (especialización) a partir de clases bases (generalización). Es decir, podríamos tener la clase "Empleado" (clase base) y la clase "Vendedor" derivando de la anterior. Una librería de clases (como la MFC) no es más que un conjunto de definiciones de clases interconectadas por múltiples relaciones de herencia. Polimorfismo. Esta característica nos permite disponer de múltiples implementaciones de un mismo método de clase, dependiendo de la clase en la que se realice. Es decir, podemos acceder a una variedad de métodos distintos (con el mismo nombre) mediante el mismo mecanismo de acceso. En C++ el polimorfismo se consigue mediante la definición de clases derivadas, funciones virtuales y el uso de punteros a objetos. 26. Un objeto es un elemento real o abstracto, que tiene un estado, un comportamiento y una identidad. Un objeto es, pues, una mesa, una silla, un alumno, una clase, etc., pues son elementos reales que se pueden comprender y están bien definidos. Un objeto también es un concepto abstracto como un elemento denominado «Ordenador» que es capaz de recibir un conjunto de números y los ordena ascendente o descendentemente. PT Bachiller en Informática 213 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo RESPUESTAS A LA AUTOEVALUACIÓN DE CONOCIMIENTOS 27. La encapsulación es el proceso que aplica el diseñador de un objeto para ocultar aquellos detalles del objeto que no son específicamente necesarios para su uso. A la encapsulación se le denomina también «ocultamiento de información». 28. La clase es la plantilla que permite crear objetos de la misma estructura y comportamiento. Pero se ha de tener en cuenta que los valores de los atributos de cada objeto pueden ser diferentes. 29. Los objetos derivados de otros heredan los atributos y los servicios de sus clases bases. 30. Se entiende por identidad de un objeto la propiedad característica que tiene ese objeto que le distingue de todos los demás. 31. Es un sistema para estructurar documentos. Estos documentos pueden ser mostrados por los visores de paginas Web en Internet, como Netscape, Mosaic o Microsoft Explorer. 32. El término multitarea se refiere a la capacidad del Sistema Operativo para correr mas de un programa al mismo tiempo 33. Multitareas basadas en proceso y multitareas basada en hebras o hilos. 214 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS ABSTRACCIÓN: Es el mecanismo de diseño en la POO. Nos permite extraer de un conjunto de entidades datos y comportamientos comunes para almacenarlos en clases. ACUMULADORES: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. ALICE: Es un sistema pionero para el modelado y resolución de CSPs (problemas de satisfacción de restricciones) de programación lógica con restricciones. La caracterización de estos lenguajes se da por: La especificación del sistema particular de restricciones. La especificación de las reglas de computación y selección. ALGORITMO: Lista de instrucciones donde se especifica una sucesión de operaciones necesarias para resolver cualquier problema de un tipo dado. ALTURA O PROFUNDIDAD DE UN ÁRBOL: Nivel máximo de un nodo en un árbol. ANTECESORES DE UN NODO: Todos los nodos en el camino desde la raíz del árbol hasta ese nodo. ARBOL: Un árbol es una colección de elementos llamados nodos, uno de los cuales se distingue del resto como raíz, junto con una relación que impone una estructura jerárquica entre los nodos. GLOSARIO DE TÉRMINOS PT Bachiller en Informática 215 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo ÁRBOL BINARIO: Estos árboles se caracterizan porque no existen nodos con grado mayor a dos, es decir, un nodo tendrá como máximo dos subárboles. ARCHIVO: Cualquier conjunto de datos o instrucciones que se trata como una sola unidad y se guarda bajo un mismo nombre. ARITMETICA BINARIA: Forma de operar con un sistema binario de numeración. Ver BINARIO. ARQUITECTURA DE UNA COMPUTADORA: Diseño de un sistema de computación. Determina las capacidades y velocidad del sistema. En última instancia, de la arquitectura depende lo que pueda hacerse con un equipo. ARREGLO: Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a una colección de datos del mismo tipo ASCII: Viene del ingles, American Standard Code for Information Interchange: Código estándar americano para intercambio de información. Es un código binario, que en su conjunto básico ofrece 255 elementos para representar números, letras, símbolos y caracteres gráficos. No incluye las vocales acentuadas del español sino en su conjunto ampliado, que agrega 256 caracteres mas por medio de la extensión de dos caracteres. BASIC: Beginners All Purpose Symbolic Instruction Code, es decir, "clave de instrucciones simbólicas de propósito general para principiantes". Es un lenguaje interpretativo, desarrollado para la enseñanza. Por ser relativamente compacto se utiliza en las primeras computadoras personales. Su aprendizaje es fácil, por lo que durante mucho tiempo ha sido la opción favorita para iniciar a los jóvenes estudiantes en la programación. 216 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS BINARIO: Sistema de numeración base 2 en el que solo existen dos dígitos, 1 y 0. BIT: Binary digiT (Digito binario). Físicamente, se trata de una celda de memoria de computadora; de un punto grabado magnéticamente en la superficie de un disco, cinta o disquete; o de un pulso de bajo voltaje que se transmite a través de la circuiteria de la computadora y que puede tomar el valor 0 ó 1. BOSQUE: Conjunto de n >= 0 árboles disjuntos. BYTE: Unidad de almacenamiento en computadoras de cualquier tamaño y capacidad. Un byte esta formado por ocho digitos binarios o bits. Equivale a un carácter (como una letra o símbolo). En cuanto a números, la capacidad va de una cifra decimal (0 a 9), dos decimales empaquetados o un numero binario entre 0 y255. C: Es un lenguaje de programación creado en 1969 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell basándose en los lenguajes BCPL y B. Al igual que sus dos predecesores, es un lenguaje orientado a la implementación de Sistemas operativos (los sistemas operativos Linux y Unix están escritos mayormente en C), pero se ha convertido en un lenguaje de propósito general de los más usados. Se trata de un lenguaje no fuertemente clasificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Un ejemplo es la posibilidad de mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos. Destaca su gran riqueza de operadores y expresiones. PT Bachiller en Informática 217 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS C++: Se pronuncia "ce plus plus". Fue desarrollado por Bjarne Stroustrup en los Bell Laboratories a principios de la década de los '80. C++ introduce la programación orientada al objeto en C. Es un lenguaje extremadamente poderoso y eficiente. C++ es un súper conjunto de C, para aprender C++ significa aprender todo acerca de C, luego aprender programación orientada al objeto y el uso de éstas con C++. CAMEL: Ocaml es uno entre muchos lenguajes funcionales (como Lisp, Scheme, Haskell) que además de programación funcional pura, permite programar empleando características imperativas, algunas características propias de lenguajes orientados a objetos e incluye un sistema de módulos que facilita el desarrollo de proyectos grandes (con signaturas y funciones). CAMINO: Sucesión de nodos del árbol: n(1), n(2), .. n(k), tal que n(i) es el padre de n(i+1). CLÁUSULA DE HORN: Fue Alfred Horn, un lógico alemán, quién en 1951 llegó a la conclusión que para realizar una inferencia correcta y así eliminar las ambigüedades, las cláusulas sólo debían de tener una conclusión. CLASE: Es la plantilla que permite crear objetos de la misma estructura y comportamiento. COBOL: Common Business Oriented Language o lenguaje orientado a los negocios comunes. Lenguaje narrativo basado en el ingles que permite manejar archives de gran tamaño; una de sus ventajas es su sintaxis de auto documentación. Su complicado formato hace que los programas sean de gran tamaño. Se utilizo preferentemente para el procesamiento de datos contables, con grandes archivos y procesos matemáticos relativamente sencillos. 218 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS COLAS: Las colas son secuencias de elementos caracterizadas porque las operaciones de inserción y borrado se realizan sobre extremos opuestos de la secuencia COMPUTADORA DE APLICACION GENERAL: Computadora diseñada para resolver una amplia gama de problemas por medio de distintos conjuntos de instrucciones que se pueden aplicar a diferentes datos, dependiendo de las necesidades del usuario. COMPUTADORA PERSONAL: Este termino se ha venido aplicando a las microcomputadoras, inicialmente diseñadas y fabricadas para uso domestico. Se trata de equipo orientado sobre todo a un solo usuario. COMPILADOR: Programa que lee el código escrito en un lenguaje (lenguaje origen), y lo traduce o traduce en un programa equivalente escrito en otro lenguaje (lenguaje objetivo). COMPORTAMIENTO OBJETO: El comportamiento de un objeto viene determinado por la forma de actuar al recibir un mensaje para que realice una acción. COMPOSICIÓN FUNCIONAL: Un modelo de composición funcional es aquel donde el resultado del cálculo de una función es la entrada a la siguiente y así sucesivamente hasta que la composición resuelve el problema. En este tipo de programación un programa se concibe como un conjunto de funciones, que se llaman unas a otras con composición funcional para resolver un problema. CONSTANTE. Una constante es un dato cuyo valor no puede cambiar durante la ejecución del programa. Recibe un valor en el momento de la compilación y este permanece inalterado durante todo el programa. CONTADORES: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno. PT Bachiller en Informática 219 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS DATO: 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. DIAGRAMA DE FLUJO: Es aquel diagrama que utiliza símbolos estándar y en el que cada paso del algoritmo se visualiza dentro del símbolo adecuado y el orden en que los pasos se ejecutan se indica conectándolos con flechas llamadas "líneas de flujo" porque indican el flujo lógico del algoritmo. ENCAPSULAMIENTO: Mediante esta técnica conseguiremos que cada clase sea una caja negra, de tal manera que los objetos de esa clase se puedan manipular como unidades básicas. ESTRUCTURA CONDICIONAL: Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen dos tipos básicos, las simples y las múltiples. ESTRUCTURA REPETITIVA: Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa). ESTRUCTURA SECUENCIAL: Es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: FICHERO. Es una colección de registros similares. El archivo es tratado como una entidad individual por los usuarios y las aplicaciones y puede ser referenciada por el nombre.todas las claves de los registros, y asociados a esta clave, la dirección que tiene el registro en el fichero. De esta forma, no hay que leer todos los registros uno por uno hasta llegar a la información que nos interesa, sino que lee el disco por sectores. 220 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS FICHERO PERMANENTE: Son los que contienen información relevante para el programa. FICHERO DE MOVIMIENTOS O TEMPORAL: ontienen información relevante para determinado programa, pero no para la aplicación en su conjunto. Sus datos proceden de los ficheros permanentes. FICHERO INDEXADO: La grabación del registro es igual que en el anterior (secuencialmente). La lectura, se hace a través de un índice. El índice, recoge FICHERO SECUENCIAL: Los registros están grabados en orden y deben ser leídos en ese mismo orden. Para leer un registro hay que pasar por los anteriores. Solo pueden añadirse registros al final del fichero. No permite la inserción de registros en un punto cualquiera. La modificación de información, solo puede efectuarse si la nueva información no excede de la longitud del registro. El borrado es lógico y consiste en una marca que el programa le pone a ese registro, para que cuando el programa vaya a leerlo, lo ignore saltando al registro siguiente. No se borra físicamente el registro. FORTRAN: FORmula TRANslation o traducción de formulas. Familia de lenguajes orientados a procedimientos que se utiliza en aplicaciones científicas, por la facilidad que ofrece para el manejo de expresiones algebraicas. Fue el primer lenguaje que permitió a personas no especializadas la comunicación con la computadora. Su punto fuerte es, precisamente, la representación de formulas y expresiones algebraicas, con ciertas limitaciones para el manejo de datos alfabéticos. Es un lenguaje algorítmico. Ver ALGORITMO. PT Bachiller en Informática 221 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS FUNCIÓN: Las funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado que sustituirá a la función en el punto de invocación (las funciones devuelven un resultado). FUNCIÓN DE ORDEN SUPERIOR: Esta es una característica fundamental que deben tener las funciones que participen en la construcción de un programa funcional. Una función de orden superior es aquella que acepta como argumento otra función que puede retornar como valor de la función otra función. Es decir que tienen el status de cualquier otro objeto. GIGABYTES: Mil millones de bytes de capacidad y velocidad de almacenamiento. Un byte es la unidad de almacenamiento equivalente a 8 bits o a un carácter de información. Un bit o digito binario (Binary digIT) es el componente mas pequeño de la clave binaria, es decir un solo digito (0 ó 1). GRADO DE UN NODO: Es el número de subárboles que tienen como raíz ese nodo (cuelgan del nodo). GRADO DE UN ÁRABOL: Grado máximo de los nodos de un árbol. HARDWARE: En computación, el equipo físico. La computadora y sus componentes electrónicos, así como todos sus periféricos y cables, impresoras, graficadores, modems, digitalizadores y ratones constituyen la maquinaria o hardware. HASTA (do/while): Se ejecuta hasta que se cumpla una condición determinada que se comprueba al final del bucle, esto permite que la iteración se ejecute al menos una vez antes de que la condición sea evaluada. 222 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS HERENCIA: Es el mecanismo que nos permite crear clases derivadas (especialización) a partir de clases bases (generalización). Es decir, podríamos tener la clase "Empleado" (clase base) y la clase "Vendedor" derivando de la anterior HIJO DE UN NODO: Nodos que dependen directamente de ese nodo, es decir, las raíces de sus subárboles. HOPE: Es un pequeño lenguaje de programación funcional, con escritura polimorfica y algebraica, patrón de comprobaciones y funciones de orden superior. Esta versión es un completo interprete. HTML: (Hyper Text Markup Language) es un lenguaje que sirve para escribir hipertexto, es decir, documentos de texto presentado de forma estructurada, con enlaces (links) que conducen a otros documentos o a otras fuentes de información (por ejemplo bases de datos) que pueden estar en tu propia máquina o en máquinas remotas de la red. IBM: International Business Machines Empresa que se dedica a la fabricación de computadoras y desarrollo de sistemas de información. IDENTIDAD OBJETO: Se entiende por identidad de un objeto la propiedad característica que tiene ese objeto que le distingue de todos los demás. INFORMÁTICA: Ciencia del tratamiento automático y racional de la información, considerada como soporte de los conocimientos y las comunicaciones. Se ocupa del análisis de la información vista como un recurso para la organización. Esto incluye las definiciones, usos, valor y distribución de la información. PT Bachiller en Informática 223 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS INTERPRETE: Los interpretes en lugar de producir un Lenguaje objetivo, como en los compiladores, lo que hacen es realizar la operación que debería realizar el Lenguaje origen. Un interprete lee el código como esta escrito y luego lo convierte en acciones, es decir, lo ejecuta en ese instante. JAVA: Java es una tecnología que hace sencilla la construcción de aplicaciones distribuidas, programas que son ejecutables por múltiples ordenadores a través de la red. En el estado del arte en la programación de red, Java promete extender el papel de Internet desde el terreno de las comunicaciones hacia una red en la cual puedan ejecutarse las aplicaciones completas. LENGUAJE ARTIFICIAL: Cualquier lenguaje creado de manera especifica para cierta aplicación. Un ejemplo de lenguaje artificial lo constituye el Esperanto, que para la gramática y el vocabulario aprovechaba las raíces latinas de muchas de las lenguas modernas; fue inventado en 1887 por el Dr. L. L. Zamenhof, con el objetivo de lograr una lengua universal, de facil aprendizaje y que propiciara la paz entre los pueblos y naciones. En computación, son artificiales todos los lenguajes que hasta ahora se han utilizado para dar instrucciones a la maquina, aunque en forma experimental y aplicaciones limitadas ya se puede usar la voz humana en algunos casos. Vease LENGUAJE NATURAL. LENGUAJE DE ALTO NIVEL: Lenguaje de programación que tiende a ser independiente de las limitaciones de un equipo especifico de computo. Se escribe usando códigos fáciles de recordar para el programador, donde cada instrucción puede re-presentar numerosas instrucciones del programa en el código de maquina que la computadora puede comprender. Son ejemplos de este tipo de lenguaje FORTRAN, BASIC, PASCAL y C. 224 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS LENGUAJE DE BAJO NIVEL: Código de maquina y lenguaje de ensamble que se escribe incluyendo todos los detalles, como direcciones de memoria. Casi siempre, cada proposición del programa en lenguaje de bajo nivel representa una sola instrucción de maquina. Los lenguajes de bajo nivel son específicos de cada arquitectura particular de computadora. LENGUAJE DE MAQUINA: Conjunto de instrucciones escrito en forma tal que se puede ejecutar, esto es, entendido y operado, por una computadora. Es el lenguaje original de cada computadora y cualquier instrucción o conjunto de instrucciones que ejecuta una maquina debe expresarse en ultima instancia en lenguaje de maquina para su ejecución. LENGUAJE DE PROGRAMACIÓN: Ccualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su procesamiento por un ordenador o computadora. LENGUAJE ENSAMBLADOR: Lenguaje de programación diseñado para convertir las instrucciones simbólicas dadas en un lenguaje de alto nivel a una forma adecuada para su ejecución por la maquina. Es decir, que traduce de un lenguaje de alto nivel a lenguaje de maquina. LENGUAJE NATURAL: Se refiere a todas aquellas formas de comunicación que se van desarrollado durante la evolución de los grupos humanos. LENGUAJES ESTRUCTURADOS: Se trata del conjunto de lenguajes de alto nivel desarrollados para aplicaciones en inteligencia artificial, que facilitan la representación, almacenamiento y recuperación de conocimiento; es decir, el manejo de estructuras no algorítmicas. Facilitan el manejo de listas y la representación simbólica de objetos. Son ejemplos de este tipo de lenguaje LISP y PROLOG. PT Bachiller en Informática 225 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS LISP: List Processor. Procesador de listas. Lenguaje no estructurado que se desarrollo para aplicarlo en la investigación en inteligencia artificial. Permite el manejo eficiente de listas de todo tipo, lo que lo hace muy adecuado para el manejo y dosificación de bases de conocimiento LISTAS: Las listas son secuencias de elementos, donde estos elementos pueden ser accedidos, insertados o suprimidos en cualquier posición de la lista. LOGARITMOS: Exponente al que hay que elevar una cantidad positiva para que resulte un numero determinado. Existen logaritmos tabulados para distintas bases, como 10, el numero e, etcétera. Los creo como un método abreviado de desarrollar cálculos el matemático escocés John Napier (1550-1617). LONGITUD DE CAMINO DE UN ÁRBOL: Suma de las longitudes de los caminos a todos sus componentes. MATRIZ. Es un arreglo de M * N elementos organizados en dos dimensiones donde “M” es el numero de filas o reglones y “N” el numero de columnas. MIENTRAS (WHILE).La estructura repetitiva mientras es aquella en que el cuerpo del bucle se repite mientras se cumple una determinada condición. MINICOMPUTADORAS: Computadoras de tamaño intermedio, entre una microcomputadora y una macrocomputadora. Este tipo de clasificación del equipo de computo se ha vuelto casi obsoleta en esta época de rápidos cambios, tanto en las capacidades de memoria de las maquinas como de las velocidades de procesamiento. MULTITAREA: El término multitarea se refiere a la capacidad del Sistema Operativo para correr mas de un programa al mismo tiempo. 226 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS MULTITAREA BASADA EN PROCESOS: Consiste en ejecutar varios procesos (programas) a la vez. MULTITAREA BASADA EN HILOS: Consiste en ejecutar varias partes de un mismo programa simultáneamente. NIVEL DE UN NODO: Longitud del camino desde la raíz hasta el nodo. El nodo raíz tiene nivel 1. NODOS HERMANOS: Nodos hijos del mismo nodo padre. NODO TERMINAL U HOJA: Nodo con grado 0. No tiene subárboles. OBJETO: Un objeto es un elemento real o abstracto, que tiene un estado, un comportamiento y una identidad. Un objeto es, pues, una mesa, una silla, un alumno, una clase, etc., pues son elementos reales que se pueden comprender y están bien definidos 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. PADRE DE UN NODO: Antecesor directo de un nodo del cual depende directamente. PASCAL: Lenguaje de Programación de alto nivel y propósito general, desarrollado por Niklaus Wirth, profesor del Instituto tecnológico de Zurcí Suiza. Lo creó pensando en un lenguaje didáctico para el aprendizaje de técnicas de programación, "una disciplina sistemática basada en determinados conceptos fundamentales". PT Bachiller en Informática 227 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS PARA (for): Se utilizan las estructuras for cuando se conocen con certeza el número de veces que desea repetir un bucle, es decir, cuando es un número fijo de veces. PILA: La pila es una lista de elementos caracterizada porque las operaciones de inserción y eliminación se realizan solamente en un extremo de la estructura. POLIFORMISMO: Esta característica nos permite disponer de múltiples implementaciones de un mismo método de clase, dependiendo de la clase en la que se realice. Es decir, podemos acceder a una variedad de métodos distintos (con el mismo nombre) mediante el mismo mecanismo de acceso. PROGRAMA ALMACENADO: Conjunto de instrucciones guardadas en la memoria interna de la computadora que especifica las operaciones que deben realizarse y la localización de los datos con los cuales deben realizarse estas operaciones. La existencia de un programa almacenado permite aplicar las mismas instrucciones a diferentes conjuntos de datos, por lo que se trata de un gran avance en el procesamiento de datos. PROGRAMACIÓN DIRIGIDA POR CONTROL: Los programas dirigidos por control se ejecutan típicamente desde una línea de comando o automáticamente desde otra aplicación (tipo scheduler). PROGRAMACIÓN DIRIGIDA POR EVENTOS: Los programas dirigidos por eventos son los programas típicos de Windows, tales como Netscape, Word, Excel, PowerPoint y otros. Cuando uno de estos programas ha arrancado, lo único que hace es quedarse a la espera de las acciones del usuario, que en este caso son llamadas eventos. 228 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS PROGRAMACIÓN ESTRUCTURADA: La programación estructurada es una teoría de programación que consiste en construir programas de fácil comprensión. La programación estructurada se basa en una metodología de desarrollo de programas llamada refinamiento sucesivos. PROGRAMACIÓN FUNCIONAL: La Programación Funcional es un Paradigma de Programación declarativa basado en la utilización de funciones matemáticas. Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones. PROGRAMACIÓN LÓGICA: La programación lógica parte del establecimiento de una base de datos de sentencias y reglas de inferencia que son declaradas por el programador, dada la naturaleza declarativa de la lógica. PROGRAMACIÓN ORIENTADA A OBJETOS: La Programación Orientada a Objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. PROLOG: PROgramming in LOGic: Programación en lógica. Lenguaje no estructurado que se desarrollo para aplicarlo en la investigación en inteligencia artificial. Su especialidad es la representación simbólica de objetos. RAM: Random Access Memory: Memoria de acceso aleatorio. También se denomina memoria principal y la computadora la usa para almacenar temporalmente la información que recibe proveniente de los dispositivos de entrada. La información contenida en RAM se pierde al apagar la maquina. PT Bachiller en Informática 229 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS REALIDAD VIRTUAL: Capacidad de proporcionar un ambiente artificial tan rico en estímulos para los sentidos del ser humano que resulta difícil o imposible distinguirla de la realidad verdadera. RECURSIVIDAD: El concepto de recursividad va ligado al de repetición. Son recursivos aquellos algoritmos que, estando encapsulados dentro de una función, son llamados desde ella misma una y otra vez, en contraposición a los algoritmos iterativos, que hacen uso de bucles while, do-while, for, etc. REGISTRO LÓGICO: Es la información organizada tal como la percibe el usuario por medio del programa. REGISTRO FÍSICO: Son los bloques de información que la memoria transfiere desde la unidad de almacenamiento masivo hasta la memoria central del sistema para procesarlos. REGISTRO DE LONGITUD FIJA: Es en el que al configurar el fichero se le asigna un determinado tamaño en bytes y lo mantiene a no ser que el registro sea modificado. Esto es así independientemente de la cantidad de información que contenga (Access). REGISTRO DE LONGITUD VARIABLE: En éstos el programa mide la cantidad de información de los registros y adapta su tamaño a ellos (bases de datos documentales = Knosys). RED: Grupo de computadoras interconectadas a través de diversos dispositivos. Internet es un tipo de red empleado para distribuir recursos de información, de carácter global ya que abarca todo el mundo. 230 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS REGISTRO UNITARIO: Método utilizado en las maquinas electromecánicas de contabilidad, en las que el uso de una tarjeta perforada para almacenar un registro (es decir, los datos correspondientes a una transacción, empresa o individuo) llevo al termino registro unitario, esto es, una tarjeta igual a un registro. ROM: Read Only Memory: Memoria solo de lectura. Es un tipo de memoria interna de la computadora, constituida por circuitos integrados en los que por lo general se graban conjuntos de instrucciones que al ser leídos por el sistema le permiten efectuar operaciones básicas, como el arranque. El contenido de la memoria ROM no es volátil, ya que no depende del suministro de energía, pero tampoco se puede modificar. SISTEMA OPERATIVO: Conjunto de programas o software destinado a permitir la comunicación del usuario con un ordenador y gestionar sus recursos de manera cómoda y eficiente. Comienza a trabajar cuando se enciende el ordenador, y gestiona el hardware de la máquina desde los niveles más básicos. SOFTWARE: No existe una traducción exacta de esta palabra sin embargo se encuentra compuesta por dos términos que son: Soft = suave y Ware = ambiente, podemos decir que es el ambiente suave de el ordenador, pero en realidad se refiere a los programas que se encuentran instalados el ordenador. TABLAS: Una tabla o arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. PT Bachiller en Informática 231 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo GLOSARIO DE TÉRMINOS TABLAS: Una tabla o arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. TRANSPARENCIA REFERENCIAL: Decir que una función tiene transparencia referencial, quiere decir que se comporta como una función matemática, en el sentido de que si recibe un valor de entrada, siempre producirá el mismo valor de salida y que el resultado del cálculo de la función únicamente se produce por el nombre de la función. UNÍX: Es un sistema operativo de tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios. Permite a los usuarios correr sus programas. Controla los dispositivos de periféricos conectados a la máquina. VARIABLE: Es un nombre asociado a un elemento de datos que está situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecución de un programa VECTOR: Es un arreglo de “N” elementos organizados en una dimensión. VIRUS: Programa subversivo capaz de ocultarse, autocopiarse, auto modificarse y propagarse en el interior de un sistema de computo para alterar y destruir información e interferir con el funcionamiento del equipo. 232 PT Bachiller en Informática Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo REFERENCIAS DOCUMENTALES 1. Cormen, Thomas H.: Introduction to Algorithms, 2ª Edición, USA, Ed. MIT Press / Mc Graw-Hill, 2001. 2. Levine Gutiérrez Guillermo. Introducción a la computación y a la programación estructurada, 1ª Edición, México, McGraw Hill, 1989. 3. Enciclopedia de la Informática y Computación, Vol. 1- 7, CEETICO, España, Lector libro, S. L. , 2002. 4. Cárdenas Luque, Lola, Curso de Pascal, Disponible en: http://rinconprog.metropoliglobal.com/CursosProg/LengProg/CursoPascal/index.php ?cap=8, [Consulta: 2 enero 2005]. 5. Clavel, Manuel, Programación Estructurada, Disponible en: http://www.ucm.es/info/dsip/clavel/courses/ip0203/node50.html [Consulta: 10 enero 2005). 6. Cruz, Yolima, Introducción a la informática, Disponible en: http://fuxion.tripod.cl/fundamentos.htm#EJEMPLOS [Consulta 20 enero 2005]. 7. Dirección General de Servicios de Computo Académico, UNAM, Introducción a la Computación, Disponible en: http://entren.dgsca.unam.mx/introduccion/so_clasif.html [Consulta: 12 enero 2005]. 8. ICOM, CurcoC, Disponible en: http://ib.cnea.gov.ar/~icom/CursoC/controlflujo.shtml [Consulta 18 enero 2005]. PT Bachiller en Informática 233 Informática Colegio Nacional de Educación Profesional Técnica Programación en Pseudocódigo REFERENCIAS DOCUMENTALES 9. James l., Antonakos, Programación Estructurada, Disponible en: http://lenguajesde-programacion.com/programacion-estructurada.shtml [Consulta: 2 enero 2005]. 10. Java.sun.com, Tutorial Java Consola, Disponible en: http://www.programacionfacil.com/javacon/dos1.htm [Consulta 25/enero 2005]. 11. Microcomputadoras, Historia del Software, Disponible en: http://delta.cs.cinvestav.mx/~mcintosh/comun/historiaw/node23.html [Consulta: 8 enero 2005]. 12. Microsoft Ibérica S. R. L., Procesos, Hilos y Planificación, Disponible en: http://www.microsoft.com/spanish/MSDN/estudiantes/ssoo/diseno/procesos.asp [Consulta: 20 enero 2005]. 13. Torrealday, Gustavo F., Sistemas Operativos, Disponible en: http://www.torrealday.com.ar/articulos/articulo005.htm [Consulta: 4 enero 2005]. 234 PT Bachiller en Informática