Vita:Vezérlési szerkezet

A Programozás Wiki wikiből

A "Ciklus" rész nekem nem teljesen tiszta. Remélem, csak én értettem félre, hogy az egy pascal példa. Mert ha pascal, akkor a while ciklus feltételében hiányzik a fájl azonosító, nem?

While (Not Eof(f)) Do Begin
  ReadLn(f, Line);
  WriteLn(Line);
End;

Az EoF függvény akkor ad vissza igaz értéket, ha elértük a fájl végét, nem? Persze, csak akkor ha pascal nyelvről beszélünk. Ha nem akkor bocsi. :) FlamingClaw 2010. október 10., 16:49 (UTC)

Teljesen jó (bár kicsit értelmetlen) a példa. Mind az eof() mind a writeln() használható fájlreferencia nélkül is, amely esetben az alapértelmezett bemeneten (stdin) dolgoznak. 109.61.42.221 2010. október 11., 02:16 (UTC)

109.61.42.221 Részére. Ok, és nem is kötekedni akarok, csak, mit jelent az , hogy alapértelmezett bemenet? Ha az alapértelmezett bemenet (input) a billentyűzet, akkor miért kell vizsgálni, hogy elértük e a fájl végét? Kicsit utána néztem, és nem csak pascalban van EOF, hanem C++ és a Perl-ben is , de ahogy levettem, ezen nyelvekben is a fájl végét vizsgáló függvények azonosítói....hm... Azt nem tudtam, hogy fájlreferencia nélkül is lehet használni az EoF függvényt...megint megérte felnézni a wikire..he..he.. Vagy nem a billentyűzet az alapértelmezett bemenet? Kérlek válaszolj! FlamingClaw 2010. október 11., 14:50 (UTC)

Azért kell vizsgálni, hogy elértük -e a fájl végét, mert egyébként csak egy sort lehetni beírni, hiszen a readln() csak sorvégig olvas. Így meg fájlvége jelig (DOS-on Ctrl-Z, Unixon Ctrl-D) akármennyi sort. A példa értelmetlen, de ettől még formailag helyes. Sting 2010. október 12., 01:07 (UTC)


Ne, szívd mellre a dolgot! Nem a munkád szóltam le, csak arra céloztam, hogy egy valós programban azt, ami itt a ciklusmagban szerepel gyakorlatilag nem fogsz találni. Ugyanekkor ez tök mindegy itt és most, hiszen a példa célja a ciklust, mint vezérlési szerkezet demonstrálása, így tök mindegy mi van a belsejében. Sting 2010. október 12., 06:30 (UTC)

Doi Részére.
Nem állt szándékomban értetlenkedni, csak érteni akartam. Sőt, én windowsban látom a világot, így a linuxos ismereteim eléggé hiányos, mondhatni semmilyen. És nem is állítom, hogy jobban tudok nálad bármit is, csak saját ismereteimre támaszkodva próbálok talpon maradni. Ha támadásnak tűnt, akkor én kérek elnézést. FlamingClaw 2010. október 12., 14:44 (UTC)

Doi Részére.
Csak még egyszer bocsi, a vita-nyitásért. A helyzet az, hogy a napokban néztem utána a szabványos I/O átirányításának mélyebben(Turbo Pascal) és ott példaként fájlváltozó nélkül volt jelen a EoF függvény. Egyből beugrottál, hogy ez volt az ami nekem nem volt gömbölyű.

Program io;
Var ch:Char;
Begin
  Repeat
    Read(ch);
    Write(ch);
  Until EoF;
End.

Természetesen így is helyes a program..(teszteltem)..Remélem, nincs harag. Én tévedtem. FlamingClaw 2010. november 6., 06:26 (UTC)

Nincs semmi gond. Az átirányítás linux alatt igen gyakran használt jószág. A fenti kódoddal meg vigyázz, mert üres bemenetnél hibát fog dobni. Doi 2010. november 6., 07:54 (UTC)