Buscar

20171017 Slide LinguagemCModularizaaoEstruturaseArquivos

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

Aula 7
LINGUAGEM C – PARTE III
23/10/2016 DIEGOQUIRINO@GMAIL.COM 1
Agenda
1. Estruturas Básicas (typedef) e Estruturas de Registro (struct)
2. Modularização em C (passagem por valor e referência)
3. Ponteiros de Arquivos
23/10/2016 DIEGOQUIRINO@GMAIL.COM 2
Estruturas
NA LINGUAGEM C
23/10/2016 DIEGOQUIRINO@GMAIL.COM 3
Struct
1. Um registro (= record) é um pacote de variáveis, 
possivelmente de tipos diferentes. 
2. Cada variável é um campo do registro. 
3. Na linguagem C, registros são conhecidos como structs (o 
nome é uma abreviatura de structure)
23/10/2016 DIEGOQUIRINO@GMAIL.COM 4
Sintaxe:
struct dma { 
int dia;
int mês;
int ano;
};
Uso:
struct dma niver;
niver.dia = 1;
niver.mes = 2;
niver.ano = 1999;
Printf(“%2d / %2d / %4d”, niver.dia, 
niver.mes, niver.ano);
Struct e Ponteiro
1. Podemos usar ponteiros para estruturas!
23/10/2016 DIEGOQUIRINO@GMAIL.COM 5
Sintaxe:
struct dma { 
int dia;
int mês;
int ano;
};
Uso:
struct dma niver;
struct dma *pNiver;
pNiver = niver; //malloc(1*sizeof(struct dma*))
*pNiver.dia = 1;
*pNiver.mes = 2;
*pNiver.ano = 1999;
Printf(“%2d / %2d / %4d”, *pNiver.dia, 
*pNiver.mes, *pNiver.ano);
OBS: se há 
ponteiro, há como 
fazer alocação 
dinâmica de 
memória!
Não irá funcionar!
Pois o operador . (ponto) 
é precedente sobre o * 
(desreferenciação)
Struct e Ponteiro
1. A sintaxe “seta”  serve para resumir o “apontamento” para 
uma estrutura.
23/10/2016 DIEGOQUIRINO@GMAIL.COM 6
Sintaxe:
struct dma { 
int dia;
int mês;
int ano;
};
Uso:
struct dma niver;
struct dma *pNiver;
pNiver = niver; //malloc(1*sizeof(struct dma*))
(*pNiver).dia = 1;
pNivermes = 2;
(*pNiver).ano = 1999;
Printf(“%2d / %2d / %4d”, pNiverdia, 
pNivermes, pNiverano);
OBS: se há 
ponteiro, há como 
fazer alocação 
dinâmica de 
memória!
Agora vai funcionar! O 
operador seta  resume a 
notação com parênteses!
Typedef
1. Faz a definição de um novo tipo de dados nomeado pelo 
programador da linguagem C.
2. Podemos criar, por exemplo, um novo tipo de dados para 
representar a data (nossa estrutura criada em slides 
anteriores).
23/10/2016 DIEGOQUIRINO@GMAIL.COM 7
Sintaxe:
struct dma { 
...
};
typedef struct dma Data;
Uso:
Data niver;
Data *pNiver;
...
Modularização
NA LINGUAGEM C
23/10/2016 DIEGOQUIRINO@GMAIL.COM 8
Conceito -
Modularização
- Lógica 
Complexa;
- Difícil 
compreensão;
- Muitas partes 
envolvidas.
- Lógica 
simples;
- Fácil 
compreensão;
- Poucas partes 
envolvidas.
P
ro
b
le
m
a
 G
