Baixe o app para aproveitar ainda mais
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
Compartilhar