AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

5 Programmteile, Erklärung gesucht, bitte.

Ein Thema von linomail · begonnen am 21. Jan 2017 · letzter Beitrag vom 22. Jan 2017
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.583 Beiträge
 
Delphi 12 Athens
 
#1

AW: Hilfe

  Alt 21. Jan 2017, 22:25
Zitat:
Soweit ich weiß ist das sogar eine Totsünde die Iterations-Variable einer For-Schleife selber hochzuzählen.
Geht das überhaupt so einfach? Ich meine nämlich das geht nur mit erheblichen Klimmzügen.
Und selbstmordgefährdet, denn wenn dabei das Schleifenende übersprungen wird, dann stoppt es da nicht. (kein >= im Abbruch, sondern ein =)

Eigentlich nur einmal böse rumpointern (referenzieren und dereferenzieren) und damit die Codeprüfung umgehen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: 5 Programmteile, Erklärung gesucht, bitte.

  Alt 21. Jan 2017, 22:39
Ihr solltet bei solchen Aufgaben bitte bedenken:

Es geht nicht um die mögliche Programmierung mit einer konkreten Entwicklungsumgebung, sondern ausschließlich um das Verständnis dessen, was dort als Quelltextfragment vorgegeben ist.

Keines der Beispiele muss auch nur ansatzweise kompilierbar sein.
Es handelt sich ausschließlich um Gedankenexperimente und die Prüfung, ob die Lernenden in der Lage sind, das Geschriebene zu verstehen.

Statt
Delphi-Quellcode:
For ik:= 1 to i+3 do
begin
writeln("abc"); i:=i+1;
end;
könnte da auch sowas stehen:
Delphi-Quellcode:
für ik von 1 bis i + 3
wiederhole
  Schreibe("abc");
  i := i + 1;
Die Frage lautet nun: Was passiert im folgenden Programmteil?

Welche Antwort gebt ihr nun in der ersten Version und welche in der Zweiten?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.583 Beiträge
 
Delphi 12 Athens
 
#3

AW: 5 Programmteile, Erklärung gesucht, bitte.

  Alt 21. Jan 2017, 22:45
Oder anders gesagt "es soll nicht kompilieren, sonst könnten die es einfach ausführen, ohne nachzudenken"
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: 5 Programmteile, Erklärung gesucht, bitte.

  Alt 21. Jan 2017, 22:50
Oder anders gesagt "es soll nicht kompilieren, sonst könnten die es einfach ausführen, ohne nachzudenken"
Ja, durchaus.

Die Leute sollen sich ganz konkrete Gedanken machen. Nur kompilieren und geht, reicht nicht zum Lernen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.583 Beiträge
 
Delphi 12 Athens
 
#5

AW: 5 Programmteile, Erklärung gesucht, bitte.

  Alt 21. Jan 2017, 22:59
Die Leute sollen sich ganz konkrete Gedanken machen. Nur kompilieren und geht, reicht nicht zum Lernen.
Wobei das ja schon ein bissl gemein ist.
Zitat:
Delphi-Quellcode:
For ik:= 1 to i+3 do
begin
  writeln("abc");
  i:=i+1;
end;
Erstmal ist i nicht initialisiert, oder jemand hat nur die Hälfte gezeigt.
Und dann macht die Schleife nicht das, was Viele vielleicht denken würden, denn Pascal/Delphi berechnet den Endwert zu Beginn, cached das und "irgnoriert" somit Änderungen.
In den For-Schleifen von C-Sprachen ist das anders.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#6

AW: 5 Programmteile, Erklärung gesucht, bitte.

  Alt 21. Jan 2017, 23:04
Oder der Delphi-Fan ("Lehrer") denkt sich, der Code funktioniert schon so wie er da steht und weiß von dem gecache nichts.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: 5 Programmteile, Erklärung gesucht, bitte.

  Alt 21. Jan 2017, 23:23
Es kommt darauf an wie die Schleife im Assembler umgesetzt wird

Code:
i:=5;              mov ebx,$0005
for ik:=0 to i+3 do lea eax,[ebx+$03]
                    test eax,eax
                    jl +$05
                    inc eax
inc(i,1);          inc ebx
                    dec eax
                    jnz -$04
Da wird nichts gecached.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: 5 Programmteile, Erklärung gesucht, bitte.

  Alt 21. Jan 2017, 23:42
Oder der Delphi-Fan ("Lehrer") denkt sich, der Code funktioniert schon so wie er da steht und weiß von dem gecache nichts.
Ich formuliere es mal etwas dreist:

So doof, wie Du das Lehrpersonal hinstellst, ist es nun wirklich nicht. Habe mich im Laufe meines Lebens öfter mal damit rumschlagen müssen.

Es geht immer um das abstrakte Lernen und nicht um die konkrete Umsetzung.

Für 'ne Klausur könnte der Prof. / Lehrer auch 'ne eigene Phantasiesprache wählen. Wesentlich ist nur, dass abstrakte Gedanken und Formalitäten klar abgebildet werden.

Wenn das oft wie Pascal/Delphi aussieht ist das ein Nebeneffekt, aber für die Lösung der Aufgabe nicht wesentlich.

Klar ist es hilfreich, wenn man das Programmieren mit 'ner Entwicklungsumgebung lernt, aber es geht auch ohne. Und in Klausuren muss man die Aufgaben auch ohne Entwicklungsumgebung lösen können, da hat man nur Papier und Bleistift/Kugelschreiber/Füller.

@p80286
a) wird von Delphi genommen
Pascal-Script von RemObjekt, dass man gut in Delphiprogramme einbinden kann, nutzt Variante b). Hab's eben extra ausprobiert.

@a.def:
Die Aufgabenstellungen sind alle so, dass man da nachdenken muss, um zu verstehen, was da passiert. Es geht nicht darum, dass man das irgendwie mit Delphi kompilieren oder gar sinnvoll nutzen kann.

Und einige der Aufgaben enthalten gravierende Fehler. Und Aufgabe ist es, diese gravierenden Fehler zu erkennen und zu benennen.

Hier
Delphi-Quellcode:
For ik:= 1 to i+3 do
begin
 writeln("abc"); i:=i+1;
end;
heißt die Antwort also sinngemäß.

Da i im Laufe der Schleife permanent erhöht wird, wird das Ende der Schleife nie erreicht.

Geändert von nahpets (21. Jan 2017 um 23:56 Uhr) Grund: Es ist zu spät zum richtig Schreiben, meinte Edit ;-)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: 5 Programmteile, Erklärung gesucht, bitte.

  Alt 21. Jan 2017, 23:04
@nahpets
Textverständnis gut.
Wobei trotzdem interessant wäre in welcher Sprache
Delphi-Quellcode:
For ik:= 1 to i+3 do
begin
 writeln("abc"); i:=i+1;
end;
realisiert werden soll.

a) Der Endpunkt der Schleife i+3 wird vor dem Eintritt in die Schleife festgelegt, dann läuft sie von 1 bis i+3
b) Das erreichen des Endpunktes wird nach jedem Schleifendurchlauf überprüft, dann hast Du einen Käfer er läuft und läuft und läuft und ....

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz