Buscar

Aula - 06 - Escopo de variáveis e Funções_2015.1

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

Introdução à Linguagem de 
Programação 
Prof. George Candeia 
Ciência da Computação 
Funções 
Uma função, em C, é uma sub-rotina que executa suas instruções 
dentro de um bloco de código. 
Por quê utilizar funções em C? 
• É uma linguagem orientada a funções; 
• Ajuda na organização, legibilidade e estruturação do código; 
• Serve para dividir grandes tarefas em pequenas tarefas; 
• Reduz o código, já que esse mesmo bloco de código pode ser 
utilizado várias vezes; 
• Um programa bem organizado e estruturado, em C, utiliza a 
função main() como um gerenciador de várias outras funções. 
 3 
Funções 
Introdução 
 
Exemplo de uso de funções: 
4 
Funções 
Introdução 
 
main() 
 instruções; 
 função1(); 
 instruções; 
 função2(); 
return; 
função1() 
 instruções; 
 função3(); 
 instruções; 
return; 
função2() 
 instruções; 
 função3(); 
return; 
função3() 
 instruções; 
 instruções; 
return; 
tipo_retorno nome_função(lista de parâmetros) 
{ 
 corpo da função 
} 
tipo_retorno: especifica o tipo de dado que será retornado pelo 
comando return. Caso não seja especificado nenhum tipo, o 
compilador retorna um inteiro! 
lista de parâmetros: lista com tipos e nomes de variáveis 
separados por vírgula. Pode ser vazia mas, ainda assim, os 
parênteses são necessários. 
5 
Funções 
sintaxe 
 
/* Uma função para somar três números inteiros */ 
6 
Funções 
exemplo 
 
/* A mesma função otimizada */ 
7 
Funções 
exemplo 
 
/* Exemplo de uso */ 
8 
Funções 
exemplo 
 
/* Uma função para saber se um número é ímpar */ 
9 
Funções 
exemplo 
 
/* Exemplo de uso */ 
10 
Funções 
exemplo 
 
As variáveis possuem um escopo, ou seja, elas deixam de existir 
quando estão fora do seu escopo. 
Variáveis Locais 
São variáveis que são declaradas dentro de uma função ou bloco 
de código. Uma variável local é criada a partir do momento em 
que é declarada e é destruída quando a execução do seu bloco 
de código termina. Lembrando que um bloco de código começa 
com { e termina com }. 
11 
Escopo de variáveis 
Introdução 
 
Exemplo: 
12 
Escopo de variáveis 
Variáveis Locais 
 
Exemplo: 
13 
Escopo de variáveis 
Variáveis Locais 
 
Exemplo: 
14 
Escopo de variáveis 
Variáveis Locais 
 
São variáveis que são declaradas no início do código, fora de 
qualquer função ou bloco de código e são reconhecidas pelo 
programa inteiro, podendo ser usadas por qualquer parte do 
código. 
15 
Escopo de variáveis 
Variáveis Globais 
 
São variáveis que são declaradas na definição dos parâmetros 
das funções. Após a declaração, elas pertencem ao escopo da 
função, ou seja, são variáveis locais da função. 
16 
Escopo de variáveis 
Parâmetros Formais 
 
A linguagem C possui dois modificadores de tipo de acesso que 
alteram a forma como as variáveis são acessadas ou modificadas. 
 
Esses modificadores são const e volatile e devem preceder os 
tipos que eles modificam. 
17 
Escopo de variáveis 
Modificadores de tipo de acesso 
 
As variáveis const não podem ser alteradas por seu programa, 
mas podem ser inicializadas. 
O modificador const pode ainda ser utilizado para proteger um 
objeto apontado por um argumento de uma função. Utilizando o 
const, mesmo que a variável seja passada por referência, a 
função não poderá alterar o valor contido naquele endereço de 
memória. 
18 
Escopo de variáveis 
const 
 
19 
Escopo de variáveis 
const 
 
Exemplo: 
20 
Escopo de variáveis 
const 
 
Dessa forma não compila!!! Não é possível alterar a string! 
21 
Escopo de variáveis 
const 
 
O modificador volatile é utilizado quando desejamos informar 
ao compilador que uma variável pode ter o seu valor alterado de 
forma não explícita. 
Durante a compilação, o compilador pode otimizar o código e 
achar que uma variável não é mais modificada em um 
determinado trecho de código, deixando de examina-la, porém, 
ela pode estar sendo alterada sem nenhum comando de 
atribuição que esteja explícito no programa, gerando assim um 
erro de programação. 
Um comando volatile faz com que o compilador sempre examine 
o valor dessa variável toda vez que ela for referenciada no 
código. 22 
Escopo de variáveis 
volatile 
 
