Jump to content

[Resolvido] [Duvidas] Estruturas de Dados Compostas


Lukas S.

Recommended Posts

Bem , eu gostei do Pascal e tive uma nota boa no exame ( 15 , não foi assim tão mal para o que tinha estudado e que aqui ajudaram ) e decidi melhorar a nota a Estruturas de Dados Compostas uma vez que quero seguir universidade ... Tive a procurar no google e no proprio chm(manual de ajuda) do Pascalzim! e encontrei isto :

Tipos Estruturados

Os tipos de dados predefinidos podem ser organizados em tipos de dados complexos, denominados tipos estruturados.

A linguagem Pascal oferece, basicamente, quatro destes tipos:

A meu haver isto é estruturas de dados compostas mas no meio do meu estudo não percebi uma pergunta... Qual a vantagem da utilização de estruturas compostas? E alguém pode explicar-me como utilizar um Array de estruturas ?

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

Bom, vamos lá ver se percebes isto.

Caso 1: Array do tipo record

Type
 TRecord_Exemplo=record
nome:string;
idade:integer;
 end;

Var
 VArray_Exemplo:Array [1..50] of TRecord_Exemplo;



Begin

 {lê as introduções do utilizador para o registo da posição 5 do array}
 Readln(VArray_Exemplo[5].Nome);
 Readln(VArray_Exemplo[5].Idade);

 {lê as introduções do utilizador o registo de todas as posições 5 do array}
 For i:=1 to 50 do begin
Readln(VArray_Exemplo[5].Nome);
Readln(VArray_Exemplo[5].Idade);
 end;

 {Copia os valores do registo da posição 5 do array para o registo a posição 3}
 VArray_Exemplo[3]:=VArray_Exemplo[5];


 {Copia o nome do registo da posição 5 do array para o nome  do registo da posição 10}
 VArray_Exemplo[10].Nome:=VArray_Exemplo[5].Nome;


End.

Caso2 : Record com campo tipo array

Type
 TRec_Ex=record
...
valor_mes:array [1..12] of ;
 end;

Var
 VRE:TRec_Ex;


Begin

 {lê introdução do utilizador para a posição 5 (Maio, neste caso) do array do registo}
 Readln(VRE.Valor_mes[5]);

 {lê introdução do utilizador para todas as posições (todos os meses, neste caso) do array do registo}
 For i:=1 to 12 do Readln(VRE.Valor_mes[i]);

End.
Edited by passarito
Link to comment
Share on other sites

Qual a vantagem da utilização de estruturas compostas?

Em relação aos registos, permitem manipular um conjunto de dados relacionados como um objecto indivisível. Dou-te uma analogia: uma pasta com folhas. Podes manipular as folhas individualmente mas o acesso a elas e o seu transporte é muito mais fácil se estiverem agrupadas numa pasta.

Em relação aos arrays (não gosto de chamar-lhes 'vectores' pois cria-se muita confusão com o C++ e outras linguagens, em que vectores são arrays dinâmicos), permitem agrupar várias instâncias de variáveis do mesmo tipo (e que são algoritmicamente usadas em conjunto) sob um único identificador, e permitem também um acesso indexado a elementos individuais, o que é necessário para vários algoritmos.

Eu não considero enumerações e ponteiros tipos de dados estruturados.

Link to comment
Share on other sites

Em relação aos arrays (não gosto de chamar-lhes 'vectores' pois cria-se muita confusão com o C++ e outras linguagens, em que vectores são arrays dinâmicos)

Penso, que vectores são arrays unidimensionais.

Essa designação é mais para os brasucas (não reparaste que o @Lucas S. escreveu Registros? Cara, o brasiu eh q tá a dar, valeu...) e matemáticos, pois um array pode ser bi, tri, ... n .... dimensional!

Link to comment
Share on other sites

não reparaste que o @Lucas S. escreveu Registros? Cara, o brasiu eh q tá a dar, valeu...)

Eu juro que ri tanto que doeu -me a barriga XD ... isso era o que estava no chm do pascalzim ....

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

Ok, no meio disto tudo, parte do essencial ficou perdido 😛

O @passarito já resumiu muito bem a diferença entre um Array de Records e um Record com um campo do tipo Array.

Também como já foi dito, uma estrutura composta permite organizar informação relacionada de uma forma compacta. Imaginemos que queremos fazer o registo de pessoas. Não dá jeito ter um canhão de variáveis. Uma forma de organizar isto é do seguinte modo:

  • Criar um Record com os campos do registo de cada pessoa;
  • Criar um Array desse Record.

