Jump to content

Projeto Simples em Pascal - Ajuda em Ideias


leatavsan

Recommended Posts

Boa tarde,

Pretendo criar um programa em Free Pascal em que use vários tipos de variáveis, estruturas de repetição, etc.

No projeto pretendo ter variaveis do tipo string, char, integer, real.

Pretendo usar a estrutura de seleção case

Pretendo utilizar as estruturas de repetição: for, while e/ou repeat

Pretendo ainda utilizar arrays (unidimensionais e/ou bidimensionais)

Precisava que alguém me desse ideias para projeto. Não quero códigos, nem nada do género. Apenas queria ideias. Alguém me pode ajudar nisso?

Desde já obrigado

Link to comment
Share on other sites

Para que áreas preferias programar? ...Gestão? Matemática?...

De momento estou completamente aberto a sugestões.

O projeto que pretendo fazer não é para demorar 1 hora e pronto. Pretendo que tenha alguma complexidade dentro do que descrevi em cima. A extensão do programa é irrelevante neste momento.

Relativamente à área, visto que ainda não tenho um tema, poderá ser qualquer uma

Edited by leatavsan
Link to comment
Share on other sites

Para te dar ideias, precisamos saber um pouco mais sobre o que já aprendeste.

Por exemplo, destes, o que já aprendeste?

Arrays

Records

Ficheiros

"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

Nesse caso, e visto que é um projecto para fazer "com calma", eu sugeria-te o seguinte:

Fazer uma agenda de contactos.

Isto requer:

* Variáveis de vários tipos (nome, idade, etc)

* case (controle de setas (teclas), por exemplo)

* Vários tipos de loop (repeat para o menu, for ou while para percorrer a lista, etc)

* procedimentos e funções

* records (ainda que não os tenhas já aprendido, são muito fáceis, e é fácil aprenderes - além de mostrares ao professor que tens vontade de aprender mais)

É necessário ainda para este projecto uma de duas coisas: Arrays ou Ficheiros

Com Arrays, toda a estrutura da agenda pode funcionar, mas nada é gravado em disco, ou seja, muito interessante a nível teórico, nem tanto a nível prático.

Com ficheiros, fica tudo gravado em disco, e se o fizeres com atenção, é um programa que pode ser depois usado na prática.

Sei que também não deste ficheiros. Estes já são um pouco mais complexos do que os records, mas não são difíceis se quiseres aprender.

Nesta linha de ideias podes fazer também outras coisas, base de dados de filmes/jogos/livros, calendário de jogos desportivos, tabela de notas escolares, calendário de testes, etc.

No fundo, pensa em algo que te desse jeito usar em casa, e depois procura implementar isso.

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

Obrigado pela sugestão,

relativamente ao record não sei a estrutura dele... E sei perfeitamente que todo o programa ficaria melhor com um record, para não ter que voltar a introduzir tudo sempre que abro o programa...

Seria uma boa ideia é estou a ponderar fazer isso. Mas para seguir com isto para a frente seria bom saber fazer record dos dados introduzidos.

Pode me dar algum site com um tutorial ou algo do género sobre record? Só para ficar com umas luzes em relação a isso

Link to comment
Share on other sites

Obrigado pela sugestão,

relativamente ao record não sei a estrutura dele... E sei perfeitamente que todo o programa ficaria melhor com um record, para não ter que voltar a introduzir tudo sempre que abro o programa...

Seria uma boa ideia é estou a ponderar fazer isso. Mas para seguir com isto para a frente seria bom saber fazer record dos dados introduzidos.

Pode me dar algum site com um tutorial ou algo do género sobre record? Só para ficar com umas luzes em relação a isso

Tens aqui mesmo no forum um excelente tutorial sobre Pascal, em que aprofunda esses detalhes: http://www.portugal-a-programar.pt/files/file/6-tutorial-de-pascal/

Em jeito de resumo, um record é uma forma de agrupar várias variáveis de tipos diferentes sob um mesmo identificador, ou uma mesma variável, se preferires.

