inf-abi2027/03 Objektorientierung/01 Objekte/02 Übungen.ipynb

238 lines
5.3 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"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 03.01.1\n",
"Lege ein Objekt `p1` an mit den Attributen `x` und `y`. `x` soll dabei 5 sein, `y` -3."
]
},
{
"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": null,
"id": "245aec76-71a6-478e-9301-08ca4e14ff71",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": [
"Test"
]
},
"outputs": [],
"source": [
"let _nr = \"03.01.1\"\n",
"Deno.test(`${_nr}: object`, () => {\n",
" assertEquals(typeof p1, 'object')\n",
"})\n",
"Deno.test(`${_nr}: x`, () => {\n",
" assertEquals(p1.x, 5)\n",
"})\n",
"Deno.test(`${_nr}: y`, () => {\n",
" assertEquals(p1.y, -3)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "9eb66210-476a-499e-8965-9c63da2de3e7",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 03.01.2\n",
"Lege einen zweiten Punkt `p2` mit den Koordinaten $(2\\mid1)$ an."
]
},
{
"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": null,
"id": "4f710df6-8465-4da1-a997-4e34ea80d6ed",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": [
"Test"
]
},
"outputs": [],
"source": [
"let _nr = \"03.01.2\"\n",
"Deno.test(`${_nr}: object`, () => {\n",
" assertEquals(typeof p2, 'object')\n",
"})\n",
"Deno.test(`${_nr}: x`, () => {\n",
" assertEquals(p2.x, 2)\n",
"})\n",
"Deno.test(`${_nr}: y`, () => {\n",
" assertEquals(p2.y, 1)\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "d96b8c74-089f-4ded-85ad-72fca3c93bcd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 03.01.3\n",
"\n",
"Programmiere eine Funktion `abstand`, die zwei Parameter `punkt1` und `punkt2` übergeben bekommt. Es soll angenommen werden, dass diese beiden Parameter Objekte sind mit jeweils den Attributen `x` und `y`.\n",
"\n",
"Zurückgegeben werden soll der Abstand der beiden angegebenen Punkte.\n",
"\n",
"#### Tipp:\n",
"Der Abstand wird mit dem Pythagoras berechnet, die Wurzel kann man mit `Math.sqrt(...)` berechnen lassen.\n",
"\n",
"#### Beispiel:\n",
"Wird `abstand(p1, p2)` - also mit den beiden Punkten der letzten beiden Aufgaben aufgerufen, so soll `5` zurückgegeben werden."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cccdfe03-92f4-4d0f-b3cb-56332dc31b66",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"function abstand(punkt1, punkt2) {\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "87a2ab19-819c-43d6-9fc3-11e53dff9be7",
"metadata": {
"editable": false,
"jupyter": {
"source_hidden": true
},
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"let _nr = \"03.01.3\"\n",
"Deno.test(`${_nr}: function`, () => {\n",
" assertEquals(typeof abstand, 'function')\n",
"})\n",
"Deno.test(`${_nr}: Parameter`, () => {\n",
" assertEquals(abstand.length, 2)\n",
"})\n",
"Deno.test(`${_nr}: abstand(p1,p2)=5`, () => {\n",
" assertEquals(abstand(p1,p2), 5)\n",
"})\n",
"Deno.test(`${_nr}: abstand()=0`, () => {\n",
" assertEquals(abstand({x:0,y:0},{x:0,y:0}), 0)\n",
"})\n",
"Deno.test(`${_nr}: abstand()=0`, () => {\n",
" assertEquals(abstand({x:1,y:1},{x:1,y:1}), 0)\n",
"})\n",
"Deno.test(`${_nr}: abstand()=2`, () => {\n",
" assertEquals(abstand({x:5,y:0},{x:5,y:2}), 2)\n",
"})\n",
"Deno.test(`${_nr}: abstand()=13`, () => {\n",
" assertEquals(abstand({x:3,y:8},{x:8,y:-4}), 13)\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
}