Buscar

Algoritmos Vetores e Strings

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

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais