Buscar

Aula 05 - Subrotinas - Procedimentos e Funções

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

08/07/2013
1
João Monlevade, 8 de julho de 2013
Universidade Federal de Ouro Preto
Campus João Monlevade
Prof. Mateus Ferreira Satler
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Um conceito simples seria:
◦ Subrotina é um parcela de código computacional 
que executa uma tarefa bem definida, sendo que 
essa tarefa pode ser executada (chamada) diversas 
vezes num mesmo programa.
2
08/07/2013
2
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Necessidade de dividir um problema 
computacional em pequenas partes.
 Os programadores verificaram que muitas 
destas pequenas partes se repetiam.
 Ex.: Impressão de mensagens, zerar um 
vetor, fazer uma operação matricial, etc.
3
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Deve-se usar subrotinas sempre que:
◦ 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.
4
08/07/2013
3
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Facilita a programação estruturada:
◦ Dada as fases previstas nos refinamentos 
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
5
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Executam uma tarefa bem definida
 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)
6
08/07/2013
4
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 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)
7
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 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.
8
08/07/2013
5
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de um procedimento é:
void <nome do procedimento> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
}
9
TIPO especial para procedimento.
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de um procedimento é:
void <nome do procedimento> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
}
10
Nome que identifique a ação a ser
executada no procedimento (sem
espaços em branco!)
Ex.: imprimeMedia
08/07/2013
6
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de um procedimento é:
void <nome do procedimento> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
}
11
Valores recebidos como parâmetro.
Ex.: (A,B,20,30)
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de um procedimento é:
void <nome do procedimento> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
}
12
Variáveis necessárias para a codificação
do procedimento, além das passados na
lista de parâmetros.
08/07/2013
7
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de um procedimento é:
void <nome do procedimento> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
}
13
Comandos que implementam o
procedimento desejado.
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Exemplo:
void imprimeMaior (int X, int Y)
{
if (X > Y)
{
printf (“%d”, X);
}
else
{
printf (“%d”, Y);
}
}
14
08/07/2013
8
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Chamada
void imprimeMaior (int X, int Y)
{
if (X > Y)
{
printf (“%d”, X);
}
else
{
printf (“%d”, Y);
}
}
15
int main()
{
int A, B;
scanf (“%d %d”, &A, 
&B);
imprimeMaior (A,B);
return 0;
}
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Toda variável pertencente à subrotina é 
chamada de variável local, pois ela só pode 
ser utilizada dentro do escopo da subrotina.
 Fazem parte das variáveis locais de uma 
subrotina:
◦ as variáveis declaradas na subrotina;
◦ todos os parâmetros recebidos pela subrotina.
16
08/07/2013
9
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Passados através da lista de parâmetros
 Estes parâmetros podem ser cópia dos dados 
do programa (quando eles não serão 
alterados) ou pode-se permitir que a 
subrotina altere os dados do programa 
diretamente.
17
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 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 reflete em 
alteração no argumento.
 Chamada por referência: todas as alterações
realizadas no parâmetro, refletem em alterações 
no argumento, ou seja, ambas as variáveis 
apontam para o mesmo endereço de memória. 
Para isso, é necessário utilizar o modificador ref
(em C representado pelo símbolo *), indicando 
que será uma referência a uma variável.
18
08/07/2013
10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Exemplo
#include <stdio.h>
void ParImpar(int a)
{
int resto;
resto=a%2;
if (resto==0) printf(“par”);
else printf( “ímpar”);
}
int main()
{
int x;
scanf(“%d”,&x);
ParImpar(x);
return 0;
}
19
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Exemplo
#include <stdio.h>
void ParImpar(int a)
{
int resto;
resto=a%2;
if (resto==0) printf(“par”);
else printf( “ímpar”);
}
int main()
{
int x; 
scanf(“%d”,&x);
ParImpar(x);
return 0;
}
20
Variáveis do main:
x
08/07/2013
11
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Exemplo
#include <stdio.h>
void ParImpar(int a)
{
int resto;
resto=a%2;
if (resto==0) printf(“par”);
else printf( “ímpar”);
}
int main()
{
int x; 
scanf(“%d”,&x);
ParImpar(x);
return 0;
}
21
Variáveis do locais:
a (cópia da variável x)
resto
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Chamada por valor: Qualquer alteração feita 
no parâmetro não reflete em alteração no 
argumento.
 Chamada por referência: Todas as alterações 
realizadas no parâmetro, refletem em 
alterações no argumento, ou seja, ambas as 
variáveis apontam para o mesmo endereço de 
memória. Para isso, é necessário que seja 
passado o endereço do argumento e o 
parâmetro receba-o na forma de ponteiro.
22
08/07/2013
12
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
23
Linha
main imprimeMaior
A B C X Y Z
P1
P2
P3
P4
P5
P6
P7
P8
P9
P8’
P9’P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
24
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2
P3
P4
P5
P6
P7
P8
P9
P8’
P9’
P10
08/07/2013
13
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
25
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3
P4
P5
P6
P7
P8
P9
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
26
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4
P5
P6
P7
P8
P9
P8’
P9’
P10
08/07/2013
14
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
27
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5
P6
P7
P8
P9
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
28
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6
P7
P8
P9
P8’
P9’
P10
08/07/2013
15
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
29
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6 22 11 “lixo” 22 11 “lixo”
P7
P8
P9
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y) // (22 > 11)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
30
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6 22 11 “lixo” 22 11 “lixo”
P7 22 11 “lixo” 22 11 “lixo”
P8
P9
P8’
P9’
P10
08/07/2013
16
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
31
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6 22 11 “lixo” 22 11 “lixo”
P7 22 11 “lixo” 22 11 “lixo”
P8 22 11 “lixo” 22 11 “lixo”
P9
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X; // Z = 22;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
32
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6 22 11 “lixo” 22 11 “lixo”
P7 22 11 “lixo” 22 11 “lixo”
P8 22 11 “lixo” 22 11 “lixo”
P9 22 11 “lixo” 22 11 22
P8’
P9’
P10
08/07/2013
17
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X; // Z = 22;
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
33
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6 22 11 “lixo” 22 11 “lixo”
P7 22 11 “lixo” 22 11 “lixo”
P8 22 11 “lixo” 22 11 “lixo”
P9 22 11 22 22 11 22
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X; 
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
34
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6 22 11 “lixo” 22 11 “lixo”
P7 22 11 “lixo” 22 11 “lixo”
P8 22 11 “lixo” 22 11 “lixo”
P9 22 11 22 22 11 22
P8’
P9’
P10
08/07/2013
18
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X; 
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
35
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6 22 11 “lixo” 22 11 “lixo”
P7 22 11 “lixo” 22 11 “lixo”
P8 22 11 “lixo” 22 11 “lixo”
P9 22 11 22 22 11 22
P8’
P9’
P10 22 11 22 - - -
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P6 void imprimeMaior (int X, int Y, int * Z)
{
P7 if (X > Y)
{
P8 printf (“%d”, X);
P9 *Z = X; 
}
else
{
P8’ printf (“%d”, Y);
P9’ *Z = Y;
}
}
P1 int main ()
{
P2 int A, B, C;
P3 A = 22;
P4 B = 11;
P5 imprimeMaior(A,B,&C);
P10 printf (“%d”, C);
return 0; }
36
Linha
main imprimeMaior
A B C X Y Z
P1 - - - - - -
P2 “lixo” “lixo” “lixo” - - -
P3 22 “lixo” “lixo” - - -
P4 22 11 “lixo” - - -
P5 22 11 “lixo” - - -
P6 22 11 “lixo” 22 11 “lixo”
P7 22 11 “lixo” 22 11 “lixo”
P8 22 11 “lixo” 22 11 “lixo”
P9 22 11 22 22 11 22
P8’
P9’
P1022 11 22 - - -
08/07/2013
19
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
1. Faça um procedimento que receba três valores reais 
e imprima a média aritmética desses valores.
2. Faça um procedimento que receba dois valores 
inteiros n1 e n2 e imprima o intervalo fechado entre 
esses dois valores, do menor para o maior. 
Por exemplo: se n1 = 2 e n2 = 5, o procedimento 
irá imprimir 2, 3, 4, 5.
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.
37
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
4. O que será impresso no programa abaixo?
#include <stdio.h>
void calculo (int *p, int *q)
{
*p = *p * 10;
*q = *q + 10;
}
int main()
{
int x = 2, y = 5;
calculo(&x,&y);
printf("%d - %d",x,y);
return 0;
}
38
08/07/2013
20
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 É um tipo especial de procedimento
 Retorna como resultado o valor calculado 
pela função, que deve ser do tipo básico 
definido.
39
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de uma função é:
<tipo básico> <nome da função> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
return <valor de retorno>
}
40
TIPO do dado a ser retornado
como resultado da execução da
função.
08/07/2013
21
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de uma função é:
<tipo básico> <nome da função> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
return <valor de retorno>
}
41
Nome que identifique a ação a ser
executada na função (sem
espaços em branco!)
Ex.: calculaMedia
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de uma função é:
<tipo básico> <nome da função> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
return <valor de retorno>
}
42
Valores recebidos como parâmetro.
Ex.: (A,B,20,30)
08/07/2013
22
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de uma função é:
<tipo básico> <nome da função> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
return <valor de retorno>
}
43
Declaração das variáveis locais
e sequencia de comandos para
a realização da função.
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Forma Geral
◦ A sintaxe de declaração de uma função é:
<tipo básico> <nome da função> (<lista de parâmetros>)
{
<declaração de variáveis locais>
<comandos>
return <valor de retorno>
}
44
A função permite retornar um valor, resultado das ações nela programadas.
Este valor deve ser do <tipo básico> declarado antes do nome da função.
08/07/2013
23
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
 Funções retornam valor. São utilizadas para 
