0 Manual PSeInt
0 Manual PSeInt
Programación en:
PSeInt
Pág. 1
M.Sc. Ing. German Jesus Pereira Munoz
Índice
Tema Pág.
¿Qué es PSeInt? 3
Instalación 4
Mi primer programa 5
Diagramas de flujo 10
Declarar variable 12
Operadores 13
Instrucciones Condicionales
• Si 16
• Si anidado 18
• Segun 20
• Operador | ó O 22
• Operador & ó Y 24
• Exportación a C 24
Instrucciones de ciclo
• Ciclo Mientras 26
• Ciclo Para 32
o Ciclo Para con paso negativo 35
o Ciclos Anidados 35
• Ciclo Repetir 37
SubProcesos 40
• Parámetros de entrada o valor
• Parámetros de variable
• SubProcesos con retorno 46
Dimensiones
• Dimensión de una Dimensión 50
• Dimensiones Bidimensionales 57
Estructuras (Información teórica) 59
• Dimensiones con estructuras 61
Archivos de texto (Información teórica) 62
Anexo:
• Editor de diagramas de flujo
Pág. 2
M.Sc. Ing. German Jesus Pereira Munoz
Pág. 3
M.Sc. Ing. German Jesus Pereira Munoz
¿Qué es PSeInt?
Pág. 4
M.Sc. Ing. German Jesus Pereira Munoz
Instalación
Apuntes preliminares
Antes de empezar a programar, es conveniente tener una idea del
funcionamiento general de PSeInt.
Pág. 5
M.Sc. Ing. German Jesus Pereira Munoz
Este manual se maneja con dos perfiles. El estricto, que es el más parecido
a un lenguaje de programación real, se debe respetar al pie de la letra el
formato del pseudocódigo propuesto por Novara. La sintaxis flexible la
usamos para ejecutar ciertos códigos que requieren más flexibilidad a la
hora de ejecutarse. A menos que se indique que se usa sintaxis flexible, se
utilizará la sintaxis estricta.
Abrir PSeInt
Para abrir PSeInt damos doble clic en el acceso directo PSeInt del escritorio y
nos abre el programa.
Entorno de PseInt
Ahora que abrimos y configuramos por primera vez PSeInt, pasamos a detallar el
entorno de programación de PSeInt.
Pág. 6
M.Sc. Ing. German Jesus Pereira Munoz
Pestañas de trabajo
Botones de comando
PSeInt, al ser una herramienta didáctica y orientada a personas con poco o sin
ninguna experiencia en programación, presupone que dicho usuario no conoce
todavía la sintaxis válida en PSeInt. A tales efectos, como se ve en la captura, en
este caso resaltados con rojo a la derecha del entorno, este dispone a su lado
botones etiquetados con las estructuras usadas en este programa, que de ser
presionadas escriben en el editor de texto dicha sintaxis válida de PSeInt,
Pág. 7
M.Sc. Ing. German Jesus Pereira Munoz
Esta sintaxis del pseudocódigo en PSeInt se escriben entre las líneas Proceso y
FinProceso, excepto la estructura subproceso que se escribe fuera del proceso
principal ya que un proceso no puede contener ni uno ni más de un SubProceso.
Ayuda rápida
Acciones secuenciales:
Botón Escribir
Dibujo:
Pág. 8
M.Sc. Ing. German Jesus Pereira Munoz
Ejemplo de uso:
Ejemplos: Escribir "hola mundo"; Escribir "hola mundo, hola, 2, c";
Botón Leer
Dibujo:
Ejemplo de uso:
Leer a; //recibe el valor y lo almacena en a.
Leer a, b, c; //recibe 3 valores y los guarda en la variable que a, b y c
respectivamente
Botón Asignar:
Dibujo:
Ejemplo de uso:
Pág. 9
M.Sc. Ing. German Jesus Pereira Munoz
Ejemplo de uso:
Si cant_numeros != 0 entonces
//sentencias
FinSi
Botón Segun
Dibujo:
Pág. 10
M.Sc. Ing. German Jesus Pereira Munoz
Botón Repetir
Dibujo:
Botón Para
Dibujo:
Pág. 11
M.Sc. Ing. German Jesus Pereira Munoz
Funciones y SubProcesos
Dibujo:
Nota: En el caso que nos moleste o que ya no necesitemos este panel podemos
cerrarlo con el botón cerrar ubicado a la derecha superior del mismo
Nota 2: Todas las estructuras tanto selectivas como repetitivas, así como también
el uso de subprocesos se explican al detalle en cada sub apartado
Área de trabajo
El lugar donde escribimos el código del pseudocódigo.
Los números a la izquierda indican el número de línea de código del programa.
Pestañas de trabajo
Sobre la parte superior del área de trabajo vemos una pestaña que por defecto
Pág. 12
M.Sc. Ing. German Jesus Pereira Munoz
pseudocódigo.
Pág. 13
M.Sc. Ing. German Jesus Pereira Munoz
En caso de tratarse del proceso principal, estos textos que se muestran son las
variables que se usan en ese proceso principal.
Nota: Como bien menciona Pablo Novara en este programa no puede hacer
instrucciones fuera ni de los Procesos ni de los Subprocesos, por lo tanto no es
posible declarar variables globales.
Nota2: Si ponemos el cursor sobre el 42 o la variable aparece un cartel con la
ayuda de correspondiente
Si hacemos clic sobre el ícono Sub, PSeInt nos marca con azul en que parte del
pseudocódigo se encuentra el SubProceso. Lo mismo sucede hacemos clic sobre
las variables. Eso es útil cuando tenemos múltiples SubProcesos, variables o
parámetros y se nos hace difícil saber dónde está cada una de ellas/ellos.
Pág. 14
M.Sc. Ing. German Jesus Pereira Munoz
Ahora que los hemos guardado necesitamos que nuestro programa funcione y
escriba, pero aunque PSeInt subraye con rojo los errores de sintaxis, es bueno
verificar sintaxis para ver los errores. Para ello vamos a ejecutar, → verificar
sintaxis. De todos modos, si tuviéramos errores él nos subrayaría la frase donde
se encuentre el error, luego lo corregimos y lo volvemos a ejecutar, hasta que no
aparezca nada subrayado con rojo.
Pág. 15
M.Sc. Ing. German Jesus Pereira Munoz
Proceso sin_titulo
FinProceso
Y el proceso principal se cierra con las palabras claves FinProceso que indica el
Pág. 16
M.Sc. Ing. German Jesus Pereira Munoz
Pág. 17
M.Sc. Ing. German Jesus Pereira Munoz
Concatenar texto
Proceso primer_programa
Escribir "Mi primer programa";
Escribir " en PSeInt ";
FinProceso
Mi primer programa
En PSeInt
Esto porque aunque se escriba otro texto, y se coloque la palabra clave Escribir,
el texto sigue escribiéndose al final del otro, ahora si quisiéramos escribir:
Proceso primer_programa
Escribir "Mi primer programa " Sin Saltar;
Escribir "En PSeInt ";
FinProceso
Con esto deducimos que la instrucción Sin Saltar concatena, en este caso, el
contenido de una cadena de texto, y el contenido del próximo Escribir se escribe a
continuación del anterior y no en la línea de abajo.
Recordar que en sintaxis estricta la colocación del punto y coma al final de las
sentencias es obligatoria, en flexible en opcional.
Nota: Las comillas deben ser siempre simples y nunca tipográficas pues estas
últimas son símbolos gráficos que ningún lenguaje de programación hasta el
momento puede interpretar. Siempre por defecto en los editores de texto de los
IDES se escriben comillas simples, pero cuando se importa o se formatea
pseudocódigo traído de afuera, hay que corregir el encomillado, de no hacerlo
provocaría un error de compilación.
Pág. 18
M.Sc. Ing. German Jesus Pereira Munoz
Diagramas de flujo
PSeInt es capaz de interpretar los pseudocódigos y transformarlos a diagrama de
flujo, para eso dispone de un visualizador y editor de diagramas de flujo. Esto es
útil si queremos analizar el pseudocódigo desde un punto de vista gráfico.
Ejemplo:
Proceso primer_programa
Escribir "Mi primer programa " Sin Saltar;
Escribir " en PSeInt ";
FinProceso
Su representación en diagrama de flujo es la siguiente:
Pág. 19
M.Sc. Ing. German Jesus Pereira Munoz
Aquí vemos el inicio del proceso representado como una elipse, pues es donde
comienza el programa, la sentencia escribir representada en un rectángulo, pues
es una salida (obsérvese la flecha de salida) y abajo nuevamente una elipse que
representa el fin del proceso.
Nota 1: En la página
http://pseint.sourceforge.net/index.php?page=pseudocodigo.php del sitio oficial de
PSeInt se explica la estructura de los diagramas de flujo.
Nota 2: En el anexo se explica cómo editar diagramas de flujo.
Declarar variables
En sintaxis estricta, siempre que necesitemos hacer un programa, tendremos que
declarar variables para poder guardar la información que introduzcamos al
programa.
Los tipos de datos básico soportados son los siguientes:
Pág. 20
M.Sc. Ing. German Jesus Pereira Munoz
Operadores
Operador Función
() Agrupar expresiones
^ Operador para exponenciación
* Operador de multiplicación
/ Operador de división
% ó Mod Operador de cálculo de residuo
trunc(valor1 / valor2); Sintaxis de división entera
&óy Operador lógica y
+ Operador de suma
- Operador de Resta
|óo Operador lógico o
Nota: Tanto en sintaxis flexible como estricta, podemos utilizar también los
operadores & | y mod como y o y % respectivamente.
Pág. 21
M.Sc. Ing. German Jesus Pereira Munoz
Proceso lectura_datos
Dimension nombre[25];
Definir nombre Como Cadena;
Escribir "Ingrese su nombre ";
Leer nombre[24];
Escribir "Bienvenido ";
Escribir nombre[24];
FinProceso
Su diagrama de flujo:
Pág. 22
M.Sc. Ing. German Jesus Pereira Munoz
En la tabla se nos muestra como se pudo sustituir un bloque del programa que
nos daría el mismo resultado
Caso 1 Caso 2
Escribir "Bienvenido "; Escribir "bienvenido " Sin Saltar , nombre;
Escribir nombre;
Proceso programa_aumento
Definir sueldo, aumento Como Enteros;
Dimension nombre[25];
Definir nombre Como Cadena;
Escribir "Ingresar el nombre del empleado";
Leer nombre[24];
Escribir "Ingresar el sueldo del empleado";
Leer sueldo;
Aumento<-trunc(sueldo*1.25);
Escribir "Nuevo sueldo con el 25% de aumento";
Escribir aumento;
FinProceso
Pág. 23
M.Sc. Ing. German Jesus Pereira Munoz
Nota: Nótese que para calcular Aumento se lo tuvo que trucar utilizando la
palabra clave trunc que es truncar la expresión. Eso es porque Aumento fue
declarado como Entero, por lo tanto debe recibir un entero, pero la expresión
(sueldo*1.25) no da entero
Pág. 24
M.Sc. Ing. German Jesus Pereira Munoz
Instrucciones condicionales
Anteriormente hemos estado haciendo programas que solo hacen cálculos, pero
la programación es más interesante cuando nuestros programas toman sus
propias decisiones, en PSeInt existen instrucciones condicionales que se
describen a continuación:
Instrucción Si:
sintaxis
Si condición Entonces
instrucciones;
FinSi
Si condición Entonces
instrucciones;
Sino
instrucciones;
FinSi
Proceso decision
Definir num como Entero;
Escribir "Ingresar un número";
Leer num;
Pág. 25
M.Sc. Ing. German Jesus Pereira Munoz
Ingresar el nombre del empleado, las horas trabajadas, luego Calcular pago bruto
(50 lps la hora) IHSS y total a pagar, presentar los resultado del programa
Proceso empleados
Definir horas como Enteros;
Definir Pbruto,ihss,tp como Reales;
Dimension nombre[25];
Definir nombre Como Cadena;
Escribir "Ingresar el nombre";
Leer nombre[24];
Escribir "Ingresar las horas trabajadas";
Leer horas;
Pbruto<-horas*50;
Si pbruto > 2400 Entonces
Ihss<-84;
Sino
Ihss<-0.035*pbruto;
FinSi
Tp<-pbruto-ihss;
Escribir "Pago bruto " , pbruto;
Escribir "Seguro Social " , ihss;
Escribir "Total a pagar " , tp;
FinProceso
En este programa se usó en el cálculo del ihss una decisión que tiene dos salidas
una cuando se cumple la condición que es el entonces y la otra cuando no se
cumple la condición que es el sino, ahora esto nos ayuda a que nuestros
programas puedan tomar una decisión cuando la condición se cumple y otra
cuando no se cumple.
Pág. 26
M.Sc. Ing. German Jesus Pereira Munoz
Ingresar el nombre del empleado, la zona de trabajo, las ventas del empleado,
luego calcular su comisión en base a un porcentaje basado en la zona de
trabajo, luego determinar el IHSS y el total a pagar, presentar los datos.
A 6%
B 8%
C 9%
Proceso Comision
Definir zona como Caracter;
Dimension nombre[25];
Definir nombre Como Cadena;
Definir ventas, comis, ihss, tp Como Reales;
Pág. 27
M.Sc. Ing. German Jesus Pereira Munoz
Sino
comis<- 0;
FinSi
FinSi
FinSi
Si comis > 2400 Entonces
ihss<-84;
Sino
ihss<-0.035*comis;
tp<-comis-ihss;
FinSi
Escribir "Comisión ganada ", comis;
Escribir "Seguro Social ", ihss;
Escribir "Total a pagar ", tp;
FinProceso
Estructura Segun
Esta se usa como sustituto en algunos casos del si anidado, por ser más práctico
al aplicarlo en la evaluación de algunas condiciones.
Pág. 28
M.Sc. Ing. German Jesus Pereira Munoz
.
.
[ 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., también se puede usar el De Otro Modo que nos
indica, que en caso de no seleccionar ninguna de las instrucciones anteriores se
ejecutan.Nota importante: En sintaxis estricta las opciones del Segun deben ser
siempre del tipo numérico. Para poder evaluar opciones del tipo texto se debe
personalizar el lenguaje utilizando sintaxis flexible, o yendo a Opciones del
lenguaje (Perfiles) y destildar Limitar la estructura Según a variables de control
numéricas en el editor o en su defecto utilizar el perfil taller de informática, o perfil
flexible.
Proceso ejemplo_caso
Pág. 29
M.Sc. Ing. German Jesus Pereira Munoz
Pág. 30
M.Sc. Ing. German Jesus Pereira Munoz
comis<- 0;
FinSi
FinSi
FinSi
Ingresar el nombre del cliente, luego la cantidad del producto, precio y tipo de
cliente, calcular el subtotal, descuento, impuesto s/v, total a pagar, presentar
los datos.
El descuento es del 10% si el cliente es de tipo A o la cantidad de cualquier
producto es mayor a 100 sino es de 5%.
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;
Escribir "Nombre del cliente";
Leer nombre[24];
Escribir "Ingresar el Tipo de cliente";
Leer tipoM;
Escribir "Ingresar el precio del producto";
Leer precio;
Escribir "Ingresar la cantidad ";
Leer cant;
Pág. 31
M.Sc. Ing. German Jesus Pereira Munoz
Como vemos, el proceso es tan largo, que aparece con la letra muy chica, para
que se vea más grande movemos el scroll para que se agrande.
Pág. 32
M.Sc. Ing. German Jesus Pereira Munoz
Proceso ejemplo_operador_y
Definir num Como Entero;
Escribir "Número a evaluar";
Leer num;
Si num >=50 & num<=100 Entonces
Escribir "El número está entre 50 y 100";
Sino
Escribir "Fuera del rango 50 y 100";
FinSi
FinProceso
Exportación a C
Nota: Puede que el código generado por el interpretador no sea del todo
correcto, esto se va a ir solucionando en las próximas versiones de PSeInt
Instrucciones de ciclo
Hemos hecho programas que solo se repiten una vez, pero en la programación
necesitamos que los programas corran varias veces y que nos presenten
información al final de correr varias veces, en estos casos usaremos ciclos, que
Pág. 33
M.Sc. Ing. German Jesus Pereira Munoz
Ciclo Mientras:
Sintaxis
Ingresar 10 nombres
Proceso contar_nombres
Definir contador Como Entero;
Dimension nombre[25];
Definir nombre Como Cadena;
Contador<-0;
Mientras contador<10 Hacer
Escribir "Ingresar el nombre";
Leer nombre[24];
contador<-contador+1;
FinMientras
FinProceso
Pág. 34
M.Sc. Ing. German Jesus Pereira Munoz
Proceso acumuladores
Definir Contador,Suma,Num Como Enteros;
Contador<-0;
Suma<-0;
Mientras contador<10 Hacer
Escribir "Ingresar un número";
Leer Num;
Contador<-Contador+1;
Suma<-Num+Suma;
Pág. 35
M.Sc. Ing. German Jesus Pereira Munoz
FinProceso
El ciclo recorre 10 veces y pide los 10 números, pero la línea suma<- suma +
num, hace que la variable suma, incremente su valor con el número que se
introduce en ese momento, a diferencia del contador, un acumulador se
incrementa con una variable, acumulando su valor hasta que el ciclo termine, al
final se presenta la suma, solo en ese momento se debe de presentar un
acumulador, porque antes no reflejaría la suma de todos los números.
Ejemplo sobre el ciclo mientras usando una respuesta para controlar la salida del
ciclo.
Ingresar el nombre del cliente, el precio del producto, cantidad y luego calcular el
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 Resp Como Caracter;
Dimension nombre[25];
Definir nombre Como Cadena;
Definir Precio, cantidad, totalglobal, st, isv, tp Como
Reales;
Totalglobal<-0;
Resp<-'S';
Mientras resp <>'N' Hacer
Pág. 36
M.Sc. Ing. German Jesus Pereira Munoz
En este ejercicio, observamos que el ciclo lo controla una respuesta que se pide
al final S para seguir o N para terminar , pero daría el mismo resultado si escribe
cualquier letra distinta a S, aunque no sea N siempre seguiría funcionando el
programa, la validación de los datos de entrada lo estudiaremos más adelante.
Ingresar el nombre del alumno, la nota examen y nota acumulada, luego calcular
la nota final, y presentar la nota final y la observación del alumno.
Preguntar si desea continuar, al final presentar el número de aprobados y
reprobados.
Proceso aprobado
Definir Resp Como Caracter;
Dimension nombre[25];
Definir nombre Como Cadena;
Definir na,ne,nf Como Reales;
Definir cr,ca Como Enteros;
Pág. 37
M.Sc. Ing. German Jesus Pereira Munoz
Como podemos observar en las líneas 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.
Ciclo Para
Sintaxis
Pág. 38
M.Sc. Ing. German Jesus Pereira Munoz
Para variable <- valor_inicial Hasta valor_final Con Paso Paso Hacer
instrucciones
FinPara
Descripción
Proceso ciclo_Para
Definir I Como Entero;
Para I<-1 Hasta 10 Con Paso 1 Hacer
Escribir I;
FinPara
FinProceso
Proceso ciclo_Para_2
Definir I, final Como Enteros;
Escribir "Ingresar el número de veces a repetir el ciclo ";
Leer final;
Pág. 39
M.Sc. Ing. German Jesus Pereira Munoz
Proceso ciclo_Para_con_factorial
Definir I, numero, factorial Como Enteros;
factorial<-1;
Escribir "Ingresar el número para determinar su factorial ";
Leer numero;
Para I<-1 hasta numero Con Paso 1 Hacer
factorial<- factorial*I;
FinPara
Escribir "factorial de ", numero ," es ", factorial;
FinProceso
En este ejercicio se inicia el factorial en 1 porque acumulara una multiplicación y
si lo iniciamos en cero nos daría el resultado cero, si nosotros ingresar 3, el ciclo
se ejecutara 3 veces , el factorial tomaría el valor de 1x2x3.
Diagrama de flujo:
Pág. 40
M.Sc. Ing. German Jesus Pereira Munoz
Nota: Puede omitirse la expresión “Con Paso -1” en el ciclo para yendo a
Configurar Opciones de lenguaje (perfiles)… → Personalizar → Permitir omitir el
paso -1 en los ciclos Para.
Ciclos anidados
Pág. 41
M.Sc. Ing. German Jesus Pereira Munoz
Proceso ciclo_Para_anidado
Definir I,k Como Enteros;
Para I <- 1 Hasta 4 Hacer
Para K <-1 Hasta 5 Hacer
Escribir 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 está dentro, que es el que presenta
4 veces el valor de la I , luego salta una línea , para que aparezcan los grupos de
números en cada línea.
En este ejercicio necesitamos ingresar 5 números pero cada vez que ingresemos
un 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.
Pág. 42
M.Sc. Ing. German Jesus Pereira Munoz
Ciclo Repetir
Sintaxis:
Repetir
Instrucciones;
Descripción
Hacer
Pág. 43
M.Sc. Ing. German Jesus Pereira Munoz
Repetir
//Instrucciones;
Mientras Que
ca<-0;
cr<-0;
Repetir
Escribir "ingresar el nombre del alumno ";
Leer nombre[24];
Escribir "ingresar la nota del alumno ";
Leer nota;
Si nota >= 60 Entonces
ca<-ca+1;
Sino
cr<-cr+1;
FinSi
Pág. 44
M.Sc. Ing. German Jesus Pereira Munoz
Algo importante del ciclo Repetir es, como ya se dijo, que se ejecuta por lo menos
una vez, antes de validar la condición de salida del ciclo, es por esto , que
siempre que escribamos un programa que verifique la condición antes de entrar
ciclo se debe de usar el ciclo Mientras.
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[24];
Escribir "Ingresar la nota del alumno ";
Leer nota;
Pág. 45
M.Sc. Ing. German Jesus Pereira Munoz
SubProcesos
Sintaxis
SubProceso NombreSubProceso
FinSubProceso
Siempre que usemos parámetros estos deben de ser del mismo tipo datos, esto
nos dice que la variable del programa, debe de del mismo tipo del parámetro del
procedimiento y pasados en el mismo orden en que están colocados en el
subproceso.
Nota: Las variables han de definirse en todos los subprocesos, a no ser que
pasen y/o entren por referencia o valor desde otro subproceso
Pág. 46
M.Sc. Ing. German Jesus Pereira Munoz
Proceso Principal
Dimension nombre[25];
Definir nombre como Cadena;
Escribir "Ingresar el nombre ..:";
Leer nombre[24];
asteriscos;
Escribir "";
Escribir nombre[24];
Escribir "";
asteriscos;
Escribir "";
FinProceso
Pág. 47
M.Sc. Ing. German Jesus Pereira Munoz
Parámetros de valor
Pág. 48
M.Sc. Ing. German Jesus Pereira Munoz
SubProceso asteriscos
Definir num, I Como Enteros;
num <- 10;
Para i <- 0 Hasta num-1 Con Paso 1 Hacer
Escribir "*" Sin Bajar;
FinPara
Escribir "";
FinSubProceso
Proceso principal
Dimension nombre[25];
Definir nombre Como Cadena;
Definir num Como Entero;
num<-10;
Escribir "Ingresar el nombre ..:";
Leer nombre[24];
asteriscos;
Escribir "";
Escribir nombre[24];
Escribir "";
asteriscos;
FinProceso
Parámetros de variable
Pág. 49
M.Sc. Ing. German Jesus Pereira Munoz
Proceso Principal
Definir nombre, apellido Como Cadenas;
nombre<-"No hay cambios en nombre";
apellido<-"No hay cambios en apellido";
Pedir_datos(nombre,apellido);
Escribir "Nombre completo ", nombre," ", apellido;
FinProceso
Nota: En caso de que la variable se deba pasar por referencia siempre se debe
indicar. En cambio, si se pasa por valor, la indicación de pase puede omitirse.
Siempre por defecto se pasa por valor.
Pág. 50
M.Sc. Ing. German Jesus Pereira Munoz
Ejemplo
Proceso principal
Definir pot como Entero;
Ingreso(base,expo);
Escribir "Potencia es ",Potencia(base,expo,pot);
FinProceso
En el subproceso de ingreso los dos datos , exponente y base son de tipo entero
y parámetros de variable, esto porque necesitamos que el procedimiento nos
Pág. 51
M.Sc. Ing. German Jesus Pereira Munoz
Nota: Los subprocesos no se pueden llamar igual que las variables que se
declaran en el programa.
Nota 2: Las funciones o subprocesos que retornan valores deben utilizarse como
parte de expresiones. Generalmente, el programa pide que se le anteponga la
palabra escribir antes del nombre de la función
Sintaxis
Sintaxis
//instrucciones;
FinSubProceso
Usaremos el mismo ejercicio que usamos para los subprocesos, para hacer una
Pág. 52
M.Sc. Ing. German Jesus Pereira Munoz
Proceso principal
Definir base, expo, pot Como Enteros;
Ingreso(base,expo);
pot<-Potencia(base,expo);
Escribir "Potencia es ", pot;
FinProceso
Pág. 53
M.Sc. Ing. German Jesus Pereira Munoz
Pág. 54
M.Sc. Ing. German Jesus Pereira Munoz
Nota:
Subproceso de ingreso
En este subproceso sin retorno se ingresan los datos, validando que la zona solo
sea A,B,C
Subproceso de cálculo
SubProceso presentar
Pág. 55
M.Sc. Ing. German Jesus Pereira Munoz
Pág. 56
M.Sc. Ing. German Jesus Pereira Munoz
Proceso principal
Definir ventas,comis,ihss,tp Como Reales;
Definir nombre Como Cadena;
Definir zona Como Caracter;
Ingreso(nombre,zona,ventas);
Calculos(zona,ventas,comis,ihss,tp);
Presentar(comis,ihss,tp);
FinProceso
En este caso los subprocesos con retorno los declaremos antes de los
subprocesos sin retorno solo porque estas se usaran en el subproceso sin retorno
cálculos, y es más legible al momento de leer un programa, pero, a los efectos de
la ejecución, PSeInt, no tiene en cuenta el orden del proceso y de los
subprocesos.
Dimensiones
Es una colección de datos del mismo tipo, que se almacenan en posiciones
consecutivas de memoria y reciben un nombre común.
Y para referirse a un determinado elemento tendremos de acceder usando un
índice para especificar la posición que queremos extraer o modificar su valor. Las
dimensiones pueden ser:
1-Unidimensionales: solo tiene una solo dimensión una fila y una columna
Pág. 57
M.Sc. Ing. German Jesus Pereira Munoz
Declaración:
Tipo de datos: es el tipo de datos que queremos que sea la colección, puede ser
entero, real, cadena, carácter o una estructura.
Ejemplo:
3 5 7 8 3 6 9 2 45 67
0 1 2 3 4 5 6 7 8 9
Pág. 58
M.Sc. Ing. German Jesus Pereira Munoz
o
I<- 7 //asignamos un valor a una variable de tipo entero
Ejemplo
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 dimensión, luego usaremos otro
ciclo para presentar los datos.
Cuando guardamos los datos en una dimensión, sus valores son almacenados en
la memoria y no se borrar después al leer el siguiente número, como en los
programas anteriores, cuando usábamos una variable para ingresar 10 números,
pero la variable al final del ingreso solo guardaba el último número que se
introdujo, ahora con los arreglos se guardan los 10 números en la memoria.
Pág. 59
M.Sc. Ing. German Jesus Pereira Munoz
Ejemplo
Pág. 60
M.Sc. Ing. German Jesus Pereira Munoz
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;
Pág. 61
M.Sc. Ing. German Jesus Pereira Munoz
Proceso Principal
Dimension num[5];
Definir num, max Como Enteros;
Ingreso(num);
Max<-mayor(num);
Escribir "Mayor ", max;
FinProceso
Nota: Por defecto, los arreglos siempre se pasan por referencia. No intentes
pasarlo por valor o provocarías un error.
Función mayor
Pág. 62
M.Sc. Ing. German Jesus Pereira Munoz
Num Nummayor
Declaración:
0 1 2 3
Pág. 63
M.Sc. Ing. German Jesus Pereira Munoz
Dimension numero[4,3];
Proceso dimension_5_lineas
Dimension numero[5,4];
Definir numero Como Entero;
Definir L, C Como Enteros;
Limpiar pantalla;
Pág. 64
M.Sc. Ing. German Jesus Pereira Munoz
En este programa usamos dos variables enteras L que se usa para las líneas y
C que se usa para las columnas, usamos ciclos anidados porque necesitas
recorrer por cada línea, todas las columnas, esto sucede así:
SubProceso ingreso(numero)
Pág. 65
M.Sc. Ing. German Jesus Pereira Munoz
Proceso principal
Dimension numero[5,4];
Definir numero Como Entero;
Definir linea,col,sumaC,sumaL Como Enteros;
Ingreso(numero);
Presentar(numero);
Escribir "Línea a sumar";
Leer linea;
Escribir "Columna a sumar";
Leer col;
sumaL<-sumaLinea(numero,linea);
sumaC<-sumaColumna(numero,col);
Escribir "Suma de la columna ", col, " es ", sumaC;
Escribir "Suma de la línea ", linea, " es ", sumaL;
FinProceso
Nota2: Los arreglos del parámetro, tanto cuando se pasan los arreglos a otro
Pág. 66
M.Sc. Ing. German Jesus Pereira Munoz
Información teórica
Estructuras o registros
Registro regAlum
Dimension nombre[30];
Definir nombre Como Cadena;
Dimension carrera[30];
Definir carrera Como Cadena;
Definir cuenta Como Entero;
FinRegistro
Proceso principal
Definir Alum Como reg_alum;
Escribir "El nombre del Alumno ";
Leer Alum.nombre;
Pág. 67
M.Sc. Ing. German Jesus Pereira Munoz
Registro reg_alum
Dimension nombre[30];
Definir nombre Como Cadena;
Definir na,ne,nf Como Reales;
Dimension obs[10];
Definir obs Como Cadena;
FinRegistro
Pág. 68
M.Sc. Ing. German Jesus Pereira Munoz
SubProceso presentar(alum)
Escribir "Nota Final ",Alum.nf;
Escribir "Observación ",Alum.obs;
FinSubProceso
Proceso principal
Definir I Como Entero;
Para I<- 1 Hasta 5 Con Paso 1 Hacer
ingreso(Alum);
calculo(Alum);
presentar(Alum);
FinPara
FinProceso
Hasta ahora nuestros arreglos solo han guardado un solo datos ya sea real,
entero cadena o carácter, cuando se quiere guardar más de un dato en una
casilla de la dimensión se declara una estructura y la dimensión se declara que
Pág. 69
M.Sc. Ing. German Jesus Pereira Munoz
Registro emple
Definir codigo Como Entero;
Dimension nombre[30];
Definir nombre Como Cadena;
FinRegistro
Dimension empleado[5];
Definir empleado Como emple;
0 1 2 3 4
Lectura de datos
Pág. 70
M.Sc. Ing. German Jesus Pereira Munoz
Proceso principal
Pág. 71
M.Sc. Ing. German Jesus Pereira Munoz
alum[i].obs<-observacion(alum[i].nf);
Pág. 72
M.Sc. Ing. German Jesus Pereira Munoz
Proceso Principal
// delcaración del arreglo de tipo registro
Definir alum Como reg_alumo;
Ingreso(alum);
Calculo(alum);
Presentar(alum);
FinProceso
Se declara una estructura con las variables de nombre ventas, comisión ihss y
total a pagar, se laboran una función para el seguro social, luego se elabora un
procedimiento de ingreso de datos donde se el nombre y las ventas, después el
procedimiento de cálculo, donde se determina la comisión que es el 5% de las
ventas, el seguro usando la función del Seguro y el total a pagar, luego se
presentan los datos usando un procedimiento.
SubProceso Calculo(emple)
Dimension[5] empleado;
Definir empleado Como emple;
Definir I Como Entero;
Para i <- 0 Hasta 1 Con Paso 1 Hacer
emple[i].comis<-emple[i].ventas*0.05;
emple[i].ihss<-seguro(emple[i].comis);
emple[i].tp<-emple[i].comis-emple[i].ihss;
FinPara
FinSubProceso
Proceso principal
Escribir Ingreso(emple);
Calculo(emple);
Presentar(emple);
FinProceso
Hasta esta parte, todos los resultados de los programas se borran de la memoria
al terminar el programa, en este capítulo aprenderemos de forma teórica como
guardaríamos la información en un archivo de texto para su posterior utilización.
Sintaxis
Abrir un archivo
Sintaxis
ejemplo :
Descripción
Esta instrucción 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
Ejemplo :
Cerrar archemple;
Descripción
Leer de un archivo
Sintaxis
Descripción
Escribir en un archivo
Sintaxis
Pág. 76
M.Sc. Ing. German Jesus Pereira Munoz
Descripción
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
Estructura Empleado
Dimension nombre[50];
Definir nombre Como Cadena;
Definir sueldo Como Real;
Definir sexo como Caracter;
FinEstructura
luego declaramos la variable para manejar el archivo de texto, que de tipo arch y
la variable de tipo estructura
Definir Empleado Como emple;
Definir ArchEmple Como Arch;
Definir resp como Caracter;
Pág. 77
M.Sc. Ing. German Jesus Pereira Munoz
Proceso principal
Definir emple Como Empleado;
Definir ArchEmple Como Arch;
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;
Escribir "Sexo ..:";
Leer emple.sexo;
Escribir archemple, emple.nombre;
Escribir archemple, emple.sueldo;
Escribir archemple, emple.sexo;
Escribir "Desea Continuar ..:";
Leer resp;
Hasta Que resp="S" | resp="N";
Hasta Que resp='N';
Cerrar archemple;
FinProceso
Se declara el tipo del archivo, el estructura y las variables para usar el estructura
y el archivo de texto, luego se abre el archivo para lectura y se hace un ciclo
mientras no sea fin de archivo, esto se logra con la función FDA que nos devuelve
verdadero cuando se encuentra al final del archivo y falso cuando no lo está.
Se usa la instrucción Leer, para recuperar los valores que se guardaron en el
archivo de texto, luego usando un procedimiento se escriben los valores de la
estructura en la pantalla
Pág. 78
M.Sc. Ing. German Jesus Pereira Munoz
SubProceso presentar(emple)
Definir Detener Como Caracter;
Escribir "Nombre del empleado ...:",emple.nombre;
Escribir "";
Escribir "Sueldo....:",emple.sueldo,
Escribir "";
Escribir "Sexo......:",emple.sexo;
Escribir "";
Leer detener;
FinSubProceso
Proceso principal
Definir ArchEmple Como Arch;
Abrir "empleados.txt" Como archemple Para Lectura;
Mientras ~fda(archemple) Hacer
Leer archemple,emple.nombre;
Leer archemple,emple.sueldo;
Leer archemple,emple.sexo;
presentar(emple);
FinMientras;
Cerrar archemple;
FinProceso
Anexo:
PSeInt permite editar el diagrama de flujo, luego editar los cambios, para que
pueda ser ejecutado desde pseudocódigo.
Pág. 79
M.Sc. Ing. German Jesus Pereira Munoz
Guardar cambios
Para guardar los cambios, vamos al botón que se encuentra al costado izquierdo
superior y hacemos clic en guardar cambios.
No se ejecutan diagramas de flujo que no sean guardados.
Bajo Linux
Bajo Windows
Bibliografía
• http://studylib.es/doc/380831/funciones
• http://www.slideshare.net/juanrobyn/manual-de-pseint
• http://slideplayer.es/slide/9449505/
Pág. 82