Buscar

Algoritmos 12 - Subalgoritmos Com e Sem Retorno

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

N575 - Algoritmos e 
Programação de Computadores 
 
Subalgoritmos – Com e sem retorno 
 
Prof. Raphael Torres Santos Carvalho 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
1 
Roteiro 
 Objetivo 
 Subalgoritmos 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
2 
Objetivo 
 Decompor algoritmos em subalgoritmos por meio da 
simplificação de estruturas mais complexas. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
3 
Motivação 
 Sempre é possível dividir problemas grandes e complicados 
em problemas menores e de solução mais simples. 
 A decomposição de um problema é fator determinante para a 
redução da complexidade 
 Nesse caso, o algoritmo complexo é dividido num algoritmo 
principal e em diversos subalgoritmos (tantos quantos forem 
necessários ou convenientes). 
 O algoritmo principal é aquele por onde começa a execução, 
e ativa, eventualmente, os demais subalgoritmos. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
4 
Definição 
 Subalgoritmo ou função é um algoritmo que, geralmente, 
resolve um pequeno problema, e que está subordinado a um 
outro algoritmo. 
 Esta subordinação deve-se ao fato de que o subalgoritmo só 
será acionado se solicitado pelo algoritmo principal. 
 É possível que um subalgoritmo chame outro subalgoritmo. 
 Ex. Calculo do fatorial pode ser utilizado no cálculo das 
combinações e arranjos. 
 N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
5 
Vantagens 
 Na subdivisão de algoritmos complexos, facilitando o seu 
entendimento; 
 Na estruturação de algoritmos, facilitando, principalmente, a 
detecção de erros e a documentação de sistemas; 
 Na modularização de sistemas, que facilita a manutenção de 
softwares e reutilização de subalgoritmos já implementados. 
 Economiza, tempo, espaço e esforço – módulos podem ser 
chamados de qualquer local dentro do algoritmo; 
 N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
6 
Forma geral 
 A forma geral de uma função é: 
 
tipo_de_retorno nome_da_função (lista_de_parâmetros) 
{ 
 /* corpo_da_função */ 
} 
 
 O especificador de tipo determina o tipo do valor que a 
função retornará (se algum) usando o comando return. Ele 
pode ser qualquer tipo válido (básico ou definido pelo 
usuário). 
 A função pode ou não retornar um valor para quem a chamar. 
Se não for retornar valor, o tipo de retorno será void. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
7 
Com e sem retorno 
 Um função sem retorno será da forma: 
 
void nome_da_funcao (lista_de_parametros){ 
 /*corpo_da_funcao*/ 
} 
 
 Uma função com retorno será da forma: 
 
tipo_de_retorno nome_da_funcao (lista_de_parametros){ 
 /*corpo_da_funcao*/ 
 return VALOR; 
} 
 
 Em que o tipo pode ser qualquer tipo válido (básico ou definido pelo 
usuário). 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
8 
Comando return 
 Fará com que a execução do programa retorne para o código 
chamador assim que ele seja encontrado; 
 Pode ser usado para retornar um (e apenas um) valor para o 
programa chamador. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
9 
Forma geral 
 A forma geral de uma função é: 
 
tipo_de_retorno nome_da_função (lista_de_parâmetros) 
{ 
 /* corpo_da_função */ 
} 
 
 A lista de declaração de parâmetros é uma lista de tipos de 
variáveis e identificadores de variáveis separados por vírgulas e que 
receberão os valores dos parâmetros quando a função for chamada. 
 Ao contrário da declaração de variáveis, todos os parâmetros de 
uma função devem incluir tanto o tipo como o identificador da 
variável. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
10 
Lista de parâmetros 
 Escopo das variáveis da lista de parâmetros. 
 Visibilidade: apenas dentro da função em execução. 
 Tempo de vida: enquanto a função existir. 
 Tipo de passagem: por valor e/ou por referência. 
 
 Uma função pode receber nenhum, um ou vários parâmetros. Uma 
função que não recebe nenhum parâmetro é declarada como: 
 
tipo_de_retorno nome_da_funcao (void); 
 
 Um função que recebe um ou mais parâmetros é declarada como: 
 
tipo_de_retorno nome_da_função (lista_de_parâmetros); 
 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
11 
Exemplos 
 Função sem parâmetros e sem retorno 
 
#include <stdio.h> 
 
void mostra_mensagem(void) { 
 printf(“Erro: Parametros invalidos!\n“); 
} 
 
int main(void) { 
 int x, y; 
 
 printf(“Digite x: “); 
 scanf("%d", &x); 
 printf(“Digite y: “); 
 scanf("%d", &y); 
 if(y==0) 
 mostra_mensagem(); 
 else 
 printf(“x/y = %d\n“, x/y); 
 
 return 0; 
} 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
12 
Exemplo 
 Função com parâmetros e sem retorno 
 
#include <stdio.h> 
 
void mostra_mensagem (int erro) { 
 if(erro==0) printf(“Divisao por zero!\n”); 
 if(erro==1) printf(“Numero negativo!\n”); 
 
} 
 
int main(void) { 
 int x, y; 
 
 printf(“Digite x: “); scanf("%d", &x); 
 printf(“Digite y: “); scanf("%d", &y); 
 if(y==0) { 
 mostra_mensagem(0); exit(1); } 
 if(x < 0 || y < 0) { 
 mostra_mensagem(1); exit(1); } 
 
 printf(“x/y = %d\n“, x/y); 
 
 return 0; 
} 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
13 
Exemplo 
 Função sem parâmetros e com retorno 
 
#include <stdio.h> 
 
int menu(void) { 
 char ch; 
 do{ 
 printf(“Continuar (s/n): "); 
 fflush(stdio); ch = getchar(); 
 } while((ch != ‘s') && (ch != 'n')); 
 if(ch == ‘s‘) return 1; 
 if(ch == ‘n’) return 0; 
} 
int main(void) { 
 
 if(menu()) 
 printf(“Resposta: SIM...\n"); 
 else 
 printf(“Resposta: NAO...\n"); 
 
 return 0; 
} 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
14 
Exemplo 
 Função com parâmetros e com retorno 
 
#include <stdio.h> 
 
int max(int x, int y) { 
 if(x > y) 
 return x; 
 else 
 return y; 
} 
 
int main(void) { 
 int x, y, m; 
 
 printf("x = "); 
 scanf("%d", &x); 
 printf("y = "); 
 scanf("%d", &y); 
 m = max(x, y); 
 printf(“O maior é = %d\n", m) 
 return 0; 
} 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
15 
Dúvidas? 
N
5
7
5
 -
 A
lg
ori
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
16

Outros materiais