Assim, se quisermos registar o nome, a idade e o sexo de 100 pessoas, em vez de 300 variáveis individuais, o que é um trabalho do caraças, temos nada mais do que isto:

type TRegPessoa = record
       nome : string;
       idade : word;
       sexo : char;
    end;

var Pessoas : array [1..100] of TRegPessoas;

6 linhas de definição vs 300 linhas que seriam variáveis independentes. E, desta forma, bastarão ciclos para tratar todos estes dados.

Eu não considero enumerações e ponteiros tipos de dados estruturados.

Os ponteiros, em Pascal, costumam ser criados e tratados com Records, pelo que há quem os considere como tipos de dados compostos. 😉

Quanto aos Arrays vs Vectores... Em Pascal, a definição correcta é Array seguido da definição do nº de dimensões:

  • Array [1..10] of tipo --> Array unidimensional;
  • Array [1..10, 1..20] of tipo --> Array bidimensional;
  • Array [1..10, {...}, 1..5] of tipo --> Array multidimensional, ou de n dimensões.

EDIT: Quanto ao PascalZIM, eu recomendo vivamente que deixes de o utilizar, ele é um crime para o Pascal - tem sido o culpado de muitos dos boatos do Pascal ser fraco e mais não sei o quê... Pudera! Este compilador é extremamente restritivo, não reconhece as bibliotecas básicas, etc etc etc...

Cumprimentos,

thoga31 😉

Edited by thoga31

Knowledge is free!

Link to comment
Share on other sites

@thoga31 nao tenho outra hipótese se não usar o PascalZim uma vez que o exame é feito com esta ferramenta ...

Então pelo que percebi a definição de estrutura de dados composta é : Compactação de dados através arrays , records ,ponteiros.

certo ?

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

ora... de trás para a frente

Então pelo que percebi a definição de estrutura de dados composta é : Compactação de dados através arrays , records ,ponteiros.

certo ?

Não percebi..... compactação?!?

Se te referes ao que o @thoga31 referiu sobre a forma compacta, ele queria dizer que não tinhamos de ter um trilhião de variaveis!

Os ponteiros, em Pascal, costumam ser criados e tratados com Records, pelo que há quem os considere como tipos de dados compostos. 😉

...

EDIT: Quanto ao PascalZIM, eu recomendo vivamente que deixes de o utilizar, ele é um crime para o Pascal - tem sido o culpado de muitos dos boatos do Pascal ser fraco e mais não sei o quê... Pudera! Este compilador é extremamente restritivo, não reconhece as bibliotecas básicas, etc etc etc...

Quanto aos ponteiros, já vi, li e aprendi da forma que o @thoga31 referiu essa é a maneira teórica de aprender ponteiros, mas na prática não vejo grandes vantagens... eu sei que haverá quem diga que isto e aquilo (e tive algumas dicussões com o prof. por isso mesmo), mas eu uso os ponteiros com o minimo de informações possiveis, pois na prática usam-se ficheiros e não toda a informação carregada na memória. Os ponteiros apenas têm de preparar as coisas para a optimização de todo o resto.

Mas isto é só uma opinião minha.

Quanto à 2ª parte... tenho de arreliar o Thoga31 um bocadito.... vejo que já não estás tão crente no FPC... lol....😉

Eu juro que ri tanto que doeu -me a barriga XD ... isso era o que estava no chm do pascalzim ....

Espero que não estejas a gozar comigo, afinal Registro é PT ou BR? Já faz parte do acordo ortográfico?

Se usas emuladores de Pascal Brasileiros é contigo, agora devias ter corrigido andes de postares isso aqui.

A brincadeira do Brasileiro, foi a propósito de um outro tópico...

Link to comment
Share on other sites

@thoga31 nao tenho outra hipótese se não usar o PascalZim uma vez que o exame é feito com esta ferramenta ...

A sério? Numa instituição de ensino utilizam uma ferramenta de desensino? Enfim...

Uma coisa que tens de perceber é que a síntaxe e a base do Pascal não muda de compilador para compilador, só há algumas "nuances" que diferem.

Claro que o PZim é um caso especial, mas, enquanto na escola utilizas essa infelicidade, em casa utiliza outra decente. A escola não é a regra de ouro, bem pelo contrário 😉

Nem que seja o Dev-Pascal, é um trilião de vezes melhor que o PZim, apesar de já ter bengala.

Compactação de dados através arrays , records ,ponteiros.

Compactação é um conceito diferente. Tão diferente que existe uma palavra reservada e pelo menos dois métodos relacionados com compactação de dados.

O que os tipos de dados compostos fazem é organizar dados do mesmo género de uma forma simples e eficiente. Como o @passarito acabou de esclarecer, estes tipos de dados evitam que tenhas um canhão de variáveis e, por conseguinte, um canhão de linhas de código.

