| Autor | Správa |
KoskO
 Užívateľ
 Založený: 12.01.2012 Príspevky: 419 Bydlisko: Martin
 | Zaslal: Ne 12.02.12 18:35 |   |
Ahoj, ako ulohu som dostal spraviť dotazník alebo niečo na ten štýl a mal som použiť príkazy CASE a IF.
Spravil som niečo takéto no hádže mi to error, neviete v čom môže byť chyba?
| kód: | program dotaznik;
uses crt;
label navrat;
var i:integer;
odpoved,volba:char
begin
clrscr;
write('Vitajte v mojom dotazniku');
readln;
navrat:
writeln('čo by ste zmenili na našej škole');
writeln('a)nič, je to fajn');
writeln('b)pár maličkostí, ale inak nič');
writeln('c)Všetko, je to tu hrozne');
readln(odpoved);
CASE odpoved OF
'A','a' : begin
write('Otvor oči...');
readln;
goto navrat;
end;
'B','b': begin
write('robíš si srandu??' );
readln;
goto navrat;
end;
'C','c' : write('Super, môj človek');
ELSE begin
write('Nevies citat? Iba a/b/c');
readln;
goto skok;
end;
end;
readln;
clrscr;
write('Uspešne si to dokončil, chceš si to zopakovať? A/N');
IF (volba='a') OR (volba='A') then goto navrat else write('zbohom');
readln;
end.
|
dakujem |
_________________ CPU:AMD Athlon 64 X2 4200+;2,5GHz;MB:MSI MS-7369; RAM:1GB GoodRam;VGA:AMD Radeon HD6570; PSU:Fortron FSP350-60APN; HDD:Samsung HD161HJ;Monitor:BenQ GL950AM | |
  |
 |
F3RY
 Napomenutý užívateľ
 Založený: 23.12.2010 Príspevky: 522 Bydlisko: C:\Program Files\Poprad Vek: 18
 | Zaslal: Ne 12.02.12 19:41 |   |
Rozumies tomu kodu? Neviem naco je tam to goto, zbytocne komplikovane. Vyuziva sa to pre udavanie pozicie kurzora. Zbezne som to pozrel a zda sa mi vsetko v poriadku az na 3 riadok od konca. Nenacitavas vstup.
V pascale ti ukazuje poziciu riadka v ktorom ma chybu. |
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Radšej budem nenávidený za to kto som, ako milovaný za to kto nie som ! - Kurt Cobain
Naposledy upravil F3RY dňa Ne 12.02.12 19:42, celkom upravené 1 krát. | |
   |
 |
nBXXL
 Užívateľ
 Založený: 27.12.2008 Príspevky: 978 Bydlisko: Nové Zámky, Slovensko Vek: 18
 | Zaslal: Ne 12.02.12 19:42 |   |
