Buscar

Aula 02 - Funções na linguagem C

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 10 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 10 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 10 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

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]

Outros materiais