Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Klausur-Fragen (https://www.delphipraxis.net/164205-klausur-fragen.html)

hotkey 2. Nov 2011 16:22

Klausur-Fragen
 
Hallo , ich schreibe morgen eine Informatik-LK-Klausur und habe nun ein paar Fragen:

Was sind Parameter , wo ist der Unterschied zwischen Parameter und Variable , haben Parameter einen Vorteil?

Warum ist es nicht gut , Variablen global zu deklarieren ?

Eine Funktion liefert einen Wert zurück , eine Prozedur nicht , mein Lehrer : eine Prozedur auch => verunsichert.

Record : Eine Zusammenfassung von verschiedenen Datentypen zu einem komplexen ? Richtig ?


Wäre echt nett , wenn die Fragen beantwortet werden , ist super wichtig !

RWarnecke 2. Nov 2011 16:28

AW: Klausur-Fragen
 
Unter diesem Link findest Du viele Antworten auf Deine Fragen.

schlagzu 2. Nov 2011 16:33

AW: Klausur-Fragen
 
Hallo,

Parameter übergibst du einer Prozedur/Funktion, eine Variable deklarierst du:

procedure <Name>(<Parameter>);
<Variablen- und Konstanten>
begin
<Anweisungen>
end;

function <Name>(<Parameter>): <Rückgabetyp>;
<Variablen- und Konstanten>
begin
<Anweisungen>
end;

Warum ist es nicht gut , Variablen global zu deklarieren ?

Keine Ahnung! Vllt der Übersicht halber, oder zum Schutz, dass sie nicht zufällig überschrieben wird, wenn eine andere Prozedur drauf zugreift?

Eine Funktion liefert einen Wert zurück , eine Prozedur nicht , mein Lehrer : eine Prozedur auch => verunsichert.

Noch nie davon gehört.


Record : Eine Zusammenfassung von verschiedenen Datentypen zu einem komplexen ? Richtig ?

Was sind Records?

Records ermöglichen es, mehrere Variablen zu gruppieren. Dies ist beispielsweise dann hilfreich, wenn oft die gleiche Menge an Variablen benötigt wird, oder eine Menge Variablen logisch zusammengefasst werden soll. Eine weitere Situation in der Records unverzichtbar sind ist, wenn im Programm mehrere Datensätze gespeichert und verwaltet werden sollen, beispielsweise in einem Adressbuch
(Quelle: http://de.wikibooks.org/wiki/Program...ascal:_Records) Besser kann man es nicht sagen.

MfG schlagzu

Sir Rufo 2. Nov 2011 16:37

AW: Klausur-Fragen
 
Parameter:
Delphi-Quellcode:
procedure Foo( IchBinEinParameter : string );
var
  IchBinEineVariable : string;
begin
  // irgendwas
end;
Globale Variable:
Da besteht die Gefahr, dass man sich eben diese gegenseitig überschreibt:
Delphi-Quellcode:
var
  IchBinGlobal : integer;

procedure Foo1;
begin
  WriteLn( IntToStr( IchBinGlobal ) );
end;

procedure Foo2:
begin
  for IchBinGlobal := 1 to 10 do
    Foo1;
end;

procedure Foo3;
begin
  for IchBinGlobal := 1 to 10 do
    Foo2;
end;
besser also so (ganz ohne Globale Variable)
Delphi-Quellcode:
procedure Foo1( Value : integer );
begin
  WriteLn( IntToStr( Value ) );
end;

procedure Foo2:
var
  IchBinLokal : integer;
begin
  for IchBinLokal := 1 to 10 do
    Foo1( IchBinLokal );
end;

procedure Foo3;
var
  IchBinLokal : integer;
begin
  for IchBinLokal := 1 to 10 do
    Foo2;
end;
Procedure/Function Wert zurückliefern
Delphi-Quellcode:
function FooFunc : integer;
begin
  Result := 10;
end;

procedure FooProc( var Value : integer );
begin
  Value := 10;
end;

var
  FooValue : integer;
begin
  FooValue := 0;
  FooValue := FooFunc;
  WriteLn( IntToStr( FooValue ) ); // Ausgabe: 10

  FooValue := 0;
  FooProc( FooValue );
  WriteLn( IntToStr( FooValue ) ); // Ausgabe 10
end.
Record: da hast du ja im Prinzip schon die richtige Definition gegeben ;)

hotkey 2. Nov 2011 16:59

AW: Klausur-Fragen
 
Alles klar vielen Dank für die Antworten !

Namenloser 2. Nov 2011 17:15

AW: Klausur-Fragen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1134080)
Globale Variable:
Da besteht die Gefahr, dass man sich eben diese gegenseitig überschreibt:
Delphi-Quellcode:
var
  IchBinGlobal : integer;

procedure Foo1;
begin
  WriteLn( IntToStr( IchBinGlobal ) );
end;

procedure Foo2:
begin
  for IchBinGlobal := 1 to 10 do
    Foo1;
end;

procedure Foo3;
begin
  for IchBinGlobal := 1 to 10 do
    Foo2;
end;

For-Schleifen mit globalen Variablen erlaubt der Compiler übrigens gar nicht erst (außer im Rumpf eines Konsolenprogramms).

DeddyH 2. Nov 2011 17:17

AW: Klausur-Fragen
 
Mein Compiler erlaubt das, gibt aber eine Warnung aus.

Romiox 2. Nov 2011 17:25

AW: Klausur-Fragen
 
Zitat:

Zitat von hotkey
Eine Funktion liefert einen Wert zurück , eine Prozedur nicht , mein Lehrer : eine Prozedur auch => verunsichert.

Die Antwort von Sir Rufo war ja schon recht umfassend,
nur so viel noch dazu:

Funktionen haben einen Rückgabewert, ja.

Prozeduren haben keinen Rückgabewert, nein.
Prozeduren können aber übergebene Variablen verändern (Funktionen eigentlich auch *scratch* - nicht so wichtig),
sofern diese im Kopf als var-Parameter deklariert sind (
Delphi-Quellcode:
procedure FooProc( var Value : integer );
).
Wenn nicht würde diese Prozedur zwar abgearbeitet, die übergebene Variable aber nicht verändert.

Viel Erfolg :)

Namenloser 2. Nov 2011 17:25

AW: Klausur-Fragen
 
Zitat:

Zitat von DeddyH (Beitrag 1134092)
Mein Compiler erlaubt das, gibt aber eine Warnung aus.

Hmm interessant, in diesem Fall scheint es tatsächlich zu funktionieren. Aber bei verschachtelten Funktionen geht es nicht:
Delphi-Quellcode:
procedure Test;
  var Bar: integer;
  procedure Foo;
  begin
    for Bar := 0 to 3 - 1 do
      showmessage(inttostr(Bar));
  end;
begin
  Foo;
end;
Zitat:

[Pascal Fehler] Unit1.pas(31): E1019 FOR-Schleifenvariable muss eine einfache lokale Variable sein

p80286 2. Nov 2011 17:33

AW: Klausur-Fragen
 
Zitat:

Zitat von hotkey (Beitrag 1134073)
Eine Funktion liefert einen Wert zurück , eine Prozedur nicht , mein Lehrer : eine Prozedur auch => verunsichert.

Es gibt die Möglichkeit, daß eine Pocedure einen Wert zurück gibt, und zwar dann wenn ein oder mehrere Parameter als var übergeben werden.
z.B.
Delphi-Quellcode:
procedure DecodeDate(const DateTime: TDateTime; var Year, Month, Day: Word);
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz