Mandar um cafézinho para o programador:


Me ajude a transformar café em código!

Arrays em C++ : Como Declarar, Inicializar, Acessar e Usar

Agora que já aprendemos o que são arrays, para que servem e onde são usados, vamos aprender a trabalhar com eles, declarando, acessando e usando das mais variadas maneiras.

Como declarar um Array em C++

Assim como as variáveis que usamos até o momento, em nossa apostila, para declarar um vetor, você primeiramente precisa declarar o tipo de dado dele (char, int, double, float etc). Em seguida, precisa dar um nome também.

Agora vem a parte diferente, em array: você precisa dizer o tamanho do seu array, ou seja, quantas variáveis únicas aquele vetor vai conter, e isso é informado entre colchetes [ ].

Vamos declarar algumas variáveis?

  • int RG[10]: array com 10 inteiros pra armazenar números de RG's
  • float notas[5]: array com 5 números floats, pra armazenar notas
  • char nome[100]: array com espaços para 100 caracteres, para armazenar um nome ou texto (também chamado de strings, que estudaremos futuramente nosso curso)


Só isso: tipo, nome do array e quantos elementos ele deve ter.

Como inicializar um Array

Ao declarar, você já pode de cara inicializar os elementos do array. Para isso, colocamos os valores entre colchetes { }.
Por exemplo, um array de 2 elementos inteiros de valores 21 e 12:

  • int rush[2] = { 21, 12 };

Se você quiser inicializar um array de mil elementos, todos com valor 0, basta fazer:

  • int num[1000] = {};


Automaticamente o C++ vai preencher todas as variáveis com valor inicial nulo.

Você não precisa nem declarar o número de elementos se for inicializar diretamente, o C++ vai contar quantos elementos você informou e declarar o array com tamanho exato daquilo que está usando, basta deixar os colchetes vazios.

Por exemplo,  inicializando uma string (array de caracteres) com o nome do nosso curso e exibir uma mensagem de boas vindas:
#include <iostream>
using namespace std;

int main()
{
    char site[] = {"C++ Progressivo"};

    cout << "Bem vindos ao "<< site <<endl;
}

Como acessar os elementos de um Array

Vamos supor que tenhamos um array de 3 inteiros:
int num[3];

A primeira variável é: num[0]
A segunda variável é: num[1]
A terceira variável é : num[2]

Note uma coisa essencial: o primeiro elemento tem SEMPRE índice 0
O primeiro é num[0] e não num[1].

Você pode declarar um vetor de 10, 100, mil, milhão...o primeiro elemento é acessado usando o índice 0:
Primeiro elemento: num[0]
Segundo elemento: num[1]
n-ésimo elemento : num[n-1]

Ou seja, se seu array tem tamanho X, você acessa os elementos a partir do índice 0, até o índice (X-1), ok ?

Como usar Arrays em C++

Vamos colocar a mão na massa e ver como se usa arrays em C++? De verdade?
Como vamos tratar com uma grande quantidade de variáveis, praticamente sempre que usamos arrays, usamos também laços para acessar mais rapidamente e de maneira mais dinâmica e flexível, os vetores. Vamos ver na prática.

Exemplo 1

Coloque os números 0, 1, 2, 3, ..., 9 em um array de 10 elementos.
#include <iostream>
using namespace std;

int main()
{
    int num[10], cont;

    for(cont=0 ; cont<10 ; cont++)
        num[cont] = cont;
}

Nossa variável auxiliar é 'cont', e ela recebe valores de 0 até 9.
A variável de índice 0 recebe o valor 0.
A variável de índice 1 recebe o valor 1.
...
A variável de índice 9 recebe o valor 9.

Isso é feito com a linha de comando: num[cont] = cont;

Exemplo 2

Coloque os números 1, 2, 3, ..., 10 em um array de 10 elementos, em seguida exiba eles no formato 'Elemento 1', 'Elemento 2', ..., 'Elemento 10'.
#include <iostream>
using namespace std;

int main()
{
    int num[10], cont;

    for(cont=0 ; cont<10 ; cont++)
        num[cont] = cont+1;

    for(cont=0 ; cont<10 ; cont++)
        cout << "Elemento " << cont+1 << ": " << num[cont] << endl;
}

Agora fizemos com um detalhe de diferença:
 A variável de índice 0 recebe o valor 1.
A variável de índice 1 recebe o valor 2.
...
A variável de índice 9 recebe o valor 10.

Isso é feito com a linha de comando: num[cont] = cont+1;

Veja bem, nós programadores, contamos a partir do 0. Mas as pessoas normais (?????!), contam a partir do 1. Então, temos que exibir 'elemento 1' como o primeiro, e não elemento 0. Por isso, adicionamos 1 à variável cont,

Exemplo 3

Crie um programa que peça a nota de 5 alunos, armazene essas notas num array, depois exiba elas, bem como a sua média.
#include <iostream>
using namespace std;

int main()
{
    float grade[5], sum=0;
    int cont;

    for(cont=0 ; cont<5 ; cont++){
        cout<<"Insira a nota "<<cont+1<<": ";
        cin >> grade[cont];
        sum += grade[cont];
    }

    for(cont=0 ; cont<5 ; cont++)
        cout<<"Nota "<<cont+1<<": "<<grade[cont]<<endl;

    sum /= 5;

    cout<<"Media: "<<sum<<endl;

}
Vamos armazenar as notas no array 'grade', e a soma das notas na variável 'sum'. Nosso contador é o 'cont'.

Primeiro, usamos um laço FOR para pedir as 5 notas ao usuário.
Cada vez que ele digita uma nota, ela é atribuída a um elemento do array, em seguida é somada a variável sum (que deve inicializar em 0).

Depois, exibimos todas as notas digitadas.
Por fim, basta dividir a variável 'sum' por 5 e teremos a média das notas digitadas.

Note que o tamanho do código seria o mesmo pra 1 milhão de notas, bastaria mudar o número 5 pra 1000000. Viu como os arrays deixam nossas possibilidades de criar programas bem mais flexíveis?

Exemplo 4

Crie um array de 101 elementos. Em cada elemento do array, armazene o valor do dobro do índice. Ou seja, a variável num[x] deve ter armazenado o valor 2x. Depois, exibe a lista dos 100 números primeiros números pares.
#include <iostream>
using namespace std;

int main()
{
    const int ARRAY_SIZE = 101;
    int num[ARRAY_SIZE], cont;

    for(cont=0 ; cont<ARRAY_SIZE ; cont++)
        num[cont] = 2*cont;

    for(cont=1 ; cont<ARRAY_SIZE ; cont++)
        cout<<"Dobro de "<<cont<<": "<<num[cont]<<endl;

}
Os arrays sempre devem ser inicializados com um valor literal (um número diretamente) ou por uma variável, de preferência constante (const). Aliás, é recomendável você declarar uma constante no começo do programa e ficar usando variável durante o código, fica mais fácil para futuras alterações.

Exemplo 5

Peça para que 6 funcionários de uma empresa digitem seus salários. Em seguida, seu programa deve dizer quanto de imposto de renda cada um deles deve pagar por mês. A taxa é de 15%.
#include <iostream>
using namespace std;

int main()
{
    const int ARRAY_SIZE = 6;
    float func[ARRAY_SIZE];
    int cont;

    for(cont=0 ; cont<ARRAY_SIZE ; cont++){
        cout<<"Funcionario "<<cont+1<<": ";
        cin >> func[cont];
    }

    cout<<"Imposto a pagar: "<<endl;
    for(cont=0 ; cont<ARRAY_SIZE ; cont++)
        cout<<"Funcionario "<<cont+1<<": R$"<<func[cont]*0.15<<endl;

}

4 comentários:

  1. muito bom!
    Posso complicar?
    Como posso armazenar um valor lido na porta analógica a cada 200 milisegundos?

    ResponderExcluir
    Respostas
    1. Você pode usar a função millis() do Arduino para controlar o tempo entre as leituras da porta analógica. Aqui está um exemplo de como você pode fazer isso:

      const int analogPin = A0; // substitua por sua porta analógica
      unsigned long previousMillis = 0;
      const long interval = 200; // intervalo de 200 ms
      int value = 0; // variável para armazenar o valor lido

      void setup() {
      Serial.begin(9600);
      }

      void loop() {
      unsigned long currentMillis = millis();
      if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
      value = analogRead(analogPin);
      Serial.println(value);
      }
      }

      Neste código, a função analogRead() é chamada a cada 200 milissegundos para ler o valor da porta analógica e armazená-lo na variável value. O valor é então impresso no monitor serial para visualização. Lembre-se de substituir A0 pela porta analógica que você está usando.

      Excluir
    2. Você pode usar a função `millis()` do Arduino para controlar o tempo entre as leituras da porta analógica. Aqui está um exemplo de como você pode fazer isso:

      ```cpp
      const int analogPin = A0; // substitua por sua porta analógica
      unsigned long previousMillis = 0;
      const long interval = 200; // intervalo de 200 ms
      int value = 0; // variável para armazenar o valor lido

      void setup() {
      Serial.begin(9600);
      }

      void loop() {
      unsigned long currentMillis = millis();
      if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
      value = analogRead(analogPin);
      Serial.println(value);
      }
      }
      ```

      Neste código, a função `analogRead()` é chamada a cada 200 milissegundos para ler o valor da porta analógica e armazená-lo na variável `value`. O valor é então impresso no monitor serial para visualização. Lembre-se de substituir `A0` pela porta analógica que você está usando.

      Excluir
  2. Você pode usar a função `millis()` do Arduino para controlar o tempo entre as leituras da porta analógica. Aqui está um exemplo de como você pode fazer isso:

    ```cpp
    const int analogPin = A0; // substitua por sua porta analógica
    unsigned long previousMillis = 0;
    const long interval = 200; // intervalo de 200 ms
    int value = 0; // variável para armazenar o valor lido

    void setup() {
    Serial.begin(9600);
    }

    void loop() {
    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    value = analogRead(analogPin);
    Serial.println(value);
    }
    }
    ```

    Neste código, a função `analogRead()` é chamada a cada 200 milissegundos para ler o valor da porta analógica e armazená-lo na variável `value`. O valor é então impresso no monitor serial para visualização. Lembre-se de substituir `A0` pela porta analógica que você está usando.

    ResponderExcluir

Ajude o C++ Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo