Funciones y Subprocesos normales, y con variable de retorno y con parametros

Las funciones son una herramienta indispensable para el programador, tanto las funciones creadas por él mismo como las que le son proporcionadas por otras libreriascualquiera que sea el caso, las funciones permiten automatizar tareas repetitivas, encapsular el código que utilizamos, e incluso mejorar la seguridad, confiabilidad y estabilidad de nuestros programas. 

Las funciones también llamadas Subproceso o SubAlgoritmo. 

• Es una instrucción que permite agrupar variables y sentencias, cuya finalidad es la de ejecutar una tarea especifica.

 • Se pueden añadir una o varias funciones, en un algoritmo.

 • Las funciones son subprogramas dentro de un programa, que se pueden invocar (ejecutar) desde cualquier parte del programa. Sintaxis: Variable_de_retorno: 

• Si el subproceso o función, calcula y devuelve un valor, se debe colocar el nombre de la variable que se utilizará para almacenar ese valor. 

• Si el subproceso o función no devuelve nada se puede eliminar la variable con su flecha de asignación. 

Argumentos: Los argumentos son variables que requiere la función, utilizando comas para separarlos, si el subproceso o función no requiere argumentos puede dejarse en blanco, y de manera opcional omitir los paréntesis. 

Funciones o Subprocesos: Una función, desde el punto de vista de la programación, se define como un proceso en el cual se establece acciones a realizar, siendo invocado en el algoritmo principal, si la función o subproceso no recibe ningún valor pueden colocarse los paréntesis vacíos u omitirse. 

Función o Subproceso: Existen variantes para la estructura de una función. Si la función no retorna ningún valor, como el ejemplo, pueden omitirse la variable de retorno y el signo de asignación. Es decir, se puede colocar directamente el nombre de la función, de esta manera solo ejecuta las acciones programadas.



CON VARIABLE DE RETORNO.

Ejemplos.

Ejemplo 1 Mostrar los perímetros de 4 figuras geométricas. • Cuadrado • Rectángulo • Triángulo • Pentágono Utilizar funciones o subproceso.

Algoritmo operacion
definir op como entero 
escribir "1. Rectangulo ";
escribir "2. Cuadrado ";
escribir "Ingrese una opcion "; leer op;
segun op
1:
rectangulo();
2:
cuadrado();
De Otro Modo:
escribir "Ingrese opciones 1 o 2 ";
FinSegun
FinAlgoritmo

SubProceso rectangulo
definir b, h, A como real; 
escribir "Ingrese base ";
leer b;
escribir "Altura ";
leer h;
A<-b*h;
escribir "Area ", A;
FinSubProceso

SubProceso cuadrado
definir l, A como real; 
escribir "Ingrese lado ";
leer l;
A<-l*l;
escribir "Area ", A;
FinSubProceso

C++
#include<iostream>
#include<string>
using namespace std;
float rectangulo(), cuadrado (), A, b, h, l;
main(){
int op;
cout<<"1. Rectangulo "<<endl;
cout<<"2. Cuadrado  "<<endl;
cout<<"Ingrese opcion "; cin>>op;
switch (op){
case 1:
rectangulo();
break;
case 2:
cuadrado();
break;
default:
cout<<"Ingrese opciones 1 o 2 "<<endl;
}
return 0;
}

