0% encontró este documento útil (0 votos)
248 vistas

Manual PSeInt

Este documento proporciona una introducción al programa PSeInt, un intérprete de pseudocódigo de código abierto. Explica cómo instalar PSeInt, escribir el primer programa, declarar variables, usar operadores y estructuras de control, y visualizar diagramas de flujo. También cubre temas como tipos de datos, concatenación de texto, y la sintaxis estricta requerida.
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 DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
248 vistas

Manual PSeInt

Este documento proporciona una introducción al programa PSeInt, un intérprete de pseudocódigo de código abierto. Explica cómo instalar PSeInt, escribir el primer programa, declarar variables, usar operadores y estructuras de control, y visualizar diagramas de flujo. También cubre temas como tipos de datos, concatenación de texto, y la sintaxis estricta requerida.
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 DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 77

Programacin con PSeInt

Programacin en:
PSeInt
Por Lic. Rommel Castillo Suazo
Original para LPP
Implementado en PSeInt por
Alejandro Caro
Pg. 1
Programacin con PSeInt
ndice
Tema Pg.
Qu es PSeInt? 3
Instalacin 4
Mi primer programa
!iagramas de "lu#o $%
& 'ditor de diagramas de "lu#o
!eclarar (aria)le $*
+peradores $3
,signaciones - +peraciones matemticas en un programa. $4
Instrucciones .ondicionales
Si $/
Si anidado $0
Segun *%
+perador 1
**
+perador 2
*4
Instrucciones de ciclo
.iclo Mientras */
.iclo Para 3*
o .iclos ,nidados 3*
o .iclo Para negati(o 34
.iclo 3epetir
34
Su)Procesos 4%
Parmetros de entrada o (alor
Parmetros de (aria)le
Su)Procesos con retorno 4/
!imensiones
!imension de una !imensin %
!imensiones 5idimensionales 4
3egistros (Informacin terica) 6
& !imensiones con registros /$
,rc7i(os de te8to (Informacin terica) /*
Pg. 2
Programacin con PSeInt
,ne8o9
'ditor de diagramas de "lu#o
5orrar PSeInt
'ditar cdigo "uente
Pg. 3
Programacin con PSeInt
Qu es PSeInt?
PSeInt: es la a)re(iatura de Pseudocode Interpreter: Intrprete de
Pseudocdigo. 'ste programa "ue creado como pro-ecto "inal para la materia
Programacin I de la carrera Ingeniera en Informtica de la ;acultad de
Ingenier<a - .iencias =<dricas de la >ni(ersidad ?acional del @itoral: del en
aAuel momento estudiante Pa)lo ?o(ara.
'l programa utiliBa pseudocdigo: un lengua#e de programacin "icticio cu-a
principal misin es Aue el programador pueda centrarse en los aspectos lgicos
de la programacin: de#ando el apartado tcnico para cuando se (ea la sinta8is
de un lengua#e de programacin (erdadero.
PSeInt inclu-e en su editor di(ersas 7erramientas para Aue podamos crear -
almacenar programas en este peculiar lengua#e: e#ecutarlos directamente desde
su inter"aB: o incluso corregir posi)les de"ectos Aue encontremos en su
desarrollo.
Se puede encontrar un poCer en
odel-s*%%3."iles.Cordpress.comD*%$$D$%Dpseint.ppt8
Por qu usar PSeInt y no otro intrprete o compilador
de pseudocdigo?
$E PorAue es so"tCare li)re: sin necesidad de andar gastando dinero: 7aciendo
giros: etc.: (iolando los derec7os de autor ni andar creando o consiguiendo
cracs: Aue a (eces sus linF estn inacti(os -Do los programas no de#an
craAuearse.
*E 'st constantemente atendido por su creador: a di"erencia de los otros
compiladores e intrpretes de pseudocdigo Aue estn descontinuados.
3E Posee un "oro para reportar errores - o)tener a-uda: est tam)in est
constantemente atendido por su creador: lo Aue a-uda a me#orar el programa.
4E Posee una e8tensa a-uda: Aue (alga la redundancia a-uda a aprender a
usarlo: - a aprender el lengua#e.
E 'st disponi)le su cdigo "uente: - con instrucciones para e#ecutarlo: de modo
Pg. 4
Programacin con PSeInt
Aue si sa)emos .GG podremos personaliBarlo - corregirlo.
Posee e8portacin a .GG para Aue podamos (er el mismo cdigo en .GG: lo Aue
a-uda a aprender .GGH
E Se trata de un intrprete - no un compilador: el arc7i(o no tienen por Au ser
guardado en disco para ser e#ecutado: 7aciendo ms cmodo su uso.
Instalacin
,)rir el arc7i(o I pseintJCinJ3*J88888888.e8e I K8888 es nLmero de la (ersin
actualE: el cual ser proporcionado por la pgina del pro-ecto: al 7acer do)le clic
se e#ecuta el instalador.
@uego presionamos siguiente JM siguiente - as< sucesi(amente 7asta instalarlo.
Apuntes preliminares
,ntes de empeBar a programar: es con(eniente tener una idea del
"uncionamiento general de PSeInt.
Pg. 5
Programacin con PSeInt
.uando a)rimos por primera (eB PSeInt aparece un cartel preguntndonos
Aue per"il deseamos utiliBar: para e(itar con"usiones con el lengua#e.
'ste manual se mane#a con dos per"iles. 'l estricto: Aue es el ms parecido
a un lengua#e de programacin real: se de)e respetar al pie de la letra el
"ormato del pseudocdigo propuesto por ?o(ara. @a sinta8is "le8i)le la
usamos para e#ecutar ciertos cdigos Aue reAuieren ms "le8i)ilidad a la
7ora de e#ecutarse. , menos Aue se indiAue Aue se usa sinta8is "le8i)le: se
utiliBar la sinta8is estricta.
Pg. 6
Programacin con PSeInt
Nota: o confundir Sinta!is f"e!i#"e con Perfi" f"e!i#"e
Namos a .on"igurar O +pciones de @engua#e O 'legimos 'stricto -
pulsamos aceptar.
Abrir PSeInt
Para a)rir PSeInt damos do)le clic en el acceso directo PSeInt del escritorio -
nos a)re el programa.
Escribir mi primer programa
>na (eB Aue 7emos a)ierto PSeInt - 7a)iendo con"igurado sinta8is estricta:
este nos presenta una pgina Aue dice Inicio sinPtitulo - ;inProceso: entre
estas dos l<neas escri)iremos nuestro primer programa9
@uego lo guardamos
Pg. $
Programacin con PSeInt
'scri)imos el nom)re del programa en la (entana Aue nos aparece - luego
presionamos Quardar .omo... .
,7ora Aue los 7emos guardado necesitamos: Aue nuestro programa "uncione -
escri)a en la pantalla >nitec: aunAue PSeInt su)ra-e con ro#o los errores de
sinta8is: tam)in es )ueno (eri"icar sinta8is para (er los errores. Para ello
(amos a e#ecutar: O (eri"icar sinta8is. !e todos modos: si tu(iramos errores l
nos su)ra-ar<a la "rase donde se encuentre el error: luego lo corregimos - lo
(ol(emos a e#ecutar: 7asta Aue no apareBca nada su)ra-ado con ro#o.
@uego Aue el programa no tiene errores de compilacin: no aparecen l<neas
su)ra-adas con ro#o: seleccionamos e#ecutar: luego e#ecutar: - en la pantalla
aparecer la pala)ra >nitec Aue es la salida del programa: tam)in para e#ecutar
el programa puede usar el <cono de e#ecutar o pulsar ;69
Si la e#ecucin se realiB con 8ito correcta al "inal aparecer un mensa#e
Pg. %
Programacin con PSeInt
diciendo Aue el programa se e#ecut correctamente.
Siempre Aue Aueremos escri)ir un programa en PSeInt iniciamos de)a#o de
la pala)ra
Proceso sin_titulo
DDescri)imos el cuerpo del programaH
inProceso
R el proceso principal se cierra con las pala)ras cla(es ;inProceso Aue indica el
"inal del programa principal.
.om)ine asignarle un nom)re al programa: sustitu-endo sinPtitulo por el nom)re
Aue Aueramos darle. 3ecordar Aue nom)re del pseudocdigo en ninguna sinta8is
puede tener espacios - en sinta8is estricta tampoco caracteres acentuados. ?o
con"undir el nom)re del proceso con el del arc7i(o en pseudocdigo.
@a pala)ra reser(ada Escribir escri#e en "a panta""a "o &ue esta encerrado entre
comi""as. 'n sinta8is "le8i)le tam)in podemos utiliBar la pala)ra Imprimir o
!ostrar. 'eitero( a menos &ue se indi&ue &ue se uti"i)a sinta!is f"e!i#"e( nosotros
*amos a uti"i)ar siempre sinta!is +stricta.
"oncatenar te#to
Pg. ,
Programacin con PSeInt
Proceso concatenar
Escribir "Mi primer programa ";
Escribir " en PSeInt ";
FinProceso
@a salida del programa es
Mi primer programa en PSeInt
'sto porAue el "inal de la l<nea 7ace un retorno - )a#a a la siguiente: a7ora si
Auisiramos escri)ir9
Mi primer programa
En PSeint
Nota- .as comi""as de#en ser siempre simp"es / nunca tipogrficas pues estas
0"timas son sm#o"os grficos &ue ning0n "engua1e de programacin 2asta e"
momento puede interpretar. Siempre por defecto en "os editores de te!to de "os
I3+S se escri#en comi""as simp"es( pero cuando se importa o se formatea
pseudocdigo trado de afuera( 2a/ &ue corregir e" encomi""ado( de no 2acer"o
pro*ocara un error de compi"acin.
'l programa ser<a de esta "orma e#emplo
Proceso primer_programa
Escribir "Mi primer programa " Sin Saltar;
Escribir " en PSeInt ";
FinProceso
.on esto deducimos Aue la instruccin Sin Saltar concatena e contenido de una
cadena de te8to - el contenido del pr8imo escri)a se escri)e en la primera l<nea.
3ecordar Aue en sinta8is estricta la colocacin del punto - coma al "inal de las
sentencias es o)ligatoria: en "le8i)le en opcional.
Nota- PSeInt no es case sensiti*e( por "o tanto co"ocar +scri#ir con ma/0scu"as /
min0scu"as es "o mismo / no genera errores de ning0n tipo( pero por respeto a "a
sinta!is mostrada por "os #otones se de#e escri#ir con ma/0scu"a inicia"( e*itando
as errores de formato.
Pg. 14
Programacin con PSeInt
Nota - +n sinta!is estricta( "as sentencias siempre fina"i)an en punto / coma.
Pg. 11
Programacin con PSeInt
$iagramas de %lu&o
PSeInt es capaB de interpretar los pseudocdigos - trans"ormarlos a diagrama de
"lu#o: para eso dispone de un (isualiBador - editor de diagramas de "lu#o. 'sto es
Ltil si Aueremos analiBar el pseudocdigo desde un punto de (ista gr"ico.
Se accede pulsando el <cono de la )arra de tareas. PseInt no slo es
capaB de (isualiBarlo: sino tam)in editarlos.
'#emplo9
.onsidera el siguiente programa
Proceso primer_programa
Escribir "Mi primer programa " Sin Saltar;
Escribir " en PSeInt ";
FinProceso
Su representacin en diagrama de "lu#o es la siguiente9
,Au< (emos el inicio del proceso representado como una elipse: la sentencia
escri)ir representada en un rectngulo: pues es un cartel
Pg. 12
Programacin con PSeInt
Nota!: +n "a pgina 2ttp-55pseint.sourceforge.net5inde!.p2p6
page7pseudocodigo.p2p de" sitio oficia" de PSeInt se e!p"ica "a estructura de "os
diagramas de f"u1o.
Nota: +n e" ane!o se e!p"ica como editar diagramas de f"u1o.
$eclarar 'ariables
'n sinta8is estricta: siempre Aue necesitemos 7acer un programa: tendremos
Aue declarar (aria)les para poder guardar la in"ormacin Aue introduBcamos al
programa.
@os tipos de datos )sico soportados son los siguientes9
$. 'ntero 9 solo nLmeros enteros.
*. 3eal 9 nLmeros con ci"ras decimales.
3. .aracter 9 cuando Aueremos guardar un carcter.
4. @ogico 9 cuando necesitamos guardar una e8presin lgica
K(erdadero o "alsoE
. .adena9 cuando Aueremos guardar cadenas de caracteres.
Nota: 8adena / 8aracter son t9rminos e&ui*a"entes( no generra error &ue "as
escri#amos indistintamente
'#emplos
Si &ueremos dec"arar una *aria#"e de tipo entero sera as -
!e"inir numero .omo 'nteroH
?umero se con(ierte en una (aria)le de tipo entero
Nota: 'n sinta8is estricta: las (aria)les no pueden tener caracteres acentuados
Si Aueremos declarar una (aria)le tipo .adena para guardar el nom)re ser<a as<
!imension nom)re S*TH
!e"inir nom)re .omo .adenaH
Nota: en sinta8is estrica las (aria)les no pueden tener caracteres
ascentuados
?om)re seria una (aria)le Aue guardar<a solo * caracteres aunAue tu puedes
Pg. 13
Programacin con PSeInt
escri)ir ms de * letras: l en la memoria solo guardara los primeros *
caracteres.
Nota- :er e" apartado 3imensiones para ms deta""es.
Nota- ;un&ue esto no genere errores en tiempo de e1ecucin( si se dec"aran
*arias *aria#"es a "a *e) para e*itar un error de formato < concordancia de de#e
p"ura"i)ar e" tipo de *aria#"e. +1.- 3efinir a( #( c 8omo +nteros=
Nota: +" p"ura" de 8aracter es 8adena
(peradores
PSeInt proporciona los siguientes operadores9
(perador uncin
KE ,grupar e8presiones
U +perador para e8ponenciacin
V +perador de multiplicacin
D +perador de di(isin
W Mod +perador de clculo de residuo
truncK(alor$ D (alor*EH Sinta8is de di(isin entera
2 - +perador lgica -
G +perador de suma
J +perador de 3esta
1 o +perador lgico o
Nota: +n sinta!is f"e!i#"e( podemos uti"i)ar tam#i9n "os operadores > ? / mod
como / o / @ respecti*amente.
)eer 'alores y almacenarlos en las 'ariables
.uando nosotros Aueremos leer un (alor - almacenarlo en una (aria)les
usaremos la pala)ra Leer " #aria$le%& . - cuando Aueremos asignar un (alor o
una operacin matemtica usaremos XJ Aue es el s<m)olo de X mas J .
Ejemplo so$re lectura de datos
Pg. 14
Programacin con PSeInt
Proceso lectura_datos
Dimension nombre[25];
Deinir nombre !omo !adena;
Escribir "Ingrese su nombre ";
"eer nombre[2#];
Escribir "$ien%enido ";
Escribir nombre[2#];
FinProceso
'l programa declara una (aria)le para el nom)re : Aue guarda * caracteres
m8imo : ingresa el nom)re - luego escri)e en la pantalla 5ien(enido el nom)re
Aue se ingreso. ,lgo importante es Aue cuando se Auiere presentar el (alor de
la (aria)le esta no se escri)e entre comillas.
Su diagrama de "lu#o9
'n la ta)la se nos muestra como se pudo sustituir un )loAue del programa Aue
nos dar<a el mismo resultado
.aso $ .aso *
Pg. 15
Programacin con PSeInt
Escribir "$ien%enido ";
Escribir nombre;
Escribir "bien%enido " Sin Saltar & nombre;
Nota9 o es necesario indicar de cuantos caracteres es "a cadena &ue PSeInt
de#e "eer( pero si se de#e indicar si dec"aramos a "a dimensin como un *ector
de caracteres.
Asignaciones y (peraciones matem*ticas en
un programa+
'l s<m)olo XJ lo usaremos para asignar (alores a las (aria)les e#emplo
Sueldo,-'((& .on esta instruccin estamos asignando el (alor de %% a la
(aria)les sueldo Aue pudo declararse como entero o real
Nom$re,-)juan)& con esta instruccin asignamos la cadena IYuan I a la
(aria)le nom)re Aue es una (aria)le de tipo cadena
Ejemplo so$re asignaciones de #alores a las #aria$les
Proceso aumento
Deinir sueldo& aumento !omo Enteros;
Dimension nombre[25];
Deinir nombre !omo !adena;
Escribir "Ingresar el nombre del empleado";
"eer nombre[2#];
Escribir "Ingresar el sueldo del empleado";
"eer sueldo;
'umento () sueldo * +,25;
Escribir "-ue%o sueldo con el 25. de aumento";
Escribir aumento;
FinProceso
'l programa pide el nom)re - el sueldo del empleado luego calcula el *W de
aumento de sueldo - lo guarda el la (aria)le aumento - luego presenta el nue(o
sueldo.
!iagrama de "lu#o9
Pg. 16
Programacin con PSeInt
Ejemplo so$re suma de cadenas
Proceso suma_de_cadenas
Dimension nombre[25]&apellido[25]&completo[25];
Deinir nombre&apellido&completo !omo !adenas;
Escribir " Su -ombre";
"eer nombre[2#];
Escribir " 'pellido ";
"eer apellido[2#];
!ompleto () nombre[2#] / " " / apellido[2#];
Escribir "-ombre completo" & completo[2#];
FinProceso
@a (aria)le completo toma el (alor del nom)re mas un espacio en )lanco mas el
apellido - lo guardamos en una (aria)le donde a7ora tenemos el nom)re - el
apellido.
Nota- o es estrictamente necesario dimensionar cadenas de caracteres. :9ase
"a pgina &ue trata e" tema de dimensiones.
Pg. 1$
Programacin con PSeInt
Instrucciones condicionales
,nteriormente 7emos estado 7aciendo programas Aue solo 7acen clculos: pero
la programacin es ms interesando cuando nuestros programas toman sus
propias decisiones: en PSeInt e8isten instrucciones condicionales Aue se
descri)en a continuacin 9
Instruccin Si9
sinta8is
Si condicin 'ntonces
instruccionesH
;inSi

Si condicin 'ntonces
instruccionesH
Sino
instruccionesH
;inSi
Ejemplo so$re decisiones
Ingresar un numero - si el nLmero es ma-or a $%% : escri)ir en la pantalla el
numero es ma-or a $%%.
Proceso decision
Deinir num como Entero;
Escribir "Ingresar un n0mero";
"eer num;
Si num 1 +22 Entonces
'n programa solo escri)ir Aue el nLmero "ue ma-or a $%% cuando cumpla con
la condicin num % !(( sino cumple con la condicin no 7ace nada .
Pg. 1%
Programacin con PSeInt
Ejemplo so$re decisiones
Ingresar el nom)re del empleado: las 7oras tra)a#adas: luego .alcular pago
)ruto K% lps la 7ora E I=SS - total a pagar: presentar los resultado del programa
.ota : e" seguro socia" es %4 si e" sue"do es ma/or 2444 sino es e" 3.5@ de"
sue"do de" emp"eado.
Proceso empleados
Deinir 3oras como Enteros;
Deinir Pbruto&i3ss&tp como 4eales
Dimension nombre[25];
Deinir nombre !omo !adena;
Escribir "Ingresar el nombre";
"eer nombre[2#];
Escribir "Ingresar las 3oras traba5adas";
"eer 3oras;
Pbruto()3oras*52;
Si pbruto 1 2#22 Entonces
I3ss()6#;
Sino
I3ss()2,275*pbruto;
FinSi
8p()pbruto)i3ss;
Escribir "Pago bruto " & pbruto;
Escribir "Seguro Social " & i3ss;
Escribir "8otal a pagar " & tp;
FinProceso
'n este programa se uso en el calculo del i7ss una decisin Aue tiene dos
salidas una cuando se cumple la condicin Aue es el entonces - la otra cuando
no se cumple la condicin Aue es el sino : a7ora esto nos a-uda a Aue nuestros
programas puedan tomar una decisin cuando la condicin se cumple - otra
cuando no se cumple.
,7ora en el siguiente e#ercicio Aue se presenta : -a no 7a- dos soluciones a la
condicin sino tres: cuando sucede esto se usan condiciones anidadas.
Pg. 1,
Programacin con PSeInt
Sinta8is de una condicin anidada 9
Si condici9n + Entonces
Instrucciones;
Sino Si condici9n 2 Entonces
Instrucciones;
Sino Si condici9n 2 Entonces
Instrucciones;
Sino
Instrucciones;
FinSi
FinSi
FinSi
Ejemplo so$re decisiones anidadas
Ingresar el nom)re del empleado: la Bona de tra)a#o : las (entas del empleado :
luego calcular su comisin en )ase a un porcenta#e )asado en la Bona
de tra)a#o: luego determinar el I=SS - el total a pagar: presentar los datos.
Ta)la para el caculo de la comisin
Zona Porcenta#e de .omisin
, /W
5 0W
. 6W
Proceso !omision
Deinir :ona como !aracter;
Dimension nombre[25];
Deinir nombre !omo !adena;
Deinir %entas & comis & i3ss& tp !omo 4eales;
Escribir "Ingresar el nombre del empleado ";
"eer nombre[2#];
Escribir "Ingresar las %entas del empleado ";
"eer %entas;
Escribir "Ingresar la :ona de traba5o";
"eer :ona;
Pg. 24
Programacin con PSeInt
Si :ona ;<'< Entonces
comis() 2,2= * %entas;
Sino Si :ona;<$< Entonces
comis() 2,26 * %entas;
Sino Si :ona;<!< Entonces
comisXJ 2,2> * %entas;
Sino
comisXJ 2;
FinSi
FinSi
FinSi
Si comis 1 2#22 Entonces
i3ss () 6#;
Sino
i3ss()2,275*comis;
tp()comis ) i3ss;
Escribir " !omsi9n ganada " & comis;
Escribir " Seguro Social " & i3ss;
Escribir "8otal a pagar " & tp;
FinProceso
'n este programa usamos decisiones anidadas para el calculo de la comisin
del empleado : esto porAue se ten<an (arias opciones de la cuales elegir .
'l ultimo sino donde la comisin es % se 7ace porAue no estamos seguros de
Aue la persona Aue opera el programa introduBca correctamente la Bona : si se
ingreso otra Bona de las permitidas la comisin es cero.
Pg. 21
Programacin con PSeInt
Estructura Segun
'sta se usa como sustituto en algunos casos del si anidado : por ser ms
prctico al aplicarlo en la e(aluacin de algunas condiciones.
Sinta8is
Segun (aria)le =acer
(alor$: (alor*: (alor3: [ 9
instruccionesH
(alor$: (alor*: (alor3: [ 9
instruccionesH
+
+
S !e +tro Modo 9
instruccionesHT
;inSegun
@os (alores a e(aluar : se separan por comas si 7a- (arios: tal como aparece en
la sinta8is (alor$:(alor* etc.: tam)in se puede usar el sino Aue nos indica: Aue
en caso de no seleccionar ninguna de las instrucciones anteriores se e#ecutan.
Pg. 22
Programacin con PSeInt
Nota importante: +n sinta!is estricta "as opciones de" Segun de#en ser siempre
de" tipo num9rico. Para poder e*a"uar opciones de" tipo te!to se de#e
persona"i)ar e" "engua1e uti"i)ando sinta!is f"e!i#"e en e" editor.
Ejemplo so$re la aplicaci*n de la estructura Segun
'n el e#ercicio anterior usamos decisiones anidadas para determinar la comisin:
a7ora usaremos una estructura SegLn.
Para eso 7a)ilitamos sinta8is "le8i)le -endo a personaliBar lengua#e O
PersonaliBar[ O >tiliBar sinta8is "le8i)le
Proceso e5emplo_caso
Deinir :ona !omo !aracter;
Dimension nombre[25];
Deinir nombre !omo !adena;
Deinir %entas & comis & i3ss& tp !omo 4eales;
Escribir "Ingresar el nombre del empleado ";
"eer nombre[2#];
Escribir "Ingresar las %entas del empleado ";
"eer %entas;
Escribir "Ingresar la :ona de traba5o";
"eer :ona;
Segun ?ona @acer
<a<&<'< A comis() 2,2= * %entas;
<b<&<$< A comis() 2,26 * %entas;
<c<&<!< A comis() 2,2> * %entas;
De Btro Modo A
comis() 2;
FinSegun
Si comis 1 2#22 Entonces
i3ss() 6#;
Sino
i3ss()2,275*comis;
FinSi
tp()comis ) i3ss;
Escribir " !omsi9n ganada " & comis;
Escribir " Seguro Social " & i3ss;
Escribir "8otal a pagar " & tp;
FinProceso
Pg. 23
Programacin con PSeInt
,7ora nuestro programa reconoce las ma-Lsculas - minLsculas en la e(aluacin
de la Bona
/so del operador 0
'l operador 1 K+E se utiliBa cuando estamos e(aluando dos o ms condiciones -
Aueremos Aue la condicin se cumpla cuando una de las condiciones Aue
estamos e(aluando se 7acen (erdadera. '#emplo
.uando se introduce la Bona en el e#ercicio con la estructura Si solo
e(alu)amos una opcin Aue la Bona sea igual a la letra , - si el usuario escri)<a
una a minLscula no* se toma)a en cuenta pero esto se puede corregir de esta
manera 9
Si :ona ;<'< C :ona ;<a< Entonces
comisXJ 2,2= * %entas;
Sino Si :ona;<$< C :ona;<b< Entonces
comis() 2,26 * %entas;
Sino si :ona;<!< C :ona;<c< Entonces
comis() 2,2> * %entas;
Sino
comisXJ 2;
FinSi
FinSi
FinSi
,7ora la condicin dice: si zona es igual a la letra A o es igual a la letra a:
cualAuiera Aue sea la Bona a o , en am)os casos la condicin es (erdadera :
a7ora el usuario puede usar ma-Lsculas - minLsculas - el resultado ser el
mismo.
E&emplo sobre el operador 0
Ingresar el nom)re del cliente : luego la cantidad del producto: precio - tipo de
cliente : calcular el su)total : descuento : impuesto sD(: total a pagar: presentar
los datos.
'l descuento es del $%W si el cliente es de tipo , o la cantidad de cualAuier
producto es ma-or a $%% sino es de W.
Proceso descuento
Pg. 24
Programacin con PSeInt
Deinir precio&st&des&tp&is% !omo 4eales;
Dimension nombre[25];
Deinir nombre !omo !adena;
Deinir tipoM !omo !aracter;
Deinir cant !omo Entero;
Escribir "-ombre del cliente";
"eer nombre[25];
Escribir "Ingresar el 8ipo de cliente";
"eer tipoM;
Escribir "Ingresar el precio del producto";
"eer precio;
Escribir "Ingresar la cantidad ";
"eer cant;
St() precio*cant;
Si tipoM ;<a< C tipoM;<'< C cant1+22 Entonces
Des()st*2,+2;
Sino
Des()st*2,25;
FinSi
Is%()Dst)desE *2,+2;
8p()Dst)desE/is%;
Escribir "Subtotal "& st;
Escribir "Descuento "& des;
Escribir "Impuesto "& is%;
Escribir "8otal a pagar" &tp;
FinProceso
Su representacin en diagrama de "lu#o9
Pg. 25
Programacin con PSeInt
.omo (emos: el proceso es tan largo: Aue aparece con la letra mu- c7ica: para
Aue se (ea ms grande mo(emos el scroll 7acia nosotros para Aue se agrande.
/so del operador 1 234
'l operador R K2E se utiliBa cuando estamos e(aluando dos o ms condiciones -
Aueremos Aue la condicin se cumpla cuando las dos condiciones Aue estamos
e(aluando se 7acen (erdadera. '#emplo
E&emplo sobre el operador 3
Se ingresa un nLmero - se desea sa)er si dic7o nLmero est entre % - $%%.
Proceso e5emplo_operador_F
Deinir num !omo Entero;
Escribir "-0mero a e%aluar";
"eer num;
Si num 1;52 G num(;+22 Entonces
Escribir " El n0mero estH entre 52 F +22";
Sino
Pg. 26
Programacin con PSeInt
Escribir " Fuera del rango 52 F +22";
FinSi
FinProceso
E#portacin a "55
PSeInt puede e8portar el programa el algoritmo a .GG. Qenera solo un arc7i(o
con la e8tensin .cpp Ka)re(iatura de 8 p"us p"us: cGGE .?o es necesario guardar
pre(iamente el arc7i(o en pseudocdigo para Aue se e8porte a .GG.
Simplemente (amos a ,rc7i(o - seleccionamos '8portacin a .GG
Nota: ;" estar e" modo e!perimenta"( puede &ue e" cdigo generado no sea de"
todo correcto( esto se *a a ir so"ucionando en "as pr!imas *ersiones de PSeInt
Instrucciones de ciclo
=emos 7ec7o programas Aue solo se repiten una (eB : pero en la programacin
necesitamos Aue los programas corran (arias (eces - Aue nos presenten
in"ormacin al "inal de correr (arias (eces: en estos casos usaremos ciclos: Aue
son estructuras de repeticin: Aue se repiten 7asta cumplir con una condicin o
simplemente indicamos cuantas (eces se (an a repetir.
Nota: Para e*itar am#igAedades( todos "os cic"os de#en cerrarse siempre ( no
es posi#"e &ue 2a/an B8ic"os a#iertosC.

"iclo !ientras:
Sinta#is
Mientras condicin =acer
instruccionesH
;inMientras
'l ciclo mientras se utiliBa cuando se Auiere e#ecutar repetidamente un )loAue
instrucciones )asado en una condicin: el ciclo se repite mientras la condicin se
cumple.
Ejemplo so$re el ciclo Mientras usando un contador
Ingresar $% nom)res
Pg. 2$
Programacin con PSeInt
Proceso contador
Deinir contador !omo Entero;
Dimension nombre[25];
Deinir nombre !omo !adena;
!ontador()2;
Mientras contador(+2 @acer
Escribir "Ingresar el nombre";
"eer nombre[2#];
contador() contador / +;
FinMientras
FinProceso
'n este programa introducimos el concepto de contador : Aue es una (aria)le
Aue se incrementa su (alor en $ - de esta manera contamos cuantos nom)res
se (an ingresando para parar cuando ingresemos $% : esto nos dice Aue la
condicin -a no se cumple porAue cuando el contador (ale $% la condicin de
contador X $% -a no se cumple porAue es igual - el ciclo termina.
Ejemplo so$re el ciclo Mientras usando acumuladores
Pg. 2%
Programacin con PSeInt
Ingresar $% nLmeros - al "inal presentar la suma de los nLmeros.
Proceso acumuladores
Deinir !ontador&Suma&-um !omo Enteros;
!ontador()2;
Suma()2;
Mientras contador (+2 @acer
Escribir "Ingresar un n0mero";
"eer -um;
!ontador() !ontador /+;
Suma()-um/Suma;
FinMientras
Escribir "Suma de los +2 n0meros "& Suma;
FinProceso
Nota- Para e*itar am#igAedades "os n0meros se ingresan de a uno pu"sando
enter sucesi*amente. Ingresar"os en una fi"a separados por espacios pro*ocara
un error de no coincidencia de tipos /a &ue se toma e" espacio como un tipo de
dato de ingreso ms / un espacio no es un dato de tipo num9rico.
'l ciclo recorre $% (eces - pide los $% nLmeros: pero la l<nea sumaXJ suma G
num: 7ace Aue la (aria)le suma: incremente su (alor con el numero Aue se
introduce en ese momento: a di"erencia del contador: un acumulador se
incrementa con una (aria)le: acumulando su (alor 7asta Aue el ciclo termine : al
"inal se presenta la suma: solo en ese momento se de)e de presentar un
acumulador: porAue antes no re"le#ar<a la suma de todos los nLmeros.
Siempre Aue usemos un contador o acumulador de)emos darle un (alor inicial
de generalmente ser %.
'#emplo so)re el ciclo mientras usando una respuesta para controlar la salida
del ciclo.
Ingresar el nom)re del cliente: el precio del producto: cantidad - luego calcular el
Pg. 2,
Programacin con PSeInt
su)total: is( - total a pagar: presentar los datos luego preguntar si desea
continuar: al "inal presentar el monto glo)al de la "actura.
Proceso producto
Deinir 4esp !omo !aracter;
Deinir nombre[25];
Deinir nombre !omo !adena;
Deinir Precio& cantidad& totalglobal& st& is%& tp !omo
4eales;
8otalglobal()2;
4esp()<S<;
Mientras resp (1<-< @acer
Escribir "-ombre del cliente";
"eer nombre[2#];
Escribir "Ingresar la cantidad del producto ";
"eer cantidad;
Escribir "Ingresar el precio de producto ";
"eer precio;
St() precio * cantidad;
Is%()st * 2,2+2;
8p()st)is%;
8otalglobal()totalglobal/st;
Escribir "Subtotal " & st;
Escribir "Impuesto sobre %enta " & is%;
Escribir "8otal a pagar " & tp;
Escribir "Desea continuar SI-";
"eer 4esp;
FinMientras
Escribir "8otal de la %enta" & totalglobal;
FinProceso
'n este e#ercicio : o)ser(amos Aue el ciclo lo controla una respuesta Aue se pide
al "inal S para seguir o ? para terminar : pero dar<a el mismo resultado si escri)e
cualAuier letra distinta a S : aunAue no sea ? siempre seguir<a "uncionando el
programa: la (alidacin de los datos de entrada lo estudiaremos mas adelante.
Ejemplo so$re estructuras de condici*n dentro del ciclo Mientras.
Ingresar el nom)re del alumno: la nota e8amen - nota acumulada: luego calcular
Pg. 34
Programacin con PSeInt
la nota "inal: - presentar la nota "inal - la o)ser(acin del alumno.
Preguntar si desea continuar: al "inal presentar el numero de apro)ados -
repro)ados.
Proceso aprobado
Deinir 4esp !omo !aracter;
Dimension nombre[25];
Deinir nombre !omo !adena;
Deinir na&ne&n !omo 4eales;
Deinir cr&ca !omo Enteros;
cr()2;
ca()2;
4esp()<S<;
Mientras resp(1<-< @acer
Escribir "-ombre del alumno";
"eer nombre;
Escribir "-ota acumulada ";
"eer na;
Escribir "nota eJamen ";
"eer ne;
n() na/ne;
Si n 1; =2 Entonces
Escribir "8u estHs 'probado";
ca()ca/+;
Sino
Escribir "8u estHs 4eprobado";
cr()cr/+;
FinSi
Escribir "-ota inal " & n;
Escribir "Desea continuar SI-";
"eer 4esp;
FinMientras
Escribir "8otal de reprobados" & cr;
Escriba "8otal de aprobados" & ca;
FinProceso
Nota: .as *aria#"es no pueden dec"ararse inicia"i)adas( se dec"aran primero / se
inicia"i)an despu9s.
Pg. 31
Programacin con PSeInt
.omo podemos o)ser(ar en las l<neas del programa: usamos dentro del ciclo
mientras: decisiones para poder contar los repro)ados - apro)ados Aue resulten
del ingreso de los alumnos: si la nota es ma-or a /% escri)e apro)ado e
incrementa el contador - sino 7ace lo contrario: escri)ir repro)ado e incrementar
el contador.
Pg. 32
Programacin con PSeInt
"iclo Para
Sinta#is
Para (aria)le XJ (alorPinicial =asta (alorP"inal .on Paso Paso =acer
instrucciones
;inPara
$escripcin
'l ciclo Para se utiliBa generalmente para e#ecutar un con#unto de instrucciones
Aue se repiten un nLmero de (eces: esta)lecido antes de e#ecutar el ciclo.
6ariable : es de tipo entero
6alor_inicial 9 este puede se un nLmero entero o una (aria)le entera.
6alor_%inal : este puede se un nLmero entero o una (aria)le entera.
Paso 9 este puede se un nLmero entero o una (aria)le entera.
Nota- e" paso 1 puede omitirse( tanto en sinta!is estricta como
f"e!i#"e
Ejemplo : presentar los n+meros del ! al !( en la pantalla.
Proceso ciclo_Para
Deinir I !omo Entero;
Para I()+ @asta +2 !on Paso + @acer
Escribir I;
FinPara
FinProceso
'l programa el ciclo para esta)lece el numero de (eces Aue se repetir el ciclo
indicando ! ,asta !( luego la (aria)le I toma el (alor $ a $% segLn el ciclo se (a
e#ecutando: es por eso Aue al escri)ir la I la primera (eB escri)e $ la segunda
(eB * - as< 7asta llegar al "inal Aue es $%.
Pg. 33
Programacin con PSeInt
Ejemplo : so$re el uso de #aria$les en el rango del ciclo Para.
Proceso ciclo_Para
Deinir I& inal !omo Enteros;
Escribir "Ingresar el n0mero de %eces a repetir el ciclo ";
"eer inal;
Para I()+ @asta inal !on Paso + @acer
Escribir I;
FinPara
FinProceso
,7ora el programa se (uel(e ms dinmico: nosotros podemos indicar el numero
de (eces Aue se repetir el ciclo: usando una (aria)le entera para indicar el "inal
del ciclo.
Ejemplo uso del ciclo Para - en el calculo del .actorial de un n+mero.
Proceso ciclo_Para_negati%o_con_actorial
Deinir I& numero& actorial !omo Enteros;
actorial()+;
Escribir "Ingresar el n0mero para determinar su actorial ";
"eer numero;
Para I()+ 3asta numero !on Paso + @acer
actorial() actorial * I;
FinPara
Escribir " actorial de " & numero & " es "& actorial;
FinProceso
'n este e#ercicio se inicia el "actorial en $ porAue acumulara una multiplicacin -
si lo iniciamos en cero nos dar<a el resultado cero: si nosotros ingresar 3: el ciclo
se e#ecutara 3 (eces : el "actorial tomar<a el (alor de $8*83.
!iagrama de "lu#o9
Pg. 34
Programacin con PSeInt
Ciclos negati#os
PSeInt tam)in puede realiBar ciclos negati(os para mostrar: por e#emplo
secuencias de ma-or a menor: solamente in(irtiendo el orden de los nLmeros del
e#ercicio anterior - colocando como Paso J$
Proceso ciclo_Para_negati%o
Deinir I !omo Entero;
Para I()+2 @asta + !on Paso )+ @acer
Escribir I;
FinPara
FinProceso
Nota: +n cic"os negati*os e" paso no puede omitirse.
"iclos anidados
.uando un ciclo se encuentra dentro de otro ciclo se le llama ciclo anidado.
Ejemplo de un ciclo anidado
Producir la siguiente salida en la pantalla
$$$$$
*****
Pg. 35
Programacin con PSeInt
33333
44444
Proceso ciclo_anidado
Deinir I&K !omo Enteros;
Para I () + @asta # @acer
Para L ()+ @asta 5 @acer
Escribir I Sin $a5ar;
FinPara
Escribir "";
FinPara
FinProceso
.uando usamos ciclos anidados: las (aria)les para mane#ar los ciclos para
de)en de ser di"erentes pues cada una de ellas toma un (alor di"erente: en este
e#ercicio necesitamos Aue se 7aga (eces el ciclo Aue esta dentro : Aue es el
Aue presenta 4 (eces el (alor de la I : luego salta una l<nea : para Aue apareBcan
los grupos de nLmeros en cada l<nea.
Pg. 36
Programacin con PSeInt
Ejemplo de un ciclo anidado
Ingresar nLmeros - calcular el "actorial para cDu de los nLmeros.
'n este e#ercicio necesitamos ingresar nLmeros pero cada (eB Aue
ingresemos un numero de)emos de calcular el "actorial : entonces
necesitaremos una (aria)le para el caculo del "actorial: Aue "orBosamente tiene
Aue inicialiBarse en $ cada (eB Aue el ciclo Aue calcula el "actorial inicie: des esta
manera estaremos seguro Aue la (aria)le no 7a acumulado el (alor del "actorial
anterior.
,7ora con lo anterior deducimos Aue necesitamos un ciclo para pedir los datos -
otro para calcular el "actorial .
Proceso actorial
Deinir I&K&ac&num !omo Enteros;
Para I () + @asta 5 @acer
Escribir " ingresar un n0mero ";
"eer -um;
ac()+;
Para K ()+ @asta num @acer
ac()ac*L;
FinPara
Escribir "actorial de "& num & " es "&ac;
FinPara
FinProceso
Pg. 3$
Programacin con PSeInt
"iclo 7epetir
Sinta#is:
3epetir
InstruccionesH
=asta Que condicin
$escripcin
'l ciclo 3epetir es lo contrario al ciclo Mientras: en ste la e#ecucin se lle(a a
ca)o 7asta Aue se cumple la condicin impuesta.
@a di"erencia con el ciclo Mientras radica en Aue este e(alLa la condicin desde
el principio: - si est no se cumple: el cdigo Aue est encerrado dentro del
cuerpo del mientras no se e#ecuta.
'n cam)io: el 3epetir J Mientras Que e(alLa la condicin para seguir
e#ecutndose luego de 7a)er e#ecutado el cdigo dentro de su cuerpo: es decir
siempre se e#ecuta por lo menos una (eB el cdigo.
Nota- +n perfi" f"e!i#"e( 2a#i"itando sinta!is f"e!i#"e o en persona"i)ar tam#i9n es
posi#"e usar "a estructura
Dacer
55Instrucciones=
Eientras Fue
o
'epetir
55Instrucciones=
Eientras Fue
como a"ternati*a a 'epetir < Eientras Fue correspondiente a "a sinta!is estricta.
'ecordar &ue en este caso "a condicin sa"e por e" distinto( a diferencia de"
'epetir &ue sa"e por e" igua".
E&emplo del 7epetir
Ingresar el nom)re del alumno: la nota : luego preguntar si desea continuar : al
"inal presentar el numero de apro)ados - repro)ados.
Pg. 3%
Programacin con PSeInt
Proceso e5emplo_repetir
Deinir resp !omo !aracter;
Deinir nota !omo 4eal;
Deinir ca&cr !omo Enteros;
Dimension nombre[25];
Deinir nombre como !adena;
ca()2;
cr()2;
4epetir
Escribir "ingresar el nombre del alumno ";
"eer nombre;
Escribir "ingresar la nota del alumno ";
"eer nota;
Si nota 1; =2 Entonces
ca()ca/+;
Sino
cr()cr/+;
FinSi
Escribir " Desea continuar SI-";
"eer resp;
@asta Mue resp;<n< C resp;<-<;
Escribir " 'probados "&ca;
Escribir " 4eprobados "&cr;
FinProceso
si comparamos este programa con los 7ec7os con el ciclo mientras notaremos
Aue la (aria)le 3esp le damos un (alor inicial de \S] : para Aue sea distinta de ? :
-a Aue la condicin se (eri"ica al inicio del ciclo : pero a7ora con el ciclo repita -a
no es necesario pues el primer (alor de resp lo toma dentro del ciclo : Aue es la
pregunta Aue 7acemos si desea continuar: - luego (eri"icamos la condicin.
,lgo importante del ciclo 3epetir es: como -a se di#o: Aue se e#ecuta por lo
menos una (eB: antes de (alidar la condicin de salida del ciclo: es por esto :
Aue siempre Aue escri)amos un programa Aue (eri"iAue la condicin antes de
entrar ciclo se de)e de usar el ciclo Mientras.
'l programa anterior no es la (ersin "inal: puesto Aue de)emos 7acer Aue el
usuario solo ingrese S o ? cuando responda si desea continuar : esto nos lle(a a
escri)ir un ciclo repetir dentro del ciclo reprtir : para pedir la respuesta - 7acer
Pg. 3,
Programacin con PSeInt
Aue se salga del ciclo solo cuando responda S o ? : de esta manera estaremos
seguros de Aue la repuesta es correcta.
Proceso e5emplo_repetir
Deinir resp !omo !aracter;
Deinir nota !omo 4eal;
Deinir ca&cr !omo Enteros;
Dimension nombre[25];
Deinir nombre como !adena;
ca()2;
cr()2;
4epetir
Escribir "ingresar el nombre del alumno ";
"eer nombre[25];
Escribir "ingresar la nota del alumno ";
"eer nota;
Si nota 1; =2 Entonces
ca()Nar)ca/+;
Sino
cr()cr/+;
FinSi
4epetir
Escribir " Desea continuar SI-";
"eer resp;
@asta Mue resp;<-< C resp;<S<
@asta Mue resp;<-<;
Escribir " 'probados "&ca;
Escribir " 4eprobados "&cr;
FinProceso
Pg. 44
Programacin con PSeInt
SubProcesos
>n su)proceso es un su)programa: procedimiento o "uncin Aue realiBa una
tarea espec<"ica - Aue puede se de"inido mediante % : $ o ms parmetros . Tanto
en entrada de in"ormacin al su)proceso como la de(olucin de resultados desde
la su)rutina se realiBa mediante parmetros: el cual nos sir(e para introducir o
modi"icar in"ormacin del programa principal.
Sinta#is
SubProceso -ombreSubProceso
II ,,,3acer algo con los argumentos
FinSubProceso
@os su)procesos pueden o no tener tipo de retorno. 'n este caso: este
su)proceso no de(uel(e nada: los su)procesos Aue retornan argumentos los
(eremos ms adelante.
Siempre Aue usemos parmetros estos de)en de ser del mismo tipo datos: esto
nos dice Aue la (aria)le del programa : de)e de del mismo tipo del parmetro del
procedimiento - pasados en el mismo orden en Aue estn colocados en el
su)proceso.
Nota: .as *aria#"es 2an de definirse en todos "os su#procesos
E&emplo 9 ela)orar un su)proceso Aue presente asteriscos en una l<nea
7oriBontal.
SubProceso asteriscos
Deinir I !omo Entero;
Para i () + @asta 5 @acer
Escribir "*" Sin $a5ar;
FinPara
FinSubProceso
Pg. 41
Programacin con PSeInt
Proceso Principal
Dimension nombre[25];
Deinir nombre como !adena;
Escribir "Ingresar el nombre ,,A";
"eer nombre[2#];
asteriscos;
Escribir "";
Escribir nombre[2#];
Escribir "";
asteriscos;
FinProceso
'n este programa usamos un Su)Proceso K"uncin Jpala)ra eAui(alente: PSeInt
tam)in la tomaJ: o procedimientoE para escri)ir asteriscos : si no lo 7u)iramos
7ec7o de esta manera donde se encuentra la instruccin asteriscosH tendr<amos
Aue escri)ir el ciclo: - lo 7ar<amos dos (eces: de la "orma en Aue lo escri)imos es
ms estructurado: pues se di(ide ese proceso en un su)programa: Aue cuando
necesitamos una l<nea de asteriscos solo llamamos el procedimiento .
Nota- .os su#procesos sin parmetros se ""aman desde e" proceso principa"
simp"emente por su nom#re sin ms argumentos( se pueden a#rir / cerrar
par9ntesis( pero esto es opciona".
+n cam#io( si e" su#proceso contiene parmetros( estos si de#en especificarse
,7ora en el programa anterior usa un procedimiento esttico: siempre escri)ir
asteriscos: a7ora lo podemos 7acer dinmico usando parmetros para indicar
cuantos asteriscos Aueremos presentar en la l<nea.
6isuali8ador de diagramas de %lu&o
@os su)procesos en el diagrama de "lu#o se muestran de la siguiente manera
Pg. 42
Programacin con PSeInt
>na lista con los Su)Procesos marcados con ro#o9
Se eli#e a cual su)proceso entrar pulsando so)re el su)proceso. .omo dice la
captura: tam)in es posi)le agregar nue(os Su)Procesos.
Par*metros de 'alor
'ste tipo de parmetro se le conoce con el nom)re de par/metro de #alor: Aue
se de)e especi"icar si es por (alor o por re"erencia: por de"ecto es por (alor: este
Lltimo tipo de parmetro aunAue durante el procedimiento su (alor cam)ie el
(alor no ser asignado a la (aria)le del programa principal : por e#emplo si la
(aria)le num del programa Aue presentamos a)a#o se le asigna otro (alor
di"erente al $%: este cam)io se re"le#ar<a en la (aria)le num : - por esto en el
programa principal: es este tipo de parmetros Aue se le conoce como
parmetros de (alor.
E&emplo Subproceso con 'alor
SubProceso asteriscos
Deinir num& I !omo Enteros;
Pg. 43
Programacin con PSeInt
num () +2;
Para i () + @asta num !on Paso + @acer
Escribir "*" Sin $a5ar;
FinPara
FinSubProceso
Proceso principal
Dimension nombre[25];
Deinir nombre !omo !adena;
Deinir num !omo Entero;
num()+2;
Escribir "Ingresar el nombre ,,A";
"eer nombre[2#];
asteriscos;
Escribir "";
Escribir nombre[2#];
Escribir "";
asteriscos;
FinProceso
'n la l<nea num "0!( estamos asignando al parmetro num de asteriscos el (alor
de $% : esto 7ace Aue el ciclo recorra $% (eces: luego mas a)a#o del programa en
la instruccin asteriscos& se paso una (aria)le como parmetro asignando el
(alor de num a numero : el cual numero en el programa principal tiene un (alor de
$% el cual se le asigna a numero en el paso del (alor de parmetro .
Par*metros de 'ariable
'l siguiente programa: nos ense^a el uso de los parmetros de (aria)le o
re"erencia: los cuales se les antepone la pala)ra reser(ada N,3 para indicar Aue
esa (aria)le ser un parmetro de re"erencia o (aria)le: esto nos indica Aue
cualAuier cam)io Aue su"ra la (aria)le del procedimiento : la (aria)le del
programa principal tam)in lo su"rir: de esta manera podemos en(iar
in"ormacin modi"icarla - en(irar resultados al programa principal.
@a sinta8is es la siguiente9
E&emplo par*metros de 'ariable o re%erencia+
'la)orar un programa donde se ingrese el nom)re - el apellido usando un
Pg. 44
Programacin con PSeInt
procedimiento - luego presentar los datos.
SubProceso Pedir_datos Dnombre Por 4eerencia& apellido Por NalorE
Escribir "Ingresar el nombre ";
"eer nombre;
Escribir "Ingresar el apellido";
"eer apellido;
FinSubProceso
Proceso Principal
Deinir nombre& apellido !omo !adenas;
nombre()"-o 3aF cambios en nombre";
apellido()"-o 3aF cambios en apellido";
Pedir_datosDnombre&apellidoE;
Escribir "-ombre completo "&nombre&" "&apellido;
FinProceso
Nota: +n caso de &ue "a *aria#"e se pase por referencia siempre se de#e indicar.
+n cam#io( si se pasa por *a"or( "a indicacin de pase puede omitirse. Siempre
por defecto se pasa por *a"or.
'n el programa anterior: se inician las (aria)les de apellido - nom)re: luego se
pasan como parmetros al Su)Proceso: el nom)re como (aria)le - el apellido
como (alor luego escri)imos los (alores - solo el nom)re presentara el cam)io
Aue su"ri en el Su)Proceso - el apellido seguir escri)iendo el mismo (alor Aue
tenia al empeBar el programa esto porAue no se paso como parmetro de
(aria)le KN,3E sino como de (alor - no se le permiti su"rir alguna modi"icacin.
Para me#orar el programa anterior el procedimiento tendr<a Aue escri)irse as<:
usando un parmetro de salida: Aue (eremos ms adelante 9
SubProceso nombre& apellido () pedir_datos Dnombre por 4eerenciaE
Dimension apellido[72];
Deinir apellido !omo !adena;
Escribir "Ingresar el nombre ";
"eer nombre;
Escribir "Ingresar el apellido";
"eer apellido;
FinSubProceso
Pg. 45
Programacin con PSeInt
E&emplo
Ingresar la base y el e#ponente y luego calcular la potencia+
'n este programa usaremos un su)proceso para el ingreso de los datos - otro
para calcular la potencia.
SubProceso Ingreso Dbase Por 4eerencia& eJpo Por 4eerenciaE
Escribir "Ingresar la base ";
"eer base;
Escribir " Ingresar el eJponente ";
"eer eJpo;
FinSubProceso
SubProceso pot () PotenciaDbase & eJpo& pot Por 4eerenciaE
pot()+;
Para I () + @asta eJpo !on Paso + @acer
pot () pot * base;
FinPara
FinSubProceso
Proceso principal
Deinir pot como Entero;
Ingreso Dbase&eJpoE;
Potencia Dbase&eJpo&potE;
Escribir "Potencia es "& pot;
FinProceso
'n el su)proceso de ingreso los dos datos : e8ponente - )ase son de tipo entero
- parmetros de (aria)le : esto porAue necesitamos Aue el procedimiento nos
de(uel(a los (alores para luego introducirlos en el procedimiento potencia pero
aAu<: )ase: e8po son de tipo (alor : esto porAue no necesitamos modi"icar o leer
su (alor como anteriormente los 7icimos en el procedimiento de ingreso : luego la
(aria)le pot si se pasa como parmetro de (aria)le de)ido a Aue necesitamos
modi"icar su (alor - presentarlo en el programa principal.
Nota: .os su#procesos no se pueden ""amar igua" &ue "as *aria#"es &ue se
dec"aran en e" programa.
SubProcesos que de'uel'en 'alor o con retorno
Pg. 46
Programacin con PSeInt
@as Su)Procesos tam)in pueden de(ol(er un (alor: pero solo uno.
Sinta#is
SintaJis
SubProceso %alor_de_retorno () nombre_SubProceso [D parHmetros E ]
II[%ariables locales];
IIinstrucciones;
FinSubProceso
Si notamos en la sinta8is de la "uncin o)ser(amos Aue esta la pala)ra retorno la
cual de(uel(e un (alor Aue tiene Aue ser del mismo tipo Aue "ue declarado el
(alorPdePretorno.
Nota: Gam#i9n se puede usar indistintamente "a pa"a#ra funcion en "ugar de
su#proceso. +n PSeInt( son t9rminos e&ui*a"entes.
E&emplo : calculo de la potencia
>saremos el mismo e#ercicio Aue usamos para los procesos: para 7acer una
demostracin de cmo cam)iaria el programa usando un su)proceso sin retorno
para el clculo de la potencia.
SubProceso resp () potencia Dbase & eJpo Por 4eerenciaE
Deinir i& resp !omo Enteros;
resp()+;
Para I () + @asta eJpo !on Paso + @acer
resp () resp * base;
FinPara
FinSubProceso
SubProceso Ingreso Dbase Por 4eerencia& eJpo Por 4eerenciaE
Escribir "Ingresar la base ";
"eer base;
Escribir " Ingresar el eJponente ";
"eer eJpo;
FinSubProceso
Proceso principal
IngresoDbase&eJpoE;
Deinir pot como Entero;
pot()PotenciaDbase&eJpoE;
Pg. 4$
Programacin con PSeInt
Escribir "Potencia es "& pot;
FinProceso
!iagrama de "lu#o del procedimiento ingreso9
!iagrama de "lu#o del procedimiento ingreso9
Pg. 4%
Programacin con PSeInt
Si miramos este diagrama de "lu#o o el pseudocdigo: en la "uncin Potencia se
declaran una (aria)le I Aue es para el ciclo - la otra resp Aue es para el clculo
de la potencia: la cual usaremos como acumulador de la multiplicacin de la
potencia: - despus de la (aria)le resp: a su (eB despus de la pala)ra cla(e
Su)Proceso : Aue es lo Aue nos de(uel(e el (alor : - lo asigna en a la (aria)le pot
en el programa principal: cuando usamos la instruccin pot,-potencia2base Por
7e%erencia9 e#po Por 7e%erencia4:+
'n conclusin las "unciones siempre nos retornaran un (alor Aue es producto de
uno o ms clculos: - se de(uel(e el (alor de la (aria)le Aue pusimos despus de
la pala)ra cla(e Su)Proceso.
E&emplo de planilla 2SubProcesos con y sin retorno4
Se ingresan el nom)re: las (entas - la Bona del empleado usando un
procedimiento: luego se calcula el la comisin en )ase a la Bona de tra)a#o : i7ss
- total a pagar: luego se presentan los datos.
Pg. 4,
Programacin con PSeInt
Nota:
se de#er de usar un su#proceso con retorno para "os c"cu"os / "a
presentacin de "os datos.
Hsar un su#proceso con retorno para e" ca"cu"o de" i2ss.
Hsar un su#proceso con retorno para e" ca"cu"o de "a comisin.
Subproceso de ingreso
'n este su)proceso sin retorno se ingresan los datos: (alidando Aue la Bona solo
sea ,:5:.
Subproceso de c*lculo
Se calcula la comisin e i7ss usando los su)procesos sin retorno declarados
anteriormente : luego el total a pagar: algo Aue de)emos de notar es Aue las
(entas - la Bona se pasan como parmetros de (alor - las dems i7ss: comis - tp
como parmetros de (aria)le porAue necesitamos modi"icar su (alor
SubProceso presentar
Presentamos los clculos - pasamos las (aria)le como parmetros de (alor:
porAue solo los necesitamos presentar
SubProceso %i3ss () seguroDcomisE
Deinir Ni3ss !omo 4eal;
Si comis 12#22 Entonces
%i3ss() 6#;
Sino
%i3ss()2,275 * comis;
FinSi
FinSubProceso
SubProceso %comis () comisionD:ona&%entasE
Deinir %comis como 4eal;
Segun :ona @acer
<'< A %comis()2,25*%entas;
<$< A %comis()2,2=*%entas;
<!< A %comis()2,2>*%entas;
Pg. 54
Programacin con PSeInt
FinSegun
FinSubProceso
SubProceso ingreso Dnombre Por 4eerencia &:ona Por 4eerencia & %entas
Por 4eerenciaE
Escribir "Ingresar el nombre ";
"eer nombre;
Escribir "Nentas mensuales ";
"eer %entas;
4epetir
Escribir "?ona '&$&! ";
"eer :ona;
@asta Mue :ona ;<$< C :ona ;<!< C :ona ;<'<
FinSubProceso
SubProceso calculos D:ona& %entas& comis Por 4eerencia& i3ss Por
4eerencia&tp Por 4eerenciaE
comis()comisionD:ona&%entasE;
i3ss()seguroDcomisE;
tp()comis)i3ss;
FinSubProceso
Subproceso presentar Dcomis&i3ss&tpE
Escribir " !omisi9n "&comis;
Escribir " Seguro Social "& i3ss;
Escribir " 8otal a pagar "& tp;
FinSubProceso
Proceso principal
IngresoDnombre&:ona&%entasE;
!alculosD:ona&%entas&comis&i3ss&tpE;
PresentarDcomis&i3ss&tpE;
FinProceso
@os su)procesos con retorno los declaremos antes de los su)procesos sin
retorno porAue estas se usaran en el su)proceso sin retorno clculos: - es ms
legi)le al momento de leer un programa: pero: a los e"ectos de la e#ecucin:
PSeInt: no tiene en cuenta el orden del proceso - de los su)procesos
Nota: +n sinta!is estricta( "a *aria#"e de retorno de#e ser dec"arada
Pg. 51
Programacin con PSeInt
$imensiones
's una .oleccin de datos del mismo tipo: Aue se almacenan en posiciones
consecuti(as de memoria - reci)en un nom)re comLn.
R para re"erirse a un determinado elemento tendremos de acceder usando un
<ndice para especi"icar la posicin Aue Aueremos e8traer o modi"icar su (alor. @as
dimensiones pueden ser9
$J>nidimensionales9 solo tiene una solo dimensin una "ila - una columna
*J5idimensionales9 ta)las o matrices.
3JMultidimensionales9 de 3 o ms dimensiones.
$imension de I $imensin
!eclaracin9
$imension "Nom$re de la dimension% 1,capacidad%2&
$e%inir ,.ombre de la 'ariable de la dimension; "omo ,tipo de la
'ariable;:
"apacidad: es el tama^o de la dimension: es un nLmero entero con el cual
indicamos el nLmero de elementos Aue Aueremos guardar con el mismo tipo.
<ipo de datos: es el tipo de datos Aue Aueremos Aue sea la coleccin: puede ser
entero: real: cadena: carcter o un registro.
.ombre de la 'ariable: es el nom)re con el cual (amos a ser re"erencia en el
programa principal
Nota: +n sinta!is estricta( se de#e definir siempre "a *aria#"e antes o despu9s de
dimensionar"a. ; diferencia de otros "engua1es de programacin( dimensionar una
*aria#"e no imp"ica dec"arar"a.
'#emplo9
Pg. 52
Programacin con PSeInt
!imension numero S$%TH
.on esta declaracin estamos creando una coleccin de $% nLmeros enteros
3 4 0 3 / 6 * 4 /4
% $ * 3 4 / 4 0 6
Nota: ;" igua" &ue en "os "engua1es de programacin rea"es( en sinta!is estricta(
"a #ase de "a dimensin es 4( pero en sinta!is f"e!i#"e o perfi" f"e!i#"e es #ase 1.
Para uti"i)ar dimensiones *aria#"es de#emos 2a#i"itar "a opcin( permitir uti"i)ar
*aria#"es para dimensionar arreg"os en "as opciones de" perfi".
Siempre Aue nosotros Aueremos 7acer re"erencia a uno de los elementos de la
dimension: tendremos Aue indicar la posicin: con un nLmero entero Aue este
dentro del rango.
Seguidamente de"inimos el tipo de dimensin9
!e"inir numero .omo 'ntero9
Si Aue Aueremos escri)ir el (alor de posicin 4 tendremos Aue escri)ir9
Escribir numero[7]; 33 de esta indicamos escri#ir "a posicin $
o
I<- 7 55asignamos un *a"or a una *aria#"e de tipo entero
Escribir numero[ 0 ]; 55 "uego usamos "a *aria#"e I para indicar "a posicin
&ue &ueremos presentar.
DD Si deseamos asignar (alores a un elemento de la dimension lo podremos
DD 7acer9

Leer numero[2]; DD indicamos directamente la posicin Aue Aueremos leer
I,-6 DD ,signamos un (alor a una (aria)le entero - luego la usamos
Pg. 53
Programacin con PSeInt
Leer numero[ i ]; DD para indicar la lectura de elemento Aue Aueremos leer
E&emplo
Ingresar => n?meros a una dimension de => elementos y luego presentar los
n?meros+
'n este programa tendremos Aue usar un ciclo Aue la (aria)le I tome un (alor de
%..6: para leer los (alores o asignar (alores a la dimension: luego usaremos otro
ciclo para presentar los datos.
.uando guardamos los datos en una dimension: sus (alores son almacenados en
la memoria - no se )orrar despus al leer el siguiente numero: como en los
programas anteriores: cuando us)amos una (aria)le para ingresar $% nLmeros:
pero la (aria)le al "inal del ingreso solo guarda)a el ultimo numero Aue se
introdu#o: a7ora con los arreglos se guardan los $% nLmeros en la memoria.
Nota: Si PSeInt est configurado para tra#a1ar en #ase 4 / se define una
dimensin con "a misma cantidad de e"ementos &ue de dec"ara e" 0"timo
e"emento ingresado no *a a tener posicin de memoria en "a dimension
ingresada. +sto "o podemos cam#iar persona"i)ando e" perfi" o uti"i)ando sinta!is
f"e!i#"e.
II programa de ingreso de +2 n0meros a una dimension
Proceso dimension_+2
Dimension numero[+2];
Deinir numero !omo Entero;
Deinir I !omo Entero;
Para I () 2 @asta > !on Paso + @acer
Escribir "Ingrese el n0mero de la posO "& I &",,,,A";
"eer numero[I];
FinPara
Para I () 2 @asta > @acer
Escribir numero[I];
FinPara
FinProceso
Pg. 54
Programacin con PSeInt
E&emplo
Ingresar el nombre del empleado en una dimension y el sueldo en otro
dimension9 luego de ingresar los datos determinar el i@ss9 el total a pagar
para cada uno de los empleados+
'n este programa se almacena el nom)re del empleado - el sueldo en dos
arreglos di"erentes el nom)re en un arreglos de cadena - el sueldo en una
dimension de tipo real: primero se ingresa los datos en la dimension luego se
calculan los datos en otro ciclo con el "in de en"atiBar Aue los arreglos guardan los
datos en la memoria durante el programa "unciona - los podemos usar despus
de ingresados los datos : lo Aue antes no pod<amos 7acer pues al ingresar el
elemento $% en la (aria)le solo ese pod<amos guardar : es por ello Aue los
clculos se 7ac<an en el mismo ciclo.
Proceso dimension_empleado
Dimension nombre[5];
Deinir nombre !omo !adena;
Dimension sueldo[5];
Deinir sueldo como Entero;
Deinir i3ss&tp !omo 4eales;
Deinir I !omo Entero;
Para I () 2 @asta # @acer
Escribir "-ombre del empleado ["&i&"],,A";
"eer nombre[i];
Escribir "Sueldo del empleado ,,,A";
"eer sueldo[i];
FinPara
Para I () 2 @asta # @acer
Si sueldo[i]12#22 Entonces
i3ss()6#;
Sino
i3ss()2,275*sueldo[i];
FinSi
tp()sueldo[i])i3ss;
Escribir "-ombre ,,,A"& nombre[i];
Escribir "Sueldo ,,,A"&sueldo[i];
Pg. 55
Programacin con PSeInt
Escribir "I3ss ,,,A"&i3ss;
Escribir "8otal pagar,,A"&tp;
FinPara
FinProceso
Nota: Para poder uti"i)ar dimensiones de dimension *aria#"e es necesario
2a#i"itar perfi" f"e!i#"e en e" editor.
/so de arreglos como par*metros en los subprocesos y %unciones
'n el e#emplo Aue: se presenta se demuestra el uso de los arreglos en los
su)procesos - parmetros: el e#emplo muestra un su)proceso sin retorno para el
ingreso de datos a una dimension de nLmeros enteros: luego se usa una
"uncin de ma-or Aue nos de(uel(e el nLmero de la dimension.
SubProceso nummaFor () maFor DnumE
Deinir nummaFor& i !omo Enteros;
nummaFor()2;
Para i ()2 @asta # !on Paso + @acer
Si num[i]1nummaFor Entonces
nummaFor()num[i];
FinSi
FinPara
FinSubProceso
SubProceso ingreso DnumE
Deinir i como Entero;
Para i ()2 @asta # @acer
Escribir "Ingresar un n0mero ";
"eer num[i];
FinPara
FinSubProceso
Proceso Principal
Dimension num[5];
Deinir num& maJ !omo Enteros;
IngresoDnumE;
MaJ()maForDnumE;
Escribir "MaFor "& maJ;
FinProceso
Nota: Por defecto( "os arreg"os siempre se pasan por 'eferencia. o intentes
Pg. 56
Programacin con PSeInt
pasar"o por *a"or o pro*ocaras un error.
uncin mayor
'n esta "uncin se determina el numero ma-or comparando los nLmeros Aue se
ingresan: cuando se inicia la "uncin numma-or (ale cero pero supongamos Aue
ingresamos en el arreglos 3JJ4J*J0
.uando el elemento uno de la dimension se compara con 3: 7a- una nue(a
asignacin para numma-or Aue es 3: cuando se compara con el 3 es menor al
7a- una nue(a asignacin a numma-or es : cuando se compara con 4 el no
es menor al cuatro: as< Aue nummarot no se asigna ningLn (alor - se Aueda con
el a7ora cuando se compara con 0 numma-or se le asigna el 0 porAue el es
menor a 0.
?um
?umma-or
cuando numS%T es 3 'ntonces (ale 3
cuando numS%T es 'ntonces (ale
cuando numS%T es 4 ?o 7a- cam)io - sigue (aliendo
cuando numS%T es * ?o 7a- cam)io - sigue (aliendo
cuando numS%T es 0 'ntonces (ale 0
$imension de II $imensin 2Aidimensional4
!eclaracin9
$imension "Nom$re de la #aria$le% B"L4neas%- "Columnas%C&
Tambin se les denomina matrices o tablas. Una dimension bidimensionales una tabla
que ahora tiene lneas y columnas, donde las lneas indican la primera dimensin y las
columnas la segunda dimensin.

% $ * 3
Pg. 5$
Programacin con PSeInt
%
$
*
3
4
@a ta)la Aue se muestra nos representa un dimension de * dimensiones con
l<neas - 4 columnas: el cdigo para declarar este dimension ser<a9
Dimension numero[5&#];
@a re"erencia a un determinado elemento de la matriB: reAuiere el empleo de un
primero su)<ndice Aue indica la "ila - el segundo Aue indica la columna. ,m)os
su)<ndices de)ern de ser de tipo entero.
Por e#emplo si Auisiramos guardar el (alor de 3% el la l<nea 4 columna 3 el
cdigo en PSeInt ser<a9
-umero[#&7]()72;
'l Siguiente e#emplo nos muestra como ingresar datos a una dimension de
l<neas - 4 columnas para luego presentar los datos en la pantalla9
Proceso dimension_5_lineas
Dimension numero[5&#];
Deinir numero !omo Entero;
Deinir "& ! !omo Enteros;
Para " () 2 @asta # !on Paso + @acer
Para ! () 2 @asta 7 !on Paso + @acer
Escribir "-0mero["& " & "&"& !& "]";
"eer numero["&!];
FinPara
FinPara
"impiar pantalla;
Para " () 2 @asta # con Paso + @acer
Pg. 5%
Programacin con PSeInt
Para ! () 2 @asta 7 !on Paso + @acer
Escribir numero["&!]&" " Sin $a5ar;
FinPara
Escribir "";
FinPara
FinProceso
'n este programa usamos dos (aria)les enteras @ Aue se usa para las l<neas -
. Aue se usa para las columnas: usamos ciclos anidados porAue necesitas
recorrer por cada l<nea: todas las columnas: esto sucede as<9
.uando la @ tiene el (alor de $ la . toma el (alor de $ a 4 esto 7ace Aue se
puede leer el elemento ?umero S$:$T: ?umero S$:*T: ?umero S$:3T: ?umeroS$:4T
luego cuando la @ tiene el (alor de * entonces la l (uel(e a iniciar de $ a 4
7aciendo lo mimo (eces Aue es el nLmero de las l<neas.
Suma de l<neas - columnas de un dimension 5idimensional
'l programa Aue se presenta: ingresa los datos - los presenta usando un
su)proceso sin retorno.
Nota: o 2a/ 8o"umna ni fi"a 4
SubProceso sum () Suma"inea Dnumero& lineaE
Deinir sum& ! !omo Enteros;
sum()2;
Si linea1;+ C linea(;5 Entonces
Para !()+ @asta # !on Paso + @acer
sum()sum / numero [linea)+&!)+];
FinPara
FinSi
FinSubProceso
SubProceso sum () Suma!olumna Dnumero& colE
Deinir sum& " !omo Entero;
sum()2;
Si col1;+ C col(;# Entonces
Para "()+ @asta 5 !on Paso + @acer
sum()sum / numero [")+&col)+];
FinPara
FinSi
FinSubProceso
Pg. 5,
Programacin con PSeInt
SubProceso ingresoDnumeroE
Deinir "&! !omo Enteros;
Para " () + @asta 5 !on Paso + @acer
Para ! () + @asta # !on Paso + @acer
Escribir "Ingresar un n0mero ,,A";
"eer numero[")+&!)+];
FinPara
Escribir "";
FinPara
FinSubProceso
SubProceso presentar DnumeroE
Deinir "& ! !omo Enteros;
"impiar pantalla;
Para " () 2 @asta # @acer
Para ! () 2 @asta 7 @acer
Escribir numero["&!]&" " Sin $a5ar;
FinPara
Escribir "";
FinPara
FinSubProceso
Proceso principal
Dimension numero[5&#];
Deinir numero !omo Entero;
Deinir linea&col&suma!&suma" !omo Enteros;
IngresoDnumeroE;
PresentarDnumeroE;
Escribir ""Pnea a sumar";
"eer linea;
Escribir "!olumna a sumar";
"eer col;
suma"()suma"ineaDnumero&lineaE;
suma!()suma!olumnaDnumero&colE;
Escribir "Suma de la columna "& col& " es "& suma!;
Escribir "Suma de la lPnea "& linea& " es "& suma";
FinProceso
Nota!: .os arreg"os de" parmetro no se dec"aran en e" su#proceso( por&ue
siempre son por referencia. 3e "o contrario aparecer un carte" &ue dice o se
de#e redefinir e" tipo de argumento.
Pg. 64
Programacin con PSeInt
Nota: .os arreg"os de" parmetro( tanto cuando se pasan "os arreg"os a otro
proceso5su#proceso( como cuando se 2ace referencia a" su#preoceso desde e"
proceso principa" no se especifica su capacidad.
In%ormacin terica
7egistros o estructuras
Nota: +sta es Informacin terica( PSeInt no soporta registros.
>n registro es un dato estructurado: "ormado por elementos lgicamente
relacionados: Aue pueden ser del mismo o de distintos tipos: a los Aue se les
denomina campos. @os campos de un registro podr<an ser de los tipos
pre(iamente de"inidos por PSeInt Kentero : real etc.E o )ien por un registro
de"inido anteriormente
E&emplo: demostracin de registros
'n este programa usaremos un registro para guardar la in"ormacin del alumno
usando un registro Aue se llama alum.
@uego tendremos Aue declarar una (aria)le Aue sea del tipo registro: se llama
alum: despus usaremos esa (aria)le para pedir los datos : siempre Aue
Aueremos acceder a un registro se 7ace
3egistro.Naria)leH
'ntonces si Aueremos acceder a nom)re escri)ir<amos
,lum.nom)reH
,lum porAue as< se llama la (aria)le Aue es de tipo registro rePalumno .
4egistro 'lum
Dimension nombre[72];
Deinir nombre como !adena;
Dimension carrera[72];
Deinir carrera como !adena;
Deinir cuenta !omo Entero;
Fin4egistro
Proceso principal
Escribir "el nombre del 'lumno ";
"eer 'lum,nombre;
Pg. 61
Programacin con PSeInt
Escribir "!uenta del 'lumno";
"eer 'lum,cuenta;
Escribir "carrera Que estudia ";
"eer 'lum,carrera;
Escribir " El alumno "& 'lum,nombre;
Escribir " !on cuenta "& 'lum,cuenta& " Estudia "&
'lum,carrera;
FinProceso
,7ora lo ms importante es Aue podamos usar registros como parmetros en los
su)procesos con retorno - sin retorno para 7acer mas "cil el pasar in"ormacin
como parmetro.
E&emplo registros con subprocesos
Se desea ela)orar un programa donde se ingrese el nom)re del alumno : la nota
acumulada: e8amen: nota "inal - o)ser(acin: luego Aue se determine la nota
"inal - o)ser(acin.
>saremos un registro para guardar la in"ormacin: un su)proceso sin retorno
para el ingreso de datos : otro para calcular la nota "inal - la o)ser(acin Kse
usara una "uncin para el calculo de la o)ser(acinE.
Siempre de)emos de tomar en cuanta cuales son los parmetros de (aria)le - de
(alor: en este programa usa en los su)procesos ingreso - calculo de (aria)le - en
presentar de (alor porAue no se modi"ica ninguna (aria)le.
II declaraci9n del registro
4egistro alum
Dimension nombre[72];
Deinir nombre !omo !adena;
Deinir na&ne&n !omo 4eales;
Dimension obs[+2];
Deinir obs !omo !adena;
Fin4egistro
SubProceso %obs () obser%acion D%obs& notaE
Deinir %obs como !adena;
Si nota1; =2 Entonces
Pg. 62
Programacin con PSeInt
%obs()"aprobado";
Sino
%obs()"reprobado";
FinSi
FinProceso
SubProceso ingresoDalumE
Escribir " Ingresar el nombre ";
"eer alum,nombre;
Escribir "Ingresar la nota eJamen ";
"eer alum,ne;
Escribir "Ingresar la nota acumulada ";
"eer alum,na;
FinsubProceso
SubProceso calculoDalumE
alum,n()alum,na / alum,ne;
alum,obs()obser%acionDalum,nE;
FinSubProceso
SubProceso presentarDalumE
Escribir "-ota Final "&alum,n;
Escribir "Bbser%aci9n "&alum,obs;
FinSubProceso
Proceso principal
Para I() + @asta 5 @acer
ingresoDalumE;
calculoDalumE;
presentarDalumE;
FinPara
FinProceso
$imensiones con registros
Nota: Informacin terica
=asta a7ora nuestros arreglos solo 7an guardado un solo datos -a sea real:
entero cadena o caracter: cuando se Auiere guardar ms de un dato en una
casilla de la dimension se declara un registro - la dimension se declara Aue es
del tipo registro Aue declaramos .
Pg. 63
Programacin con PSeInt
'#emplo9
4egistro emple
Deinir codigo !omo Entero;
Dimension nombre[72];
Deinir nombre como !adena;
Fin4egistro
!9digo !9digo !9digo !9digo !9digo
-ombre -ombre -ombre -ombre -ombre
+ 2
7
#
5
!eclaramos el registro empleado - luego declaramos la dimension Aue ser de
tipo empleado a7ora para acceder al dimension 9
@ectura de datos
Escribir "Ingresar -ombre del Empleado ";
"eer emple[7],nombre;
Escribir "Ingresar el codigo de registro ";
"eer emple[7],codigo;
,l momento de leer : se tiene Aue especi"icar la posicin de la dimension Aue
deseo leer empleK3E.nom)re nos indica Aue se leer de posicin 3 el nom)re.
'scri)ir datos
Escribir "-ombre del Empleado "& emple[7],nombre;
Escribir "!9digo de registro "& emple[7],codigo;
Igual Aue al leer los datos para escri)ir especi"icamos el elemento de la
dimension : del cual Aueremos presentar los datos del registro
E&emplo dimensiones con registro+
Pg. 64
Programacin con PSeInt
'n este e#emplo declaramos el registro: luego se declara la dimension de tipo
registro: se ela)ora un su)proceso sin retorno para el ingreso de los datos de la
dimension - otro para presentar los registros de la dimension.
.uando declaramos Dimension[5] empleado; - despus Deinir empleado !omo
emple; en el su)proceso de ingreso nos re"erimos a Aue temeos un dimension de
elementos Aue es de tipo empleado Kel registroE - Aue la (aria)le se llama
emple.
'n am)os su)procesos se recorre la dimension - luego por cada una de las
posiciones de la dimension se lee el nom)re - el cdigo. K3e(isar en S@eE
4egistro Empleado
Deinir codigo !omo Entero;
Dimension nombre[72];
Deinir nombre como !adena;
Fin4egistro
Proceso Ingreso DempleadoE
Deinir i !omo Entero;
Para i () 2 @asta 5 @acer
Escribir "ingresar -ombre del Empleado ";
"eer emple[i],nombre;
Escribir "Ingresar el codigo de registro ";
"eer emple[i],codigo;
FinPara
FinProceso
SubProceso Presentar DempleadoE
Deinir i !omo Entero;
"impiar Pantalla;
Para i () 2 @asta # !on Paso + @acer
Escribir "-ombre del Empleado "&emple[i],nombre;
Escribir "!9digo de registro "& emple[i],codigo;
FinPara
FinProceso
Proceso principal
IngresoDempleE;
PresentarDempleE;
FinProceso
Pg. 65
Programacin con PSeInt
E&emplo de dimensiones con registro+
'n este e#emplo declaramos el registro luego: se declara la dimension de tipo de
tipo registro alumno : luego usamos una "uncin para determinar la o)ser(acin :
no se introduce todo el registro porAue solo se ocupa un dato : para determinar la
o)ser(acin : luego en el procedimiento de calculo al momento de en(iar la nota
para usar la o)ser(acin indicamos el elemento de la dimension - la parte del
registro Aue Aueremos en(iar Aue es la nota9
alum[i],obs()obser%acionDalum[i],nE;
II declaraci9n del registro
4egistro reg_alumno
Dimension nombre[72];
Deinir nombre !omo !aracter;
Deinir na&ne&n !omo 4eales;
Dimension obs[+2];
Deinir obs !omo !adena;
Fin4egistro
II declaraci9n de la dimension de tipo
4egistro dimension[=] () reg_alumno 'lum;
SubProceso %obs () obser%acion
Deinir nota !omo 4eal;
Dimension %obs[+2];
Deinir %obs !omo !adena;
Si nota1; =2 Entonces
%obs()"aprobado";
Sino
%obs()"reprobado;
FinSi
FinSubroceso
SubProceso ingresoDalumE
Deinir i !omo Entero;
Para i ()2 @asta 5 @acer
Escribir " Ingresar el nombre ";
"eer alum[i],nombre;
Escribir "Ingresar la nota eJamen ";
"eer alum[i],ne;
Pg. 66
Programacin con PSeInt
Escribir "Ingresar la nota acumulada ";
"eer alum[i],na;
FinPara
FinSubProceso
SubProceso calculoDalumE
Deinir I !omo Entero;
Para i () 2 @asta 5 @acer
alum[i],n()alum[i],na / alum[i],ne alum[i],obs()
obser%acionDalum[i],nE;
FinPara
FinSubProceso
SubProceso presentar DalumE
Dimension[5] de reg_alumno alum;
Deinir i !omo Entero;
Para i () 2 @asta 5 @acer
Escribir "-ombre del alumno "&alum[i],nombre;
Escribir "-ota Final "&alum[i],n;
Escribir "Bbser%aci9n "&alum[i],obs;
FinPara
FinSubProceso
Proceso Principal
IngresoDalumE;
!alculoDalumE;
PresentarDalumE;
FinProceso
E&emplo arreglos con registro+
Se declara un registro con las (aria)les de nom)re (entas: comisin i7ss - total a
pagar: se la)oran una "uncin para el seguro social: luego se ela)ora un
procedimiento de ingreso de datos donde se el nom)re - las (entas: despus el
procedimiento de calculo: donde se determina la comisin Aue es el W de las
(entas: el seguro usando la "uncin del Seguro - el total a pagar: luego se
presentan los datos usando un procedimiento.
4egistro Empleado
Pg. 6$
Programacin con PSeInt
Dimension nombre[72];
Deinir nombre !omo !adena;
Deinir %entas&comis&i3ss&tp !omo 4eales;
Fin4egistro
SubProceso seguro
Dimension[5] empleado;
Deinir empleado !omo emple;
Deinir sueldo !omo 4eal;
Si sueldo 12#22 Entonces
4etornar 6#;
Sino
4etornar 2,275*sueldo;
FinSi
FinSubProceso
SubProceso Ingreso DempleE
Dimension[5] empleado;
Deinir empleado !omo emple;
Deinir i !omo Entero;
Para i () + @asta 2 !on Paso + @acer
Escribir "ingresar -ombre del Empleado ";
"eer emple[i],nombre;
Escribir "Ingresar las %entas ";
"eer emple[i],%entas;
FinPara
FinSubProceso
SubProceso !alculoDempleE
Dimension[5] empleado;
Deinir empleado !omo emple;
Deinir I !omo Entero;
Para i () 2 @asta 2 !on Paso + @acer
emple[i],comis()emple[i],%entas*2,25;
emple[i],i3ss()seguroDemple[i],comisE;
emple[i],tp()emple[i],comis)emple[i],i3ss;
FinPara
FinSubProceso
SubProceso Presentar DempleE
Dimension[5] de empleado;
Deinir empleado !omo emple;
Pg. 6%
Programacin con PSeInt
Deinir i !omo Entero;
Para i () + @asta 2 @acer
Escribir "Empleado "&emple[i],nombre;
Escribir "";
Escribir "!omisi9n ,,A"& emple[i],comis;
Escribir "";
Escribir "Seguro Social,,A"& emple[i],i3ss;
Escribir "";
Escribir "8otal a Pagar ,,A"& emple[i],tp;
Escribir ""
Escribir "";
FinPara
FinSubProceso
Proceso principal
IngresoDempleE;
!alculoDempleE;
PresentarDempleE;
FinProceso
!ane&o $e Arc@i'os $e <e#to
Nota: Informacin terica
=asta esta parte: todos los resultados de los programas se )orran de la memoria
al terminar el programa: en este capitulo aprenderemos de "orma terica como
guardar<amos la in"ormacin en un arc7i(o de te8to para su posterior utiliBacin.
Sinta#is
$eclarar un tipo arc@i'o
!eclarar un tipo arc7i(o secuencial es necesario para : declarar (aria)le de este
tipo e#emplo 9
8ipo 'rc3 Es 'rc3i%o Secuencial;
Abrir un arc@i'o
Sinta8is
,)rir nom)reParc7i(o como (aria)le Spara lectura: escrituraT
e#emplo 9
Pg. 6,
Programacin con PSeInt
'brir "empleados,tJt" !omo 'rc3emple Para "ectura;
3escripcin
'sta instruccin sir(e para a)rir el arc7i(o. @as operaciones permitidas para el
arc7i(o son lectura: escritura o am)as. 'n la sinta8is (aria)le se re"iere a (aria)le
de tipo arc7i(o Aue se usar para re"erenciar el arc7i(o.
"errar un arc@i'o
Sinta8is
.errar (aria)le de tipo arc7i(o
'#emplo 9
!errar arc3emple;
!escripcin
'sta instruccin sir(e para cerrar un arc7i(o. Naria)le
)eer de un arc@i'o
Sinta8is
@eer (aria)leParc7i(o: (aria)lePdatos
e#emplo 9
"eer arc3emple&emple,nombre;
3escripcin
'sta instruccin lea una (aria)le desde un arc7i(o. @a primera (aria)le de la
instruccin de)e ser de tipo arc7i(o: la segunda puede ser de cualAuier tipo: eso
depender del tipo de arc7i(o.
Escribir en un arc@i'o
Pg. $4
Programacin con PSeInt
Sinta8is
'scri)ir (aria)leParc7i(o: (aria)lePdatosH
e#emplo 9
Escribir arc3emple& emple,nombre;
3escripcin
'sta instruccin escri)e una (aria)le en un arc7i(o. @a primera (aria)le de la
instruccin de)e ser de tipo arc7i(o: la segunda puede ser de cualAuier tipo: eso
depender del tipo de arc7i(o.
E&emplo Ingreso de datos a un arc@i'o secuencial 2te#to4+
@o primero Aue tenemos Aue 7acer es crear con CindoCs un arc7i(o de te8to :
con el notepad: - lo sal(amos con el nom)re de empleados : en el mismo
directorio donde sal(aremos el programa de ingreso de datos.
!eclaramos el tipo de arc7i(o secuencial
8ipo 'rc3 es arc3i%o secuencial;
luego el registro Aue usaremos para ingresar los datos
4egistro Empleado
Dimension nombre[52];
Deinir nombre !omo !adena;
Deinir sueldo !omo 4eal;
Deinir seJo como !aracter;
Fin4egistro
luego declaramos la (aria)le para mane#ar el arc7i(o de te8to: Aue de tipo arc7 -
la (aria)le de tipo registro
Deinir Empleado !omo emple;
Deinir 'rc3Emple !omo 'rc3;
Deinir resp como !aracter;
@uego en el programa lo primero Aue se 7ace es a)rir el arc7i(o para escritura:
Pg. $1
Programacin con PSeInt
luego se piden los datos - se sal(ar en el arc7i(o : al "inal se cierra el arc7i(o de
te8to: a7ora si nosotros Aueremos sa)er si guardo los datos : podremos a)rir
empleados con el notepad - (eremos los datos Aue se sal(aron en el arc7i(o.
8ipo 'rc3 Es 'rc3i%o Secuencial;
4egistro Empleado
Dimension[52] nombre;
Deinir nombre !omo !adena;
Deinir sueldo !omo 4eal;
Deinir seJo como !aracter;
Fin4egistro
Empleado
Deinir emple !omo 'rc3;
'rc3Emple;
Deinir resp como !aracater;
'brir "empleados,tJt" !omo arc3emple Para Escritura;
4epetir
Escribir "-ombre del emnpleado,,A";
"eer emple,nombre;
Escribir "Sueldo del empleado,,,A";
"eer emple,sueldo;
Escribir "SeJo ,,A";
"eer emple,seJo;
Escribir arc3emple& emple,nombre;
Escribir arc3emple& emple,sueldo;
Escribir arc3emple& emple,seJo;
Escribir "Desea !ontinuar ,,A";
"eer resp;
@asta Mue resp;"S" C resp;"-";
@asta Mue resp;<-<;
!errar arc3emple
FinProceso
E&emplo )istar el contenido de un arc@i'o secuencial 2te#to4+
Se declara el tipo del arc7i(o : el registro - las (aria)les para usar el registro - el
arc7i(o de te8to : luego se a)re el arc7i(o para lectura - se 7ace un ciclo mientras
no sea "in de arc7i(o : esto se logra con la "uncin ;!, Aue nos de(uel(e
(erdadero cuando se encuentra al "inal del arc7i(o - "also cuando no lo est .
Pg. $2
Programacin con PSeInt
Se usa la instruccin @eer : para recuperar los (alores Aue se guardaron en el
arc7i(o de te8to: luego usando un procedimiento se escri)en los (alores del
registro en la pantalla
Deinir 8ipo 'rc3 !omo 'rc3i%o Secuencial;
4egistro Empleado
Dimension nombre[52];
Deinir sueldo como 4eal;
Deinir nombre& seJo !omo !aracter;
Fin4egistro
Nariables globales
Deinir Empleado !omo emple;
Deinir 'rc3Emple !omo 'rc3;
Deinir Detener como !aracter;
FinNariablesRlobales
SubProceso presentarDempleado empleE
Escribir "-ombre del empleado ,,,A"&emple,nombre;
Escribir "";
Escribir "Sueldo,,,,A"&emple,sueldo&
Escribir "";
Escribir "SeJo,,,,,,A"&Emple,seJo;
Escribir "";
"eer detener;
FinSubProceso
Proceso principal
'brir "empleados,tJt" !omo arc3emple Para lectura;
Mientras SdaDarc3empleE @acer
"eer arc3emple&emple,nombre;
"eer arc3emple&emple,sueldo;
"eer arc3emple&emple,seJo;
"lamar presentarDempleE;
FinMientras;
!errar arc3emple;
FinProceso
Pg. $3
Programacin con PSeInt
Ane#o:
Editar diagramas de %lu&o
PSeInt permite editar el diagrama de "lu#o: luego editar los cam)ios: para Aue
pueda ser e#ecutado desde pseudocdigo.
,ccedemos al (editor de diagramas de "u#o llando a ,rc7i(o JM 'ditar diagramas
de "lu#o 9
'legimos un su)proceso - 7acemos clic en uno de ellos
=acemos clic en el proceso principal o cualAuera de los su)procesos: en este
caso el su)proceso Ingreso.
Pg. $4
Programacin con PSeInt
Se nos presenta una pantalla mostrando el diagrama de "lu#o correspondiente al
su)proceso Aue estamos e#ecutando.
, la derec7a encontramos una pesta^a Aue ocupa todo el lado derec7o de la
(entana.
.liAueamos so)re la misma.
Pg. $5
Programacin con PSeInt
Se nos presenta un di)u#o con las estructuras usadas: - lal costado iBAuierdo
in"erior aparece su nom)re.
Si Aueremos a^adir un nue(o )loAue al diagrama de "lu#o: lo Aue 7acemos es
cliAuear en un )loAue - sin soltar el )otn iBAuierdo del mouse arrastrarlo 7asta el
diagrama de "lu#o. Para "i#ar el )loAue: presionamos la tecla escape.
'n las sentencias escri)ir: el te8to se de)e poner entre comillas.
Duardar cambios
Para guardar los cam)ios: (amos al )otn Aue se encuentra al costado iBAuierdo
superior - 7acemos clic en guardar cam)ios.
?o se e#ecutan diagramas de "lu#o Aue no sean guardados.
Nota: Gam#i9n se pueden crear diagramas sin necesidad de escri#ir su
pseudocdigo correspondiente.
Nota: Por "a forma de tra#a1ar de" int9rprete de diagrama de f"u1o( 2a/
modicaciones en e" formato de" pseudocdigo( si se guardan "os cam#ios desde
e" editor de diagrama de de f"u1o( 2a/ modificaciones en e" pseudocdigo origina"(
Pg. $6
Programacin con PSeInt
por e1emp"o( pasado a ma/0scu"as( etc. +stos errores se pueden ir reso"*iendo a
medida &ue sa"gan nue*as *ersiones de PSeInt.
Aorrar PSeInt
PSeInt no dispone de un des instalador: por lo Aue de)emos eliminarlo
manualmente. Qeneralmente: no modi"ica el registro: por lo Aue no 7a- Aue 7acer
ninguna modi"icacin en el.
$E Namos a .9_Program ;iles K80/E: )uscamos la carpeta PSeInt - la
eliminamos.
*E !espus (amos a la carpeta con el nom)re Aue registramos en nuestra
mAuina - eliminamos la carpeta PSeInt Aue se encuentra en esa carpeta.
3E 'liminamos el acceso directo - reiniciamos la mAuina.
Abrir el cdigo %uente
'n estos )log se e8plica como lo Aue de)emos 7acer para a)rir el cdigo "uente
del programa9
5a#o @inu8

5a#o `indoCs
Pg. $$

También podría gustarte