You are on page 1of 76

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
Qu es PSeInt? Instalacin Mi primer programa !iagramas de "lu#o & 'ditor de diagramas de "lu#o !eclarar (aria)le +peradores ,signaciones - +peraciones matemticas en un programa. Instrucciones .ondicionales Si Si anidado Segun +perador 1 +perador 2 Instrucciones de ciclo .iclo Mientras .iclo Para o .iclos ,nidados o .iclo Para negati(o .iclo 3epetir Su)Procesos Parmetros de entrada o (alor Parmetros de (aria)le Su)Procesos con retorno !imension de una !imensin !imensiones 5idimensionales 3egistros (Informacin terica) & !imensiones con registros ,rc7i(os de te8to (Informacin terica) $* $3 $4 $/ $0 *% ** *4 $%

Pg.
3 4

*/ 3* 3* 34 34 4%

4/ % 4 6 /$ /*
Pg. 2

!imensiones

Programacin con PSeInt

,ne8o9 '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 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

'scri)imos el nom)re del programa en la (entana Aue nos aparece - luego


Pg. $

Programacin con PSeInt

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 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. 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
Proceso concatenar Escribir Escribir "Mi " en primer PSeInt programa ";
Pg. ,

";

Programacin con 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 'l programa ser<a de esta "orma e#emplo
Proceso primer_programa Escribir Escribir FinProceso "Mi " en primer PSeInt programa "; " Sin Saltar;

.on esto deducimos Aue la instruccin Sin Saltar concatena el contenido de una cadena de te8to - el contenido del pr8imo 'scri)ir 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- .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 Escribir FinProceso "Mi " en primer PSeInt programa "; " Sin Saltar;

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 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 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 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. 12

Programacin con PSeInt

escri)ir ms de * caracteres.

letras: l en la memoria solo guardara los primeros *

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
KE U V D W Mod 2G J 1o

uncin
,grupar e8presiones +perador para e8ponenciacin +perador de multiplicacin +perador de di(isin +perador de clculo de residuo +perador lgica +perador de suma +perador de 3esta +perador lgico o

truncK(alor$ D (alor*EH Sinta8is de di(isin entera

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]; De inir nombre !omo !adena; Escribir "eer Escribir Escribir FinProceso "Ingrese su nombre "; "; nombre[2#]; "$ien%enido nombre[2#];

'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. 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 De inir sueldo& aumento !omo Enteros; Dimension nombre[25]; De inir nombre !omo !adena; Escribir "eer "eer Escribir 'umento Escribir Escribir FinProceso "Ingresar "Ingresar () sueldo "-ue%o aumento; * el el nombre sueldo +,25; con el 25. de aumento"; del del empleado"; empleado"; nombre[2#]; sueldo; sueldo

'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. 15

Programacin con PSeInt

Ejemplo so$re suma de cadenas


Proceso suma_de_cadenas Dimension Escribir "eer "eer Escribir !ompleto Escribir FinProceso " " nombre[25]&apellido[25]&completo[25]; Su -ombre"; "; / " & " / apellido[2#]; De inir nombre&apellido&completo !omo !adenas; nombre[2#]; 'pellido apellido[2#]; () nombre[2#] "-ombre completo" completo[2#];

@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. 16

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 De inir 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 De inir De inir Dimension De inir Escribir "eer "eer Escribir 3oras como Enteros; Pbruto&i3ss&tp como 4eales nombre[25]; nombre !omo !adena; "Ingresar "Ingresar el las nombre"; 3oras traba5adas";

nombre[2#]; 3oras; Si Sino I3ss()2,275*pbruto; FinSi 8p()pbruto)i3ss; Escribir Escribir Escribir "Pago "Seguro "8otal a bruto " & " pbruto; & " i3ss; & tp; Social pagar pbruto 1 2#22 Entonces

Pbruto()3oras*52; I3ss()6#;

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
, 5 Porcenta#e de .omisin /W 0W 6W

.
Proceso !omision De inir Dimension De inir Escribir "eer "eer "eer Escribir Escribir

:ona como !aracter; nombre[25]; & comis el las la & i3ss& del tp !omo 4eales; empleado del empleado "; ";

De inir nombre !omo !adena; %entas

"Ingresar "Ingresar "Ingresar

nombre %entas :ona de

nombre[2#]; %entas; traba5o";


Pg. 1,

:ona;

Programacin con PSeInt

Si

:ona

;<'<

Entonces comis() 2,2= Sino Si :ona;<$< Sino Si Sino comisXJ 2; FinSi FinSi * %entas; Entonces * %entas; * %entas; :ona;<!< Entonces

comis() 2,26

comisXJ 2,2>

FinSi Si comis i3ss Sino i3ss()2,275*comis; tp()comis ) i3ss; 1 2#22 Entonces () 6#;

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. 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. 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. 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: 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 De inir :ona !omo !aracter; Dimension nombre[25]; De inir nombre !omo !adena; De inir Escribir "eer "eer "eer Segun Escribir Escribir %entas & comis el las la & i3ss& del tp !omo 4eales; empleado del empleado "; "; "Ingresar "Ingresar "Ingresar nombre %entas :ona de

nombre[2#]; %entas; traba5o"; :ona; ?ona @acer <a<&<'< <b<&<$< <c<&<!< A A A A comis() 2,2= comis() 2,26 comis() 2,2> * * * %entas; %entas; %entas;

De Btro Modo FinSegun Si comis 1 2#22

comis() 2; 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. 22

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. 23

Programacin con PSeInt

De inir precio&st&des&tp&is% !omo 4eales; Dimension nombre[25]; De inir nombre !omo !adena; De inir tipoM !omo !aracter; De inir 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 8p()Dst)desE/is%; Escribir "Subtotal "& st; Escribir "Descuento "& des; Escribir "Impuesto "& is%; Escribir FinProceso "8otal a pagar" &tp;
*2,+2;

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- 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 De inir num !omo Entero;

Escribir "-0mero a e%aluar"; "eer num; Si num 1;52 G num(;+22 " El Entonces n0mero estH entre 52 F +22";
Pg. 25

Escribir Sino

Programacin con PSeInt

Escribir FinSi FinProceso

"

Fuera

del

rango

52

+22";

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. 26

Programacin con PSeInt

Proceso contador De inir contador !omo Entero; Dimension nombre[25]; De inir nombre !omo !adena; !ontador()2; Mientras "eer FinMientras FinProceso contador(+2 nombre[2#]; / +; @acer el nombre"; Escribir "Ingresar

contador() contador

'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 De inir !ontador&Suma&-um !omo Enteros; !ontador()2; Suma()2; Mientras contador (+2 Escribir "eer -um; @acer un n0mero";

"Ingresar

!ontador() !ontador /+; Suma()-um/Suma; FinMientras Escribir FinProceso "Suma de los +2 n0meros "& Suma;

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 De inir 4esp !omo !aracter; De inir nombre[25]; De inir nombre !omo !adena; De inir 4eales; 8otalglobal()2; 4esp()<S<; Mientras "eer "eer "eer resp (1<-< @acer del cliente"; la el cantidad precio de del producto "; "; Escribir Escribir Escribir "-ombre "Ingresar "Ingresar * Precio& cantidad& totalglobal& st& is%& tp !omo

nombre[2#]; cantidad; producto precio; cantidad; * 2,2+2;

St() precio Is%()st 8p()st)is%;

8otalglobal()totalglobal/st; Escribir Escribir Escribir "eer FinMientras Escribir FinProceso "8otal de la %enta" & totalglobal; "Subtotal "Impuesto "Desea " & st; %enta SI-"; " & is%; sobre

Escribir "8otal a pagar " & tp; continuar 4esp;

'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. 2,

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 De inir 4esp !omo !aracter; Dimension nombre[25]; De inir nombre !omo !adena; De inir na&ne&n cr()2; ca()2; 4esp()<S<; Mientras "eer "eer "eer n () Si n resp(1<-< nombre; "-ota "nota acumulada eJamen "; "; na; ne; na/ne; 1; =2 Entonces Escribir "8u estHs 'probado"; ca()ca/+; Sino Escribir "8u estHs 4eprobado"; cr()cr/+; FinSi Escribir "-ota Escribir "eer
FinMientras

!omo 4eales;

De inir cr&ca !omo Enteros;

@acer del alumno";

Escribir Escribir Escribir

"-ombre

inal " & n ; continuar SI-";

"Desea

4esp;

Escribir "8otal de reprobados" & cr; Escribir "8otal FinProceso de aprobados" & ca;

Nota: .as *aria#"es no pueden dec"ararse inicia"i)adas( se dec"aran primero / se inicia"i)an despu9s.
Pg. 34

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. 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. 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 De inir I !omo Entero; Para I()+ @asta I; +2 !on Paso + @acer Escribir 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. 32

Programacin con PSeInt

Ejemplo : so$re el uso de #aria$les en el rango del ciclo Para.


Proceso ciclo_Para De inir Escribir "eer Para I()+ I& inal !omo Enteros; el n0mero de %eces a repetir el ciclo "; "Ingresar @asta I;

inal; inal !on Paso + @acer Escribir

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_con_ actorial De inir I& numero& actorial()+; Escribir "Ingresar el n0mero para determinar su "eer numero; Para I()+ 3asta numero !on Paso + @acer actorial() FinPara Escribir FinProceso " actorial de " & numero & " es "& actorial; actorial * I; actorial "; actorial !omo Enteros;

'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. 33

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 De inir I !omo Entero; Para I()+2 @asta I; + !on Paso )+ @acer Escribir 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 De inir I&K !omo Enteros; Para I () + L @asta ()+ # @asta @acer 5 @acer Para

Escribir FinPara Escribir ""; FinPara FinProceso

I Sin $a5ar;

.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 los grupos de nLmeros en cada l<nea. (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

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 ingresemos un numero de)emos de

nLmeros pero cada (eB Aue 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 I () + @asta 5 @acer De inir I&K& ac&num !omo Enteros; Para 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 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 De inir resp !omo !aracter; De inir nota !omo 4eal; De inir ca&cr !omo Enteros; Dimension nombre[25]; De inir 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 De inir resp !omo !aracter; De inir nota !omo 4eal; De inir ca&cr !omo Enteros; Dimension nombre[25]; De inir 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 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&emplo9 ela)orar un su)proceso Aue presente 7oriBontal.
SubProceso asteriscos

asteriscos en una l<nea

De inir I !omo Entero; Para i () + @asta 5 @acer Escribir "*" Sin $a5ar; FinPara FinSubProceso
Pg. 44

Programacin con PSeInt

Proceso Principal Dimension nombre[25]; De inir 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. 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 De inir num& I !omo Enteros;
Pg. 42

Programacin con PSeInt

num () +2; Para i () + @asta num !on Paso + @acer Escribir "*" Sin $a5ar; FinPara FinSubProceso Proceso principal Dimension nombre[25]; De inir nombre !omo !adena; De inir 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. 43

Programacin con PSeInt

procedimiento - luego presentar los datos.


SubProceso Pedir_datos Dnombre Por 4e erencia& apellido Por NalorE Escribir "Ingresar el nombre "; "eer nombre; Escribir "Ingresar el apellido"; "eer apellido; FinSubProceso Proceso Principal De inir nombre& apellido !omo !adenas; nombre()"-o 3aF cambios en nombre"; apellido()"-o 3aF cambios en apellido"; Pedir_datosDnombre&apellidoE; Escribir FinProceso "-ombre completo "&nombre&" "&apellido;

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 adelante9
SubProceso nombre& apellido () pedir_datos Dnombre por 4e erenciaE Dimension apellido[72]; De inir apellido !omo !adena; Escribir "eer "eer Escribir FinSubProceso "Ingresar "Ingresar el el nombre "; nombre; apellido"; apellido;

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 4e erencia& eJpo Por 4e erenciaE Escribir "Ingresar la base "; "eer base; Escribir " Ingresar el eJponente "; "eer eJpo; FinSubProceso SubProceso pot () PotenciaDbase & eJpo& pot Por 4e erenciaE pot()+; Para I () + @asta eJpo !on Paso + @acer pot () pot * base; FinPara FinSubProceso Proceso principal
De inir 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. 45

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 4e erenciaE De inir i& resp !omo Enteros; resp()+; Para I () + @asta eJpo !on Paso + @acer resp () resp * base; FinPara FinSubProceso SubProceso Ingreso Dbase Por 4e erencia& eJpo Por 4e erenciaE Escribir "Ingresar la base "; "eer base; Escribir " Ingresar el eJponente "; "eer eJpo; FinSubProceso Proceso principal IngresoDbase&eJpoE; De inir pot como Entero; pot()PotenciaDbase&eJpoE;
Pg. 46

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 De inir Ni3ss !omo 4eal; Si comis 12#22 Entonces %i3ss() 6#; Sino %i3ss()2,275 * comis; FinSi FinSubProceso SubProceso %comis () comisionD:ona&%entasE De inir %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 4e erencia &:ona Por 4e erencia & %entas Por 4e erenciaE Escribir "eer "eer Escribir 4epetir Escribir "eer FinSubProceso SubProceso calculos D:ona& %entas& comis Por 4e erencia& i3ss Por 4e erencia&tp Por 4e erenciaE 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 @asta Mue :ona "?ona ;<$< C '&$&! :ona "; ;<!< C :ona ;<'< :ona; "Ingresar "Nentas el nombre "; "; nombre; mensuales %entas;

'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 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.
Pg. 51

Programacin con PSeInt

'#emplo9 !imension numero S$%TH .on esta declaracin estamos creando una coleccin de $% nLmeros enteros 3 % $ 4 * 0 3 3 4 / 6 / * 4 4 0 /4 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];
I,-6

DD indicamos directamente la posicin Aue Aueremos leer

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 %..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]; De inir numero !omo Entero; De inir I !omo Entero;

Para

()

@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 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]; De inir nombre !omo !adena; Dimension sueldo[5]; De inir sueldo como Entero; De inir i3ss&tp !omo 4eales; De inir 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];
Pg. 54

Programacin con PSeInt

Escribir Escribir Escribir FinPara FinProceso "I3ss

"Sueldo

,,,A"&sueldo[i];

,,,A"&i3ss; pagar,,A"&tp;

"8otal

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 De inir nummaFor& i !omo Enteros;
nummaFor()2;

Para

()2

@asta

# !on Paso + @acer

Si num[i]1nummaFor Entonces nummaFor()num[i];

FinSi FinPara FinSubProceso SubProceso ingreso DnumE De inir i como Entero; Para i ()2 @asta # @acer Escribir "Ingresar un n0mero "; "eer num[i]; FinPara FinSubProceso Proceso Principal Dimension num[5]; De inir num& maJ !omo Enteros; IngresoDnumE; MaJ()maForDnumE; Escribir FinProceso
Pg. 55

"MaFor

"&

maJ;

Programacin con PSeInt

Nota: Por defecto( "os arreg"os siempre se pasan por 'eferencia. pasar"o por *a"or o pro*ocaras un error. uncin mayor

o intentes

'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 3J J4J*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 no es 7a- una nue(a asignacin a numma-or es : cuando se compara con 4 el el a7ora cuando se compara con 0 numma-or se le asigna el 0 porAue el

es menor al cuatro: as< Aue nummarot no se asigna ningLn (alor - se Aueda con menor a 0. ?umma-or 'ntonces (ale 3 'ntonces (ale ?o 7a- cam)io - sigue (aliendo ?o 7a- cam)io - sigue (aliendo 'ntonces (ale 0

?um cuando numS%T es 3 cuando numS%T es cuando numS%T es 4 cuando numS%T es * cuando numS%T es 0

$imension de II $imensin 2Aidimensional4 !eclaracin9 $imension "Nom$re de la #aria$le% B"L4neas%- "Columnas%C& Tam)in se les denomina matrices o ta)las. >na dimension )idimensionales una ta)la Aue a7ora tiene l<neas - columnas: donde las l<neas indican la primera dimensin - las columnas la segunda dimensin. % $ * 3
Pg. 56

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&#]; De inir numero !omo Entero; De inir "& ! !omo Enteros; Para " Para () ! 2 () @asta 2 # !on Paso + @acer 7 !on Paso + @acer

@asta

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 De inir 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 De inir 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 De inir "&! !omo Enteros; Para " () ! + @asta () + 5 !on Paso + @acer @asta # !on Paso + @acer Para

Escribir "Ingresar un n0mero ,,A"; "eer numero[")+&!)+]; FinPara Escribir ""; FinPara FinSubProceso SubProceso presentar DnumeroE De inir "& ! !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&#]; De inir numero !omo Entero;
De inir linea&col&suma!&suma" !omo Enteros; IngresoDnumeroE; PresentarDnumeroE; Escribir ""Pnea a sumar"; "eer linea;

Escribir "eer col;

"!olumna

sumar";

suma"()suma"ineaDnumero&lineaE; suma!()suma!olumnaDnumero&colE; Escribir Escribir FinProceso "Suma "Suma de de la la columna "& col& " " es es "& "& suma!; suma"; lPnea "& linea&

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 de#e redefinir e" tipo de argumento.
Pg. 5,

o se

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: .a informacin de registros se toma como terica. 3e momento( PSeInt no soporta registros o estructuras. >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 ,lum. 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 'lumno () reg'lum Dimension nombre[72]; De inir nombre !omo !adena;
Dimension carrera[72];

De inir carrera !omo !adena;


De inir cuenta !omo Entero;

Fin4egistro Proceso principal Escribir "El nombre del 'lumno "; "eer 'lum,nombre; Escribir "!uenta del 'lumno";
Pg. 64

Programacin con PSeInt

"eer

'lum,cuenta;

Escribir "!arrera Que estudia "; "eer 'lum,carrera; Escribir


Escribir

" El
" !on

alumno
cuenta

"&

'lum,nombre;
" Estudia "&

"& 'lum,cuenta&

'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 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 - calculo de (aria)le - en presentar de (alor porAue no se modi"ica ninguna (aria)le.
II declaraci9n del registro

4egistro 'lumno () reg'lum Dimension nombre[72]; De inir nombre !omo !adena; De inir na&ne&n !omo 4eales; Dimension obs[+2]; De inir obs !omo !adena; Fin4egistro SubProceso %obs () obser%acion D%obs& notaE De inir %obs como !adena; Si nota1; =2 Entonces %obs()"aprobado";
Pg. 61

Programacin con PSeInt

Sino FinSi FinProceso

%obs()"reprobado";

SubProceso ingresoDalumE Escribir "eer "eer "eer Escribir Escribir FinsubProceso SubProceso calculoDalumE / 'lum,ne; " Ingresar la la el nombre nota nota "; 'lum,nombre; "Ingresar "Ingresar eJamen "; acumulada "; 'lum,ne; 'lum,na;

'lum,n ()'lum,na FinSubProceso

'lum,obs()obser%acionD'lum,n E;

SubProceso presentarDalumE Escribir "-ota Final "&'lum,n ; Escribir "Bbser%aci9n "&'lum,obs; FinSubProceso Proceso principal De inir I !omo Entero; Para I() + @asta 5 @acer ingresoD'lumE; calculoD'lumE; presentarD'lumE; 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. 62

Programacin con PSeInt

'#emplo9

4egistro emple De inir codigo !omo Entero; Dimension nombre[72]; De inir nombre !omo !adena; Fin4egistro Dimension empleado[5]; De inir empleado !omo emple;

!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 a la dimension 9

@ectura de datos
Escribir "eer "eer Escribir "Ingresar "Ingresar -ombre el del Empleado de "; ";

emple[7],nombre; codigo registro 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 Escribir "-ombre "!9digo del de Empleado registro "& emple[7],nombre; "& 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

Pg. 63

Programacin con PSeInt

E&emplo dimensiones con registro+ '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
emple; Dimension[5] empleado;

- despus

De inir empleado !omo

en el su)proceso de ingreso nos re"erimos a Aue tenemos una 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.
4egistro emple () Empleado De inir codigo !omo Entero; Dimension nombre[72]; De inir nombre !omo !adena; Fin4egistro Proceso Ingreso DempleadoE De inir i !omo Entero; Para i () 2 @asta 5 @acer Escribir "Ingresar -ombre del Empleado "; "eer emple,nombre; Escribir "Ingresar el c9digo de registro "; "eer emple,codigo; FinPara FinProceso

SubProceso Presentar DempleadoE De inir i !omo Entero;


"impiar Pantalla; Para i () 2 @asta # !on Paso + @acer

Escribir "-ombre del Empleado "&emple,nombre; Escribir "!9digo de registro "& emple,codigo; FinPara FinProceso Proceso principal
IngresoDempleadoE; PresentarDempleadoE;
Pg. 64

Programacin con PSeInt

FinProceso

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],n E;
II declaraci9n del registro 4egistro alum () reg_alumno Dimension nombre[72]; De inir nombre !omo !aracter; De inir na&ne&n !omo 4eales; Dimension obs[+2]; De inir obs !omo !adena;

Fin4egistro SubProceso %obs () obser%acion De inir nota !omo 4eal; Dimension %obs[+2]; De inir %obs !omo !adena;
Si nota1; =2 Entonces %obs()"aprobado";

Sino FinSi

%obs()"reprobado;

FinSubroceso SubProceso Para ingresoDalumE i !omo Entero; ()2 @asta " 5 @acer el la la nombre nota nota "; Ingresar i

De inir

Escribir "eer "eer "eer FinPara Escribir Escribir

alum[i],nombre; "Ingresar "Ingresar eJamen "; acumulada "; alum[i],ne; alum[i],na;


Pg. 65

Programacin con PSeInt

FinSubProceso

SubProceso calculoDalumE De inir I !omo Entero;


Para i () 2 @asta 5 @acer alum[i],n ()alum[i],na / alum[i],ne alum[i],obs() obser%acionDalum[i],n E;

FinPara FinSubProceso

SubProceso presentar DalumE De inir 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 emple () Empleado Dimension nombre[72]; De inir nombre !omo !adena; De inir %entas&comis&i3ss&tp !omo 4eales; Fin4egistro

Pg. 66

Programacin con PSeInt

SubProceso seguro Dimension[5] empleado; De inir empleado !omo emple; De inir sueldo !omo 4eal;
Si sueldo 12#22 Entonces 4etornar 6#;

Sino 4etornar 2,275*sueldo; FinSi FinSubProceso SubProceso Ingreso DempleE Dimension[5] empleado; De inir empleado !omo emple; De inir 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; De inir empleado !omo emple; De inir 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; De inir empleado !omo emple; De inir i !omo Entero; Para i () + @asta 2 @acer "&emple[i],nombre; ,,A"& emple[i],comis;
Pg. 6$

Escribir Escribir

"Empleado "!omisi9n

Escribir "";

Programacin con PSeInt

Escribir ""; Escribir Escribir "Seguro "8otal a Social,,A"& Pagar emple[i],i3ss; emple[i],tp; Escribir ""; ,,A"& 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
'brir "empleados,tJt" !omo 'rc3emple Para "ectura;

3escripcin
Pg. 6%

Programacin con PSeInt

'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 Sinta8is 'scri)ir (aria)leParc7i(o: (aria)lePdatosH e#emplo 9
Pg. 6,

Programacin con PSeInt

Escribir 3escripcin

arc3emple&

emple,nombre;

'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]; De inir nombre !omo !adena; De inir De inir Fin4egistro luego declaramos la (aria)le para mane#ar el arc7i(o de te8to: Aue de tipo arc7 la (aria)le de tipo registro De inir Empleado !omo emple; De inir De inir 'rc3Emple !omo 'rc3; resp como !aracter; sueldo !omo 4eal; seJo como !aracter;

@uego en el programa lo primero Aue se 7ace es a)rir el arc7i(o para escritura: 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.
Pg. $4

Programacin con PSeInt

8ipo

'rc3

Es

'rc3i%o

Secuencial;

4egistro emple () Empleado Dimension[52] nombre; De inir nombre !omo !adena; De inir sueldo !omo 4eal; De inir seJo como !aracter; Fin4egistro Empleado De inir emple !omo 'rc3; 'rc3Emple; De inir 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 . 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
Pg. $1

Programacin con PSeInt

De inir 8ipo

'rc3

!omo 'rc3i%o

Secuencial;

4egistro emple () Empleado Dimension nombre[52]; De inir sueldo !omo 4eal; De inir nombre !omo !adena; De inir seJo !omo !aracter; Fin4egistro Nariables globales De inir emple !omo Empleado; De inir 'rc3Emple !omo 'rc3; De inir 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 S daDarc3empleE @acer "eer arc3emple&emple,nombre; "eer arc3emple&emple,sueldo; "eer arc3emple&emple,seJo; "lamar presentarDempleE; FinMientras; !errar arc3emple; FinProceso

Ane#o:
Editar diagramas de %lu&o
Pg. $2

Programacin con PSeInt

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. $3

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. $4

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. $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 cualAuiero otro programa. 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. $6

You might also like