Brückenkurs Programmieren - Tag 1: Bedienung eines Rechners...

Preview:

Citation preview

Brückenkurs ProgrammierenTag 1: Bedienung eines Rechners und einfachste Programme mit

Variablen

Christopher SchölzelTechnische Hochschule Mittelhessen4. März 2019

InhaltOrganisatorisches

Der Weg zum Power-UserEinleitung: Was ist ein Rechner?Von Hardware zu Software: Das BetriebssystemTipps für den (Windows-)Power-UserTipps für den Google-Power-UserTextdateien für Power-UserBeyond Klickibunti: Die Konsole

Hello WorldEinleitung: Was ist Programmieren?Installation von Java (mit Jupyter Notebook)Erste Herausforderung: Rechnen

Variablen und OperatorenVariablenOperatoren

2 / 55

InhaltOrganisatorisches

Der Weg zum Power-UserEinleitung: Was ist ein Rechner?Von Hardware zu Software: Das BetriebssystemTipps für den (Windows-)Power-UserTipps für den Google-Power-UserTextdateien für Power-UserBeyond Klickibunti: Die Konsole

Hello WorldEinleitung: Was ist Programmieren?Installation von Java (mit Jupyter Notebook)Erste Herausforderung: Rechnen

Variablen und OperatorenVariablenOperatoren

3 / 55

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: Fortgeschrittene Rechnerbedienung, VariablenI Dienstag: Verzweigungen, SchleifenI Mittwoch: Funktionen, ArraysI Donnerstag: RekursionI Freitag: Objektorientierung

4 / 55

Organisatorisches II

Tagesablauf:I Beginn 9:00 in Gebäude A20I Kurzer Theorie-Teil mit gemeinsamen ÜbungenI Rest der Zeit: ÜbungsblätterI Mittagspause: 12:00 bis 13:00I Ende 16:00

Unterlagen: https://homepages.thm.de/~cslz90/kurse/bk19

5 / 55

InhaltOrganisatorisches

Der Weg zum Power-UserEinleitung: Was ist ein Rechner?Von Hardware zu Software: Das BetriebssystemTipps für den (Windows-)Power-UserTipps für den Google-Power-UserTextdateien für Power-UserBeyond Klickibunti: Die Konsole

Hello WorldEinleitung: Was ist Programmieren?Installation von Java (mit Jupyter Notebook)Erste Herausforderung: Rechnen

Variablen und OperatorenVariablenOperatoren

6 / 55

Einleitung: Was ist ein Rechner?

7 / 55

Woraus besteht ein Rechner?

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

Von-Neumann-Architektur

Rechnerarchitektur nach John von NeumannI Central Processing Unit (CPU, Prozessor)

I Recheneinheit (ALU): Mathematische OperationenI Steuereinheit: steuert Programmablauf

I BussystemI Kommunikation zwischen Komponenten

I Arbeitsspeicher (RAM)I speichert Daten laufender ProgrammeI schnell, klein, flüchtig

I MassenspeicherI speichert Programm- und NutzerdatenI langsam, groß, persistent

I I/OI Schnittstelle zur AußenweltI Tastatur, Maus, Bildschirm, Grafikkarte, ...

Seit 1945 imWesentlichendie gleicheArchitektur

9 / 55

Eine Welt ohne Betriebssystem (I)

CPU

Firefox

WordMinecraft

10 / 55

Eine Welt ohne Betriebssystem (II)

RAM-Bereichvon Firefox

11 / 55

Eine Welt ohne Betriebssystem (III)

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

CPU

12 / 55

Betriebssysteme

Aufgaben des BetriebssystemsI Vermittler zwischen Hard- und SoftwareI verteilt Systemressourcen an Prozesse

I CPU-ZeitI RAMI Zugriff auf DateisystemI Zugriff auf I/O

I vereinfacht Zugriff auf SystemressourcenI Treiber als Software zum Steuern externer GeräteI Dateisystem statt rohem Festplattenzugriff

I bietet eine BenutzeroberflächeI Verwaltung von Hard- und SoftwareI Benutzerrechte

