Brückenkurs Programmieren
Tag 1: Der Rechner, Variablen und Operationen
Christopher Schölzel
Technische Hochschule Mittelhessen
2. September 2019
Inhalt
Organisatorisches
Der Weg zum Power-User
Einleitung: Was ist ein Rechner?
Von Hardware zu Software: Das Betriebssystem Textdateien für Power-User
Beyond Klickibunti: Die Konsole Hello World
Einleitung: Was ist Programmieren?
Installation von Java (mit Jupyter Notebook) Erste Herausforderung: Rechnen
Variablen und Operatoren Variablen
Operatoren
Nachmittag: Typische Fehler bei Zuweisungen
2 / 47
Inhalt
Organisatorisches
Der Weg zum Power-User
Einleitung: Was ist ein Rechner?
Von Hardware zu Software: Das Betriebssystem Textdateien für Power-User
Beyond Klickibunti: Die Konsole Hello World
Einleitung: Was ist Programmieren?
Installation von Java (mit Jupyter Notebook) Erste Herausforderung: Rechnen
Variablen und Operatoren Variablen
Operatoren
Nachmittag: Typische Fehler bei Zuweisungen
Organisatorisches I
Ziele des Kurses:
I vom DAU zum Power-User werden ;)
I Grundzüge des Programmierens lernen (unabhängig von der Sprache) I Spaß haben
Themen:
I Heute: Einleitung, Variablen, Operatoren I Dienstag: Verzweigungen, Schleifen: While I Mittwoch: Schleifen: For, Funktionen I Donnerstag: Arrays
I Freitag: Rekursion
4 / 47
Organisatorisches II
Tagesablauf:
I Beginn 9:00
I Kurzer Theorie-Teil mit gemeinsamen Übungen I Mittagspause: 12:00 bis 13:00
I Übungsblätter und gemeinsame Übungen I evtl. weiterführende Themen am Nachmittag I Ende 16:00
Unterlagen:https://homepages.thm.de/~cslz90/kurse/bk1920
Inhalt
Organisatorisches
Der Weg zum Power-User
Einleitung: Was ist ein Rechner?
Von Hardware zu Software: Das Betriebssystem Textdateien für Power-User
Beyond Klickibunti: Die Konsole Hello World
Einleitung: Was ist Programmieren?
Installation von Java (mit Jupyter Notebook) Erste Herausforderung: Rechnen
Variablen und Operatoren Variablen
Operatoren
Nachmittag: Typische Fehler bei Zuweisungen
6 / 47
Einleitung: Was ist ein Rechner?
Woraus besteht ein Rechner?
Bildquelle: „Valakas“, Christopher Schölzel, Public Domain 8 / 47
Von-Neumann-Architektur
Rechnerarchitektur nach John von Neumann I Central Processing Unit (CPU, Prozessor)
I Recheneinheit (ALU): Mathematische Operationen I Steuereinheit: steuert Programmablauf
I Bussystem
I Kommunikation zwischen Komponenten I Arbeitsspeicher (RAM)
I speichert Daten laufender Programme I schnell, klein, flüchtig
I Massenspeicher
I speichert Programm- und Nutzerdaten I langsam, groß, persistent
I I/O
I Schnittstelle zur Außenwelt
I Tastatur, Maus, Bildschirm, Grafikkarte, ...
Seit 1945 im Wesentlichen die gleiche Architektur
Eine Welt ohne Betriebssystem (I)
CPU Firefox
Word Minecraft
10 / 47
Eine Welt ohne Betriebssystem (II)
RAM-Bereich von Firefox
Eine Welt ohne Betriebssystem (III)
Hardware-Interrupt (Maus, Tastatur, ...)
CPU
12 / 47
Betriebssysteme
Aufgaben des Betriebssystems
I Vermittler zwischen Hard- und Software I verteilt Systemressourcen an Prozesse
I CPU-Zeit I RAM
I Zugriff auf Dateisystem I Zugriff auf I/O
I vereinfacht Zugriff auf Systemressourcen
I Treiber als Software zum Steuern externer Geräte I Dateisystem statt rohem Festplattenzugriff I bietet eine Benutzeroberfläche
I Verwaltung von Hard- und Software I Benutzerrechte
Textdateien für Power-User
Professionelle Texteditoren für Entwickler I Atom: open-source, langsam, electron
I VS Code: open-source, relativ schnell, electron I Sublime: proprietär, sehr schnell, python
14 / 47
Achtung: Textdatei ist nicht gleich Textdatei
Gelesen als Original in UTF-8 Original in cp1252 ASCII Spa?? f??r 300??? Spa? f?r 300?
latin-1 SpaÃ? für 300â?¬ Spaß für 300?
cp1252 Spaß für 300€ Spaß für 300€
UTF-8 Spaß für 300€ Spa ?f ?r 300?
UTF-16 灓썡 ? 썦犼㌠〰苢 灓映狼㌠〰
S p a ß _ f ü r _ 3 0 0 €
UTF-8 53 70 61 c39f 20 66 c3bc 72 20 33 30 30 e282ac cp1252 53 70 61 df 20 66 fc 72 20 33 30 30 80 Faustregel: Alles als UTF-8 speichern und lesen, dann ist alles gut.
Achtung: Textdatei ist nicht gleich Textdatei
Gelesen als Original in UTF-8 Original in cp1252 ASCII Spa?? f??r 300??? Spa? f?r 300?
latin-1 SpaÃ? für 300â?¬ Spaß für 300?
cp1252 Spaß für 300€ Spaß für 300€
UTF-8 Spaß für 300€ Spa ?f ?r 300?
UTF-16 灓썡 ? 썦犼㌠〰苢 灓映狼㌠〰
S p a ß _ f ü r _ 3 0 0 €
UTF-8 53 70 61 c39f 20 66 c3bc 72 20 33 30 30 e282ac cp1252 53 70 61 df 20 66 fc 72 20 33 30 30 80
Faustregel: Alles als UTF-8 speichern und lesen, dann ist alles gut.
15 / 47
Achtung: Textdatei ist nicht gleich Textdatei
Gelesen als Original in UTF-8 Original in cp1252 ASCII Spa?? f??r 300??? Spa? f?r 300?
latin-1 SpaÃ? für 300â?¬ Spaß für 300?
cp1252 Spaß für 300€ Spaß für 300€
UTF-8 Spaß für 300€ Spa ?f ?r 300?
UTF-16 灓썡 ? 썦犼㌠〰苢 灓映狼㌠〰
S p a ß _ f ü r _ 3 0 0 €
UTF-8 53 70 61 c39f 20 66 c3bc 72 20 33 30 30 e282ac cp1252 53 70 61 df 20 66 fc 72 20 33 30 30 80 Faustregel: Alles als UTF-8 speichern und lesen, dann ist alles gut.
Beyond Klickibunti: Die Konsole
Bunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:
Konsole/Terminal/Eingabeaufforderung:
I Arbeitsverzeichnis steht am Anfang der Zeile I Befehl Argument1 Argument2 ... + Enter
I typische Argumente: -?, /? (Windows), --help I Befehl "Langes Argument mit Leerzeichen" I dir listet Dateien im Arbeitsverzeichnis
I cd Pfad wechselt das Arbeitsverzeichnis I .. ist das Elternverzeichnis
I ↹ (mehrfach) für Autovervollständigung
16 / 47
Beyond Klickibunti: Die Konsole
Bunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:
Konsole/Terminal/Eingabeaufforderung:
I Arbeitsverzeichnis steht am Anfang der Zeile
I Befehl Argument1 Argument2 ... + Enter I typische Argumente: -?, /? (Windows), --help I Befehl "Langes Argument mit Leerzeichen" I dir listet Dateien im Arbeitsverzeichnis
I cd Pfad wechselt das Arbeitsverzeichnis I .. ist das Elternverzeichnis
I ↹ (mehrfach) für Autovervollständigung
Beyond Klickibunti: Die Konsole
Bunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:
Konsole/Terminal/Eingabeaufforderung:
I Arbeitsverzeichnis steht am Anfang der Zeile I Befehl Argument1 Argument2 ... + Enter
I typische Argumente: -?, /? (Windows), --help I Befehl "Langes Argument mit Leerzeichen" I dir listet Dateien im Arbeitsverzeichnis
I cd Pfad wechselt das Arbeitsverzeichnis I .. ist das Elternverzeichnis
I ↹ (mehrfach) für Autovervollständigung
16 / 47
Beyond Klickibunti: Die Konsole
Bunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:
Konsole/Terminal/Eingabeaufforderung:
I Arbeitsverzeichnis steht am Anfang der Zeile I Befehl Argument1 Argument2 ... + Enter
I typische Argumente: -?, /? (Windows), --help
I Befehl "Langes Argument mit Leerzeichen" I dir listet Dateien im Arbeitsverzeichnis
I cd Pfad wechselt das Arbeitsverzeichnis I .. ist das Elternverzeichnis
I ↹ (mehrfach) für Autovervollständigung
Beyond Klickibunti: Die Konsole
Bunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:
Konsole/Terminal/Eingabeaufforderung:
I Arbeitsverzeichnis steht am Anfang der Zeile I Befehl Argument1 Argument2 ... + Enter
I typische Argumente: -?, /? (Windows), --help I Befehl "Langes Argument mit Leerzeichen"
I dir listet Dateien im Arbeitsverzeichnis I cd Pfad wechselt das Arbeitsverzeichnis
I .. ist das Elternverzeichnis
I ↹ (mehrfach) für Autovervollständigung
16 / 47
Beyond Klickibunti: Die Konsole
Bunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:
Konsole/Terminal/Eingabeaufforderung:
I Arbeitsverzeichnis steht am Anfang der Zeile I Befehl Argument1 Argument2 ... + Enter
I typische Argumente: -?, /? (Windows), --help I Befehl "Langes Argument mit Leerzeichen"
I dir listet Dateien im Arbeitsverzeichnis
I cd Pfad wechselt das Arbeitsverzeichnis I .. ist das Elternverzeichnis
I ↹ (mehrfach) für Autovervollständigung
Beyond Klickibunti: Die Konsole
Bunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:
Konsole/Terminal/Eingabeaufforderung:
I Arbeitsverzeichnis steht am Anfang der Zeile I Befehl Argument1 Argument2 ... + Enter
I typische Argumente: -?, /? (Windows), --help I Befehl "Langes Argument mit Leerzeichen"
I dir listet Dateien im Arbeitsverzeichnis I cd Pfad wechselt das Arbeitsverzeichnis
I .. ist das Elternverzeichnis
I ↹ (mehrfach) für Autovervollständigung
16 / 47
Beyond Klickibunti: Die Konsole
Bunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:
Konsole/Terminal/Eingabeaufforderung:
I Arbeitsverzeichnis steht am Anfang der Zeile I Befehl Argument1 Argument2 ... + Enter
I typische Argumente: -?, /? (Windows), --help I Befehl "Langes Argument mit Leerzeichen"
I dir listet Dateien im Arbeitsverzeichnis I cd Pfad wechselt das Arbeitsverzeichnis
I .. ist das Elternverzeichnis
(mehrfach) für Autovervollständigung
Wie bekomme ich Text in die Konsole hinein oder hinaus?
I linke Maustaste (gedrückt halten) I markiert Text im Fenster I rechte Maustaste
I wenn Text markiert ist: Kopieren
I sonst: Einfügen (und evtl. Befehl ausführen)
I Windows 7: Rechtsklickmenü ⇒ Markieren/Einfügen
17 / 47
Woher weiß die Konsole, welche Befehle es gibt?
I Befehl = ausführbare Datei
I Umgebungsvariable PATH gibt an, welche Ordner durchsucht werden I Beispiel:
I Befehl foo xyz eingegeben I Windows sucht eine Datei foo.exe I beginnt bei erstem Ordner in PATH
I macht weiter bis gefunden, oder alles durchsucht
Power-User-Challenge: El Consolero
I Öffne ein Konsolenfenster
I Navigiere auf der Konsole nach C:\
I Lies dir die Hilfemeldung zu dem Befehl dir durch I Befehl zum Aufruf der Hilfe: dir /?
I Finde mit dir heraus, wem C:\Windows gehört I Navigiere zu C:\Windows\System32
I verwende dir mit der Pausenfunktion
Bonus: Liste mit dir nur die Elemente in C:\Windows\System32 auf, die keine Verzeichnisse sind und sortiere diese nach Dateiendung und dann nach Namen.
19 / 47
Weitere Power-User-Tipps
Weitere Tipps gibt es auf dem Handout:
I Schnelle Navigation und Auswahl I Navigation per Tabulatortaste I Text markieren mit der Tastatur I Die Zwischenablage
I Undo/Redo I besseres Googeln
Inhalt
Organisatorisches
Der Weg zum Power-User
Einleitung: Was ist ein Rechner?
Von Hardware zu Software: Das Betriebssystem Textdateien für Power-User
Beyond Klickibunti: Die Konsole Hello World
Einleitung: Was ist Programmieren?
Installation von Java (mit Jupyter Notebook) Erste Herausforderung: Rechnen
Variablen und Operatoren Variablen
Operatoren
Nachmittag: Typische Fehler bei Zuweisungen
21 / 47
Was ist Programmieren?
Definition
Programmieren ist das Schreiben von Computerprogrammen.
Ein Computerprogrammist eine in einer Programmierspracheverfasste Anweisungsabfolge, die ein bestimmtes Problem löst.
Programmiersprachen
Maschinensprache
0100 1101 0101 1010 1001 0000 0000 0000 0000 0011 0000 0000 0000 0000 0000 0000 0000 0100
Assembler
pushc 3 pushc 4 add
C
int main(int argc, char *argv[]) { char *str = (char*) malloc(10);
str[9] = 0;
printf("%s", str);
}
Java
public class Thing {
public static void main(String[] args){
System.out.println(args.length);
}}
Java (JShell)
int[] test = new int[10];
System.out.println(test.length);
Ruby
data = FileIO.read("test.csv") data = data.split("\n")
data = data.map {|x| x.split(";")}
23 / 47
Die „beste“ Sprache gibt es nicht
Sprachen eignen sich gut oder schlecht fürbestimmte Zwecke.
Typescript MATLAB Java C C++ Python VBA SPSS
hardwarenah X X
schnelle Programme (X) X X X X (X)
Webprogrammierung X (X) X
große Programme X X (X) X (X)
Statistik X X (X) X
kurze Entwicklungszeit X X (X) X
Einbettung in Office X
Wie bringt man einem Computer eine Sprache bei?
Frage: Wie werden Programme in höheren Programmiersprachen ausführbar gemacht?
Antwort: Mit einem Programm.
25 / 47
Wie bringt man einem Computer eine Sprache bei?
Frage: Wie werden Programme in höheren Programmiersprachen ausführbar gemacht?
Antwort: Mit einem Programm.
Installation der nötigen Software
https://homepages.thm.de/~cslz90/kurse/bk1920/
I Windows 7/8/10 (64 bit)
I Zip-Archiv mit Installationsscript downloaden I Rechtsklick⇒Alle extrahieren..
I Doppelklick auf install.bat I Anweisungen des Scripts folgen
I Linux und macOS
I Anleitung auf der Homepage folgen
Test:
I ⇒ „Jupyter Notebook“ finden I im Browserfenster auf „New“ ⇒„Java“
I System.out.println("Hello World!") eingeben⇒ „Run“
26 / 47
Was ist ein Jupyter Notebook?
jupyter notebook startet einen lokalen HTTP-Server, der im Hintergrund für jedes Notebook eine JShell-Instanz (als sog.Kernel) startet.
Markdownzelle
I enthält Beschreibungen I # Überschrift, *kursiv*,
`code` ...
I Strg + Enter : rendern
Codezelle
I enthält ausführbaren Code I alle Zellen teilen sich den
gleichen Kernel
I Strg + Enter : ausführen Kernel
I JShell, deren Zustand sich mit jeder ausgeführten Codezelle verändert
I manchmal ist Neustart nötig ( Strg + ⇑ + F : "restart")
Bedienung von Jupyter Notebooks
I Strg + Enter : Ausführen der aktuellen Codezelle I Alt + Enter : Neue Zelle hinzufügen
I Strg + S : Speichern
I Strg + ⇑ + F : Command-Palette öffnen I dort findet man alle wichtigen Befehle
! schließen nur mit File ⇒Close and Halt I jedes offene Notebook verbraucht Ressourcen!
28 / 47
Rechnen in Java
Alle höheren Programmiersprachen kennen die grundlegenden Rechenzeichen:
+ Addition - Subtraktion
* Multiplikation / Division
Code ist englisch⇒ Punkt statt Komma in Zahlen (0.3 statt 0,3) Programmiersprachen kennen die Punkt-vor-Strich-Regel und Klammern Beispiel: 4 * (9 + 3) - 2.5
Erste Herausforderung: Rechnen
Aufgabe: Löse ein paar Rechenaufgaben aus dem ersten Übungsnotebook bk01-u01-Rechnen.ipynb.
I Normalgewicht: Körpergrößecm−100 I BMI: KörpergrößeGewichtkg2m
I x2: x * x oder Math.pow(x, 2) I Punkt statt Komma:1,7 = 1.7 I Anhalteweg: Tachowert·3
10 +Tachowert100 2 I Wieviel Sekunden sind ein Jahr?
I Bonus: Math. +↹+↹
Tests:
I Normalgewicht bei 180cm: 80kg I BMI bei 1,9m und
87kg: 24.1
I Anhalteweg bei 51 km/h: 41,31m I Ein Jahr hat 525600
Minuten.
30 / 47
Erste Herausforderung: Rechnen
Aufgabe: Löse ein paar Rechenaufgaben aus dem ersten Übungsnotebook bk01-u01-Rechnen.ipynb.
I Normalgewicht: Körpergrößecm−100 I BMI: KörpergrößeGewichtkg2m
I x2: x * x oder Math.pow(x, 2) I Punkt statt Komma:1,7 = 1.7 I Anhalteweg: Tachowert·3
10 +Tachowert100 2 I Wieviel Sekunden sind ein Jahr?
I Bonus: Math. +↹+↹
Tests:
I Normalgewicht bei 180cm: 80kg I BMI bei 1,9m und
87kg: 24.1
I Anhalteweg bei 51 km/h: 41,31m I Ein Jahr hat 525600
Minuten.
Inhalt
Organisatorisches
Der Weg zum Power-User
Einleitung: Was ist ein Rechner?
Von Hardware zu Software: Das Betriebssystem Textdateien für Power-User
Beyond Klickibunti: Die Konsole Hello World
Einleitung: Was ist Programmieren?
Installation von Java (mit Jupyter Notebook) Erste Herausforderung: Rechnen
Variablen und Operatoren Variablen
Operatoren
Nachmittag: Typische Fehler bei Zuweisungen
31 / 47
Variablen: Wozu?
Frage: Wie kann man es verhindern, jedes Mal die ganze Rechnung neu zu tippen, wenn man andere Zahlen ausprobieren möchte?
Antwort: Wie in der Mathematik – mitVariablen.
Code ohne Variablen jshell> 51.0 * 3 / 10
+ 51.0 * 51.0 / 100
Code mit Variablen
jshell> double tacho = 51.0; jshell> tacho * 3 / 10
+ tacho * tacho / 100
Variablen: Wozu?
Frage: Wie kann man es verhindern, jedes Mal die ganze Rechnung neu zu tippen, wenn man andere Zahlen ausprobieren möchte?
Antwort: Wie in der Mathematik – mitVariablen.
Code ohne Variablen jshell> 51.0 * 3 / 10
+ 51.0 * 51.0 / 100
Code mit Variablen
jshell> double tacho = 51.0; jshell> tacho * 3 / 10
+ tacho * tacho / 100
32 / 47
Variablen: Wozu?
Frage: Wie kann man es verhindern, jedes Mal die ganze Rechnung neu zu tippen, wenn man andere Zahlen ausprobieren möchte?
Antwort: Wie in der Mathematik – mitVariablen.
Code ohne Variablen jshell> 51.0 * 3 / 10
+ 51.0 * 51.0 / 100
Code mit Variablen
jshell> double tacho = 51.0; jshell> tacho * 3 / 10
+ tacho * tacho / 100
Variablen: Wozu?
Frage: Wie kann man es verhindern, jedes Mal die ganze Rechnung neu zu tippen, wenn man andere Zahlen ausprobieren möchte?
Antwort: Wie in der Mathematik – mitVariablen.
Code ohne Variablen jshell> 51.0 * 3 / 10
+ 51.0 * 51.0 / 100
Code mit Variablen
jshell> double tacho = 51.0;
jshell> tacho * 3 / 10 + tacho * tacho / 100
32 / 47
Aufgabe: Dreisatz
Bei der letzten Erstifeier wurden 22 Kästen Bier für 86 Studierende gebraucht. Wieviel Kästen Bier sollte man für 110 Studierende einplanen?
Löse die Aufgabe mitVariablen in mehreren Schritten:
I drinkingRate: Kästen pro Person
I crates: Gesamtzahl der benötigten Kästen Variable in Java
double name = 1.1;
Bonus: Wie sehen die Formeln und Variablen aus, wenn es trinkfestere Studiengänge (TF) gibt, die doppelt so viel trinken wie ”normale”(N)?
Letztes Semester 48 TF + 38 N = 33 Kästen Dieses Semester 50 TF + 60 N = ?
Aufgabe: Dreisatz
Bei der letzten Erstifeier wurden 22 Kästen Bier für 86 Studierende gebraucht. Wieviel Kästen Bier sollte man für 110 Studierende einplanen?
Löse die Aufgabe mitVariablen in mehreren Schritten:
I drinkingRate: Kästen pro Person
I crates: Gesamtzahl der benötigten Kästen Variable in Java
double name = 1.1;
Bonus: Wie sehen die Formeln und Variablen aus, wenn es trinkfestere Studiengänge (TF) gibt, die doppelt so viel trinken wie ”normale”(N)?
Letztes Semester 48 TF + 38 N = 33 Kästen Dieses Semester 50 TF + 60 N = ?
33 / 47
Variablen: Variablen als Behälter
Typ: Flüssigkeit, Wert: 0.0 ml Bildquelle:www.freeimageslive.com
Typ: Stifte, Wert: 12
Variablen: Definition
Definition
Eine Variable gibt einerSpeicherstelle einen Namen. Sie kann nur Werte entsprechend ihresTyps enthalten.
Syntax: Variablendeklaration Typ Name = Wert;
Beispiel
double x = 3.5;
35 / 47
Variablen: float
float
I Fließkommazahlen (engl.: floating point number) I Punkt statt Komma
I 4 Byte in IEEE754-Codierung ⇒ ca. 7 geltende Stellen I f am Ende von Zahlen zur Unterscheidung von double
Beispiele:
3.5f 0.0001234567f 1e127f 1.23456789f 0.0f 1234567.0f 2.3e-128f 123456789f 2.0f 1234567000.0f 1.234567e10f 1e-200f
1f
Variablen: float
float
I Fließkommazahlen (engl.: floating point number) I Punkt statt Komma
I 4 Byte in IEEE754-Codierung ⇒ ca. 7 geltende Stellen I f am Ende von Zahlen zur Unterscheidung von double Beispiele:
3.5f 0.0001234567f 1e127f 1.23456789f 0.0f 1234567.0f 2.3e-128f 123456789f 2.0f 1234567000.0f 1.234567e10f 1e-200f
1f
36 / 47
Variablen: int
int
I Ganzzahlen (engl.: integer)
I 4 Byte in Zweierkomplementdarstellung
Beispiele:
4 2147483647 0xff 3_000_000_000
-7 -2147483648 077 0xffff_ffff_ffff 0 100_000_000 0b1011 -3_000_000_000 19
Variablen: int
int
I Ganzzahlen (engl.: integer)
I 4 Byte in Zweierkomplementdarstellung
Beispiele:
4 2147483647 0xff 3_000_000_000
-7 -2147483648 077 0xffff_ffff_ffff 0 100_000_000 0b1011 -3_000_000_000 19
37 / 47
Variablen: boolean
boolean
I Wahrheitswerte (nach George Bool) I exakt zwei mögliche Werte
I true
I false
Variablen: String
String
I Zeichenketten (engl.: string)
I Zusammengesetzter Typ aus mehreren Zeichen (char) I Länge beliebig
Beispiele:
"foo" "127" "zeile1\nzeile2"
"bla" "3q.3f" "\"Zitat\""
"" "a b c"
39 / 47
Variablen: String
String
I Zeichenketten (engl.: string)
I Zusammengesetzter Typ aus mehreren Zeichen (char) I Länge beliebig
Beispiele:
"foo" "127" "zeile1\nzeile2"
"bla" "3q.3f" "\"Zitat\""
"" "a b c"
Variablen: Andere Datentypen
Name Größe Bedeutung Beispiel
byte 1 Byte Ganzzahl (wieint) short 2 Byte Ganzzahl (wieint)
long 8 Byte Ganzzahl (wieint) 31l double 8 Byte Fließkommazahl (wiefloat) 1.0
char 2 Byte Einzelzeichen 'a'
40 / 47
Variablen im Arbeitsspeicher
Erinnerung: Definition
Eine Variable gibt einerSpeicherstelle einen Namen. Sie kann nur Werte entsprechend ihresTyps enthalten.
byte a = 40;
01001010 01010110 11101110 00101010 00001001 10010111
... ...
357 358 359 360 361 362
a
int weight = 914;
01001010 00000000 00000000 00000011 10010010 10010111
... ...
851 852 853 854 855 856
weight
Variablen im Arbeitsspeicher
Erinnerung: Definition
Eine Variable gibt einerSpeicherstelle einen Namen. Sie kann nur Werte entsprechend ihresTyps enthalten.
byte a = 40;
01001010 01010110 11101110 00101010 00001001 10010111
... ...
357 358 359 360 361 362
a
int weight = 914;
01001010 00000000 00000000 00000011 10010010 10010111
... ...
851 852 853 854 855 856
weight
41 / 47
Operatoren
Wie erhöhe ich den Wert einer Zahlvariable x um 2?
x = x + 2;
Definition
Die Rechenzeichen +, -, *, / und % nennt man arithmetischen Operatoren. Sie führen mathematische Rechenoperationen aus.
Definition
Das einfache Gleichzeichen = ist der Zuweisungsoperator. Er weist der Variable auf der linken Seite den Wert des Ausdrucks auf der rechten Seite zu.
Operatoren: Besonderheiten
Die meisten Operatoren verhalten sich wie erwartet.
Besonderheiten:
I a / b kann zwei Bedeutungen haben
I normale Division falls a oder b eine Fließkommazahl ist
I Ganzzahldivision(ohne Rest) falls a und b beide Ganzzahlen sind I % ist der Modulo-Operator (Rest der Ganzzahldivision)
I a + b kann zwei Bedeutungen haben
I normale Additionwenn a und b Zahlen sind
I Stringverknüpfungwenn a oder b vom Typ String sind Beispiele:
I 11 / 3 ergibt 3 I 11 % 3 ergibt 2
I "123" + 4 ergibt "1234"
43 / 47
Operatoren: Besonderheiten
Die meisten Operatoren verhalten sich wie erwartet.
Besonderheiten:
I a / b kann zwei Bedeutungen haben
I normale Division falls a oder b eine Fließkommazahl ist
I Ganzzahldivision(ohne Rest) falls a und b beide Ganzzahlen sind
I % ist der Modulo-Operator (Rest der Ganzzahldivision) I a + b kann zwei Bedeutungen haben
I normale Additionwenn a und b Zahlen sind
I Stringverknüpfungwenn a oder b vom Typ String sind Beispiele:
I 11 / 3 ergibt 3 I 11 % 3 ergibt 2
I "123" + 4 ergibt "1234"
Operatoren: Besonderheiten
Die meisten Operatoren verhalten sich wie erwartet.
Besonderheiten:
I a / b kann zwei Bedeutungen haben
I normale Division falls a oder b eine Fließkommazahl ist
I Ganzzahldivision(ohne Rest) falls a und b beide Ganzzahlen sind I % ist der Modulo-Operator (Rest der Ganzzahldivision)
I a + b kann zwei Bedeutungen haben
I normale Additionwenn a und b Zahlen sind
I Stringverknüpfungwenn a oder b vom Typ String sind Beispiele:
I 11 / 3 ergibt 3 I 11 % 3 ergibt 2
I "123" + 4 ergibt "1234"
43 / 47
Operatoren: Besonderheiten
Die meisten Operatoren verhalten sich wie erwartet.
Besonderheiten:
I a / b kann zwei Bedeutungen haben
I normale Division falls a oder b eine Fließkommazahl ist
I Ganzzahldivision(ohne Rest) falls a und b beide Ganzzahlen sind I % ist der Modulo-Operator (Rest der Ganzzahldivision)
I a + b kann zwei Bedeutungen haben
I normale Additionwenn a und b Zahlen sind
I Stringverknüpfungwenn a oder b vom Typ String sind
Beispiele:
I 11 / 3 ergibt 3 I 11 % 3 ergibt 2
I "123" + 4 ergibt "1234"
Operatoren: Besonderheiten
Die meisten Operatoren verhalten sich wie erwartet.
Besonderheiten:
I a / b kann zwei Bedeutungen haben
I normale Division falls a oder b eine Fließkommazahl ist
I Ganzzahldivision(ohne Rest) falls a und b beide Ganzzahlen sind I % ist der Modulo-Operator (Rest der Ganzzahldivision)
I a + b kann zwei Bedeutungen haben
I normale Additionwenn a und b Zahlen sind
I Stringverknüpfungwenn a oder b vom Typ String sind Beispiele:
I 11 / 3 ergibt 3 I 11 % 3 ergibt 2
I "123" + 4 ergibt "1234"
43 / 47
Typcasts
Manchmal muss man einen Datentyp manuellin einen anderen Typ umwandeln.
Beispiele:
I double zu int, um Nachkommastellen zu entfernen I char zu int, um Zeichencode auszulesen
I int zu char, um systematisch Zeichen zu erzeugen
Typcast: Syntax (NeuerTyp) wert
Typcast: Beispiele (int) 3.4 (int) 'a'
(char) intVariable
Zusammenfassung
Variablen
double a = 3.5;
int b = 10;
boolean c = true;
String blabla = "Blabla";
Arithmetische Operatoren
+ - * / %
Jupyter-Befehle
I Strg + Enter : Ausführen I Strg + ⇑ + F :
Command-Palette
Jupyter-Tipps
I File ⇒ Close and Halt I Kernelneustart falls nötig
45 / 47
Inhalt
Organisatorisches
Der Weg zum Power-User
Einleitung: Was ist ein Rechner?
Von Hardware zu Software: Das Betriebssystem Textdateien für Power-User
Beyond Klickibunti: Die Konsole Hello World
Einleitung: Was ist Programmieren?
Installation von Java (mit Jupyter Notebook) Erste Herausforderung: Rechnen
Variablen und Operatoren Variablen
Operatoren
Nachmittag: Typische Fehler bei Zuweisungen
Mögliche Themen zur Besprechung am Nachmittag
Typische Fehler bei Zuweisungen
I Informatik vs Mathematik: veränderlicher Zustand I Inhalt von Variablen tauschen
I = ist nicht kommutativ I = vergleicht nicht
I Wertsemantik ( = kopiert Inhalte) I Welcher Typ „passt“ in welchen?
I Jupyter: jede Zelle hat Zugriff auf jede Variable
47 / 47