Baixe o app para aproveitar ainda mais
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 = ¬a; /*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 = ¬a; 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
Compartilhar