Tutorial de Pseint
Tutorial de Pseint
Tutorial de Pseint
MANUAL Y PROGRAMACIN
EN
PSeInt
Pg. 1
ndice
Tema
Pg.
Qu es PSeInt?
Instalacin
Mi primer programa
Diagramas de flujo
10
12
Operadores
13
14
Instrucciones Condicionales
Si
Si anidado
Segun
Operador |
Operador &
16
18
20
22
24
Instrucciones de ciclo
Ciclo Mientras
Ciclo Para
o Ciclos Anidados
o Ciclo Para negativo
Ciclo Repetir
26
32
32
34
37
SubProcesos
40
46
Dimensiones
50
57
59
61
62
Pg. 2
Anexo:
Editor de diagramas de flujo
Borrar PSeInt
Editar cdigo fuente
Pg. 3
Qu es PSeInt?
PSeInt,
es
la
abreviatura
de
Pseudocode
Interpreter,
Intrprete
de
Pseudocdigo.
Pg. 4
Instalacin
Apuntes preliminares
Antes de empezar a programar, es conveniente tener una idea del
funcionamiento general de PSeInt.
Cuando abrimos por primera vez PSeInt aparece un cartel preguntndonos
que perfil deseamos utilizar, para evitar confusiones con el lenguaje.
Pg. 5
Abrir PSeInt
Para abrir PSeInt damos doble clic en el acceso directo PSeInt del escritorio y
nos abre el programa.
Pg. 6
Barra de comandos
Para definir
acciones
> Un
programa
escrito
en
PseudoCdigo
comienza con la palabra clave Proceso seguida
del nombre del programa, luego le sigue una
secuencia de instrucciones y finaliza con la
palabra FinProceso.
> Proceso <nombre>
>
<secuencia de instrucciones
> FinProceso
Ejemplo
> Proceso sin_titulo
>
Escribir "HOLA";
> FinProceso
Pg. 7
ALGORITMO
Es una lista de operaciones o acciones (instrucciones) para poder encontrar la
solucin a un problema. Estas instrucciones deben estar ordenadas, estar bien
definidas (no ser ambiguas, que cada instruccin tenga un solo significado),
finitas (un nmero especifico de las mismas para poder finalizar la tarea).
Todo algoritmo puede ser representado por:
Lenguaje natural
Pseudocdigo
Diagramas de flujo
Lenguajes de programacin
Inicio Suma
Ingresar primer nmero
Guardar nmero en variable a
Ingresar segundo nmero
Guardar nmero en variable b
Sumar a y b
Guardar resultado en R
Mostrar R
Fin
Pg. 8
TIPOS DE DATOS
En Pseint existen los siguientes tipos de datos:
o Numrico: enteros y decimales, los decimales se separan con un punto
(2 ; 2.5)
o Lgico o Booleano: V y F
o Carcter: carcter y cadena de caracteres, pueden ir encerrados entre
comillas simples o dobles (a , a , hola, hola).
Los tipos de datos son determinados automticamente cuando se crean las
variables o se les asigna un valor.
Este tipo de dato deber permanecer constante durante todo el proceso, si no es
as el proceso ser interrumpido.
Pg. 9
EXPRESIONES
Operadores: Los operadores relacionales, lgicos y algebraicos son
Pg. 10
EXPRESIONES
Funciones: Las funciones de PseInt son
Pg. 11
Luego lo guardamos
Pg. 12
Ahora que los hemos guardado necesitamos, que nuestro programa funcione y
escriba en la pantalla Unitec, aunque PSeInt subraye con rojo los errores de
sintaxis, tambin es bueno verificar sintaxis
Pg. 13
Pg. 14
Concatenar texto
Proceso concatenar
Escribir
"Mi
Escribir
"
primer
en
programa
PSeInt
";
";
FinProceso
"Mi
Escribir
"
primer
en
programa
PSeInt
";
FinProceso
Con esto deducimos que la instruccin Sin Saltar concatena e contenido de una
cadena de texto y el contenido del prximo escriba se escribe en la primera lnea.
Recordar que en sintaxis estricta la colocacin del punto y coma al final de las
sentencias es obligatoria, en flexible en opcional.
Pg. 15
Nota: PSeInt no es case sensitive, por lo tanto colocar Escribir con maysculas y
minsculas es lo mismo y no genera errores de ningn tipo, pero por respeto a la
sintaxis mostrada por los botones se debe escribir con mayscula inicial, evitando
as errores de formato.
Pg. 16
ACCIONES SECUENCIALES
Asignacin: nos permite guardar un valor en una variable.
c <- 2; por lo tanto c=2, que es lo mismo decir c tiene el valor 2.
Escribir: Nos permite mostrar en pantalla algn tipo de dato, o varios separados
por una coma (,) y esos datos deben estar entre comillas ( )
Ejemplos: Escribir hola mundo;
Pg. 17
TALLER
Leer 2 nmeros y aplicar en las operaciones bsicas Suma+ RestaMultiplicacin * Divisin/
SUMA en PseInt
Pg. 18
RESTA en PseInt
Pg. 19
MULTIPLICACIN en PseInt
Pg. 20
DIVISIN en PseInt
Pg. 21
Pg. 22
Pg. 23
EJERCICIOS
1.Realizar un programa que lea dos nmeros, multiplicarlos y determinar su
resultado:
Pg. 24
2. Los ingenieros de sistemas Lidin y Tidin han sido contratados por la empresa
"casinos asociados" para realizar una aplicacin que permita determinar el valor
a pagar a cada empleado por trabajar en su casino. Cada empleado que labora
en su casino tiene un nombre, el valor de la hora u el nmero de horas
trabajadas. Cada trabajador tienen un descuento del 7% sobre el salario bruto,
determinar el salario neto a pagar.
Pg. 25
Pg. 26
Pg. 27
Pg. 28
Pg. 29
Pg. 30
Pg. 31
Pg. 32
Pg. 33
Pg. 34
Pg. 35
Pg. 36
Pg. 37
Pg. 38
5.La liga de baloncesto es seleccionado personal para sus categoras, por cada
uno se lee el nombre y estatura. Determinar si la persona no tiene una estatura
mayor a 1.70 mts inclusive.
Pg. 39
Pg. 40
Pg. 41
Instrucciones condicionales
Anteriormente hemos estado haciendo programas que solo hacen clculos, pero
la programacin es ms interesando cuando nuestros programas toman sus
propias decisiones, en PSeInt existen instrucciones condicionales que se
describen a continuacin :
Instruccin Si:
sintaxis
Si condicin Entonces
instrucciones;
FinSi
Si condicin Entonces
instrucciones;
Sino
instrucciones;
FinSi
num
>
100
Entonces
En programa solo escribir que el nmero fue mayor a 100 cuando cumpla con
la condicin num > 100 sino cumple con la condicin no hace nada .
Pg. 42
ALGORITMOS SELECCIN
COMPUESTAS
(DOBLE SI)
1. Leer un nmero y determinar su cubo si es positivo.
Pg. 43
2.La liga de baloncesto es seleccionado personal para sus categoras, por cada
uno se lee el nombre y estatura. Determinar si la persona no tiene una estatura
mayor a 1.70 mts inclusive.
Pg. 44
Pg. 45
Pg. 46
Pg. 47
Pg. 48
Pg. 49
Pg. 50
Pg. 51
Pg. 52
Sino
Instrucciones;
FinSi
FinSi
FinSi
Pg. 53
Pg. 54
Dias_reparacin
4
9
15
Planta
Colombia
Belgica
Alemania
Pg. 55
Pg. 56
4. Una tienda verde computadores de todas las marcas. Dependiendo del valor
de la compra se ofrecen unos descuentos con base al siguiente criterio;
<500000
No hay descuento
500000y1000000
5%
1000001y2000000 7%
>2000000
10%
Basandose en la anterior tabla, calcular el valor total a pagar
Pg. 57
Pg. 58
Temperatura
>80
>=70y<=80
>=40y<=69
>=10y<=40
<10
Pg. 59
Pg. 60
Pg. 61
Pg. 62
La opcin De otro modo significa que si la variable numrica toma un valor que
no est en ninguna de las opciones anteriores ejecuta las instrucciones de esa
opcin.
Esta opcin es ocupada generalmente para capturar(Catch) errores al ingresar
una opcin no disponible y as avisarle al usuario.
Pg. 63
EJERCICIOS SEGN
1. Demostrar como se puede sacar el da de la semana sabiendo que se ha
capturado un valor entero entre 1 y 7.
Pg. 64
Pg. 65
DESCUENTO
15%
10%
8%
7%
Pg. 66
Pg. 67
Pg. 68
HACER PARA
Ciclos con un Nmero Determinado de Iteraciones. Son aquellos en que el
nmero de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta
estructura es la siguiente:
Donde:
V.C
L.I
L.S
En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se
repite hasta que la variable de control llegue al lmite superior.
Pg. 69
Leer calif
sum = sum + calif
Si calif < baja entonces
baja = calif
fin-si
Fin-para
media = sum / 2
Imprimir media, baja
fin
7) Calcular e imprimir la tabla de multiplicar de un nmero cualquiera. Imprimir el
multiplicando, el multiplicador y el producto.
Inicio
Leer num
Hacer para X = 1 a 10
resul = num * x
Imprimir num, * , X, = , resul
Fin-para
fin.
8) Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y
segundos de un da desde las 0:00:00 horas hasta las 23:59:59 horas
Inicio
Hacer para h = 1 a 23
Hacer para m = 1 a 59
Hacer para s = 1 a 59
Imprimir h, m, s
Fin-para
Fin-para
Fin-para
fin.
PROBLEMAS PROPUESTOS
1) Una persona debe realizar un muestreo con 50 personas para determinar el
promedio de peso de los nios, jvenes, adultos y viejos que existen en su zona
habitacional. Se determinan las categoras con base en la sig. tabla:
CATEGORIA
EDAD
Nios
0 - 12
Jvenes
13 - 29
Adultos
30 - 59
Viejos
60 en adelante
2) Al cerrar un expendio de naranjas, 15 clientes que an no han pagado
recibirn un 15% de descuento si compran ms de 10 kilos. Determinar cunto
pagara cada cliente y cuanto percibir la tienda por esas compras.
Pg. 71
HACER-MIENTRAS
Esta es una estructura que repetir un proceso durante N veces, donde N
puede ser fijo o variable. Para esto, la instruccin se vale de una condicin que
es la que debe cumplirse para que se siga ejecutando. Cuando la condicin ya
no se cumple, entonces ya no se ejecuta el proceso. La forma de esta estructura
es la siguiente:
Pg. 72
COLOR
amarilla
rosa
roja
verde
azul
Pg. 73
11) Cinco miembros de un club contra la obesidad desean saber cunto han
bajado o subido de peso desde la ltima vez que se reunieron. Para esto se
debe realizar un ritual de pesaje en donde cada uno se pesa en diez bsculas
distintas para as tener el promedio ms exacto de su peso. Si existe diferencia
positiva entre este promedio de peso y el peso de la ltima vez que se reunieron,
significa que subieron de peso. Pero si la diferencia es negativa, significa que
bajaron. Lo que el problema requiere es que por cada persona se imprima un
letrero que diga: SUBIO o BAJO y la cantidad de kilos que subi o bajo de
peso.
12) Se desea obtener el promedio de g grupos que estn en un mismo ao
escolar; siendo que cada grupo puede tener n alumnos que cada alumno puede
llevar m materias y que en todas las materias se promedian tres calificaciones
para obtener el promedio de la materia. Lo que se desea desplegar es el
promedio de los grupos, el promedio de cada grupo y el promedio de cada
alumno.
Repetir-Hasta
Esta es una estructura similar en algunas caractersticas, a la anterior. Repite un
proceso una cantidad de veces, pero a diferencia del Hacer-Mientras, el RepetirHasta lo hace hasta que la condicin se cumple y no mientras, como en el
Hacer-Mientras. Por otra parte, esta estructura permite realizar el proceso
cuando menos una vez, ya que la condicin se evala al final del proceso,
mientras que en el Hacer-Mientras puede ser que nunca llegue a entrar si la
condicin no se cumple desde un principio. La forma de esta estructura es la
siguiente:
Pg. 74
Pg. 75
Pg. 76
ARREGLOS
Un arreglo (array) es una coleccin de datos del mismo tipo, que se almacenan
en posiciones consecutivas de memoria y reciben un nombre comn. Para
referirse a un determinado elemento de un array se deber utilizar un ndice, que
especifique su posicin relativa en el array. Un arreglo es una coleccin finita,
homognea y ordenada de elementos. Finita: Todo arreglo tiene un lmite; es
decir, debe determinarse cul ser el nmero mximo de elementos que podrn
formar parte del arreglo. Homognea: Todos los elementos del arreglo deben ser
del mismo tipo. Ordenada: Se puede determinar cul es el primer elemento, el
segundo, el tercero,.... y el n-simo elemento.Los arreglos se clasifican de
acuerdo con el nmero de dimensiones que tienen. As se tienen los:
- Unidimensionales (vectores)
- Bidimensionales (tablas o matrices)
- Multidimensionales (tres o ms dimensiones)
Pg. 77
PROBLEMA.
Suponga que se desea desarrollar un programa para:
1. Leer una lista de calificaciones de un examen
2.Encontrar su media
3.Escribir una lista de las calificaciones mayores que la media
4.Ordenar la lista de las calificaciones en orden ascendente.
Supongamos tambin que hay 100 calificaciones. Debemos utilizar 100 variables
diferentes nota1, nota2, ...., nota100, de ese modo son 100 direcciones
diferentes de memoria para almacenar las calificaciones del examen. Se imagina
declarar las 100 variables, cuntas instrucciones involucra?
nota1, nota2, nota3,.........nota100
(En la declaracin real de un programa no pueden usarse puntos suspensivos,
por lo tanto sern 100 veces). En la fase de lectura de datos, sern tambin 100
veces las instrucciones para ir leyendo cada valor. Leer (nota1, nota2,
nota3,........., nota100)
Para calcular la media:
Media = (nota1+nota2+.......+nota100)/100
Para la lista de calificaciones mayores que la media, deber tambin irse
comparando una por una:
Si nota1 > media entonces
Imprimir nota1
Fin-si
Si nota2 > media entonces
escribir nota2
Fin-si
Si nota100 > media entonces
escribir nota100
Fin-si
Y despus de ms de 450 lneas de cdigo..... Falta ordenar la lista de
calificaciones en orden ascendente!
Despus que aprendas a usar arreglos vers cmo se ahorra instrucciones
porque es fcil recorrer toda la lista de notas con unas pocas instrucciones. En el
caso anterior, cuando el acceso a la informacin es secuencial, slo se puede
acceder a un elemento buscando desde el principio de la lista, y esto es algo
lento. Lo que se necesita es una estructura de acceso directo que permita
almacenar y recuperar los datos directamente especificando su posicin en la
estructura, de esa manera se requerir el mismo tiempo para acceder al
elemento de la posicin 100 que el de la posicin 5.
Pg. 78
Pg. 79
Para acceder a valores especficos del arreglo, use un valor de ndice que
apunte al elemento deseado. Por ejemplo, para acceder al primer elemento del
arreglo calificaciones debe utilizar el valor de ndice 0 (calificaciones[0]). Los
programas en C++ siempre indizan el primer elemento de un arreglo con 0 y el
ltimo con un valor menor en una unidad al tamao del arreglo.
Para inicializar todos los elementos de una vez, se colocan dentro de una
estructura for que va del primer elemento al ltimo que contiene el arreglo. Para
asignar un valor a un elemento del arreglo se hace por ejemplo:
Calificaciones[0] = 100
Cuando se usan arreglos, una operacin comn es usar una variable ndice para
acceder a los elementos de un arreglo. Suponiendo que la variable ndice i
contiene el valor 3, la siguiente instruccin asigna el valor 400 a valores[3]:
valores[i] = 400
Partes de un arreglo:
Los componentes. Hacen referencia a los elementos que forman el arreglo, es
decir, a los valores que se almacenan en cada una de las casillas del mismo.
Los ndices. Permiten hacer referencia a los componentes del arreglo en forma
individual, especifican cuntos elementos tendr el arreglo y adems, de qu
modo podrn accesarse esos componentes.
Definicin de Arreglos
identArreglo [Limsup];
Operaciones con Vectores:
Las operaciones que se pueden realizar con vectores durante el proceso de
resolucin de un problema son:
Lectura/ escritura
Asignacin
Actualizacin (insercin, eliminacin, modificacin)
Recorrido (acceso secuencial)
Ordenacin
Bsqueda
Pg. 80
Ejemplos:
Sea arre un arreglo de 70 elementos enteros con ndices enteros. Su
representacin nos queda:
Arre[70];
Lectura
El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada
uno de sus elementos. Normalmente se realizan con estructuras repetitivas,
aunque pueden usarse estructuras selectivas. Usamos los ndices para recorrer
los elementos del arreglo:
Hacer para i = 1 a 70
Leer arre[i]
Fin-para
Escritura
Es similar al caso de lectura, slo que en vez de leer el componente del arreglo,
lo escribimos.
Leer (N)
Hacer para i = 1 a n
Imprimir arre[i]
Fin-para
Asignacin
No es posible asignar directamente un valor a todo el arreglo; sino que se debe
asignar el valor deseado en cada componente. Con una estructura repetitiva se
puede asignar un valor a todos los elementos del vector.
Por ejemplo:
arre[1] = 120 (asignacin de un valor constante nico a una casilla del vector)
arre[3] = arre[1] / 4 (asignar una operacin)
Se puede asignar un valor constante a todos los elementos del vector:
Hacer para i = 1 a 5
arre[i] = 3
Fin-para
Pg. 81
Pg. 83
ARREGLO BIDIMENSIONAL
Es un conjunto de datos homogneo, finito y ordenado, donde se hace
referencia a cada elemento por medio de dos ndices. El primero se utiliza para
los renglones (filas) y el segundo para las columnas. Tambin puede definirse
como un arreglo de arreglos. Internamente en memoria se reservan MxN
posiciones consecutivas para almacenar todos los elementos del arreglo.
Pg. 84
Algoritmo
Inicio
Matriz [4,4]
Hacer para i = 0 a 3
Hacer para j = 0 a 3
Si i=j entonces
Matriz[i,j] =1
Si-no
Matriz[i,j] =0
Fin-si
Fin-para
Fin-para
Fin
PROBLEMAS PROPUESTOS
1. Hacer un algoritmo que almacene nmeros en una matriz de 5 * 6.
Imprimir la suma de los nmeros almacenados en la matriz.
2. Hacer un algoritmo que llene una matriz de 10 * 10 y determine la
posicin [rengln, columna] del nmero mayor almacenado en la matriz.
Los nmeros son diferentes.
3. Hacer un algoritmo que llene una matriz de 7 * 7. Calcular la suma de
cada rengln y almacenarla en un vector, la suma de cada columna y
almacenarla en otro vector.
4. Hacer un algoritmo que llene una matriz de 20 * 20. Sumar las columnas
e imprimir que columna tuvo la mxima suma y la suma de esa columna.
5. Hacer un algoritmo que llene una matriz de 5 * 5 y que almacene la
diagonal principal en un vector. Imprimir el vector resultante.
6. Hacer un algoritmo que llene una matriz de 10 * 10 y que almacene en la
diagonal principal unos y en las dems posiciones ceros.
7. Hacer un algoritmo que llene una matriz de 6 * 8 y que almacene toda la
matriz en un vector. Imprimir el vector resultante.
8. Hacer un algoritmo que llene una matriz de 8 * 8, que almacene la suma
de los renglones y la suma de las columnas en un vector. Imprimir el
vector resultante.
9. Hacer un algoritmo que llene una matriz de 5 * 6 y que imprima cuantos
de los nmeros almacenados son ceros, cuntos son positivos y cuantos
son negativos.
Pg. 85
Velocidad
Velocidad
Multa
El (o los) numero (s) de control de lo(s) alumno(s) que haya (n) obtenido
la mxima calificacin final
Pg. 86
FUNCIONES
Habamos visto la programacin estructurada que permite la escritura de
programas fciles de leer y modificar. En esta programacin, el flujo lgico se
gobierna por las estructuras de control bsicas vista hasta hoy: secuenciales,
repetitivas y de seleccin. La programacin modular permite la descomposicin
de un problema en un conjunto de subproblemas independientes entre s, ms
sencillos de resolver y que pueden ser tratados separadamente unos de otros.
Gracias a la modularidad se pueden probar los subprogramas o mdulos de
manera independiente, depurndose sus errores antes de su inclusin en el
programa principal y almacenarse para su posterior utilizacin cuantas veces se
precise.
http://algoritmoscies7am.blogspot.com/2013/03/ejercicios-algoritmos-seleccionsimplre.html
Pg. 87
Pg. 88
Declarar variables
En sintaxis estricta, siempre que necesitemos hacer un programa, tendremos
que declarar variables para poder guardar la informacin que introduzcamos al
programa.
Los tipos de datos bsico soportados son los siguientes:
Operadores
PSeInt proporciona los siguientes operadores:
Operador Funcin
()
Agrupar expresiones
Operador de multiplicacin
Operador de divisin
% Mod
Operador lgica y
Operador de suma
Operador de Resta
Pg. 90
|o
Operador lgico o
Nota: En sintaxis flexible, podemos utilizar tambin los operadores & | y mod
como y o y % respectivamente.
"Ingrese
su
nombre
";
nombre[24];
Escribir
Escribir
"Bienvenido
";
nombre[24];
FinProceso
Su diagrama de flujo:
Pg. 91
En la tabla se nos muestra como se pudo sustituir un bloque del programa que
nos dara el mismo resultado
Caso 1
Escribir "Bienvenido
Caso 2
";
Escribir nombre;
Pg. 92
sueldo,
Dimension nombre[25];
Definir nombre Como Cadena;
Escribir
Leer
el
nombre
del
empleado";
el
sueldo
del
empleado";
nombre[24];
Escribir
Leer
"Ingresar
"Ingresar
sueldo;
Aumento
<- sueldo
Escribir
"Nuevo
Escribir
aumento;
1.25;
sueldo
con
el
25%
de
aumento";
FinProceso
Pg. 93
nombre[25],apellido[25],completo[25];
Su
Nombre";
nombre[24];
Escribir
Leer
"
"
Apellido
";
apellido[24];
Completo
<- nombre[24]
Escribir
"Nombre
"
completo"
"
,
apellido[24];
completo[24];
FinProceso
La variable completo toma el valor del nombre mas un espacio en blanco mas el
apellido y lo guardamos en una variable donde ahora tenemos el nombre y el
apellido.
Nota: No es estrictamente necesario dimensionar cadenas de caracteres. Vase
la pgina que trata el tema de dimensiones.
Pg. 94
Definir
Dimension
Definir
Escribir
Leer
el
nombre";
las
horas
nombre[24];
Escribir
Leer
nombre[25];
"Ingresar
trabajadas";
horas;
Pbruto<-horas*50;
Si
pbruto
>
2400
Entonces
Ihss<-84;
Sino
Ihss<-0.035*pbruto;
FinSi
Tp<-pbruto-ihss;
Escribir
"Pago
bruto
Escribir
"Seguro
Escribir
"Total
"
pbruto;
Social
"
ihss;
"
pagar
tp;
FinProceso
En este programa se uso en el calculo del ihss una decisin que tiene dos
salidas una cuando se cumple la condicin que es el entonces y la otra cuando
no se cumple la condicin que es el sino , ahora esto nos ayuda a que nuestros
programas puedan tomar una decisin cuando la condicin se cumple y otra
cuando no se cumple.
Ahora en el siguiente ejercicio que se presenta , ya no hay dos soluciones a la
condicin sino tres, cuando sucede esto se usan condiciones anidadas.
Pg. 95
Sino
Instrucciones;
FinSi
FinSi
FinSi
zona
Porcentaje de Comisin
6%
8%
9%
Proceso Comision
Definir
Dimension
nombre[25];
"Ingresar
comis
el
ihss,
nombre
tp Como Reales;
del
empleado
";
nombre[24];
Escribir
Leer
ventas
"Ingresar
las
ventas
del
empleado
";
ventas;
Escribir
"Ingresar
la
zona
de
trabajo ";
Pg. 96
Leer
Si
zona;
zona
='A'
Entonces
comis<- 0.06
Sino
Si
zona='B'
Sino
ventas;
Entonces
comis<- 0.08
Si
Entonces
zona='C'
ventas;
comis<- 0.09
ventas;
Sino
comis<- 0;
FinSi
FinSi
FinSi
Si
comis
ihss
>
2400
Entonces
<- 84;
Sino
ihss<-0.035*comis;
tp<-comis
ihss;
otra
zona
de
las
permitidas
la
comisin
es
cero.
Pg. 97
Estructura Segun
Esta se usa como sustituto en algunos casos del si anidado , por ser ms
prctico al aplicarlo en la evaluacin de algunas condiciones.
Sintaxis
Segun variable Hacer
valor1, valor2, valor3, :
instrucciones;
valor1, valor2, valor3, :
instrucciones;
.
.
[ De Otro Modo :
instrucciones;]
FinSegun
Los valores a evaluar , se separan por comas si hay varios, tal como aparece en
la sintaxis valor1,valor2 etc., tambin se puede usar el sino que nos indica, que
en caso de no seleccionar ninguna de las instrucciones anteriores se ejecutan.
Pg. 98
Nota importante: En sintaxis estricta las opciones del Segun deben ser siempre
del tipo numrico. Para poder evaluar opciones del tipo texto se debe
personalizar el lenguaje utilizando sintaxis flexible en el editor.
Ejemplo sobre la aplicacin de la estructura Segun
En el ejercicio anterior usamos decisiones anidadas para determinar la comisin,
ahora usaremos una estructura Segn.
Para eso habilitamos sintaxis flexible yendo a personalizar lenguaje
Personalizar Utilizar sintaxis flexible
Proceso ejemplo_caso
Definir
Dimension nombre[25];
Definir nombre Como Cadena;
Definir
Escribir
Leer
Segun
"Ingresar
comis
el
ihss,
nombre
tp Como Reales;
del
empleado
";
"Ingresar
las
ventas
del
empleado
";
ventas;
Escribir
Leer
nombre[24];
Escribir
Leer
ventas
"Ingresar
la
zona
de
trabajo ";
zona;
Zona Hacer
'a','A'
comis<- 0.06
ventas;
'b','B'
comis<- 0.08
ventas;
'c','C'
comis<- 0.09
ventas;
De Otro Modo
comis<- 0;
FinSegun
Si
comis
>
2400
Entonces
ihss<- 84;
Sino
ihss<-0.035*comis;
FinSi
tp<-comis
ihss;
zona
='A'
zona
='a'
Entonces
comis<- 0.06
ventas;
Proceso descuento
Definir precio,st,des,tp,isv Como Reales;
Dimension nombre[25];
Definir nombre Como Cadena;
Definir tipoM Como Caracter;
Definir cant Como Entero;
| cant>100 Entonces
Des<-st*0.10;
Sino
Des<-st*0.05;
FinSi
Isv<-(st-des)
*0.12;
Tp<-(st-des)+isv;
Escribir "Subtotal ", st;
Escribir "Descuento ", des;
Escribir "Impuesto ", isv;
Escribir
"Total
pagar"
,tp;
FinProceso
Pg. 101
Como vemos, el proceso es tan largo, que aparece con la letra muy chica, para
que se vea ms grande movemos el scroll hacia nosotros para que se agrande.
(&)
Como Entero;
num
>=50
&
Escribir
num<=100
"
El
Entonces
nmero
est
entre
50
100";
Sino
Pg. 102
Escribir
"
Fuera
del
rango
50
100";
FinSi
FinProceso
Exportacin a C++
PSeInt puede exportar el programa el algoritmo a C++. Genera solo un archivo
con la extensin .cpp (abreviatura de C plus plus, c++) .No es necesario guardar
previamente el archivo en pseudocdigo para que se exporte a C++.
Simplemente vamos a Archivo y seleccionamos Exportacin a C++
Nota: Al estar el modo experimental, puede que el cdigo generado no sea del
todo correcto, esto se va a ir solucionando en las prximas versiones de PSeInt
Instrucciones de ciclo
Hemos hecho programas que solo se repiten una vez , pero en la programacin
necesitamos que los programas corran varias veces y que nos presenten
informacin al final de correr varias veces, en estos casos usaremos ciclos, que
son estructuras de repeticin, que se repiten hasta cumplir con una condicin o
simplemente indicamos cuantas veces se van a repetir.
Nota: Para evitar ambigedades, todos los ciclos deben cerrarse siempre , no es
posible que hayan Ciclos abiertos.
Ciclo Mientras:
Sintaxis
Mientras condicin Hacer
instrucciones;
FinMientras
El ciclo mientras se utiliza cuando se quiere ejecutar repetidamente un bloque
instrucciones basado en una condicin, el ciclo se repite mientras la condicin se
cumple.
Ejemplo sobre el ciclo Mientras usando un contador
Ingresar 10 nombres
Pg. 103
Proceso contador
Definir
Dimension nombre[25];
Definir nombre Como Cadena;
Contador<-0;
Mientras
contador<10
Escribir
Leer
Hacer
"Ingresar
el
nombre";
nombre[24];
contador<- contador
1;
FinMientras
FinProceso
Pg. 104
Hacer
"Ingresar
un
nmero";
Num;
"Suma
de
los
10
nmeros
",
Suma;
FinProceso
subtotal, isv y total a pagar, presentar los datos luego preguntar si desea
continuar, al final presentar el monto global de la factura.
Proceso producto
Definir
Definir nombre[25];
Definir nombre Como Cadena;
Definir
Precio,
cantidad,
totalglobal,
st,
isv,
tp Como
Reales;
Totalglobal<-0;
Resp<-'S';
Mientras
resp <>'N'
Escribir
Leer
del
cliente";
"Ingresar
la
cantidad
del
producto
";
cantidad;
Escribir
Leer
"Nombre
nombre[24];
Escribir
Leer
Hacer
"Ingresar
el
precio
de
producto
";
precio;
St<- precio
Isv<-st
cantidad;
0.012;
Tp<-st-isv;
Totalglobal<-totalglobal+st;
Escribir
"Subtotal
"
Escribir
"Impuesto
sobre
st;
venta
"
isv;
"Desea
continuar
S/N";
Resp;
FinMientras
Escribir
"Total
de
la
venta"
totalglobal;
FinProceso
En este ejercicio , observamos que el ciclo lo controla una respuesta que se pide
al final S para seguir o N para terminar , pero dara el mismo resultado si escribe
cualquier letra distinta a S , aunque no sea N siempre seguira funcionando el
programa, la validacin de los datos de entrada lo estudiaremos mas adelante.
Ejemplo sobre estructuras de condicin dentro del ciclo Mientras.
Ingresar el nombre del alumno, la nota examen y nota acumulada, luego calcular
Pg. 106
resp<>'N'
Escribir
Leer
"Nombre
del
alumno";
nombre;
Escribir
Leer
"Nota
acumulada
"nota
examen
";
na;
Escribir
Leer
ne;
nf<-
na+ne;
Si
Hacer
nf
>=
60
";
Entonces
"Desea
continuar
S/N";
Resp;
FinMientras
"Total
de
aprobados"
ca;
FinProceso
Como podemos observar en las lneas del programa, usamos dentro del ciclo
mientras, decisiones para poder contar los reprobados y aprobados que resulten
del ingreso de los alumnos, si la nota es mayor a 60 escribe aprobado e
incrementa el contador y sino hace lo contrario, escribir reprobado e incrementar
el contador.
Pg. 108
Ciclo Para
Sintaxis
Para variable <- valor_inicial Hasta valor_final Con Paso Paso Hacer
instrucciones
FinPara
Descripcin
El ciclo Para se utiliza generalmente para ejecutar un conjunto de instrucciones
que se repiten un nmero de veces, establecido antes de ejecutar el ciclo.
Variable : es de tipo entero
Valor_inicial : este puede se un nmero entero o una variable entera.
Valor_final : este puede se un nmero entero o una variable entera.
Paso : este puede se un nmero entero o una variable entera.
Nota: el paso 1 puede omitirse, tanto en sintaxis estricta como flexible
Ejemplo : presentar los nmeros del 1 al 10 en la pantalla.
Proceso ciclo_Para
Definir I Como Entero;
Para
I<-1
Hasta
Escribir
10
I;
FinPara
FinProceso
as
hasta
llegar
al
final
que
es
10.
Pg. 109
I,
"Ingresar
Leer
final;
Para
I<-1
Hasta
Escribir
el
nmero
de
veces
repetir
el
ciclo ";
I;
FinPara
FinProceso
"
factorial
de
"
numero
"
es
",
factorial;
FinProceso
Pg. 110
Ciclos negativos
PSeInt tambin puede realizar ciclos negativos para mostrar, por ejemplo
secuencias de mayor a menor, solamente invirtiendo el orden de los nmeros del
ejercicio anterior y colocando como Paso -1
Proceso ciclo_Para_negativo
Definir I Como Entero;
Para
I<-10
Hasta
Escribir
I;
FinPara
FinProceso
Ciclos anidados
Cuando 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
11111
22222
Pg. 111
33333
44444
Proceso ciclo_anidado
Definir I,k Como Enteros;
Para
<- 1
Para
Hasta
<-1
4
Hasta
Escribir
Hacer
5
Hacer
I Sin Bajar;
FinPara
Escribir "";
FinPara
FinProceso
Cuando usamos ciclos anidados, las variables para manejar los ciclos para
deben de ser diferentes pues cada una de ellas toma un valor diferente, en este
ejercicio necesitamos que se haga 5 veces el ciclo que esta dentro , que es el
que presenta 4 veces el valor de la I , luego salta una lnea , para que aparezcan
los
grupos
de
nmeros
en
cada
lnea.
Pg. 112
numero
debemos de
calcular
el
factorial
entonces
necesitaremos una variable para el caculo del factorial, que forzosamente tiene
que inicializarse en 1 cada vez que el ciclo que calcula el factorial inicie, des esta
manera estaremos seguro que la variable no ha acumulado el valor del factorial
anterior.
Ahora con lo anterior deducimos que necesitamos un ciclo para pedir los datos y
otro para calcular el factorial .
Proceso factorial
Definir I,k,fac,num Como Enteros;
Para
<- 1
Hasta
Hacer
Pg. 113
Ciclo Repetir
Sintaxis:
Repetir
Instrucciones;
Hasta Que condicin
Descripcin
El ciclo Repetir es lo contrario al ciclo Mientras, en ste la ejecucin se lleva a
cabo hasta que se cumple la condicin impuesta.
La diferencia con el ciclo Mientras radica en que este evala la condicin desde
el principio, y si est no se cumple, el cdigo que est encerrado dentro del
cuerpo del mientras no se ejecuta.
En cambio, el Repetir - Mientras Que evala la condicin para seguir
ejecutndose luego de haber ejecutado el cdigo dentro de su cuerpo, es decir
siempre se ejecuta por lo menos una vez el cdigo.
Nota: En perfil flexible, habilitando sintaxis flexible o en personalizar tambin es
posible usar la estructura
Hacer
//Instrucciones;
Mientras Que
o
Repetir
//Instrucciones;
Mientras Que
como alternativa a Repetir Mientras Que correspondiente a la sintaxis estricta.
Recordar que en este caso la condicin sale por el distinto, a diferencia del
Repetir que sale por el igual.
Ejemplo del Repetir
Ingresar el nombre del alumno, la nota , luego preguntar si desea continuar , al
final presentar el numero de aprobados y reprobados.
Pg. 114
Proceso ejemplo_repetir
Definir resp Como Caracter;
Definir nota Como Real;
Definir ca,cr Como Enteros;
Dimension nombre[25];
Definir nombre como Cadena;
ca<-0;
cr<-0;
Repetir
Escribir "ingresar el nombre del alumno ";
Leer nombre;
Escribir "ingresar la nota del alumno ";
Leer nota;
Si nota >= 60 Entonces
ca<-ca+1;
Sino
cr<-cr+1;
FinSi
Escribir " Desea continuar S/N";
Leer resp;
Hasta Que resp='n'
resp='N';
si comparamos este programa con los hechos con el ciclo mientras notaremos
que la variable Resp le damos un valor inicial de S , para que sea distinta de N ,
ya que la condicin se verifica al inicio del ciclo , pero ahora con el ciclo repita ya
no es necesario pues el primer valor de resp lo toma dentro del ciclo , que es la
pregunta que hacemos si desea continuar, y luego verificamos la condicin.
Algo importante del ciclo Repetir es, como ya se dijo, que se ejecuta por lo
menos una vez, antes de validar la condicin de salida del ciclo, es por esto ,
que siempre que escribamos un programa que verifique la condicin antes de
entrar ciclo se debe de usar el ciclo Mientras.
El programa anterior no es la versin final, puesto que debemos hacer que el
usuario solo ingrese S o N cuando responda si desea continuar , esto nos lleva a
escribir un ciclo repetir dentro del ciclo reprtir , para pedir la respuesta y hacer
Pg. 115
que se salga del ciclo solo cuando responda S o N , de esta manera estaremos
seguros
de
que
la
repuesta
es
correcta.
Proceso ejemplo_repetir
Definir resp Como Caracter;
Definir nota Como Real;
Definir ca,cr Como Enteros;
Dimension nombre[25];
Definir nombre como Cadena;
ca<-0;
cr<-0;
Repetir
Escribir "ingresar el nombre del alumno ";
Leer nombre[25];
Escribir "ingresar la nota del alumno ";
Leer nota;
Si nota >= 60 Entonces
ca<-Var-ca+1;
Sino
cr<-cr+1;
FinSi
Repetir
FinProceso
Pg. 116
SubProcesos
Un subproceso es un subprograma, procedimiento o funcin que realiza una
tarea especfica y que puede se definido mediante 0 , 1 o ms parmetros . Tanto
en entrada de informacin al subproceso como la devolucin de resultados desde
la subrutina se realiza mediante parmetros, el cual nos sirve para introducir o
modificar informacin del programa principal.
Sintaxis
SubProceso
NombreSubProceso
Pg. 117
FinSubProceso
Proceso Principal
Dimension nombre[25];
Definir nombre como Cadena;
Escribir "Ingresar el nombre ..:";
Leer nombre[24];
asteriscos;
Escribir "";
Escribir nombre[24];
Escribir "";
asteriscos;
FinProceso
Pg. 118
Parmetros de valor
Pg. 119
FinProceso
Pg. 120
"Nombre
completo
",nombre,"
",apellido;
FinProceso
Nota: En caso de que la variable se pase por referencia siempre se debe indicar.
En cambio, si se pasa por valor, la indicacin de pase puede omitirse. Siempre
por defecto se pasa por valor.
"Ingresar
el
nombre
";
el
apellido";
nombre;
Escribir
"Ingresar
Pg. 121
Leer
apellido;
FinSubProceso
Ejemplo
Ingresar la base y el exponente y luego calcular la potencia.
En este programa usaremos un subproceso para el ingreso de los datos y otro
para calcular la potencia.
SubProceso Ingreso (base Por Referencia, expo Por Referencia)
Escribir "Ingresar la base ";
Leer base;
Escribir " Ingresar el exponente ";
Leer expo;
FinSubProceso
SubProceso pot <- Potencia(base , expo, pot Por Referencia)
pot<-1;
Para I <- 1 Hasta expo Con Paso 1 Hacer
pot <- pot * base;
FinPara
FinSubProceso
Proceso principal
Definir pot como Entero;
Ingreso (base,expo);
Potencia (base,expo,pot);
Escribir "Potencia es ", pot;
FinProceso
En el subproceso de ingreso los dos datos , exponente y base son de tipo entero
y parmetros de variable , esto porque necesitamos que el procedimiento nos
devuelva los valores para luego introducirlos en el procedimiento potencia pero
aqu, base, expo son de tipo valor , esto porque no necesitamos modificar o leer
su valor como anteriormente los hicimos en el procedimiento de ingreso , luego la
variable pot si se pasa como parmetro de variable debido a que necesitamos
modificar su valor y presentarlo en el programa principal.
Nota: Los subprocesos no se pueden llamar igual que las variables que se
Pg. 122
declaran en el programa.
Pg. 123
FinSubProceso
Proceso principal
Ingreso(base,expo);
Definir pot como Entero;
pot<-Potencia(base,expo);
Escribir "Potencia es ", pot;
FinProceso
Pg. 124
Pg. 125
Nota:
Subproceso de ingreso
En este subproceso sin retorno se ingresan los datos, validando que la zona solo
sea A,B,C
Subproceso de clculo
Se calcula la comisin e ihss usando los subprocesos sin retorno declarados
anteriormente , luego el total a pagar, algo que debemos de notar es que las
ventas y la zona se pasan como parmetros de valor y las dems ihss, comis y tp
como parmetros de variable porque necesitamos modificar su valor
SubProceso presentar
Presentamos los clculos y pasamos las variable como parmetros de valor,
porque solo los necesitamos presentar
SubProceso vihss <- seguro(comis)
Definir Vihss Como Real;
Si comis >2400 Entonces
vihss<- 84;
Sino
vihss<-0.035 * comis;
FinSi
FinSubProceso
SubProceso vcomis <- comision(zona,ventas)
Definir vcomis como Real;
Segun zona Hacer
Pg. 126
'A' : vcomis<-0.05*ventas;
'B' : vcomis<-0.06*ventas;
'C' : vcomis<-0.09*ventas;
FinSegun
FinSubProceso
SubProceso ingreso (nombre Por Referencia ,zona Por Referencia , ventas
Por Referencia)
Escribir
Leer
el
nombre
";
nombre;
Escribir
Leer
"Ingresar
"Ventas
mensuales
";
ventas;
Repetir
Escribir
Leer
"Zona
A,B,C
";
zona;
='B'
zona
='C' |
zona ='A'
FinSubProceso
SubProceso calculos (zona, ventas, comis Por Referencia, ihss Por
Referencia,tp Por Referencia)
comis<-comision(zona,ventas);
ihss<-seguro(comis);
tp<-comis-ihss;
FinSubProceso
Subproceso presentar (comis,ihss,tp)
Escribir " Comisin ",comis;
Escribir " Seguro Social ", ihss;
Escribir " Total a pagar ", tp;
FinSubProceso
Proceso principal
Ingreso(nombre,zona,ventas);
Calculos(zona,ventas,comis,ihss,tp);
Presentar(comis,ihss,tp);
FinProceso
Los subprocesos con retorno los declaremos antes de los subprocesos sin
retorno porque estas se usaran en el subproceso sin retorno clculos, y es ms
Pg. 127
Dimensiones
Es una Coleccin de datos del mismo tipo, que se almacenan en posiciones
consecutivas de memoria y reciben un nombre comn.
Y para referirse a un determinado elemento tendremos de acceder usando un
ndice para especificar la posicin que queremos extraer o modificar su valor. Las
dimensiones pueden ser:
1-Unidimensionales: solo tiene una solo dimensin una fila y una columna
2-Bidimensionales: tablas o matrices.
3-Multidimensionales: de 3 o ms dimensiones.
Dimension de I Dimensin
Declaracin:
Pg. 128
45
67
o
I<- 7 //asignamos un valor a una variable de tipo entero
Escribir
numero[ 0 ];
Pg. 129
Ejemplo
Ingresar 10 nmeros a una dimension de 10 elementos y luego presentar los
nmeros.
En este programa tendremos que usar un ciclo que la variable I tome un valor de
0..9, para leer los valores o asignar valores a la dimension, luego usaremos otro
ciclo para presentar los datos.
Cuando guardamos los datos en una dimension, sus valores son almacenados en
la memoria y no se borrar despus al leer el siguiente numero, como en los
programas anteriores, cuando usbamos una variable para ingresar 10 nmeros,
pero la variable al final del ingreso solo guardaba el ultimo numero que se
introdujo, ahora con los arreglos se guardan los 10 nmeros en la memoria.
Nota: Si PSeInt est configurado para trabajar en base 0 y se define una
dimensin con la misma cantidad de elementos que de declara el ltimo elemento
ingresado no va a tener posicin de memoria en la dimension ingresada. Esto lo
podemos cambiar personalizando el perfil o utilizando sintaxis flexible.
// programa de ingreso de 10 nmeros a una dimension
Proceso dimension_10
Dimension numero[10];
Definir numero Como Entero;
Definir
I Como Entero;
Para
<-
Hasta
Pg. 130
Ejemplo
Ingresar el nombre del empleado en una dimension y el sueldo en otro
dimension, luego de ingresar los datos determinar el ihss, el total a pagar
para cada uno de los empleados.
En este programa se almacena el nombre del empleado y el sueldo en dos
arreglos diferentes el nombre en un arreglos de cadena y 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 fin de enfatizar que los arreglos guardan los
datos en la memoria durante el programa funciona y los podemos usar despus
de ingresados los datos , lo que antes no podamos hacer pues al ingresar el
elemento 10 en la variable solo ese podamos guardar , es por ello que los
clculos se hacan en el mismo ciclo.
Proceso dimension_empleado
Dimension nombre[5];
Definir nombre Como Cadena;
Dimension sueldo[5];
Definir sueldo como Entero;
Definir ihss,tp Como Reales;
Definir I Como Entero;
Para
<-
Hasta
Hacer
Pg. 131
Para
<-
Hasta
Hacer
Si sueldo[i]>2400 Entonces
ihss<-84;
Sino
ihss<-0.035*sueldo[i];
FinSi
tp<-sueldo[i]-ihss;
Escribir "Nombre ...:", nombre[i];
Escribir
"Sueldo
Escribir
"Ihss
Escribir
"Total
...:",sueldo[i];
...:",ihss;
pagar..:",tp;
FinPara
FinProceso
Para
<-0
Hasta
Si num[i]>nummayor Entonces
nummayor<-num[i];
FinSi
FinPara
FinSubProceso
SubProceso ingreso (num)
Definir i como Entero;
Para
<-0
Hasta
Hacer
Pg. 132
"Mayor
",
max;
FinProceso
Nota: Por defecto, los arreglos siempre se pasan por Referencia. No intentes
pasarlo por valor o provocaras un error.
Funcin mayor
En esta funcin se determina el numero mayor comparando los nmeros que se
ingresan, cuando se inicia la funcin nummayor vale cero pero supongamos que
ingresamos en el arreglos 3-5-4-2-8
Num
Nummayor
cuando num[0] es 3
Entonces vale 3
cuando num[0] es 5
Entonces vale 5
cuando num[0] es 4
cuando num[0] es 2
cuando num[0] es 8
Entonces vale 8
Pg. 133
0
1
2
3
4
Pg. 134
Proceso dimension_5_lineas
Dimension numero[5,4];
Definir numero Como Entero;
Definir L, C Como Enteros;
Para
L
Para
<-
Hasta
<-
Hasta
En este programa usamos dos variables enteras L que se usa para las lneas y
C que se usa para las columnas, usamos ciclos anidados porque necesitas
recorrer por cada lnea, todas las columnas, esto sucede as:
Cuando la L tiene el valor de 1 la C toma el valor de 1 a 4 esto hace que se
puede leer el elemento Numero [1,1], Numero [1,2], Numero [1,3], Numero[1,4]
luego cuando la L tiene el valor de 2 entonces la l vuelve a iniciar de 1 a 4
haciendo lo mimo 5 veces que es el nmero de las lneas.
FinSubProceso
SubProceso ingreso(numero)
Definir L,C Como Enteros;
Para
<-
Para
1
C
Hasta
<-
Escribir
Leer
"Columna
sumar";
col;
sumaL<-sumaLinea(numero,linea);
sumaC<-sumaColumna(numero,col);
Escribir
"Suma
de
la
columna
", col,
Escribir
"Suma
de
la
"
"
es
es
",
",
sumaC;
sumaL;
FinProceso
Informacin terica
Registros o estructuras
Nota: Esta es Informacin terica, PSeInt no soporta registros.
Un registro es un dato estructurado, formado por elementos lgicamente
relacionados, que pueden ser del mismo o de distintos tipos, a los que se les
denomina campos. Los campos de un registro podran ser de los tipos
previamente definidos por PSeInt (entero , real etc.) o bien por un registro
definido anteriormente
Ejemplo: demostracin de registros
En este programa usaremos un registro para guardar la informacin del alumno
usando un registro que se llama alum.
Luego tendremos que declarar una variable que sea del tipo registro, se llama
Pg. 137
alum, despus usaremos esa variable para pedir los datos , siempre que
queremos acceder a un registro se hace
Registro.Variable;
Entonces si queremos acceder a nombre escribiramos
Alum.nombre;
Alum porque as se llama la variable que es de tipo registro re_alumno .
Registro Alum
Dimension nombre[30];
Definir nombre como Cadena;
Dimension carrera[30];
FinRegistro
Proceso principal
Escribir "el nombre del Alumno ";
Leer Alum.nombre;
Escribir
Leer
"Cuenta
del
Alumno ";
Alum.cuenta;
"
alumno
",
Con
cuenta
", Alum.cuenta,
"
El
Alum.nombre;
"
Estudia
",
Alum.carrera;
FinProceso
declaracin
del
registro
Registro alum
Dimension nombre[30];
Definir nombre Como Cadena;
Definir na,ne,nf Como Reales;
Dimension obs[10];
Definir obs Como Cadena;
FinRegistro
SubProceso vobs <- observacion (vobs, nota)
Definir vobs como Cadena;
Si nota>= 60 Entonces
vobs<-"aprobado";
Sino
vobs<-"reprobado";
FinSi
FinProceso
SubProceso ingreso(alum)
Escribir
Leer
el
nombre
";
"Ingresar
la
nota
examen ";
la
nota
acumulada
alum.ne;
Escribir
Leer
Ingresar
alum.nombre;
Escribir
Leer
"
"Ingresar
";
alum.na;
FinsubProceso
SubProceso
calculo(alum)
alum.nf<-alum.na
alum.ne;
alum.obs<-observacion(alum.nf);
FinSubProceso
SubProceso presentar(alum)
Escribir "Nota Final ",alum.nf;
Escribir "Observacin ",alum.obs;
Pg. 139
FinSubProceso
Proceso principal
Para I<- 1 Hasta 5 Hacer
ingreso(alum);
calculo(alum);
presentar(alum);
FinPara
FinProceso
Registro emple
Definir codigo Como Entero;
Dimension nombre[30];
Definir nombre como Cadena;
FinRegistro
Cdigo
Cdigo
Cdigo
Cdigo
Cdigo
Nombre
Nombre
Nombre
Nombre
Nombre
2
3
4
5
Pg. 140
Lectura de datos
Escribir
Leer
"Ingresar
del
Empleado
";
emple[3].nombre;
Escribir
Leer
Nombre
"Ingresar
el
codigo
de
registro
";
emple[3].codigo;
Escribir
"Nombre
del
Escribir
"Cdigo
de
Empleado
registro
", emple[3].nombre;
",
emple[3].codigo;
Dimension[5] empleado;
y despus
emple;
<-
Hasta
Hacer
Leer emple[i].nombre;
Escribir "Ingresar el codigo de registro ";
Leer emple[i].codigo;
FinPara
FinProceso
FinProceso
FinRegistro
Sino
vobs<-"reprobado;
FinSi
FinSubroceso
SubProceso
ingreso(alum)
Definir
i Como Entero;
Para
<-0
Hasta
Escribir
Leer
Ingresar
el
nombre
";
"Ingresar
la
nota
examen ";
la
nota
acumulada
alum[i].ne;
Escribir
Leer
Hacer
alum[i].nombre;
Escribir
Leer
"
"Ingresar
";
alum[i].na;
FinPara
FinSubProceso
SubProceso calculo(alum)
Definir I Como Entero;
Para i <- 0 Hasta 5 Hacer
alum[i].nf<-alum[i].na + alum[i].ne alum[i].obs<observacion(alum[i].nf);
FinPara
FinSubProceso
<-
Hasta
Hacer
FinSubProceso
Proceso Principal
Ingreso(alum);
Calculo(alum);
Presentar(alum);
FinProceso
SubProceso seguro
Dimension[5] empleado;
Definir empleado Como emple;
Definir sueldo Como Real;
Si sueldo >2400 Entonces
Retornar 84;
Sino
Retornar 0.035*sueldo;
FinSi
FinSubProceso
SubProceso Ingreso (emple)
Dimension[5] empleado;
Definir empleado Como emple;
Definir i Como Entero;
Para
<-
Hasta
<-
Hasta
Escribir
Hacer
"Empleado
",emple[i].nombre;
Escribir "";
Escribir
"Comisin
..:",
emple[i].comis;
Escribir "";
Escribir
"Seguro
Social..:",
emple[i].ihss;
Escribir "";
Escribir
"Total
Pagar
..:",
emple[i].tp;
Escribir ""
Escribir "";
FinPara
FinSubProceso
Proceso principal
Ingreso(emple);
Calculo(emple);
Presentar(emple);
FinProceso
Arch
Es
Archivo
Secuencial;
Abrir un archivo
Sintaxis
Abrir nombre_archivo como variable [para lectura, escritura]
ejemplo :
Abrir
"empleados.txt"
Como
Archemple
Para
Lectura;
Descripcin
Esta instruccin sirve para abrir el archivo. Las operaciones permitidas para el
archivo son lectura, escritura o ambas. En la sintaxis variable se refiere a variable
de tipo archivo que se usar para referenciar el archivo.
Cerrar un archivo
Sintaxis
Cerrar variable de tipo archivo
Ejemplo :
Cerrar
archemple;
Descripcin
Esta instruccin sirve para cerrar un archivo. Variable
Pg. 146
Leer de un archivo
Sintaxis
Leer variable_archivo, variable_datos
ejemplo :
Leer
archemple,emple.nombre;
Descripcin
Esta instruccin lea una variable desde un archivo. La primera variable de la
instruccin debe ser de tipo archivo, la segunda puede ser de cualquier tipo, eso
depender del tipo de archivo.
Escribir en un archivo
Sintaxis
Escribir variable_archivo, variable_datos;
ejemplo :
Escribir
archemple,
emple.nombre;
Descripcin
Esta instruccin escribe una variable en un archivo. La primera variable de la
instruccin debe ser de tipo archivo, la segunda puede ser de cualquier tipo, eso
depender del tipo de archivo.
Ejemplo Ingreso de datos a un archivo secuencial (texto).
Lo primero que tenemos que hacer es crear con windows un archivo de texto ,
con el notepad, y lo salvamos con el nombre de empleados , en el mismo
directorio donde salvaremos el programa de ingreso de datos.
Declaramos el tipo de archivo secuencial
Tipo
Arch
es
archivo
secuencial;
Pg. 147
Empleado
Dimension nombre[50];
Definir nombre Como Cadena;
Definir
Definir
FinRegistro
luego declaramos la variable para manejar el archivo de texto, que de tipo arch y
la variable de tipo registro
Definir Empleado Como emple;
Definir
Definir
Arch
Es
Archivo
Secuencial;
Registro Empleado
Dimension[50] nombre;
Definir nombre Como Cadena;
Definir sueldo Como Real;
Definir sexo como Caracter;
FinRegistro
Empleado
Definir emple Como Arch;
ArchEmple;
Definir resp como Caracater;
Abrir "empleados.txt" Como archemple Para Escritura;
Repetir
Escribir "Nombre del emnpleado..:";
Leer emple.nombre;
Escribir "Sueldo del empleado...:";
Leer emple.sueldo;
Pg. 148
archemple
FinProceso
Arch
Como Archivo
Secuencial;
Registro Empleado
Dimension nombre[50];
Definir sueldo como Real;
Definir nombre, sexo Como Caracter;
FinRegistro
Variables globales
Definir Empleado Como emple;
Definir ArchEmple Como Arch;
Definir Detener como Caracter;
FinVariablesGlobales
SubProceso presentar(empleado emple)
Escribir "Nombre del empleado ...:",emple.nombre;
Escribir "";
Escribir "Sueldo....:",emple.sueldo,
Pg. 149
Escribir "";
Escribir "Sexo......:",Emple.sexo;
Escribir "";
Leer
detener;
FinSubProceso
Proceso principal
Abrir
"empleados.txt"
Como
archemple
Para
lectura;
Anexo:
Editar diagramas de flujo
PSeInt permite editar el diagrama de flujo, luego editar los cambios, para que
pueda ser ejecutado desde pseudocdigo.
Pg. 150
Pg. 151
Pg. 152
Se nos presenta un dibujo con las estructuras usadas, y lal costado izquierdo
inferior aparece su nombre.
Si queremos aadir un nuevo bloque al diagrama de flujo, lo que hacemos es
cliquear en un bloque y sin soltar el botn izquierdo del mouse arrastrarlo hasta el
diagrama de flujo. Para fijar el bloque, presionamos la tecla escape.
En las sentencias escribir, el texto se debe poner entre comillas.
Guardar cambios
Para guardar los cambios, vamos al botn que se encuentra al costado izquierdo
superior y hacemos clic en guardar cambios.
No se ejecutan diagramas de flujo que no sean guardados.
Nota: Tambin se pueden crear diagramas sin necesidad de escribir su
pseudocdigo correspondiente.
Bajo Linux
Bajo Windows
Se
puede
encontrar
un
power
en
odelys2003.files.wordpress.com/2011/10/pseint.pptx
Pg. 154
http://pseint.sourceforge.net/index.php?page=ejemplos.php
http://uccomputacion.blogspot.com/p/pseint.html
http://algoritmoscolegio40.blogspot.com/2012/09/operadores-y-funciones-depseint.html
http://www.monografias.com/trabajos-pdf5/tutorial-pseint/tutorial-pseint.shtml
http://eduardoscorpion.wordpress.com/2011/11/02/pseint-como-lenguaje-deprogramacion/
http://uccomputacion.blogspot.com/p/pseint.html
http://algoritmoscies7am.blogspot.com/2013/03/ejercicios-algoritmos-cartillan2.html
En PseInt
Pg. 155
Pg. 156