📄 dpue080.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Delphi Projekt / 躡ung: Einf黨rung zu zyklischen Strukturen</title>
<meta NAME="Classification" CONTENT="Education, Bildung">
<meta NAME="KeyWords" CONTENT="Repeat, Until, Schleife, Zyklus, Delphi, Informatik, Gymnasium, Plauen, Sachsen, Grundkurs, Mirko, Pabst, Programmierung, Lessing, Unterricht, Schule">
<meta NAME="Author" CONTENT="Mirko Pabst">
</head>
<body TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="acrop_bk.gif">
<table CELLSPACING="0" CELLPADDING="0">
<tr>
<td valign="top" width="159"><a name="Anfang"></a><a href="index.htm"><img SRC="athena.gif" ALT="athena.gif (7242 Byte)" border="0" WIDTH="157" HEIGHT="140"></a></td>
<td valign="top"><div align="center"><center><table BORDER="1" BGCOLOR="#C0C0C0">
<tr>
<td ALIGN="LEFT" BGCOLOR="#EEEEEE"><!--webbot bot="ImageMap" rectangle="(301,0) (537, 16) http://www.lessing-gymnasium.de" rectangle="(228,0) (301, 16) mailto:mirko.pabst@gmx.de" SRC="top.gif" border="0" startspan --><MAP NAME="FrontPageMap"><AREA SHAPE="RECT" COORDS="301, 0, 537, 16" HREF="http://www.lessing-gymnasium.de"><AREA SHAPE="RECT" COORDS="228, 0, 301, 16" HREF="mailto:mirko.pabst@gmx.de"></MAP><a href="_vti_bin/shtml.exe/dpue080.htm/map"><img ismap usemap="#FrontPageMap" border="0" height="17" src="top.gif" width="593"></a><!--webbot bot="ImageMap" endspan i-checksum="640" --><div align="center"><center><table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" align="center"><font color="#FF0000"><strong><big><big>Einf黨rung
zyklischer Strukturen<br>
</big><em>- Quadratwurzel nach Heron -</em></big></strong></font></td>
</tr>
</table>
</center></div></td>
</tr>
<tr>
<td ALIGN="center" BGCOLOR="#EEEEEE" valign="middle"><a HREF="index.htm"><img SRC="i.gif" BORDER="0" WIDTH="73" HEIGHT="25"></a> <a HREF="dpue070.htm"><img SRC="l.gif" BORDER="0" HEIGHT="24" WIDTH="25"></a> <a HREF="dpue090.htm"><img SRC="r.gif" BORDER="0" WIDTH="25" HEIGHT="25"></a></td>
</tr>
<tr>
<td ALIGN="left" BGCOLOR="#EEEEEE" valign="middle"> <a href="#Vorbemerkungen:">Vorbemerkungen</a><br>
<a href="#Iterationsbegriff">Der Iterationsbegriff</a><br>
<a href="#Quadratwurzel nach Heron">Einf黨rung des Nichtabweisenden Zyklus
-Quadratwurzel nach Heron-</a><br>
<small> <a href="#Szenario">Szenario</a></small><br>
<small> <a href="#Der Heronsche Algorithmus">Der Heronsche
Algorithmus - an einem Zahlenbeispiel vorgestellt</a></small><br>
<small> <a href="#Umsetzung des Heronschen">Umsetzung mit
einer Nichtabweisenden Schleife</a></small><br>
<a href="#Programmierung">Programmierung der Quadratwurzel nach Heron</a><br>
<small> <a href="#a) Grundvariante">a) Grundvariante</a><br>
<a href="#b) Erweiterte Variante">b) Erweiterte Variante</a></small><br>
<em><small> - <a href="#Eingabesicherung mittels Repeat-Schleife">Eingabesicherung</a><br>
- <a href="#Formatierung mittels FloatToStrF">Formatierung
mittels FloatToStrF</a><br>
- <a href="#Z鋒lfunktion in Schleifen">Z鋒lfunktion
in Schleifen</a><br>
- <a href="#Z鋒lfunktion in Schleifen">Eingabefunktion
mittels TScrollBar</a></small><br>
</em><small> <a href="#c) Zusatzaufgabe">c) Zusatzaufgabe -
Kubikwurzel nach Heron</a></small></td>
</tr>
</table>
</center></div></td>
</tr>
</table>
<p><a href="#Iterationsbegriff"><img SRC="ru.gif" BORDER="0" ALIGN="TEXTTOP" WIDTH="25" HEIGHT="25"></a> <a name="Vorbemerkungen:"><font color="#FF0000"><em><strong><big>Vorbemerkungen:</big></strong></em></font></a></p>
<blockquote>
<p><strong>Dem Pascal-Programmierer</strong> mag es nicht schwer fallen, die Arbeit mit
zyklischen Strukturen zu motivieren: man schreibe ein 黚erschaubares lineares Programm
und stelle dann die Frage, wie dem armen Nutzer zu helfen sei, der mit diesem Programm
Hunderte von Berechnungen durchf黨ren soll.<br>
Die L鰏ung liegt schnell auf der Hand: man packe das ganze in eine Repeat-Schleife an
deren Ende eine Nutzerauswahl "Neue Berechnung?" / "Ende?" erfolgt und
entbinde damit den potentiellen Nutzer von der l鋝tigen Aufgabe, f黵 jede neue
Berechnung auch einen neuen Programmstart veranlassen zu m黶sen.</p>
<p><strong>Unter Delphi</strong> greift diese Motivierung nat黵lich nicht, denn bis zum
ultimativen "Form1.Close", verbunden mit einem "Ende"-Button, kann ein
Nutzer die Funktionalit鋞 des Programm-Fensters so oft strapazieren, wie er m鯿hte, da
dank der <a href="delphi02.htm#2.2.">Ereignisorientierung</a> ohnehin ein zyklisches
Abfragen eingabesensitiver Komponenten erfolgt.<br>
Bew鋒rt hat sich m. E. der <strong>Einstieg 黚er einen einfachen zyklischen
Algorithmus</strong>, etwa der Iteration einer Quadratwurzel nach Heron. Hieraus werden
f黵 das Verst鋘dnis von Schleifen notwendige Erkenntnisse, wie z. B. die Bedeutung
der Abbruchbedingung abgeleitet und dann auf weitere Beispiele angewandt.</p>
<p><strong>Nichtabweisender Zyklus / Abweisender Zyklus / Z鋒lzyklus ?<br>
</strong>Immer h鋟figer h鰎t man die Frage <em>"M黶sen die Sch黮er denn wirklich
(noch) alle drei Schleifenarten beherrschen?"</em> Mein Standpunkt: wenn die Zeit
dazu vorhanden ist, so hat 's noch keinem geschadet. Jedoch fehlt es meist an eben dieser
Zeit. Nach dem Motto <strong>"Weniger ist meistens mehr"</strong> w黵de ich es
f黵 sinnvoller halten, wenn der Sch黮er im Extremfall mit nur einer einzigen
Schleifenart eine Vielzahl von Problemen aufbereiten und l鰏en kann, als dass er zwar
alle Schleifenarten formal kennt, jedoch kaum in der Lage ist, diese selbst鋘dig zur
Probleml鰏ung zu verwenden.</p>
<p><strong>Die Kunst des Weglassens</strong> sollte unbedingt die 躡erlegung
einschlie遝n, dass "Repeat-" und "While-Schleifen" (also
Nichtabweisende und Abweisende Zyklen) gegen黚er dem Z鋒lzyklus die universelleren
Werkzeuge darstellen, d. h. alle auf iterativem Wege l鰏baren Probleme lassen sich
damit umsetzen, w鋒rend mit der Z鋒lschleife nur eine Teilmenge dieser L鰏ungen
(sauber) programmiert werden kann. <br>
In meinen Kursen empfand ich es bisher als gangbaren Kompromiss, das <strong>Wesen
zyklischer Algorithmen</strong> zun鋍hst anhand der Repeat-Schleife zu verdeutlichen und
nachfolgend "so zu tun", als g鋌e es nur diese eine Schleifenart. Mit dieser
Strukturkenntnis werden alsdann bei zunehmender Selbst鋘digkeit einfache
Problemstellungen aus verschiedenen Gebieten bearbeitet und erst am Ende werden eher
黚erblicksartig die beiden verbleibenden Schleifenarten vorgestellt und Vergleiche dazu
angestellt. </p>
</blockquote>
<p><a HREF="#Anfang"><img SRC="ho.gif" BORDER="0" WIDTH="25" HEIGHT="24"> <font SIZE="-1">Seitenanfang</font></a></p>
<p><a href="#Quadratwurzel nach Heron"><img SRC="ru.gif" BORDER="0" ALIGN="TEXTTOP" WIDTH="25" HEIGHT="25"></a>
<font color="#FF0000"><em><strong><big>Der <a name="Iterationsbegriff">Iterationsbegriff</a>:</big></strong></em></font></p>
<blockquote>
<table border="1" cellpadding="12">
<tr>
<td bgcolor="#FFFFD0"><strong><font color="#000080"><em>"Aus dem lat. iteratio =
Wiederholung. Verfahren der numerischen Mathematik, das dazu dient, durch wiederholtes
Durchlaufen eines bestimmten Rechenverfahrens die Berechnung eines Wertes mit immer
gr鲞erer Genauigkeit zu erreichen...<br>
Im 黚ertragenen Sinne verwendet man den Ausdruck I. auch f黵 die Wiederholung eines
Schleifendurchlaufes in einem Programm.<br>
Wesentlich f黵 jede Iteration ist, dass das Ergebnis des ersten Schrittes als Eingabewert
f黵 den folgenden Schritt verwendet wird.<br>
Die Iteration wird im Allgemeinen durch die Zahl der Durchl鋟fe beendet oder durch eine
Bedingung, deren Erreichen ebenfalls zum Abbruch der Iteration f黨rt
[Abbruchbedingung] ..."</em></font></strong><p><font color="#000080"><em>Computer-Enzyklop鋎ie
S. 1563</em></font></td>
</tr>
</table>
</blockquote>
<p><a HREF="#Anfang"><img SRC="ho.gif" BORDER="0" WIDTH="25" HEIGHT="24"> <font SIZE="-1">Seitenanfang</font></a></p>
<p><big><font color="#FF0000"><em><strong><big>Einf黨rung des Nichtabweisenden Zyklus
- <a name="Quadratwurzel nach Heron">Quadratwurzel nach Heron</a> -</big></strong></em></font></big></p>
<blockquote>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><a HREF="#Anfang"><img SRC="ho.gif" BORDER="0" WIDTH="25" HEIGHT="24"></a> <a href="#Der Heronsche Algorithmus"><img SRC="ru.gif" BORDER="0" ALIGN="TEXTTOP" WIDTH="25" HEIGHT="25"></a> </td>
<td valign="top"><font color="#FF0000"><em><strong><big><a name="Szenario">Szenario</a>:</big></strong></em></font></td>
</tr>
</table>
<blockquote>
<p>Interessant ist es Sch黮er der heutigen Generation mit der Frage zu konfrontieren, wie
denn wohl unsere Vorfahren ohne Hilfsmittel die Quadratwurzel einer nat黵lichen Zahl
"gezogen" haben. Der Gedanke, dass dies durch N鋒erungsverfahren geschehen sein
muss, ist schnell ge鋟遝rt; die Frage aber, wie man denn mit vertretbarem Aufwand eine
m鰃lichst hohe Genauigkeit erreichen konnte, bleibt meist unbeantwortet.<br>
Ein knapp 2000 Jahre altes Verfahren, entwickelt durch <em><strong>HERON von Alexandria</strong></em>
(ca. 20-62 n. Chr.), l鰏t das Problem auf geniale und aus heutiger Sicht
sehr computerfreundliche Weise!</p>
</blockquote>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><a HREF="#Anfang"><img SRC="ho.gif" BORDER="0" WIDTH="25" HEIGHT="24"></a> <a href="#Umsetzung des Heronschen"><img SRC="ru.gif" BORDER="0" ALIGN="TEXTTOP" WIDTH="25" HEIGHT="25"></a> </td>
<td valign="top"><font color="#FF0000"><em><strong><big><a name="Der Heronsche Algorithmus">Der Heronsche Algorithmus</a> - an einem Zahlenbeispiel
vorgestellt:</big></strong></em></font></td>
</tr>
</table>
<blockquote>
<table border="1" cellpadding="6" bgcolor="#FFFFD0">
<tr>
<td>Wir stellen uns vor, die Quadratwurzel der Zahl 2 sei gesucht. Von der zu findenden
L鰏ung wissen wir bereits, dass deren Quadrat wiederum 2 ergeben muss. <br>
Als Ausgangspunkt w鋒len wir ein Rechteck, dessen Seitenl鋘ge a = 1 ist; Seitenl鋘ge b
ist so gro
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -