Buscar

IP-T9-10

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

Linguagem C
Funções e Procedimentos
Aula 10
Funções matemáticas
Fornece um conjunto de funções para 
operações matemáticas, tais como funções 
trigonométricas, hiperbólicas, logaritmos, 
potência e arredondamentos.
Todas as funções da biblioteca math.h retornam 
um valor do tipo double.
 abs: Valor absoluto de um número inteiro.
 Definida na biblioteca stdlib.h
abs(<número>);
abs(-4);
abs(4);
abs(num);
abs(num/2);
abs(-num);
Valor absoluto
 fabs: Valor absoluto de um número real.
 Definida na biblioteca math.h
fabs(<número real>);
fabs(-4.123);
fabs(4./9.);
fabs(num);
fabs(num/.2);
fabs(-num);
Valor absoluto
pow(base, expoente); // base^(expoente)
exp(num); // e^(num)
Potenciação
pow: operação de potenciação.
exp: número neperiano elevado ao argumento.
Definidas na biblioteca math.h
log(valor);
log10(valor);
log2_10 = log(10)/log(2);
Logaritmo
Definidas na biblioteca math.h
log: logaritmo natural (base neperiana).
log10: logaritmo na base 10.
sqrt(número);
Raiz quadrada
sqrt: raiz quadrada (square root). 
Definida na biblioteca math.h
sin(angulo);
cos(angulo);
tan(angulo);
Funções Trigonométricas
Definidas na biblioteca math.h
sin: seno de um ângulo.
cos: cosseno de um ângulo.
tan: tangente de um ângulo.
asin(valor);
acos(valor);
atan(valor);
Funções Trigonométricas
Definidas na biblioteca math.h
asin: arco-seno de um valor.
acos: arco-cosseno de um valor.
atan: arco-tangente de um valor.
sinh(valor);
cosh(valor);
tanh(valor);
Funções Trigonométricas Hiperbólicas
Definidas na biblioteca math.h
sinh: seno hiperbólico de um valor.
cosh: cosseno hiperbólico de um valor.
tanh: tangente hiperbólica de um valor.
Arredondamento
round: arredonda para o inteiro mais próximo.
ceil: arredonda para o menor inteiro maior 
que o número.
floor: arredonda para o maior inteiro menor 
que o número.
srand(valor inteiro);
rand();
Criar números aleatórios
 Para criar números aleatórios, pode-se utilizar as 
funções srand() e rand(), definidas na biblioteca 
stdlib.h.
 A função rand criar um número aleatório entre zero e 
RAND_MAX, definido no própria biblioteca stdlib.h.
 A função srand especifica o valor inicial (semente) do 
criador de números aleatórios.
srand(time(NULL));
num_aleat = rand() % 101;
Criar números aleatórios
 Para criar números aleatórios entre 0 e N-1, basta obter 
o resto da divisão do resultado de rand() por N.
 Para criar diferentes sequências de números a cada 
execução do programa, pode-se utilizar a hora do 
sistema como semente.
 A hora do sistema é obtida pela função time()
(definida na biblioteca time.h).
 Procedimentos – são estruturas que agrupam um 
conjunto de comandos, que são executados quando o 
procedimento é chamado.
 Funções – são procedimentos que retornam um valor ao 
seu término.
Procedimentos e Funções
Porque utilizar procedimentos e funções?
 Evitam que os blocos do programa fiquem grandes 
demais e mais difíceis de ler e entender.
 Ajudam a organizar o programa.
 Permitem reaproveitamento de códigos construídos 
anteriormente.
 Evitam repetição de trechos de códigos, minimizando 