É possível fazer em 50 linhas, ou menos, um programa de registo de pessoas. Se não utilizares tipos de dados compostos, terias pelo menos 1000 linhas de código para tratar os dados de 100 pessoas e só com 3 campos.

Knowledge is free!

Link to comment
Share on other sites

OK esclarecido até agora ... Alguém sabe me dizer o que é ser capaz de criar um array de estruturas?

Conhecer e saber aplicar o conceito de estrutura dentro de estrutura e como manipular uma estrutura

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

Lukas,

Há uns dias atrás pediste ajuda sobre como criar arrays de tipos de dados simples. Ora bem, uma array funciona sempre da mesma forma, independentemente do tipo de dados que contenha (simples ou composto). Logo, se sabes criar uma array de integers ou de strings, criar uma array de estruturas de dados (provavelmente records) é a mesma coisa, logo que tenhas criado o teu tipo de dados, como o thoga31 e o passarito já te explicaram.

Quanto a ter uma estrutura de dados dentro de outra, deixo-te apenas uma pista: uma estrutura de dados é, fundamentalmente, um tipo de dados como outro qualquer.

E relativamente ao PascalZIM, tem piada avaliar Pascal num programa que nem sequer Pascal suporta decentemente. Mas isso não é culpa tua, claro, é de quem vos ensina.

bsscara, relativamente a array vs vector, se leres livros portugueses sobre programação em C, a maioria fala em vectores. E existe uma curiosa moda dos portugueses chamarem vector a arrays; Isto deve vir do C++, onde alguém teve a brilhante ideia de criar uma implementação de uma array de tamanho flexível e chamar-lhe vector (pelos vistos, o autor do nome reconhece que deveria ter chamado array ao vector da STL, mas agora é demasiado tarde).

Link to comment
Share on other sites

Alguém sabe me dizer o que tem de mal neste código ?

Program Pzim ;
Const prisioneiros=20;
var i:integer;
var dados : Record
	   nome : string;
	   altura : integer;
	   peso : integer;
	   datanascimento:string;
	   dataprisao:string;
	   AnosPena:integer;
	  End;
	  var tabela:array[1..prisioneiros] of dados;
	  Procedure TabPrisioneiros(Var todosprisioneiros:tabela);
