Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Algoritmos Vetores e Strings Guilherme Meira Agenda 1. Introdução 2. Vetores 3. Strings 4. Exercícios 5. Apêndice IntroduçãoExemplo Escreva um programa que leia 5 números pelo teclado e imprima a sequência em ordem inversa. IntroduçãoExemplo #include <stdio.h> int main() { int n1, n2, n3, n4, n5; printf("Digite o 1o numero:\n"); scanf("%d", &n1); printf("Digite o 2o numero:\n"); scanf("%d", &n2); printf("Digite o 3o numero:\n"); scanf("%d", &n3); printf("Digite o 4o numero:\n"); scanf("%d", &n4); printf("Digite o 5o numero:\n"); scanf("%d", &n5); printf("%d %d %d %d %d\n", n5, n4, n3, n2, n1); return 0; } IntroduçãoExemplo IntroduçãoExemplo IntroduçãoExemplo Agenda 1. Introdução 2. Vetores 3. Strings 4. Exercícios 5. Apêndice Vetores Até agora, nossas variáveis só podiam armazenar um valor: num 7 Vetores Vetores são envelopes que guardam vários valores: num 7 9 5 1 0 Vetores Precisamos numerar as folhas dentro de cada envelope. Poderíamos fazer assim: num 7 9 5 1 0 [1] [2] [3] [4] [5] Vetores Vetores Em C, a numeração começa a partir do zero. Assim, um envelope com 5 folhas vai da folha 0 até a folha 4: num 7 9 5 1 0 [0] [1] [2] [3] [4] Vetores Ao declararmos um vetor, precisamos dizer quantos elementos cabem dentro dele: int numeros[5]; Vetores Depois, podemos utilizá-lo como qualquer outra variável, lembrando sempre de indicar a posição que queremos acessar: numeros[2] = 1; Qual posição estamos acessando? Vetores Depois, podemos utilizá-lo como qualquer outra variável, lembrando sempre de indicar a posição que queremos acessar: numeros[2] = 1; Qual posição estamos acessando? VetoresVoltando ao exemplo... Escreva um programa que leia 5 números pelo teclado e imprima a sequência em ordem inversa. VetoresVoltando ao exemplo... #include <stdio.h> int main() { int numeros[5]; int i; for(i = 0; i < 5; i++) { printf("Digite o %do numero:\n",i+1); scanf("%d", &numeros[i]); } for(i = 4; i >= 0; i--) { printf("%d ", numeros[i]); } printf("\n"); return 0; } VetoresInicializando um vetor Vimos que podemos atribuir um valor inicial a uma variável no momento da declaração: int a = 23; Podemos fazer o mesmo com vetores: int nums[] = {5, 4, 3, 2, 1}; Aqui, nem precisamos dizer o tamanho do vetor. VetoresParâmetros de função Podemos passar vetores como parâmetros de função: #include <stdio.h> int soma_tudo(int numeros[], int tamanho) { int soma = 0; int i; for(i = 0; i < tamanho; i++) { soma = soma + numeros[i]; } return soma; } VetoresParâmetros de função int main() { int n[] = {2, 4, 6, 8, 10}; int soma = soma_tudo(n, 5); printf("Soma = %d\n", soma); return 0; } Vetores Vetores Quando passamos uma variável comum para uma função, estamos passando uma cópia dela: #include <stdio.h> void dobra(int a) { a = a*2; } int main() { int valor = 10; dobra(valor); printf("Valor = %d\n", valor); return 0; } //Imprime: Valor = 10 Vetores Quando passamos um vetor para uma função, estamos passando o próprio vetor: #include <stdio.h> void dobra(int a[]) { a[0] = a[0]*2; } int main() { int valor[] = {10}; dobra(valor); printf("Valor = %d\n", valor[0]); return 0; } //Imprime: Valor = 20 Vetores Não vamos entrar nos detalhes e motivos para isso funcionar dessa forma. Para uma explicação mais aprofundada: • Procure o professor • Pesquise sobre ponteiros • Faça Algoritmos 2 Agenda 1. Introdução 2. Vetores 3. Strings 4. Exercícios 5. Apêndice Strings • Vetores nos permitem armazenar sequências de valores do mesmo tipo • Usamos o tipo char para armazenar caracteres • Podemos representar palavras e textos com um vetor de char! Sequências de caracteres são chamadas de strings. Strings Já utilizamos strings o tempo todo em nossos programas. Todo texto entre aspas duplas é uma string: printf("Olá, mundo!\n"); Strings Se uma string é um vetor como outro qualquer, podemos armazená-las em variáveis: char mensagem[] = "Bom dia!\n"; Pergunta importante: qual o tamanho desse vetor? Strings Se uma string é um vetor como outro qualquer, podemos armazená-las em variáveis: char mensagem[] = "Bom dia!\n"; Pergunta importante: qual o tamanho desse vetor? Strings 10 caracteres! B o m d i a ! \n \0 • O \n é um caractere só • Toda string em C é terminada pelo caractere \0 Strings Portanto, as duas coisas são equivalentes: char mensagem[] = "Bom dia!\n"; char mensagem[] = {'B', 'o', 'm', ' ', 'd', 'i', 'a', '!', '\n', '\0'}; Strings Como usar strings com printf e scanf? Strings Para ler e escrever strings, usamos %s: #include <stdio.h> int main() { char nome[] = "Gui"; printf("Bom dia, %s!\n", nome); return 0; } Strings #include <stdio.h> int main() { char nome[100]; printf("Qual seu nome?\n"); scanf("%s", nome); printf("Bom dia, %s!\n", nome); return 0; } Strings Alguns detalhes importantes do código anterior: • Quando passamos um vetor para o scanf, não usamos o & • O scanf com %s lê apenas uma palavra, sem espaços – O apêndice ao final dos slides traz outros códigos que podem ser úteis (não cai na prova) • O scanf não verifica se a string digitada cabe no seu vetor – Aqui, vamos sempre criar um vetor que seja grande o suficiente – Confira no apêndice uma solução diferente (não cai na prova) Strings A biblioteca padrão do C oferece a string.h, com funções úteis para trabalhar com strings. Algumas mais importantes: • strlen: calcula o tamanho de uma string • strcmp: verifica se duas strings são iguais – Atenção: você não deve comparar vetores usando == Strings #include <stdio.h> #include <string.h> int main() { char nome[100]; printf("Digite seu nome:\n"); scanf("%s", nome); int tamanho = strlen(nome); printf("Seu nome tem %d letras!\n", tamanho); return 0; } Strings A função strcmp retorna zero se duas strings são iguais: #include <stdio.h> #include <string.h> int main() { char senha[100]; printf("Digite a senha:\n"); scanf("%s", senha); if(strcmp(senha, "12345") == 0) { printf("Acesso autorizado.\n"); } else { printf("Acesso negado\n"); } return 0; } Agenda 1. Introdução 2. Vetores 3. Strings 4. Exercícios 5. Apêndice ExercíciosExercício 1 Escreva um programa que leia 5 números do teclado, depois exiba a sequência digitada multiplicada por 10. ExercíciosExercício 2 Escreva um programa que leia 5 números do teclado, depois exiba os números pares da sequência digitada. ExercíciosExercício 3 Escreva um programa que leia seu nome e diga se ele tem um número par de letras. ExercíciosExercício 4 Escreva um programa que leia o seu nome e exiba-o ao contrário. ExercíciosExercício 5 Escreva um programa que leia o seu nome. Depois, exiba a primeira letra do nome e pule a segunda, exiba a terceira e pule a quarta e assim sucessivamente. Agenda 1. Introdução 2. Vetores 3. Strings 4. Exercícios 5. Apêndice Apêndice Códigos especiais para trabalhar com strings: • %[ˆ\n]s: lê uma string com espaços • %10s: lê uma string de até 10 caracteres (você pode trocar por qualquer número) Introdução Vetores Strings Exercícios Apêndice
Compartilhar