Musterlösungen zu 01 Einführung

main
Alexander Kimmig 2025-12-03 09:20:22 +00:00
parent b35d699056
commit d30b596ab8
14 changed files with 4618 additions and 1 deletions

View File

@ -0,0 +1,172 @@
{
"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": {
"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": 2,
"id": "594735d3-e90e-443e-9eff-e4600c331bc2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"let vorname = 'Franz'"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "245aec76-71a6-478e-9301-08ca4e14ff71",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": [
"Test"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A1: vorname ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 1 passed | 0 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": 4,
"id": "7daea9ea-3417-48d9-9416-3462cc38f8bc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"let blume = 'Rose'\n",
"let tier = 'Käfer'"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "4f710df6-8465-4da1-a997-4e34ea80d6ed",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": [
"Test"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A2: blume ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"A2: tier ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 2 passed | 0 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,265 @@
{
"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": [
"function hallo() {\n",
" return 'Hallo Welt!'\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a6e2ef7a-6785-44b4-be55-55ef733320bd",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.1: hallo ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.1: hallo ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 2 passed | 0 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": 4,
"id": "89bda355-b2d5-4e47-9c7e-e711a5663f72",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function a() {\n",
" return 'Hallo a!'\n",
"}\n",
"\n",
"function b() {\n",
" return 'Hallo b!'\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "f084bd1d-cd11-49f7-a0aa-ee33fd7886d3",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.2: a ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.2: b ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.2: a ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.2: b ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 4 passed | 0 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": 6,
"id": "956109e0-0e4a-416b-94a3-4a6f6c88caf9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function begruesse() {\n",
" return 'Moin!'\n",
"}\n",
"\n",
"let begruessung = begruesse()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "d013cd3d-eb31-4a4f-a679-990fb77243c7",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.3: begruesse ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.3: begruesse ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.3: begruessung ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.3: begruessung ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 4 passed | 0 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,196 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "13e0b4fc-3ea3-4fc8-9293-7d9f58eb82fb",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\""
]
},
{
"cell_type": "markdown",
"id": "12998cb3-fe6b-4be9-83de-4d725210c5b1",
"metadata": {
"editable": false,
"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": 2,
"id": "3bc621d3-8101-4588-9a9a-73480f296a5d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function echo(param) {\n",
" return param\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "288a67d3-1aab-4f24-ac41-ab24c2d098eb",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.4: echo ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.4: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.4: Greta ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.4: CO2 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 4 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\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": false,
"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": 4,
"id": "8fd18a65-713b-48af-a6ad-ade656a3f7dd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function welcome(name) {\n",
" return 'Hallo ' + name + '!'\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "21b1f649-6e1f-4c1a-a8f3-f3653dd4eb89",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.02.5: welcome ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.5: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.5: Ada ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.5: Marianne ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.02.5: Mitchell ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 5 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\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,90 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "ab876578-aa1d-4a24-9534-f2b8d3e83bea",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.02.6\n",
"Lasse den Nutzer nacheinander zwei ganze Zahlen `a` und `b` eingeben und gib anschließend\n",
"* die Summe\n",
"* die Differenz\n",
"* das Produkt\n",
"* den Quotienten\n",
"aus.\n",
"\n",
"Mögliche Ausgabe:\n",
"\n",
"```\n",
"Erste Zahl eingeben: 12\n",
"Zweite Zahl eingeben: 3\n",
"Summe: 15\n",
"Differenz: 9\n",
"Produkt: 36\n",
"Quotient: 4\n",
"```\n",
"\n",
"*Hinweis: bei dieser Aufgabe gibt es keinen automatisierten Test auf Korrektheit!*"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b8e700ea-3053-4d6b-b905-d7c116b98f33",
"metadata": {},
"outputs": [
{
"name": "stdin",
"output_type": "stream",
"text": [
"Erste Zahl eingeben: 12\n",
"Zweite Zahl eingeben: 3\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Summe: 15\n",
"Differenz: 9\n",
"Produkt: 36\n",
"Quotient: 4\n"
]
}
],
"source": [
"let a = parseInt( prompt('Erste Zahl eingeben:') )\n",
"let b = parseInt( prompt('Zweite Zahl eingeben:') )\n",
"\n",
"console.log('Summe: ' + (a+b))\n",
"console.log('Differenz: ' + (a-b))\n",
"console.log('Produkt: ' + (a*b))\n",
"console.log('Quotient: ' + (a/b))"
]
}
],
"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,386 @@
{
"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": [
"function nand(a, b) {\n",
" return !(a && b)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b0deac5e-d859-47d0-a220-80d4cdcb98d4",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.1: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(1,1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(1,0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(0,1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.1: nand(0,0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 5 passed | 0 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": 4,
"id": "7e1929b1-033a-4b9c-ba66-f67d2b0dab89",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function nor(a, b) {\n",
" return !(a || b)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "82ff9541-bb28-4520-9c93-57185f3ea9bf",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.2: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(1,1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(1,0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(0,1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.2: nor(0,0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 5 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\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": 6,
"id": "c80d2fe9-4d8b-445a-8d1c-5803776b3d74",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function xor(a, b) {\n",
" return a !== b\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "d76d78ff-6a02-42d4-93bc-eb9e19be39ce",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.3: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.3: xor(1,1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.3: xor(1,0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.3: xor(0,1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.3: xor(0,0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 5 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"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": false,
"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": 8,
"id": "a98dce86-57ee-41d7-bf1b-f8648430bee5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function gleich(a, b) {\n",
" return a === b\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "1af5c359-2df3-49af-82a2-0d6cc8324746",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.4: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.4: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.4: gleich(1,1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.4: gleich(1,0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.4: gleich(1,'1') ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.4: gleich(1,2) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.4: gleich('klein','klein') ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.4: gleich('Links','Rechts') ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 8 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"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'), true)\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,340 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a474ad60-bfa2-4e43-9d97-88c553bfdc53",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import { assertEquals } from \"jsr:@std/assert\";"
]
},
{
"cell_type": "markdown",
"id": "a36a9ffd-a123-434a-9148-b8c7c75c30d4",
"metadata": {
"editable": false,
"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": 2,
"id": "f21bb2d9-d623-4083-a0ee-d4219678c93c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function gleich(a, b) {\n",
" if (a === b) return 'GLEICH'\n",
" return 'UNGLEICH'\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b6985fdb-5098-40f9-a1e8-48a6d763cfb5",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.5: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.5: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.5: gleich(1,1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.5: gleich(1,0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.5: gleich(1,'1') ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.5: gleich(1,2) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.5: gleich('klein','klein') ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.5: gleich('Links','Rechts') ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 8 passed | 0 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"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'), 'GLEICH')\n",
"})\n",
"Deno.test(\"01.03.5: gleich('Links','Rechts')\", () => {\n",
" assertEquals(gleich('Links', 'Rechts'), 'UNGLEICH')\n",
"})\n"
]
},
{
"cell_type": "markdown",
"id": "dfe85401-6a4a-4da0-b9f9-bb0ea368698a",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Mathematischer Hintergrund: Modulo-Rechnung\n",
"Die Modulo-Rechnung kennt ihr bereits aus der Grundschule! Dort rechnet man die Division nur mit ganzen Zahlen, so gilt beispielsweise: **17 geteilt durch 5 ergibt 3 Rest 2**.\n",
"\n",
"Genau das ist in der Informatik die Modulo-Rechnung - sie ergibt genau den Rest einer ganzzahligen Division und wird mit einem `%` geschrieben. Somit gilt: `17 % 5 = 2`.\n",
"\n",
"Das kann man beispielweise nutzen, um Teilbarkeiten herauszufinden. So ist eine Zahl `z` genau dann durch `t` teilbar, wenn `z % t === 0` ergibt."
]
},
{
"cell_type": "markdown",
"id": "616cfd74-357f-457f-81a4-a94d7c71582b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.6\n",
"Programmiere eine Funktion `teilbarDurch7`, die einen ganzzahligen Parameter übernimmt und als Ergebnis einen `boolean`-Wert zurückgibt, der `true` ist, wenn eine durch 7 teilbare Zahl übergeben wurde und andernfalls `false`."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "de0fe960-c7e1-40b0-8ee8-f0cb91964889",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function teilbarDurch7(param) {\n",
" if (param % 7 === 0) return true\n",
" return false\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "4737d8de-51a5-4d5e-afc1-5d5a29700e00",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.6: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.6: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.6: teilbarDurch7(0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.6: teilbarDurch7(5) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.6: teilbarDurch7(7) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.6: teilbarDurch7(49) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.6: teilbarDurch7(71) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.6: teilbarDurch7(230580) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 8 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.03.6: function\", () => {\n",
" assertEquals(typeof teilbarDurch7, 'function')\n",
"})\n",
"Deno.test(\"01.03.6: Parameter\", () => {\n",
" assertEquals(teilbarDurch7.length, 1)\n",
"})\n",
"Deno.test(\"01.03.6: teilbarDurch7(0)\", () => {\n",
" assertEquals(teilbarDurch7(0), true)\n",
"})\n",
"Deno.test(\"01.03.6: teilbarDurch7(5)\", () => {\n",
" assertEquals(teilbarDurch7(5), false)\n",
"})\n",
"Deno.test(\"01.03.6: teilbarDurch7(7)\", () => {\n",
" assertEquals(teilbarDurch7(7), true)\n",
"})\n",
"Deno.test(\"01.03.6: teilbarDurch7(49)\", () => {\n",
" assertEquals(teilbarDurch7(49), true)\n",
"})\n",
"Deno.test(\"01.03.6: teilbarDurch7(71)\", () => {\n",
" assertEquals(teilbarDurch7(71), false)\n",
"})\n",
"Deno.test(\"01.03.6: teilbarDurch7(230580)\", () => {\n",
" assertEquals(teilbarDurch7(230580), true)\n",
"})\n"
]
},
{
"cell_type": "markdown",
"id": "340e8acf-97ee-4267-b92b-88d77ed15da0",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.03.7\n",
"Programmiere eine Funktion `istSchaltjahr`, die eine Jahreszahl als Parameter übernimmt und zurückgibt, ob dieses angegebene Jahr ein Schaltjahr ist.\n",
"\n",
"## Hinweis\n",
"Ein Jahr ist genau dann ein Schaltjahr, wenn die Jahreszahl...\n",
"* durch 4 teilbar ist...\n",
"* *außer* wenn sie durch 100 teilbar ist...\n",
"* *außer wiederum* wenn sie durch 400 teilbar ist."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "3d5a41a2-5f48-4375-aaae-a466a625598c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function istSchaltjahr(jahr) {\n",
" if (jahr % 400 === 0) return true\n",
" if (jahr % 100 === 0) return false\n",
" if (jahr % 4 === 0) return true\n",
" return false\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f8335a26-0e7a-477a-9b68-804e8161bfc7",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.03.7: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.7: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.7: istSchaltjahr(0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.7: istSchaltjahr(2024) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.7: istSchaltjahr(2025) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.7: istSchaltjahr(1900) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.03.7: istSchaltjahr(2000) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 7 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.03.7: function\", () => {\n",
" assertEquals(typeof istSchaltjahr, 'function')\n",
"})\n",
"Deno.test(\"01.03.7: Parameter\", () => {\n",
" assertEquals(istSchaltjahr.length, 1)\n",
"})\n",
"Deno.test(\"01.03.7: istSchaltjahr(0)\", () => {\n",
" assertEquals(istSchaltjahr(0), true)\n",
"})\n",
"Deno.test(\"01.03.7: istSchaltjahr(2024)\", () => {\n",
" assertEquals(istSchaltjahr(2024), true)\n",
"})\n",
"Deno.test(\"01.03.7: istSchaltjahr(2025)\", () => {\n",
" assertEquals(istSchaltjahr(2025), false)\n",
"})\n",
"Deno.test(\"01.03.7: istSchaltjahr(1900)\", () => {\n",
" assertEquals(istSchaltjahr(1900), false)\n",
"})\n",
"Deno.test(\"01.03.7: istSchaltjahr(2000)\", () => {\n",
" assertEquals(istSchaltjahr(2000), true)\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

@ -212,7 +212,7 @@
"outputs": [],
"source": [
"Deno.test(\"01.04.3: function\", () => {\n",
" assertEquals(typeof addiereBis, 'function')\n",
" assertEquals(typeof fakultaet, 'function')\n",
"})\n",
"Deno.test(\"01.04.3: Parameter\", () => {\n",
" assertEquals(fakultaet.length, 1)\n",

View File

@ -0,0 +1,380 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "86976bb8-a009-4ccf-8df3-69ac302459e9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[Module: null prototype] { }"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import { assertEquals } from \"jsr:@std/assert\"\n",
"import \"https://git.amgdhg.de/kg/tslib/raw/branch/main/logger.ts\""
]
},
{
"cell_type": "markdown",
"id": "0e2e4f01-d929-4182-9237-886ba70551f0",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.04.1\n",
"\n",
"Programmiere eine Methode `quadratzahlen` (ohne Parameter) und lasse darin mithilfe einer Schleife die Quadratzahlen von 1 bis 20 ausgeben. Das Ergebnis soll so aussehen:\n",
"\n",
"```\n",
"Die Quadratzahl von 1 ist 1\n",
"Die Quadratzahl von 2 ist 4\n",
"...\n",
"Die Quadratzahl von 20 ist 400\n",
"```\n",
"\n",
"#### Hinweis:\n",
"du kannst bei den kommenden Aufgaben auch die Funktion zum Testen in deiner Programmierung selbst aufrufen!"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4f755769-2d3c-443b-bcb8-8609914d0921",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die Quadratzahl von 1 ist 1\n",
"Die Quadratzahl von 2 ist 4\n",
"Die Quadratzahl von 3 ist 9\n",
"Die Quadratzahl von 4 ist 16\n",
"Die Quadratzahl von 5 ist 25\n",
"Die Quadratzahl von 6 ist 36\n",
"Die Quadratzahl von 7 ist 49\n",
"Die Quadratzahl von 8 ist 64\n",
"Die Quadratzahl von 9 ist 81\n",
"Die Quadratzahl von 10 ist 100\n",
"Die Quadratzahl von 11 ist 121\n",
"Die Quadratzahl von 12 ist 144\n",
"Die Quadratzahl von 13 ist 169\n",
"Die Quadratzahl von 14 ist 196\n",
"Die Quadratzahl von 15 ist 225\n",
"Die Quadratzahl von 16 ist 256\n",
"Die Quadratzahl von 17 ist 289\n",
"Die Quadratzahl von 18 ist 324\n",
"Die Quadratzahl von 19 ist 361\n",
"Die Quadratzahl von 20 ist 400\n"
]
}
],
"source": [
"function quadratzahlen() {\n",
" for (let i = 1; i <= 20; i++) {\n",
" console.log('Die Quadratzahl von ' + i + ' ist ' + (i*i))\n",
" }\n",
"}\n",
"quadratzahlen()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e25e4a01-1c3f-4e8b-bd94-bcfe0ac04594",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.04.1: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.1: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.1: Ausgabe ...Die Quadratzahl von 1 ist 1\n",
"Die Quadratzahl von 2 ist 4\n",
"Die Quadratzahl von 3 ist 9\n",
"Die Quadratzahl von 4 ist 16\n",
"Die Quadratzahl von 5 ist 25\n",
"Die Quadratzahl von 6 ist 36\n",
"Die Quadratzahl von 7 ist 49\n",
"Die Quadratzahl von 8 ist 64\n",
"Die Quadratzahl von 9 ist 81\n",
"Die Quadratzahl von 10 ist 100\n",
"Die Quadratzahl von 11 ist 121\n",
"Die Quadratzahl von 12 ist 144\n",
"Die Quadratzahl von 13 ist 169\n",
"Die Quadratzahl von 14 ist 196\n",
"Die Quadratzahl von 15 ist 225\n",
"Die Quadratzahl von 16 ist 256\n",
"Die Quadratzahl von 17 ist 289\n",
"Die Quadratzahl von 18 ist 324\n",
"Die Quadratzahl von 19 ist 361\n",
"Die Quadratzahl von 20 ist 400\n",
" \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(14ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 3 passed | 0 failed \u001b[0m\u001b[38;5;245m(15ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.04.1: function\", () => {\n",
" assertEquals(typeof quadratzahlen, 'function')\n",
"})\n",
"Deno.test(\"01.04.1: Parameter\", () => {\n",
" assertEquals(quadratzahlen.length, 0)\n",
"})\n",
"Deno.test(\"01.04.1: Ausgabe\", () => {\n",
" console.start(true)\n",
" quadratzahlen()\n",
" assertEquals(console.end(), 'Die Quadratzahl von 1 ist 1\\nDie Quadratzahl von 2 ist 4\\nDie Quadratzahl von 3 ist 9\\nDie Quadratzahl von 4 ist 16\\nDie Quadratzahl von 5 ist 25\\nDie Quadratzahl von 6 ist 36\\nDie Quadratzahl von 7 ist 49\\nDie Quadratzahl von 8 ist 64\\nDie Quadratzahl von 9 ist 81\\nDie Quadratzahl von 10 ist 100\\nDie Quadratzahl von 11 ist 121\\nDie Quadratzahl von 12 ist 144\\nDie Quadratzahl von 13 ist 169\\nDie Quadratzahl von 14 ist 196\\nDie Quadratzahl von 15 ist 225\\nDie Quadratzahl von 16 ist 256\\nDie Quadratzahl von 17 ist 289\\nDie Quadratzahl von 18 ist 324\\nDie Quadratzahl von 19 ist 361\\nDie Quadratzahl von 20 ist 400')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "df8eae72-81d5-4f28-a608-e203b429cab6",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.04.2\n",
"\n",
"Schreibe eine Funktion `addiereBis`, die eine Zahl als Parameter entgegennimmt und die alle natürlichen Zahlen kleiner gleich dem Paramter aufaddiert. Das Ergebnis der Addition soll zurückgegeben werden.\n",
"\n",
"Beispiel: `addiereBis(3)` soll `1+2+3 = 6` ergeben."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "361cd6dd-883f-4668-b469-84502ca9ec8a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function addiereBis(n) {\n",
" let ergebnis = 0\n",
" for (let i = 1; i <= n; i++) {\n",
" ergebnis = ergebnis + i\n",
" }\n",
" return ergebnis\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1cf5880f-25cc-43d2-aee1-697d29c7a773",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.04.2: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.2: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.2: addiereBis(0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.2: addiereBis(1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.2: addiereBis(2) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.2: addiereBis(3) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.2: addiereBis(9) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 7 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.04.2: function\", () => {\n",
" assertEquals(typeof addiereBis, 'function')\n",
"})\n",
"Deno.test(\"01.04.2: Parameter\", () => {\n",
" assertEquals(addiereBis.length, 1)\n",
"})\n",
"Deno.test(\"01.04.2: addiereBis(0)\", () => {\n",
" assertEquals(addiereBis(0), 0)\n",
"})\n",
"Deno.test(\"01.04.2: addiereBis(1)\", () => {\n",
" assertEquals(addiereBis(1), 1)\n",
"})\n",
"Deno.test(\"01.04.2: addiereBis(2)\", () => {\n",
" assertEquals(addiereBis(2), 3)\n",
"})\n",
"Deno.test(\"01.04.2: addiereBis(3)\", () => {\n",
" assertEquals(addiereBis(3), 6)\n",
"})\n",
"Deno.test(\"01.04.2: addiereBis(9)\", () => {\n",
" assertEquals(addiereBis(9), 45)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "596dbf4f-51cf-4f2b-abea-5e9b919c5113",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.04.3\n",
"Die `for`-Schleife soll nochmal anhand der in der Mathematik verwendeten Fakultät geübt werden. Die Fakultät einer natürlichen Zahl `n` ist das Produkt aller natürlichen Zahlen (ohne Null) kleiner oder gleich `n`. Sie wird durch ein nachgestelltes Ausrufezeichen abgekürzt: `3! = 1*2*3 = 6`. Per Definition gilt `0! = 1`.\n",
"\n",
"Schreibe eine Funktion `fakultaet`, die die Fakultät einer natürlichen Zahl berechnet und zurückgibt.\n",
"\n",
"Beispiel: `fakultaet(3)` sollte `1*2*3 = 6` ergeben."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "341d72f8-6076-4c8f-9f0a-28e0afb0dfbb",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function fakultaet(n) {\n",
" let ergebnis = 1\n",
" for (let i = 1; i <= n; i++) {\n",
" ergebnis = ergebnis * i\n",
" }\n",
" return ergebnis\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "8635d86d-2a2d-4228-82ed-eab5f39348ce",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.04.3: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.3: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.3: fakultaet(0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.3: fakultaet(1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.3: fakultaet(2) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.3: fakultaet(3) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.3: fakultaet(4) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.3: fakultaet(9) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 8 passed | 0 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.04.3: function\", () => {\n",
" assertEquals(typeof fakultaet, 'function')\n",
"})\n",
"Deno.test(\"01.04.3: Parameter\", () => {\n",
" assertEquals(fakultaet.length, 1)\n",
"})\n",
"Deno.test(\"01.04.3: fakultaet(0)\", () => {\n",
" assertEquals(fakultaet(0), 1)\n",
"})\n",
"Deno.test(\"01.04.3: fakultaet(1)\", () => {\n",
" assertEquals(fakultaet(1), 1)\n",
"})\n",
"Deno.test(\"01.04.3: fakultaet(2)\", () => {\n",
" assertEquals(fakultaet(2), 2)\n",
"})\n",
"Deno.test(\"01.04.3: fakultaet(3)\", () => {\n",
" assertEquals(fakultaet(3), 6)\n",
"})\n",
"Deno.test(\"01.04.3: fakultaet(4)\", () => {\n",
" assertEquals(fakultaet(4), 24)\n",
"})\n",
"Deno.test(\"01.04.3: fakultaet(9)\", () => {\n",
" assertEquals(fakultaet(9), 362880)\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,531 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "e77a8d37-be27-42fe-84a4-7b762e26f730",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[Module: null prototype] { }"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import { assertEquals } from \"jsr:@std/assert\"\n",
"import \"https://git.amgdhg.de/kg/tslib/raw/branch/main/logger.ts?5\""
]
},
{
"cell_type": "markdown",
"id": "b4399c83-ae7b-44dd-b786-d85bff292661",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.04.4 - größter gemeinsamer Teiler\n",
"\n",
"Programmiere eine Methode `ggT`, die 2 Zahlen `a` und `b` als Parameter annimmt und den größten gemeinsamen Teiler dieser Zahlen bestimmt und diesen als Ergebnis zurückgibt.\n",
"\n",
"#### Hinweis 1:\n",
"der größte gemeinsame Teiler `ggT` ist die ganze Zahl ≥1, die sowohl ein Teiler von `a` ist, als auch ein Teiler von `b`. Gleichzeitig ist der `ggT` auch die größte Zahl, die diese Bedingungen erfüllt.\n",
"\n",
"#### Hinweis 2:\n",
"die Teilbarkeit überprüft man, indem man Modulo rechnet. Gilt `a % t === 0` so ist `t` ein Teiler von `a`. (D.h. beim Teilen von `a` durch `t` gibt es den Rest `0`)\n",
"\n",
"#### Beispiel:\n",
"`ggT(6,15)=3`\n",
"\n",
"#### Tipp zur Programmierung:\n",
"beginne bei `t = a` und zähle dann `t` so lange runter, bis `t` ein Teiler von `a` und `b` ist."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "0a26736e-986c-4a54-bd6d-b41e8c48332f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function ggT(a, b) {\n",
" let t = a\n",
" while (a % t !== 0 || b % t !== 0) {\n",
" t--\n",
" }\n",
" return t\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "6420fb99-b5db-41b4-b8ca-e9e8d57522da",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.04.4: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(1,1)=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(1,2)=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(2,3)=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(2,4)=2 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(15,6)=3 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(12,18)=6 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(18,12)=6 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(15,45)=15 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.4: ggT(45,15)=15 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 11 passed | 0 failed \u001b[0m\u001b[38;5;245m(2ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.04.4: function\", () => {\n",
" assertEquals(typeof ggT, 'function')\n",
"})\n",
"Deno.test(\"01.04.4: Parameter\", () => {\n",
" assertEquals(ggT.length, 2)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(1,1)=1\", () => {\n",
" assertEquals(ggT(1,1), 1)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(1,2)=1\", () => {\n",
" assertEquals(ggT(1,2), 1)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(2,3)=1\", () => {\n",
" assertEquals(ggT(2,3), 1)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(2,4)=2\", () => {\n",
" assertEquals(ggT(2,4), 2)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(15,6)=3\", () => {\n",
" assertEquals(ggT(15,6), 3)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(12,18)=6\", () => {\n",
" assertEquals(ggT(12,18), 6)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(18,12)=6\", () => {\n",
" assertEquals(ggT(18,12), 6)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(15,45)=15\", () => {\n",
" assertEquals(ggT(15,45), 15)\n",
"})\n",
"Deno.test(\"01.04.4: ggT(45,15)=15\", () => {\n",
" assertEquals(ggT(45,15), 15)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "d6b3211a-cc44-404d-84c5-93aba9b53155",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.04.5 - Fibonacci-Folge\n",
"\n",
"Programmiere eine Methode `fibonacci` die einen Zahl als Parameter entgegennimmt und die Fibonacci-Folge auf der Konsole ausgibt bis zur angegebenen Zahl (oder kleiner).\n",
"\n",
"#### Hinweis:\n",
"Die Fibonacci-Folge ist folgendermaßen definiert: man beginnt mit den Zahlen 0 und 1. Die jeweils folgende Zahl ist die Summe der beiden Vorgänger.\n",
"\n",
"#### Beispiel:\n",
"0,1,1,2,3,5,8,13,21,34,55,89,144,...\n",
"\n",
"#### Hinweis zur Ausgabe:\n",
"Wird als Parameter `10` angegeben, soll die Fibonacci nach der 8 abbrechen. Gib jede Zahl mit `console.log` ohne Komma aus.\n",
"\n",
"#### Tipp zur Programmierung:\n",
"Speichere die beiden Zahlen in Variablen ab und überlege dir, was du wann addieren und zuweisen musst"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "7eb0df34-14be-4854-9a37-5bae80607753",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function fibonacci(n) {\n",
" let a = 0\n",
" let b = 1\n",
"\n",
" while (a <= n) {\n",
" console.log(a)\n",
" let c = a+b\n",
" a = b\n",
" b = c\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "8b02d832-1cc3-4d0d-a8fc-b377bf8b5e7e",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.04.5: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.5: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.5: fibonacci(0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.5: fibonacci(1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.5: fibonacci(6) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.5: fibonacci(10) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.5: fibonacci(100) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.5: fibonacci(500) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 8 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.04.5: function\", () => {\n",
" assertEquals(typeof fibonacci, 'function')\n",
"})\n",
"Deno.test(\"01.04.5: Parameter\", () => {\n",
" assertEquals(fibonacci.length, 1)\n",
"})\n",
"Deno.test(\"01.04.5: fibonacci(0)\", () => {\n",
" console.start(false)\n",
" fibonacci(0)\n",
" assertEquals(console.end(), '0')\n",
"})\n",
"Deno.test(\"01.04.5: fibonacci(1)\", () => {\n",
" console.start(false)\n",
" fibonacci(1)\n",
" assertEquals(console.end(), '0\\n1\\n1')\n",
"})\n",
"Deno.test(\"01.04.5: fibonacci(6)\", () => {\n",
" console.start(false)\n",
" fibonacci(6)\n",
" assertEquals(console.end(), '0\\n1\\n1\\n2\\n3\\n5')\n",
"})\n",
"Deno.test(\"01.04.5: fibonacci(10)\", () => {\n",
" console.start(false)\n",
" fibonacci(10)\n",
" assertEquals(console.end(), '0\\n1\\n1\\n2\\n3\\n5\\n8')\n",
"})\n",
"Deno.test(\"01.04.5: fibonacci(100)\", () => {\n",
" console.start(false)\n",
" fibonacci(100)\n",
" assertEquals(console.end(), '0\\n1\\n1\\n2\\n3\\n5\\n8\\n13\\n21\\n34\\n55\\n89')\n",
"})\n",
"Deno.test(\"01.04.5: fibonacci(500)\", () => {\n",
" console.start(false)\n",
" fibonacci(500)\n",
" assertEquals(console.end(), '0\\n1\\n1\\n2\\n3\\n5\\n8\\n13\\n21\\n34\\n55\\n89\\n144\\n233\\n377')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "fd3274ce-bd67-4d1e-9329-c386a4a461ec",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.04.6 - Collatz-Folge\n",
"\n",
"Die Collatz-Folge ist folgendermaßen definiert:\n",
"* beginne bei einer Zahl `x`\n",
"* ist die Zahl `x` gerade, so ist die nächste Zahl `x/2`\n",
"* ist die Zahl `x` ungerade, so ist die nächste Zahl `3*x + 1`\n",
"* die Folge endet, wenn man bei 1 angekommen ist.\n",
"\n",
"Programmiere eine Methode `collatz`, die einen Startwert als Parameter bekommt und ausgehend davon die Collatz-Folge ausgibt.\n",
"\n",
"#### Beispiele:\n",
"* 3,10,5,16,8,4,2,1\n",
"* 7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1\n",
"\n",
"#### Hinweis zur Ausgabe:\n",
"Gib jede Zahl mit `console.log` ohne Komma aus."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "238eece7-d51b-4776-acaa-27c4a1ccbb98",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function collatz(c) {\n",
" while(c > 1) {\n",
" console.log(c)\n",
" if (c % 2 === 0) c = c/2\n",
" else c = 3*c + 1\n",
" }\n",
" console.log(c)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f65373b5-e2de-4b58-9966-2c6883607cc3",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.04.6: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.6: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.6: collatz(0) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.6: collatz(1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.6: collatz(2) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.6: collatz(5) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.6: collatz(7) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.6: collatz(97) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 8 passed | 0 failed \u001b[0m\u001b[38;5;245m(17ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.04.6: function\", () => {\n",
" assertEquals(typeof collatz, 'function')\n",
"})\n",
"Deno.test(\"01.04.6: Parameter\", () => {\n",
" assertEquals(collatz.length, 1)\n",
"})\n",
"Deno.test(\"01.04.6: collatz(0)\", () => {\n",
" console.start(false)\n",
" collatz(0)\n",
" assertEquals(console.end(), '0')\n",
"})\n",
"Deno.test(\"01.04.6: collatz(1)\", () => {\n",
" console.start(false)\n",
" collatz(1)\n",
" assertEquals(console.end(), '1')\n",
"})\n",
"Deno.test(\"01.04.6: collatz(2)\", () => {\n",
" console.start(false)\n",
" collatz(2)\n",
" assertEquals(console.end(), '2\\n1')\n",
"})\n",
"Deno.test(\"01.04.6: collatz(5)\", () => {\n",
" console.start(false)\n",
" collatz(5)\n",
" assertEquals(console.end(), '5\\n16\\n8\\n4\\n2\\n1')\n",
"})\n",
"Deno.test(\"01.04.6: collatz(7)\", () => {\n",
" console.start(false)\n",
" collatz(7)\n",
" assertEquals(console.end(), '7\\n22\\n11\\n34\\n17\\n52\\n26\\n13\\n40\\n20\\n10\\n5\\n16\\n8\\n4\\n2\\n1')\n",
"})\n",
"Deno.test(\"01.04.6: collatz(97)\", () => {\n",
" console.start(false)\n",
" collatz(97)\n",
" assertEquals(console.end(), '97\\n292\\n146\\n73\\n220\\n110\\n55\\n166\\n83\\n250\\n125\\n376\\n188\\n94\\n47\\n142\\n71\\n214\\n107\\n322\\n161\\n484\\n242\\n121\\n364\\n182\\n91\\n274\\n137\\n412\\n206\\n103\\n310\\n155\\n466\\n233\\n700\\n350\\n175\\n526\\n263\\n790\\n395\\n1186\\n593\\n1780\\n890\\n445\\n1336\\n668\\n334\\n167\\n502\\n251\\n754\\n377\\n1132\\n566\\n283\\n850\\n425\\n1276\\n638\\n319\\n958\\n479\\n1438\\n719\\n2158\\n1079\\n3238\\n1619\\n4858\\n2429\\n7288\\n3644\\n1822\\n911\\n2734\\n1367\\n4102\\n2051\\n6154\\n3077\\n9232\\n4616\\n2308\\n1154\\n577\\n1732\\n866\\n433\\n1300\\n650\\n325\\n976\\n488\\n244\\n122\\n61\\n184\\n92\\n46\\n23\\n70\\n35\\n106\\n53\\n160\\n80\\n40\\n20\\n10\\n5\\n16\\n8\\n4\\n2\\n1')\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "6ab68dbf-26c0-4e28-b75d-17fd9afaaf23",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.04.6 - Länge der Collatz-Folge\n",
"\n",
"Modifiziere deine Programmierung von oben so und programmiere diese als Funktion `collatzlaenge`, dass die Funktion als Rückgabewert (mit `return`) die Anzahl der Zahlen zurückgibt. Die Ausgabe auf der Konsole kannst du dabei weglassen.\n",
"\n",
"#### Beispiel:\n",
"* `collatzlaenge(3)=8` (da 3,10,5,16,8,4,2,1 -> 8 Zahlen)\n",
"* `collatzlaenge(7)=17` (da 7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1 -> 17 Zahlen)\n",
"\n",
"#### Zusatzaufgabe:\n",
"Finde mit dieser Hilfe die Startzahl ≤100, die die längste Collatzfolge erzeugt."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "031e69cd-e7ce-4495-89ce-a265425cf809",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function collatzlaenge(c) {\n",
" let l = 1\n",
" \n",
" while(c > 1) {\n",
" l++\n",
" if (c % 2 === 0) c = c/2\n",
" else c = 3*c + 1\n",
" }\n",
"\n",
" return l\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "11bc9be9-218f-4677-b08e-3ad1386e2aec",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.04.7: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.7: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.7: collatzlaenge(1)=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.7: collatzlaenge(7)=17 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.7: collatzlaenge(13)=10 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.7: collatzlaenge(32)=6 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.7: collatzlaenge(51)=25 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.7: collatzlaenge(82)=111 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.04.7: collatzlaenge(100)=26 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 9 passed | 0 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"Deno.test(\"01.04.7: function\", () => {\n",
" assertEquals(typeof collatzlaenge, 'function')\n",
"})\n",
"Deno.test(\"01.04.7: Parameter\", () => {\n",
" assertEquals(collatzlaenge.length, 1)\n",
"})\n",
"Deno.test(\"01.04.7: collatzlaenge(1)=1\", () => {\n",
" assertEquals(collatzlaenge(1), 1)\n",
"})\n",
"Deno.test(\"01.04.7: collatzlaenge(7)=17\", () => {\n",
" assertEquals(collatzlaenge(7), 17)\n",
"})\n",
"Deno.test(\"01.04.7: collatzlaenge(13)=10\", () => {\n",
" assertEquals(collatzlaenge(13), 10)\n",
"})\n",
"Deno.test(\"01.04.7: collatzlaenge(32)=6\", () => {\n",
" assertEquals(collatzlaenge(32), 6)\n",
"})\n",
"Deno.test(\"01.04.7: collatzlaenge(51)=25\", () => {\n",
" assertEquals(collatzlaenge(51), 25)\n",
"})\n",
"Deno.test(\"01.04.7: collatzlaenge(82)=111\", () => {\n",
" assertEquals(collatzlaenge(82), 111)\n",
"})\n",
"Deno.test(\"01.04.7: collatzlaenge(100)=26\", () => {\n",
" assertEquals(collatzlaenge(100), 26)\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
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,523 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "d948a729-2d3e-4c5c-9407-82405bf0865e",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[Module: null prototype] { }"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import { assertEquals } from \"jsr:@std/assert\"\n",
"import \"https://git.amgdhg.de/kg/tslib/raw/branch/main/logger.ts\""
]
},
{
"cell_type": "markdown",
"id": "2cc36d84-90e4-41bd-a892-678c483ae88f",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.06.1\n",
"Programmiere eine Funktion `getFirstElement`, die ein Array als Parameter bekommt und den ersten Eintrag dieses Arrays zurückgibt."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b0ce656f-b119-4fe6-bfbf-bbb32a7ca176",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function getFirstElement(a) {\n",
" return a[0]\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "6855ea9a-b465-4c3f-b93b-9d4c9bba3aca",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.06.1: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.1: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.1: getFirstElement([1, 2])=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.1: getFirstElement(['Hänsel', 'Gretel'])='Hänsel' ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.1: getFirstElement(['a', 'b', 'c'])='a' ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.1: getFirstElement([4, 2, 9, 4])=4 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 6 passed | 0 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"let _nr = \"01.06.1\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof getFirstElement, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(getFirstElement.length, 1)\n",
"})\n",
"Deno.test(`${_nr}: getFirstElement([1, 2])=1`, () => {\n",
" assertEquals(getFirstElement([1,2]), 1)\n",
"})\n",
"Deno.test(`${_nr}: getFirstElement(['Hänsel', 'Gretel'])='Hänsel'`, () => {\n",
" assertEquals(getFirstElement(['Hänsel','Gretel']), 'Hänsel')\n",
"})\n",
"Deno.test(`${_nr}: getFirstElement(['a', 'b', 'c'])='a'`, () => {\n",
" assertEquals(getFirstElement(['a','b','c']), 'a')\n",
"})\n",
"Deno.test(`${_nr}: getFirstElement([4, 2, 9, 4])=4`, () => {\n",
" assertEquals(getFirstElement([4,2,9,4]), 4)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "4cb2f333-f1f1-475f-8fe8-a06302a31a62",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.06.2\n",
"Programmiere eine Funktion `getLastElement`, die ein Array als Parameter bekommt und den letzten Eintrag dieses Arrays zurückgibt.\n",
"### Tipp:\n",
"Überlege dir zunächst, wie denn der Index des letzten Elementes ist."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "158385fd-be34-4f1d-9725-7cedee736958",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function getLastElement(a) {\n",
" return a[ a.length - 1 ]\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "58a9cc6d-683d-4f86-84b7-600d80d7b06d",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.06.2: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.2: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.2: getLastElement([1, 2])=2 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.2: getLastElement(['Hänsel', 'Gretel'])='Gretel' ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.2: getLastElement(['a', 'b', 'c'])='c' ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.2: getLastElement([4, 2, 9, 4])=4 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 6 passed | 0 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"let _nr = \"01.06.2\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof getLastElement, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(getLastElement.length, 1)\n",
"})\n",
"Deno.test(`${_nr}: getLastElement([1, 2])=2`, () => {\n",
" assertEquals(getLastElement([1,2]), 2)\n",
"})\n",
"Deno.test(`${_nr}: getLastElement(['Hänsel', 'Gretel'])='Gretel'`, () => {\n",
" assertEquals(getLastElement(['Hänsel','Gretel']), 'Gretel')\n",
"})\n",
"Deno.test(`${_nr}: getLastElement(['a', 'b', 'c'])='c'`, () => {\n",
" assertEquals(getLastElement(['a','b','c']), 'c')\n",
"})\n",
"Deno.test(`${_nr}: getLastElement([4, 2, 9, 4])=4`, () => {\n",
" assertEquals(getLastElement([4,2,9,4]), 4)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "3de65b2d-d74b-4eaa-b11e-beed0e658cd3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.06.3 - Zufallszahlen\n",
"Programmiere eine Methode `zufallsArray`, die einen Wert `laenge` als Parameter bekommt.\n",
"\n",
"Zurückgegeben werden soll ein Array, das genau `laenge` Einträge hat und mit Zufallszahlen gefüllt ist.\n",
"\n",
"### Hinweis:\n",
"Zufallszahlen kann man mit `Math.random()` erzeugen.\n",
"\n",
"### Tipp:\n",
"Beginne mit einem leeren Array `let arr = []` und füge anschließend mit einer Schleife und dem `push`-Befehl Einträge hinzu.\n",
"\n",
"### Tipp:\n",
"Rufe die Funktion selbst mit `zufallsArray(10)` auch auf, damit du das Ergebnis auch direkt siehst!"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "367c5e53-49de-4dd0-ba10-723170affff2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function zufallsArray(n) {\n",
" let res = []\n",
" for (let i = 0; i < n; i++) {\n",
" res.push( Math.random() )\n",
" }\n",
" return res\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "dfc977ed-abac-4c9f-9867-3227b2d869d6",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.06.3: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.3: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.3: zufallsArray(0)=[] ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.3: zufallsArray(1) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(12ms)\u001b[0m\n",
"01.06.3: zufallsArray(10) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.3: zufallsArray(1000) ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 6 passed | 0 failed \u001b[0m\u001b[38;5;245m(14ms)\u001b[0m\n"
]
}
],
"source": [
"let _nr = \"01.06.3\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof zufallsArray, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(zufallsArray.length, 1)\n",
"})\n",
"Deno.test(`${_nr}: zufallsArray(0)=[]`, () => {\n",
" assertEquals(zufallsArray(0), [])\n",
"})\n",
"Deno.test(`${_nr}: zufallsArray(1)`, () => {\n",
" let last = 0\n",
" for(let i = 0; i < 10; i++) {\n",
" let now = zufallsArray(1)\n",
" assertEquals(now.length, 1)\n",
" assertEquals(now[0] >= 0, true)\n",
" assertEquals(now[0] <= 1, true)\n",
" assertEquals(now[0] === last, false)\n",
" last = now[0]\n",
" }\n",
"})\n",
"Deno.test(`${_nr}: zufallsArray(10)`, () => {\n",
" let arr = zufallsArray(10)\n",
" assertEquals(arr.length, 10)\n",
" for (let i = 1; i < arr.length; i++) {\n",
" assertEquals(arr[i] >= 0, true)\n",
" assertEquals(arr[i] <= 1, true)\n",
" if (i > 1) assertEquals(arr[i] === arr[i-1], false)\n",
" }\n",
"})\n",
"Deno.test(`${_nr}: zufallsArray(1000)`, () => {\n",
" let arr = zufallsArray(1000)\n",
" assertEquals(arr.length, 1000)\n",
" for (let i = 1; i < arr.length; i++) {\n",
" assertEquals(arr[i] >= 0, true)\n",
" assertEquals(arr[i] <= 1, true)\n",
" if (i > 1) assertEquals(arr[i] === arr[i-1], false)\n",
" }\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "383f906a-4a8a-40d0-a5be-1231c3a787eb",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.06.4 - Summe\n",
"Programmiere eine Funktion `summe`, die ein Array mit Zahlen als Parameter bekommt und die Summe aller Einträge berechnet und zurückgibt."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "30bef368-4084-4b96-877e-e58549ac4477",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function summe(a) {\n",
" let s = 0\n",
" for (let i = 0; i < a.length; i++) {\n",
" s = s + a[i]\n",
" }\n",
" return s\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "44dfc6a0-98b3-4c3c-a6b6-79c9b87efeab",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.06.4: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.4: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.4: summe([])=0 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.4: summe([1])=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.4: summe([1,2,3])=6 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.4: summe([1.2, 3.4, 5.6, 7.8, 9.10])=27.1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 6 passed | 0 failed \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n"
]
}
],
"source": [
"let _nr = \"01.06.4\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof summe, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(summe.length, 1)\n",
"})\n",
"Deno.test(`${_nr}: summe([])=0`, () => {\n",
" assertEquals(summe([]), 0)\n",
"})\n",
"Deno.test(`${_nr}: summe([1])=1`, () => {\n",
" assertEquals(summe([1]), 1)\n",
"})\n",
"Deno.test(`${_nr}: summe([1,2,3])=6`, () => {\n",
" assertEquals(summe([1,2,3]), 6)\n",
"})\n",
"Deno.test(`${_nr}: summe([1.2, 3.4, 5.6, 7.8, 9.10])=27.1`, () => {\n",
" assertEquals(summe([1.2, 3.4, 5.6, 7.8, 9.10]), 27.1)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "6800b795-bd76-407c-af6f-dc2d2fb9faaf",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.06.5 - Mittelwert\n",
"Programmiere eine Funktion `mittelwert`, die vom als Parameter übergebenen Array den Mittelwert berechnet.\n",
"\n",
"### Tipp:\n",
"Nutze die eben programmierte Methode `summe`"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "8ae1ddd8-6969-488c-9308-c9901bd868f7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function mittelwert(a) {\n",
" return summe(a) / a.length\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "55e1afdf-9dc9-4328-8b31-cc2c122af64c",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.06.5: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.5: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.5: mittelwert([0])=0 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.5: mittelwert([1])=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.5: mittelwert([1,2,3])=2 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.5: mittelwert([-2, -4, 17, 34])=11.25 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.06.5: mittelwert([1.2, 3.4, 5.6, 7.8, 9.10])=5.42 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 7 passed | 0 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m"
]
}
],
"source": [
"let _nr = \"01.06.5\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof mittelwert, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(mittelwert.length, 1)\n",
"})\n",
"Deno.test(`${_nr}: mittelwert([0])=0`, () => {\n",
" assertEquals(mittelwert([0]), 0)\n",
"})\n",
"Deno.test(`${_nr}: mittelwert([1])=1`, () => {\n",
" assertEquals(mittelwert([1]), 1)\n",
"})\n",
"Deno.test(`${_nr}: mittelwert([1,2,3])=2`, () => {\n",
" assertEquals(mittelwert([1,2,3]), 2)\n",
"})\n",
"Deno.test(`${_nr}: mittelwert([-2, -4, 17, 34])=11.25`, () => {\n",
" assertEquals(mittelwert([-2, -4, 17, 34]), 11.25)\n",
"})\n",
"Deno.test(`${_nr}: mittelwert([1.2, 3.4, 5.6, 7.8, 9.10])=5.42`, () => {\n",
" assertEquals(mittelwert([1.2, 3.4, 5.6, 7.8, 9.10]), 5.42)\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,223 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "0609fa9a-6337-43c0-a8d2-f947558066ac",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[Module: null prototype] { }"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import { assertEquals } from \"jsr:@std/assert\"\n",
"import \"https://git.amgdhg.de/kg/tslib/raw/branch/main/logger.ts\""
]
},
{
"cell_type": "markdown",
"id": "e2253715-005d-4a31-b577-4ba32a314da6",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.07.1 - Fakultät\n",
"\n",
"Eine wichtige mathematische Funktion ist die Fakultät:\n",
"$$n! = 1\\cdot2\\cdot3\\cdots(n-2)\\cdot(n-1)\\cdot n$$\n",
"zum Beispiel:\n",
"$$5!=1\\cdot2\\cdot3\\cdot4\\cdot5=120$$\n",
"\n",
"Ziel soll sein, die Funktion `fakultaet` rekursiv zu programmieren. Dafür gibt es zunächst einige Vorüberlegungen:"
]
},
{
"cell_type": "markdown",
"id": "81e736ba-89cd-4d1a-9b98-8475de6820bd",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 1\n",
"Notiere zunächst die rekursiven Funktionsaufrufe für das konkrete Zahlenbeispiel $n=5$:"
]
},
{
"cell_type": "raw",
"id": "58f5ec36-ae74-4ff0-9e47-4f0f83adbd7b",
"metadata": {
"editable": true,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"fakultaet(5) = fakultaet(4) * 5\n",
"fakultaet(4) = fakultaet(3) * 5\n",
"fakultaet(3) = fakultaet(2) * 5\n",
"fakultaet(2) = fakultaet(1) * 5\n",
"fakultaet(1) = 1\n",
"\n",
"allgemein: fakultaet(n) = fakultaet(n-1) * n"
]
},
{
"cell_type": "markdown",
"id": "ba4b1f2a-51cc-47ff-8b1f-f8444cddd7b9",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 2\n",
"Wann bricht die Rekursion ab, d.h. wann wird nicht mehr erneut die Funktion `fakultaet` aufgerufen?"
]
},
{
"cell_type": "raw",
"id": "261e0c80-0169-424f-840a-47c774029ced",
"metadata": {
"editable": true,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"bei n === 1"
]
},
{
"cell_type": "markdown",
"id": "37316573-632d-440f-9674-1dddbd5039f3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 3\n",
"Programmiere die Funktion `fakultaet`:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b8c40034-1b97-458a-9e30-648c41cb3d7c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function fakultaet(n) {\n",
" if (n === 1) return 1\n",
" return fakultaet(n-1) * n\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e114cca7-8b8a-4f7e-8861-1a507a679d3d",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.07.1: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.1: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.1: fakultaet(1)=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.1: fakultaet(3)=6 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.1: fakultaet(5)=120 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.1: fakultaet(11)=39916800 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 6 passed | 0 failed \u001b[0m\u001b[38;5;245m(1ms)\u001b[0m\n"
]
}
],
"source": [
"let _nr = \"01.07.1\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof fakultaet, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(fakultaet.length, 1)\n",
"})\n",
"Deno.test(`${_nr}: fakultaet(1)=1`, () => {\n",
" assertEquals(fakultaet(1), 1)\n",
"})\n",
"Deno.test(`${_nr}: fakultaet(3)=6`, () => {\n",
" assertEquals(fakultaet(3), 6)\n",
"})\n",
"Deno.test(`${_nr}: fakultaet(5)=120`, () => {\n",
" assertEquals(fakultaet(5), 120)\n",
"})\n",
"Deno.test(`${_nr}: fakultaet(11)=39916800`, () => {\n",
" assertEquals(fakultaet(11), 39916800)\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,238 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "0609fa9a-6337-43c0-a8d2-f947558066ac",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[Module: null prototype] { }"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import { assertEquals } from \"jsr:@std/assert\"\n",
"import \"https://git.amgdhg.de/kg/tslib/raw/branch/main/logger.ts\""
]
},
{
"cell_type": "markdown",
"id": "e2253715-005d-4a31-b577-4ba32a314da6",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.07.2 - Fibonacci\n",
"\n",
"Die Fibonacci Folge $F$\n",
"$$0,1,1,2,3,5,8,13,21,34,55,\\dots$$\n",
"ist folgendermaßen definiert:\n",
"* $F(0)=0$\n",
"* $F(1)=1$\n",
"* $F(2)=F(0)+F(1)$\n",
"* $F(3)=F(1)+F(2)$\n",
"* bzw. allgemein: $F(n)=F(n-2)+F(n-1)$\n",
"\n",
"Diese soll nun mit einer Funktion `fibo` programmiert werden, die einen Parameter $n$ übergeben bekommt und dann die $n$-te Fibonacci-Zahl berechnet.\n",
"\n",
"### Hinweis:\n",
"$0$ ist die \"nullte\" Zahl, 1 die erste."
]
},
{
"cell_type": "markdown",
"id": "81e736ba-89cd-4d1a-9b98-8475de6820bd",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 1\n",
"Notiere zunächst die rekursiven Funktionsaufrufe für das konkrete Zahlenbeispiel $n=5$:"
]
},
{
"cell_type": "raw",
"id": "58f5ec36-ae74-4ff0-9e47-4f0f83adbd7b",
"metadata": {
"editable": true,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"fibo(5) = fibo(4) + fibo(3)\n",
"fibo(4) = fibo(3) + fibo(2)\n",
"fibo(3) = fibo(2) + fibo(1)\n",
"fibo(2) = fibo(1) + fibo(0)\n",
"fibo(1) = 1\n",
"fibo(0) = 0\n",
"\n",
"allgemein: fibo(n) = fibo(n-1) + fibo(n-2)"
]
},
{
"cell_type": "markdown",
"id": "ba4b1f2a-51cc-47ff-8b1f-f8444cddd7b9",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 2\n",
"Wann bricht die Rekursion ab, d.h. wann wird nicht mehr erneut die Funktion `fibo` aufgerufen?"
]
},
{
"cell_type": "raw",
"id": "261e0c80-0169-424f-840a-47c774029ced",
"metadata": {
"editable": true,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"bei n === 1 -> return 1\n",
"bei n === 0 -> return 0"
]
},
{
"cell_type": "markdown",
"id": "37316573-632d-440f-9674-1dddbd5039f3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 3\n",
"Programmiere die Funtion `fibo`:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b8c40034-1b97-458a-9e30-648c41cb3d7c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function fibo(n) {\n",
" if (n === 1) return 1\n",
" if (n === 0) return 0\n",
"\n",
" return fibo(n-1) + fibo(n-2)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e114cca7-8b8a-4f7e-8861-1a507a679d3d",
"metadata": {
"editable": true,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.07.2: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.2: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.2: fibo(1)=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.2: fibo(3)=2 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.2: fibo(5)=5 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.2: fibo(11)=89 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.2: fibo(23)=28657 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(2ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 7 passed | 0 failed \u001b[0m\u001b[38;5;245m(3ms)\u001b[0m\n"
]
}
],
"source": [
"let _nr = \"01.07.2\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof fibo, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(fibo.length, 1)\n",
"})\n",
"Deno.test(`${_nr}: fibo(1)=1`, () => {\n",
" assertEquals(fibo(1), 1)\n",
"})\n",
"Deno.test(`${_nr}: fibo(3)=2`, () => {\n",
" assertEquals(fibo(3), 2)\n",
"})\n",
"Deno.test(`${_nr}: fibo(5)=5`, () => {\n",
" assertEquals(fibo(5), 5)\n",
"})\n",
"Deno.test(`${_nr}: fibo(11)=89`, () => {\n",
" assertEquals(fibo(11), 89)\n",
"})\n",
"Deno.test(`${_nr}: fibo(23)=28657`, () => {\n",
" assertEquals(fibo(23), 28657)\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,260 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "0609fa9a-6337-43c0-a8d2-f947558066ac",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[Module: null prototype] { }"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import { assertEquals } from \"jsr:@std/assert\"\n",
"import \"https://git.amgdhg.de/kg/tslib/raw/branch/main/logger.ts\""
]
},
{
"cell_type": "markdown",
"id": "e2253715-005d-4a31-b577-4ba32a314da6",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 01.07.3 - Pascal'sches Dreieck\n",
"\n",
"Das Pascal'sche Dreieck sieht folgendermaßen aus:\n",
"\n",
"$$\\begin{matrix}1\\\\1\\quad1\\\\1\\quad2\\quad1\\\\1\\quad3\\quad3\\quad1\\\\1\\quad4\\quad6\\quad4\\quad1\\\\1\\quad5\\quad10\\quad10\\quad5\\quad1\\\\1\\quad6\\quad15\\quad20\\quad15\\quad6\\quad1\\\\\\vdots\\qquad\\qquad\\vdots\\qquad\\qquad\\vdots\\end{matrix}$$\n",
"\n",
"Die Zahlen darin sollen mit der Methode `binom(n,k)` berechnet werden, wobei $n$ die Zeile und $k$ die Spalte (innerhalb der Zeile) angibt.\n",
"\n",
"### Hinweis:\n",
"Die Zeilen- und Spaltennummerierung beginnt bei 0!"
]
},
{
"cell_type": "markdown",
"id": "b84a4891-d9e8-43ca-a0cd-b7b7a1e700ed",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 1\n",
"Recherchiere im Internet, wie das Pascal'sche Dreieck bzw. dessen Inhalte **rekursiv** berechnet werden können."
]
},
{
"cell_type": "raw",
"id": "9a45ec13-32cd-420c-9c45-3f317edce6fb",
"metadata": {
"editable": true,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"binom(n,k) = binom(n-1,k) + binom(n-1,k-1)"
]
},
{
"cell_type": "markdown",
"id": "81e736ba-89cd-4d1a-9b98-8475de6820bd",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 2\n",
"Notiere zunächst die rekursiven Funktionsaufrufe für das konkrete Zahlenbeispiel $n=3$ und $k=2$:"
]
},
{
"cell_type": "raw",
"id": "58f5ec36-ae74-4ff0-9e47-4f0f83adbd7b",
"metadata": {
"editable": true,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": []
},
{
"cell_type": "markdown",
"id": "ba4b1f2a-51cc-47ff-8b1f-f8444cddd7b9",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 3\n",
"Wann bricht die Rekursion ab, d.h. wann wird nicht mehr erneut die Funktion `binom` aufgerufen?"
]
},
{
"cell_type": "raw",
"id": "261e0c80-0169-424f-840a-47c774029ced",
"metadata": {
"editable": true,
"raw_mimetype": "",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"bei k === 0 -> return 1 (linke Kante)\n",
"bei k === n -> return 1 (rechte Kante)"
]
},
{
"cell_type": "markdown",
"id": "37316573-632d-440f-9674-1dddbd5039f3",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Teil 3\n",
"Programmiere die Funtion `binom`:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b8c40034-1b97-458a-9e30-648c41cb3d7c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function binom(n, k) {\n",
" if (k === 0) return 1\n",
" if (k === n) return 1\n",
"\n",
" return binom(n-1, k) + binom(n-1, k-1)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e114cca7-8b8a-4f7e-8861-1a507a679d3d",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"01.07.3: function ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.3: Parameter ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.3: binom(0,0)=1 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.3: binom(2,1)=2 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.3: binom(5,3)=10 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.3: binom(9,4)=126 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"01.07.3: binom(20,7)=77520 ... \u001b[0m\u001b[32mok\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n",
"\n",
"\u001b[0m\u001b[32mok\u001b[0m | 7 passed | 0 failed \u001b[0m\u001b[38;5;245m(2ms)\u001b[0m\n"
]
}
],
"source": [
"let _nr = \"01.07.3\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof binom, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(binom.length, 2)\n",
"})\n",
"Deno.test(`${_nr}: binom(0,0)=1`, () => {\n",
" assertEquals(binom(0,0), 1)\n",
"})\n",
"Deno.test(`${_nr}: binom(2,1)=2`, () => {\n",
" assertEquals(binom(2,1), 2)\n",
"})\n",
"Deno.test(`${_nr}: binom(5,3)=10`, () => {\n",
" console.start()\n",
" assertEquals(binom(5,3), 10)\n",
" console.end()\n",
"})\n",
"Deno.test(`${_nr}: binom(9,4)=126`, () => {\n",
" console.start()\n",
" assertEquals(binom(9,4), 126)\n",
" console.end()\n",
"})\n",
"Deno.test(`${_nr}: binom(20,7)=77520`, () => {\n",
" console.start()\n",
" assertEquals(binom(20,7), 77520)\n",
" console.end()\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
}