Einführung Flashcards
Vorlesung 01: Einführung in die Informatik, Terminologie und wichtigste Begriffe.
Was ist Informatik?
Die Wissenschaft der systematischen Verarbeitung von Informationen (insbesondere der automatischen Verarbeitung mit Hilfe von Digitalrechnern).
Was ist der Unterschied zwischen Informatik und EDV-Kenntnissen?
EDV-Kenntnisse beschreiben das Anwenderwissen (Umgang mit Computer, Bedienung von Computerprogrammen, …);
Informatik beschreibt das Grundlagenwissen (Wie funktioniert ein Computer? Wie schreibt man ein Programm?)
Was ist ein Algorithmus?
Handlungsanweisung zur schrittweisen Lösung eines Problems, dessen Ausführung keine Intelligenz sondern nur Genauigkeit erfordert.
Welches sind die drei Abstraktionsstufen eines Algorithmus?
1. Kernidee (abstrakt): Die Essenz eines Algorithmus. 2. Pseudocode (semi-detailliert): Für Menschen gemacht (Skizze) 3. Implementierung (sehr detailliert): Für Mensch & Computer gemacht (les- & ausführbar)
Wie werden Daten und Programme gespeichert?
Als Folge von Bits aus {0, 1}.
Was ist ein Programmzustand?
Werte aller Bits.
Wie und zu was werden Bits zusammengefasst?
8 Bits = 1 Byte
Was bedeutet “Random Access”?
Die Zugriffszeit auf eine Speicherzelle ist (nahezu) unabhängig von ihrer Adresse.
Was macht ein Prozessor?
Ein Prozessor (CPU):
- führt Befehle in Maschinensprache aus
- hat eigenen schnellen Speicher (Register)
- kann vom Hauptspeicher lesen und in ihm schreiben
- beherrscht eine Menge einfachster Operationen (z.B. Addieren)
Wie ist ein Computerprogramm definiert?
Als Folge von Befehlen, die man dem Computer mittels einer Programmiersprache erteilt.
Was für Einordnungen für Programmiersprachen gibt es?
- Kompilierte vs. interpertierte Sprachen
(C++, C#, Java, etc. vs. Python, Javascript, Matlab) - Höhere Programmiersprachen vs. Assembler
- Mehrzwecksprachen vs. zweckgebundene Sprachen.
- Prozedurale, objektorientierte, funktionsorientierte und logische Sprachen
Nach welchen zwei Regeln müssen Programme geformt werden und was ist der zentrale Unterschied zwischen den beiden?
(1) Syntax: Zusammenfügungsregeln für elementare Zeichen.
(2) Semantik: Interpretationsregeln für zusammengefügte Zeichen, z.B. Mehrdeutigkeiten vermeiden.
Syntax kann im Gegensatz zur Semantik vom Computer überprüft werden, die Semantik braucht menschliches Verständnis.
Welche vier Dinge braucht man zum Programmieren?
Editor, Compiler, Computer, Betriebssystem.
Wozu braucht man Kommentare?
Kommentare braucht man, um zu dokumentieren, was das Programm wie macht und die Programmlogik zu widerspiegeln.
Wozu braucht man folgenden Befehl? #𝚒𝚗𝚌𝚕𝚞𝚍𝚎
Macht Ein-/Ausgabe verfügbar.
Womit beginnt und endet ein C++-Programm? Wie würde das kürzeste C++-Programm aussehen?
Die Hauptfunktion 𝚖𝚊𝚒𝚗() ist der Startpunkt eines Computerprogramms. Die Funktion und somit das Programm terminiert bei der Rückgabeanweisung 𝚛𝚎𝚝𝚞𝚛𝚗 0. Man könnte das kürzeste Programm folgendermassen konstruieren:
𝚒𝚗𝚝 𝚖𝚊𝚒𝚗 () {𝚛𝚎𝚝𝚞𝚛𝚗 0;}
Was sind Anweisungen?
Anweisungen sind die sequenziell ausgeführten Bausteine eines C++-Programms. Sie enden mit einem Semikolon und haben einen potenziellen Effekt.
Was sind Ausdrucksanweisungen?
Haben die Form “expr”, wobei “expr” ein Ausdruck ist, z.B. 𝚋 = 𝚋 * 𝚋;. Der Wert von “expr” wird ignoriert.
Was sind Rückgabeanweisungen?
Treten nur in Funktionen auf und sind von der Form 𝚛𝚎𝚝𝚞𝚛𝚗 “expr”, wobei “expr” ein Ausdruck ist. Sie spezifizieren den Rückgabewert einer Funktion, z.B. in der Hauptfunktion 𝚛𝚎𝚝𝚞𝚛𝚗 0.
Was sind Deklarationsanweisungen?
Sie führen neue Namen im Programm ein und können Variablen initialisieren, z.B.: 𝚒𝚗𝚝 𝚋 = 𝚊 * 𝚊.
Welche Fundamentaltypen existieren in C++ und wofür werden sie gebraucht?
- 𝚒𝚗𝚝 für ganze Zahlen
- 𝚞𝚗𝚜𝚒𝚐𝚗𝚎𝚍 𝚒𝚗𝚝 für natürliche Zahlen
- 𝚏𝚕𝚘𝚊𝚝 und 𝚍𝚘𝚞𝚋𝚕𝚎 für reelle Zahlen
- 𝚋𝚘𝚘𝚕 für Wahrheitswerte.
Was sind Variablen?
Variablen sind im Programmtext sichtbare Platzhalter für (wechselnde) Werte und haben Name, Typ, Wert und Adresse.
Was sind Ausdrücke und was für Ausdrücke existieren?
Ausdrücke repräsentieren Berechnungen und sind entweder primär (𝚋) oder zusammengesetzt aus anderen Ausdrücken mit Hilfe von Operatoren (𝚋 * 𝚋). Sie haben Typ, Wert und einen potentiellen Effekt.
Was sind Literale?
Literale repräsentieren konstante Werte und haben einen festen Typ und Wert, z.B. hat 𝟷 den Typ 𝚒𝚗𝚝 und den Wert 𝟷.
Was ist der Unterschied zwischen einem L-Wert und einem R-Wert?
Ein L-Wert (“links vom Zuweisungsoperator”) ist ein Ausdruck mit Adresse und Wert. Der Wert ist der Inhalt an der Speicheradresse und entspricht dem Typ des Audrucks. L-Werte können ihre Werte ändern. Namen von Variablen sind z.B. L-Werte.
Ein R-Wert (“rechts vom Zuweisungsoperator”) hingegen ist jeder Ausdruck, der kein L-Wert ist. Er kann seinen Wert nicht ändern und besitzt keine Adresse, wie z.B. Literale. Jeder L-Wert kann als R-Wert benutzt werden, aber nicht umgekehrt.
Was sind Operatoren?
Operatoren machen aus Ausdrücken (Operanden) neue zusammengesetzte Ausdrücke. Sie spezifizieren für die Operanden und das Ergebnis ihre Typen und ob sie L- oder R-Werte sein müssen.
Was macht der Zuweisungsoperator? Welchem mathematischen Operator entspricht er?
Der Zuweisungsoperator = weist einem L-Wert auf der linken Seite einen R-Wert auf der rechten Seite zu, z.B.: 𝚊 = 𝚋.
Er ist jedoch nicht zu verwechseln mit dem mathematischen Vergleichsoperator =, ist er viel eher der mathematische Operator :=.
Was macht der Eingabeoperator?
Der Eingabeoperator»_space; weist dem rechten Operanden den nächsten Wert aus der Eingabe zu, entfernt ihn aus der Eingabe und gibt den Eingabestrom als L-Wert zurück. Sowohl der linke als auch der rechte Operand sind L-Werte, z.B.:
𝚜𝚝𝚍::𝚌𝚒𝚗»_space; 𝚊
Was macht der Ausgabeoperator?
Gibt den Wert des rechten Operanden (R-Wert) aus, fügt ihn dem Ausgabestrom hinzu und gibt den Strom als L-Wert zurück, z.B.:
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 «_space;𝚊