Subrotinas (Funções e Procedimentos)
Professores(as):
Virgínia Fernandes Mota
João Eduardo Montandon de Araujo Filho
Leandro Maia Silva
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Subrotinas
Um conceito simples: Subrotina é um parcela de código
computacional que executa uma tarefa bem denida, sendo
que essa tarefa pode ser executada (chamada) diversas vezes
num mesmo programa.
Motivação:
Necessidade de dividir um problema computacional em
pequenas partes.
Os programadores vericaram que muitas destas pequenas
partes se repetiam.
Ex: Impressão de mensagens, diversos tipos de cálculos, etc.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Utilização de subrotinas
Utilização de subrotinas:
Utilizar uma parte do código em várias partes do programa;
Vários programas irão utilizar os mesmos códigos (bibliotecas);
Abstrair a complexidade e facilitar o entendimento do
programa.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Utilização de subrotinas
Facilita a programação estruturada
dada as fases previstas nos renamentos sucessivos
decompõe-se o programa em módulos funcionais
tais módulos podem ser organizados/programados como
subrotinas
ou seja: viabiliza a modularização
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Características das subrotinas
Executam uma tarefa bem denida
Não funcionam sozinhas: devem ser chamadas por um
programa principal ou por outra subrotina
Permite a criação de variáveis próprias e a manipulação de
variáveis externas (devidamente parametrizadas)
Facilita a legibilidade do código através da:
estruturação (subrotinas são agrupadas fora do programa
principal)
enxugamento (através de diversas chamadas da mesma
subrotina)
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Tipos de subrotinas
Existem dois tipos de subrotinas:
Procedimentos: não retornam nenhum valor. São usadas para
realizar alguma operação que não gera dados.
Funções: retornam valor. São utilizadas para realizar uma
operação e retornam alguma resposta relativa à operação
realizada.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Procedimentos
1 v o i d n o m e d o p r o c e d i m e n t o ( l i s t a de p a r a m e t r o s ) {
2 d e c l a r a c a o de v a r i a v e i s ;
3 comandos ;
4 }
nomedoprocedimento: Identica a ação a ser executada no
procedimento (SEM ESPAÇOS EM BRANCO!) Ex:
imprimeMedia
lista de parâmetros: Variáveis que terão seus valores
preenchidos com os valores passados como argumentos. Ex:
(int A, int B)
declaração de variáveis: Variáveis necessárias para a
codicação do procedimento, além das passadas na lista de
parâmetros.
comandos: comandos que implementam o procedimento
desejado.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Procedimentos
1 #i n c l u d e < s t d i o . h>
2 #d e f i n e SUCESSO 0
3
4 v o i d i m p r i m e M a i o r ( i n t X , i n t Y) {
5 i f (X > Y) {
6 p r i n t f ( "%d" , X) ;
7 } else {
8 p r i n t f ( "%d" , Y) ;
9 }
10 }
11
12 i n t main ( i n t a r g c , c h a r ∗∗ a r g v ) {
13 i n t X, Y;
14 s c a n f ( "%d %d" , &X , &Y) ;
15 i m p r i m e M a i o r (X , Y) ;
16 r e t u r n SUCESSO ;
17 }
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Variáveis locais
Toda variável pertencente ao procedimento é chamada de
variável local, pois ela só pode ser utilizada dentro do escopo
do procedimento.
Fazem parte das variáveis locais de um procedimento:
as variáveis declaradas no procedimento;
todos os parâmetros do procedimento.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Parâmetros de uma subrotina
Chamada por valor: é passado uma cópia da variável para a
subrotina, ou seja, é feito uma cópia do argumento para o
parâmetro. Qualquer alteração feita no parâmetro não reete
em alteração no argumento.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Funções
é um tipo especial de procedimento.
Retorna como resultado o valor calculado pela função, que
deve ser do tipo básico denido.
1 t i p o nomedafuncao ( l i s t a de p a r a m e t r o s ) {
2 d e c l a r a c a o de v a r i a v e i s ;
3 comandos ;
4 return valordoretorno ;
5 }
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Funções
1 t i p o nomedafuncao ( l i s t a de p a r a m e t r o s ) {
2 d e c l a r a c a o de v a r i a v e i s ;
3 comandos ;
4 return valordoretorno ;
5 }
tipo: tipo do dado a ser retornado como resultado da execução da
função.
nomedafuncao: nome que identique a ação a ser executada na
função.
lista de parâmetros: variáveis para os valores recebidos como
argumentos.
declaração de variáveis e comandos: variáveis locais e sequência
de comandos
return valordoretorno: a função permite retornar um valor,
resultado das ações nela programadas. Este valor deve ser do tipo
declarado antes do nome da função.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Funções
1 #i n c l u d e < s t d i o . h>
2 #d e f i n e SUCESSO 0
3
4 i n t soma ( i n t X , i n t Y) {
5 r e t u r n (X + Y) ;
6 }
7
8 i n t main ( i n t a r g c , c h a r ∗∗ a r g v ) {
9 i n t A, B, C;
10 s c a n f ( "%d %d" , &A , &B) ;
11 C = soma (A , B) ;
12 p r i n t f ( "%d" , C) ;
13 r e t u r n SUCESSO ;
14 }
int main(int argc, char ** argv)
Seria o método int main(int argc, char ** argv) uma
função do C? O que ela signica exatamente??
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Exemplos
O que será impresso no programa abaixo?
1 #i n c l u d e < s t d i o . h>
2 #d e f i n e SUCESSO 0
3
4 void calculo ( int p , int q) {
5 p = p ∗ 10;
6 q = q + 10;
7 }
8
9 i n t main ( i n t a r g c , c h a r ∗∗ a r g v ) {
10 int x = 2 , y = 5;
11 calculo (x , y) ;
12 p r i n t f ( "%d %d" , x , y ) ;
13 r e t u r n SUCESSO ;
14 }
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Exemplos
O que será impresso no programa abaixo?
1 #i n c l u d e < s t d i o . h>
2 #d e f i n e SUCESSO 0
3
4 int calculo ( int p , int q) {
5 p = p ∗ 10;
6 q = q + 10;
7 return (p + q) ;
8 }
9
10 i n t main ( i n t a r g c , c h a r ∗∗ a r g v ) {
11 int x = 2 , y = 5;
12 p r i n t f ( "%d %d %d" , x , y , c a l c u l o ( x , y ) ) ;
13 r e t u r n SUCESSO ;
14 }
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Exercícios I
1 Faça um programa que apresente o seguinte menu para o
usuário:
Escolha uma opção de cálculo para dois números:
1 Soma
2 Produto
3 Quociente
4 Sair
Opção:
O menu acima deve ser apresentado para o usuário enquanto ele
não escolher a opção 4 (sair do programa). O usuário fornecerá 2
números se escolher as opções de cálculo 1, 2 ou 3. Para cada
opção de cálculo deve existir (obrigatoriamente) uma função
denida (soma, produto e quociente dos dois números fornecidos
pelo usuário). O resultado do cálculo deve ser escrito na tela.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)
Exercícios II
2 Faça uma função que receba a idade de uma pessoa em anos,
meses e dias e retorna essa idade expressa em dias.
3 Faça um procedimento que receba por parâmetro o tempo de
duração de um experimento expresso em segundos e imprima
na tela esse mesmo tempo em horas, minutos e segundos.
4 Implemente uma função que receba um número inteiro como
entrada e verique se esse número é primo ou não. Um
número é primo quando este possui apenas dois divisores (1 e
ele mesmo).
5 Faça uma função que receba um valor N inteiro e positivo e
que calcula o fatorial deste valor. Retorne o resultado.
V.F.M., J.E.M.A.F., Leandro Maia Silva Subrotinas (Funções e Procedimentos)