programik w pascalu - nida help ;/

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
PaST
Użytkownik
Posty: 521
Rejestracja: 2004-09-09, 20:19
Lokalizacja: Siedlce

programik w pascalu - nida help ;/

Post autor: PaST »

Hey, może pytanie wydać się trywialne, ale dzisiaj się zacząłem uczyć troszkę pascala. Jadę sobie z kursem jakimś, i był w nim napisany taki programik który raczej nie działa, iż nawet po wpisaniu poprawnego hasła znowu pokazuje okienko logowania

Kod: Zaznacz cały

Uses CRT;

Const
 haslo='Pascal';

Var
 wprowadz:String;
 petla:byte;

Begin
  REPEAT
    ClrScr;
    GotoXY(31,12);
    Write('Podaj haslo : ');
    ReadLn(wprowadz);
    IF petla=4 THEN
    REPEAT
      ClrScr;
      GotoXY(31,12);
      Write('Access Denied !');
      Sound(3160);
      Delay(500);
      Sound(3190);
      Delay(500);
    UNTIL 1=2;
    petla:=petla+1;
  UNTIL wprowadz=haslo;
  { Haslo poprawne, dalsza część programu }
End.

. wg. mnie jest to troszkę pokręcone, więc jakby ktoś mógł poprawić kod i wrzucić comment dlaczego tak jest to byłbym wdzięczny. Proszę o wyrozumiałość i nie bijcie :wink:
"Lepiej być ambitnym, a nie tylko tak sądzić" @ NumerRaz
Awatar użytkownika
Hannibal
Moderator w st. spocz.
Posty: 1644
Rejestracja: 2004-06-08, 16:03
Lokalizacja: Łódź

Re: programik w pascalu - nida help ;/

Post autor: Hannibal »

Pascal to zamieszchłe czasy ale IMHO Readln czyta też '\n' i stąd jest problem.
[size=75]Hannibal@current@2.6.X[/size]
Awatar użytkownika
kruszek
Użytkownik
Posty: 381
Rejestracja: 2004-08-30, 19:11
Lokalizacja: Kraków

Re: programik w pascalu - nida help ;/

Post autor: kruszek »

Po pierwsze... jesli w kursie z ktorego sie uczysz jest rzeczywiscie taki kod... wlaczajac w to styl skladni (mam na mysli IF, REPEAT itp)... oraz dziwne petle typu REPEAT (...) UNTIL 1 = 2.... to prosze wyrzuc ten kurs nawet przez zamkniete okno...

Po drugie... jedynym sensownym powodem dla mnie do nauki Pascala jest studiowanie na UJ Informatyki, tudziez innej postepowej uczelni....

Po trzecie... nie wiedzialem, ze w Pascalu mozna taki brzydki kod wyprodukowac... dziekuje, ze mnie uswiadomiles i poszerzylesz moje horyzonty...

Po czwarte... nie chce mi sie sprawdzac dlaczego tak dziala, bo Pascala mam na szczecie juz dawno za soba, a poza tym nie mam w tym momencie zadnego kompilatora, azeby sprawdzic, czy u mnie wystepuje ten sam problem co u Ciebie...

Po piate... C++ RULEZ...

Po szoste... Java SUX...

Po siodme... nie wdawajmy sie w wojne o podlozu religijnym nad wyzszoscia C++ nad Java, czy odwrotnie :wink:
Awatar użytkownika
PaST
Użytkownik
Posty: 521
Rejestracja: 2004-09-09, 20:19
Lokalizacja: Siedlce

Re: programik w pascalu - nida help ;/

Post autor: PaST »

