Ir ao conteúdo
  • Cadastre-se

Menu pascal


Visitante: carolloca

Posts recomendados

Visitante: carolloca
 

Tenho um programa para fazer com os seguintes itens:

##MENU##

1 - INSERIR;

2- LISTAR;

3 - ALTERAR;

4 - EXCLUIR;

0 - FIM;

com os seguintes vetores:

CODIGO [ ] [ ] [ ] [ ]

DESCRICAO [ ] [ ] [ ] [ ]

QUANTIDADE [ ] [ ] [ ] [ ]

DATA/ENTRADA [ ] [ ] [ ] [ ]

o problema é que o professor só explicou que queria a tela assim, e não explicou direito como fazer os itens do MENU, então estou tentando fazer mas não estou conseguindo se alguém puder me ajudar ficarei grata.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Olhei sim, mas tem alguns termos e funções que meu professor não explicou então ficou meio difícil a compreensão, mas mesmo assim obrigada.

Olá carolloca

Você está "aprendendo a criar um 'menu'" e já querendo usar ficheiros?

Precisamos de mais informções...

Poste aqui o que você já fez e onde você está tendo dúvidas. Pelo que você postou no primeiro post, você deve usar "arrays" (vetores) não?

com os seguintes vetores:

Vou tentar explicar um pouquinho....

1) Menu

Os "menus" têm a mesma característica dos "menus" (cardápios) dos restaurantes e lanchonetes por exemplo... eles têm a finalidade de "listar" as opções que possuem...

Usando a mesma analogia destes cardápios, é feita uma associação de código para cada item.

1-Hamburger

2-X-Burger

3-Cachorro-quente

A diferença que em vez do garçom "tratar" a opção escolhdia, quem vai fazer isso é o programa..

Resumidamente os MENUS possui duas características: Lista as opções e por consequência tratá-las de acordo com a opção escolhida...

Exemplo de um MENU no pascal:

Program exemploMenu;
var
opcao :char;
i :byte;

BEGIN
repeat
[COLOR="Red"] WriteLN(' *** MENU DE opções *** ');
WriteLN;
WriteLN(' [1] Desejar bom dia');
WriteLN(' [2] Contar ate 10');
WriteLN(' [3] Fazer outra coisa qualquer');
WriteLN(' [S] Sair do programa');[/COLOR]
WriteLN;
Write (' =>');
ReadLN(opcao);
opcao:=UpCase(opcao); {torna maiusculo}
case opcao of
'1' :begin
WriteLN;
WriteLN('Bom dia querido usuario');
end;
'2' :begin
WriteLN;
WriteLN(' Contagem de 1 a 10');
for i:=1 to 10 do
begin
Write(i,' ');
end;
WriteLN;
end;
'3' :begin
{codigo para fazer qualquer coisa}
end;
'S' :begin
WriteLN;
WriteLN('Obrigado por usar nosso programa');
end;
end; {fim case}
WriteLN;
Write ('Pressione qualquer tecla para continuar');
ReadLN;
until opcao='S';
END.

O MENU seria simplemente essa lista de opções, mas por conseqüencia envolve toda a questão de tratar a opção escolhida...

Ou seja, para cada opção escolhida deve-se executar os procedimentos correspondentes...

Daí é só implementado cada opção.

Recomendo você somente implementar INSERIR e LISTAR por enquanto, já que ALTERAR e EXCLUIR envolve conceitos mais sofisticados...

Tente fazer algo e poste o código que você fez, e ai você vai tentando ao poucos tirar suas dúvidas..

No aguardo

Abraços

Link para o comentário
Compartilhar em outros sites

Aqui está um código que poderá resolver. Insisto que o código deverá ser bem estudado. Os professores não são burros.


program ficheiro_dados(input,output,ficheiro);
uses crt;

Type registo=record
codigo: string[10];
descricao: string[25];
quantidade: integer;
data: string[10];
end;

var ficheiro: File of registo;
ficha: registo;
NRegistos: integer;
opcao: char;

FUNCTION existe(nome:string):boolean; {verifica se o ficheiro existe }
VAR flista:file; {e evita que o programa aborte}
BEGIN
{$I-}
assign(flista,nome);
RESET(flista);
CLOSE(flista);
{$I+}
existe:=(IOresult=0) and (nome<>'')
end;

Procedure inser;
var i: integer;
begin
i:= 0;
IF not existe('D:\Dados.dat') then
begin
writeln('o ficheiro nao existe. Deseja criar o Ficheiro (s/n) ?');
readln(opcao);
if opcao = 's' then
begin
rewrite(ficheiro); {cria o ficheiro em branco}
close(ficheiro); {fecha o ficheiro}
end;
end
ELSE
begin
repeat
clrscr;
ASSIGN(ficheiro,'D:\Dados.dat');
reset(ficheiro); {abre o ficheiro e fica no primeiro registo}
i:= filesize(ficheiro); {determina o tamanho do ficheiro}
seek(ficheiro, i); {coloca-se no ultimo registo do ficheiro}
write('Codigo: '); readln(ficha.codigo);
write('Descricao: '); readln(ficha.descricao);
write('Quantidade: '); readln(ficha.quantidade);
write('Data de Entrada: '); readln(ficha.data);
writeln('Confirma os dados s/n '); opcao:= readkey;
if opcao='s' then
begin
write(ficheiro, ficha); {escreve no ficheiro}
close(ficheiro);
end;
writeln('Pretende sair s/n ');
opcao:= readkey;
until opcao='s';
end;
end;

