Achtung: Dies ist eine historische Web-Site. Aktuell ist https://rainer.gerhards.net/ (engl) bzw https://www.rainer-gerhards.de/ (deutsch). Alle dynamischen Funktionen, Formulare etc auf dieser Seite sind abgeschaltet.
Datenschutzerklärung Impressum

 
01.08.2017, 22:49 Uhr
Hauptmenü
|--> Infos
|--> Forum
|--> Fotos


Sprachwahl
Sprache auswählen:




Online
Aktuell 1 Gast und 0 registrierte Benutzer online.

Anmeldung

Anmeldung




 





Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
rgerhards
Titel: EOF in Pascal  BeitragVerfasst am: 27.10.2008, 14:56 Uhr



Anmeldung: 25. Sep 2006
Beiträge: 688

Die Funktio EOF in Pascal ist etwas merkwürdig definiert. Dazu habe ich nochmal in meinem guten alten Buch "Einführung in die Programmiersprache Pascal" von K.-H.Becker und G. Lapmrecht, Vieweg Verlag, 3. Auflage 1986 geblättert. Das Buch ist nur noch im Antiquariat zu erhalten, die Lektüre oftmals etwas erheiternd, aber sicherlich immer noch korrekt (ausser, dass man "Kleinrechner" nun "PC" nennt Wink) Von der Entscheidenden Seite habe ich eine Foto gemacht, dieses Bildzitat ist meiner Meinung nach vom "Fair Use" abgedeckt:



Die eigentliche Einleselogik wird auf der rechten Seite unten beschrieben. Wirklich lesen kann man es aber nur in der hier erhältlichen "grossen" Version. Um "fair use" nicht überzustrapazieren, zitiere ich den Halbsatz auf Seite 46 hier als reinen Text:

Zitat:

...Wert TRUE liefert und damit die Schleife ohne Bearbeitung des zuletzt gelesenen Wertes aus der Datei beendet wird.


Dies ist ungewöhnlich in einer Programmiersprache, dadurch wird es quasi unmöglich zu erkennen, ob der letzte Wert noch gültig war oder nicht. Mit meinem kleinen Testprogramm kann man das Überprüfen:

Code:

program eoftest(input, output);

var
  i: integer;

begin
  read(i);
  while not eof do
  begin
    writeln(i);
    read(i)
  end;
  writeln('regular end of program');
end.


EOF erzeugt man unter DOS/Windows mit ctrl-Z, unter Linux und sonstigem *nix mit ctrl-D. Das Programm arbeitet korrekt, so lange man "ordentlich" einen Wert eingibt und dann die Return Taste drückt und dann erst EOF eingibt. Gibt man aber einen Wert ein, NICHT die Return-Taste und unmittelbar danach EOF, so wird der letzte Wert nicht mehr bearbeitet.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Daniel
Titel: RE: EOF in Pascal  BeitragVerfasst am: 05.12.2008, 20:36 Uhr



Anmeldung: 03. Dez 2008
Beiträge: 82

ergibt ctrl-d nicht immer einen programmabbruch?
ich meine der prozess wird dadurch gekillt, sodass der writeln(i) nicht zuende ausgeführt wird.

aber ich schätze bei deinem post, wird das letzte writeln(...) noch ausgeführt, oder?

_________________
http://www.unixxer.de
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
rgerhards
Titel: RE: EOF in Pascal  BeitragVerfasst am: 05.12.2008, 20:40 Uhr



Anmeldung: 25. Sep 2006
Beiträge: 688

ctrl-d (unter *nix) ist eigentlich nur EOF. Was dann passiert, kommt auf die Anwendung an. Ein Abbruch (a la ctrl-c) ist es aber sicher nicht. Pascal und EOF ist ein schwieriges Thema, das man wohl besser vermeidet. In 1613 haben wir recht merkwürdige Situationen gesehen. Der gpc geht wohl teilweise ihn und ignoriert das EOF, d. h. schliesst die Datei bei EOF und öffnet sie beim nächsten read(ln) Befehlt gleich wieder. Ich persönlich halte dieses Verhalten für nicht Standard-Konform, habe das aber nie weiter verfolgt (Pascal wird in der Praxis ja eigentlich nicht benutzt, ist aber meiner festen Überzeugung nach sehr gut für die Lehre).

Rainer
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Daniel
Titel: RE: EOF in Pascal  BeitragVerfasst am: 05.12.2008, 20:42 Uhr



Anmeldung: 03. Dez 2008
Beiträge: 82

upsala .. ctrl-c mit ctr-d vertauscht.
ja du hast recht Wink

mein gott. ich war heute zu früh in der arbeit....

btw. pascal ist sehr gut für die lehre aber nur dann wenn auch der lehrer stimmt.

_________________
http://www.unixxer.de
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
rgerhards
Titel: Re: RE: EOF in Pascal  BeitragVerfasst am: 05.12.2008, 20:44 Uhr



Anmeldung: 25. Sep 2006
Beiträge: 688

Daniel hat folgendes geschrieben::

btw. pascal ist sehr gut für die lehre aber nur dann wenn auch der lehrer stimmt.


lol - ist das nicht *immer* so? Wink
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Daniel
Titel: RE: Re: RE: EOF in Pascal  BeitragVerfasst am: 05.12.2008, 20:47 Uhr



Anmeldung: 03. Dez 2008
Beiträge: 82

klar der lehrer ist der wichtigste faktor.
ich denke aber die prinzipien kann man besser an pascal als an c lernen, da die sprache ansich viel sprechender ist.

_________________
http://www.unixxer.de
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
rgerhards
Titel: RE: Re: RE: EOF in Pascal  BeitragVerfasst am: 05.12.2008, 20:52 Uhr



Anmeldung: 25. Sep 2006
Beiträge: 688

Ja, eindeutig. Ich bin leidenschaftlicher C-Programmierer, aber C ist keine wirkliche Hochsprache, sodnern ein Hochsprachen-Assembler. Zum Erlernen von sauberen Programmierkonzepten gänzlich ungeeignet. Wer mit C arbeitet, sollte *sehr genau* wissen, was er tut.

Ich in überzeugter Pascal-Befürworter (in der Lehre), halte in gleichem Masse aber Pascal auch als für die Praxis irrelevant. Da ist Java angesagt (auch wenn ich das sehr selten Programmiere). Und C/C++ halt für Sachen, die das wirklcih brauchen.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
:: RSS Feed: ::
Page created in 0.149772882462 seconds.

Ferientips - das Urlaubsweb - Jan Gerhards - Ulrike Gerhards - Ulrike Gerhards Foto Site