Ir ao conteúdo

Programa com senha


sprUser

Posts recomendados

Postado

Pessoal estou fazendo um programa para bloquear a entrada sem senha, no pascalzim, ainda está bem simples o código, estou começando, bom tem alguns problemas que n consigo descobrir...

Na entrada quando pede para o usuário digitar Q para sair, ao apertar Q da ok, aparece la que o programa vai ser finalizado, mas está aparecendo tb que o acesso foi permitido, no demais ta tudo ok...

Bom queria saber, qual comando devo colocar, para Fechar o programa se o operador digitar Q...

O codigo;

Program senha ;
var senha:integer; oper:char;
begin
writeln (' ESTE PROGRAMA É PROTEGIDO POR SENHA ');
writeln;
writeln;
writeln ('Caso deseje continuar tecle S caso deseje sair tecle Q');
readln (oper);
if oper='Q' then
writeln ('fim do programa');

repeat
write ('digite uma senha');
readln (senha);

writeln ('ACESSO NEGADO');
writeln;
writeln;
writeln ('Você não tem acesso ao arquivo');
writeln;
writeln;


until (senha=12345);

clrscr;

writeln ('Você tem acesso ao arquivo');

End.

  • Membro VIP
Postado

Olá sprUser.

Bom queria saber, qual comando devo colocar, para Fechar o programa se o operador digitar Q...

Tem pelo menos duas possibilidades.:

1) Utilizando if/else

Observe que você colocou um if, mas independente da condição ser verdadeira ou falsa, o restante do código será utilizado.

Então, você poderia deixar o retante do código dentro do else desse if.

2) Usando um comando para fechar "na marra"

Ex.:

exit;

ou

halt

***

No aguardo.

Postado

if oper='Q' then
writeln ('fim do programa');

repeat
write ('digite uma senha');
readln (senha);

Se eu boto o else aqui, vai direto para a ultima linha...

writeln ('Você tem acesso ao arquivo');

o halt; e o exit; não funcionam já tentei de tudo nesse codigo.....

não vejo solução, se puder re-escrever essa parte, eu n vejo solução....

Obrigado pela ajuda !

no aguardo...

  • Membro VIP
Postado
if oper='Q' then
writeln ('fim do programa');

repeat
write ('digite uma senha');
readln (senha);

Se eu boto o else aqui, vai direto para a ultima linha...

Justamente... o que deve está faltando é colocar também esse trecho no else, já que faz parte da estrutura da senha...

Veja que o else deve ficar logo após o comando ou o bloco begin/end que vem depois do if. Até ai tudo bem, mas o próprio else só se vincula a um só comando ou a um bloco begin/end. Então, o repeat funciona como um comando só (engloba o que está dentro dele), daí para inseri os outros 2 comandos, será necessário inserir um begin/end nesse else. Um exemplo:

