#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren