PMG/Kurs 1214/kleine mathematische Beispiele

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>
== Addition zweier Zahlen ==


Wir probieren eine '''einfache Addition zweier ganzer Zahlen''' zu "programmieren".
Dazu müssen wir die Werte eingeben, verarbeiten lassen und ausgeben (EVA-Prinzip!).
<br>

:Prinzipiell geht dies ganz einfach, indem im Argument für ''write'' oder ''writeln'' (Unterschied testen) die Rechenoperation angegeben wird.
:Beachte die Datentypen und deren Konvertierung.

<run id="5162616f04fb1" >
writeln(inttostr(5+12));
</run>
<br>
Allerdings wird so nicht programmiert!
 * nicht allgemeingültig
 * keine variable Zuweisung der zu summierenden Zahlen möglich
 * keine erneute Verwendung der programmierten Programmteile möglich

Daher werden (kleine) '''Unterprogramme''' (Bausteine, Module genannt) erzeugt, die mit einem Namen versehen werden und über diesen aufgerufen werden können.
<br>
Beispiel für ein Unterprogramm (eine Funktion) in einer imperativen Programmierumgebung

[[Bild:Thomas_Function_3.JPG]]




''hier ein Beispiel für die Syntax im PWIKI''


<code id="5162616f04bd9">
function addition(a,b:integer):integer;
begin
result:=a+b;
end;
</code>

<run id="5162616f05035">
writeln(inttostr(addition(3,4)));
</run>
<br>

== Addition dreier Zahlen ==


Ergänze die ähnliche Funktion addition3 zur Bildung der Summe dreier reeller Zahlen!<br>
 ''Tipp: Kopiere den Quelltext aus den obigen Eingabeboxen und verändere ihn geringfügig.''
<code id="5162616f04c5e">

</code>

<run id="5162616f050a8">
writeln(floattostr(addition3(3,4,5)));
</run>

'''Den Checkbutton betätigen, wenn Du die Eingabeboxen ausgefüllt hast. Der Button gibt Dir eine Rückmeldung, ob dein Programmtext richtig scheint.'''

<check>
result := ((addition3(3,4,5) = 12.0) and (addition3(8,4,15) = 27.0));
</check>
<br>

== Addition einfacher Terme ==

Schreibe eine Funktion zur Berechnung der Summe von Produkt und Quotient zweier Zahlen.<br>
 ''Tipp: Kopiere wieder den Quelltext aus den obigen Eingabeboxen und verändere ihn.''
  Nenne die Funktion ''sumPQ'' - damit funtioniert der Check-Button!
<code id="5162616f04cd8">

</code>

<run id="5162616f0511a"></run>

<check>
result := ((sumPQ(3,6) = 18.5) and (sumPQ(8,4) = 34));
</check>

== Berechnung einer Quadratzahl ==

Schreibe eine Funktion zur Berechnung der Quadratzahlen.

<code id="5162616f04d4b"></code>

<run id="5162616f0518d"></run>


<check>
result := ((qua(3) = 9) and (qua(8) = 64));
</check>

== Berechnung mehrerer Quadratzahlen ==

Ergänze Dein Programm so, dass die ersten 5 (10, 20, ...), also <math>n</math> beliebigen Quadratzahlen berechnet und ausgegeben werden.<br>
Es werden also '''mehrere''' Werte ausgegeben. Dies ist mit einer ''function'' '''nicht''' möglich.<br>
Es wird eine ''procedure'' verwendet.

''Analysiere den folgenden Beispielquelltext im Vergleich zur Schreibweise einer Funktion.''


{| border="0"
 |-
 | <code id="5162616f04dba"> procedure qua2(a:integer);
var zahl, i:integer;
begin
for i:=1 to a do 
begin
zahl:=i*i;
writeln(zahl);
end;
end;</code> ||           || [[Bild:Thomas_N_QZ.jpg|right|thumb|100px|Struktogramm]]
 |-
 | <run id="5162616f05201">qua2(5);</run> || ||
 
 |}

== Berechnung beliebiger Anzahl ausgewählter Quadratzahlen ==


Verändere Dein Programm nun so, dass die  Quadratzahlen von <math>n</math> bis <math>m</math> berechnet und ausgegeben werden.

<code id="5162616f04e2a">

</code>

<run id="5162616f05276">

</run>


== einfaches Beispiel: Volumen- und Oberflächenberechnung  ==


Erstelle ein lauffähiges Programm zur Berechnung von Volumen und Oberfläche eines Quaders (Niveau: sehr einfach).


<code id="5162616f04e9c"></code>

<run id="5162616f052ed"></run>


== Berechnung der Nullstellen einer quadratischen Funktion ==


Es soll ein Programm geschrieben werden, das 
# entscheidet, ob eine quadratische Funktion keine, genau eine oder genau zwei Nullstellen besitzt
# die Werte dieser Nullstellen ausgibt

 <u>vorher</u> Algorithmus formulieren und z.B. Struktogramm entwerfen


<code id="5162616f04f0f"></code>

<run id="5162616f05365"></run>