• Keine Ergebnisse gefunden

Brückenkurs Programmieren Tag 1: Der Rechner, Variablen und Operationen Christopher Schölzel

N/A
N/A
Protected

Academic year: 2022

Aktie "Brückenkurs Programmieren Tag 1: Der Rechner, Variablen und Operationen Christopher Schölzel"

Copied!
70
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Brückenkurs Programmieren

Tag 1: Der Rechner, Variablen und Operationen

Christopher Schölzel

Technische Hochschule Mittelhessen

2. September 2019

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

Einleitung: Was ist ein Rechner?

(8)

Woraus besteht ein Rechner?

Bildquelle: „Valakas“, Christopher Schölzel, Public Domain 8 / 47

(9)

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

(10)

Eine Welt ohne Betriebssystem (I)

CPU Firefox

Word Minecraft

10 / 47

(11)

Eine Welt ohne Betriebssystem (II)

RAM-Bereich von Firefox

(12)

Eine Welt ohne Betriebssystem (III)

Hardware-Interrupt (Maus, Tastatur, ...)

CPU

12 / 47

(13)

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

(14)

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

(15)

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.

(16)

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

(17)

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.

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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

(31)

Was ist Programmieren?

Definition

Programmieren ist das Schreiben von Computerprogrammen.

Ein Computerprogrammist eine in einer Programmierspracheverfasste Anweisungsabfolge, die ein bestimmtes Problem löst.

(32)

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

(33)

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

(34)

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

(35)

Wie bringt man einem Computer eine Sprache bei?

Frage: Wie werden Programme in höheren Programmiersprachen ausführbar gemacht?

Antwort: Mit einem Programm.

(36)

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 RechtsklickAlle 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

(37)

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")

(38)

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

(39)

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

(40)

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

(41)

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.

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(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 = ?

(48)

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

(49)

Variablen: Variablen als Behälter

Typ: Flüssigkeit, Wert: 0.0 ml Bildquelle:www.freeimageslive.com

Typ: Stifte, Wert: 12

(50)

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

(51)

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

(52)

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

(53)

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

(54)

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

(55)

Variablen: boolean

boolean

I Wahrheitswerte (nach George Bool) I exakt zwei mögliche Werte

I true

I false

(56)

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

(57)

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"

(58)

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

(59)

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

(60)

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

(61)

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.

(62)

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

(63)

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"

(64)

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

(65)

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"

(66)

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

(67)

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

(68)

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

(69)

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

(70)

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

Referenzen

ÄHNLICHE DOKUMENTE

b) Im schlechtesten Fall zieht er in den ersten drei Zügen eine schwarze, eine rote und eine grüne Socke. Er muss also 4 mal ziehen, um sicher zwei gleichfarbige Socken zu bekommen.

Die irrationalen Zahlen liefern unendliche Dezimalbr¨uche ohne Periode (insbesondere enden die Br¨uche nicht nach endlichen vielen Stellen: sie h¨atten sonst die Periode 0)1.

Es könnte immer ein Würfelwurf mehr nötig sein.... // die gleichen Anweisungen wie

I double bmi(double, double) sieht nach Rechnung aus I erzeugt aber auch Ausgabe. ⇒ Ausgabe lieber in eigener Funktion

Der Callstack: Simulation Die folgenden Folien zeigen den Zustand des Stacks während der Ausführung des angegebenen Programms inklusive Rücksprungadressen und Ergebnisregister...

zwei Punkte erlauben Zahlbereiche anzugeben. – Bsp.: laptop €100..€200 ,

Durch das Definieren einer Funktion gibt man einer oft benötigten Teillösung einen Namen, damit man sie für verschiedene Eingabewerte (Argumente) anwenden kann und den

Rekursive Funktionen bestehen immer aus den folgenden Bestandteilen: I mindestens ein Basisfall, in dem die Rekursion abbricht und das Ergebnis fest steht I mindestens ein