Begin
WITH todosprisioneiros[1] do
 Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 ENd;
 With todosprisioneiros[2] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[3] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[4 do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[5] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[6] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[7] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[8] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[9] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[10] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[11] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[12] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[13] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[14] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[15] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[16] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[17] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[18] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[19] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[20] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
 Begin
 TabPrisioneiros(ta);
 for i:=1 to prisioneiros do
 Writeln('Nome:',ta[i].nome);
 Writeln('Altura:',ta[i].altura) ;
 Writeln('Peso:',ta[i].peso) ;
 Writeln('Data de Nascimento:',ta[i].datanascimento) ;
 Writeln('Data de Prisão:',ta[i].dataprisao);
 Writeln('Anos de Pena :',ta[i].AnosPena);


End.

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

Simplesmente uma vergonha ... estou em pleno exame o professor da discplina não está cá tou a ser vigiado e posso aceder ao que eu quiser ... ainda por mais o código que me dão para supostamente comentar está errado :

Vejam esta desgraça ( Usando o compilador pascalzim)

Program Notas(Input,Output) ;
// O Dr. fez o programa no TurboPascal o que dá imcompatibilidade em certas
//variáveis...
// ... Este código vai dar mal aqui no PascalZim mas dá bem no TURBO PASCAL
Const maxalunos=5; // declaramos a constante de que o máximo de alunos é 5
var i:integer; // i para indice
Type aluno = Record // tipo record , dá erro no PascalZim
 nome : string[60];
	 nota: integer;
	 End;
 tabela=array[1..maxalunos] of aluno; // Erro outra vez no pascalzim
 // tem de levar tabela:= e mesmo assim dá erro não percebi porque
	 Procedure TabAlunos(Var todosalunos:tabela); //da erro também
	 //aqui dizemos que o procidimento vai ter uma variavel chamada todosalunos do tipo tabela

Begin
WITH todosalunos[1] do	 // na variavel todosalunos guardamos na posição 1
begin
todosalunos[1]-nome:='Marcelo';
todosalunos[1].nota:=20 ;
End;
WITH todosalunos[2] do //2
begin
todosalunos[2].nome:='Pedro';
todosalunos[2].nota:=10 ;
End;
WITH todosalunos[3] do
begin
todosalunos[3].nome:='Joana';
todosalunos[3].nota:=0 ;
End;
WITH todosalunos[4] do
begin
todosalunos[4].nome:='Mariana';
todosalunos[4].nota:=5 ;
End;
WITH todosalunos[5] do
begin
todosalunos[5].nome:='Zezinho';
todosalunos[5].nota:=9;
End;
Begin
TabAlunos(ta);
for i:=1 to maxalunos do
Writeln(ta[i].nome:' ',ta[i].nota); // apresentamos o valor de todos
end;
Writeln('Os alunos que foram aprovados são:')
For i:=1 to maxalunos do
if ta[i].nota > 9,5 then //se a nota for maior que 9,5 entao
Writeln(ta[i].nome)
end;



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

Eu também avisei que queria repetir o exame e a professora de vigia avisou-me q por raivao ainda fazem um pior e pra lixar o aluno

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

Nestes últimos códigos que o @Lukas S. colocou, de facto vi uns quantos desastres...

Então mas declara-se um Array de Records para evitar canhões de linhas de código e depois percorremos o Array índice a índice num verdadeiro copy-past? Este código...

Alguém sabe me dizer o que tem de mal neste código ?

Program Pzim ;
Const prisioneiros=20;
var i:integer;
var dados : Record
          nome : string;
          altura : integer;
          peso : integer;
          datanascimento:string;
          dataprisao:string;
          AnosPena:integer;
         End;
         var tabela:array[1..prisioneiros] of dados;
         Procedure TabPrisioneiros(Var todosprisioneiros:tabela);
Begin
WITH todosprisioneiros[1] do
 Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 ENd;
 With todosprisioneiros[2] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[3] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[4 do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[5] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[6] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[7] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[8] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[9] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[10] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[11] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[12] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[13] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[14] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[15] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[16] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[17] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[18] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[19] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
   With todosprisioneiros[20] do
   Writeln('Digite o nome do recluso');
 Readln(dados.nome);
 Writeln('Digite a altura do recluso');
 readln(dados.altura);
 Writeln('Digite o peso do recluso');
 readln(dados.peso) ;
 Writeln('Digite a data de nascimento');
 Readln(dados.datanascimento);
 Writeln('Digite a Data de Prisão');
 Readln(dados.dataprisao);
 Writeln('Digite os anos de pena que o recluso apanhou');
 Readln(dados.AnosPena);
 END;
 Begin
 TabPrisioneiros(ta);
 for i:=1 to prisioneiros do
 Writeln('Nome:',ta[i].nome);
 Writeln('Altura:',ta[i].altura) ;
 Writeln('Peso:',ta[i].peso) ;
 Writeln('Data de Nascimento:',ta[i].datanascimento) ;
 Writeln('Data de Prisão:',ta[i].dataprisao);
 Writeln('Anos de Pena :',ta[i].AnosPena);


End.

... é um desastre. Então temos o mesmo código 20 vezes só para percorrer o Array? E se este tivesse 1000 elementos, repetíamos o código 1000 vezes? :O

De facto o ensino parece estar arruinado - não se ensina, mata-se o que é bom com boatos aos quais lhes chamam gentilmente de "matéria a ser avaliada em teste"...

Dirige-te à secretaria e faz uma reclamação!

Quando fiz o ECDL, aquilo tinha respostas erradas, quando ameaçei que ia fazer queixa fizeram-me tudo e mais alguma coisa!

Sem ofensa relacionada com o teu BI 😛 , mas no teu tempo a minha mãe também fez queixas e refilava muito, e ela, tendo razão, "ganhava". Actualmente, se eu tentar fazer exactamente o mesmo, possivelmente nunca mais vou fazer a cadeira do professor com quem eu reclamar. Welcome to the 21th century, my dear friend.

Knowledge is free!

Link to comment
Share on other sites

Que mal eu pergunte...

Estavas em pleno exame a aceder a um forum de programação para ver o que estava errado com um código de uma pergunta do exame?

O quê que está mal aqui, além do código?

De qualquer maneira, não será o caso do código estar errado de proposito para ver se o aluno (de preferencia sem aceder a foruns no meio do exame) consegue descobrir o que está mal?

"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

Se for secundária, existem instancias superiores, se for Universidade há os regentes da cadeira. Mesmo estes também são atingíveis.

Uma vez numa "discussão" como regente da cadeira de Pascal, eu disse-lhe que as coisas não se faziam como ele estava a dizer ao que ele retorquiu: então vai lá mostrar isso no computador. Eu de um lado ele do outro e sala cheia. Resultado, a solução dele falhou e minha funcionou! Nunca mais me chateou, mas no exame tentou lixar-me. correu-lhe mal.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • 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.