Está en la página 1de 153
aon oe % < Mw, ig FY Tipos de aplicaciones Vv = Consola = Escritorio = Web = Movil > Lenguajes de programacién >» Tareas propuestas 1, Introduccién a la Programacién 1.1 La Programacion 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 e 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 electrnica) 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 mas 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 ciclo de la programacion Figura 1.1 El ciclo de Programacién Fuente: Lépez (2009) 10 vin Garcia S Fandamentos de Programacién usando PStInt wa 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 esti permitido o prohibido hacer y/o utilizar) y los procesos (pasos, formulas) necesarios para convertir dichos datos (insumos) en resultados. Por ejemplo: Realizar el analisis del problema para obtener el area 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 o pseudocddigo) que resuelva el problema planteado, En este libro se utilizara el programa PSelnt para el disenio 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 faciles de detectar y corregir. Los errores légicos producen como resultado una salida incorrecta y son més dificiles de detcctar y corregir. Los errores en tiempo de ejecucién se producen cuando el programa estd en ejecucion y se presenta alguna anomalia como por ejemplo: mal ingreso de los datos de entrada, no esti disponible la red, dispositivos de almacenamiento, impresion, ete. 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): ‘hn Garcia. Fundamentos de Programactin usando PS 3. ia er f \ = eS & Figura 1.2 El ciclo del desarrollo del programa Fuente: Farrell (2013) 1.3 Los paradigmas de la Programacién Existen algunas téenicas de programaci6n cuya finalidad consiste en mejorar el proceso de creacién de programas, asi como su mantenimiento y documentacién. Algunas de cllas son: programacién estructurada, modular y orientada a objetos. Figura 1.3 Paradigmas de la programacién Fuente: Adaptado de Lopez (2011) Inn Garcia 8. ‘Fundamentos de Programacion usando PSeint 1.3.1 La programacién estructurada Segiin Lépez (2011), la programacién estructurada es ta 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: mimero (entero, real), cardcter/cadena de caracteres, fecha, booleano (verdadero, falso). La secuenciacién es la capacidad de ejecutar las instrucciones secuenciales una tras otras. La seleccidn es la capacidad de escoger, entre alternativas, si algo se ejecuta 0 no, y la repeticién es la capacidad de ejecutar una 0 més 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) més simples con a 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, faciles de entender y mantener, Funciones 0 Procedimientos (métodos) Figura 1.4 Programa de gestién contable 3 Ii aria, FFundamentos de Programacion usando PSelnt 1.3.3 La programacién orientada a objetos (POO) La POO se puede concebir como una evolucién de la programacién modular, debido al requerimiento de programas mas ambiciosos (aplicaciones graficas, 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. Alumno ~ Cédula - nombres - apellidos - Fecha - nacimiento - direccién - telefono ~ email + agregar () + eliminar () + Modificar() + leer () Figura 1.5 Clase Alumno => Nombre de la Clase ==>. Atributos = Métodos, operaciones 0 eventos En este libro usaremos los paradigmas de la programacién estructurada y modular para la resolucién de los ejercicios. Queda fuera del alcance la programacién orientada a objetos. 4 in Garcia S. Fandamentos de Programaciin usando PSelnt ‘iones 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 (CLI), es decir, en una ventana de MS-DOS, Gnome, KDE, etc. No tiene interfaz grifica y se ejecuta en modo texto. Tienen la ventaja de consumir menos recursos del equipo por lo que suelen ejecutarse répidamente. Algunas aplicaciones de consola son: programa de contabilidad Tini, Tmax, etc. Figura 1.7 Aplicacién de Consola (Verifica si el aio 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.). Ademis estas aplicaciones estan basadas en una interfaz grafica (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, ete. Is In Gareta S Pandamentos de Programaciin usando PSelnt TM > © 2 al Documental = Microsoft Word |= |S Inicio. Insertar Disefio Referen Corresp Revisar Vista Acrobat & BR 4 Calibri (Cuerpo) wht | fal) | ali fae reser NK S~ abe x, x SO WE aw Ae Portapapeles 1% Fuente r Parrato Estilos Edicién “ny Lt te Totes womd 4 a | Pagina: 1 de1 | Palabras: 0 BBs se 0% © — b+ 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 Inin Garcia. Fundamenios de Programacié wando PSelnt (D Actualizar estado AAadir fotos) video Figura 1.9 Aplicacién Web (Facebook) 1.4.4 Aplicacién Movil Estas aplicaciones estan 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 Ia banca virtual, juegos, utilidades, etc. Figura 1.10 Aplicacién Mévil 7 Inin Garcia 8. Fundamentos de Programacién usando PSelnt 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 mas utilizadas. En cambio, las aplicaciones de consola y de escritorio son mas aptas para otras tareas, especialmente aquellas en donde se requiere la interacci6n 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 cn los cquipos (principalmente computadoras 0 dispositivos méviles). A través de ellos los seres humanos puedan dar instrucciones a un equipo. A este conjunto de Grdenes que es escrito por un programador utilizando algin lenguaje de programacién se le denomina cédigo fuente. El lenguaje de programacién est formado por un conjunto de simbolos, palabras reservadas y reglas sintacticas y semanticas 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 Tipos de aplicacién Licenciamiento VB.net _ |Consola, escritorio, web, mévil _ |Software privativo (C#net _|Consola, escritorio, web, mévil__| Software privativo [C++ (Consola, escritorio ‘Software libre Java |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 cédigo 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 ademés se pague un canon al propietario o titular. Segiin Lopez (2011), no se debe ensefiar al estudiante a programar directamente con un lenguaje de programacion, debido al doble problema que resulta aprender la logica de 18 Ind Gare Fndamentos de Programacién usando PSelnt programacién y la sintaxis del lenguaje al mismo tiempo. Por esta razén, aqui se hard Enfasis en los algoritmos, a través de diagramas de flujo y pseudocddigo utilizando el programa PSeInt. 1.6 Tareas propuestas 1.6.1 1.62 1.63 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, fix) Cantidad aprendida ts) tiempo Figura 1.11 Curva de aprendizaje; (x) indica que en poco tiempo se aprende mucho; (x) indica que en mucho tiempo se aprende poco Realice un cuadro sindptico sobre software empresarial existente en su profesion, 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 aplicacion web: cliente, servidor de aplicaciones y bases de datos (véase figura 1.12), complete la tabla con la informacion que mejor se ajusta, de acuerdo al tipo de licencia (privativo, software libre) de la tecnologia indicada, 19 sn Garcia S. Fundamentos de Programaciin sande PSelnt “Tecnologia | Servidor | Servidor de | Cliente | Sistema | Extension | Costo debase | Aplicaciones (navegador) | Operative | dela | estimado en de datos (Web pagina licencias web Java MisoL | TonBE | Firefox Linu sip | 000 Postgres | Bass Chrome Chet z Windows ‘VB.net | Php “php Oracte Weblogic Matlab Matlab Web Windows Server Servidorde _ Servidor de Usuarios Aplicaciones Base de (clientes) web Datos Intranet Figura 1.12 Arquitectura de 3 capas de una aplicacién web 20 vin Garcia S. Fundamentos de Programacion usando PSeint bad 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 z 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: TEPI (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 ademés contribuye a reducir los costes, {por qué existen muchas empresas que se deciden por el software privativo? ai vin Garcia S ‘Fundamentos de Programacion usando PSetnt CAPITULO II INTRODUCCION A Pselnt ¥ En este capitulo usted encontrara: Vv Vv VVVVVVV Qué es PSelnt El entorno de trabajo Perfiles (personalizacién) Editor de Diagramas de flujo Editor de Pseudocodigo Ejecucion del algoritmo Guardar el algoritmo Exportacion a codigo fuente Tareas propuestas lar 2. Introduccién a PSeInt 2.1 Qué es PSelnt Segiin Novara (2014): PSelnt viene de las palabras “PSeudo Imtérprete’ y es una herramienta para asistir a un estudiante en sus primeros pasos en programacién. Mediante un simple e intuitivo pseudolenguaje en espafiol (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 entorno 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 versi6n disponible al momento de la edicién del libro es la 2014092/ 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) hitp:l/pseint.sourceforge.net Figura 2.1 Acerea del Programa PSeInt Algunas caracteristicas y funcionalidades de PSelnt son: o ooada Presenta herramientas de edicién para escribir algoritmos en pseudocédigo 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 23 Inn Garcia. Fundamontos de Programacion usando PSelnt O Permite exportar el algoritmo de pseudocddigo a cédigo C, C++, C#, java, php, VB.net, pascal, python, javaScript, Matlab. O Ofrece un sistema de ayuda integrado y con ejemplos CEs multiplataforma (Windows, GNU/Linux y Mae OS X) Es totalmente libre y gratuito (licencia GPL) o 2.2 El entorno de trabajo = r vé SOL 448 DW |B ‘saiq0Uen Op EH ZPVICPAH i 2 i Figura 2.2 Entomo de trabajo de PSeint 2.3 Perfiles Los perfiles permiten configurar ciertas restricciones en el pseudocédigo. 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 seleceionar el perfil vaya al mena “Configurar ’, Opciones del lenguaje (perfiles). 24 vin Garcia Fundamentos de Programacin usando PSelnt Figura 2.3 Perfiles de PSeint 2.4 Editor de Diagramas de Flujo Dirijase al menii ‘Archivo ', opcién ‘editar diagrama de flujo’. 2s In Gara 5. Fandamentos de Programaciin usando PSelnt Figura 2.4 Editor de diagramas de Flujo de PSeint 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 PSeint 26 vin Garcia Fundamentox de Programacion wre PSeat Lucgo 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 meni “Eecutar’, abi encontrara algunas opciones disponibles, entre ellas: Wy EecuterPasoaPaso FS % Ejecucion Explicada R Veriticar Sintaxis Predefinir Entrada... Ctl+F9 ShifteF9 Figura 2.7 Opciones de ejecucién del algoritmo 2 hin Garcia S. Fundamentos de Programacion usando PSelnt ‘Ademés activando la opcion de “Prueba de Escritorio’ puede ejecutar por pasos el algoritmo segin su ritmo e 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. + 3 i s lls F ~ sev0Duny A saiopesode >= : i Figura 28 Prueba de Escritorio en PSeInt 2.7 Guardar el algoritmo Dirijase al mend ‘Archivo’, opcién ‘Guardar como...”, seleccione el lugar y un nombre adecuado para el algoritmo. Este archivo se almacenara con la extension “*.psc” 2.8 Exportacién a cédigo fuente Dirijase al meni ‘Archivo’, opcién ‘Exportar’, ahi encontrara varias opciones para crear el codigo fuente en algin lenguaje de programaci6n disponible, imagen o html. 28 Convertir a c6digo C (¢)~ B Convertir a codigo C++98/03 (cpp) Convertir Cédigo Ce (cs). ‘Convertir a pégina HTML UsvaScript embebido) (html). Convestira cédige Java (ave)... Convertir a cédige JavaScript js). Convertir a cédigo MatLab (rm)... Convertir a cédigo Pascal (pes). Convertir a cédige PHP (php). Convertir a cbdigo Python 2 (py).. Convertir a cédigo Python 3 (py).~ Convertir a cédigo Visual Basic NET (vb)... B® Pseudocodigo coloreade (html)... %; Diagram de flujo (png. bmp ops)» Figura 2.9 Opciones de exportacién de PSelnt 2.9 Tareas propuestas 2.9.1 Descargue la iltima versién disponible del programa PSclnt 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 sinéptico con informacién de otros programas disponibles para elaborar y ejecutar algoritmos: nombre, tipo de licencia, tipo de aplicacién, caraeteristicas y funcionalidades, sitio web oficial. 2.9.4 Realice un cuadro sinéptico sobre los derechos (libertades) que ofrece la licencia GPL (General Public License) 29 Jin Garcia S Fundamentos de Programacién usando PSeInt CAPITULO III ALGORITMOS: DIAGRAMAS DE FLUJO Proceso suma_2_numeros Definir a,b,c Como Entero En este capitulo usted aprendera: Qué son los algoritmos Diagrama de flujo Forma general Operadores: algebraicos, légicos, relaciondles vVvvvY Funciones incorporadas © Mateméticas © Cadena de caracteres © Otras + Ge > Variables y tipos de datos 2 > Estructuras basicas de control | i La secuenciacién: asignacién, lectura, escritura © La seleccién: si-entonces, segtin © La repeticién: mientras, repetir-hasta, para > *Esiructuras de control anidadas > Misceldnea de ejercicios > Observaciones del capitulo > Ejercicios propuestos ‘wo ™ 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 0 instrucciones que han de seguirse para resolver un problema y debe tener las siguientes caracteristicas 1 Debe ser simple, claro y preciso (determinista, es decir, que si se ejecuta varias veces con los mismos datos iniciales, siempre produciré la misma salida) Tener un orden l6gico 1 Tener un prineipio y un fin a 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 Excribir 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 OY QAHAHKA 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, tamaiio, 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 \ \ WO OYAGAWNA Computacionalmente un algoritmo puede expresarse de distintas- maneras, principalmente en un diagrama de flujo o pseudocédigo. 31 Ibn Garcia. Fandanentos de Programacién wsando PSeini 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. Ademis su tamafio crece considerablemente en la medida que el problema sea hace mis complejo. Por el contrario, estos son faciles de entender y utilizar para estudiantes de otras disciplinas ajenas a la informatica. Por esta razon 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 representaci6n grifica de un algoritmo. Los clementos simbolos basicos a usar son los mostrados en la tabla 3.1 Tabla 3.1 Simbolos basicos del diagrama de flujo Descripeién Inicio y fin Proceso o instruccién Decision Entrada de datos por teciado Salida de datos por pantalla Conector dentro de la misma pagina Conector fuera de la pagina Linea de conexi6n y direccién de flujo 0) eoQOUU Llamada a un subproceso (método) Fuente: Adaptado de Lopez (2009) 22 sin 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 g Resta z Multiplicacién | & GD Division < * Potencia MOD | Médulo o resto < Y Conjuncién 3 [0 Disyuncion NO ‘Negacion a = igual g fe iferente 5 < Menor a Mayor | a Menor o igual Mayor o igual Fundamentos de Programacion usando PSeln: 3.5 Funciones incorporadas en PSeInt 3.5.1 Funciones Matematicas ‘abs | abs(x) calcula el valor absoluto de x trune | trunc(x) devuclve la parte entera de x redon_| redon(x) redondea x al entero més cercano te e(x) calcula la raiz cuadrada de x [azar azar (n) retorna un nimero aleatorio entre 0 y (n-1) sen__| sen(x) calcula en seno dex en radianes ‘cos | cos(x) calcula en coseno de x en radianes tan | tan(x) calcula la tangente de x en radianes In In(x) calcula el logaritmo natural (base e) de x exp | exp(x) calcula e%% PI__| Equivale a 3.1415926 3.5.2 Funciones de Cadena de caracteres Longitud Longitud(s) devuelve el nimero de caracteres ‘Subcadena ‘Subcadena(s, i, j) devuelve la subcadena desde la posicién i hasta j ‘Concatenar Coneatenar(sl, 62) devuelve una cadena con los contenidos unidos ‘ConvetirANumero | ConvetirANumero(s) devuelve convertido de texto amimero ConvertirATexto | ConvertirATexto(n) devuelve convertido de néimero a texto Mayasculas ‘Mayisculas(s) devuelve su contenido convertide a mayusculas Minisculas Mimisculas(s) devuelve su contenido convertido a minisculas 3.5.3 Otras funciones BorrarPantalla | Limpia la Panialla de resultados Esperar Tecla Detiene la ejecucién 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 PSelat. a4 sin Garcia S. ‘Fandamentos de Programacién usando PSeint Los tipos de datos primitives disponibles en PSeInt son: cardcter/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 Caracter definir y Como Entero definir z Como Légico definir w Como Real Si desea declarar mas variables del mismo tipo puede separarlas por comas. Para asignar el valor a una variable tipo caracter, se debe usar las comillas simples 0 dobles. El separador decimal en las variables numéricas ¢s ¢l 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. ‘Seguin Farrell (2013), existen tres convenciones para nombrar las variables: = Notacién de camello.- La variable empieza con una letra minuscule y cualquier palabra subsiguiente comienza con una mayiiscula, ejemplo: lastName, firstName. - La caja de Pascal La primera letra es mayiscula, ejemplo: LastName, FirstName. - Notacién hiingara.- 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 modifiear el flujo de ejecucién de las instrucciones de un algoritmo 0 programa, 3.7.1 La secuenciacion Las instrucciones se ejecutan secuencialmente una después de la otra. Aqui podemos encontrar basicamente: 35 Isin Garcia ‘Fundamenios de Programaciin wsande PSetnt Asignacién, definicién 0 dimensién (arreglos) A= B+ Escribir (salida de datos) Leer (entrada de datos) 3.7.2 Ejercicios de Secuenciacion 3.7.21 Realizar un algoritmo para calcular la suma de dos niimeros enteros leidos por teclado Entrada: dos nimeros Salida: un nimero (suma) Proceso: sumar los dos nimeros enteros usando el operador algebraico (+) Proceso suma_2_ntmeros Definir a,b,c Como Entero 'Ingrese dos numeros enteros:' 36 vin Garcia S. Fundamentos de Programacion wando PSednt = ee *** Ejecucién Iniciada. *** Ingrese dos nameros enteros: ua suma es: 17 +4 Rjecucién Finalizada. *** 3.7.2.2 Realizar un algoritmo para convertir de grados Celsius (C) ingresados por teclado a Fahrenheit (F). Entrada: un mimero real (Celsius) Salida: un nimero real (Fahrenheit) Proceso: convertir usando la formula: F = 2¢ +32 Proceso celsius_fahrenheit Definir C,F Como Real 'Ingrese los grados Celsius: ' F<-9/ 5*C+32 Grados en Fahrenhe Ea Inn Garcia $ Fundamertos de Programctén usando PSelnt *** Ejecucién Iniciada. *** Ingrese los grados Celsius: > 35 Grados en Fahrenheit: $5 “** Ejecucién Finalizada. *** 3.7.2.3 Realicar un algoritmo para calcular el precio de un terreno cuadrado 0 rectangular ingresando por teclado el largo, ancho y precio de cada m’. Entrada: tres niimeros reales Salida: un numero real (precio del terreno) Proceso: calcular usando la formula: precio = largo + ancho« precio del m* Proceso precio_terreno Definir |,a,pm2,p Como Real ‘Ingrese el largo, ancho y precio/m:' ‘El terreno cuesta: ' FinProceso 38 Buin Garcia. Fundamenios de Programacion usando PSelnt *** Ejecucién Iniciada. *** Ingrese el largo, ancho y precio/m2: > 20 > 10 > 65 El terreno cuesta: 13000 “es Ejecucién Finalizada. *** 3.7.3 La seleccién Se ejecuta una(s) instruccién(cs) u otra, dependiendo de la evaluacién de una condicién (verdadero 0 falso). Aqui podemos encontrar: Si-entonces (condicional simple) Segin (seleceién milltiple) Una condicién puede estar formada por varias sub-condiciones unidas a través de operadores Iégicos Y, 0, NO (expresiones logicas compuestas). La tabla de verdad de cada operador es: AN cal F |v Cada parte (sub-condicién) de una expresién (condicién) que usa un operador sélo se evalia hasta donde sea necesario para determinar si la expresién entera es verdadera 0 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 expresién, 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 vin Garcia Pandamentos de Programacién usando PSelnt Nota: En PSelnt, actualmente la estructura ‘segiin’ no admite rangos de ntimeros en las opciones 0 casos. 3.7.4 Ejercicies de Seleccion 3.7.4.1 Realicar un algoritmo para calcular el mayor de dos niimeros enteros leidos por teclado Entrada: dos nameros Salida: un nimero (mayor) Proceso: calcular el mayor de los niimeros usando una seleccién y el operador relacional Proceso mayor_2_numeros Definir ni,n2 Como Entero 'Ingrese 2 numeros:' 40 vin Garcia S. Fundamentos de Programacion usando PSeIat 3.7.4.2 Realizar un algoritmo que lea por teclado tres niimeros ¢ imprima ‘iguales’ si la suma de dos cualquiera de ellos es igual al otro ntimero, de to contrario, imprima ‘desiguales. Entrada: tres niimeros enteros Salida: iguales/desiguales Proceso: Determinar en base a la suma de dos ntimeros y comparar con el otro utilizando una seleccién y operadores légicos. Proceso nimeros_igual_desigual [Def inir_ni,n2,n3 Cow Entero “Ingrese tres numeros: ' (nt4n2)=n3 0 (nten nProceso 4 vin Garcia Fundamenos de Programacton wando PSeint “ 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=c dx + ey=f Entrada: seis mimeros (a-f) Salida: dos niimeros (x, y) Proceso: resolver el sistema de ecuaciones en base a las siguientes ecuaciones: ce bf ._ _af-ed_. donde ( ae - db)#0 ge-bd’* ae-bd 42 dn Garcia S Fundamentos de Pregramacién usando PSeInt Definir x,’ "Ingrese coeficientes a, b, c:" Coro Real *** Ejecucién Inic: tngrese coeficientes ly 44% Bjecucién Finalizada. “++ l 43 ‘dn Garcia. Fuindamentes de Pregremeciin usando PScht 3.7.4.4 Realizar un algoritmo que permita ingresar por teclado el niimero del dia laborable de la semana e imprimir su nombre. Entrada: un nimero (1-5) Salida: cadena de caracteres (nombre del dia) Proceso: Determinar el nombre del dia laborable utilizando la estructura ‘segiin” Definir n Coro Entero “Ingrese el numero del dia (1-5):" 1 | Z 3 Ll 4 au I Lihunes' Taal 7 amore] “Jueves' 7 [‘Viernes’ —_ r rango’ 4" Ejecucién Iniciada. *** Ingrese el nimero del dia (1-5): >3 3.745 Realizar un algoritmo para detérminar si tres puntos P(x,y) ingresando por teclado son colineales Entrada: Pl, P2, P3 Salida: Si / No Proceso: Determinar la colinealidad usando pendientes y= Xa-Xs 44 vin Garcia S Fandamentos de Programecién woando PSelnt Proceso col ineales Definir xi, 1, x2, y2,x3,y3 Cano Entero “Ingrese el Punto Pi(xi,yi): " "Ingrese el Punto P2(x2,y2): | [m23<- (y3-y2)/ (x3-x2, “#* Bjecucién Iniciada. *** Ingrese el Punto P1(xi,y1): >1 Ingrese el Punto P2(x2,y2): > 2 \J> 2 Ingrese el Punto P3(x3,y3 ]st colineales *** Ejecucién Finalizada. *+* LQué sucede con ¢l algoritmo cuando la recta es vertical? 4s ‘in Garcia S. Fandamentox de Prgremocin sana Seat 3.7.5 La Repeticién (bucle, cicle 0 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 evaliia 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 condici6n 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 condicion 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 asignacién 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 Iega 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. Notese que cuando el incremento es uno (por defecto), el programa no lo pone en el griifico pero si lo considera en la ejecucién. 46 sd Garcia Fuandimentos de Programacisn usando PSelnt El bucle ‘Para’ y el ‘Mientras’ funcionan de manera similar, s6lo que el ‘Para’ es mucho més 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 algun valor que controle si cl ciclo continia 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 nixmero entero positivo ingresado por teclado (usando la estructura ‘Mientras’) Entrada: un numero entero Salida: un nimero (factorial) Proceso: calcular el factorial del mimero (usando ‘Mientras’) a través de _multiplicaciones sucesiva desde 1 hasta el mimero ingresado. 47 sin Garcia Fundamentos de Programacién usando PSelnt Proceso calcular factorial Definir_n,fac Como Entero #* Ejecucién Iniciada. lIngresar un némero: > 5 fl factorial es: 120 |*** Ejecucién Finalizada. «** 48 vin Garcia S Fundamentos de Programacion wand PSeIat 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 positive ingresado por teclado (usando la estructura ‘Repetir-hasta’) Entrada: un niimero Salida: un nimero (factorial) Proceso: calcular el factorial del nimero (usando ‘repetir-hasta’) a través de multiplicaciones sucesiva desde 1 hasta el mimero ingresado. Proceso factorial Definir cont,n,fac Como Entero 'Ingrese un numero: ' Fac<-fac*cont v ‘El factorial es: ',fac ” vin Garcia Fundamentos de Programacion usando PSelnt *4* Ejecucién Iniciada. *** Ingrese un nimero: >4 £1 factorial es: 24 “s+ Ejecucién Finalizada. **+ Observe que el bucle “Repetir-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 et factorial de un nimero entero positivo ingresado por teclado (usando ta estructura ‘Para’) Entrada: un nimero Salida: un niimero (factorial) Proceso: calcular el factorial del mimero (usando “Para’) a través de multipli sucesiva desde | hasta el niimero ingresado. Proceso factorial 30. In Garcia S. Fundamentes de Programacion usando PSelni “** Ejecucién Iniciada. Ingresar un nimero >3 el factorial es: 6 “4 Bjecucién Finalizada. **# Nétese que si el incremento en el buele es uno (por defecto), el programa no lo hace constar en el diagrama pero si lo considera internamente en la ejecucién, 3.7.6.4~ Realisar un algoritmo para calcular la suma de la progresién geométrica ingresando por teclado x y n. = ]+x2+x3+x ter tyn Entrada: x, n Salida: un niimero (S) Proceso: calcular a través de las potencias y las sumas sucesivas en un bucle. Proceso progresidn_georétrica Definir x,n,S,i Como Entero sin Garcia Fundamentos de Programacién wsando PSelnt fie progresiéa geométrica ea: 22 +++ Bjecucién Finalizada. *#* Notese 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, Entrada: palabra Salida: Si/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 invierte la palabra y se compara con la original [s7 s1<-Concatenar(s1,SubCadena(s,i,i)) én Gare Furdamentos de Programacion usando PSelnt ++ Ejecucién Iniciada. *** lingrese una palabri > reconceer fs Palindromo ¥¥* Bjecucién Finalizada. **# Notese que el bucle ‘Para’ utiliza un contador (variable é) en forma decreciente (-1). El bucle (‘Para’) y la decisién (‘si-entonces’) estan 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éon entre estructuras del mismo tipo 0 una mezcla de ambas estructuras. Se debe considerar que para ¢jecutar un bucle anidado, el tiempo de ejecucién del algoritmo crece considerablemente. El ciclo que contiene al otro se lama ciclo exterior y el que esté contenido se llama ciclo interior. 3.9 Ejerc con estructuras de control anidadas 3.9.1 Realicar un algoritmo para ingresar por teclado tres niimeros e imprimir el mayor de ellos. Entrada: tres mimeros Salida: un nimero (mayor) Proceso: Calcular el mayor de los niimeros usando una condicién compuesta y simple anidada. 33 in Garcia Fandamenios de Programacion usando PSdnt Definir_a,b,c Como Entero Observe que en la primera condicién compuesta se esté usando el operador légico de conjuncién (Y). Asi tenemos una estructura ‘si-enionces' dentro de otra estructura ‘si- entonces'’. 54 vin Garcia 8 Pundamentos de Programacton usando PSetnt 3.9.2 Realizar un algoritme para ingresar n mimeros leidos por teclado ¢ imprima la multiplicacién de los niameros impares y la suma de los ntimeros pares. Entrada: cantidad y lista de niimeros Salida: dos nimeros: la multiplicacién y la suma Proceso: Calcular la multiplicacién de los niimeros impares y la suma de los pares. Se utiliza una decision y el operador MOD para verificar si el nimero es par 0 impar. Definir_n,p,i,cont,num Como Entero 'Ingrese la cantidad de ntmeros:' "Ingrese los nimeros:' ‘La mutiplicacién de los impares es: ',i "La sume de los pares es: ',p sin Garcia S. Fundamentos de Programacion wsando PSetnt ea: 12 ste Bjecucién Finalizada. *** Observe que en este ejercicio se esta usando una estructura de seleccién * 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 nimeros enteros Salida: un naimero (MCD) Proceso: calcular el MCD de dos enteros utilizando restas sucesivas dentro de un bucle. 56 vin Garcia . Fundamentes de Programacion usando PSefnt Definir a,b Cano Entero ‘Ingrese 2 numeros enteros:' Observe que en este ejercicio se esti usando una estructura de seleccién ‘si-entonces* dentro de una estructura de repeticién ‘Mientras’. 37 vin Garcia. Fundamenos de Programacion wando 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 dependera 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 algiin 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 vera 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 @ puertas. 38 sin Garcia S Fundamentas de Programacion wand PScinu superficie a pintar (nt) litros por mano (It) = = rendlimiento de la pintura (7") 3.11.7 Resolver la ecuacién de segundo grado (raices), ingresando por teclado los coeficientes a, by c. Si las raices son imaginarias deberd 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)? + (yo-y)” 3.11.9 Determinar si un afto 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 porcentaje del sueldo fijo y se maneja en base a los articulos vendidos, El seguro social ¢s el 9.35% del sueldo fijo. Ingrese por teclado el sueldo fijo y el niimero de articulos vendidos. 3.11.11 Caleular la potenciacién de dos niimeros ingresados por teclado (base y exponente), No utilice el operador algebraico potencia (”) incorporado en PSelnt. 3.11.12 Determinar si un nfimero ingresado por teclado es primo. 3.11.13 Determinar si un nfimero ingresado por teclado es perfecto. 3.11.14 Calcular la calificacién obtenida de un empleado piiblico que atiende a los usuarios por ventanilla, Cada usuario califica la atenci6n recibida ingresando un nimero entre | (menor puntuacién) y 5 (mayor). El programa se ejecuta en forma continua hasta que el gerente introduce un nimero negativo para salir. Al final, el programa imprime la frecuencia de cada puntuaci6n y el promedio de las ealificaciones de la jomada laboral.. 39 vin Garcia S Fundamentos de Programacin usando PSelnt CAPITULO IV ALGORITMOS: PSEUDOCODIGO Proceso suma 2 niimeros Definir a,b,c Como Entero Escribir ‘Ingrese dos nimeros enteros:' Leer a,b e<-atb Escribir ‘La suma es: ',c PinProceso En este capitulo usted encontrara: VvVVWYV Definicion y forma general Estructuras basicas o La secuenciacién: asignacién, lectura, escritura ° La seleccién: si-entonces, segin o La repeticién: mientras, repetir-hasta, para Estructuras de control anidadas Misceldnea de ejercicios Observaciones del capitulo Ejercicios propuestos 4. Algoritmos: Pseudocddigo 4.1 Definicién y forma general Segiin Farral (2013), el pseudocddigo es una representaci6n en inglés 0 espaiiol de los pasos ldgicos 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 cédigo falso 0 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 légica de programacién, La forma general de un algoritmo en pseudocédigo es: Proceso 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 0 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 nimeros 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 Lain Leer Leer } 6 Jin Gare S Fundamentos de Programacién wsando PSelnt s de Secuenciacion 4.2.2 Ejerci 4.2.2.1 Realizar un algoritmo para calcular la suma de dos niimeros enteros leidos por teclado Entrada: dos niimeros Salida: un niimero (suma) Proceso: sumar los dos niimeros enteros usando el operador algebraico (+) Proceso suma_2_ntimeros 2 Definir a,b,c Como Entero 3 Escribir 'Ingrese dos mimeros enteros:' 4 Leer a,b 5 o<-ath € 7 Eeeribir ‘La suma es: ',c 7 PinProceso 12 *** Ejecucién Finalizada. *** 4.2.2.2 Realizar un algoritmo para convertir de grados Celsius (C) ingresados por teclado a Fahrenheit (F). Entrada: un nimero real (Celsius) Salida: un nimero real (Fahrenheit) Proceso: convertir usando la formula: F = 2C +32 Proceso celsius_fahrenheit Definir C,F Como Real Eseribir 'Ingrese los grados Celsius: ' Leer ¢ F<-(9/5) #C+32 Esoribir ‘Grados en Fahrenheit: ',F FinProceso a xin Garcia 8 undamentos de Programacton usando PSelnt *** Bjecucién Iniciada. *** Ingrese los grados Celsius: De Otro Nodo: | Becuencia de ecciones domi = Sepin | Fin Segun 4.2.4 Ejercicios de Seleccién 4.2.4.1 Realizar un algoritmo para calcular ef mayor de dos nimeros enteros leidos por teclado Entrada: dos nimeros Salida: un nimero (mayor) Proceso: calcular el mayor de los nimeros usando una seleccién y el operador relacional, 63 Iidn Garcia. Fandamenos de Programacion usando PStnt Proceso mayor_2_nimeros Definir ni,n2 Como Entero Eseribir 'Ingrese 2 nimeros:' Leer ni,n2 Escripir ‘El mayor es: * © ‘Si ipa? Rntonces 7 Escribir nt 2 Size s | Becesbir nz 4.2.4.2 Realizar un algoritmo que lea por teclado tres niimeros ¢ imprima ‘iguales? si 1a suma de dos cualquiera de ellos es igual al otro nimero, de lo contrario, imprima ‘desiguales. Entrada: tres nimeros Salida: iguales/desiguales Proceso: Determinar en base a la suma de dos mimeros 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 (ni#n2)=n3 0 (ni¢n3yen2 0 (n2+n3)=n Entonces | Bscribir ‘iguales* ‘sino | Recribir ‘desiguaies' Finsi FinProceso ° 64 vin Garcia S. ‘Fundamenos de Programacton wsando PSetnt *#* Bjecucién Iniciada. *** Ingrese tres nimeros 4.2.4.3 Realizar un algoritmo para ingresar por teclado el niimero del dia laborable de la semana ¢ imprimir su nombre Entrada’ un nimero (1-5) Salida: cadena de caracteres (nombre del dia) Proceso: Determinar el nombre del dia laborable utilizando la estructura ‘segtin” 1 Proceso dia_semana Definir n Como Entero Escribir ‘Ingrese el niimero del dia (1-5):' Leer a Segun n Hacer Escribir ‘Lunes* Escribir ‘Martes' Escribir 'Miércoles Eseribir ‘Jueves Eseripir ‘Viernes’ De Otro Modo: | EBseribir 'Fuera de rango’ 6s Isdin Garcia 8. Fundamentos de Programaciin usando PSeint 4.2.4.4 Realizar un algoritmo para determinar si un cardcter 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_conscnante definir ¢ Como Caracter Escribir "Ingrese un carécter (sin tilde) :" Leer © e<-Minusculas(e) Segua ¢ Hacer | otety tht, tote || ‘sseripir *vocai =| Be otro Modo: | 6 | Escribir *consonante™ Pin Segan FinProceso 4.2.5 La Repeticién mientras Gxpzesion logical Hacer | Ss Fin Mientras | Para fariable numerical Hasta con Paso pasd Hacer l vin Para 66 In Garcia s. Fandamentos de Programacisn usando PSelnt 4.2.6 Ejereicios de Repeticién 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 nimero Salida: un némero (factorial) Proceso: calcular el factorial del mimero (usando multiplicaciones sucesivas del 1 hasta el nimero, 1 Proceso calcular factorial 2 Definir n,fac Como Entero Escribir ‘Ingresar un ntmero:' Leer n fac<-1 E 2 é & g 8 fac<-factn né-n-1 FinMientras Eseribir ‘£1 factorial es: ',fac FinProceso \-** Ejecucién Iniciada. *** Ingresar un numero: ||> 0 fea factorial es: 1 |*"* Bjecucién Finalizada. *** Mientras") a través de 4.2.6.2 Realizar un algoritme para calcular el factorial de un nimero entero positive ingresado por teclado (usando la estructura ‘Repetir-hasta’) Entrada: un niimero Salida: un nimero (factorial) Proceso: calcular ¢l factorial del numero (usando ‘repetir-hasia”) a través de multiplicaciones sucesivas del 1 hasta el numero. 7 In Garcia 8 ‘Pundamentos de Programactin usando PSeint Proceso factorial Definir cont,n,fac Como Entero cont<-1 fac<-1 Escribir 'Ingrese un ntmero:' Leer n | fac<-factcont | cont<-cont+l Hasta Que cont>n 1 Esoribir 'El factorial es 12 PinProceso www Ejecucién Iniciada. Ingrese un nimero: > 2 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 numero (factorial) Proceso: calcular el factorial del nimero (usando ‘Para’) a través de multiplicaciones sucesivas del 1 hasta cl numero. 1 Proceso factorial 2 Definir n,fac,i Como Entero 3 Escribir 'Ingresar un nimero' & Leer n 5 fac<-1 é Para i<-1 Hasta n Hacer 7 | fac<-facei e FinPara 9 Escribir 'El factorial es: ',fac 10 FinProceso 68 Tin Garcia 8 Fundamentos de Programacion usando PSelnt +44 Ejecucién Iniciada. Ingresar un numero > 7 Nétese que el incremento en el bucle es de uno (por defecto). 4.2.6.4 Realizar un algoritmo para determinar si una palabra ingresada por teclado es Palindromo. Entrada: palabra Salida: Si/No Proceso: Determinar si ¢s palindromo, es decir, si se lee igual de izquierda a derecha y viceversa, ejemplo: radar, oso, reconocer, somos, sometemos. Se debe invertir Ja palabra usando un bucle y comparar con Ia 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,i)) FinPara Si s=s1 Entonces | Bseribir ‘Es Palindromo' sino | Escribir ‘No es Palindromo' PinSi FinProceso 4s Ejecucién Iniciada. Ingrese una palabra: > hola INo es Palindromo “** Ejecucién Finalizada. *+* 69 Inn Garcia 8. Fundamentos de Programacion usando PSeInt 4.2.6.5 Realizar un algoritmo para eliminar los espacios en blanco ubicados a la izquierda (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 subeadena a partir del contador obtenido hasta el final usando la funcién incorporada de PSelnt. 1 Proceso left_trim 2 definir = Como Caracter 3 definir i Como Entero ¢ + Bsoribir "Ingrese una palabra:" 5 Leer s é i<-1 7 Mientras SubCadena(s,i,i) =" " Hacer facie Fin Mientras 2 <- SubCadena(s,i,Longitud(s)) Escribir 5 PinProceso 2 Ingrese una palabra: > hola ecuador hola ecuador +44 Ejecucién Finalizada. “++ 4.3 Estructuras de control anidadas ‘Como se indieé en el capitulo anterior, las estructuras de seleceién y repeticion pueden anidarse, es decir, poner una dentro de otra. Estas pueden ser del mismo tipo o una mezela de ellas. A continuacién se muestran en pseudocddigo algunos de los ejercicios realizados anteriormente con diagramas de flujo. 70 in Garcia. Fandamentos de Programecién usando PSelnt 4.4 Ejercicios de estructuras de control anidadas 4.4.1 Realicar un algoritmo para ingresar por teclado tres nimeros e imprimir el mayor de ellos Entrada: tres niameros Salida: un numero (mayor) Proceso: Calcular el mayor de los niimeros utilizando la estructura compuesta y simple anidada. 1 3 4 5 6 Proceso mayor 3 numeros Definir a,b,c Como Entero Escribir 'Ingrese 3 nimeros:' Leer a,b,c Escribir 'El mayor es: ' Si a>b ¥ apc Entonces | Bseribir a Sino Si b>c Entonces | gseribir b Sino | Eseribir c FinSi **4 Ejecucién Iniciada. *** Ingrese 3 nimeros: n Ibn Garcia S. ‘Fundamentos de Programacion usando PSeint 4.4.2 Realizar un algoritmo para ingresar n nimeros leidos por teclado e imprima la mutltiplicacién de los nimeros impares y la suma de los nimeros pares, Entrada: cantidad y lista de nimeros Salida: dos nimeros (la multiplicacién y la suma) Proceso: Calcular la multiplicacién de los nimeros impares y la suma de los pares utilizando un bucle y el operador MOD para discriminar entre par ¢ impar. Proceso pares_impares Definir n,p,i,cont,num Como Entero Escribir ‘Ingrese la cantidad de nimeros:' Leer 2 Escribir ‘Ingrese los nimeros:' p< - i<-h Para cont<-1 Hasta n Hacer | Leer num Si num MOD 2=0 Entonces i p<-penum Sino | 4<-tenem i¢ Finsi 15 FinPara 16 Escribir ‘La mutiplicacién de los impares es: 17 Escribir 'La suma de los pares es: ',D 18 FinProceso *“** Ejecucién Iniciada. *** Inmgrese la cantidad de nameros: >4 Ingrese los nimeros: n Inin Garcia S. Fundamentos de Programacion usando PSeint 4.4.3 Realizar un algoritmo para ingresar dos niimeros enteros por teclado ¢ imprimir el maximo comiin divisor (MCD). Entrada: dos nimeros enteros Salida: un nimero (MCD) Proceso: calcular ¢l 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 5 Mientras a<>b Hacer 6 - Si a>b Entonces 7 | a<-a-b 8 i Sino 9 i; [| pe-ba 10 ' FinSi 11 PinMientras i2 Escribir 'El MCD es: ',a i3 FinProceso 1 “ew Bjecucién Finalizada. *** B Inin Garcia S. Fundamentos de Programacion usando PSelnt 4.4.4 Realizar un algoritmo para calcular ¢ imprimir los nitmeros narcisistas de tres cifras. Entrada: ninguna Salida: lista de nimeros narcisistas Proceso: calcular los nuimeros narcisistas de tres cifras (del 100 al 999). Un mimero ista es aguel que es igual a la suma de cada uno de sus digitos elevados a la ‘n' potencia (donde ‘n’ es el mimero de cifras del nimero). Separar cada digito del nimero, elevar al cubo y sumar, Comparar la suma con el namero. naré Proceso nimeros_narcisistas definir n, num, di, d2, a3 Como Entero Para num<-153 Hasta 999 Con Paso 1 Hacer | ai<-num/i00 | n<-num mod 100 | d2<-n/i0 | d3<-n mod 10 8 | nc- ais + a243 + a3ts | i I i Si n=num Entonces Escribir num Fin Si Fin Para FinProceso “** Ejecucién Finalizada. *** Otra forma de resolver el mismo ejercicio usando las funciones incorporadas de cadena de caracteres de PSeInt es la siguiente: 4 E Fundamentes Garcia ‘Programacton usando PSetnt Proceso nimeros_narcisist: definir n, num, di, d2, d3 Como Entero definir s Como Caracter Para num<-100 Hasta 999 Con Paso 1 Hacer s<-ConvertirATexto (num) di<-ConvertirANumero (SubCadena(s,2,1)) d2<-ConvertirANumero (SubCadena(s,2,2)) d3<-ConvertirANumero (SubCadena(s,3,3)) n<- di*3 + d2*5 + G34 Si nenum Entonces | Escribir num Fin st Fin Para FinProceso 4.5 Miscelanea de ejercicios 4.5.1 Realizar un algoritmo para caleular la potencia dado dos mimeros ingresados por teclado (base y exponente). No utilice el operador algebraico potencia (*) de PSelnt. Entrada: dos nimeros enteros (base y exponente) Salida: un ntimero (Ia potencia) Proceso: calcular la potencia utilizando multiplicaciones sucesivas en un bucle Proceso potenciacién definir b,e,r Como Entero Escribir "Ingrese le base y ©] exponente:” Leer b,e ei 6 Mientras e>) Hacer 7 perth escent FinMientras Escribir “La potenciacién es: ",r PinProceso lua potenciacién es: 8 +4 Bjecucién Finalizada. in Garcia S. Fundamenios de Programacion wando Pn 4.3.2 Realizar un algoritmo para determinar si un niimero ingresado por teclado es primo. Entrada: un ntimero entero >1 Salida: Si/No Proceso: determinar si es primo o no. Un numero primo es un néimero natural mayor que uno y que tiene tinicamente dos divisores distintos, €l mismo miimero y la unidad. Se utiliza en operador matematico MOD para comprobar la divisibilidad de un namero. Se utiliza un bucle que va desde 2 hasta la raiz cuadrada del nimero. Proceso niimero_primc definir n,i como entero definir num como logico Escribir “Ingrese un niimero > 1:* Leer n num<-Verdadero 4<-2 Mientras i 1: 76 vin Garcia S. ‘Fundamentos de Programacion usando PSetnt 4.5.3 Realizar un algoritmo para determinar si un aio ingresado por teclado es bisiesto. Entrada: un nimero (afio) Salida: S/No Proceso: determinar si es bisiesio o no. El aiio bisiesto tiene 366 dias, siendo el 29 de febrero el dia extra. Un aio es bisiesto si es divisible entre cuatro, exceptuando los filtimos afios de cada siglo ~divisibles entre 100-, siempre y cuando no sean divisibles entre 400. 1 Proceso bisiesto definir afic Como Entero 3 -Reartbir "Ingrese el afo: 4 Leer afic 5 = $1 afio mod ¢ =0 Y¥ (afio mod 100<>0 0 afio mod 400=0) Entonces 6 | Reorthir "Es bisiesto" 7 Sino | Beorsbir "NO es bisiesto® Fin si 0 FinProceso 4+ Ejecucién Iniciada. Ingrese el afio: > 2012 Es bisiesto e+ Bjecucién Finalizada. *** Observe cn la linea #5, se utiliza condiciones compuestas y los paréntesis para indicar su cia. 4.5.4 Realizar un algoritmo para determinar si un ntimero ingresado por teclado es perfecto. Entrada: un nimero entero Salida: Si/No Proceso: determinar si es perfecto o no. Un niimero es perfecto cuando la suma de sus divisores positivos, sin incluirse, da el mismo nimero. El 6 es perfecto porque 1 +2+3=6. Otro perfecto es el 28. 7 in Garcia Fundamentos de Programacion usando PSeint Proceso nimero perfecto definir , 4, sum como entero Escribir "Ingrese un nimero entero: Leer 8 sum <-0 Para i<-i Hasta 1 Con Paso i Hacer | si © mod 4 = 0 Bntonces |b sme suet | Pinsi Fin Para Si eum = N Entonces | amprimir “Es perfecto” Sino | tmpesaar “wo ies! pextecto* Fin si FinProceso 4.5.5 Realizar un algoritmo para resolver la ecuacién de segundo grado, ingresando por teclado los coeficientes a, by ¢. Entrada: tres numeros enteros (coeficientes) Salida: dos nameros (x1 y x2) Proceso: calcular las raices de la ecuacién a través de la siguiente ecuacion: ax*+bx +c=0 ba 2a x 78 vin Garcia 8 Fundamenos de Programacion wando PSelnt Proceso ec_200_grado definir a,b,c Como Entero definir d, x1, x2 Como Real Escribir "Ingrese los coeficientes a,b,c: " Leer a,b,c 6 d<- (p82) -¢earc 7 Si d<0 Entonces | Eseripir "No tiene soluciones reales" Sino xi<-(-b + ro(d))/(24a) x2¢-(-b ~ re(d)) /(24a) Escribir “Las raices son: ", x1, "y ", x2 13 Fin si no 1 4.5.6 Realizar un algoritmo para calcular e imprimir los n términos de la sucesion Fibonacci Entrada: un numero entero Salida: n términos de la sucesi6n Proceso: Calcular la sucesién Fibonacci. En esta sucesion los dos primeros nimeros son uno y para cl resto, cada clemento es la suma de los dos anteriores. Los primeros nameros de la serie son: 1, 1, 2, 3, 5, 8, 13, 21, ... Proceso Fibonacci definir a,b,c,n,i Como Entero Escribir “Cuantos nimeros de 1a sucesién desea mostrar:” 4 Leer n act be-0 7 eet Para i<-1 Hasta n Con Paso 1 Hacer cc-atb ace pobse | mscripir c Fin Para PinProceso 9 In Garcia. Fundamenos de Programacton wando PSetnt Ejecucién Iniciada. *** lcuantes nimeros de la sucesién desea mostra: > Ss a a 2 a Is 4+ Ejecucién Pinalizeda. #4 4.5.7 Realizar un algoritmo para determinar si un punto P(x,y) esté dentro o fuera de un cireulo de centro C(x,y) y radio r ingresados por teclado. Entrada: centro C(x,y), 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. (x2 %)'+ (yo-ys)? Proceso punte_circule defimir cx, cy, =, px, py, d Como Real Escribir "Ingrese el Centro C(x,y): Leer cx, cy Eseripir "Ingrese el radio: " Leer 5 Escribir "Ingrese el Punto P(x,v! Leer px, PY dere ( (px-cx) “2+ (py-sy) *2) Si deer Entonces | Bscribir "El P(x,y) esté Dentro del circulo” ‘Sino | Bsoribir "El P(x,y) esta Fuera del circulo" Fin si PinProceso 4 5 6 80 vin Garcia Fundamentos de Programacion wsando PSelnt +** Ejecucién Iniciada. *** Ingrese el Centro C(x, y): *** Ejecucién Finalizada. *** 4.5.8 Realizar un algoritmo para calcular el salario neto semanal de un trabajador en funcién del niimero de horas trabajadas y la tasa de impuestos segtin las condiciones dadas. La tarifa y el impuesto aplican tinicamente a las horas extras, es decir, sobre las 40 horas/semana. #horas | Tarifa Tasa de impuesto <=40 [1 (veces) [0% 41-50 [15 3% >s0 [2 8% Entrada: # de horas/semana trabajadas y el costo/hora normal Salida: salario neto, impuesto Proceso: calcular el salario neto segiin la tabla indicada usando la estructura si-entonces sin Garcia. ‘Fundamenos de Programacion usando PSetnt Proceso cuota_préstamo Definir cuota,c,i Como Real Definir p Como Entero Escribir ‘Ingrese el capital (USD):' Leer ¢ Escribir 'Ingrese la tasa de interés (% anual):! Leer i Escribir 'Ingrese el plazo (afios): ' Leer p u i<-4/100/12 pe-pti2 * cuota<-ce (4/ (1-144) *(-P))) Guota<- trunc(cucta#i00) /100 Eseribir ‘La cuota mensual es: ',cuota 16 PinProceso +** Bjecucién Iniciada. +++ Ingrese el capital (USD): > 3000 Ingrese la tasa de interés (¥ anual): 45.10 Realizar un algoritmo para calcular a tabla de depreciacién de un bien mueble/inmueble ingresado por teclado. Entrada: valor actual y # de afios (vida atl) Salida: Tabla de depreciacién: afio, 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 # de anos depreciadion anual 3 sin Garcia 8. ‘Fandamentos de Programacién usando PSeint Proceso depreciacién definir va,afics,dep,dacum,saide Como Real definir 1 Como Entero Escribir "Ingrese el valor del mueble/inmueble en USD: Leer va Esoribir "Ingrese su vida Gtil en afos: Leer afios depe-(va-0.28va) /afios re la dacum<-9 Escripir "# | Dep. | Acum. | Saldo” Para i<-i Hasta afics Con Paso 1 Hacer 12 dacum<-dacumtdep 33 saldoc- va-dacum a4 Escribir i," |", dep, " | ", dacum, " | ", saldo as Fin Para 26 PinProceso “ss Ejecucién Iniciada. ‘Ingrese el valor del mueble/inmueble en USD; su vida atil en afios: Dep. | Acum. | Saldo 240 | 240 | 560 240 | 480 1 320 240 | 720 | 80 Ejecucién Finalizada. ‘++ 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 ntimero pensado por usted entre 1 y 1000. El algoritmo debe ir mostrando niimeros y usted respondera con los simbolos '=', >'0 '=!, segiin sea el nimero pensado menor, mayor o igual al mostrado en la pantalla. Cuando adivine deberd imprimir el mimero de preguntas que ha necesitado para adivinarlo, No debe realizar mas de 10 preguntas. 84 cin Garcia S. Fandamentos de Programacién usando PSeint Entrada: ‘<', ‘>’, Salida: Namero (preguntas realizadas) Proceso: Dividir el rango de nimeros en 2 y mostrar al usuario y segdn su respuesta, descartar Ia parte superior o inferior. Repetir el proceso (bucle) hasta adivinar el nimero. 1 Proceso adivinar_nimero 2 Definir i,f,p,N Como Entero 3 Definir A Como Caracter 4 Escribir "Piense un nimero entre 1 y 1000." s Escribir “Presione cualquier tecla para continuar™ 6 Esperar Tecla hace una pausa 7 4<-9 2 f£<-1000 9 = peo 10 Repetir n We- (4) /2 12 Escribir ‘El niimero pensado, que es para el as Escribir 'mayor(>), menor (<), igual(=);' u Leer A Si Ae'<' Entonces ‘ fe] 7 Sino 18 bop sem a9 Pinsi 2 P<-p+t 21 Hasta Que A='=" compara el 22 Escribir ‘Nimero de preguntas: ', p 23. FinProceso En este ejemplo se ha pensado el niimero 625 Piense un nimero entre 1 y 1000. Presione cualquier tecla para continuar Bl namero pensado, que es para el 500 yor (>), menor (<), igual (=); El némero pensado, que es para el 750 or (>), menor (<), igual ( . Iii Garcia S Fandamentos de Programacion usando PSelnt 4.5.12 Realizar un algoritmo para convertir un nimero decimal ingresado por teclado a binario. Entrada: niimero entero en decimal Salida: cadena de caracteres (niimero en binario) Proceso: Realizar divisiones sucesivas para 2 ¢ ir guardando cl residuo. Un nimero binario se representa utilizando solamente las cifras cero y uno. Proceso binaric 2 definir = Como Caracter definir n Como Entero Escribir "Ingrese el nimero decimal: * Leer n ‘ Mientras n>=2 Hacer 3 <- Concatenar(ConvertirATexto(n MOD 2),2) n<-n/2 Pin Mientras 3 <- Concatenar(ConvertirATexto(n) ,3) Escribir "En binario e: FinProceso > 25 len binario es: 11001 #** Ejecucién Pinalizada. * 4.5.13 Realizar un algoritmo para convertir un nimero decimal ingresado por teclado @ hexadecimal. Entrada: numero entero en decimal Salida: cadena de caracteres (nimero en hexadecimal) Proceso: Realizar divisiones sucesivas para 16 e ir guardando el residuo. Un nimero hexadecimal se representa utilizando los niimeros del 0-9 y las letras de la A-F. 86 Ian Garcia S Fandamentos de Programacién usando PSelnt 1 Proceso hexadecimal 2 definir 2, i Como Entero definir hex, dig hex Como Caracter 4 Gig hex = "0123456789ABCDEF* 5 Escribir "Ingrese un nimero entero positivo:” 6 Leer hex<-"" 2 8 Repetir ic- n mod 16 +2 hex <- Concatenar(SubCadena (dig _hex,i,i), hex) mn < trunc(n/i6) Hasta Que n= Escribir "En hexadecimal es: ", hex FinProceso “** Bjecucién Iniciada. *** Ingrese un nimero entero positivo: 4.6 Observaciones del capitulo - Los algoritmos se vuelven mas legibles cuando el pseudocédigo esté formateado, es decir, se utiliza indentado (meni ‘Editar’, opcién ‘corregir indentado’). ~ El pseudocédigo es mucho més potente y compacto que los diagramas de flujo, asi como mas 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 mas cficiente o mas legible. - El pseudocédigo permite incorporar ‘comentarios’ para dar una explicacion 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 triangulo cualesquiera e imprima su area y ~ el tipo de triangulo (equilatero, issceles, escaleno). 7 vin Garcia S. Fundamenos de Programacton wsando PSelnt A= VPP -9 (P-5) (p-c) Formula de Herén 4.7.2 Leer por teclado el dia y mes de nacimiento de una persona ¢ imprima su signo zodiacal. 4.73 Eliminar los espacios ubicados a la derecha de una palabra ingresada por teclado. 4.74 Leer por teclado una frase de texto ¢ imprimir la cantidad de vocales que existen por cada una y en total. Considere las tildes, mayiisculas y minésculas. 4.7.5 Ingresar por teclado una frase e imprima el nimero de palabras que existe en el texto. Considere que puede haber varios espacios al inicio, entre o fin de las palabras. 4.7.6 Caleular la frecuencia de aparicion de una palabra o patron dentro de una frase ingresados por teclado (frase y patron). 4.7.7 Ingresar por teclado una fecha cualquiera e imprima la fecha del dia siguiente. Considérese los afios bisiestos. 4.7.8 Ingresar por teclado una frase y ponga en maytisculas 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 (la que busca y la que reemplaza). 4.7.10 Convertir un miimero binario a decimal 4.7.11 Convertir un nimero hexadecimal a decimal 4.7.12 Determinar si un punto P(x,y) esté dentro o fuera de un triangulo. Ingrese por teclado el punto y los tres vertices. 88 sin Garcia S Fundamentos de Programacion usando PSeInt ak nok CAPITULO V DISENO MODULAR (DESCENDENTE O TOP DOWN) n i Fahrenheir a mostrar menti Kelvin En este capitulo usted encontrara: Procesos/Subprocesos Ejercicios de modularidad Variables locales y globales Paso de Pardmetros: por valor y por referencia Ejercicios de paso de parametros VVVVVV Ejercicios propuestos 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 mis sencillos que abordan una tarea especifica a la vez. Para esto se puede erear varios subprocesos 0 métodos (funciones/procedimientos) en el algoritmo utilizando el comando ‘subproceso ', cuya sintaxis es la siguiente: SD surprocese SubProceso frariable de _retorno| <- 3 (Fas aeprosees jl © Proceso Bin Eieuid asians Segin Lépez (2011), un subproceso puede ser llamado o invocado desde un proceso principal 0 desde otro subproceso cuando se requiera, Los subprocesos son tiles cuando: © Existe una tarea especifica que debe ejecutarse en mas de una ocasién (reutilizacion). 1 Cuando un problema es complejo o extenso. Si el subproceso no retorna 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 retoma un valor se conoce como funcién. Si el subproceso no recibe ningiin 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 pardmetros 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 parimetros: 90 nin Garcia. Fundamentos de Programacion usando PSatnt CO A.un subproceso le pasamos argumentos 0 El subproceso recibe parémetros. En Lépez (2011), se le lama 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 estén completas, el control regresa al punto desde el que se llamé en el programa principal u otro subproceso. Los argumentos de un subproceso serdn definidos en el proceso que realice la llamada, y por lo tanto, el subproceso los recibiré 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 lama al subproceso coincidan con los nombres de las variables (pardmetros) definidos en el subproceso. Segin Farrell (2013), algunas ventajas de la modularizaci6n son: - Abstraceién.- Es el proceso de poner atencién en las propiedades importantes mientras se ignoran los detalles no esenciales. Permite ver todo el panorama. - Reutilizacién.- Los subprocesos pueden usarse més de una vez en el mismo programa o en otros. - Trabajo en paralelo.- Al dividir una tarea o problema grande en médulos, se puede con més facilidad asignar las subtareas entre varias personas. A continuacién presentamos algunos algoritmos en pseudocédigo 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 nitmeros leidos por teelado Entrada: dos numeros enteros Salida: Namero entero (mom) Proceso: calcular el mem utilizando la formula: mcm(a,b)= El MCD es MCD ab) el maximo comin divisor realizado anteriormente. 9 vin Garcia S. Fundomentor de Programacisn usando PSelnt definir ret como entero Mientras ac>b Hacer Si a>b Entonces | as-e-b Sino bo beb-a FinSi 10 FinMientras 11 ret<-a 12 Fin SubProceso 14 od 15 Proceso mom 16 definir a,b,c Como Entero Escribir “Ingrese 2 nimeros enteros: " 8 Leer a,b 13 c<-MCD (a,b) 2 al subp: 20 Escribir "El mom es: ", (atb)/c 21 FinProceso El subproceso MCD es una funcién porque retoma un valor. 92 vin Garcia. Fundamentos de Programacion usando PSednt 5.2.2 Realizar un algoritmo para redondear un nimero real ingresado por teclado a dos decimales. Entrada: un namero real Salida: Numero real (redondeado a 2 decimales) Proceso: utilizar la funcion REDON y multiplicar por cien y dividir por 100. SubProceso ret <- round (n ) definir ret Como Real xet <~ REDON(n#*100) /100 Fin SubProceso Proceso redondear ~ definir r, n Como Real Rscribir "Ingrese un nimero real:" Leer 2 x <- round(n) invoca a Escribir r; 14 FinProceso #** Ejecucién Iniciada. Ingrese un nimero real: ||>_ 578.3572 |578.36 *** Ejecucién Finalizada. +++ Al momento PSeInt no cuenta con una funcién incorporada que redondee a n-decimales. $.2.3 Hacer un algoritmo que dados el dia, mes y afto, catcule cual es el siguiente dia. ‘Se debe considerar los afos bisiestos. Entrada: tres enteros (dia, mes y afio) Salida: dia, mes y aio (siguiente dia) Proceso: Calcular el dia siguiente. Se utiliza el método desarrollado anteriormente para determinar si un aiio es bisiesto y una estructura ‘seguin’ para determinar los dias de cada mes. 93 in Garcia S Fundamentes de Programacién usando PSelut a ifice si el pardmetro afo es 2 SubProceso ret <- esBisiesto ( afc) 3 definir et como logic 4 Si afio mod 4 =0 ¥ (afio mod 100<>0 © afic mod 400=0) Entonces 5 | zer < verdadero é Sino 7 | ree < Palso ® Fin si Fin SubProceso todo principal Proceso dia siguiente Definir d,m,a,dias Como Entero Escribir ‘Ingrese el dia, mes y afc: * Leer 4, m, a segun = hacer 1,3,5,7,8,10,12: dias<-3i | 4,6,8,i2: dias<-30 20 diasc-22 2 si esBisiesto(a) entonces 22 | aiasc-aiase: 23 Finsi 24 Finsegan 28 ded 26 4 d> dies entonces 27 act primer dia del nes 28 emt 29 Finsi 30 si > 12 entonces 31 mot primer mes 32 acest 33 Finsi 34 Eacribir ‘Fl dia siguiente es: * 35 Escribir d,'/ +* Ejecucién Finalizada. *** 4 Ivin Garcia S Fandementos de Programacion wando Pint 5.2.4 Realizar un algoritmo para catcular el vator de S, ingresando por teclado los valores dex yn. Entrada: dos enteros (x y n) Salida: ntimero real (S) Proceso: Caleular el valor de S. Se utiliza el método desarrollado anteriormente para calcular el factorial de un numero. Se hace uso de un bucle desde 1 hasta n para Jas sumas. factorial del par SubProceso ret <- factorial (n) Definir ret,fac,i Como Entero face Para i<-i Hasta n Hacer face-facts PinPara retc-fac Fin SupProceso Proceso serie Derinir x, n, 4 Como Entero definir S Como Real a5 Escribir 'Ingresar el valor entero de X y Ni * 36 Leer x, 2 1 <0 38 Para ic-i Hasta n Hacer a9 fs <- 5 + wta/tactorial(s) 2 FinPai Eseribir 'La serie es: ',5 95 dn Garcia 8 Fundamentos de Programacién usando PSelnt 5.2.5 Calcular e imprimir la tabla de amortizacién para un préstamo bancario utilizando el sistema de amorticacié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 #mes | cuota 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 incrementa y el interés disminuye en el tiempo. i 1 -(1+i)? Siendo c el capital prestado, i la tasa de interés mensual y p el niimero de cuotas (# meses). cuota mensual = c* definir ret Como Real ret <- REDON(n#100)/100 Pin SubProceso on one 96 Iivin Garcia S. ‘Pandamentos de Programeciin usando PStint definir tiempo, i Como Entero definir cuota, tasa, deuda, int, cap como real ESCRIBIR "TABLA DE AMORTIZACION CON EL METODO FRANCES" Escribir “Ingrese ¢1 valor del préstamo (USD):" leer deuda escribir "Ingrese el nimero de cuctas (meses): 1s leer tiempo escribir "Ingrese 1a tasa de interes anual (en §):" leer t4 rasa <- tasa/100/12 // > nsual cucta <- deudat(tasa/(i-(i+tasa)*(-tiempe))) escribir "N* ","CUOTA ","CAPITAL *,"INIERES * Para i<-i Hasta tiempo Con Paso 1 Hacer int<-tasatdeuda interés pagado apital pags u do é escribir i," ", round(eucta)," ", round(cap) Sin Saltar escribir" ", round(int),” ", round (deuda) Pin Para FinProceso CUOTA CAPITAL 523.59 483.59 40 2516.41 523.59 490.04 33.55 2026.37 523.59 496.57 27.02 1529.8 523.59 503.19 20.4 1026.6 523.59 509.9 13.69 516.7 523.59 516.7 6.89 0 +++ Ejecucién Finalizada. +++ 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 amortizacién, ” Isin Garcia 8. ‘Fundamentos de Programacton usando PSeint 5.2.6 Realizar un algoritmo para calcutar el érea de la circunferencia circunscrita a un tridngulo rectangulo cuyos vértices son ingresados por teclado. Entrada: tres vertices Salida: dos niimeros (radio y area) Proceso: Calcular el circuncentro, el radio y el rea. El Circuncentro de un triingulo rectingulo ¢s cl 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=VCR-% P+ Ori? SubProceso ret <- mayorTresNumeros ( a,b,c ) = definir ret Como Real Si a>b Y adc Entonces [rete Si boc Entonces | rete b Sino | rere c rinst Definir xi, yi, x2, y2, x3, y3 Como Entero definir AB,BC,AC,h,r como real escribir "Ingrese el vértice A(xi,y1)" leer xi,yl escribir “Ingrese el vértice B(x2,y2)" leer x2,y2 escribir “Ingrese el vértice C(x3,¥3)" leer x3,y3 BB<-rc( (x1-x2) “24 (y-y2)*2) € BC<-re { (22-23) 924 (y2-y3)72) AC<-re( (x13) “24 (yt-y3)*2) h<- mayorTresNumeros (AB, BC, AC) re-h/z radio Escribir "El radio es: ",r Escribir “El area es: ", (PI*r*2) FinProceso 30 3 98 Iii Garcia . Fandamentos de Programaciin usando PSelnt ¥#4 Bjecucién Iniciada. **# Ingrese el vértice A(x1,y1) > -3 > 4 Ingrese el vértice B(x2,y2) JE. area es: 78.5398163357 “#4 Bjecucién Finalizada. *** Aqui se hace uso de la constante P] incorporada en PSelnt. 5.3 Variables locales y globales Las variables son locales 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 dard 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 parmetros por valor y referencia En la definieié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 excepcidn 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 utiliz6 en Ia invocacién o llamada, es decir, se opera sobre Ia variable original (trabajan en el mismo espacio de memoria). E/ paso por Valor implica que si en el subproceso se modifica el contenido del argumento, este no se vera reflejado en la variable que se utilizé en la invocacién, es decir, se opera sobre una copia de la variable (diferente espacio de memoria). 5.4.1 Ejereicios de paso de parametros 5.4.1.1 Por valor (por defecto) 99 sin Garcia. Fundamentos de Programacion usando PSdnt Entrada: un numero entero Salida: Namero entero Proceso: incrementar en una unidad la variable usando paso de pardmetro por valor SubProceso incrementar ( 2 Por Valor) ne-net Fin SubProceso Proceso paso_pardémetros definir a Como Entero a<-5 ancrementar(a) invoca al > Bscribir a FinProceso *** Ejecucién Iniciade. “** Is #** 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 nimero entero Salida: Niamero entero Proceso: incrementar en una unidad la variable usando paso de parémetro por referencia 100 Jvdn Garcia S. Fandamentos de Programacién usando PSelnt SubProceso incrementar ( n Por Referencia) ne-n+1 Fin SubProceso Proceso paso_parémetros definir & Como Entero acs ancrementar (a) nvoca Escribir a FinProceso 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 proximos 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 namero 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 mimeo de dias que faltan del afio, 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. 101 vin Garcia S. Fundamentos de Programacisn wando PSdnt 5.5.6 Calcular el valor de T, ingresando por teclado los valores de x y n. oh vast asl s Ta 1 tye te 3! St 7! pl 5.5.7 Convertir la temperatura de grados Fahrenheit ingresada por teclado a Kelvin y viceversa. 5.5.8 Intercambiar los valores de dos variables numéricas ingresadas por teclado, utilizando un subproceso y el paso de parametros por referencia. 5.5.9 Calcular el area de la circunferencia circunscrita a un triéngulo cualquiera (recténgulo, acutingulo u obtuséngulo) cuyos vértices A, B, C son ingresados por teclado. —s Sugerencia: puede usar la formula: abe R 4(A;) Donde: Ar escl area del triangulo; a, 5, c son los lados del tridngulo; y R el radio de la cireunferencia circunscrita al tridngulo. El area del triéngulo puede calcularse usando la formula de Herén: p= SF (Gemiperimetro) \ p(p-a) (p-b) (p-c) Los lados del triangulo (a, b, c) se pueden calcular con la formula de la distancia: d= (x,-x, + (y-¥ 102 vin Garcia Fundomanion de Programacion usando PSelnt 5.5.10 Calcular el Area de la circunferencia inscrita a un tridngulo cualquiera (rectingulo, acutingulo u obtusingulo) cuyos vértices A, B, C son ingresados por teclado, ‘Sugerencia: puede usar la formula: . A,=1p Donde: Az esel rea del triingulo; r el radio de la circunferencia inscrita al trifngulo y pel semiperimetro del triéngulo. 103 vin Garcia S. Fundamentos de Programacion wando PSelnt

También podría gustarte