main
Alexander Kimmig 2025-06-02 21:35:39 +00:00
commit b0f1a49375
24 changed files with 5429 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,233 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "d5c00cd0-b48b-467e-9276-0356d2ccffdb",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Variablen\n",
"Anders als bei Java müssen Datentypen in TypeScript nicht explizit angegeben werden. Besserer Programmierstil ist jedoch, wenn wir die Typen trotzdem mit angeben. Die Schreibweise hierzu ist jedoch an der UML-Schreibweise angelegt:\n",
"\n",
"Wir kennen von Java bereits:\n",
"`int a = 5`\n",
"\n",
"Demgegenüber bei TypeScript:\n",
"`let a: number = 5`\n",
"\n",
"Wie in der Einführung bereits geschrieben, wird TypeScript immer in JavaScript übersetzt und dann erst ausgeführt. Dadurch, dass JavaScript jedoch keine statische Typisierung von Variablen kennt, können wir den Datentyp prinzipiell auch weglassen.\n",
"\n",
"Programmiert jedoch ein größeres Projekt in einer richtigen Entwicklungsumgebung, so helfen Typen dabei, Fehler frühzeitig zu erkennen! Wir werden in aller Regel deshalb auch hier den Datentyp mit dazu schreiben!"
]
},
{
"cell_type": "markdown",
"id": "c96b5908-744c-49e8-b705-02fae696b6fe",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Variablentypen\n",
"neben `let` gibt es auch noch die Schlüsselwörter `const` sowie `var`. Der Unterschiede bestehen darin:\n",
"* `var`: ähnlich wie `let`, jedoch ist der Geltungsbereich etwas \"gewöhnungsbedürftig\". So kann innerhalb eines Blocks eine Variable, die außerhalb mit `var` angelegt wurde nicht neu angelegt werden.\n",
"* `let`: Verahlten, wie man es z.B. von Java gewohnt ist. Wird eine Variable mit `let` in einem Block neu definiert, so wird eine neue Variable angelegt. Will man stattdessen den Wert der außerhalb definierten Variable ändern, so lässt man das Schlüsselwort `let` weg.\n",
"* `const`: Wie `let`, jedoch kann der Wert der \"Variablen\" nicht mehr geändert werden."
]
},
{
"cell_type": "markdown",
"id": "1406f526-923c-40a6-bb87-422e50a5899b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel für `var`:\n",
"Hier wird außerhalb des `if`-Blocks eine Variable `hallo` angelegt. Innerhalb des Blocks wird die `hallo`-Variable neu zugewiesen. In der Ausgabe wird deshalb zunächst `Hallo` und anschließend zwei mal `Tschüss` ausgegeben.\n",
"\n",
"Bei der Variablen `greeter` wird trotz Angabe des Schlüsselwortes `var` innerhalb des `if`-Blocks keine neue Variable angelegt sondern ebenfalls der Wert der äußeren Variablen `greeter` verändert. Die Ausgabe ist deshalb ebenfalls zunächst `Hello`, anschließend beide male `Goodbye`."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "4dd26396-d818-4ea4-829a-92c193012890",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo Hello\n",
"Tschüss Goodbye\n",
"Tschüss Goodbye\n"
]
}
],
"source": [
"var hallo = \"Hallo\";\n",
"var greeter = \"Hello\";\n",
"console.log(hallo, greeter); // Ausgabe: \"Hallo Hello\"\n",
"var times = 4;\n",
"\n",
"if (times > 3) {\n",
" hallo = \"Tschüss\";\n",
" var greeter = \"Goodbye\";\n",
" console.log(hallo, greeter); // Ausgabe: \"Tschüss Goodbye\"\n",
"}\n",
"\n",
"console.log(hallo, greeter); // Ausgabe: \"Tschüss Goodbye\""
]
},
{
"cell_type": "markdown",
"id": "4343607c-7165-4236-b2b3-bd03526a6b3b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel für `let`:\n",
"Hier wird außerhalb des `if`-Blocks eine Variable `hallo2` angelegt. Innerhalb des Blocks wird die `hallo2`-Variable neu zugewiesen. In der Ausgabe wird deshalb zunächst `Hallo` und anschließend zwei mal `Tschüss` ausgegeben.\n",
"\n",
"Bei der Variablen `greeter2` wird durch die Angabe des Schlüsselwortes `let` innerhalb des `if`-Blocks eine neue Variable angelegt. Die Ausgabe ist deshalb ebenfalls zunächst `Hello`, anschließend `Goodbye`. Da die Variable `greeter2` in dem `if`-Block neu angelegt wurde und nur dort gültig ist, wird nach dem Block wieder auf die ursprüngliche Variable zugegriffen und wieder `Hello` ausgegeben."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "d1fad4da-b713-4ca5-a7b8-34401b078883",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo Hello\n",
"Tschüss Goodbye\n",
"Tschüss Hello\n"
]
}
],
"source": [
"let hallo2 = \"Hallo\";\n",
"let greeter2 = \"Hello\";\n",
"console.log(hallo2, greeter2); // Ausgabe: \"Hallo Hello\"\n",
"let times2 = 4;\n",
"\n",
"if (times > 3) {\n",
" hallo2 = \"Tschüss\";\n",
" let greeter2 = \"Goodbye\";\n",
" console.log(hallo2, greeter2); // Ausgabe: \"Tschüss Goodbye\"\n",
"}\n",
"\n",
"console.log(hallo2, greeter2); // Ausgabe: \"Tschüss Goodbye\""
]
},
{
"cell_type": "markdown",
"id": "51652a7d-dc22-4244-8823-3babfc29a1c8",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel für `const`:\n",
"Wird eine \"Variable\" mit `const` angelegt, so verhält sie sich bzgl. dem Geltungsbereich wie `let`. Jedoch lässt sich der direkt Inhalt nicht mehr ändern.\n",
"\n",
"*Anmerkung: ist der Inhalt dieser Variablen ein Array oder ein Objekt, so lassen sich die Inhalte davon weiterhin ändern. Dazu später mehr.*"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "39b662d7-ab11-4628-865d-abe4cdc6e6cd",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"ename": "TypeError",
"evalue": "Assignment to constant variable.",
"output_type": "error",
"traceback": [
"Stack trace:",
"TypeError: Assignment to constant variable.",
" at <anonymous>:2:8"
]
}
],
"source": [
"const hallo3 = \"Hallo\";\n",
"hallo3 = \"Tschüss\"; // funktioniert nicht, da \"hallo3\" konstant!"
]
},
{
"cell_type": "markdown",
"id": "ff6bd7f3-5020-4358-a66b-5836ed36dae5",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Regel für den Unterricht:\n",
"**Wir werden kein `var` verwenden! Wir verwenden in aller Regel `let` oder alternativ, wenn sich nichts direkt ändern soll `const`**"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,197 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "636d4527-50fc-4836-ae08-00c12844da8d",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\""
]
},
{
"cell_type": "markdown",
"id": "d90b7734-c902-4300-80ef-d8bf55a64813",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.01.1\n",
"Deklariere eine Variable `vorname` und initialisiere sie mit dem Wert `'Franz'`."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "594735d3-e90e-443e-9eff-e4600c331bc2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 2,
"id": "245aec76-71a6-478e-9301-08ca4e14ff71",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": [
"Test"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A1: vorname ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"A1: vorname \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: vorname is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"A1: vorname \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 1 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"A1: vorname\", () => {\n",
" assertEquals(vorname, 'Franz')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "9eb66210-476a-499e-8965-9c63da2de3e7",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.01.2\n",
"Deklariere eine Variable `blume` und weise ihr den Wert `'Rose'` zu.\n",
"\n",
"Deklariere eine zweite Variable `tier` und weise ihr den Wert `'Käfer'` zu."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7daea9ea-3417-48d9-9416-3462cc38f8bc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4f710df6-8465-4da1-a997-4e34ea80d6ed",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": [
"Test"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A2: blume ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"A2: tier ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"A2: blume \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: blume is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"A2: tier \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: tier is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"A2: blume \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"A2: tier \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 2 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"A2: blume\", () => {\n",
" assertEquals(blume, 'Rose')\n",
"})\n",
"Deno.test(\"A2: tier\", () => {\n",
" assertEquals(tier, 'Käfer')\n",
"})"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,263 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "d5c00cd0-b48b-467e-9276-0356d2ccffdb",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Variablen\n",
"Anders als bei Java müssen Datentypen in TypeScript nicht explizit angegeben werden. Besserer Programmierstil ist jedoch, wenn wir die Typen trotzdem mit angeben. Die Schreibweise hierzu ist jedoch an der UML-Schreibweise angelegt:\n",
"\n",
"Wir kennen von Java bereits:\n",
"`int a = 5`\n",
"\n",
"Demgegenüber bei TypeScript:\n",
"`let a: number = 5`\n",
"\n",
"Wie in der Einführung bereits geschrieben, wird TypeScript immer in JavaScript übersetzt und dann erst ausgeführt. Dadurch, dass JavaScript jedoch keine statische Typisierung von Variablen kennt, können wir den Datentyp prinzipiell auch weglassen.\n",
"\n",
"Programmiert jedoch ein größeres Projekt in einer richtigen Entwicklungsumgebung, so helfen Typen dabei, Fehler frühzeitig zu erkennen! Wir werden in aller Regel deshalb auch hier den Datentyp mit dazu schreiben!"
]
},
{
"cell_type": "markdown",
"id": "67bb7709-852f-480b-80ab-a6b5b0194037",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Datentypen in TypeScript\n",
"Bei TypeScript gibt es im Wesentlichen folgende Datentypen:\n",
"* `string`: Entspricht dem Java-Datentyp `String`, dieser kann Zeichenketten aufnehmen\n",
"* `number`: Im Gegensatz zu Java unterscheidet TypeScript z.B. nicht, um welche Zahltypen (ganze Zahlen/Kommazahlen) es sich handelt. `number` steht allgemein für eine Zahl\n",
"* `boolean`: Wahrheitswerte `true` bzw `false`\n",
"\n",
"Wird eine Variable gleichzeitig deklariert (= angelegt) als auch initialisiert (= Wert zugewiesen) so kann hier auf eine Angabe des Datentyps verzichtet werden, da TypeScript dann automatisch den Datentyp ableitet.\n",
"\n",
"Soll beispielsweise bei einem Funktions-Parameter der Datentyp variabel sein bzw alle möglichen Werte angenommen werden können, so kann als Datentyp `any` genutzt werden.\n",
"\n",
"### Beispiel:\n",
"\n",
"```\n",
"let x = \"Hallo\";\n",
"```\n",
"\n",
"`x` hat hier automatisch den Datentyp `string`."
]
},
{
"cell_type": "markdown",
"id": "c96b5908-744c-49e8-b705-02fae696b6fe",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Variablentypen\n",
"neben `let` gibt es auch noch die Schlüsselwörter `const` sowie `var`. Der Unterschiede bestehen darin:\n",
"* `var`: ähnlich wie `let`, jedoch ist der Geltungsbereich etwas \"gewöhnungsbedürftig\". So kann innerhalb eines Blocks eine Variable, die außerhalb mit `var` angelegt wurde nicht neu angelegt werden.\n",
"* `let`: Verahlten, wie man es z.B. von Java gewohnt ist. Wird eine Variable mit `let` in einem Block neu definiert, so wird eine neue Variable angelegt. Will man stattdessen den Wert der außerhalb definierten Variable ändern, so lässt man das Schlüsselwort `let` weg.\n",
"* `const`: Wie `let`, jedoch kann der Wert der \"Variablen\" nicht mehr geändert werden."
]
},
{
"cell_type": "markdown",
"id": "1406f526-923c-40a6-bb87-422e50a5899b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel für `var`:\n",
"Hier wird außerhalb des `if`-Blocks eine Variable `hallo` angelegt. Innerhalb des Blocks wird die `hallo`-Variable neu zugewiesen. In der Ausgabe wird deshalb zunächst `Hallo` und anschließend zwei mal `Tschüss` ausgegeben.\n",
"\n",
"Bei der Variablen `greeter` wird trotz Angabe des Schlüsselwortes `var` innerhalb des `if`-Blocks keine neue Variable angelegt sondern ebenfalls der Wert der äußeren Variablen `greeter` verändert. Die Ausgabe ist deshalb ebenfalls zunächst `Hello`, anschließend beide male `Goodbye`."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "4dd26396-d818-4ea4-829a-92c193012890",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo Hello\n",
"Tschüss Goodbye\n",
"Tschüss Goodbye\n"
]
}
],
"source": [
"var hallo = \"Hallo\";\n",
"var greeter = \"Hello\";\n",
"console.log(hallo, greeter); // Ausgabe: \"Hallo Hello\"\n",
"var times = 4;\n",
"\n",
"if (times > 3) {\n",
" hallo = \"Tschüss\";\n",
" var greeter = \"Goodbye\";\n",
" console.log(hallo, greeter); // Ausgabe: \"Tschüss Goodbye\"\n",
"}\n",
"\n",
"console.log(hallo, greeter); // Ausgabe: \"Tschüss Goodbye\""
]
},
{
"cell_type": "markdown",
"id": "4343607c-7165-4236-b2b3-bd03526a6b3b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel für `let`:\n",
"Hier wird außerhalb des `if`-Blocks eine Variable `hallo2` angelegt. Innerhalb des Blocks wird die `hallo2`-Variable neu zugewiesen. In der Ausgabe wird deshalb zunächst `Hallo` und anschließend zwei mal `Tschüss` ausgegeben.\n",
"\n",
"Bei der Variablen `greeter2` wird durch die Angabe des Schlüsselwortes `let` innerhalb des `if`-Blocks eine neue Variable angelegt. Die Ausgabe ist deshalb ebenfalls zunächst `Hello`, anschließend `Goodbye`. Da die Variable `greeter2` in dem `if`-Block neu angelegt wurde und nur dort gültig ist, wird nach dem Block wieder auf die ursprüngliche Variable zugegriffen und wieder `Hello` ausgegeben."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "d1fad4da-b713-4ca5-a7b8-34401b078883",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo Hello\n",
"Tschüss Goodbye\n",
"Tschüss Hello\n"
]
}
],
"source": [
"let hallo2 = \"Hallo\";\n",
"let greeter2 = \"Hello\";\n",
"console.log(hallo2, greeter2); // Ausgabe: \"Hallo Hello\"\n",
"let times2 = 4;\n",
"\n",
"if (times > 3) {\n",
" hallo2 = \"Tschüss\";\n",
" let greeter2 = \"Goodbye\";\n",
" console.log(hallo2, greeter2); // Ausgabe: \"Tschüss Goodbye\"\n",
"}\n",
"\n",
"console.log(hallo2, greeter2); // Ausgabe: \"Tschüss Goodbye\""
]
},
{
"cell_type": "markdown",
"id": "51652a7d-dc22-4244-8823-3babfc29a1c8",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel für `const`:\n",
"Wird eine \"Variable\" mit `const` angelegt, so verhält sie sich bzgl. dem Geltungsbereich wie `let`. Jedoch lässt sich der direkt Inhalt nicht mehr ändern.\n",
"\n",
"*Anmerkung: ist der Inhalt dieser Variablen ein Array oder ein Objekt, so lassen sich die Inhalte davon weiterhin ändern. Dazu später mehr.*"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "39b662d7-ab11-4628-865d-abe4cdc6e6cd",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"ename": "TypeError",
"evalue": "Assignment to constant variable.",
"output_type": "error",
"traceback": [
"Stack trace:",
"TypeError: Assignment to constant variable.",
" at <anonymous>:2:8"
]
}
],
"source": [
"const hallo3 = \"Hallo\";\n",
"hallo3 = \"Tschüss\"; // funktioniert nicht, da \"hallo3\" konstant!"
]
},
{
"cell_type": "markdown",
"id": "ff6bd7f3-5020-4358-a66b-5836ed36dae5",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Regel für den Unterricht:\n",
"**Wir werden kein `var` verwenden! Wir verwenden in aller Regel `let` oder alternativ, wenn sich nichts direkt ändern soll `const`**"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,197 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "636d4527-50fc-4836-ae08-00c12844da8d",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\""
]
},
{
"cell_type": "markdown",
"id": "d90b7734-c902-4300-80ef-d8bf55a64813",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.01.1\n",
"Deklariere eine Variable `vorname` und initialisiere sie mit dem Wert `'Franz'`."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "594735d3-e90e-443e-9eff-e4600c331bc2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 2,
"id": "245aec76-71a6-478e-9301-08ca4e14ff71",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": [
"Test"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A1: vorname ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"A1: vorname \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: vorname is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"A1: vorname \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 1 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"A1: vorname\", () => {\n",
" assertEquals(vorname, 'Franz')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "9eb66210-476a-499e-8965-9c63da2de3e7",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.01.2\n",
"Deklariere eine Variable `blume` und weise ihr den Wert `'Rose'` zu.\n",
"\n",
"Deklariere eine zweite Variable `tier` und weise ihr den Wert `'Käfer'` zu."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7daea9ea-3417-48d9-9416-3462cc38f8bc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4f710df6-8465-4da1-a997-4e34ea80d6ed",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": [
"Test"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A2: blume ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"A2: tier ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"A2: blume \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: blume is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"A2: tier \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: tier is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"A2: blume \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"A2: tier \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 2 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"A2: blume\", () => {\n",
" assertEquals(blume, 'Rose')\n",
"})\n",
"Deno.test(\"A2: tier\", () => {\n",
" assertEquals(tier, 'Käfer')\n",
"})"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,163 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "e61302c1-61b9-43e6-9faf-340c6f63eeb5",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Funktionen"
]
},
{
"cell_type": "markdown",
"id": "91c5bfe0-c800-425e-95a5-3ba858172eac",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Grundlegendes\n",
"Eine Funktion ist ein Block von Anweisungen, der beliebig oft ausgeführt werden kann."
]
},
{
"cell_type": "markdown",
"id": "1d2ca0b1-ee23-4835-9a19-d1e0ca566475",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel 1: einfache Funktion\n",
"Hier wird eine einfache Funktion `hallo` definiert und anschließend zwei Mal ausgeführt."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5cbd4fea-aa4c-4132-b6a5-600477bbe9aa",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo Welt!\n",
"Hallo Welt!\n"
]
}
],
"source": [
"function hallo() {\n",
" console.log(\"Hallo Welt!\");\n",
"}\n",
"\n",
"hallo(); // Aufruf der Funktion\n",
"hallo(); // zweiter Aufruf"
]
},
{
"cell_type": "markdown",
"id": "8199e2d4-a3ec-4c9e-9c33-f0562de760d8",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Rückgabe\n",
"Eine Funktion kann nicht nur dafür verwendet werden, bestimmte Befehlsabfolgen auszuführen, sie kann auch ein Ergebnis zurückliefern. Dieses Ergebnis kann anschließend z.B. in einer Variablen gespeichert und weiterverwendet werden.\n",
"\n",
"Bei einer Funktion mit Rückgabe sollte der Rückgabe-Datentyp bei der Funktionsdefinition mit angegeben werden.\n",
"\n",
"Das Schlüsselwort `return` gibt den nachfolgenden Wert zurück und bricht gleichzeitig auch die Funktion ab!"
]
},
{
"cell_type": "markdown",
"id": "c3014407-d02c-41c7-bfe6-30177d95d71b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel 2: Funktion mit Rückgabewert\n",
"Hier wird die Funktion `hallo` definiert, die einen `string` zurückgibt.\n",
"\n",
"Mit `return \"Hallo Welt!\";` wird dann dieser String zurückgegeben."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7ea0e464-e3b7-43fb-807b-90f8232d4feb",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo Welt!\n"
]
}
],
"source": [
"function hallo(): string {\n",
" return \"Hallo Welt!\"; // hier wird \"Hallo Welt!\" zurückgegeben und die Funktion abgebrochen\n",
"\n",
" console.log(\"Keine Ausgabe\"); // diese Ausgabe findet nie statt, da zuvor bereits mit `return` abgebrochen wird\n",
"}\n",
"\n",
"let s: string = hallo(); // Funktion `hallo` wird aufgerufen und das Ergebnis in der Variablen s gespeichert\n",
"console.log(s); // Inhalt der Variablen `s` ausgeben"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,273 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fbccfbc-2e07-4214-a665-4b13afb2723e",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\";"
]
},
{
"cell_type": "markdown",
"id": "86eb640a-2c5b-4498-90d7-774984742f45",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.1\n",
"Definiere eine Funktion `hallo`, die `'Hallo Welt!'` zurückgibt."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "90e1aef5-ac02-45a6-9f98-3c812ed506f0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a6e2ef7a-6785-44b4-be55-55ef733320bd",
"metadata": {
"collapsed": true,
"editable": true,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.1: hallo ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.02.1: hallo \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: hallo is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.02.1: hallo \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 1 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.02.1: hallo\", () => {\n",
" assertEquals(hallo(), 'Hallo Welt!')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "7b17b7b9-9337-43f9-904b-3d8e11d1d9c3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.2\n",
"Definiere zwei Funktionen. Die erste Funktion `a` soll `'Hallo a!'` zurückgeben. Die zweite Funktion `b` soll `'Hallo b!'` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "89bda355-b2d5-4e47-9c7e-e711a5663f72",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f084bd1d-cd11-49f7-a0aa-ee33fd7886d3",
"metadata": {
"collapsed": true,
"editable": true,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.2: a ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.2: b ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.02.2: a \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: a is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.2: b \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: b is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.02.2: a \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.02.2: b \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 2 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.02.2: a\", () => {\n",
" assertEquals(a(), 'Hallo a!')\n",
"})\n",
"Deno.test(\"01.02.2: b\", () => {\n",
" assertEquals(b(), 'Hallo b!')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "302df880-f486-4cd5-b0e4-987a122d2b17",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.3\n",
"1. Definiere eine Funktion `begruesse`, die den Wert `'Moin!'` zurückgibt.\n",
"2. Deklariere eine Variable `begruessung`. Rufe die Funktion `begruesse` auf und weise der Variablen `begruessung` die Rückgabe dieses Aufrufs zu."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "956109e0-0e4a-416b-94a3-4a6f6c88caf9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d013cd3d-eb31-4a4f-a679-990fb77243c7",
"metadata": {
"collapsed": true,
"editable": true,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.3: begruesse ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.3: begruessung ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.02.3: begruesse \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: begruesse is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.3: begruessung \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: begruessung is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.02.3: begruesse \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.02.3: begruessung \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 2 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.02.3: begruesse\", () => {\n",
" assertEquals(begruesse(), 'Moin!')\n",
"})\n",
"Deno.test(\"01.02.3: begruessung\", () => {\n",
" assertEquals(begruessung, 'Moin!')\n",
"})"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,162 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "7871315d-8e48-467f-b664-6666282b0122",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Parameter\n",
"Eine Funktion kann auch einen oder mehrere Parameter entgegennehmen. Diese stehen bei der Definition als Variablen in der Klammer, beim Aufruf werden die Werte ebenfalls in der Klammer mit übergeben."
]
},
{
"cell_type": "markdown",
"id": "a05503b8-9275-4a9b-8362-610689c2c8fa",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel 3: Funktion mit Parameter\n",
"Hier wird eine Funktion `quadrat` definiert, die einen Parameter vom Typ `number` entgegennimmt."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "5234f737-4fbd-42ca-8481-81f878cc65d3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25\n",
"49\n"
]
}
],
"source": [
"function quadrat(a: number) {\n",
" console.log( a * a );\n",
"}\n",
"\n",
"quadrat(5); // Ausgabe: 25\n",
"quadrat(7); // Ausgabe: 49"
]
},
{
"cell_type": "markdown",
"id": "1be106e1-3fe0-48fe-98c3-7e031e7beb57",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel 4: Funktion mit mehreren Parametern und Rückgabe\n",
"Wir definieren hier eine Funktion `sum`, die zwei Parameter (jeweils vom Typ `number`) entgegennimmt und ebenfalls einen Wert vom Typ `number` zurückgibt.\n",
"\n",
"Als Test wird die Funktion mit den beiden Werten 45 und 17 aufgerufen und das Ergebnis in `a` gespeichert. Achtung: die Variable `a` hat nichts mit dem Parameter `a` zu tun und ist völlig unabhängig von diesem!\n",
"\n",
"Außerdem kann man auch das Ergebnis einer Funktion direkt als Wert für einen Parameter einer weiteren Funktion (hier `console.log`) verwenden."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "fcdea9e8-640f-47e5-8f39-ba64d62107b4",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"62\n",
"13\n"
]
}
],
"source": [
"function sum(a: number, b: number): number {\n",
" return a + b;\n",
"}\n",
"\n",
"let a: number = sum(45, 17);\n",
"console.log(a); // Ausgabe: 62\n",
"console.log( sum(5, 8) ); // Ausgabe: 13"
]
},
{
"cell_type": "markdown",
"id": "22568774-001a-4ae5-ba93-032a4d278cd6",
"metadata": {
"editable": false,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Anmerkung\n",
"Auch `console.log` ist eine Funktion, die auch mehrere Parameter (unterschiedlichen Typs) entgegennehmen kann und alle Parameterwerte nacheinander ausgibt."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "596221c0-294c-4db6-ba7f-1176fc4c0560",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,163 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "e61302c1-61b9-43e6-9faf-340c6f63eeb5",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Funktionen"
]
},
{
"cell_type": "markdown",
"id": "91c5bfe0-c800-425e-95a5-3ba858172eac",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Grundlegendes\n",
"Eine Funktion ist ein Block von Anweisungen, der beliebig oft ausgeführt werden kann."
]
},
{
"cell_type": "markdown",
"id": "1d2ca0b1-ee23-4835-9a19-d1e0ca566475",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel 1: einfache Funktion\n",
"Hier wird eine einfache Funktion `hallo` definiert und anschließend zwei Mal ausgeführt."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5cbd4fea-aa4c-4132-b6a5-600477bbe9aa",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo Welt!\n",
"Hallo Welt!\n"
]
}
],
"source": [
"function hallo() {\n",
" console.log(\"Hallo Welt!\");\n",
"}\n",
"\n",
"hallo(); // Aufruf der Funktion\n",
"hallo(); // zweiter Aufruf"
]
},
{
"cell_type": "markdown",
"id": "8199e2d4-a3ec-4c9e-9c33-f0562de760d8",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Rückgabe\n",
"Eine Funktion kann nicht nur dafür verwendet werden, bestimmte Befehlsabfolgen auszuführen, sie kann auch ein Ergebnis zurückliefern. Dieses Ergebnis kann anschließend z.B. in einer Variablen gespeichert und weiterverwendet werden.\n",
"\n",
"Bei einer Funktion mit Rückgabe sollte der Rückgabe-Datentyp bei der Funktionsdefinition mit angegeben werden.\n",
"\n",
"Das Schlüsselwort `return` gibt den nachfolgenden Wert zurück und bricht gleichzeitig auch die Funktion ab!"
]
},
{
"cell_type": "markdown",
"id": "c3014407-d02c-41c7-bfe6-30177d95d71b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel 2: Funktion mit Rückgabewert\n",
"Hier wird die Funktion `hallo` definiert, die einen `string` zurückgibt.\n",
"\n",
"Mit `return \"Hallo Welt!\";` wird dann dieser String zurückgegeben."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7ea0e464-e3b7-43fb-807b-90f8232d4feb",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo Welt!\n"
]
}
],
"source": [
"function hallo(): string {\n",
" return \"Hallo Welt!\"; // hier wird \"Hallo Welt!\" zurückgegeben und die Funktion abgebrochen\n",
"\n",
" console.log(\"Keine Ausgabe\"); // diese Ausgabe findet nie statt, da zuvor bereits mit `return` abgebrochen wird\n",
"}\n",
"\n",
"let s: string = hallo(); // Funktion `hallo` wird aufgerufen und das Ergebnis in der Variablen s gespeichert\n",
"console.log(s); // Inhalt der Variablen `s` ausgeben"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,288 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fbccfbc-2e07-4214-a665-4b13afb2723e",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\";"
]
},
{
"cell_type": "markdown",
"id": "86eb640a-2c5b-4498-90d7-774984742f45",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.1\n",
"Definiere eine Funktion `hallo`, die `'Hallo Welt!'` zurückgibt."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "90e1aef5-ac02-45a6-9f98-3c812ed506f0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a6e2ef7a-6785-44b4-be55-55ef733320bd",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.1: hallo ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.02.1: hallo \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: hallo is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.02.1: hallo \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 1 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.02.1: hallo\", () => {\n",
" assertEquals(typeof hallo, 'function')\n",
"})\n",
"Deno.test(\"01.02.1: hallo\", () => {\n",
" assertEquals(hallo(), 'Hallo Welt!')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "7b17b7b9-9337-43f9-904b-3d8e11d1d9c3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.2\n",
"Definiere zwei Funktionen. Die erste Funktion `a` soll `'Hallo a!'` zurückgeben. Die zweite Funktion `b` soll `'Hallo b!'` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "89bda355-b2d5-4e47-9c7e-e711a5663f72",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f084bd1d-cd11-49f7-a0aa-ee33fd7886d3",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.2: a ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.2: b ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.02.2: a \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: a is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.2: b \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: b is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.02.2: a \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.02.2: b \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 2 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.02.2: a\", () => {\n",
" assertEquals(typeof a, 'function')\n",
"})\n",
"Deno.test(\"01.02.2: b\", () => {\n",
" assertEquals(typeof b, 'function')\n",
"})\n",
"Deno.test(\"01.02.2: a\", () => {\n",
" assertEquals(a(), 'Hallo a!')\n",
"})\n",
"Deno.test(\"01.02.2: b\", () => {\n",
" assertEquals(b(), 'Hallo b!')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "302df880-f486-4cd5-b0e4-987a122d2b17",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.3\n",
"1. Definiere eine Funktion `begruesse`, die den Wert `'Moin!'` zurückgibt.\n",
"2. Deklariere eine Variable `begruessung`. Rufe die Funktion `begruesse` auf und weise der Variablen `begruessung` die Rückgabe dieses Aufrufs zu."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "956109e0-0e4a-416b-94a3-4a6f6c88caf9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d013cd3d-eb31-4a4f-a679-990fb77243c7",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.3: begruesse ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.3: begruessung ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.02.3: begruesse \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: begruesse is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.3: begruessung \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: begruessung is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.02.3: begruesse \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.02.3: begruessung \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 2 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.02.3: begruesse\", () => {\n",
" assertEquals(typeof begruesse, 'function')\n",
"})\n",
"Deno.test(\"01.02.3: begruesse\", () => {\n",
" assertEquals(begruesse(), 'Moin!')\n",
"})\n",
"Deno.test(\"01.02.3: begruessung\", () => {\n",
" assertEquals(typeof begruessung, 'string')\n",
"})\n",
"Deno.test(\"01.02.3: begruessung\", () => {\n",
" assertEquals(begruessung, 'Moin!')\n",
"})"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,162 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "7871315d-8e48-467f-b664-6666282b0122",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Parameter\n",
"Eine Funktion kann auch einen oder mehrere Parameter entgegennehmen. Diese stehen bei der Definition als Variablen in der Klammer, beim Aufruf werden die Werte ebenfalls in der Klammer mit übergeben."
]
},
{
"cell_type": "markdown",
"id": "a05503b8-9275-4a9b-8362-610689c2c8fa",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel 3: Funktion mit Parameter\n",
"Hier wird eine Funktion `quadrat` definiert, die einen Parameter vom Typ `number` entgegennimmt."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "5234f737-4fbd-42ca-8481-81f878cc65d3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25\n",
"49\n"
]
}
],
"source": [
"function quadrat(a: number) {\n",
" console.log( a * a );\n",
"}\n",
"\n",
"quadrat(5); // Ausgabe: 25\n",
"quadrat(7); // Ausgabe: 49"
]
},
{
"cell_type": "markdown",
"id": "1be106e1-3fe0-48fe-98c3-7e031e7beb57",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Beispiel 4: Funktion mit mehreren Parametern und Rückgabe\n",
"Wir definieren hier eine Funktion `sum`, die zwei Parameter (jeweils vom Typ `number`) entgegennimmt und ebenfalls einen Wert vom Typ `number` zurückgibt.\n",
"\n",
"Als Test wird die Funktion mit den beiden Werten 45 und 17 aufgerufen und das Ergebnis in `a` gespeichert. Achtung: die Variable `a` hat nichts mit dem Parameter `a` zu tun und ist völlig unabhängig von diesem!\n",
"\n",
"Außerdem kann man auch das Ergebnis einer Funktion direkt als Wert für einen Parameter einer weiteren Funktion (hier `console.log`) verwenden."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "fcdea9e8-640f-47e5-8f39-ba64d62107b4",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"62\n",
"13\n"
]
}
],
"source": [
"function sum(a: number, b: number): number {\n",
" return a + b;\n",
"}\n",
"\n",
"let a: number = sum(45, 17);\n",
"console.log(a); // Ausgabe: 62\n",
"console.log( sum(5, 8) ); // Ausgabe: 13"
]
},
{
"cell_type": "markdown",
"id": "22568774-001a-4ae5-ba93-032a4d278cd6",
"metadata": {
"editable": false,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Anmerkung\n",
"Auch `console.log` ist eine Funktion, die auch mehrere Parameter (unterschiedlichen Typs) entgegennehmen kann und alle Parameterwerte nacheinander ausgibt."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "596221c0-294c-4db6-ba7f-1176fc4c0560",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,272 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "13e0b4fc-3ea3-4fc8-9293-7d9f58eb82fb",
"metadata": {
"editable": true,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\""
]
},
{
"cell_type": "markdown",
"id": "12998cb3-fe6b-4be9-83de-4d725210c5b1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.4\n",
"Schreibe eine Funktion `echo`, die ebenfalls den übergebenen Parameter wieder zurückgibt."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3bc621d3-8101-4588-9a9a-73480f296a5d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 2,
"id": "288a67d3-1aab-4f24-ac41-ab24c2d098eb",
"metadata": {
"collapsed": true,
"editable": true,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.4: echo ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(2ms)\u001b[0m\n",
"01.02.4: Parameter ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.4: Greta ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.4: CO2 ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.02.4: echo \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: AssertionError: Values are not equal.\n",
"\n",
"\n",
" \u001b[90m\u001b[1m[Diff]\u001b[22m\u001b[39m \u001b[31m\u001b[1mActual\u001b[22m\u001b[39m / \u001b[32m\u001b[1mExpected\u001b[22m\u001b[39m\n",
"\n",
"\n",
"\u001b[31m\u001b[1m- \u001b[41m\u001b[37mundefined\u001b[31m\u001b[49m\n",
"\u001b[22m\u001b[39m\u001b[32m\u001b[1m+ \u001b[42m\u001b[37mfunction\u001b[32m\u001b[49m\n",
"\u001b[22m\u001b[39m\n",
"\n",
" throw new AssertionError(message);\n",
"\u001b[0m\u001b[31m ^\u001b[0m\n",
" at \u001b[0m\u001b[1m\u001b[3massertEquals\u001b[0m (\u001b[0m\u001b[36mhttps://jsr.io/@std/assert/1.0.13/equals.ts\u001b[0m:\u001b[0m\u001b[33m64\u001b[0m:\u001b[0m\u001b[33m9\u001b[0m)\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.4: Parameter \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: echo is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"01.02.4: Greta \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: echo is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m8\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.4: CO2 \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: echo is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m11\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.02.4: echo \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.02.4: Parameter \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"01.02.4: Greta \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"01.02.4: CO2 \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 4 failed \u001b[0m\u001b[38;5;245m(3ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.02.4: echo\", () => {\n",
" assertEquals(typeof echo, 'function')\n",
"})\n",
"Deno.test(\"01.02.4: Parameter\", () => {\n",
" assertEquals(echo.length, 1)\n",
"})\n",
"Deno.test(\"01.02.4: Greta\", () => {\n",
" assertEquals(echo('Greta'), 'Greta')\n",
"})\n",
"Deno.test(\"01.02.4: CO2\", () => {\n",
" assertEquals(echo('CO2'), 'CO2')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "f80f8e2f-f8e0-48d4-9ffb-21a17b14b473",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.5\n",
"Schreibe eine Funktion `welcome`, die einen Parameter entgegennimmt und die `'Hallo <Parameter>!'` zurückgibt.\n",
"\n",
"Beispiel: Übergibt man der Funktion `welcome` den Wert `'Ada'`, so sollte die Funktion `'Hallo Ada!'` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8fd18a65-713b-48af-a6ad-ade656a3f7dd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 3,
"id": "21b1f649-6e1f-4c1a-a8f3-f3653dd4eb89",
"metadata": {
"editable": true,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.5: welcome ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.5: Parameter ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.5: Ada ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.5: Marianne ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(16ms)\u001b[0m\n",
"01.02.5: Mitchell ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.02.5: welcome \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: AssertionError: Values are not equal.\n",
"\n",
"\n",
" \u001b[90m\u001b[1m[Diff]\u001b[22m\u001b[39m \u001b[31m\u001b[1mActual\u001b[22m\u001b[39m / \u001b[32m\u001b[1mExpected\u001b[22m\u001b[39m\n",
"\n",
"\n",
"\u001b[31m\u001b[1m- \u001b[41m\u001b[37mundefined\u001b[31m\u001b[49m\n",
"\u001b[22m\u001b[39m\u001b[32m\u001b[1m+ \u001b[42m\u001b[37mfunction\u001b[32m\u001b[49m\n",
"\u001b[22m\u001b[39m\n",
"\n",
" throw new AssertionError(message);\n",
"\u001b[0m\u001b[31m ^\u001b[0m\n",
" at \u001b[0m\u001b[1m\u001b[3massertEquals\u001b[0m (\u001b[0m\u001b[36mhttps://jsr.io/@std/assert/1.0.13/equals.ts\u001b[0m:\u001b[0m\u001b[33m64\u001b[0m:\u001b[0m\u001b[33m9\u001b[0m)\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.5: Parameter \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: welcome is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m\n",
"\n",
"01.02.5: Ada \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: welcome is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m8\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.5: Marianne \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: welcome is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m11\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.02.5: Mitchell \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: welcome is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m14\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.02.5: welcome \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.02.5: Parameter \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"01.02.5: Ada \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"01.02.5: Marianne \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"01.02.5: Mitchell \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 5 failed \u001b[0m\u001b[38;5;245m(18ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.02.5: welcome\", () => {\n",
" assertEquals(typeof welcome, 'function')\n",
"})\n",
"Deno.test(\"01.02.5: Parameter\", () => {\n",
" assertEquals(welcome.length, 1)\n",
"})\n",
"Deno.test(\"01.02.5: Ada\", () => {\n",
" assertEquals(welcome('Ada'), 'Hallo Ada!')\n",
"})\n",
"Deno.test(\"01.02.5: Marianne\", () => {\n",
" assertEquals(welcome('Marianne'), 'Hallo Marianne!')\n",
"})\n",
"Deno.test(\"01.02.5: Mitchell\", () => {\n",
" assertEquals(welcome('Mitchell'), 'Hallo Mitchell!')\n",
"})"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,160 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "f005ac12-f7b6-44ed-99bd-def52028b315",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Wahrheitswerte\n",
"Der dritte wichtige Datentyp neben `string` und `number` sind Wahrheitswerte. Sie werden auch boolesche Werte genannt. Boolesche Werte kennen nur zwei Zustände: `true` und `false`.\n",
"\n",
"Mit booleschen Werten kann man ähnlich \"rechnen\" wie mit Zahlen. JavaScript kennt drei boolesche Operatoren:\n",
"* `&&` (und)\n",
" * `&&` verknüpft zwei boolesche Werte. Sind beide Werte `true`, ist das Ergebnis auch `true`. In allen anderen Fällen ist es `false`.\n",
"* `||` (oder)\n",
" * Bei `||` ist das Ergebnis `false`, wenn beide Eingangswerte auch `false` sind. In allen anderen Fällen ist das Ergebnis `true`.\n",
"* `!` (nicht)\n",
" * `!` wird nur auf einen booleschen Wert angewendet und invertiert diesen Wert: aus `true` wird `false` und aus `false` wird `true`.\n",
" \n",
"```\n",
"let x1 = true && false;\n",
"let x2 = !x1;\n",
"let x3 = x1 || x2;\n",
"```\n",
"\n",
"* `x1` ist `false`\n",
"* `x2` ist `true`\n",
"* `x3` ist `true`\n",
"\n",
"*Anmerkung: `x1`, `x2` und `x3` sind damit automatisch vom Datentyp `boolean`, ohne dass dies explizit angegeben werden muss.*"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "8c60bf4a-7f20-46d3-be56-96228d5dd0c6",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"false\n",
"false\n",
"true\n"
]
}
],
"source": [
"console.log( true && false ); // Ausgabe: false\n",
"console.log( !true ); // Ausgabe: false\n",
"console.log( true || false ); // Ausgabe: true"
]
},
{
"cell_type": "markdown",
"id": "d8a82694-693a-44a3-9c0d-383531b19036",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Vergleiche\n",
"Zahlen kann man mit den aus der Mathematik bekannten Zeichen `>`, `>=`, `<` und `<=` auf größer, größer gleich, kleiner und kleiner gleich vergleichen. Im folgenden Beispiel liefern alle Ausdrücke den Wert `true`:\n",
"```\n",
"let v1 = 5 > 4;\n",
"let v2 = 5 >= 5;\n",
"let v3 = 5 < 6;\n",
"let v4 = 5 <= 5;\n",
"```\n",
"\n",
"Zwei Werte kann man auch auf strikte Gleichheit überprüfen. Das Ergebnis eines solchen Vergleichs ist entweder `true`, die beiden Werte sind gleich, oder `false`, die beiden Werte sind ungleich. Der Operator für strikte Gleichheit ist `===`.\n",
"\n",
"Im Gegensatz dazu gibt es auch den aus anderen Programmiersprachen bekannten Operator `==`. Dieser liefert ebenfalls `true` z.B. wenn die Datentypen unterschiedlich sind, jedoch der Inhalt gleich ist:\n",
"```\n",
"let v5 = 1 === 1; // liefert `true`\n",
"let v6 = 1 === '1'; // liefert `false`, da die Datentypen unterschiedlich sind\n",
"let v7 = 1 == '1'; // liefert `true`, da bei Typumwandlung der Inhalt gleich ist\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "972f23b8-0a4d-4b70-953a-883949688896",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"true\n",
"true\n",
"false\n",
"true\n"
]
}
],
"source": [
"console.log( 5 > 4 ) // Ausgabe: true\n",
"console.log( 5 >= 5 ) // Ausgabe: true\n",
"console.log( 1 === '1' ) // Ausgabe: false\n",
"console.log( 1 == '1' ) // Ausgabe: true"
]
},
{
"cell_type": "markdown",
"id": "bb9081df-6937-4709-b477-4c7fbbb6512c",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Regel für den Unterricht\n",
"**In aller Regel verwenden wir im Unterricht die strikte Gleichheit `===`**"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,400 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "0a476912-ee13-42d8-b705-b711433d149a",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\";"
]
},
{
"cell_type": "markdown",
"id": "d31a7ba1-13af-40a1-bb9d-4733096cc531",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.1\n",
"Schreibe eine Funktion `nand`, die zwei boolesche Werte als Parameter entgegennimmt. Die Rückgabe der Funktion soll `false` sein, wenn beide Paramter `true` sind. In den anderen Fällen soll die Rückgabe `true` sein.\n",
"\n",
"D.h.:\n",
"* `nand(true, true)` soll `false` liefern\n",
"* `nand(true, false)`, `nand(false, true)` und `nand(false, false)` sollen `true` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9a0582d4-9acb-4dd1-86c5-3b9d4d2bd4fb",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 1,
"id": "b0deac5e-d859-47d0-a220-80d4cdcb98d4",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.1: function ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(1,1) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(1,0) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(0,1) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(0,0) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.03.1: function \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.1: nand(1,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.1: nand(1,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m8\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.1: nand(0,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m11\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.1: nand(0,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m14\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.03.1: function \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.03.1: nand(1,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"01.03.1: nand(1,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"01.03.1: nand(0,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"01.03.1: nand(0,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 5 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.03.1: function\", () => {\n",
" assertEquals(typeof nand, 'function')\n",
"})\n",
"Deno.test(\"01.03.1: nand(1,1)\", () => {\n",
" assertEquals(nand(true, true), false)\n",
"})\n",
"Deno.test(\"01.03.1: nand(1,0)\", () => {\n",
" assertEquals(nand(true, false), true)\n",
"})\n",
"Deno.test(\"01.03.1: nand(0,1)\", () => {\n",
" assertEquals(nand(false, true), true)\n",
"})\n",
"Deno.test(\"01.03.1: nand(0,0)\", () => {\n",
" assertEquals(nand(false, false), true)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "57c3c062-b29e-40dc-add0-97b5c5a999c1",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.2\n",
"Schreibe eine Funktion `nor`, die zwei boolesche Werte als Parameter entgegennimmt. Die Rückgabe der Funktion soll genau dann `true` sein, wenn beide Paramter `false` sind. In den anderen Fällen soll die Rückgabe `false` sein.\n",
"\n",
"D.h.:\n",
"* `nor(false, false)` soll `true` liefern\n",
"* `nor(false, true)`, `nor(true, false)` und `nor(true, true)` sollen `false` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7e1929b1-033a-4b9c-ba66-f67d2b0dab89",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 2,
"id": "82ff9541-bb28-4520-9c93-57185f3ea9bf",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.2: function ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(1,1) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(1,0) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(0,1) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(0,0) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.03.2: function \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.2: nor(1,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.2: nor(1,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m8\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.2: nor(0,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m11\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.2: nor(0,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m14\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.03.2: function \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.03.2: nor(1,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"01.03.2: nor(1,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"01.03.2: nor(0,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"01.03.2: nor(0,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 5 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.03.2: function\", () => {\n",
" assertEquals(typeof nor, 'function')\n",
"})\n",
"Deno.test(\"01.03.2: nor(1,1)\", () => {\n",
" assertEquals(nor(true, true), false)\n",
"})\n",
"Deno.test(\"01.03.2: nor(1,0)\", () => {\n",
" assertEquals(nor(true, false), false)\n",
"})\n",
"Deno.test(\"01.03.2: nor(0,1)\", () => {\n",
" assertEquals(nor(false, true), false)\n",
"})\n",
"Deno.test(\"01.03.2: nor(0,0)\", () => {\n",
" assertEquals(nor(false, false), true)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "340a44a5-5010-4b46-8c4c-2d7c459750eb",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.3\n",
"Schreibe eine Funktion `xor`, die zwei boolesche Werte als Parameter entgegennimmt. Die Rückgabe der Funktion soll `true` sein, wenn beide Paramter verschieden sind. In den anderen Fällen soll die Rückgabe `false` sein.\n",
"\n",
"D.h.:\n",
"* `xor(true, false)` und `xor(false, true)` sollen `true` liefern\n",
"* `xor(true, true)` und `xor(false, false)` sollen `false` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c80d2fe9-4d8b-445a-8d1c-5803776b3d74",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "d76d78ff-6a02-42d4-93bc-eb9e19be39ce",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"Deno.test(\"01.03.3: function\", () => {\n",
" assertEquals(typeof xor, 'function')\n",
"})\n",
"Deno.test(\"01.03.3: xor(1,1)\", () => {\n",
" assertEquals(xor(true, true), false)\n",
"})\n",
"Deno.test(\"01.03.3: xor(1,0)\", () => {\n",
" assertEquals(xor(true, false), true)\n",
"})\n",
"Deno.test(\"01.03.3: xor(0,1)\", () => {\n",
" assertEquals(xor(false, true), true)\n",
"})\n",
"Deno.test(\"01.03.3: xor(0,0)\", () => {\n",
" assertEquals(xor(false, false), false)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "e15e95e4-89e5-4cea-be8f-d95ea68eb9a7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.4\n",
"Schreibe eine Funktion `gleich`, die zwei Werte auf strikte Gleichheit überprüft.\n",
"\n",
"Beispiel: `gleich(1, 1)` soll `true` und `gleich(1, 2)` soll `false` ergeben.\n",
"\n",
"*Hinweis: sollen bei einem Parameter unterschiedliche Datentypen übergeben werden können, so kann als Datentyp `any` genutzt werden!*"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a98dce86-57ee-41d7-bf1b-f8648430bee5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "1af5c359-2df3-49af-82a2-0d6cc8324746",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"Deno.test(\"01.03.4: function\", () => {\n",
" assertEquals(typeof gleich, 'function')\n",
"})\n",
"Deno.test(\"01.03.4: Parameter\", () => {\n",
" assertEquals(gleich.length, 2)\n",
"})\n",
"Deno.test(\"01.03.4: gleich(1,1)\", () => {\n",
" assertEquals(gleich(1, 1), true)\n",
"})\n",
"Deno.test(\"01.03.4: gleich(1,0)\", () => {\n",
" assertEquals(gleich(1, 0), false)\n",
"})\n",
"Deno.test(\"01.03.4: gleich(1,'1')\", () => {\n",
" assertEquals(gleich(1, '1'), false)\n",
"})\n",
"Deno.test(\"01.03.4: gleich(1,2)\", () => {\n",
" assertEquals(gleich(1, 2), false)\n",
"})\n",
"Deno.test(\"01.03.4: gleich('klein','klein')\", () => {\n",
" assertEquals(gleich('klein', 'klein'), false)\n",
"})\n",
"Deno.test(\"01.03.4: gleich('Links','Rechts')\", () => {\n",
" assertEquals(gleich('Links', 'Rechts'), false)\n",
"})\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,73 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "076931c8-a182-4790-a031-9759dc063e0a",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Bedingungen\n",
"Häufig soll Code nur dann ausgeführt werden, wenn eine bestimmte Bedingung erfüllt ist. Dazu verwendet man die `if`-Anweisung.\n",
"```\n",
"let gewinn = 0;\n",
"if (wuerfelzahl === 6) {\n",
" gewinn = 100;\n",
"}\n",
"```\n",
"Diese Anweisung besteht aus dem Schlüsselwort `if` (engl: wenn) gefolgt von runden Klammern. In den runden Klammern steht die Bedingung. Ergibt die Bedingung `true`, werden alle Anweisungen in dem durch die geschweiften Klammern begrenzten Block ausgeführt. Ergibt die Bedingung `false`, wird der durch die geschweiften Klammern begrenzte Block übersprungen. Hat in unserem Beispiel die Variable `wuerfelzahl` den Wert 6, so wird `gewinn` auf 100 gesetzt. Hat `wuerfelzahl` nicht den Wert 6, bleibt gewinn bei 0."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "80a31a45-95ee-4375-8b26-ec8f2e0f87d3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n"
]
}
],
"source": [
"let wuerfelzahl = Math.round(Math.random()*5.49) + 1; // generiere Zufallszahl zwischen 1 und 6\n",
"console.log(wuerfelzahl); // Ausgabe der Würfelzahl\n",
"\n",
"if (wuerfelzahl === 6) {\n",
" console.log(\"Gewonnen!\");\n",
"}"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,160 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "f005ac12-f7b6-44ed-99bd-def52028b315",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Wahrheitswerte\n",
"Der dritte wichtige Datentyp neben `string` und `number` sind Wahrheitswerte. Sie werden auch boolesche Werte genannt. Boolesche Werte kennen nur zwei Zustände: `true` und `false`.\n",
"\n",
"Mit booleschen Werten kann man ähnlich \"rechnen\" wie mit Zahlen. JavaScript kennt drei boolesche Operatoren:\n",
"* `&&` (und)\n",
" * `&&` verknüpft zwei boolesche Werte. Sind beide Werte `true`, ist das Ergebnis auch `true`. In allen anderen Fällen ist es `false`.\n",
"* `||` (oder)\n",
" * Bei `||` ist das Ergebnis `false`, wenn beide Eingangswerte auch `false` sind. In allen anderen Fällen ist das Ergebnis `true`.\n",
"* `!` (nicht)\n",
" * `!` wird nur auf einen booleschen Wert angewendet und invertiert diesen Wert: aus `true` wird `false` und aus `false` wird `true`.\n",
" \n",
"```\n",
"let x1 = true && false;\n",
"let x2 = !x1;\n",
"let x3 = x1 || x2;\n",
"```\n",
"\n",
"* `x1` ist `false`\n",
"* `x2` ist `true`\n",
"* `x3` ist `true`\n",
"\n",
"*Anmerkung: `x1`, `x2` und `x3` sind damit automatisch vom Datentyp `boolean`, ohne dass dies explizit angegeben werden muss.*"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "8c60bf4a-7f20-46d3-be56-96228d5dd0c6",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"false\n",
"false\n",
"true\n"
]
}
],
"source": [
"console.log( true && false ); // Ausgabe: false\n",
"console.log( !true ); // Ausgabe: false\n",
"console.log( true || false ); // Ausgabe: true"
]
},
{
"cell_type": "markdown",
"id": "d8a82694-693a-44a3-9c0d-383531b19036",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Vergleiche\n",
"Zahlen kann man mit den aus der Mathematik bekannten Zeichen `>`, `>=`, `<` und `<=` auf größer, größer gleich, kleiner und kleiner gleich vergleichen. Im folgenden Beispiel liefern alle Ausdrücke den Wert `true`:\n",
"```\n",
"let v1 = 5 > 4;\n",
"let v2 = 5 >= 5;\n",
"let v3 = 5 < 6;\n",
"let v4 = 5 <= 5;\n",
"```\n",
"\n",
"Zwei Werte kann man auch auf strikte Gleichheit überprüfen. Das Ergebnis eines solchen Vergleichs ist entweder `true`, die beiden Werte sind gleich, oder `false`, die beiden Werte sind ungleich. Der Operator für strikte Gleichheit ist `===`.\n",
"\n",
"Im Gegensatz dazu gibt es auch den aus anderen Programmiersprachen bekannten Operator `==`. Dieser liefert ebenfalls `true` z.B. wenn die Datentypen unterschiedlich sind, jedoch der Inhalt gleich ist:\n",
"```\n",
"let v5 = 1 === 1; // liefert `true`\n",
"let v6 = 1 === '1'; // liefert `false`, da die Datentypen unterschiedlich sind\n",
"let v7 = 1 == '1'; // liefert `true`, da bei Typumwandlung der Inhalt gleich ist\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "972f23b8-0a4d-4b70-953a-883949688896",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"true\n",
"true\n",
"false\n",
"true\n"
]
}
],
"source": [
"console.log( 5 > 4 ) // Ausgabe: true\n",
"console.log( 5 >= 5 ) // Ausgabe: true\n",
"console.log( 1 === '1' ) // Ausgabe: false\n",
"console.log( 1 == '1' ) // Ausgabe: true"
]
},
{
"cell_type": "markdown",
"id": "bb9081df-6937-4709-b477-4c7fbbb6512c",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Regel für den Unterricht\n",
"**In aller Regel verwenden wir im Unterricht die strikte Gleichheit `===`**"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,396 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "0a476912-ee13-42d8-b705-b711433d149a",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\";"
]
},
{
"cell_type": "markdown",
"id": "d31a7ba1-13af-40a1-bb9d-4733096cc531",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.1\n",
"Schreibe eine Funktion `nand`, die zwei boolesche Werte als Parameter entgegennimmt. Die Rückgabe der Funktion soll `false` sein, wenn beide Paramter `true` sind. In den anderen Fällen soll die Rückgabe `true` sein.\n",
"\n",
"D.h.:\n",
"* `nand(true, true)` soll `false` liefern\n",
"* `nand(true, false)`, `nand(false, true)` und `nand(false, false)` sollen `true` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9a0582d4-9acb-4dd1-86c5-3b9d4d2bd4fb",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 1,
"id": "b0deac5e-d859-47d0-a220-80d4cdcb98d4",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.1: function ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(1,1) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(1,0) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(0,1) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(0,0) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.03.1: function \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.1: nand(1,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.1: nand(1,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m8\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.1: nand(0,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m11\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.1: nand(0,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m14\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.03.1: function \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.03.1: nand(1,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"01.03.1: nand(1,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"01.03.1: nand(0,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"01.03.1: nand(0,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 5 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.03.1: function\", () => {\n",
" assertEquals(typeof nand, 'function')\n",
"})\n",
"Deno.test(\"01.03.1: nand(1,1)\", () => {\n",
" assertEquals(nand(true, true), false)\n",
"})\n",
"Deno.test(\"01.03.1: nand(1,0)\", () => {\n",
" assertEquals(nand(true, false), true)\n",
"})\n",
"Deno.test(\"01.03.1: nand(0,1)\", () => {\n",
" assertEquals(nand(false, true), true)\n",
"})\n",
"Deno.test(\"01.03.1: nand(0,0)\", () => {\n",
" assertEquals(nand(false, false), true)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "57c3c062-b29e-40dc-add0-97b5c5a999c1",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.2\n",
"Schreibe eine Funktion `nor`, die zwei boolesche Werte als Parameter entgegennimmt. Die Rückgabe der Funktion soll genau dann `true` sein, wenn beide Paramter `false` sind. In den anderen Fällen soll die Rückgabe `false` sein.\n",
"\n",
"D.h.:\n",
"* `nor(false, false)` soll `true` liefern\n",
"* `nor(false, true)`, `nor(true, false)` und `nor(true, true)` sollen `false` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7e1929b1-033a-4b9c-ba66-f67d2b0dab89",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 2,
"id": "82ff9541-bb28-4520-9c93-57185f3ea9bf",
"metadata": {
"collapsed": true,
"editable": false,
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.2: function ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(1,1) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(1,0) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(0,1) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(0,0) ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n",
"\n",
"01.03.2: function \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m2\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.2: nor(1,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m5\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.2: nor(1,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m8\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.2: nor(0,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m11\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"01.03.2: nor(0,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: ReferenceError: assertEquals is not defined\n",
" at \u001b[0m\u001b[36m<anonymous>\u001b[0m:\u001b[0m\u001b[33m14\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n",
"\n",
"\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n",
"\n",
"01.03.2: function \u001b[0m\u001b[38;5;245m=> <anonymous>:1:27\u001b[0m\n",
"01.03.2: nor(1,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:4:6\u001b[0m\n",
"01.03.2: nor(1,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:7:6\u001b[0m\n",
"01.03.2: nor(0,1) \u001b[0m\u001b[38;5;245m=> <anonymous>:10:6\u001b[0m\n",
"01.03.2: nor(0,0) \u001b[0m\u001b[38;5;245m=> <anonymous>:13:6\u001b[0m\n",
"\n",
"\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 5 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.03.2: function\", () => {\n",
" assertEquals(typeof nor, 'function')\n",
"})\n",
"Deno.test(\"01.03.2: nor(1,1)\", () => {\n",
" assertEquals(nor(true, true), false)\n",
"})\n",
"Deno.test(\"01.03.2: nor(1,0)\", () => {\n",
" assertEquals(nor(true, false), false)\n",
"})\n",
"Deno.test(\"01.03.2: nor(0,1)\", () => {\n",
" assertEquals(nor(false, true), false)\n",
"})\n",
"Deno.test(\"01.03.2: nor(0,0)\", () => {\n",
" assertEquals(nor(false, false), true)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "340a44a5-5010-4b46-8c4c-2d7c459750eb",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.3\n",
"Schreibe eine Funktion `xor`, die zwei boolesche Werte als Parameter entgegennimmt. Die Rückgabe der Funktion soll `true` sein, wenn beide Paramter verschieden sind. In den anderen Fällen soll die Rückgabe `false` sein.\n",
"\n",
"D.h.:\n",
"* `xor(true, false)` und `xor(false, true)` sollen `true` liefern\n",
"* `xor(true, true)` und `xor(false, false)` sollen `false` zurückgeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c80d2fe9-4d8b-445a-8d1c-5803776b3d74",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "d76d78ff-6a02-42d4-93bc-eb9e19be39ce",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"Deno.test(\"01.03.3: function\", () => {\n",
" assertEquals(typeof xor, 'function')\n",
"})\n",
"Deno.test(\"01.03.3: xor(1,1)\", () => {\n",
" assertEquals(xor(true, true), false)\n",
"})\n",
"Deno.test(\"01.03.3: xor(1,0)\", () => {\n",
" assertEquals(xor(true, false), true)\n",
"})\n",
"Deno.test(\"01.03.3: xor(0,1)\", () => {\n",
" assertEquals(xor(false, true), true)\n",
"})\n",
"Deno.test(\"01.03.3: xor(0,0)\", () => {\n",
" assertEquals(xor(false, false), false)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "e15e95e4-89e5-4cea-be8f-d95ea68eb9a7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.4\n",
"Schreibe eine Funktion `gleich`, die zwei Werte auf strikte Gleichheit überprüft.\n",
"\n",
"Beispiel: `gleich(1, 1)` soll `true` und `gleich(1, 2)` soll `false` ergeben.\n",
"\n",
"*Hinweis: sollen bei einem Parameter unterschiedliche Datentypen übergeben werden können, so kann als Datentyp `any` genutzt werden!*"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a98dce86-57ee-41d7-bf1b-f8648430bee5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "1af5c359-2df3-49af-82a2-0d6cc8324746",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"Deno.test(\"01.03.4: function\", () => {\n",
" assertEquals(typeof gleich, 'function')\n",
"})\n",
"Deno.test(\"01.03.4: Parameter\", () => {\n",
" assertEquals(gleich.length, 2)\n",
"})\n",
"Deno.test(\"01.03.4: gleich(1,1)\", () => {\n",
" assertEquals(gleich(1, 1), true)\n",
"})\n",
"Deno.test(\"01.03.4: gleich(1,0)\", () => {\n",
" assertEquals(gleich(1, 0), false)\n",
"})\n",
"Deno.test(\"01.03.4: gleich(1,'1')\", () => {\n",
" assertEquals(gleich(1, '1'), false)\n",
"})\n",
"Deno.test(\"01.03.4: gleich(1,2)\", () => {\n",
" assertEquals(gleich(1, 2), false)\n",
"})\n",
"Deno.test(\"01.03.4: gleich('klein','klein')\", () => {\n",
" assertEquals(gleich('klein', 'klein'), false)\n",
"})\n",
"Deno.test(\"01.03.4: gleich('Links','Rechts')\", () => {\n",
" assertEquals(gleich('Links', 'Rechts'), false)\n",
"})\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,129 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "076931c8-a182-4790-a031-9759dc063e0a",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Bedingungen\n",
"Häufig soll Code nur dann ausgeführt werden, wenn eine bestimmte Bedingung erfüllt ist. Dazu verwendet man die `if`-Anweisung.\n",
"```\n",
"let gewinn = 0;\n",
"if (wuerfelzahl === 6) {\n",
" gewinn = 100;\n",
"}\n",
"```\n",
"Diese Anweisung besteht aus dem Schlüsselwort `if` (engl: wenn) gefolgt von runden Klammern. In den runden Klammern steht die Bedingung. Ergibt die Bedingung `true`, werden alle Anweisungen in dem durch die geschweiften Klammern begrenzten Block ausgeführt. Ergibt die Bedingung `false`, wird der durch die geschweiften Klammern begrenzte Block übersprungen. Hat in unserem Beispiel die Variable `wuerfelzahl` den Wert 6, so wird `gewinn` auf 100 gesetzt. Hat `wuerfelzahl` nicht den Wert 6, bleibt gewinn bei 0."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "80a31a45-95ee-4375-8b26-ec8f2e0f87d3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"6\n",
"Gewonnen!\n"
]
}
],
"source": [
"let wuerfelzahl = Math.round(Math.random()*5.49) + 1; // generiere Zufallszahl zwischen 1 und 6\n",
"console.log(wuerfelzahl); // Ausgabe der Würfelzahl\n",
"\n",
"if (wuerfelzahl === 6) {\n",
" console.log(\"Gewonnen!\");\n",
"}"
]
},
{
"cell_type": "markdown",
"id": "9d07e555-9477-4459-8f64-bb34293070a9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## `if ... else`\n",
"Soll ein Codeblock nur dann ausgeführt werden, wenn eine `if`-Bedingung nicht erfüllt ist, verwendet man zusätzlich zum `if` ein `else` (engl.: sonst).\n",
"```\n",
"let mitteilung;\n",
"if (betrag > 1000) {\n",
" mitteilung = \"Keine Auszahlung möglich!\";\n",
"} else {\n",
" mitteilung = \"Der Betrag wird ausgezahlt!\";\n",
"}\n",
"```\n",
"Je nachdem, ob `betrag` größer oder kleiner 1000 ist, wird entweder der `if`-Zweig oder der `else`-Zweig ausgeführt."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c7476e8b-1781-4d8a-8c10-5b58feb3b5a3",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.1452680265049231\n",
"abrunden!\n"
]
}
],
"source": [
"let betrag = Math.random(); // Zufallszah zwischen 0 und 1\n",
"console.log(betrag);\n",
"\n",
"if (betrag >= 0.5) {\n",
" console.log('aufrunden!');\n",
"} else {\n",
" console.log('abrunden!');\n",
"}"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,123 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "a474ad60-bfa2-4e43-9d97-88c553bfdc53",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\";"
]
},
{
"cell_type": "markdown",
"id": "a36a9ffd-a123-434a-9148-b8c7c75c30d4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.5\n",
"Schreibe eine Funktion `gleich`, die 2 Werte auf strikte Gleichheit überprüft. Sind die beiden Werte gleich, so soll der String `'GLEICH'` zurückgegeben werden. Sind sie ungleich, so soll man `'UNGLEICH'` erhalten."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f21bb2d9-d623-4083-a0ee-d4219678c93c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "b6985fdb-5098-40f9-a1e8-48a6d763cfb5",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"Deno.test(\"01.03.5: function\", () => {\n",
" assertEquals(typeof gleich, 'function')\n",
"})\n",
"Deno.test(\"01.03.5: Parameter\", () => {\n",
" assertEquals(gleich.length, 2)\n",
"})\n",
"Deno.test(\"01.03.5: gleich(1,1)\", () => {\n",
" assertEquals(gleich(1, 1), 'GLEICH')\n",
"})\n",
"Deno.test(\"01.03.5: gleich(1,0)\", () => {\n",
" assertEquals(gleich(1, 0), 'UNGLEICH')\n",
"})\n",
"Deno.test(\"01.03.5: gleich(1,'1')\", () => {\n",
" assertEquals(gleich(1, '1'), 'UNGLEICH')\n",
"})\n",
"Deno.test(\"01.03.5: gleich(1,2)\", () => {\n",
" assertEquals(gleich(1, 2), 'UNGLEICH')\n",
"})\n",
"Deno.test(\"01.03.5: gleich('klein','klein')\", () => {\n",
" assertEquals(gleich('klein', 'klein'), 'UNGLEICH')\n",
"})\n",
"Deno.test(\"01.03.5: gleich('Links','Rechts')\", () => {\n",
" assertEquals(gleich('Links', 'Rechts'), 'UNGLEICH')\n",
"})\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "58f0c4ee-8ef3-4682-8dd7-53a24afb85a6",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,413 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "da1f2271-09ca-4665-9c88-d0e19defb876",
"metadata": {},
"outputs": [],
"source": [
"import pl from \"npm:nodejs-polars\";\n",
"import { display } from \"https://deno.land/x/display@v0.1.1/mod.ts\";"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "20c60624-0371-463e-98cf-42bc77377f5f",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.dataresource+json": {
"data": [
{
"ActualExpenses": 216,
"ActualIncome": 255,
"BudgetExpenses": 217,
"BudgetIncome": 256,
"Consulting": 3,
"Date": "2022-03-22",
"DiffExpenses": 1,
"DiffIncome": 1,
"Equipment": 47,
"Expenses": 216,
"Hardware": 3,
"Income": 255,
"Marketing": 27,
"NetIncome": 39,
"Office Supplies": 3,
"R&D": 39,
"Rent": 41,
"Salaries": 20,
"Software": 3,
"Utilities": 30
},
{
"ActualExpenses": 225,
"ActualIncome": 317,
"BudgetExpenses": 226,
"BudgetIncome": 301,
"Consulting": 2,
"Date": "2022-01-24",
"DiffExpenses": 1,
"DiffIncome": -16,
"Equipment": 27,
"Expenses": 225,
"Hardware": 4,
"Income": 317,
"Marketing": 39,
"NetIncome": 92,
"Office Supplies": 3,
"R&D": 46,
"Rent": 34,
"Salaries": 32,
"Software": 4,
"Utilities": 34
},
{
"ActualExpenses": 239,
"ActualIncome": 287,
"BudgetExpenses": 237,
"BudgetIncome": 281,
"Consulting": 6,
"Date": "2022-07-17",
"DiffExpenses": -2,
"DiffIncome": -6,
"Equipment": 37,
"Expenses": 239,
"Hardware": 2,
"Income": 287,
"Marketing": 36,
"NetIncome": 48,
"Office Supplies": 5,
"R&D": 39,
"Rent": 46,
"Salaries": 38,
"Software": 6,
"Utilities": 24
},
{
"ActualExpenses": 227,
"ActualIncome": 264,
"BudgetExpenses": 229,
"BudgetIncome": 268,
"Consulting": 7,
"Date": "2022-03-06",
"DiffExpenses": 2,
"DiffIncome": 4,
"Equipment": 22,
"Expenses": 227,
"Hardware": 5,
"Income": 264,
"Marketing": 27,
"NetIncome": 37,
"Office Supplies": 2,
"R&D": 47,
"Rent": 32,
"Salaries": 45,
"Software": 3,
"Utilities": 37
},
{
"ActualExpenses": 212,
"ActualIncome": 276,
"BudgetExpenses": 206,
"BudgetIncome": 283,
"Consulting": 8,
"Date": "2022-03-18",
"DiffExpenses": -6,
"DiffIncome": 7,
"Equipment": 43,
"Expenses": 212,
"Hardware": 2,
"Income": 276,
"Marketing": 28,
"NetIncome": 64,
"Office Supplies": 2,
"R&D": 29,
"Rent": 27,
"Salaries": 29,
"Software": 2,
"Utilities": 42
},
{
"ActualExpenses": 259,
"ActualIncome": 294,
"BudgetExpenses": 257,
"BudgetIncome": 281,
"Consulting": 8,
"Date": "2022-06-10",
"DiffExpenses": -2,
"DiffIncome": -13,
"Equipment": 47,
"Expenses": 259,
"Hardware": 8,
"Income": 294,
"Marketing": 24,
"NetIncome": 35,
"Office Supplies": 6,
"R&D": 49,
"Rent": 48,
"Salaries": 40,
"Software": 4,
"Utilities": 25
},
{
"ActualExpenses": 216,
"ActualIncome": 317,
"BudgetExpenses": 210,
"BudgetIncome": 312,
"Consulting": 3,
"Date": "2022-02-04",
"DiffExpenses": -6,
"DiffIncome": -5,
"Equipment": 26,
"Expenses": 216,
"Hardware": 6,
"Income": 317,
"Marketing": 21,
"NetIncome": 101,
"Office Supplies": 6,
"R&D": 34,
"Rent": 27,
"Salaries": 44,
"Software": 7,
"Utilities": 42
},
{
"ActualExpenses": 213,
"ActualIncome": 233,
"BudgetExpenses": 212,
"BudgetIncome": 221,
"Consulting": 3,
"Date": "2022-06-13",
"DiffExpenses": -1,
"DiffIncome": -12,
"Equipment": 41,
"Expenses": 213,
"Hardware": 1,
"Income": 233,
"Marketing": 46,
"NetIncome": 20,
"Office Supplies": 1,
"R&D": 25,
"Rent": 44,
"Salaries": 20,
"Software": 9,
"Utilities": 23
},
{
"ActualExpenses": 242,
"ActualIncome": 305,
"BudgetExpenses": 240,
"BudgetIncome": 310,
"Consulting": 3,
"Date": "2022-03-11",
"DiffExpenses": -2,
"DiffIncome": 5,
"Equipment": 26,
"Expenses": 242,
"Hardware": 3,
"Income": 305,
"Marketing": 23,
"NetIncome": 63,
"Office Supplies": 9,
"R&D": 48,
"Rent": 34,
"Salaries": 39,
"Software": 8,
"Utilities": 49
},
{
"ActualExpenses": 205,
"ActualIncome": 248,
"BudgetExpenses": 199,
"BudgetIncome": 248,
"Consulting": 4,
"Date": "2022-01-28",
"DiffExpenses": -6,
"DiffIncome": 0,
"Equipment": 30,
"Expenses": 205,
"Hardware": 8,
"Income": 248,
"Marketing": 37,
"NetIncome": 43,
"Office Supplies": 5,
"R&D": 42,
"Rent": 25,
"Salaries": 26,
"Software": 4,
"Utilities": 24
}
],
"schema": {
"fields": [
{
"name": "Date",
"type": "string"
},
{
"name": "Income",
"type": "integer"
},
{
"name": "Expenses",
"type": "integer"
},
{
"name": "NetIncome",
"type": "integer"
},
{
"name": "BudgetIncome",
"type": "integer"
},
{
"name": "ActualIncome",
"type": "integer"
},
{
"name": "BudgetExpenses",
"type": "integer"
},
{
"name": "ActualExpenses",
"type": "integer"
},
{
"name": "Salaries",
"type": "integer"
},
{
"name": "R&D",
"type": "integer"
},
{
"name": "Marketing",
"type": "integer"
},
{
"name": "Utilities",
"type": "integer"
},
{
"name": "Rent",
"type": "integer"
},
{
"name": "Equipment",
"type": "integer"
},
{
"name": "Software",
"type": "integer"
},
{
"name": "Hardware",
"type": "integer"
},
{
"name": "Consulting",
"type": "integer"
},
{
"name": "Office Supplies",
"type": "integer"
},
{
"name": "DiffIncome",
"type": "integer"
},
{
"name": "DiffExpenses",
"type": "integer"
}
]
}
},
"text/html": [
"<table><thead><tr><th>Date</th><th>Income</th><th>Expenses</th><th>NetIncome</th><th>BudgetIncome</th><th>ActualIncome</th><th>BudgetExpenses</th><th>ActualExpenses</th><th>Salaries</th><th>R&amp;D</th><th>Marketing</th><th>Utilities</th><th>Rent</th><th>Equipment</th><th>Software</th><th>Hardware</th><th>Consulting</th><th>Office Supplies</th><th>DiffIncome</th><th>DiffExpenses</th></tr></thead><tbody><tr><td>2022-03-22</td><td>255</td><td>216</td><td>39</td><td>256</td><td>255</td><td>217</td><td>216</td><td>20</td><td>39</td><td>27</td><td>30</td><td>41</td><td>47</td><td>3</td><td>3</td><td>3</td><td>3</td><td>1</td><td>1</td></tr><tr><td>2022-01-24</td><td>317</td><td>225</td><td>92</td><td>301</td><td>317</td><td>226</td><td>225</td><td>32</td><td>46</td><td>39</td><td>34</td><td>34</td><td>27</td><td>4</td><td>4</td><td>2</td><td>3</td><td>-16</td><td>1</td></tr><tr><td>2022-07-17</td><td>287</td><td>239</td><td>48</td><td>281</td><td>287</td><td>237</td><td>239</td><td>38</td><td>39</td><td>36</td><td>24</td><td>46</td><td>37</td><td>6</td><td>2</td><td>6</td><td>5</td><td>-6</td><td>-2</td></tr><tr><td>2022-03-06</td><td>264</td><td>227</td><td>37</td><td>268</td><td>264</td><td>229</td><td>227</td><td>45</td><td>47</td><td>27</td><td>37</td><td>32</td><td>22</td><td>3</td><td>5</td><td>7</td><td>2</td><td>4</td><td>2</td></tr><tr><td>2022-03-18</td><td>276</td><td>212</td><td>64</td><td>283</td><td>276</td><td>206</td><td>212</td><td>29</td><td>29</td><td>28</td><td>42</td><td>27</td><td>43</td><td>2</td><td>2</td><td>8</td><td>2</td><td>7</td><td>-6</td></tr><tr><td>2022-06-10</td><td>294</td><td>259</td><td>35</td><td>281</td><td>294</td><td>257</td><td>259</td><td>40</td><td>49</td><td>24</td><td>25</td><td>48</td><td>47</td><td>4</td><td>8</td><td>8</td><td>6</td><td>-13</td><td>-2</td></tr><tr><td>2022-02-04</td><td>317</td><td>216</td><td>101</td><td>312</td><td>317</td><td>210</td><td>216</td><td>44</td><td>34</td><td>21</td><td>42</td><td>27</td><td>26</td><td>7</td><td>6</td><td>3</td><td>6</td><td>-5</td><td>-6</td></tr><tr><td>2022-06-13</td><td>233</td><td>213</td><td>20</td><td>221</td><td>233</td><td>212</td><td>213</td><td>20</td><td>25</td><td>46</td><td>23</td><td>44</td><td>41</td><td>9</td><td>1</td><td>3</td><td>1</td><td>-12</td><td>-1</td></tr><tr><td>2022-03-11</td><td>305</td><td>242</td><td>63</td><td>310</td><td>305</td><td>240</td><td>242</td><td>39</td><td>48</td><td>23</td><td>49</td><td>34</td><td>26</td><td>8</td><td>3</td><td>3</td><td>9</td><td>5</td><td>-2</td></tr><tr><td>2022-01-28</td><td>248</td><td>205</td><td>43</td><td>248</td><td>248</td><td>199</td><td>205</td><td>26</td><td>42</td><td>37</td><td>24</td><td>25</td><td>30</td><td>4</td><td>8</td><td>4</td><td>5</td><td>0</td><td>-6</td></tr></tbody></table>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let response = await fetch(\n",
" \"https://gist.githubusercontent.com/agustinustheo/195f32a4a6c68c493056c883d959ca35/raw/c7363d8b916ab00a2d1747adb89fca120da29f42/mock_financial_data.csv\",\n",
");\n",
"\n",
"let data = await response.text();\n",
"\n",
"let df = pl.readCSV(data, { sep: \",\" });\n",
"\n",
"await display(df.sample(10));"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "18396e24-7e98-40d8-8a2b-9ed9e2dd7e67",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1\n",
"2\n",
"3\n",
"4\n",
"5\n",
"6\n",
"7\n",
"8\n",
"9\n"
]
}
],
"source": [
"for (let i = 0; i < 10; i++) {\n",
" console.log(i)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c5fd29b9-3704-4b9f-b26a-00a09c43dd27",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}