0% encontró este documento útil (0 votos)
109 vistas313 páginas

Progra

Cargado por

hectorlujan8
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
109 vistas313 páginas

Progra

Cargado por

hectorlujan8
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 313
rogramacion Mario Dorrego Martin EDITORIAL SINIESIS PRESENTACION 4. INTRODUCCION A LA PROGRAMACION Objetivos Mapa conceptual Glosario 4.1, Introduccién 1.2. Origenes de la programacion 1.3, Paradigmas de programacién 1.3.1, Programacién estructurada 1.3.2, Programacién modular 1.4. Pseudocédigo 1 eradores, palabras reservadias y tipos de Gatos 1 structuras de control 1.5. Diegrames de flujo 1.5.1, Simbologia 15.9. Estruct Resumen Elercicios propuestos Supuestos practicos Actividades de autoevaluacién. de control 2, PROGRAMACION ORIENTADA A OBJETOS Objetivos ‘Mapa conceptual 13 15 15 16 16 7 7 18 19 26 %6 7 31 33 36 37 39 39 4 PROGRAMACION Glosario 2.1. Introduccién 2.9. Auge de la programacién orientada a objetos 2.3. Caracteristicas de la progremacién orientada a objetos 93.1. Clase 232. Objeto 23.3. Encapsulacién 23.4. Abstiaccion 235. Reutlizacion 0 reusabilided 23.6. Visibilidad 23.7. Relaciones enive clases 238. Polimorfismo Resumen Ejercicios propuestos Supuestos précticos Actividades de autoevaluacién. LENGUAJES DE PROGRAMACION Y ENTORNOS DE DESARROLLO INTEGRADO ‘Odjetivos. ‘Mapa conceptual Glosario 3.1, Introduccion 3.2. Lenguajes de programacion 3.3. Java 33.1. Desciipcion de la tecnologia 33.2. Entomo de desarrollo JDK 33.3. Entomo de ejecucion JRE 334. Variables de entorno PATH y CLASSPATH 3355. Tipos de archivos empleados 33.6. Recolector de basura 3.4. Programacién sin IDE 34.1. Compilar un programa 3.4.2. Crear un jar 3.4.3, Ejecutar un progama 3.5. Programacion con IDE 35.1. Caracteristicas y elementos 352. Altemativas 35.3. Configuracién de NetBeans 354, Manejo del IDE Resumen Ejercicios propuestos ‘Supuestos précticos Actividades de autoevaluaci6n ELEMENTOS DE UN PROGRAMA INFORMATICO Odjetivos: Mapa conceptual Glosario RSSSseySsessy w See BISSS 76 76 7 7 ssag PROGRAMACION 4.1, Soluciones y proyectos 4.9. Identificadores 4.3. Palabras reservadas 44, Clases 4.4.1. Método main 4.5. Paquetes 4.6. Variables 4.6.1. Ampito de una variable 4.7. Constantes 4.8, Tipos de datos primitivos 4.8.1, Conversiones de tipo (casting) 4.9. String 4.10. Clases envoitorio 4.10.1. Autoboxing - Unboxing 4.11. Secuencias de escape 4.12. Comentarios 4.13. Operadores y expresiones 4.13.1. Precedencia de operadores: Resumen Bercicios propuestos Supuestos practicos Actividades de autoeveluacién ESTRUCTURAS DE CONTROL Objetivos ‘Mapa conceptual Glosario 5.1. Introduccion 5.2. Entrada y salida de informacion 5.2.1, Entrada por ergumentos 5.2. Entrada y salide por consola 5.3. Estructuras de selecci6n (alterativa) 53.1. if else, elseif 5.3.2 Switch 5.4. Estructuras de repeticién (iterativa! 5.41, for: 5.42 while 543. dowkile 5.5, Estructuras de salto incondicional. 5.5.1. break continue 55.2. breakcontinuecon etiquetas 5.6. Prueba y depuracin de programas Resumen Ejercicios propuestos. Supuestos précticos Actividades de autoeveluacion PRSSSLSSSSRLERFRLSS SSS ZSysssee ye 6. CLASES Y UTILIZACION DE OBJETOS 113 Odjetivos 113 Mapa conceptual 4 Glosario 4 6.1. Concepto de clase 115 6.2. Estructura y miembros de una clase 5 621. Campos 116 622. Métodos 117 62.3. Constructores ¢ instanciacién de objetos 190 62.4. Destructores y liberador de memoria 191 625. Propiedades 199 6.3. Encapsulaci6n y visibilidad 13 6.4. Librerias y paquetes de clases 1904 Resumen 195 Ejercicios propuestos 195 Supuestos prdcticos 195 Actividades de eutoevaluacion 126 7. CLASES AVANZADAS Y UTILIZACIONDE OBJETOS, 19 Objetivos. 199 Mapa conceptual 130 Glosatio 130 7.1, Asociacion, agregacion y composicién de clases 31 7.2. Herencia 133 7.3. Constructores y herencia 133 7.4. Acceso a campos de la superciase 135 7.5. Acceso a métodos de la superclase 135 7.6. Sobreescriture de métodos (Override) 136 7.7. Clases y métodos abstractos 136 77.1, Métodos abstractos 137 7.8. Clases y métodos finales 137 7.8.1. Métodos finales 137 7.9. Interfaces 138 7.9.1, Pseudoherencia multiple 140 7.10. Polimorfismo 141 7.10.1. Asignacién polimorfa 141 7.10.2. Ejecucién polimorfa 141 Resumen 142 Ejercicios propuestos 143 Supuestos prdcticos 143 ‘Actividades de autoevaluacion 144 8. ESTRUCTURAS DE ALMACENAMIENTO: ARRAYS ¥ CADENAS DE CARACTERES 147 Obdjetivos 147 (Mapa conceptual 148 Glosario 148 8.1. Introduccién 149 PROGRAMACION 8.2. Estructuras 8.3. Arrays 8.3.1. Dimersiones de un array. 83.2. Declaracién y creacién 83.3. Inicializaciony acceso Arraysy métodos 8.3.5. Opereciones pare realizer sobre un arrayestatico 8.4, Cadenas de caracteres 8.4.1, Declaracion, creacién e inicializacién 842 Operaciones 843, Convesiones Resumen Ejercicios propuestos Supuestos practicos Actividades de autoevaluacion 9. COLECCIONES Y TIPOS ABSTRACTOS DE DATOS 9.1. Colecciones y tipos abstractos de datos 9.2. Interfax Collection 9.9.1. Interfaz Set 999 Interfaz List. 9.23, Interfaz Queve 9.3. Interfaz Map 9.3.1. HashMap LinkecHoshMap 93.3. TeeMap Resumen Ejercicios propuestos Supuestos prdcticos Actividades de autoeveluaci6n 10. CONTROL Y MANEJO DE EXCEPCIONES Objetivos Mapa conceptual Glosario 10.1. Excepciones 10.2. Jerarquia de excepciones 10.3. Miembros de una excepci6n 10.4. Manejo de excepciones 104.1. Capture de excepciones 104.2. Propagacién de excepciones 104.3. Lanzamiento de excepciones 10.44. Creacién de clases de excepciones 10.5. Recomendaciones de uso de excenciones Resumen 149 150. 150 150 151 152 159 159 159 162 163 163 163 164 167 167 168 108 169 170 im 173 180 181 189 182 183 184 185 185 186 189 189 190 190 191 wl 193 193 193 197 198 199 yy Ejercicios propuestos 200 Supuestos practicos 01 Actividades de autoevaluacion 901 11. RECURSIVIDAD Y COMPLEJIDAD ALGORITMICA 203 Odjetivos 203 ‘Mapa conceptual 904 Glosario 204 11.1. Introduccion 205 11,2. Concepto de recursividad 205 11.3. Utiizacién de la recursividad 906 11.4, Tipos de recursividad 907 11.5. Yentajas e inconvenientes 209 11.6. Complejided algoritmica 10 Resumen m2 Ejercicios propuestos 213 Supuestos précticos m3 Actividades de eutoevaluacion ont 12. LECTURA Y ESCRITURA DE INFORMACION a7 Odjetivos a7 ‘Mapa conceptual ne Glosario 218 12.1, Introduccion 219 19.9. Flujos de comunicacién a9 12.9.1. Tipos de flujo 19 12.2.9. Flujos predeterminados 220 12.9.3. Utilizacion de flujos 221 19.9.4. Clases relativas a flujos 901 12.3, Aplicaciones del almacenamiento de informecién en ficheros 29 12.3.1. Tipos de ficheros. Registro 230 12.3.9. Creacién y eliminacién de ficheros y directorio 930 193.3. Apertura y ciemre de ficheros. Modos de acceso 939 12.3.4. Escrituray lectura de informacién en ficheros 935 12.3.5. Almacenamiento de objetos en ficheros. Serializacién 938 12.3.6. Utilizacién de los sistemas de ficheros 240 Resumen oat Ejercicios propuestos 241 Supuestos précticos 242 Actividades de autoevaluacion 043, 13. MANTENIMIENTO DE LA PERSISTENCIA DE LOS OBJETOS 245, ‘Odjetivos: 245, ‘Mapa conceptual 946 Glosario 246 13.1. Introduccion 947 13.2. Base de datos orientada a objetos 947 a. 13.3. Caracteristicas de las bases de datos orientadas a objetos 48 13.4, Instalaci6n del gestor de bases de datos 248 13.5. Creacién de bases de datos 249 13.6. Ellenguaje de definicién de objetos 250 136.1. Tipos de datos 250 1362. Clases 951 1363. Campos 953 1364. Constructores 256 1365. Herencia 256 13.7. Mecanismos de consulta 256 137.1. El lenguaje de consults: sintaxis, expresiones, operadores 257 137.2. Establecimiento de la conexion 269 137.3. Insercién, recuperacién, modlificaci6n y bortado de informacién 963 13.8. Explorador de objetos 268 Resumen 269 Bercicios propuestos 269 Supuestos précticos 269 Actividades de autoevaluacion 270 14. GESTION DE BASES DE DATOS RELACIONALES. 273 Objetivos 973 ‘Mapa conceptual 274 Glosario 274 14.1. Introduccién O75, 14.2. Base de datos relacional 75 14.3. Creacién de bases de datos. 276 14.4. Establecimiento de la conexién O77 14,5. Ejecucién de consultes sobre la bese de datos 279 14.6. Mecanismos de actualizacion de la base de datos 280 14.7. Recuperacién de informacién 989 14,8. Manipulacién de la informacién. 283 14.9. Utlizacion de asistentes Resumen Bercicios propuestos 285, Supuestos practicos 286 Actividades de autoeveluaci6n 286 15. CREACION DE INTERFACES GRAFICAS. Objetivos ‘Mapa conceptual Glosario 15.1. Introduccin 15.2. Libreria AWT 15.9.1. Ventanas, contenedares y controles 1529. Eventos 1523. Layouts 159.4. Meniis 15.3. Libreria Swing SBysysssyy g On Je 15.3.1. Ventanas, contenedores y controles 15.3.2. Eventos 15.3.3. Layouts 15.3.4, Modificendo la apariencia 15.4. Herramientas gréficas Resumen Ejercicios propuestos Supuestos précticos Actividades de autoevaluacién 301 304 304 310 3 313 313 3t4 315 resentacion Arnis han quedado muchas de las técnicas y procedimientos a seguir para la resoluci6n de deter~ minados problemas. Hoy en dia, gracias al rapido desarrollo de la tecnologia y a la cada vez mas creciente demanda de aucomatizacién de procesos, la programacién se ha posicionado como tuna de las actividades mas demandadas. Este libro ha sido creado con el objetivo de permitir al alumno aprender a desarrollar progra~ mas. Gracias a él podri aftontar con garantias de éxito el Médulo Profesional Programacién (0485), contenido en los ciclos formativos de grado superior TEenico Superior en Desarrollo de Aplicaciones Web y Técnico Superior en Desarrollo de Aplicaciones Multiplacaforma, cuyos curriculos pueden consul- tarse respectivamente en el Real Decreto 686/2010 y en el Real Decreto 450/2010, Dada la temiética tratada, los contenidos y los ejemplos incluidos, este libro podra ser utili zado también por alumnos de los certificados de profesionalidad Programacién en lenguajes estruc- turados de aplicaciones de gestién (IFCDO111) y Programacisn con lenguajes orientados a objetos y bases de datos relacionales (IFCDO112). Asimismo, podra ser utilizado como material de estudio por estudiantes y profestonales que necesiten preparar su examen de certificacion Oracle, asi como para cualquier estudiante que necesite aprender a desarrollar aplicaciones en cualquiera de las ensefianzas regladas y no regladas. Incluso si ya tiene experiencia en el desarrollo de aplicacio~ nes, Jos temas tratados pueden offecerle una visidn actualizada de las tecnologias que esté usan- do o servirle de guia con la que dar el salto a Java desde otras tecnologias (C++, C#, Delphi...). ‘Los contenidos han sido estructurados en quince capitulos. A lo largo de los dos primeros se introduciran los diferentes paradigmas de programacién, haciéndose gran hincapié en el paradigma de programacién orientada a objetos. Como técnicas introductorias con las que tener una primera toma de contacto en el desarrollo de algoritmos y para la obtencién de soluciones independientes de la tecnologia final, se han utilizado las técnicas del pseudocddigo y los flujogramas. ‘Aunque son muchas las tecnologias que permiten al alumno encarar el reto de aprender programar, se ha decidido utilizar Java como lenguaje vehicular con el que comenzar a de~ sarrollar programas reales y materializar los diagramas y pseudoprogramas. Su eleccién no ha ye sido algo dejado al azar; se ha apostado por una tecnologia ampliamente implantada, con gran proyeceién de futuro y con la que sin duda alguna, su valia profesional se vera totalmente avalada, Sera en el capitulo 3 donde se abordari de leno la tecnologia Java, exponiéndose sus caracteristicas principales, asi como las herramientas disponibles para el desarrollo, compilacién y ejecucién de cédigo. Ya en los capitulos 4 y 5 se describiran los tipos empleados por el lenguaje, los operadores, los comentarios, las diferentes estructuras de control y, en lineas generales, la sintaxis empleada por el lenguaje. Aunque la programacién orientada a objetos es tratada de forma genérica en el capitulo 2, rno seri hasta los capitulos 6 y 7 cuando se muestre cémo implementar este paradigma sobre la tecnologia elegida. Los capitulos 8 y 9 tienen como objetivo principal mostrar las estructuras de almacena- miento,esciticas y dinamicas, empleadas en el manejo de informacién de un programa. En ellos seran descritas y analizadas en detalle las colecciones con las que conseguir implementar los diferentes tipos abstractos de datos (pila, cob, lista. ..). ‘Cualquier programa es susceptible de verse afectado por eventos o situaciones imprevistas que pueden originar una salida anémala del mismo. En el capitulo 10 se detallarin los mecanis- mos disponibles para controlar este tipo de comportamientos. Una de las caracteristicas mas potentes de los lenguajes de programacin como Java es la posibilidad que estos ofrecen para resolver determinados problemas basindose en llamadas recurrentes del mismo algoritmo. En el capiculo 11 se estudiari a fondo el concepto de recursi- vidad, asi como el de complgtdad algoritmica como medida de la calidad de un algoritmo. La inmensa mayoria de los programas reales requiere que la informacién manejada sea almacenada en algéin soporte desde el cual pueda recuperarse posteriormente, En los capicu- los 12,13 y 14e detallari cémo manejar la informacién contenida en diferentes fuentes (Fiche- ros de texto, ficheros binarios, bases de datos orientadas a objets y bases de datos relacionales). Sera en el Gikimo de los capitulos donde se introduciré al lector en el desarrollo de interfa- ces grificas de usuario con las que hacer mas cémodo y atractivo el manejo de los programas. Ademis, en la pigina web de la editorial (wwwasintesis.com) se incluyen varios recursos adicionales. Estos contenidos estin especificados en recuadros Hamados Recurso digital dentro del capitulo y pueden consultarse o descargarse siguiendo las indicaciones de la primera pagina del libro. Introduccién a la programacién v v v Conocer los concepts basicos relacionados con la programacién y el disefio de aplicaciones. Describir los paradigmas de programac Aprender a utilizar sistemas de descripc n més utilizados. in de programas de alto nivel. Oe Jee Mapa conceptual Descompone el programa en Médulo Se caracteriza por Estructura de Acoplamiento. Grado y forma de dependencia entre los médulos que comparten infor- macién. ANSI. Instituto Nacional Americano de Estandares. Es la organizaci6n encargada del desarrollo de estdndares para productos, servicios y procesos. Argumento. Valor transferido a un pardmetro correspondiente a un procedimiento o fun- ‘cin cuando este es invocado. ———— Aritmémetro, Evolucién de la antigua calculadora mecénica de Leibniz, capaz de realizar las cuatro operaciones aritméticas elementales (suma, resta, multiplicacién y divisién) con resultados de hasta 12 cifras. Booleano. Es el tipo que puede tomar una variable 0 condicién. Se lit verdadero 0 falso. Cédigo espagueti. Cédigo de un programa cuya estructura es tan compleja que hace muy dificil su seguimiento y modificacién. Cohesién. Nivel de relacién existente entre los elementos software contenidos en un médulo.. Diagrama, Representacidn grafica de un conjunto de elementos y las relaciones existentes entre sf. Maquina analitica. Computador moderno de naturaleza mecénica ideado por Charles Babbage, que dispone de la mayor parte de los elementos ldgicos de un ordenador tal como hoy en dfa se conoce. Paradigma. Guia de trabajo a seguir para la obtencién de un resultado, elaborada y con sensuada por un grupo de expertos en la materia. Parametro. Propiedad de un procedimiento o funcién que se define junto a él y que esta- bblece la forma y el tipo del valor que espera recibir cuanda es invocado. ita a 2 valores: Programacién. Proceso de disefio y codificacién de las instrucciones que se ejecutan sobre un computador. Pseudocédigo. Lenguaje cercano a un lenguaje de programacién cuyo objetivo es el de- sarrollo de algoritmos fécilmente interpretables por un programador. Teorema. Término proveniente del latin theoréma que referencia a una verdad que, sin ser obvia, es totalmente demostrable. 1 Introduccién En este primer capitulo se realizar una breve introduccién a la programacin desde sus ori~ genes hasta los tiempos modernos, se presentarin conceptos generales de programacién y se abordarin los diferentes paradigmas de programacién, explicando en detalle la programacién estructarada y la programacién modular. Por iltimo, se expondrin los diagramas de flujo y el pseudocédigo como téenicas que ayudarin a introducirse en el mundo de la programacién, 1.2. Origenes de la programacién Se hace uso del término programacisn para hacer referencia al proceso mediante el cual se disefia y codifica un conjunto de instrucciones que implementan un determinado algorizmo, yy. Surgié ante la necesidad de antomatizar y facilitar las tareas que inicialmente se realizaban de forma manual, La programacién tiene sus raices en las primeras calculadoras de operaciones matematicas elementales, las cuales levaban los algoritmos implementados en su estructura fisica, y en los telares automaticos, que recibian los datos sobre el trabajo a realizar a travis de tarjetas perforadas. Sin embargo, no es hasta la aparici6n del diselo de la miguina analitica de Charles Babbage (considerado el primer ordenador de la historia) y la posterior aportacién de Augusta Ada Byron (considerada la primera programadora de la historia) cuando puede hablar- se de programacién como «al. 1071 caesar mooi Ta on taper Sep eae sa ‘Supra ete $140, yo tata tira 188 tain natin (ie segue orn coreuntry, Sars tabope Lerner ilicmeanmeme! Fee Pea Sarit aoe Car 23. ser ‘ton ns Ra Bron 80 7000 Figura 1.1 Origenes de la programacién. Hoy en dia el concepto de programacién es sustancialmente diferente, y ello se debe a que ha ido evolucionando de forma pareja a como lo han ido haciendo los dispositivos y tecnologias de cada época (figura 1.1), En las primeras computadoras las instrucciones de los programas eran escritas en cOdigo binario (ceros y unos). Dada la complicacién asociada a esta técnica de programacién, los cientificos que estudiaban esta nueva ciencia decidieron sustituir determina- das secuencias binarias por palabras que permitieran representarlas mis ficilmente; este proceso dio lugar al conocido lenguaje ensanblador. Conforme las necesidades fueron creciendo y se fue deparando la técnica aparecieron los lenguajes de alto nivel, que aiiadian una nueva capa de abstracci6n al proceso de programaci6n y que permitian el desarrollo de programas cada vez mis sofisticados al mismo tiempo que més ficiles de desarrollar. 1.3. Paradigmas de programacion Allo largo de la historia de la compatacién se han empleado diversas téenicas de programacidn, presentando cada una de ellas unas caracteristicas concretas que las hace diferenciarse del resto ¥ mostrarse como candidatas ideales para segtin qué problema, Cuando un conjunto de reglas ¥ costumbres son aceptadas como modelo de referencia para generar un c6digo de calidad, se puede comenzar a hablar de un paradigma de programacién. Pero, pesar de que cada paradigma de programacidn tiene unas caracterfsticas concretas,en la vida real los programadores pueden basarse en varios de ellos al mismo tiempo para el desarrollo de sus programas. La inclusion de dos o mis paradigmas de programacién en el mismo programa se denomina programacién multipanadigma y generalmente es la que mejores resultados obtiene. on OE Usilizar un paradigma de programacién, aceptando y siguiendo sus reglas, derivari en un cédigo fuente facil de mantener, entender y corregir. Son muchos los paradigmas de programacion que se pueden enumerar, aunque a conti- nuacidn serin descritos con detalle aquellos mis empleados y que mayor relacién guardan con los contenidos del curso, En este capitulo se estudiar’ en detalle el paradigma de programacién estructurada y el paradigma de programacién modular. El paradigma de programacién orientada a objetos seri estudiado en el capitulo 2. a Pn cy ete Busca ajemplos de otros paradigmas de programacién diferentas a los mencionados tanieriormente y establece unc linea de tiempo que muesire el momento en el que fueron surgiendo. 1.3.1. Programacién estructurada La progamacién estructurada tiene sus origenes en la decada de los sesenta y pretende mejorar la ca lidad del software, asi como agilizar su desarrollo a la ver que reduce su coste. Deriva del paradigna de prgumacién imperativa, en el cual se especifica c6mo debe resolverse el problema mediante un conjunto de instrucciones que son ejecutadas y que van variando el estado del programa, La programacidn estructurada se basa en el teorema del programa estrucurado propuesto por Corrado Bohm y Giuseppe Jacopini, segiin el cual todo programa se puede escribir empleando inicamente tres tipos bisicos de estructuras de control 1. Secwencial: las instrucciones se ejecutan una detris de otra siguiendo un orden (secuen- calidad). 2. Alternativa: las expresiones son evaluadas y, dependiendo del resultado, se decide cual seri la siguiente instruccién a ejecutar. Irerativa: se repetirs un conjunto de instrucciones hasta que una condicién sea cierta, permitiéndose de esta manera el salto a otta instruccién. Aunque los lenguajes de programacién offecen un abanico mis amplio de estructuras de control, bien es cierto que todas ellas finalmente se basin en las anteriormente descritas. InvestiGa Edsger Dijkstra escribi6 “La sentencia Go To considerada daitina’. Busca informaci6n acerca de ese escrito y extrae las ideas principales. yy. Los lenguajes de programacién también oftecen instrucciones de salto incondicional (@9 10), pero su uso esti totalmente desaconsejado porque complica el seguimiento y trazabilidad de los programas, generando un eébdigo espagueti mis dificil de modificar y corregir. Es por ello por lo que este tipo de estructuras deben evitarse en la medida de lo posible. Por dlkimo, hay que resefiar que la programacién estructurada presenta grandes dificuliades ala hora de abordar proyectos de gran tamaito, para los cuales es mis eficiente el empleo de la programacién orientada a objetos. RECUERDA ¥ En la programacién estructurada los datos y las funciones que los manejan se definen separados, La programacién estructurade no ofrece garantics pora abordar proyectos de gran tamajio, en cuyo caso es més recomendable emplear programacién orientade o objetos. 1.3.2. Programacion modular La programacién estructurada establece unas directrices base para realizar un cédigo de calidad y facilitar el mantenimiento. Aun asi, no tiene en cuenta que el codigo puede crecer hasta llegar a complicar mucho el desarrollo. La programacién modular propone como solucién la descomposicién del problema en sub- problemas de menor tamafio, los cuales serin descompuestos sucesivamente en otros de menor tamafio hasta que el resultado de dichas descomposiciones permita obtener problemas ficiles de resolver. esta técnica de resolucién de problemas se le denomina divide y vencenis y permite poner en prictica un proceso de desarrollo software top-down. Figura 1.2 Top-down. Cada bloque de cédigo que se ocupari de resolver un problema de menor tamaiio se de- nomina médulo 0 subprograms, y exard compuesto por un conjunto de sentencias fisicamente unidas y delimitadas. Dicho médulo sera referenciado por un nombre y podri hacer uso de otros médulos. La comunicacién entre médulos se realizar’ a través de interfaces de comuni- cacién claramente definidas. Los elementos empleados para llevar a cabo la modularizacién pueden ser muy distintos dependiendo del nivel de abstraccién: InTRODUCCION A LA PROGRAMACION 1. A-un alto nivel seran las unidades, en dis disefios orientados a objetos. 2. A mis bajo nivel seran los procedimienios y las fiunciones, en diseios estructurados, y las clases con sus correspondientes méiodos, en diseitos orientados a objetos. ‘os estructurados, y los paguetes y librerfas, en Para llevar a cabo una correcta modularizacién del programa, es necesario realizar un diseio de calidad que tenga en cuenta los siguientes criterios: * El médulo debe tener un Gnico punto de entrada y un Gnico punto de salida, Cada médulo debe realizar una Gnica funcién bien definida. * Cada médulo debe comportarse como una caja negra, de manera que dependa tinica~ mente de las entradas. * Modulos trazables en una pantalla (tamaiio ideal 30-50 lineas de cédigo por médulo). ‘* Méxima cohesién y minimo aceplamiento. Ambos criterios estin relacionados entre si de manera que, a mayor cohesién en los médulos, menor sera el acoplamiento entre ellos. A) Cohesi6n Se denomina cohesiin de un médulo al nivel de relaci6n existente entre los elementos soft- ware contenidos en él, entendiéndose como elementos software las instrucciones, definiciones de datoy v lay Hansadlay a guys iédluluy. Existen diferentes tipos de cohesion: 1. Cohesién finncional: los elementos del médulo contribuyen a la realizacién de una Gnica tarea. Dicho de otra manera, cada elemento es una parte integral de la estructura del médulo. El médulo se representa mediante un identificador simple. Por ejemplo: mé~ dulos matemiticos suma, seno, potencia... Cohesién seruendal: se da cuando el médulo realiza varias tareas segtin una secuencia gue establece que la salida de una actividad es la entrada necesaria de la siguiente. Por ejemplo: Progresivamente el médulo se ocupari de buscar informacién a partir de un dato de entrada y, con ella, generar un informe formateado gue devolvers como dato de salida. Podrian encadenarse mis acciones. Figura 1.3 ohesién secuencial. 3. Cohesién comunicacional: contiene actividades paralelas (sin orden) que comparten los mismos datos (de entrada o salida). Se recomienda su descomposicidn en médulos in dependientes de cohesion funcional. Por ejemplo: ni <0 bistoral medico cexpedionte El médulo se ocupara de buscar informacién a partir de un dato de entrada y retornari como salida informacién de diverso tipo. El orden de las actividades no es relevante. academic oF Figura 1.4 | Ottererdaos Cohesion comunicacional. ye 4. Cohesin procedural: los elementos realizan diferentes actividades posiblemente no rela- cionadas entre si, También es posible que no exista relacién alguna entre los datos de entrada y de la salida de os médulos, El control fluye de una actividad a la siguiente. Por ejemplo: El médulo eliminari del sistema los datos relativos al libro cuyo cédigo recibe como dato de entrada; posteriormente retor nari como datos de salida un listado de los socios de la biblioteca. Figura 1.5 Cohesi6n procedural. Cohesisn temporal: los elementos estin implicados en la realizacién de actividades rela- cionadas por e] momento en el cual se evan a cabo. Ejemplos tipicos son los médulos de inicializacién y finalizacién de sistema (arrancar sistema, apagar sistema, resetear sis tema, inicializar sistema...) Es posible que no manejen ningiin dato de entrada o salida, 6. Cohesibn ldgica: los elementos estin destinados a que realicen actividades de una misma categoria general, pero la seleccién de la actividad concreta tiene lugar desde fuera del modulo. Por ejemplo: uy H t zarse en efectivo o por transferencia (el medio de pago se selec- EVE clonari desde fuera del médulo).. Realizar paso Figura 4 Cohesion logica. 7. Cohesisn casual: los elementos no guardan ninguna relacién observable y son fruto de tuna organizacién caética, Por ejemplo: El médulo se encargari de efectuar un pago que pods reali- comprobante Dentro del médulo se realizarin tareas de diverso tipo pero sin relacién alguna, La seleccidn de la tarea en cuestién se realiza $ mediante un flag creado para tal efecto, Algunas tareas pueden devolver datos miensras que otas no. teal Cajén de sasve Figura 1.7 Cohesion casual. dato2 dato Aunque siempre se tiende a pensar que, a mayor cohesién, mejor sera el disefio de un programa, hay que tener en cuenta que no todos los tipos de cohesibn son deseables. En la siguiente escala se pueden apreciar los diferentes tipos de cohesion y cémo estos afectan al ‘mantenimiento. a. Cohesién fuerte + Cohesién funcional (favorece el mantenimiento) + Cohesi6n secuencial Deseable + Cohesién comunicacional t + Cohesi6n procedural + Cohesién temporal No deseable Cohesién débil . (complica el mantenimiento) . esién casual Figura 1.8 Escala de cohesién por Stevens, Myers, Constantine y Yourdon. Mediante el siguiente arbol de cohesion se podra identificar el tipo de cohesion ante el que un programador puede encontrarse: vn i > contsion runcronnn ‘UNA Mea FUNCION? | {> COMESION secvENerAt ——> esimpormnTE A 7 sora SECUENCI Wo | J conecommnacon {COMESHON PROCEDURAL {C040 STAN RELAGIONAOAS > LASACTIVIDADES DENTRO DEL — ,ton, > “uncon Anne A cs ‘MoDLLO? mW Ro, AeRTENECEN As, $i > COHESION LOGICA ACTIVIOADESA A MISMA CCATEGORAGENERAL? WO, Figura 1.9 Arbol de cohesién. a Actividad propuesta 1.2 Propén dos ejemplos de cada uno de les tipos de cohetién vistos anteriorments. B) Acoplamiento El cérmino acoplamiento hace referencia al grado y forma de dependencia entre los médulos. A menor cantidad de informacién compartida entre diferentes médulos, menor acoplamiento ¥ por tanto mejor seri el diseiio, Existen varios tipos de acoplamiento que son descritos a continuaci6: oe Je 1. Acoplaniento normal: se da en aquellos casos en los que un médulo A invoca a otro mé- dulo B. Por ejemp! a] Figura 1.10 Solicitar digitos al wsuario avatlat Figura 1.11 Acoplamiento Hrotmal por datos. Pedirdatos al usuario Inserar datos en BD Figura 1.19 Acoplamiento normal ‘Mostrar ment acciones ted [sits aceiin 4 pane jecutar accign Figura 1.13, Acoplamiento normal de control. Por marca o estampado. y El modulo A invoca al médulo B, el cual, tras realizar su funcién, retorna el control al médulo A. Acoplamiento normal. De intercambiarse informacién, esta tinicamente estari presente en los parimetros de llamada, En ese caso, y atendiendo al tipo de la informacién, se definen tres subtipos: 4) Acoplamiento normal por datos:si los parimettos intercambiados son datos elementales (Cipos bisicos). Por ejemplo: El médulo “Solicitar digitos al usuario” pide datos sim- ples al usuario (niémeros en este caso) y los almacena, Pos- teriormente invoca al médulo “Calcular suma” pasindole como parimetros los datos solicitados. EI m6dulo “Caleular suma” hace la operacién indicada y devuelve el resultado. b) Acoplamiento normal por marca o estampado: si los parametros intercambiados son un dato compuesto (registro) de datos de tipos basicos. Por ejemplo: El médulo “Pedir datos al usuario” solicita datos simples al usuario y los almacena en forma de dato compuesto (re- stro). Posteriormente invoca al médulo “Insertar datos en BD” pasindole como parimetro el dato compuesto. El médulo “Insertar datos en BD” inserta los datos del registro en la base de datos y retorna el identificador asigna- doa la inserci6n realizada, ) Acoplamiento normal de control: cuando un médulo le pasa al otro un parimecro con Ja intenci6n de controlar su légica de funcionamiento interna. Por ejemplo: El médulo “Mostrar meni acciones” presenta las acciones que se pueden realizar y recoge la que el usua~ rio seleccione, Posteriormente invoca al médulo “Eje~ idn” pasindole como parimetro el identifica- dor de la accién que el usuario seleccion6 previamente. El médulo “Ejecutar accién” leva a cabo la accién correspondiente y, dependiendo de esta, puede que re~ torne algun dato. 2. Acoplamiento extemo:se da cuando dos o mis médulos uilizan las mismas fuentes exter= nas de datos (interfaces de dispositivos o de programas externos). 3. Acoplamiento global: presente cuando los médulos utilizan los mismos datos globales (variables globales, memoria compartida, ficheros o bases de datos) 4. Acoplamiento patoligico 0 por contenido: un médulo lee © modifica los datos internos de ott médulo © bien salta al interior de su c6digo. En la figura 1.14 se pueden apreciar los diferentes tipos de acoplamiento y cémo estos afectan al mantenimiento: Acoplamienio debil Acoplamiento normal (favorece el mantenimiento) © Acoplamiento normal por datos © Acoplamiento normal por marca o estampado ©. Acoplamiento normal de control ‘* Acoplamiento externo ‘Acoplamiento fuerte + Acoplamiento global (cificulta el mantenimiento) + Acoplamiento patologico o por contenido Figura 1.14 Tipos de acoplamiento. RECUERDA Ya programacién modular intenta solventar el crecimiento desmesurado que se plantea con la programacién esructurada mediante la descomposicin en mé- dulos 0 subprogramas de menor tamafio. ‘Cuanto mayor sea |a relacién existente enire los elementos contenidos en un médulo, mayor seré la cohesién y, por tanto, més exitosa la modularizacién llevade a cabo. Existen varios tipos de cohesién. Steven, Myers, Constantine y Yourdon (1974) establecieron la “escala de cohesién’, que identifica qué tipos son los més deseables asi como aquellos que deben evitarse. ‘Mediante el érbo! de cohesién es facil conocer el tipo de cohesién. Cunt menor sea la relacién existente entre los elementos de un médulo con os elementos de olro médule, menor seré el acoplamienio y, por tanto, més exitosa lo modularizacién realizeda. Existon varios tipes de ocoplamiento y lot médulos pueden estar relaciona- dos por varios tipos de ellos, en cuyo caso el acoplamiento que caracterizaré ka relacin enire estos seré la del peor tipo. a Actividad propuesta 1.3 Propén dos ejemplos de cada uno de los tipos de acoplamiento vistos enteriormente, 7 nwa Pseudocdédigo El pseudocédigo es un lenguaje cercano a un lenguaje de programacién cuyo objetivo es el desarro- lo de algoritmos ficilmente interpretables por un programador, independientemente del lenguaje de programacién del que provenga. En si mismo no se crata de un lenguaje de programacién, pero si que utiliza un conjunto limitado de expresiones que permiten representar las estructuras de control y los médulos descritos en los paradigmas de programacién estructurada y modular. Mediante pseudocédigo se puede escribir aquellos algoritmos que tengan soluci6n finita y que comiencen desde un tinico punto de partida.La escritura de un algoritmo o programa en pseudocddigo deberia favorecer la posterior traduccién al lenguaje de programacién elegido. © Sroias ue... Dado que no existe una sintaxis estandarizada para la escritura de pseudocédigo, es posible encontrar diferencias sustanciales en los pseudocédigos escritos por diferentes programadores.. 1.4.1, Operadores, palabras reservadas y tipos de datos ‘A pesar de que no existe una norma rigida que establezca cémo realizar la escritura de pro- gramas en pseudocédigo, es recomendable seguir una serie de recomendaciones que permian transcribir el programa al lenguaje de programaci6n que va a usarse con la mayor facilidad, A continuacién, se muestran las tablas resumen de los operadores, palabras reservadas y tipos de datos empleados para la escricura de pseudocédigo en el capitulo. Cunoro 1.1 Resumen operadores es + ‘Suma (Usados par formar condones) = Resta Igual and_y l6gico (conjuncién) 2 Multiplicacion <__ Menor ©F 0 logico (disyuncion) Z Divisi6n real <___Menoro igual no Negacién logica div Divisi6n entera > Mayor Ee ned 6 + Resto omédulo = Mayor igual € _Asignacién E Potencia <> __Distinto 77 Comentario ‘Cuanro 1.2 Palabras reservacas Inicio ss no fotze Pere Ea Fin Segan Mientras Hasta Procediniente ss Facer Repetiz Tncrenento Tuncién Entonces caso Hasta que Cada Imprinas Teer etornar ————— Cuapro 1.3 Tipos de datos Cardcter Cadena Enieo Real Booleano 1.4.2, Estructuras de control Tal como se ha comentado en el apartado anterior, el pseudocddigo utiliza las estructuras de control propias de la programacién estructurada. Por este motivo se emplearn secuencias que representen las estructuras de control secuencial, alternativa © iterativa, A) Estructuras de contro! secuencial Describen bloques de instrucciones que son ejecutadas en orden de aparicién (secuen- cialmente). Los blogues pueden estar delimitados por las expresiones Inicio-Fin o bien estar contenidos en otras estructuras, A continuacién, se muestra un ejemplo de estructura secuencial: Inicio Fin B) _Estructuras de control alternativa La estructura de control alternativa © selectiva encauza el flujo de ejecucién hacia un blogue de insteucciones u otro en funci6n de la evaluacion que se realiza sobre una condicion deter~ minads. Hay diferentes subtipos de este tipo de estructura de control: 1. Alternativa simple: establece un conjunto de instrucciones que se ejecutarin si se cumple una condicién que retornari un valor booleano. Ejemplo: Si entonces Fin si PROGRAMACION 2. Altematina doble: afade otro bloque de instrucciones que se ejecuta en caso de que no se cumpla la condicién. Ejemplo: Si entonces si no Fin Si 3. Altemativa miiple: pern ite ejecutar diferentes bloques de instrucciones segiin el valor que tome una expresidn que es comparada con los valores de cada caso o bien median te el anidamiento de diferentes estructuras de alternativa doble cuy s condiciones son excluyentes. Ejemplo de bloques equivalentes en resultado: Equivalentes = Si entonces sino Segiin cexpracién> hacer Si entonces Caso Si no Caso ‘Si entonces caso sino Otro caso Fin Si Fin si Fin Segin Fin Si ©) Estructuras de control iterativa La estructura de control iteratina permite que un bloque de instrucciones sea ejecutado mientras se cumpla una condicién. Hay diferentes subtipos de este tipo de estructura de control: Iteracién con salida al principio (while): primeramente, evalia la condicién y en caso de cumplirse ejecuta el bloque de instrucciones. La condicién deberi cambiar de valor se- gain las instrucciones contenidas para evitar bucles infinitos. Es posible que nunca llegue 2 gjecutarse el bloque de instrucciones. Ejemplo: Mientras Hacer Fin Mentres InTRODUCCION A LA PROGRAMACION 2. evacidn con salida al final (epeat y do while): primeramente, ejecuta el bloque de instruc~ ciones y posteriormente evalfia la condicién. La condicién deberi cambiar de valor segtin las instrucciones contenidas para evitar bucles infinitos. El bloque de instruccio~ nes se ejecutari, como minimo, una ver. La versién que hace uso de repeat ejecutars las inscrucciones hasta que se cumpla la condicién mientras que la variante do while eje~ cutari las instrucciones mientras se cumpha la condicién.A continuacién, se muestran ejemplos de pseudocédigo para repeat y do while: Repetir Hacer Hasta Que Mientras 3. Ieacién con contador (for): ejecutard el bloque de instrucciones un néimero determinado de iteraciones. Hace uso de una variable que iri incrementando 0 decrementando por cada iteracién hasta que se cumpla la condicién de salida.La condicién de control, que se traduciré a 1==N 0 4s=1 segiin sea el incremento, debera ser falsa para que sigan eje- cutindose las instrucciones. Ejemplos de for incremental y decremental: entero i Para ie 1 Hasta N Incremento 1 Hacer — Mctemento Positivo entero i . Para iN Hasta 1 Increnento -1 Hacer Mcremnento negative 4. Itemcién para cada (for each): ejecutara el bloque de instrucciones para cada elemento contenido en un conjunto. Ejemplo: entero i Para Cada elemento En conjunto Hacer Fin Para Cada D) Estructuras modulares ‘También es posible describir mediante pseudocddigo la descomposicién modular de los programas representando los procedimientos y las funciones encargados de realizar las tareas. yy. 1. Procedimientos Cada bloque de cédigo contenido en un procedimiento se ocupari de levar a cabo un con- junto de instrucciones cuando este sea invocado. Podra recibir argumentos con los que trabajar a la hora de ser lamado si se ha definido el parimeiro correspondiente, pero en ningtin caso retornari ‘un valor de salida. A continuacidn, se muestra un ejemplo de pseudocédigo para un procedimiento: Procedimiento nombre (tipo pardmetro1, tipo pardmetro2, ..) Fin Procedimiento A continuacién, se muestian dos ejemplos tipicos de programacién correspondientes a HolaMundo y a un programa Salude: Procediniento Saludo (cadena nonbre) Gece selene ole onto imprimir (“Hola" + nombre) imprimir ("Hola Mundo”) Fin Procediniento inprinir (" ay tae Fin Procedimiento a inicio eel a) ‘saludo (nombre) Fin = 2. Funciones Al igual que los procedimientos, una funcidn podrin recibir argumentes con los que trabajar ala hora de ser llamada si se ha definido el parimetro correspondiente, pero, a diferencia de los procedimientos, retornari un valor de salida. Ejemplo de pseudocédigo para una funcién: Funcion nombre (tipo parametro1, tipo pardmetro2, ..) : tipoRetorno ‘ retornar x Fin Funcion RecueRDA ¥ Elpseudocédigo es un lenguaje que permite reolizar une aproximacién muy cercana ala implementacién de un problemo delerminado en un lenguaje real de programacién (C, Pascal, Algol.. No se ojusta @ ningén esténdar y, por lo tanto, puede presentar diferencios depen- diendo eee Coons lo escriba. n,se muestra un ejemplo tipico de programa Funcién TextoParInpar (entero numero) : cadena cadena resultado A continuak n Si (nimero % 2 - @) entonces Declaracién resultado + “par” de la fun Si no resultado « “impar" Fin si Llamada retornar resultado ala funcién Fin Funcion Inicio entero nimero inprimir ("introduzca el nimero .") Leer (numero) inprimir ("el ntimero introducido es " + TextoParImpar (ndmero)) Fin @a eC ee toes Empleando pseudocédigo desarrella un programa que solicite la introduccién de dos atmeros por teclado (ndm. 1 y num. 2) y muestre por pantalla la suma, resta, muliiplicacién y division eniera (siendo nim. 2 el divisor). Ten en consideracién que si nm. 2 es 0, el resultado serd infinito (0). 1.5. Diagramas de flujo Un diagrama de fiujo, ordinograma © flujograme es una representacién grifica de un algoritmo © proceso, Son utilizados en informatica, aunque también se emplean en otros ambitos diferentes. Facilita la comprensién del algoritmo gracias a la descripeién visual que aporta sobre el flujo de ejecucién de este. ( ) Pata sane mAs (Otra técnica empleada para la representacién de procesos son los diagramas Nassi-Shneiderman o Chapin. Este tipo de diagramas permite representa, de forma anéloga a los diagramas de flujo, el flujo de ejecucién de un programa oalgoritmo. yy. 1.5.1. Simbologia Los diagramas de flujo se construyen utilizando un conjunto de simbolos que se van enlazando entre si para dar significado al proceso. En el cuadro 1.4 se muestra cada uno de los simbolos cempleados, asi como una descripcién de estos: Y Todo diagrama de flujo comienza y finaliza con un terminal representado mediante un évalo o elipse. El trapecio rectingulo representa la entrada de datos desde teclado. Indica la detencién del proceso a la espera de que el usuario teclee los datos. La comunicacion con los periféricos para la entrada o salida de datos se representa me- diante un paralelogramo, En todo algoritmo existe un orden en el que se tealizan sus operaciones. En los diagra~ mas de flujo ese orden se indica mediante una flecha, Las decisiones se representan mediante un rombo del que salen tantas lineas de flujo como alternativas sean S. Siel algoritmo a representar es muy grande, puede ser complejo disefiar su diagrama en tun Ginico bloque y lo mas conveniente sera dividir el diagrama en bloques mis peque- ‘hos. Para ello se pueden emplear conectores que representarin el punto al cual saltar una vez se llegue a ese punto, Los saltos se representarin mediante una circunferencia si son en la misma pigina, © con un pentigono irregular si son en otra, Los procesos que evan a cabo las operaciones internas de calculo se representan median- te un rectingulo. Es posible que haya determinadas tareas que, por su complejidad, no puedan ser repre~ sentadas como un proceso. En ese caso serin descompuestas en subprocesos que estarin definidos en otro lugar y que estin representados por un rectingulo con doble linea en cada lado. Y Las bases de datos con las que se intercambia informacién tienen su propio simbolo (cilindro). Y Los documentos impresos también tienen sus propios simbolos de representacion. NNNNSN ‘Cusoro 1.4 Simbologia propuesta por la American National Standards Institute (ANSI) De Instruccion N (reo a [nea] (em) v Figura 1.15 Figura 1.16 Figura 1.17 Secuencial. Alternativa simple. Alternativa doble. Sax fase Soasans 2180 Instrueién 2 | i Instructién2 | < verdadero v [eee ees] Figura 1.18 Altemativa mailtiple con simples anidadas. v x expresién>———— instuceién 1 || instruccién 2 || insruccién 3 Figura 1.19 Altemativa miltiple Il. fako| > instruccion <—_, —_ Yc ieie insrveion instrucion Figure 1.23 Figura 1.24 Iterativa for incremental. Iterativa for decremental. Cada funcién o procedimiento (estructuras modulates) quedara descrito por un diagrama independiente y la invocacién a dicho subprograma se realizari desde el diagrama principal * En el caso de invocar un procedii jento, lo representaremos mediante una llamada al subproceso que queda identificado por el rectangulo de lados dobles. A conti- nuaci6n, se muestran los diagramas correspondientes a los ejemplos realizados en pseudocddigo: Programa Prindpal & votarundon | | as. Fin Figura 1.25 Ejemplo HolaMundio. Procedimiento HolaMundo INTRODUCCION A LA FROGRAMACION Gi Program rrocasnien ‘ween (tie) ‘ms romans / ea» 1 : ‘ ae <7) Figura 1.26 Ejemplo Saludo. * Para invocar una funci6n bastari con indicar la Hamada en el proceso: - ee wes =) Cake m») (Cm) Prerana rnc Figura 1.27 Ejemplo de funcién. RECUERDA, Los diagramas de flujo son la represeniacién gréfica de un algoritmo, © programa. Le simbolegia empleada seré la propuesta por ANSI. a Act Realiza el diagrama de flujo para un programa similar al del enunciado 1.4, en el que se solicite la inlroduccién de dos némeros por teclado (num! y num2) y se muestre por pantalla la suma, resta, muliplicacién y divisién entora (siondo num? el divisor). Ten en cuente que si rum? es 0, ol resul tado sera infinito (2). rer PROGRAMACION ———— Existen varios paradigmas de programacién que sirven de guia para el desarrollo de programas; la programacién estructurada, la programacién modular y la programa- i6n orientada a objetos son varios de ellos. El empleo de mis de uno de esos paradigmas se conoce como programacién multi- paradigma y a menudo se presenia como la solucién més adecuada en la mayor parte de los problemas. Para llevar a cabo la descripcién de los algoritmos se dispone de varias técnicas. Entre elas se encuentran el pseudocdcigo, diagramas de flujo y diagramas Nassi-Shneider- man. El pseudocédigo representa un cédigo universal para implemeniar un programa o algoritmo. Los diagramas de flujo y los diagramas Nassi-Shneiderman son técnicas graticas de re- presentacién que permiten visualizar fécilmente el flujo de ejecucién de un programa oalgoritmo. PeNe 6. Larrea} Define el concepto de paradigma de programacién. Describe las diferencias existentes entre una funcién y un procedimiento. 4Qué diferencia hay entre cohesidn y acoplamiento? Enumera y describe los tipos de estructuras de contiol que son empleados en progra- macién estructurada. zEn qué consiste el concepto divide y vencerds que permite poner en practica un pro- ceso de desarrollo top-down? Identifica y describe el significado de los siguientes simbolos: ObIMa7

También podría gustarte