Por exemplo:

var
  Pessoa: Record                // A variável Pessoa é do tipo Record, e tem 4 campos: Nome, Idade, Salario e Sexo
            Nome    : String;
            Idade   : Integer;
            Salario : Real;
            Sexo    : Char;
          end;

begin
 Pessoa.Nome    := 'Nuno Picado';
 Pessoa.Idade   := 38;
 Pessoa.Salario := 100000; // Era bom
 Pessoa.Sexo    := 'M';

Para aceder a cada campo, usa-se o nome da variável do tipo Record (Pessoa), e o caracter '.' (ponto) a separar do nome do campo, conforme o exemplo.

Isto quer dizer que a variável Pessoa vai reunir num só identificador todos os dados dessa pessoa, o que é muito útil em programas que trabalhem (ou simulem) com uma base de dados.

Uma variável destas, só por si, não chega para fazeres uma agenda. Só guarda o nome de uma pessoa.

Mas se for usada em conjunto com os arrays, podes numa só variável ter toda a base de dados, e assim consegues percorrer todas as informações de todas as pessoas facilmente.

Claro que, melhor que o array, é usar ficheiros, que assim fica tudo guardadinho no disco (no tutorial também lá está como trabalhar com ficheiros de texto. Para este caso, ficheiros tipados, ou seja, ficheiros que guardam directamente os records, são a melhor opção. Se optares por isso, podemos depois explicar-te o funcionamento).

Mas já agora, mais uma coisa.

Dei-te o exemplo de como definir um record directamente na variável.

Mas é comum teres de usar a mesma definição em mais do que um local, e não fazia sentido estares sempre a declarar todos os campos do record, até porque te podias esquecer de algo ao alterar num lado, e depois falhar do outro.

O melhor para isto é criares um tipo de dados, conforme o exemplo:

type
  TPessoa = Record                // A variável Pessoa é do tipo Record, e tem 4 campos: Nome, Idade, Salario e Sexo
              Nome    : String;
              Idade   : Integer;
              Salario : Real;
              Sexo    : Char;
            end;

var
  Pessoa: TPessoa;

begin
 Pessoa.Nome    := 'Nuno Picado';
 Pessoa.Idade   := 38;
 Pessoa.Salario := 100000; // Era bom
 Pessoa.Sexo    := 'M';

Assim, em qualquer lado onde precisares declarar uma variável para usar a mesma estrutura record, basta dizer que é do tipo TPessoa, e fica tudo certo. 😉

"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 🙂 fiquei bastante esclarecido, daqui por algum tempo talvez virei aqui para esclarecer alguma duvida 🙂

type
  TPessoa = Record                // A variável Pessoa é do tipo Record, e tem 4 campos: Nome, Idade, Salario e Sexo
              Nome    : String;
              Idade   : Integer;
              Salario : Real;
              Sexo    : Char;
            end;

var
  Pessoa: TPessoa;

begin
 Pessoa.Nome    := 'Nuno Picado';
 Pessoa.Idade   := 38;
 Pessoa.Salario := 100000; // Era bom
 Pessoa.Sexo    := 'M';

Por exemplo, além dessas variáveis por exemplo, se eu queria adicionar a data de nascimento em que a data de nascimento seria um record que teria as variáveis dia, e ano do tipo integer e mês do tipo string.

É possível fazer este record dentro do record TPessoa?

Link to comment
Share on other sites

Sim, podes encadear sem problemas.

Podes declarar um record dentro de outro, ou podes, de preferência, criar um tipo para a idade e usar depois dentro do tipo TPessoa.

type
  TData = Record
            Ano: Integer;
            Mes: Integer;
            Dia: Integer;
          end;
  TPessoa = Record
              Nome       : String;
              Nascimento : TData;
              Salario    : Real;
              Sexo       : Char;
            end;
var
  Pessoa: TPessoa;

