Aula por Rogério Júnior e João Pedro Castro
Na última aula exploramos os loops, que permitem repetir uma operação vezes. Agora vamos aprender sobre os vetores, que tem a função de servir como variáveis.
Problema Base
Imagine o seguinte problema: imprimir uma lista de inteiros de trás pra frente. A entrada consiste de duas linhas, na primeira temos um número inteiro (), e na segunda temos uma lista de tamanho com inteiros (). A saída deve consistir da lista na ordem inversa, com os números separados por um espaço, ou seja: .
Com o que vocês aprenderam até agora no roteiro esse problema é impossível, pois além de receber valores também é necessário guardar todos os valores para os usar em um momento posterior. Assim, vamos introduzir uma nova maneira de guardar dados: vetores.
Um vetor é uma lista de variáveis do mesmo tipo em que podemos acessá-las pela posição, que vai de 0 até . Segue um exemplo abaixo:
Sintaxe
A sintaxe básica do vetor é:
O tipo pode ser qualquer um dos tipos já mencionados nas variáveis, e o nome segue o mesmo modelo do nome das variáveis, enquanto o tamanho é um inteiro positivo, podendo ser inclusive uma variável. Na hora de acessar os valores podemos colocar qualquer posição válida (inteiro entre 0 e ) dentro dos colchetes, inclusive variáveis, que acabam sendo as mais utilizadas.
Agora que já sabemos o básico de vetores, vamos ver uma possível solução para o problema base:
No código acima declarei um vetor com exatamente posições, e o inicializei dentro da main
. Porém, é uma prática comum (e até recomendada) declarar o vetor fora da main
, já que isso inicializa os valores de cada posição com , e com pouco mais posições do que o valor máximo de (para o problema, um tamanho por volta de é recomendado), para que erros no código ou problemas/diferenças de compiladores não provoquem respostas erradas ou erros de acesso de memória. Então, caso queira, fica como exercício reformular o código tendo isso em mente.
Campo Minado - Problema para focar
Resolva esse problema antes de prosseguir. Não recomendo olhar a solução antes de tentar resolver por um bom tempo, sinta-se livre para voltar na aula e reler o conteúdo já passado.
Nesse problema recebi os valores na posição até a , já que se eu tivesse começado da ao olhar para a posição iria receber um erro de memória, já que estaria procurando pela posição . Porém, ao começar da , tendo a e , não teremos nenhum problema. Obviamente, esse problema poderia ter sido remediado de outras formas, como um if
para ver se a posição anterior ou posterior é válida, mas desse jeito que fiz é mais rápido programar.
Strings
Existe um tipo especial de vetor, as strings. Elas são vetores exclusivamente de caracteres, e já foram mostradas para vocês nas aulas anteriores (as frases entre aspas), com funcionalidades especiais, pois são tratadas como um outro tipo de variável. Para usar as strings é necessário importar a biblioteca "string" (sem as aspas). Segue algumas das funcionalidades:
Vogais e Consoantes - Problema para focar
Resolva esse problema antes de prosseguir. Não recomendo olhar a solução antes de tentar resolver por um bom tempo, sinta-se livre para voltar na aula e reler o conteúdo já passado.
Ideia Extra - Vetor dinâmico
Imagine uma lista que suporta além de suportar as operações usuais de ler/escrever também possibilita adicionar um elemento ao final do vetor, ou apagar o último elemento. Podemos implementar isso de forma fácil, estabelecendo um tamanho máximo para o vetor e guardando o tamanho atual em uma variável. Na última aula da parte inicial é introduzida uma versão pré-implementada pelo C++ na STL. Segue uma possível implementação.
Experimente rodar esse programa no seu computador e mexer fazendo operações.
Fim
Agora o universo de problemas que você pode resolver se expandiu novamente, parabéns! Vá para página anterior e resolva os problemas recomendados para continuar sua jornada de aprendizado ?