Add variable declaration slides

This commit is contained in:
p1ng0ut 2023-01-22 21:15:46 +01:00
parent ed6a2c39be
commit 18c1cccac1
7 changed files with 183 additions and 71 deletions

View File

@ -21,7 +21,7 @@ export PATH=<path_to_reval_md_bin_path>:$PATH
or by adding this path to `~/.profile`. When this is done, you can execute the command:
```shell
reveal-md docs/index.md
reveal-md docs/slides.md -w
```
## Kotlin Native Build

View File

@ -1,69 +0,0 @@
---
title: Dezentrale Kotlin Course
separator: <!--s-->
verticalSeparator: <!--v-->
theme: night
revealOptions:
transition: 'fade'
---
# Kotlinkurs
<!--s-->
## Kotlin die Multiplattform-Sprache
- JVM: Java-Code kann in Kotlin eingebunden werden und umgekehrt
- Android: Ausführung auf verschiedenen Geräten
- JS: Client-Anwendungen lauffähig im Browser
- Native: Kompilieren für jedes Betriebssystem (bspw. Windows, Linux, iOS und macOS)
<!--v-->
## Mehrere Programmierparadigmen möglich
- _imperative_ Programmierung,
- _objektorientierte_ Programmierung,
- _generische_ Programmierung,
- _funktionale_ Programmierung und mehr.
<!--v-->
## Etwas Geschichte
- Kotlin wurde **2011** erstmals vorgestellt und
- seit **2010** entwickelt
- **2016** wurde Version 1.0 veröffentlicht
- **2017** auf Google I/O erstklassiger Support angekündigt
<!--s-->
## Ein Beispielprogramm
Hello-World, wie üblich (siehe [Main.kt](../src/nativeMain/kotlin/Main.kt)):
```kotlin
fun main() {
println("Hello, Kotlin/Native!")
}
```
<!--v-->
## Grundlegende Begriffe (1/2)
- Ein **Programm** ist eine Folge von Anweisungen, die nacheinander ausgeführt werden.
- Eine **Anweisung** ist ein einzelner auszuführender Befehl (drucke den Text),
- Ein **Ausdruck** ist ein Codestück, das einen einzigen Wert ergibt (z. B. ist 2*2 ein Ausdruck)
<!--v-->
## Grundlegende Begriffe (2/2)
- Ein **Block** ist eine Gruppe von Anweisungen, in einem Paar geschweifter Klammern `{...}`
- Des Weiteren gibt es noch:
- **Schlüsselwörter** - Wort mit besonderer Bedeutung in der Programmiersprache
- **Bezeichner** - Wort um etwas zu identifizieren
- **Kommentare** - Text der beim Ausführen des Programms identifiziert wird
## Analyse Hello-World-Programm

149
docs/slides.md Normal file
View File

