Exercício de lógica de programação

Escreva um algoritmo para carregar um vetor com os números de 1 (inclusive) a 5 (inclusive) em ordem crescente.

Comentários: Este é o primeiro exercício envolvendo vetores e começamos a notar a grande diferença entre uma linguagem de alto nível e uma de baixo nível. Obviamente que “nível” refere-se a distancia do hardware ou a proximidade com o “humano”, não tem nada a ver com qualidade, ok?

Linguagem C

#include <stdio.h>
#include <assert.h>

int main() {
    int vetor[5];
    int i;

    // Aqui entra a lógica do programa.




    //
    // Testes
    //
    assert(1 == vetor[0]);
    assert(2 == vetor[1]);
    assert(3 == vetor[2]);
    assert(4 == vetor[3]);
    assert(5 == vetor[4]);
    return 0;
}

Solução na linguagem C

#include <stdio.h>
#include <assert.h>

int main() {
    int vetor[5];
    int i;

    // Aqui entra a lógica do programa.
    for (i = 0; i < 5; i++) {
        vetor[i] = i + 1;
    }

    //
    // Testes
    //
    assert(1 == vetor[0]);
    assert(2 == vetor[1]);
    assert(3 == vetor[2]);
    assert(4 == vetor[3]);
    assert(5 == vetor[4]);
    return 0;
}

Desafios na linguagem C

1) Os códigos abaixo trazem o mesmo resultado do código do exercício acima. Faça o teste de mesa de cada um deles para entender o porque são equivalentes.

for (i = 1; i < 6; i++) {
    vetor[i-1] = i;
}
for (i = 5; i > 0; i--) {
    vetor[i-1] = i;
}
for (i = 4; i > -1; i--) {
    vetor[i] = i + 1;
}

2) Transcrever tudo para while, exemplo:

while(i < 5){
    vetor[i] = i + 1;
    i++;
}

Boa sorte!

Linguagem Python

Linguagens de alto nível como Python, por exemplo, se saem muito bem quando se trata de vetores. Acho que, na linguagem Python, o mais próximo do conceito de vetor são as listas. Ao contrário de C, em Python os vetores (as listas) são dinâmicas, ou seja, não precisamos definir um tamanho fixo.

Para resolver o problema proposto nem precisamos de um laço de repetição, veja o código abaixo.

# -*- coding: utf-8 -*-

vetor =  [1, 2, 3, 4, 5]

#
# Teste
#
assert 1 == vetor[0]
assert 2 == vetor[1]
assert 3 == vetor[2]
assert 4 == vetor[3]
assert 5 == vetor[4]

Mas caso você esteja pensado como seria o código fazendo uso de um laço, então veja o código seguinte.

# -*- coding: utf-8 -*-

vetor =  []

for n in range(5):
    vetor.append(n + 1)

#
# Testes
#
assert 1 == vetor[0]
assert 2 == vetor[1]
assert 3 == vetor[2]
assert 4 == vetor[3]
assert 5 == vetor[4]

Para saber mais sobre listas lei o artigo na seção Python.

Linguagem JavaScript (Node.js)

Em JavaScript também não precisamos de muito para criarmos um vetor.

var assert = require('assert');

var vetor = [1, 2, 3, 4, 5]

//
// Testes
//
try {

    assert.equal(1, vetor[0]);
    assert.equal(2, vetor[1]);
    assert.equal(3, vetor[2]);
    assert.equal(4, vetor[3]);
    assert.equal(5, vetor[4]);

} catch(e) {
    console.log(e);
}

E também podemos criar o vetor com um laço de repetição, veja…

var assert = require('assert');


var i, vetor = [];

for(i = 1; i < 6; i++ ){
    vetor.push(i)
}

//
// Testes
//
try {

    assert.equal(1, vetor[0]);
    assert.equal(2, vetor[1]);
    assert.equal(3, vetor[2]);
    assert.equal(4, vetor[3]);
    assert.equal(5, vetor[4]);

} catch(e) {
    console.log(e);
}

Obs: O conceito de vetor em JavaScript resume-se em um array, ou seja, um vetor é equivalente a um array unidimensional.