Antes da otimização: Depois da otimização: 
 
23 
Escopo de variáveis 
volatile 
 
A passagem de variáveis como parâmetros de uma função pode 
ser feita de duas formas: 
 
• Passagem por valor; 
 
• Passagem por referência; 
24 
Funções 
Passagem de parâmetros 
 
Quando realizamos uma passagem de variável por valor, 
somente o valor da variável é passada como parâmetro da 
função. Dessa forma, o valor da variável original é mantido. 
 
Mesmo que a função faça modificações na variável recebida 
como parâmetro, o valor da variável original é mantido. 
 
Isto ocorre porque as modificações feitas dentro da função 
afetam apenas as variáveis que pertencem ao escopo da função. 
 
25 
Funções 
Passagem por valor 
 
Exemplo: 
26 
Funções 
Passagem por valor 
 
Saída: 
27 
Funções 
Passagem por valor 
 
Quando realizamos uma passagem de variável por referência, o 
endereço da variável é passada como parâmetro da função. 
Dessa forma, o valor da variável original pode ser alterado. 
 
Para isso, o parâmetro da função deve ser um ponteiro para o 
tipo de dado que será passado. 
 
Com o endereço da variável original, a função pode fazer 
modificações no valor que está armazenado nesse endereço de 
memória. 
 
28 
Funções 
Passagem por referência 
 
Exemplo: 
29 
Funções 
Passagem por referência 
 
Saída: 
30 
Funções 
Passagem por referência 
 
Um protótipo ou assinatura de uma função, é 
uma declaração que omite todo o corpo da 
função. Essa declaração deve vir no início do 
código e cada assinatura deve terminar com um 
ponto e vírgula. 
Os protótipos passam para o compilador 
informações sobre a função, o tipo de retorno e 
os argumentos. 
 
31 
Funções 
Protótipos 
 
Exemplo: 
 
32 
Funções 
Protótipos 
 
 
Para passar uma matriz, só é possível utilizando 
a passagem por referência. Isto se explica 
porque o próprio nome da variável matriz 
aponta para a sua primeira posição, ou seja, um 
endereço de memória. 
 
33 
Funções 
Passando matrizes como parâmetros 
 
A passagem de matrizes estáticas como parâmetro de uma 
função pode ser feita de três formas para matrizes 
unidimensionais: 
 
• Especificando sua dimensão; 
• Sem especificar sua dimensão; 
• Passando como um ponteiro. 
 
Para matrizes com mais de uma dimensão, somente as duas 
primeiras formas são válidas! 
34 
Funções 
Passando matrizes como parâmetros 
 
Declarando sua dimensão: 
 
35 
Funções 
Para matrizes unidimensionais 
 
Cuidado! Se o tamanho passado 
for maior que o declarado na 
função, irá invadir memória!!! 
Sem declarar sua dimensão: 
 
36 
Funções 
Para matrizes unidimensionais 
 
Passando como ponteiro: 
 
37 
Funções 
Para matrizes unidimensionais 
 
Declarando sua dimensão: 
 
38 
Funções 
Para mais de uma dimensão 
 
Sem declarar sua dimensão: 
 
39 
Funções 
Para mais de uma dimensão 
 
Uma recursividade é quando, em uma rotina, 
existe uma chamada à essa mesma rotina, ou 
seja, uma rotina chamando a si mesma. 
 
Devemos ter bastante cuidado com 
recursividade, pois esse tipo de procedimentopode gerar uma laço de repetição infinito! 
 
40 
Funções 
Recursividade 
 
Exemplo de laço infinito com recursividade: 
 
41 
Funções 
Recursividade 
 
Para evitar laços infinitos, devemos estabelecer 
uma condição de parada para a recursividade ou 
fazer com que a recursividade acabe 
automaticamente após algumas repetições. 
42 
Funções 
Recursividade 
 
Exemplo: 
Para calcular o fatorial de um número: 
6! = 6*5*4*3*2*1 
6! = 6*5! 
X! = X*(X-1)! 
 
Como seria uma função para calcular o fatorial de um número, 
utilizando recursividade? 
43 
Funções 
Recursividade 
 
44 
Funções 
Recursividade 
 
Cuidado com o uso: 
45 
Funções 
Recursividade 
 
Exemplo: 
Para calcular uma base x elevada a um expoente y: 
46 
Funções 
Recursividade

Outros materiais