begin
 Pessoa.Nome           := 'Nuno Picado';
 Pessoa.Nascimento.Dia := 27;
 Pessoa.Nascimento.Mes := 7;
 Pessoa.Nascimento.Ano := 1977;
 Pessoa.Salario        := 100000; // Era bom
 Pessoa.Sexo           := 'M';

A título de curiosidade, se passarmos de Pascal para Object Pascal, podes até meter funções e procedimentos dentro de um record, como este:

type
  TData = Record
            Ano: Integer;
            Mes: Integer;
            Dia: Integer;
          end;
  TPessoa = Record
              Nome       : String;
              Nascimento : TData;
              Salario    : Real;
              Sexo       : Char;
              function Idade: Integer;
            end;
var
  Pessoa: TPessoa;

function TPessoa.Idade: Integer;
begin
    // Calcula a idade da pessoa
end;

begin
 Pessoa.Nome           := 'Nuno Picado';
 Pessoa.Nascimento.Dia := 27;
 Pessoa.Nascimento.Mes := 7;
 Pessoa.Nascimento.Ano := 1977;
 Pessoa.Salario        := 100000; // Era bom
 Pessoa.Sexo           := 'M';

 WriteLn ('Olá ',Pessoa.Nome,'. Tens ',Pessoa.Idade,' anos.');

Ao usar o Pessoa.Idade, a função é calculada e retorna imediatamente o seu valor como se fosse mais um campo do Record.

Mas isto é mais à frente, não tens de te preocupar já com isso! 😉

"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

só uma questão: Free-Pascal é uma linguagem, Object Pascal é outro tipo de linguagem? É que nunca tinha ouvido falar...

FreePascal não é uma linguagem. 🙂

FreePascal é um compilador que suporta as linguagens Pascal e Object Pascal.

Object Pascal é uma derivação (ou evolução) da linguagem Pascal que implementa o paradigma de programação orientada a objectos, além do tradicional paradigma funcional encontrado no Pascal.

Foi desenvolvida pela Apple entre 1985 e 1986 para programação para Mac, e mais tarde, em 1989, passou a estar disponível no Turbo Pascal 5.5, em MS-DOS.

Hoje em dia, muitas das linguagens mais populares usam este paradigma, o que faz com que no que respeita ao Pascal, o Object Pascal seja o 'standard', suportado pelos principais compiladores, como o Delphi e o FreePascal.

Tudo o que aprenderes em Pascal, ser-te-á útil quando e se deres o passo para Object Pascal, pelo que não tenhas medo de estares a perder tempo - não estás.

Simplesmente, há mais possibilidades no Object Pascal, que a seu tempo poderás desfrutar.

Uma delas é exactamente o uso de procedimentos e funções dentro de um record. Ao fazeres isso, estás efectivamente a usar o objecto 'Pessoa', que tem propriedades (campos do record) e pode fazer acções (métodos do record, no caso, a função Idade.

À medida que a tua curiosidade te chame para esse lado, vais passando por cá que há sempre quem te tente ajudar a esclarecer dúvidas. 🙂

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

A estrutura Record, tão simples que é, e é na verdade a base de toda a extensão Object Pascal. Quem diria? 🙂

Em Object Pascal, os objectos todos que cries pertencem sempre a uma classe de objectos. E uma classe declara-se exactamente como um Record.

Logo, é algo bastante útil de aprenderes! 🙂

Alguma dúvida, vai dizendo.

"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

A estrutura Record, tão simples que é, e é na verdade a base de toda a extensão Object Pascal. Quem diria? 🙂

Em Object Pascal, os objectos todos que cries pertencem sempre a uma classe de objectos. E uma classe declara-se exactamente como um Record.

Logo, é algo bastante útil de aprenderes! 🙂

Alguma dúvida, vai dizendo.

Está bem, muito obrigado pela ajuda até agora!! Vai-me dar bastante jeito, agora tenho que pôr mãos à obra! 👍

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
×
×
  • 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.