Informatik Wpf 6 20201117

2007, 2024 Oskar Wagner

| Start | Education | Fernunterricht | Informatik Wpf 6
$$ \def\Forall{\enskip \forall} \def\forthat{\;\bigm|\;} \def\hateq{\mathrel{\widehat{=}}} \def\hint#1{\quad\color{maroon}{\small\textit{#1}}} \def\stx#1{\small\textrm{#1}} \def\guide#1{\quad{\stx{#1}}} \def\ol#1{\overline{#1}} \def\lraq{ \quad\leftrightarrow\quad } \def\Lraq{ \quad\Leftrightarrow\quad } \def\ra{ \,\rightarrow\, } \def\raq{ \quad\rightarrow\quad } \def\Ra{ \,\Rightarrow\, } \def\Raq{ \quad\Rightarrow\quad } \def\ux#1{\;\textrm{#1}} \newcommand\m[1][]{#1\ux{m}} \newcommand\mm[1][]{#1\ux{mm}} \newcommand\cm[1][]{#1\ux{cm}} \newcommand\km[1][]{#1\ux{km}} \newcommand\qm[1][]{#1\ux{m}^2} \newcommand\cel[1][]{#1\,^\circ\textrm{C}} \newcommand\deg[1][]{#1\,^\circ} \newcommand\eur[1][]{#1\ux{€}} \newcommand\pct[1][]{#1\,\%} \newcommand\prm[1][]{#1\,{}^\text{o}\mkern-5mu/\mkern-3mu_\text{oo}} $$

Achte beim Lesen der Lektion darauf, dass du den Sinn jedes Absatzes erfasst.

Die Aufgaben (Verweis und Hinweise am Ende des Textes) sind schriftlich durchzuführen und bis zum 22. November 2020 (Sonntag) an die Lehrkraft zu schicken.

In dieser Lektion geht es um die Entwicklung von Programmiersprachen, um grundlegende Ablaufstrukturen sowie um Sprachkonzepte.

Programmiersprachen

Eine Rechenmaschine soll Abfolgen von arithmetischen oder logischen Schritten (automatisch) ausführen können. Programmiersprachen bilden die Schnittstelle, mittels der die entsprechende Instruktion der Hardware erfolgt.

Entwicklungsstufen der Programmierung

Die Tabelle gibt eine grobe Übersicht über die Entwicklung der Programmierung.

Entwicklungsstufen der Programmierung
1940Physikalische Effekte
Elektronenröhren, Transistoren, Logikgatter
Verkabelung, Schalter
1945Maschinencode
Binär- oder Hexadezimalcode (Lochstreifen)
C7 45 F8 03
1950Assembler (maschinenorientiert)
Symbolische Befehle
mov DWORD PTR [rbp-8], 3
1955Höhere Programmiersprachen
Fortran, Algol, Lisp, Cobol
READ INPUT TAPE 5, 501, IA, IB
1970Neue Programmierparadigmen
Pascal, Smalltalk, C, Prolog
writeln(´Hallo Welt´)
1980Objektorientierte Programmiersprachen
C++, Turbo Pascal, Perl
class Vehicle
1990Weiterentwickelte Programmiersprachen
Python, Lua, Java, Ruby
pot2 = [2**n for n in range(1,50)]
2010Sprachen für paralleles und verteiltes Rechnen
Go, Julia
exp3 = [1,2,3] .ˆ3

Ablaufstrukturen

Algorithmus

Ein Algorithmus ist die Darstellung einer Problemlösung als Folge einzelner Schritte (Anweisungen, instructions). Algorithmen ermöglichen Nachvollziehbarkeit und Automatisierung.
Die Steuerung des Ablaufs in einem Algorithmus erfolgt durch Kombination der drei Kontrollstrukturen

Damit lassen sich strukturierte Anweisungen erstellen.

B Deine Aufgabe ist, dafür zu sorgen, dass Milch im Kühlschrank ist. Entwirf einen Algorithmus zur Lösung dieses Problems.
Ein erster grober Entwurf mit einer Sequenz zweier Anweisungen:
Milch_einkaufen
Milch_in_den_Kühlschrank_stellen
Dieses Programm muss regelmäßig gestartet werden. Bei jedem Start kommt neuerlich Milch in den Kühlschrank.

B Verbessere die obige Version so, dass der Kühlschrank nicht überquillt.
Eine Selektion (bedingte Anweisung) hilft:
if not Milch_im_Kühlschrank:
  Milch_einkaufen
  Milch_in_den_Kühlschrank_stellen

Die Prozedur Milch_einkaufen ist allerdings ein Vorgang, der sich aus etlichen Teilschritten zusammensetzt.
Nur wenn das Wissen über den Ablauf aller Teilschritte vorhanden ist, wird der Einkauf erfolgreich sein.

Mehrere Anweisungen können als Codeblock durch Einrücken (Python), geschwungene Klammern (C, JavaScript, PHP) oder bestimmte Schlüsselworte (Pascal) gruppiert werden.

Strukturierte Programmierung

Strukturierte Programmierung bedeutet, dass die Lösung eines Problems in überschaubare Teilprogramme (Prozeduren) gegliedert wird. Eine Prozedur enthält also den Algorithmus für einen Teil der Lösung.
Bei der Entwicklung der Prozeduren gibt es zwei Vorgangsweisen:

Meist werden beide Wege parallel eingesetzt.

B Schreibe den Quelltext für die Prozedur "Milch_einkaufen".
def Milch_einkaufen:
  Kleidung_anziehen
  Geld_einstecken
  Zum_Geschäft_gehen
  Suche(Milch)
  Nehme(Milch)
  Bezahlen
  Nach_Hause_gehen

Milch_einkaufen besteht aus einer Abfolge (Sequenz) einzelner Prozeduren.
Diese Routinen wie etwa Suche(Milch) müssen noch geschrieben werden (Top-Down-Verfahren).

B Hier ein allgemein gehaltener Suchalgorithmus zum Finden einer beliebigen Ware.
def Suche(Ware):
  Artikel = Erster_Artikel
  while not Artikel == Letzter_Artikel:
    if Artikel == Ware:
      break
    Artikel = Nächster_Artikel
Hier kommt eine Iteration (Wiederholung von Anweisungen) zum Einsatz.
Quellcode

Als Quellcode (Quelltext, source code) bezeichnet man die in einer Programmiersprache verfassten Algorithmen zur (Teil-)Lösung einer Aufgabe.
Mit einem Editor werden die gewünschten Anweisungen (instructions) strukturiert aufgeschrieben und in einer Datei gespeichert.

Layout eines Quellcodes

Der Ablauf eines Programms und damit sein struktureller Aufbau müssen im Layout des Quelltextes sichtbar sein.
Dies wird mit passenden Layout-Techniken erreicht:

Modulare Programmierung

Bei der modularen Programmierung werden Prozeduren zusammen mit Daten zu Modulen zusammengefasst. Je nach Bedarf werden die benötigten Module im Quellcode eingebunden.
In der objektorientierten Programmierung bildet eine Objektklasse einen solchen Modul.
Meist wird jeweils nur ein Modul in einer Datei gespeichert.


Aufgaben

Sprachkonzepte (pdf)

Hinweise zur Durchführung:

  1. Erstelle deine Antworten als Dokument im TXT-, HTML- oder PDF-Format.
    Um Text im TXT-Format zu schreiben, verwende SciTE und speichere die Datei mit der Endung ".txt".
  2. Schicke deine Arbeit per eMail.

Erhaltene Arbeiten:

2020.6WPFBlBrDrGaHaHeKaNi
Erhalten xx x x