diff options
| -rw-r--r-- | .gitmodules | 3 | ||||
| m--------- | Info/10/2/Felder/Erderwaermung | 0 | ||||
| -rw-r--r-- | Info/10/2/Felder/slides.md | 243 | ||||
| -rw-r--r-- | Info/23_24/01/18/10B/schedule.md | 37 | ||||
| l--------- | Info/23_24/01/18/10B/topic | 1 |
5 files changed, 284 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules index 62db1c84..d65a83ec 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "scripts/quiz"] path = scripts/quiz url = https://github.com/fischerling/quiz.git +[submodule "Info/10/2/Felder/Erderwaermung"] + path = Info/10/2/Felder/Erderwaermung + url = git@gitlab.com:school1805723/tagestemperaturen.git diff --git a/Info/10/2/Felder/Erderwaermung b/Info/10/2/Felder/Erderwaermung new file mode 160000 +Subproject ae88484e066d41ef6e16939a02407d29f75aaef diff --git a/Info/10/2/Felder/slides.md b/Info/10/2/Felder/slides.md new file mode 100644 index 00000000..ac114e89 --- /dev/null +++ b/Info/10/2/Felder/slides.md @@ -0,0 +1,243 @@ +--- +author: Florian Fischer +theme: metropolis +aspectratio: 169 +header-includes: | + \makeatletter + \beamer@ignorenonframefalse + \makeatother +--- + + +## + +\begin{tikzpicture} +\node[rotate=0] {\includegraphics[keepaspectratio]{img/Copyrighted/polarbears.jpg}}; +\pause +\node[rotate=-5] {\includegraphics[keepaspectratio]{img/Copyrighted/flood.jpg}}; +\pause +\node[rotate=8] {\includegraphics[keepaspectratio]{img/Copyrighted/drought.jpg}}; +\pause +\node[rotate=3] {\includegraphics[keepaspectratio]{img/Copyrighted/burnt.jpg}}; +\end{tikzpicture} + +## {.standout} + +Heute geht es um den Klimawandel. + +\pause + +Wieso wissen wir eigentlich davon? + +## Temperaturmessungen + +Wir messen die Temperatur. + +{.centered height=70%} + +\pause +Was fehlt noch damit wir einen Trend beobachten können? + +## Speichern von vielen gleichen Daten + +\pause +Wie würdet ihr in Java euch mehrere Temperaturmessungen speichern? + +\pause +```java +class Messungen { + double messung1; + double messung2; + double messung3; + double messung4; + ... +} +``` + +\pause +Ok geht! Aber hat einiges an Problemen. + +## Die Datenstruktur Feld + +Da die Verwaltung einer größeren, meist fester Anzahl, gleicher Daten ein gängiges Problem ist haben die meisten Programmiersprachen eine Lösung. + +\pause +### Feld (engl. Array) + +Ein \boldred{Array} könnt ihr euch wie ein Schachtel mit vielen gleich großen Fächern vorstellen. + +\vspace{0.5cm} +\begin{center} +\scalebox{1.5}{ +\begin{tabular}{|c|c|c|c|c|c} +\hline +&&&&&...\\ +\hline +\end{tabular} +} +\end{center} + +## Arrays in Java + +Java unterstützt \boldred{Felder} von **jedem** Datentyp. +Um ein Feld von ganzen Zahlen anzulegen musst du ein Attribut/Variable mit dem Typ `int[]`{.java} **deklarieren**. + +\pause +Ein Array in Java hat eine **feste Länge** die beim Erzeugen eines Arrays mit Hilfe des `new`{.java} Befehls in den eckigen Klammern angegeben wird. + +\pause +```{.java} +// Deklaration eines int arrays namens Zahlen +int[] zahlen; +// Initialisieren der Variable zahlen mit einem neuen array der Länge 5 +zahlen = new int[5]; +``` + +## \faIcon{pencil-alt} Arrays in Java + +* Zusammenschluss mehrerer Daten gleichen Typs +* Der Datentyp setzt sich aus dem Typ eines Eintrags und `[]` zusammen + * `<typ>[]` + * Bsp: `String[]`{.java}, `int[]`{.java}, `double[]`{.java} +* Werden durch das Schlüsselwort `new`{.java} erzeugt + * Bsp: `int[] zahlen = new int[5];`{.java} +* Haben eine feste Länge + * Die Länge wird in dem Attribut `length` eines Feldes gespeichert + * ```java +int[] zahlen = new int[5]; +zahlen.length == 5; // Wahr +``` + +## \faIcon{desktop} Arbeitsauftrag - 5min + +Wir wollen ein Programm schreiben das die [stündliche]{.underline} Temperaturmessungen eines Tages verwaltet. + +1. Öffne das Tagestemperaturen Projekt +2. Deklariere ein Feld vom Typ `double`{.java} namens `temperaturen`, als Attribut der Klasse `Tagestemperaturen` +3. Initialisiere das Feld im Konstruktor der Klasse `Tagestemperaturen` + +## Auf Einträge zugreifen. + +Jetzt haben wir ein Feld aber können damit noch nichts anfangen. + +\pause + +### \faIcon{pencil-alt} Index +Um auf einzelne Stellen in einem Feld zuzugreifen, verwenden wir deren \boldred{Index}. + +Der \boldred{Index} eines \boldred{Feldes} startet in Java bei 0. + +Um ein Feld mit Index `n` anzusprechen wird der \boldred{Index} in **eckige Klammern** hinter den Feldnamen geschrieben. + +\pause +::: {.columns align=center} +:::: {.column width=40%} +```java +int[] zahlen = new int[5]; +zahlen[0] = 1; +zahlen[1] = 2; +zahlen[2] = 3; +zahlen[3] = 4; +zahlen[4] = 5; +``` +:::: + +:::: {.column width=40%} +\begin{tabular}{|c|c|c|c|c|} +\hline +1 & 2 & 3 & 4 & 5 \\ +\hline +\end{tabular} + +\begin{tabular}{ccccc} +0 & 1 & 2 & 3 & 4 \\ +\end{tabular} +:::: +::: + + +## Feld durchlaufen + +Das ist auch noch ganz schön mühsam! + +Wie könnten wir leichter jeden Eintrag eines Feld lesen/schreiben? + +\pause + +### Mit einer `for` - Wiederholung! + +```java +int[] zahlen = new int[5]; +for (int i = 0; i < zahlen.length; i++) { + zahlen[i] = i + 1; +} +``` + +## \faIcon{desktop} Arbeitsauftrag - 15min + +1. Vervollständigen die Methode `temperaturenAusgeben()` in dem du das Feld mit einer `for`- Wiederholung durchläufst. +2. Bei jeder Wiederholung soll die Temperatur und die Stunde ausgegeben werden. + +## \faIcon{desktop} Arbeitsauftrag - Lösung + +```java +public void temperaturenAusgeben() { + for (int i = 0; i < temperaturen.length; i++) { + System.out.println("Zur Stunde " + i + + " wurden " + temperaturen[i] + + " °C gemessen."); + } +} +``` + +## Wie finden wir die kleinste Temperatur? + +### Idee\only<1>{?}\only<2->{:} +\pause +Alle Temperaturen der Reihe nach mit der aktuell kleinsten vergleichen und die kleinere Temperatur merken + +### Was brauchen wir? +\begin{itemize} +\item<3-> Wir müssen uns das aktuelle Minimum in einer Variable merken +\item<4-> Wir müssen das Feld durchlaufen und alle Temperaturen prüfen +\item<5-> Wir müssen auf ungültige/fehlende Messungen (-300) prüfen +\end{itemize} + +## Kleinste Temperatur finden in Java + +```java +public void minTempAusgeben() { + double minimum = -300; + for (int i = 0; i < temperaturen.length; i++) { + if(temperaturen[i] > -300 ) { + if (minimum == -300) { // Noch kein echtes Minimum + minimum = temperaturen[i]; + } else if(temperaturen[i] < minimum) { + minimum = temperaturen[i]; + } + } + } + System.out.println("Die kleinste gemessene Temperatur war " + + minimum + " °C."); +} +``` + +## \faIcon{desktop} Arbeitsauftrag - 15min + +1. Vervollständigen die Methode `maxTempAusgeben()`, die ähnlich zu `minTempAusgeben()` die maximal gemessene Temperatur ausgiebt. +2. **Für Schnelle:** Vervollständige die Methode `durchschnittTempAusgeben()`, die die durchschnittliche Temperatur nach dem arithmetischen Mittel ausgiebt. + +## \faIcon{desktop} Arbeitsauftrag - Lösung + +```java +public void maxTempAusgeben() { + double maximum = -300; + for (int i = 0; i < temperaturen.length; i++) { + if (temperaturen[i] > maximum) { + maximum = temperaturen[i]; + } + } + System.out.println("Die größte gemessene Temperatur war " + + maximum + " °C."); +} +``` diff --git a/Info/23_24/01/18/10B/schedule.md b/Info/23_24/01/18/10B/schedule.md new file mode 100644 index 00000000..76446029 --- /dev/null +++ b/Info/23_24/01/18/10B/schedule.md @@ -0,0 +1,37 @@ +--- +lang: de +geometry: margin=2cm +--- +# Felder + +* **Klasse**: 10B +* **Datum**: 18.01 + +## Lernziele + +## Verlaufplan + +--------------------------------------------------------------------------------------------------- +Zeit Phase Unterrichtsgeschehen Ziel Methode Medien +----- --------------- -------------------------------------------- ----------- ---------- --------- +15 Wdh OOP UG Beamer + +5 Motivation Erderwärmung LV Beamer + +10 Erarbeitung Felder in Java UG Beamer + +5 Uebung SuS deklarieren und initialisieren ein EA BlueJ/ + Feld O_IDE + +10 Erarbeitung Index, Felddurchlauf UG Beamer + +15 Uebung temperaturenGeben() EA + +5 Sicherung temperaturenGeben() UG Beamer + +5 Erarbeitung minTempAusgeben() UG Beamer + +15 Vertiefung maxTempAusgeben() EA + +5 Sicherung maxTempAusgeben() UG Beamer +--------------------------------------------------------------------------------------------------- diff --git a/Info/23_24/01/18/10B/topic b/Info/23_24/01/18/10B/topic new file mode 120000 index 00000000..aefc8544 --- /dev/null +++ b/Info/23_24/01/18/10B/topic @@ -0,0 +1 @@ +../../../../10/2/Felder/
\ No newline at end of file |
