Está en la página 1de 7

ALGORITMIA - Ing.

Luis Fernando Corredor Mora

1. FUNCIONES Y PROCEDIMIENTOS

En el contexto de programación de computadores, un procedimiento y una función, son una


serie de instrucciones agrupadas bajo un nombre, que realiza una tarea muy puntual,
permitiendo modularizar el programa, de manera que el problema se pueda dividir y a través
de esta técnica, realizar programas mas claros, y eficientes.

1.1. Funciones

La gran diferencia entre funciones y procedimientos, es que la primera devuelve un valor,


mientras que el segundo no.

Estructura de una función en turbob

funcion nombre de la función [([var] tipo de dato nombre_parametro)] : tipo de dato;


[declaración de variables locales]
inicio
instruccion1;
instruccion2;
.
retorne valor
Instrucción
fin
ALGORITMIA - Ing. Luis Fernando Corredor Mora

Ejemplo 1.

El siguiente algoritmo, implementa una función llamada may, que determina cual es el mayor
de 2 números.
Lo que está dentro de los paréntesis
son los argumentos. Aquí hay dos
entero elmayor argumentos por valor de tipo entero.

funcion mayor(entero num1, entero num2): entero


entero may
inicio
si (num1 > num2) entonces
may <- num1
Se llama o invoca la función mayor, y se pasan
sino
como argumentos las variables numero1 y
may <- num2 numero2 y el resultado devuelto es asignado a
fin si la variable el mayor.
retorne may
fin

inicio
elmayor <- mayor(5,6)
escriba "El mayor es ",elmayor
fin

Ejemplo No. 1.1.

El siguiente algoritmo, realiza la misma tarea que el anterior, pero con la diferencia que los
numeros se ingresan por teclado.
Lo que está dentro de los paréntesis
son los argumentos. Aquí hay dos
entero num1,num2,elmayor argumentos por valor de tipo entero.

funcion mayor(entero num1, entero num2): entero


entero may
inicio
si (num1 > num2) entonces
may <- num1
sino
may <- num2
fin si
retorne may
fin
ALGORITMIA - Ing. Luis Fernando Corredor Mora

inicio
llamar posicionar_cursor(5,5)
escriba "Numero 1: "
llamar posicionar_cursor(5,7)
escriba "Numero 1: "
llamar posicionar_cursor(17,5)
lea num1
llamar posicionar_cursor(17,7)
lea num2
elmayor <- mayor(num1,num2)
llamar posicionar_cursor(20,20)
escriba "El mayor es ",elmayor
fin

Ejemplo No.2

El siguiente algoritmo realiza la misma tarea del anterior, pero se implementa con algunos
cambios:

entero num1,num2

funcion mayor(entero num1, entero num2): entero


entero may
inicio
si (num1 > num2) entonces
may <- num1
sino
may <- num2
fin si
retorne may
fin

inicio
llamar posicionar_cursor(5,5)
escriba "Numero 1: "
llamar posicionar_cursor(5,7)
escriba "Numero 1: "
llamar posicionar_cursor(17,5)
lea num1
llamar posicionar_cursor(17,7)
lea num2
llamar posicionar_cursor(20,20)
escriba "El mayor es ", mayor(num1,num2)
fin

Como observara, no se define la variable elmayor, y la función mayor se invoca


directamente dentro de la función escriba.
ALGORITMIA - Ing. Luis Fernando Corredor Mora

Ejemplo No. 3

El siguiente algoritmo, implementa una función que recibe como parámetros dos enteros y
retorna la suma de estos.

entero num1,num2

funcion suma(entero num1, entero num2): entero


inicio
retorne num1 + num2
fin

inicio
llamar posicionar_cursor(5,5)
escriba "Numero 1: "
llamar posicionar_cursor(5,7)
escriba "Numero 2: "
llamar posicionar_cursor(17,5)
lea num1
llamar posicionar_cursor(17,7)
lea num2
llamar posicionar_cursor(20,20)
escriba num1, " + ", num2, " = ", suma(num1,num2)
fin

Ejemplo No. 4.

El siguiente algoritmo implementa una función para determinar si un número es par o impar.

entero numero

funcion parimp(entero num): booleano


inicio
si(num mod 2 = 0) entonces
retorne verdadero
fin si
retorne falso
fin
ALGORITMIA - Ing. Luis Fernando Corredor Mora

inicio
llamar posicionar_cursor(5,5)
escriba "Numero 1: "
llamar posicionar_cursor(17,5)
lea numero
si parimp(numero) entonces
escriba("El numero es par")
sino
escriba("El numero es impar")
fin si
fin

Ejemplo No. 5

El siguiente algoritmo encuentra el cuadrado de n.

entero numero

funcion cuadrado(entero numero): entero


inicio
retorne numero * numero
fin

inicio
escriba "Digite un numero : "
lea numero
llamar posicionar_cursor(20,20)
escriba "El cuadrao de ", numero, " es ", cuadrado(numero)
fin

Ejemplo No. 6

El siguiente programa implementa una función que permite determinar si un carácter es un


digito o no.

caracter car
cadena[20] texto

funcion esdigito(caracter car): booleano


inicio
si (car >= '0') y (car <= '9') entonces
retorne verdadero
fin si
retorne falso
fin

inicio
escriba "Digite un caracter : "
lea car
si esdigito(car) entonces
ALGORITMIA - Ing. Luis Fernando Corredor Mora

texto <- "Es un digito"


sino
texto <- "No es un digito"
fin si
llamar posicionar_cursor(20,20)
escriba texto
fin

1.2. Procedimientos, parámetros por valor y por referencia.

Los procedimientos, como se menciono anteriormente, se diferencian de las funciones debido


a que estos últimos no devuelven un valor.
Veamos un ejemplo. El siguiente algoritmo permite la entrada de dos números por teclado e
intercambia sus contenidos.

entero num1,num2

procedimiento inter(var entero n1,var entero n2)


entero tempo
inicio
tempo <- n1
n1 <- n2
n2 <- tempo
fin

inicio
escriba "Numero1 : "
lea num1
escriba "Numero2 : "
lea num2
llamar inter(num1,num2)
llamar posicionar_cursor(25,10)
escriba "INTERCAMBIADAS"
llamar posicionar_cursor(12,12)
escriba "Numero1 = ",num1
llamar posicionar_cursor(12,14)
escriba "Numero2 = ",num2
fin

Este programa implementa un procedimiento con dos parámetros (n1 y n2) por referencia,

procedimiento inter(var entero n1,var entero n2)

La diferencia entre los parámetros por valor y referencia, es que los primeros, pasan como su
nombre lo indica, un valor, mientras que los segundos pasan la dirección de la variable, lo cual
implica que los parámetros por valor no pueden alterar las variables mientras que los segundos
si.

Para comprender lo expuesto, realice el algoritmo anterior utilizando parámetros por valor.
ALGORITMIA - Ing. Luis Fernando Corredor Mora

Que muestran por pantalla las dos últimas instrucciones, antes del fppal. ?

escribir "Numero1 = ",num1


escribir "Numero2 = ",num2

Como podrá observar las variables num1 y num2, no fueron intercambiadas. Esto es debido a
que los parámetros se definieron por valor, lo cual hace que el contenido de las variables no
pueda ser alterado.

También podría gustarte