Niesom jasnovidec, a predpokladám, že žiadneho tu ani nenájdeš.. preto, keď chceš svoj kód ukazovať iným, a chceš aby sa v ňom vyznali, dodržiavaj nasledovné zásady:
1. odsádzaj kód, tak aby bolo jasné, čo patrí do ktorého bloku (bloky sú napr. begin-end, case-end, atď) napr. takto:
| kód: | begin;
writeln(blabla);
end; |
| kód: | case a of
'A','a': begin
writeln(blabla);
end;
end;
|
2. nepoužívaj GOTO, je to prežitok z doby basicu a podobných jazykov, strašne to zneprehľadňuje kód, môže spôsobiť ťažko nájditeľné chyby.. náhradou GOTO sú funkcie a procedúry
A teraz k hľadaniu chýb: je dobré naučiť sa chyby si hľadať sám, pretože na chybách sa človek učí, a pokiaľ budeš čakať, kým ti tvoju chybu niekto nájde, tak strácaš drahocenný čas.. a pri väčších projektoch ti už nikto v tvojom kóde chyby hľadať nebude.. Tu je niekoľko tipov:
1. tvoj kompilátor/IDE ti vždy okrem chyby napíše aj jej znenie a jej umiestnenie, z toho by si mal byť schopný pochopiť o akú chybu sa jedná, pokiaľ to nedokážeš, tak aspoň keď žiadaš o pomoc, uveď tieto údaje, nech to ostatní nemajú ťažšie..
2. keď si hľadáš chybu, skús sa zamyslieť nad tým, že čo tvoj program robí, ja chápem, že je to ťažké, obzvlášť pokiaľ používaš veľakrát goto a case, ale v takomto malom programe je to ešte relatívne jednoduché.. mne napr. na prvý pohľad bije do očí riadok goto skok, vzhľadom na to, že žiadny label s menom skok nikde nemáš..
AD F3RY: goto nie je to isté, čo gotoxy, gotoxy sa používa na presun kurzora, goto sa používa na skok v rámci programu, je to stará praktika pochádzajúca s prehistorických jazykov ako basic a fortran, dnes sa to už nepoužíva a myslím, že ani nevyučuje..
a áno, je tam viac chýb, z ktorých jedna je tá, že premennú voľba nenačítava zo vstupu.. |
_________________ PC: MB: ASUS K8V SE Deluxe; CPU: AMD Athlon 64 2800+ 1.8GHz; GPU: Sapphire Radeon X1950GT AGP (500/600); RAM: Kingston 1GB DDR400 CL3 + A-Data 256MB DDR400 HDD: Western Digital 20 + 200GB; Monitor: LG 771E (17" CRT, stary ale dobry, aj ked trochu tmavy); PSU: Rexpower PZ-400W; OS: Windows 7 32-bit + ArchLinux 32-bit
NB: Asus K53SJ-SX093: i3-2310M + GT520M Optimus + 4GB RAM + Win7 64-bit + ArchLinux 64-bit | |
   |
 |
KoskO
 Užívateľ
 Založený: 12.01.2012 Príspevky: 419 Bydlisko: Martin
 | Zaslal: Ne 12.02.12 19:50 |   |
ach ano, uz to mám, problém bol v tom skok. Tam som sa pomýlil.. A este k tomu goto, aká je teda adekvátna náhrada za príkaz goto? |
_________________ CPU:AMD Athlon 64 X2 4200+;2,5GHz;MB:MSI MS-7369; RAM:1GB GoodRam;VGA:AMD Radeon HD6570; PSU:Fortron FSP350-60APN; HDD:Samsung HD161HJ;Monitor:BenQ GL950AM | |
  |
 |
killer
 Skúsený užívateľ
 Založený: 08.08.2009 Príspevky: 9897 Bydlisko: Martin
 | Zaslal: Ne 12.02.12 20:18 |   |
| nBXXL napísal: | | náhradou GOTO sú funkcie a procedúry |
Funkcie a procedúry
samoštúdium...hodne zdaru |
_________________ PCFórum Summer Session 2012
Formulár k predbežnej účasti nájdete v téme
Když neco rozeberem, tak leda buldozerem! \o/ | |
    |
 |
F3RY
 Napomenutý užívateľ
 Založený: 23.12.2010 Príspevky: 522 Bydlisko: C:\Program Files\Poprad Vek: 18
 | Zaslal: Ne 12.02.12 20:21 |   |
Aka nahrada? To goto tam pisat nemusis. Preto som sa ta pytal, ze ci vies ako to funguje. Mas tam vetvenie, cize ak sa podmienka splni, vypise text a program pokracuje dalej. Mas to zbytocne zdlhave a neprehladne. V case of uved iba podmienky. Usetris si begin/end, kedze za jednym prikazom to pisat nemusis a readln ti staci napisat raz po skonceni podmienky.
| nBXXL napísal: |
AD F3RY: goto nie je to isté, čo gotoxy, gotoxy sa používa na presun kurzora, goto sa používa na skok v rámci programu, je to stará praktika pochádzajúca s prehistorických jazykov ako basic a fortran, dnes sa to už nepoužíva a myslím, že ani nevyučuje..
|
Vdaka viem, ze to nieje gotoxy, ale na co sa to goto pouziva som nemal ani sajnu. |
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Radšej budem nenávidený za to kto som, ako milovaný za to kto nie som ! - Kurt Cobain | |
   |
 |
|
Nemôžete pridávať nové témy do tohto fóra. Nemôžete odpovedať na témy v tomto fóre. Nemôžete upravovať svoje príspevky v tomto fóre. Nemôžete mazať svoje príspevky v tomto fóre. Nemôžete hlasovať v tomto fóre.
|
|