0 calificaciones0% encontró este documento útil (0 votos) 1K vistas152 páginasFundamentos de Programación Usando PSeInt
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
BaieFundamentos 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 - EcuadorPROLOGO
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 PSelnt7
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 PSelntAGRADECIMIENTO
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 PSelntDEDICATORIA
‘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 PSelntTabla 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 PSednt3.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 PSelnt4.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 PSeint8.10 Exportacion a C#...
8.11 Ejercicios propuestos
Glosari
Bibliografia ...
viii
vin Garcia.
Fundamentos de Programacion wsando PSelnt
148
~xCAPITULO 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 propuestas1. 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 PSelntEn 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 PSelntFigura 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 PSeInt1.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 PSelnta 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 PSelnt1.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 PSeIntEn 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 PSelntprogramacié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 PSelnt1.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 PSelntCAPITULO 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 propuestasYew 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 PSetntO 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 PSelntPolité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 PSelntAsignacion/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 PSelntLuego 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 PSeIntAdemé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 PSelntConvertira 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 PSelntEn 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 PSelntPara 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 PSeInt3.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 PSelnt3.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 PSeInLos 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 PSelntAsignacié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 PSelntjla 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 PSelntNota: 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 PSelntProceso 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 PSelnt3.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 PSelnt3.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 PSelntEl 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 PSelntProceso 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 PSelntObserve 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 PSelntele
+** 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 PSelntjua 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 PSelntIDefinir 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 PSelnt3.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 PSelntObserve 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 PSelntDefinir 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 PSelnt3.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 PSelntlitros 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 PSelntCAPITULO 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
VVVV4, 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 PSelnt4.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 PSelntProceso 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 PSelnt4.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 PSeInt4.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 PSeint4.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 PSelntProceso 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 PSelnt4.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 PSelnt4.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 PSeInt4.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 PSelnt4.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 PSelnt4.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 PSelntProceso 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 PSelnt4.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 PSeint45.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 PSelnt1 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 PSelntProceso 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 PSelnt4.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 PSelnt2 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 PSeIntProceso 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 PSetnEntrada: *<", >", *="
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 PSeInt4.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 PSelntA= 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
VVVVVVYV5. 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 PSelnt1 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 PSelntdefinir 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 PSeInt5.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 PSelnt1 // 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 PSelnt5.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 PSelnt5.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 PSelntdefinir 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 PSelnt5.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 PSeIntve* 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 PSelntEntrada; 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 PSelntSubProceso 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
Pyc Mod3
Aún no hay calificaciones
Pyc Mod3
32 páginas