erros e facilitando alterações.
Funções e Procedimentos
A escolha de nome de uma função obedece às 
regras apresentadas para a designação de 
variáveis.
O nome de uma função deve ser único (não 
pode ser igual ao nome de outra função.
O nome de uma função deve especificar aquilo 
que a função na realidade faz e deve ser de fácil 
leitura e interpretação. 
<tipo> nome_da_função (<tipo> arg1, <tipo> arg2, ..., 
<tipo> argN)
{
<corpo da função>
return valor_de_retorno;
}
Funções
:: Como declarar
int soma(int a, int b)
{
int c;
c = a + b;
return c;
}
Exemplo de uma função:
Funções
:: Como declarar
int soma(int a, int b)
{
int c;
c = a + b;
return c;
}
Funções
:: Como declarar
Toda função deve ter um tipo (char, 
int, float), o qual indicará o tipo de 
seu valor de retorno (saída).
Os argumentos (ou parâmetros) indicam o 
tipo e quais valores são esperados para 
serem manipulados pela função (entrada).
Corpo da função
int random()
{
srand(time(NULL));
return (rand() % 100);
}
Uma função pode não ter argumentos, basta 
não informá-los. Exemplo:
Funções
:: Como declarar
 A expressão contida no comando return é chamado 
de valor de retorno da função.
 Esse comando é sempre o último a ser executado por 
uma função. Nada após ele será executado.
 As funções só podem ser declaradas fora de outras 
funções. Lembre-se que o corpo do programa principal 
(main()) é uma função!
Funções
:: Como declarar
O código de uma função só é executado quando 
é invocada algures no programa a que está de 
algum modo ligada.
Sempre que uma função é invocada, o 
programa que o invoca é “suspenso” 
temporariamente. Em seguida são executadas 
as instruções presentes no corpo da função.
O programa que invoca uma função pode enviar 
argumentos, que são recebidos pela função.
Funções
:: Invocar
 A forma clássica de realizarmos a invocação (ou 
chamada) de uma função é atribuindo o seu valor a uma 
variável:
 Na verdade, o resultado da chamada de uma função é 
uma expressão, que pode ser utilizada em qualquer 
lugar que aceite uma expressão:
resultado = soma(x,y);
printf("Soma: %d\n", soma(a,b) ); 
Ou if(soma(a,b)>0)
Funções
:: Invocar
int x, y, resultado;
int soma(int a, int b){
return (a + b);
}
int main(){
x = 3;
y = 5;
resultado = soma(x, y);
printf("%d\n", resultado);
}
Funções
:: Invocar
Função que calcula a soma dos valores de x e y:
 As variáveis x e y no exemplo anterior são chamadas de 
parâmetros reais.
 Conforme exemplo anterior, os argumentos não 
possuem necessariamente os mesmos nomes que os 
parâmetros que a função espera.
 Seus valores são apenas copiados para a função 
chamada, sem ser afectados pelas alterações nos 
parâmetros dentro da função.
Funções
:: Invocar
Exercício
Escreva um programa que calcule a medida da 
hipotenusa de um triângulo retângulo a 
partir dos comprimentos dos respetivos 
catetos.
Explicações:
 A função hipotenusa tem dois argumentos reais. Repare 
como se definem os argumentos: para cada um deles é 
preciso indicar o seu tipo, separadamente.
 Dentro da função main definem-se duas variáveis. A 
forma de definir variáveis é um pouco diferente da forma 
de definir argumentos e já se permite indicar o tipo apenas 
uma vez.
 A segunda diretiva include permite que este programa 
tenha acesso às funções da biblioteca matemática do 
C, uma biblioteca chamada math. O nosso programa 
precisa de usar a função sqrt(squareroot).
O tipo void
É utilizado em procedimentos.
É um tipo que representa o “nada”, ou seja:
 uma variável desse tipo armazena conteúdo 
indeterminado, 
 uma função desse tipo retorna um conteúdo 
indeterminado.
Indica que uma função não retorna nenhum 
valor, ou seja, é um procedimento.
void nome_do_procedimento (<tipo> parâmetro1, 
<tipo> parâmetro2, ..., <tipo> parâmetroN)
{
<corpo do procedimento>
}
Procedimentos
:: Como declarar
void calcula_dobro(int x) 
{
printf("Dobro de x: %d", 2*x);
}
Exemplo de procedimento:
Procedimentos
:: Como declarar
 Para invocarmos um procedimento, devemos utilizá-lo 
como qualquer outro comando:
 Verifique a diferença da invocação de uma função:
procedimento(parâmetros);
resultado = função(parâmetros);
Procedimentos
:: Invocar
Exercício
 Crie uma função que receba um valor diferente 
de 0 e informe se ele é positivo ou não. Escreva 
um programa de teste da função.
 É uma função especial invocada automaticamente pelo 
sistema operativo (SO) ao iniciar o programa.
Quando utilizado, o comando return informa o SO que 
programa funcionou corretamente ou não. 
 Por defeito uma função devolve:
 = zero – caso tenha funcionado corretamente ,
 ≠ zero – caso contrário.
A função main()
 Funções e procedimentos podem ser definidosantes ou 
depois da função main().
 Em ambos os casos, as funções e/ou procedimentos 
devem ser declarados antes da função main().
O conjunto de comandos que constituem uma função ou 
procedimento pode ser definido em qualquer lugar do 
programa. 
Declaração de funções e procedimentos 
sem defini-los
<tipo> nome (<tipo> parâmetro1, <tipo> 
parâmetro2, ..., <tipo> parâmetroN);
 Para declarar uma função sem defini-la (especificar seu 
código), substituímos as chaves e seu conteúdo por 
ponto-e-vírgula.
Declaração de funções e procedimentos
sem defini-los
A declaração da função também é chamado de 
Protótipo da função
 Uma variável é chamada local quando é declarada 
dentro de uma função. Nesse caso:
 Ela existe apenas dentro da função que a contém.
 Após o término da execução da função, ela deixa de existir.
 Uma variável é chamada global quando é declarada fora 
de qualquer função. Nesse caso:
 Pode ser acedida em qualquer parte do programa.
 Ela existe durante toda a execução do programa.
Variáveis locais e globais
Boa prática de programação:
 Deve-se evitar a utilização de variáveis globais.
 As funções devem modificar apenas as suas variáveis 
locais e as variáveis passadas a elas como 
parâmetros.
Variáveis locais e globais
O escopo de uma variável determina de que partes do
código a variável pode ser acedida.
 A regra de escopo em C é simples:
 As variáveis globais são visíveis por todas as funções.
 As variáveis locais são visíveis apenas na função onde foram 
declaradas.
Escopo de variáveis
int nota;
void funcao() 
{
int nota;
// Neste ponto, nota é variável local.
}
Escopo de variáveis
É possível declarar variáveis locais com o 
mesmo nome de variáveis globais.
Nesta situação, a variável local “Cobre” a 
variável global.
Questões

Outros materiais