Profa.Dra.Thatyana de Faria Piola Seraphim (ECO) Prof.MSc.Rodrigo Maximiano Antunes de Almeida (ELT)
Prof.Dr.Carlos Henrique Val´erio de Moraes (ECA)
Universidade Federal de Itajub´a
thatyana@unifei.edu.br rodrigomax@unifei.edu.br
valerio@unifei.edu.br
Sub-Rotinas
Sub-Rotinas ou Subprogramas:
s˜ao blocos de instru¸c˜oes que realizam tarefas espec´ıficas o c´odigo de uma sub-rotina ´e carregado uma vez e pode ser executado quantas vezes for necess´ario
os programas tendem a ficar menores e mais organizados, uma vez que o problema pode ser dividido em pequenas tarefas
Defini¸c˜ao de Sub-rotina
Uma sub-rotina ´e um programa que poder´a efetuar diversas opera¸c˜oes computacionais (entrada, processamento e sa´ıda)
Sub-Rotinas
os programas s˜ao executados linearmente, uma linha ap´os a outra, at´e o fim
quando as sub-rotinas s˜ao utilizadas, ´e poss´ıvel a realiza¸c˜ao de desvios na execu¸c˜ao natural dos programas
os desvios s˜ao realizados quando uma fun¸c˜ao ´e chamada pelo programa principal
um importante recurso apresentado nas linguagens de programa¸c˜ao ´e amodulariza¸c˜ao
onde um programa pode ser particionado em sub-rotinas bastante espec´ıficas
a modulariza¸c˜ao pode ser feita por meio de procedimentos oufun¸c˜oes
Procedimentos
Defini¸c˜ao de Procedimento
Um procedimento ´e um bloco de programa, contendo in´ıcio e fim e ser´a identificado por um nome atrav´es do qual ser´a referenciado em qualquer parte do programa principal ou do programa que chama a rotina
Quando uma sub-rotina ´e chamada por um programa
ela ´e executada e ao seu t´ermino, o controle de processamento retorna automaticamente para a primeira linha de instru¸c˜ao ap´os a linha que efetuou a chamada da sub-rotina
Procedimentos
Sintaxe
procedimento<nome>(<param1:tipo1;. . .;paramn:tipon>) var
<declara¸c˜ao das var´aveis locais>
inicio
<lista de comandos>
fimprocedimento
o procedimento ´e chamado escrevendo apenas seu nome no programa principal
Exemplo: um programa de calculadora que apresenta um menu de sele¸c˜oes no programa principal
Procedimentos
algoritmo“calculadora”
var{Vari´avel do Programa Principal} opcao :inteiro
procedimentorotSoma() varsoma, a, b : real inicio
escreval(“Rotina de Soma”) escreval(“Digite o valor de a = ”) leia(a)
escreval(“Digite o valor de b = ”) leia(b)
soma<– a + b
escreval(“Soma = ”, soma) fimprocedimento
procedimentorotSubtracao() varsub, a, b :real
inicio
escreval(“Rotina de Subtracao”) escreval(“Digite o valor de a = ”) leia(a)
escreval(“Digite o valor de b = ”) leia(b)
sub<– a - b
escreval(“Subtracao = ”, sub) fimprocedimento
Procedimentos
procedimentorotMultiplicacao() varmult, a, b :real
inicio
escreval(“Rotina Multiplicacao”) escreval(“Digite o valor de a = ”) leia(a)
escreval(“Digite o valor de b = ”) leia(b)
mult<– a * b
escreval(“Multiplicacao=”, mult) fimprocedimento
procedimentorotDivisao() vardivisao, a, b : real inicio
escreval(“Rotina de Divisao”) escreval(“Digite o valor de a = ”) leia(a)
escreval(“Digite o valor de b = ”) leia(b)
divisao<– a / b
escreval(“Divisao = ”, divisao) fimprocedimento
Procedimentos
{Programa Principal}
inicio
opcao<– 0
enquanto(opcao<>5)faca escreval(“1 - Adicao”) escreval(“2 - Subtracao”) escreval(“3 - Multiplicacao”) escreval(“4 - Divisao”)
escreval(“5 - Fim do programa”) escreval(“Escolha uma opcao”) leia(opcao)
se(opcao = 1)entao rotSoma
fimse
se(opcao = 2)entao rotSubtracao fimse
se(opcao = 3)entao rotMultiplicacao fimse
se(opcao = 4)entao rotDivisao fimse fimenquanto fimalgoritmo
Fun¸c˜oes
Fun¸c˜ao:
´
e um bloco de programa, contendo in´ıcio e fim
´
e identificada por um nome atrav´es do qual ´e referenciada em qualquer parte do programa principal
Diferen¸ca entrefun¸c˜aoe procedimento:
a fun¸c˜ao retorna um determinado valor, e esse valor ´e retornado no pr´oprio nome da fun¸c˜ao
Sintaxe da Fun¸c˜ao
funcao<nome>(<param1:tipo1;. . .;paramn:tipon>)<tipo>
var
<declara¸c˜ao das vari´aveis locais>
inicio
<lista dos comandos>
retorne<vari´avel para retorno>
Fun¸c˜oes
Parˆametros:
tˆem por objetivo servir como um ponto de comunica¸c˜ao bidimensional entre uma sub-rotina e o programa principal atrav´es dos parˆametros ´e poss´ıvel passar valores de uma sub-rotina ou rotina chamadora `a outra sub-rotina e vice-versa
Exemplo
Fun¸c˜ao que eleva ao cubo um determinado n´umero informado pelo usu´ario
Fun¸c˜oes
Exemplo: Fun¸c˜ao que eleva ao cubo um determinado n´umero informado pelo usu´ario
algoritmo“cubo”
var{ variavel do programa principal} num, x : real
funcaocubo (n:real) : real var{ variavel da funcao cubo}
c : real inicio
c<– n * n * n
retorne(c) fimfuncao
inicio{inicio programa principal}
escreva(“Digite um valor para calcular o cubo = “) leia(num)
x<– cubo(num)
escreva(“O cubo de “, num, “ = “, x)