Buscar

Aula Funções Parte II

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

FUNÇÕES
PARTE II
Profa. Roberta Barbosa Oliveira
GES009
1° Semestre - 2018
Curso de Bacharelado em Estatística
DIVISÃO DO PROJETO EM ARQUIVOS
● Um projeto quando se torna muito extenso, pode ser dividido em 
vários arquivos com o objetivo de fragmentar o código:
- Novos arquivos .c podem ser criados e cada novo arquivo pode conter 
uma ou mais funções
- Neste caso, o arquivo principal do projeto (main.c) pode conter apenas a 
função main( )
- A “ligação” entre o arquivo main.c e outro arquivo .c é por meio de um 
arquivo cabeçalho ou header (.h)
DIVISÃO DO PROJETO EM ARQUIVOS
● Adicionar arquivo ao projeto em edição (Code::Blocks):
● File -> New -> File... -> opção “C/C++ header” para arquivo cabeçalho .h 
ou “C/C++ source” para função .c
● Em ambos os casos, a caixa “Add file to active Project” deve ser estar 
selecionada
ARQUIVO CABEÇALHO
● Intermediador entre o programa e as funções
● A associação é feita através do comando #include:
– Biblioteca padrão da linguagem C: 
#include <nome.h>
– Bibliotecas criadas no projeto: 
#include “nome.h” (mesmo diretório de main.c)
#include “caminho\nome.h” (diretório diferente - em linux, 
usa-se barra normal(/) ao invés da barra invertida
● No arquivo cabeçalho, são colocados os protótipos das funções criadas, 
que serão detalhadas na função correspondente:
– O arquivo cabeçalho .h deve ter o mesmo nome da função .c
ARQUIVO CABEÇALHO
● Exemplo: 
– par_impar.h: declaração do protótipo de uma função que 
será usada no programa principal (main.c)
Se mais de um .c incluir par_impar.h, estas 
linhas definindo a constante 
PAR_IMPAR_H_INCLUDED (“guard word”) 
impedirão que ocorra erro (quando a função 
Par_Impar for declarada 2 vezes).
ARQUIVO CABEÇALHO
● Exemplo: 
– par_impar.c: função associada a par_impar.h, que contém 
a implementação da função Par_Impar ( ) 
ARQUIVO CABEÇALHO
● Exemplo: 
– main.c: para usar a função Par_Impar ( ) 
FUNÇÕES: VETORES E MATRIZES
● A linguagem C não permite que vetores e matrizes sejam 
passados na íntegra como parâmetros para uma função:
– Deve se passar apenas o endereço da posição inicial do vetor ou da 
matriz
– Esse endereço é obtido pela função utilizando-se o nome do vetor (ou 
da matriz) sem o índice entre colchetes 
● Vetores e matrizes são passados sempre por referência
– Evita-se cópia desnecessária de grandes quantidades de dados na 
RAM (que pode causar diminuição de desempenho na execução do 
programa) 
VETOR COMO PARÂMETRO 
DE FUNÇÃO
● A função pode ser declarada de diferentes maneiras, todas 
equivalentes:
void nome_funcao (int v[]);
void nome_funcao (int *v);
void nome_funcao (int v[], int n);
void nome_funcao (int *v, int n);
● Pode ser necessário enviar à função um parâmetro inteiro extra, 
informando à mesma o tamanho do vetor
VETOR COMO PARÂMETRO 
DE FUNÇÃO
● Exemplo:
void mostrar (int v[], int n)
{
for (int i=0;i<n;i++)
printf(“%d\n”, v[i]);
}
int main()
{
int vet[] = {1,2,3,4,5};
mostrar(vet,5);
return 0;
}
VETOR COMO PARÂMETRO 
DE FUNÇÃO
● Exemplo:
int *v poderia ter sido usado 
ao invés de int v[] 
Quando o nome de um vetor for usado sem 
apresentar colchetes contendo um índice: 
está sendo usado o endereço de memória 
ocupada pelo posição 0 do vetor
void mostrar (int v[], int n)
{
for (int i=0;i<n;i++)
printf(“%d\n”, v[i]);
}
int main()
{
int vet[] = {1,2,3,4,5};
mostrar(vet,5);
return 0;
}
VETOR COMO PARÂMETRO 
DE FUNÇÃO
● Exercício: Crie uma função que preencha o vetor notas, que deve 
ser criado na função principal e passado como parâmetro da 
função.
int main()
{
float notas[5];
for (int i=0;i<5;i++)
{
printf(“Digite a nota do aluno %d:\n”,i+1);
scanf(“%f”, &notas[i]);
}
return 0;
}
VETOR COMO PARÂMETRO 
DE FUNÇÃO
void preecherVetor (float v[])
{
for (int i=0;i<5;i++)
{
printf(“Digite a nota do aluno %d:\n”,i+1);
scanf(“%f”, &v[i]);
}
}
int main()
{
float notas[5];
preecherVetor(notas);
return 0;
}
MATRIZ COMO PARÂMETRO 
DE FUNÇÃO
● Para matrizes é necessário especificar o tamanho da segunda 
dimensão:
void nome_funcao(int m[][2]);
void nome_funcao(int m[][2], int n);
● Motivo: compilador não precisa saber quantos elementos o 
vetor possui, mas o tamanho de cada elemento:
– Vetor 1D: cada elemento possui tamanho 1
– Vetor 2D (matriz): array de arrays – quantos elementos tem cada um 
destes arrays?
MATRIZ COMO PARÂMETRO 
DE FUNÇÃO
● Exemplo:
void mostrar (int m[][2], int n)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<2;j++)
printf(“%d ”, m[i][j]);
printf(“\n”);
}
}
int main()
{
int mat[3][2] = {{1,2},{3,4},{5,6}};
mostrar(mat,3);
return 0;
}
MATRIZ COMO PARÂMETRO 
DE FUNÇÃO
● Exemplo:
Quando o nome de uma matriz for usado sem 
apresentar colchetes contendo os índices: 
está sendo usado o endereço de memória 
ocupada pelo posição 0x0 da matriz
void mostrar (int m[][2], int n)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<2;j++)
printf(“%d ”, m[i][j]);
printf(“\n”);
}
}
int main()
{
int mat[3][2] = {{1,2},{3,4},{5,6}};
mostrar(mat,3);
return 0;
}
MATRIZ COMO PARÂMETRO 
DE FUNÇÃO
● Exercício: Crie uma função que preencha a matriz notas, que deve ser 
criada na função principal e passada como parâmetro da função.
int main()
{
float notas[5][2];
for (int i=0;i<5;i++)
{
printf(“Digite as notas do aluno %d:\n”,i+1);
for (int j=0;j<2;i++)
scanf(“%f”, &notas[i][j]);
printf(“\n”);
}
return 0;
}
MATRIZ COMO PARÂMETRO 
DE FUNÇÃO
void preecherMatriz (float m[][2])
{
for (int i=0;i<5;i++)
{
printf(“Digite as notas do aluno %d:\n”,i+1);
for (int j=0;j<2;j++)
scanf(“%f”, &m[i][j]);
printf(“\n”);
}
}
int main()
{
float notas[5][2];
preecherMatriz(notas);
return 0;
}
EXERCÍCIOS
1) Faça uma função que receba como parâmetro um vetor V com cinco 
número reais e retorne esses números ordenados de forma crescente.
2) Faça uma função que receba como parâmetro uma matriz M(5,5) e 
retorne a soma de seus elementos.
3) Crie uma uma função que receba como parâmetro uma matriz M(6,6) e 
retorne o menor elemento de uma diagonal secundária. 
4) Crie uma função que receba uma matriz 3x5 e um vetor com 3 posições, 
que retorná o somatório dos números de cada linha da matriz. A seguir, 
crie um programa que leia as entradas da matriz, atribua zero em todas 
as posições do vetor, chame a função e mostre o vetor resultante.
BIBLIOGRAFIA UTILIZADA
● ASCENCIO, A.F.G.; CAMPOS, E.A.V. Fundamentos da 
programação de computadores. 3. ed. São Paulo: Pearson 
Prentice Hall, 2006.
● PIMENTEL, Renato. Notas de aula de algoritmos e programação 
de computadores.
● REIS, Rachel. Notas de aula de Programação.
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20

Outros materiais