SubAlgoritmos o SubProcesos:
Un subproceso es un subprograma, procedimiento o función que realiza una tarea
específica y que puede ser definido.
Tanto en entrada de información al subproceso como la devolución de resultados
desde la subproceso se realiza mediante parámetros, el cual nos sirve para
introducir o modificar información del programa principal.
Sintaxis
SubProceso NombreSubProceso
// ...hacer algo con los argumentos, Acciones
FinSubProceso
Los subprocesos pueden o no tener retorno. En este caso, este subproceso no devuelve
nada, los subprocesos que retornan argumentos los veremos más adelante.
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
Para poder invocar (ejecutar) un subalgoritmo se debe escribir el nombre del mismo
como si fuese una acción más.
Un subalgoritmo se puede invocar desde un algoritmo o desde otro subalgoritmo.
Los subalgoritmos se escriben antes o después del algoritmo.
Ejemplo:
Elaborar un subAlgoritmo que edite "hola"
SubAlgoritmo ejemploMensaje
definir nombre como caracter
Limpiar Pantalla
escribir "hola.."
escribir ""
escribir "cómo te llamas ?" Sin Saltar
leer nombre
escribir ""
escribir "hola ",nombre
escribir ""
escribir "
Algoritmo SubProcesos01
Escribir " Primer ejemplo"
Para x <- 1 Hasta 20 Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
Escribir " Segundo ejemplo"
Para x <- 1 Hasta 20 Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
Escribir " Tercer ejemplo"
Para x <- 1 Hasta 20 Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
FinAlgoritmo
Muy repetitivo. Sería un poco más elegante si lo reescribimos así:
Algoritmo SubProcesos02
Escribir " Primer ejemplo"
Subrayar
Escribir " Segundo ejemplo"
Subrayar
Escribir " Tercer ejemplo"
Subrayar
FinAlgoritmo
Subproceso Subrayar
Para x <- 1 Hasta 20 Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
FinSubproceso
Mucho más legible, pero todavía no está tan bien como debería: siempre estamos
escribiendo 20 guiones, aunque el texto sea más largo o más corto.
En la mayoría de lenguajes de programación se puede indicar detalles adicionales
("parámetros") para que se puedan utilizar desde dentro de esa subrutina.
Por ejemplo, en nuestro caso podríamos indicarle qué texto queremos escribir y
qué longitud queremos que tenga la secuencia de guiones:
Algoritmo SubProcesos03
EscribirSubrayado(" Primer ejemplo", 16)
EscribirSubrayado(" Segundo ejemplo", 17)
EscribirSubrayado(" Tercer ejemplo", 16)
FinAlgoritmo
Subproceso EscribirSubrayado(texto, cantidad)
Escribir texto
Para x <- 1 Hasta cantidad Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
FinSubproceso
Eso todavía es un poco redundante: en general, querremos escribir tantos
guiones como letras tenga el texto, así que no será necesario indicar ese dato.
Desde octubre de 2012, PseInt incluye ciertas funciones predefinidas para
manejo de cadenas de texto; una de ellas es "Longitud", que nos indica la
cantidad de letras que tiene un texto, de modo que nuestro programa se podría
simplificar así:
Algoritmo SubProcesos04
EscribirSubrayado("Primer ejemplo")
EscribirSubrayado("Segundo ejemplo")
EscribirSubrayado("Tercer ejemplo")
FinAlgoritmo
Subproceso EscribirSubrayado(texto)
Escribir texto
Para x <- 1 Hasta Longitud(texto) Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
FinSubproceso
Funcion resultado <- Maximo( n1, n2)
Si n1 > n2 Entonces
resultado <- n1
Sino
resultado <- n2
FinSi
FinFuncion
Algoritmo Funciones01
Escribir "El máximo de 5 y 12 es:"
Escribir Maximo(5,12)
Escribir "El máximo de 25 y 12 es:"
Escribir Maximo(25,12)
FinAlgoritmo
Este programa crea una función que calcula cuál es el mayor de los dos números que
se le indican como parámetro, y la usa dos veces, para mostrar el máximo de dos valores p
refijados.
SubAlgoritmo resultado <- Primo ( num )
cantidadDivisores <- 0
Para cont <- 1 Hasta num Hacer
Si num % cont = 0 Entonces
cantidadDivisores <- cantidadDivisores + 1
FinSi
FinPara
Si cantidadDivisores <= 2 Entonces
resultado <- verdadero
Sino
resultado <- falso
FinSi
FinSubAlgoritmo
Algoritmo PrimosDel1Al30
Para n <- 1 hasta 30
si Primo(n) Entonces
Imprimir n
FinSi
FinPara
FinAlgoritmo
SubAlgoritmo ejemploMensaje
definir nombre como caracter
Limpiar Pantalla
escribir "hola.."
escribir ""
escribir "cómo te llamas ?" Sin Saltar
leer nombre
escribir ""
escribir "hola ",nombre
escribir ""
escribir " para continuar "
esperar tecla
FinSubAlgoritmo
subAlgoritmo sumaDosNumeros
definir valor1,valor2,resultado como entero
limpiar pantalla
escribir "suma de dos números"
escribir ""
escribir "escribe el primer valor .. " sinsaltar
leer valor1
escribir "escribe el segundo valor .. " sinsaltar
leer valor2
resultado<-valor1+valor2
escribir ""
escribir "la suma de los dos números es ",resultado
escribir ""
escribir " para continuar "
esperar tecla
FinSubAlgoritmo
Algoritmo ejemplo
tablaDeMultiplcar(4)
areaDeUntiranguloConBaseYAltura(4,2)
sumaDosNumeros
areaDeUntiranguloConBaseYAltura(9,4)
tablaDeMultiplcar(8)
ejemploMensaje
definir vCont Como Entero
para vCont<-1 hasta 10 con paso 1 Hacer
tablaDeMultiplcar(vCont)
FinPara
FinAlgoritmo
subProceso tablaDeMultiplcar(vNumTabla)
definir vCont Como Entero
Limpiar Pantalla
escribir ""
escribir "tabla de multiplicar del ",vNumTabla
escribir ""
para vCont<-1 hasta 10 con paso 1 Hacer
escribir vNumTabla," * ",vCont," = ",(vNumTabla*vCont)
FinPara
escribir ""
escribir " para continuar "
esperar tecla
FinSubProceso
subProceso areaDeUntiranguloConBaseYAltura(base,altura)
definir areaTriangulo como real
Limpiar Pantalla
areaTriangulo<-(base*altura)/2
escribir "área de un triángulo con base = ",base sin saltar
escribir " altura = ",altura," es, área = ",areaTriangulo
escribir ""
escribir " para continuar "
esperar tecla
FinSubproceso
SubAlgoritmo UnaPausa
escribir ""
escribir "///////////////////////////////////"
escribir ""
escribir " para continuar.."
esperar tecla
FinSubAlgoritmo
SubAlgoritmo tablaDeMultiplicar
definir numTabla,contador como entero
Limpiar Pantalla
escribir ""
escribir "tabla de multiplicar"
escribir ""
escribir "qué número de tabla deseas ?" sin saltar
leer numTabla
escribir ""
para contador<-1 hasta 10 con paso 1 hacer
escribir numTabla," * ",contador," = ",(numTabla*contador)
FinPara
UnaPausa
FinSubAlgoritmo
SubAlgoritmo paresImpares
definir vNum,vCant,contador Como Entero
Limpiar Pantalla
escribir ""
escribir "captura de numeros e indicar pares e impares"
escribir ""
escribir "cuántos números quieres capturar ? " sin saltar
leer vCant
escribir ""
para contador<-1 hasta vCant con paso 1 Hacer
escribir "cuál es el valor no.",contador," ? " Sin Saltar
leer vNum
si vNum mod 2=0 Entonces
escribir vNum," >>> ES PAR <<< "
SiNo
escribir vNum," >>> ES IMPAR <<< "
FinSi
escribir ""
FinPara
UnaPausa
FinSubAlgoritmo
SubAlgoritmo menu
Limpiar Pantalla
escribir ""
escribir "menú"
escribir ""
escribir "1. pares e impares"
escribir "2. tabla de multiplicar"
escribir "3. capturar numeros indicar el mayor"
escribir "4. salir"
escribir ""
escribir "qué opción deseas ?"
FinSubAlgoritmo
SubAlgoritmo numeroMayor
definir vNumero,vMayor,vCont,cantidad como entero
Limpiar Pantalla
escribir ""
escribir "captura de números, e indicar el número mayor"
escribir ""
escribir "cuántos números quieres capturar ? " Sin Saltar
leer cantidad
escribir ""
para vCont<-1 hasta cantidad con paso 1 Hacer
escribir "valor no.",vCont," ? " Sin Saltar
leer vNumero
si contador=1 entonces
vMayor<-vNumero
sino
si vNumero>vMayor Entonces
vMayor<-vNumero
FinSi
FinSi
FinPara
escribir ""
escribir "el número mayor es ",vMayor
unaPausa
FinSubAlgoritmo
Algoritmo ejemplo
definir opcion Como Entero
mientras opcion<>4 Hacer
menu
leer opcion
segun opcion hacer
1:paresImpares
2:tablaDeMultiplicar
3:numeroMayor
FinSegun
FinMientras
FinAlgoritmo