Está en la página 1de 16

ALGORITMO

SProgramación Modular: SUB-RUTINAS


Fundamentos V
Funciones y Procedimientos

Expositor : Jorge Medianero A.


Autor: José Carlos, García La Riva
2 - SUB-RUTINAS
tipo
procedimiento <nombre>(E | S lista_prm)
Qué es una Sub-Rutina ?
O Sub-Programa, es un bloque de instrucciones y/o
sentencias que tiene nombre propio. Es invocado
desde el bloque principal del algoritmo o desde otro
sub-rutina.
Un Sub-Programa puede tener opcionalmente
parámetros y estos se utilizan dentro del mismo para
realizar operaciones y/o cálculos.
Para invocar o llamar a un Sub-Programa se hace uso
de la FIRMA o nombre del mismo seguido de los
valores (argumentos) que se pasaran a los parámetros
del sub-programa si es que los tuviese.
Las Sub-Rutinas se implementan a través de
Procedimientos o Funciones.
Programación Modular: Sub-Rutinas

Tipo
Procedimiento
2.1. ) Definición de prototipo: procedimiento
2.2. ) Implementación del procedimiento
2.3. ) Declaración de prototipo: procedimiento 2.4. )
Invocar procedimientos
Qué es un Procedimiento ?
Un Procedimiento es un Sub-Programa que
realiza una tarea determinada para luego
retornar al punto del algoritmo desde donde fue
invocado.
Para llamar_a un procedimiento se hace uso de
la firma. Es decir el nombre del mismo y
opcionalmente valores o argumentos si es que
el procedimiento implementa parámetros.
El paso de valores a los parámetros de un
procedimiento se puede hacer por valor y/o
referencia (E|S|E/S).
Estructura de un Procedimientro

Sintaxis : Opcional

PROCEDIMIENTO Nombre( [clase] Lista_Parametros)


VAR
<tipo> : <variables_locales>
INICIO
// Instrucciones
y/o
//
Sentencias
FIN_PROCEDIMIENTO
Ejemplo 1 : Implementar un procedimiento que permita visualizar un mensaje
de texto un número determinado de veces.
Algoritmo Ejemplo1
var
entero: n
inicio
leer( n )
llamar_a imprime(“Hi George”, n)
llamar_a imprime(“CETIS-UTP”, (2 * n))
llamar_a imprime(“Sistemas UNI”, 30)
fin
Clase param
By val, By ref
procedimiento imprime(E cadena: texto, entero: numero)
var
entero: i Ámbito
inicio Lista de
local
desde( i ← 1 hasta numero )hacer Parámetros
escribir( texto )
fin_desde
fin_procedimiento
Ejemplo 2 : Implemente un procedimiento que permita visualizar la suma de 2
números enteros.
Algoritmo Ejemplo2
var
entero: a, b, i
inicio
leer( a, b )
llamar_a suma( a, b )
llamar_a suma( a, 10)
llamar_a suma(10, 20)
//iterar e incrementar la suma de a + b
desde i ← 1 hasta 100 hacer
suma( a + i, b + i)
fin_desde
fin
procedimiento suma( E entero: m, n)
var
inicio
escribir( m + n )
fin_procedimento
Ejemplo 3 : Implementar un procedimiento que imprima el mayor valor de 2
números enteros.
AlgoritmoEjemplo3
var
entero: a, b
inicio
leer( a, b )
llamar_a imprimeMayor( a, b) //invocar procedimiento
fin

procedimiento imprimeMayor( E entero: m, n)


inicio
si ( m > n ) entonces
escribir( m )
si_no
escribir( n )
fin_si
fin_procedimiento
Ejemplo 4 : Implementar un procedimiento que visualice los divisores de un
número entero.
Algoritmo Ejemplo4
var
entero: m
inicio
leer( m )
llamar_a imprimeDivisores( m )
fin

procedimiento imprimeDivisores(E entero: n)


var
entero: i
inicio
desde( i ← 1 hasta n )hacer
si ( n MOD i = 0 ) entonces
escribir( i )
fin_si
fin_desde
fin_procedimiento
Ejemplo 5 : Implementar un procedimiento que permita calcular y visualizar la
suma de los números menores a un número entero dado.
Algoritmo Ejemplo5
var
entero: m
inicio
leer( m )
llamar_a sumaDeMenoresA( m )
fin

procedimiento sumaDeMenoresA(E entero: n)


var
entero: suma, i
inicio
suma ← 0
desde( i ← n hasta 1 paso -1)hacer
suma ← suma + i
fin_desde
escribir( suma )
fin_procedimiento
EJERCICIOS
DE
REPASO
Ejercicio 1 : Implementar un procedimiento que permita
intercambiar los valores de 2 números enteros.

Ejercicio 2 : Implementar un procedimiento que permita


imprimir un texto una o mas veces.

Ejercicio 3 : Implementar un procedimiento que permita


imprimir la tabla de multiplicar (1-12) de un número
entero.
Algoritmo Solucion1
var
entero: m , n
inicio
leer( m, n )
llamar_a intercambio( m, n )
escribir( m , n )
fin

procedimiento intercambio( E/S entero: a, b)


var
entero: AUX
inicio
AUX ← a
a←b
b ← AUX
fin_procedimiento
Algoritmo Solucion2
var
cadena: texto
entero: n
inicio
leer( texto, n )
llamar_a imprime( texto, n )
fin
//parametros default
procedimiento imprime( E cadena: texto , entero: numero = 1)
var
entero: i
inicio
desde( i ← 1 hasta numero )hacer
escribir( texto )
fin_desde
fin_procedimiento
Algoritmo Solucion3
var
entero: m
inicio
leer( m )
llamar_a tabla( m )
fin

procedimiento tabla(E entero: n)


var
entero: i
inicio
desde( i ← 1 hasta 12 )hacer
escribir( n, “ x ”, i, “ = ”, n * i )
fin_desde
fin_procedimiento

También podría gustarte