📄 dpue090.htm
字号:
<td valign="top" height="21" align="center"><font color="#000080"><em>2</em></font></td>
</tr>
<tr>
<td valign="top" height="22" align="center"><font color="#000080">2.</font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em>4</em></font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em>2</em></font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em>4</em></font></td>
</tr>
<tr>
<td valign="top" height="22" align="center"><font color="#000080">3.</font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em>4</em></font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em>3</em></font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em>8</em></font></td>
</tr>
<tr>
<td valign="top" height="22" align="center"><font color="#000080">4.</font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em><u>4</u></em></font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em><u>4</u></em></font></td>
<td valign="top" height="22" align="center"><font color="#000080"><em>16</em></font></td>
</tr>
<tr>
<td valign="top" height="22" colspan="4" bgcolor="#EEEEEE"><font color="#000080">Abbruch,
da <strong><tt>n=x</tt></strong></font></td>
</tr>
</table>
</center></div></td>
</tr>
<tr>
<td valign="top" nowrap><em><strong>zu b)</strong></em></td>
<td valign="top">Hierbei ist die Abh鋘gigkeit der Ausgabevariable(n) von der/den
Eingabevariable(n) zu untersuchen, im Beispiel also y = f(x). Erkennt man die
Abh鋘gigkeit nicht sofort, f黨re man weitere "Schreibtischtests" mit
ge鋘derten Eingabevariablen durch!<p>Im Beispiel betr鋑t <font color="#000080"><strong><tt> y = 2<sup>x</sup></tt></strong></font></td>
</tr>
<tr>
<td valign="top" nowrap><em><strong>zu c)</strong></em></td>
<td valign="top"><font color="#000080">Da n bereits im ersten Schleifendurchlauf mit dem
Wert 1 belegt ist und in jedem weiteren Durchlauf um 1 erh鰄t wird, entst黱de bei
Eingabe von -1 f黵 x eine sog. "Endlosschleife", weil die Abbruchbedingung <strong><tt>n=x</tt></strong>
theoretisch niemals erreicht wird.</font><p>In der Praxis endet das Ganze entweder mit
einer Fehlermeldung (Bereichs黚erschreitung / Stack黚erlauf etc.) oder mit einem
tobs點htigen Nutzer, der im schlimmsten Fall irgendwann die Reset-Taste bet鋞igt ;-)</p>
<p><em><strong>Fazit:</strong></em><ol>
<li>Insbesondere zyklische Strukturen sollten vor dem Programmstart gedanklich daraufhin
getestet werden, welche Eingabewerte zu Endlosschleifen o. a. Fehlern f黨ren
k鰊nten.</li>
<li>Mit Hilfe einer zu programmierenden Eingabesicherung "zwinge" man den Nutzer
dazu, nur "erlaubte" Werte einzugeben.</li>
<li>Da 1. und 2. nie 100% Sicherheit bieten, speichere man jedes in Entwicklung befindliche
Programm vor dem Compilieren bzw. Starten. </li>
</ol>
</td>
</tr>
</table>
</blockquote>
<p><a name="2.2. Aufgabe zum Schreibtischtest"><big><font color="#004000"><em><strong>2.2.
Aufgabe zum Schreibtischtest</strong></em></font></big></a></p>
<blockquote>
<table border="0" cellpadding="6">
<tr>
<td valign="top"><em><strong>a)</strong></em></td>
<td valign="top">Das nachstehende Programmst點k ist per "Schreibtischtest" f黵
den Eingabewert ‘5’ zu untersuchen !<blockquote>
<p><font color="#000080"><strong><tt>x := StrToInt(edit1.text);<br>
f := 1;<br>
REPEAT<br>
f := f * x;<br>
x := x-1<br>
UNTIL x<1;<br>
edit2.text := IntToStr(f);</tt></strong></font></p>
</blockquote>
</td>
</tr>
<tr>
<td valign="top"><em><strong>b)</strong></em></td>
<td valign="top">Welche mathematischen Funktion wird hierbei realisiert ?</td>
</tr>
<tr>
<td valign="top"><em><strong>c)</strong></em></td>
<td valign="top">Welcher Wertebereich darf nicht zur Eingabe verwendet werden und weshalb?
</td>
</tr>
</table>
</blockquote>
</blockquote>
<hr>
</blockquote>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><a HREF="#Anfang"><img SRC="ho.gif" BORDER="0" WIDTH="25" HEIGHT="24"></a> <a href="#Ende"><img SRC="ru.gif" BORDER="0" ALIGN="TEXTTOP" WIDTH="25" HEIGHT="25"></a> </td>
<td><big><font color="#FF0000"><em><strong><a name="3. Programmieraufgabe">3.
Programmieraufgabe</a> "Eigenwilliger Kredit":</strong></em></font></big></td>
</tr>
</table>
<blockquote>
<blockquote>
<table border="0" cellpadding="6">
<tr>
<td><table border="0" cellpadding="0">
<tr>
<td valign="top" nowrap><em><strong>a) </strong></em></td>
<td valign="top">Ein nicht gewinns點htiger Vater mit nennenswerten Ersparnissen trifft
mit seinem finanzbed黵ftigen Sohn eine eigenwillige "Kreditvereinbarung":<p><em>Der
Sohn erh鋖t einen Kredit in gew黱schter H鰄e. Es werden keine Zinsen erhoben. Nach
einem Jahr soll der Sohn die H鋖fte der Kreditsumme zur點kzahlen. Nach jedem weiteren
Jahr betr鋑t die R點kzahlung jeweils die H鋖fte der R點kzahlung des Vorjahres bis nach
n Jahren der Kredit getilgt ist.</em></p>
<p><img src="kredit1.gif" alt="kredit1.gif (8441 Byte)" align="right" WIDTH="321" HEIGHT="259">Man entwerfe einen
Algorithmus (Struktogramm) und schreibe ein Programm, welches f黵 beliebige Kreditsummen
bei Rundung auf ganze Pfennige die Anzahl der Jahre ermittelt, die bis zur vollst鋘digen
Tilgung ben鰐igt werden sowie die j鋒rlich zu zahlende Rate auflistet.</p>
<p>Ben鰐igte Variablen:<em> jahre</em> : ganzzahlig; <em>kredit, rate, tilgung</em> :
reelle Zahlen.</p>
<p>Nebenstehende Abbildung zeigt einen Vorschlag zur Oberfl鋍hengestaltung, wobei die
Ausgabe 黚er drei nebeneinander stehende TListBox-Komponenten erfolgt.</p>
<p><em><strong>L鰏ungshinweise: </strong></em><ol>
<li><a href="#Synchronisation von TListBox-Komponenten">Synchronisation von
TListBox-Komponenten</a></li>
<li><a href="#Ausgabe im W鋒rungsformat">Ausgabe im W鋒rungsformat</a></li>
</ol>
<p> </td>
</tr>
<tr>
<td valign="top" nowrap><em><strong>b) </strong></em></td>
<td valign="top">Schon eher etwas f黵 Fortgeschrittene:<p>Eine g黱stige Stunde
ausnutzend, erreicht der Sohn folgende nicht ganz unwesentliche Modifizierung des
Kreditvertrages:</p>
<p><em>Die Abzahlungen k鰊nen in umgekehrter Reihenfolge stattfinden, d. h. im
ersten Jahr erfolgt die 躡erweisung der kleinsten Rate. Dies steigert sich bis zum
letzten Abzahlungsjahr, in dem die H鋖fte der urspr黱glichen Kreditsumme f鋖lig wird.</em></p>
<p>Die Probleml鰏ung von a) ist in Struktogramm- und Programmform entsprechend zu
modifizieren!</td>
</tr>
</table>
</td>
</tr>
</table>
</blockquote>
</blockquote>
<blockquote>
<p><font color="#004000"><big><em><strong>L鰏ungshinweise: </strong></em></big></font></p>
<p><a name="Synchronisation von TListBox-Komponenten"><font color="#FF0000"><em><strong><big>Synchronisation
von TListBox-Komponenten</big></strong></em></font></a></p>
<blockquote>
<p>Falls nebeneinander angeordnete TListBox-Komponenten zusammen geh鰎ende Wertereihen
enthalten, erwartet der Nutzer eine gewisse Synchronit鋞 der Anzeige. Wird im obigen
Beispiel etwa in der ListBox1 auf das Jahr Nr. 11 geklickt, so sollen auch in
ListBox2 und ListBox3 die zugeh鰎igen Eintr鋑e markiert erscheinen.</p>
<p>Die nachfolgende Prozedur passt den jeweiligen ItemIndex (markierten Eintrag) von
ListBox2 und ListBox3 an den in ListBox1 markierten Eintrag an.</p>
<blockquote>
<p><font color="#000080"><strong><tt>procedure TForm1.ListBox1Click(Sender: TObject);<br>
begin<br>
listbox2.itemindex:=listbox1.itemindex;<br>
listbox3.itemindex:=listbox1.itemindex;<br>
end;</tt></strong></font></p>
</blockquote>
</blockquote>
<p><a name="Ausgabe im W鋒rungsformat"><font color="#FF0000"><em><strong><big>Ausgabe im
W鋒rungsformat</big></strong></em></font></a></p>
<blockquote>
<p>Der Delphi-Hilfe ist unter dem Stichwort "FloatToStrF" u. a. folgendes
zu entnehmen:</p>
<p><em>Funktion <font color="#000080"><strong>FloatToStrF</strong>(Value: Extended;
Format: TFloatFormat; Precision, Digits: Integer): String;</font><br>
<br>
<strong>Beschreibung<br>
</strong><br>
<strong>FloatToStrF</strong> konvertiert einen durch Value gegebenen Flie遬unktwert in
seine String-Darstellung. <br>
Der Parameter Format bestimmt das Format des resultierenden Strings.<br>
Der Parameter Precision bestimmt die Genauigkeit des 黚ergebenen Wertes. Er sollte f黵
Werte vom Typ Single auf 7 oder weniger gesetzt sein, f黵 Werte vom Typ Double auf 15
oder weniger und bei Extended-Werten auf h鯿hstens 18.<br>
Die Bedeutung des Parameters Digits h鋘gt vom gew鋒lten Format ab.</em></p>
</blockquote>
<blockquote>
<p><em><strong>ffCurrency </strong> W鋒rungsformat. Der Wert wird in einen
String konvertiert, der eine W鋒rungsbetrag angibt. Die Umwandlung wird durch die
globalen Variablen CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator und
DecimalSeparator gesteuert, die alle mit den Werten initialisiert werden, die in der
Windows-Systemsteuerung, Abschnitt L鋘dereinstellungen angegeben wurden. Die Anzahl
Ziffern nach dem Dezimalpunkt wird durch den Parameter Digits bestimmt und mu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -