Jump to content

Arrays - Como fazer e como aplicar?


Lukas S.
 Share

Recommended Posts

Boa noite a todos os que ainda estão acordados ... Estou a usar pascal neste momento para fazer um exame e só agora que deparei que vai calhar também arrays... alguém sabe de forma simples e sem complicar muito explicar :

Definição de Array como variável;

Declaração e manipulação de Arrays;

Eu sei que foi muito mau chegar aqui e pedir isto mas é que nimguem sabia e uma colega nossa avisou precisamente depois do jogo de Portugal vs Republica Checa

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

Para coisas gerais, a Wikipedia costuma ter artigos simpaticos: o artigo sobre arrays nao e excepcao 🙂

Os arrays mantêm uma série de elementos de dados, geralmente do mesmo tamanho e tipo de dados.

Para declarares um array com capacidade para 5 inteiros usa a sintaxe seguinte:

myarray : array [1 .. 5] of Integer;

Para atribuires um valor ao terceiro elemento, faz assim:

myarray[3] := 42;

Para usares o valor de um elemento do array, usa a mesma sintaxe como para atribuicao

writeln("valor do segundo elemento: ", myarray[2]);
Edited by pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

obrigado pmg mas eu já tinha visto isso e sei o que é um array ...Em pascal não sei como fazer nem como aplicar... Podes explicar melhor ? ... confirma-me só uma coisa ... nos objectivos do exame tenho aqui também

Conhecer o conceito de string e saber como pode ser manipulada... Isto signfica do tipo

' Para o PascalZim

Program Lucas

Var Texto:String;

begin

Writeln('Olá.Qual o teu nome?')

readln(lucas)

End

será isto manipular a string ? duvido .... Eu sou de visual basic .net e não precisamos nada disto .... só declarar as variaveis normalmente e dizer

Lucas=textbox1.txt

Edited by Lukas S.

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

obrigado pmg ... Podes explicar melhor ?

Eu alterei a minha resposta para incluir exemplos de uso de arrays.

Ve la se agora ficas mais elucidado.

Conhecer o conceito de string e saber como pode ser manipulada

No teu exemplo declaras a variavel Texto, mas depois queres meter um valor na variavel Lucas ... que nao declaraste! Tens de declarar tudo!

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Os maus vícios de VB.NET, minha nossa... Depois é misturar alhos e bugalhos e dá estrume...

Um tutorial de Pascal em PDF, da minha autoria:

https://www.portugal-a-programar.pt/files/file/6-tutorial-de-pascal/

Eu gostaria de saber como vais fazer um teste quando nem entendes a base das bases... esse teu exemplo de programa sucks, desculpa a frontalidade.

Então mas tu declaras a variável Texto e não a usas, e quando usas uma variável é uma que não está declarada? Isso não é manipulação de string: na realidade, não é nada em Pascal!

O @pmg já deu as indicações-base. Se sai arrays no teste, significa que deste arrays nas aulas. O que deste e o que sabes, comecemos por aí.

Edited by thoga31

Knowledge is free!

Link to comment
Share on other sites

Nãoo demos thoga a falar asério ... Nós nas aulas tinhamos um professor que não ensinava nada e permitia jogar jogos e toda gente jogava ... Este ano apanhámos um professor mais rigoroso e pronto não sabemos nada .... opá e preciso mesmo disto ... eu sei arrays em visual basic .net agora em pascal ? Esquece ...

Vou estudar aquilo que fizeste em pdf e penso que saberei muito mais de arrays ... já fiz download 😉

Edited by Lukas S.

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

Tens essa informação toda bem explicada no tutorial de Pascal do Thoga31, aqui mesmo no forum: http://wiki.portugal-a-programar.pt/dev_geral:pascal:tutorial_2010:indice

Em resumo:

Arrays - Declaração:

var
  NomeArray: Array [1..5] of Integer;
  // Dentro de parentesis rectos, deves meter o índice inferior. Segue-se o operado "até" (..) e depois o índice superior.
  // Logo de seguida, a palavra chave "of" e depois o tipo de dados a que pertencem os valores do array.

Para o usares, é como disse o pmg, metes o nome do array seguido da posição que pretendes dentro de parentesis rectos.

NomeArray[1] := 513;
Writeln(NomeArray[1]);

Quanto às strings, vais-me desculpar mas não há linguagem nenhuma de nivel alto ou intermédio que não tenha manipulação de strings. O que te está a falhar não é o como, mas o conceito.

Sabendo que uma string é uma variável que guarda uma cadeia de caracteres, tens por exemplo:

var
  Nome:String;
begin
  Write('Indique o nome e apelido: ');
  Readln(Nome);

  if Nome='Lucas Poborski' 
     then writeln('Olá ',Nome,'!')
     else Writeln('Não te conheço ',Nome,', bem vindo!');

  Writeln('O teu apelido é ',Copy(Nome,pos(' ',Nome)+1,999),' não é?');
end.

Ou seja, pegares numa string e tratares a informação que ela tem, seja retirando dela partes de que precisas, ou adicionando outras partes, apagando ainda outras... Ou seja, manipulares a informação (texto) que lá estiver.