Windows: Markenzeichen von Microsoft, macOs: Markenzeichen von Apple, Tux: © Larry Ewing 13 / 55

Schnelle Navigation und Auswahl

Befehl Effekt

⇒ Text eingeben findet Programme anhand des Namens

+ E öffnet einen Windows-Explorer

Strg + F öffnet die Suchfunktion1

F10 springt in die Menüleiste1

Strg + Klick fügt das Element der Auswahl hinzu1

⇑ + Klick wählt Bereich bis zum Ziel aus1

Entf löscht die ausgewählten Elemente1

1in den meisten Programmen14 / 55

Navigation per TabulatorTastaturnavigation außerhalb von Textbereichen mit dem Tabulator ↹

↹ springt zum nächsten Bedienelement1

⇑ + ↹ springt zum vorherigen Bedienelement1

Enter aktiviert das aktuelle Bedienelement1

Esc verlässt den aktuellen Kontext1

I in Textbereichen klappt ↹ nicht

I mit Esc oder F10 kommt man meistens aus dem Bereich raus

I für Blinde hilfreicher als die Maus1in den meisten Programmen

15 / 55

Text markieren

⇑ + → markiert von aktueller Cursorposition aus1

⇑ + ←

⇑ + Klick markiert vom Cursor bis zum Ziel1

Doppelklick markiert ganzes Wort1

Strg + A markiert alles1

⇑ + Pos1 markiert bis zum Zeilenanfang1

⇑ + Ende markiert bis zum Zeilenende1

1in den meisten Programmen16 / 55

Power-User-Challenge 1: Hände von der Maus

Erledige die folgenden Schritte, ohne die Maus zu benutzen:I Finde/Öffne ein Textbearbeitungsprogramm auf deinem RechnerI Tippe den Text „Power-User“ in das DokumentI Speichere die Datei unter dem Namen „Hands-off“

Bonus: Markiere „Power“ fett.

17 / 55

Die Zwischenablage

Strg + C kopiert markierten Text in die Zwischenablage1

Strg + X genauso wie oben, aber Text wird auch gelöscht1

Strg + V fügt Inhalt der Zwischenablage ein1

Strg + ⇑ + V wie oben, aber ohne Formatierung (z.B. HTML)1

Druck kopiert Screenshot in Zwischenablage1

Alt + Druck wie oben, aber nur vom aktiven Fenster1

1in den meisten Programmen18 / 55

Power-User-Challenge 2: Ich darf nicht...

Schreibe den folgenden Satz 100 mal untereinander in eine Textdatei:

„Ich darf nichts doppelt tippen.“

Bonus: Schreibe den Satz 100.000 mal untereinander.

19 / 55

Lebensretter: Undo/Redo

Strg + Z macht die letzte Aktion rückgängig1

Strg + Y stellt die letzte rückgängigemachte Aktion wieder her1

I neue Aktionen verhindern weitere RedosI geht sogar im Windows-Explorer

1in den meisten Programmen20 / 55

Power-User-Challenge 3: Alles nicht so gemeint

I Öffne einen Windows-Explorer über die TastaturI ab hier ist die Maus erlaubtI Erstelle einen neuen Ordner C:\Power-User

I Erzeuge zehn neue Ordner in diesem OrdnerI Markiere die Ordner mit ungerader NummerI Lösche die markieren Ordner (alle auf einmal)I Mach mit Undo alles wieder rückgängig, bis C:\Power-User leer ist

Bonus: Mach das alles ganz ohne Maus

21 / 55

Systemdateien

Den Windows-Experten erkennt man an drei Einstellungen in denOrdneroptionen.

Erweiterungen bei bekannten Dateitypen ausblenden

Geschützte Systemdateien ausblenden (empfohlen)Versteckte Dateien und Ordner

Ausgeblendete Dateien, Ordner und Laufwerke nicht anzeigen

Ausgeblendete Dateien, Ordner und Laufwerke anzeigen

Interessante versteckte Ordner:I C:\Users\Benutzername\AppData : Benutzerdaten von Programmen

I angezeigt als C:\Benutzer statt C:\Users