@ -0,0 +1,149 @@
---
title: Dezentrale Kotlin Course
separator: <!--next_chapter-->
verticalSeparator: <!--next_slide-->
theme: night
revealOptions:
transition: 'fade'
---
# Kotlinkurs
<!--next_chapter-->
## Kotlin die Multiplattform-Sprache
- **JVM**: Java-Code kann in Kotlin eingebunden werden und umgekehrt
- **Android**: Ausführung auf verschiedenen Geräten
- **JS**: Client-Anwendungen lauffähig im Browser
- **Native**: Kompilieren für jedes Betriebssystem (bspw. Windows, Linux, iOS und macOS)
<!--next_slide-->
## Mehrere Programmierparadigmen möglich
- _imperative_ Programmierung,
- _objektorientierte_ Programmierung,
- _generische_ Programmierung,
- _funktionale_ Programmierung und mehr.
<!--next_slide-->
## Etwas Geschichte
- Kotlin wurde **2011** erstmals vorgestellt und
- seit **2010** entwickelt
- **2016** wurde Version 1.0 veröffentlicht
- **2017** auf Google I/O erstklassiger Support angekündigt
<!--next_chapter-->
## Ein Beispielprogramm
Hello-World, wie üblich (siehe [Main.kt](../src/nativeMain/kotlin/Main.kt)):
```kotlin
fun main() {
println("Hello, Kotlin/Native!")
}
```
<!--next_slide-->
## Grundlegende Begriffe (1/2)
- Ein **Programm** ist eine Folge von Anweisungen, die nacheinander ausgeführt werden.
- Eine **Anweisung** ist ein einzelner auszuführender Befehl (drucke den Text),
- Ein **Ausdruck** ist ein Codestück, das einen einzigen Wert ergibt (z. B. ist 2*2 ein Ausdruck)
<!--next_slide-->
## Grundlegende Begriffe (2/2)
- Ein **Block** ist eine Gruppe von Anweisungen, in einem Paar geschweifter Klammern `{...}`
- Des Weiteren gibt es noch:
- **Schlüsselwörter** - Wort mit besonderer Bedeutung in der Programmiersprache
- **Bezeichner** - Wort um etwas zu identifizieren
- **Kommentare** - Text der beim Ausführen des Programms identifiziert wird
<!--next_slide-->
## Variablen deklarieren
- **val** (für value) deklariert unveränderliche Variable
- **var** (für Variable) deklariert eine veränderbare Variable
Der anschließende, zwingend erforderliche Name darf nicht mit einer Zahl beginnen!
<!--next_slide-->
### Beispiel unveränderliche Variable:
```kotlin
val language = "Kotlin"
```
<div style="background-color: dimgray; border-radius: 18px; margin: 50px; padding: 5px;">
&#9888; Achtung: Variablennamen sind case-sensitiv:
language != Language
</div>
<!--next_slide-->
### Beispiel veränderliche Variable:
```kotlin
var dayOfWeek = "Monday"
println(dayOfWeek) // prints Monday
dayOfWeek = "Tuesday"
println(dayOfWeek) // prints Tuesday
```
<!--next_slide-->
### Variablen und Datentypen (1/2)
Variablen in Kotlin wird durch Wertzuweisung ein Typ (Zahl oder Zeichenkette) zugewiesen.
D. h. folgender Code ist nicht möglich:
```kotlin
var aString = "lorem ipsum"
aString = 0.815
```
<!--next_slide-->
### Variablen und Datentypen (2/2)
Variablen kann ein Typ zugewiesen werden:
```kotlin
val aString : String
print(aString) // Fehler, Variable nicht initialisiert!
```
<!--next_slide-->
### Unveränderbarkeit von **`val`**
Unveränderbare Werte, innerer Status:
```kotlin
val anagram = "Anagram".toCharArray()
println(anagram.joinToString()) // -> "A, n, a, g, r, a, m"
anagram.sort()
println(anagram.joinToString()) // -> "A, a, a, g, m, n, r"
```
<!--next_chapter-->
## Ein neues Projekt beginnen
Installieren von [SdkMan](https://sdkman.io/install "Link zur Installationsseite von SdkMan")
Kontrollieren, ob SdkMan installiert ist:
```shell
sdk version
```

View File

@ -1,4 +1,3 @@
fun main() {
println("Hello, Kotlin/Native!")
// println(containsDuplicate(intArrayOf(1, 23, 34, 1)))
}

View File

@ -0,0 +1,12 @@
package space.dezentrale.prgrnd
class Anagram {
fun isAnagram(s: String, t: String): Boolean {
val sArray = s.toCharArray()
sArray.sort()
val tArray = t.toCharArray()
tArray.sort()
return sArray.contentEquals(tArray)
}
}

View File

@ -0,0 +1,21 @@
package space.dezentrale.prgrnd
import kotlin.test.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
class AnagramTest {
@Test
fun `'anagram' is an anagram of 'nagaram'`() {
val anagram = Anagram()
assertTrue { anagram.isAnagram("anagram", "nagaram") }
}
@Test
fun `'rat' is not an anagram of 'car'`() {
val anagram = Anagram()
assertFalse { anagram.isAnagram("rat", "car") }
}
}