Está en la página 1de 76

Programacin con PSeInt

Programacin en:
PSeInt
Original para LPP
Por Lic. Rommel Castillo Suazo
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
'3portacin a .
Instrucciones de ciclo
.iclo Mientras */
.iclo Para 3*
o .iclos ,nidados 3*
o .iclo Para negati(o 34
.iclo 4epetir
35
Su)Procesos 4%
Parmetros de entrada o (alor
Parmetros de (aria)le
Su)Procesos con retorno 4/
!imensiones
!imension de una !imensin %
!imensiones 6idimensionales 5
'structuras (Informacin terica) 7
& !imensiones con estructuras /$
Pg. 2
Programacin con PSeInt
,rc8i(os de te3to (Informacin terica) /*
,ne3o9
'ditor de diagramas de "lu#o
!es instalar 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 sinta3is
de un lengua#e de programacin (erdadero.
PSeInt inclu-e en su editor di(ersas 8erramientas 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.ppt3
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: 8aciendo
giros: etc.: (iolando los derec8os 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 e3tensa a-uda: Aue (alga la redundancia a-uda a aprender a
usarlo: - a aprender el lengua#e.
Pg. 4
Programacin con PSeInt
E 'st disponi)le su cdigo "uente: - con instrucciones para e#ecutarlo: de
modo Aue si sa)emos .GG podremos personaliBarlo - corregirlo.
/E Posee e3portacin a .: .GG - otros lengua#es para Aue podamos (er el
mismo cdigo en . - otras lengua#es: lo Aue a-uda a aprender . - otros
lengua#esH
5E Se trata de un compilador Aue compila automticamente: el arc8i(o -a (iene
guardado en disco para ser e#ecutado: 8aciendo ms cmodo su uso.
Instalacin
,)rir el arc8i(o I pseintJCinJ3*J33333333.e3e I K3333 es nLmero de la (ersin
actualE: el cual ser proporcionado por la pgina del pro-ecto: al 8acer do)le clic
se e#ecuta el instalador.
@uego presionamos siguiente JM siguiente - as< sucesi(amente 8asta 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 sinta3is "le3i)le la
usamos para e#ecutar ciertos cdigos Aue reAuieren ms "le3i)ilidad a la
8ora de e#ecutarse. , menos Aue se indiAue Aue se usa sinta3is "le3i)le: se
utiliBar la sinta3is 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 8emos a)ierto PSeInt - 8a)iendo con"igurado sinta3is estricta:
este nos presenta una pgina Aue dice Inicio sinPtitulo - ;inProceso: entre
estas dos l<neas escri)iremos nuestro primer programa9
@uego lo guardamos
'scri)imos el nom)re del programa en la (entana Aue nos aparece - luego
Pg. $
Programacin con PSeInt
presionamos Quardar .omo... .
,8ora Aue los 8emos guardado necesitamos: Aue nuestro programa "uncione -
escri)a en la pantalla >nitec: aunAue PSeInt su)ra-e con ro#o los errores de
sinta3is: tam)in es )ueno (eri"icar sinta3is para (er los errores. Para ello
(amos a e#ecutar: O (eri"icar sinta3is. !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: 8asta 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 ;79
Si la e#ecucin se realiB con 3ito correcta al "inal aparecer un mensa#e
diciendo Aue el programa se e#ecut correctamente.
Pg. %
Programacin con PSeInt
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. 4ecordar Aue nom)re del pseudocdigo en ninguna sinta3is
puede tener espacios - en sinta3is estricta tampoco caracteres acentuados. ?o
con"undir el nom)re del proceso con el del arc8i(o en pseudocdigo.
@a pala)ra reser(ada Escribir escri#e en "a panta""a "o &ue est encerrado entre
comi""as. 'n sinta3is "le3i)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
Proceso concatenar
Escribir "Mi primer programa ";
Escribir " en PSeInt ";
Pg. ,
Programacin con PSeInt
FinProceso
@a salida del programa es
Mi primer programa en PSeInt
'sto porAue el "inal de la l<nea 8ace un retorno - )a#a a la siguiente: a8ora si
Auisiramos escri)ir9
Mi primer programa
En PSeint
'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 el contenido de una
cadena de te3to - el contenido del pr3imo 'scri)ir se escri)e en la primera l<nea.
4ecordar Aue en sinta3is estricta la colocacin del punto - coma al "inal de las
sentencias es o)ligatoria: en "le3i)le en opcional.
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.
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.
Nota - +n sinta!is estricta( "as sentencias siempre fina"i)an en punto / coma.
Pg. 14
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. 11
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 cmo editar diagramas de f"u1o.
$eclarar 'ariables
'n sinta3is estricta: siempre Aue necesitemos 8acer 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.
*. 4eal 9 nLmeros con ci"ras decimales.
3. .aracter 9 cuando Aueremos guardar un carcter.
4. @ogico 9 cuando necesitamos guardar una e3presin lgica
K(erdadero o "alsoE
. .adena9 cuando Aueremos guardar cadenas de caracteres.
Nota: 8adena / 8aracter son t9rminos e&ui*a"entes( no genera error &ue "as
escri#amos indistintamente.
'#emplos de declaracin de (aria)les9
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 sinta3is 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 sinta3is estricta las (aria)les no pueden tener caracteres
acentuados
?om)re seria una (aria)le Aue guardar<a solo * caracteres aunAue tL puedes
Pg. 12
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 e3presiones
U +perador para e3ponenciacin
V +perador de multiplicacin
D +perador de di(isin
W Mod +perador de clculo de residuo
truncK(alor$ D (alor*EH Sinta3is de di(isin entera
2 - +perador lgica -
G +perador de suma
J +perador de 4esta
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. 13
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
m3imo: ingresa el nom)re - luego escri)e en la pantalla 6ien(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. 14
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 en la (aria)le aumento - luego presenta el nue(o
sueldo.
!iagrama de "lu#o9
Pg. 15
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 ms un espacio en )lanco mas el
apellido - lo guardamos en una (aria)le donde a8ora 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. 16
Programacin con PSeInt
Instrucciones condicionales
,nteriormente 8emos estado 8aciendo programas Aue solo 8acen clculos: pero
la programacin es ms interesando cuando nuestros programas toman sus
propias decisiones: en PSeInt e3isten instrucciones condicionales Aue se
descri)en a continuacin 9
Instruccin Si9
sinta3is
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 8ace nada .
Pg. 1$
Programacin con PSeInt
Ejemplo so$re decisiones
Ingresar el nom)re del empleado: las 8oras tra)a#adas: luego .alcular pago
)ruto K% lps la 8ora 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 clculo del i8ss 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 : a8ora esto nos a-uda a Aue nuestros
programas puedan tomar una decisin cuando la condicin se cumple - otra
cuando no se cumple.
,8ora en el siguiente e#ercicio Aue se presenta : -a no 8a- dos soluciones a la
condicin sino tres: cuando sucede esto se usan condiciones anidadas.
Pg. 1%
Programacin con PSeInt
Sinta3is 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
6 0W
. 7W
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. 1,
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 " !omisi9n ganada " & comis;
Escribir " Seguro Social " & i3ss;
Escribir "8otal a pagar " & tp;
FinProceso
'n este programa usamos decisiones anidadas para el clculo de la comisin
del empleado : esto porAue se ten<an (arias opciones de la cuales elegir .
'l ultimo sino donde la comisin es % se 8ace 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. 24
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.
Sinta3is
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 8a- (arios: tal como aparece en
la sinta3is (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. 21
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:
a8ora usaremos una estructura SegLn.
Para eso 8a)ilitamos sinta3is "le3i)le -endo a personaliBar lengua#e O
PersonaliBar[ O >tiliBar sinta3is "le3i)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 " !omisi9n ganada " & comis;
Escribir " Seguro Social " & i3ss;
Escribir "8otal a pagar " & tp;
FinProceso
Pg. 22
Programacin con PSeInt
,8ora 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 8acen (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
,8ora 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 :
a8ora 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. 23
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. 24
Programacin con PSeInt
.omo (emos: el proceso es tan largo: Aue aparece con la letra mu- c8ica: para
Aue se (ea ms grande mo(emos el scroll 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 8acen (erdadera. '#emplo
E&emplo sobre el operador 3
Se ingresa un nLmero - se desea sa)er si dic8o 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. 25
Programacin con PSeInt
Escribir " Fuera del rango 52 F +22";
FinSi
FinProceso
E#portacin a "
PSeInt puede e3portar el programa el algoritmo a .: .GG - otros lengua#es.
Qenera un arc8i(o con la e3tensin .c. ?o es necesario guardar pre(iamente el
arc8i(o en pseudocdigo para Aue se e3porte a ..
Simplemente (amos a ,rc8i(o O '3portar - seleccionamos .on(ertir el cdigo
a . KcE.
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 8ec8o 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 8asta 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
Pg. 26
Programacin con PSeInt
Ingresar $% nom)res
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.
Pg. 2$
Programacin con PSeInt
Ejemplo so$re el ciclo Mientras usando acumuladores
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: 8ace 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 8asta 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.
Pg. 2%
Programacin con PSeInt
Ingresar el nom)re del cliente: el precio del producto: cantidad - luego calcular el
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 ms adelante.
Ejemplo so$re estructuras de condici*n dentro del ciclo Mientras.
Pg. 2,
Programacin con PSeInt
Ingresar el nom)re del alumno: la nota e3amen - nota acumulada: luego calcular
la nota "inal: - presentar la nota "inal - la o)ser(acin del alumno.
Preguntar si desea continuar: al "inal presentar el nLmero 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;
Escribir "8otal de aprobados" & ca;
FinProceso
Nota: .as *aria#"es no pueden dec"ararse inicia"i)adas( se dec"aran primero / se
Pg. 34
Programacin con PSeInt
inicia"i)an despu9s.
.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 8ace lo contrario: escri)ir repro)ado e incrementar
el contador.
Pg. 31
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.
5ariable : es de tipo entero
5alor_inicial 9 este puede ser un nLmero entero o una (aria)le
entera. 5alor_%inal : este puede ser un nLmero entero o una (aria)le
entera.
Paso 9 este puede ser 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 nLmero 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< 8asta llegar al "inal Aue es $%.
Pg. 32
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
,8ora el programa se (uel(e ms dinmico: nosotros podemos indicar el nLmero
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 c.lculo del /actorial de un n+mero.
Proceso ciclo_Para_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 $3*33.
!iagrama de "lu#o9
Pg. 33
Programacin con PSeInt
Ciclos in#erso
PSeInt tam)in puede realiBar ciclos in(ersos 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. 34
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 8aga (eces el ciclo Aue est 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. 35
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 8a acumulado el (alor del "actorial
anterior.
,8ora 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. 36
Programacin con PSeInt
"iclo 6epetir
Sinta#is:
4epetir
InstruccionesH
=asta Que condicin
$escripcin
'l ciclo 4epetir es lo contrario al ciclo Mientras: en ste la e#ecucin se lle(a a
ca)o 8asta 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 4epetir J Mientras Que e(alLa la condicin para seguir
e#ecutndose luego de 8a)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 6epetir
Ingresar el nom)re del alumno: la nota : luego preguntar si desea continuar : al
"inal presentar el nLmero 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 8ec8os con el ciclo mientras notaremos
Aue la (aria)le 4esp le damos un (alor inicial de \S] : para Aue sea distinta de ? :
-a Aue la condicin se (eri"ica al inicio del ciclo : pero a8ora con el ciclo repita -a
no es necesario pues el primer (alor de resp lo toma dentro del ciclo : Aue es la
pregunta Aue 8acemos si desea continuar: - luego (eri"icamos la condicin.
,lgo importante del ciclo 4epetir 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 8acer 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 repetir: para pedir la respuesta - 8acer
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[2#];
Escribir "ingresar la nota del alumno ";
"eer nota;
Si nota 1; =2 Entonces
ca()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. 3,
Programacin con PSeInt
SubProcesos
>n su)proceso es un su)programa: procedimiento o "uncin Aue realiBa una
tarea espec<"ica - Aue puede ser 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&emplo9 ela)orar un su)proceso Aue presente asteriscos en una l<nea
8oriBontal.
SubProceso asteriscos
Deinir I !omo Entero;
Para i () + @asta 5 @acer
Escribir "*" Sin $a5ar;
FinPara
FinSubProceso
Pg. 44
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 8u)iramos
8ec8o de esta manera donde se encuentra la instruccin asteriscosH tendr<amos
Aue escri)ir el ciclo: - lo 8ar<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
,8ora en el programa anterior usa un procedimiento esttico: siempre escri)ir
asteriscos: a8ora lo podemos 8acer dinmico usando parmetros para indicar
cuantos asteriscos Aueremos presentar en la l<nea.
5isuali7ador de diagramas de %lu&o
@os su)procesos en el diagrama de "lu#o se muestran de la siguiente manera
Pg. 41
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. 42
Programacin con PSeInt
num () +2;
Para i () 2 @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 8ace Aue el ciclo recorra $% (eces: luego ms a)a#o del programa en
la instruccin asteriscos& se paso una (aria)le como parmetro asignando el
(alor de numJ$ 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,4 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 sinta3is 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. 43
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,4E 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 adelante9
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. 44
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 : e3ponente - )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: e3po son de tipo (alor : esto porAue no necesitamos modi"icar o leer
su (alor como anteriormente los 8icimos 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.
Pg. 45
Programacin con PSeInt
SubProcesos que de'uel'en 'alor o con retorno
@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 sinta3is 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 : c*lculo de la potencia
>saremos el mismo e#ercicio Aue usamos para los procesos: para 8acer 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
Pg. 46
Programacin con PSeInt
Proceso principal
IngresoDbase&eJpoE;
Deinir pot como Entero;
pot()PotenciaDbase&eJpoE;
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
6e%erencia8 e#po Por 6e%erencia49+
'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 la comisin en )ase a la Bona de tra)a#o : i8ss -
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 ,:6:.
Subproceso de c*lculo
Se calcula la comisin e i8ss 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 i8ss: 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. 4,
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
'n este caso los 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.
Pg. 54
Programacin con PSeInt
Nota: +n sinta!is estricta( "a *aria#"e de retorno de#e ser dec"arada
$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 e3traer o modi"icar su (alor. @as
dimensiones pueden ser9
$J>nidimensionales9 solo tiene una solo dimensin una "ila - una columna
*J6idimensionales9 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:9
"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 una estructura.
.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.
Pg. 51
Programacin con PSeInt
'#emplo9
!imension numero S7TH
.on esta declaracin estamos creando una coleccin de $% nLmeros enteros
3 5 0 3 / 7 * 4 /5
% $ * 3 4 / 5 0 7
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 8acer 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 5 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 8acer9

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. 52
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
%..7: 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: a8ora 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
Pg. 53
Programacin con PSeInt
FinProceso
E&emplo
Ingresar el nombre del empleado en una dimension y el sueldo en otro
dimension8 luego de ingresar los datos determinar el i?ss8 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 8acer pues al ingresar el
elemento $% en la (aria)le solo ese pod<amos guardar: es por ello Aue los
clculos se 8ac<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
Pg. 54
Programacin con PSeInt
tp()sueldo[i])i3ss;
Escribir "-ombre ,,,A"& nombre[i];
Escribir "Sueldo ,,,A"&sueldo[i];
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 # !on Paso + @acer
Escribir "Ingresar un n0mero ";
"eer num[i];
FinPara
FinSubProceso
Proceso Principal
Dimension num[5];
Deinir num& maJ !omo Enteros;
IngresoDnumE;
MaJ()maForDnumE;
Pg. 55
Programacin con PSeInt
Escribir "MaFor "& maJ;
FinProceso
Nota: Por defecto( "os arreg"os siempre se pasan por 'eferencia. o intentes
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: 8a- una nue(a
asignacin para numma-or Aue es 3: cuando se compara con el 3 es menor al
8a- una nue(a asignacin a numma-or es : cuando se compara con 4 el no
es menor al cuatro: as< Aue numma-or no se asigna ningLn (alor - se Aueda con
el a8ora 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 8a- cam)io - sigue (aliendo
cuando numS%T es * ?o 8a- cam)io - sigue (aliendo
cuando numS%T es 0 'ntonces (ale 0
$imension de II $imensin 2@idimensional4
!eclaracin9
$imension "Nom$re de la #aria$le% A"L4neas%- "Columnas%B&
Tam)in se les denomina matrices o ta)las. >na dimension )idimensionales
una ta)la Aue a8ora tiene l<neas - columnas: donde las l<neas indican la primera
dimensin - las columnas la segunda dimensin.
Pg. 56
Programacin con PSeInt
% $ * 3
%
$
*
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% en 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
Pg. 5$
Programacin con PSeInt
"impiar pantalla;
Para " () 2 @asta # con Paso + @acer
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 3 esto 8ace Aue se
puede leer el elemento ?umero S%:$T: ?umero S%:*T: ?umero S%:3T: luego cuando
la @ tiene el (alor de * entonces la l (uel(e a iniciar de % a 3 8aciendo lo mismo 4
(eces Aue es el nLmero de las l<neas.
Suma de l<neas - columnas de un dimension 6idimensional
'l programa Aue se presenta: ingresa los datos - los presenta usando un
su)proceso sin retorno.
SubProceso sum () Suma"inea Dnumero& lineaE
Deinir sum& ! !omo Enteros;
sum()2;
Si linea1;2 C linea(;# Entonces
Para !()2 @asta 7 !on Paso + @acer
sum()sum / numero [linea&!];
FinPara
FinSi
FinSubProceso
SubProceso sum () Suma!olumna Dnumero& colE
Deinir sum& " !omo Entero;
sum()2;
Si col1;2 C col(;7 Entonces
Para "()2 @asta # !on Paso + @acer
sum()sum / numero ["&col];
FinPara
Pg. 5%
Programacin con PSeInt
FinSi
FinSubProceso
SubProceso ingresoDnumeroE
Deinir "&! !omo Enteros;
Para " () 2 @asta # !on Paso + @acer
Para ! () 2 @asta 7 !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
Pg. 5,
Programacin con PSeInt
de#e redefinir e" tipo de argumento.
Nota: .os arreg"os de" parmetro( tanto cuando se pasan "os arreg"os a otro
proceso5su#proceso( como cuando se 2ace referencia a" su#proceso desde e"
proceso principa" no se especifica su capacidad.
In%ormacin terica
Estructuras o registros
Nota: .a informacin de estructuras se toma como terica. 3e momento( PSeInt
no soporta estructuras o registros.
>na estructura o 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 una estructura podr<an ser de los
tipos pre(iamente de"inidos por PSeInt Kentero: real etc.E o )ien por una
estructura de"inido anteriormente
E&emplo: demostracin de estructuras
'n este programa usaremos una estructura para guardar la in"ormacin del
alumno usando una estructura Aue se llama ,lum.
Siempre Aue Aueremos acceder a una estructura se 8ace
'structura.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 estructura rePalumno.
Estructura 'lumno () reg'lum
Dimension nombre[72];
Deinir nombre !omo !adena;
Dimension carrera[72];
Deinir carrera !omo !adena;
Deinir cuenta !omo Entero;
FinEstructura
Proceso principal
Escribir "El nombre del 'lumno ";
Pg. 64
Programacin con PSeInt
"eer 'lum,nombre;
Escribir "!uenta del 'lumno ";
"eer 'lum,cuenta;
Escribir "!arrera Que estudia ";
"eer 'lum,carrera;
Escribir " El alumno "& 'lum,nombre;
Escribir " !on cuenta "& 'lum,cuenta& " Estudia "&
'lum,carrera;
FinProceso
,8ora lo ms importante es Aue podamos usar estructuras como parmetros en
los su)procesos con retorno - sin retorno para 8acer ms "cil el pasar
in"ormacin como parmetro.
E&emplo estructuras con subprocesos
Se desea ela)orar un programa donde se ingrese el nom)re del alumno : la nota
acumulada: e3amen: nota "inal - o)ser(acin: luego Aue se determine la nota
"inal - o)ser(acin.
>saremos una estructura 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 usar
una "uncin para el clculo 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 - clculo de (aria)le - en
presentar de (alor porAue no se modi"ica ninguna (aria)le.
II declaraci9n de la estructura
Estructura 'lumno () reg'lum
Dimension nombre[72];
Deinir nombre !omo !adena;
Deinir na&ne&n !omo 4eales;
Dimension obs[+2];
Deinir obs !omo !adena;
FinEstructura
SubProceso %obs () obser%acion D%obs& notaE
Deinir %obs como !adena;
Pg. 61
Programacin con PSeInt
Si nota1; =2 Entonces
%obs()"aprobado";
Sino
%obs()"reprobado";
FinSi
FinProceso
SubProceso ingresoDalumE
Escribir "Ingresar el nombre ";
"eer 'lum,nombre;
Escribir "Ingresar la nota eJamen ";
"eer 'lum,ne;
Escribir "Ingresar la nota acumulada ";
"eer 'lum,na;
FinsubProceso
SubProceso calculoDalumE
'lum,n()'lum,na / 'lum,ne;
'lum,obs()obser%acionD'lum,nE;
FinSubProceso
SubProceso presentarDalumE
Escribir "-ota Final "&'lum,n;
Escribir "Bbser%aci9n "&'lum,obs;
FinSubProceso
Proceso principal
Deinir I !omo Entero;
Para I() + @asta 5 !on Paso + @acer
ingresoD'lumE;
calculoD'lumE;
presentarD'lumE;
FinPara
FinProceso
$imensiones con estructuras
Nota: Informacin terica
=asta a8ora nuestros arreglos solo 8an 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 una estructura - la dimension se declara Aue
Pg. 62
Programacin con PSeInt
es del tipo estructura Aue declaramos .
'#emplo9
Estructura emple
Deinir codigo !omo Entero;
Dimension nombre[72];
Deinir nombre !omo !adena;
FinEstructura
Dimension empleado[5];
Deinir empleado !omo emple;
!9digo !9digo !9digo !9digo !9digo
-ombre -ombre -ombre -ombre -ombre
2 + 2 7 #
!eclaramos el estructura empleado - luego declaramos la dimension Aue ser
de tipo empleado a8ora para acceder a la dimension 9
@ectura de datos
Escribir "Ingresar -ombre del Empleado ";
"eer emple[7],nombre;
Escribir "Ingresar el codigo de estructura ";
"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 estructura "& 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 de la estructura
E&emplo dimensiones con estructura+
Pg. 63
Programacin con PSeInt
'n este e#emplo declaramos la estructura: luego se declara la dimension de tipo
estructura: se ela)ora un su)proceso sin retorno para el ingreso de los datos de
la dimension - otro para presentar los estructuras de la dimension.
.uando declaramos Dimension[5] empleado; - despus Deinir empleado !omo
emple; en el su)proceso de ingreso nos re"erimos a Aue tenemos una dimension
de elementos Aue es de tipo empleado Kel estructuraE - 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.
Estructura emple () Empleado
Deinir codigo !omo Entero;
Dimension nombre[72];
Deinir nombre !omo !adena;
FinEstructura
SubProceso Ingreso DempleadoE
Deinir i !omo Entero;
Para i () 2 @asta # !on Paso + @acer
Escribir "Ingresar -ombre del Empleado ";
"eer emple,nombre;
Escribir "Ingresar el c9digo de estructura ";
"eer emple,codigo;
FinPara
FinSubProceso
SubProceso Presentar DempleadoE
Deinir i !omo Entero;
"impiar Pantalla;
Para i () 2 @asta # !on Paso + @acer
Escribir "-ombre del Empleado "&emple,nombre;
Escribir "!9digo de estructura "& emple,codigo;
FinPara
FinSubProceso
Proceso principal
IngresoDempleadoE;
Pg. 64
Programacin con PSeInt
PresentarDempleadoE;
FinProceso
E&emplo de dimensiones con estructura+
'n este e#emplo declaramos el estructura luego: se declara la dimension de tipo
de tipo estructura alumno: luego usamos una "uncin para determinar la
o)ser(acin : no se introduce todo el estructura 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 de la estructura Aue Aueremos en(iar Aue es la nota9
alum[i],obs()obser%acionDalum[i],nE;
II declaraci9n de la estructura
Estructura alum () reg_alumno
Dimension nombre[72];
Deinir nombre !omo !aracter;
Deinir na&ne&n !omo 4eales;
Dimension obs[+2];
Deinir obs !omo !adena;
FinEstructura
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 # !on Paso + @acer
Escribir " Ingresar el nombre ";
"eer alum[i],nombre;
Escribir "Ingresar la nota eJamen ";
"eer alum[i],ne;
Escribir "Ingresar la nota acumulada ";
"eer alum[i],na;
Pg. 65
Programacin con PSeInt
FinPara
FinSubProceso
SubProceso calculoDalumE
Deinir I !omo Entero;
Para i () 2 @asta # !on Paso + @acer
alum[i],n()alum[i],na / alum[i],ne alum[i],obs()
obser%acionDalum[i],nE;
FinPara
FinSubProceso
SubProceso presentar DalumE
Deinir i !omo Entero;
Para i () 2 @asta # !on Paso + @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 estructura+
Se declara una estructura con las (aria)les de nom)re (entas: comisin i8ss -
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.
Estructura emple () Empleado
Dimension nombre[72];
Deinir nombre !omo !adena;
Deinir %entas&comis&i3ss&tp !omo 4eales;
FinEstructura
Pg. 66
Programacin con PSeInt
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 () 2 @asta + !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 + !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;
Deinir i !omo Entero;
Para i () 2 @asta + @acer
Escribir "Empleado "&emple[i],nombre;
Escribir "";
Pg. 6$
Programacin con PSeInt
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 cap<tulo aprenderemos de "orma terica como
guardar<amos la in"ormacin en un arc8i(o de te3to para su posterior utiliBacin.
Sinta#is
$eclarar un tipo arc?i'o
!eclarar un tipo arc8i(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
Sinta3is
,)rir nom)reParc8i(o como (aria)le Spara lectura: escrituraT
e#emplo 9
'brir "empleados,tJt" !omo 'rc3emple Para "ectura;
3escripcin
Pg. 6%
Programacin con PSeInt
'sta instruccin sir(e para a)rir el arc8i(o. @as operaciones permitidas para el
arc8i(o son lectura: escritura o am)as. 'n la sinta3is (aria)le se re"iere a (aria)le
de tipo arc8i(o Aue se usar para re"erenciar el arc8i(o.
"errar un arc?i'o
Sinta3is
.errar (aria)le de tipo arc8i(o
'#emplo 9
!errar arc3emple;
!escripcin
'sta instruccin sir(e para cerrar un arc8i(o. Naria)le
)eer de un arc?i'o
Sinta3is
@eer (aria)leParc8i(o: (aria)lePdatos
e#emplo 9
"eer arc3emple&emple,nombre;
3escripcin
'sta instruccin lea una (aria)le desde un arc8i(o. @a primera (aria)le de la
instruccin de)e ser de tipo arc8i(o: la segunda puede ser de cualAuier tipo: eso
depender del tipo de arc8i(o.
Escribir en un arc?i'o
Sinta3is
'scri)ir (aria)leParc8i(o: (aria)lePdatosH
e#emplo 9
Pg. 6,
Programacin con PSeInt
Escribir arc3emple& emple,nombre;
3escripcin
'sta instruccin escri)e una (aria)le en un arc8i(o. @a primera (aria)le de la
instruccin de)e ser de tipo arc8i(o: la segunda puede ser de cualAuier tipo: eso
depender del tipo de arc8i(o.
E&emplo Ingreso de datos a un arc?i'o secuencial 2te#to4+
@o primero Aue tenemos Aue 8acer es crear con CindoCs un arc8i(o de te3to: 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 arc8i(o secuencial
8ipo 'rc3 es arc3i%o secuencial;
luego el estructura Aue usaremos para ingresar los datos
Estructura Empleado
Dimension nombre[52];
Deinir nombre !omo !adena;
Deinir sueldo !omo 4eal;
Deinir seJo como !aracter;
FinEstructura
luego declaramos la (aria)le para mane#ar el arc8i(o de te3to: Aue de tipo arc8 -
la (aria)le de tipo estructura
Deinir Empleado !omo emple;
Deinir 'rc3Emple !omo 'rc3;
Deinir resp como !aracter;
@uego en el programa lo primero Aue se 8ace es a)rir el arc8i(o para escritura:
luego se piden los datos - se sal(ar en el arc8i(o : al "inal se cierra el arc8i(o de
te3to: a8ora 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 arc8i(o.
Pg. $4
Programacin con PSeInt
8ipo 'rc3 Es 'rc3i%o Secuencial;
Estructura emple () Empleado
Dimension[52] nombre;
Deinir nombre !omo !adena;
Deinir sueldo !omo 4eal;
Deinir seJo como !aracter;
FinEstructura
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 arc8i(o : el estructura - las (aria)les para usar el estructura
- el arc8i(o de te3to : luego se a)re el arc8i(o para lectura - se 8ace un ciclo
mientras no sea "in de arc8i(o : esto se logra con la "uncin ;!, Aue nos
de(uel(e (erdadero cuando se encuentra al "inal del arc8i(o - "also cuando no lo
est .
Se usa la instruccin @eer : para recuperar los (alores Aue se guardaron en el
arc8i(o de te3to: luego usando un procedimiento se escri)en los (alores de la
Pg. $1
Programacin con PSeInt
estructura en la pantalla
Deinir 8ipo 'rc3 !omo 'rc3i%o Secuencial;
Estructura emple () Empleado
Dimension nombre[52];
Deinir sueldo !omo 4eal;
Deinir nombre !omo !adena;
Deinir seJo !omo !aracter;
FinEstructura
Nariables globales
Deinir emple !omo Empleado;
Deinir 'rc3Emple !omo 'rc3;
Deinir Detener !omo !aracter;
FinNariablesRlobales
SubProceso presentarDempleE
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 "ectura;
Mientras SdaDarc3empleE @acer
"eer arc3emple&emple,nombre;
"eer arc3emple&emple,sueldo;
"eer arc3emple&emple,seJo;
"lamar presentarDempleE;
FinMientras;
!errar arc3emple;
FinProceso
Ane#o:
Pg. $2
Programacin con PSeInt
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 "lu#o llendo a ,rc8i(o O 'ditar diagramas
de "lu#o 9
'legimos un su)proceso - 8acemos clic en uno de ellos
=acemos clic en el proceso principal o cualAuiera de los su)procesos: en este
caso el su)proceso Ingreso.
Pg. $3
Programacin con PSeInt
Se nos presenta una pantalla mostrando el diagrama de "lu#o correspondiente al
su)proceso Aue estamos e#ecutando.
, la derec8a encontramos una pesta^a Aue ocupa todo el lado derec8o de la
(entana.
.liAueamos so)re la misma.
Pg. $4
Programacin con PSeInt
Se nos presenta un di)u#o con las estructuras usadas: - al costado iBAuierdo
in"erior aparece su nom)re.
Si Aueremos a^adir un nue(o )loAue al diagrama de "lu#o: lo Aue 8acemos es
cliAuear en un )loAue - sin soltar el )otn iBAuierdo del mouse arrastrarlo 8asta el
diagrama de "lu#o. Para "i#ar el )loAue: presionamos la tecla escape.
'n las sentencias escri)ir: el te3to se de)e poner entre comillas.
Cuardar cambios
Para guardar los cam)ios: (amos al )otn Aue se encuentra al costado iBAuierdo
superior - 8acemos 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/
modificaciones 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. $5
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.
$es instalar PSeInt
PSeInt dispone de un des instalador: Aue se accede desde agregar o Auitar
programas. Se desinstala como cualAuier otro programa.
Abrir el cdigo %uente
'n estos )log se e3plica cmo lo Aue de)emos 8acer para a)rir el cdigo "uente
del programa9
6a#o @inu3

6a#o _indoCs
Pg. $6