• Nenhum resultado encontrado

Acadêmico: Subprogramação (funções)

N/A
N/A
Protected

Academic year: 2021

Share "Acadêmico: Subprogramação (funções)"

Copied!
5
0
0

Texto

(1)

Algoritmos Acadêmico: _________________________________ IP 06 Subprogramação (funções)

Até agora, em todos os programas que criamos, codificamos uma única função: main(). Entretanto, em todos eles, diversas funções foram utilizadas: printf(), scanf(), getch(), putch(), etc. Essas funções estão disponíveis no sistema através de bibliotecas que acompanham o compilador C++, mas podemos definir nossas próprias funções e utilizá-las da mesma maneira. Para definir uma função, empregamos a seguinte forma básica:

tipo nome(parâmetros) {

// declarações // comandos }

Sendo que:

– Tipo refere-se ao tipo de resposta que a função devolve e deve ser void (vazio) se a função não tem valor de resposta;

– Nome é o identificador da função no resto do programa;

– Parâmetros é uma lista de variáveis que representam valores de entrada para a função e deve ser void caso não haja valores de entrada;

Dentro do corpo da função, a primeira seção é destinada à declaração das variáveis e a segunda, aos comandos.

Nosso primeiro exemplo é uma função que não tem valor de resposta e não recebe argumentos ao ser chamada. Esta função tem como objetivo simular o som de um alarme e poderia ser utilizada, por exemplo, num programa que desejasse alertar o usuário sobre alguma operação indevida.

void alarme(void) { int f; sound(f); delay(100); for(f=100; f<=5000; f+=20) { } nosound(); }

Uma função do tipo void, quando executada, apenas produz um determinado efeito desejado, sem contudo devolver um valor de resposta. Sendo assim, o compilador não permite que funções void sejam usadas em expressões. Por exemplo, a chamada a seguir causaria um erro de compilação:

int a = alarme();

A declaração de uma função, conhecida como assinatura ou protótipo, consiste em seu tipo, nome e lista de parâmetros seguida de ponto-e-vírgula:

(2)

A declaração pode ser omitida se a implementação da função ocorre antes que ela seja referenciada no restante do programa. Por exemplo, a declaração da função alarme() torna-se desnecessária torna-se colocarmos a sua implementação antes da definição da função main(). Para que uma função seja reconhecida durante a compilação devemos declará-la ou defini-la antes de qualquer referência que é feita a ela no resto do programa.

Nosso próximo exemplo é uma função que nos permite dizer se um número é maior que outro, a partir de dois determinados valores. Para isso, será necessário que o números em questão, sejam passados à rotina sob a forma de uma lista de argumentos.

void maior(int num1, int num2) { if (num1>num2){

printf (" é o número é o maior"); }else {

printf(" é o número é o menor"); }

}

A vantagem de se ter uma função parametrizada é que, a cada chamada, podemos lhe passar valores diferentes. Isto permite, no caso da função maior(), que os numeros possam ter qualquer valor e que sejam exibidas em qualquer ponto da tela que julgarmos adequado. Exemplo de programa:

#include <stdio.h>

void maior(int num1, int num2); int main(void) { int num1,num2; printf("\nInforme os números: "); scanf ("%d-%d",&num1,&num2); printf("\nMaior %d ?", num1); maior(num1,num2); printf("\nMaior %d ?", num2); maior(num2,num1); return 0; }

void maior(int num1, int num2) { if (num1>num2){

printf (" é o número é o maior"); }else {

printf(" é o número é o menor"); }

}

INSTITUTO FEDERAL DO PARANÁ | Palmas

(3)

Se uma função não é do tipo void, então ela deve, necessariamente, devolver um valor como resultado de sua execução. Para isso, a função deve empregar o comando return. Esse comando, além de especificar a resposta da função, faz com que o controle retorne ao ponto onde ela foi chamada no programa, interrompendo imediatamente sua execução. Exemplo, calculando a soma de dois números reais:

float soma(float a, float b) { float x;

x = a + b; return x; }

Mesmo quando o comando return aparece em diversos pontos dentro de uma função, apenas uma dessas ocorrências pode ser executada a cada vez que a função é chamada. Como exemplo, considere a função a seguir que devolve o máximo entre os dois valores que lhe são passados como argumentos.

double max(double a, double b) { if( a>b ) {

return a; }

return b; }

Note que a execução do primeiro return impede a execução do segundo, mesmo sem termos colocado a parte else do if. Um comando return só devolve um único valor e, como ele interrompe a execução da função, não há como criar uma função que devolva mais que um valor por vez.

Fonte:

(4)

Exercícios Propostos desta IP:

* resolver no caderno e entregar para correção com esta folha

E) Funções

31

Construa uma estrutura modular que calcule o Gasto Energético Basal (GEB), utilizando as seguintes fórmulas:

para os homens: GEB = 66.47 + (13.75 * PC) + (5 * Alt) – (6.76 * I); para as mulheres: GEB = 655.1 + (9.56 * PC) + (1.85 * Alt) – (4.67 * I); onde: PC - Peso Corporal em "kg"; Alt- altura em "cm" e I- Idade.

Obs. No corpo do programa principal deve-se obter os dados de entrada: sexo, peso corporal, altura e idade e uma função deverá receber estes dados através de parâmetros retomando o gasto energético basal calculado.

32

Implemente uma função que recebe um parâmetro inteiro n e que ao ser chamada imprime uma sequência de linhas, como mostra o exemplo a seguir para n = 3:

1 1 1 2 2 3 2 2 1 1 1 33

Escreva uma função que recebe um parâmetro inteiro n e que ao ser chamada imprime uma sequência de linhas, como mostra o exemplo a seguir para n = 3:

1 * * 1 2 * 1 2 3 1 2 * 1 * * 34

Escreva uma função que recebe dois parâmetros inteiros n e vezes, onde: n- indica o final da sequência e vezes- o nro de vezes que a sequência deverá ser repetida. Veja o exemplo abaixo para n = 3 e vezes = 2. 1 2 2 3 3 3 1 2 2 3 3 3

INSTITUTO FEDERAL DO PARANÁ | Palmas

(5)

35

Escreva uma função que recebe um parâmetro inteiro n e que ao ser chamada imprime uma sequência de linhas, como mostra o exemplo a seguir para n = 3:

===== 1 2 3 1 2 1 ===== 1 1 2 1 2 3 ===== 36

Escreva uma função que receba através de parâmetros: o valor de uma aplicação, o percentual de rendimento mensal obtido por esta aplicação e o período do investimento; e retome o valor da aplicação ao fmal do período de investimento. Obs. a cada 12 meses o percentual de rendimento deve ser aumentado em 0,25 %.

37

Construa uma estrutura modular com as funções que:

1) calcula e retoma o Índice de Massa Corpórea (IMC) através da seguinte fórmula: IMC = PC / (Alt * Alt);

onde: PC - Peso Corporal em kg e Alt- altura em metros.

2) recebe através de parâmetro o índice de massa corpórea e retoma a interpretação conforme a tabela a seguir: IMC Interpretação Menos de 20 Magro 20 – 24 Normal 25 – 29 Acima do peso 30 – 34 Obeso

Referências

Documentos relacionados

PRODUTOS ORIUNDOS DA AGRICULTURA FAMILIAR -

Com relação a concentração de formaldeído das amostras analisadas, três apresentaram resultados abaixo da faixa em que a Agência Nacional de Vigilância Sanitária

data de postagem dentro do prazo referido no subitem anterior, para: Seção Técnica de Desenvolvimento e Administração de Recursos Humanos do Câmpus de Dracena (Ref: Recurso em

http://www.pontodasartes.com/pt/catalogo/pinceis/pinceis-para- pintura/trincha/cerda/trincha-raphael-plana-para-varias-alicacoes-277/) Trincha nº70 1 - 6,64 6,64 Segundo a

Anno Descrizione Lavoro Importo lavori a base d'asta Tipologia Lavoro Committente Natura e livello della prestazione Grado di attuazione 2018 Implementazione sistema di

Com a descrição das ocorrências de SE-Indeterminado, SE- Passivo e SE-Reflexivo em orações principais neutras, contexto de variação na posição do pronome em relação

(Ufpe) Na(s) questão(ões) a seguir escreva nos parênteses a letra (V) se a afirmativa for verdadeira ou (F) se for

1b) Cartilagem hialina sofre modificações: hipertrofia dos condrócitos, redução da matriz cartilaginosa, mineralização e morte, por apoptose, dos condrócitos. 2b) Cavidades