Nie mnie to oceniać, czy pascal to zamierzchłe czasy (choć i takie wersje słyszałem) tylko sprawa jest tego pokroju, że pascala wybrałem sobie na maturze. tylko jakoś nigdy mi się nie chciało za bardzo programować, i do tego czasu wyżyłem bez tego, ale teraz co mus to mus. Co do tego programu - sam się zdziwiłem, że koles takie farmazony pisze. Do tego momentu wszystko nawet w miarę zrozumiale tłumaczył. Programik tego typu już sam napisałem troszkę inaczej(czytaj "po swojemu" i jakoś działa, także loosik. A co do tego kursu - hmm, ściągnąłem go z 4programmers.net i wydaje mi się, że nie powinno być aż takich błędów :shock:

pozdrawiam
"Lepiej być ambitnym, a nie tylko tak sądzić" @ NumerRaz
Awatar użytkownika
brx
Użytkownik
Posty: 723
Rejestracja: 2004-06-24, 14:37
Lokalizacja: Poznań/Lublin

Re: programik w pascalu - nida help ;/

Post autor: brx »

program jest napisany strasznie topornie...a warunek 1=2 rozwalił mnie totalnie...chyba gosć w Microsofcie programuje...

...widze ze nie tylko ja zdaje na maturze informatyke :wink: w dodatku pascala...jutro mam próbną ...zobaczymy jakie gnioty mi każą wymyślać...
Slackware Current - Kernel 2.6.18 - Xfce - - Aterm - Kadu
_______________________________________
Registered Linux User 363857 :D
Awatar użytkownika
kruszek
Użytkownik
Posty: 381
Rejestracja: 2004-08-30, 19:11
Lokalizacja: Kraków

Re: programik w pascalu - nida help ;/

Post autor: kruszek »

Jesli moge Ci cos podpowiedziec, to swoje pierwsze pascalowe kroczki stawialem z ta ksiazka - mam jej starsze wydanie. Nie wiem jak bym sie do niej teraz odniosl, bo bylo to bodajze jak chodzilem do IV klasy podstawowki, kiedy to postanowilem porzucic piekny jezyk Basic na rzecz wlasnie Turbo Pascala. Ksiazka ma napewno jedna zalete... jest krotka... i przynajmniej na moim mlodym umysle pozostawila wrazenie, ze w miare juz umiem TP...

ps... w zadnym jezyku nie programowalem dluzej niz Pascalu... tak jak mowilem zaczalem w 4 klasie podstawowki... a ostatnia stycznosc (mam nadzieje, ze ostatnia) mialem na I roku studiow, bo ponoc to bardzo dobry jezyk do nauki programowania (sic!).
Awatar użytkownika
Sad Mephisto
Administrator
Posty: 2824
Rejestracja: 2004-05-22, 13:24
Lokalizacja: Zabrze
Kontakt:

Re: programik w pascalu - nida help ;/

Post autor: Sad Mephisto »

Tak - ta książka jest warta polecenia.
[i]Thank you for noticing this notice. Now that you've noticed this notice, you may have noticed that this notice is noticably unnoticable.
$ python -c "print int(''.join(map(lambda x: str(len(x)),'Kto z woli i myśli zapragnie Pi spisać cyfry ten zdoła.'.split())))/1e+10"[/i]
Awatar użytkownika
Rookie One
Użytkownik
Posty: 230
Rejestracja: 2004-11-13, 13:16
Lokalizacja: Gliwice
Kontakt:

Re: programik w pascalu - nida help ;/

Post autor: Rookie One »

freepascal.org pisze:Advantages of programming in Pascal and Free Pascal
Maybe you think, why should I choose Pascal instead of, for example C. Or maybe you are comparing Free Pascal to another Pascal compiler. Well, in that case, be sure to read this page before making your decision. Well, for what is Free Pascal so good?

* Very clean language Pascal is a very nice language, your programs will be more readable and maintainable than for example in C, and let's even forget about C++. And you don't need to give up the power, the Pascal language is as powerful as you want it.
* No Makefiles Unlike most programming languages, Pascal does not need Makefiles. You can save huge amounts of time, the compiler just figures out itself which files need to be recompiled.
* Pascal compilers are Fast with a big F and Free Pascal is no exception. Yes, you no longer need to grow roots while compiling your programs, just hit the compile key and it's done, even for large programs.
* Each unit has it's own identifiers In Pascal you never need to worry about polluting the namespace, like in C where an identifier needs to be unique accross the entire program. No, in Pascal each unit gets it's own namespace and that's very relaxed.
* Integrated development environment Free Pascal comes with an IDE which work on several platforms, in which you can write, compile and debug your programs. You will save huge amounts of time using the IDE, the best programming friend you have.
* Great integration with assembler Do you think pascal is for wimps who need to learn programming? WRONG! It's excellent for high tech programming and for the supreme nerds among you we have the integrated assemblers. You can easily mix assembler code and Pascal code, in the language you wish? Prefer Intel styled assembler? No problem, if it's needed Free Pascal will convert it to ATT for you. Do you want to convert your program into a source file for Nasm? No problem, and all ATT assembler in your source files is automatically converted.
* Object oriented programming And if you do the serious programming, you are of course very interested in object oriented programming. Use the Turbo Pascal and Object Pascal ways of OOP according to your taste. The FCL and Free Vision and provide you with the powerful object libraries you need. For your database needs we support PostgreSQL, MySQL, Interbase and ODBC.
* Smartlinking Free Pascal's smart linker leaves out any variable or code that you do not use. That makes small programs small with a big S, while they are still statically linked, avoiding DLL hell!
* Distribution independence (Linux) As a result of this, software compiled by the Linux version of Free Pascal runs on any Linux distribution, making it much, much, easier to make your software support multiple Linux distributions.
* Available for a lot of platforms on several architectures Free Pascal is available for more platforms than most other Pascal compilers and allows easy cross-compiling, just change the target in the IDE and compile! And there is work going on for even more platforms and processors.
* Compatible Have existing code? Free Pascal is more compatible with it than any other Pascal compiler. We are almost completely compatible with Turbo Pascal and quite well compatible with Delphi source code. If you have code in another language, like C or assembler, just use favorite compiler for it and call it from Free Pascal.
zaczerpniete z http://www.freepascal.org/advantage.html

[ Dodano: Pią 03 Gru, 2004 15:57 ]
Tak przy okazji, poprawiony kod (wprowadzilem troche zmian w manierze pisania oraz komunikatach :P):

Kod: Zaznacz cały

uses crt;

const
   haslo = 'Pascal';

var
   wprowadz : String;
   petla : byte;

begin
   repeat
      clrscr;
      gotoXY(31,12);
      write('Podaj haslo: ');
      readln(wprowadz);
      if (petla = 4) then repeat {taki nawyk z tymi nawiasami jeszcze z PHP :) ale przynajmniej dzieki temu kod jest nieco czytelniejszy, warunki sa wyraznie oddzielone}
         clrscr;
         gotoXY(31,12);
         write('Dostep zabroniony!');
         sound(3160);
         delay(500);
         sound(3190);
         delay(500);
      until 1 = 2 {to, o ile rozumiem, ma zawiesic program po 4-krotnym podaniu blednego hasla? ja bym to rozwiazal troche inaczej - moze po prostu exit ;) }
      else petla := petla + 1; { <- tu byl najgrubszy blad w calym kodzie - brak else powodowal zupelnie inne od zamierzonego zachowanie programu!}
   until (wprowadz = haslo);
  { Haslo poprawne, dalsza część programu }