realizar uma operação e retornam alguma 
resposta relativa à operação realizada.
 Exemplo:
int soma (int a, int b)
{
return (a+b);
}
45
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
46
Linha
main valorAbsoluto
A D X Y
P1
P2
P3
P4
P5
P6
P7
P8
P8’
P9’
P10
08/07/2013
24
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
47
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2
P3
P4
P5
P6
P7
P8
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
48
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3
P4
P5
P6
P7
P8
P8’
P9’
P10
08/07/2013
25
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
49
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4
P5
P6
P7
P8
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
50
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 ??? - -
P5
P6
P7
P8
P8’
P9’
P10
08/07/2013
26
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
51
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 ??? - -
P5 -40 ??? -40 -
P6
P7
P8
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
52
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 ??? - -
P5 -40 ??? -40 -
P6 -40 ??? -40 “lixo”
P7
P8
P8’
P9’
P10
08/07/2013
27
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0) // (-40 >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
53
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 ??? - -
P5 -40 ??? -40 -
P6 -40 ??? -40 “lixo”
P7 -40 ??? -40 “lixo”
P8
P8’
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0) // (-40 >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
54
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 ??? - -
P5 -40 ??? -40 -
P6 -40 ??? -40 “lixo”
P7 -40 ??? -40 “lixo”
P8
P8’
P9’
P10
08/07/2013
28
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
55
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 ??? - -
P5 -40 ??? -40 -
P6 -40 ??? -40 “lixo”
P7 -40 ??? -40 “lixo”
P8
P8’ -40 ??? -40 40
P9’
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
56
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 ??? - -
P5 -40 ??? -40 -
P6 -40 ??? -40 “lixo”
P7 -40 ??? -40 “lixo”
P8
P8’ -40 ??? -40 40
P9’ -40 40 -40 40
P10
08/07/2013
29
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
57
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 40 - -
P5 -40 ??? -40 -
P6 -40 ??? -40 “lixo”
P7 -40 ??? -40 “lixo”
P8
P8’ -40 ??? -40 40
P9’ -40 40 -40 40
P10
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
58
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 40 - -
P5 -40 ??? -40 -
P6 -40 ??? -40 “lixo”
P7 -40 ??? -40 “lixo”
P8
P8’ -40 ??? -40 40
P9’ -40 40 -40 40
P10 -40 40
08/07/2013
30
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
P5 float valorAbsoluto (float X)
{
P6 float Y;
P7 if (X >= 0)
{
P8 Y = X;
}
else
{
P8’ Y = -X;
}
P9 return Y;
}
P1 int main ()
{
P2 float A, D;
P3 A = -40.0;
P4 D = valorAbsoluto (A);
P10 printf (“%f”, D);
return 0; }
59
Linha
main valorAbsoluto
A D X Y
P1 - - - -
P2 “lixo” “lixo” - -
P3 -40 “lixo” - -
P4 -40 40 - -
P5 -40 ??? -40 -
P6 -40 ??? -40 “lixo”
P7 -40 ??? -40 “lixo”
P8
P8’ -40 ??? -40 40
P9’ -40 40 -40 40
P10 -40 40
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
1. Faça uma função que receba um valor N inteiro e 
positivo e que calcula o fatorial deste valor. Retorne o 
resultado.
2. Faça uma função que receba dois valores inteiros n1 e 
n2 e retorne a quantidade de valores que existem entre 
eles que sejam divisíveis por 3 e 7.
3. Faça uma função que receba por parâmetro o raio de 
uma esfera e calcula o seu volume: v = (4 * PI * R3) / 3.
4. Faça uma função que receba a idade de uma pessoa em 
anos, meses e dias e retorna essa idade expressa em 
dias.
60
08/07/2013
31
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
5. Qual a saída do programa abaixo?
#include <stdio.h>
int calculo (int p, int q)
{
p = p * 10;
q = q + 10;
return(p + q);
}
int main()
{
int x = 2, y = 5;
printf(“%d %d %d”,x,y,calculo(x,y));
return 0;
}
61
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
6. Qual a saída do programa abaixo?
#include <stdio.h>
int calculo (int p, int *q)
{
p = p * 10;
*q = *q + 10;
return(p);
}
int main()
{
int x = 2, y = 5, z;
z = calculo(x,&y);
printf(“%d %d %d”,x,y,z);
return 0;
}
62
08/07/2013
32
CEA 030 – Programação de Computadores I
PROF. MATEUS FERREIRA SATLER
7. Qual a saída do programa abaixo?
#include <stdio.h>
int cal(int p, int *q, int *r)
{
p = p * 10;
*q = *q + 10;
*r = *r - 10;
return(p);
}
int main()
{
int x = 2, y = 5, z = 3, r;
r = cal(x,&y,&z);
printf(“%d %d %d %d”,x,y,z,r);
return 0;
}
63

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes