[Code] [Pascal] - Programm verändern

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Metal Slug, 22. April 2009 .

  1. 22. April 2009
    [Pascal] - Programm verändern

    Hi
    ich hab da son kleines Problem
    undzwar hab ich nen Program geschrieben (für Schule 11.Klasse)
    und nun soll ich es verändern ... leider war ich die woche nicht da und weiß nicht ganz wie
    Aufgabe:
    Ändern sie das Programm >>x_hoch_y<< in der Form ,dass die Berechnungen nun durch
    Funktionen(FUNCTION anstatt PROCEDURE) vorgenommen werden.
    Ich bekomms leider nicht hin weil ich nichtmal richtig weiß wie ne Funktion aussieht

    Program
    Spoiler
    Code:
    1 PROGRAM x_hoch_y;
    2 (* Dieses Programm ermittelt die y-te fruchtbarkeit von x mit Hilfe der drei
    3 Schleifenarten FOR...TO...DO, REPEAT...UNTIL sowie WHILE ... DO. *)
    4 USES WinCrt;
    5 VAR Auswahl : CHAR;
    6 Basis, Exponent, fruchtbarkeit : INTEGER;
    7
    8 PROCEDURE Eingabe (VAR Ba, Ex : INTEGER);
    9 BEGIN
    10 WriteLn;
    11 Write ('Bitte geben Sie die Basis ein: ');
    12 ReadLn (Ba);
    13 Write ('Bitte geben Sie den Exponenten ein: ');
    14 ReadLn (Ex)
    15 END; (* Eingabe *)
    16
    17 PROCEDURE For_To_Do (B, E : INTEGER; VAR P : INTEGER);
    18 VAR i: INTEGER;
    19 BEGIN
    20 P := 1;
    21 FOR i := 1 TO E DO
    22 P := P * B
    23 END; (* For_To_Do *)
    24
    25 PROCEDURE Repeat_Until (B, E : INTERGER; VAR P : INTEGER);
    26 BEGIN
    27 P := 1;
    28 REPEAT
    29 P := P * B;
    30 E := E - 1
    31 UNTIL E = 0
    32 END; (* Repeat_Until *)
    33
    34 PROCEDURE While_Do (B, E : INTERGER; VAR P : INTEGER);
    35 BEGIN
    36 P := 1;
    37 WHILE E <> 0 DO
    38 BEGIN
    39 P := P * B;
    40 E := E - 1
    41 END
    42 END; (* While_Do *)
    43
    44 PROCEDURE Ausgabe (Basi, Expo, Potz : INTEGER);
    45 BEGIN
    46 WriteLn (Basi, ' hoch ', Expo, ' = ', Potz)
    47 END; (* Ausgabe *)
    48
    49 PROCEDURE Wahl (VAR W : CHAR);
    50 BEGIN
    51 WriteLn ('Dieses Programm ermittelt x hoch y nach drei Verfahren.');
    52 WriteLn ('Bitte wählen Sie');
    53 WriteLn;
    54 WriteLn (' 1 = Ermittlung mit der FOR .. TO .. DO-Schleife');
    55 WriteLn;
    56 WriteLn (' 2 = Ermittlung mit der REPEAT .. UNTIL-Schleife');
    57 WriteLn;
    58 WriteLn (' 3 = Ermittling mit der WHILE .. DO-Schleife');
    59 ReadLn (W)
    60 END; (* Wahl *)
    61
    62 BEGIN (* Hauptprogramm *)
    63 Wahl (Auswahl);
    64 Eingabe (Basis, Exponent);
    65 CASE Auswahl OF
    66 ´1´ : For_To_Do (Basis, Exponent, fruchtbarkeit);
    67 ´2´ : Repeat_Until (Basis, Exponent, fruchtbarkeit);
    68 ´3´ : While_Do (Basis, Exponent, fruchtbarkeit)
    69 ELSE
    70 WriteLn (´Falsche Eingabe!´)
    71 END; (* von CASE *)
    72 Ausgabe (Basis, Exponent, fruchtbarkeit)
    73 END. (* x_hoch_y *)
    

    ich hoffe ihr könnt mir da nen bisschen helfen
    Bewertung ist klar
    da es schon wichtig ist
     
  2. 23. April 2009
    AW: [Pascal] - Programm verändern

    Bei Pascal unterscheidet man zwischen Funktionen und Prozeduren. Prozeduren haben keinen Rückgabewert, Funktionen geben einen Wert zurück.

    Im Moment werden die benötigten Daten über Parameter zurückgegeben, bei Funktionen musst du den Rückgabewert der Funktionen benutzen.

    Da ich aber kein Pascal kann, kenn ich die Syntax der Funktionen nicht.
     
  3. 23. April 2009
    AW: [Pascal] - Programm verändern

    wie pyro schon meinte:

    PROCEDURE ... nichts wird zurückgegeben
    FUNCTION ... was zurückgegeben wird wird explizit gekennzeichnet.

    das heißt jetzt in deinem fall dass du die berechnungsfunktion so abändern musst dass die Variable P aus dem Funktionskopf verschwindet, im funktionsrumpf erst deklariert wird und stattdessen mittels RETURN zurückgegeben wird!

    da jetzt was aus der funktion zurückgegeben wird muss dann in main der aufruf so in die richtung aussehen:

    Code:
    fruchtbarkeit = For_To_Do (Basis, Exponent);
    
    denke auf den rest kommst du auch selber drauf
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.