@lernapps/app-templates 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +195 -2
- package/dist/appname-Bh23cUuz.mjs +12 -0
- package/dist/assessment-By2GGTJC.mjs +1696 -0
- package/dist/block-BK_ohsH1.mjs +82 -0
- package/dist/blocks-BmRrD7UY.mjs +149 -0
- package/dist/blocks.mjs +4 -0
- package/dist/check-BkEl-m-F.mjs +254 -0
- package/dist/content-cYBPYg_J.mjs +140 -0
- package/dist/contract-PONpxJtd.mjs +52 -0
- package/dist/e2e-BiMI-pCL.mjs +89 -0
- package/dist/engine-BqF2Vffn.mjs +136 -0
- package/dist/explainer-e2e.mjs +1297 -0
- package/dist/explainer-islands.mjs +197 -0
- package/dist/explainer-plugin.mjs +2131 -0
- package/dist/explainer.mjs +1246 -0
- package/dist/html-mffkHGHh.mjs +89 -0
- package/dist/image-CspJVfyQ.mjs +21 -0
- package/dist/interactive-e2e.mjs +140 -0
- package/dist/interactive-plugin.mjs +242 -0
- package/dist/interactive.mjs +75 -0
- package/dist/load-C-0hUaSC.mjs +16947 -0
- package/dist/needs-BzEahJ6X.mjs +97 -0
- package/dist/pages-9RaaomoO.mjs +81 -0
- package/dist/questions-e2e.mjs +1 -0
- package/dist/questions-engine.mjs +3 -0
- package/dist/questions.mjs +6 -0
- package/dist/quiz-BKc8JYtC.mjs +70 -0
- package/dist/quiz-e2e.mjs +174 -0
- package/dist/quiz-plugin.mjs +266 -0
- package/dist/quiz.mjs +246 -0
- package/dist/render-BJey0bwl.mjs +540 -0
- package/dist/render-BL6fV_NI.mjs +507 -0
- package/dist/render-DpRO_RKm.mjs +146 -0
- package/dist/result-_eQcamoz.mjs +180 -0
- package/dist/tasks-DADUYy52.mjs +74 -0
- package/dist/validate-COaZso7u.mjs +1072 -0
- package/dist/validate-CxtdeQ5S.mjs +146 -0
- package/dist/vue-DO1m6q1R.mjs +40 -0
- package/dist/vue-code-BkJjW_I_.mjs +320 -0
- package/docs/arc42/01-introduction-and-goals.arc42.md +82 -0
- package/docs/arc42/02-constraints.arc42.md +228 -0
- package/docs/arc42/03-system-context.arc42.md +118 -0
- package/docs/arc42/04-solution-strategy.arc42.md +47 -0
- package/docs/arc42/05-building-blocks.arc42.md +307 -0
- package/docs/arc42/06-runtime-view.arc42.md +98 -0
- package/docs/arc42/07-deployment-view.arc42.md +160 -0
- package/docs/arc42/08-concepts.arc42.md +123 -0
- package/docs/arc42/09-decisions.arc42.md +246 -0
- package/docs/arc42/10-quality-requirements.arc42.md +155 -0
- package/docs/arc42/11-risks.arc42.md +113 -0
- package/docs/arc42/12-glossary.arc42.md +162 -0
- package/docs/arc42/architecture-evidence.md +395 -0
- package/explainer/.arc42ignore +3 -0
- package/explainer/README.md +54 -0
- package/explainer/_gitignore +5 -0
- package/explainer/docs/arc42/03-explainer-system-context.arc42.md +35 -0
- package/explainer/docs/arc42/05-explainer-building-blocks.arc42.md +659 -0
- package/explainer/docs/arc42/06-explainer-runtime-view.arc42.md +105 -0
- package/explainer/docs/arc42/07-explainer-deployment-view.arc42.md +34 -0
- package/explainer/docs/arc42/08-explainer-concepts.arc42.md +17 -0
- package/explainer/docs/arc42/09-explainer-decisions.arc42.md +443 -0
- package/explainer/docs/arc42/10-explainer-quality-requirements.arc42.md +54 -0
- package/explainer/docs/arc42/11-explainer-risks.arc42.md +17 -0
- package/explainer/docs/arc42/12-explainer-glossary.arc42.md +185 -0
- package/explainer/e2e/explainer.e2e.ts +3 -0
- package/explainer/index.html +11 -0
- package/explainer/package.json +18 -0
- package/explainer/playwright.config.ts +1 -0
- package/explainer/src/app.yaml +20 -0
- package/explainer/src/components/ProzentFeld.test.ts +30 -0
- package/explainer/src/components/ProzentFeld.ts +121 -0
- package/explainer/src/components/ProzentFeld.vue +84 -0
- package/explainer/src/images/hunderterfeld-klammern.svg +105 -0
- package/explainer/src/main.ts +4 -0
- package/explainer/src/prozent/chapter.yaml +18 -0
- package/explainer/src/prozent/grundwert.yaml +115 -0
- package/explainer/src/prozent/prozentsatz.yaml +99 -0
- package/explainer/src/prozent/prozentwert.yaml +119 -0
- package/explainer/tsconfig.json +1 -0
- package/explainer/vite.config.ts +4 -0
- package/interactive/.arc42ignore +5 -0
- package/interactive/README.md +28 -0
- package/interactive/_gitignore +4 -0
- package/interactive/docs/arc42/05-interactive-building-blocks.arc42.md +518 -0
- package/interactive/docs/arc42/06-interactive-runtime-view.arc42.md +58 -0
- package/interactive/docs/arc42/07-interactive-deployment-view.arc42.md +35 -0
- package/interactive/docs/arc42/08-interactive-concepts.arc42.md +52 -0
- package/interactive/docs/arc42/09-interactive-decisions.arc42.md +130 -0
- package/interactive/docs/arc42/10-interactive-quality-requirements.arc42.md +45 -0
- package/interactive/docs/arc42/11-interactive-risks.arc42.md +20 -0
- package/interactive/docs/arc42/12-interactive-glossary.arc42.md +80 -0
- package/interactive/e2e/interactive.e2e.ts +3 -0
- package/interactive/index.html +11 -0
- package/interactive/package.json +18 -0
- package/interactive/playwright.config.ts +1 -0
- package/interactive/src/app.yaml +28 -0
- package/interactive/src/core/index.ts +101 -0
- package/interactive/src/data/lessons.json +4 -0
- package/interactive/src/env.d.ts +6 -0
- package/interactive/src/main.ts +6 -0
- package/interactive/src/messages/de.json +12 -0
- package/interactive/src/playthroughs/grundreihe.yaml +33 -0
- package/interactive/src/playthroughs/obere-reihe.yaml +14 -0
- package/interactive/src/ui/App.vue +85 -0
- package/interactive/tsconfig.json +1 -0
- package/interactive/vite.config.ts +4 -0
- package/package.json +142 -4
- package/quiz/README.md +31 -0
- package/quiz/_gitignore +5 -0
- package/quiz/docs/arc42/05-quiz-building-blocks.arc42.md +283 -0
- package/quiz/docs/arc42/06-quiz-runtime-view.arc42.md +21 -0
- package/quiz/docs/arc42/07-quiz-deployment-view.arc42.md +33 -0
- package/quiz/docs/arc42/09-quiz-decisions.arc42.md +36 -0
- package/quiz/docs/arc42/10-quiz-quality-requirements.arc42.md +53 -0
- package/quiz/docs/arc42/11-quiz-risks.arc42.md +19 -0
- package/quiz/docs/arc42/12-quiz-glossary.arc42.md +27 -0
- package/quiz/e2e/quiz.e2e.ts +3 -0
- package/quiz/index.html +11 -0
- package/quiz/package.json +18 -0
- package/quiz/playwright.config.ts +1 -0
- package/quiz/src/images/berge-ordnen.jpg +0 -0
- package/quiz/src/images/everest-hoehe.jpg +0 -0
- package/quiz/src/images/galapagos.jpg +0 -0
- package/quiz/src/images/grand-canyon.jpg +0 -0
- package/quiz/src/images/totes-meer.jpg +0 -0
- package/quiz/src/images/uluru.jpg +0 -0
- package/quiz/src/images/wasserfaelle-laender.jpg +0 -0
- package/quiz/src/main.ts +4 -0
- package/quiz/src/quiz.json +312 -0
- package/quiz/tsconfig.json +1 -0
- package/quiz/vite.config.ts +4 -0
- package/runtime/explainer/assessment-client.ts +478 -0
- package/runtime/explainer/assessment-page.ts +446 -0
- package/runtime/explainer/assessment.ts +393 -0
- package/runtime/explainer/check-page.ts +520 -0
- package/runtime/explainer/components/exercise.ts +409 -0
- package/runtime/explainer/components/props.ts +230 -0
- package/runtime/explainer/components/read.ts +428 -0
- package/runtime/explainer/content.ts +277 -0
- package/runtime/explainer/e2e.ts +1474 -0
- package/runtime/explainer/exercises.ts +324 -0
- package/runtime/explainer/explainer.css +1283 -0
- package/runtime/explainer/explainer.ts +838 -0
- package/runtime/explainer/explainer.v1.schema.json +1165 -0
- package/runtime/explainer/expression.ts +407 -0
- package/runtime/explainer/fraction.ts +107 -0
- package/runtime/explainer/generated/comparator.ts +31 -0
- package/runtime/explainer/generated/question.ts +165 -0
- package/runtime/explainer/generated/soundness.ts +280 -0
- package/runtime/explainer/generated/texts.ts +257 -0
- package/runtime/explainer/generated/types.ts +103 -0
- package/runtime/explainer/generated/values.ts +136 -0
- package/runtime/explainer/islands.ts +281 -0
- package/runtime/explainer/load.ts +457 -0
- package/runtime/explainer/messages/de.json +200 -0
- package/runtime/explainer/messages/en.json +200 -0
- package/runtime/explainer/messages.ts +13 -0
- package/runtime/explainer/needs.ts +122 -0
- package/runtime/explainer/open-task.ts +235 -0
- package/runtime/explainer/outline.ts +299 -0
- package/runtime/explainer/plugin.ts +488 -0
- package/runtime/explainer/position.ts +62 -0
- package/runtime/explainer/prompt.ts +75 -0
- package/runtime/explainer/render.ts +686 -0
- package/runtime/explainer/result.ts +238 -0
- package/runtime/explainer/routes.ts +119 -0
- package/runtime/explainer/schema.ts +140 -0
- package/runtime/explainer/scope.ts +87 -0
- package/runtime/explainer/stuck.ts +57 -0
- package/runtime/explainer/tasks.ts +109 -0
- package/runtime/explainer/tutor.ts +469 -0
- package/runtime/explainer/tutorpage.ts +669 -0
- package/runtime/explainer/video.ts +123 -0
- package/runtime/interactive/contract.ts +121 -0
- package/runtime/interactive/e2e.ts +190 -0
- package/runtime/interactive/interactive.css +82 -0
- package/runtime/interactive/interactive.ts +115 -0
- package/runtime/interactive/interactive.v1.schema.json +146 -0
- package/runtime/interactive/load.ts +188 -0
- package/runtime/interactive/messages/de.json +14 -0
- package/runtime/interactive/messages/en.json +14 -0
- package/runtime/interactive/messages.ts +11 -0
- package/runtime/interactive/playthrough.v1.schema.json +143 -0
- package/runtime/interactive/plugin.ts +266 -0
- package/runtime/interactive/render.ts +126 -0
- package/runtime/quiz/e2e.ts +233 -0
- package/runtime/quiz/engine.ts +242 -0
- package/runtime/quiz/messages/de.json +23 -0
- package/runtime/quiz/messages/en.json +23 -0
- package/runtime/quiz/plugin.ts +150 -0
- package/runtime/quiz/quiz.css +154 -0
- package/runtime/quiz/quiz.ts +56 -0
- package/runtime/quiz/quiz.v1.schema.json +72 -0
- package/runtime/quiz/render.ts +173 -0
- package/runtime/quiz/validate.ts +108 -0
- package/runtime/shared/appname.ts +16 -0
- package/runtime/shared/blocks/block.ts +162 -0
- package/runtime/shared/blocks/blocks.css +190 -0
- package/runtime/shared/blocks/blocks.v1.schema.json +432 -0
- package/runtime/shared/blocks/code.ts +26 -0
- package/runtime/shared/blocks/figures.ts +49 -0
- package/runtime/shared/blocks/image.ts +25 -0
- package/runtime/shared/blocks/index.ts +13 -0
- package/runtime/shared/blocks/messages/de.json +4 -0
- package/runtime/shared/blocks/messages/en.json +4 -0
- package/runtime/shared/blocks/render.ts +134 -0
- package/runtime/shared/blocks/validate.ts +165 -0
- package/runtime/shared/content.ts +197 -0
- package/runtime/shared/examples.ts +20 -0
- package/runtime/shared/html.ts +10 -0
- package/runtime/shared/languages.ts +94 -0
- package/runtime/shared/page.css +101 -0
- package/runtime/shared/pages.ts +114 -0
- package/runtime/shared/questions/e2e.ts +115 -0
- package/runtime/shared/questions/engine.ts +209 -0
- package/runtime/shared/questions/index.ts +39 -0
- package/runtime/shared/questions/messages/de.json +26 -0
- package/runtime/shared/questions/messages/en.json +26 -0
- package/runtime/shared/questions/question.ts +430 -0
- package/runtime/shared/questions/question.v1.schema.json +342 -0
- package/runtime/shared/questions/questions.css +192 -0
- package/runtime/shared/questions/render.ts +247 -0
- package/runtime/shared/questions/validate.ts +518 -0
- package/runtime/shared/schema.ts +44 -0
- package/runtime/shared/text/check.ts +68 -0
- package/runtime/shared/text/formula.ts +69 -0
- package/runtime/shared/text/markdown.ts +185 -0
- package/runtime/shared/text/text.v1.schema.json +34 -0
- package/runtime/shared/vue-code.ts +395 -0
- package/runtime/shared/vue.ts +38 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# yaml-language-server: $schema=../../node_modules/@lernapps/app-templates/runtime/explainer/explainer.v1.schema.json
|
|
2
|
+
title: Grundwert
|
|
3
|
+
description: "Den Grundwert berechnen: G = W · 100 : p, mit einem Beispiel und dem Hunderterfeld."
|
|
4
|
+
scope: |
|
|
5
|
+
Gesucht ist das Ganze, wenn nur ein Teil und sein Prozentsatz bekannt sind, etwa der alte Preis, wenn 30 € gespart
|
|
6
|
+
sind und das 12 % waren. Man rechnet $G = \frac{W \cdot 100}{p}$: $W$ geteilt durch $p$ ist 1 %, mal 100 das Ganze.
|
|
7
|
+
Bei einem Prozentsatz unter 100 % ist der Grundwert immer größer als der Prozentwert; kommt etwas Kleineres heraus,
|
|
8
|
+
wurde die Formel für den Prozentwert benutzt.
|
|
9
|
+
blocks:
|
|
10
|
+
- type: section
|
|
11
|
+
id: warum
|
|
12
|
+
title: Warum
|
|
13
|
+
blocks:
|
|
14
|
+
- type: text
|
|
15
|
+
text: |
|
|
16
|
+
„Du sparst 30 €, das sind 12 % Rabatt“: Wie teuer war die Sache vorher? Hier ist das Ganze unbekannt, und
|
|
17
|
+
genau das verwirrt viele. Wer den Grundwert sicher zurückrechnen kann, löst auch die kniffligen Aufgaben, bei
|
|
18
|
+
denen nur der Teil bekannt ist.
|
|
19
|
+
- type: section
|
|
20
|
+
id: regel
|
|
21
|
+
title: Regel
|
|
22
|
+
blocks:
|
|
23
|
+
- type: formula
|
|
24
|
+
formula: 'G = \frac{W \cdot 100}{p}'
|
|
25
|
+
- type: definition
|
|
26
|
+
term: Grundwert
|
|
27
|
+
explanation: Der Grundwert $G$ ist das Ganze, also 100 %.
|
|
28
|
+
- type: text
|
|
29
|
+
text: |
|
|
30
|
+
Du kennst den **Prozentwert** $W$ (den Teil) und den **Prozentsatz** $p\,\%$. Über 1 % kommst du zum
|
|
31
|
+
Ganzen: $W$ geteilt durch $p$ ist 1 %, mal 100 ist das Ganze.
|
|
32
|
+
- type: labelled-figure
|
|
33
|
+
image: images/hunderterfeld-klammern.svg
|
|
34
|
+
alt: Ein Hunderterfeld mit 10 mal 10 Kästchen, die linken drei Spalten sind gefärbt. A die Klammer unter dem ganzen Feld, B die Klammer über den gefärbten Spalten.
|
|
35
|
+
caption: Die Klammer um das ganze Feld und die Klammer um den gefärbten Teil.
|
|
36
|
+
source: eigene Zeichnung
|
|
37
|
+
licence: CC0-1.0
|
|
38
|
+
labels:
|
|
39
|
+
- { marker: A, x: 50, y: 94, text: "Grundwert: das Ganze, 100 %" }
|
|
40
|
+
- { marker: B, x: 21, y: 5, text: "Prozentwert: der gefärbte Teil" }
|
|
41
|
+
- type: note
|
|
42
|
+
title: Achtung
|
|
43
|
+
blocks:
|
|
44
|
+
- type: text
|
|
45
|
+
text: |
|
|
46
|
+
Der Grundwert ist bei $p$ unter 100 % immer größer als der Prozentwert. Kommt etwas Kleineres heraus,
|
|
47
|
+
hast du die Formel für den Prozentwert benutzt.
|
|
48
|
+
- type: section
|
|
49
|
+
id: beispiel
|
|
50
|
+
title: Beispiel
|
|
51
|
+
blocks:
|
|
52
|
+
- type: example
|
|
53
|
+
title: Der Preis eines Rollers
|
|
54
|
+
blocks:
|
|
55
|
+
- type: text
|
|
56
|
+
text: Beim Kauf eines Rollers sparst du 30 €. Das sind 12 % Rabatt. Wie viel hat der Roller vorher gekostet?
|
|
57
|
+
- type: table
|
|
58
|
+
caption: Der Grundwert beim Roller
|
|
59
|
+
rowHeaders: true
|
|
60
|
+
rows:
|
|
61
|
+
- [Prozentwert $W$, "30 € (der Teil, der bekannt ist)"]
|
|
62
|
+
- [Prozentsatz $p$, 12 %]
|
|
63
|
+
- [Rechnung, '$G = 30 \cdot 100 : 12 = 250$']
|
|
64
|
+
- [Grundwert $G$, "**250 €** war der alte Preis"]
|
|
65
|
+
- type: figure
|
|
66
|
+
draw: { kind: hundred-grid, filled: 12 }
|
|
67
|
+
alt: Ein Hunderterfeld mit 100 Kästchen, 12 davon sind gefärbt.
|
|
68
|
+
caption: Die 12 gefärbten Kästchen sind der bekannte Teil, 30 €. Alle 100 Kästchen stehen für den Grundwert, 250 €.
|
|
69
|
+
- type: text
|
|
70
|
+
text: "Über 1 %: 30 € : 12 = 2,50 € sind 1 %. Dann 2,50 € · 100 = 250 €."
|
|
71
|
+
- type: section
|
|
72
|
+
id: uebung
|
|
73
|
+
title: Übung
|
|
74
|
+
blocks:
|
|
75
|
+
- type: matching
|
|
76
|
+
id: klammern
|
|
77
|
+
text: Beschrifte A und B. Welcher Begriff gehört zu welcher Klammer?
|
|
78
|
+
material:
|
|
79
|
+
- type: labelled-figure
|
|
80
|
+
image: images/hunderterfeld-klammern.svg
|
|
81
|
+
alt: Ein Hunderterfeld mit 10 mal 10 Kästchen, die linken drei Spalten sind gefärbt. A die Klammer unter dem ganzen Feld, B die Klammer über den gefärbten Spalten.
|
|
82
|
+
source: eigene Zeichnung
|
|
83
|
+
licence: CC0-1.0
|
|
84
|
+
legend: false
|
|
85
|
+
labels:
|
|
86
|
+
- { marker: A, x: 50, y: 94, text: Grundwert }
|
|
87
|
+
- { marker: B, x: 21, y: 5, text: Prozentwert }
|
|
88
|
+
pairsFrom: material
|
|
89
|
+
distractors: [Prozentsatz]
|
|
90
|
+
explanation: Die Klammer um das ganze Feld zeigt das Ganze, den Grundwert. Die Klammer um die gefärbten Spalten zeigt den Teil, den Prozentwert.
|
|
91
|
+
examples:
|
|
92
|
+
accepted: [[[A, Grundwert], [B, Prozentwert]]]
|
|
93
|
+
rejected: [[[0, 1], [1, 0]], [[A, Prozentsatz], [B, Prozentwert]]]
|
|
94
|
+
links:
|
|
95
|
+
- title: Prozentrechnung (Wikipedia)
|
|
96
|
+
url: https://de.wikipedia.org/wiki/Prozentrechnung
|
|
97
|
+
- type: generated
|
|
98
|
+
id: grundwert-ueben
|
|
99
|
+
given:
|
|
100
|
+
W: { int: [5, 150] }
|
|
101
|
+
p: { oneOf: [5, 10, 12, 15, 20, 25, 30, 40, 50] }
|
|
102
|
+
where: ["decimals(W * 100 / p) == 0", "W * 100 / p >= 50", "W * 100 / p <= 500"]
|
|
103
|
+
task:
|
|
104
|
+
text: "Beim Kauf eines Rollers sparst du {{W}} €. Das sind {{p}} % Rabatt. Wie viel hat der Roller vorher gekostet?"
|
|
105
|
+
answer: { value: "W * 100 / p", compare: { number: { format: money } } }
|
|
106
|
+
mistakes:
|
|
107
|
+
- {
|
|
108
|
+
value: "W * p / 100",
|
|
109
|
+
message: "Du hast {{p}} % von {{W}} € berechnet. Gesucht ist aber das Ganze, von dem die {{W}} € ein Teil sind.",
|
|
110
|
+
}
|
|
111
|
+
- { value: "W / p", message: "Das ist erst 1 %. Nimm es noch mal 100, dann hast du das Ganze." }
|
|
112
|
+
hint: "Gesucht ist das Ganze, 100 %. Rechne erst aus, was 1 % ist: {{W}} € geteilt durch {{p}}. Dann mal 100."
|
|
113
|
+
steps:
|
|
114
|
+
- '$G = \frac{W \cdot 100}{p}$'
|
|
115
|
+
- '$G = \frac{{{W}} \cdot 100}{{{p}}} = {{answer}}$, also {{answer}} €.'
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# yaml-language-server: $schema=../../node_modules/@lernapps/app-templates/runtime/explainer/explainer.v1.schema.json
|
|
2
|
+
title: Prozentsatz
|
|
3
|
+
description: "Den Prozentsatz berechnen: p = W : G · 100, mit einem Beispiel und dem Prozentstreifen."
|
|
4
|
+
scope: |
|
|
5
|
+
Gesucht ist, welcher Anteil der Teil vom Ganzen ist, etwa „18 von 24 Schülern“. Man rechnet
|
|
6
|
+
$p = \frac{W}{G} \cdot 100$: Teil durch Ganzes gibt den Anteil, mal 100 die Prozent. Erst der Prozentsatz macht
|
|
7
|
+
Anteile vergleichbar, auch wenn das Ganze verschieden groß ist. Wer unsicher ist, welche Formel passt, fragt sich,
|
|
8
|
+
welche zwei der drei Größen in der Aufgabe stehen.
|
|
9
|
+
blocks:
|
|
10
|
+
- type: section
|
|
11
|
+
id: warum
|
|
12
|
+
title: Warum
|
|
13
|
+
blocks:
|
|
14
|
+
- type: text
|
|
15
|
+
text: |
|
|
16
|
+
„18 von 24 Schülern haben ein Haustier“: Ist das viel? Erst der Prozentsatz macht solche Angaben
|
|
17
|
+
vergleichbar. 75 % sagen sofort, wie groß der Anteil ist, egal ob die Klasse 24 oder 30 Schüler hat.
|
|
18
|
+
- type: section
|
|
19
|
+
id: regel
|
|
20
|
+
title: Regel
|
|
21
|
+
blocks:
|
|
22
|
+
- type: formula
|
|
23
|
+
formula: 'p = \frac{W}{G} \cdot 100'
|
|
24
|
+
- type: definition
|
|
25
|
+
term: Prozentsatz
|
|
26
|
+
explanation: |
|
|
27
|
+
Der Prozentsatz $p\,\%$ ist der Anteil des Prozentwerts $W$ (der Teil) am Grundwert $G$ (das Ganze), in
|
|
28
|
+
Hundertsteln geschrieben.
|
|
29
|
+
- type: note
|
|
30
|
+
title: Merkhilfe
|
|
31
|
+
blocks:
|
|
32
|
+
- type: text
|
|
33
|
+
text: Teil durch Ganzes, also immer durch das Ganze teilen, nie umgekehrt. Dann mal 100.
|
|
34
|
+
- type: section
|
|
35
|
+
id: beispiel
|
|
36
|
+
title: Beispiel
|
|
37
|
+
blocks:
|
|
38
|
+
- type: example
|
|
39
|
+
title: Haustiere in der Klasse
|
|
40
|
+
blocks:
|
|
41
|
+
- type: text
|
|
42
|
+
text: In einer Klasse sind 24 Schüler. 18 davon haben ein Haustier. Wie viel Prozent der Klasse sind das?
|
|
43
|
+
- type: table
|
|
44
|
+
caption: Der Prozentsatz der Klasse
|
|
45
|
+
rowHeaders: true
|
|
46
|
+
rows:
|
|
47
|
+
- [Grundwert $G$, 24 Schüler (die ganze Klasse)]
|
|
48
|
+
- [Prozentwert $W$, 18 Schüler (der Teil)]
|
|
49
|
+
- [Rechnung, '$p = 18 : 24 \cdot 100 = 0{,}75 \cdot 100 = 75$']
|
|
50
|
+
- [Prozentsatz, "**75 %**"]
|
|
51
|
+
- type: figure
|
|
52
|
+
draw: { kind: bar, part: 18, whole: 24 }
|
|
53
|
+
alt: Ein Streifen für 24 Schüler, drei Viertel davon sind gefärbt, 75 %.
|
|
54
|
+
caption: Der ganze Streifen ist der Grundwert, 24 Schüler sind 100 %. Der gefärbte Teil ist der Prozentwert, 18 Schüler sind 75 %.
|
|
55
|
+
- type: text
|
|
56
|
+
text: "Probe: 75 % von 24 sind 24 · 0,75 = 18. Passt."
|
|
57
|
+
- type: section
|
|
58
|
+
id: uebung
|
|
59
|
+
title: Übung
|
|
60
|
+
blocks:
|
|
61
|
+
- type: single-choice
|
|
62
|
+
id: welche-rechnung
|
|
63
|
+
text: In einer Klasse mit 25 Schülern haben 10 ein Haustier. Mit welcher Rechnung bekommst du den Prozentsatz?
|
|
64
|
+
explanation: "Der Prozentsatz ist Teil durch Ganzes, mal 100. Der Teil sind die 10 Schüler mit Haustier, das Ganze die 25 Schüler der Klasse, also 10 : 25 · 100 = 40 %."
|
|
65
|
+
links:
|
|
66
|
+
- title: Prozentrechnung mittels Formeln (Serlo)
|
|
67
|
+
url: https://de.serlo.org/mathe/2193/prozentrechnung-mittels-formeln
|
|
68
|
+
options:
|
|
69
|
+
- text: "10 : 25 · 100"
|
|
70
|
+
correct: true
|
|
71
|
+
info: Teil durch Ganzes, dann mal 100. So kommt der Anteil in Hundertsteln heraus.
|
|
72
|
+
- text: "25 : 10 · 100"
|
|
73
|
+
correct: false
|
|
74
|
+
info: Hier wird das Ganze durch den Teil geteilt. Das ergibt 250 %, mehr als die ganze Klasse.
|
|
75
|
+
- text: "10 · 25 : 100"
|
|
76
|
+
correct: false
|
|
77
|
+
info: So rechnest du einen Prozentwert aus, nicht einen Prozentsatz. Es kommen 2,5 heraus.
|
|
78
|
+
- type: generated
|
|
79
|
+
id: prozentsatz-ueben
|
|
80
|
+
given:
|
|
81
|
+
G: { int: [16, 32] }
|
|
82
|
+
W: { int: [1, 31] }
|
|
83
|
+
where: ["W < G", "decimals(W * 100 / G) == 0"]
|
|
84
|
+
task:
|
|
85
|
+
text: "In einer Klasse sind {{G}} Schüler. {{W}} davon haben ein Haustier. Wie viel Prozent der Klasse sind das?"
|
|
86
|
+
answer: { value: "W * 100 / G", compare: { number: { format: percent, decimals: 0 } } }
|
|
87
|
+
mistakes:
|
|
88
|
+
- {
|
|
89
|
+
value: "W / G",
|
|
90
|
+
message: "Das ist der Anteil als Dezimalzahl. Nimm ihn noch mal 100, dann hast du den Prozentsatz.",
|
|
91
|
+
}
|
|
92
|
+
- {
|
|
93
|
+
value: "G * 100 / W",
|
|
94
|
+
message: "Du hast das Ganze durch den Teil geteilt. Richtig ist: Teil durch Ganzes, also W durch G.",
|
|
95
|
+
}
|
|
96
|
+
hint: "Teile den Teil ({{W}} Schüler) durch das Ganze ({{G}} Schüler) und nimm das Ergebnis mal 100."
|
|
97
|
+
steps:
|
|
98
|
+
- '$p = \frac{W}{G} \cdot 100$'
|
|
99
|
+
- '$p = \frac{{{W}}}{{{G}}} \cdot 100 = {{answer}}$, also {{answer}} %.'
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# yaml-language-server: $schema=../../node_modules/@lernapps/app-templates/runtime/explainer/explainer.v1.schema.json
|
|
2
|
+
title: Prozentwert
|
|
3
|
+
description: "Den Prozentwert berechnen: W = G · p : 100, mit einem Beispiel und dem Hunderterfeld."
|
|
4
|
+
scope: |
|
|
5
|
+
Gesucht ist der Teil des Ganzen, etwa wie viel Euro man bei 20 % Rabatt auf 80 € spart. Man rechnet
|
|
6
|
+
$W = \frac{G \cdot p}{100}$: erst 1 % des Grundwerts ($G$ geteilt durch 100), dann mal $p$. Der Prozentwert hat die
|
|
7
|
+
Einheit des Grundwerts (€, Schüler, mAh). Ein Hunderterfeld zeigt, dass $p\,\%$ von 100 Kästchen $p$ Kästchen sind,
|
|
8
|
+
bei einem Feld mit anderer Größe aber nicht. Weil man beim Malnehmen die Zahlen tauschen darf, ist zum Beispiel 20 %
|
|
9
|
+
von 50 € dasselbe wie 50 % von 20 €, nämlich 10 €. Ein häufiger Fehler ist, das Teilen durch 100 zu vergessen; ein
|
|
10
|
+
anderer, den neuen Preis statt des Rabatts auszurechnen.
|
|
11
|
+
blocks:
|
|
12
|
+
- type: section
|
|
13
|
+
id: warum
|
|
14
|
+
title: Warum
|
|
15
|
+
blocks:
|
|
16
|
+
- type: text
|
|
17
|
+
text: |
|
|
18
|
+
„20 % Rabatt auf 80 €“: Wie viel sparst du wirklich? Der Prozentwert ist der Teil des Ganzen, den die
|
|
19
|
+
Prozente beschreiben. Wer ihn schnell ausrechnen kann, weiß beim Einkaufen, beim Handy-Akku und in jeder
|
|
20
|
+
Statistik sofort, worum es geht.
|
|
21
|
+
- type: section
|
|
22
|
+
id: regel
|
|
23
|
+
title: Regel
|
|
24
|
+
blocks:
|
|
25
|
+
- type: formula
|
|
26
|
+
formula: 'W = \frac{G \cdot p}{100}'
|
|
27
|
+
- type: definition
|
|
28
|
+
term: Prozentwert
|
|
29
|
+
explanation: |
|
|
30
|
+
Der Prozentwert $W$ ist der Anteil am Ganzen, in der Einheit des Grundwerts (€, Schüler, mAh …).
|
|
31
|
+
- type: text
|
|
32
|
+
text: |
|
|
33
|
+
Der **Grundwert** $G$ ist das Ganze, also 100 %. Der **Prozentsatz** $p\,\%$ sagt, welcher Anteil gemeint
|
|
34
|
+
ist. mAh (Milliamperestunden) gibt an, wie viel Ladung ein Akku speichert.
|
|
35
|
+
- type: note
|
|
36
|
+
title: Merkhilfe
|
|
37
|
+
blocks:
|
|
38
|
+
- type: text
|
|
39
|
+
text: Erst 1 % ausrechnen ($G$ geteilt durch 100), dann mal $p$ nehmen.
|
|
40
|
+
- type: section
|
|
41
|
+
id: beispiel
|
|
42
|
+
title: Beispiel
|
|
43
|
+
blocks:
|
|
44
|
+
- type: example
|
|
45
|
+
title: Rabatt auf ein Skateboard
|
|
46
|
+
blocks:
|
|
47
|
+
- type: text
|
|
48
|
+
text: Ein Skateboard kostet 250 €. Es gibt 12 % Rabatt. Wie viel Euro sparst du?
|
|
49
|
+
- type: table
|
|
50
|
+
caption: Der Prozentwert beim Skateboard
|
|
51
|
+
rowHeaders: true
|
|
52
|
+
rows:
|
|
53
|
+
- [Grundwert $G$, 250 € (der volle Preis)]
|
|
54
|
+
- [Prozentsatz $p$, 12 %]
|
|
55
|
+
- [Rechnung, '$W = 250 \cdot 12 : 100 = 30$']
|
|
56
|
+
- [Prozentwert $W$, "**30 €** Rabatt"]
|
|
57
|
+
- type: figure
|
|
58
|
+
draw: { kind: hundred-grid, filled: 12 }
|
|
59
|
+
alt: Ein Hunderterfeld mit 100 Kästchen, 12 davon sind gefärbt.
|
|
60
|
+
caption: Das Hunderterfeld ist der Grundwert, 100 Kästchen sind 100 %. Die 12 gefärbten Kästchen sind der Prozentwert.
|
|
61
|
+
- type: text
|
|
62
|
+
text: "Über 1 %: 250 € : 100 = 2,50 € sind 1 %. Dann 2,50 € · 12 = 30 €."
|
|
63
|
+
- type: section
|
|
64
|
+
id: uebung
|
|
65
|
+
title: Übung
|
|
66
|
+
blocks:
|
|
67
|
+
- type: generated
|
|
68
|
+
id: prozentwert-ueben
|
|
69
|
+
given:
|
|
70
|
+
G: { int: [150, 1500], step: 5 }
|
|
71
|
+
p: { oneOf: [5, 10, 12, 15, 20, 25, 30, 40] }
|
|
72
|
+
where: ["decimals(G * p / 100) <= 2"]
|
|
73
|
+
task:
|
|
74
|
+
text: "Ein Fahrrad kostet {{G}} €. Im Angebot gibt es {{p}} % Rabatt. Wie viel Euro sparst du?"
|
|
75
|
+
answer: { value: "G * p / 100", compare: { number: { format: money } } }
|
|
76
|
+
mistakes:
|
|
77
|
+
- { value: "G * p", message: "Du hast vergessen, durch 100 zu teilen: {{p}} % sind {{p}} Hundertstel." }
|
|
78
|
+
- {
|
|
79
|
+
value: "G - G * p / 100",
|
|
80
|
+
message: "Das ist der neue Preis, nicht der Rabatt. Gefragt ist, wie viel du sparst.",
|
|
81
|
+
}
|
|
82
|
+
hint: "Rechne erst 1 % aus: {{G}} € geteilt durch 100. Dann nimm das mal {{p}}."
|
|
83
|
+
steps:
|
|
84
|
+
- '$W = \frac{G \cdot p}{100}$'
|
|
85
|
+
- '$W = \frac{{{G}} \cdot {{p}}}{100} = {{answer}}$, also {{answer}} € Rabatt.'
|
|
86
|
+
- type: vue-component
|
|
87
|
+
id: prozentfeld
|
|
88
|
+
component: ProzentFeld
|
|
89
|
+
props:
|
|
90
|
+
task: "Das Feld hat {G} Kästchen, zusammen sind sie 100 %. Färbe {p} % davon."
|
|
91
|
+
counter: "{n} von {G} Kästchen gefärbt"
|
|
92
|
+
cell: "Kästchen {n}"
|
|
93
|
+
mistakes:
|
|
94
|
+
- "Du hast {p} Kästchen gefärbt. Das wären {p} %, wenn das Feld 100 Kästchen hätte. Hier sind {G} Kästchen 100 %."
|
|
95
|
+
- "Du hast den Rest gefärbt. Die gefärbten Kästchen sollen die {p} % sein, nicht das, was übrig bleibt."
|
|
96
|
+
examples:
|
|
97
|
+
accepted:
|
|
98
|
+
- { answer: 2, seed: 1 }
|
|
99
|
+
rejected:
|
|
100
|
+
- { answer: 5, seed: 1 }
|
|
101
|
+
- { answer: 38, seed: 1 }
|
|
102
|
+
- { answer: 0 }
|
|
103
|
+
- type: open-task
|
|
104
|
+
id: tauschen-erklaeren
|
|
105
|
+
task: Erkläre in zwei bis vier Sätzen, warum 20 % von 50 € genauso viel sind wie 50 % von 20 €.
|
|
106
|
+
points:
|
|
107
|
+
- text: Der Prozentwert ist Grundwert mal Prozentsatz, geteilt durch 100.
|
|
108
|
+
source: /prozent/prozentwert/#regel
|
|
109
|
+
- text: "Beide Male kommt 20 · 50 : 100 = 10 heraus, also 10 €."
|
|
110
|
+
source: /prozent/prozentwert/#regel
|
|
111
|
+
- text: Beim Malnehmen darf man die Zahlen tauschen, darum ist das Ergebnis gleich.
|
|
112
|
+
source: /prozent/prozentwert/#regel
|
|
113
|
+
- text: Ganze Sätze mit einer Begründung (weil …, darum …).
|
|
114
|
+
kind: form
|
|
115
|
+
solution: |
|
|
116
|
+
Den Prozentwert rechnet man mit $W = \frac{G \cdot p}{100}$. Für 20 % von 50 € ist das
|
|
117
|
+
$\frac{50 \cdot 20}{100} = 10$, für 50 % von 20 € ist es $\frac{20 \cdot 50}{100} = 10$. Weil man beim
|
|
118
|
+
Malnehmen die Zahlen tauschen darf, kommt beide Male 10 € heraus.
|
|
119
|
+
hint: Setz beide Male in die Formel ein und vergleich, was im Zähler steht.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "extends": "@lernapps/tooling/tsconfig.json", "include": ["src"] }
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Paths the architecture does not claim (arc42 H021), relative to this template folder.
|
|
2
|
+
# The entry, which hands the app's core and root component to the shell (if-start), and type declarations for Vite
|
|
3
|
+
# and Vue single-file components: configuration rather than architecture.
|
|
4
|
+
src/main.ts
|
|
5
|
+
src/env.d.ts
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Archetype interactive
|
|
2
|
+
|
|
3
|
+
One app page where the learner's doing is the content: a game, a trainer, a simulation. A static start page says what
|
|
4
|
+
it is and works without JavaScript.
|
|
5
|
+
|
|
6
|
+
## What it can do
|
|
7
|
+
|
|
8
|
+
- Any interaction in one page: keys, buttons, touch.
|
|
9
|
+
- Timers and moving parts: the runtime's clock ticks the app's core.
|
|
10
|
+
- Its own look and colours, images, and libraries with an open licence, bundled.
|
|
11
|
+
- Routes for modes or levels, which a link can open.
|
|
12
|
+
- The learning state on the learner's device, at most 100 kB.
|
|
13
|
+
- German, plus English: texts in message files.
|
|
14
|
+
- Playthroughs prove its behaviour: the build plays them against the core, the browser on desktop and at 360 px.
|
|
15
|
+
|
|
16
|
+
## What it cannot do yet
|
|
17
|
+
|
|
18
|
+
- No full-screen app page: the runtime always shows its frame; an overlay inside it works.
|
|
19
|
+
- No storage beyond 100 kB.
|
|
20
|
+
- No property tests of the core over fixed seeds.
|
|
21
|
+
- A time limit or a required keyboard deviates from accessibility or from 360 px: the catalog entry says so.
|
|
22
|
+
|
|
23
|
+
## What the app supplies
|
|
24
|
+
|
|
25
|
+
- `src/app.yaml` ([schema](../runtime/interactive/interactive.v1.schema.json)), the core
|
|
26
|
+
`src/core/index.ts`, its Vue components in `src/ui/`, data in `src/data/`, texts in `src/messages/`, playthroughs in
|
|
27
|
+
`src/playthroughs/` ([schema](../runtime/interactive/playthrough.v1.schema.json)), and its part of the
|
|
28
|
+
architecture in `docs/arc42/`.
|