I C:\$RECYCLE.BIN : Papierkorb

22 / 55

Systemdateien

Den Windows-Experten erkennt man an drei Einstellungen in denOrdneroptionen.

Erweiterungen bei bekannten Dateitypen ausblenden

Geschützte Systemdateien ausblenden (empfohlen)Versteckte Dateien und Ordner

Ausgeblendete Dateien, Ordner und Laufwerke nicht anzeigen

Ausgeblendete Dateien, Ordner und Laufwerke anzeigen

Interessante versteckte Ordner:I C:\Users\Benutzername\AppData : Benutzerdaten von Programmen

I angezeigt als C:\Benutzer statt C:\Users

I C:\$RECYCLE.BIN : Papierkorb

22 / 55

Power-User-Challenge 4: Wissen ist Macht

Aufgabe: Finde die Datei, in der dein Browser deine Cookies speichert.

Bonus: Finde ein Programm, das die entsprechende Datei lesen kann undschau dir den Inhalt an.

23 / 55

Sonstiges

Strg + S speichert aktuelles Dokument1

Alt + ↹ zwischen Programmen wechseln

+ L Bildschirm sperren

+ P Modus für Beamer/Zweitbildschirm wechseln

+ D Desktop zeigen (alle Programme minimieren)

Strg + ⇑ + Esc öffnet den Task-Manager

Generell: Einfach mal Strg , Alt oder ⇑ während einer Aktiongedrückt halten und schauen, was passiert. ;)

1in den meisten Programmen24 / 55

Wie funktionieren Suchmaschinen?

Ein kurzer Ausflug in die Suchmaschinen-IndexierungI Google speichert nicht das ganze InternetI stattdessen: Datenbank mit ArtikelnI genauer Text nicht so wichtigI wichtiger: Wie häufig kommen gesuchte Worte (prozentual) vor?I ⇒ IndexI dabei werden

I Füllwörter gelöscht (z.B. „in“, „für“, „er“)I Wörter auf ihren Stamm reduziert (z.B. „such“ statt „suchte“)

Beispiel: Wikipedia-ArtikelGießen lahn: 0.3%, universit: 0.8%, hess: 0.7%, kultur: 0.1%Marburg lahn: 0.4%, universit: 0.2%, hess: 0.8%, kultur: 0.2%THM lahn: 0.1%, universit: 0.4%, hess: 1.2%, informatik: 0.1%

25 / 55

Allgemeine Google-Tipps

I wenn möglich, auf englisch googelnI plattformunabhängig : 243.000 TrefferI platform-independent : 236.000.000 Treffer

I nicht zu allgemein, nicht zu spezifischI ideal sind oft etwa 3-5 Wörter

I Bsp.: latex vs latex mask vs latex mask fetish

I Google ist schlauI tausende Optimierungen auf durchschnittlichen User⇒ suche wie der durchschnittliche UserI Bsp.: C tutorial sollte nicht gehen, geht aber

I Nachbessern auf Basis des ErgebnissesI neue interessante Suchbegriffe im Ergebnis?I Gemeinsamkeiten ungewollter Ergebnisse?I Bsp.: rubber statt/mit latex

26 / 55

Fortgeschrittene Google-Tipps

" Anführungszeichen führen zu exakten TreffernI Bsp.: "harry potter und ein stein"

* Wildcards als Platzhalter (innerhalb von Anführungszeichen)I Bsp.: "i want to become a * programmer"

- Minuszeichen schließt Begriffe ausI Bsp.: "marvel thor -movie"

.. zwei Punkte erlauben Zahlbereiche anzugebenI Bsp.: laptop €100..€200 , revolution 1780..1810

I Googles eigene Tipps zum Googeln:https://support.google.com/websearch/answer/134479

27 / 55

Power-User-Challenge 5: Google-Wars

Aufgabe 1: Da gab es doch diesen Songtext. „The ... of the nation“ Waswar das nochmal?

Aufgabe 2: Suche nach java und entferne so lange Suchterme mit Minus,bis auf der ersten Seite kein Ergebnis mehr auf die Programmierspracheverweist.

