diff options
| -rw-r--r-- | Info/10/2/Felder/.gitignore | 2 | ||||
| -rw-r--r-- | Info/10/2/Felder/slides-erderwaermung-felder.md | 164 | ||||
| -rw-r--r-- | Info/10/2/Felder/slides-erderwaermung-intro.md | 67 | ||||
| -rw-r--r-- | Info/10/2/Felder/slides.md | 240 |
4 files changed, 242 insertions, 231 deletions
diff --git a/Info/10/2/Felder/.gitignore b/Info/10/2/Felder/.gitignore new file mode 100644 index 00000000..44ed896d --- /dev/null +++ b/Info/10/2/Felder/.gitignore @@ -0,0 +1,2 @@ +slides-erderwaermung-intro.pdf +slides-erderwaermung-felder.pdf diff --git a/Info/10/2/Felder/slides-erderwaermung-felder.md b/Info/10/2/Felder/slides-erderwaermung-felder.md new file mode 100644 index 00000000..19cb5fbf --- /dev/null +++ b/Info/10/2/Felder/slides-erderwaermung-felder.md @@ -0,0 +1,164 @@ +## \faIcon{chalkboard-teacher} 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 \hfill 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 \hfill 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/10/2/Felder/slides-erderwaermung-intro.md b/Info/10/2/Felder/slides-erderwaermung-intro.md new file mode 100644 index 00000000..09802b03 --- /dev/null +++ b/Info/10/2/Felder/slides-erderwaermung-intro.md @@ -0,0 +1,67 @@ +## + +\begin{tikzpicture} +\node[rotate=0] {\includegraphics[keepaspectratio, width=0.9\textwidth]{img/Copyrighted/polarbears.jpg}}; +\pause +\node[rotate=-5] {\includegraphics[keepaspectratio, width=0.9\textwidth]{img/Copyrighted/flood.jpg}}; +\pause +\node[rotate=8] {\includegraphics[keepaspectratio, width=0.9\textwidth]{img/Copyrighted/drought.jpg}}; +\pause +\node[rotate=3] {\includegraphics[keepaspectratio, width=0.9\textwidth]{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. + +## \faIcon{chalkboard-teacher} 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} diff --git a/Info/10/2/Felder/slides.md b/Info/10/2/Felder/slides.md index 636b233d..976307dc 100644 --- a/Info/10/2/Felder/slides.md +++ b/Info/10/2/Felder/slides.md @@ -1,239 +1,17 @@ ---- -author: Florian Fischer -theme: metropolis -aspectratio: 169 ---- - - -## - -\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; - ... -} +```{.include} +slides-erderwaermung-intro.md ``` -\pause -Ok geht! Aber hat einiges an Problemen. - -## Die Datenstruktur Feld +## \faIcon{desktop} Arbeitsauftrag: Felder in Java -Da die Verwaltung einer größeren, meist fester Anzahl, gleicher Daten ein gängiges Problem ist haben die meisten Programmiersprachen eine Lösung. +Die kommenden Stunden erarbeitet ihr in eurem Tempo die Datenstruktur Felder. -\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} +\vspace{0.4cm} \begin{center} -\scalebox{1.5}{ -\begin{tabular}{|c|c|c|c|c|c} -\hline -&&&&&...\\ -\hline -\end{tabular} -} +\Large +\url{https://dennerlein-web.de/felder/} \end{center} +\vspace{0.4cm} -## 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 +Das passende Arbeitsblatt habe ich euch in den ByCS Space gelegt. -### \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."); -} -``` |
