Prozeduren

Aus ProgrammingWiki
Archivierte Version vom 2020-06-21T09:33:03+00:00. Aktuelle Version

Inhaltsverzeichnis

Definition von Prozeduren

Um Kreisflächen beliebiger Radien zu bestimmen, war bisher immer die Neudefinition des Radiuses notwendig.
Wie kann der Radius als Argument übergeben werden?

Lösungsidee:

Definiere eine Prozedur, die ähnlich einer mathematischen Funktion einen Funktionswert zurückgibt.

Mathematik:

flaeche: r \longrightarrow \pi \cdot r^2
oder:
flaeche(r) = \pi \cdot r^2

 
Funktionsorientierte Programmierung:

Flaechenberechnung.gif

Implementation:

Wir überzeugen uns zunächst davon, dass wir tatsächlich eine Prozedur definiert haben:

Nun können wir Berechnungen mit beliebigen Radien vornehmen:

Interpretation:

  • Die Prozedur (lambda (r) (* pi r r)) wird an den Namen flaeche gebunden.
  • Der Parameter r heißt gebundene Variable.
  • Die Variablen * und pi sind dagegen ungebunden oder frei.

Beachte:
Die Bindung einer Prozedur an einen Namen heißt Prozedurabstraktion. Sie ist aber nicht notwendig!
In Scheme können auch unbenannte Prozeduren verwendet werden:

Zusammenfassung

  • Benutzerdefinierte Prozeduren werden mit λ-Ausdrücken definiert.
  • Allgemeine Syntax: (lambda (<parameter>) <body>).<li>Die Anzahl der Parameter kennzeichnet die <em>Stelligkeit</em> einer Prozedur. Ist die Parameterliste leer, spricht man von <em>nullstelligen</em> Prozeduren,</li><li>Die Parameter sind gebundene Variablen, die beliebig bezeichnet werden können, sofern sie nicht mit freien Variablen im Körper übereinstimmen.</li><li>λ-Ausdrücke können an Prozedurnamen gebunden werden (<em>Prozedurabstraktion</em>).</li><h2 id="Aufgaben">Aufgaben</h2> <ol> <li> <h3 id="Sinnvolles_Runden">Sinnvolles Runden</h3><p>Für alle nachfolgenden Berechnungen ist es sinnvoll, über eine Prozedur zu verfügen, die auf eine <em>beliebige</em> Anzahl von Nachkommastellen rundet.<br> <strong>Beispiele:</strong></p>
    (runden 12.3456 2)  --> 12.35
    (runden 0.005712 3) --> 0.006
    
    <p>Nutzen Sie zur Implementation die Standard-Prozedur <tt>round</tt>, die lediglich ganzzahlig rundet.</p>
    </li> <li> <h3 id="Vollzylinder">Vollzylinder</h3><p>Schreiben Sie eine Prozedur zur Volumenberechnung eines geraden Vollzylinders.</p>
    </li> <li> <h3 id="Hohlzylinder">Hohlzylinder</h3><p>Implementieren Sie nun eine Prozedur zur Volumenberechnung eines geraden Hohlzylinders.</p>
    </li> <li> <h3 id="Pyramide_und_Pyramidenstumpf">Pyramide und Pyramidenstumpf</h3><p>Definieren Sie zunächst die Prozedur zur Berechnung des Volumens und der Oberfläche gerader quadratischer Pyramiden.</p>
    <table border="0" cellspacing="0" cellpadding="0"> <tr> <td width="250" align="center"> <p>Pyramide1.gif</p></td> <td width="350" valign="center"> <p>In einer nun geringeren Höhe wird die Spitze der quadratischen Pyramide abgeschnitten.<br> Zurück bleibt ein Pyramidenstumpf.<br> Schreiben Sie zwei Prozeduren, die entsprechend dieser Vorstellung das Volumen und den Oberflächeninhalt des Pyramidenstumpfes ermitteln.</p></td> </tr> </table>
    </li> <li> <h3 id="Regelmäßiges_N-Eck">Regelmäßiges N-Eck</h3><table border="0" cellspacing="0" cellpadding="0"> <tr> <td width="250" align="center"> <p>N_Eck1.gif</p></td> <td width="350" valign="center"> <p>Zu einem regelmäßigen N-Eck sind der Außenradius r und die Eckenzahl N \geq 3 gegeben.<br> Berechnen Sie den Umfang und den Flächeninhalt dieses N-Ecks.</p></td> </tr> </table>
    </li> </ol> </body></parameter>