28 / 55

Textdateien für Power-User

Professionelle Texteditoren für Entwickler

I Atom: open-source, langsam, electronI VS Code: open-source, relativ schnell, electronI Sublime: proprietär, sehr schnell, python

29 / 55

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 e282accp1252 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.

30 / 55

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 e282accp1252 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.

30 / 55

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 e282accp1252 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.

30 / 55

Beyond Klickibunti: Die KonsoleBunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:

Konsole/Terminal/Eingabeaufforderung:

I Arbeitsverzeichnis steht am Anfang der ZeileI Befehl Argument1 Argument2 ... + Enter

I typische Argumente: -? , /? (Windows), --helpI Befehl "Langes Argument mit Leerzeichen"

I dir listet Dateien im ArbeitsverzeichnisI cd Pfad wechselt das Arbeitsverzeichnis

I .. ist das Elternverzeichnis

I ↹ (mehrfach) für Autovervollständigung

31 / 55

Beyond Klickibunti: Die KonsoleBunte 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), --helpI Befehl "Langes Argument mit Leerzeichen"

I dir listet Dateien im ArbeitsverzeichnisI cd Pfad wechselt das Arbeitsverzeichnis

I .. ist das Elternverzeichnis

I ↹ (mehrfach) für Autovervollständigung

31 / 55

Beyond Klickibunti: Die KonsoleBunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:

Konsole/Terminal/Eingabeaufforderung:I Arbeitsverzeichnis steht am Anfang der ZeileI Befehl Argument1 Argument2 ... + Enter

I typische Argumente: -? , /? (Windows), --helpI Befehl "Langes Argument mit Leerzeichen"

I dir listet Dateien im ArbeitsverzeichnisI cd Pfad wechselt das Arbeitsverzeichnis

I .. ist das Elternverzeichnis

I ↹ (mehrfach) für Autovervollständigung

31 / 55

Beyond Klickibunti: Die KonsoleBunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:

Konsole/Terminal/Eingabeaufforderung:I Arbeitsverzeichnis steht am Anfang der ZeileI Befehl Argument1 Argument2 ... + Enter

I typische Argumente: -? , /? (Windows), --help

I Befehl "Langes Argument mit Leerzeichen"I dir listet Dateien im ArbeitsverzeichnisI cd Pfad wechselt das Arbeitsverzeichnis

I .. ist das Elternverzeichnis

I ↹ (mehrfach) für Autovervollständigung

31 / 55

Beyond Klickibunti: Die KonsoleBunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:

Konsole/Terminal/Eingabeaufforderung:I Arbeitsverzeichnis steht am Anfang der ZeileI Befehl Argument1 Argument2 ... + Enter

I typische Argumente: -? , /? (Windows), --helpI Befehl "Langes Argument mit Leerzeichen"

I dir listet Dateien im ArbeitsverzeichnisI cd Pfad wechselt das Arbeitsverzeichnis

I .. ist das Elternverzeichnis

I ↹ (mehrfach) für Autovervollständigung

31 / 55

Beyond Klickibunti: Die KonsoleBunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:

Konsole/Terminal/Eingabeaufforderung:I Arbeitsverzeichnis steht am Anfang der ZeileI Befehl Argument1 Argument2 ... + Enter

I typische Argumente: -? , /? (Windows), --helpI Befehl "Langes Argument mit Leerzeichen"

I dir listet Dateien im Arbeitsverzeichnis

I cd Pfad wechselt das ArbeitsverzeichnisI .. ist das Elternverzeichnis

I ↹ (mehrfach) für Autovervollständigung

31 / 55

Beyond Klickibunti: Die KonsoleBunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:

Konsole/Terminal/Eingabeaufforderung:I Arbeitsverzeichnis steht am Anfang der ZeileI Befehl Argument1 Argument2 ... + Enter

I typische Argumente: -? , /? (Windows), --helpI Befehl "Langes Argument mit Leerzeichen"

I dir listet Dateien im ArbeitsverzeichnisI cd Pfad wechselt das Arbeitsverzeichnis

I .. ist das Elternverzeichnis

I ↹ (mehrfach) für Autovervollständigung

31 / 55

Beyond Klickibunti: Die KonsoleBunte Fenster und die Maus sind Hilfsmittel, aber es geht auch ohne:

Konsole/Terminal/Eingabeaufforderung:I Arbeitsverzeichnis steht am Anfang der ZeileI Befehl Argument1 Argument2 ... + Enter

I typische Argumente: -? , /? (Windows), --helpI Befehl "Langes Argument mit Leerzeichen"

I dir listet Dateien im ArbeitsverzeichnisI cd Pfad wechselt das Arbeitsverzeichnis

I .. ist das Elternverzeichnis

I ↹ (mehrfach) für Autovervollständigung

31 / 55

Weiterführendes zur KonsoleWie bekomme ich Text in die Konsole hinein oder hinaus?I linke Maustaste (gedrückt halten)

I markiert Text im FensterI rechte Maustaste

I wenn Text markiert ist: KopierenI sonst: Einfügen (und evtl. Befehl ausführen)

I Windows 7: Rechtsklickmenü ⇒ Markieren/Einfügen

Woher weiß die Konsole, welche Befehle es gibt?I Befehl = ausführbare DateiI Umgebungsvariable PATH gibt an, welche Ordner durchsucht werdenI Beispiel:

I Befehl foo xyz eingegebenI Windows sucht eine Datei foo.exeI beginnt bei erstem Ordner in PATHI macht weiter bis gefunden, oder alles durchsucht

32 / 55

Weiterführendes zur KonsoleWie bekomme ich Text in die Konsole hinein oder hinaus?I linke Maustaste (gedrückt halten)

I markiert Text im FensterI rechte Maustaste

I wenn Text markiert ist: KopierenI sonst: Einfügen (und evtl. Befehl ausführen)

I Windows 7: Rechtsklickmenü ⇒ Markieren/Einfügen

Woher weiß die Konsole, welche Befehle es gibt?I Befehl = ausführbare DateiI Umgebungsvariable PATH gibt an, welche Ordner durchsucht werdenI Beispiel:

I Befehl foo xyz eingegebenI Windows sucht eine Datei foo.exeI beginnt bei erstem Ordner in PATHI macht weiter bis gefunden, oder alles durchsucht

32 / 55

Power-User-Challenge 6: El Consolero

I Öffne ein KonsolenfensterI Navigiere auf der Konsole nach C:\

I Lies dir die Hilfemeldung zu dem Befehl dir durchI Befehl zum Aufruf der Hilfe: dir /?

I Finde mit dir heraus, wem C:\Windows gehörtI Navigiere zu C:\Windows\System32

I verwende dir mit der Pausenfunktion

Bonus: Liste mit dir nur die Elemente in C:\Windows\System32 auf, diekeine Verzeichnisse sind und sortiere diese nach Dateiendung und dannnach Namen.

33 / 55

InhaltOrganisatorisches

Der Weg zum Power-UserEinleitung: Was ist ein Rechner?Von Hardware zu Software: Das BetriebssystemTipps für den (Windows-)Power-UserTipps für den Google-Power-UserTextdateien für Power-UserBeyond Klickibunti: Die Konsole

Hello WorldEinleitung: Was ist Programmieren?Installation von Java (mit Jupyter Notebook)Erste Herausforderung: Rechnen

Variablen und OperatorenVariablenOperatoren

34 / 55

Was ist Programmieren?

DefinitionProgrammieren ist das Schreiben von Computerprogrammen.

Ein Computerprogramm ist eine in einer Programmiersprache verfassteAnweisungsabfolge, die ein bestimmtes Problem löst.

35 / 55

Programmiersprachen

Maschinensprache0100 1101 0101 1010 1001 00000000 0000 0000 0011 0000 00000000 0000 0000 0000 0000 0100

Assemblerpushc 3pushc 4add

Cint main(int argc, char *argv[]) {char *str = (char*) malloc(10);str[9] = 0;printf("%s", str);

}

Javapublic 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);