float rectangulo (){
cout<<"Ingrese base ";
cin>>b;
cout<<"Ingrese altura ";
cin>>h;
A=b*h;
cout<<"Area "<<A<<endl;

float cuadrado(){
cout<<"Ingrese lado ";
cin>>l;
A=l*l;
cout<<"Area "<<A<<endl;
 
}

Parámetros.
Las funciones o procesos también pueden recibir valores de entrada (llamados parámetros) y el cual retorna un valor resultado. De manera opcional se le puede agregar las palabras claves Por Valor o Por Referencia para indicar el tipo de parámetro en cada argumento. 

Parámetro por valor.
Implica que la función opera con una copia de la variable (o el resultado de la expresión) que se utilizó en la llamada, por lo que las modificaciones que aplique la función no se verán reflejadas fuera de la misma.

Parámetro por valor. 
Es opcional el uso de su tipo identificador que es la palabra reservada por valor, después de ser invocado o llamado el subproceso, se le tiene que asignar el valor de la variable. Si no se indica, los arreglos se pasan por referencia, las demás expresiones por valor. 

Parámetro por referencia.
Las variables por referencia declaradas en una función, deben ser llamadas tal como se ha declarado. 
El parámetro por referencia implica que si la función modifica el argumento, se modificará en realidad la variable que se utilizó en la llamada. 

Parámetro por referencia.
Para invocar a la función se debe utilizar su nombre y entre paréntesis los parámetros, que podrán ser expresiones sólo si el tipo de parámetro es por referencia. Una llamada puede ser en sí una instrucción, pero si la función retorna algún valor, también puede utilizarse como operando dentro de una expresión.

Ejemplo 1.
Algoritmo contabilidad
definir op como entero 
escribir "1. Pasivo ";
escribir "2. Capital ";
escribir "Ingrese una opcion ";leer op;
segun op
1:
pasivo(a, ca);
2:
capital(a, p);
De Otro Modo:
escribir "Ingresar opciones 1 o 2 ";
FinSegun
FinAlgoritmo

SubProceso pasivo(a, ca)
escribir "Ingrese activo "; leer a;
escribir "Ingrese capital "; leer ca;
pa<-a-ca
Escribir "Pasivo ", pa;
FinSubProceso

SubProceso capital(a, p)
escribir "Ingrese activo "; leer a;
escribir "Ingrese pasivo "; leer p;
ca<-a-p;
Escribir "Capital ", ca;
FinSubProceso

Ejemplo 2 Desglozado

Algoritmo figuras_planas 
escribir "1. Triangulo ";
escribir "2. Rombo ";
escribir "Ingrese opcion "; leer op;
segun op
1:
escribir "a. Perimetro ";
escribir "b. Area ";
escribir "Ingrese opcion "; leer opc;
si opc=="a" Entonces
tperimetro(a,b,c);
sino si opc="b" entonces
tarea(b,h);
SiNo
escribir "Ingrese a o b ";
Finsi
FinSi
2: 
rperimetro(a);
rarea(D,d);
De Otro Modo:
escribir "Ingrese opciones 1 o 2 ";
FinSegun
FinAlgoritmo

SubProceso tperimetro(a,b,c)
escribir "Ingrese lado 1"; leer a;
escribir "Ingrese lado 2"; leer b;
escribir "Ingrese lado 3"; leer c;
r<-a+b+c;
escribir "Resultado ", r;
FinSubProceso

SubProceso tarea(b,h)
escribir "Ingrese base "; leer b;
escribir "Ingrese altura "; leer h;
r<-b*h/2;
escribir "Resultado ", r;
FinSubProceso

SubProceso rperimetro(a)
escribir "Ingrese lado "; leer a;
r<-4*a;
escribir "Resultado ", r;
FinSubProceso

SubProceso rarea(D,dm)
escribir "Ingrese diagonal mayor "; leer D;
escribir "Ingrese diagonal menor "; leer dm;
r<-D*d/2
escribir "Resultado ", r;
FinSubProceso

Ejemplo 3 Con varible de retorno y con parametros.
Algoritmo figuras_planas 
escribir "1. Triangulo ";
escribir "2. Rombo ";
escribir "Ingrese opcion "; leer op;
segun op
1:
escribir "a. Perimetro ";
escribir "b. Area ";
escribir "Ingrese opcion "; leer opc;
si opc=="a" Entonces
escribir "Ingrese lado 1"; leer a;
escribir "Ingrese lado 2"; leer b;
escribir "Ingrese lado 3"; leer c;
escribir "Resultado ", tperimetro(a,b,c);
sino si opc="b" entonces
tarea(b,h);
SiNo
escribir "Ingrese a o b ";
Finsi
FinSi
2: 
escribir "Ingrese lado "; leer a;
escribir "Resultado ", rperimetro(a)
rarea(D,d);
De Otro Modo:
escribir "Ingrese opciones 1 o 2 ";
FinSegun
FinAlgoritmo

SubProceso r<-tperimetro(a,b,c)
r<-a+b+c;
FinSubProceso

SubProceso tarea(b,h)
escribir "Ingrese base "; leer b;
escribir "Ingrese altura "; leer h;
r<-b*h/2;
escribir "Resultado ", r;
FinSubProceso

SubProceso r<-rperimetro(a)
r<-4*a;
escribir "Resultado ", r;
FinSubProceso

SubProceso rarea(D,dm)
escribir "Ingrese diagonal mayor "; leer D;
escribir "Ingrese diagonal menor "; leer dm;
r<-D*d/2
escribir "Resultado ", r;
FinSubProceso

C++
#include <iostream>
#include<string>
using namespace std;
float tperimetro(float a, float b, float c), tarea(float b, float h);
float rperimetro(float a), rarea (float D, float dm);
float a, b, c, h, r, D, dm; 
main (){
int op;
char opc;
cout<<"1. Triangulo "<<endl;
cout<<"2. Rombo "<<endl;
cout<<"Ingrese opcion "; cin>>op;
switch (op){
case 1:
cout<<"a. Perimetro"<<endl;
cout<<"b. Area"<<endl;
cout<<"Ingrese opcion "; cin>>opc;
if(opc=='a'){
cout<<"Ingrese lado 1 "; cin>>a;
cout<<"Ingrese lado 2 "; cin>>b;
cout<<"Ingrese lado 3 "; cin>>c;
cout<<"Resultado "<<tperimetro(a,b,c)<<endl;
}else if (opc=='b'){
tarea(b,h);
}else{
cout<<"Ingrese a  o b"<<endl;
}
break;
case 2:
cout<<"Ingrese lado "; cin>>a;
cout<<"Resultado " <<rperimetro(a)<<endl;
rarea(D, dm);
break;
default:
cout<<"Ingrese opciones 1 o 2 "<<endl;
return 0;
}

float tperimetro (float a, float b, float c){
r=a+b+c;
return r;
}

float tarea (float b, float h){
cout<<"Ingrese base "; cin>>b;
cout<<"Ingrese altura "; cin>>h;
r=b*h/2;
cout<<"Resultado "<<r<<endl;
}

float rperimetro (float a){
r=4*a;
return r;
}

float rarea (float D, float dm){
cout<<"Ingrese diagonal mayor "; cin>>D;
cout<<"Ingrese diagonal menor "; cin>>dm;
r=D*dm/2;
cout<<"Resultado "<<r<<endl;
}

Ejemplo 4 Con Varibale de retorno 

Algoritmo contabilidad
definir op como entero 
escribir "1. Pasivo ";
escribir "2. Capital ";
escribir "Ingrese una opcion "; leer op;
segun op
1:
escribir "Ingrese activo "; leer a;
escribir "Ingrese capital "; leer ca;
Escribir "Pasivo ", pasivo(a,ca);
2:
escribir "Ingrese activo "; leer a;
escribir "Ingrese pasivo "; leer p;
escribir "Capital",capital(a, p);
De Otro Modo:
    escribir "Ingresar opciones 1 o 2 ";
FinSegun
FinAlgoritmo

SubProceso pa<-pasivo(a,ca)
pa<-a-ca;
FinSubProceso

SubProceso pa<-capital(a, p)
pa<-a-p;
FinSubProceso

Comentarios