[color=#0000ff]PROGRAM[/color] Ex_IF_Else[color=#000000];[/color]
[color=#0000ff]VAR[/color]
num [color=#000000]:[/color][color=#0000ff]integer[/color][color=#000000];[/color]
[color=#0000ff]BEGIN[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color][color=#a31515]'Digite um número entre 1 e 10'[/color][color=#000000]);[/color]
[color=#ff0080]readln[/color][color=#000000]([/color]num[color=#000000]);[/color]
[color=#0000ff]if[/color] [color=#000000]([/color]num[color=#000000]<[/color][color=#ff8000]0[/color][color=#000000])[/color] [color=#0000ff]or[/color] [color=#000000]([/color]num[color=#000000]>[/color][color=#ff8000]10[/color][color=#000000])[/color] [color=#0000ff]then[/color]
[color=#0000ff]begin[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color][color=#a31515]'Numero fora da faixa'[/color][color=#000000]);[/color]
[color=#0000ff]end[/color]
[color=#0000ff]else[/color]
[color=#0000ff]if[/color] [color=#000000]([/color]num[color=#000000]<[/color][color=#ff8000]5[/color][color=#000000])[/color] [color=#0000ff]then[/color]
[color=#0000ff]begin[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color][color=#a31515]'O numero é menor que 5'[/color][color=#000000]);[/color]
[color=#0000ff]end[/color]
[color=#0000ff]else[/color]
[color=#0000ff]begin[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color][color=#a31515]'O numero é maior ou igual a 6'[/color][color=#000000]);[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
readln[color=#000000];[/color] [color=#008000]//aguar um ENTER para continuar[/color]
[color=#0000ff]END[/color][color=#000000].[/color]

o halt; e o exit; não funcionam já tentei de tudo nesse codigo.....

não vejo solução, se puder re-escrever essa parte, eu n vejo solução....

Neste contexto, o comando exit e halt vão funcionar da mesma forma. Pelo que eu vi, o halt não funciona no PascalZim, somente o exit. Mas então. Da mesma forma que o else precisa de begin/end para vincular dois ou mais comandos, o if também precisa. Sem o begin/end, ele só vincula um comando!

De qualquer forma, o mais recomendado é utilizar o if/else mesmo.

Mas se fosse utilizar, poderia ficar mais ou menos assim.

[color=#0000ff]Program[/color] protecao_senha[color=#000000];[/color]
[color=#0000ff]uses[/color]
CRT[color=#000000];[/color]
[color=#0000ff]var[/color]
senha[color=#000000]:[/color][color=#0000ff]integer[/color][color=#000000];[/color]
oper[color=#000000]:[/color][color=#0000ff]char[/color][color=#000000];[/color]
[color=#0000ff]BEGIN[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color][color=#a31515]' ESTE PROGRAMA É PROTEGIDO POR SENHA '[/color][color=#000000]);[/color]
writeln[color=#000000];[/color]
writeln[color=#000000];[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color][color=#a31515]'Caso deseje continuar tecle S caso deseje sair tecle Q'[/color][color=#000000]);[/color]
[color=#ff0080]readln[/color][color=#000000]([/color]oper[color=#000000]);[/color]
[color=#0000ff]if[/color] oper[color=#000000]=[/color][color=#a31515]'Q'[/color] [color=#0000ff]then[/color]
[color=#0000ff]begin[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color][color=#a31515]'Fim do programa'[/color][color=#000000]);[/color]
writeln[color=#000000];[/color]
exit[color=#000000];[/color] [color=#008000]//pula para o END.[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
[color=#0000ff]repeat[/color]
[color=#ff0080]write[/color] [color=#000000]([/color][color=#a31515]'digite uma senha'[/color][color=#000000]);[/color]
[color=#ff0080]readln[/color] [color=#000000]([/color]senha[color=#000000]);[/color]
[color=#ff0080]writeln[/color] [color=#000000]([/color][color=#a31515]'ACESSO NEGADO'[/color][color=#000000]);[/color]
writeln[color=#000000];[/color]
writeln[color=#000000];[/color]
[color=#ff0080]writeln[/color] [color=#000000]([/color][color=#a31515]'Você não tem acesso ao arquivo'[/color][color=#000000]);[/color]
writeln[color=#000000];[/color]
writeln[color=#000000];[/color]
[color=#0000ff]until[/color] [color=#000000]([/color]senha[color=#000000]=[/color][color=#ff8000]12345[/color][color=#000000]);[/color]
ClrScr[color=#000000];[/color]
[color=#ff0080]writeln[/color] [color=#000000]([/color][color=#a31515]'Você tem acesso ao arquivo'[/color][color=#000000]);[/color]
[color=#0000ff]END[/color][color=#000000].[/color]

Postado

Simon quero ser seu pupilo :D

Muito Obrigado mesmo, entendi tudo e está perfeito o programa, vou usar ele e tentar colocar outros dois programa, e um loader que criei antes....

Pode me passar algum contato? Skype, facebook ou algo assim, para trocar uma ideia cntg quando tiver tempo?

  • Membro VIP
Postado
Simon quero ser seu pupilo :D

Muito Obrigado mesmo, entendi tudo e está perfeito o programa, vou usar ele e tentar colocar outros dois programa, e um loader que criei antes....

Pode me passar algum contato? Skype, facebook ou algo assim, para trocar uma ideia cntg quando tiver tempo?

Que bom entendeu... ^_^

Então, aqui sempre tem um pessoal bem ativo. Eu particularmente acesso todos os dias e em horários diversos... Fora os usuários usuários que acessam esporadicamente.

Sugiro que caso tenha alguma dúvida, crie os seus tópicos normalmente, que alguns dos usuários estão sempre "vigiando"... e além do mais as dúvidas e soluções são compartilhadas com outros usuários..

Abraços

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!