https://www.frankwerner.org/index.php?title=Programmieren_in_Pascal&feed=atom&action=historyProgrammieren in Pascal - Versionsgeschichte2024-03-28T17:26:54ZVersionsgeschichte dieser Seite in DatenschutzMediaWiki 1.34.0https://www.frankwerner.org/index.php?title=Programmieren_in_Pascal&diff=1244&oldid=prevAdmin: /* Besonderheiten von Pascal */2023-10-02T14:40:47Z<p><span dir="auto"><span class="autocomment">Besonderheiten von Pascal</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 2. Oktober 2023, 14:40 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l11" >Zeile 11:</td>
<td colspan="2" class="diff-lineno">Zeile 11:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Pascal ist eine Programmiersprache, die '''Prof. Dr. Niklaus Wirth''' 1968 an der ETH Zürich definiert hat.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Pascal ist eine Programmiersprache, die '''Prof. Dr. Niklaus Wirth''' 1968 an der ETH Zürich definiert hat.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Pascal wird auch heute noch benutzt, wenn auch sehr viel seltener als andere alte Sprachen.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Pascal wird auch heute noch benutzt, wenn auch sehr viel seltener als andere alte Sprachen.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* Pascal ist sehr stark genormt; es gab schon früh sehr verbindliche Standards.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Pascal ist also sehr '''kompatibel''' zu sich selbst, weil die Definitionen immer sehr klar waren.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Pascal ist also sehr '''kompatibel''' zu sich selbst, weil die Definitionen immer sehr klar waren.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* Einfache Programme liefen Jahrzehnte lang auf allen Pascal-Compilern.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* Auch heute noch kann man verbreitete Dialekte aus den 80er Jahren ablauffähig machen.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Programmieren in Pascal auf dem eigenen Computer ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Programmieren in Pascal auf dem eigenen Computer ==</div></td></tr>
</table>Adminhttps://www.frankwerner.org/index.php?title=Programmieren_in_Pascal&diff=1243&oldid=prevAdmin: /* Funktionen */2023-10-02T14:38:30Z<p><span dir="auto"><span class="autocomment">Funktionen</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 2. Oktober 2023, 14:38 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l36" >Zeile 36:</td>
<td colspan="2" class="diff-lineno">Zeile 36:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Ein einfaches Programm sieht also jetzt so aus ("//" leitet einen Kommentar ein):</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Ein einfaches Programm sieht also jetzt so aus ("//" leitet einen Kommentar ein):</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><pre></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><pre></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">int main ()</del></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">program Testausgabe;</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">{</del></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">begin</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> // Hier startet das Hauptprogramm</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> // Hier startet das Hauptprogramm</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> <del class="diffchange diffchange-inline">printf </del>(<del class="diffchange diffchange-inline">"</del>Zahlenraten - ich denke mir eine Zahl und Du errätst sie. <del class="diffchange diffchange-inline">\n"</del>);</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <ins class="diffchange diffchange-inline">writeln </ins>(<ins class="diffchange diffchange-inline">'</ins>Zahlenraten - ich denke mir eine Zahl und Du errätst sie.<ins class="diffchange diffchange-inline">'</ins>);</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">}</del></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">end.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>Adminhttps://www.frankwerner.org/index.php?title=Programmieren_in_Pascal&diff=962&oldid=prevAdmin: /* Programmieren in Pascal auf dem eigenen Computer */2022-10-05T06:47:46Z<p><span dir="auto"><span class="autocomment">Programmieren in Pascal auf dem eigenen Computer</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 5. Oktober 2022, 06:47 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l22" >Zeile 22:</td>
<td colspan="2" class="diff-lineno">Zeile 22:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Ich zum Beispiel benutze [https://www.lazarus-ide.org/ Lazarus] (für Windows, Linux, MacOS).</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Ich zum Beispiel benutze [https://www.lazarus-ide.org/ Lazarus] (für Windows, Linux, MacOS).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Auf einem Raspberry Pi kann man einfach [https://de.wikipedia.org/wiki/Geany Geany] benutzen.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Auf einem Raspberry Pi kann man einfach [https://de.wikipedia.org/wiki/Geany Geany] benutzen.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Oder Sie programmieren einfach hier und jetzt [https://www.onlinegdb.com/<del class="diffchange diffchange-inline">online_c_compiler </del>online].</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Oder Sie programmieren einfach hier und jetzt [https://www.onlinegdb.com/<ins class="diffchange diffchange-inline">online_pascal_compiler </ins>online].</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Funktionen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Funktionen ==</div></td></tr>
</table>Adminhttps://www.frankwerner.org/index.php?title=Programmieren_in_Pascal&diff=961&oldid=prevAdmin: /* Besonderheiten von Pascal */2022-09-30T06:23:46Z<p><span dir="auto"><span class="autocomment">Besonderheiten von Pascal</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 30. September 2022, 06:23 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9" >Zeile 9:</td>
<td colspan="2" class="diff-lineno">Zeile 9:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Besonderheiten von Pascal ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Besonderheiten von Pascal ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Pascal ist eine Programmiersprache, die Prof. Dr. Niklaus Wirth 1968 an der ETH Zürich definiert hat.</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Pascal ist eine Programmiersprache, die <ins class="diffchange diffchange-inline">'''</ins>Prof. Dr. Niklaus Wirth<ins class="diffchange diffchange-inline">''' </ins>1968 an der ETH Zürich definiert hat.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Pascal wird auch heute noch benutzt, wenn auch sehr viel seltener als andere alte Sprachen.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Pascal wird auch heute noch benutzt, wenn auch sehr viel seltener als andere alte Sprachen.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Pascal ist also sehr ''kompatibel'' zu sich selbst, weil die Definitionen immer sehr klar waren<del class="diffchange diffchange-inline">.</del></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Pascal ist also sehr <ins class="diffchange diffchange-inline">'</ins>''kompatibel<ins class="diffchange diffchange-inline">'</ins>'' zu sich selbst, weil die Definitionen immer sehr klar waren.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">* Pascal ist eine Sprache, die heute auf sehr kleinen Computern gut ablaufen kann</del>.</div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Programmieren in Pascal auf dem eigenen Computer ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Programmieren in Pascal auf dem eigenen Computer ==</div></td></tr>
</table>Adminhttps://www.frankwerner.org/index.php?title=Programmieren_in_Pascal&diff=960&oldid=prevAdmin: Die Seite wurde neu angelegt: „== Grundsätzliches Wissen für angehende Programmierer/-innen == Datei:Raspi400.jpg|mini|rechts|Der Raspberry Pi 400 für knapp 100.- € zum Anschluss an d…“2022-09-30T06:22:59Z<p>Die Seite wurde neu angelegt: „== Grundsätzliches Wissen für angehende Programmierer/-innen == Datei:Raspi400.jpg|mini|rechts|Der Raspberry Pi 400 für knapp 100.- € zum Anschluss an d…“</p>
<p><b>Neue Seite</b></p><div>== Grundsätzliches Wissen für angehende Programmierer/-innen ==<br />
[[Datei:Raspi400.jpg|mini|rechts|Der Raspberry Pi 400 für knapp 100.- € zum Anschluss an den Fernseher (hier mit englischem Netzteil!)]]<br />
* Jede Anwendung eines persönlichen Computers, jede Website, jede App ist ein '''Computerprogramm'''.<br />
* Computerprogramme sind Listen von '''Anweisungen''', die vom Computer der Reihe nach abgearbeitet werden.<br />
* Diese Listen werden in ein Textprogramm (Editor, IDE) eingegeben, in Bits und Bytes übersetzt (Compiler) und dann ausgeführt.<br />
* Anweisungen in Programmen bestehen aus '''Schlüsselwörtern und Parametern''', die die Anweisungen genauer spezifizieren.<br />
* Ein Beispiel "aus dem richtigen Leben" wäre ''Starte das Auto'', wobei ''Starte'' das Schlüsselwort und ''das Auto'' der Parameter ist.<br />
* Ein Schlüsselwort sagt dem Computer, '''was''' zu tun ist, ein Parameter erklärt, '''womit''' etwas zu tun ist.<br />
<br />
== Besonderheiten von Pascal ==<br />
* Pascal ist eine Programmiersprache, die Prof. Dr. Niklaus Wirth 1968 an der ETH Zürich definiert hat.<br />
* Pascal wird auch heute noch benutzt, wenn auch sehr viel seltener als andere alte Sprachen.<br />
* Pascal ist also sehr ''kompatibel'' zu sich selbst, weil die Definitionen immer sehr klar waren.<br />
* Pascal ist eine Sprache, die heute auf sehr kleinen Computern gut ablaufen kann.<br />
<br />
== Programmieren in Pascal auf dem eigenen Computer ==<br />
[[Datei:Geany.png|mini|links|Die Entwicklungsumgebung GEANY in Aktion auf dem Raspi 400.]]<br />
* Um ein Programm in einer Programmiersprache zu schreiben, braucht man ein passendes Übersetzungsprogramm für diese Sprache.<br />
* Solche Übersetzungsprogramme übersetzen eine Programmiersprache in die universelle Sprache aller Computer.<br />
* Solcher Übersetzungsprogramme heißen '''Compiler'''.<br />
* Man benötigt also für Pascal einen Pascal-Compiler und einen Editor (Textverarbeitung für Programmierer) zum Erfassen des Programms.<br />
* Am besten alles zusammen: eine "Integrierte Entwicklungsumgebung (IDE)".<br />
* Ich zum Beispiel benutze [https://www.lazarus-ide.org/ Lazarus] (für Windows, Linux, MacOS).<br />
* Auf einem Raspberry Pi kann man einfach [https://de.wikipedia.org/wiki/Geany Geany] benutzen.<br />
* Oder Sie programmieren einfach hier und jetzt [https://www.onlinegdb.com/online_c_compiler online].<br />
<br />
== Funktionen ==<br />
* Ein Problem wird zur Lösung in viele kleine Probleme zerlegt.<br />
* Beispiel: "Kuchen backen" kann in "Mische Mehl, Eier...", "Heize den Backofen", "Knete den Teig" etc. aufgeteilt werden.<br />
* Programme können in kleine Abschnitte eingeteilt werden, die einzelne Unter-Aufgaben erfüllen ('''Funktionen''').<br />
* Diese Funktionen haben einen festgelegten '''Namen''', '''Parameter''' und können '''Werte''' an das Hauptprogramm zurück geben.<br />
* Den '''Typ des Rückgabewertes''' steht vor der Funktion (hier: int = integer = ganze Zahlen).<br />
* main ist die ''erste'' Funktion, die in jedem Programm aufgerufen wird. Hier startet also immer das Programm.<br />
* In C-Programmen muss es wenigstens ''eine'' Funktion mit dem Namen '''main''' geben.<br />
* Von main aus werden andere Funktionen des selben Programms '''aufgerufen''', sofern welche existieren.<br />
* Die Hauptfunktion, das ganze Programm, gibt nach der Abarbeitung des Programms einen Wert an den Computer zurück.<br />
* Ein einfaches Programm sieht also jetzt so aus ("//" leitet einen Kommentar ein):<br />
<pre><br />
int main ()<br />
{<br />
// Hier startet das Hauptprogramm<br />
printf ("Zahlenraten - ich denke mir eine Zahl und Du errätst sie. \n");<br />
}<br />
</pre><br />
<br />
== Variable ==<br />
* Variable sind '''benannte Speicherstellen''', in denen Zwischenergebnisse gespeichert werden können.<br />
* Variable müssen dem C-Compiler '''erklärt''' werden, damit sie verwendet werden können: sie werden '''deklariert'''.<br />
* Da Programme linear (von oben nach unten) ablaufen, sind '''Variablen erst ab der Deklaration''' nutzbar.<br />
* Der Compiler muss wissen, was in den Variablen stehen soll: der '''Variablentyp'''.<br />
* Typen für Variable in C: Ganzzahlen (int), Fließkommazahlen (float), Zeichen (char)<br />
* Eine Deklaration sieht typischerweise so aus: <Typ><Leerzeichen><Name><Semikolon><br />
* Beispiel: <pre>int nGedachteZahl;</pre><br />
* Das "n" vor dem Namen "GedachteZahl" ist nicht notwendig. Es ist aber [https://de.wikipedia.org/wiki/Ungarische_Notation gute Sitte], den Typ (int, also numerisch) im Namen zu erwähnen.<br />
* Variable können auch einen Anfangswert (Initialisierung) enthalten, der einfach dahinter geschrieben wird.<br />
* Beispiel: <pre>int nGedachteZahl = 24;</pre><br />
* Die Variable nGedachteZahl ist dem Compiler ab diesem Zeitpunkt als Ganzzahl-Speicherstelle bekannt und hat den Wert 24.<br />
* Eine nicht initialisierte Variable hat übrigens '''nicht''' den Wert Null sondern einen unbestimmten Wert (Vorsicht!).<br />
* In unserem Beispiel brauchen wir zwei Variable: in einer steht die gedachte Zufallszahl, in der anderen die Vermutung des Benutzers.<br />
* Nach der Erwähnung des Datentyps kann man weitere Variablen definieren.<br />
* Unser Programm sieht bis hierher also so aus:<br />
<pre><br />
<br />
int nGedachteZahl = 24; // muss erraten werden<br />
nVermutung = 0; // sicher ist sicher<br />
<br />
int main ()<br />
{<br />
// Hier startet das Hauptprogramm<br />
printf ("Zahlenraten - ich denke mir eine Zahl und Du errätst sie. \n");<br />
}<br />
</pre><br />
<br />
== Ein- und Ausgabe ==<br />
* Ein Programm braucht grundsätzlich Anweisungen für die '''Eingabe''', die '''Verarbeitung''' und die '''Ausgabe''' von Daten.<br />
* Speziell in der Programmiersprache C gibt es '''keine''' Anweisungen zur Ein- und Ausgabe.<br />
* C soll auf sehr vielen Computern nutzbar sein und jedes Computersystem hat andere Funktionen für Ein- und Ausgabe.<br />
* Deshalb liegt jedem C-Compiler eine Bibliothek von Dateien bei, die Ein- und Ausgabe des jeweiligen Computersystems ermöglicht.<br />
* Die Funktionen in diesen Dateien werden aber alle in der gleichen Art und Weise aufgerufen ("C-Standard-Bibliotheken").<br />
* Wir verwenden hier zur Eingabe das Schlüsselwort '''scanf''' und zur Ausgabe '''printf''' wegen ihrer Ähnlichkeit.<br />
* Im "echten Leben" tun Sie das bitte nicht: die Funktionen sind [https://dasdev.de/nachteile-von-scanf/ nicht krisensicher].<br />
* Das Format von '''printf''' ist <pre> printf ("<Format>", <Variable>, <Variable>...)</pre><br />
* Im <Format>-Teil geben Sie an, was ausgegeben werden soll.<br />
* Dabei schaffen Sie ''Platzhalter'' dort, wo später der Wert der Variablen erscheinen soll.<br />
* Platzhalter bestehen aus einem Prozentzeichen und einem Buchstaben für den Typ der Variable.<br />
* Die erlaubten Typen sind vielfältig. Hier einige gebräuchliche:<br />
<pre><br />
d Dezimalzahl<br />
f Gleitkommazahl<br />
c Einzelnes Zeichen<br />
s String (Mehrere Zeichen)<br />
</pre><br />
* Nach der Angabe des Typs sind auch Längenangaben u. a. möglich.<br />
* Dieselben Formatvorschriften gelten auch für Eingaben mit ''scanf''.<br />
<br />
== Bedingungen ==<br />
* Bedingungen sind '''WENN-DANN-Anweisungen'''.<br />
* In C ist das entsprechende Schlüsselwort '''if'''.<br />
* Der weitere Programmlauf hängt dann von '''Bedingungen''' ab:<br />
<pre><br />
> größer als<br />
< kleiner als<br />
== gleich<br />
!= ungleich<br />
>= größer oder gleich<br />
<= kleiner oder gleich<br />
! nicht<br />
</pre><br />
* Beispiel: Ob eine eingegebene Zahl größer oder kleiner 1 ist soll in Worten ausgegeben werden:<br />
<pre><br />
#include <stdio.h><br />
<br />
int nZahl;<br />
<br />
int main()<br />
{<br />
printf ("Bitte geben Sie eine Zahl ein: ");<br />
scanf ("%d", &nZahl);<br />
<br />
if (nZahl > 1)<br />
printf ("Die Zahl %d ist größer als Eins. \n", nZahl);<br />
else<br />
printf ("Die Zahl %d ist kleiner als Eins. \n", nZahl);<br />
}<br />
</pre><br />
* Die Befehle nach ''else'' werden immer ausgeführt, wenn <b>das Gegenteil</b> der Bedingung erfüllt ist.<br />
* Das Gegenteil von '''gleich''' ist dann '''ungleich''', das Gegenteil von '''größer''' ist '''kleiner''' und umgekehrt.<br />
* Man könnte ''else'' also mit ''sonst'' übersetzen: Wenn...Sonst.<br />
<br />
== Fallunterscheidungen ==<br />
* if-Abfragen kann man beliebig wiederholen.<br />
* Bei sehr häufigen Abfragen kann das sehr unübersichtlich werden.<br />
* Deshalb gibt es so genannte Fallunterscheidungen, in denen ein Wert oder eine Variable mehrfach geprüft wird.<br />
* Bei Fallunterscheidungen wird jeder '''Bedingung ein Programmlauf''' zugeordnet.<br />
* In C sind die entsprechenden Schlüsselwörter '''switch''' und '''case'''.<br />
* Beispiel: Eine Zahl zwischen 1 und 3 soll als Wort ausgegeben werden:<br />
<pre><br />
#include <stdio.h><br />
<br />
int iZahl;<br />
<br />
int main ()<br />
{<br />
printf ("Geben Sie eine Zahl ein: ");<br />
scanf ("%d", &iZahl);<br />
<br />
switch (iZahl)<br />
{<br />
case 1: printf ("Eins \n"); break;<br />
case 2: printf ("Zwei \n"); break;<br />
case 3: printf ("Drei \n"); break;<br />
default: printf ("Zahl ist nicht zwischen 1 und 3! \n");<br />
}<br />
}<br />
</pre><br />
* Beachten Sie, dass nach der Ausführung eines Falles mit ''break'' die Abfrage verlassen werden '''muss'''.<br />
* Wenn keine Bedingung zutrifft, wird der Code hinter ''default'' ausgeführt.<br />
* In ''switch'' können keine Variablen vom Typ ''char'' geprüft werden!<br />
<br />
== Schleifen mit Zähler ==<br />
* Bei Zählerschleifen werden Schlüsselwörter eine '''bestimmte Anzahl mal''' wiederholt.<br />
* Dabei läuft eine Variable mit, die bei jedem Durchlauf '''verändert''' wird.<br />
* In C ist das entsprechende Schlüsselwort '''for'''.<br />
* Das Format von ''for'' ist<br />
<pre>for (Startwert, Ablaufbedingung, Änderungsmaßnahme);</pre><br />
* Die Zahlen von 1 bis 10 werden also durch folgendes Programm ausgegeben:<br />
<pre><br />
<br />
#include <stdio.h><br />
<br />
int nZaehler;<br />
<br />
int main ()<br />
{<br />
for (nZaehler = 1; nZaehler < 11; nZaehler++)<br />
{<br />
printf ("Zahl ist %d \n", nZaehler);<br />
}<br />
}<br />
<br />
</pre><br />
* Am Anfang der Schleife wird nZaehler mit 1 belegt (der '''Startwert''')<br />
* Die Schleife läuft so lange nZahler kleiner als 11 ist (die '''Ablaufbedingung''')<br />
* Bei jedem Durchlaufen der Schleife wird nZaehler um 1 erhöht (die '''Änderungsmaßnahme''', ''nZaehler = nZaehler + 1'' kann man mit ''nZaehler++'' abkürzen).<br />
* Beim Durchlaufen der Schleife wird alles zwischen den folgenden Klammern { und } ausgeführt (hier also die Ausgabe von nZaehler).<br />
* Die Zahlen von 1 bis 10 werden nur ausgegeben, wenn die Ablaufbedingung ''< 11'' heißt, da am Anfang entschieden wird, ob die Schleife durchlaufen werden soll.<br />
* for bildet also eine so genannte Kopfgesteuerte Schleife!<br />
<br />
== Kopfgesteuerte Schleifen ==<br />
* Kopfgesteuerte Schleifen prüfen '''am Anfang''' der Schleife, ob die Schleife durchlaufen wird.<br />
* Kopfgesteuerte Schleifen werden mit dem Wort ''while'' gebildet.<br />
* Kopfgesteuerte Schleifen machen Sinn, wenn eine Schleife unter bestimmten Bedingungen keinen Sinn ergibt.<br />
* Beispielsweise kann man eine Datei nicht auslesen, wenn am Anfang der Schleife das Ende der Datei bereits erreicht oder sie leer ist.<br />
* Man könnte die Zahlen von 1 bis 10 auch mit einer kopfgesteuerten Schleife ausgeben:<br />
<pre><br />
#include <stdio.h><br />
<br />
int nZaehler;<br />
<br />
int main ()<br />
{<br />
nZaehler = 0;<br />
while (nZaehler < 10)<br />
{ <br />
nZaehler++;<br />
printf ("Zahl ist %d \n", nZaehler);<br />
}<br />
}<br />
</pre><br />
* Sie werden alle Anweisungen aus der for-Schleife hier wiederfinden!<br />
* Aber überlegen Sie mal, warum die Werte der Variablen anders sind.<br />
<br />
== Fußgesteuerte Schleifen ==<br />
* Fußgesteuerte Schleifen prüfen '''am Ende''' der Schleife, ob die Bedingung zum Beenden erreicht ist.<br />
* Fußgesteuerte Schleifen werden mit den Schlüsselwörter ''do''..''while'' gebildet.<br />
* Fußgesteuerte Schleifen machen Sinn, wenn die Bedingung innerhalb der Schleife verändert wird.<br />
* Beispielsweise kann eine Schleife so lange laufen, bis während der Schleife ein bestimmter Wert eingegeben wird.<br />
* Die Zahlen von 1 bis 10 mit einer fußgesteuerten Schleife:<br />
<pre><br />
#include <stdio.h><br />
<br />
int nZaehler;<br />
<br />
int main ()<br />
{<br />
nZaehler = 0;<br />
do<br />
{ <br />
nZaehler++;<br />
printf ("Zahl ist %d \n", nZaehler);<br />
} while (nZaehler < 10);<br />
}<br />
</pre><br />
* Beachten Sie, wo ein Semikolon gesetzt ist (und wo nicht).<br />
<br />
== Dateien ==<br />
* Normalerweise kommt an dieser Stelle die Behandlung von Dateien.<br />
* Programme können Dateien erzeugen, verwalten und löschen.<br />
* Dateien werden heute aber "in Reinform" kaum noch benutzt.<br />
* Daher verweise ich hier auf die [https://de.wikipedia.org/wiki/Embedded_SQL Einbettung von Datenbank-Befehlen in C-Programme].<br />
* Nutzen Sie Datenbanken wo Sie können. Dateien sind immer nur die zweitbeste Lösung!<br />
* Sie brauchen keinen Datenbank-Server. Forschen Sie z. B. nach [https://de.wikipedia.org/wiki/SQLite SQLite].<br />
<br />
== Zahlenraten ==<br />
* Zum Schluss ein kleines Spiel, in dem Sie einige der erklärten Regeln betrachten können:<br />
<br />
<pre><br />
<br />
// (1) zahlenraten.c - Ein kleines Spiel, bei dem der Computer sich eine Zahl<br />
// ausdenkt und Sie diese erraten müssen. 27.04.2021<br />
<br />
// (2) Damit alle Befehle funktionieren, müssen wir sie dem C-Compiler<br />
// bekannt machen. Denn viele Befehle kennt C nicht. Die werden dann<br />
// aus sogenannten Standard-Bibliotheken eingelesen.<br />
<br />
#include <stdio.h> // printf und scanf<br />
#include <stdlib.h> // srand und rand<br />
#include <time.h> // time<br />
<br />
// (3) Jedes C-Programm hat einen Abschnitt (eine "Funktion") namens<br />
// main. Hier beginnt und endet ein C-Programm immer. main muss immer<br />
// da sein und muss immer main heißen!<br />
<br />
int main ()<br />
{<br />
// (4) Wir beschreiben ("deklarieren") Speicherstellen ("Variable"), die<br />
// wir im Programm benutzen wollen mit möglichst aussagekräftigen Namen<br />
// und einem Buchstaben am Beginn, der die Art des Inhalts bezeichnet.<br />
// i = int = integer = ganze Zahl, also keine Fließkommazahlen<br />
<br />
int iGedachteZahl; // Hier wird die vom Computer gedachte Zahl gespeichert<br />
int iVermutung; // Hier wird die vom Benutzer vermutete Zahl gespeichert<br />
<br />
// In C kann man Variable auch gleich mit einem Startwert belegen<br />
int iZahlMin = 0; // Minimale Größe der gedachten Zahl<br />
int iZahlMax = 100; // Maximale Größe der gedachten Zahl<br />
<br />
// (5) Das Programm wurde gestartet. Wir geben einen Text aus:<br />
// \n = mit Zeilenumbruch<br />
// \n weglassen = ohne Zeilenumbruch<br />
printf ("Zahlenraten - Ich denke mir eine Zahl und Sie erraten diese. \n");<br />
printf ("Ich denke mir also eine Zahl zwischen %d und %d", iZahlMin, iZahlMax);<br />
<br />
// (6) Zufallszahl generieren: hier rufen wir die Funktionen auf, die wir<br />
// bei (2) mit #include oben bekannt gemacht haben: srand, time und rand.<br />
srand (time (0));<br />
iGedachteZahl = (rand() % (iZahlMax - iZahlMin + 1)) + iZahlMin;<br />
<br />
printf ("...fertig. \n"); // wird in der selben Zeile wie (5) ausgegeben<br />
<br />
// (7) Eine Schleife: die Anweisungen in den Klammern nach do<br />
// werden immer wiederholt ...<br />
do {<br />
<br />
printf ("Ihre Vermutung? ");<br />
scanf ("%d", &iVermutung);<br />
<br />
if (iVermutung > iGedachteZahl) {<br />
printf ("Die Zahl ist kleiner! \n");<br />
};<br />
<br />
if (iVermutung < iGedachteZahl) {<br />
printf ("Die Zahl ist größer! \n");<br />
}<br />
<br />
} while (iVermutung != iGedachteZahl);<br />
// ... solange iVermutung ungleich iGedachteZahl ist, sonst zurück zu (7)<br />
<br />
// (8) Hierher kommt der Computer nur, wenn iVermutung gleich iGedachteZahl ist,<br />
// die Zahl vom Benutzer also erraten wurde<br />
printf ("Richtig geraten!!!! Es war die %d!", iGedachteZahl);<br />
<br />
// (9) Unser Programm ist beendet. 0 zurück geben an das Betriebssystem,<br />
// damit es erkennt, dass das Programm fehlerfrei abgelaufen ist<br />
return 0;<br />
}<br />
</pre></div>Admin