Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estácio de Sá Professor Rogério Disciplina: Linguagem de Programação Curso de Engenharia Civil , Engenharia de Produção e Automação Funções na linguagem C As funções definem as ações a serem tomadas em diversos momentos da execução de um programa. Em termos simples, as funções realizam todas as tarefas para as quais o programa foi escrito, por exemplo, realizar cálculos, resumir informações, produzir relatórios e etc. É um trecho de código que permite ser chamado com apenas um comando. Com o seu uso, este chamado poderá ser colocado em diferentes locais do código. O uso de funções permite: 1) modularização (divisão em módulos/tarefas/funções) do código. 2) melhora a manutenção: torna o programa mais legível e fácil de ser modificado, pois, se uma função tiver que ser feita será por uma única vez e todo o sistema se adaptará. Fluxograma Exemplo de Fluxograma Estrutura básica Estrutura: nome_da_função(); Ou seja, dizemos o nome da função a qual queremos chamar e inserimos os caracteres de abre e fecha parênteses. Neste caso, como não existe nada entre parênteses, dizemos que não estamos passando variável nenhuma para a função que chamamos. Declarando as Funções na linguagem C A declaração mais simples que podemos fazer de uma função é a seguinte: <tipo da função> <nome_função> (<lista de parâmetros>) { [comandos] } No qual: <tipo da função> é um dos tipos de dados válidos para a função, como void, int, float, char. A primeira palavra-chave, void, define o valor retornado pelo método, neste caso, nenhum. Podemos usar qualquer tipo de dado válido como valor de retorno de um método. Nesse caso, ao terminar, o método seria obrigado a devolver um dado do tipo especificado. <nome_função> é um identificador que define o nome pelo qual a função é conhecida. <comandos> consiste de uma lista ordenada de declaração de variáveis, de expressões e de comandos. Funções Algumas funções retornam valores. Por exemplo, considere o módulo principal (main) e o módulo fatorial (fat), o módulo principal (main) passa por parâmetros um número inteiro positivo e o módulo fatorial (fat) depois de processar este número devolve para o método principal o valor que corresponde ao fatorial do número. Importante: os métodos que não forem declarados como do tipo void deverão obrigatoriamente utilizar o comando return. Exercício do Fatorial. #include <iostream.h> int fatorial (int n){ int i, fat; fat = 1; for (i=1; i<=n; i=i+1){ fat = fat*i; } return fat; } main(){ int n, resultado; cout << "Fatorial: "; cin >> n; resultado = fatorial(n); cout << "Fatorial : "<< resultado << "\n"; system("pause"); } Aplicação Prática de Funções na Matemática Combinaçoes: Quando formamos agrupamentos com p elementos, (p<m) de forma que os p elementos sejam distintos entre si apenas pela espécie. Combinação simples: Não ocorre a repetição de qualquer elemento em cada grupo de p elementos. Fórmula: Exemplo: Seja C={A,B,C,D}, n=4 e p=2. As combinações simples desses 4 elementos tomados 2 a 2 são 6 grupos que não podem ter a repetição de qualquer elemento nem podem aparecer na ordem trocada. Todos os agrupamentos estão no conjunto: s={AB,AC,AD,BC,BD,CD} Cálculo para o exemplo: C(4,2)=4!/[2!2!]=24/4=6 Programa na linguagem C: #include <iostream.h> int fatorial (int n){ int i, fat; fat = 1; for (i=1; i<=n; i=i+1){ fat = fat*i; } return fat; } main(){ int n,p,resultado; cout << "Quantidade de Elementos do Grupo: "; cin >> n; cout << "Pares dos grupos : "; cin>> p; resultado = fatorial(n)/ (fatorial(p)*fatorial(n-p)); cout << "Combinacao : "<< resultado << "\n"; system("pause"); } Agora é a sua vez: Desenvolva na linguagem C. Combinação com repetição: Todos os elementos podem aparecer repetidos em cada grupo até p vezes. Fórmula: Cr(n,p)=C(n+p-1,p) Cálculo para o exemplo: Cr(4,2)=C(4+2-1,2)=C(5,2)=5!/[2!3!]=10 Exemplo: Seja C={A,B,C,D}, n=4 e p=2. As combinações com repetição desses 4 elementos tomados 2 a 2 são 10 grupos que têm todas as repetições possíveis de elementos em grupos de 2 elementos não podendo aparecer o mesmo grupo com a ordem trocada. De um modo geral neste caso, todos os agrupamentos com 2 elementos formam um conjunto com 16 elementos: Cr={AA,AB,AC,AD,BA,BB,BC,BD,CA,CB,CC,CD,DA,DB,DC,DD} mas para obter as combinações com repetição, deveremos excluir deste conjunto os 6 grupos que já apareceram antes, pois AB=BA, AC=CA, AD=DA, BC=CB, BD=DB e CD=DC, assim as combinações com repetição dos elementos de C tomados 2 a 2, são: Cr={AA,AB,AC,AD,BB,BC,BD,CC,CD,DD} tem 10 elementos. Exercícios Práticos. 1. Desenvolva uma função que receba como parâmetro dois números reais e faça a função devolver o calculo da soma dos números #include<iostream.h> float calc(float a ,float b) { float soma = a+b; return soma; } main(){ float a,b,soma; cout << "valor de a: "; cin>> a; cout << "valor de b: "; cin >> b; soma = calc (a,b); cout << "soma vale : "<<soma<<"\n"; system("pause"); } 2. Desenvolva uma função que receba como parâmetro o valor do salário bruto de um funcionário e faça a própria função calcular e devolver o valor do novo salário com um aumento de acordo com a tabela abaixo: Salário Bruto % de aumento Até 2.000,00 20% De 2.000,01 até 5.000,00 15% Acima de 5.000,00 10% � Fluxograma Codificação em C #include <iostream.h> float calculo(float salarioBruto){ if (salarioBruto <= 2000){ return salarioBruto*1.20; } else if (salarioBruto <= 5000){ return salarioBruto*1.15; } else { return salarioBruto*1.10; } } main(){ float salarioBruto, salarioLiquido; cout<< "Salario Bruto: "; cin>> salarioBruto; salarioLiquido=calculo(salarioBruto); cout<<"SalarioLiquido:"<< salarioLiquido<<"\n"; system("pause"); } 3.) Dado o enunciado, complete o programa abaixo com a correta função, comando ou variável necessária para que o programa funcione corretamente. a) Desenvolva um programa que solicite ao usuário o VALOR BRUTO de uma compra e o TIPO da pessoa que efetuou a compra (F-Física e J-Jurídica). Desenvolva uma função que receba como parâmetro esses dados e conceda um desconto de 5% para o TIPO de pessoa física, caso contrário, conceda 10%. Exiba o novo valor da compra com desconto. _________________ calcula (float ___________________, char ______________________) { if (tipoPessoa =='f'){ return valorBruto*0.05; } else{ return valorBruto*0.1; } } main(){ float valorBruto, desconto, valorDesconto; char tipoPessoa; cout<<"Valor Bruto: "; cin >> valorBruto; cout<<" Tipo Pessoa : "; cin>> tipoPessoa; desconto = calcula (valorBruto, tipoPessoa); valorDesconto= valorBruto - desconto; cout<<"valor com desconto: "<< valorDesconto<<"\n"; system("pause"); } b). Crie uma função em linguagem C que receba 2 números e retorne o maior valor. #include <iostream.h> float __________________________( _______________________, float ______________________){ if (n1>n2){ ______________________ n1; } else{ _______________________ n2; } } main(){ float n1, n2, maior; cout <<"primeiro numero : "; cin >> n1; cout <<"segundo numero : "; cin >> n2; maior = calcula(n1,n2); cout << "maior: "<<maior<<"\n"; system("pause"); } 4) Desenvolva um programa que solicite ao usuário o número de horas trabalhadas e o valor do salário mínimo, calcule e mostre o salário a receber seguindo estas regras: Desenvolva uma função que calcule a hora trabalhada que vale a metade do salário mínimo. Desenvolva uma função que calcule o salário bruto que equivale ao número de horas trabalhadas multiplicado pelo valor da hora trabalhada. Desenvolva uma função que calcule o imposto que equivale a 3% do salário bruto. Desenvolva uma função que calcule o salário a receber que equivale ao salário bruto menos o imposto. #include <iostream.h> // função que calcule a hora trabalhada que vale a metade do salário mínimo. float calcula1 (float sMinimo){ ___________________________________________________________________________ } //função que calcule o salário bruto que equivale ao número de horas trabalhadas multiplicado pelo valor da hora trabalhada. float calcula2 (float valorHora,float numeroH){ ___________________________________________________________________________ } // função que calcule o imposto que equivale a 3% do salário bruto. float calcula3 (float sBruto){ ___________________________________________________________________________ } // função que calcule o salário a receber que equivale ao salário bruto menos o imposto. float calcula4 (float sBruto, float imposto){ ___________________________________________________________________________ } main(){ float numeroH, sMinimo, valorHora, sBruto,imposto,sLiquido; cout<< "Qual o numero de horas trabalhadas : "; cin>> numeroH; cout << "Qual o valor do salário Minimo: "; cin >> sMinimo; valorHora = calcula1(sMinimo); sBruto = calcula2 (valorHora,numeroH); imposto = calcula3 (sBruto); sLiquido = calcula4 (sBruto,imposto); cout << "Salario Liquido : "<< sLiquido<<"\n"; system("pause"); } 5) Desenvolva um programa que solicite ao usuário o salário base de um funcionário. Calcule e mostre o novo salário de acordo com a tabela abaixo. Desenvolva uma função que calcule o desconto que deve ser aplicado sobre o salário base. Salário base Desconto até 1000,00 5% de 1000,01 até 3000,00 6% Acima de 3000,00 10% #include <iostream.h> float __________________________ (______________________________________________) { if (salarioBase<=1000){ _______________________________________________________________________ } else if (salarioBase<=3000){ _______________________________________________________________________ } else{ _______________________________________________________________________ } } float calcula2(float salarioBase, float desconto){ return salarioBase - desconto; } main(){ float salarioBase, salarioLiquido, desconto; cout << "Digite o salario base : "; cin >> salarioBase; desconto = calcula1 (salarioBase); salarioLiquido= calcula2 (salarioBase, desconto); cout << "Salario Liquido : "<<salarioLiquido<<"\n"; system("pause"); } 6) Baseado nos exercícios anteriores, faça o exercício abaixo. Faça um programa que receba o salário base de um funcionário. Calcule e mostre salário a receber, o valor da gratificação (utilize função) e do imposto pago (utilize função), sabendo-se que esse funcionário tem gratificação e imposto (este são calculados cada um em cima do salário base) conforme tabela abaixo: Salário Gratificação Imposto até 2000,00 10% 8% de 2000,01 até 8000,00 15% 9% Acima de 8000,00 20% 11% Teste 1: Teste 2: Salario base: 2000.00 Salário base: 5000.00 Gratificação: 200.00 Gratificação: 750.00 Imposto: 160.00 Imposto: 450.00 Salário a Receber: 2040.00 Salário a Receber: 5300.00 7) Indique se são verdadeiras ou falsas as seguintes afirmações: a) [ ] Uma função na linguagem C pode devolver simultaneamente mais do que um valor. b) [ ] Uma função na linguagem C pode não ter parâmetros. c) [ ] Uma função na linguagem C tem que devolver sempre um número. d) [ ] Uma função na linguagem C tem uma instrução return que termina a execução da função. e) [ ] Em uma função na linguagem C o nome da função é opcional. f) [ ] Uma função na linguagem C não deve mais que 10 linhas. 8) Assinale a alternativa incorreta relacionada ao conceito de função: a) As funções definem as ações a serem tomadas em diversos momentos da execução de um programa. b)O uso de funções permite que o programa crie desvios condicionais iguais ao do comando if..else. c) É um trecho de código que permite ser chamado com apenas um comando, com o seu uso, esse chamado poderá ser colocado em diferentes locais do código. d) O uso de funções permite a modularização (divisão em módulos ou a divisão em pequenos programas). e) Melhora a manutenção e torna o programa mais legível e fácil de ser modificado, pois, se uma função sofrer alteração todo o sistema se adaptará e essa nova modificação. Exercício extra: Desenvolva um programa que simule uma calculadora. #include<iostream.h> float soma(float a ,float b) { return a+b; } float mult(float a ,float b) { return a*b; } float sub(float a ,float b) { return a-b; } float divi(float a ,float b) { return a/b; } float menu(){ float opcao; system("cls"); cout << "1 - soma\n"; cout << "2 - multiplicacao\n"; cout << "3 - subtracao\n"; cout << "4 - divisao\n"; cout << "5 - fim \n"; cout << " opcao: "; cin >> opcao; return opcao; } main(){ float a,b,opcao, resposta; for (;;){ opcao = menu(); if (opcao == 5){ break; } if ((opcao < 1) || (opcao >5)){ cout << "opcao incorreta"; } else { cout << "valor de a: "; cin>> a; cout << "valor de b: "; cin >> b; if (opcao == 1){ resposta=soma(a,b); } else if (opcao == 2){ resposta=mult(a,b); } else if (opcao == 3){ resposta=sub(a,b); } else if (opcao == 4){ resposta=divi(a,b); } cout << "resposta : "<< resposta<< "\n"; } system("pause"); } } n: 5 main() fatorial() fatorial: 120 _1517308175.unknown _1502174517/ole-[42, 4D, 3E, A5, 07, 00, 00, 00]
Compartilhar