procedure lista;
begin
clrscr;
IF not existe('D:\Dados.dat') then
begin
writeln('Nao existe ficheiro de dados');
readln;
end
else
begin
ASSIGN(ficheiro,'D:\dados.dat');
RESET(ficheiro);
WHILE NOT EOF(ficheiro) DO
BEGIN
READ(ficheiro,ficha);
WITH ficha DO
begin
if ficha.codigo <> '' then {evita que registos em branco sejam escritos}
begin
writeln('Ficha Nr.', filepos(ficheiro));
writeln('Codigo: ', ficha.codigo);
writeln('Descricao: ', ficha.descricao);
writeln('Quantidade: ', ficha.quantidade);
writeln('Data de Entrada: ', ficha.data);
writeln;
end;
end;
end;
CLOSE(ficheiro);
readln;
end;
end;

procedure altera;
var x: string;
sair: boolean;
i: integer;
begin
clrscr;
sair:= false;
IF not existe('D:\Dados.dat') then
writeln('Não existe ficheiro de dados')
else
begin
write('Digite o codigo da ficha a alterar: ');
readln(x);
ASSIGN(ficheiro,'D:\dados.dat');
RESET(ficheiro);
WHILE NOT EOF(ficheiro) and (sair=false) DO
BEGIN
READ(ficheiro,ficha);
WITH ficha DO
begin
if x = ficha.codigo then
begin
writeln('Ficha Nr.', filepos(ficheiro));
write('Codigo: ', ficha.codigo,' Novo codigo: '); readln(ficha.codigo);
write('Descricao: ', ficha.descricao,' Nova Descricao: '); readln(ficha.descricao);
write('Quantidade: ', ficha.quantidade,' Nova Quantidade: '); readln(ficha.quantidade);
write('Data de Entrada: ', ficha.data,' Nova Data: ');readln(ficha.data);
writeln;
writeln('Confirma os dados s/n '); opcao:= readkey;
if opcao='s' then
begin
i:= filepos(ficheiro);
seek(ficheiro, i-1);
write(ficheiro, ficha);
sair:= true;
writeln('Alteracao efectuada');
readln;
end;
end;
end;
end;
CLOSE(ficheiro);
end;
end;

{este procedimento não exclui definitivamente o registo,
simplesmente coloca os dados em branco. Para excluir
definitivamente o registo teria de ser utilizado um array para
colocar os registos, apagar o ficheiro, criá-lo de novo em
branco e passar os registos da array para o ficheiro}

procedure exclui;
var x: string;
sair: boolean;
i: integer;
begin
clrscr;
sair:= false;
x:= '';
i:= 0;
IF not existe('D:\Dados.dat') then
writeln('Não existe ficheiro de dados')
else
begin
write('Digite o codigo da ficha a excluir: ');
readln(x);
ASSIGN(ficheiro,'D:\dados.dat');
RESET(ficheiro);
WHILE NOT EOF(ficheiro) and (sair=false) DO
BEGIN
READ(ficheiro,ficha);
WITH ficha DO
begin
if x = ficha.codigo then
begin
writeln('Ficha Nr.', filepos(ficheiro));
writeln('Codigo: ', ficha.codigo);
writeln('Descricao: ', ficha.descricao);
writeln('Quantidade: ', ficha.quantidade);
writeln('Data de Entrada: ', ficha.data);
writeln;
writeln('Confirma? (s/n)'); opcao:= readkey;
if opcao='s' then
begin
i:= filepos(ficheiro);
seek(ficheiro, i-1);
ficha.codigo:= '';
ficha.descricao:= '';
ficha.quantidade:= 0;
ficha.data:= '';
write(ficheiro, ficha);
end;
sair:= true;
writeln('Exclusao efectuada!');
readln;
end;
end;
end;
CLOSE(ficheiro);
if sair=false then
begin
writeln('Codigo nao encontrado!');
readln;
end;
end;
end;

begin
repeat
clrscr;
writeln(' 1 - INSERIR');
writeln;
writeln(' 2 - LISTAR');
writeln;
writeln(' 3 - ALTERAR');
writeln;
writeln(' 4 - EXCLUIR');
writeln;
writeln(' 0 - FIM');
opcao:=readkey;
if opcao='1' then INSER
else if opcao='2' then LISTA
else if opcao='3' then ALTERA
else if opcao='4' then EXCLUI;
until opcao='0';
end.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!