end.
;)
Ostatnio zmieniony 2004-12-03, 21:05 przez Rookie One, łącznie zmieniany 1 raz.
[color=darkblue][b]- [ Slackware 10.2, kernel 2.4.31 ]
- [ Windows XP Home SP2 ][/b][/color]
[size=75]Pentium 4 3 GHz HT, 512 MB RAM, Intel 915G[/size]
Registered Linux User #372988
Awatar użytkownika
PaST
Użytkownik
Posty: 521
Rejestracja: 2004-09-09, 20:19
Lokalizacja: Siedlce

Re: programik w pascalu - nida help ;/

Post autor: PaST »

No to dzieki za poprawienie, ale jak już napisałem, też zrobiłem to "po swojemu". W każdym bądź razie wszystko warto przestudiować :-)

Pozdr00
"Lepiej być ambitnym, a nie tylko tak sądzić" @ NumerRaz
tadziu
Użytkownik
Posty: 325
Rejestracja: 2004-05-23, 18:21
Lokalizacja: Gdańsk
Kontakt:

Re: programik w pascalu - nida help ;/

Post autor: tadziu »

@Rookie
Prawie poprawny kod ;) Trzeba jeszcze tylko po until 1=2 usunac srednik (bo przeciez dodales ELSE po tym) oraz przy ostatnim until wziac 'haslo' w cudzyslowy (bo to string).
dodam jeszcze ze zamiast until 1=2 ladniej by wygladalo until (true) ;)
Linux registered user #325402
Awatar użytkownika
Rookie One
Użytkownik
Posty: 230
Rejestracja: 2004-11-13, 13:16
Lokalizacja: Gliwice
Kontakt:

