Algoritmos e Programação Aula 9 Subalgoritmos, funções e passagem de parâmetros Profa. Marina Gomes marinagomes@unipampa.edu.br 22/06/2017 Engenharia de Computação - Unipampa 1
Modularização Facilita a construção de grandes programas através da divisão em pequenas etapas: módulos (subrotinas ou subprogramas). Programas simples: sequência de instruções para resolver um problema, dirigidas por estruturas de controle. Ex.: Estruturas de condição e repetição Programas complexos: Variedade de situações a serem resolvidas ou uma série de pequenos problemas cujas soluções integram o conjunto definitivo de instruções. Ex.: Um programa de computador com vários módulos. 22/06/2017 Engenharia de Computação - Unipampa 2
Modularização Vantagens da modularização: Permite que trechos do programa possam ser reutilizados em diferentes partes do programa ou em novos programas. As partes do programa podem ser escritas e testadas separadamente. Pode suprimir do bloco principal particularidades da implementação. detalhes e Ex.: printf, scanf 22/06/2017 Engenharia de Computação - Unipampa 3
Funções Na Linguagem C, basicamente, a modularização é tratada como função. Trecho de código de um programa projetado para cumprir uma tarefa específica, que pode ou não retornar um valor. Pode estar no mesmo arquivo ou em arquivos separados. O seu uso envolve três passos: Declaração (protótipo): antes do main() Defnição (código da função): antes ou depois do main() Ativação (chamada): dentro do main() ou de uma outra função 22/06/2017 Engenharia de Computação - Unipampa 4
Funções (declaração) Sintaxe da declaração: tipo nome_da_função (parâmetros); Tipo: é o tipo da informação retornada da função; se a função não retornar nada, seu tipo deve ser void. Neste caso chamamos de procedimento ao invés de função. Parâmetros: lista de tipos (e variáveis) que serão passados como argumentos para a função; pode ser vazio (void). 22/06/2017 Engenharia de Computação - Unipampa 5
Funções (definição) Sintaxe da defnição: tipo nome_da_função (parâmetros) { declaração de variáveis; comandos; return (expressão); //opcional } A primeira linha é idêntica à declaração. O return serve para indicar o valor a ser retornado, se for o caso, e pode aparecer em qualquer ponto da função (não apenas no fnal) e em mais de um ponto. 22/06/2017 Engenharia de Computação - Unipampa 6
Funções (ativação) Formas de ativação de funções: Exemplos 22/06/2017 Engenharia de Computação - Unipampa 7
Funções (ativação) A ativação faz com que o controle seja transferido para o trecho chamado (primeira instrução) e executa até o fim do trecho (última instrução). Ao final da função, o controle volta para instrução seguinte à chamada. 22/06/2017 Engenharia de Computação - Unipampa 8
Variáveis e funções Uma função pode fazer referência a variáveis: Declaradas localmente: variáveis locais da unidade Declaradas globalmente: variáveis globais do programa 22/06/2017 Engenharia de Computação - Unipampa 9
Exemplo 22/06/2017 Engenharia de Computação - Unipampa 10
Formas de utilização Exemplo de função sem retorno de valor (procedimento): 22/06/2017 Engenharia de Computação - Unipampa 11
Formas de utilização Exemplo de função com retorno de valor: 22/06/2017 Engenharia de Computação - Unipampa 12
Formas de utilização Exemplo de função com retorno de valor: 22/06/2017 Engenharia de Computação - Unipampa 13
Exercícios 1. Estude o seguinte programa e aponte o valor de cada variável que solicitado: 22/06/2017 Engenharia de Computação - Unipampa 14
Exercícios 2. Escreva um programa que exiba uma mensagem de boas-vindas através de um procedimento (função que não retorna um valor). gets(nome); //Fulano -Ex. de saída: Bem-vindo, Fulano! 3. Escreva um programa que peça um número e mostre o seu antecessor através de uma função: scanf( %d, &num); //10 -Ex. de saída: Antecessor = 9. 22/06/2017 Engenharia de Computação - Unipampa 15
Exercícios 4. Faça um procedimento que receba um número inteiro por parâmetro e informe se ele é par, ímpar ou zero. 5. Escreva um programa para ler as notas das três avaliações de um aluno no semestre. Também faça uma função que receba as notas por parâmetro e calcule a média semestral. Por fm, no programa principal, escreva e a mensagem PARABÉNS! Você foi aprovado! se o aluno obteve a média maior ou igual a 6, senão, exiba Você foi reprovado!. 6. Escreva uma função que receba 2 números inteiros n1 e n2 como entrada e retorna a soma de todos os números inteiros contidos no intervalo [n1,n2]. Use esta função em um programa que lê n1 e n2 do usuário e imprime a soma. Ex. de saída: n1 = 1 n2 = 3 Soma: 6 22/06/2017 Engenharia de Computação - Unipampa 16
Exercícios 7. Faça uma função que calcule o IMC (peso/altura²) de uma pessoa e conforme o seu retorno classifique, no programa principal, conforme a tabela abaixo: 8. Escreva uma função (e programa) que converta radianos para graus e retorne o valor para o usuário. Fórmula: graus = (radianos * 180)/pi 22/06/2017 Engenharia de Computação - Unipampa 17
Exercícios 9. Faça um programa de calculadora com as operações básicas: adição, subtração, multiplicação e divisão. O programa inicia apresentando um menu de opções como mostrado abaixo. Posteriormente, o usuário deve digitar 2 valores: Calculadora v1.0 1. Adição 2. Subtração 3. Multiplicação 4. Divisão 5. Sair do programa Digite a opção desejada: ********************************************************** *********** *Dica: a) O programa principal chama a função conforme a opção do usuário, deve se criar uma função para cada operação. b) Uma outra maneira é fazer uma única função que receba 2 valores a serem calculados juntamente com um valor referente a operação desejada. 22/06/2017 Engenharia de Computação - Unipampa 18
Exercícios 10. Escreva uma função (e programa) que receba como argumentos uma cadeia de caracteres (s) e um caracter (c). A função deve retornar como resultado o número de vezes que (c) aparece em (s). - Ex. de saída: s = unipampa c = p O número de vezes que p aparece em unipampa é 2. *Dica: Para comparar os valores da palavra (string) com o caracter (char), podemos fazer de duas maneiras diferentes: a) através de um while enquanto não chegar no fnal da string (\0) b) através de um for que inicia em zero e vai até tamanho da string (strlen) menos um. 22/06/2017 Engenharia de Computação - Unipampa 19