Arranjo e Vetor

1. Arranjo e Vetor

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 22/03/2014 - 09:09h

Pessoal existe distinção na linguagem C entre vetor e arranjo? Caso sejam distintos quais as diferenças?


  


2. Re: Arranjo e Vetor

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/03/2014 - 13:48h

viana3 escreveu:

Pessoal existe distinção na linguagem C entre vetor e arranjo? Caso sejam distintos quais as diferenças?


Arranjo é a mesma coisa que vetor. Dê uma olhada nesse link:

http://www.macsystemeduc.com.br/livros/cpp13/exemplo13.html


3. Re: Arranjo e Vetor

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 23/03/2014 - 07:35h

Alguém me havia dito que existia uma diferença sutil entre ambos.No Arranjo, o programador deve definir o seu tamanho, isto é, a capacidade máxima de elementos que seu Arranjo irá guardar (manipular). Já no Vetor, isso acontece de forma dinâmica, ou seja, além de não ser necessário especificar seu tamanho, ele cresce a medida em que os elementos são adicionados, como também, decresce quando os elementos são removidos.Por isso fiquei em dúvida.


4. Re: Arranjo e Vetor

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 23/03/2014 - 10:06h

viana3 escreveu:

Alguém me havia dito que existia uma diferença sutil entre ambos.No Arranjo, o programador deve definir o seu tamanho, isto é, a capacidade máxima de elementos que seu Arranjo irá guardar (manipular). Já no Vetor, isso acontece de forma dinâmica, ou seja, além de não ser necessário especificar seu tamanho, ele cresce a medida em que os elementos são adicionados, como também, decresce quando os elementos são removidos.Por isso fiquei em dúvida.


Errado, em C o tamanho do vetor deve ser definido antes, até mesmo suas dimensões, que no caso, se tiver mais de uma, vira matriz.

O que tem alocação dinâmica sã os Arrays, que não existe em C.


5. Re: Arranjo e Vetor

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 23/03/2014 - 10:28h

Rei astro você poderia indicar-me uma fonte para que eu possa provar para o meu interlocutor que ele está equivocado?


6. Re: Arranjo e Vetor

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 23/03/2014 - 15:47h

Livro C completo e total.


7. Re: Arranjo e Vetor

Paulo
paulo1205

(usa Ubuntu)

Enviado em 24/03/2014 - 04:16h

viana3 escreveu:

Rei astro você poderia indicar-me uma fonte para que eu possa provar para o meu interlocutor que ele está equivocado?


Supondo que "arranjo" seja a tradução direta de "array", e dado que (1) "vetor" é o nome historicamente empregado para arrays unidimensionais e (2) todos os arrays em C são unidimensionais (se você quiser algo parecido com um array bidimensional, terá de fazer um "array de arrays"), então, em C, "arrays", "arranjos" e "vetores" são sinônimos.

Mais do que isso, o tamanho de arrays, em C, devem ser fixos (C89) ou facilmente calculáveis, e fixos depois disso, em tempo de execução (C99 em diante).

Já em C++, além dos arrays nativos herdados do C, a biblioteca padrão de classes (STL) tem os tipos std::array e std::vector. O primeiro deles é um envelope para o array nativo, compartilhando com ele a limitação de ter tamanho fixo, determinado em tempo de compilação, mas ao mesmo tempo lhe dá funções de outros contêineres (como s métodos begin() e end()). Já std::vector é mais flexível, admitindo alteração da quantidade de elementos em tempo de execução.


8. Re: Arranjo e Vetor

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 24/03/2014 - 06:42h

paulo1205 escreveu:

viana3 escreveu:

Rei astro você poderia indicar-me uma fonte para que eu possa provar para o meu interlocutor que ele está equivocado?


Supondo que "arranjo" seja a tradução direta de "array", e dado que (1) "vetor" é o nome historicamente empregado para arrays unidimensionais e (2) todos os arrays em C são unidimensionais (se você quiser algo parecido com um array bidimensional, terá de fazer um "array de arrays"), então, em C, "arrays", "arranjos" e "vetores" são sinônimos.

Mais do que isso, o tamanho de arrays, em C, devem ser fixos (C89) ou facilmente calculáveis, e fixos depois disso, em tempo de execução (C99 em diante).

Já em C++, além dos arrays nativos herdados do C, a biblioteca padrão de classes (STL) tem os tipos std::array e std::vector. O primeiro deles é um envelope para o array nativo, compartilhando com ele a limitação de ter tamanho fixo, determinado em tempo de compilação, mas ao mesmo tempo lhe dá funções de outros contêineres (como s métodos begin() e end()). Já std::vector é mais flexível, admitindo alteração da quantidade de elementos em tempo de execução.


Sei disso, e sei dessa tradução. Mas estou me referindo ao conceito em programação. Claro que em C array, arranjo e vetor são a mesma coisa, mas em linguagens orientada a objeto, como Java, array é outra coisa: um objeto, que pode tomar várias formas.


9. Re: Arranjo e Vetor

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 24/03/2014 - 09:20h

O motivo da minha dúvida é que o meu "instrutor" além de fazer uma distinção entre vetores e arrays, apresenta um código que tem a finalidade de definir operações básicas para manipulação de arranjos unidimensionais, vejam o código:

[code]
#ifndef ELEMENT_T
#define ELEMENT_T 1

typedef int Element;

#endif

/**
* Cria um arranjo de n elementos indexados de 0 a n - 1, inclusive.
*/
Element * makeArray(int n);


/**
* Retorna o valor do elemento de índice index.
* O valor de index precisar estar no intervalo 0 <= index <= (n - 1)
*/
Element getValueAt(Element *, int index);


/**
* Altera o valor do elemento de índice index no arranjo para o valor newValue.
*/
void setValueAt(Element *, int index, Element newValue);
[code]



10. Re: Arranjo e Vetor

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 24/03/2014 - 09:34h

O motivo da minha dúvida é que meu "instrutor" além de fazer a tal distinção, ele apresenta um código que tem a finalidade de definir s operações básicas para manipulação de arranjos unidimensionais, vejam o código abaixo e se possível explique-me a finalidade dele.
[code]
#ifndef ELEMENT_T
#define ELEMENT_T 1

typedef int Element;

#endif

/**
* Cria um arranjo de n elementos indexados de 0 a n - 1, inclusive.
*/
Element * makeArray(int n);


/**
* Retorna o valor do elemento de índice index.
* O valor de index precisar estar no intervalo 0 <= index <= (n - 1)
*/
Element getValueAt(Element *, int index);


/**
* Altera o valor do elemento de índice index no arranjo para o valor newValue.
*/
void setValueAt(Element *, int index, Element newValue);
[\code]


11. Re: Arranjo e Vetor

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 24/03/2014 - 15:18h

Só que isso aí não é C, é um código de programação orientado a objeto. C++ ou C#.


12. Re: Arranjo e Vetor

Paulo
paulo1205

(usa Ubuntu)

Enviado em 24/03/2014 - 17:14h

Viana3,

Por favor apague aquela postagem que ficou com c&oacute;digo HTML aberto, e corrija a postagem seguinte, substituindo o [\code], que você colocou, por [/code].

Pelo exemplo que você mostrou, parece que o seu professor está chamando de "array" um bloco de memória alocado dinamicamente, contrapondo-lhe como "vetor" aquilo que o C chama de "arrays", ou seja, aqueles que são declarados com largura conhecida (ou reconhecível) em tempo de compilação (por exemplo: “int arr_int[10];”.

Isso, cumpre notar, é uma opção de nomenclatura que ele faz. E, aliás, os "arranjos" dele são bem limitados, não? Só inteiros, e dependentes de uma sintaxe longa para fazer atribuições e consultas.

----

Rei_astro,

Eu também me referi e refiro ao conceito em programação e, ao mesmo tempo, àquilo que é mapeado nos computadores que nós temos: numa arquitetura von Neumann, um bloco de memória contíguo, que inicia num determinado endereço e é percorrido, para ter acesso a diferentes elementos, por meio de um ou mais índices aplicados ao endereço inicial.

Existe um aspecto histórico que contamina, por assim dizer, não somente esta discussão, mas o uso corrente dos termos no mundo da Informática. Quando surgiu a linguagem Fortran, que passou a dominar (e domina ainda hoje) a computação científica, os compiladores começaram a oferecer meios de mapear automaticamente as matrizes e os vetores, usados pelos algoritmos de Álgebra Linear, em arrays. Por analogia, arrays bidimensionais eram chamados de "matrizes", embora tão-somente as representassem, e, do mesmo modo, o termo "vetor", que originalmente designava apenas um ente matemático, virou sinônimo da estrutura de dados que o representava, um array unidimensional.

O uso dos termos "array", "arranjo" e "vetor" em diferentes nichos e linguagens soa totalmente arbitrário. Parece-me, por exemplo, que a STL do C++ preferiu usar "vector" não por causa da entidade matemática "vetor", mas para diminuir as chances de confusão entre o novo tipo e os arrays nativos, herdados do C.

Quanto ao uso que tem em Java, bem... Eu acho que muitas das escolhas dessa linguagem são um tanto infelizes, mesmo que haja muitos "papas" desta ou daquela área que as endossem -- e como se não existissem outros "papas" que as refutam. Entre as coisas que me incomodam nela está a própria existência de uma classe coringa Object, que é superclasse de quase tudo (por mim, ou seria de absolutamente tudo, ou não deveria existir, e fim de papo). Outra é que arrays sejam instâncias dessa joça.

Ainda bem, em todo caso, que esta comunidade não é de Java. ;)

Em tempo: o código postado é C, sim. Só que parece ser de um ".h", não ".c".

----

Alguém sabe o que está acontecendo com o fórum? A função de editar uma postagem já postada desformata tudo, e os blocos [quote] e [/quote] simplesmente não estão fazendo efeito.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts