PF 01

Grundlagen

Grundlagen


F. S.
Diese Lernkarten bieten einen umfassenden Einblick in die Programmierung, insbesondere in die Verwendung von Farben, Komponenten und Präfixen in verschiedenen Programmiersprachen. Sie decken Themen wie die Erstellung von Programmen, die Arbeit mit Quellcode und die Nutzung von Kompilern ab. Praktische Beispiele und Anweisungen helfen dabei, die theoretischen Konzepte in die Praxis umzusetzen. Ideal für Programmierer und Entwickler, die ihre Kenntnisse in der Softwareentwicklung vertiefen möchten.
Cartes-fiches
38
Utilisateurs
3
Langue
Allemand
Catégorie
Informatique
Niveau
Autres
Créé / Mis à jour
13.12.2020 / 05.03.2021

Cartes-fiches

Was ist eine IDE?

Eine integrierte Entwicklungsumgebung (IDE) stellt Programmierern eine Sammlung der wichtigsten Werkzeuge zur Softwareentwicklung unter einer Oberfläche zur Verfügung.

Was bedeutet GUI?

Grafische Benutzeroberfläche oder auch grafische Benutzerschnittstelle (Abk. GUI von englisch graphical user interface)

Was ist ein (Computer-)Programm?

  • ist eine Folge von Anweisungen (mittels Regeln und Richtlinien der Programmiersprache).
  • ein Programm teilt dem Rechner mit, wie ein Problem gelöst wird. (Algorithmus)
  • ein Programm besteht aus Befehlen
  • Programme werden nach Regeln und Richtlinien aufgebaut (Programmiersprachen)

Was ist ein Algorithmus?

  • ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems
  • besteht aus endlich vielen Einzelschritten
  • kann zur Ausführung im Computer implementiert, aber auch in menschlicher Sprache formuliert werden
  • bestimmte Eingabe = bestimmte Ausgabe

Beschreibe ein Beispiel für einen Algorithmus.

Was sind Programmiersprachen?

  • ist eine formale Sprache zur Formulierung von Rechenvorschriften, die der Computer ausführen soll
  • Anweisungen werden nach einem bestimmten Muster (Syntax) formuliert.
  • die erfassten Anweisungen nennt man Quelltext oder Quellcode
  • Um auf einem Computer ausgeführt zu werden, muss der Quelltext in Maschinensprache übersetzt werden.

Was ist ein Quelltext resp. Quellcode?

Der Quellcode oder auch Quelltext ist der lesbare Text eines Computerprogrammes oder einer Webseite. Er wird in einer Programmiersprache verfasst und dann vom Computer in Maschinensprache übersetzt. Für das Übersetzen sorgt ein sogenannter Compiler.

Was ist ein Compiler?

Ein Compiler (Kompilierer) ist ein Übersetzungsprogramm, das den Quellcode eines in einer höheren Programmiersprache abgefassten Quellprogramms in eine Maschinensprache übersetzt.

Nenne Unterschiede zwischen der Maschinensprache und höheren Programmiersprachen.

  • Maschinensprache
    • der Programmcode wird  hier Maschinencode genannt.
    • ist eine Programmiersprache (Binärcode) der direkt vom Prozessor ausgeführt wird.
    • ist eine enorme Menge an Code
    • eine einheitliche Maschinensprache gibt es nicht. Soll ein Programm auf unterschiedlichen Prozessortypen laufen, muss für jeden Typ ein geeigneter Maschinencode erzeugt werden.
    • Hohe Geschwindigkeit durch maschinennahe Befehle
       
  • Hochsprachen
    • fassen mehrere Maschinenbefehle zu einem einem Befehl zusammen
    • Befehle müssen durch Compiler in Maschinensprache übersetzt werden
    • Syntax an menschliche Sprache angepasst, daher gut verständlich
    • Geschwindigkeitsverlust durch kompilieren
    • Prozessorunabhängig, kann in 
    • man ist schneller und benötigt weniger Code
    • das gleiche Programm ann auf verschiedene Prozessoren kompiliert werden

