Está en la página 1de 425
FUNDAMENTOS ze , PROGRAMACION Diagramas de flujo, Diagramas N-S, Pseudocddigo y Java fy Alfgomega Fundamentos de Programacion Diagramas de flujo, Diagramas N-S, Pseudocédigo y Java José Alfredo Jiménez Murillo Eréndira Miriam Jiménez Herndndez Laura Nelly Alvarado Zamora Ad Alfaomega [Buenos Aires * Bogotd * México DF # Santiago de Chile Datos catalograticos Gerente editorial: Jiménez, José Alfredo; Jiménez, Bréndira ‘Marcelo Grillo Giannetto y Alvarado, Laura gillo @alfaorncga com.mx Fancanidas de cia Diagramas de flujo, Diagramas N-S, aii Poevdocsdigoy inva Gerardo Gonzélee Nutiee geoazalez@ alfaumeva com.mx Alfaomega Grupo Editor, S.A. de C.V., México ISBN: 978-607-622-202-7 Fommato: 17 x 23 em Paginas: 432 Fundamentos de programacién. Diagramas de flujo, Diagramas N-S, Pseudocédigo y Java José Alfredo Jiménez. Murillo, Eréndira Miriam Jiménez Herniindez y Laura Nelly Alvarado Zamora, Derechos reservados @Alfaomega Grupo Editor, S.A. de C. V., México, Primera edicién: Alfaomega Grupo Editor, México, octubre 2014 © 2015 Alfomega Grupo Editor, 8.4. de C.V. Pitégoras 1139, Col. Del Valle, 03100, México D.F. ‘Miembro de la Camara Nacional de Ta Industria Editorial Mexicana Registro No, 2317 Pag. Web: httpu/mww.alfaomega.com.imx E-mail: atencionalcliente@alfaomega.com.mx ISBN: 978.607-622.202-7 Derechos reservados: Esta obra es propiedad intelectual de sus autores y los derechos de pablicacin en lengua espafiola han sido legalmente transferidos al editor. Prohibida su reproduccién parcial o total por cualquier medio sin permiso por escrito del propictario de los derechos del copyright. NOTA IMPORTANTE: La informacién contenida en esta obra ticne un fin exclusivamente didléctico y, por lo tante, no esta previsto su aprovechamiento a nivel profesional o industrial. Las indicaciones tgonicas y programas incluidos, han sido elaborados con gran cuidado por los autores y reproducidos bajo estrictas normas de control, ALFAOMEGA GRUPO EDITOR, S.A. de C.V. no serd juridicamente responsable por: errores u omisiones; dafios y perjuicios que se pudieran attibuir al uso de la informacién comprendida en este libro, ni por Ta utilizacién indebida que pudiera darsele. Impreso en México, Printed in Mexico. Empresas del grupo: ‘México: Alfucmegs Grupo Editr,S.A_ de C-V.~ Pitigoras 1139,Col. De Valle, México,D F.~ CP. 03100, Tel. (52-55) 5575-5022 — Fax: (52-55) 5575-2420 / 2490. Sin costo: 01-800-020-4396 E-mail: alencionalciente@alfaomega.com mx Colombia: Alfsomega Colombiana S.A. Calle 62 No. 20-46, Barrio Sen Luis, Bogoti, Colombia, “Tels: (97-1) 7450102 / 210-0415 ~ E-mail: chiente@altaomega.com.co Chile: Alfacmega Grupo Editor, SA.~ Av. Providencia 1443. Oficins 24, Santiago, Chile Tel. (56-2) 2235-4248 ~ Fax: (56-2) 2235-5786 — E-mail: agcehile@alfaoenega.cl Argentina: Altaomega Grupo Editor Argentino, S.A. Paraguay 1207 PB.OF 11, CP. 1057, Buenos Aires, Argentina, Tel Fax: (54-11) 4811-4887 y aX) 7183 — E-mail: ventas @alfnomegaoditorcom ar Para mis hijos: Eren, Pao y Marcelo, Por su apoyo y caro, José Alfredo A mis papas por ayudarme y darme un gran ejemplo. A mi mamd por motivarme para alcanzar mis metas. A Pepe por su amory apoyo. Eréndira Miriam Al null pointer asigment, mi primer motivador a discernir en el drea de la programacién. A Andy y Axel, mis entrenadores de paciencia. Los amo, Laura Nelly Mensaje del editor Una de las convicciones fandamentales de Alfuomega Grupo Editor es que los conocimientos son esen- ciales en el desempenio profesional, ya que sin ellos es imposible adquirir las habilidades, las desttezas y las actitudes necesarias para competi en el mercado laboral. El continue avance en la ciencia y la tecnologia demanda la actualizacién constante en estos conocimientos. Alfaomege Grupo Editor tiene como misién brindar a los estudiantes y a los profesionales textos actualizados escritos por especialistas destacados en su campo y que se encuentran enmarcados con una estructura didéctica fundamentada en bases pedagégicas que favorecen el aprendizaje y facilican su uili- zacién y aplicacién en la vida diaria. Consciente de las exigencias del entorno actual, Alfaomega Grupo Editor oftece complementos 2 este medio impreso a través de materiales adicionales en una pagina web que coadyuvardn, junto con 1 presente libro, a complementar y desarrollar las competencias necesarias que una profesién determinada requiera para responder a estas demandas. Esta obra busca desarrollar la légica de programacién del estudiante usando diferentes maneras de representar los algoritmos y presentando interesantes y variados problemas resueltos y para resolver, que ilustran los conceptos revisados. FUNDAMENTOS NF FROGRAMACION ATFAOMEGA Acerca de los autores José Alfredo Jiménez Murillo Obtuvo al titulo de Ingenicro Industrial Mecénico en Disco de Manufactura en el Insticuto Tecnolégica de Morelia. Después Obtuvo el grado de Maestsfa en Ciencias en Cém- puto Aplicado en el Centro de Estadistica y Céleulo (CEC) del Colegio de Postgraduados (CP), en Montecillo Estado de Méxi- co, en donde recibié un reconocimiento por su trayectoria acadé mica en este centro de investigaciéa, Posteriormente obruvo una segunda Maestria en Ciencias, en la Ensefianza de las Ciencias en el area de Matematicas en el Centro Interdisciplinario de Investigacién y Docencia en Educa- ci6n Técnica (CIIDET) de la Ciudad de Queréraro Qro. Méx., en donde le fue entregado un reconocimiento por el mejor pro- media de la generacién. Es autor del libra “Mateméticas para la computacién” de la Ediorial Alfaomega. Eréndira Miriam Jiménez Hernandez Nacié en Tlaxcala México, en 1987. A los 16 afios de edad gané medalla de bronce en la 9* Olimpiada Mexicana de Informiti- ca. Como parte de su formacién académica obtuvo el titulo de Ingeniera en Sistemas Computacionales con mencién honorifica en el Insticuto Tecnoldgico de Morelia y el grado de Maestra en Ciencias de la Computacién en el Centro de Investigacién en Computacién del Instituto Policécnico Nacional (IPN). Actual- mente realiza sus estudios de Doctorado en Ciencia ¢ Ingenieria de Ia Compuracién en la Universidad Nacional Auténoma de México (UNAM). Eunpaseentos ne mrocaaMtacion Atiouncs viii Acerca de los autores Laura Nelly Alvarado Zamora De origen Michoacano, nacida en la ciudad de Morelia. Realizé sus estudios de Licenciada en Informatica y se gradué con men- cién honorifica en el Instituto Tecnolégico de Morelia. Obtuvo el grado de Macstra en Administracién con Orien- tacién a los Sistemas por la Universidad Michoacana de San Ni- colds de Hidalgo (UMSNH) Inicié como desarrolladora independiente y desde 1997 se dedica ala docencia en el drea de la programacién. Aumwoucs Jnctnez, Jnstnz, Atvanano Contenido Antes de comenzar a leer xi Introduccién xii Capitulo 1. Conceptos bisicos Capfuulo 3. Introduccién a la programacin 1.1 Introduccién........222 a nr oC aoe. ee 3 32. Lenguaje de programacin Java... 86 te al ws 1 3.2.1 Caractstaticas del Lenguaje Java... 86 BOAIERE sr: ; 3.3. Entornos de desarrollo para Java .... 87 15 _Lenguyje de programas 7 33.1 NetBeans IDE........ : 87 LG Progam 8 3.4 Traduccién de un programa. . 88 1.7 Programacién ame 8 3.5 Bjecucién de un programa......... 38. 1.8 Paradigma de programacién ....-.. 9 3.6 Estructura bésica de un programa ... 93 UD. | Rae o.n0 3.7 Elementos del lenguaje Java. 94 1.10 Compiladores ¢ imeérpretes ... 321 Cauca 94 EAL, Eisele so 3.7.2. Tipos primitivos de variables... 94 1.12 Consola de linea de comandos...... 14 3.7.3 Cadenas de caracteres 96 113° Resumen.....eeeeceeeee seveee 15-374 Definicisn de variables 96 196 Problems. 16 3.7.5. Identificadores constantes . - 98 3.7.6 Operadores . 98 Caplenlo 2..-Algoritmos 3.8 Salida de datos... = 101 2% Farpincdin 24 3.9 Lectura de datos ... - 107 22 Resolucién de problemas 3.10 Conversion de tipo de daros ....... 108 de programacion ........ . 24 3.11 Clase Mach . ud 2.2.1. Anilisis de problema S88 YE 3.12. mores en tiempo de ejecucién «117 2.3. Representacién del algoritmo....... 26 ay eeitee: cess 2.3.1 Descripcién narrada 26 nobles 2.3.2 Diagrama de fujo wees 8 id Contre 2.3.3 Pseudocédigo .......... - 6 ‘PH ne Comralde Sule: 2.3.4 Diagramas Nassi-Shneiderman (N-S) 51 4.1. Introduecién. 130 2A Disefio dealgoritmos defunciones 58 4.2. ‘Eseructuras sclectivas: simple, 2.4.1 Fanciones en compuracién . . 59 doble y niltiple 130 24.2 Funciones rccursivas seccss 6} 4.2.1 Instruccién selectiva simple (if)... 130 243 Procedimientos ......... + 67 4.2.2 Instruccién selectiva doble (if-else). . 131 2.5 Resumen. 4.2.3 Insuuccién condicional miluple 2.6 Problemas (witch) : = 136 FONpAMRNTOs DF ROGRAMACION Armounca x Contenida 4.3 Estructurasiterativas: mientras, 6.7 Sobrecarga de métodos .... += 266 hacer-mientras, desde 139 68 Herencia . + 267 4.3.1, Mientras (while) . $139 6.9 Otros conceptos del paradigma dela 4.3.2 Hacer-mientras (do-while)...... 143 programacién oriencada a objetos . . . 270 433. Desde (E02) .cc cece 1146 6.10. Resumen... sees 270 44 Ciclos anidados .. Denes 149 GIL Problemas so... cscs csc £270 4.5. Manipulacién de cadenas. 1154 4.6 Disefio e implementacién de fanciones Capitulo 7. Introduccién a las Interfaces y métodos . : 158 grificas de usuario Go), Runcionetin vee 19974 ntroduccidn . cose 286 4.6.2. Méodos ae 1163 re 7.2 Definicién y evolucién de ls 3. Recursividad - SII ye nei 86 47° Resumen 181 cctaces BAe : 73 Proceso de desarollo de sofware con Interfaces grificas. ‘ 7A Paquetes grificos........+ : Capieile'5, Arsepled 7.5 Cuadros de didlogo . we 48 Problemas. . 182 5.1 . 196 7.6 Etiquetas... . 5.2 7.7 Cuadros de texto . conceptos bisicos, operaciones 7.8 Botones.. yapli ceeeeess 196 7.9 Un-vistazo a JTextArea y 5.3 Arreglos bidimensionales: ‘JScrollPane . . 311 conceptos bisicos, operaciones 7.10 Resumen 314 y aplicaciones. - . 208 7.11 Problemas .317 5.3.1. Anreglos irregulares 216 5.3.2. Arreglos como argumentos y Respuestas a problemas nones parimetros . 29 ony 5.4 Atreglos mulidimensionales: (pan ‘ficos 259 ae Basico operaciones 2. Algoritmos. conse SD omega +232 Introduccién a la programacién. =+ 347 5.5 Resumen e + 234 es ee pee 335 & Control de flujo ree 350 ~ = Nise 3S Arreglos. 0... eeeeeeceees .. 367 Capitulo 6. Introduccién a la programacién 6 Introduestin als programacién ‘odeitnds Objetoa orientada a objetos. - 381 7 Introduccidn alas interfaces grficas 6.1 Introduecién..... - 246 de usuario . -397 6.2. Origenes de la programacién orientada a objetos. . =-247 — Apéndices 6.3. Beneficios dela programacién orientada A. Instalacién de NetBeans IDE 409 a objetos 248 B Sintaxis para importar una dase de 64 Clases .. 248, otro paquete .... 0... eee 2 Ald 65 Méodos = 252 C Instrucciones para agregar la 6.6 Objetos . +255 biblioteca Absolute Layout ..........- 416 ATROMEGA Jieez, JIMENEZ, ALVARADO Antes de comenzar a leer En este libro se utiliza la tipografia Courier en los casos en que se hace referencia a eédigo 0 acciones que se han de realizar en Ia computadora, ya sea en un ejemplo o cuando se refiere a alguna funcién mencio- nada en el texto. También se usa para indicar mends de programas, teclas, URLs. grupos de noticias 0 direcciones de corteos electrénicos. Material de apoyo en la web Para tener acceso al material de la pagina web de apoyo del libro: 1, Ira la pagina http:/Mibroweb alfaomega.com.mx 2. tea lasecl'bn de catalogo y seleccionar la imagen de la portada del libro, al dar doble dlic sobre ella, tended acceso al material descargable Estimado profesor: Si desea acceder a los contenidos exclusivos para docentes por favor contacte al representante de la editorial que lo suele visitar 0 envienos un correo electrSnico a webmaster@alfaomega. com.mx FUNDAMENTOS DE FROGRAMACION ALAOMEGA Introduccién El indice de reprobacién en las asignaruras que permiten a los alumnos aprender a programar ca un len- guaje determinado es muy alto, peto no porque sea dificil aprender un lenguaje de programacién o porque sea complicado codificar un algoritmo, si€") porque las personas tienen problemas en légica, les cuesta mucho trabajo crear el algoritmo que permita resolver el problema. Quieren imprimir el resultado antes de calcularlo, o quieren calcularlo antes de tener todos los datos para realizar dicho célculo. Esperan que la computadora les adivine el pensamiento y se desesperan porque sus programas no realizan lo que se espera de ellos. La verdad es que el principal problema es que no plasman en sus programas las instrucciones necesarias para resolver el problema, bien porque no conocen la infinidad de maneras en que se puede usar tuna inscruccién para que la computadora realice Io que se quiera, 0 bien porque el orden de las inscru res no ¢s el adecuado, En ambos casos el problema es de Iégica porque no es suficiente saber que existen instrucciones para leer e imprimir informacién, para ejecurar un bloque de inscrucciones varias veces, para seleccionar el conjunto de sentencias sc ejecutardn cn determinado momento si se cumple una cierta con- dicién. Si las instrucciones no se usan adecuadamente en el momento indicado de nada sirven, o si no se combinan con un poco de imaginacién por parte de la persona que las esté utilizando para adaptaclas a las diferentes situaciones que se presenten, entonces no tiene ninguna ventaja conocerlas si no se saben usar. Esta obra esté pensada para ayudar alas personas que comienzan una carrera en el drea de la computa- cién, Busca desarrollar la légica de programacién del estudiante usando diferentes maneras de representar los algoritmos y resolviendo problemas interesantes para ilustrar y explicar cada uno de los conceptos 0 instrucciones de los lenguajes de programacién, tiene problemas que obligarsn a la persona a pensar y ser creativa para resolverlos. El libro esta integrado por siete unidades. En la primera unidad “Concepto bisicos” se abordan los conceptos y definiciones de los términas més usados en la programacién, entre los cuales se pueden mencionar: computadora, usuario, programa, programacién, compilador y su diferencia con intérprete, lenguaje de programacién, paradigma de programacién, algoritmo, entre otros. El objetivo de esta unidad es familiasizar al lector con las palabras y conceptos propios del dea. La segunda unidad “Algoritmos” tiene como finalidad el andlisis de problemas y la representacién de su soluciéa por medio de lenguajes algorfunicos. Se representan algoriumos por medio de descrip- cién narrada, diagramas de flujo, diagramas N-S, y pseudocddigo con sus ventajas y desventajas de cada tuna de estas formas de representacién. ‘También en esta segunda unidad se ve la representacisn de instruc- ciones mateméticas usando para ello operadores aritméticos bésicos y para finalizar se resuelven problemas con ayuda de funciones y procedimientos. Todas las actividades de la unidad se realizan sin apegarse a nin- glin lenguaje de programacién, pero tratando de que los algoritmas aqui representados se puedan codificar en Ja mayoria de los lenguajes de programacién conocidos. FUNDAMENTOS NF FROGRAMACION AtROMEGA xiv Introduccién En la unidad tres “Introduccién a la programacién’, se explica la forma de instalar el compilador Java, puesto que se utilizaré este lenguaje de programacién para el diseio de programas en este libro de texto. Se analiza la estructura bésica de un programa en Java. La manera de leer datos de teclado y Ia forma de imprimir la informacién en modo consola. Se codifican en Java ecuaciones matemédticas, se estudian los diferentes tipos de datos y se resuelven problemas secuenciales en Java. En la unidad cuatto “Control de flujo” se estudian y analizan las estructuras de control que permiten a la computadora tomar decisiones y con ello elegir la ruta que se debe seguir en el momento de la ejecu- cién de un programa, en funcién de las caracteristicas del problema, los datos conocidos y la presentacién del resultado. Se estudian tambien las instrucciones que permiten ejecutar un bloque de sentencias varias veces. Ademds en esta unidad se trata a profundidad el uso de métodos, como una forma de segmentar el programa en pequefies subprogramas que realizan una actividad deverminada, pero que en conjunto y de forma organizada, son parte de un sistema computacional més complejo. La unidad cinco “Arreglos” presenta las propiedades y restricciones de estructuras que permiten guar dar y procesar gran cantidad informacién, aprovechando la memoria de la computadora, para manipular los datos contenidas en vectores, matrices y arreglos multidimensionales La unidad seis “Introduccién a la programacién orientada a objetos” tiene como finalidad el intro- duciral alumno en el paradigma de programacién mds utilizada actualmente como lo ¢s la programacién orientada a objetos. Se explican los diferentes elementos de esce paradigma come son: objeto, clase, méto~ do, herencia, sobrecarga de métodos, entre otras. En la unidad siete “Introduccién a las interfaces grificas de usuario” se aborda de forma breve la pro- ‘gramaci6n grifica con la finalidad de que el alumno desarrolle programas mas amigables usando diferentes elementos grificos como son: cuadres de didlogo, etiquetas, campos de texto y botones. El objetivo de este libro es que las personas que incursionan en el érea de la computacién aprendan 2 programar, se utiliza el Ienguaje Java como una herramienta para observar los resultados obtenidos al codificar algoritmos que resuelven un problema determinado, pero la finalidad no es aprender Java sino aprender a programar independientemente del lenguaje, pero si ademas de ello, se aprende un poco del lenguaje més utilizado accualmente, los resultados serin doblemente satisfactorios. ATROMEGA Jowever, Janexe7, ArvARADO CONCEPTOS BASICOS I El hardware es lo que hace a una méquina répida; el sofitvare es lo que hhace que una méquina rdpida se vuelya lenta. Craig Bruce Competencia de la unidad Comprender, dominar, diferenciar y relacionar los conceptos bisicos, de la programacién. Competencias especificas + Reconacery diferencias las conceptas basicos més importantes, entre ellos: computadora, usuario, software, hardware, sistema operativo, algoritmo, lenguaje, programa, programacién, paradigmas de programacién, ejecutables, compiladores e intérpretes. + Conocer el entorno de un lenguaje de programacién, + Ilustrar la relaci6n que existe entze los diferentes conceptos basicos de la programacién por medio de mapas conceptuales, mapas mentales y cuadros sindpticos. Conceptos basicos Contenido 1.1. Introduccién, Paradigma de programacién. Computadora. Editores de texto. Clasificacién del software. |. Compiladores e intérpretes. 1.4, Algoritmo. « Ejecutables, 1.5. Lenguaje de programacién, . Consola de linea de comandos. 1.6. Programa, 1.7. Programacién, Resumen. . Problemas. FUNDAMENTOS NE PROGRAMACION ALROMEGA 2 Conceptos bisicas 1.1 Introduccién AA principios de la década de los serenta las computadoras eran grandes, costosas y solamente las podfan adquirir grandes empresas 0 universidades. Los usuarios escribian sus programas en equipos fuera de linea como perforadoras de tarjetas 0 de cintas de papel. Algunas veces las computadaras estaban insvaladas en cl campus principal de la universidad y los departamentos académicos o instituciones mds pequefias a las cuales apoyaba la universidad, solamente contaban con la perforadora de tarjetas en donde se perforaban las instrucciones de sus programas, las indicaciones iniciales y los datos. Posteriormente, una persona llevaba pequefios paquetes correspondientes a cada uno de los programas al lugar en donde estaban las computadoras para leer la informacibn de las tarjetas: dicha operaci6n se realizaba por medio de un lector de tarjetas que mandaba la informacién del programa a la memoria de la computadora, posteriormente se compilaba el programa y si no tenfa errores se ejecucaha. Por lo general, todos los programas tenfan algiin tipo de error que no permitfa correr el programa, de tal manera que la persona encargada de llevar los programas, represaba con los mismos en hojas de papel, indicando el tipo de error marcada en Ia compi- lacién. Posteriormente se perforaban nuevamente otro conjunto de tarjetas para cortegir el programa que ya estaba almacenado en el disco de la computadora, as enviahan nuevamente y se hacian las correcciones. Estas ‘nuevas tarjetas por lo regular pesmitian quitarle algunos errores, pero no todos los que tenia el programa, de tal manera que la actividad de perforacién, transportacién y leccura se realizaba varias veces antes de ver los resultados de la ejecucién del programa. Era muy comin que transcurriera mucho tiempo antes de ver tun programa funcionando. Los lenguajes més utilizados en esa década eran Basic y Fortran IV. ‘A principios de la década de los ochentas salieron ls primeras computadoras personales; marcas upi- «as de ese tiempo fueron “Radio Shack” y “Apple”. Estas computadoras eran del tamafio de las computa- doras de escritorio que ya se conacen acrualmente, relativamente baratas y los dispositivos de entrada mas comunes eran el teclado, la unidad de disco magnético de 5 ¥4 pulgadas de didmetro y el casete (cinta mag- nética para leer misica en esa década), posteriormente el disco de cinco pulgadas seria sustituida por discos de tres y media pulgadas més pequefios y con mayor capacidad de almacenamiento. Las computadoras no tenian mucha capacidad en memoria principal como las de ahora, pero permitian correr los programas. Los lenguajes mas comunes eran Basic y Pascal; aunque todavia se seguian utilizando las grandes ‘maquinas en las empresas que tenian mayores recursos econémicos, como las computadoras In 4341 ¢ tox. 370 que permican Hevar la adminiscracién principalmente en el lenguaje Cobol y PL. Realmente se tenia que trabajar mucho en ese tiempo para obtener los resultados que ahora se consiguen de una manera ‘muy sencilla; por ejemplo, para hacer una gréfica, dicha figura se construfa a base de asteriscos y otro tipo de caracteres. Las computadoras personales permitieron que a fines de esta década ya se contara con los primeros editores de texto, graficadores y hojas de cflonlo. En esta década y buena parte de la década de los noventa dl sistema operative més usado fue el MS-DOS. ‘A mediados de los naventas y los primetos anos de este nuevo milenio |2s computadoras tuvieron tun gran desarrollo en la capacidad de almacenaje, velocidad de procesamiento y fueron cada vex més compactas hasta llegar a las que hey se conocen como laptops. Surgieron nuevos dispositivos de almacena- miento secundario como la Usp. Intemet se convieste en la forma de comunicacién mds rapida, efectiva y econémica. La diversidad de sofware para llevar a cabo todo tipo de tareas en distintas dreas de la ciencia, la industria, la educaci6a y el comercio estd disponible. Los sistemas operatives multitarea permiten que las computadoras puedan realizar varias actividades al mismo tiempo y los sistemas multiusuario permiten aprovechar los recursos de la computadora por varios usuarios. Los lenguajes més utilizados fiieron: C, C++ y Java. Los sistemas operatives més usados fueron Windows en sus diferentes versiones, Mac Os, Linux y Unis. ATROMEGA Jieez, JIMENEZ, ALVARADO Computadora 3 En estos primeros aftos de la segunda década del siglo veintiuno, la comunicacién juega un papel importante cn las actividades y forma de vida de la sociedad, surgen los teléfonos méviles, el ipod, las cimaras fotogrificas, cémaras de video, robots que utilizan la computacién y el safiware para realizar in- finidad de actividades. El texto, graficas, fotografias y videos son elementos ficilmente transportables por ‘medio del correo electronico y las redes sociales de tal manera que la computacin y la computadora estén inmersas en todo tipo de actividades a desarrollar. Los sistemas operatives més usados son mulicarea y ‘multiusuario, el lenguaje de programacién més utilizado para desarrollar software web es Java juntamence con el lenguaje de programacién C++. En la computacién como en otras Areas de la ciencia es conveniente definir primeramente los con- ceptos mas importantes, la diferencia que existe entre ellos, las similirudes y a relacién que existe entre dichos conceptos. Esto permitird comprender mejor la informacién y evitard dar un significado erréneo al material que se aborda en esta obra, Por ‘al motivo en la primera unidad se definen algunas de los con- ceptos mds importantes necesarios en la computacién. 1.2 Computadora El ordenador, la méquina de procesamiento de datos o més comtinmente llamada computadora, es una maquina electrdnica que recibe datos de un medio de entrada, procesa dichos davos de una manera ripida ¥yexacta, para posteriormente enviar la informacin resulcante a un medio de salida. La estructura general de una computadora se ilustra por medio del siguiente diagrama: Medio de Computadora Medio de entrada [>| ni [| salida Medios de entrada, Son las herramientas utilizadas para ingresar todo tipo de datos a la compuradora. Los més comunes son: el teclado, ratén, pantalla tictil, cb, pvp, use, TouchPad (sistema usado por las computadoras portitiles), esciner, joystick, micréfonos, entre otros. Medias de salida. Los dispositivos de salida son el equipo con el cual se puede tener la informacién de la computadora que resulta de un procesamiento de datos o bien de buscar informacién que esti almace- nada en la computadora y obtener un reporte de ella organizada en cierto orden. Ejemplo de dispositivos de salida son: monitor, impresora, USB, CD, DvD, ploter, proyector, bocinas, entre otros. Hay dispesitivos que se utilizan como medios de entrada y también como medios de salida; es decir son mixtos, entre ellos se tienen: cb, pvp, usB, médem, pantalla téctl, router, entre otros. Para la entrada, procesamiento y salida de informacién en una computadora es necesario hardware (equipo) ¥y programas (sofitware) que permitan el reconocimiento, manipulacién y la emisién de la informacién en forma l6gica y ordenada que pueda ser encendida por el usuario. Software. Son los programas que contienen las instrucciones que permiten el funcionamiento del hardware. Son indicaciones intangibles de una computadora. Es el conjunto de programas y procedimien- tos necesarios para que lz computadora lleve a cabo alguna tarca especifica. Hardware. Son las partes tangibles de un sistema computacional (computadora, robot, cémara foro- gréfica, teléfono mévil, etcétera.) como: teclado, pantalla, mouse, impresora, cables, conectores, dispositi- vos de almacenamiento. Todo aquello que se puede tocar y que sea parte de un sistema computacional es considerado como hardware. Fowpanmtos nr PROGRAMACION Atmounca 4 Conceptos bisiens Usnario, is una persona o sujeto que utiliza una computadora, sistema operativo 0 cualquier sistema, computacional. También puede ser una maquina que hace uso de los recursos del sistema para manda, recibir 0 procesar informacién. 1.3. Clasificacién del software Actualmente existe sofiware que se aplica en la medicina, administraciéa, ingenieria, publicidad, disefio, educacidn, entre otras éreas. Por lo tanto, se puede encontrar software especifico de un rea de la ciencia, © incluso dentro de esa drea se puede encontrar una subclasificacién ya que se tiene sofiware para cardiologia, oncologia o ginecologta. La mayorla del software es desactollado por compaitias que lo venden y obtienen recursoseconémicos, pero también existe sofiwarelibre (freeware) en dondeno se paga ninguna cantidad por su. uso, 0 bien sofiware en donde solamente se paga una pequefia parte (shareware), con lo cual es posible clasifcar el software de acuerdo a su costo monetario. Sin embargo, todos ellos se pueden agrupar en dos grandes grupos: Software de sistemasy Software de aplicacién 4) Software de sistemas. Son aquellos programas que permiten administrar los recursos de la com puradore. Facilitan la comunicacién entre la computadora y el usuario. Es el sistema operative que permite comunicarse al usuario con la computadora. Se pueden clasificar como: + Monouswario. Son aquellos sistemas operativos que permiten la comunicacién entre el usuario yuna sola computadora. Se clasifican en: > Monousnario monotarea. Sistema disehado para que el usuario leve a cabo una sola tarea 0 proceso a la vez (MS-DS, sistema operativo (so) de la computadora portitil Palm). > Monousuarios multicarea. En este caso el usuario puede llevar a cabo varias rateas a la ver. Es el sistema operativo de mayor uso acrualmente, Windows y MacOS son ejemplos tipicos del sistema monousuario multitarea ya que en ambos casos el usuario podria estar escribien- do un documento en un editor de texto al mismo tiempo que baja un video de Internet 0 imprimiendo una gréfica en un plate. + Mulsiusuarios. Sistemas operativos que permiren la comunicacién, administracién y manejo de los recursos del usuario con varias computadoras. En este sistema operativo dos 0 més usuarios pueden estar utilizando un programa al mismo tiempo, de tal manera que son multiusaarios y multitareas. Linux, Unix, Windows NT y al sistema operativo del servidor son ejemplos de estos sistemas operativas. b) Softrware de aplicacién. Son programas para llevar a cabo tateas especificas como: edicién de tex- 1ws, graficacién, cilculos, disefos, simulacién, entre otras tareas. Se puede clasificar en: + Software de uso general. Bs aquel que se puede utilizar para diversas aplicaciones personales, Gientificas, empresariales, administtativas y de disefio. Los edicotes de texto, hojas de cdleulo, disefio asistido por computadora (AD) y manejadores de bases de datos, son ejemplo de este software de uso general. Se ajustan a las necesidades de cualquier usuario y este software se pucde conseguir en el mercado. + Software de uso especifico. Bsté disefiado especificamente para taress particulares de una per- sona, empresa, organizacién o instirucién, como el control de inventarios, procesamiento de némina, simulacién de un proceso y resolucién de problemas particulates. Se disefia y ATROMEGA Jieez, JIMENEZ, ALVARADO Clasificacién del software 5 desarrolla de acuerdo a las necesidades particulares de un usuario especifico. Generalmente se encarga el disefio y desarrollo de este tipo de software a personas © compafias desarrolladoras de software EI Sistema operative (so). Es el programa cuya finalidad es organizar el trabajo de la computadora. El sistema operativo permite evar a cabo tarcas bisicas para el buen funcionamicnto de la computadora # Reconacer las sefales de entrada de algiin dispositive (teclado, mouse, tacto, disco, US, etcétera) + Enviar sefiales de salida a diferentes elementos del sistema (monitor, disco, impresora, teléfono meévil, pléter, etoétera) + Administrar Ia informacién guardada en carpetas y archivos de la computadora (copiar archi- vos, borrar archivos, crear nuevas carpetas, cambios de nombre de archivos, entre otras), + Controlar y mantener la comunicacidn con los equipos periféricos (teclado, monitor, impreso- ra, disco duro, escéner, ratén, Use etcétera.). + Administrar la memoria de la computadora. Esto permite que ua sofiware funcione en dos computadoras que tienen diferentes memorias y capacidad de almacenamicnto. + Diagnosticar el fancionamiento del sofware. Indica el estado de los programas asi como detec- ‘ar mal funcionamiento de los mismos. + Controlar la sccuencia en que se deben Ievar a cabo los procesos y tareas a realizar. Los sistemas operativos han evolucionado mucho. Existen diferentes caracteristicas ventajas y desven- tajas de cada uno de ellos. Lz recomendacién de un sistema operativo depende de los recursos con que cuenta la computadora, las aplicaciones a usarse y cl nfimero de usuarios. A continuacién se presenta una lista de los sistemas operativos mas destacados del area de la computacién. MS-DOS. Sclié a principios de la década de los afios 80 del siglo pasado, fue desartollado por Mi- crosoft y se hizo popular debido a la gran cantidad de software que se podia ejecutar con él, al procesador Intel y a su compatibilidad con tx Windows. Microsoft crea Windows 3.0 en 1990 con la finalidad de tener una interfaz grifica mis amigable con {conos que sepresencan las diferentes operaciones que se pueden ejecutar con un solo click doble click apoyndose como apuntador ejecutor al mouse. Esto permitié un manejo y administracién de los archivos amigable y fécil, porque no era necesatio que el usuario tuviera que recordar las instrucciones y lasintaxis de las mismas para ejecutarlas. Posteriormente Microsoft crea otras versiones de este SO como son Windows 3.1, Windows 95, Windows Vista, Windows XP, Windows 7 y Windows 8 que tienen la ‘misma filosoffa pero con una mayor diversidad de operaciones. 08/2. 18m desarroll6 el OS/2. con una interfaz. muy buena y facil de manejar, pero que no tuvo mu- cha suerte debido al poco software y aplicaciones que se pueden cjecutar con este sistema operativo, ya que Ia mayoria del software del mercado ha sido monopolizado por Microsoft. Mac O8. Este sistema operativo es tan amigable para el usuario, que cualquier persona puede apren- der a utilizarlo en poco tiempo aiin sin tener antecedentes de otros sistemas operativos. Fue desarrollado por Apple Computes, Inc. y es la base de la popularidad de las computadoras Macintosh. Windows NT. Microsof: desarrolla también el so Windows NT que permite trabajar con un soft- ware al mismo tiempo en una red de usuarios aprovechando de esa manera los beneficios de Windows cn redes de computadoras. Especialmente recomendado para estaciones de trabajo y servidores en los Funpamnros ne PRoGRAMACION Aumounca 6 Conceptos bisicos cuales se necesita un maximo de rendimiento. Sistema seguro mediante un sistema de acceso a la red que utiliza una base de datos Hamada sam: (Security Account Manager) para guardar la informacién de seguridad. La primera versién de NT fue lanzada en 1993, pero en la familia de los sistemas operativos Windows NT también estin Windows Visca, Windows XP, Windows Server 2003, Windows Server 2008 y Windows 7. Unix. Bs un sistema operative multiusuario y multitarea que corre en diferentes computadoras: per- sonales, minicomputadoras, supercomputadoras ¥ redes de computadoras. Fue desarrollado por los labo- ratorios Bell de AT&T en 1969 y es un so que se usa con frecuencia en la red Internet, es portable ya que permite la instalaci6n del mismo en diferentes computadoras. Linux. Fue lanzado al mercado a principios de la década de los noventas tomando en cuenta las sugerencias de programadores. Linux estd escrito en el lenguaje de programacién C, ademés de pequetias secciones de cédigo en lenguaje ensamblador. Linux es portable y funciona en sistemas muy diversos como: computadoras personales, redes, iPAD, teléfonos méviles, entre otros. Es ripido, seguro, eficaz yy fable sin que una aplicacién pueda causar problemas a las otras. Es multitarea ya que se pueden estar ejecutando varias tareas a la ver y no se tendré que esperar a que termine una cosa para hacer otra. Es ‘mulciusuario ya que varias personas pueden usar la misma computadora a la vez, compartiendo el m croprocesador (imprimiendo, escrihiendo, jugando, navegando en Internet). Es libre, es decir; no tiene ningtin costo. 1.4 Algoritmo El programador de computadoras es una persona que resuelve problemas de una manera rigurosa y siste- mitica, usando como herramienta principal a la computadora. EI programador establece la secuencia de pasos que debe seguir la compuradora para resolver un problema, esta secuencia de pasos recibe el nombre de algoritma. Fxisten varias definiciones de algoritmo, a continuacién se presentan algunas de ellas: 44) Conjunto finito de operaciones a realizar para resolver un determinado problema. ) Conjunto de operaciones y pracedimientos que dehen seguirse para resolver un problema. ) Conjunto finito de pasos, precisos y ordenados para resolver un problema. La palabra finito es importante ya que el algoritmo debe estar integrado por un niimero razonable de pasos; solamente los necesarios. Precisos, porque cada instruccién debe ser clara y concisa. Ordenados porque los pasos se orgenizan de una manera légica y ordenada. Los algoritmos se pueden representar por medio de frases que deseriben cada uno de los pasos que integran el algoritmo. Ejemplo. Algoritmo para ir ala escuela Operacién (Paso) 5 Mevisto Inicio 6 Medesayuno 1 Me despierto 7 Melavo los dientes 2 Melevanto dela cama 8 Tomo el transporte 3 Medesvisto 9 Alllegar a la escuela me bajo del transporte 4 Mebafo Fin ATROMEGA Jieez, JIMENEZ, ALVARADO Lenguaje de programaci6n # Algoritmo para comprar zapatos Operacién (Paso) 5 Sime quedan y me gustan entonces Los compro Inicio 6 Fin mientras No he comprado zapatos 7 Meentregan los zapatos 2 Mientras no he comprado zapatos hacer Fin Inicio mientras 3 Selecciono los zapatos 4 Melos prucbo ‘Todo algoritmo comicnza con un “Inicio” y termina con un “Fin”, En cl algoritmo para ir a la es- cuela cada una de las instrucciones se ejecuta tina sola vez. Sin embargo en el algoritmo para comprar zapatos se observa que las operaciones de las lineas 3, 4 y 5 se ejecucan varias veces, hasta que se compren los zapatos y deben encerrarse entre las palabras “/nicio mientras” y “Fin mientras” se dice que este algo- ritmo contiene un ciclo marcado claramente por la instruccién “Mientras”, Siempre que se requiera de la ejecucién de varias operaciones estas estardn dentro de un ciclo perfecramente delimitado. La informacién en Ia linea: “Si me quedan y me gustan entances “Los compro” es una instruccién condicional que tam- bién es caracteristica de los algoritmos computacionales para tomar decisiones. Otra forma de representar algoritmos es por medio de pseudocédigo en donde las instrucciones estén conformadas por palabras en algiin idioma para indicar la accién a realizar y alguna proposicién o expresion matemitica, La instruccién para mandar los mensajes correspondientes de “Aprobado” 0 “Re- probado” en caso de que se cumpla © no que calificacién sea mayor o igual a 70 es: si (calificaci6n>=70) imprimiz ° Aprobado” sino imprimir “Reprobado” Las palabras en negritas (si, imprimir, sino) son parte del pseudocddigo que indican la accién a realizar, la palabra “calificacién” es un identificador o variable cuyo valor determina si se cumple 0 no la condicién. Los mensajes “Aprobado” y “Reprobado” encerrados entre comillas son textos que la com- putadora despliega en caso de que se cumpla o no Ia proposicién. En fin; el pseudocédigo es un lenguaje algoritmico que utiliza palabras de algiin idioma (espafol, inglés, francés, segiin sea el caso) juntamente con expresiones matematicas para representar las operaciones de un algoritmo. ‘Tambign se pueden representar los algoritmos por medio de diagramas de flujo, por medio de Diagra- ‘mas N-S y otras formas de lenguaje algoritmico. Se abundar més al respecto en la unidad 2.de este libro. 1.5 Lenguaje de programacién Un lenguaje es un conjunto de simbolos (o palabras) y métodos para estructurar y combinar dichos sim- bolos. Un lenguaje también recibe el nombre de idioma y como tal consta de todos los simbolos vilidos por dicho lenguaje y los métodos para estructurar correctamente cada una de las palabras, frases y ora- FUNDAMENTOS NE PROGRAMACION ALRROWEGA 8 Conceptos bisicas ciones. Esta clase de lenguaje recibe el nombre de lenguaje natural. Ejemplos de este tipo de lenguajes 0 idiomas son ck Espafiol, Inglés, Francés, eteétera. Lenguajesformales, Existen lenguajes de menor capacidad para simular y modelar lenguajes naturales, tal es el caso de los lenguajes Java, C, Pascal, entre ous; que se utilizan para la comunicacién con las computa- doras. A este tipo de lenguajes se les lama lenguajes formales. Pero también son lenguajes formales aquellos que utilizan simbolos grificos (cuadrados, rombos, rectingulos, circulos, fechas) como sucede en los orga- nigramas y diagramas de flujo, asf mismo lo son aquellos que usan perforaciones de puntos y rayas para la comunicacién como el sistema braille, o bien aquellos que solamente hacen uso de algunas de las palabras de un idioma (Leer, Imprimir, Hacer, Ejecutar, Si, entonces, Mientras, etc.) que permiten indicar los pasos de un algoritmo que seri transformado posteriormente en un programa que entienda la computadora. Lenguaje de programacién, Conjunto de reglas sintécticas y semanticas que pesmiten la comunicacién con una computadora. Los lenguajes formales: Binario, Java, C, Pascal, Basic, etc. son lenguajes de progra- ‘macién que obedecen a un grupo de reglas sinticticas y semdncicas que permiten determinar si una inscruc- ci6n es parte de un lenguaje y la actividad que debers realizar la computadora con determinada instrucci6n. 1.6 Programa Programa. Es un conjunto de instrucciones basadas en un lenguaje de programaci6n que una computa- dora ejecuta para resolver un problema o realizar una funcién especifica. Generalmente los programadores elaboran un algoritmo que contiene los pasos para la solucién de un problema usando alguna forma de representaci6n algorftmica, pero las operaciones de un algoritmo se deben traducir a instrucciones que entienda la computadora, para ello el programador utiliza el editor de texto de un lenguaje determinado. Los programas se deben guardar en algiin dispositive de almace- namiento secundario (Disco, usa) con la finalidad de que se conserve la informacién de dicho programa cuando se apaga la compuradora o se cambia de aplicacién. ‘Al programa escrito por el programador se le llama “programa fuente”, este programa ya lo entiende la computadora pero no lo puede ejecutar hasta que se lleve a cabo la compilaci6a, para determinar que est correctamente escrito. Si al hacer la compilacién se detectan ertores se deberdn corregir, y una vez que no tiene errores ese programa fuente la computadora lo convierte en un “programa objeto” escrito en Tenguaje méquina que puede ejecucar perfectamente la computadora. Ea resumen, para resolver un pro- blema primeramente se representa como algoritmo, después se traduce a un lenguaje de programacién y posteriormente se compila dicho programa usando el compilador del lenguaje seleccionado. 1,7 Programacién Programacién, Es el lenguaje que los programadores usan para comunicar insrucciones a una computa- dora y poder lograr de esa manera que la computadora lleve a cabo alguna actividad. Sistema de escritura para la descripcidn precisa de algoritmos © programas informaticos. Es el proceso de codificar, depurar y mantener al cédigo fuente de programas computacionales. Un programador debe elaborar programas de calidad. En la programacién para que un programa se considete de calidad deberd tener los siguientes factores: + Concise. Los programas deben tener solamente las instrucciones necesarias para resolver un problema especifico de una manera éptima. Esto significa que deben ser lo més pequctios y concretos posibles. ATROMEGA Jieez, JIMENEZ, ALVARADO Paradigma de programacién 9 Claro. Deben ser ficiles de revisar, entender, corregir y actualizar con la finalidad de enrique- cerlos y darles mantenimiento. Eficaz. Los programas deben cumplir el objetivo para dl que fueron creados, en el menor tiem- po posible y utilizando los menores recursos de tiempo y memoria. Portable. Deben poderse ejecutar en diferentes placaformas (hardware 0 software) aquel en que se desarrollé dicho programa. Para programar se requiere del dominio del lenguaje de programacién a utilizar, bases matematicas y sentido comin. 1.8 Paradigma de programacién Es una propuesta tecnolégica adoptada por una comunidad de programadores cuyo nilcleo central es incuestionable en cuanto a que univocamente trata de resolver uno o varios problemas claramente delimi- tados. Los tipos de paradigmas de programacién més comunes son: Imperative o Procedimental. Es el mis comiin de los paradigmas. En este paradigma se le debe indicar ala computadora cada paso a realizar para resolver un problema determinado. Lengua- jes clisicos para este paradigma son: C, Pascal, Basic, Fortran, etcétera. Lagico, Gira en toro al concepto de proposicién y predicado. Consiste en expresar formal- mente problemas complejos y resolverlos mediante la aplicaci6n de hipotesis, reglas de infe- rencia, taucologias y teoremas. Es por esta razén que la programacibn Idgica es atractiva donde la programacién tradicional ha fracasado, Un lenguaje tipico para este paradigma es Prolog. Estructurada, Este paradigma sostiene que todo programa puede ser desarrollado utilizando Gnicamente tres instrucciones: Secuencia, Instruccién condicional ¢ Iteracién (ciclo). Si bien los lenguajes de programacién tienen mayor cantidad de instrucciones, éstas se puede construir a partir de las tres instrucciones citadas, haciendo de esta manera innecesarias inscrucciones como: goto, return, exit sub, entre otras. Lenguajes de programacién que usaban con regulari- dad estas instrucciones eran: Basic y Fortran. Modular. La programacién modular fue creada para resolver problemas mas grandes que la programacién estructurada no puede atacar. Esta basada en el lema “divide y vencerds” que consiste en dividir un programa grande en médulos o subprogramas més pequefios, con el fin de hacerlo més claro y manejable. Los procedimientos y funciones que integran ua programa grande se podrian considerar como médulos aunque no son los tinicos. La combinacién del paradigma estructurado y modular es una forma de programar que todavia usan los desarrolla- dores de software con lenguajes de antano con muy buenos resultados apayandose en lenguajes como: Basic, Pascal, C Cobol y PLI. Programacién Orientada a Objetos (P00). ‘Tiene su origen en el lenguaje para realizar si- mulaciones Simul67, La oo se convirtié en la forma de programacién més usada a finales de los ochenta y principios de los noventa en gran parte al lenguaje C++. Las caracteris- ticas de poo fueron agregadas a varios lenguajes de programacién existentes de esta época como: Ada, Basic, Lisp y Pascal, lo cual llevé a problemas de compatibilidad y en la capacidad de mantenimiento del sofiware. Para evitar este problema se crearon otros lenguajes como FUNDAMENTOS NE PROGRAMACION ALROMEGA 10 Conceptos hisicos Eiffel el cual a su vez fue reemplazado por Java y PHP, en gran parte debido 2 la aparicion de Internet. En la P00 se manejan nuevos conceptos como: clase, herencia, método, evento, mensaje, abstracci6n, encapsulamiento y polimorfismo, que la distinguen de otros paradigmas de programacién. La roo sigue siendo hasta ahora uno de los paradigmas mds usados por los desarrolladores de sofizoare. + En Ja nube. Este paradigma fue propuesto por las grandes compafiias desarrolladoras de sofi- ware enue ellas: Microsoft, Google y Amazon AWS. Es un paradigma que proporciona servi- cios de computacién a través de Internet. El usuario accede a un catilogo de servicios estan- darizado que se adapta de manera flexible a Jos requerimientos particulares de cada uno de ellos. Los usuarios pagan solamente aquellos servicios que hayan recibido. Entre sus ventajas principales estén: la prestacién de servicios a nivel mundial, actualizaciones aucomaticas del software, no es necesario la instalacién de nucvo hardware. Sus principales desventajas son: cen- tralizacién de las aplicaciones y dependencia de los proveedores de servicio, la disponibilidad de las aplicaciones eseé ligada al servicio de Internet, vulnerabilidad y robo de la informacién. + Funcional, Escé basado en la utilizacién de funciones mateméticas a las cuales se les manda parimetros y se obtiene de dichas funciones un resultado, Se puede decir que la mayoria de los enguajes conocidos utilizan de una manera u otra el paradigma funcional porque utilizan fan- s, pero hay sofiware que se caracteriza por apegarse mas a este modelo como son las hojas de edleulo, en donde el tratamiento de la informacion se realiza précticamente en un 100% usando para ello funciones. ciones maremat Existen otros paradigmas de programacién como: erientada a aspectos, declaratina, orientada a com- ‘ponentes, entre otras, pero las citadas antetiormente son las de mayor uso por los desarrolladores de sofi- ware actualmente. Algunos lenguajes de programacién pueden soportar y trabajar perfectamente con varios paradigmas de programacién, entre ellos se tienen a: Java, JavaScript, C++, C#, PHP, Scala, etc. De tal manera que al citarlos amteriormente no implica que son exclusivos para trabajar con esos paradigmas. 1.9 Editores de texto ‘Antes de que existicran los editores de texto, los datos ¢ instrucciones de un programa se proporcionaban a la computadora por medio de tarjetas 0 cintas de papel perforadas. Posteriormente salieron los teletipos que estaban provistos de un rollo de papel y un teclado, esto permnitfa escribir una instruccién 0 comando usando el teclado y registrando dicho mensaje en papel. Cada linea que se mandaba era analizada y revi- sada por la computadora y en fincidn de ella levaba a cabo la operacién solicitada o bien dererminaha si dicha linea era una palabra vilida del lenguaje, Pasteriormente con la aparicién del monitor fue posible Ia edicién de varias lineas de texto a la ver. Los editores de texto fueron usados en sistemas operativos para enviar los comandos ¢ instrucciones de manejo y administracién del equipo de cémputo, pero sabretado porque permiten la edicién de comple- jos programas. La mayor‘a de los compiladores ¢ intérpretes tienen un editor de texto que permite escribir sus programas, guardar la informacion en dispositivas secundarios, compilar y ejecutar dichos programas. ‘Algunas de las funciones basicas que petmiten levar a cabo los editores de texto son: + Mateaje de parrafos. La informacién marcada posteriormente serd sometida a una nueva ‘operacién como copizr, borrar, pegar, colorear, etcétera, ATROMEGA JIMENE?, JIMENEZ, ALYARADO Editor de texto Ww * Copiar, borrar, cortar, pegar. Son operaciones que se llevan a cabo con frecuencia cuando se esti editando un programa, independientemente del lenguaje en que se esté codificando dicho programa. * Colorear. Es posible cambiar la presentacin de texto usando colores, subrayado, negritas, excérera, + Rehacery Deshacer. Por lo general el editor de texto lleva un registro de las tiltimas operacio- nes que se han llevado a cabo, de tal manera que si el usuario se arrepiente el editor le ayude a rehacer o deshacer Ia operacién. + Importar informacién. Por medio de esta opcién es pasible insertar el contenido o parte de informacién de un segundo archivo en el texto que se esté editando actualmente. + Filtrado de informacién. La mayoria de los editores de texto permiten llevar a cabo operaci nes a parrafos de textos, par ejemplo ordenar las palabras de dicho parrafo en forma alfabética, + Brisqueda y reemplazo. Es posible buscar una palabra y sustimuirla por otra Es posible abservar que todas estas operaciones y otras muchas més, se pueden llevar a cabo con los conocidisimos procesadores de texto pero, zcudl es la diferencia entre un editor de texto y un procesador de texto? La verdad es que la linea que los divide es muy fina ¢ incluso se podria decir que son iguales Véase la definicién de ambos. Editor de texto, Es un progeama que permite crear y modificar archivos digitales compuestos tinica- ‘mente por cexto plano sin formato. Los edivores de texto més comunes son los que tienen Jos lenguajes de programacién para la edicidn de sus programas, aunque las operaciones que se pueden llevar a cabo con ellos rebasan por mucho a las antes mencionadas Procesador de texto, Tienc una amplia gamma de posibilidades para el manejo y la presentacién del texto, entre ellas: tipo y tamasio de letra, formatea de parrafos, efectos artisticos, corrector de ortografia, diccionario en varios lenguajes, intercalado de imAgenes, entre otras. Ha habido varios procesadores de texto desde que salieron al mercado a principios de la década de los ochenta, pero el procesador de texto mis utilizado fue el “Word Perfect” de la Suite de Corel, que funcionaba bajo la plataforma MS DOS. Esce procesador de texto fue posteriormente susticuido por "Microsoft Word” de Office bajo la plataforma Windows Lenguajes de alto nivel. Es aquel que permite al programador escribir las instrucciones de un pro- grama utilizando palabras de un idioma. Algunas de las palabras del idioma inglés que son usadas para la estructuracién de instrucciones en diferentes lenguajes son: begin, case, write, if, input, then, else, while, for, repeat, integer, real, etcétera. Por ejemplo la instruccién en Java 4f (calificaci6n >= 70) System.out.print (“aprobado") ; Le indican a la compuradora que si a calfficacién tiene un valor mayor o igual a 70 debe imprimir cl mensaje “aprebado”. En esta linea de eédigo 4 £ y System. out .print son palabras reservadas del lenguaje de programacién, pero también son palabras del idioma inglés que el programador conoce. Algu- nos de los leguajes de alto nivel mas utilizados son: Ada, Basic, C+-1, C#, Cobol, Fortran, Java, MATLAB, Pascal, Perl, Python, PHP, entre otros. FUNDAMENTOS NE PROGRAMACION ALROMEGA 12 Conceptos hasicos Lenguajes de bajo nivel. Son lenguajes que la computadora puede entender en el momento de jecutar un programa y cuyas instrucciones son dificilmente entendidas por el ser humano. Dentro de los lenguajes de bajo nivel se tienen dos: + Lenguaje maquina, Las instrucciones de este lenguaje estin integradas por Os y Is. Tiene la ventaja de ser un lenguaje més répido que los lenguajes de alto nivel, pero tiene la desvencaja de ser dificil de entender, usar y manejar, porque los cédigos son cadenas de ceros y unos muy grandes, de tal manera que si se presenta un error es complicado de detectar y comtegit. + Lenguaje ensamblador. Es derivado del lenguaje maquina y esté formado por abreviaturas de palabras y niimeros llamados mnemotécnicos. Como ventaja con respecto al lenguaje maquina es que los cédigos fuentes son mds cortos ya que en lugar de ceros y unos usa palabras. Por ejemplo, si se quiere sumar los mimeros 67 con 25 y asignarlos a una localidad de memoria, se tiene el segmento de programa en lenguaje ensamblador. mov AX, 67 (Mueve el 67 a1 acumulador AX ( mov BX, 25 (Mueve 25 al registro base BX (B add AX, BX (Suma al acumulador AX el registro Base BX (AK-AX+BX)) Donde nov y add son mnemotéenicos de las palabras Mover y Adicién, AX es un acurnulador y BX es un registro base, ambos de uso general. La desventaja del lenguaje ensamblador sigue siendo la misma que tiene el lenguaje maquina ya que es complicado de entender, sus instrucciones son limitadas, se tiene que escribir mucho para tener pocos logros. Evolucién de los leguajes de programacién. Los lenguajes fueron cambiando haciéndose cada ver mas sencillos de entender, aplicar, mayor abstraccién ‘y més poder en sus sentencias. La cvolucién de los lenguajes de programacién se puede dividir en 5 etapas © generacionee. + Primera generacién: Lenguaje méquina + Segunda generacién: Primeros lenguajes ensambladores. + Tercera generacién: Lenguajes de alto nivel. Ejemplos de estos lenguajes son: C, C++, CA, Pascal, Cobol, PL1, Ada, Delphi, Java, etcétera. + Cuarta generacién. Son los lenguajes capaces de generar cédign por si solos. Aqui se ubican los lenguajes de mayor abstraccién, que reutilizan partes del cédigo de otros programas para Ia creacién y desarrollo de nuevos programas. Ejemplo: Clipper, FoxPro, Visual, DataFlex, FOCUS, NATUAL, SQL, MATLAB, SAS, etcétera. * Quinta generacién: Aqui se cacuentran los lenguajes orientados a la inteligencia artificial. Estos Ienguajes todavia escan poco desarrollados. Ejemplo de ellas son: LISP, Prolog, PSS y Mercury. 1.10 Compiladores e intérpretes. Son programas utilizados para analizas, determinar e interpretar el contenido y significado de un programa fuente. Tienen cierto parecido pero no se pueden considerar iguales. ATROMEGA JIMENEZ, JIMENEZ, AIVARADO Compiladores e intérpretes 13 * Compilador. Analiza el programa fuente y lo traduce a otro equivalente llamado lenguaje objeto, escrito por lo general en lenguaje miquina, que puede entender y ejecutar la computa- dora. Es como aquella persona que toma un documento escrito en un idioma lo traduce y lo esctibe en ouro idioma (entendible para la persona que desea leer su contenido). La principal ventaja de los compiladores es que es posible crear programas més répidos y eficientes ya que la revisién del programa se hace en forma global una sola ve7, de tal manera que cuando el programa est compilado y se generé el programa objeto, la ejecucién del mismo es riépida debido a que se encuentra en lenguaje maquina. Fjemplo de lenguajes que se consideran como compiladores son: Fortran, Pascal, C, C++, Cf, Clipper, ADA, Programa fuente |———»| Compilador |————»| Lenguaje Obieto Programa fuente. Archivo escrito generalmente en un lenguaje de alto nivel Intérprete. Analiza cada linea del programa fuente que se va escribiendo y lo traduce direccamente sin generar ningtin cddigo equivalence. Es como aquella persona que traduce cada una de las frases que pro- rnuncia un conferencista y que a la par que el conferencista habla, el intérprete dice la frase equivalente en cl idioma que puede ser comprendido por la audiencia que esté en la conferencia. Entre las principales vventajas de los intérpretes se pueden mencionar: que los errores de las programas se detectan inmedia- tamente después de haber escrito la inscruccién, facilitando de esa manera la correccién de los mismos y que el programa puede modificarse sobre la marcha sin volver a comenzar la ejecucidn. Las desventajas son que debido a que el programa se revisa y ejecuta linea por linea es més tardada la revisibn y ejecucién del mismo. Ejemplo de algunos lenguajes que se pueden considerar intérpretes son: PHP, Perl, JavaScript, Logo, Basic, Snobol, MATLAB, entre otros. Algunos lenguajes se pueden considerar como lenguajes intermedios debido a que el programa fuente al ser compilado se wansforma en un archivo no tan sencillo de entender por el usuario, pero que tampoco puede ser ejecutado por la computadora, dado que no se encuentra en su lenguaje, sino que requiere de tun intérprete para trasformar Ia informacién en lenguaje maquina al momento de la ejecucidn. Ejemplo de este tipo de lenguajes incermedios son: Java, Lisp y Python. Extensién de un archivo. Por lo general el nombre de un archivo esta integrado por dos eadenas de caracteres separadas por un punto, ventas.doc La primera de las cadenas (en este caso ventas) es el nombre propiamente dicho del archivo y la segun- da (doc) es la extensién cuya funcidn principal es diferenciar el contenido del archivo, de tal manera que el sistema operativo pueda decerminar el procedimiento necesario para ejecutarlo o interpretarlo, algunas de las extensiones ms comunes son: sys, exe, class, jar, xls, entre otras. 1.11 _Ejecutables Ejecutable es un programa o archivo que contiene instrucciones en eédigo méquina y que puede ejecutar- seen una plataforma determinada. Pero también un ejecutzble puede ser un archivo con instrucciones en bytecode que requiere de un intérprete para ser ejecutado. FUNDAMENTOS NE PROGRAMACION ALROMEGA 14 Conceptos hasicos Los programas ejecutables en cédigo maquina funcionan bajo una plataforma especifica dado que cen su ejecuciéa hacen lamadas a funciones especificas de un sistema eperativo, Ejemplo de este tipo de archivos son los que tienen la terminacién “exe, com, dll, y bat” en Windows y los que tienen la termina- ciéa “com” en MS-DS. Por lo general este tipo de archivos ejecutables son un medio de tansmisién de virus, dado que los virus atacan principalmence a funciones en cédigo maquina, alterando directamente Ias cadenas de ceros y unos del cédigo. La caracteristica de un archivo ejecutable es que no es necesario abrir el compilador para ejecutar el programa, sino que se puede correr aunque la computadora no tenga instalado el compilador en que fue creado ese programa o archivo ejecutable. A los programas ejecutables que estén integrados por instrucciones que son interpretadas por un programa, se conocen como “Scripts”, La instrucciones que conforman a los Scripts son portables (se pueden ejecutar en varias plataformas, Windows, Linux, Mac OS, FreeBSD, Unix, etc.). Por ejemplo un ejecutable en Java es portable porque sus instrucciones son bytecode no asociadas a un procesador en conereto y que por lo tanto pueden ser ejecutadas en diferentes plasaformas, se dice que son programas “multiplataforma”, Un programa con instrucciones bytecode puede ser ejecutado usando como intérprete un programa que comtinmente se conace como “maquina virtual”. Un programa ejecutable en java utiliza la JVM (Java Vireual Machine) para interpretar las instrucciones del mismo. 1.12 _Consola de linea de comandos ‘También conocida como Interfaz de Linea de Comando (cui, Command Line Interface). Es un érea de un software (ana ventana) en donde se teclea tina serie de comandos u érdenes en modo texto para editar archivos o cjecutar programas. En un cut es posible modificar, editar o ejecucar programas por medio de texto plano. Cada instruccidn se escribe en una linea de texto y se ejecuta al presionar ENTER, aunque también es comin escribir varias instrucciones de un programa como lineas de texto y al final ejecutar ese programa. Los programadores por lo general hacen uso de un CL para escribir sus programas, los guardan en un archivo de texto y posteriormente lo compilan y ejecutan para lograr un fin especifico. La consolade linea de comandos existe desde inicios de la compuracidn y se usa en diferentes sistemas computacionales como lenguajes de programacién y sistemas operativos. Se tienen cLis para diferente hardware y con diversos fines. Posiblemente la generacién de usuarios de Windows no lo recuerde, pero antes de Windows, cl sistema operative més usado era MS DS el cual era un cLt con mucho éxito que todavia es posible acceder a él desde Windows con al comando Tados las programas/Accesorios/Simbolo del sistema, Algunos ejemplos del MS DS se muestran a continuacién: Comando Operacién dir Lisca los archivos y directorios (carpetas) contenidos en la carpeta actual. de nominaxis Bora el archivo nomina.xls de la carpeta actual rd saul Suprime la carpeta azul. (contintia) ATROMEGA Jieez, JIMENEZ, ALVARADO Resumen 15 Ce a aio) Comando Operacién ed c\manranalpera ‘Cambia 0 se posiciona en la carpera “pera” que esta contenida en la carpeta ‘manzana” dela unidad °C”. Accualmente estas actividades se llevan a cabo de una manera muy ficil, por ejemplo el comando “dic” lo ejecuta automiticamente la computadora al posicionarse en una carpeta, la instruccién “del nomina. xls” se ejecuta si se sefiala el archivo nominaals y después se le da Ja orden de suprimir dicho archivo. Sin embargo “ed c:\manzana\pera” requiere de posicionarnos en la carpeta o subdirectorio “pera” avanzando poco a poco hasta llegar aella, actividad que con MS DS se lleva a cabo al ejecutar una sola linea de texto. Algunas veces se requiere elaborar un programa integrado por varios comandos de este tipo y entonces Window tiene algunos problemas. Los cuts son muy titiless aunque es necesario recordar la sintaxis de las instrucciones o comandos para, lograr una comunicacién con Ia computadora. Para los que estn acostumbradas a usar interfaces grificas, tun ct le resultard complicado o ineficiente, pero por medio de ellos se pueden tener programas més po- rentes, répidosyy efectivos cuando las interfaces gréficas no tienen todas las opciones o simbolos requeridos para llevar a cabo alguna operacién a nivel bajo o intermedio. 1.13 Resumen A principios del siglo xx el barco, el automévil y el ferrocarril fueron Jos medios de transportacién més usados, posteriormente se les unié el avidn. Fl corteo, el celégeafo y después el teléfono fueron los medios que permitieron la comunicacién entre las personas. En todo el siglo anterior los cambios no fueron muy significativos si se comparan con los que han ocurrido en esta primera década del siglo xox. El Internet vino a revolucionar la forma en que se comunican las personas, esto ha hecho que desaparezcan los telé- grafos porque a nadie le interesa enviar telegramas en donde la informacién es limitada y exclusivamente a base de texto, pudiendo usar el correo elecctnico para mandar texto, imagenes y videos en forma répida y econémica, informacién a la cual se puede acceder desde cualquier parte del mundo sin necesidad de estar en el domicilio para enterarse de la cortespondencia. Ahora los aucoméviles, erenes y aviones son répidos y pueden ser manejados en forma automética. La forma de comunicacién telefénica también ha cambiado sustancialmente dejando atris aquellos teléfonos que solamente funcionaban conectados a un cabley en un domicilio particular, para dar paso a esa telefonia mévil que puede tomar fotografias, videos, escuchar miisica, es posible acceder 2 Internet, con todo lo que so significa; y al final también hacer lamadas telefnicas. Las pliticas ya no solamente son por medio del teléfono sino que se les unié a él, el chat y las redes sociales para una comunicacién en tiempo real. Se puede cener una conversacién escuchando no solamente su voz sino también viendo su imagen y movimientos. Anteriormente lo que ocurria en Europa se conocia tiempo después por medio de periddicos, revistas 0 en el mejor de los casos por la television una ver que se trasportaban las imagenes y videos a las televisoras ¥ periddicos. Ahora lo que sucede en los lugares més lejanos de la tierra se puede ver en el mismo momen- to que esti sucediendo. Los avances en la comunicacién y transportacién han globalizado al mundo, las empresas son internacionales y lo que se produce puede comercializarse de una manera relativamente ficil. En todas estas avances la electrénica y la computacién han tenido un papel fundamental, ya que el equipo esd implementado principalmente a base de circuitos electrénicos y funcionan por medio de programas de computaci6n. FUNDAMENTOS NE PROGRAMACION ALROMEGA 16 Conceptos hasicos Sin embargo todavia hay mucho que hacer ya que cada dia se requieren computadoras més accesibles, pequefias, agradables, faciles de manejas, con una mayor capacidad de almacenamiento y procesamiento de informacién, para poder integrarse en todos esos equipos aplicables a todas las dreas de la ciencia, Pero también es necesario el sofiware que permita obtene: los mejores resultados de ese nuevo hard- ware; de tal manera que seguird desarrollindose software de base y sofware de aplicacién porque serd necesario para el equipo existente y el de nueva creacién. Anteriormente el software se realizaba sin ninguna planificacién y a la medida para cada una de sus aplicaciones. El sofiware eta desarrollado y utilizado por la misma persona o empresa que lo creaba. An- teriormente el hardware era muy caro en relacién al software que muchas de las veces era gratis, ya que se entregaba en la compra del equipo. Sin embargo el equipo es cada vez mas barato mientras que el costo del sofiware es cada vex mayor. Aunque los grandes desarcolladores de software estin tendiendo a crear monopolios, es tan grande la demanda de sofiware que es imposible satisfacerla, porque todas las empresas Y personas requieren aprovechar la computadora para cealizar nuevas tareas atin no consideradas por los ‘grandes grupos desarrolladores de software. De tal forma que sistemas operativos, procesadores de texto, hojas electrdnicas y software de aplica- cién en general, seguirén utilizndose. Se crearin nuevos lenguajes que permitirin desarrollar software que permira el manejo de nuevo equipo, de cal manera que existe un campo de aplicacién importante para la computacién y los programadores de compuradoras 1.14 Problemas 1. Relacionat los conceptos con su definicién colocando en el paréntesis el niimero que corresponda. Definicién Concepto 1, Equipo con el cual se puede obtener Ia informacién de la ema operativo O) computadora que resulta de un procesamiento de datos 0 bien informacién que esté almacenada en la computadora. 2. Es una persona o sujeto que utiliza una computadora, sistema Medios de Entrada € 3 operativo o cualquier sistema computacional 3. Programas que permiten administrar los recursos de la Hardware () computadora 4, Maquina electrénica que recibe datos de un medio de entrada, Sofiwarede sistemas. (_ ) procesa dichos datos de una manera rpida y exacta, para posteriormente enviar la informacién resultante aun medio de salida 5, Conjunto finito de pasos, precisos y ordenados para resolver un Lenguajes formales (+) problema. 6. Conjunto de programas y procedimientos necesarios para que Windows NT. C) Ja computadora lleve a cabo alguna tarea specifica, 7. Conjunto de instrucciones basadas en un lenguaje de progra- Medios de salida o) ‘macién que una computadora ejecuta para resolver un proble- ma 0 realizar una funcién especifica ALROMECA Jieez, JIMENEZ, ALVARADO Prablemas 8. Lenguajes de menor capacidad para simular y modelar lengua- jes nacurales. 9. Tiene una amplia gama de posibilidades para el manejo y la presentacién del texto, entre ellas: tipo y tamafio de letra, formateo de pirrafos, efectos artisticos, corrector de ortografia, diccionario en varios lenguajes, intercalado de imAgenes, entre orras 10, Programas para llevar a cabo tareas especificas como: edicion de textos, graficacién, cdleulos, disefios, simulaci6n, entre otras ‘areas. 11, Analiza el programa fuente y lo traduce a otro equivalente llamado lenguaje objeto. 12, Programa o archivo que contiene instrucciones en cédigo mé- quina y que puede ejecurarse en tuna plaraforma determinada. 13, Lenguajes orientados a la inteligencia artificial. Hstos lenguajes todavia estén poco desarrollados. Bjemplo de ellos son: LISP, Prolog, OPSS y Mercury. 14, Herramientas utilizadas para ingresar todo tipo de datos ala computadora 15, Sistema operativo de cédigo libre, portable, multiusuarios, escrito en lenguaje C, que fue lanzado al mercado a principios de la década de los noventas tomando en cuenta las sugerencias de programadores. 16, Permite trabajar con un software al mismo tiempo en una red de usuarios aprovechando de esa manera los beneficios de Windows en redes de computadoras. 17, Programa cuya finalidad es organizar el trabajo de la computadora. 18. Sistema de escritura para la descripcién precisa de algoritmos o programas informéticos. 19, Conjunto de reglas sintécticas y semdnticas que permiten la coraunicacién con una computadora 20, Tangibles de un sistema computacional 21, Permite al programador escribir las instrucciones de un progra- ma utilizando palabras de un idioma 22, Lenguaje que la computadora puede entender en el momento de ejecutar un programa 23, Salié a principios de la década de los 80s, fue desarrollado por Microsoft y se hizo popular debido a la gran cantidad de sofiware que se podia ejecutar con él. FUNDAMENTOS NE PROGRAMACION Paradigma de progra- Programacién. Lenguaje maquina, Computadora 7 C) C) C) C) Lenguaje de programa- (_) cién, Windows. Programa. Sofiware Editor de texto. Algoritmo C) C) () C) C) Sofrware de aplicacién. (— ) Compilador. Usuario Intérprete. Linus. Ejecutable C) () C) () () ALROMEGA 18 24, 25. 26. 28. 29. 30. Sistema operative multiusuario y multitarea desarrallado por los laboratorios Bell de AT&T que corre en diferentes compusadoras: personales, minicomputadoras, supercomputadoras y redes de computadoras. Derivado del lenguaje maquina y esté formado por abreviaruras de palabras y niimeros llamados mnemotécnicos. Sistema operative desarrollado con la finalidad de tener una interfaz gréfica més amigable con iconos que representan las diferentes operaciones que se pueden ejecutar. Programa que permite crear y modificar archivos digitales com- puestos tinicamente por texto plano sin formato. Las instrucciones de este lenguaje estin integradas por 0's y I's Analiza cada linea del programa fuente que se-va escribiendo y Jo traduce directamente sin generar ningiin cédigo equivalente Propuesta tecnolégica que es adoptada por una comunidad de programadores cuyo miicleo central es incuestionable en cuanto a que univacamente trata de resolver una o varios problemas claramente delimitados Conceptos hasicos Lenguajes de quinta. = (+) generacién Procesador detexto. (_) Lenguaje de bajo nivel. ( ) Unix O) Lenguajes de alco nivel. () MS-DOS () Lenguaje ensamblador. (— ) 2. En cada uno de los incisos siguientes colocar una “V” si es verdadero o bien una “F” sis falso que el sistema operativo lleve a cabo dicha tarea, 1. Reconocer las sefiales de entrada de algin dispositivo (teclado, mowse, acto, disco, uss, ets). ( ) 2. Convertir un programa fuente en un programa objeto (de lenguaje Ca lenguaje maquina (— ) por jenple). 3. Administrar la informacién guardada en carpetas y archivos de la computadora. (copiar (+) archivos, borrar archivos, crear nuevas carpetas, cambios de nombre de archivos, entre otras) 4, Enviar sefales de salida a diferentes elementos del sistema (monitor, disco, impresora, (_-) teléfono mévil, plétes, etc.) 5. Controlar y mantener la comunicacién con los equipos periféricns (teclado, monito, (+) impresora, disco duro, escdner, ratén, UsB ete.). 6. — Graficar funciones matemdticas (seno, coseno, absoluto, rafz cuadrada, etc:) ©) 7. Controla la secuencia en que se deben llevar a cabo las procesos y tareas 2 realizar. O) 8. Permite editar programas en un lenguaje de alto nivel O) 9. Administra la memoria de la computadora. Esto permite que un sofiware funcione en dos ( ) computadaras que tienen diferentes memorias y capacidad de almacenamiento. 10. Manipula bases de datos (realiza buisquedas, filtra, une, agrega y elimina informacién en (_) uuna base de datos). AIROWECA JIMENEZ, JIMENEZ, ADVARADO Prablemas 19 3. Para cada sofituare de la siguiente tabla colocar un asterisco si tiene la caracteristica de ser un: sistema operativo, lenguaje, intérprete, hoja de célculo, procesador de texto, multitarea, monousuario, mul- ‘usuario, etc. Puede cumplir con una o més caracteristicas. Sistema operativo Hoja de cileulo Procesador de texto Lenguaje méquina Dealto nivel De bajo nivel Lenguaje Interprete Compilador Monousuario Muldusuario “Monotarea ‘Multitarea Software libre Software MS-DS Pascal Basic Unix Excel JsP Linux Java Windows NT Ada Word. PHP C++ MacOS Binario Windows Ensamblador Word Perfect FUNDAMEITOS DF PROGRAMACION Atr\OMRCA 20 Conceptos hasiens 4. Contestar lo que se pide 1, Blaborar un cuadro sinéptico de la clasificacién del software indicando por lo menos dos ejemplos de cada uno de ellos. 2. Eseriba el algoritmo usando solamente texto para cada uno de los incisos siguientes. 42) Algorismo para leet dos miimeros A y B sumarlos ¢ imprimir su resultado. 8) Algoritmo para leer dos niimeros A y B c imprimir cl mayor de ellos, en caso de que scan iguales imprimir cualquiera de ellos. 2) Algoritmo para ingresar como alumno de nuevo ingreso al Tecnolégico de Morelia 3. ‘Tomando como elementos y/o conjuntos, elaborar un diagrama de Venn con ellos. + Lenguajes naturales. + Lenguajes de 2 age. programacién. 2, segiaps * Lenguajes formales. os See. + Espanol, + Francés as Tee 4. Lenguaje braille. Elaborar un mapa conceptual llamado “La computadora’ en donde se muestre la relacién que existe entre: a cou 4) Software de sistemas 4). Dispositivos de entrada. 2) Software de aplicacién 2) Dispositivas de salida 5. Indicar por medio de una figura geométrica cada uno de los incisos anteriores colocar el hardware 0 sofiware citado a continuacién, segtin corresponda dentro de esas figuras geométricas. Impresora Tedlado Ratén Programas antivirus cory ‘Manejadores de bases de datos Pantalla tactil Windows ‘USB MacOS ‘TrackBall Canén, Plérer Bocinas Hojas electrénicas Escaner Editores de texto Unix Linux CAD ATROMEGA Jieez, JIMENEZ, ALVARADO Problemas a 5. Relacionar los tipos de paradigmas de programacién con la caracteristica que los distingue colocando en el paréntesis la letra que corresponda. a » Q 4 a Paradigma Caracteristica Imperativo 0 Procedimental Establece que todo problema puede ser resuelto tinica- (_) ‘mente con tres instrucciones (Secuencia, instruccién condicional y ciclo) Légico Proporciona servicios de computacién a través de Internet. (_ ) Estructurada Esta basado en el lema “Divide y vencerés". () ‘Modular ‘Maneja conceptos como: clase, herencia, método, evento, (_ ) ‘mensaje, abstracci6n, encapsulamiento y polimorfismo. Programacién Orientada a Indica a la computadora cada paso a realizar para resolver. () ‘Odjetos (e00) un problema determinado En la nube Esti basado en la wilizacién de funciones matemiticas. (+) Funcional Expresa formalmente problemas complejos y los resuclve (_ ) mediante hipétesis, tautologias y reglas de inferencia, 6 Colocar la década (70, 80, 90, 00) que corresponda a las caracceristicas del hardware ylo software de dicho periodo de tiempo. ed ele eed Las computadoras usaban cintas y discos magnéticos de 5 4 pulgadas para guardar y leer informacién. Se usan con frecuencia para programar los lenguajes C++ y Java Las computadoras eran de grandes dimensiones y utilizaban tarjetas yo cintas perforadas para leer informaci6n. Surgen las computadoras portiviles “laptop” y las usn como dispositivos de almace- namiento secundario. Los lenguajes més utilizados en esta década fueron Basic y Fortran IV Se empezaron a utilizar los sistemas operatives Windows, Linux y Unix. El ipod, cdmaras digitales y robots son muy comunes en esta década, Sistemas operativos multitarea y multiusuario son comunes, Los lenguajes mas utilizados eran: Basic, Pascal y Cobol, MS-DS fue el sistema més utilizado en esta década. FUNDAMENTOS DE PROGRAMACION, ALROMEGA ALGORITMOS y, Las computadoras son buenas siguiendo instrucciones, no leyendo tu mente. Denald Knuth Competencia de la unidad Analizar problemas y representar su solucién mediante algoritmos, + Analizar y resolver problemas cotidianos usando representaciones algoritmicas. + Representar algoritmos por medio de: Diagramas de flujo, N—S (Nassi—Shneiderman), Pseu- docédigo y Descripcién narrada. + Representar expresiones matemdticas usando los operadores aritméticos de suma, resta, multipli- cacién, divisién y médulo. + Resolver problemas con algoritmos usando funciones. Algoritmo Contenido 2.1, Introduccién. 2.3.4. Diagramas Nassi— Shneiderman (N—S). 2.2. Resolucién de problemas de programacién. 2.4. Diseito de algoritmos de funciones. 2.2.1. Anilisis del problema. Funciones en computacién. 2.3. Representacién de algoritmos: 2.4.2 Funciones recursivas. 2.3.1, Desctipcién narrada. 2.4.3. Procedimientos. 2.3.2. Diagrama de flujo. 2.5. Resumen, 23.3. Peeudocédigo. 2.6. Problems. FUNDAMENTOS NE PROGRAMACION ALROMEGA 24 Algoritmos 2.1 Introduccién Un algoritmo es el canjunto de pasos ordenados en forma légica que se ejecutan para llevar a cabo una actividad o resolver un problema. Todos los dias se usan algoritmos para realizar tareas cotidianas en donde los pasos del algoritmo se ejecutan sin reparar en ellas, porque son algoritmos aprendidos, integrados por actividades que se realizan a diario. Es posible tener algoritmos para resolver problemas complejos 0 pro- blemas a los que nunca nos hemos enfrentado, en cuyo caso es necesario analizar el problema, determinar los elementos que se tienen y los resultados a los que se quiere llegar, pasando por los posibles estados no ptevistos en donde se deben tomar decisiones de acuerdo a la situacién que se presente. Es posible representar los algoritmos usando simbolos, figuras de animales o cosas, grificas, lenguaje natural y lenguajes de programacién. En esta unidad se explicard la forma en que se representan los algo- ritmos por medio de diagramas de flujo, diagramas N—S, descripcién narrada y pseudocédigo, dejando para las unidades posteriores la representacién en lenguaje de programacién. ‘También se usarin los operadores aritméticos bisicos de suma, resta, multiplicacién, divisién y mé- dulo para la representacién y evaluacién de expresiones matemdticas, Se resuelven problemas ya solucién es representada con lenguajes algoritmicos, con la finalidad de desarrollar en el alumno la légica de pro- gramaciéa, olvidindose de la sintaxis de un lenguaje formal y concentrindose exclusivamente en les pasos que integran el algoritmo. 2.2. Resolucién de problemas de programacién Con la computadora es posible resolver problemas grandes y complejas, en donde es necesario apayarse cn expertos del drea, para entender perfectamente los aspectos técnicos y la manera en que se calculan los diferentes elementos del problema a resolver. Existen también problemas sencillos en donde es relativa- ‘mente ficil comprender el problema y resolver. Independientemente si el problema es complicado o sencillo, si se tiene la participaci6n de expertos en el drea para auniliar al programador en la comprensidn del problema 0 no, los pasos a realizar en la resolucién de problemas de programacién son: 4) Andlisis del problema. 8) Disefio del algoritmo. 4) Codificacién del algoritmo. d) Compilacién y ejecucién. @) Verificacién y depuracidn. ) Mantenimiento, 9) Documentacién. 2.2.1 Anélisis del problema Partiendo de que el enunciado del problema es correcto y detallado, el anilisis del problema consiste en de- terminar claramente: los datos de entrada, el proceso de cilculo de la informacién y los resultados de salida. + Datos de entrada, Es la informacién requerida para resolver el problema. En este caso se debe considerar el medio por el cuil se obtendran los datos (teclado, disco, pantalla, etc), las variables ncesarias para leer la informacién, el tipo de datos (numérico, texto, caracter, booleano), el orden formato de lectura de la informacién (si se manda un mensaje antes de leer el dato 0 no). ATROMEGA Jieez, JIMENEZ, ALVARADO Resolucién de problemas de programacién. 25 + Proceso. Aqui se debe considerar principalmente la mejor manera en que se puede calcular la informacién de salida, de dénde se obtiene la informacién que se necesita para llevar a cabo as operaciones, si se tienen condiciones a considerar en el proceso del célculo, si existen fSrmulas matemacicas en las cuales apoyarse, el orden légico del célculo (qué se calcula primero y qué in- formacién se encuentra después). + Resultados de salida. Fs \a informacién que se obtendré al resolver el problema. Aqui se debe considerar: la manera en que se presentari dicho resultado (texto, datos numéricos enteros 0 con una parte fraccionaria, ordenadas alfabéticamente, de mayor a menor, etc.). Se deberd establecer claramente lo que se quiere y la forma en que se presentard. ara analizar el problema, determina la informacién de entrada, establecer el proceso de célculo y obte- nner el resultado del problema, es conveniente imaginar y representar esa imagen por medio de una Interfa. Representacién de la Interfaz. Permite entender con mayor claridad el problema a resolver, ya que muestra los mensajes que se verin en la pantalla, los datos que serin leidos y la informacién esperada de Ja computadora al ejecutar el programa. La interfaz puede ser una figura que representa la pantalla de la computadora con los mensajes de lectura de informacién, los datos que se le proporcionan y los resultados esperados de la computadora asf como la forma en que deberd proporcionarse. En programacién se tienen dos retos importantes cuando se resuelve un problema, uno de ellos es entender el problema mismo, tener claramente cudles son los datos de entrada, el proceso de edleulo y cul es la informacién requerida, asf como la forma en que se presentari dicha informacién. El otro reto es el disefio del algoritmo para la ob- tencién de los resultados esperados. Para cada uno de los problemas. resolver de este libro, se presenta tina interfaz de salida con la finalidad de facilitar la comprensién del problema, es decir; la informacién que se verd en la pantalla al momento de la ejecucién del algoritmo o programa, se encuentra en un rectingulo con las esquinas redondeadas. Ejemplo 2.1. Escribir un programa para leer la base y altura de un rectingulo y calcular su area, Indicar y explicar cudles son: a) Los datos de entrada 8) El proceso. ©) Los resultados de salida. d) Interfax de salida. Datos de entrada. Claramente se observa que los datos de entrada son hase y altura, se trata de datos numéricos, son niimeros reales porque tienen parte entera y fraccionaria, los datos los proporcionael usua- rio al momento de ejecutar el programa, el orden de lectura de los mismos es primero la base y después la altura (aunque en este caso no afecta si primero se lee la altura y después la base). Proceso. Los datos de entrada se leen por medio del teclado al momento de correr el programa ya que no se indica una forma especial de lectura, se sabe que: drea = base X alrura. Resultados de salida. En este caso particular es el resultado de multiplicar la base por la altura y se presentard con un dato numérico que tiene parte entera y decimal. Interfiz de salida. Muestra la informacién que se verd en la pantalla al momento de ejecutar cl pro- grama para resolver un problema tipico. La manera en que se representari a lo largo de cado el libro es como se mucstra a continuacién: Base: 8.4 Altura: 5.23, Area = 43.932 FUNDAMENTOS NE PROGRAMACION ALROMEGA 26 Algoritmos En la interfaz se observa que los mensajes de entrada son: “Bases” y “Altura:”, que los datos de entrada son: 8.4 y 5.23, La informacién de salida estd conformada por el mensaje de salida “Area” y el resultado 43.932. El proceso en este caso consiste en multiplicar la base por la altura del rectingulo para encontrar de esa manera el drea. Observar cémo los mensajes para leer informacién terminan con dos puntos (). Es importante mencionar que todos los programas desarrollados en esta obra deberdn funcionar para quier valor leido, en otras palabras; deberin ser una solucién general, aunque en [a interfaz-muestre la solucién solamente para algunos datos particulares. 1a interfaz puede tener diferentes tipas de letra, colores, figuras geomécricas, diferentes mensajes, etc Pero en este caso se trata de una interfaz muy sencilla que perm en el momento de ejecutar el programa. imaginar lo que se verd en la pantalla 2.3__Representacién del algoritmo Como se mencion6 en el capfculo anterior, un algoricmo es un ‘Conjunto finito de pasos, precisos y orde- nados para resolver un problema’. Existen varios métodos para la representacién de algoritmos entre los cuales se pueden mencionar: 4) Descripcién narrada. 5) Diagramas de flujo. 4 Pseudocédigo. @) Diagramas N—S. 2.3.1 Descripcién narrada Este método de representacién de algoritmos utiliza el lenguaje natural hablado o escrito para deseribir los pasos que se deben seguir al resalver el problema. Cada una de las instrucciones puede ser una frase woracién narrada en forma concreta de lo que se debe hacer. Por ejemplo, el algoritmo en descripcién narrada para el Fjemplo 2.1 es coma se muestra a continuacién: /*Rlgoritmo para calcular el drea de un rectdngulo*/ inicio leer la base leer la altura calcular el area multiplicando la base por la altura imprimir el area. fin Los programas y también los algoriemos pueden tener comentarios acerca del algoritmo o de algunas de sus instrucciones que lo integran, Estos comentarios pueden ocupar una sola linea, una parte de linea (puede ir al lado de una instruccién) o varias lineas. En el caso anterior la informacién: /*Algoritmo para calcular eldrea de un rectingulo*/, es un comentario y se distingue porque escd encerrado entre los simbolos /* y */. 2.3.2 Diagrama de flujo Es una manera grifica de representar los algoritmos, usando simbolos geométricos para cada uno de los ;pasos que integran el algoritmo, Por medio del diagrama de flujo se ilustra de manera gréfica la secuencia de operaciones que se realizan para resolver el problema, Un diagrama de flujo solamente tiene un princi- pio yun final. Los simbolos mas utilizados se muestran a continuacién. ATROMEGA Jieez, JIMENEZ, ALVARADO Representacién del algoritmo 7 Exner Simbolo Significado Simbolo Significado Inicio o Fin de = Direceién de Ajo CD fatgans | Actividad /__f Entrada de datos Decisin Conector para unir O el flujo a otra parce del diagrama. Impresin o desplegado de informacién La representacidn del algoritmo del Ejemplo 2.1 usando diagrama de flujo se muestra a continuaciéa: Una salida tipica si se corriera este programa es como se muestra en la interfaz siguiente: £[ / Base: 8.4 Alcura: 5.23 Arca = 43.932 Ohservar que los mensajes se deben encerrar entre comillas y que cs posible imprimir mensajes y el valor de variables en una misma linea, separindolos por coma. FUNDAMENTOS NE PROGRAMACION ALROMEGA 28 Algoritmos Primeramente despliega el mensaje “Base:” en la pantalla y al llegar a la entrada de datos se detiene para que por medio del veclado el usuario proporcione el valor a la variable b. A continuacién desplicga el mensaje “Aleura:” y espera el valor de la variable h, posteriormente multiplica el valor de b por el deh y se Jo asigna ala variable a (a=b"h). Finalmente imprime el mensaje “Area=” seguido del valor de la variable a (la coma que separa al mensaje de la variable no se imprime ya que solamente es un separador, tampoco imprime las comillas que encierran a los mensajes). Observar que es posible realizar operaciones aritméticas. A continuaciéa se tiene una tabla con los signos aritméticos mas comunes en los lenguajes de programacin. Operador | Operacién Fjemplo Significado de la operacién + Suma c= ath | Sumael valor deacon by asigna el resultado a c. - Resta c=a—h | Alvalorde le restael valor de 4 y el resultado de Ia operacién se lo asigna ac : Malripliea c= 4b | Multiplica a por 6 y asigna el resultado a c if Division cm ah Divide el valor de la variable a entre el valor de by asigna el resultado a la variable c ‘ Porenciacién | c= ab | Elevaala potencia bel valor de a («!) y se asigna el resultado a ¢. Ejemplo si a=5 y 6=3 entonces em543,.— 5 125. mod Médulo o c mod b | Elvalor de ces el residuo de dividir @ entre b. residuo Ejemplos: c = 5 mad 3 = 2; c = 13 mod 8 = 5 En los distintos lenguajes de programacién se deben definir las variables como enteros, reales, ca- sacter, cadenas, booleanas, etc. El resultado de una operacién dependers de los tipos de datos de las variables. Por ejemplo si se definen a las variables: 2, b y ¢ como enteras, donde 2 = 7 y 6 = 3, entonces c= alb = 2, pero si ces teal c= a/b = 2.5. También el simbolo para indicar las operaciones mateméticas puede cambiar de un lenguaje a otro (por ejemplo, la palabra “med” o al simbolo para indicar la potencia- cidn no se representan igual en C++, que en Java). En esta unidad utilizaremos los simbolos aritméticos indicados en la tabla anterior, pero una vez que se aborde cl lenguaje de programacién se haran las indi- caciones pertinentes. Representacién de expresiones matematicas usando lenguaje algoritmico La computadora no puede leer una ecuacién matemitica como se representa normalmente en el irea de matematicas, sino que debe suftir una transformacién a un lenguaje algorftmico cercano al lenguaje de programacién a usarse en la codificacién del programa. La representacién de expresiones matemsticas se lleva a cabo usando los operadores aritméticos indicados en la tabla anterior y con el auxilio de paréntesis para agrupar la informacién en forma lineal. Ejempla 2.2. En la siguiente tabla se representan con notacién algoricmica algunas expresiones ma- teméticas, usando los simbolos aritméticos y paréntesis para agrupar la informacién cuando es requerido. Considerar que cada letra es una variable diferente. ATROMEGA Jowever, Janexe7, ArvARADO Representacién del algoritmo 29 Expresién matematica Representacién algoritmica yaathaclid tes yrsts 34 ((a*x-6)/(8+4x)) (x 2-); 1 ya (tc~ dy 31(7+4*a)+d -1/3+5); 2 = (a+b) mod 3+ a°2/75 yn (arb ymod see TAGs waa a BU Observar que se utilizan paréntesis para agrupar informacién cuando es necesario. Por ejemplo; si la primera expresidn se hubiera representado sin paréntesis seria diferente a la ecuacién deseada. yeatb-cld+e; Equivalea yrab-Sre Se deben usar paréntesis solamente cuando sea nccesario y no abusar de ellos, ya que eso puede causar la perdida de claridad o errores de la expresién que se esta representando. Las siguientes tres expresiones son equivalentes: yaath-cl(dtey ya(a*®)-(clcl(d+e)); y= (la*b)-(cl(d +e); Pero es obvio que es mis clara y més simple la primera de ellas, aunque la computadora acepta a las tres como validas y se obtiene el mismo resultado al sustituir el valor de las variables. Jerarquia de operacién Las expresiones matematicas no necesariamente se evaliian de corrido de izquierda a derecha, sino que los operadores aritméticos tienen diferente prioridad de evaluacién y dependicndo del operador ariumético, la colocacién de los mismos y la forma en que esté agrupada la informacién, marcaré el orden de operacién y por lo tanto el resultado obtenido. La tabla siguiente muestra la jerarquia de operacién de los operadores mateméticos vistos hasta ahora. Operador | _Jerarquia de operacién oO la, n 2a, he mod 3a, += 4a Lo que implica que primeramente se evahia la informacién que est encerrada entre teriormente la potenciacidn, después tienen la misma jerarquia de operacién la multiplicacién, dix ‘médulo para finalmente evaluar la suma y la testa. FUNDAMENTOS NE PROGRAMACION ALROMEGA 30 Algoritmos (Cuando existen operadores que tienen Iz misma jerarquia de operaci6n como son: *, / y mod la ope- racién se realiza de izquierda a derecha. Ejemplo 2.3. La evaluacién de la expresiSn: y = a + b/otd — 3*(c + b*d), Para a = 2, b = 12, c= 3,d = 5. Realizando una operacién a la vez, es como se muestra a continuacién: a+ bietd— 3°(c + bd); 2+ 1213*5 — 3*@ + 125); Sustituyendo valores 2+ 1213°5 — 3*G + 60); Evaluando la multiplicacién del paréntesis y= 2+ 123% — 3°63; Evaluando la suma del paréntesis 2 + 4°5—3°63; Haciendo la divisién 2 +20 ~ 3°63; Realizando la multiplicacién de la izquierda y=2+ 20-189; Haciendo lz multiplicacién y = 22 — 189; Realizando la suma y= — 167; Finalmente haciendo la resta Es importante mencionar que cuando hay varios paréntesis, primero se evahia el que se encuentra més la izquierda, si existe un paréntesis dentro de otro se evahia primero el que se encuentra mas adentro respetando sicmpre la jerarquia de operacién. Ejemplo 2.4. Para a = 10, 6 = |, d = 2, evaluar la expresin matemética representada en notacién algorftmica de cada uno de les incisos: a) y= ald — (7— alb'2)%0— 8+ (a+ 30 — cD)"; BD) y= (at ble ad + (4 — /)2+ ate: Respuesta al inciso (a) y= ald — (7 — alb*2)*c — 8 + (a + ING — cA2))%d 1012 ~ (7 = 1015°2)"3 — 8 + (10 + 345 — 392))*2 Sustituyendo valores. 1012 — (7 — 2°2)°3-8 + (10435 — 392) "2; Realizando la divisién del primer pa- réntesis. y= 1012 — (7 — 4)°3-8 + (104345 — 392))*2: Haciendo la multiplicacién del primer paréntesis 10/2 — 3°3 — 8 + (10+3%(5 — 392) "2; Realizando la resta del primer paréntesi 1012 — 3°3 — 8 + (10435 — 9))*2s Haciendo la exponenciacién del parén- resis que esté dentro. y= 1012 ~ 3°3 — 8+ (1043%— 4) "2; Realizando la resta del paréntesis que esta dentro. = 102 — 3°3 — 8 + (10 ~ 12)°2 Realizando la multiplicacién en el pa- réntesis. y= 1012 — 3°39 8+ (- D2 Realizando la cesta. Se dejé (—2) para dar mayor claridad. 5-39 -—8+(- D2 Realizando la divisién. 5-9 -8+(- YY Realizando la primera multiplicacién. Realizando la muleiplicacin Realizando la primera resta. Realizando resta Finalmente haciendo la dltima resta ATROMEGA Jieez, JIMENEZ, ALVARADO Representacién del algoritma 31 Respuesta al inciso (b). Para a = 10, 6 = 5,c=3,d=2 Y= (a+ ble - ad + (4— OMB) '2+ ae; y= (10 + 5/3 — 10°2 + (4 — 3)/5))*2 + 10°3; y= (U0 + 543 — 10°2 + 1/5))*2 + 10°3; y= (10 + 5M3 — 20 + 1/5))*2 + 103; y= (U0 + 543 — 20+ 0.2))'2 + 10°3; y= 0+ HM 17+ 0.2))'2 + 10°3; y= (10 + 5(= 16.8)*2 + 10°3; y= (10 — 0.2976)*2 + 10°3; y= (9.7024)'2 + 103; y= 19.4048 + 10°3; y = 19.4048 + 30; Susticuyendo valores Realizando resta. Realizando la multiplicacién Realizando la division en el paréntesis interior. Resta denuo del paréntesis Haciendo restas en paréntesis de dentro. Haciendo divisis Haciendo resta, Multiplicacién de la izquierda. Ulima multiplicacién y= 49.4048 Haciendo finalmente la suma. Operador médulo. Cuando se lleva a cabo una division se tiene un cociente y un residuo. El médulo es el residuo de esa divisin considerando un cociente entero. 1 <— Cociente Divisor (d) —> 7 [12 ~«— Dividendo (n) 5 7S Residue (Médulo (m)) Algunas hojas de célculo utilzan la siguiente expresién matemdtica para calcular el médulo. m=nmodd= = d* EnteroMenor (n { d) Con los daros anteriores: m = 12 mod 7 = 12-7 * EnteroMenor (12 / 7) = 12-79(1.7142) = 12-741) = 5 Sin embargo hay diferencia en el resultado obtenido cuando las cantidades involucradas son de signo contrario. Bjemplo: m = ~12 med7 = —12 — 7* EnteroMenor (~ 12/7) = -12—7"(— 1.7142) = -12 — 7(-2) = 2 En matematicas si dos cantidades se dividen y esas cantidades son de signo contrario, el cociente es negativo, Usando la caleuladora el rsiduo se puede encontrar multiplicando la parte fraccionaria del co- ciente por el divisor y redondeandolo al entero mas cercano, como se muestra a continuacién: =1.7142 =I? 7[-2 7[=2 P= 0.7142°7 = — 5 5 Algunos lenguajes de programacién, usan la siguiente expresin para enconuar el residuo, que es el resultado esperado. m =n modd =n — d* Cociente Entero (n / d) Con los datos anteriores se tiene: 12 mod 7 = —12 — 7 * Cociente Entero (—12/7) = 12-7? (1) = -5 m= FUNDAMENTOS DE PROGRAMACION AuoMEGA 32 Algoritmos En forma generalizada el médulo siempre tendrs el mismo signo del dividendo. Ejemplos. m = 12 mad ~7 = 12 — (—7) * Cociente Entero (12 / (=7)) = 12 + 7*(=1) m = ~12 mod —7 = —12 — (—7} * Cociente Entero (—12/ (—7)) = -12 + 7*(1) = -5 En computacién, si dos cantidades enteras se dividen y al resultado de la divisién se le asigna a otra variable entera, el resultado es el entero del cociente. Ejemplo: considerar que w es una variable entera, 712=—3 w=24/(5= 4 Ejemplo 2. Scan a, b, 6, d'y x variables enteras cuyos valores son @ = 3, b= —5,¢= 2,d = 4, Encontrar el resultado de las expresiones matemiticas expresadas en lenguaje algoritmico de cada uno de Ios incisos. @) x= (a/b + d) mod c; 1) x= b+ amod (6/0) — d 4 (c mod a); 0) x= (((b mod a) mod d)*d) | (6-c)s Respuesta: a) x= (a/b + d) mod cy x= (3-5) +4) mod 2; Sustituyendo valores: x= (0+ 4) mod 2; x= 4 mod 2; x=0 D x= b+ amod (b/d — d* mod a); x= —5 +3 med(-52)—4%(2 mod 3); Sustituyendo valores: w=9/4=2 w x= 5+ 3 mad (—2) — 44 (2 mod 3): x= —5 +3 mod (-2)— 44 (2); x= —5 + 3 mod (—2) — 16; x=-541-1G x= -20 x= ((b mod a) mod dd) { (6 — 0: x= (((—5 mod 3) mod 2)"4) /(—5 —2);Sustituyendo valores: x= ((—2 mad 2)*4) /(—5 -2); x= (0%) /(—5-2); x= 0/(-5-2; x=0/-7 x=0 ‘demas de los operadores matemiticos es posible usar funciones marematicas, material que se ahor- dard on la siguiente unidad cuando se estudie el lenguaje a usar para la codificacia de algoritmos. Operadores relacionales. Se usan para comparar el valor de dos variables, el resultado de la compara ccién puede ser falso o verdadero. Por lo general este tipo de operadores se utilizan en las praposiciones de condiciones para controlar las veces que se ejecatan las instrucciones que se encuentran en ciclos. El simbolo del operador no es el mismo en los diferentes lenguajes de programacién, en sa momento se indicard cudl es el simbolo en el lenguaje a utilizar para la codificacién de los programas, pero los que se usardn en esta unidad se muestran en la siguiente tabla: ATROMEGA Jieez, JIMENEZ, ALVARADO Representacién del algoritmo 33 Operador [__ Significado >| Mayor que < Menor que >= | Mayoro igual que <= [Menoro igual que Igual a Diferente de Operadores légicos. Se utilizan en instrucciones condicionales 0 en ciclos en donde se requiere deter- minar si son falsas o verdaderas mds de una proposicién. Los operadores and y or son binarios, lo cual significa que se utilizan para relacionar dos proposiciones y el operador not es unario y se utiliza para negar © complementar una proposicién. La siguiente tabla muestra los operadores ligicas bisicos. Operador | Significado Fjemplo and y (x > y) and (m oF ° (> yor(m not no not (m == n) Una proposicién puede estar integrada por operadores aritméticos, operadores relacionales y ope- adores légicos, por tal raz6n es conveniente tener en cuenta la jerarquia de operacién en forma global Observar que la jerarquia de operacién de los operadores relacionales es mayor que la de los operado- res légicos y que en Ia evaluacién de la proposicién si se presentan operaciones aritméticas, éstas se evaltian antes, ya que tienen mayor jerarquia que cualquiera de los operadores relacionales o légicos Ejemplo 2.6, Sim = —3,n yx = —1. Determinar cual es valor booleano resultante, considerando que: 1= verdadero y 0 = falso, para cada uno de los siguientes incisos: @) not((m >= n) or (x = = w)) 5) (x worn ) do or (not(m > w) and w <= x) 4) = norm = n) oF nor((—3>=2) or (— Sustituyendo valores: not(0 or 0) ror) 1 La proposicién es verdadera para esos valores de m, n, Ww; x 8) (x < m) and not(m > w orn = =x) (=1 < -3) and not(=3 > 5 or 2 0 and nor(0 or 0) O and nor(0) Oand 1 0 La proposicién es falsa =+1) 4 (a! x) or (nor(m > w) and w (21= =1) or (not(—3 > 5) and 5 < 1 or (nor(0) and 0) Lor (1 and 0) Lord 1 Es yerdadera la proposicién mand not (w >= norm = 2 or —3 <2) or —1 Land not (1 oF 1) or 0 Land not (1) or 0 land 0or0 Dord 0 La proposicisn es falsa Ejemplo 2.7. Sia = 1,b = 3, c= —2yd = ~1. Dererminar cudl es valor booleana: 1= verdadero 0 = falso, para cada uno de los siguientes incisos e indicar cual es el mensaje impreso. 4) si(a <=d"c or not(c |= b) and 2" >= 4) imprimir “Rosa:”, 7*c: imprimir 4°d,° Lilt” 8) si (not((not(b =(d— 3*2) or not(b != d)) ) Evaluacién de la proposicion (a) (a<=d'c or no(c = b) and 2*b>=d) (1 <=(-1)"(-2) or not(—2 != 3) and 2°3>= —1) —_Sustituyendo valores (1 <=2ornor(—2!= 3) and 6>=—1) Primero operaciones aritméticas (Lornor(1) and 1) Después operadores relacionales (1 or 0 and 1) ] not tiene jerarquia sobre los dems operadores légicos AUROMEGA Jowesez, Jimenez, ALVARADO Representacién del algoritmo 35 (oro) El and tiene més jerarquia que el or 1 Come la proposicién es verdadera El mensaje impreso es: Rosa:—14 Eyaluacién de la proposicién (b) (not((nox(b =(d~3*a) or nox(b != d))) (not{(nor(3 < 1) or = 3*1) and 1>=(—1—3*1) or not(3 != —1))) (not((no(3 <1) or ~1 = = 3) and 1>= ~4 or not(3!= —1))) (not((not(0) or 0) and 1 oF not(1})) (nor((t or 0) and 1 or 0)) (not(1 and 1 or 0)) (nox(1 or 0) (not(1)) 0 ‘Mensaje: Mango: 6 Observar que la jerarquia de operacién sefialada anteriormente se respeta. Considerar también que la informacién entre paréncesis se evahia primero que la que esté ftera, y si el paréntesis es interno; se debe evaluar primero que los paréntesis exzernos. Los algoritmas también pueden representarse usando condicionales, ciclos, pracedimientos y funcio- rcs. Existe representacién grafica usada en los diagramas de lujo para indicar cada una de estas instruccio- nes compuestas como se muestra a continuacién. Instruccién, Representacién grifica Condicional simple. Si la con- dici6n se cumple se gjecuta el conjunto de Sentencias A y sino se cumple no se ejecuta ninguna. z v Si SS sentencias A licional doble. Sila con- dicibn se cumple se ejecuta el conjunto de Sentencias A y sino se cumple se ejecutan las sentencias B Sentencias A (continiia) FUNDAMENTOS NE PROGRAMACION ALFAOMECA 36 (contirmacién) Algoritmos Instruccin Condicional anidados. Si se cum- ple la condicién se ejecuta otro no se cumple también puede ejecutarse (0 no) otra condicional diferente. Pucde haber varias instruceiones condicional y condicionales anidadas, Condicional miitiple. Depen- diendo del valor de la variable (Op) se ejecutaré el blaque de instrucciones de la ruta 1, 2,...6 nn. Cuando el valor de Op no esti dentro de las opciones contem- pladas, podria no ejecutarse ninguna instrucciéa bien otro bloque de instrucciones alternas. ‘Mientras. Es un ciclo que ejecuta una serie de sentencias (0 ins- ‘trucciones) mientras se cumpla la condicién indicada en el rombo, una ver que deje de cumplirse la condicién, se sale del ciclo, Sentencias Hacer—Mientras. Ejecuta una se- tie de instrucciones desde donde se encuentra la palabra “Haces” mientras se cumpla la condicién planteada dentro del rombo. Una vez que se deje de cumplir dicha condicién abandona el ciclo, Hacer = Instrucciones Mientras AtROMRCA Jieez, JIMENEZ, ALVARADO Representacién del algoritmo 37 (continuacién) Tnstruccién Representacién grifica Desde/Para, Este ciclo ejecura una serie de instrucciones. El ntimero de-veces que se ejecutan se conttola por medio de una E variable que ge inicializa con un [ee valor “Jnicio”, en cada iteracién la vidiable vubbe un increments [ino “Incre” (0 dectemento). El blo- = Instrucciones => que de instrucciones se ejecuta mientras la condicién “Cond” sea verdadera, Todos los ciclos tienen tres elementos para controlar el ntimero de veces que se ejecutan las instruc- clones que se encuentran dentio de ellos. Estos elementos son: + Un inicio (por ejemplo i =1, i = 0, i = x, etc.) que se coloca antes del ciclo para inicializar la variable controladora de las iteraciones + Una condicisn (ejemplo i>n, i= Observar que la principal diferencia entre los ciclos Mientras y Hacer—Mientras ¢s principalmente la colacacién de la condicién, en Mieniras esta al principio y en Hacer—Mientvas est al final, por esta rarén suffer: un cambio ea el planteamiento de dicha condiciéa. Una salida tipica para otros valores es como se muestra: Desde: —23 Hasta: 18 Suma = —105 =4, la salida es “Sum: Para los valores d= 12 y = 12" debido a que ejecuta una ver has instrucciones| ATROMEGA Jieez, JIMENEZ, ALVARADO Representacién del algoritma 4 Sum=Sum+d (Sum=0+12) yd=d+1 (d=12+1). Si se hubiera querido que no se ejecutaran ninguna ver las instrucciones que estin dentro del ciclo, se tendrfa que determinar ances del ciclo si d es menor que h, en caso contrario invertir los valores, mandar el mensaje correspondiente (ejemplo “Interval no vilido”) o bien usar oro ciclo que na sea Hacer—Mientras En los tres casos anteriores; se tiene un contador de iteraciones controlado por la variable d, a la cual se le asigna un valor inicial, un incremento y una condicién. Observar también que cuando se desea reali- zar una suma, la variable encargada de llevar a cabo dicha actividad se debe inicializar con cero (sum=0) antes del ciclo y se incrementara dentro del ciclo (sum=sum-+d): En este caso se incremensa en cada paso porque as! lo requiere el problema, pero algunas veces dicha variable se incrementaré solamente si se cumple una condicién (por ejemplo si desean sumar solamente los elementos divisibles entre 4, dentro del cielo se requiere una instruccién condicional que permica incrementar la suma solamente cuando se cumpla la condicién correspondiente). Ejemplo 2.9. Blaborar un diagrama de flujo para encontrar el érea de las figuras geométricas bé- sicas. Se desea leer primeramente la figura geométri- ca representada por un cédigo numérico y posterior mente leer sus dimensiones de acuerdo a la figura que se uate. Considerar gue las figuras geomézricas se representan por un cédigo numérico de acuerdo al siguiente: 1: Triangulo, 2: Rectdngulo, 3: Cua~ drado, 4: Circulo. Considerar que si el usuario in- gresa un cddigo inexistence, debe mostrase el men- saje “Cédigo no vélido” e imprima area igual a cero. Algunas salidas tfpicas al efecutar el programa so Lado: 5 Area = 25 Figura: 80 Cédigo inexistente ‘Area = 0 FUNDAMENTOS NF PROGRAMACION ALROMEGA a2 Algoritmos En el diagrama anterior te lee el cddigo de la figura geomézrica y dependiendo de dicho cédigo se lee- ride weelado la dimensién requerida para calcular el 4rea de la figura, en el caso del triéngulo y reetdngulo se requieren la base y altura, para el cuadrado es suficiente un lado, asi como para el circulo la dimension que permite calcular su drea es el radio. Después de leer las dimensiones de la figura correspondiente, se calcula el érea e imprime su resultado, En este caso se identifi la figura geométrica usando la instruccién condicional milriple Seleccionar pero bien pudieron haberse usado condiciones dobles anidadas para determinar de qué figura geométrica se trata. Ejemplo 2.10. Elaborar un diagrama de flujo para leer ntirneros de teclado, contarel total de datos leides; contar, sumary promediar _{ Dame los niimeros: los mimezos que son divisibles entre 7. Dejar de leer datos hasta que | 10 ‘usuario introduzca como dato el nimero 999 sin considerar éste 21 ultimo. F Para programas pequefios no hay mejor andlisis que imaginar | 55 Ja informacién que mostrars la pantalla al momento de ejecutar el | 14 programa. Considerar que la incerfaz de salida es la siguiente: 999 “Total de datos: 5, Divisibles: 3 Suma: 42, Promedio: 14 Donde: Leidos: Datos leidos de teclado. Parar: Terminar de ejecutar cuando Parar = 1 x: Dato lefdo de teclado Prom: Promedio de los datos divisibles entre 7 Mice Pr = Sumi] ATROMEGA Jieez, JIMENEZ, ALVARADO Representacién del algoritmo 43 En el diagrama de fujo anterior se utilizé el ciclo “Mientras” para ejecutar varias veces las instruccio- nes que se encuentran dentro de él. La computadora ejecutaré dicho bloque de instrucciones hasta que “Parar” deje de valer 0, lo cual sucede cuando se lee el valor de 999 en x. También se puede observar que cuando se cuentan y suman cantidades es necesario inicializar en cero las variables que se ucilizarsn para llevar a cabo este control, en este caso son: Leidos, Divis y Suma, variables que se incrementarin en cada iteracién. Ciclos anidados. Al momento de elaborar programas es comtin que se requiera uno © més ciclos dentro de otro, Esto permite ejecutar varias veces un bloque de instracciones que se encuentran dentro de ellos. Se pueden combinar los ciclos: Mientras, Hacer—Mientrasy Desde, segiin sea necesario. Ejemplo 2.11. Elaborar diagramas de flujo para imprimir las tablas de multiplicar del 1 al 10 Usando ciclos anidados de acuerdo a los siguientes incisos: @) Dos ciclos Desde, 5) Un ciclo Desde dentro de un ciclo Mientras ©) Un ciclo Mienéras dentro de un ciclo Hacer—Mieniras, Considerar que una salida tépica es como lo muestra la siguiente interfaz: “Tablas de Multiplicar del 1 al 10 “Tabla del 1 1x1=1 1X2=2 1x 10= 10 “Tabla del 2 2x1=2 ax2=4 2X 110 = 20 “Tabla del 10 10X 11=10 10x 12=20 10 X 110 = 100 FUNDAMENTOS NE PROGRAMACION ALROMEGA Con dos ciclos Desde “Tablas de “Tablas de Mulciplicar Multiplicar del 1 al 10” del 1 al 10” Algoritmos Un ciclo Desde dentro de un Mientras Mientras FE En este caso no fue necesario leer nada de teclado porque el problema no lo pide, sino que al momen- to de ejecutar el programa la computadora desplegard en la pantalla las tablas de multiplicar del 1 al 10 en forma vertical, como lo muestra la interfaz de salida. En caso de que se deseen las tablas de multiplicar de n'a m, se deberdn leet los valores de n y m antes de los ciclos anidados y cambiar el 10 por la letra que corresponda. De la misma manera si se desea que las tablas estén distribuidas de otra forma se tendrén que hacer los arteglos cortespondientes al diagrama de fujo. Observar que en el primer diagrama el simhalo ‘grifico del ciclo Desde se invierte con la finalidad de ocupar menor espacio. En ambos diagramas primeramente se imprime el mensaje “Tablas de multiplicar del 1 al 10”, poste- siormente se le asigna el valor inicial ala variable a (a= 1). Después de asignar el valor inicial se preguntard si se cumple la condicién (a<10), si es verdadero imprime el mensaje de la primera tabla “Tabla del 1” considerando que el mensaje entse comillas lo imprime tal cual, y la Jetra ‘a? la sustituye por su valor. A continuacién asigna el valor inicial ala variable b (b=1), pregunta si se cumple la condicién (b<10), en caso afirmativo imprimiré la primera linea de la primera tabla “1 x 1 = 1”. Observar que los textos estén entre comillas y las variables no deben tener comllas, ya que se requiere el valor de dichas variables no las ATROMEGA JIMENE?, JIMENEZ, ALYARADO Representacién del algoritmo 45 letras, observar también que las comas actian como separadores de textos y variables pero no aparecen en la salida, Notar también que es posible realizar operaciones dentro de la instruccién imprimir (En lugar de esto se pudo haber multiplicado antes los valores de la variables, ejemplo c=a"b y después en la instruccién imprimir en lugar de a*b colocar la variable ©). Después se incrementa el valor de b (b=b+1) y se pregunta si se cumple la condicién (b<10), como es verdadero se imprime la segunda linea “1 x 2 = 2°. Posceriormente la variable b coma el valor 3, 4, 5,...10y 11, cuando b=11 se sale del ciclo e incrementa el valor de a (a=a+1) y pregunta si se cumple Ja condicién (a<10), como es verdadero imprime el mensaje de la segunda tabla “Tabla del 2°, e inicia- liza nuevamente la letra b (b=1), pregunta si se cumple la condicién (bs10) y as sucesivamente; de tal ‘manera que se puede observar que cada vez que se incrementa el valor de la variable a en 1, Ia variable b se incrementa 11 yeces aunque este iltimo valor solo le sirve para que deje de cumplisse la condicién del ciclo y salir de él, Un ciclo Mieniras dentro de un Hacer—Mientras, Observat que el ciclo Hacer—Mientras comienaa a partir de donde estd la palabra “Hacer” y termina donde esta el segundo rombo con la palabra “Mientras”. Se nota claramente que el ciclo Mientras controla la variable b y que estd anidado en el ciclo Hlacer—Mientras que controla la variable a. “Tablas de Maltiplicar del 1 al 10" Mientras FUNDAMENTOS NE PROGRAMACION ALROMEGA 46 Algoritmos 23.3 Pseudocédigo F] Pseudocédigo es una manera aproximada de representar algoritmos usando para ello palabras de tin idioma nacural para simular un lenguaje de programacién, indicando los pasos que integran dicho algo- ritmo, El pseudacédigo esta hecho para que las personas representen 0 comprendan de una manera clara ¥ sencilla el funcionamiento del algoritmo. Aunque las computadoras no pueden entender esta forma de representaci6n porque no es un lenguaje de programacién, El pscudocédigo no obedece a reglas sinticticas de ningdn idioma en particular y puede cambiar de una fuente de informacién a otra porque no es una representaci6n estandarizada, ya que una persona puede represencar los pasos del algoritmo de una manera muy cercana al lenguaje de programacién que utilizard al momento de codificar el programa, o bien representar esos pasos del algoritmo apegado a una narracién de lo que se hace, con lengnaje narural y apoydndose con algunos simbolos matemticos, Cnan- do se utiliza pseudocédigo por lo general se omite la declaracién de las variables y la llamada de funciones 6 procedimientos por lo general son reemplazadas por medio de una frase en lenguaje narural que indica lo que debe hacer la fancién o procedimiento que sc esti lamando. El pseudocédigo facilita la programacién y salucién de problemas, es ficil de utilizar y manejar, es independiente del lenguaje de programacién que se usard para la representacién del problema, lo cual lo hace transportable, los algoritmos representados con pseudocédigo son compactos ya que a diferencia de los diagramas de flujo no requieren de mucho espacio. Mas alld de las ventajas anteriores, el pseudocédigo permite la representacién de algoritmos de manera clara, concisa y comprensible para todas las personas, ya que no se requiere conocer algtin lenguaje de programacién para entender los algoritmos representados con pseudocédigo. ‘A continuacidn se presenta simbologia de los diagramas de flujo con su equivalente en psendocédigo. Las palabras clave propias del pseudocédigo se distinguen de la informacién restante, porque estén escritas en mintiscula y con letra cursiva. ‘Equivalencias roe Diagrama de flujo Pscudocédigo leerx Imprimir “Suma:” s (contintia) ATROMEGA Jieez, JIMENEZ, ALVARADO Representacién del algoritma (continuacion) a7 ee de fiujo y psendocsdigo Diagrama de flujo Pseudocédigo = Sentencias A — st (way) inicio Sentencias A Si se cumple la condicién ejecuta las sentencias, A que estan entre inicio y fin. En caso contrario ajecuta las sentencias B también encerradas entre inicio y fin si ey) Sentencias B fn i (oy) i (m=b) "Sentence A inicio Sentencias B fin sino si (ew) inicio Sentencias C fin Sentencias D fia Fowpanmtos nr PROGRAMACION Atmounca 48 (continuacién) Algoritmos __ See 4 la 4 Dependiendo del valor de la variable op se ejecu- tard el bloque del caso 1,2,3,..2n 0 bien el bloque alterno (sino), en caso de que no se seleccione alguna de las opciones contempladas. Observar que después de ejecutar el bloque de sentencias correspondiences a cada opcién se debers romper para que no siga ejecutando las sentencias de otras opciones Seleccionar (op) caso 1: Sentencias A romper caso 2: Sentencias B romper Sentencias alternativas romper fin scleecionar mientras (>y) Sentencias fin >> |_ Hacer = Instruciones ¥ Micneras hacer Instrucciones fin mientras (weve) AtROMRCA Jieez, JIMENEZ, ALVARADO Representacién del algoritmo 49 (continuacion) ee ee Pseudocsdigo desde (x= 13 x<) E —--- Vv Instrucciones Instrucciones == Ejemple2.12, Escribis un algoritmo en pseudocédigo para imprimir una tabla de equivalencias entre las temperaturas Centigrada (C), Fahrenheit (F) y Kelvin (K). Leer: inicio, final e incremento en grados centigrados y realizar los cdleulos necesarios para estructurar la tabla, considerande que las férmulas para convertir de una escala a otra son: Fe2ces2 K=C+273.1 5 inicio rea! C, EK, incre, m5 imprimir “Inicio:”; teers . Una salida vipica es: ‘mprimin “Incremento:"; leer incre; Inicio: —40 imprimin Finale"; Inctemento: 10 ber a; Final: 100 imprimir Fahrenheit Kelvin’; Centigrados Fahrenheit Kelvin amienoras (C<= n) 40 -40 233.1 inicio -2 243.1 ICIS + 32; + 273.1; En el algoritmo no se esté validando la informacién. Por ejemplo se espera que el usuario ingresard tuna cantidad numérica pata: inicio, incremento y final, pero no considera el caso en que se le den letras como datos, tampoco contempla el caso en que el limite de la tabla sea menor que el inicial. Por conve- niencia se usa la temperatura centigrada leida inicialmente como C, para evitar utilizar otra variable. FUNDAMENTOS NE PROGRAMACION ALROMEGA 50 Algoritmas Ejemplo 2.13. Escribie un algoritmo en pseudocddigo para desplegar en la pantalla la siguiente lista de precios: Cédigo Producto Precio 1 Hamburguesa $25.00 2 Hot dog $18.00 3 Refresco $10.00 Considerar que se lee el cédigo del producto y la cantidad de productos correspondientesa ese cédigo ¥y que con esos datos calculard un subtotal. Se estard leyendo el cédigo y la cantidad de un producto hasta ‘que el cédigo leido sea “99” Io cual significa que ya no hay mas productos que leer € imprimird el total de a cucnta, Una salida ipica lo muestra la siguiente interfaz. Producto Hamburguesa $25.00 Hor dog Refresco Cédigo: 2 Cantidad: 3 3 Hot dog = $54.00 Dédigo: 3 Cantidad: 4 4 Refrescos = $40.00 Céidigo: 99 Total = $94.00 entero cod, tor, cant, sbrot: imprimir *Cédigo Producto Precio”; imprimir’ 1 Hamburguesa $25.00"; imprimir’ 2. Hot dog $18.00"; imprimir” 3 Reftesco $10.00"; tot = 0; mientras (cod = 99) imprimir °Cédigo: "; leer cod: si (cod != 99) imprimir *Cantic leer cant; selecetonar (cod) ALFLOMECA [Jisenez, JIMENEZ, AINARADO Representacién del algoritmo 51 caso 1: subtot = cant*25; imprimir cant, “Hamburguesas = ",subtot, romper: caso 2: subtor = cant 18; imprimir cant, “Hot dog = ” subtot; romper: caso 3: subtot = cant*10: imprimir cant, * Refrescos = *subtot; romper: sino: imprimir Cédigo no vilido:"s subtor=0; romper fin seleccionar tor = tor + subtor; fin imprimir “Importe total= $” tot; fin La finalidad de dar un valor de cero ala variable cod (cod=0) antes del ciclo mientras, es para que pueda enuar al cielo, igual funciona con oxo valor diferente a 99 porque ese valor lo cambia inamediacamence al ingresar al ciclo. Observar que las inscrucciones del ciclo mienzras se deberin encerrar entre las palabras inicio y fin, para delimitar as sentencias que se ejecurarn mientras se cnmpla la condicién. La instruccién “selec~ cionar (cod)", debers encerrar entze inicio y fin todas sus opciones, pata indicar hasta donde llega su alcance. Cuando el cédigo es vilido (1, 2.0 3) ls sentencias a ejecutarse comienzan después de los dos puntos de la opcién y terminan al legar a la palabra romper: Si no se le pone romper cada uno de los casos de seleecionar, Ja compuradora seguiria ejecutando instrucciones aunque dichas sentencias pertenezcan a un caso diferente. Es obvio que la salida no es muy estética porque no se estan usando eajas de texto, tipos de letra, colo- res, coordenadas de pantalla y otras instrucciones grificas propias de todos los lenguajes de programacién para dar una presencaci6n bonita, pero no hay que perder de vista que estos son los primeros algoriumos y que todavia no se est usando ua lenguaje de programacién. 2.3.4 Diagramas Nassi—Shneiderman (N—S) Fueron desarrollados en 1972 por Isaac Nassi y Ben Shneiderman con la finalidad de representar los algo- ritmos combinando palabras clave del pseudocédigo (inicio, fin, repetir, hasta, mientras, hacer, desde, sis entre otras) con las figuras geométricas de los diagramas de flujo (cuadvos, rectingulos y tridnguloi), agru- pando los elementos de tal manera que permitailustrar con mayor claridad la estructura de los algoritmos. En todos los lenguajes de programacién es necesario definir las variables para el manejo de informa- cidn como algén tipo de dato conocido (entero, real, cadena, booleana, ecc.). La definicién de variables se considera en los diagramas N—S con el objetivo de acercarse més al lengusje de programacién a utilizar. La manera de declarar las variables es escribiendo el tipo de dato y la lista de variables que tendran ese tipo de dato como se muestra a continuacién: FUNDAMENTOS NE PROGRAMACION ALROMEGA 52 Algoritmos entero base, altura; real area, volumen, perimetro; ‘caracter simbolos cadena nombre: Lo cual significa que las variables “base” y ‘altura? pueden manejar cantidades enteras, “irea”, “vo lumen” y “perimetro” cantidades reales, la variable “simbolo” puede mangjar una letra, un nimero o ‘cualquier ouro caracter y finalmente la variable “nombre” maneja cadenas de caracteres conformadas por letras y/o mimeros. De la misma manera que en los diagramas de flujo y pseudoeSdigo los diagramas N~S tienen una forma de representacién para cada una de las instrucciones usadas en la representacién de algoritmos. A continuacién se tiene una tabla de comparacidn entre pseudacédigo y los diagramas N~S Pseudocddigo Diagrama N-S inicio Takei fin fin x= 34-1 3-1 Leer ab kerb imprimir “Suma=",s imprimir “Sama si Gey) inicia Vv x=y r fin sino inicio Sentencias A Sentencias B Sentencias B fin (contimia) ATROMEGA Jieez, JIMENEZ, ALVARADO Representacién del algoritma (continuacion) 53 Pseudocédigo Diagrama N-S si@e>=y) sitw = = b) Sentencias A fin inicio Sentencias B fn sino si (a b FE Pro Paso ‘mientras (Paso < Men) Inicio Prod = Prod May: Paso = Paso + 13 Fin imprimir a, "©, b, =", Prod, fin, jemplo 2.15. Escribir un algoritmo en: @) Diagrama N-S 5) Diagrama de flujo. 2) Pseudacédigo. Para imprimir todos los posibles valores de las fichas del domi- né. La salida se muestra en la interfaz. 4) Diagrama N-S 5) Diagrama de Flujo Inicio entero a,b desde (a=0; a< =6; a=a+ 1) desde (b=0; b<=6; b=b+1) imprimir a,“ F fin 3 > FUNDAMENTOS NE PROGRAMACION ALROMEGA 56 Algoritmos 9) Pseudocédigo desde (a= Osa<: desde ( imprimir a, fin Al correr el programa en este caso no es necesatio leer ninguna informacién de teclado ya que la salida seré la misma cada vez que se ejecuta. Observar que dentro del ciclo deide (a0; a<=6; a=a+ 1) sola- mente esté la instruccién desde (b= 0; b<=6; b=b+ 1), y que dentro de este tiltimo ciclo esta solamente a instruccién (imprimir a, “—"b), raz6n por la cual no fue necesario utilizar las palabras inicio y jin para agrupar las instrucciones que pertenecen a cada uno de los ciclos. Recordar que se usan inicio y fin sola- mente cuando hay més de una instruccién dentro del ciclo, Ejemplo 2.16. Escribir un algoritmo para encontrar el factorial de un miimero entero positivo en: a) Diagrama N—S usando ciclo hacer—mientras 2) Pseudocddigo usando ciclo desde. ) Diagrama de flujo usando ciclo mientras Respuestas: 4) Diagrama N~S con ciclo repetir Inicio entero n, fact, X; imprimir “Nismero: "; eer 0 Interfaz. de salida Recordar que: o=1 xexth i X2X. xn mientras (=y andy>=7) retornar tes; fn ‘Al ojecurar la funcién con mayor(a, b, c), “x” toma el valor de “a”, *y” toma al valor de “b” y “2” toma el valor de “ec”, se realizan los cilculos y cuando se regresa el resultado de la funcién se destruyen los valores dex, y, ¥ 2 ya.que solamente son reconocidos dentro de la funcién. Observar que la funcidn es un pequefio subprograma el cual se ejecuta al momento de invocarlo con el nombre de la funcién y los pardmeusos comespondientes mayor(a,b,e). En este ejemplo se invoca la ATROMEGA Jieez, JIMENEZ, ALVARADO Disefio de algoritmos de funciones 61 fancién en a instruccién que imprime el mayor de los mtimeros leidos, pero podria haberse asignado 2 tuna variable previamente definida antes y posteriormente imprimie dicha variable, a la cual se le asignd el valor con los siguientes dos lineas: = mayor(a, b, c); imprimir “El mayor de ”,a, “,"sb, “y"sc, “ es:”15 Es importante mencionar que en este libro se presenta solamente una de las maneras en que puede desarrollasse un determinado algoritmo y seguramente la solucién que se muestra ni siquiera es la mejor. En programacién las cosas se pueden realizar de diferente manera, por ejemplo la lectura de las variables a, by c podrfa haberse realizado con el par de inscrucciones siguientes en lugar de leerlas por separado. imprimir “Dame los valores de las variables a, b y c, separados por comast ”; leer a,b,c Lasalida cambia ya que en este caso la Jectura se lleva a cabo en una sola linea y como se muestra en el algoritmo anterior requiere de una linea para la lectura de cada una de las variables. Lo que determina las inscrucciones y su colocacién en este caso, es la presentacién de la salida. Es conveniente tener en cuenta que el ntimero de argumentos y tipos de datos de cada uno de ellos, deben de coincidir con el mtimero, posicién y tipo de dato de los parimetros de la funcién. Esto significa que sila funcién requiere tres datos de los cuales el primero es el nombre de un producto (dato tipo cade- nna), el segundo es una letra (data tipo caracter) y el rercero un niimero (dato entero a real) y el resultado dela funcidn es una cantidad real entonccs la funcidn podria tener cl siguiente encabezado: real precio (cadena marca, caracter presentacién, entero capacidad) inicio real pres; Definicién de variables Instrucciones de la funcién retormar pres; fin La llamada a la funcién: p = precio(s, y, 2) en donde x=marca="corona”, y=presentacién: z=capacidad=600 encontrarfa el precio (tipo rea!) de la cerveza marca corona, presentacién obscura (o) y capacidad 600 (600 ml) y lo retornard con la variable pres, para asignarlo finalmente a p. Los parimetros ‘marca (x), presentacién (5), capacidad (2), correspondientes deben coincidir en posicién y tipo de daro. Ejemplo 2.20, Elaborar un algoritmo para sumar n términos de la siguiente expresién matemitica: 3x7 Usar una funcién para encontrar el valor del numerador y otra para calcular al valor del denomina- dor en cada paso y considerar que x es un mimero real que se lee de teclado. Una salida tipica es como se muestra a continuacién. FUNDAMENTOS NE PROGRAMACION ALROMEGA 62 Valor de n: 5 Valor dex: 74 Resultado=10.314 4g MR TA? | 502.74)" 7122.74)" 9122.74)" 2 3! 4! 5! inicio _* Programa principal */ real x, sama; entero n, coeficiente, exponente, t; imprimir “Valor de n:"3 leer ni; imprimir *Valor de x"; leer x; exponente coeficiente mientras (t< = n) suma = suma + numerador(coeficiente, x, exponente) / factorial(t); exponente + 1; coeficiente + imprimir “Resultado= fin suma; real numerador (entero coeficiente, real x, entero exponent) real calculo; calculo = coeficiente * («exponente); retornar calculo; fin «entero Factorial (entero w) inicio entero i, f retormar F fn Atssourca Algoritmos Jnvener, Jrsenz, Arvanano Disehio de algoritmas de fanciones 683 Este algoritmo est integrado por dos funciones y el programa principal. Programa principal. Se definen las variables x, suma del tipo real, porque ambas variables debern manejar cantidades de tipo real. Las variables n, coeficiente, exponente, t son de tipo entero, porque son las caracteristias de los datos que usarén. Se lee informacién de teclado y se inicializan algunas variables con los valores mas convenientes antes del ciclo mientras, dichas variables se incrementan dentro del ciclo porque asi se requiere. Observar también que la Iinea: suma = suma + numcrador(cocficiente, x, exponente) / factorial(0); Hace el llamado a las funciones numerador y factorial invocindolas con: numerador(coeficiente, x, exponente) y factorial(t) respectivamente. Al momento dal llamado de la fancién, los parimetros toman los valores correspondientes. Funcién numerador(coeficiente, x, exponente). Cuando se invoca esta funcién, los valores de los pardmetios dea funcién coman el valor de las variables del programa principal, se realizan los célculos cortes- pondientes y se retorna el resultado obtenido. Observar que el nombre de las variables del programa principal es el mismo que el nombre de los pardmewros de la funcién, pero la computadora crea diferentes localidades para las variables y para los argumentes. Dentro de la funcidn el valor con el que realiza las operaciones es el de los argumentos, de la misma manera que dentro del programa principal el valor que considera es el de las variables. Cuando sale de a funcién destruye sus argumentos y variables locales que se hayan definido dentro de esa fancidn y se queda solamente con los valotes de las variables del programa principal. Funcién factorial (t). Esa funcién solo tiene un pardmetro (is) y se definicron las variables locales enteras (6) que solamente son conocidas dentro de la propia funcién. La funcién se invoca con: fuetorial (t),en 20 ‘momento w toma el valor de t (w = 1) y con dl calcula su factorial, las variables iy fse uilizan como auniliares para realizar el cilculo, pero tanto el parimetro w como las variables i yf se destruyen al salir de la funcién. 2.4.2 Funciones recursivas El resultado de una fancién recursiva depende del resultado de la misma fancién para otros valores. Una caracteristica de las Funciones recursivas es que se invocan de si misma. Se debe tener cuidado al momento de programar una funcién recursiva, ya que su ejecucién podria prolongarse indefinidarente y no terminar jamés, En forma natural cuando se ejecuta una funciéa recur- siva la computedora va introduciendo valores indeterminados en una pila hasta llegar a un valor conacido. A.ese valor conocido se le llama “Punto de retorno”. Ese valor Jo sustiruye en la expresign que genera el “timo valor no decerminado que esté encima de la pila, para calcular el nuevo valor conocido, mismo que sustituye en la nueva expresién que esti ahora encima de la pila y asf sucesivamente hasta que la pila se quede vacia y obtener de esa manera el resultado buscado. Las fanciones recursivas reciben también el nombre de funciones “bumerin” (boomerang) porque van guardando valores no de:erminades en la pila, hasta obtener un valor conocido y en ese momento regresa sobre su propia trayectoria, sacanda cada elemento de la pila y decerminando su valor, hasca llegar ala primera expresidn de la pila que le permitiré calcular el valor buscado. Ejemplo 2.21. Encontrar por medio de una funcién recursiva el factorial de una cantidad. entero Factorial(entera 0 ) entero Wi si (a FUNDAMENTOS NE PROGRAMACION ALROMEGA Algoritmos w= factorial(a~1)*n; retornar ws fn Una simulacién de la ejecucién de la funcién recursiva faccorial se muestra a continuacién para n=6, n=6 | factorial(5)*6 n=5 | factorial(4)*5 factorial(5)*6 n=4 | factorial(3)*4 factorial(4)*5 Factorial(5)*6 n=3_ | factorial(2)*3 factorial(3)*4 factorial(4)*5 factorial(5)*6 n=2_ | factorial(1)*2 factorial(2)*3 factorial(3)*4 factorial(4)*5 facrorial(5)*6 n=1 | factorial(1)*2 Factorial(2)*3 factorial(3)*4 Factorial 4)*5 factorial(5)*6 factorial(2)*3 factorial(3)*4 factorial 4)*5 factorial(5)*6 ATROMEGA En el programa solamente esti determinado al valor w= 1 cuando ne= 1, de tal manera que para n=6 guarda en Ia pila la expresién matemética que no le permite saber su valor Nuevamente guarda en Ia pila la expresion que no le permite encontrar el valor del factorial para n=5 Guarda en la pila la expresién que no le permite encontrar el valor del factorial para n=4 Guarda en la pila la expresin que no le permite encontrar el valor del faccorial para n=3 Para n=2 nuevamente no se puede determinar el valor de tal manera que debe guardarlo nuevamente cn la pila. Para n=1 ya.es posible determinar su valor ya que factorial(0)*1= conocido como el punto de retorno. Lo cual significa que fuctorial(1)=1 te es Se saca dela pila la expresién que esté en la cima y se llevaa cabo la eva- Juacién con valores conocidos. factorial(1)*2= 1*2=2. Esto implica que faccorial(2)=2 Jieez, JIMENEZ, ALVARADO Diseio de algoritmos de fanciones 65 faccorial(3)°4_| se caca nuevamente de la pila la expresién que esté en la cima y se lleva faccorial(4)*5_ | a cabo la evaluacién con valores conocidos, factorial(2)*3=2°3— Facroria(5)°6 | implica que factorial(3)=6 factorial(4)*5_| Se saca la expresién de la cima. factorial(3)*4=6"4=24, Esto implica que facrorial(5)"6 | factorial(4)=24 Extrayendo la expresién de la pila y realizando la evaluacién:. facto- facrorial(>)°6 J 5.1(4)#5=24*5= 120, Esto significa que factorial(5)= 120 Finalmente se extrae de la pila Ia tiltima expresion y realiza la operacién para ‘encontrar cl resultado final factorial(5)*6= 120*5 =600. Lo cual significa que el resultado buscado es: factorial(6)=600 Es obvio que si se compara la funcién que no es recursiva para encontrar el factorial, con la que si lo es, posiblemente se concluya que es mis dificil de encender la funcién recursiva, pero dependiendo del problema que se trate, la programacién de funciones recursivas permite crear algoritmos més compactos, rapidos y patentes, ya que aprovechan su propio cédigo. Ejemplo 2.22, Escribir un algoritmo que permita encontrar el niimero de Fibonacci que estd en la posicién n cuya serie es la siguiente: 1, 1, 2, 3, 5, 8, 13, 21,.... Los dos primeros elementos de la serie de Fibonacci son 1 y a partir del tercer elemento los dems se encuentran sumando los dos elementos ante- riores a él, ejemplo: 1+1=2, 1+2=3, 2+3=5, ete. Escribir una funcién no recursiva y posteriormente obtener la funciéa recursiva equivalence. Salidas tipicasa este programa son: Elemento: 6 Elemento: 3 Elemento: 10 Es=8 Es=2 Es=55 inicio [* Programa principal */ entero a; imprimir “Elemento: "; leer imprimir “Es =", ibonacci(n); fin entero fibonaccilentero x) [* funcién recursiva */ inicio entero siR< cml = fibonacci(x—1) + fibonacei (x~2)s retornar fin FUNDAMENTOS NE PROGRAMACION ALROMEGA 66 Algoritmos entero Fibonacci (enterox) — |* funcién no recursiva */ entero elemento, a, b, cs six<=1) b= cath; dlemento = 3; mientras (elemento < x) inicio elemento + 15 Enel caso de la funcién recursiva. La computadora guarda cada uno de los valores indeterminados en la pila como se muestra a concinuacién: Considerar que se quiere encontrar el elemento 6 de la serie de Fibonacci. Por lo tanto: n = 6, Cuando se llama la fancién, x toma el valor de n, (x = 6). De tal manera que los elementos que en- tran ala pila pata los correspondientes valores de x se muestran a continuacién. 2| = fbonacci(1) + fibonacci(0) 3 = fibonacci(2) + flbonacci(t) 4| = fibonacci(3) + fibonacci(2) 5 ) 6 ) ( (4) + fibonacci(3) = fibonacci(5) + bonacci(4) = fibonacci El elemento que se encuentra en la cima de la pila ya es posible determinarlo porque se cumple que: (x < = 1). De tal manera que sacando los elementos de la pila y realizando las evaluaciones correspon- dientes se tiene: fibonacci(1) + fibonacci(0) fibonacci(2) + fibonacci(1) fibonacci(3) + fibonacci(2) fibonacci(4) + fibonacci(5) +1 +1 +2 +3 Finalmente la funcién regresa el valor abtenido. ATROMEGA Jieez, JIMENEZ, ALVARADO Disehio de algoritmas de fanciones 7 Lafuneién no recursiva. Usiliza las variables ay b, mismas que se suman para encontrar el nuevo ele- mento € dela seric, En cada iteracién se realizan intercambios de valores entre ab y ¢, de tal manera que el valor de b lo toma ay el valor de e se le asigna ab, y se vuelvea llevar a cabo la suma de ellas para encontrar el valor de ¢ (c = 2 + b). La variable elemento se usa para contar los elementos de la serie de Fibonacci, Es posible observar que los algoritmos recursivos por lo general son més compactos salvo algunas excepciones como sucedié con el factorial, de ral manera que Ia decisién de cual utilizar depende del programador. ‘Al momento de codificar el programa solamente debe elegirse una de las dos finciones, la recursiva o la no recursiva dado que el resultado obrenido es el mismo aunque la codificacién de las fanciones scan diferentes, 2.4.3 Procedimientos Procedimientos. Cuando una funcién no regresa valor algun se llama procedimiento. Se puede decir que un procedimiento es un grupo de instrucciones para llevar a cabo alguna actividad. Los procedimientos también pueden requerir (o no) pardmetros en el momento de la ejecucién. A diferencia de las funciones que cuando se hace el llamado son parte de una inscruccién, los procedimientos pueden ocupar una sola linea al momento de llamarse para su ejecuci6n. Los procedimientos tienen al siguiente formato general: nombre(sipa p,. tipo p.y-...tipo p,) inicio Donde: tipo vx, nombre: Es el nombre del procedimiento tipo v3 PoePayeo=-Pet Pardmetos 1,2y. oo =--=- tipo: Tipo de dato (entero, real, cadena. caracter, Instrucciones del procedimiento; booleano, flotante, etc.) =---- YW peso Variables locales fin Argumentos por valor. El paso por valor consiste en mandar el valor de las variables al correspon- diente argumento del procedimiento (0 funcién). Realmente lo que se envia es una copia dal valor de la variable. El valor manejado en los parimetros denuo del procedimiento es local, de tal manera que Ja modificacién de los mismos no afecta el valor de las variables que estan fuera de ese procedimiento. Axgumentos por referencia. Si un procedimiento tiene un argumento por referencia, dicho argu- mento no recibe una copia del valor sino la posicién y valor en memoria de una variable, Por lo tanto; cualquier modificacién del parémetro tiene efectos sobre la variable cuya localidad se le envié (argumen- tos). Se debe especificar claramente el paso por referencia de un argumento anteponiendo una palabra reservada. En esta unidad se le antepondrs la palabra “ref”, pero dependiendo del lenguaje, la palabra reser- vada que se antepone es diferente, de tal manera que se hard la indicacién que corresponda cuando se trabaje con el lenguaje de programacién, En el procedimiento siguiente w se estd definiendo como un argumento por valor, y x es un argu- ‘mento por referencia. rojo(entero ws, entero refx) entero abs Inscrucciones del procedimienco FUNDAMENTOS NE PROGRAMACION ALROMEGA 68 Algoritmos Sila llamada es rojo(edad, altura) para el procedimiento anterior, el valor de edad no sufre los cam- bios que se ke realicen dentro del procedimiento 2 la variable w. Sin embargo la variable altura registra los cambios 0 modificaciones de la variable x porque no se esti modificando el valor de x sino que se trabaja ‘con el valor de la variable altura, aunque en el procedimienco se le haya dado el nombre dex. Ejemplo. inicio [* Progeama principal */ entero coral, n,m; imprimir *Valor de a": leer 3 imprimir "Valor de m:"; leer ra; toral = verde(n); azul(m); imprimir “n= "0," rojo(m,n); imprimir “1 fin entero verde(entere a) a=a43; rojo (entero wy entero refs) waw'3; retornar a: fin aaul(entero ref b) inicio b=b"3; fin Una salida tipica es: Suponiendo que los valores leidos de teclado son n= 5-y m = 9 como se muestra en la salida. Cuan- do se llama la funcidn verde(n) se crea una copia del valor de la variable n y se le denomina “a”. Después se realizan los céleulos correspondientes y cl valor encontrado sc lo asigna ala variable “total”. Al salir de hh fancién se destruye la localidad “a” ya que dicha variable es conocica solamente dentro de la funcién. ‘Manda una copia del valor al parimetro woul a 5 9 15 5 Regiesa el valor después de hacer el edleulo a m 15 ATROMEGA Jieez, JIMENEZ, ALVARADO Disehio de algoritmas de fanciones 6 Cuando se lama el procedimiento azul(m) Al argumento b se le manda la direccidn y valor de m que en ese momento vale 9. Posteriormente se ‘muleiplica por 3 para encontrar 27, que es el nuevo valor de b y m. Cuando sale del procedimiento b se deseraye y solamente queda m con la modificacién que se hizo en b. b a m_ total 7 Cuando se llama el procedimiento rojo(a,m) Al parimetro w se le manda el valor de n que en ese momento vale 5 y ax se le manda el valor y la direccién de m que en ese momento vale 27 Posteriormente w se multiplica por 3 para encontrar el 15 yx se multiplica por 2 para obrener 54 Cuando sale del procedimiento w yx se destrayen y solamente queda m con la modificacién que se hizo en xy n con su valor original de 5. n m toad 54 15 27'2 =54 x El paso por referencia y por valor se utiliza tanto en funciones como en procedimientos y el uso de los mismos depende del problema y el programador ya que ambos son de wtilidad. Es importante mencionar que el paso por referencia no acepta constantes porque se espera la direc cién de la varizhle y no el valor. Por ejemplo una llamada que marca error es. aaul(9); Sin embargo en el paso por valor si es vilido: toral = verde(5): Es posible representar los procedimientos y funciones por medio de diagramas de flujo. Pero se debe considerar que cada procedimiento y cada funci6n es un diagrama individual. El llamado de un procedi- miento se representa por medio de un recténgulo con doble linea alos lados y el lamado de las funciones cen los diagramas de flujo es parte de una instruccién, asignacién, impresién 0 condicién. Es importance mencionar que en lenguajes como C++ y Java los procedimientos no existen, sino solamente las funciones que regresan un valor aulo (9 no se regresa valor) y que en el caso de Java los procedimientns y las fnciones se conocen como métodos, pero en st: momento se hardn las indicaciones cortespondientes. FUNDAMENTOS NE PROGRAMACION ALROMEGA 70 Algoritmos Programa principal Funcién verde Procedimiento azul Procedimiento rojo Ejemplo 2.23. lscribir un algoritmo que tenga dos procedimientos. En el primero de ellos; deberd leer el nombre de un producto, su precio y su descuento. En el segundo procedimiento deberd imprimir el nombre, precio y descuento lefdos en el primer procedimiento y calcular e imprimir el precio real del producto considerando la informacibn lefda. Se deberd seguir leyendo nuevos datos hasta que se indique por medio de la letra ‘n’ ‘N’ que ya no debe continuar. El importe total se deberé incrementar con la ssuma de precios de nuevas productos. Una salida cipica se muestra al lado: ATROMEGA Jieez, JIMENEZ, ALVARADO Diseio de algoritmos de fanciones ma inicio J* programa principal */ cadena nombre; Nombre: Jabon real precio, totals Precio: 5.30 eniero descuenwo; Descuento (96): 20 caracter op: Jabén, $5.30, 20%, $4.24 Continuar zs/in?: s Nombre: Aceite total Precio: 12.56 pein (op != ‘sor op !='N’) Descuento (9): 25 ‘inicio Jabén, $12.56, 25%, $9.42 Jectura (nombre, precio, descuento); Continuar zs/n?: despliega (nombre, precio, descuento, total); Total a pagar = $13.66 imprimir ‘Continuar s/n"; leer op; fin es imprimir “Total a pagar = $” total in lectura(cadena ref nombre, real ref precio, entero ref descuento) imprimir “Nombre:” ; Leer nombre; imprimir “Precio: eer preci imprimir * Descuento: leer descuento; fin despliega(cadena nom, real pre, entero des, real ref tot) real precionuevos precionuevo = pre — (des/100)*pre; imprimir nom, *, $*,pre, “” des, *%, $ ” precionuevo; tot = tor + precionuevos Cuando se ejecuta el programa, el programa principal crea las localidades de memoria para las variables nombre, precio, descuento, total y op. Para las primeras variables se tiene el ugar pero no se guarda nin- giin valor. A las iltimas dos variables se les asigna el valor inicial 0 ys’ respectivamente, como se muestra acontinuacidn: nombre precio descuento total op 0 ‘ FUNDAMENTOS NE PROGRAMACION ALROMEGA 72 Algoritmos Cuando se hace el llamado al procedimiento lectura (nombre, precio, descuento) se lee de ceclado el nombre, precio y descuento del primer producto y se guardan en las localidades correspondientes crea- das con anterioridad debido al paso por referencia, como se muestra en la siguiente figura: nombre precio descuento—_total op. Jabén 5.30 20 0 s Al llamar al procedimiento despliega(nombre, precio, deseuento, total), se crean las localida- des para los parimetros: nom, pre, des y se les envia una copia de la informacién guardada en las variables nombre, precio y descuento. Para la variable total se crea la localidad tot que tomari su valor. Al momen- to de cambiar el valor de tot hari que cambie a la vez el valor de total debido al paso por referencia. De tal manera que las variables después de calcular el nucyo precio, imprimir informacién y actualizar el total tienen los siguientes resultados antes de salir del procedimiento. nombre precio descuento. total op. Jabén 5.30 20 4.24 s nom pre des tot precionuevo Jabsn 5.30 20 4.24 424 Al momento de salir del procedimiento despliega se destruyen los pardmetros nom, pre, des, tot, asi como la variable precionuevo, debido a que son locales, quedando solamente las variables que no estin tachadas: nombre precio descuento total op Jabin | [5.30 20 424 : nom pre des tot precionuevo Ba] Sa] DX] SK] BS Después pregunta si se desea continuar. Considerando que se indica que “si” tecleando la letra 0 ‘cualquier caracter diferente de ‘n' 0 "N’ se leerin mevos valores. Antes de llamar el procedimicnto: lectura (nombre, precio, descuento) la informacion que ticncn las variables es: nombre precio descuento’_roral op Jabén 5.30 20 4.24 s Después de llamar el procedimiento: leetura (nombre, precio, descuento) y considerando que la informacién que se da por teclado es la que se muestra en la salida, las variables tienen la informaciéa: nombre precio. descuento.-—_total op. Aceite 12.56 25 4.24 s ATROMEGA Jieez, JIMENEZ, ALVARADO Resumen 73 Después de ejecutar el procedimiento: despliega(nombre, precio, descuento, total), que calcula el precio del nuevo producto, imprime informacién y actualiza la variable total, los valores de las variables nombre precio descuento. tonal op Aceite 12.56 25 13.66 s Observar que el nombre, precio y descuento del producto va cambiando en cada una de las itera ciones y que la variable total va sumando los precios de cada uno de los productos después de realizar el descuento correspondiente. Es posible seguir leyendo informacién de products hasta que se lea del teclado la letra ‘no ‘N' para que al final imprima el precio total de los productos. 2.5 Resumen Los programadores son personas creativas que utilizan la computadora para dar solucién a todo tipo de pro- bblemas. En la solucién del problema hay pasos que se deben realizar para obtener mejores resultados. La lista de pasos puede cambiar pero en general son los siguientes: andlisis del problema, disefio del algoritmo, codi- ficacién del algorimo, compilacin, ejecucién, verificacién, depuracién, mantenimiento y documemtacién. En el andlisis del problema se deben considerar los datos de entrada, el proceso de cileulo de la infor- maci6n y los resultados de salida. EI disefio del algoriemo es una etapa importante en la solucién del pro- blema, debido a que son las instrueciones precisas y oxdenadas para resolverlo, Existen varios mécodos para la representacién de algaritmos, entre los cuales se pueden mencionar: descripcién narrada, diagramas de Ajo, pseudocédigo y diagramas N—S. Cada una de estas represencaciones algorfumicas tiene sus ventajas y desventajas con respecto a las demés. Los diagramas de flujo y los diagramas N—S buscan ilustrar de forma clara el algoritmo usando formas geoméricas para distinguir cada una de las instrucciones, y lo logran en algoritmos pequefies, pero dejan de ser utiles a medida que los programas crecen. Por su parte la descripcién narrada presenta algoriumos con pasos muy generales y alejados de los lenguajes de programacidn ya que son bosquejos de la solucién usando frases que la mayoria de las veces no tienen una craduccién ficil en los lenguajes de programacién, sin embargo cumplen con su cometida al describir de manera general la solucién de problemas. Bl pseudocédigo es una representacisn algoritmica que utiliza palabras en idiomas conocidos que son muy ficiles de codificar al momento de traducir el algoritmo al lenguaje de programacién. Oura ventaja que tiene el pseudacédiga, es que ocupa pace espacio, propiedad que le permite representar algoritmos grandes y complejos, sin embargo su desventaja es que no son tan ilustrativos y ficiles de revisar como los son los diagramas de flujo que con un simple vistazo es posible saber su funcionamiento. La codificacidn es la traduccién del algoritmo a instrucciones de un lenguaje de programacién que entiende y puede ejecutar la computadora. Por medio de la compilacién la computadora se encarga de revisar que no existan errores en el programa apoyindose en el compilador, si existieran errores en el programa que se esté editando, el compilador manda el mensaje correspondiente indicando la linea del programa que tiene el error. Es importante mencionar que el programa no se puede ejecutar hasta que esté libre de errores de compilacién. La ejecucién, verifcacién y depuracién permiten afinar el programa ejecutando, verificando y reali- zando los ajustes correspondientes hasta que el programa funcione perfectarnente bien. Esta etapa permite revisar que el programa hace lo que se espera de él, con la presentacién, rapidea y exactitud requeridas. FUNDAMENTOS NE PROGRAMACION ALROMEGA 74 Algoritmos Finalmente el mantenimiento y documentaciéa del programa, permitirin mantenerlo actualizado, realizar cambios que no se consideraron en el momento del anilisis y disefio del problema porque no se requerian en ese momento, pero a medida que pasa el tiempo hay nuevos requerimientos y en lugar de hhacer un nuevo programa es necesario aprovechar los buenos sistemas de programacién actualizando o ‘complementando algunas de las actividades que realiza, De tal manera que el mantenimiento permite tener fancionando al sistema y la documentacién explica alos usnarios todas las actividades que puede rea- lizar el sistema, pero también ayudan a entender el cddigo y estructuracién del programa con la finalidad de realizar actualizaciones sin afectar el funcionamiento cortecto del sistema en general. 2.6 Problemas 1. Usando descripcién narrada, escribir los algoritmos para llevar a cabo las actividades de cada tino de los siguientes incisos. Considerar que se tienen los elementos para realizar cada una de las actividades. 4) Pintar un auromévil 4) Preparar un café con leche. ©) Enviar una fotografia y un mensaje por medio de Hotmail. ) Ingresar al cine para ver una pelicula. 2, Usando descripcidn narrada, escribir los algoritmos para llevar a cabo las actividades de cada uno de los siguientes incisos. 4a) Surtir la despensa en tienda departamental. 4) Dejar un mensaje a un amigo en Facebook ©) Preparar carne asada. d) Hacer una prenda de vestir para una persona. 3. Representar con notacién algoritmica usando los simbolos atitméticos bdsicos y paréntesis para agru- par informacién cuando sea necesario, las expresiones matematicas de cada uno de los siguientes incisos. Considerar a las letras como variables a excepcién de “mod” que representa el médulo, a» 3 fom bye Sone ) yedtery-—E% Had-a? 3 Af yes! ha d+he cb e3b Ga 5a)imod? 2B a (b+80 z 4 7 2 asws%c) me Ger 3. 2 at 5) + 2 =) “raw Aurowmca Jee, Jnene7, Asvanano Problemas 75 4, Representar con notacién algoritmica las expresiones mateméticas de cada uno de los siguientes incisos. ane a ya(e-5bP430—d a o-( SB Jeaest« e . « Se) ') tinal Ge : ai i( Absa) 1 f y-tes305( = }2 g x 7 442 (e478) = 4 9D y=(d+50] o y= a4 26a) mode +6)+— 4 4+8) ° Sb-d a ad = (ed +84) =32)4 aaa Bi 2= SESS [ a ie 5. Representar por medio de una expresién matemdtica cada una de las lineas de cédigo de los incisos siguientes: 4) y = (a—b)/B"(S*e+b)) + 4*(d+ 3" /(2"a); b) y= S*eh2—d*lat be) 42/5); dy = (448*b)*((3*a)/4—-9"*0); d) y = S*c+3*bh2—(at ble) 97; 2 y= bi((e-e) *4/a—((S*e + 6)/(4"d))/e: SP) y= (at 3%e-7%e2"b)"4)/(5*(b— 6) 92); 9) y= G-d*e)(4—5*ald) +7a—bA2); A) y = Stat b\2—(2%e+ 3) (A+7) M+ 1/35 6. Representar por medio de una expresién matemética cada una de las Iineas de cédigo de los incisos siguientes: 4) y = (Ated—8)/(3") + (5"(Qrate) M)I(7—d)s b) y= ((e—7*a) Ib |ler5+(B/2)"((5%e—-8)/(9—a2))s Oy = (Bt c*a—bA2)*(O/(5 —4%e42) +d) d) y = (dt 4)I3*2"b) 6-243 + d*o)M(b+4); 2 y= (dt a°b)/4)/(*d/Bra+c%3)); P) y= (W+8"a)M((cA5= 1)/d) + 2° (b+d)s D9 = OctbA3—(at8)/5)/(c+ Gat LI (2"b)); D) y= (B+erd) 4)"(e—2))MLNS*a—8)) 5 Funpanuentos De PRoGRAMACION Auraomeca 76 Algoritmos 7, Paraa=I, b=—2, c=3, d=4, Evaluar la expresién matemitica representada en notacién algoritmica de cada uno de los incisos. Realizar una operacién en cada paso cuidando su jerarqufa. 8) y= bt IMC —H GS tah2)—3*d) +d; Dy = ate Mr Sct (C+ Sb—7) 42); 0) y = 5*dh22-%3)+a*b— (—32U(2*b—d)) 92; d) y= (Fe—-b'dlat 3th Wes 8. Paraa=4, 6=—1, -=—3, d=2. valuar la expresin matemética representadas en notacién algoritmica de cada uno de los incisos. Realizar una operacién en cada paso cuidando su jerarquia. @) y= (Frat dle—bYcta)d"c2—3"a) Mb); D) y = (abd dlbe(*b"2-4); ) 9 = (bea) 44d) 712*a—WO'at 30; d) y= b+ateld—+e%U2) "a: 9. Sean a, b 6 dy x variables enteras cuyos valores son a = —1, b= 7, = 3,d = 5. Encontrar el resultado de las expresiones mateméticas expresadas en lenguaje algoriemico de cada uno de los incisos. 8) x= (b*e— d mod a) mod (ab): 2) x = (la — b) mod 0) mad (¢/ a) med (b°0); 9) x = (d+ amed 0)" b— d mod a3) mod 6 d) x= a mod d mod b— 3% mod d\ 2+ ale med b; 10. Sean 2, b, dy x variables enteras cuyos valores son: 4 = 3, b = 2, ¢= —7,d = —5. Encontrar el resultado de las expresiones matemdticas expresadas en lenguaje algoritmico de cada uno de los incisos. a) x = (¢ mod ah3)/ (4 * e— alo mod a); B) x = d—oN2 mod (a°b) "3-7 "e mod b; 0) x = b+3%e mod 5—b) Md mod at+bN4 mod d): d)x= aX(7*b/3 med (c-5%a)) (—d) — Batd med ob; 1. Sia = 2,b = —1,¢= 4yd = —3. Decerminar cul es el valor booleano 1=verdadero 0=falso, € indicat cuil es cl mensaje que imprime la computadora, para cada uno de los siguientes incisos: a) si ((@b) and (not((¢ <= A) or (41= a) imprimir “Manzana’ imprimir “Pera:”, 2° ALEOMEGA Junin, Jintinaz, Avvanavo Problemas 2) sinot((a = = b) or (c=a)) imprimir “Morelia “, (a+b); sino imprimir “Tlaxcala “, ds 0 si(a=a"3) imprimir “Hola: *, 5*c; sino imprimir b,’ Adios”; 4d) si(e>=b*a and ((d!= a) or (4a>=c)) and not (b>0) imprimir “Oaxaca= “, 3°d; sino imprimir “Michoacin= “, (e~d*a); -2,b = Lc =3yd = —5, Determinar cuil es el valor booleano 1=verdadero 0=falso, € indicar cudl es el mensaje que imprime la computador, para cada uno de los siguientes incisos: 4a) i((b of not (no#((a >d) and (¢>= a)))) imprimir “Sandia: " 4*(a+b); imprimir “Fresa:”, a*c; d) si ((a!= d) and (c=b)) imprimir “Francisco: “, (5*b+d); sino imprimir “Alicia: *, 6°65 9 si(b =a) imprimir c*d,“ Catlos: imprimir “ José: " (a—3*0)s d) si (d>=b*a and not((b != a) or (a — Figura 3.1. foono de Java. La promesa inicial de Gosling era crear un lenguaje que permitiera a los programadores escribir el cédigo una vez y ejecutarlo donde fuera (en inglés “Write Once, Run Anywhere”), proporcionando un lenguaje independiente de plataforma y un entorno de ejecucidn ligero y gratuita para los sistemas ope- rativos mas populares. 3.2.1 Caracteristicas del Lenguaje Java Algunas de las caracteristicas principales de Java se describen a continuacién: @) Lenguaje simple. Java se diseié para climinar las complejidades de otros lenguajes como Cy C+. Aunque Java pose una sintaxis similar a C, con el objeto de facilitar la migracién de C hacia a Java, Java es semdnticamente muy distinso a C: Avsaonenca Joutser, Jnatez, Anasavo Entornos de desarrollo para la Java 87 lava no posce atiumésica de apuntadores; El uso de apuntadores es el origen de muchos errores de programacién que no se manifiestan durante la depuracién y que una vex que el usuario los detecta pueden llegar a ser dificiles de resolver. No se necesita liberar lz memoria: Determinar el momento en el cual se debe liberar el espacio ocupado por un objeto es un problema dificil de resolver correctamente... Java se auxilia del Gar- age Collector (Recolector de Basura) para mejorar el rendimiento de la memoria, No hay herencia multiple: En C++ esta caracteristica da origen a muchas situaciones en donde es dificil predecir cudl serd el resultado, Por esta razén en Java se opta por herencia simple que es mis ficil de aprender y dominar. 2) Oricntado a ebjetos. Java hace uso de un paradigma de programaciéa que posee muchas virtudes: el orientado a objetos. Este paradigm usa los objetos en sus interacciones para disefiar aplicaciones y progra- mas, Esti basado en varias técnicas, incluyendo herencia, cohesi6n, abstraccién, polimorfismo, acoplamiento y encapsulamiento. 4 Multiplataforma. Los programas en Java pueden ejecutarse en Windows, Unix, Linux y Mac OS sin necesidad de hacer cambios. 4) OpenSource. El obdigo fuente del lenguaje Java puede ser visto por cualquier usuario y modificado. 2 Libre. No es necesario pagar tna licencia para programar en Java, st. uso es libre y gratuito. Desde sus inicios hasta ahora, Java ha experimentado numerosos cambios, ast como un enorme in- cremento en el niimero de clases y paquetes que componen la biblioteca estandar, proporcionando nuevos elementos que ayudan alos programadores a construir mejores aplicaciones. 3.3 Entornos de desarrollo para Java Un entorno de desarrollo es una herramienta para que los programadores puedan escr purary ejecutar programas. Actualmente existen muchos entornos que permiten desarrollar aplicaciones en Java, entre los cuales se pueden mencionar: JCreatos, Eclipse, JGrasp y NetBeans IDE, Cada uno de los entornos anteriores presenta algunas ventajas y desventajas; sin embargo, se considera que NetBeans IDE es una buena opcién para aprender a programar en Java porque aunque utiliza muchos recursos de la computadora es muy didéctico, permite identificar errores de sintaxis en el momento en el cual se estd escribiendo un programa y no hasta después de compilarlo, esto se debe a que NetBeans IDE va inter- pretando cada instruccién escrita, De esta manera, en este libro se emplear4 NetBeans IDE para programar. 3.3.1 NetBeans IDE ; compilar, de- NetBeans IDE es un entorno de desarrollo que nacié en 1996 como un proyecto estudiantil (llamado Xelff) en la Facultad de Matemiticas y Fisica en la Universidad Carolina en Praga. El proyecto atrajo Fenpaventos pr Procnamacton Atmionca 88 Introduccién a la programacién suficiente interés, por lo que los estudiantes, después de graduarse, decidicron convertirlo en un proyecto comercial, llamandolo: NetBeans. En 1999, la empresa Sun Microsystems comenz6 a interesarse en NetBeans al ser una buena hesra- mienta para desarrollo en Java y decidié comprario; NetBeans se convirtié en el primer proyecto de cédigo abierto patrocinado por ellos. En el afio 2009, Sun Microsystems fue adquirida por Oracle Corporation, pasando a su propiedad también NetBeans. Actualmente NetBeans es un producto libre y gratuito sin restricciones de uso, que permite desarro- Ir en JAVA, C, C++, Groovy, PHP y Ruby. Para instalar NetBeans IDE, véase cl Apéndice 1, en el cual se incluye una explicacién detallada de cémo debe instalarse el compilador (JDK) y después el entorno de desarrollo de NetBeans IDE. 3.4 Traduccién de un programa Los programas escritos en Java pasan a través de tres fases: edicién, compilacién y ejecucién (véase Figura 3.2) programa se crea en un editor, este cédigo (cédigo fuente) se guarda en la computadora en un archivo con la extensién .java Fase 1: edicién El compilador (javac.exe) convierte el cédigo fuente a cédigo intermedio (bytecode) y lo guarda en archivos .class Fase 2: compilaci6a LaJVM (fava Virtual Machine, Maquina Virtwal de Java) carga los .class en memoria, verifica el bytecode, lo traduce a lenguaje méquina y lo ejecura Fase 3: ejecucién Figura 3.2. Fases de traduccién en Java. En el diagrama anterior se puede observar que la JVM es un elemento importance dentro del proceso de waduccién porque permite ejecutar el cédigo intermedio (bytecode) generado por el compilador de Java en cualquier plaraforma o sistema operativos esto brinda portabilidad al lenguaje porque se puede tener un programa .class escrito en Windows (por ejemplo) y ejecutarlo en otra plataforma coma Linux. 3.5 _Ejecucién de un programa Para crear y/o cjecutar un programa cn Java utilizando NetBeans IDE es necesario dar doble clic sobre el icono del programa (véase Figura 3.3) 0 NetBeans IDE Figura 3.3. [cono de NetBeans IDE. Avsaonenca Joutser, Jnatez, Anasavo Ejccucién de un programa 89 Se abriré una ventana como la que se muestra en la Figura 3.4 was Figura 3.4, Pantalla de inicio de NetBeans IDE. Para crear un nuevo proyecto: En Ia ventana de inicio, e: necesario dar clic en el meni File (Archivo), éste aparece en la parte superior izquierda y seleccionar la opcién de New Proyect (Nuevo Proyecto) como se musstra en la Figura 3.5. Después, apareceré una ventana emergence como la que se muestra ena 97" Figura 3.6, en la que se debe elegir el tipo de proyecto que se desea crear, para. lo cual se seleccionard de la lista de Cavegories (Categorfas) la opin de fava yy“ de la lista de Projects (Proyectos) la opcién de Java Application (Aplicacién en _ Java) y se dari clic en el borén Next (Siguiente). —_ a - = Figura 3.5. Crear nuevo Proyecto. Figura 3.6. Seleccionar tipo de proyecto. En seguida se mostrari otra ventana (véase Figura 3.7), en la cual se deberd indicar el Project Name (Nombre del Proyecto), el Project Location (Ubicacién del Proyecto) y dar clic en Finish (Terminar). Fenpaventos pr Procnamacton Atmionca 90 Introduccién a la programacién taodenriteoretee | 1 Figura 3.7. Indicar nombre y ubicacién del Nuevo Proyecto. Al oprimir el bown de Finalizar, en la pantalla de NetBeans IDE aparecerd un félder del lado izquierdo en Ia seccién de Projects (Proyectos) con el nombre del rayecto previamente asignada y del lado iequierdo aparecerd un archivo con exten- sién java de manera automdtica (véase Fi- ‘gura 3.8) porque en la pantalla de la Figu- ra 3.7 se marcé la opcisn de Create Main lass (Caeat Clase Principal) a Sead aairaine Figura 3.8. Proyecto Nuevo en NetBeans IDE. Para comprobar el funcionamiento, a manera de ejemplo, se recomienda modificar la inea //TODO code application logic here que aparece automaticamente adentro de la instruccién pu- blic static void main (String [] args) public static void main (String [] args) { {/T0D0 code application logic here Avsaonenca Joweer, Jantaez, Arvanapo Ejccuciéa de un programa 1 Torlalinca System.out.println ("Hola mundo”) ; tal como se muestra a continuacin: public static void main (String [] args) { System.out.printin(“Hola mundo”) ; } Se deben conservar las demis lineas que aparecen, lo tinico que se modificars es la linea indicada, para después ejecutar el programa. Para ejecutar un programa: Es necesario seleccionar el archivo que se desea ejecutar con extension -java (tiene un tidngulo verde como fcono) que aparece en el félder del proyecto abierto, para esto se da clic con el botén izquierdo del ratén so- bre dicho archivo y luego clic con el botén derecho para que salga un menti emergente y seleccionar ho T= opcién Run File (Bjecucar Archivo) Ee como se muestra en Ia Figura 3.9 Si dl programa tiene salida y/o entrada de datos por consola (ver re-~ cuadro rojo en la siguiente Figura), ésta se modificari como en el ejem- plo de la Figura 3.10. Figura 3.9. Ejecutar un programa en NetBeans IDE. Rade se == TPES. Sn cere waeT Figura 3.10. Consola de NetBeans IDE. Fenpaventos pr Procnamacton 92 Introduccién a la programacién Para agregar un nuevo programa al proyecto: En un mismo proyecto se pueden rener varias clases o programas en Java, para lo cual es necesario selec- cionar dl félder de la seccién Projects (Proyectos) que aparece del lado izquierdo de la ventana de NetBeans IDE y dar clic en el born que aparece con un simbolo de + a su izquierda para que aparezca una carpeta llamada Source Packages (Paquetes Fuente) y luego una carpeta con un cubo amarillo con el nombre del paquete en el cual se dara clic con el bot6n izquierdo del ratn para seleccionarlo y después clic con el botén derecho para que aparczca un mend cmergente, A continuaciéa seleccionar New (Nuevo) y Java Class (Clase de Java) tal como se muestra en la Figura 3.11 Bae be Pree we ies 1S rmerroyeco cn Copy Pate axe (oe Date Socrmi |B txty estan Dats. ee BR Vestevcn Cre ee 7 Wal E Figura 3.11. Agregar nueva Clase de Java en NetBeans IDE. Después aparecerd una ventana como la que se muestra en la Figura 3.12, en la cual se debe introduc cir el nombre de la nueva clase en el campo de Class Name y dar clic en Finish (Terminar) ge Figura 3.12. Nuova Clase de Java en NetBeans IDE. Avsaonenca Joweer, Jantaez, Arvanapo Estructura bisica de un programa 8 Finalmente en la ventana de NetBeans IDE aparecerd del lado derecho en Projects (Proyectos) el nuevo archivo y del lado derecho la nueva clase (véase Figura 3.13), como en los recuadras rojos. scam Figura 3.13. Visualizacion de la Nueva Clase. 3.6 Estructura bdsica de un programa En Java la estructura bisica de un programa es la siguiente: public class Programa { public static void main (String args [1){ instrucciones; instrucciones; d La primera Iinea indica que la clase se Hama Programa y que todo lo que esté dentro de la llave que abre “{” y que cierra “}" sera parte de ella, de esta manera se puede observar que las llaves marcan el inicio” y “fin” del programa. Es importante mencionar que el nombre del archivo donde se guardaré cierta clase deberd ser el mismo que el nombre de dicha clase; en el ejemplo anterior, la clase se llama Programa y el archivo en el que se guardard deberd llamarse Programa . j ava; como Java es sensible al uso de mayiisculas y ‘mintisculas no es lo mismo “Ejemplo” que “ejemplo”, por lo que se dehe tomar en cuenta este aspecto al momento de programar. La segunda linea del ejemplo corresponde a la instruccién de inicio de efecucién del programa, todo lo que esté dentro de las llaves que abren y cierran de la sentencia public static void main (String args [])serd ejecutado por el compilador de Java. Fenpaventos pr Procnamacton Atmionca 94 Introduccidn a la programacién En algunos casos es conveniente poner la instruccién package nombrePaquete; como pri- mer linea en un programa, esta sentencia empaqueta o agrupa un conjunto de clases que tienen un obje- tivo en comin; por lo cual, es opcional, Finalmente es necesario mencionar que en Java se utiliza el simbolo ; (punto y coma) para separar las instrucciones. 3.7 Flementos del lenguaje Java 3.7.1 Comentarios Un comentario es un texto adicional que se afiade al cédigo para explicar su funcionalidad o para agregar uuna nota a manera de recordatorio o explicacién. Los comentarios son ignorados por el compilador, por Jo que no incrementan el tamafio del archivo ejecutable; de esta manera, se pueden afladir libremente al cédigo para que pueda entenderse mejor. Existen dos maneras de comentar en Java: 1, Comentar una linea, para comentar una linea se utiliza // ylo que vaya seguido de las diagona- les es considerado por el compilador como comentario, Por ejemplo: //Este es mi primer comentario en Java 2. Comentar un bloque de lineas, para comentar un bloque de texto, se encierra el comentario con la combinacién de simbolos /* para iniciar el comentario y */ para finalizarlo, Por ejemplo: /* Beta es 1a linea comentada numero 1 Esta es la linea comentada nimero 2 Esta es la linea comentada numero 3 */ 3.7.2. Tipos primitivos de variables Se_llaman tipos primitivos de variables a aquellas variables que contienen los tipos de datos mas habicuales ‘que no requieren invocacién para ser creados. Java tiene acho tipos primitivos de variables, los cuales se describen en la Tabla 3.1. Tipos primitivos de variables en Java. Nombre Tipo Espacio en memoria Rango byte entero I byte =128y 127 short entero 2 bytes ~32,768 y 32,767 int entero 4 bytes 2,147,483, 648 y 2,147 483,647 long ‘entero B bytes —9,223,372,036,854,775,808 y 9223372036854775807 (Contintia) Atsaonenca Jinctxer, Jasénez, Acranapo Hlementos del lenguaje Java 95 (Continuaciéa) ‘Tabla 3.1. Tipos primitivos de variables en Java. Nombre Tipo Espacio en memoria Rango float decimal simple | 4 bytes =3.402823e38 a —1.401298¢-45 y 1,401298e-45 a 3.402823¢38 double decimal doble | 8 bytes © 1,79769313486232e 308 char caracter simple | 2 bytes Cédigo UNICODE (incluye ASCII) boolean valor true o false | 1 byte ue o false Las variables se deben definir de acuerdo al tipo de dato que se manejard con ellas. Por ejernplo si la variable x maneja cantidades enteras entre —10000 y 20000 no se puede definir dicha variable del tipo byte, porque las variables que se definen tipo byte solamente pueden mancjar cantidades entre -128 y 127, pero tampoco tiene sentido definir a la variable x del tipo int. o long, que aunque manejan también cantidades enteras, la cantidad requerida de bytes para ese tipo de datos es mayor, desperdiciando de esa manera memoria en una variable que no la requiere. De tal manera que se recomienda definir 2 la variable x de tipo entero corto (short) de la siguiente manera: short x; Es obvio que si x se hubiera definido como int 0 Long también funciona perfectamente, porque ‘estas tipos de dato permicen un rango mayor de informacién, en donde estin incluidos los valores de 10000 y 20000), pero se recomienda definir las variables de acuerdo a la informacién que almacenarén. Lo que no es permitido es definir las variables de un tipo de dato que no pueda manejar Ia informacién requerida. Ejemplo: considerar que un programa tiene las siguientes lineas de cédigo’ int w, x; {fas dos variables se definen de tipo entero 000000000; //La variable w toma un valor vAlido en //el xango de los enteros xoS4w7 //ta variable x rebasa el rango de los {fenteros porque 5*2000000000=10000000000 Se entiende que al definirse a las dos variables de tipo entero (int w, x;) sus valores no se pueden salir del rango de los enteros (-2,147.483,648 2 2,147,483,647). Aunque la variable w si tiene un valor en el rango de los enteros, la variable x se sale de él. Este error no lo detecta el compilador, porque no es un error de sintaxis, pero si causa problemas al momento de Ia ejecucién del programa. Las lineas anteriores son solamente tres, pero en programas con muchas lineas de eédigo, algunas veces los errores de mala de- finicién de datos son dificiles de encontrar, ya que pueden arrojar resultados inesperados conocidos como bbasura o salirse del programa en forma inesperada y el programador no sabria la razén. Es valido definir a las variables de un tipo de dato determinado y asignarles un valor al mismo tiem- po que se realiza la declaracién, A continuacién se muestran algunos ejemplos de variables (vax_1, var_2, var_3, var_4, var_5, var_6, var_1 y var_&) declaradas.con valores vilidos Fenpaventos pr Procnamacton Atmionca 96 Introduccién a la programacién para los diferentes tipos de datos primitives que existen en Java (byte, short, int, long, float, double, char y boolean) byte var 1 = 127; short var_2= -32768; int var 3 = 2147483647; long var_4 = 1206854758; float var 5 - -8765.87£; double var_6 = 8. 9809381930187 char var 7 - ‘b’; boolean var_@ = true; Es importance norar que para asignar valores de tipo float es necesario poner despues del valor La letra £ como en el caso dela variable float var_5 = -8765.87£ sino marcard un error. 3.7.3 _Cadenas de caracteres ‘Ademés de los ocho tipos primitivos de variables, las variables en Java pueden ser declaradas para guardar una instancia de una clase, como se verd en el capitulo de Incroduccién a la Programacién Orientada a Objecos; de esta manera, en Java las cadenas son objetos de la clase St ring y se declara e inicializa de la siguiente manera: String cadena = “cadena de ejemplo”; La variable se ama cadena yes de tipo String, ademés guarda cl valor de cadena de ejemplo. Por lo general las variables tipo String se utilizan para manejar nombres de personas, calles, ciudades, animales, etc., ya que dicha cadena puede estar integrada por letras, niimeros, espacios en blanco, entre otros caracteres. 3.7.4 Definicién de variables Ya se definieron anteriormente algunas variables, pero es importante mencionar que en Java es necesatio definir todas las variables que se van a utilizar, para ello existen dos formas: 1. Declarar las vatiables. Para declarar una variable se debe definir primero su tipo y después su nombre, para lo cual se utiliza la siguiente sintaxis: tipo_variable nombse_variable; Un ejemplo de lo anterior es: int cont; Donde se declara una variable de tipo int (entero) llamada cont. ‘Tambien es posible declarar varias variables de un mismo tipo en una sola linea, para ello es necesario separarlas por comas, por ejemplo: int cont, num, prom; En este ejemplo se declararon tres variables de tipo catero que se llaman cont, num y prom. Avsaonenca Joutser, Jnatez, Anasavo Elementos del lenguaje Java 7 2. Declarar ¢ inicializar las variables. Para declarar una variable ¢ inicializarla es necesario definir el tipo de la variable, seguida de su nombre y un signo de=(igual) para finalmente escribir el valor que guardaré inicialmente la variable, la sintaxis es la siguiente: tipo_variable nombre_variable = valor_variable; Un ejemplo de lo anterior es float minimo 23.585 Donde, se declara una variable de tipo float (decimal) llamada min.imo y se le asigna inicialmence el valor de 23.5. Al igual que cuando se declaran s6lo variables, se pueden declarar e inicializar varias variables de un mismo tipo en una sola Linea, para ello se separan con comas, tal como se muestra en el ejemplo siguiente: float minino = 23.5, maximo = 56.78£, prom = 78.05f; Cuando se definen los nombres de las variables se deben tomar en cuenta las siguientes reglas: + Elnombre debe ser Ginico en el contexto del programa. + Puede contener cualquier caracter UNICODE pero no puede comenzar con un niimero. + No debe contener los simbolos que se utilicen como operadores (+,*,/,2, etc). * Por convencién los nombres de las variables comienzan con letra miniscula. Si un nombre consiste en més de una palabra, se escribird sin espacios entre ellas y cada palabra (salvo la primera) comenzaré con una letra mayiiscula, por ejemplo: est aBienEstaVariable, + Una palabra reservada por el lenguaje Java, no puede utilizarse como nombre de variable (véase ‘Tabla 3.2) ead boolean break by’ 2 char class continue default double else extends false finally float for ‘goto implements [import instanceof [int interface [long native new null package private protected | public return short static super ‘switch synchronized this throw throws transient true ry void volatile while La tabla anterior contiene todas las palabras reservadas del lenguaje Java, lo cual implica que las variables, constantes, nombres de programas y nombres de métodos, no pueden tener el nombre de ‘una de esas palabras reservadas, pero si cualquier otra palabra que respate las reglas mencionadas ante- siormente. Fennavnros pr Prognawacion Atrouca 98 Introduccién a la programacién 3.7.5 Identificadores constantes Las constantes son aquellas que una vez que se les asigna un valor, éste no puede ser modificado. Para definir constances en Java sélo es necesario anteponer a la declaraciéa la palabra final, por ejemplo: final float PI = 3.1416f; De esta manera, el identificador PT tended el valor constants de 3 Por convencién el nombre de las constantes se escribe en mayaisculas. 3.7.6 Operadores 416 y no podré modificarse. Como su nombre lo indica, los operadores permiten realizar operaciones en el lenguaje de programacién, En Java existen diferentes tipos de operadores, os cuales se describen a continuacién. Operadores aritméticos Son operadores binarios (requieren siempre de dos operandos) que realizan las operaciones aritméticas ha- bituales: suma (+), resta (-), multiplicaciéa (*), divisi6a (/) y el médulo (96). En la Tabla 3.3 se muestra una lista de los operadores aritméticos del lenguaje Java: Tabla 3. Operador Significado de la operacién + Suma él valor de a con by asigna el resultado a c. = Al valor de a le resta el valor de b y el resultado de la operacién se lo asignaa c. . Maltiplicacin | = a*b | Multiplica a por y asigna el resultado ac. f Division ec = a/b Divide el valor de la variable a entre el valor de by asigna el resultado a la variable c. f Médulo residuo | o a % b/| Elvalordec esel residuo de dividir a entre b. Ejemplos: 5 9% 3 = 2; 13% 8=5 Para agrupar términos en Java se emplean los paréntesis, por ejemplo: a* (b=) En Java existen reglas que permiten realizar las operaciones en un orden correcto; es decir, existe una jerarquia de operadores, la cual se describe en Ia Tabla 3.4. * 7 % | Los operadores de multiplicacién, divisién y médulo son los que primero se evaldan; si hay varios de este tipo, se evaltian de izquierda a derecha. —_ Los operadores de suma y resta son los que se evahian después, si hay varios de este tipo, se evaliian de izquierda a derecha. Avsaonenca Joutser, Jnatez, Anasavo Elementos del leaguaje Java 99 Java no tiene un operador aritmético para la potenciacién, en su lugar utiliza una funcién matemética para elevar una cantidad a una cierta potencia, que se citara posteriormente juntamente con las demas fanciones matematicas estindar de Java. Operadores de asignacién consiste en trasferir un valor o expresin a una variable, pata lo cual se utiliza el signo de "=" y su forma general es: variable = valor o expresién Ejemplo 3.1. Codificar en Java cada una de las siguientes expresiones matemiticas, usando paréate- sis cuando sean requeridos para agrupar informacién. Considerar que cada una de las letras es una variable difereave a excepcién de la palabra mod que representa la operacidn aritmética médulo, a) yo Gz damode 54 4-8 emod3-6 ») y=a+7)d—" ) y=(6a+7)4 Respuestas: a) y=((b-3*2) % JI (4-d/) +5*d: @® ya(Stat7)*d-(% 3-4 *b): Fjemplo 3.2. :Cusl es el valor de la variable y? en cada una de las respuestas del ejemplo anterior, considerando que todas las variables se deinen como enteras y con los valores que se mucstran a conti int a=5, b=-4, c=2, d=3, yi Respuestas: @ y= ((b-34a) $e} / (4-d/c) 45*d; y = ((-4-3%5)82) /(4-3/2)+5*3; //Sustituyendo valores y = ((-4-15) %2) / (4-1) +15; y = (-1982) /3415; y = 1/3415; y = 0415; ay = (5¥al7) #d- (83-6) / (4*b) ; y = (5*517) #3- (283-6) / (49-4); y = (2517) *3-(2-6) / (-16); y = 32*314/(-16)3 y = 9610; y = 96; Fenpaventos pr Procnamacton Atmionca 100 Introduccién a la progeamacion Es comiin tener ineas de eédigo en donde se actualiza alguna de las variables altura = 23.5; contador = contador + 1; En el caso de la segunda asignacién puede emplearse una codificacién que permite la compactacién del cédigo en expresiones simplificadas, en las que la variable que recibe el resultado participa a la vez como operando, las cuales pueden verse en la Tabla 3.5. ‘Tabla 3.5. Operadores simplificados en Java. Operador | Operacién | Ejemplo | Equivalentea | Significado + Suma, © +53 = c + 3] Incremental valor |= 16 decen3. -= Resta © © = ¢—3]Decremenad [c= 10 valor de cen 3, *= Maltiplicacién |o *= 3 c= c * 3 |Mukiplicadlvalor |= 39 dec por3 (= Division e/=3 © = c / 3 | Divideelvalordec] c= 4 entre 3 = Méduloo fc $= c= $3 ]Elnuevovaorde [c residuo cesel residuo de dividir c entre 3 Las expresiones codificadas en Java a las que es posible aplicar Ia asignacién compnesta tienen la siguiente forma: variable = variable operador expresién Ejemplo 3.3. La codificacién en Java de las lineas de cédigo de cada uno de los incisos, usando para ello operadores de asignacién compuestos es como se muestra a continuacién: Expresién Expresiém compactada jdynyts a) y=y-alb a) y=y*Q -x/w a) y=y/ (*x-3) ‘Yambién es comin sumar o restar 1 a una variable; Java permite llevar 2 cabo también esta prictica can fiecuente de la siguiente manera: variable + + variable — — Avsaonenca Joutser, Jnatez, Anasavo Salida de datos 101 Es decir: Fjemplo Deseripcion c++; | Lesumaun lala variable c Le resta un 1 ala variable & 3.8 Salida de datos “Todos los programas requieren de imprimir informacién, ya sea para desplegar un mensaje en pantalla, indicéndole al usuario la entrada de datos o bien para imprimir textos y niimeros obtenidos de bases de datos o cileulos que se realizaron en el transcurso de la ejecucién del programa. El lenguaje Java dene ‘varias instrucciones para imprimir informacién, pero en este capitulo se abordardn solamente algunas en modo consola. Los métodos més sencillos para desplegar informacién en java son: System.out.print( ) y System.out.printIn( ) . El hébil manejo de los pardmetros en combinacién con estas instrue- clones, permite obtener mejores salidas. Ejemplo 3.4. A continuacién se muestra tun programa que imprime dos lineas: public class Hola Mundo { public static void main (String args [])( System.out.print ("Hola mundo”); System.out.printIn(" este es mi primer programa”); System. out.print ("en Java”); ) Con la primera instraccién se imprime la informacién que se encuentra entre comillas y se queda el cursor en la misma linea, debido a que se desplegé la informacién con la instruccién print. Pesterior- mente imprime el texco entre comillas (este es mi primer programa) y el cursor salta a la signiente linea, porque se desplegé la informacién con printin. En general, si print termina con Ln se imprime Ia informacién indicada y salra a la siguiente linea, sino termina con Ln, se imprime la informacién y el cursor se queda en la misma linea. EI programa anterior tiene la signiente salida en consola: Hola mundo este es mi primer programa Lugar donde comenzaria a escribir nueva informacién En lugar de imprimir la informaciin anterior usando tres instrucciones, es posible obtener los mis- ‘mos resultados con una sola instruccién usando “secuencias de escape” como se muestra: System.out.print("Hole mundo este es mi primer programa\n en Java"); FUNDAMENTOS DE PROGRAMACION ALENOMEGA 102 Introduccién a la progeamacion Secuencia de escape. Es aquella que interrumpe la impresién lineal de la informacién para wasladar el cursor a una nueva posicién de la pantalla y continuar a partir de ahi la impresién de la informacién restate, las secuencias de escape mds comunes en Java son: Secuencia Descripcién de escape \n__[ Salto de linea, coloca el cursor en Ia linea siguiente, \t__|/Tabulador horizontal, coloca el cursor en la siguiente posicién de tabulacién. \z | Retomo de carro, mueve el cursor al inicio de la linea actual; es decir, no avanza ala siguiente linea, \\__| Seemplea para imprimir la barra diagonal inversa, \" [Se cmplea para imprimir un cardeter de doble comilla, Otros ejemplos utilizando secuencias de escape son: System.out.printin(™\"esto apareceré entre comillas\"”); System.out.printin (“esto aparece en la primera linea\ny esto en la segunda”); Es posible imprimir textos y valores usando el opecador ms (+) para concatenar textos ylo variables, como se muestra a continuacién: ant a=3, b=7; System.out.print (a + “x” + b + “=" + atb); El método String. foxmat () permite crear formatos especiales de impresién, de acuerdo a las necesidades del usuario y posteriormente imprimir dichos formatos usando las instrucciones: System out.printIn() o System.out.print( ). Ejempla: String nombre = Juan“, serie="Adios” int edad = 16; String serie=String. format ("ss tiene %d afics\n”, nombre, edad); System. out.printin (serie) ; Juan tiene 18 ‘Adios ALIAOMEGA ‘iene, JIMENEZ, ALVARADO Salida de datos 103 Al imprimir la informacién se sustituye el formato cadena %s por el nombre y el formato %d por la ‘edad, posteriormente salta de linea e imprime la palabra “Adios”. Elmétodo System. out. printé () funciona de manera similar ala combinacién de String. format () y System. out.print1n() usados en dl ejemplo anterior, pero de una forma mds com- ppacta, ya que pasa directamente la cadena con los especificadores de formato para imprimirse. Ejemplo: double ar = 43,542671; int can System.out.print£ (“El valor del area es = %.3f \n”,ar); System.out.print£("éd en decimal, es % \n”, cant, cant) ; en hexadecimal 13 en decimal, es d en hexadecimal Las instrucciones anteriores tienen los especificadores de formato: %.3f, %d_y 96x, los cuales tienen la finalidad de mostrar la informacién con ciertas caracteristicas como se explica a continuacién: %.3f Muestra el valor de la variable ar como una cantidad real (lotante) con 3 ciftas decimales, en. donde el dltimo decimal se redondea. 6d: Muestra el valor de cant en forma decimal. 9x: Mucstra el mismo valor de cant, pero ahora en hexadecimal. Los especificadores de formato pueden tener los siguientes elementos: %[posici6n$] [indicador] [ancho] [.precisi6n] especificador Les elementos entze corchetes son opcionales y cada uno de ellos permite ser mds especificos en cuan- to ala forma de visualizar la informacién en la pantalla. A continuacién se tiene una explicacién sencilla de cada uno de ellos. [posicién]. Indica el lugar en donde se desea dar el formato a un mismo dato. Los lugares se numeran de izquierda a derecha como 1$, 28, exc. [indicador] . Esl cargcter que determina el formato de salida del dato. indicadores més comunes usados en java ‘Tabla 3.7. Indicadores de formato. Indicador Explicacién in la Tabla 3.7 sc tiene los ‘Alinea la informacién a la i2quierda. ¢ Encierra los niimeros negativos entre paréntesis i Muestra el separador decimal. + __ | Muestra las cantidades positivas con signo. 0 Rellena de ceros los espacios sobrantes. FUNDAMENTOS DE PROGRAMACION 104 Introducciéa a la programacién [ancho]. Indica el tamafio minimo que debe ocupar el dato en pantalla, [ -precisién]. Indica el nimero de decimales que se imprimirin después del punto decimal. Especificador. Cardcter que indica la manera en que se debe formatear el dato. La siguiente tabla muestra una lista de algunos de los especificadores més wtilizados en Java. eee Especificador Explicacién. ‘Muestra la informacién como entero en decimal Real (0 florante) con punco fijo. Real usando notacién cientifica, alolafa Real, con opcidn a representarse en notacién cientifica si la cantidad es muy grande o muy pequefta, Entero en ocial Entero en hexadecimal. Sering o cadena Cadena en mayésculas Cardcter. al o}x|o alo Cardcter en mayiisculas. En ha Tabla 3.9 se tienen algunos ejemplos usando especificadores de formato con una pequefta ex- plicacién de lo que se espera en la salida. Bloque de instrucciones Explicacién double n=76.45781; E] dato sc imprime en 10 espacios con 2 decima- System.out.printf ("%10.2f”,n); les, redondeado y rellenando con blancos (b) los espacios que sobran String nonbre= “Pedro”; Imprime la cadena en un espacio de 12 caracteres, System.out .print£ justificado la informacién a la derecha y rellenan- (°212s", nombre) ; do los espacios sobrantes con blancas. String nombre= “Pedro”; Imprime la cadena en un espacio de 12 caracteres, System.out.printé ("s- justificado la informacién a la izquierda y rellena- 12s”, nombre) do los espacios sobr bi: (Continua) ALBOMEGA ‘JIMENEZ, JIMENEZ, AINARADO Salida de datos 105 (Continuacion) Bloque de instrucciones Explicaci double «=17/3; En un campo de 8 espacios, escribe el valor de w System. out.printé ("17/2= con tres decimales redondeados. En caso de ser $8.38", 0): necesario completa el campo con blancos. double w=13/4.0; ‘En un campo de 8 espacios, escribe el valor de w System.out. con tres decimales, en caso de ser necesario com- printé (°13/4=808.3£",w); pleta con ceros los espacios faltantes. double w=0.0000078924; En un campo de 9 espacios, escribe el valor de w_ System.out.printé (“w = con dos decimales, en caso de ser necesario com- $9.26”, 0): pleta con blancos los espacios faltantes, double w=-7.0/5.0; En un campo de 8 espacios, escribe el valor de System.out.print£("w = -w con dos decimales. Encierra el resultado entre $(B.2£" wl; paréntesis por ser negativo y rellena los espacios con blancos en caso de ser necesario, ‘Ejemplo 3.5. En el siguiente programa con su respectivo salida es posible observar el uso de algunos especificadores de formato. public class formas ( public static void main(String[] args) ( double num = 357.8629; String “Morelia”; int a, System.out.printf ("sd decimal es #0 en octal y $x en hexadec\ a”, byb,b) System.out printf ("sis mindsculas, $1$2S mayasculas\n”, ciudad); System. out.print£("Alineado a la izguierda: $-10s\n”, ciudad); FUNDAMENTOS DE PROGRAMACION ALENOMEGA Lectura de datos 107 Jo que cambiaria de programa a programa es el tiempo de ejecucién. A partir de ahora las salidas que estén encerradas por estos elementos, indicarin que es la salida fel al correr el programa. 3.9 Lectura de datos ‘Todos los sistemas necesitan informacién, esa informacién puede venir de la pantalla, CD, base de datos, ‘mouse, ceclado, encie owas; pero seguramente cuando se trata de un programa la entrada es por medio de asignacidn o bien por medio del teclado usando para ello el modo consola. Usando la clase java. util. Scanner es posible crear una instan informacién cn consola de la siguiente manera. que permite la lectara de Scanner leer ~ new Scanner (System. in) ; System.out.print (“Dame un nimero entero: “); //la siguiente linea lee una cantidad entera y se la asigna //a la variable num int num = leer.nextint(); Con las Ifneas anteriores primeramente se ctea un nuevo objeto de la clase Scanner al cual se le llamé locr mismo que se puede aprovechar para leer cantidades enteras, flotantes, caclenas, booleanas, byte, double, etc: Poniendo el mérodo indicado: next Int (), nextFloat(), next (), ne- xtLine(), nextBoolean(), nextByte() o nextDouble() respectivamente. Ejemplo 3.6. El siguiente programa permite leer el nombre, edad y estatura de una persona y después imprime dicha informacién usando la inscancia para leer informacién leer. package lee_informacion; import java.util.Scanner; //debe importarse la clase public class lectura ( public static void main(String[] args) { Scanner leer = new Scanner (System. in) ; String nombre; int edad; System.out.print("Cu4l es tu nombre: “); //lee una cadena y 1a asiqna a 1a variable nombre nombre=leer next () ; System.out.print(*Cual es tu edad: “); //lee un entero y lo asigna a la variable edad edad=leer.nextint (); system.out print (“Qué estatura tienes en mts: “); //la siguiente linea lee la altura y la asigna a la f/wariable altura FUNDAMENTOS DE PROGRAMACION ALENOMEGA 108 Introduccién a la progeamacion float altura=leer.nextfloat (); System. out.print£(“ts tione $d afios de edad”, nombre, edad) ; System.out.printf(* y mide #.2f metros\n”, altura); run: Cuil es tu nombre: Pedro Cusl es tu edad: 18 Qué estatura tienes en mts: 1.73 Pedro tiene 18 afios de edad y mide 1.73 metros GENERACION CORRECTA (total time: 13 seconds) 3.10 _Conversién de tipo de datos Cuando se programa es muy comin tener que convertir de un tipo de dato a otro, en Java se pueden hacer las siguientes conversiones de tipos primitivos entre variables (véase Tabla 3.10). ‘Tabla 3.10, Conversiones de tipos primitivos validos. ‘Tipo Promocién valida double | Ninguno. float double long float, double int long, float, double char int, long, float, double short int, long, float, double byte short, int, long, float, doble boolean | Ninguno Es posible realizar promociones no vdlidas (no incluidas en la tabla anterior), pero estas pueden pro- ducir errores de truncamiento 0 pérdida de informacién, como por ejemplo convertir de un float aun int. Para realizar la conversién de los tipos primitivos es necesario anteponer entre paréntesis el tipo al cual se desea convertir una variable 0 valor: (tipo) variable o valor Ejemplos: //B1 nimero entero 3 se convierte a double y se guarda en //eontador double contador = (double) 3; /* Se imprime el valor de 4 convertido a float; es decir: 4.0 */ ALIAOMEGA ‘iene, JIMENEZ, ALVARADO Conversién de tipo de dates 109 System. out.println ( (float) 4); //B1 nimero 3.4 se convierte a int (se pierde la parte //decimal) y se guarda en dato int dato = (int) 3.4; //Se imprime el valor de 1a variable dato; es decir: 3 System.out .printIn (dato) ; Para convertir tipos primitives 2 String es necesario utilizar el método valueOE de la clase String, la sincaxis es la siguiente: String.valueOf (variable o valor) Ejemplos: /* se declara la variable peso y se inicializa con el valor double de 3.56 */ double peso = 3.56; /* se convierte a String el valor de peso y se guarda en cade- na_peso */ String cadena_peso = String.valueof (peso) ; int x = 6; String cadena = String.valueof(x); //cadena = “6” Si se desea convertir un String a tipo primitivo es necesario utilizar las clases y métodos de la ‘Tabla 3.11. Conmeninn Clase y método double Double.parseDouble (cadena) ; float Float.parseFloat (cadena) ; long Long. parseLong (cadena) ; int Integer .parseInt (cadena) ; char cadena,charAt (posicion); short Short.parseShort (cadena) ; byte Byte. parseByte (cadena) ; boolean | Boolean. parseBoolean (cadena) ; Ejemplos: String cadena = “3.4”; //covierte 3.4” a double y lo guarda en x FUNDAMENTOS DE PROGRAMACION ALENOMEGA 110 Inteoduccidn a la prog double x = Double. parseDouble (cadena) ; //convierte 9 a boolean y lo guarda en val boolean val = Boolean.parseBoolean(*9”) ; /* imprime false, para que imprima true la cadena debe ser “true” */ System. out. printin (val) ; //en car guarda el caracter que esta en la posicién 0 char car = cadena. charAt (0); //imprime 3 System. out.printIn (car); -nte programa permite leer un ntimero de tipo double y después realiza algunas conversiones de tipos de datos. import java.util.Scanner; public class convereiones { public static void main (String args [1)( //aeclaracién de variables double numero; String cadena; int entero; float flotante; char caracter; short corto; long largo; //se crea un objeto de la clase Scanner Scanner leer = new Scanner (System. in) ; //se pide un nimero double, se lee y se guarda en numero System.out.print (Dame e1 niimero double: »); numero = leer.nextDouble () ; System. out. print1n ("Conversiones:”) ; //se convierte nimero a int y se guarda en entero entero = (int) numero; //se convierte niimero a float y se guarda en flotante flotante - (£loat) numero; //se convierte nimero a char y se guarda en caracter caracter = (char) entero; ALINOMEGA ‘iene, JIMENEZ, ALVARADO (Clase Math, iw //se convierte nGmero a short y se guarda en corto corto = (short) numero; //se convierte nimero a long y se guarda en largo largo = (long) numero; //se imprimen los valores de las variables System. out.println ("int - “tentero); System.out.printin(“float = “+flotante); System.out.println (“char = “tcaracter); System.out .printin("short = *+cort); System.out.printIn ("long = “+largo); y ) run: Dame el niimero double: 87,9 long = —87 GENERACION CORRECTA (total time: 23 seconds) 3.11 Clase Math La clase Math proporciona una coleccién de métodes (véase Tabla 3.12) que permiten realizar célculos maveméticos comunes. No es necesario importar la clase Math porque se importa automdticamente por el compilador. ‘Tabla 3.12. Métodes de la clase Math. Método Descripeién ‘Tipos de valores Ejemplo (ateemeatey! retorno) abs (n) | Devuclve dl valor double, float, | Math.abs (-23.7) 323.7 absoluto den int y long cos (n) |Devuelveelvalordel | dou! Math.cos (8.97) es coseno den -0.89835 (Continia) FUNDAMENTOS DE PROGRAMACION ALENOMEGA 2 Introduccién a la progeamacion (Continuacion) PSERe or ete eas ‘Método Descripeié: ‘Tipos de valores Ejemplo (argumentos y retorno) ‘exp (n) | Devuelve el valor de o* | Gouble Math.exp (3.78) es 43.8160 Log (n) | Devuclve cl logarieme | double Math. log (2.5) es 0.912690 natural de n max (n,m) | Devuelre el valor més |Gouble, float, |Math.max (-9.98,87.7) grande de nym int y long e877 min(n,m) |Devuelveelvalormds [Gouble, float, |Math.min(0,10) es0 pequefio de ny a int y long pow(aym) | Dewuelve el valorde | double Math. pow (=5.06,2) e clevar n alam 25.6035 andom(] |Devuclve un nimero | No recibe pardmewos y [Math.zandom() & aleacorio entre Oy 1 | regresa double 0.583028798 o cualquier valor decimal enue Oy 1 Sin (n) | Dewielveelvalordel | double Math. sin (0.87) es seno den 0.76432893 sgzt (a) | Dewelveel valordela | double Math. sqrt (9876) es rai cuadrada den 99.378065 tan (n) |Devudveclvalordela | double Math. tan (-7.89) es tangente den 27.751606 Para llamar un método se escribe la palabra Math seguida de un punto“, ademés del nombre del método con los argumentos separados por comas que requiere el método entre paréntesis. Ejemplos: //eleva 3 a la potencia de 2; es decir, imprime 9.0 System. out.printin(Math.pow (3, 2)); /* calcula la raiz cuadrada de 64; es decir guarda 8.0 en raiz */ double reiz = Math.sqrt (64); /* calcula la raiz cibica de 3; es decir guarda 4.0 en cubica */ double cubica = Math.pow (64,1/3.0); En NetBeans IDE aparece una ventana desplegable que muestra los métodos de cierta clase, por Jo que si se desea saber qué métodns tiene se debe escribir el nombre de la clase y poner el operador °.” (punto) para que aparezca la ventana (véase Figura 3.14). En csa ventana se muestra del lado izquicrdo cl nombre del método y entre paréntesis el ntimera y el tipo de argumentos que requiere; del lado derecho aparece el tipo de dato que devuelve cierto método. ALIAOMEGA ‘iene, JIMENEZ, ALVARADO (Clase Math, 113 De esta manera, no es necesario memorizar todos los métodos que posce una clase, ni cudntos argu- mentos recibe y qué tipo de dato recibe 0 regres. Math mer j THEEremainder (double d, double 31) @abs(double cy @abs(float £) @abs(int 4) @abs(iong 1) ye (double c) @asin(double <) @atan(double 3) atan2(double d, double di) (jebre(double ¢) Geeit(double 3) Gj eopySign(double , double enother exgurment Returns: the Inger of «and Figura 3.15. Descripcién de los métodos de la clase Math. Dentro de la clase Math estén definidas dos constantes: + Math. PI. Devuelve el valor de la proporcién entre la circunferencia de un eftculo y su didmetro, es 3.141592653589793 + Math.E, Devuelve el valor base para los logaritmos naturales, es 2.718281828459045 Funpaaenros De PRocRAMACiON ALBOMEGA 14 Inteoduccidn a la prog Ejemples: //imprime el valor de PI; es decir: 3.141592653589793 System. out.printin (Math. PI) ; //guarda en log_nat el valor de 2.718281828459045 double log_nat = Math.=; Ejemplo 3.8, El siguiente programa permite leer dos niimeros y calcula cual es el mayor, el menos, Ia potenciacién del primer mimero elevado al segundo, la raiz cuadrada del primero, la raiz cibica del primero. Ademas genera un ntimero aleatorio, imprime el valor de Pl y de EB. import java.util. Scanner; public class claseMath{ public static void main (String [] args) { //s@ crea el objeto leer Scanner leer = new Scanner (System. in) ; double primero, segundo; //se declaran dos variables double System.out.printin("\tPrograma que utiliza la clase Math”); System.out.print (“Dame el primer nimero: “); //se lee un double y se quarda en primero primero = leer.nextDouble() ; System.out.print (“Dame €1 segundo mimero: ~); //lee otro double y se guarda en segundo segundo = leer.nextDouble(); System. out.printin (‘Maximo- “+Math.max (primero, segundo) ); System.out.printin (“Minimo= “+Math.min(primero, segundo); System.out.printin (“Potencia="+Math.pow (primero, segundo) } ; System.out.printin (“Raiz cuadrada= “+Math. sqrt (primero)); System.out.printin (“Raiz cibica=”+Math.pow (primero, 1/3.0)); System.out.printin (“Nimero Aleatorio= “+Math.random()); System.out.printin (“PI= “+Math.PI); System.out.printin (“E= “+Math.=); } y ALINOMEGA ‘iene, JIMENEZ, ALVARADO (Clase Math, 15 ran: Programa que utiliza la clase Math Dame el primer mimero: 2.5 Dame el segundo niimero: 3 1,5811388300841898 10 Niimero Aleatorio= 0.5707071074560849 PI= 3.141592653589793 E= 2.718281828459045, GENERACION CORRECTA (total time: 2 seconds) ‘Ejemplo 3.9. Codificar en Java cada una de las siguientes expresiones mateméticas, considerando que cada una de las letras es una variable y que la constante PI = 3.1416. a) y= 38 Ax t+ 8 [58 aw (w-5a)P fa \i7x-9) 48 @) y - 3*Math.pow(x,2)—4*x + 18; By = (4*a-b) /7+Math.pow (6*d—8,1/5.0); @ y — Math. sqrt ( (5*Math.pow (x, 3)-w) /Math. abs (7#x-9)) + Math .pow (w—5*x, 3) /48; (Math. sin (30*PT/180) —x) /(14—Math.pow(x,2)) + 1/Math.cos (45*P1/180); dy Se puede observar en el inciso (b) que la cantidad expresada en el radical se elevé a la 1/5 . 0 consi- derando que aeex EL 1/5.0. permite obtener raiz quinta con parte entera y decimal. En el inciso (d) se convierten los angulos de 30° y 45¢ a radianes usando la equivalencia (1 rad = 180°) considerando que los ngulos en Java deberdn estar expresados en radianes. Se usé la constante PI=3.1416 que debers ser definida en el lugar correspondiente de la siguiente manera: final float PI = 3.1416; aunque en lugar de Pl se podria haber colocado directamente el valor de 3.1416. Ejemplo y = tan 60° se puede codificar de las siguientes formas: Siempre y cuando se defina PT=3 . 1416 como constante y = Math. tan (60*PI/180); FUNDAMENTOS DE PROGRAMACION ALENOMEGA 116 Introduccién a la progeamacion J/Sin nevesidad de definis a BT como constante. Math. tan (60*3.1416/180) ; Por iltimo, se usé la equivalencia trigonomeétrica: sec(x) = para encontrar la secante del angu- lo de 459, considerando que Java no tiene un método para encontrar directamente la secante de un angulo, Ejemplo 3.10. Las ecuaciones para calcular el punto medio (Pm), la distancia entre dos puntos (PP ) yla pendiente (m) de una recta son: YA y PB, PP, = ye, Escribir un programa para leer las coordenadas de dos puntos de tuna recta y calcular el punto medio, Ja distancia entre dos puntos y la pendiente de esa recta: Respuesta: import java.util. Scanner; public class partes _de recta { public static void main(String{] args) ( Scanner leer = new Scanner (System. in) ; double x1, y1,x2,y2,xm,ym,p1p2,m; System. out.printIn ("Punto 1: ”); System. out.print (*x1: ”); x1-Leer.nextDouble () ; system.out.print (*yl: ”); yl-LeernextDouble () ; System. out.printin(*Punto 2: ”); System.out.print (*x2: ”); ALIAOMEGA ‘iene, JIMENEZ, ALVARADO Exrores en tiempo de ejecucién 17 x2=leer.nextDouble () ; System.out.print(“y2: "); y2=Leer.nextDouble () ; //Coordenadas del punto medio seme (x1 +%2) /2.07 yam (yl ty2) /2.0; System. out.print£ (“Punto medio (%.2£,%.2£)\n”, xm, ym); //Distancia entre dos puntos plp2-Math. sqrt (Math. pow (x2-x1, 2) +Math.pow(y2-y1,2)); System. out. printf (*P1P2= %.4f\n”,pip2); (/Pendiente m= (y2-y1) / (x2-x1); System.out. printf (‘m= %.4f\n”,m); ran: Punto 1: xl: -3 yie4 Punto 2: 32:5 y2:6 Punto medio (1.00,5.00) PIP2= 8.2462 ‘M= 0.2500 GENERACION CORRECTA (coral time: 1 minute 0 seconds 3.12 Exrores en tiempo de ejecucién A continuacién se describen algunas consideraciones para evitar errores comunes de programaciéa: + El nombre de la dlase y el nombre del archivo deben tener el mismo nombre; es decir si el archivo se llama ejemplo.java la clase debe llamarse “ejemplo” para esto es necesario recordar que Java es sensible al uso de maydsculas y mintisculas, por lo que no es lo mismo “Ejem- plo” que “ejemplo”. + Dependiendo del idioma de NetBeans IDE, los miimeros con decimales lefdos de consola se deberin introducir con “" (coma) o *.” (punto) para separar la parte entera de la decimal. Esto se debe 2 que en algunos paises se emplea coma y en otros punto para separar la parte fraccio- naria de un atimero. FUNDAMENTOS DE PROGRAMACION ALENOMEGA 1s Introduccién a la progeamacion Por ejemplo: 3.259 3,259 © Si se desea leer una linea después de un next Double (), nextint() © next- Float () es necesario el uso dedos nextLine() . El primero para capturar el retorno de carro (cursor) dejado pornextDouble(), nextInt()o nextFloat () yel segundo para leer la linea deseada. Para gestionar errores de sintaxis, NetBeans IDE proporciona ayuda porque va interpretanda cada una de las palabras que se escriben; de esta manera, si existe un error de sintaxis apareceri del lado izquier- do de la linea que contiene el error, un icono en colar rajo como al que se muestra en la Figura 3.16, en la cual se describe el error si se posiciona cl cursor encima de él. StartPage {xi} PrimerProyectojava ¥ | si} Clase 255 a) package primezproyecte? 2 2 public clase PrimerFroyecte ( 4 2 [Ferd eavendy definedin main(ava ang Strnail ea | 0 eras) ¢ 5] [ate ter shone hint) e char var : Bootes a0 a , | 3 a3 Figura 2.16, Errores de cintaxie identificados por NetBeans IDE. En algunos casos, NetBeans IDE proporciona opciones para resolver un error, para esto apareceré tun icono parecido aun “foquita” como el de la Figura 3.17, cuando se le da clic sobre él, aparecen po- sibles ideas para solucionar el problema para finalmente seleccionar (si asi se desea) una de ellas para que NetBeans IDE la realice rracmoeaxwe, «Sissel (ASSO Feelag ules favaitaal vn dere pica) a) cmt “on one iinet eet 1 Alera fe amanga.opstersnesae 4 Gee cr Ser Figura 3.17. Propuestas panier a soluciones a ertoras ce 4 rte cn Sorento sintexis de NetBeans IDE. ee penooen eae ALIAOMEGA JisieNeZ, JIMENEZ, ALVARADO Errores en tiempo de ejecuciéin 119 Jaya incorpora la gestidn de excepciones, las excepciones indican que existe un problema o situacién ines- pperada durante ka ejecucién de un programa. kin muchos casos, el manejo de excepciones permite que el pro- grama continie su ejecucién como si no hubiera habido error, esto permite crear programas tolerantes a fallos. El proceso de gestidn de excepciones consiste en atrapar y manejar los errores que ocurren durante la ejecucién; por ejemplo, si se tiene un programa ‘corriendo” o ejecutindose y se introduce un dato no villido, se lanza una excepcién, la cual debe atraparse y manejarse (véase Figura 3.18). Programa en Error. | Selanza Atrapar y manejar ejecucién excepcién excepcién Figura 3.18. Manejo de Excepciones en Java Data realizar esto, solo es necesario colocar dentro de un ty el eddigo que se desea “vigilar” para que si se produce un caso atfpico 0 no esperado y se genera una excepcisn, el control pase al bloque que esta dentro del catch para que sc haga cargo de la situacién. Algunos de los tipos de excepciones mas comunes son: ArithmeticException Esta excepcién ocurre cuando se realiza una divisién entre cero; es decir, cuando el resultado produce un valor infinito. InputMismatchException Esta excepcidn ocurre cuando el usuar métodos de la clase Scanner. Se requiere importar la clase java.util. InputMismatchExcep- tion. introduce datos no esperados para leerse por medio de los Exception Maneja cualquier tipo de excepcién. Lasintaxis para manejar excepciones en Java es la siguiente: try eédigo que se desea vigiliar i catch (tipoExcepcion objetoExcepcion) { cédigo para tratar la excepcion ! Ejemplo 3.11. El siguiente programa pide dos ntimero enteros para ser Ieidas de teclado por consola, si no se introducen mimeros enteros no termina con la ejecucién porque la excepcién que se genera se atrapa y se maneja (en este caso séilo se mandan mensajes) para después continuar con la ejecucién normal. //clase para leer de consola import java.util.Scanner; //clase para manejar excepciones de Scanner FUNDAMENTOS DE PROGHAMACION ALENOMEGA 120 Inteoduccidn a la prog import java.util. InputMismatchException; public class Programaxcepcionl { public static void main (String [] args) { Seanner leer = new Scanner (System. in) ; ant a=0, b=0; try{ //inicia cédigo “vigilado” System.out.print (“Dame un nimero entero: ”); a = leer.nextint () 7 System.out.print (“Dame otro mimero entero: ”); b = leer.nextInt(); Jeateh (InputMismatchException e) ( /*si existe una excepcién del tipo InputMismatchException realiza 10 que esté dentro de este bloque */ System.out.printIn (“lei datos inv&lidos”); System.out.printin(*se dio una excepcidn”); } System.out.printin("Se siguié con la ejecucién”); Fjecucién sin excepciones Ejecucién con excepciones run: run: Dame un niimero entero: 3 Dame un niimero entero: 3 Dame otro mimero entero: 4 Dame otro ntimero entero: esta es cadena Se siguié con la ejecucibn Lef datos invdlidos GENERACION CORRECTA Se dio una excepcién (oral time: 6 seconds) Se siguié con la ejecucién GENERACION CORRECTA (coral time: 18 seconds) En este caso el usuario sf introdujo valores vali En este caso el usuario no introdujo valores vali- dos. dos: se 1276 una excepcidn, se atrapé y se manejé imprimiendo un mensaje. Después se impri- ‘mieron los demas mensajes como sino hubiera pasado nada, Ejemplo 3.12. El siguiente programa pide dos mimeros enceros para set Iefdos de teclado por consola y después dividitlos, si no se introducen ntimero enteros no termina la ejecucién ni tampoco si al dividirse los dos nimetos se obtiene un resultado infinito (ocurte cuando se divide entre 0) porque las excepeiones que se pueden generar se atrapan y se manejan (en este caso slo se mandan mensajes) para después con- tinuar con la ejecucién normal. ALINOMEGA ‘iene, JIMENEZ, ALVARADO 121 Exrores en tiempo de ejecuciéa import java.util.Scanner; import java.util. InputMismatchException; public class ProgramaExcepcion2 { public static void main (String [] args) { Scanner leer = new Scanner (System. in) ; int a=0, b=0, division; try( System.out.print (“Dame un ntimero entero: ”); a = leer.nextint(); System.out.print (“Dame otro nGmero entero: ”); b = leer.nextint(); division = a/b; }eatch (InputMismatchException e) { /*si existe una excepci6n del tipo InputMismatchException realiza lo que esté dentro de este bloque */ System.out.printin(“Lei datos inv4lidos”); System.out.printin("Se dio una excepcién”) ; } catch (ArithmeticException e) { /*si existe una excepcién del tipo Arithmetic&xception realiza lo que esté dentro de este bloque */ System.out.printin(*Resultado infinito”); System.out.printin("Se dio una excepcién”); } System.out.println("Se siquié con la ejecucién”); , ) Ejecucién sin excepeiones Ejecucién con excepciones Dame un mimero entero: 3 Dame un mimero entero: 3 Dame otro mimero entero: 0 Dame otro mimero entero: gato Resultado infinito Lef datos invilidos Se dio una excepcién, Se dio una excepeién Se siguié con la ejecucién Se siguié con la gjecucién GENERACION CORRECTA GENERACION CORRECTA (cotal time: 6 seconds) (cotal time: 12 seconds) En este caso el usuario ingresé niimeros que dan__ | En este caso el usuario ingresé un valor no vélido un resultado infinitos por lo que, se lanz6 una __| (gato); por lo que se lanzé una excepcién del tipo excepcién del tipo ArithmeticException | InputMismatchException queseatrapé que se atrapé en el catch ysemanejéimpri- | enel catch y se manejé imprimiendo el men- miendo el mensaje “Resultado infinivo”. saje “Lef datos invdlidos” FUNDAMENTOS DE PROGRAMACION ALENOMEGA 122 Inteoduccidn a la prog Ejemplo 3.13. El siguiente programa es similar al del Ejemplo 3.12 con la diferencia de que no se es- pecifica cul es el tipo de excepcion que puede manejar, al utilizarse Except ion se atrapa cualquier tipo. import java.util. Scanner; public class ProgramaBxcepcion3 [ public static void main (String [] args} { Scanner leer = new Scanner (System.in) ; int a=0, b=0, division; try{ System.out.print ("Dame un nimero entero: ”); a = leer.nextint(); System.out.print (“Dame otro namero entero: ”); b = leer.nextInt() ; division = a/b; }eatch (Exception e) ( //se atrapara cualquier tipo de excepcién System. out.printin("dcurrié un error en la ejecucién”); //se imprime el tipo de excepcién ocurrida System. out .println(e.toString()) ; ) System.out.println(“Se siguié con la ejecucién”); } ) run: run: Dame un niimero entero: 8 Dame un niimero entero: 478 Dame otro niimero entero: 0 Dame otro mimero entero: cadena Ocurrié un error en la ejecucién ‘Ocurrié un error en la ejecucién java lang ArithmeticException: / by zer0 java.util InputMismarchException Se siguid con la cjecucién Se siguié con la ejecucién GENERACION CORRECTA GENERACION CORRECTA (total time: 13 seconds) (coral time: 18 seconds) 3.13 Resumen Java es un lenguaje de programacién de alto nivel orientado a objetos que se cre6 con el patrocinio de Sun Microsystems en 1991 como parte del Green Prayect compuesto por trece personas y dirigido por James Goslin. La idea inicial era crear un lenguaje que permitiera a los programadores escribir el cSdigo una vez y ejecutarlo bajo cualquier plataforma. Se dice que Java debe su nombre a un tipo de café dis- ponible en una cafeteria cercana a Sun Microsystems, esa es la raz6n por la que su icono es una taza de café caliente. ALINOMEGA ‘iene, JIMENEZ, ALVARADO Resumen 123 Java tiene sus bases en los lenguajes de programacién C y C++ pero eliminando complejidades de estos lenguajes que propician errores al momento de programar. Una diferencia importante es que no usa apuntadores algo que es un problema para programadores menos experimentados en C y C++. En Java cl programador no se debe preocupar por la administracién de la memoria y la ubicacién de la informa- cida, ya que cuando se desea crear un espacio para guardar informacién, simplemente hace la peticién al lenguaje y Java le otorga el espacio y el control de la ubicacién de los datos. Cuando se libera el espacio en memoria, Java tiene el método Garbage Collector (Recolector de Basura) para recuperar los espacios de memoria que no se utilizan, administrando eficazmente la memoria de la computadora. Java tampoco permite la herencia muiltiple porque causa muchos problemas dificiles de predecir y opta solamente por a herencia simple, que usada adecuadamente suple la herencia multiple de manera més facil de aplicar y entender. Se dice que est basado en el paradigma orientado a objetos porque manejan las técnicas de herencia, cohesién, abstraccién, polimorfismo, acoplamiento y encapsulamiento. Java tiene muchas ventajas sobre los otros lenguajes de programacién porque su uso es gratuito, es multiplataforma porque los programas en Java se pueden ejecutar en cualquier sistema operative (Win- dows, Linux, Unix, Mac Os) sin realizar cambio alguno en los programas. Es Open Source porque el cédigo fuente puede ser visto y modificado por cualquier usuario. Un entorno de desarrollo es una herramienta para que los programadores puedan escribir, compilar, depurar y ejecutar los programas. Algunos de las entornos de desarrollo mas conocidos son: JCreator, Eclipse, JGrasp y NetBeans IDE. En este libro se usard NetBeans IDE para editar los programas en Java, porque es muy didactico y permite la identificacién de errores en el momenta de escribir el programa. Es posible descargar ¢ instalar el sofizeare para programar en Java, directamente de la siguiente pégina: tsp: Aww. oracle.com/technetwork/java/javase/downloads/index.html Los programas en Java tienen tres fases fundamentales: edicidn, compilactin y ejecucién. En la edicién l programador escribe su programa y guarda el archivo con una extensién ,java. En la compilacién se utiliza el java.exe para convertir el cédigo fuente en cédigo muy cercano al binario (baycode) y guarda el archivo con extensién .elass. En la ejecuciéa la JVM (Java Viriwal Machine) carga los archives class en a memoria, verifca el cédigo y lo convierse a cédigo maquina para ejecutarlo finalmente. La JVM es la cencargada de ejecurar los archivos escricos en Java en cualquier plataforma de trabajo. La estructura bésica de un programa en Java es la siguiente: public class Programa ( public static void main (String args []){ instrucciones; instrucciones; } ) La primera linea indica el nombre de la clase (0 programa). La segunda linea corresponde al programa principal que todos los lenguajes en Java deben tener. Tanto la clase coma el programa principal enmarcan ninformacién por medio de las llaves correspondientes. Es posible observar que dentro de la clase esté el programa principal, y dentro del programa principal se encuentran todas las instrucciones del programa. “Todas las variables usadas en un programa de Java deben ser declaradas segtin el tipo de datos o in- formacién que manejaran. En Java se tienen los siguientes tipos de datas primitivas: byte, short, int, long, float, double, char y boolean. FUNDAMENTOS DE PROGRAMACION ALENOMEGA 124 Introduccién a la progeamacion Existen en Java operadores aritmeticos que permiten llevar a cabo las operaciones basicas de suma, resta, multiplicacién, division y médulo. Ademés se dispone de la libreria Math que contiene métodos para calcular las principales funciones matemdticas como: seno, coseno, tangente, porenciacién, valor absoluto, entre otras. 3.14 Problemas 1, Escribir en forma concreta al menos tres ventajas de Java sobre los dems lenguajes de programacién, 2, Solamente diez de las veinte respuestas de la columna de la izquierda, tienen relacién con los textos de la derecha, Colocar Ia letra que corresponda en el paréntesis de la derecha. Respuestas: a) Orkad Java fue creado en 1991 por la compafiia, () 2) James Goslin Java tiene sus raices en los lenguajes ) 0 Microsoft Co. En honor a un viejo roble Java fue llamado inicial- 2 d) NetBeans IDE. ‘mente. CyCt+ Green Proyect compuesto por trece personas disefia~ (+) fi Jonh Bauer dores de Java estaba dirigido por. @ Mulktarea. Auxilia a Java para mejorar el rendimiento de la on) 2) Prolog y Ad: B, Poker Ae En C-++ esta caracteristica da origen a muchas ) 2) Sun Micresyscems siruaciones en donde es dificil predecir cul serd el A Oak resultado. 4) Garbage Collector Herramienta para que los programadores puedan oO) 2d Entorno de desarrollo escribir, compilar, depurar y ejecutar programas. m) P00 Esté basado en varias técnicas, incluyendo herencia, (_ ) n) JCreator cohesin,abstraccién, polimorfismo, acoplamiento = y encapsulamiento, a: Hasna sausate Permite ejecutar el cfdigo binario generado por Oo) ° P el compilador de Java en cualquier plataforma o Pp) Lapropiedad .exe stents operative, @) Programacidn estructurada ——Nacié en 1996 como un proyecto estudiantil (llama (_) 7) Compilador do Xeff) en la Facultad de Materniticas y Fisica en 3) LaJVM la Universidad Carolina en Praga 3. Codificar en Java cada ua de las siguientes expresiones mateméticas, usando paréntesis cuando sean requeridos para agrupar informacién. Considerar que cada una de las letras es una variable diferente a excepcidn de la palabra “mod” que representa la operaci6n ariunética médulo. 32 @) y=bmod(c-54) ? eS) aT ALIAOMEGA ‘iene, JIMENEZ, ALVARADO Problemas 125 86-7mod5 a at = 3)mod a yo Smadtd+bmed2)~8 yy yd 3 %e-a 4. Codificar en Java las expresiones matematicas de cada uno de los incisos. Considerar que cada una de Jas letras es una variable diferente a excepcién de la palabra “mod” que representa la operacién aritmé- tica médulo. 4) y=(amodbe~ ad mod3)mod2 (4d - bmod5)6 9) y= SaaFindby ~ 7modab dmodc 0) ya tmedle= D5 mod 342 bmod5+2 5. Representar por edio de la expresién matemética correspondiente las lineas de cSdigo de cada uno de Jos incisos siguientes: 4) y = (B%b—5)/(4*(7%b +6) +a*e) +<%065 B) y= (C*A+5%b)96(7"2+8) +3%%/2; 9) y = 4%a-3°((b%5+8)/(c+b%5))) (arc); 6. Representar por medio de la expresi6n matematica correspondiente las lineas de cédigo de cada una de los incisos siguientes: 4) y= (@-(C*d+2)%5)*O)/(T*2+b%4) +71(2%3): Dy = €%(a+3)—7%0)/ 4445) + (b-9"a)/(7960): y= (54+ 9%c—7)! ((4%(c+2*b))/(b+e*d)) + (b-3*a)/25 7. Evaluar paso a paso las lineas de cbdigo de cada uno de los incisos del problema 5, considerando que las variables se definen de tipo entero de la siguiente manera: int a=2, b=4, e= d=8, y: 8. Evaluar paso a paso las Iineas de cédigo de cada na de los incisos del problema 6, considerando que las variables se definen de tipo entero de la siguiente manera: inta=-l, =7,d=-4,y; FUNDAMENTOS DE PROGRAMACION ALENOMEGA 126 Introduccién a la progeamacion 9. Codificar en Java cada una de las siguientes expresiones mateméticas, considerando que cada una de las letras es una variable a excepci6n de las funciones trigonométricas (cos y csc). eT 3a(5-6)" 3: cos(40") Sx +4 ay Dyn 3 ya fCa-F a 10. Codificar en Java cada una de las siguientes expresiones mateméticas, considerando que cada una de tas letras es una variable a excepcién de las fanciones trigonomeérricas (tan y cos) y que los angulos de las funciones trigonométricas sc encuentran en grados. 11, :Cual es la expresiém matemitica equivalente de cada una de las lineas de cédigo expresadas 2 conti- uacién?, a) y= 3ta*(b—4*(c—2d)) +(5%e—8)/(7*a)s 6) y = ((4*Math.pow(x,2)—8)/7)/(6*(2*«—14))+ (5-Math.pow(x,3)}/35 6) y = Math.cos(60°3. 1416/180)—Math.sqrt(Math.pow(x,2)—4)/Math.abs(7*x-8); 12. ;Cual es la expresién matemitica equivalente de cada una de las lineas de cédigo expresadas a conti- nuacién?. @) y= (a-7*(b+3))/Math.sqrt(Math.pow(2,2)-5%c) + (4*b)/(e—2)s 2) y = ((3*Math.pow(a,4)-5)/Math.pow(70*3.1416/180))/(b—4*d) + Math.pow((6*d-7)/9,1/3.0); 6) y= (Math. tan(e+20)*3.141.6/180))/(Math sin (3*x)*3.1416/180) —7*(Math.pow(x,2)+1))s ALIAOMEGA ‘iene, JIMENEZ, ALVARADO Problemas 127 13, Escribir un programa para leer los valores de los cocficientes de la ecuacién de segundo grado (a, b y ©) cuya forma es la siguiente: at bot c= 0 Posteriormente encontrar sus raices usando para ello la formula general mb 2b — Sac 2a Considerar que se tiene la ecuacién: 3x7 + 7x — 6 = 0, entonces la salida es: 14, Escribir un programa para leer el radio de una circunferencia (r) y posteriormente calcular el area y perimetro de la circunferencia, sabiendo que: Area = ne Perimetro = 24 16. Escribir un programa para leer de teclado una cantidad expresada en Kilogramos (Kg) y convertir dicha cantidad a Toneladas (Ton), gramos (gr), onzas (02) y libras (Ib) considerando las siguientes equivalencias de peso. 1Ton=1000Kg 1 Kg=1000gr—Lor=28.35gr 1 Ib = 454 gr FUNDAMENTOS DE PROGRAMACION ALENOMEGA ala programacién 128 Kilogramos: 678 678 Kilogramos es equivalente a: @) 0.6780 Ton 5) 678000.00 gr 3) 23915.3439 oz 4) 1493.3921 Ib 17. Escribir un programa para leer un Angulo (en grados) y calcular las funciones trigonométricas (seno, coseno, tangente, cotangente, secante y cosecante).. Angulo (en grados): 30 sen (30) = 0.5000 cos (30) = 0.8660 S774 1.7320 sec (39) = 1.1547 esc (39) = 2,000 18. Escribir un programa para leer dos niimeras enteras (x, y) de teclado y realizar las siguientes opera- ciones con ellos: 4) Muliplicarlos (&*y). 4). Dividir el primero entre el segundo (x/y) ©) Elevar el primero a la porencia del segundo (2). 4) Encontrar la raiz del primero con respecto al segundo (%/2). 9. Enconcrar el médulo del primero con respecto al segundo (x mod y). 6.00 0.67 8.00 Rafz 3 de 2 = 1.26 2mod 3=2 AUAOMEGA Jie, JIMENEZ, ALVARADO CONTROL DE FLUJO Primero entiende el problema, luego escribe el ebdigo. Jobn Jonson Competencia de la unidad Construir programas utilizando estructuras condicionales y repetitivas para aumentar su funcionalidad. + Disefiar programas donde se utilicen las estructuras de repeticidn y seleccién. © Construir programas con funciones yfo métodos. + Escribir programas en donde se utilicen algunas funciones tipo cadena. ‘© Escribir programas usando funciones recursivas, Control de flujo Contenido 4.41, Inttoduccién, 4.5. Manipulaci6n de cadenas. 4.2, Estructuras selectivas: simple, doble y 4.6. Disefto e implementacién de funciones y miltiple métodos 4.3, Estructuras iterativas: mientras, 47. Resumen. hacer—mientras, desde. 4.8. Problemas. 44, Ciclos anidados, FUNDAMENTOS DE PROGRAMACION ALENOMEGA 130 Control de flujo 4.1 Introduccién El control de flujo permite encausar a la computadora sobre la ruta que debe seguir al momento de la ejecucién de un programa, para ello se apoya en las estructuras de control que le permitirin tomar deci- siones, repetir la eecucién de un grupo de instrucciones, subdividir los programas grandes en pequetios programas que realizan una actividad determinada. En esta unidad se trataran las estrucnuras selectivas simples (4£), dobles (if-else) y miiltiples (witch) aplicadas a problemas en donde sean necesarias las bifurcaciones. Las estructuras iserati- ‘vas mientras (whi Le), hacer— mientras (do-while) y desde (for) para ejecurar un bloque de sentencias mientras cierta proposicién sea verdadera. Se resolverin problemas que requieran ciclos anidados e ins- srucciones selectivas anidadas, buscando con ella la potenciacién de las estructuras de control. ‘También se verd la segmentacién y control de programas en subprogramas més pequefios Hamados ‘métodos y/o funciones, como una manera de preparar el terreno para atacar sistemas de programacién més complejos en el momento cn que se requiera. Se abordarin métodos iterativos y recursives con la finalidad de que se tengan los elementos para resolver problemas que presentan una naturaleza recursiva. 4.2. Estructuras selectivas: simple, doble y miltiple La complejidad de los problemas hacen que dificilmente los programes sean solamente una estructura secuencial, muchas veces es necesatio ejecutar unta instruccién o bloque de instrucciones dependiendo de si se cumple o no una condicién. Las preguntas se plantean por medio de condiciones estructuradas en forma légica y el resultado sera verdadero o falso pero no ambos a Ia ver, en funcién del resultado seri el bloque de acciones a ejecutar. Las instrucciones sclectivas se clasifican en: simples, dobles y mikriples. 4.2.1 _Instruccién selectiva simple (if) Se dice que la instruccién selectiva es simple si al cumplirse la condicién se ejecuta una instruccién 0 bloque de instrucciones y en caso de ser falsa no se ejecuta accién alguna. Fl formato general de una ins- truccién selectiva simple es: Af (condicién) { instrucciones. } La condicién de la instruccién selectiva es una proposicién logica integrada por variables, operadores relacionales y/o operadores lgicos. Las instrucciones que se ejecutan en caso de que la proposicién sea ver~ dadera, pueden ser cualquiera que la computadora pueda llevar a cabo. Ejemplos tipicos de la instruccién selectiva simple se muestran a continuacién, a) b) Af (promedio >= 70) { if (promedio >=70) System.out.printin (“Felicidades “}; ++; nbs ) ALINOMEGA ‘iene, JIMENEZ, ALVARADO Estructuras selectivas: 3 ple, doble y miiltiple 131 En el primer caso se utilizan Haves para encerrar el bloque de instrucciones que se deben ejecutar sila condicién se cumple. En el segundo caso no son necesarias esas llaves, porque es solamente una instruc- cia la que se debe realizar si se cumple la condicién. La regla es que si son mds de una sentencia las que se deben ejecutar se deben encerrar entre llaves, pero si solamente se trata de una instrucci6n, podrian no ser necesarias ls Haves; aunque si se ponen igual funciona perfectamente bien. Ejemplo 4.1. Escribir un programa para leer el nombre y precio de un articulo. Si el articulo tiene un precio mayor o igual a 100 pesos, imprimir el nombre del articulo y el mensaje “es muy caro” y el precio del articulo. Posteriormente en otra linea desplegar el mensaje “maximo puedo pagar por este articulo $100.00”. Si el articalo ciene un precio menor 2 $100, que no se imprima nada import java.util.scanner; public class ifsimple ( public static void main(String[] args) { String arti; double precio; Scanner leer= new Scanner (System.in); System.out.print (“Nombre del articulo: “); arti= leer.next(); System.out.print ("Precio (pesos): "); precio= leer.nextDouble() ; if (precio>=100) { System.out.print£ (“$s es muy caro, vale $%.2f\n”,arti,precio]; System.out.printIn (“maximo puedo pagar por un “+arti+” $100.00"); y } y run: Nombre del artfculo: Martillo Precio (pesos):143 Martillo es muy caro, vale $143.00 maximo puedo pagar por un Martillo $100.00 GENERACION CORRECT (total time: 11 seconds) 4.2.2. Instruccién selectiva doble (if - else) La estructura selectiva doble se utiliza cuando se tienen dos opciones de accién, Con la bifurcacién doble se ejecuta un blogue de instrucciones A si se cumple la condicién o bien se ejecuta el bloque de instruc~ FUNDAMENTOS DE PROGRAMACION ALENOMEGA 132 Control de flujo ciones B en caso de que no se cumpla, debido a que son mutuamente excluyentes. La estructura selectiva doble tiene el siguiente formato: if (condicién) { Instrucciones A Instrucciones B Nuevamente el uso de las laves es importante para agrupar el bloque de instrucciones a cjecutarse si se cumple o no la condicién, A continuacién se tienen dos casos tipicos de la doble condicién. if (promedio >= 80) { if (promedio < 70){ System. out. System.out. println(*Felicidades ”); printla(“Lastima ”); nit; atts ) } else else { system. out. print (Suen System. out printin(™8ajo promedio "); promedio “); System.out. println(*Estudia mas”); } En el primer caso se usaron las llaves para agrupar las instrucciones que se ejecutarén si se cumple la condicién, pero sino se cumple no fue necesario usar Haves porque es solamente una instruccidn la que se debe ejecutar. En el segundo caso se utilizaron llaves para agrupar las instrucciones que se debea ejecutar si se cumple o no la condicién, porque en ambos casos es més de una instruccién, Ejemplo 4.2. Escribir un programa para leer el tiempo de duracién de una llamada tclefonica y de- terminar la cantidad a pagar, de acuerdo a lo siguiente: a) Toda llamada que dure 3 minutos 0 menos tiene un costo de $2.50. 4) Cada minuto adicional cuesta $1.50 import java.util.scanner; public class llamada { public static void main(String[] args) ( ALINOMEGA ‘iene, JIMENEZ, ALVARADO ple, doble y multiple 133 Estructuras selectivas: 3 double tiempo, costo _minimo=2.50, costo; Scanner leer = new Scanner (System. in) ; System.out.print (“Tiempo (minutos): "); tiempo=leer.nextDouble() ; Lf (tiempo>3) { costo=costo_minimot (tiempo-3) *1.50; System.out.printf (“Costo= $%.2f\n", costo); } else System.out.print£ (“Costo= $%.2£\n",coste_minimo); y } ‘Tiempo (minutos): 5.3 Costo= $5.95 GENERACION CORRECTA (total time: 8 seconds) En el programa anterior se lee el tiempa en minutos de Ia llamada, si la duracién es de més de tres ‘minutes el precio de la Hamada resulta de sumar el costo minimo de $2.50 para los primeres 3 minutos, mas los minutos restantes multiplicados por $1.50. En caso de que la duracién sea menor o igual a 3 mi- nutes, solamente se cobraré el costo minimo. Operadores relacionales. Con ellos es posible llevar a cabo la comparacién de informacién. La comparacién permite determinar si la proposicién de una instruccién selectiva es falsa o verdadera. Los ‘operadores relacionales usados en el lenguaje Java se muestran en la siguiente tabla. Operador Significado Fjemplo > Mayor que if (x > y) < Menor que if («= y) <= Menor © igual que if (« <= y) Igual a if y) Diferente de if (x != y) Operadores ldgicas. Adicionalmente a los operadores relacionales es posible wilizar en caso de ser requeridos los operadores légicos, para determinar si son falsas 0 verdaderas mis de una proposicién. A continuaci6n se tienen los operadores légicos més utilizados en Java. FUNDAMENTOS DE PROGRAMACION ALENOMEGA 134 Control de flujo Operador Significado | Operador en java Ejemplo and y && if (x > y Gem or ° ul if Ge >y 1) (== n)) not no \ if !(m == n) E] operador | | se puede obtener presionando la tecla ALT y simuleéneamence teclear el mimero 124 (ALT +124). O bien en algunos teclados pulsando ALT GR+1. Una proposicién puede estar integrada por signos aritméticns, operadores relacionales, paréntesis, operadores Iégicos ¢ incluso el signo de igualdad. De tal manera que es conveniente saber qué operacién tiene mayor jerarquia de operacién con el objeto de evitar errores al momento de estructurar la proposi- cidn, A continuacién se tienen los operadores y su jerarquia de operacién. Operador Jerarquia de operacién co) Ia. Be Ba, Il a. Para aquellos operadores que tienen la misma jerarquia, se evalia primero el operador que esté més ala izquierda. Bjemplo 4.3. Si a= instruccién selectiva? b: 1, ©=7, leua='w’. ;Cudl es el mensaje que se imprime en la siguiente if (a te & | (letra!= Ww! || 45) || 2=(-1)*7 66 ! 345) || 2<783) | Sustituyendo valores. af (3>=(-1)*7 ge ! 8) || 2<783) | Suma del paréntesis interno. Dentro del paréntesis esté 4£ (3>=(-1)*7 6& I (falso || ) 1) 2<783) a ee evahia el que esta masa la inquierda 4£ (3>=(-1)*7 && !(falso || falso) || 2<7%3) | Ahorad aif (3>=(-1)*7 && !(falso) || 2<7%3) El | | del paréntesis. if (3>=-7 && !(falso) || 2<7%3) La maltiplicacién if (3>=-7 6 !(falso) || 2<1) El modulo (4). if (verdadero @@ !(falso) || 2<1) H(>=). if (verdadero && !(falso) || falso) EI(<). if (verdadero && verdadero || falso) ‘La negacién not (). if (verdadero || falso) Eland (&8). if (verdadero) Finalmente el or (\ | ) Lo cual implica que el mensaje que se imprime es “Hola _manzana”. Muchos programas utilizan instrucciones en donde una sentencia selectiva esté dentro de otra, y dentro de ésta ilrima; esté otra instruccién selectiva. En estos casos se dice que el programa tiene 1£s anidados. Fjemplo 4.4. A los alumnos de nuevo ingreso del Tecnolégico de Morelia se les entregarin secomendaciones para becas. La recomendacién se basa en lo siguiente. a) promedio = 90 Muy buena recomendacién b) 80 = promedio <90 Buena recomendacién ©) 70 = promedio <80 Endeble recomendacién Eccribir un programa que lea el nombre y promedio del alumno y que con esa informacién indique dl tipo de recomendacién para ese alumno. import java.util.Scanner; public class beca { public static void main(String[] args) { int promedio; String nombre; FUNDAMENTOS DE PROGRAMACION ALENOMEGA 136 Control de flujo Scanner leer = new Scanner (System. in) ; System, out.print (*Nombre: “); System. out.print ("Promedio: “); promedio= leer.nextInt (); if (promedio>=90) System.out.println (nombre+”, Tiene MUY BUENA recomendacién”) ; else if (promedio>=80 && promedio<90) System.out.printin (nombre+”, Tiene BUENA recomendacién”) ; else 4£ (promedio>=70 && promedio<80) System.out.printin (nombre+”, Tiene ENDERLE recomendacién”) ; else System.out.printin (nombre+”, Checa tu promedio por fa~ vor"); } ) Nombre: Carlos Alberto Promedio: 87 Carlos Alberto, ‘Tiene BUENA recomendacién GENERACION CORRECTA (total time: 16 seconds) Observar que si se cumple la condicién: 4£ (promedio>=90 no y el mensaje de: MUY BUENA recomendaci én, Sf la condicién es falsa, ejecuita la instruccién selectiva: i£ (promedio>=80 && promedio<90) , silacondicién de este nuevo i€ se cumple imprime el mensaje correspondiente y en caso de ser falsa ejecuta una nueva instruccién condicional. A imprime el nombre del alum esta forma de colocar un if dentro de otro ££, se conoce en computacién como ifs anidados. 4.2.3 Instruccién condicional miltiple (switch) Exiseen programas en donde la cantidad de instrucciones condicionales anidadas requeridas es consi- derable, y por lo tanto se tiene que escribir mucha informacién en cada linea, porque las instrucciones sclectivas anidadas ocupan mucho espacio, ademés de que no son ilustrativos los programas con muchos ifs anidados, de seleccién miltiple “switch” que permite sustituir estos i £8 anidados por una estructura facil de entender y usar. EI formato general de la instruccién switch es: que causan confusién al momento de tratar de entenderlos. Java tiene la instruccién ALINOMEGA ‘iene, JIMENEZ, ALVARADO

También podría gustarte