ra
n
d
e
P
ro
b
le
m
a
s M
e
n
o
re
s
9
Vantagens da 
Modularização
1. Redução da complexidade: 
◦ Pequeno número de variáveis;
◦ Redução dos caminhos de controle das funcionalidades.
2. Reusabilidade: 
◦ Evita repetições e eventuais inconsistências;
◦ Soluciona uma única vez o problema.
3. Delimitação de escopo do problema:
4. Manutenção facilitada.
10
Módulos ou 
Subalgoritmos
11
Problema Grande
(monolítico)
Decomposição
Principal
Módulo (A)
Módulo (B)
Módulo (C)
Módulo (N)
Módulo (...)
Tipos:
1) Procedimentos
2) Funções
Funções
1. São a expressão de funcionalidades num sistema, cujo objetivo 
principal é a criação/modificação de resultados e valores 
para o negócio.
12
Exemplo 02:
int calcularMedia ( int n1, int n2) {
return ( n1 +n2 ) / 2;
}
Passagem “por Valor”
1. Acontece quando os parâmetros da função são passados 
por novas variáveis que copiam o valor originalmente 
passado.
2. Exemplo:
23/10/2016 DIEGOQUIRINO@GMAIL.COM 13
void funcaoSemPonteiro(int num); //protótipo
int main() {
int num = 100;
funcaoSemPonteiro(num);
printf("NUM na função main após execução função 
sem ponteiro: %d\n", num); // Será exibido 100
}
void funcaoSemPonteiro(int num) {
num = 10;
}
Não há ponteiro
Passagem “por 
Referência”
1. Acontece quando os parâmetros da função são passados 
por ponteiros que referenciam o valor originalmente 
passado.
2. Exemplo:
23/10/2016 DIEGOQUIRINO@GMAIL.COM 14
void funcaoComPonteiro(int *num); //protótipo
int main() {
int num = 100;
funcaoComPonteiro(&num);
printf("NUM na função main após execução função 
sem ponteiro: %d\n", num); //Agora, Será exibido 10!
}
void funcaoComPonteiro(int *num) {
*num = 10;
}
Há ponteiro
Manipulação 
de Arquivos
PONTEIROS DE ARQUIVOS NA 
LINGUAGEM C
23/10/2016 DIEGOQUIRINO@GMAIL.COM 15
Arquivos
1. Arquivos são utilizados para manipular dados, de forma que 
você possa salvar e resgatar informações dentro do 
computador, de forma persistente.
2. Após a execução, os dados nas variáveis (memórias) serão 
apagados (volátil) ao final da execução do programa. 
3. Dada a grande importância do uso de informação persistente, 
utilizaremos 2 abordagens simples de leitura e uma de 
gravação em arquivos (utilizaremos ponteiros)
23/10/2016 DIEGOQUIRINO@GMAIL.COM 16
Escrevendo e Alterando 
um Arquivo
Exemplo 01:
FILE *file;
int i;
file = fopen("numero.txt","w");
for(i = 0; i<10; i++) {
fprintf(file, "%d\n", i);
}
fclose(file);
23/10/2016 DIEGOQUIRINO@GMAIL.COM 17
Nome do arquivo
Ponteiro para o arquivo
Função utilizada para escrever no arquivo
Modo: w = escrita
r = leitura
a = alteração
Após usar o arquivo, devemos fechá-lo.
Leitura de Arquivos (fgets)
23/10/2016 DIEGOQUIRINO@GMAIL.COM 18
Exemplo 02:
FILE *file;
char linha[100];
file = fopen("numero.txt",“r");
while(fgets(linha, 100, file)!=NULL) {
printf("%s\n", linha);
}
fclose(file);
Nome do arquivo
Ponteiro para o arquivo
Função utilizada para ler linha
a linha do arquivo
Modo: w = escrita
r = leitura
a = alteração
Após usar o arquivo, devemos fechá-lo.
Leitura de Arquivos 
(getc)
23/10/2016 DIEGOQUIRINO@GMAIL.COM 19
Exemplo 02:
FILE *file;
int i=0; char letra[100];
file = fopen("numero.txt",“r");
while((letra[i]=getc(file))!=EOF) {
printf("%c\n", letra);
}
fclose(file);
Nome do arquivo
Ponteiro para o arquivo
Função utilizada para ler 
caractere a caractere o arquivo, 
até encontrar o EOF – end of
file (fim de arquivo)
Modo: w = escrita
r = leitura
a = alteração
Após usar o arquivo, devemos fechá-lo.
Vamos ao 
CodeBlocks
PRATICAR OS CONCEITOS APRENDIDOS 
NESTA AULA
23/10/2016 DIEGOQUIRINO@GMAIL.COM 20
O que 
aprendemos?
REVISÃO GERAL DO CONTEÚDO 
APRESENTADO
23/10/2016 DIEGOQUIRINO@GMAIL.COM 21
Agora é a sua 
vez!
ATIVIDADE PRÁTICA E EXERCÍCIOS
23/10/2016 DIEGOQUIRINO@GMAIL.COM 22
Bibliografia 
Complementar
1. GRIFFITHS, Dawn; 
GRIFFITHS, David. 
Use a Cabeça: C. 1ª 
ed. São Paulo: Alta 
Books, 2013.
2. DEITEL, H.; DEITEL, P. 
C – Como 
Programar. 6ª Ed. 
São Paulo: Pearson 
Education, 2011
3. University of Rhode
Island. Site: 
http://www.urionlineju
dge.com.br
23/10/2016 DIEGOQUIRINO@GMAIL.COM 23

Continue navegando