Re: programik w pascalu - nida help ;/

Post autor: Rookie One »

tadziu pisze:oraz przy ostatnim until wziac 'haslo' w cudzyslowy (bo to string).
Taaa, jasne... Zastanawiajace jest jednak to, ze wg ksiazki "Turbo Pascal. Programowanie", jak i wielu kursow internetowych, stringi wrzuca sie w apostrofy... ;/

Sorry, stary, pisac w pascalu zaczalem w III klasie podstawowki (a wiec 4 lata temu) i pisze w nim az do dnia dzisiejszego (Delphi), mam dosc spore doswiadczenie, wiec nie wciskaj mi, prosze, ze stringi daje sie w cudzyslowy.

A co do tego srednika - po prostu niedopatrzenie. :P
[color=darkblue][b]- [ Slackware 10.2, kernel 2.4.31 ]
- [ Windows XP Home SP2 ][/b][/color]
[size=75]Pentium 4 3 GHz HT, 512 MB RAM, Intel 915G[/size]
Registered Linux User #372988
tadziu
Użytkownik
Posty: 325
Rejestracja: 2004-05-23, 18:21
Lokalizacja: Gdańsk
Kontakt:

Re: programik w pascalu - nida help ;/

Post autor: tadziu »

Rookie One pisze:
tadziu pisze:oraz przy ostatnim until wziac 'haslo' w cudzyslowy (bo to string).
Taaa, jasne... Zastanawiajace jest jednak to, ze wg ksiazki "Turbo Pascal. Programowanie", jak i wielu kursow internetowych, stringi wrzuca sie w apostrofy... ;/
sorki, mialem na mysli apostrofy. jednak zauwaz, ze ty ich nie uzyles i haslo mozesz sobie wpisywac do woli - i tak nie przejdzie...
Linux registered user #325402
Awatar użytkownika
cherry
Moderator w st. spocz.
Posty: 1160
Rejestracja: 2004-06-15, 09:57
Lokalizacja: Kraków

Re: programik w pascalu - nida help ;/

Post autor: cherry »

Nie zapomnijcie zainicjalizować zmiennej petla na zero, chyba że zmienne globalne są zerowane domyślnie.
Cльaцквaрэ Линукс цypэнт
[url]http://www.pajacyk.pl/[/url]
[url]http://www.polskieserce.pl/[/url]
tadziu
Użytkownik
Posty: 325
Rejestracja: 2004-05-23, 18:21
Lokalizacja: Gdańsk
Kontakt:

Re: programik w pascalu - nida help ;/

Post autor: tadziu »

cherry pisze:Nie zapomnijcie zainicjalizować zmiennej petla na zero, chyba że zmienne globalne są zerowane domyślnie.
Co prawda FPC rzuca warningiem przy kompilacji, ale program dziala jak trzeba, wiec chyba zerowanie nie jest to konieczne...
Linux registered user #325402
jacol
Przyjaciel Forum
Posty: 680
Rejestracja: 2004-06-12, 17:34

Re: programik w pascalu - nida help ;/

Post autor: jacol »

Witam! Nie programowałem w Pascalu z 10 lat ale o ile dobrze pamiętam to np. BP 5.0 ma wbudowany odpluskwiacz i polecenie pracy krokowej. Więc kolega może odpluskwic kod sam .Pozdrawiam jacol
ODPOWIEDZ