Buscar

20171017 Slide LinguagemCArraysStringsePonteiros

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 19 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 19 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 19 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 6
LINGUAGEM C – PARTE II
23/10/2016 DIEGOQUIRINO@GMAIL.COM 1
Agenda
1. Trabalhando com Arrays (Vetores), Strings e Matrizes
2. Ponteiros na Linguagem C
23/10/2016 DIEGOQUIRINO@GMAIL.COM 2
Arrays (vetores)
NA LINGUAGEM C
23/10/2016 DIEGOQUIRINO@GMAIL.COM 3
Definição
Um array é um conjunto de 
espaços de memória que se 
relacionam pelo fato de que todos 
têm o mesmo nome o mesmo tipo.
Sintaxe:
nomeDoArray[número da posição]
23/10/2016 DIEGOQUIRINO@GMAIL.COM 4
Forma Gráfica
Declaração em C:
◦ int Notas[6];
23/10/2016 DIEGOQUIRINO@GMAIL.COM 5
Nome [índice] Valor na Memória
Notas[0] -1
Notas[1] -45
Notas[2] 0
Notas[3] 100
Notas[4] 1520
Notas[5] -2510
OBS: A linguagem C 
não se responsabiliza 
pelo “lixo” que existe 
na memória no 
momento da criação 
de variáveis
Inicializando Arrays
#include <stdio.h>
int main() {
int i, notas[5];
/*Inicializa elementos do array notas como 0*/
for (i=0; i<5; i++) {
notas[i] = 0; /*Define elemento no local i com
o valor 0 (zero)*/
}
return 0;
}
23/10/2016 DIEGOQUIRINO@GMAIL.COM 6
Strings
1. Inicialização de arrays de caracteres (strings):
◦ char nome[ ] = “Casas”;
◦ char nome[ ] = {‘C’, ‘a’, ‘s’, ‘a’, ‘s’, ‘\0’};
◦ char nome[6];
◦ /*Cria um array de caracteres capaz de armazenar uma string de no 
máximo 5 caracteres e um caractere nulo de finalização.*/
2. Finalização do array de caracteres (caractere nulo: ‘\0’)
23/10/2016 DIEGOQUIRINO@GMAIL.COM 7
Manipulação de Strings
1. Leitura de uma String a partir da função scanf:
◦ scanf(“%s”, nome); /*o identificador ‘nome’ é o próprio 
endereço inicial do vetor, por isso não é necessário 
informar o endereço de nome através do operador de 
endereços ‘&’ (e-comercial) */
2. Observação: a linguagem C não se responsabiliza pela 
entrada do usuário. Portanto, utilize uma máscara que 
evite que C escreva na memória além do tamanho do 
seu array de caracteres, através da função scanf:
◦ Scanf(“%5s”, nome);
23/10/2016 DIEGOQUIRINO@GMAIL.COM 8
Matrizes
Quando criamos vetores, podemos utilizar mais de uma 
dimensão para representar os seus elementos:
23/10/2016 DIEGOQUIRINO@GMAIL.COM 9
Declaração em C:
◦ int Notas[6][3];
0 1 2
0 -1 0 1
1 0 -1 0
2 1 1 -1
3 -2 3 5
4 3 -2 3
5 5 5 -2
Notas[1][4]
Ponteiros
NA LINGUAGEM C
23/10/2016 DIEGOQUIRINO@GMAIL.COM 10
Definição
Ponteiros são variáveis cujos valores 
são endereços de memória.
Sintaxe:
int *notaPtr, nota;
23/10/2016 DIEGOQUIRINO@GMAIL.COM 11
10
10
nota
(referencia diretamente)
notaPtr
(referencia indiretamente)Operador de indireção ou
de desreferenciação
Operador de 
Endereço(&)
1. Definição: É um operador unário que retorna o endereço de 
seu operando. Símbolo: & (e-comercial)
23/10/2016 DIEGOQUIRINO@GMAIL.COM 12
10500
nota
(Endereço: 500)
notaPtr
(Endereço: 250)
...
int nota;
int *notaPtr;
nota = 10;
notaPtr = &nota; /*Valor = endereço*/
Como eu vou “ver” o 
valor de um ponteiro?
1. Resposta: utilizando o operador de indireção (ou de 
desreferenciação). Símbolo: * (asterisco)
23/10/2016 DIEGOQUIRINO@GMAIL.COM 13
10500
nota
(Endereço: 500)
notaPtr
(Endereço: 250)
...
int nota;
int *notaPtr;
nota = 10;
notaPtr = &nota; 
printf(“%d”, *nota); /* 10 */
Ponteiros de Strings
Como já vimos, uma string (ou cadeia de caracteres) na 
linguagem C é um vetor de caracteres em que o caractere 
nulo (‘\0’) é interpretado como fim da parte relevante do vetor:
23/10/2016 DIEGOQUIRINO@GMAIL.COM 14
char *nome;
nome = (char *) malloc(6*sizeof(char));
nome[0] = ‘C’;
nome[1] = ‘a’;
nome[2] = ‘s’;
nome[3] = ‘a’;
nome[4] = ‘s’;
nome[5] = ‘\0’;
free(nome);
nome = NULL; /*Liberação da 
memória*/
C
500
???
(Endereço: 500) até 505
nome
(Endereço: 250)
a s a s /0
Você pode usar uma
variável para tornar
dinâmica a alocação
de memória...
Leitura de dados para 
ponteiros
Já que o ponteiro é o próprio endereço, na hora de usar um 
ponteiro na função scanf nós não precisamos utilizar o 
operador de endereço:
23/10/2016 DIEGOQUIRINO@GMAIL.COM 15
char *nome;
nome = (char *) malloc(6*sizeof(char));
scanf(“%5s”,nome);
free(nome);
nome = NULL;
Vamos ao 
CodeBlocks
PRATICAR OS CONCEITOS APRENDIDOS
ALGORITMO DA SOMA
23/10/2016 DIEGOQUIRINO@GMAIL.COM 16
O que 
aprendemos?
REVISÃO GERAL DO CONTEÚDO 
APRESENTADO
23/10/2016 DIEGOQUIRINO@GMAIL.COM 17
Agora é a sua 
vez!
ATIVIDADE PRÁTICA E EXERCÍCIOS
23/10/2016 DIEGOQUIRINO@GMAIL.COM 18
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 19

Outros materiais