Was gibt es für Programmiersprachen? Nenne Beispiele und erläutere deren Eigenschaften.

  • Maschinensprache, Assemblersprachen oder C: erlauben eine hardwarenahe Programmierung.
  • Höhere Programmiersprachen: erlauben komfortableres, schnelleres Programmieren (C#, Java)
  • Skriptsprachen: dienen zur einfachen Steuerung von Rechnern, wie bei der Stapelverarbeitung (Makro)
  • Sprachen mit visuellen Programmierumgebung: erleichtern die graphie Gestaltung von Benutzeroberflächen (GUI)
  • Grafische Programmiersprachen: sollen einen besonders leichten Zugang zum Programmieren bieten, statt Quelltext zu schreiben, kann das Programm aus Verarbeitungsblöcken zusammengeklickt werden.

Was ist ein (Programmier-)Paradigma?

Paradigma

  • ist eine grundsätzliche Denkweise.

Programmierparadigma:

  • ist ein fundamentaler Programmierstil
  • der Programmierung liegen je nach Design der einzelnen Programmiersprachen verschiedene Prinzipien zugrunde.
  • dies soll den Entwickler bei der Erstellung von "gutem" Code unterstützen resp. ihn zu einer gewissen Herangehensweise zwingen.

 

Nenne zwei systemorientierte Programmiersprachen und erläutere diese.

  • Maschinensprache: Hier handelt es sich um Maschinencode der direkt vom Prozessor gelesen werden kann.
     
  • Assemblersprachen: Ist eine sehr rudimentäre Programmiersprache und fasst Maschinencodes in Elementen ( „Mnemonics“) zusammen. Es handelt sich um lesbare Kürzel die einen Befehl einer Assemblersprache repräsentieren.

In welche Bereiche können problemorientierte Programmiersprachen unterteilt werden?

  • imperativ = befehlend
    • besteht aus Anweisungen, die beschreiben, wie das Programm seine Ergebnisse erzeugt (zum Beispiel Wenn-dann-Folgen, Schleifen, Multiplikationen etc.).
       
  • deklarativ = beschreibend
    • Dabei beschreibt der Programmierer, welche Bedingungen die Ausgabe des Programms (das "Was") erfüllen muss. Wie die Ergebnisse konkret erzeugt werden, wird bei der Übersetzung, zum Beispiel durch einen Interpreter festgelegt. Ein Beispiel ist die Datenbankabfragesprache SQL.

In welche Bereiche kann die imperative Programmiersprache unterteilt werden?

  • prozedural:
    • prozedurales Programm beschreibt den Weg, auf dem das gewünschte Ziel (=Ergebnis) erreicht werden kann
    • Das Gesamtproblem wird als eine Summe von Teilproblemen und deren Lösung aufgebaut. Ein Programm schreitet bei dieser Sichtweise zur Gesamtlösung von Teillösung zu Teillösung (auch Prozedur genannt). Eine Prozedur zielt dabei bereits auf die Wiederverwendbarkeit bei anderen Problemlösungen.
    • Vertreter: Pascal, C
       
  • objektorientiert:
    • Der OO Ansatz orientiert sich dabei an “Dingen” (Objekte, die gewisse Eigenschaften und ein gewisses Verhalten haben), die modelliert werden müssen.
    • Objektorientierte Programmierung lebt von Klassen, ihren untergeordneten Objekten und der Vererbung ihrer Attribute.
    • Alles wird durch einzelne separate Objekte beschrieben
    • Vertreter: C#, Java, C++

In welche Bereiche kann die deklarative Programmiersprache unterteilt werden?

  • logisch:
    • beruht auf der mathematischen Logik. Anders als bei der imperativen Programmierung besteht ein Logik-Programm nicht aus einer Folge von Anweisungen, sondern aus einer Menge von Axiomen, welche hier als eine Ansammlung von Fakten oder Annahmen zu verstehen ist. Stellt der Benutzer eines Logik-Programms eine Anfrage, so versucht der Interpreter, die Lösungsaussage allein aus den Axiomen zu berechnen.
    • Vertreter: Prolog, SQL
       
  • funktional:
    • Funktionen werden nicht nur definiert und angewendet, sondern können auch wie Daten miteinander verknüpft, als Parameter verwendet und als Funktionsergebnisse auftreten. Dadurch kann ein funktionales Programm sehr weitreichend neue Berechnungsvorschriften zur Laufzeit zusammensetzen und anwenden.

    • Vertreter: Logo, Lisp (Bausteine)

Erläutere den Prozess: Vom Quellcode zum ausführbaren Programm. Folgende Begriffe/Abkürzungen sind dabei zu erkläutern:

  • MSIL?
  • CLR?
  • JIT-Compiler?

  1. Das .NET Framework arbeitet mit einem Intermediationskonzept auf Basis einer Zwischensprache und einer virtuellen Maschine (WM). à WORA = Write Once Run Anywhere
  2. Der Quellcode einer .NET-Programmiersprache (bspw. C#) wird durch den Compiler in die Zwischensprache kompiliert. Analog verwendete Begriffe für den Zwischencode:
    • MSIL = Microsoft Intermediate Language
    • CIL = Common Intermediate Language
    • Managed Code
       
  3. Zur Laufzeit des Programms wird der Zwischencode von einem Just-in-time-Compiler, welcher Bestandteil der CLR (virtuellen Laufzeitumgebung von .NET-Anwendungen) ist, in nativen Code (Maschinencode) übersetzt.

Welche Aussagen zum Algorithmus sind richtig?

Definiere den Begriff Syntax.

  • So wie Sie als Mensch nur sinnvoll aufgebaute Sätze verstehen können, versteht ein Computer auch nur Programme, die sinnvoll formulierte Befehle an ihn senden.
  • Deshalb ist es wichtig, beim Programmieren die Sprachregeln der jeweiligen Programmiersprache einzuhalten.
  • Beim Programmieren legt die Syntax formale Regeln über die zulässigen Sprachelemente einer Programmiersprache fest.
  • Außerdem regelt sie, inwiefern diese Elemente in einem Programm verwendet werden dürfen.

Wozu muss der Quellcode kompiliert werden?

  • Der Quellcode ist für den Prozessor nicht direkt ausführbar.
  • Dieser Quellcode muss daher in eine für den Prozessor verständliche Abfolge von Anweisungen übersetzt werden.
  • Im einfachsten Falle ist dies Maschinensprache, welche auf dem Befehlssatz einer bestimmten Rechnerarchitektur beruht.

Warum kompiliert Microsoft den Quellcode in einen Zwischencode welcher sich "Microsoft Intermediate Language" nennt?

Dieses Vorgehen hat zwei Gründe:

  • Zum einen möchte man sich von der Hardwareebene soweit distanzieren, dass diese Ebene bei der Ausführung von Code keine Rolle mehr spielt. Dabei kommt eine virtuelle Maschine ins Spiel, welche für jede Betriebssystemplattform zur Verfügung steht. Da der Quellcode in einen Zwischencode übersetzt wird, kann die jeweilige VM diesen Zwischencode mittels einem JIT-Compiler für die jeweilige Zielplattform "fertig" kompilieren. Somit ist derselbe Quellcode auf verschiedenen Plattformen ausführbar.
  • Nebst diesem Aspekt vereinheitlicht Microsoft unter der .Net Strategie unterschiedliche Programmiersprachen und Konzepte. Es spielt grundsätzlich keine Rolle, ob der Quellcode in C#, Javascript, Python, C++ oder VisualBasic entwickelt wird, denn das Endergebnis, also der Zwischencode wird grundsätzlich derselbe sein.

Welche Fehlerarten unterscheide man in der Programmierung?

Syntaktische Fehler

  • Dies sind Fehler, welche eine Verletzung der „Grammatik“ der Sprache aufweisen. Zum Beispiel, wenn Klammern
    oder Strichpunkte vergessen werden, oder definierte Schlüsselworte falsch geschrieben werden.

Logische Fehler

  • Diese Fehler beruhen zwar auf der korrekten Syntax, führen aber zu falschen Ergebnissen. Zum Beispiel ein
    Fehler in einer Berechnungsformel, falsche Überlegungen in einem Algorithmus, usw. Richtig lästig sind
    sporadische logische Fehler, welche nur ab und zu in bestimmten Konstellationen auftauchen.
     
  • Logische Fehler können von der Entwicklungsumgebung nicht entdeckt werden. Daher ist es sehr wichtig, dass
    der Quellcode umfassend getestet wird (dazu später mehr in diesem Modul).

Aufgabe A1-2-1

  • Button Gelb --> Label Gelbe Hintergrundfarbe
  • Button Rot --> ...
  • Button Grün --> ...
  • Button Blau --> ...

Methode auf entsprechendem Button:

Lbl1.Text = "Gelbe Hintergrundfarbe";
Lbl1.BackColor = Color.Yellow;

Aufgabe A1-2-2

  • 1ner Button --> Label mit "." ergänzen
  • 2er Button --> Label mit ".." ergänzen
  • 3er Button --> ...

Methode auf entsprechendem Button:

 

Lbl1.Text = Lbl1.Text + "...";

Aufgabe A1-2-3

 

Buttons rauf, runter, rechts, links, home --> Button verändert Position

Methode auf entsprechendem Button: Bei Positionsveränderung unbedingt X-Y Achse berücksichtigen!

Positionsveränderung:
CmdButton1.Location = new Point (CmdButton1.Location.X + 10, CmdButton1.Location.Y);

home-Button:

Lokal: CmdPoint.Location = new Point(140, 230);

Aufgabe A1-2-4

  • Fensterhöhe vergrössern
  • Fensterhöhe verkleinern
  • Fensterbreite vergrössern
  • Fensterbreite verkleinern

Hinweis1: Weil wir die Form (Fenster) verändern muss das Objekt nicht unbedingt nochmals erwähnt werden.

Hinweis2: Man berücksichtige, dass das Fenster zu Beginn zentriert sein soll, und auch zentriert bleiben soll.

  • Properties: StartPosition: Center Screen

(Form1.)Size = new Size((Form1.)Size.Width, (Form1.)Size.Height + 10);
(Form1.)Location = new Point((Form1.)Location.X , (Form1.)Location.Y - 5); --> es soll zentriert bleiben

LblPosition.Text = "Position: X: " + (Form1.)Location.X + ", Y:" + (Form1.)Location.Y;
LblDimension.Text = "Breite: X: " + (Form1.)Size.Width + ", Höhe: " + (Form1.)Size.Height;

Aufgabe A1-2-5

Erstellen eines Binärtaschenrechners

  • Buttons: 0 0 0 0 0 0 0 0
  • Button: Berechnet Dezimalwert
  • Button: Setze zurück

Hinweis: Binärcode (Text zur Basis 2!!) in dezimal umrechnen und wieder in Text ausgeben:
LblResultat = Convert.ToString(ConvertToInt16("00000011", 2);

 

Für jeden Button:

  • CmdButton1.Text = "1";
  • CmdButton2.Text = "1";
  • ...

Berechnung in Dezimal:

  • LblResultatDezimal.Text = Convert.ToString(Convert.ToInt32(CmdButton1.Text + ... CmdButton8.Text, 2));

Setze zurück:

  • CmdButton1.Text = "0";
  • ...
  • LblResultat.TExt = "0";

Präfix der Komponente: Button

Cmd

Präfix der Komponente: CheckBox

Chk

Präfix der Komponente: ComboBox

Cmb

Präfix der Komponente: GroupBox

Grp

Präfix der Komponente: Label

Lbl

Präfix der Komponente: ListBox

Lst

Präfix der Komponente: NumericUpDown

Num

Präfix der Komponente: Panel

Pnl

Präfix der Komponente: RadioButton

Rad

Präfix der Komponente: TrackBar

Trk

Präfix der Komponente: TextBox

Txt

Präfix der Komponente: Timer

Tmr

Étudier