Mais uma vez, o tutorial do Thoga explica isso tudo, mas faz assim: esquece o que pensas que sabes, e procura estudar a linguagem com olhos de quem está mesmo a aprender.

Vais ver que é facílimo!

PS: Como exercicio, tenta explicar o que faz este programinha que pus em cima... Não pus comentários de proposito, tenta raciocinar e ver o que ele faz!

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Muito obrigado a todos que responderam... Fui muito burro em ter confundido isto tudo e com os nervos atão e só de lembrar que vamos ter duas linguagens no exame baralha tudo ... Desculpem mais uma vez e OBRIGADO a todos que responderam a minha noobice autentica

Quanto às strings, vais-me desculpar mas não há linguagem nenhuma de nivel alto ou intermédio que não tenha manipulação de strings. O que te está a falhar não é o como, mas o conceito.

Sabendo que uma string é uma variável que guarda uma cadeia de caracteres, tens por exemplo:


  Writeln('O teu apelido é ',Copy(Nome,pos(' ',Nome)+1,999),' não é?');

Ou seja, pegares numa string e tratares a informação que ela tem, seja retirando dela partes de que precisas, ou adicionando outras partes, apagando ainda outras... Ou seja, manipulares a informação (texto) que lá estiver.

PS: Como exercicio, tenta explicar o que faz este programinha que pus em cima... Não pus comentários de proposito, tenta raciocinar e ver o que ele faz!

Explica-me uma coisa aqui :

Copy(Nome,pos(' ',Nome)+1,999),' não é?');

Poderá explicar aqui o que representa este resto de comando ? o porque de tar ali 1,999

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

São na realidade dois números diferentes: 1, 999. Lembra-te que em Pascal o separador decimal é o ponto, sendo a vírgula utilizada para separar parâmetros que passas a funções.

Agora resta-te inspeccionar alguma documentação da função copy() para perceberes o porquê dos parâmetros que o nunopicado utilizou.

Link to comment
Share on other sites

Oqueijo 😄 .... Uma duvida ... tentei fazer um array sem ver e mecher no resto .... alguém sabe dizer porque dá erro na linha 9 o erro é

->" não esperado.

Program EquipaDeFutebol ;
var numerodejogadores,i:integer;
var calcadojogadores :array[1..numerodejogadores] of integer;
Begin
Writeln('Quantos jogadores tem a equipa ?')   ;
readln(numerodejogadores)     ;
for i:=0 to numerodejogadores do begin
Writeln('Qual o numero de calcado dos jogadores?');
writeln (calcadojogadores[0..numerodejogadores])  ;
End ;
Writeln(' Os calçados dos jogadores são:',calcadojogadores[1..numerodejogadores])  ;





End.
Edited by thoga31
GeSHi

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

E alem disso, quando usas o array, só lhe podes dizer o numero da posição que queres. O .. só usas na declaração.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Então em Pascal é obrigatório saber o fim ?

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

Existe algo chamado arrays dinâmicos. Mas isso implica ponteiros, e parece-me que nesta fase não deves pensar nisso.

Cria um array com um limite acima do que é necessário, e depois usas as posições que precisares.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Program NotasArray;
Var i:integer;
Notas:Array[1..11] of Integer;
Begin
For i:= 1 to 11 do
Begin
Write('Introduza as notas');
Read (Notas[i]);
End;
End.
Edited by thoga31

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

Então em Pascal é obrigatório saber o fim ?

Tens de perceber que VB.NET é um ninho de más práticas. Esquece o ReDim ou o Array.Resize!

Em Pascal tudo é declarado com os devidos limites. Um array tem um início e tem um fim. Como o @nunopicado disse, há os dinâmicos, mas esses são complexos, e para os usar mais valem as listas ligadas.

E usa as tags Code, sff...

Edited by thoga31

Knowledge is free!

Link to comment
Share on other sites

Por exemplo poderia dar para fazer o seguinte vou só mostrar a pratica

Não liguem para a estrutura vou por tipo algoritmo

Numero de jogadores na equipa ?

Readln(Jogadores)

Agora o array era de 1..Jogadores 'sendo que na variável estaria o valor que eu queria no final

seria um array bi-dimensional não ?

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

Não. Tu estás a tentar controlar o tamanho do array, e isso seria um dinâmico, o qual, por mais que tentes, nem o vais arranhar com os conhecimentos que tens.

Como o @nunopicado disse, tens de definir um array com um tamanho específico, e depois trabalhas só com o que precisares.

Por exemplo, crias um array de 100 elementos, e depois perguntas o nº de jogadores com a condição de ser só até 100. Depois, conforme o nº, trabalhas só com esses elementos do array.

Knowledge is free!

Link to comment
Share on other sites

Calma thoga eu sei q não tenho conhecimentos mas espero obter-los e estou a esforçar por isso...

Obrigado por explicares a duvida 😉

Já agora ótimo pdf... Muito boa matéria

Edited by Lukas S.

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

Calma thoga eu sei q não tenho conhecimentos

Eu estou "calmo". Apenas disse que não vais conseguir arranhar os dinâmicos porque, de facto, são complexos. Antes desses, tens de aprender convenientemente os estáticos.

mas espero obter-los e estou a esforçar por isso...

A jogar nas aulas...

Knowledge is free!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.