Rubydata = FileIO.read("test.csv")data = data.split("\n")data = data.map {|x| x.split(";")}

36 / 55

Klassifizierung von Programmiersprachen

Paradigmen

I funktional (Lisp, Haskell)I objektorientiert (Java)I prozedural (C, Fortran)I multi-paradigm (Ruby)

Andere Unterklassen

I scripting language (Ruby,Python, JavaScript)

I domain-specific (VHDL,SPSS, Matlab)

Eigenschaften

I memory safetyI strong/weak typingI dynamic/static typingI plattformunabhängigI metaprogrammingI pattern matching

37 / 55

Wie bringt man einem Computer eine Sprache bei?

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

Antwort: Mit einem Programm.

38 / 55

Wie bringt man einem Computer eine Sprache bei?

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

Antwort: Mit einem Programm.

38 / 55

Installation der nötigen Softwarehttps://homepages.thm.de/~cslz90/kurse/bk19

I Windows 7/8/10 (64 bit)I Zip-Archiv mit Installationsscript downloadenI Rechtsklick ⇒ Alle extrahieren..I Doppelklick auf install.batI Anweisungen des Scripts folgen

I Linux und macOSI Anleitung auf der Homepage folgen

Test:

I ⇒ „Jupyter Notebook“ finden

I im Browserfenster auf „New“ ⇒ „Java“I System.out.println("Hello␣World!") eingeben ⇒ „Run“

39 / 55

Bedienung von Jupyter Notebooks

I Strg + Enter : Ausführen des aktuellen Codeblocks

I Alt + Enter : Neuen Block hinzufügen

I Strg + S : Speichern

I Strg + ⇑ + F : Command-Palette öffnenI dort findet man alle wichtigen Befehle

! schließen nur mit File ⇒ Close and HaltI jedes offene Notebook verbraucht Ressourcen!

40 / 55

Erste Herausforderung: Rechnen

Aufgabe: Löse ein paar Rechenaufgaben mit der JShell.

I Normalgewicht: Körpergrößecm − 100

I BMI: GewichtkgKörpergröße2m

I x2: x * x oder Math.pow(x, 2)I Punkt statt Komma: 1, 7 = 1.7

I Anhalteweg: Tachowert·310 + Tachowert2

100

I Wieviel Sekunden sind ein Jahr?I Bonus: Math. + ↹ + ↹

Tests:I Normalgewicht bei

180cm: 80kgI BMI bei 1,9m und

87kg: 24.1I Anhalteweg bei 51

km/h: 41,31mI Ein Jahr hat 525600

Minuten.

41 / 55

Erste Herausforderung: Rechnen

Aufgabe: Löse ein paar Rechenaufgaben mit der JShell.

I Normalgewicht: Körpergrößecm − 100

I BMI: GewichtkgKörpergröße2m

I x2: x * x oder Math.pow(x, 2)I Punkt statt Komma: 1, 7 = 1.7

I Anhalteweg: Tachowert·310 + Tachowert2

100

I Wieviel Sekunden sind ein Jahr?I Bonus: Math. + ↹ + ↹

Tests:I Normalgewicht bei

180cm: 80kgI BMI bei 1,9m und

87kg: 24.1I Anhalteweg bei 51

km/h: 41,31mI Ein Jahr hat 525600

Minuten.

41 / 55

InhaltOrganisatorisches

Der Weg zum Power-UserEinleitung: Was ist ein Rechner?Von Hardware zu Software: Das BetriebssystemTipps für den (Windows-)Power-UserTipps für den Google-Power-UserTextdateien für Power-UserBeyond Klickibunti: Die Konsole

Hello WorldEinleitung: Was ist Programmieren?Installation von Java (mit Jupyter Notebook)Erste Herausforderung: Rechnen

Variablen und OperatorenVariablenOperatoren

42 / 55

Variablen: Wozu?

Frage: Wie kann man es verhindern, jedes Mal die ganze Rechnung neu zutippen, wenn man andere Zahlen ausprobieren möchte?

Antwort: Wie in der Mathematik – mit Variablen.

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

43 / 55

Variablen: Wozu?

Frage: Wie kann man es verhindern, jedes Mal die ganze Rechnung neu zutippen, wenn man andere Zahlen ausprobieren möchte?

Antwort: Wie in der Mathematik – mit Variablen.

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

43 / 55

Variablen: Wozu?

Frage: Wie kann man es verhindern, jedes Mal die ganze Rechnung neu zutippen, wenn man andere Zahlen ausprobieren möchte?

Antwort: Wie in der Mathematik – mit Variablen.

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

43 / 55

Variablen: Wozu?

Frage: Wie kann man es verhindern, jedes Mal die ganze Rechnung neu zutippen, wenn man andere Zahlen ausprobieren möchte?

Antwort: Wie in der Mathematik – mit Variablen.

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

43 / 55

Aufgabe: Dreisatz

Bei der letzten Erstifeier wurden 22 Kästen Bier für 86 Studierendegebraucht. Wieviel Kästen Bier sollte man für 110 Studierende einplanen?

Löse die Aufgabe mit Variablen in mehreren Schritten:I drinkingRate : Kästen pro PersonI crates : Gesamtzahl der benötigten Kästen

Variable in Javadouble name = 1.1;

Bonus: Wie sehen die Formeln und Variablen aus, wenn es trinkfestereStudiengänge (TF) gibt, die doppelt so viel trinken wie ”normale”(N)?

Letztes Semester 48 TF + 38 N = 33 KästenDieses Semester 50 TF + 60 N = ?

44 / 55

Aufgabe: Dreisatz

Bei der letzten Erstifeier wurden 22 Kästen Bier für 86 Studierendegebraucht. Wieviel Kästen Bier sollte man für 110 Studierende einplanen?

Löse die Aufgabe mit Variablen in mehreren Schritten:I drinkingRate : Kästen pro PersonI crates : Gesamtzahl der benötigten Kästen

Variable in Javadouble name = 1.1;

Bonus: Wie sehen die Formeln und Variablen aus, wenn es trinkfestereStudiengänge (TF) gibt, die doppelt so viel trinken wie ”normale”(N)?

Letztes Semester 48 TF + 38 N = 33 KästenDieses Semester 50 TF + 60 N = ?

44 / 55

Variablen: Variablen als Behälter

Typ: Flüssigkeit, Wert: 0.0 ml

Bild

quel

le:w

ww.f

reei

mage

sliv

e.co

m

Typ: Stifte, Wert: 12

45 / 55

Variablen: Definition

DefinitionEine Variable gibt einer Speicherstelle einen Namen. Sie kann nur Werteentsprechend ihres Typs enthalten.

Syntax: Variablendeklaration

Typ Name = Wert;

Beispiel

double x = 3.5;

46 / 55

Variablen: float

floatI Fließkommazahlen (engl.: floating point number)I Punkt statt KommaI 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.23456789f0.0f 1234567.0f 2.3e-128f 123456789f2.0f 1234567000.0f 1.234567e10f 1e-200f1f

47 / 55

Variablen: float

floatI Fließkommazahlen (engl.: floating point number)I Punkt statt KommaI 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.23456789f0.0f 1234567.0f 2.3e-128f 123456789f2.0f 1234567000.0f 1.234567e10f 1e-200f1f

47 / 55

Variablen: int

intI Ganzzahlen (engl.: integer)I 4 Byte in Zweierkomplementdarstellung

Beispiele:

4 2147483647 0xff 3_000_000_000-7 -2147483648 077 0xffff_ffff0 100_000_000 0b1011 -3_000_000_0019

48 / 55

Variablen: int

intI Ganzzahlen (engl.: integer)I 4 Byte in Zweierkomplementdarstellung

Beispiele:

4 2147483647 0xff 3_000_000_000-7 -2147483648 077 0xffff_ffff0 100_000_000 0b1011 -3_000_000_0019

48 / 55

Variablen: boolean

booleanI Wahrheitswerte (nach George Bool)

I exakt zwei mögliche Werte

I true

I false

49 / 55

Variablen: String

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

50 / 55

Variablen: String

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

50 / 55

Variablen: Andere Datentypen

Name Größe Bedeutung Beispiel

byte 1 Byte Ganzzahl (wie int)

short 2 Byte Ganzzahl (wie int)

long 8 Byte Ganzzahl (wie int) 31l

double 8 Byte Fließkommazahl (wie float) 1.0

char 2 Byte Einzelzeichen 'a'

51 / 55

Operatoren

Wie erhöhe ich den Wert einer Zahlvariable x um 2?x = x + 2;

DefinitionDie Rechenzeichen + , - , * , / und % nennt man arithmetischenOperatoren. Sie führen mathematische Rechenoperationen aus.

DefinitionDas einfache Gleichzeichen = ist der Zuweisungsoperator. Er weist derVariable auf der linken Seite den Wert des Ausdrucks auf der rechtenSeite zu.

52 / 55

Operatoren: BesonderheitenDie meisten Operatoren verhalten sich wie erwartet.

Besonderheiten:

I a / b kann zwei Bedeutungen habenI normale Division falls a oder b eine Fließkommazahl istI 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 Addition wenn a und b Zahlen sindI Stringverknüpfung wenn a oder b vom Typ String sind

Beispiele:I 11 / 3 ergibt 3

I 11 % 3 ergibt 2

I "123" + 4 ergibt "1234"

53 / 55

Operatoren: BesonderheitenDie meisten Operatoren verhalten sich wie erwartet.

Besonderheiten:I a / b kann zwei Bedeutungen haben

I normale Division falls a oder b eine Fließkommazahl istI 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 Addition wenn a und b Zahlen sindI Stringverknüpfung wenn a oder b vom Typ String sind

Beispiele:I 11 / 3 ergibt 3

I 11 % 3 ergibt 2

I "123" + 4 ergibt "1234"

53 / 55

Operatoren: BesonderheitenDie meisten Operatoren verhalten sich wie erwartet.

Besonderheiten:I a / b kann zwei Bedeutungen haben

I normale Division falls a oder b eine Fließkommazahl istI Ganzzahldivision (ohne Rest) falls a und b beide Ganzzahlen sind

I % ist der Modulo-Operator (Rest der Ganzzahldivision)

I a + b kann zwei Bedeutungen habenI normale Addition wenn a und b Zahlen sindI Stringverknüpfung wenn a oder b vom Typ String sind

Beispiele:I 11 / 3 ergibt 3

I 11 % 3 ergibt 2

I "123" + 4 ergibt "1234"

53 / 55

Operatoren: BesonderheitenDie meisten Operatoren verhalten sich wie erwartet.

Besonderheiten:I a / b kann zwei Bedeutungen haben

I normale Division falls a oder b eine Fließkommazahl istI 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 Addition wenn a und b Zahlen sindI Stringverknüpfung wenn a oder b vom Typ String sind

Beispiele:I 11 / 3 ergibt 3

I 11 % 3 ergibt 2

I "123" + 4 ergibt "1234"

53 / 55

Operatoren: BesonderheitenDie meisten Operatoren verhalten sich wie erwartet.

Besonderheiten:I a / b kann zwei Bedeutungen haben

I normale Division falls a oder b eine Fließkommazahl istI 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 Addition wenn a und b Zahlen sindI Stringverknüpfung wenn a oder b vom Typ String sind

Beispiele:I 11 / 3 ergibt 3

I 11 % 3 ergibt 2

I "123" + 4 ergibt "1234"

53 / 55

TypcastsManchmal muss man einen Datentyp manuell in einen anderen Typumwandeln.

Beispiele:I double zu int , um Nachkommastellen zu entfernenI char zu int , um Zeichencode auszulesenI int zu char , um systematisch Zeichen zu erzeugen

Typcast: Syntax

(NeuerTyp) wert

Typcast: Beispiele

(int) 3.4(int) 'a'(char) intVariable

54 / 55

Zusammenfassung

Variablen

double a = 3.5;int b = 10;boolean c = true;String blabla = "Blabla";

Arithmetische Operatoren

+ - * / %

55 / 55

Recommended