0% encontró este documento útil (0 votos)
1K vistas152 páginas

Fundamentos de Programación Usando PSeInt

Cargado por

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

Fundamentos de Programación Usando PSeInt

Cargado por

Enrique Mendoza1
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
4 ea Io | Ral AES, F Ria) Dp an VY y SAEs nw Nt wy TN ~ “Fundamento Novae Programacion ro usando PSelnt Baie Fundamentos de Programacion Usando PSelnt Dr. Hugo Ruiz Enriquez RECTOR AUTOR: MSc. Ivan Garcia Santillan Docente Titular Auxiliar UPEC ( Carrera de Informatica; Administracién de Empresas) LIBRO REVISADO POR: MSc. Marco Pusda (Universidad Técnica del Norte - Ecuador) MSc. Patricio lles (Universidad Técnica del Norte - Ecuador) ISBN : 978-9942-914-18-7 Derecho de Autor N° 045156 Primera Edicién Diciembre 2014 Tuloan - Carchi - Ecuador Comision de Publicaciones UPEC CP.UPEC. 0.005-2014 DISENO Y DIAGRAMACION: IMAGO Veracruz N34-90 y Av. América 3316378 - 0996017113 graficasimago@hotmail.com Quito - Ecuador PROLOGO El libro de Fundamentos de programacién usando PSeint trata sobre el andlisis y disefio de algoritmos, es decir, que se centra en la ldgica de la programacién mas que en la codificacién utilizando algin lenguaje de programacién especifico como C, C++, Java, C#, PHP, VB, pascal, python, javaScript, Matlab. Esto permite desarrollar en los estudiantes de cualquier disciplina, las capacidades mentales necesarias para poder programar computadoras. Para el diseiio de algoritmos se hace uso de los diagramas de flujo y pseudocédigo utilizando el programa PSelnt, que es software libre. Ademas se utiliza los paradigmas de la programacién estructurada y modular (descendente 0 top down) que son la base que sustentan la programacién orientada a objetos. Esta tiltima (POO) queda fuera del aleance de este libro. El libro puede ser utilizado en ta asignatura de fundamentos de programacién de la carrera de Informatica 0 afines, asi como también en otras disciplinas como Electrénica, Mecatrénica, Industrial, Administracién de Empresas, etc. Mantiene un lenguaje fécil de entender para los estudiantes y contiene una variedad de ejercicios resueltos y propuestos. Los enunciados de los ejercicios planteados en el texto resultan ser de la experiencia docente del autor, asi como de la seleccién adecuada de otras fuentes de consulta como libros e Internet. sin Garcia . Fundamentos de Programacin usando PSelnt 7 INTRODUCCION La presente obra denominada Fundamentos de Programacién usando PSelnt se ha creado tanto para estudiantes y profesionales de informatica o afines como para otras disciplinas con el objetivo de proporcionar una guia tedrica y practica que sea facil y, a su vez, no pierda el rigor técnico de la programacién de computadoras. El texto esta dividido en ocho capitulos, los cuales cubren los fundamentos de la programacién, En el capitulo I se hace una introduccién a la Programacién, con tépicos como el ciclo de la programacién, paradigmas de programacién, tipos de aplicaciones y lenguajes de programacién. El capitulo II hace una introduccién al programa PSelnt y su entorno de trabajo. En el capitulo III se tratan los algoritmos basicos utilizando Diagramas de Flujo y el enfoque de la programacién estructurada. En el capitulo IV se presentan algoritmos més complejos utilizando Pseudocédigo. En el capitulo V_se analiza el disefio modular conocido también como anilisis descendente 0 Top Down. Aqui también se utiliza el paso de pardmetros por valor y por referencia. En el capitulo VI se trabaja con los arreglos unidimensionales y bidimensionales. En el capitulo VII se usa la recursividad como una técnica diferente para resolver problemas computacionales. En el capitulo VIII trata la conversion de los algoritmos a cédigo fuente utilizando los lenguajes de programacién disponibles en PSeInt (C, C+, java, C#, PHP, VB.net, pascal, python, javaScript, Matlab). Los ocho capitulos son indispensables para el anilisis, disefio, codificacién y depuracién de programas de computadora. EI libro en total contiene 65 ejercicios resueltos y 68 ejercicios propuestos. En la resolucién de los ejercicios no necesariamente se presenta el mejor algoritmo. Por lo tanto, queda para el estudiante el anilisis detallado de los algoritmos resueltos para entender su légica de programacién y proponer altemnativas de solucién mas eficientes. Para la resolucién de ciertos ejercicios propuestos, es posible que el estudiante deba consultar ciertos conceptos 0 formulas en otras fuentes de consulta pertinente al problema respectivo. Esto le permitira desarrollar la habilidad de autoaprendizaje, esencial en un profesional en formacién. Adicionalmente, existe el buz6n de correo electrénico ivan.garcia@upec.edu.ec para interactuar con sus lectores y recibir cualquier sugerencia. El Autor vin Garcia S Fandamentos de Programacién usando PSelnt AGRADECIMIENTO A toda la comunidad que conforma la Universidad Politécnica Estatal del Carchi que ha hecho posible la culminacién de la presente obra. A. mis alumnos de la asignatura de Fundamentos de Programacién de la Carrera de Informatica y Administracion de Empresas, por pemmitirme poner de manifiesto todo lo aprendido en estos Ultimos afios de docencia. A Pablo Novara, creador del PSednt, por acoger algunas sugerencias para el mejoramiento del programa. A todos ellos mis sentimientos de aprecio y gratitud. iii Ihin Garcia S. Fundamentos de Programacién usando PSelnt DEDICATORIA ‘A mi esposa Sary y mis hijos Andy y Yamileth, testigos y motivo de mi esfuerzo, constancia y dedicacién. iv vin Garcia Fundamentos de Programacion wsando PSelnt Tabla de contenido 1. Introducci6n a la Programacién ... 1.1 La Programacién. 1.2 El ciclo de la programacién ... 1.3 Los paradigmas de la Programacion... 1.3.1 La programacién estructurada 1.3.2 La programacién modular (descendente o top-down) . 1.3.3 La programacién orientada a objetos (POO) 1.4 Tipos de Aplicaciones.. 1.4.1 Aplicacién de Consola..... 1.4.2 Aplicacién de Escritorio . 1.4.3 Aplicacién Web 1.4.4 Aplicacién Mévil 1.5 Lenguajes de programacién 1.6 Tareas propuestas.. 2. Introduccién a PSelnt . 2.1 Qué es PSelnt... 2.2 El entomno de trabajo 2.3 Perfiles 2.4 Editor de Diagramas de Flujo 2.5 Editor de Pseudocé 2.6 Ejecucién del algoritmo 2.7 Guardar el algoritmo 2.8 Exportacién a cédigo fuente ... 2.9 Tareas propuestas... 3. Algoritmos: Diagramas de Flujo 3.1 Qué son los algoritmos 3.2 Diagramas de Flujo Indu Garcia S Fundamentos de Programacién usando PSednt 3.3 Forma general de un algoritmo.. 3.4 Operadores basicos en PSelnt... 3.5 Funciones incorporadas en PSelnt.... 3.5.1 Funciones Matematicas.... 3.5.2 Funciones de Cadena de caracteres... 3.5.3 Otras funciones .. 3.6 Variables y tipos de datos ... 3.7 Estructuras basicas de control.... 3.7.1 La secuenciacion. 3.7.2 Ejercicios de Secuenciacién 3.7.3 Laseleccion 3.7.4 Ejercicios de Seleccién 3.7.5 La Repeticién (bucle, ciclo 0 iteracion 3.7.6 Ejercicios de Repetici6n .... 3.8 Estructuras de Control anidadas ... 3.9 Ejercicios con estructuras de control anidadas .. 3.10 Observaciones del capitulo . 3.11 Ejercicios propuestos ... 4. Algoritmos: Pseudocédigo ... 4.1 Definicién y forma general 4.2 Estructuras basicas de control 4.2.1 La Secuenciaci6n .. 4.2.2 Ejercicios de Secuenciacién. 4.2.3 La Seleccion. 4.2.4 Ejercicios de Seleccién: 4.2.5 La Repeticion 4.2.6 Ejercicios de Repeticion .. 4.3 Estructuras de control anidadas ... 4.4 Ejercicios de estructuras de control anidadas ... 4.5 Miscelanea de ejercicios Isin Garcia Fundamentos de Programacion usando PSelnt 4.6 Observaciones del capitulo .... 4.7 Ejercicios propuestos .. 5. Disefio modular (descendente 0 top-down). 5.1 Subprocesos (métodos: funciones y procedimientos)... 5.2 Ejercicios de modularidad ..... 5.3 Variables locales y globales.... 5.4 Paso de parimetros por valor y referencia... 5.4.1 Ejercicios de paso de parémetros.. 5.5 Ejercicios propuestos... 6 Arreglos.. 6.1 Arreglos unidimensionales (vectores)... 6.1.1 Ejercicios con Vectores.... 6.1.2 Ejercicios propuestos con Vectores ..... 6.2 Arreglos Bidimensionales (matrices)... 6.2.1 Ejercicios con Matrices..... 6.2.2 Ejercicios propuestos con Matrices ... 7. Recursividad... 7.1 Definicién .... 7.2 Ejercicios de recursividad... 7.3 Ejercicios propuestos 8 Conversion del algoritmo al cédigo fuente .... 8.1 Exportacién a Java 8.2 Exportacion aC. 8.3 Exportacién a C++ 8.4 Exportacién a PHP 8.5 Exportacion a VB.net...... 8.6 Exportacién a Pascal . 8.7 Exportacién a Python 8.8 Exportacion a JavaScript . 146 8.9 Exportacién a Matlab vin Garcia Fundamentos de Programacion usando PSeint 8.10 Exportacion a C#... 8.11 Ejercicios propuestos Glosari Bibliografia ... viii vin Garcia. Fundamentos de Programacion wsando PSelnt 148 ~x CAPITULO I INTRODUCCION A LA PROGRAMACION En este capitulo usted encontrara: La programacién El ciclo de la programacién Los paradigmas de la programacion = Estructurada = Modular (descendente o top-down) = Orientada a objetos VVV > Tipos de aplicaciones = Consola = Escritorio = Web = Movil n > Lenguajes de programacion » Tareas propuestas 1. Introduccién a la Programacién 1.1 La Programacién La programacién de computadoras surge en los afios 50 (Lopez, 2011) con la finalidad de resolver problemas especificos con la ayuda del computador, Por ejemplo: calcular el impuesto a la renta de una persona natural, fondos de reserva de un empleado, décimo tercer sueldo, etc. Con la evolucién tecnolégica (principalmente de la electronica) se empieza a construir computadoras con mayor capacidad de procesamiento y almacenamiento, y con ello la proliferacién de lenguajes de programacién cada vez més faciles y potentes para el desarrollo de programas. Algunos de los lenguajes de programacién son: C, C+, Java, C#, VB, php, pascal, Python, javaScript, entre otros. La Programacién es el proceso de analizar, disefiar, codificar o traducir, depurar y ‘mantener el cédigo fuente de los programas computacionales, los cuales son escritos en algin lenguaje de programacién (Joyanes, 2008). 1.2 El cielo de la programacién Figura 1.1. El ciclo de Programacién Fuente: Lépez (2009) Ind Garcia S Fundamentos de Programacion usando PSelnt En el anilisis del problema se debe comprender con precisién en qué consiste el problema, es decir, cules son los datos disponibles (entrada) y resultados (salida), las restricciones (que est permitido 0 prohibido hacer y/o utilizar) y los procesos (pasos, formulas) necesarios para convertir dichos datos (insumos) en resultados. Por ejemplo: Realizar el andlisis del problema para obtener el rea de un circulo. Entrada: Radio del circulo Salida: Area del circulo Proceso: Calcular el area del circulo a través de la formula: A = xr? En el Disefio se elabora un algoritmo (diagrama de flujo 0 pseudocédigo) que resuelva el problema planteado. En este libro se utilizaré el programa PSelnt para el disevio de los algoritmos (véase el capitulo 2). En la Codificacién, el algoritmo se traduce a un lenguaje de programacién especifico y se obtiene un programa, Puede utilizarse java, C++, C#, php, etc. En la depuracién, los resultados se prueban y validan, se afinan ciertos detalles y corrigen ciertos errores: sintaxis, ldgicos, en tiempo de ejecucién. La sintaxis son las reglas que rigen el uso de las palabras, simbolos y la puntuacién de cada lenguaje de programacién, Los errores de sintaxis son los més faiciles de detectar y corregir. Los errores légicos producen como resultado una salida incorrecta y son mas dificiles de detectar y corregir. Los errores en tiempo de efecucidn se producen cuando el programa esta en ejecucién y se presenta alguna anomalia como por ejemplo: mal ingreso de los. datos de entrada, no est disponible la red, dispositivos de almacenamiento, impresién, etc, La documentacién de un programa también es una parte fundamental y se la puede hacer en cada etapa o al final. Otra manera més detallada del ciclo de desarrollo del programa es el propuesto por Farrell (2013): sin Garcia . Fundamentos de Programacin usando PSelnt Figura 1.2 El ciclo del desarrollo del programa Fuente: Farrell (2013) 1.3 Los paradigmas de la Programacién Existen algunas técnicas de programacion cuya finalidad consiste en mejorar el proceso de creacién de programas, asi como su mantenimiento y documentacién, Algunas de ellas son: programacién estructurada, modular y orientada a objetos. Figura 1.3 Paradigmas de la programacién Fuente: Adaptado de Lopez (2011) Ién Garcia Fundamentos de Programacion usando PSeInt 1.3.1 La programacién estructurada Segiin Lopez (2011), la programacién estructurada es la base en la que se sustenta la programacién orientada a objetos, por lo que se debe dominar primero. Los elementos de la programacién estructurada principalmente son: tipos de datos, estructuras de control (secuenciacién, seleccién, repeticién). Los tipos de datos principalmente son: nimero (entero, real), caricter/cadena de caracteres, fecha, booleano (verdadero, falso). La secuenciacién es la capacidad de ejecutar las instrucciones secuenciales una tras otras. La seleccién es la capacidad de escoger, entre altemativas, si algo se ejecuta 0 no, y la repeticién es la capacidad de ejecutar una o mas instrucciones varias veces. 1.3.2 La programacién modular (descendente o top-down) Conocida también como diseiio descendente 0 Top-Down, se puede considerar como una evolucién de la programacién estructurada. Divide un programa en varios médulos (subprogramas) mas simples con la finalidad de hacerlo mas comprensible y manejable, asi como solucionar problemas mas grandes y complejos de una mejor forma. Cada médulo realiza una tarea especifica y algunos de ellos pueden necesitar de otros para funcionar. Un médulo ademas puede contener varios métodos: procedimientos 0 funciones, (véase la figura 1.4). En resumen, esta técnica permite disefiar programas bien estructurados, documentados, ficiles de entender y mantener. a ~, aS : ‘Modulos CONTABILIDAD Funciones 0 > ese (métodos) Figura 1.4 Programa de gestién contable 13 Ivin Garcia . Fundamentos de Programacién ssando PSelnt a objetos (POO) 1.3.3 La programacién orienta La POO se puede concebir como una evolucién de la programacién modular, debido al requerimiento de programas mis ambiciosos (aplicaciones grificas, méviles, web). Aqui se caracteriza por los conceptos de objetos, clases, encapsulacién, herencia y polimorfismo. Un programa consiste en un conjunto de objetos que se comunican entre si a través de mensajes. Cada objeto se compone de datos y métodos como se muestra ena figura 1.5. Cc Nombre de la Clase ==>. Atributos }- Cédula |- nombres - apellidos |- Fecha - nacimiento - direccion }- teléfono - email + agregar () + eliminar () + Modificar() + leer () = Métodos, operaciones o eventos Figura 1.5 Clase Alumno En este libro usaremos los paradigmas de la programacién estructurada y modular para la resolucion de los ejercicios. Queda fuera del alcance la programacién orientada a objetos. 14 vin Garcia. Fundamentos de Programacisn usando PSelnt 1.4 Tipos de Aplicaciones Figura 1.6 Tipos de Aplicaciones 1.4.1 Aplicacién de Consola Estas aplicaciones se ejecutan a través de una interfaz de linea de comandos (CLD, es decir, en una ventana de MS-DOS, Gnome, KDE, ete. No tiene interfaz grafica y se ejecuta en modo texto. Tienen la ventaja de consumir menos recursos del equipo por lo que suelen ejecutarse rpidamente. Algunas aplicaciones de consola son: programa de contabilidad Tini, Tmax, ete. Figura 1.7 Aplicacién de Consola (Verifica si el afio ingresado es bisiesto) 1.4.2 Aplicacién de Escritorio Estas aplicaciones son ejecutadas y administradas directamente por el sistema operativo del equipo (Windows, Linux, Mac OS) y su rendimiento depende de las configuraciones del propio hardware (RAM, procesador, disco duro, video, etc.). Ademds estas aplicaciones estén basadas en una interfaz gréfica (GUI) muy atractiva e intuitiva para el usuario. Algunas aplicaciones de escritorio son: Word, Excel, Access, Power Point, SPSS Statistics, AutoCAD, Photoshop, Illustrator, Winamp, Virtual DJ, etc. Is Ini Garcia S Fundamentos de Programacion usando PSelnt | ted (A / Documentel = Microsoft Word | a Inicio | Insertar Disefio Referen Corresp Revisar Vista Acrobat @ B 4 Caliibri (Cuerpo) vit) fae) | yl | | ae Ga NK S~aex, x 4S Pegar . % Parrato Estilos Edicion S| MMs Aon Any | Aa se Portapapeles Fuente A ger epee Tite 112 wome 4 a , > Pagina: 1 de1 | Palabras:0 Mes =x OU Figura 1.8 Aplicacién de Escritorio (MS. Word) 1.4.3 Aplicacién Web Estas aplicaciones no dependen del sistema operativo y configuracién del hardware del propio equipo. Son ejecutadas a través de los navegadores web (Google Chrome, Intemet Explorer, Mozilla Firefox) tipiando la direccién electronica (URL). La administracién de estas aplicaciones se realiza por el proveedor o propietario de dicha aplicacién. Algunas aplicaciones web son los servicios en linea del: SRI (servicio de rentas intemas), IESS (Instituto ecuatoriano de seguridad social), banca virtual, Facebook, Twitter, E-Bay, Amazon, MercadoLibre, ete. 16 vin Garcia . Fundamentos de Programacién usando PSeInt (D Actualizar estado. Aiadir fotos/ video Se ha etiquetado a Victor en ta foto de Edison Figura 1.9 Aplicacién Web (Facebook) 1.4.4 Aplicacién Mévil Estas aplicaciones estén disefiadas para ser ejecutadas en teléfonos inteligentes, tabletas Y otros dispositivos méviles. Se debe tener en cuenta las limitaciones de estos dispositives como: procesador, pantalla, sistema operativo (Android, Symbian, Windows phone, BlackBerry, iOS, otros), etc. Algunas aplicaciones méviles son los servicios en linea de la banca virtual, juegos, utilidades, etc. Figura 1.10 Aplicacién Mévil ” vin Garcia Fandamentos de Programacin usando PSeInt En resumen, la flexibilidad de las aplicaciones Web, asi como el acceso a Internet y la proliferacién de los dispositivos méviles han sido los principales motivos por los que estas aplicaciones son cada vez mis utilizadas. En cambio, las aplicaciones de consola y de escritorio son mas aptas para otras tareas, especialmente aquellas en donde se requiere la interaccién directa con el hardware del equipo. 1.5 Lenguajes de programacion Se utilizan para codificar (traducir) los algoritmos y crear programas que puedan ser ejecutados en los equipos (principalmente computadoras 0 dispositivos méviles). A través de ellos los seres humanos puedan dar instrucciones a un equipo. A este conjunto de Ordenes que es escrito por un programador utilizando algim lenguaje de programacién se le denomina eédigo fuente. El lenguaje de programacién esta formado por un conjunto de simbolos, palabras reservadas y reglas sinticticas y seménticas que definen su estructura y el significado o sentido de sus elementos y expresiones (Joyanes, 2008). Algunos de los lenguajes de programacién més populares en nuestro medio son: Tabla 1.1 Lenguajes de programacién cominmente usados I Tipos de aplicacién_ Licenciamiento VB.net _|Consola, escritorio, web, movil _ | Software privativo ‘net _|(Consola, escritorio, web, mévil___|Software privativo C++ __|[Consola, eseritorio Software libre ava |Consola, escritorio, web, movil _|Software libre (Oracle _ |Web, movil Software privativo PHP |Web, movil Software libre [Matlab _|[Consola, escritorio, web, mévil__|Software privativo Estos lenguajes de programacién se llaman de alto nivel y se caracterizan por expresar los algoritmos de una manera adecuada (sencillo y comprensible) para el ser humano, en contraposicién con los lenguajes de bajo nivel que son entendibles por las méquinas (computador). Algunos lenguajes de programacién son software libre, es decir, el cOdigo fuente esté disponible para que a més de su uso, cualquiera pueda estudiarlo, modificarlo 0 redistribuirlo. En contraposicién con otros que son software privativo en donde, por lo general, se permite su uso bajo ciertas condiciones y ademas se pague un canon al propietario o titular. Segin Lépez (2011), no se debe ensefar al estudiante a programar directamente con un Ienguaje de programacién, debido al doble problema que resulta aprender la logica de 18 vin Garcia. Fundamentos de Programacion usando PSelnt programacién y la sintaxis del lenguaje al mismo tiempo. Por esta razén, aqui se hard énfasis en los algoritmos, a través de diagramas de flujo y pseudocédigo utilizando el programa PSelnt. 1.6 Tareas propuestas 1.6.1 1.6.2 16.3 Realice un cuadro sinéptico con la siguiente informacién solicitada: Lenguaje de programacién, propietario, licencia (privativo, software libre), tipo de aplicaciones que permite desarrollar, % de uso (a nivel de Ecuador, Latinoamérica, mundial), curva de aprendizaje (véase figura 1.11), sitio web oficial. ls) ‘Cantidad aprendida 26) tiempo Figura 1.11 Curva de aprendizaje; f(x) indica que en poco tiempo se aprende mucho; ‘2(x) indica que en mucho tiempo se aprende poco Realice un cuadro sinéptico sobre software empresarial existente en su profesién, con la siguiente informacién: nombre del software, costo, sitio web oficial, tipo de aplicacién, médulos que posee (funcionalidades), lenguaje de programacién y base de datos que utiliza, pais de origen. Considerando la arquitectura de 3 capas de una aplicacién web: cliente, servidor de aplicaciones y bases de datos (véase figura 1.12), complete la tabla con la informacién que mejor se ajusta, de acuerdo al tipo de licencia (privativo, software libre) de la tecnologia indicada. 19 vin Garcia S. Fundamentos de Programacion usando PSetnt ‘Teenologin | Servidor ] Servidor de | Cliente | Sistema | Extension | Casto debase | Aplicaciones | (navegador) | Operatio | dela | estimado en de datos 1 Web ‘pagina licencias web Java mysol | Tome | Firefox ia cp | 0.00 Postgres | Joss Chrome Cnet iE Windows venet Php “php Oracle WebLogic | Matlab Matlab Web Windows Server ; Servidorde Servidor de Usuarios Aplicaciones Base de (clientes) nee | Intranet 8 5 Figura 1.12 Arquitectura de 3 capas de una aplicacién web 20 sin Garcia 8 Fundamentas de Programacion usando PSelnt 1.6.4 Realice un cuadro sinéptico sobre las ventajas y desventajas del software libre y Privativo; tipos de licencia (GNU, GPL, CopyLeft, Creative Common, etc.) y decreto 1014 de software libre en Ecuador. 1.6.5 Realice un cuadro sinéptico sobre la propiedad intelectual del software y los organismos de control y/o apoyo en el Ecuador: IEPI (Instituto Ecuatoriano de Propiedad Intelectual), AESOFT (Asociacién Ecuatoriana de Software), ASLE (Asociacién de Software Libre del Ecuador). 1.6.6 Si utilizar software libre en una empresa, tiene varias ventajas importantes y ademas contribuye a reducir los costes, :por qué existen muchas empresas que se deciden por el software privativo? 2 Isin Garcia. Fundamentos de Programacion usando PSelnt CAPITULO II INTRODUCCION A PseInt ¥ En este capitulo usted encontrara: Vv VVVVVVV Qué es PSelnt El entorno de trabajo Perfiles (personalizacion) Editor de Diagramas de flujo Editor de Pseudocodigo Ejecucion del algoritmo Guardar el algoritmo Exportacién a cédigo fuente Tareas propuestas Yew rr 2. Introduccién a PSeInt 2.1 Qué es PSeInt Segiin Novara (2014): PSelInt viene de las palabras “PSeudo Intérprete’ y es una herramienta para asistir a un estudiante en sus primeros pasos en programacién. Mediante un simple e intuitivo pseudolenguaje en espatiol (complementado con un editor de diagramas de flujo), le permite centrar su atencién en los conceptos fundamentales de la algoritmia computacional, minimizando las dificultades propias de un lenguaje y proporcionando un entomo de trabajo con numerosas ayudas y recursos didacticos. El programa es una aplicacién de escritorio y se encuentra disponible libremente para Windows, Linux y Mac OS desde el sitio web oficial http://pseint.sourceforge.nev. La Ultima versién disponible al momento de la edicién del libro es la 2040921 con la cual se trabaja aqui. Copyleft 2003-2014 por Pablo Novara zaskar_84@yahoo.com.ar Este software es Libre y gratuito. Se distribuye bajo licencia GPL (General Public License) Figura 2.1 Acerca del Programa PSeInt Algunas caracteristicas y funcionalidades de PSelnt son: o oaoa Presenta herramientas de edicién para escribir algoritmos en pseudocddigo en espafiol Permite generar y editar el diagrama de flujo del algoritmo El lenguaje pseudocédigo utilizado es configurable (perfiles) Puede interpretar (ejecutar) los algoritmos escritos, incluso paso a paso. Determina y marca los errores de sintaxis y en tiempo de ejecucién. 2B vin Garcia ‘Fundamentos de Programacion usando PSetnt O Permite exportar el algoritmo de pseudocédigo a cédigo C, C++, C#, java, php, VB.net, pascal, python, javaScript, Matlab. 1 Ofrece un sistema de ayuda integrado y con ejemplos O Es multiplataforma (Windows, GNU/Linux y Mac OS X) Es totalmente libre y gratuito (licencia GPL) a 2.2 El entorno de trabajo ‘Aechive Editar Configurer Fjecutar OPaa\n 'S0}Q0UeR OD EH 27. i ! HH i Figura 2.2 Entomo de trabajo de PSeInt 23 Perfiles Los perfiles permiten configurar ciertas restricciones en el pseudocddigo. Existen perfiles predefinidos en el programa, como el Flexible, y otros creados bajo solicitud de ciertas instituciones como es el caso del perfil ‘UPEC’ (Universidad Politécnica Estatal del Carchi) que utilizaremos en el resto del libro (véase figura 2.3). Este perfil obliga a definir o declarar las variables antes de ser usadas, lo cual resulta ser una buena préctica de programacién y evitar posibles errores de programacién. Para seleccionar el perfil vaya al meni ‘Configurar’, Opciones del lenguaje (perfiles). 24 In Garcia S. Fundamentos de Programacion usando PSelnt Politécnica Estatal de! Carchi de Ecuador (enviado por el MSc. Ivan Garda). Figura 2.3 Perfiles de PSeInt 2.4 Editor de Diagramas de Flujo Dirijase al menti ‘Archivo’, opcién ‘editar diagrama de flujo’. sin Garcia. Fandamenios de Programacion usando PSelnt Asignacion/Dimension/Definicion Figura 2.4 Editor de diagramas de Flujo de PSelnt 2.5 Editor de Pseudocédigo Dirijase al botén ‘Comandos y Estructuras’ ubicado en la parte derecha de la pantalla principal de PSelnt, véase figura 2.5 Figura 2.5 Comandos y estructuras de PSelnt 26 Isin Garcia 8 Fundamentos de Programacion wsando PSelnt Luego aparece la ventana de Comandos como se indica en la figura 2.6. Figura 2.6 Editor de Pseudocédigo de PSeInt 2.6 Ejecucién del algoritmo Dirijase al mena ‘Ejecutar’, ahi encontrara algunas opciones disponibles, entre ellas: Yee D Eiecutar cc) Wp EjecutarPasoaPaso | FS Fp Ejecucion Explicads R Verificar Sintaxis Shift F9 Predefinir Entrada... Ctrl+F9 Figura 2.7 Opciones de ejecucién del algoritmo 2 Ivin Garcia S Fundamentos de Programaciom usando PSeInt Ademés activando la opcién de ‘Prueba de Escritorio’ puede ejecutar por pasos el algoritmo segin su ritmo ¢ ir examinando los valores que toman las diferentes variables durante la ejecucién. Esta opcién es muy itil para corregir los errores légicos y comprender a detalle el algoritmo. Figura 2.8 Prueba de Escritorio en PSeInt 2.7 Guardar el algoritmo Dirijase al meni ‘Archivo’, opcién ‘Guardar como...*, seleccione el lugar y un nombre adecuado para el algoritmo. Este archivo se almacenard con la extensién **.psc’ 2.8 Exportacién a cédigo fuente » Dirijase al menii ‘Archivo’, opcién ‘Exportar’, ahi encontrar varias opciones para crear el cédigo fuente en algin lenguaje de programacién disponible, imagen o html. 28 Id Garcia S Fundamentos de Programaciom usando PSelnt Convertira cédigo € (eh @ Convertir s cédigo C++98/03 (cpp)... Convert Cédigo C= (cs). Convertira pagina HTML VavaScript embebido) (htm). Convertira cédige Java (ava)... Convertia cédige JavaScript (js)~ Convertira cédigo MatLab (m).. Convertir cédigo Pascal (pas). Convertira cédigo PHP (php)... Convertir a cédigo Python 2 (py). Convertir a cédigo Python 3 (py). Convertira cédigo Visual Basic NET (vb).. |B Pseudocédige coloreado (html)... Yb Diagrama de flujo (png. bmp oj). Figura 2.9 Opciones de exportacién de PSeInt 2.9 Tareas propuestas 2.9.1 Descargue la itima version disponible del programa PSelnt desde el sitio web oficial e instale en su computador. 2.9.2 Descargue y visualice los videos disponibles sobre el funcionamiento de PSelnt 2.9.3 Realice un cuadro sindptico con informacién de otros programas disponibles para elaborar y ejecutar algoritmos: nombre, tipo de licencia, tipo de aplicacién, caracteristicas y funcionalidades, sitio web oficial. 2.9.4 Realice un cuadro sinéptico sobre los derechos (libertades) que ofrece Ia licencia GPL (General Public License) 29 Ivin Garcia § Fundamentos de Programacién usando PSelnt En este capitulo usted aprendera: vVvVY CAPITULO III ALGORITMOS: DIAGRAMAS DE FLUJO \. Definir a,b,c Como Entero Qué son los algoritmos Diagrama de flujo Forma general Operadores: algebraicos, légicos, relaciondle® Funciones incorporadas © Matemdticas © Cadena de caracteres o Otras F Variables y tipos de datos Estructuras basicas de control © La secuenciacién: asignacién, lectura, escritura o Laseleccién: si-entonces, segtin © La repeticién: mientras, repetir-hasta, para * Estructuras de control anidadas Miscelénea de ejercicios Observaciones del capitulo Ejercicios propuestos : : . b 3. Algoritmos: Diagramas de Flujo 3.1 Qué son los algoritmos Para Lépez (2011), un algoritmo es una secuencia ordenada y cronolégica de pasos o instrucciones que han de seguirse para resolver un problema y debe tener las siguientes caracteristicas: 2 Debe ser simple, claro y preciso (determinista, es decir, que si se ejecuta varias veces con los mismos datos iniciales, siempre producira la misma salida). Tener un orden légico Tener un principio y un fin Ejemplo 1: Realizar un algoritmo para ‘enviar un correo electrénico” Encender el computador y modem Abrir el navegador de internet Tipiar la direccién URL del servicio de correo electrénico Ingresar las credenciales Presionar el botén Nuevo/Redactar Escribir el asunto del mensaje Redactar el mensaje Adjuntar archivos Agregar los destinatarios 10 Presionar el botén Enviar 11 Cerrar la sesién 12 Cerrar el navegador 13 Apagar el computador y modem ee ANAK Ejemplo 2: Realizar un algoritmo para ‘imprimir un documento en la impresora’ Encender el computador e impresora Ejecutar el editor de texto (MS Word) Abrir el documento de interés Configurar las paginas (orientacién, tamaio, margenes, .. Configurar las propiedades de la impresora Poner hojas en blanco en la impresora Presionar el botén Imprimir Cerrar el programa MS Word Apagar el computador e impresora we OeY AL AUNE , Computacionalmente un algoritmo puede expresarse de distintas maneras, principalmente en un diagrama de flujo 0 pseudocddigo. 31 vin Garcia Fundamentos de Programacion wsando PSelnt Para Lépez (2011) los diagramas de flujo resultan obsoletos porque no soportan todas las estructuras de control de la programacién estructurada en forma natural. demas su tamafio crece considerablemente en la medida que el problema sea hace mas complejo. Por el contrario, estos son faciles de entender y utilizar para estudiantes de otras disciplinas ajenas a la informatica, Por esta razén se va a dedicar este capitulo a los diagramas de flujo para la resolucién de problemas sencillos. 3.2 Diagramas de Flujo Es una representacién grifica de un algoritmo. Los elementos o simbolos basicos a usar son los mostrados en la tabla 3.1. Tabla 3.1 ibolos basicos del diagrama de flujo ‘Simi ‘Deseripcion fem Proceso 0 instruccién Decision LJ Entrada de datos por teclado Salida de datos por pantalla Simbolo oO Conector dentro de la misma pagina — Conector fuera de la pagina Linea de conexién y direcci6n de flujo [AT | tiamads a un subproces (método) Fuente: Adaptado de Lopez (2009) 32 Iin Garcia S. Fundamentos de Programacion usando PSeInt 3.3 Forma general de un algoritmo Figura 3.1 Forma general de un algoritmo 3.4 Operadores basicos en PSeInt + Suma 2 = Resta 3 2 Multiplicacion 2 7 Division as * Potencia [MOD | Méduto o resto 3 ‘Conjuncién 3 [0 Disyuncién 2 NO ‘Negacion n = ‘igual is diferente RE [ Menor 2 GC Mayor 2 <= ‘Menor o igual >= ‘Mayor o igual 3 Trin Gera. Fundamentos de Programacim usando PSelnt 3.5 Funciones incorporadas en PSelnt 3.5.1 Funciones Matematicas ‘abs | abs(x) calcula el valor absoluto de x trune | trune(x) devuelve la parte entera de x. redon | redon(x) redondea x al entero mas cercano Te re(x) calcula la raiz cuadrada de x ‘azar__| azar (n) retorna un mimero aleatorio entre 0 y (n-1) ‘sen__| sen(x) calcula en seno de x en radianes ‘cos | cos(x) calcula en coseno de x en radianes tan | tan(x) calcula Ta tangente de x en radianes In In(x) calcula el logaritmo natural (base e) de x exp | exp(x) calcula e%x PI Equivale a 3.1415926 3.5.2 Funciones de Cadena de caracteres Longitud Longitud(s) devuelve el niimero de caracteres Subeadena ‘Subcadena(s, i, j) devuelve la subcadena desde Ia posicién i hasta j ‘Concatenar ‘Concatenar(s1, s2) devuelve una cadena con los contenidos unidos ConvetirANumero | ConvetirANumero(s) devuelve convertido de texto anémero ConvertirATexto | ConvertirATexto(n) devuelve convertido de niimero a texto Mayasculas Mayiisculas(s) devuelve su contenido convertido a mayiisculas Mindsculas Miniisculas(s) devuelve su contenido convertido a mimisculas 3.5.3 Otras funciones Borrar Pantalla Limpia la Pantalla de resultados Esperar Tecla Detiene la ejecucion del algoritmo hasta que el usuario presione cualquier tecla para continuar 3.6 Variables y tipos de datos Las variables sirven para almacenar datos y esté formada por un espacio en memoria del computador y un nombre simbélico asociado a dicho espacio. Los nombres de las variables deben empezar con una letra y no deben contener simbolos raros. También no deben coincidir con las palabras reservadas del propio programa PSelnt. 34 Isdn Garcia . Fundamentos de Programacién usando PSeIn Los tipos de datos primitivos disponibles en PSeInt son: caricter/cadena de caracteres, entero, légico y real. Para declarar o definir una variable se usa la palabra reservada “definir’ y la siguiente sintaxis: definir x Como Caricter definir y Como Entero definir z Como Légico definir w Como Real Si desea declarar més variables del mismo tipo puede separarlas por comas. Para asignar el valor a una variable tipo cardcter, se debe usar las comillas simples 0 dobles. El separador decimal en las variables numéricas es el punto, Antes de utilizar una variable en alguna operacién, es altamente recomendado que esta debe estar previamente inicializada con algun valor explicito para evitar posibles errores. Segin Farrell (2013), existen tres convenciones para nombrar las variables: - Notacién de camello.- La variable empieza con una letra miniiscula y cualquier palabra subsiguiente comienza con una maytscula, ejemplo: lastName, firstName. - La caja de Pascal La primera letra es mayuscula, ejemplo: LastName, FirstName. - Notacién htingara.- El tipo de dato es parte del nombre de la variable, ejemplo: stringLastName, stringFirstName. Aqui en el documento utilizaremos la notacién de camello. 3.7 Estructuras basicas de control Permiten modificar el flujo de ejecucién de las instrucciones de un algoritmo o programa, 3.7.1 La secuenciacién Las instrucciones se ejecutan secuencialmente una después de la otra. Aqui podemos encontrar basicamente: 35 Id Garcia . Fundamentor de Programactin usando PSelnt Asignacién, definicién 0 dimensién (arreglos) A=B+ti Escribir (salida de datos) Leer (entrada de datos) 3.7.2 Ejercicios de Secuenciacién 3.7.2.1 Realizar un algoritmo para calcular la suma de dos niimeros enteros leidos por teclado Entrada: dos nimeros Salida: un némero (suma) Proceso: sumar los dos niimeros enteros usando el operador algebraico (+) Proceso suma_2_numeros Definir a,b,c Como Entero 'Ingrese dos numeros enteros: ' FinProceso 36 vin Garcia S. Fundamentor de Programacion wando PSelnt jla suma es: 17 +4 Ejecucién Finalizada. +++ 3.7.2.2 Realizar un algoritmo para convertir de grados Celsius (C) ingresados por teclado a Fahrenheit (F). Entrada: un numero real (Celsius) Salida: un nimero real (Fahrenheit) Proceso: convertir usando la formula: F = 2C +32 Proceso celsius_fahrenheit Definir C,F Como Real ‘Ingrese los grados Celsius: ' F<-9/ 5*C+32 ‘Grados en Fahrenheit FinProceso 37 nin Garela Fundamentos de Programaciin usando PSelnt “** Ejecucién Iniciada. *** Ingrese los grados Celsius: > 35 Grados en Fahrenheit: 95 “#" Ejecucién Finalizada. “** 3.7.2.3 Realizar un algoritmo para calcular el precio de un terreno cuadrado o rectangular ingresando por teclado el largo, ancho y precio de cada m’. Entrada: tres nimeros reales Salida: un nimero real (precio del terreno) Proceso: calcular usando la formula: precto = largo + ancho « precto del m= Definir |,a,pm2,p Como Real 'Ingrese el largo, ancho y precio/m:' "El terreno cuesta: ',p FinProceso 38 Iuin Garcia 8 Fundamentos de Programacisn usando PSelnt “** Ejecucién Iniciada. Ingrese el largo, ancho y precio/m2: > 20 > 10 > 65 El terreno cuesta: 13000 “** EBjecucién Finalizada. *** 3.7.3 La selecei6n Se ejecuta una(s) instruccién(es) u otra, dependiendo de la evaluacién de una condicion (verdadero o falso). Aqui podemos encontrar: Si-entonces (condicional simple) Segin (celeccién miiltiple) Una condicién puede estar formada por varias sub-condiciones unidas a través de operadores légicos Y, O, NO (expresiones légicas compuestas). La tabla de verdad de cada operador es: mm <|> <2 Cada parte (sub-condicién) de una expresién (condicién) que usa un operador sélo se evaliia hasta donde sea necesario para determinar si la expresién entera es verdadera o falsa, Algunas partes es posible que no se lleguen a probar. Esta caracteristica se conoce como evaluacién de cortocircuito. Cuando combina los operadores (¥, O) en una expresin, los operadores *Y’ tienen precedencia, es decir, sus valores booleanos se evaliian primero. Se puede usar los paréntesis para evitar ciertas confusiones o anular el orden predeterminado de las operaciones. 39 In Garcia S Fundamentos de Programacién usando PSelnt Nota: En PSelnt, actualmente la estructura ‘segtin’ no admite rangos de niimeros en las opciones 0 casos. 3.74 Ejercicios de Seleccion 3.7.4.1 Realizar un algoritmo para calcular el mayor de dos niimeros enteros leidos por teclado Entrada: dos mimeros Salida: un nimero (mayor) Proceso: calcular el mayor de los niimeros usando una seleccién y el operador relacional Definir ni,n2 Como Entero 40 Ivin Garcia S. Fundamontor de Programacion usando PSelnt +#* Ejecuc Ingrese 2 nimeros: £1 mayor es: 8 *** Ejecucién Finalizada. +++ 3.7.4.2 Realizar un algoritmo que lea por teclado tres niimeros e imprima ‘iguales* si Ja suma de dos cualquiera de ellos es igual al otro niimero, de lo contrario, imprima ‘desiguales. Entrada: tres nimeros enteros Salida: iguales/desiguales Proceso: Determinar en base a la suma de dos nimeros y comparar con el otro utilizando una seleccién y operadores logicos. Proceso nimeros_igual_desigual Def inir_ni,n2,n3 Como Entero "Ingrese tres nimeros: ' 41 én Garcia S. Fandamentos de Programacisn wsando PSelnt “** Ejecucién Iniciada. Ingrese tres nimeros: 3.7.4.3 Realizar un algoritmo que resuelva un sistema de ecuaciones lineales de dos incégnitas ingresando sus coeficientes por teclado: ax +by=e {ar t+ey=f Entrada: seis mimeros (a-f) Salida: dos ntimeros (x, y) Proceso: resolver el sistema de ecuaciones en base a las siguientes ecuaciones: — e- bf . af ed. donde (ae - db)#0 ae-bd ae- bd a In Garcia. Fundamentos de Programacion usando PSelnt Proceso ecuaciones Definir a,b,c,d,e,f Caro Entero Definir x. yy Cano Real Definir div Cove Entero| tas soluciones." *** Ejecucién Iniciada. *** Ingrese coeficientes a, b, c: £: a vin Garcia . Fundamentos de Programacin usando PSelnt 3.744 Realizar un algoritmo que permita ingresar por teclado el niimero del dia laborable de la semana e imprimir su nombre. Entrada: un numero (1-5) Salida: cadena de caracteres (nombre del dia) Proceso: Determinar el nombre del dia laborable utilizando la estructura ‘segtin’ [Definir n Caro Entero “Ingrese el numero del dia (1-5):" 1 2 | 3 4 5 De Otro Modo I I Jueves’ 7 [Viernes / /“Fuera de rango™ 3.7.4.5 Realizar un algoritmo para detérminar si tres puntos P(x,y) ingresando por teclado son colineales Entrada: P1, P2, P3 Salida: Si/ No Proceso: Determinar la colinealidad usando pendientes 44 vin Garcia S. Fundamentos de Programacin usando PSelnt [Definir x1,y1,x2,y2,x3,y3 Cano Entero "Ingrese el Punto P3(x3,y3): ' *** Ejecucién Iniciada. *** Ingrese el Punto P1(x1,y1): {Qué sucede con el algoritmo cuando la recta es vertical? 4s sin Garcia . Fundamentos de Programacin usando PSelnt 3.7.5 La Repeticién (bucle, ciclo o iteracién) Se inicia o repite una(s) instruccién(es), dependiendo de la evaluacién de una condicién. Aqui podemos encontrar: Mientras Repetir-hasta Para Funcionamiento: En el ‘Mientras’ y el ‘Para’ la condicién se evalita antes de ingresar al bucle (ciclo preprueba) y si esta es verdadera entonces ingresa al ciclo, caso contrario se sale. Por lo que, si la condicién es inicialmente falsa, el bucle no se ejecuta ninguna vez. Para los dos casos, el bucle se repite mientras la condicién sea verdadera. En el ‘Repetir-hasta’ la condicién se evaliia después de la ejecucién del bucle (ciclo posprueba). Por lo que, el bucle siempre se ejecuta por lo menos una vez. El bucle se repite hasta que la condicién sea verdadera. En el bucle ‘Para’ primero se ejecuta la asignacidn por una sola vez, seguida de la condicién y si esta es verdadera ingresa al bucle, caso contrario se sale. En caso de ingresar se ejecutan las instrucciones del ciclo, y una vez que llega al final de la estructura regresa y se ejecuta el incremento seguido de la condicién. Si esta es verdadera ingresa nuevamente al bucle, caso contrario se sale y asi sucesivamente. Nétese que cuando el incremento es uno (por defecto), el programa no lo pone en el grafico pero si lo considera en la ejecucién. 46 vin Garcia 8. Fundamentos de Programacin usando PSelnt El bucle ‘Para’ y el ‘Mientras’ funcionan de manera similar, s6lo que el ‘Para’ es mucho mas compacto, por lo que suele ser muy utilizado por los programadores. En cualquier ciclo deben ocurrir tres pasos: inicializar una variable de control del ciclo, compararla con algin valor que controle si el ciclo contimia o se detiene y alterar la variable que controla el ciclo. 3.7.6 Ejercicios de Repeticién 3.7.6.1 Realizar un algoritmo para calcular el factorial de un niimero entero positive ingresado por teclado (usando Ia estructura ‘Mientras’) Entrada: un nimero entero Salida: un namero (factorial) Proceso: calcular el factorial del méimero (usando ‘Mientras’) a través de _multiplicaciones sucesiva desde 1 hasta el niimero ingresado. 47 Id Garcia 8. Fundamentos de Programacion wsando PSelnt Proceso calcular factorial Definir n,fac Como Entero ‘Ingresar un numero:' ' fac factorial es: FinProceso ‘El #4 Ejecucién Iniciada. *** \Ingresar un numero: > 5 lel factorial es: 120 \|*** Ejecucién Finalizada. 48 In Garcia S. Fundamentos de Programacion usando PSelnt Observe que el bucle ‘Mientras’ tiene la condicién al inicio, y si es evaluada como verdadera ingresa, caso contrario se sale. Por esto, es posible que el bucle no se ejecute ninguna vez. 3.7.6.2 Realizar un algoritmo para calcular el factorial de un nimero entero positivo ingresado por teclado (usando la estructura ‘Repetir-hasta’) Entrada: un nimero Salida: un nimero (factorial) Proceso: calcular el factorial del mimero (usando ‘repetir-hasta’) a través de multiplicaciones sucesiva desde 1 hasta el niimero ingresado. Proceso factorial Def inir cont,n,fac Como Entero ‘Ingrese un numero: icont<-cont+1 ‘El factorial es: ',fac FinProceso 49 vin Garcia S. Fundamentos de Programacin usando PSelnt “4 Ejecucién Iniciada. ‘Ingrese un numero: > 4 Observe que el bucle “Reperir-hasta' tiene la condicién al final, y si es evaluada como falsa ingresa nuevamente, caso contrario se sale. Por esto, el bucle se ejecuta al menos una vez. 3.7.6.3 Realizar un algoritmo para calcular el factorial de un nimero entero positivo ingresado por teclado (usando la estructura ‘Para’) Entrada: un nimero Salida: un niimero (factorial) Proceso: calcular el factorial del nimero (usando ‘Para’) a través de multiplicaciones sueesiva desde I hasta el mimero ingresado. Proceso factorial [Definir_n,fac,i Como Entero 30 lin Garcia. Fundamentos de Programacin wszando PSelnt ele +** Bjecucién Iniciada Ingresar un némero > 3 El factorial es: 6 \|*** Ejecucién Finalize Nétese que si el incremento en el bucle es uno (por defecto), el programa no lo hace constar en el diagrama pero si lo considera intemamente en la ejecucién. 3.7.6.4- Realizar un algoritmo para calcular la suma de la progresién geométrica ingresando por teclado xy n. s=]+xe+x3 +x to txn Entrada: x, Salida: un nimero (S) Proceso: calcular a través de las potencias y las sumas sucesivas en un bucle. Proceso progresidén_geomrétrica [Definir x,n,S,i Como Entero SI vin Gareia S. Fundamentos de Programaciin usando PSelnt jua progresién geométrica es: 31 js+* Ejecucién Finalizada. *** Nétese que la variable (i) del bucle empieza en cero y su incremento es de uno. 3.7.6.5 Realizar un algoritmo para determinar si una palabra ingresada por teclado es Palindromo. Proceso: Determinar si es palindromo, es decir, si se lee igual de izquierda a derecha y viceversa, ejemplo: radar, oso, reconocer, somos, sometemos. Se invierte la palabra y se compara con la original. Proceso pal indramo Def inir_s,si Caro Caracter Definir i Como Entero ‘Ingrese una palabra:' "No es Palindrano’ Es Pal indraro® 52 Ivdn Garcia 8. Fundamentos de Programacin wando PSelnt ‘Nétese que el bucle ‘Para’ utiliza un contador (variable i) en forma decreciente (-1). El bucle (‘Para’) y la decisién (‘si-entonces’) estén en forma secuencial una después de la otra, pero no anidadas. 3.8 Estructuras de Control anidadas Las estructuras de control de seleccién y repeticién pueden anidarse, es decir, pueden ponerse una dentro de otra indistintamente, siempre y cuando se respeta la sintaxis de cada una de ellas con su respectivo inicio y fin. Es asi que podemos tener anidacién entre estructuras del mismo tipo o una mezcla de ambas estructuras. Se debe considerar que para ejecutar un bucle anidado, el tiempo de ejecucién del algoritmo crece considerablemente. El ciclo que contiene al otro se llama ciclo exterior y el que esta contenido se llama ciclo interior. 3.9 Ejercicios con estructuras de control anidadas 3.9.1 Realizar un algoritmo para ingresar por teclado tres nimeros e imprimir el mayor de ellos. Entrada: tres mimeros Salida: un némero (mayor) Proceso: Calcular el mayor de los mimeros usando una condicion compuesta y simple anidada, 33 sin Gara Fundamentos de Programacién wsando PSelnt IDefinir a,b,c Como Entero Sees +** Bjecucién Iniciada. Ingrese 3 némeros: 21 mayor es: 9 “4* Bjecucién Pinalizada. *#* Observe que en la primera condicién compuesta se esti usando el operador légico de > conjuncién (Y). Asi tenemos una estructura ‘si-entonces’ dentro de otra estructura ‘si- entonces’. 54 In Garcia S. Fundamentos de Programactin usando PSelnt 3.9.2 Realizar un algoritmo para ingresar n niimeros leidos por teclado e imprima la multiplicacién de los niimeros impares y la suma de los nimeros pares. Entrada: cantidad y lista de nimeros iplicacion y la suma Proceso: Calcular la multiplicacién de los nimeros impares y la suma de los pares. Se utiliza una decisién y el operador MOD para verificar si el nimero es par 0 impar. Salida: dos nimeros: la mult Definir_n,p,i,cont,num Como Entero ‘Ingrese la cantidad de numeros:' "Ingrese los numeros:' "La mutiplicacién de los impares es: ',i "La suma de los pares es: '.p 58 Ive Goria S. Fundamentos de Programactin usando PSelnt Observe que en este ejercicio se esté usando una estructura de seleccién ‘si-entonces’ dentro de una estructura de repeticién ‘Para’. 3.9.3 Realizar un algoritmo para ingresar dos nimeros enteros por teclado e imprimir el maximo comin divisor (MCD). Entrada: dos niimeros enteros Salida: un namero (MCD) Proceso: calcular el MCD de dos enteros utilizando restas sucesivas dentro de un bucle. 36 dn Garcia. Fundamentos de Programacién usando PSelnt Definir a,b Camo Entero "Ingrese 2 numeros enteros:' Observe que en este ejercicio se esté usando una estructura de seleccién ‘si-entonces’ dentro de una estructura de repeticién ‘Mientras’. 37 Ivin Garcia 8. Fundamentos de Programacism usando PSelnt 3.10 Observaciones del capitulo = En los ejemplos resueltos no se cubren ciertos detalles 0 requerimientos implicitos, como por ejemplo la validacién en la entrada de datos por teclado, = No todos los ejercicios mostrados resultan idéneos para realizarlos utilizando las tres estructuras de repeticién. La eleccién del bucle a usar dependerd del problema a resolver. En los ejercicios resueltos, no necesariamente se representa el algoritmo mas eficiente o mas legible. Se debe tomar las precauciones necesarias para asegurarse que la ejecucién de un bucle finalice en algin momento, caso contrario entraria en un bucle infinito, = Cada algoritmo debe probarse con varios casos de prueba, es decir, con diferentes valores de entrada, = Los diagramas de flujo no soportan los ‘comentarios’ (se verd en el siguiente Capitulo). 3.11 Ejercicios propuestos 3.11.1 Elaborar un algoritmo para pagar la cuota de la tarjeta de crédito utilizando los servicios de la banca virtual. 3.11.2 Elaborar un algoritmo para reemplazar la tarjeta de memoria RAM de un computador personal. 3.11.3 Elaborar un algoritmo para subir una tarea enviada al aula virtual de la asignatura de programacién. Utilizando diagramas de flujo, realice algoritmos para resolver los siguientes ejercicios propuestos: 3.11.4 Convertir una medida de almacenamiento en TB (terabyte) ingresada por teclado a GB (gigabyte), MB (megabyte), y KB (kilobyte). 3.11.5 Convertir una medida de longitud en metros ingresada por teclado a yardas, pulgadas, pies y centimetros. 3.11.6 Calcular la cantidad de pintura necesaria para pintar las paredes y techo (rectangulares) de una habitacién ingresando por teclado sus dimensiones (alto, ancho, profundidad) en metros y el rendimiento de la pintura (m*/It). No considere las aberturas como ventanas 0 puertas. 58 vin Garcia . Fundamentos de Programacin usando PSelnt litros por mano (ty = —Stpetficie a pintar (i) " rendimiento de la pintura (et) 3.11.7 Resolver la ecuacién de segundo grado (raices), ingresando por teclado los coeficientes a, b y c. Si las raices son imaginarias debera mostrar un mensaje. 3.11.8 Determinar si tres puntos P(x,y) ingresados por teclado son colineales. Utilice la formula de la distancia: d= 1 (x,-x)' + (ya-y)” 3.11.9 Determinar si un afio ingresado por teclado es bisiesto. 3.11.10°Calcular e imprimir el sueldo neto a percibir de un empleado de un almacén considerando sus ingresos (sueldo fijo y comisiones por ventas) y egresos (seguro social). La comisién es un porventaje del sueldo fijo y se maneja en base a los articulos vendidos. El seguro social es el 9.35% del sueldo fijo. Ingrese por teclado el sueldo fijo y el namero de articulos vendidos. Farticulos | % comision vendidos | de ventas 1-25 2% 26-50 a | 51-75, 6% 76 0 mas 8% 3.11.11 Calcular la potenciacién de dos mameros ingresados por teclado (base y exponente). No utilice el operador algebraico potencia (*) incorporado en PSelnt. 3.11.12 Determinar si un numero ingresado por teclado es primo. 3.11.13 Determinar si un nimero ingresado por teclado es perfecto. 3.11.14 Calcular la calificacion obtenida de un empleado piblico que atiende a los usuarios por ventanilla. Cada usuario califica la atencién recibida ingresando un numero entre 1 (menor puntuaci6n) y 5 (mayor). El programa se ejecuta en forma continua hasta que el gerente introduce un niimero negativo para salir, Al final, el programa imprime la frecuencia de cada puntuacién y el promedio de las calificaciones de la jornada laboral. 59 In Garcia. Fundamentos de Programacin wsando PSelnt CAPITULO IV ALGORITMOS: PSEUDOCODIGO Proceso suma_2_niimeros 2 Definir a,b,c Como Entero 3 Escribir 'Ingrese dos nimeros enteros:' 4 Leer a,b 5 c<-atb Escribir ‘La suma es: ',c PinProceso En este capitulo usted encontrara: > Definicion y forma general > Estructuras basicas o La secuenciacién: asignacion, lectura, escritura © La seleccién: si-entonces, segiin o Larepeticién: mientras, repetir-hasta, para Estructuras de control anidadas Miscelanea de ejercicios Observaciones del capitulo Ejercicios propuestos VVVV 4, Algoritmos: Pseudocédigo 4.1 Definicién y forma general Segiin Farral (2013), el pseudocddigo es una representacién en inglés 0 espaol de los pasos légicos que se requieren para resolver un problema. Pseudo es un prefijo que significa falso y codificar significa ponerlo en un lenguaje de programacién; por consiguiente, pseudocddigo significa cddigo falso o declaraciones que en apariencia se han escrito en un lenguaje de programacién pero no necesariamente siguen todas las reglas de sintaxis de alguno en especifico, por lo que resultan adecuados para aprender la logica de programacién. La forma general de un algoritmo en pseudocédigo es: 1 Proceso 3 FinProceso Nétese que algunas instrucciones empieza con una doble barra inclinada (//), esto significa que son comentarios, es decir, no se toman en cuenta al momento de ejecutar el algoritmo y sirven para dar alguna explicacién al lector o programador, asi como también para la documentacién del programa. Las palabras de color azul (Proceso, FinProceso) se llaman palabras reservadas de PSelnt. Los mimeros en gris indican la secuencia de las instrucciones. En este capitulo se muestran en pseudocédigo algunos de los ejercicios realizados en el capitulo anterior utilizando diagramas de flujo. 4.2 Estructuras basicas de control 4.2.1 La Secuenciacién ‘Aqui podemos encontrar bisicamente los siguientes comandos: Escribir Lab Leer [lista de variables fariabick-fxpresion l N 61 Ihin Garcia S. Fundamentor de Programacién sande PSelnt 4.2.2 Ejercicios de Secuens 4.2.2.1 Realizar un algoritmo para calcular la suma de dos nimeros enteros leidos por teclado Entrada: dos nameros Salida: un nimero (suma) Proceso: sumar los dos niimeros enteros usando el operador algebraico (+) 2 Proceso suma_2_niimeros 2 Definir a,b,c Como Entero 3 Escribir 'Ingrese dos nimeros enteros: 4 Leer a,b 5 e<-atb € * Bsoribir ‘La suma es: ',¢ 7 FimProceso v** Bjecucién Iniciada. *** Ingrese dos nimeros enteros: 4.2.2.2 Realizar un algoritmo para convertir de grados Celsius (O) ingresados por teclado a Fahrenheit (F). Entrada: un numero real (Celsius) Salida: un numero real (Fahrenheit) Proceso: convertir usando la formula: F 3 yo +32 2 Proceso celsius_fahrenheit 2 Definir C,F Como Real 3 Escribir ‘Ingrese los grados Celsius: * 4 Leer C 5 F<-(9/5) #0432 6 Escribir ‘Grados en Fahrenheit: ',F > FinProceso 2 In Garcia 8 Fundamentos de Programacién usando PSelnt [+** Ejecucién Iniciad Ingrese los grados Celsius: > 53 Grados en Fahrenheit: 127.4 +** Ejecucién Finalizada. **+ 4.2.3 La Seleccion i | =— 4.2.4 Ejercicios de Seleccion 4.24.1 Realizar un algoritmo para catcular el mayor de dos niimeros enteros leidos por teclado Entrada: dos niimeros Salida: un nimero (mayor) Proceso: calcular el mayor de los mimeros usando una seleccién y el operador relacional. 68 Ivin Garcia S. Pandamentos de Programacién wsando PSelnt Proceso mayor_2_nimeros Definir ni,n2 Como Entero Escribir ‘Ingrese 2 mimeros:' Leer ni,n2 Escribir ‘Fl mayor es: ' Si mi>n2 Entonces | Bseripir ni Sino | Eseribir n2 Pinsi PinProceso 4.2.4.2 Realizar un algoritmo que lea por teclado tres niimeros e imprima ‘iguales’ si la suma de dos cualquiera de ellos es igual al otro niimero, de lo contrario, imprima ‘desiguales. Entrada: tres nimeros Salida: iguales/desiguales Proceso: Determinar en base a la suma de dos nimeros y comparar con el otro utilizando una seleccién compuesta y operadores légicos. Proceso igual_desigual Definir ni,n2,n3 Como Entero Escribir ‘Ingrese tres nimeros Leer ni,n2,n3 Si (nitn2)=n3 0 (nitn3)=n2 0 (n2+n3)=ni Entonces Escribir ‘iguales' 7 Sino | Becribir ‘desiguaies’ Finsi PinProceso 64 ‘vin Garcia S. Fundamentos de Programacién usando PSelnt 4.2.4.3 Realizar un algoritmo para ingresar por teclado el niimero del dia laborable de la semana e imprimir su nombre Entrada‘ un numero (1-5) Salida: cadena de caracteres (nombre del dia) Proceso: Determinar el nombre del dia laborable utilizando la estructura ‘segtin’ 1 Proceso dia_semana 2 Definir n Como Entero Escribir 'Ingrese el nimero del dia (1-5):' Leer n Segun n Hacer é Escribir ‘Lunes! Escribir ‘Martes! Escribir 'Miércoles' Escribir ‘Jueves! Escribir 'Vierne: en eres Ingrese el numero del dia (1-5): >5 Viernes “** Bjecucién Finalizada. *** 65 Jin Garcia . Fandamentos de Programacion usando PSeInt 4.2.44 Realizar un algoritmo para determinar si un earécter ingresado por teclado es una vocal 0 consonante Entrada: un caracter Salida: vocal/consonante Proceso: Determinar si es vocal o consonante usando la estructura ‘segtin” Proceso vocal_consonante definir © Como Caracter Bscribir "Ingrese un caracter (sin tilde) :" Leer © o<-Henusculas(e) Segun ¢ Hacer [tary tet, tats tote te || ‘xscripir “vocal _| De otro Modo | | Bseripir "consonance" *4* Ejecucién Iniciada. ingrese un carhcter (sin tilde): +** Ejecucién Finalizada. *** 4.2.5 La Repeticién Mientras Expresion logical Hacer | { Bmertes Pin Mientras | Repetir | becuencia de sccaoned (BB eee hasta Que pxpresion 1ogi eae or aeeeeet I Pin Para Para 66 vin Garcia S Fundamentos de Programacin wsando PSeint 4.2.6 Ejercicios de Repeti 4.2.6.1 Realizar un algoritmo para calcular el factorial de un niimero entero positivo ingresado por teclado (usando la estructura ‘Mientras’) Entrada: un namero Salida: un nimero (factorial) Proceso: calcular el factorial del nimero (usando ‘Mientras’) multiplicaciones sucesivas del 1 hasta el numero. 1 Proceso calcular_factorial Definir n,fac Como Entero Escribir 'Ingresar un nuimero:' ~ Leer n fac<-1 Mientras n>1l Hacer | fac<-factn n<-n-1 Lom : FinMientras Escribir 'El factorial es: ',fac FinProceso 8 10 ¥** Ejecucién Iniciada. “** Ingresar un nimero: > 0 El factorial es: 1 +++ Ejecucién Finalizada. *** a través de 4.2.6.2 Realizar un algoritmo para calcular el factorial de un ntimero entero positive ingresado por teclado (usando la estructura ‘Repetir-hasta’) Entrada: un numero Salida: un numero (factorial) Proce multiplicaciones sucesivas del 1 hasta el nimero. or : calcular el factorial del mimero (usando ‘repetir-hasta’) a través de Ivin Garcia . Fundamontos de Programacion usando PSelnt Proceso factorial Definir cont,n,fac Como Entero 3 cont<-1 4 fac<-1 5 Escribir ‘Ingrese un nimero:' é Leer n 7 Repetir e | fac<-factcont 8 | cont<-cont+1 Hasta Que cont>n Escribir 'El factorial es: ',fac FinProceso “es Ejecucién Iniciada. *** Ingrese un nimero: > 2 El factorial es: 2 444 Ejecucién Finalizada. **+ 4.2.6.3 Realizar un algoritmo para calcular el factorial de un nimero entero positivo ingresado por teclado (usando la estructura ‘Para’) Entrada: un nimero Salida: un nimero (factorial) Proceso: calcular el factorial de! nimero (usando ‘Para’) a través de multiplicaciones sucesivas del | hasta el nimero. 1 Proceso factorial 2 Definir n,fac,i Como Entero 3 Escribir 'Ingresar un nimero' 4 Leer n 5 fac<-1 6 Para i<-i Hasta n Hacer i | fac<-facti 8 FinPara 9 Escribir ‘El factorial es: ',fac 10 FinProceso 6 sin Garcia. Fundamentos de Programacién usando PSelnt ‘es Ejecucién Iniciada. Ingresar un nimero > 7 El factorial es: 5040 ||“““ Ejecucién Finalizada. Notese que el ineremento en el bucle es de uno (por defecto).. 4.2.64 Realicar un algoritmo para determinar si una palabra ingresada por teclado es Palindromo. Entrada: palabra Salida: S/No Proceso: Determinar si es palindromo, es decir, si se lee igual de izquierda a derecha y viceversa, ejemplo: radar, oso, reconocer, somos, sometemos. Se debe invertir la palabra usando un bucle y comparar con la original. Proceso palindromo Definir s,s1 Como Caracter Definir i Como Entero Escribir ‘Ingrese una palabra:' Leer s Para i<-Longitud(s) Hasta 1 Con Paso -1 Hacer | si<-Concatenar (si, SubCadena(s,i,1)) FinPara Si s=s1 Entonces | Bscribir ‘Es Palindromo' Sino Eseribir 'No es Palindromo’ Finsi FinProceso LOU me UNE 4 Ejecucién Iniciada. tngrese una palabri > hola 4s Ejecucién Finalizada. *** 0 Ini Garcia S Fundamentas de Programacion usando PSelnt 4.2.6.5 Realicar un algoritmo para eliminar los espacios en blanco ubicados a la icquierda (inicio) de una palabra ingresada por teclado. Entrada: palabra Salida: palabra (sin espacios) Proceso: Contar los espacios en blanco del inicio utilizando un bucle. Recuperar la subcadena a partir del contador obtenido hasta el final usando la funcién incorporada de PSeInt. Proceso left_trim definir 3 Como Caracter definir i Como Entero Escribir "Ingrese una palabra:" Leer 5 i<-i Mientras SubCadena(s,i,i) = " " Hacer | i<-iti Fin Mientras 3 <- SubCadena(s,i,Longitud(s)) Escribir = FinProceso Lom Bone 9 Ingrese una palabra: > hola ecuador hola ecuador “4+ Ejecucién Finalizada. 4.3 Estructuras de control anidadas Como se indicé en el capitulo anterior, las estructuras de seleccién y repeticién pueden anidarse, es decir, poner una dentro de otra, Estas pueden ser del mismo tipo o una mezcla de ellas. A continuacién se muestran en pseudocédigo algunos de los ejercicios realizados anteriormente con diagramas de flujo. 10 sin Garcia S. Fundamentos de Programacién usando PSelnt 4.4 Ejercicios de estructuras de control anidadas 4.4.1 Realizar un algoritmo para ingresar por teclado tres nimeros e imprimir el mayor de ellos Entrada: tres nimeros Salida: un nimero (mayor) Proceso: Calcular el mayor de los niimeros utilizando la estructura compuesta y simple anidada. Proceso mayor_3_nimeros 2 Definir a,b,c Como Entero 3 Escribir 'Ingrese 3 nimeros:' 4 ~ Leer a,b,c 5 Escribir 'El mayor es: ' 6 Si a>b ¥ a>c Entonces r | Escribir a 8 Sino 9 | Si b>c Entonces 10 | | Eseribir b 21 | Sino 12 i | Bseribir ¢ 13 i Pinsi 14 FinSi is FinProceso Finalizada. 1 in Gore S Fundamentos de Programactin usando PSeInt 4.4.2 Realizar un algoritmo para ingresar n nimeros leidos por teclado e imprima la muttiplicacién de los niimeros impares y la suma de los niimeros pares. Entrada: cantidad y lista de nimeros Salida: dos nameros (la multiplicacién y la suma) Proceso: Calcular a multiplicacién de los nimeros impares y la suma de los pares utilizando un bucle y el operador MOD para discriminar entre par e impar. Proceso pares_impares 2 Definir n,p,i,cont,num Como Entero 3 Escribir ‘Ingrese la cantidad de nimeros:' 4 Leer a 5 Escribir 'Ingrese los nimeros:' é p< 7 1<-1 Para cont<-i Hasta n Hacer | Leer num | Si num MOD 2=0 Entonces eel x | pccpenum | sino ; | 4<-denum Lo Pinsa FinPara Escribir 'La mutiplicacién de los impares es: Escribir ‘La suma de los pares es: ',P FinProceso *** Ejecucién Iniciada. “** Ingrese la cantidad de nimeros: > 4 ‘Ingrese los nimeros: La mutiplicacién de los impares es: 21 ILa suma de los pares es: 14 *** Ejecucién Finalizada. *** n vin Gara S Fundamentos de Programacian wando PSelnt 4.4.3 Realizar un algoritmo para ingresar dos niimeros enteros por teclado e imprimir el maximo comin divisor (MCD). Entrada: dos nimeros enteros Salida: un namero (MCD) Proceso: calcular el MCD de dos enteros realizando restas sucesivas en un bucle. i Proceso MCD 2 Definir a,b Como Entero 3 Escribir 'Ingrese 2 nimeros enteros:' 4 Leer a,b 3 5 Mientras a<>b Hacer 6 9 8 i 9 : 10 | Finsi 11 FinMientras 12 Escribir 'FEl MCD es: ',a 13 FinProceso ww Bjecucién Iniciada. *** Ingrese 2 nimeros enteros: B Isdn Garcia 8 Fundamentos de Programaciin wsando PSelnt 4.4.4 Realizar un algoritmo para calcular e imprimir los niimeros narcisistas de tres cifras. Entrada: ninguna Salida: lista de nimeros narcisistas Proceso: calcular los niimeros narcisistas de tres cifras (del 100 al 999). Un mimero narcisista es aquel que es igual a la suma de cada uno de sus digitos elevados ala ‘n’ potencia (donde ‘n’ es el niimero de cifras del niimero). Separar cada digito del nimero, elevar al cubo y sumar. Comparar la suma con el niimero. Proceso nimeros_narcisistas definir n, num, di, d2, d3 Como Entero Para num<-i53 Hasta 999 Con Paso 1 Hacer | ai<-num/100 | n<-num mod 100 d2<-n/i0 a3<-n mod 10 / 8 | me- di43 4 d243 + 343 9 | Si nenum Entonees 10 | | Bseribir num | Fin st Fin Para FinProceso 444 Ejecucién Iniciada. ““* Ejecucién Finalizada. Otra forma de resolver el mismo ejercicio usando las funciones incorporadas de cadena de caracteres de PSelnt es la siguiente: "4 Iin Garcia S Fundamentos de Programaciin usando PSelnt Proceso nimeros_narcisistas definir n, num, dl, d2, 43 Como Entero definir s Como Caracter Para num<-100 Hasta 299 Con Paso i Hacer <-ConvertirATexto (num) di<-ConvertirANumero (SubCadena(s,1,1)) d2<-ConvertirANumero (SubCadena(s,2,2)) d3<-ConvertirANumero (SubCadena(s,3,3)) n<- d1*3 + d2*3 + d3“*3 Si nenum Entonces | | eseripir num | rin st Fin Para 14 FinProceso 4.5 Miscelanea de ejercicios 4.3.1 Realizar un algoritmo para calcular ta potencia dado dos mimeros ingresados por teclado (base y exponente). No utilice el operador algebraico potencia (*) de PSelnt. Entrada: dos niimeros enteros (base y exponente) Salida: un nimero (la potencia) Proceso: calcular la potencia utilizando multiplicaciones sucesivas en un bucle. 1 Proceso potenciacién definir b,e,x Como Entero Escribir "Ingrese la base y ¢1 exponente:" Leer b,e 0 Hacer 7 re-rtb acca FinMientras Escribir "La potenciacién es: ",r 11 PinProceso +** Ejecucién Iniciada. *#* lua potenciacién es: 8 4#* Bjecucién Finalizada. **+ 1s vin Garcia 8. Fundamertos de Programaciom usando PSelnt 4.5.2 Realizar un algoritmo para determinar si un niimero ingresado por teclado es primo. Entrada: un numero entero >1 Salida: Si/No Proceso: determinar si es primo o no. Un nimero primo es un nimero natural mayor que uno y que tiene tinicamente dos divisores distintos, él mismo nimero y la unidad. Se utiliza en operador matemitico MOD para comprobar la divisibilidad de un numero. Se utiliza un bucle que va desde 2 hasta la raiz cuadrada del numero. Proceso nimero_primo definir n,i como entero definir num como logico Escribir "Ingrese un nimero > 1:" Leer n num<-Verdadero a<-2 Mientras i 1: >7 Es Primo *#* Ejecucién Finalizada. “** 16 In Garcia S. Fundamentos de Programacion usando PSeint 45.3 Realizar un algoritmo para determinar si un aio ingresado por teclado es bisiesto. Entrada: un nimero (aio) Salida: Si/No Proceso: determinar si es bisiesto 0 no. El afio bisiesto tiene 366 dias, siendo el 29 de febrero el dia extra. Un aiio es bisiesto si es divisible entre cuatro, exceptuando los tltimos afios de cada siglo -divisibles entre 100-, siempre y cuando no sean divisibles entre 400. Proceso bisiesto definir afic Como Entero Becribir "Ingrese el afio:* Leer afio Si afio mod 4 =0 Y (afio mod 100<>0 0 afio mod 400=0) Entonces | “Rscripir "Es bisiesto" | Recetbir "NO es bisiesto" Fin si PinProceso “** Ejecucién Iniciada. Ingrese 1 afic: > 2012 Es bisiesto “es Ejecucién Finalizada. *** Observe en la linea #5, se utiliza condiciones compuestas y los paréntesis para indicar su precedencia, 4.54 Realizar un algoritmo para determinar si un niimero ingresado por teclado es perfecto. Entrada: un nimero entero Salida: Si/No Proceso: determinar si es perfecto 0 no. Un niimero es perfecto cuando la suma de sus divisores positivos, sin incluirse, da el mismo miimero, El 6 es perfecto porque 1+2+3=6, Otro perfecto es el 28. 7 vin Garela . Fundamentos de Programacion usando PSelnt 1 Proceso nimero_perfecto 2 definir N, i, sum como entero Escribir "Ingrese un niimero entero:” Leer sun < Para i<-i Hasta N-i Con Paso i Hacer | SiN mod 4 = 0 Bntonces [sum = sum +t | Finsi Fin Para Si sum = N Entonces | umprimir “Es perfecto" Sino | amprimir "wo es perfecto" Fin si FinProceso j“** Ejecucién Iniciada. *** Ingrese un nimero entero: 4.5.5 Realizar un algoritmo para resolver la ecuacién de segundo grado, ingresando por teclado los coeficientes a, b y c. Entrada: tres ntimeros enteros (coeficientes) Salida: dos mimeros (x1 y x2) Proce: valcular las raices de la ecuacién a través de la siguiente ecuacién: ax'+ br +c=0 -b 4b - fac 2a * vin Gala 8 Fandamentos de Programacion usando PSelnt Proceso ec_2do_grado definit a,b,c Como Entero definir d, x1, x2 Como Real Escribir “Ingiese los coeficientes a,b,c: * Leer a,b,c d<- (b*2) -4#atc 7 Si deo Entonces 8 | Rscripir *Wo tiene soluciones reales™ 9 sino o xi<-(-b + ro(d))/(2*a) 1 2<-(-b - re(a))/(2*a) | Bscripir “Las raices son: ", x2, " y ") x2 Pin Si 4.5.6 Realizar un algoritmo para calcular e imprimir los n términos de la sucesién Fibonacci Entrada: un numero entero Salida: n términos de la sucesién Proceso: Calcular la sucesién Fibonacci. En esta sucesién los dos primeros nimeros son uno y para el resto, cada elemento es la suma de los dos anteriores. Los primeros numeros de la serie son: 1, 1, 2, 3, 5, 8, 13, 21, ... Proceso fibonacci definir a,b,c,n,i Como Entero 2 —sRacrimir “Cuanton nimeros de 1a sucesién desea moscrar:* + eer a cen 6 Be eet Para 1<-1 Basta n Coa Paso 1 Hacer | cease | seb oes Bacribir ¢ Pin Pare Pinprocese 9 Ini Garcia 8 Fundamentos de Programacién usando PSelnt 4.5.7 Realizar un algoritmo para determinar si un punto P(xy) esté dentro o fuera de un circulo de centro C(x,y) y radio r ingresados por teclado. Entrada: centro C(x), radio, punto P(x.y) Salida: Dentro/Fuera Proceso: Calcular la distancia del punto al centro del circulo y compararla con el radio utilizando la formula de la distancia. d=V(x.-x)"+ (yo- ys)? Proceso punto_circulo definir cx, cy, ©, Px, Py, d Como Real Escribir "Ingrese el Centro C(x,y): " Leer cx, cy Escribir "Ingrese el radio: " Leer 5 Escribir "Ingrese el Punto P(x,y): " Leer px, PY dere ( (px-cx) *2+(py-cy) *2) r6; Si de=r Entonces | Bsoripir "£1 P(x,y) esté Dentro del circulo” 12 ‘Sino 13 | Bsoribir "El P(x,y) esta Fuera del circulo” a4 Fin Si 15 FinProceso 80 Idn Garcia S Fundamentos de Programacion usando PSelnt ‘** Bjecucién Iniciada. Ingrese el Centro C(x,y): E1 P(x,y) esté Fuera del circulo «+ Bjecucién Finalizada. *** 4.5.8 Realizar un algoritmo para calcular el salario neto semanal de un trabajador en funcién del nimero de horas trabajadas y la tasa de impuestos segtin las condiciones dadas. La tarifa y el impuesto aplican iinicamente a las horas extras, es decir, sobre las 40 horas/semana. #horas | Tarifa Tasa de impuesto <=40 | 1 (veces) | 0% 41-30 [15 5% >50 [2 8% Entrada: # de horas/semana trabajadas y el costo/hora normal Salida: salario neto, impuesto Proceso: calcular el salario neto segin la tabla indicada usando la estructura si-entonces 81 vin Garcia . Fundamentos de Programacién usando PSelnt 2 Proceso cuota_préstamo Definir cuota,c,i Como Real Definir p Como Entero Escribir 'Ingrese el capital (USD) Leer c Esoribir ‘Ingrese la tasa de interés (¥ anual):' Leer i Esoribir ‘Ingrese el plazo (afios): ' Leer p i<-4/100/32 pe-pti2 cuctac-c# (/(1- (141) * (-P))) cuota<- trunc(cuota#i00) /100 Escribir ‘La cuota mensual es: ',cuota FinProceso ae = “ss Bjecucién Iniciada. Ingrese el capital (USD): > 3000 Ingrese la tasa de interés ($ anual): > 16 Ingrese el plazo (afios): > 3 a cuota mensual es: 105.47 J*** Ejecucién Finalizada. +++ 4.5.10 Realizar un algoritmo para caleular la tabla de depreciacién de un bien mueble/inmueble ingresado por teclado. Entrada: valor actual y # de afios (vida itil) Salida: Tabla de depreciacién: afto, depreciacién anual, depreciacién acumulada, saldo Proceso: Calcular la depreciacién segin las siguientes formulas: valor residual = 10% del Valor actual valor actual - valor residual depreciadién anual = rer 83 vin Garela 8 Fandamentos de Programaciin usando PSeInt Proceso depreciacsén definir va,afios,dep,dacum,saldo Como Real @etinir 1 Como Entere fecribir Ingrese el valor del meble/inmeble en USD: * Leer va Becribir *Ingrese su vida Geil en afios: * Leer afios depe-(va-0.itva) /aios // form ‘ancum<-0 Bscribir "# | Dep. | Acum. | Saldo™ Para i<-1 asta afics Con Paso 1 Hacer [" cacun<-dacumedep | saldo<- va-dacum | Escribir i," | ", dep, " | ", Gacum, " | ", saldo vi Base rinpeecees Bwarvan (** Ejecucién Iniciada. ‘++ Ingrese el valor del mueble/inmueble en USD: > 800 Ingrese su vida Gtil en afios: Dep. | Acum. | Saldo 240 | 240 | 560 240 | 480 | 320 240 | 720 | 80 Ejecucién Pinalizada. Nétese que PSelnt, al momento, no dispone de los caracteres de escape (tabulacién) para poder formatear correctamente la salida de la tabla de depreciacién. 4.5.11 Realizar un algoritmo que adivine el nimero pensado por usted entre 1 y 1000. El algoritmo debe ir mostrando niimeros y usted responderd con los simbolos '<', '>'0 "=! segiin sea el niimero pensado menor, mayor o igual al mostrado en la pantalla. Cuando adivine deberd imprimir el nimero de preguntas que ha necesitado para adivinarlo. No debe realizar mas de 10 preguntas. 84 vin Garcia Fundamentos de Programacién usando PSetn Entrada: *<", >", *=" Salida: Namero (preguntas realizadas) Proceso: Dividir el rango de nimeros en 2 y mostrar al usuario y segin su respuesta, descartar la parte superior o inferior. Repetir el proceso (bucle) hasta adivinar el namero. Proceso adivinar_nimero Definir i,£,p,N Como Entero Definir A Como Caracter 4 Escribir "Piense un nimero entre 1 y 1000." 5 Escribir "Presione cualquier tecla para continuar” ‘ Esperar Tecla hace una pause 7 1<-0 8 f<-1000 Ss - peo Repetir Nc (344) /2 Escribir ‘El nimero pensado, que es para el ',N Escribir 'mayor(>), menor (<), igual(=);' Leer A Si An'), menor (<), igual (=); fe1 némero pensado, que es para el 750 or (>), menor (<), igual (: > < E1 niimero pensado, que es para yor (>), menor (<), igual (=} ‘én Garcia S. Fundamentos de Programacion wando PSeInt 4.5.12 Realizar un algoritmo para convertir un niimero decimal ingresado por teclado a binario. Entrada: niimero entero en decimal Salida: cadena de caracteres (nimero en binario) Proceso: Realizar divisiones sucesivas para 2 e ir guardando el residuo. Un nimero binario se representa utilizando solamente las cifras cero y uno. 1 Proceso binario 2 definir s Como Caracter definir n Como Entero Escribir "Ingrese el nimero decimal: " Leer n Mientras n>=2 Hacer | s <- Concatenar(ConvertirATexto(n MOD 2),) | ne-n/2 Fin Mientras 2 <- Concatenar(ConvertirATexta(n),5) Esoribir "En binario es: ",8 FinProceso ** Ejecucién Inicia Ingrese el némero decimal: > 25 fn binaric es: 11001 +** Ejecucién Finalizada. *** 4.5.13 Realizar un algoritmo para convertir un niimero decimal ingresado por teclado @ hexadecimal. Entrada: niimero entero en decimal Salida: cadena de caracteres (ntimero en hexadecimal) Proceso: Realizar divisiones sucesivas para 16 e ir guardando el residuo. Un nimero hexadecimal se representa utilizando los mimeros del 0-9 y las letras de la AF. 86 Isin Garcia 8. Fundamentos de Programaciin usando PSelnt [#** Bjecucién Iniciada. Proceso hexadecimal definir n, 4 Como Entero definir hex, dig hex Como Caracter dig hex = "0123456789ABCDEF* Escribir "Ingrese un mimero entero positivo:" Leer hex<-"" // cade Repetir | ae mod 16 +2 hex <- Concatenar (SubCadena (dig _hex,i,i), hex) | a < cruncta/i6) Hasta Que 2=0 Esoribir "En hexadecimal es: ", hex Itngrese un niimero entero positivo: #** Ejecucién Finalizada. *** 4.6 Observaciones del capitulo Los algoritmos se vuelven més legibles cuando el pseudocédigo esti formateado, es decir, se utiliza indentado (meni ‘Editar’, opcion ‘corregir indentado’). El pseudocédigo es mucho més potente y compacto que los diagramas de flujo, asi como més parecido a los lenguajes de programacién disponibles. Razén por lo cual es utilizado ampliamente, principalmente para resolver problemas de complejidad considerable. En los ejercicios resueltos, no necesariamente se representa el algoritmo més eficiente o més legible. El pseudocédigo permite incorporar ‘comentarios’ para dar una explicacién adicional, a diferencia de los diagramas de flujo. 4.7 Ejercicios propuestos Realizar algoritmos utilizando pseudocédigo para: 4.7.1 Leer por teclado los tres vértices de un tridngulo cualesquiera e imprima su area y » el tipo de tridngulo (equilitero, isésceles, escaleno). 87 vin Garcia 8 Fundamentos de Programacin usando PSelnt A= VP -9 P-b)(P-e) Formula de Hern 4.7.2 Leer por teclado el dia y mes de nacimiento de una persona ¢ imprima su signo zodiacal. 4.7.3 Eliminar los espacios ubicados a la derecha de una palabra ingresada por teclado. 4.7.4 Leer por teclado una frase de texto e imprimir la cantidad de vocales que existen por cada una y en total. Considere las tildes, maytisculas y mimisculas. 4.7.5 Ingresar por teclado una frase ¢ imprima el niimero de palabras que existe en el texto, Considere que puede haber varios espacios al inicio, entre o fin de las palabras. 4.7.6 Calcular la frecuencia de aparicién de una palabra o patron dentro de una frase ingresados por teclado (frase y patron). 4.7.7 Ingresar por teclado una fecha cualquiera ¢ imprima la fecha del dia siguiente. Considérese los afios bisiestos. 4.7.8 Ingresar por teclado una frase y ponga en mayusculas la letra inicial de cada palabra, 4.7.9 Sustituir todas las apariciones de una palabra por otra en una frase. Ingrese por teclado la frase y las dos palabras (Ia que busca y la que reemplaza). 4.7.10 Convertir un nimero binario a decimal 4.7.11 Convertir un mimero hexadecimal a decimal 4.7.12 Determinar si un punto P(x,y) esta dentro o fuera de un tridngulo. Ingrese por teclado el punto y los tres vertices. 88 vin Garcia . Fundamentos de Programacion usando PSelnt a na, CAPITULO V DISENO MODULAR (DESCENDENTE O TOP DOWN) convertir temperaturas Celsius a Fahrenhei mostrar mend Celsius a Kelvin Fahrenheira Kelvin En este capitulo usted encontrara: Procesos/Subprocesos Ejercicios de modularidad Variables locales y globales Paso de Parametros: por valor y por referencia Ejercicios de paso de pardmetros Ejercicios propuestos VVVVVVYV 5. Diseiio modular (descendente o top-down) 5.1 Subprocesos (métodos: funciones y procedimientos) Como se mencioné en el capitulo I (sobre la programacién modular), un problema se puede dividir en subproblemas mas sencillos que abordan una tarea especifica a la vez. Para esto se puede crear varios subprocesos 0 métodos (funciones/procedimientos) en el algoritmo utilizando el comando ‘subproceso’, cuya sintaxis es la siguiente: ED sivrroceso 2 SubProceso frariable de retornd <- ( Regumentog > 3 Fin SubProceso ‘ © Proceso Bin eizaid @ FinProosse Segiin Lopez (2011), un subproceso puede ser llamado o invocado desde un proceso principal 0 desde otro subproceso cuando se requiera. Los subprocesos son ittiles cuando: © Existe una tarea especifica que debe ejecutarse en més de una ocasién (reutilizacién). | Cuando un problema es complejo o extenso. Si el subproceso no retona ningin valor, se puede omitir la variable_de_retorno y el operador de asignacién (€). En este caso se le conoce como procedimiento. Si el subproceso retorna un valor se conoce como funcién. Si el subproceso no recibe ningtin valor (pardmetro) se puede colocar los paréntesis vacios u omitirse. Para invocar al subproceso se debe utilizar su nombre y entre paréntesis los argumentos. Hay que tener mucho cuidado que los argumentos coincidan con los parmetros en cantidad, tipo y orden. De igual manera, entre la variable_de_retorno con la variable que recoge 0 almacena dicho valor. Segiin Sznajdleder (2012), existe una diferencia sutil entre argumentos y parémetros: 90, in Garcia. Fundamentos de Programacion usando PSelnt 1 A.un subproceso le pasamos argumentos C1 El subproceso recibe pardimetros. En Lépez (2011), se le llama pardmetro formal al definido en el subproceso y pardmetro actual al utilizado al hacer la llamada al subproceso. Llamar a un subproceso quiere decir que se usa su nombre para atraerlo, causando que se ejecute. Cuando las tareas del subproceso estin completas, el control regresa al punto desde el que se Ilamé en el programa principal u otro subproceso. Los argumentos de un subproceso serdn definidos en el proceso que realice la Hamada, y por lo tanto, el subproceso los recibira con el mismo tipo de dato ya definido. Por esto, no se debe volver a definir otra vez el tipo de dato de la variable que es argumento dentro del subproceso. De igual forma, no es necesario que los nombres de las variables (argumentos) cuando invoca o llama al subproceso coincidan con los nombres de las variables (pardmetros) definidos en el subproceso. Segiin Farrell (2013), algunas ventajas de la modularizacién son: - Abstraccidn.- Es el proceso de poner atencién en las propiedades importantes mientras se ignoran los detalles no esenciales. Permite ver todo el panorama. - Reutili ~ Los subprocesos pueden usarse mis de una vez en el mismo li programa 0 en otros. - Trabajo en paralelo Al dividir una tarea o problema grande en médulos, se puede con mis facilidad asignar las subtareas entre varias personas. A continuacién presentamos algunos algoritmos en pseudocddigo que hace uso de los subprocesos como consecuencia de la modularizacién. 5.2 Ejercicios de modularidad 5.2.1 Realizar un algoritmo que calcule el minimo comin miltiplo (m.c.m) de dos mimeros leidos por teclado Entrada: dos nimeros enteros Salida: Namero entero (mem) Proceso: calcular el mem utilizando la formula: mem(a,b)= 7" _. El MCD es el maximo comin divisor realizado anteriormente. 1 vin Garcia Fundamentos de Programacion usando PSelnt definir ret como entero Mientras a<>b Hacer Si a>b Entonces a<-a-b definir a,b,c Como Entero Esoribir "Ingrese 2 niimeros enteros: " Leer a,b e<-MCD (a,b) Escribir "E1 mcm es: ", (atb)/c FinProceso wa Ejecucién Iniciada. *** Ingrese 2 nimeros enteros: El mcm es: 12 “** Ejecucién Finalizada. El subproceso MCD es una funcién porque retoma un valor. 92 In Garcia S. Fundamentos de Programacion usando PSeInt 5.2.2 Realizar un algoritmo para redondear un niimero real ingresado por teclado a dos decimales. Entrada: un nimero real Salida: Numero real (redondeado a 2 decimales) Proceso: utilizar la funcién REDON y multiplicar por cien y dividir por 100. SubProceso ret <- round ( n ) definir ret Como Real ret <- REDON (n#100)/100 Pin SubProceso Proceso redondear ~ definir r, n Como Real Escribir "Ingrese un nimero real: Leer n x <- round(n) in Escribir x; FinProceso *** Ejecucién Iniciada. Ingrese un nimero real: > 578.3572 #44 Bjecucién Finalizada. Al momento PSeInt no cuenta con una funcién incorporada que redondee a n-decimales. 5.2.3 Hacer un algoritmo que dados el dia, mes y aio, calcule cual es el siguiente dia. ‘Se debe considerar los aos bisiestos. Entrada: tres enteros (dia, mes y afio) Salida: dia, mes y afio (siguiente dia) Proceso: Calcular el dia siguiente. Se utiliza el método desarrollado anteriormente para determinar si un afio es bisiesto y una estructura ‘segiin’ para determinar los dias de cada mes. 93 Ini Garcia . Fundamentor de Programacisn usando PSelnt 1 // verifica si el parimetro affo es 2 SubProceso ret <- esBisiesto ( afc ) 3 definir ret como logico 4 Si afic mod ¢ =0 ¥ (afico mod 100<>0 O afio mod 400=0) Entonces 5 | ret <- verdadero 6 Sino >| ret < Paleo Fin Si , nétods princip Proceso dia_siguiente Definir d,m,a,dias Como Entero Escribir ‘Ingrese el dia, mes y afio: * Leer d, m, 8 segun m hacer 1,3,5,7,2,10,12: dias<-31 18 4,6,9,11: dias<-30 38 20 dias<-28 2a si esBisiesto(a) entonces 22 | dtas<-diaset 23 Finsi 24 PinSegan 25 d<-dtt 2 si d> dias entonces 27 <-2 primer dia del mes 28 mane 29 Finsi si m> 12 entonces 3: mci primer mes (enero) 32 a<-att 33 Pinsi 34 Escribir ‘El dia siguiente es: ' 35 le1 dia siguiente es: J29/2/2012 +44 Bjecucién Finalizada. *## In Garcia Fundamentos de Programacion usando PSelnt 5.2.4 Realizar un algoritmo para catcular el valor de S, ingresando por teclado los vatores de xy n. Entrada: dos enteros (x yn) Salida: niamero real (S) Proceso: Calcular el valor de S. Se utiliza el método desarrollado anteriormente para calcular el factorial de un nimero. Se hace uso de un bucle desde 1 hasta n para las sumas. 3 Definir ret,fac,i Como Entero 4 fac<-1 5 Para i<-i Hasta n Hacer 6 face-facti 7 PinPara ret<-fac Pin SubProceso Proceso serie Definir x, n, i Como Entero definir S Como Real Bscribir ‘Ingresar el v Leer x, 2 s<-0 Para i<-1 Hasta n Hacer |S <8 + xti/ractorial (4) in PinPara Escribir ‘La serie es: 22. FinProceso or entero de X y Ni ' *** Ejecucién Iniciada. **# Ingresar el valor entero de X y N: ta serie es: 6 **+ EBjecucién Finalizada. **+ 95 vin Garcia S. Fundamentos de Programacion usando PSelnt 5.2.5 Caleular e imprimir la tabla de amortizacién para un préstamo bancario utilizando el sistema de amortizacién francés. El capital (USD), tasa de interés (anual) y plazo (meses) seré ingresado por teclado. Entrada: tres niimeros (capital, tasa y plazo) Salida: tabla de amortizacién Fmes | cuoia fija | capital [ interés [ saldo 1 2 3 Proceso? calcular la cuota fija mensual, capital pagado, interés pagado, y saldo del préstamo utilizando el sistema de amortizacién francés, es decir, la cuota fija, el capital inerementa y el interés disminuye en el tiempo. i 1 -(1+iy? Siendo c el capital prestado, i la tasa de interés mensual y p el nimero de cuotas (# meses). cuota mensual = c* SubProceso ret <- round (2 ) definir ret Como Real ret <- REDON (n*190)/100 Fin SubProceso aeone 96 vin Gara 8. Fundamentos de Programacin usando PSelnt definir tiempo, i Como Entero definir cucta, tasa, deuda, int, cap como real ESCRIBIR "TABLA DE AMORTIZACION CON EL METODO FRANCES* Esoribir “Ingrese el valor del préstamo (USD):" leer deuda escribir "Ingrese el mimero de cuotas (meses):" leer tiempo escribir "Ingress 1a tasa de interes anual (en $):" leer tasa e vasa <- tasa/i00/i2 // inte sual 9 cucta <- deudat(tasa/(1-(i+tasa)*(-tiempo) )) 20 escribir "N° ","CUCTA *,"CAPITAL ,"INTERES ™,"SALDO™ 2 Para i<-i Hasta tiempo Con Paso 1 Hacer 22 ga ae 1 24 25 oca al subproceso 26 escribir i," ", round(cucta)," ", round(cap) Sin Saltar 27 escribir" ", round(int)," ", round (deuda) 28 Fin Para 29 PinProceso s** Ejecucién Inicieda. TABLA DE AMORTIZACION CON EL METODO FRANCES Ingrese el valor del préstamo (USD): > 3000 fingrese el nimero de cuotas (mes > 6 fIngrese 1a tasa de interes anual (en $): CAPITAL INTERES SALDO 493.59 40 2516.41 490.04 33.55 2026.37 496.57 27.02 1529.8 $03.19 20.4 1026.6 509.9 13.69 516.7 516.7 6.89 ** Ejecucién Finalizada. *** Nétese que PSeInt, al momento, no dispone de los caracteres de escape (tabulacién) para poder formatear correctamente la salida de la tabla de amortizacién. 7 In Garcia . Fundamentos de Programacién usando PSelnt 5.2.6 Realizar un algoritmo para calcular el drea de ta circunferencia circunscrita a un tridngulo rectingulo cuyos vértices son ingresados por teclado. Entrada: tres vértices Salida: dos mimeros (radio y area) Proceso: Calcular el circuncentro, el radio y el area. El Circuncentro de un triéngulo rectingulo cs el punto medio de la hipotenusa. El radio estaria dado por la distancia del circuncentro a cualquier vértice. El area esta dada por la formula A= nr? La formula de la distancia es: d=VO-4 P+ ry)? SubProceso ret <- mayorTresWuneros ( 2,B,c ) ~ definir ret Como Real Si a>b ¥ adc Entonces [reece Sino 7 Si bec Entonces | reve b Sino | neve | Finst Pins Fin SubProceso 3s principal 46 Proceso area_circunferencia 17 Definir xi, yl, x2, y2, x3, y3 Como Entero 1 definir AB,BC,AC,h,x como real 1 escribir "Ingrese el vértice A(x1,yi)" leer xi,y escribir "Ingrese el vértice B(x2,y2)" leer x2,y2 escribir "Ingrese el vértice C(x3,y3)" leer x3, y3 ABC { (x1-x2) 424 (yi-y2) 42) BC<-re { (x2-"3) 424 (y2-¥3) 2) AG<-re ( (x1-x3) “2+ (yi-¥3)*2) h<- mayorTrestumeros(AB, BC, AC) r<-h/2 x Escribir "El radio e: Escribir "El érea FinProceso = ", (PIerA2) 98 vin Garcia S. Fundamentos de Programacion usando PSeInt ve* Ejecucién Iniciada. *** Ingrese el vértice A(x1,y1) Aqui se hace uso de la constante PI incorporada en PSelnt. 5.3 Variables locales y globales Las variables son docales a cada método donde han sido definidas o declaradas, es decir, se pueden usar solamente en ese método. Si se intenta hacer uso de dicha variable en otro proceso/subproceso donde no ha sido declarado, el programa PSelnt dari un mensaje de error. Las variables globales se definen fuera del cuerpo de un método y puede ser vista y manipulada por todos los métodos del algoritmo. Al momento en PSeInt no existe el concepto de variable Global 5.4 Paso de parametros por valor y referencia En la definicién de los pardmetros de un proceso 0 subproceso se puede agregar las palabras claves ‘Por Valor’ 0 ‘Por Referencia’ para indicar como se pasa cada pardimetro. Si se omiten, por defecto el paso sera Por valor a excepeién de los arreglos (veremos en el siguiente capitulo) que se pasan por referencia. El paso por referencia implica que si en el subproceso se modifica el contenido del argumento, este modificara la variable que se utilizé en la invocacién o llamada, es decir, se opera sobre la variable original (trabajan en el mismo espacio de memoria). El paso por Valor implica que si en el subproceso se modifica el contenido del argumento, este no se veri reflejado en la variable que se utiliz6 en la invocacién, es decir, se opera sobre una copia de la variable (diferente espacio de memoria). 5.4.1 Ejercicios de paso de parametros 5.4.1.1 Por valor (por defecto) 99, vin Garcia S. Fundamentos de Programacion usando PSelnt Entrada; un néimero entero Salida; Nimero entero Proceso: incrementar en una unidad la variable usando paso de parimetro por valor SubProceso incrementar ( n Por Valor) ne-nti Pin SubProceso Proceso paso_parametros definir a Como Entero acs ancrementar (a) > Bscribir a PinProceso “+ Ejecucién Iniciada. 5 “** Ejecucién Finalizada. Observe que el cambio realizado en la variable ‘n’ en el subproceso (procedimiento) no afecta a la variable original ‘a’ del proceso. 5.4.1.2 Por Referencia Entrada: un némero entero Salida: Niimero entero Proceso: incrementar en una unidad la variable usando paso de parémetro por referencia 100 Ini Garcia S Fundamentos de Programacion usando PSelnt SubProceso incrementar ( n Por Referencia) n<-ntl 4 5 Fin SubProceso 6 2 Proceso paso_parémetros 2 definir @ Como Entero 10 acs ancrementar(a) 2 Escribir a 13 FinProceso +++ Ejecucién tniciada. nee *** Ejecucién Finalizada. *** Observe que el cambio realizado en la variable ‘n’ en el subproceso (procedimiento) si afecta a la variable original ‘a’ del proceso. En los ejercicios resueltos en los préximos capitulos se hard uso del paso de parimetros por valor y referencia de acuerdo al problema a resolver. 5.5 Ejercicios propuestos Utilizando subprocesos, realizar algoritmos en pseudocddigo para: 5.5.1 Eliminar los espacios ubicados a la izquierda (inicio) y a la derecha (fin) de una palabra ingresada por teclado. 5.5.2 Insertar los separadores de miles y decimales a un nimero real (valor monetario en USD) ingresado por teclado, ejemplo: 12689.7-> 12,689.70 | 893-> 893.00 5.5.3 Descomponer un nimero ingresado por teclado en sus factores primos. 5.5.4 Calcular el niimero de dias que faltan del afto, a partir de una fecha ingresada por teclado. 5.5.5 Calcular el valor de T, ingresando por teclado los valores de x y n. ae at a T=14 See Sy at 7 Blk 101 vn Gara. Fundamentos de Programacion wsando PSelnt

También podría gustarte