This commit is contained in:
2021-04-22 20:14:18 +02:00
commit 4041ea6f38
73 changed files with 7184 additions and 0 deletions

7
.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
Infoskript.aux
Infoskript.log
Infoskript.out
Infoskript.synctex
Infoskript.toc
chapters/titlepage.log
Infoskript.synctex.gz

BIN
Infoskript.pdf Normal file

Binary file not shown.

151
Infoskript.tex Normal file
View File

@@ -0,0 +1,151 @@
\documentclass[12pt,a4paper]{scrartcl}% siehe <http://www.komascript.de>
\usepackage[a4paper,left=2.5cm,right=2cm,top=2.54cm,bottom=2.54cm]{geometry}
%Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage[
type={CC},
modifier={by-sa},
version={4.0},
]{doclicense}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{float}
\usepackage{color}
\usepackage{colortbl}
\usepackage{scratch3}
\usepackage{amsthm}
\usepackage{enumitem}
\usepackage{array}
\usepackage{multicol}
\usepackage{subfigure}
\usepackage{tikz}
\usepackage{pgffor, ifthen}
%Abstände nach den Subsubsections
\RedeclareSectionCommand[
beforeskip=-.5\baselineskip,
afterskip=.25\baselineskip]{subsubsection}
%Sorgt dafür, dass Bilder in Tabellen nicht die horizontalen Linien überlagern.
\newcommand\tabbild[2][]{%
\raisebox{0pt}[\dimexpr\totalheight+\dp\strutbox\relax][\dp\strutbox]{%
\includegraphics[#1]{#2}%
}%
}
% Neues Kommando um Zeilen für handschriftliche Notizen einzufügen.
% Beispiele: https://texblog.org/2012/06/25/adding-lines-for-taking-handwritten-notes-in-latex/
\newcommand{\notes}[3][\empty]{%
\noindent \vspace{10pt}\\
\foreach \n in {1,...,#2}{%
\ifthenelse{\equal{#1}{\empty}}
{\rule{#3}{0.5pt}\\}
{\rule{#3}{0.5pt}\vspace{#1}}
}
}
%%Definition neuer Befehle für Beispiele Aufgaben usw.
\newtheoremstyle{newline}% name
{\baselineskip}% Space above
{\baselineskip}% Space below
{}% Body font
{}% Indent amount
{\bfseries}% Theorem head font
{}% Punctuation after theorem head
{\newline}% Space after theorem head
{\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}:}% Theorem head spec (can be left empty, meaning normal )
\theoremstyle{newline}
\newtheorem{bsp}{Beispiel}
\newtheorem{aufgabe}{Aufgabe}[section]
\newcommand{\hinweis}{\textbf{Hinweis: }}
\newcommand{\tipp}{\textbf{Tipp: }}
\newcommand{\info}{\textbf{Info: }}
%%Neudefinition der Scratch Blöcke
%%Link zur Doku: http://ftp.uni-erlangen.de/ctan/macros/latex/contrib/scratch3/scratch3-fr.pdf
%Startflagge
\newcommand{\start}{\blockinit{Wenn \greenflag angeklickt wird}}
%gehe Block
\newcommand{\move}[1]{\blockmove{gehe \ovalnum{#1} er Schritt}}
%Drehe links
\newcommand{\turnl}[1]{\blockmove{drehe dich \turnleft{} um \ovalnum{#1} Grad}}
%Drehe rechts
\newcommand{\turnr}[1]{\blockmove{drehe dich \turnright{} um \ovalnum{#1} Grad}}
%setze Richtung
\newcommand{\set}[1]{\blockmove{setze Richtung auf \ovalnum{#1} Grad}}
%gehe zu
\newcommand{\setxy}[2]{\blockmove{gehe zu x:\ovalnum{#1} y:\ovalnum{#2}}}
%ändere x um
\newcommand{\movex}[1]{\blockmove{ändere x um \ovalnum{#1} }}
%ändere y um
\newcommand{\movey}[1]{\blockmove{ändere y um \ovalnum{#1} }}
%Lösche Malspuren
\newcommand{\delete}[0]{\blockpen{lösche alles}}
%schalte Stift ein
\newcommand{\penon}[0]{\blockpen{schalte Stift ein}}
%schalte Stift aus
\newcommand{\penoff}[0]{\blockpen{schalte Stift aus}}
%wiederhole n mal
\newcommand{\repeatn}[2]{\blockrepeat{wiederhole \ovalnum{#1} mal}{#2}}
%while
\newcommand{\while}[2]{\blockrepeat{wiederhole bis {#1}}{#2}}
%if-Anweisung
\newcommand{\ifopempty}[2]{\blockif{falls, \boolempty{#1} dann}{#2}}
\newcommand{\ifop}[2]{\blockif{falls {#1} dann}{#2}}{}
%if-else
\newcommand{\ifelseop}[3]{\blockifelse{falls {#1} dann}{#2}{#3}}
%Set Scratchumgebung
\setdefaultscratch{scale=.8}
\setdefaultscratch{else word = sonst}
%%Grundrechenarten
%plus
\newcommand{\plus}[2]{\ovaloperator{\ovalnum{#1} + \ovalnum{#2}}}
%minus
\newcommand{\minus}[2]{\ovaloperator{\ovalnum{#1} - \ovalnum{#2}}}
%mal
\newcommand{\mult}[2]{\ovaloperator{\ovalnum{#1} * \ovalnum{#2}}}
%geteilt
\newcommand{\teilen}[2]{\ovaloperator{\ovalnum{#1} / \ovalnum{#2}}}
%%Operatoren
%and
\newcommand{\booland}[2]{\booloperator{{#1} und {#2}}}
%not
\newcommand{\boolnot}[1]{\booloperator{\boolempty{#1}}}
%%Variablen
%Variable
\newcommand{\variable}[1]{\ovalvariable{#1}}
%setvariable
\newcommand{\setvar}[2]{\blockvariable{setze \selectmenu{#1} auf \ovalnum{#2}}}
%changevar
\newcommand{\changevar}[2]{\blockvariable{ändere \selectmenu{#1} um \ovalnum{#2}}}
\begin{document}
\input{chapters/titlepage}
\pagebreak
\input{chapters/bewertungsraster}
\pagebreak
\tableofcontents
\pagebreak
\input{chapters/einleitung}
\pagebreak
\input{chapters/erste_programme}
\pagebreak
\input{chapters/schleifen}
\pagebreak
\input{chapters/variablen}
\pagebreak
\input{chapters/if}
\pagebreak
\input{chapters/projekt}
\end{document}

1
LICENSE Normal file
View File

@@ -0,0 +1 @@
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

View File

@@ -0,0 +1,9 @@
%Bewertungsraster
\begin{tabularx}{\textwidth}{|m{120mm}|c|r|}
\toprule
\multicolumn{3}{|l|}{\textbf{\Large Bewertungsraster}} \\ \midrule
Text 1 & Text 2 & Text 3 \\ \midrule
\multicolumn{2}{|r|}{\textbf{Summe Punkte:}} & \\ \midrule
\multicolumn{2}{|r|}{\textbf{Projektnote:}} & \\
& & \\ \bottomrule
\end{tabularx}

18
chapters/einleitung.tex Normal file
View File

@@ -0,0 +1,18 @@
\section{Einleitung}
Programmieren bezeichnet die Tätigkeit Programme für Computer zu erstellen. Computerprogramme werden mit Hilfe einer Programmiersprache, die der Computer versteht, entwickelt (codiert). Teilweise werden für die Programmierung Codegeneratoren verwendet, die Programmcodes aus vordefinierten Blöcken automatisch erzeugen.\\
\\
In unserem Basiskurs verwenden wir die Programmiersprache \textbf{Scratch}. \textbf{Scratch} ist eine erstmals 2007 veröffentlichte bildungsorientierte visuelle Programmiersprache für Kinder und Jugendliche inklusive ihrer Entwicklungsumgebung. Sie wurde am MIT entwickelt und kann als Web-App in einem modernen Browser genutzt werden oder als Offline-Editor. Die mobilen Browser Chrome und Safari bieten eine Touch-Unterstützung an.\\
Web-App: \url{https://scratch.mit.edu/projects/editor}\\
Offline-Editor:\url{https://scratch.mit.edu/download}\\
\begin{figure}[h]
\centering
\includegraphics[width=0.9\linewidth]{"images/Scratch Download"}
\caption{Downloadseite des Offline-Editors}
\label{fig:scratch-download}
\end{figure}
Wie jede natürliche Sprache bestehen Programmiersprachen aus Wörtern, die eine bestimmte Bedeutung haben. Man verwendet eine Programmiersprache um einem Computer Anweisungen zu geben. Deshalb heißen die Wörter einer Programmiersprache Befehle oder auch Instruktionen. Ein Programm besteht aus einer Reihe von Befehlen.\\
\\
Ziel des Programmierens ist es Tätigkeiten eines Computers zu automatisieren. Computer können nur die Befehle ausführen mit denen sie programmiert wurden und können im Zweifelsfall nicht frei entscheiden. Damit Befehle eindeutig sind und muss die Tätigkeit, die automatisiert werden soll, vollständig verstanden werden. Erst dann können Programmierer die Tätigkeit in eine Programmiersprache übersetzen. Bei Scratch werden die Befehle mittels Codeblöcken an den Computer gegeben. Mann kann mehrere Blöcke per Drag\&Drop aneinander hängen und so zu komplexen Programmen gelangen.\\
\\
Im nächsten Kapitel lernst du die ersten Befehle und kleine Programme kennen.

View File

@@ -0,0 +1,303 @@
\section{Die ersten Programme}
\subsection{Scratch-Oberfläche}
Die Oberflächen des Online- und Offline-Editors sind identisch und sehr übersichtlich gestaltet.\\
\begin{figure}[h]
\centering
\includegraphics[width=0.9\linewidth]{"images/Aufbau Scratch"}
\caption{Scratch-Oberfläche}
\label{fig:aufbau-scratch}
\end{figure}\\
Die Scratch-Oberfläche teilt sich in vier Bereiche auf.\\
Auf der \textcolor{red}{\textbf{Bühne}} läuft alles ab, was du programmierst. Dort machen deine Figuren das, was du ihnen im \textcolor{blue}{\textbf{Programmierbereich}} aufträgst.\\
In der \textcolor{green}{\textbf{Figurenliste}} findest du alle Figuren, die in deinem Projekt dabei sind. Anfangs ist es nur eine Figur. Du kannst dort auch neue Figuren erzeugen und bestimmte Eigenschaften festlegen. Außerdem findest du dort auf der rechten Seite den Hintergrund deiner Bühne, die Bühnenbilder.\\
In der \textcolor{magenta}{\textbf{Blockpalette}} findest du die Blöcke, die du zum Programmieren brauchst. Du kannst sie entweder dort direkt durch einen Mausklick testen, oder mit der Maus in den \textcolor{blue}{\textbf{Programmierbereich}} ziehen und an ein Programm anfügen. Die Anweisungen werden in verschiedene Bereiche unterteilt, die sich farblich unterscheiden.\\
Ähnlich wie LEGO-Steine werden die Blöcke im \textcolor{blue}{\textbf{Programmierbereich}} zu einem Programm zusammengefügt.
\\
\fbox{\parbox{\linewidth}{\textbf{Hinweis:} Falls Scratch nicht mit der Standardsprache Deutsch gestartet ist, kann die Sprache über den Globus links oben geändert werden.}}
\subsection{Neue Befehle}
Die Bühne in Scratch ist wie ein Koordinatensystem in der Mathematik aufgebaut. Die x-Achse verläuft waagrecht und die y-Achse senkrecht. Der Ursprung ($ x=0 ; y=0 $) liegt im Mittelpunkt der Bühne.\\
Zur Steuerung der Katze auf der Bühne gibt es folgende grundlegende Befehle:\\
\begin{center}
\begin{tabular}{|m{5cm}|m{8cm}|c}
\hline
\tabbild[width=\linewidth]{"images/befehl 10er.png"} & Die Figur bewegt sich 10 Schritte in die aktuelle Richtung. Setzt man eine negative Zahl für die Anzahl der Schritte, läuft die Figur rückwärts. \\
\hline
\tabbild[width=\linewidth]{"images/befehl richtung.png"} & Setzt die Richtung der Figur in Richtung des Pfeils. Die Gradzahl kann auch direkt eingegeben geben. $0^\circ$ ist dabei senkrecht nach oben und nimmt im Uhrzeigersinn zu. \\
\hline
\tabbild[width=\linewidth]{"images/befehl koords.png"} & Setzt die Figur auf die Koordinaten $ x=19 ; y=5 $. \\
\hline
\tabbild[width=\linewidth]{"images/befehl setze x.png"} & Setzt die x-Koordinate der Figur auf 50. Die y-Koordinate bleibt unverändert.\\
\hline
\tabbild[width=\linewidth]{"images/befehl setze y.png"} & Setzt die y-Koordinate der Figur auf 50. Die x-Koordinate bleibt unverändert. \\
\hline
\tabbild[width=\linewidth]{"images/befehl x.png"}& Ändert die x-Koordinate um die Zahl. Es sind sowohl positive als aus negative Änderungen möglich. \\
\hline
\tabbild[width=\linewidth]{"images/befehl y.png"}& Ändert die x-Koordinate um die Zahl. Es sind sowohl positive als aus negative Änderungen möglich. \\
\hline
\end{tabular}
\end{center}
Damit man die Befehle (und eventuelle Fehler im Programm) leichter nachvollziehen kann, lässt man seine Figur ihre Bewegungen auf der Bühne zeichnen. Dazu benötigt man die Erweiterung \textit{Malstift} für Scratch. Die Übersicht der verfügbaren Erweiterungen kann man über einen Klick auf das blaue Symbol in der linken unteren Ecke (siehe Abb. \ref{fig:aufbau-scratch}) öffnen. Ein zweiter Klick auf den \textit{Malstift} fügt diesen zur Blockpalette hinzu.
\pagebreak
\begin{bsp}
\label{bsp1}
Das folgende Programm zeichnet ein Rechteck der Größe $100 \times 200$. Die Größe wird in der Anzahl der Schritte gemessen.\\
\begin{center}
\begin{multicols}{2}
\begin{scratch}
\setxy{-100}{-50}
\set{90}
\delete
\penon
\move{200}
\turnl{90}
\move{100}
\turnl{90}
\move{200}
\turnl{90}
\move{100}
\penoff
\end{scratch}
\begin{tikzpicture}
\draw[step=0.5cm,color=gray,thin,xshift=0.5cm,yshift=0.5cm] (0,0) grid +(85mm,125mm);
\end{tikzpicture}
\end{multicols}
\end{center}
Überlege und skizziere neben dem Codeblock, welchen Weg die Katze bei der Ausführung des Programm läuft. Programmiere den Codeblock am Computer und überprüfe deine Hypothese, indem du ihn ausführen lässt (Doppelklick auf den Codeblock).
\end{bsp}
\textbf{Speichere jede der folgenden Aufgaben in einer einen Datei ab. Der Dateiname soll die Nummer der Aufgabe sein (Bsp:``Aufgabe 2.1'').}\\
\newpage
\begin{aufgabe}
Wandle das Programm aus Beispiel \ref{bsp1} so ab, dass die Katze ein Quadrat der Größe $150 \times 150$ zeichnet.
\end{aufgabe}
\begin{aufgabe}
Programmiere ein Skript für deine Figur so, dass sie ein gleichseitiges Dreieck mit der Seitenlänge 250 zeichnet. Gehe folgendermaßen vor:
\begin{enumerate}
\item Skizziere hier den Weg, den deine Katze laufen soll.\\
\begin{tikzpicture}
\draw[step=0.5cm,color=gray,thin,xshift=0.5cm,yshift=0.5cm] (0,0) grid +(160mm,50mm);
\end{tikzpicture}
\item Überlege, wie groß die Innenwinkel eines gleichseitigen Dreiecks sind. Die Figur dreht jeweils um $180^\circ$ minus den Innenwinkel des Dreiecks.
\item Programmiere dein Skript in Scratch. (Tipp: Setze deine Figur zu Beginn deines Programms in das linke untere Viertel der Bühne.)
\end{enumerate}
\end{aufgabe}
\begin{aufgabe}
Schreibe ein Programm, dass die abgebildete Skizze zeichnet.\\
Lege als erstes einen geeigneten Startpunkt fest und die Blickrichtung fest.
\begin{center}
\includegraphics[width=0.3\linewidth]{images/Rhombus}
\end{center}
\end{aufgabe}
\newpage
\subsubsection*{Farben}
Die Figur kann in verschiedenen Farben und Strichstärken zeichnen. Hier eine kleine Übersicht:
\begin{center}
\begin{tabular}{|m{5cm}|m{8cm}|c}
\hline
\tabbild[width=0.7\linewidth]{"images/befehl pen on.png"} & Schaltet den Malstift ein. \\
\hline
\tabbild[width=0.7\linewidth]{"images/befehl pen off.png"} & Schaltet den Malstift aus. Es ist sinnvoll am Ende eines Programms den Stift auszuschalten um keine ungewollten Linien zu zeichnen, wenn die Figur danach bewegt wird. \\
\hline
\tabbild[width=0.7\linewidth]{"images/befehl del.png"} & Löscht alle bisherigen Malspuren, z.B. nachdem die Figur an ihrer Startposition angekommen ist. \\
\hline
\tabbild[width=\linewidth]{"images/befehl pen color.png"} & Legt die Farbe des Stifts fest. Ein Klick in das Farbfeld öffnet den Farbeditor.\\
\hline
\tabbild[width=\linewidth]{"images/befehl pen thick.png"} & Setzt die Strichstärke auf die gewünschte Größe. \\
\hline
\end{tabular}
\end{center}
\begin{aufgabe}
Schreibe ein Programm, das einen Blitz (siehe Skizze) zeichnet. Wähle selbst die Länge der Linien und der Winkel. Bonus: Ändere die Farbe der Linie so, dass es tatsächlich wie ein Blitz aussieht.
\begin{center}
\includegraphics[width=0.2\linewidth]{images/Blitz}
\end{center}
\end{aufgabe}
\newpage
\begin{bsp}
Im nächsten Schritt soll die Katze ein regelmäßiges Sechseck wie in Abbildung \ref{fig:6eck} zeichnen.\\
\begin{figure}[H]
\begin{minipage}[b]{.4\linewidth} % [b] => Ausrichtung an \caption
\centering
\includegraphics[width=\linewidth]{images/6eck}
\caption[Scratch-Figur Sechseck]{Sechseck}
\label{fig:6eck}
\end{minipage}
\hspace{.1\linewidth}% Abstand zwischen Bilder
\begin{minipage}[b]{.4\linewidth} % [b] => Ausrichtung an \caption
\centering
\includegraphics[width=\linewidth]{images/6eck2}
\caption[Scratch-Figur Sechseck]{Sechseck mit Winkeln}
\label{fig:6eck2}
\end{minipage}
\end{figure}
\begin{center}
\begin{multicols}{2}
Vor der Programmierung des Skripts müssen wir festlegen, an welcher Stelle unsere Figur mit dem Zeichnen beginnt. In Abb.\ref{fig:6eck} sitzt die Katze bereits an entsprechender Stelle.\\
Als nächstes überlegen wir, um wie viel Grad sich die Katze nach dem Zeichnen einer jeden Seite drehen muss (siehe Abb. \ref{fig:6eck2}).Damit zum Schluss ein regelmäßiges Sechseck entsteht müssen alle sechs Winkel gleich groß sein. Die Katze startet mit Blickrichtung nach oben (In Scratch: Richtung $0^\circ$) und befindet sich am Schluss ihrer Bewegung wieder an ihrer Startposition. Sie hat nach dem 6-maligen eine vollständige Drehung von $360^\circ$ ausgeführt. Der Drehwinkel an jeder Ecke ist somit $\frac{360^\circ}{6}=60^\circ$. Die ist exakt der Nebenwinkel zum Innenwinkel des regelmäßigen Sechsecks.\\
Nachdem wir jetzt den Ablauf des Programms kennen, können wir es in Scratch programmieren. Schreibe das Programm ab und führe es aus.
\begin{center}
\begin{scratch}
\setxy{-50}{-50}
\delete
\penon
\set{0}
\move{100}
\turnr{60}
\move{100}
\turnr{60}
\move{100}
\turnr{60}
\move{100}
\turnr{60}
\move{100}
\turnr{60}
\move{100}
\end{scratch}
\end{center}
\end{multicols}
\end{center}
\label{bsp:6eck}
\end{bsp}
\begin{aufgabe}
Schreibe ein Programm, das ein regelmäßiges Fünfeck mit Seitenlänge 110 zeichnet. Gehe wie in Beispiel \ref{bsp:6eck} vor (Skizze auf Papier, Winkel einzeichnen ...).
\end{aufgabe}
\pagebreak
\subsection{Programme mit Rechnungen}
Computer können mathematische Berechnungen sehr schnell durchführen, weshalb sie auch "Rechner" genannt werden. Rechnungen sind in Scratch im Block \textcolor{green}{\textit{Operatoren}} untergebracht.
\begin{bsp}
Wir wollen den Term $(163\cdot 3)-(77\cdot 4)$ berechnen lassen. Dafür schreiben wir in Scratch folgendes Programm:
\begin{figure}[H]
\centering
\includegraphics[width=0.4\linewidth]{"images/bsp rechnen"}
\label{fig:bsp-rechnen}
\caption{Beispiel für die Berechnung eines mathematischen Terms.}
\end{figure}
\end{bsp}
Ein Klick auf den Codeblock führt die Berechnung aus und zeigt das Ergebnis in einer Sprechblase darunter an.
Damit lässt sich Scratch nicht nur als (umständlicher) Taschenrechner nutzen, sondern man kann diese Berechnungen direkt in seine Programme einbauen.
\begin{bsp}
\begin{multicols}{2}
Erinnern wir uns an Beispiel \ref{bsp:6eck}, in dem wir das regelmäßige Sechseck gezeichnet haben. Die Figur dreht sich in 6 Schritten insgesamt um $360^\circ$. Sie dreht sich an jeder Ecke um $\frac{360^\circ}{6}$. Wir müssen dies nicht selbst berechnen sondern können es das Programm überlassen. Unser Beispiel sieht jetzt aus wie nebenan.
\columnbreak
\begin{figure}[H]
\centering
\includegraphics[width=0.7\linewidth]{"images/bsp 6eck rechnen"}
\label{fig:bsp-6eck-rechnen}
\end{figure}
\end{multicols}
\end{bsp}
\pagebreak
\begin{aufgabe}
Schreibe ein Programm, das ein regelmäßiges Siebeneck zeichnet. Die Seitenlänge kannst du selbst wählen.
\end{aufgabe}
\begin{bsp}
Wir möchten ein rechtwinkliges Dreieck wie in Abb. \ref{fig:dreieck} zeichnen. Das Dreieck hat einen $90^\circ$ und zwei $45^\circ$ Winkel. Die Katheten (kurzen Seiten) haben die Länge x. Die Länge der Hypothenuse y (lange Seite) lässt sich mit dem Satz des Pythagoras ("Die Summe der Kathetenquadrate ist gleich dem Quadrat der Hypothenuse") berechnen. Du lernst ihn in Klasse 9 im Fach Mathematik kennen. Für jetzt reicht das Ergebnis: $y \approx x\cdot 1,414214$.\\
\begin{figure}[H]
\centering
\includegraphics[width=0.3\linewidth]{images/dreieck}
\caption{Rechtwinkliges Dreieck}
\label{fig:dreieck}
\end{figure}
Anstatt die Länge umständlich vorher zu Berechnen, übernimmt dies jetzt unser Programm. Achte darauf, statt eines Dezimalkommas einen Dezimalpunkt zu verwenden.
\begin{center}
\begin{scratch}
\setxy{-50}{-50}
\delete
\penon
\set{45}
\move{70}
\turnr{90}
\move{70}
\turnr{135}
\move{\mult{70}{1.414214}}
\end{scratch}
\end{center}
\label{bsp:dreieck-rechtwinklig}
\end{bsp}
\pagebreak
\begin{aufgabe}
Schreibe ein Programm, das mit Scratch das Haus des Nikolaus (sie Abb. \ref{fig:haus-nikolaus}) zeichnet. Es besteht aus mehreren rechtwinkligen Dreiecken wie in Beispiel \ref{bsp:dreieck-rechtwinklig}. Damit kannst du überlegen, wie viel länger/kürzer die einzelnen Strecken sind. Das Grundquadrat hat eine Seitenlänge von 185.
\begin{figure}[H]
\centering
\includegraphics[width=0.3\linewidth]{"images/haus nikolaus"}
\caption{Schema Haus des Nikolaus}
\label{fig:haus-nikolaus}
\end{figure}
\end{aufgabe}
\pagebreak
\subsection{Teste dich selbst}
\subsubsection*{Wissensfragen}
\begin{enumerate}
\item Was haben Computer mit Automatisierung zu tun?
\notes[10pt]{1}{\textwidth}
\item Ist eine Programmiersprache eine Sprache?
\notes[10pt]{1}{\textwidth}
\item Wozu dienen Programmiersprachen?
\notes[10pt]{1}{\textwidth}
\item Was ist ein Programm?
\notes[10pt]{1}{\textwidth}
\item Was haben Programme mit einer Programmiersprache zu tun?
\notes[10pt]{2}{\textwidth}
\item Welche Befehle hast du in Scratch kennen gelernt? Nenne 5.
\notes[10pt]{2}{\textwidth}
\item Beschreibe kurz den Ablauf des Codeausschnitts und zeichne das Bild dazu.
\begin{center}
\begin{multicols}{2}
\begin{scratch}
\move{100}
\turnr{90}
\move{100}
\turnr{90}
\move{100}
\turnr{90}
\move{100}
\turnr{90}
\end{scratch}
\begin{tikzpicture}
\draw[step=0.5cm,color=gray,thin,xshift=0.5cm,yshift=0.5cm] (0,0) grid +(85mm,85mm);
\end{tikzpicture}
\end{multicols}
\end{center}
\end{enumerate}
\subsubsection*{Programmieraufgaben}
\begin{aufgabe}
Schreibe ein Programm, das mit der Katze ein Segelschiff wie in der Skizze zeichnet. Verwende die Maßangaben aus der Skizze.
\begin{figure}[H]
\centering
\includegraphics[width=0.6\linewidth]{images/boot}
\label{fig:boot}
\end{figure}
\end{aufgabe}
\begin{aufgabe}
Die folgende Abbildung zeigt ein kleines Quadrat, das um $45^\circ$ gedreht in einem großen Quadrat liegt. Die Seiten des großen Quadrats sind $1,414214$ Mal so lang wie dies Seiten des kleinen Quadrats.
Schreibe ein Programm, dass diese Figur mir den zwei Quadraten zeichnet. Das große Quadrat soll eine Seitenlänge von $218$ haben und die Katze soll sich am Ende verstecken.
\begin{figure}[H]
\centering
\includegraphics[width=0.7\linewidth]{images/quadrat}
\label{fig:quadrat}
\end{figure}
\end{aufgabe}

178
chapters/if.tex Normal file
View File

@@ -0,0 +1,178 @@
\section{Verzweigungen und bedingte Schleifen}
\subsection{if-Verzweigung (Befehl ausführen, wenn ...)}
Beim Programmieren kommt es häufig vor, dass das Programm auf verschiedene Situationen unterschiedlich reagieren soll. Man denke an einfach die Steuerung einer Figur, deren Richtung von unterschiedlichen Tasten abhängt.\\
Dafür benötigt man die \textit{if}-Anweisung. Diese prüft, ob eine Bedingung erfüllt ist ("`if"' bedeutet im Englischen "`wenn"' oder "`falls"'). In Scratch steht hier der Block \begin{scratch}\ifopempty{~}{~}\end{scratch} zur Verfügung.
\begin{bsp}
Herr Drechsler hat den Computer so programmiert, dass er ihn erkennt und begrüßt, wenn er sich mit seinem Vornamen vorstellt. Jeder andere wird nicht begrüßt. Bei einer \textit{if}-Anweisung prüft der Computer die Bedingung, ob der Wert der Variable \textcolor{blue}{\textbf{Antwort}} gleich "`Fabian"' ist. Nur wenn dies der Fall ist, führt er den Code innerhalb der Anweisung aus und sagt die Begrüßung.\\
\begin{center}
\begin{scratch}
\start
\blocksensing{frage \ovalnum{Whats your name?} und warte}
\ifop{ \booloperator{\ovalsensing{Antwort} = \ovalnum{Fabian}},}{
\blocklook{sage \ovalnum{Hallo Fabian}}
}
\end{scratch}
\end{center}
\end{bsp}
\begin{aufgabe}
Schreibe einen Begrüßungsprogramm für dich selbst (Es darf gerne komplexer sein.)
\end{aufgabe}
Mit einer \textit{if}-Anweisung sagt man dem Computer, dass er den Block nur ausführen soll, wenn die Bedingung erfüllt ist. Wenn diese nicht erfüllt ist, dann wird der Block komplett übersprungen. \\
Man kann in einer if-Anweisung auch direkt angeben, was der Computer machen soll, wenn die Bedingung nicht erfüllt ist. Das ist eine \textit{if-else}-Anweisung ("`else"' bedeutet im Englischen "`andernfalls"').\\
Bei einer \textit{if-else}-Anweisung wählt der Computer eine von zwei Alternativen aus. Je nachdem, ob die Bedingung erfüllt ist führt er den ersten Codeblock aus, andernfalls den zweiten.
\pagebreak
\begin{bsp}
Das folgende Programm ähnelt dem im vorherigen Beispiel. Hier wird direkt dem Computer mitgeteilt, was er tun soll, wenn die Bedingung \booloperator{\ovalsensing{Antwort} = \ovalnum{Fabian}} nicht erfüllt ist.\\
\begin{center}
\begin{scratch}
\centering
\start
\blocksensing{frage \ovalnum{Whats your name?} und warte}
\ifelseop{
\booloperator{\ovalsensing{Antwort} = \ovalnum{Fabian}},}
{
\blocklook{sage \ovalnum{Hallo Fabian} für \ovalnum{2} Sekunden}
\blocklook{sage \ovalnum{Schön, dass du da bist.}}}
{\blocklook{sage \ovalnum{Leider kenne ich dich nicht.}}
}
\end{scratch}
\end{center}
\end{bsp}
\subsection{Logische Operatoren}
Mir der if-Anweisung (\begin{scratch}\ifopempty{~}{~}\end{scratch}) prüfst du, ob eine Bedingung erfüllt ist. Wenn sie erfüllt ist, führt der Computer die Anweisungen im Körper der if-Anweisung aus. In manchen Fällen, soll etwas ausgeführt werden, wenn die Bedingung nicht erfüllt ist. Oder der Computer soll die Anweisung nur ausführen, wenn zwei Bedingungen gleichzeitig erfüllt sind. Dies geschieht in einer Programmiersprache mit logischen Operatoren, die du in diesem Kapitel kennen lernst.\\
\subsubsection*{Negation}
Das Gegenteil der Behauptung "`die Wand hat die Farbe blau"' lautet "`die hat nicht die Farbe blau"'.\\
Das Gegenteil der Behauptung "`x ist unterschiedlich von 5"' lautet "`x ist gleich 5"'.\\
Das Gegenteil von "`$x<5$"' lautet "`$x\geq5$"'. Statt dem Begriff "`Gegenteil" verwendet man das Wort "`Negation"'. Wir sagen also "`$x\geq5$"' ist die Negation von "`$x<5$"'.\\
\subsubsection*{Wahrheitstabellen}
Mit "`und"' und "`oder"' kann man zwei Behauptungen A und B verknüpfen und so komplexe Aussagen treffen. Um alle möglichen Varianten der Verknüpfungen übersichtlich darzustellen, verwendet man sogenannte Wahrheitstabellen. Für zwei Behauptungen A und B gibt es in einer Wahrheitstabelle genau 4 Möglichkeiten:
\begin{enumerate}
\setlength\itemsep{0em}
\item Beide Behauptungen A und B gelten.
\item A gilt und B nicht.
\item A gilt und B nicht.
\item Beide Behauptungen A und B gelten nicht.
\end{enumerate}
Jede dieser vier Möglichkeiten entspricht einer Zeile in der Wahrheitstabelle:
\begin{tabular}{ccc}
\vspace{1cm}
\begin{tabular}{|c|c|}
\hline
\textbf{Behauptung A} & \textbf{Behauptung B}\\
\hline
\cellcolor{green}gilt & \cellcolor{green}gilt \\
\hline
\cellcolor{green}gilt & \cellcolor{red}gilt nicht \\
\hline
\cellcolor{red}gilt nicht & \cellcolor{green}gilt\\
\hline
\cellcolor{red}gilt nicht & \cellcolor{red}gilt nicht \\
\hline
\end{tabular}
&
\begin{tabular}{c}
Verknüpfung\\
$\longrightarrow$\\
\end{tabular}
&
\begin{tabular}{|c|c|}
\hline
\textbf{A \underline{oder} B} & \textbf{A \underline{und} B} \\
\hline
\cellcolor{green}gilt & \cellcolor{green}gilt \\
\hline
\cellcolor{green}gilt & \cellcolor{red}gilt nicht \\
\hline
\cellcolor{green}gilt & \cellcolor{red}gilt nicht \\
\hline
\cellcolor{red}gilt nicht & \cellcolor{red}gilt nicht \\
\hline
\end{tabular}
\\
\end{tabular}\\
In der den ersten beiden Spalten sind alle möglichen Kombination von A und B aufgelistet. Die dritte Spalte gibt die Verknüpfung der ersten beiden durch den Operator "`A oder B"' wieder. Diese gilt immer dann, wenn mindestens eine der beiden Behauptungen A oder B gilt.Nur im letzten Fall, wenn beide Behauptungen nicht gelten gilt "`A oder B"' ebenfalls nicht.\\
Die letzte Spalte zeigt die Verknüpfung "`A und B"', Diese Verknüpfung gilt nur, wenn sowohl A als auch B gilt, d.h. beide Bedingungen müssen erfüllt sein. In allen anderen Fällen gilt "`A und B"' nicht.
\subsubsection*{Bedingungen verknüpfen in Scratch}
Bislang wurde in einer if-Anweisung genau eine Bedingung geprüft. In manchen Fällen ist es aber notwendig, dass mehrere Bedingungen mit einander verknüpft werden. Beispielsweise in einem Quiz mit einer Multiple-Choice-Frage die zwei richtige Antworten besitzt. Dort sollte die Antwort nur als richtig gewertet werden, wenn beide Antworten gegeben wurde. Dies lässt sich in Scratch über die Operatoren \booloperator{\boolempty und \boolempty} und \booloperator{\boolempty oder \boolempty} realisieren.\\
\subsection{while-Schleifen}
Mit if-Schleifen lässt man den Computer nur Tätigkeiten ausführen, wenn eine definierte Bedingung erfüllt ist. Mit Wiederholungsschleifen kannst du den Computer einen Befehl eine bestimmte Anzahl oft wiederholen lassen. Manchmal ist es wünschenswert, dass der Computer einen Befehl ausführt bist eine gewisse Bedingung erfüllt ist. Dafür gibt es die sogenannten \textit{while}-Schleifen.\\
Die \textit{while}-Schleife wiederholt eine Tätigkeit, solange die Bedingung erfüllt ist. \textbf{Vorsicht:} Wenn die Bedingung immer gilt, läuft die Schleife einfach ewig weiter.\\
\textit{While}-Schleifen eignen sich besonders dann, wenn man vorher nicht weis, wie oft eine Schleife durchlaufen werden soll.
\begin{bsp}
Mit der \textit{while}-Schleife hier, lassen wir die Figur solange nach rechts laufen, bis die Grenze für die X-Koordinate erreicht ist.
\begin{center}
\begin{scratch}
\start
\setxy{-100}{0}
\while{\booloperator{\ovalmove{x-Position} $<$ \ovalnum{150}}}{\movex{1}}
\end{scratch}
\end{center}
\end{bsp}
\subsection{Neue Befehle}
Beim Programmieren braucht man die Möglichkeit, je nach Situation verschiedene Tätigkeiten auszuführen. Die Situation wird durch die Werte einer Variablen beschrieben. Der Computer muss in Abhängigkeit des Wertes einer Variablen eine Entscheidung treffen. Das ermöglichen die Anweisungen \textit{if,else,while}.\\
In diesem Kapitel hast du folgende Befehle kennengelernt:
\begin{center}
\begin{tabular}{|m{5cm}|m{8cm}|c}
\hline
\tabbild[width=\linewidth]{"images/if"} & Die Anweisungen im Körper zu \textit{if} werden nur dann ausgeführt, wenn die Bedingung erfüllt ist. Zwei Bedingungen können mit den "`und"' oder "`oder"' Operatoren verknüpft werden. \\
\hline
\tabbild[width=\linewidth]{"images/ifelse"} & Es wird entweder der Codeblock 1 oder Codeblock 2 ausgeführt. Wenn die Bedingung erfüllt ist Codeblock 1, ansonsten Codeblock 2. \\
\hline
\tabbild[width=\linewidth]{"images/while"} & Solange die Bedingung erfüllt ist, wird der Körper in der \textit{while}-Schleife wiederholt. Nach jedem Durchlauf der Schleife prüft der Computer, ob die Bedingung erfüllt ist. Falls ja, wird die Schleife nochmals wiederholt. \\
\hline
\tabbild[width=\linewidth]{"images/whileinfinity"} & Diese \textit{while}-Schleife läuft endlos. Bis das Programm über das Stop-Symbol beendet wird. Sehr wichtig bei der Steuerung von Figuren oder wenn Prozesse immer laufen sollen. \\
\hline
\end{tabular}
\end{center}
\pagebreak
\subsection{Teste dich selbst}
\subsubsection*{Wissensfragen}
\begin{enumerate}
\item Wie kann man erreichen, dass ein Programm einen Befehl nur unter gewissen Bedingungen ausführt?
\notes[10pt]{1}{\textwidth}
\item Wie kann man einem Programm die Möglichkeit geben, sich für eine von zwei möglichen Alternativen zu entscheiden?
\notes[10pt]{1}{\textwidth}
\item Was passiert, wenn die Bedingung einer \textit{while}-Schleife erfüllt ist? Was passiert wenn sie nicht erfüllt ist? Was hat das mit der Bedeutung des englischen Wortes "`while"' zu tun?
\notes[10pt]{3}{\textwidth}
\item Ist die zusammengesetzte Bedingung \booloperator{\booloperator{\ovalvariable{x} $>$ \ovalnum{0}} oder \booloperator{\ovalvariable{x} $<$ \ovalnum{9}}} auch erfüllt, wenn der Wert von x gleich 4 ist.
\notes[10pt]{1}{\textwidth}
\end{enumerate}
\subsubsection*{Programmieraufgaben}
\begin{aufgabe}
Das folgende Programm fordert auf eine Zahl einzugeben. Was macht das Programm mit dieser Zahl? Was gibt das Programm aus, wenn man $10$ eingibt. Stelle vor dem Programmieren zuerst eine Vermutung auf.
\begin{center}
\begin{multicols}{2}
\begin{figure}[H]
\centering
\includegraphics[width=0.7\linewidth]{images/ifaufgabe}
\label{fig:ifaufgabe}
\end{figure}
\columnbreak
\begin{tikzpicture}
\draw[step=0.5cm,color=gray,thin,xshift=0.5cm,yshift=0.5cm] (0,0) grid +(85mm,75mm);
\end{tikzpicture}
\end{multicols}
\end{center}
\end{aufgabe}
\begin{aufgabe}
Entwickle ein kleines Quiz-Programm. Das Programm stellt zuerst eine Frage. Dann prüft es, ob die Antwort richtig oder falsch ist. Wenn die Antwort richtig ist, gibt das Programm "`richtig"' aus, ansonsten "`falsch"'.\\
Schreibe das Programm so, dass es nacheinander mehrere verschiedene Fragen stellt (mindestens drei). Nach jeder Frage prüft, das Programm mit einer \textit{if}-Anweisung, ob die Eingabe richtig ist. Erst danach kommt die nächste Frage.\\
Das Programm soll in einer Variablen mitzählen, wie viele richtige Antworten bisher gegeben wurden.\\
Optional: Gestalte drei Bühnenbilder für das Quiz, eines für die Fragen, eines für eine richtige und eines für eine falsche Antwort. Die Bühnenbilder können dann jeweils geändert werden.
\end{aufgabe}

73
chapters/projekt.tex Normal file
View File

@@ -0,0 +1,73 @@
\section{Projekt}
\subsection{Steuerung der Spielfigur}
Unser Ziel ist es jetzt, die Katze mit den Pfeiltasten der Tastatur steuern zu können. Dazu benötigt man die if-Anweisungen aus dem vorherigen Kapitel.\\
Wiederholung: Mit der if-Anweisung ( \begin{scratch}\ifopempty{~}{~}\end{scratch} ) wird überprüft, ob eine Bedingung erfüllt ist und falls ja werden die Befehle innerhalb der Anweisung ausgeführt.
\subsubsection*{Katze bewegt sich nach rechts}
Wenn die "`rechte Pfeiltaste"' gedrückt wird soll sich die Katze nach rechts bewegen. Um zu überprüfen ob die "`rechte Pfeiltaste"' gedrückt wurde, benötigen wir Sensor diesen finden wir bei den Befehlen unter "`fühlen"'. Wir wählen dort " Taste (Leertaste) gedrückt?" aus. Die Tasten lassen sich durch klicken auf das kleine weise Dreieck auswählen.\\
Ist die Taste gedrückt, soll sich die Katze nach rechts bewegen.
Unsere if-Anweisung sieht nun so aus.\\
\begin{center}
\begin{scratch}
\ifop{\boolsensing{Taste Pfeil nach rechts gedrückt? } }{\movex{10}}
\end{scratch}
\end{center}
Wenn du diese Anweisung in Scratch ausprobierst, stellst du fest das sich die Katze nur kurz bewegt, obwohl die Pfeiltaste dauerhaft gedrückt ist. Das liegt daran, dass Scratch nur eine Mal überprüft, ob die Pfeiltaste gedrückt ist oder nicht. Damit Scratch immer schaut ob die Pfeiltaste gedrückt ist, muss die if-Anweisung von einer Schleife ("`wiederhole fortlaufend"') umgeben werden. Damit das Programm startet, wenn das Fahnen-Symbol geklickt ist benötigen wir noch die Anweisung "Wenn Fahne angeklickt". Unser fertiges Programm sieht dann folgendermaßen aus:
\begin{figure}[H]
\centering
\includegraphics[width=0.5\linewidth]{images/if anweisung2}
\caption{Bewegungen der Katze mit Pfeiltaste.}
\label{fig:Bewegungen der Katze mit Pfeiltaste}
\end{figure}
\begin{aufgabe}
Ergänze das Programm (siehe Abbildung \ref{fig:Bewegungen der Katze mit Pfeiltaste}) so, dass die Katze sich mit den Pfeiltasten über den Bildschirm in jede Richtung steuern lässt.
\end{aufgabe}
Die Katze läuft jetzt zwar fröhlich über die Bühne, schaut aber immer nach rechts, selbst wenn sie nach links läuft. Um das zu ändern, nutzen wir für unsere Katze ein neues Bild, auf dem sie nach links schaut. Dafür bekommt die Katze ein neues Kostüm.
\begin{figure}[H]
\centering
\includegraphics[width=1\linewidth]{images/Kostüm bearbeiten 1}
\caption{Kostum bearbeiten a.}
\label{fig:Kostum bearbeiten a}
\end{figure}
Öffne das Kostümfenster. Du siehst dort, dass die Katze schon zwei Kostüme hat. Vielleicht brauchen wir das zweite noch irgendwann, wir lassen es also einfach da.\\
Um ein weiteres Kostüm zu erstellen, haben wir mehrere Möglichkeiten. Im Moment möchten wir aber unsere Katze nur duplizieren und dann spiegeln. Klicke mit der rechten Maustaste auf Kostüm 1 und wähle „Duplizieren“ aus. Klicke auf den Icon für "`Links und Rechts vertauschen"' und gib dann dem Kostüm einen sinnvollen Namen.\\
\begin{figure}[H]
\centering
\includegraphics[width=1\linewidth]{images/Kostüm bearbeiten 2}
\caption{Kostüm bearbeiten b.}
\label{fig:Kostum bearbeiten b}
\end{figure}
Verändere auch den Namen für das normale Kostüm in Katze rechts.\\
Wechsle wieder in den Programmierbereich Code.\\
Die Blöcke für den Kostümwechsel findest du in der Blockpalette unter "`Aussehen"'\\
\begin{aufgabe}
1 Verändere die Tastaturereignisse so, dass der Katze jeweils vor dem Loslaufen das richtige Kostüm angezogen wird.\\
2 Teste dein Programm und lasse die Katze in alle Richtungen über die Bühne laufen.\\
3 Speichere alles ab.
\end{aufgabe}
\subsection{Die Katze läuft über die Straße}
Nur über eine weiße Fläche zu laufen, ist für die Katze mit der Zeit langweilig. Deshalb verändern wir den Hintergrund die so genannte Bühne.\\
\begin{aufgabe}
1. Klicke zunächst auf die Schaltfläche "`In Rastergrafik umwandeln"'.\\
2. Erkunde zunächst den Zeicheneditor.\\
3. Zeichne eine Straße auf das Bühnenbild und färbe die Umgebung grün.
4. Gib dem Bühnenbild einen neuen Namen: Level1
5. Ändere anschließend die Größe der Katze auf 50
\end{aufgabe}
Dein Bühnenbild könnte etwa so aussehen:\\
\begin{figure}[H]
\centering
\includegraphics[width=1\linewidth]{images/zeicheneditor}
\caption{Kostüm Zeicheneditor}
\label{fig:Zeicheneditor}
\end{figure}
Als nächstes brauchen wir eine neue Figur (solche Figuren nennt ein Programmierer auch Objekte):\\ das erste Auto, das dann auf der Straße fahren soll.\\
Findest du heraus, wie man ein neues Objekt anlegen kann? Du kannst dir selbst ein Auto zeichnen\\ oder ein Bild aus einer Bildbibliothek wählen.

5720
chapters/schleifen.log Normal file

File diff suppressed because it is too large Load Diff

145
chapters/schleifen.tex Normal file
View File

@@ -0,0 +1,145 @@
\section{Vorgänge wiederholen - Einfache Schleifen}
In unserem Alltag kommen immer wieder Routinetätigkeiten vor die einfach und langweilig sind. Mit Hilfe der Informatik kann man solche langweiligen Tätigkeiten automatisieren.\\ Computer können immer mehr und komplexere Aufgaben übernehmen und führen zu einer Entlastung der Menschen und bieten die Möglichkeit sich mit kreativen Aufgaben zu beschäftigen.\\
Dafür automatisieren wir Vorgänge und lassen Computer die Tätigkeiten übernehmen.\\
Du hast beim Programmieren sicher schon bemerkt, dass es manchmal eintönig ist, immer die gleichen Befehle hintereinander zu schreiben, um z.B. ein Quadrat oder ein Sechseck zu zeichnen. Eintöniger wird es, wenn man gar ein 100-Eck zeichnen möchte. Man müsste 100-mal die Befehle
\begin{center}
\begin{scratch}
\move{100}
\turnr{\teilen{360}{10}}
\end{scratch}
\end{center}
wiederholen. Dies muss einfacher möglich sein!\\
\\
In diesem Kapitel lernst du, wie du dem Computer auf mitteilen kannst eine Folge von Befehlen x-mal auszuführen. Damit ist es dir möglich schon komplexere Automatisierungsaufgaben zu bewältigen, ohne die Übersicht zu verlieren und ohne zu lange Programme schreiben zu müssen.
\begin{bsp}
Mit der Anweisung "wiederhole 3 mal"' sagst du dem Computer, dass er eine Folge von Befehlen dreimal wiederholen soll. Vergleiche die beiden folgenden Ausschnitte aus einem Programm. Sie führen exakt die gleiche Tätigkeit aus:\\
\begin{center}
\begin{scratch}
\penon
\move{100}
\turnl{120}
\move{100}
\turnl{120}
\move{100}
\turnl{120}
\end{scratch}
\begin{scratch}
\penon
\repeatn{3}{
\move{100}
\turnl{120}
}
\end{scratch}
\end{center}
\end{bsp}
\fbox{\parbox{\linewidth}{\info Zu jeder \begin{scratch}\repeatn{3}{~}\end{scratch}-Anweisung gehören die Anzahl der Wiederholungen und eine Folge von Befehlen, die wiederholt werden sollen. \begin{scratch}\repeatn{3}{\\}\end{scratch}-Anweisung zusammen mit den zu wiederholenden Befehlen nennt man eine \textbf{Schleife}.\\
Bei Programmieren beinhaltet eine Schleife immer einen Programmteil, der mehrfach ausgeführt wird. Dieser Programmteil heißt \textbf{Körper der Schleife}}}
.
\begin{bsp}
Um ein 20-Eck zu zeichnen, müsstest du die Befehle \begin{scratch}\move{15}\end{scratch} und\\ \begin{scratch}\turnr{\teilen{360}{20}}\end{scratch} 20-mal schreiben. Weil wir aber die \begin{scratch}\repeatn{20}{\\}\end{scratch}-Anweisung verwenden, weiß der Computer, dass er die beiden inneren Befehle 20 mal wiederholen soll.
\begin{center}
\begin{scratch}
\delete
\penon
\set{90}
\repeatn{20}{
\move{15}
\turnr{\teilen{360}{20}}
}
\end{scratch}
\end{center}
Die \textbf{Schleife} besteht aus der \begin{scratch}\repeatn{20}{\\}\end{scratch}-Anweisung mit der Anzahl der Wiederholungen. Davon eingeschlossen stehen die Befehle, die eine bestimmte Anzahl Male ausgeführt werden sollen. Die Befehle \begin{scratch}\move{15}\end{scratch} und \begin{scratch} \turnr{\teilen{360}{20}}\end{scratch} sind der \textbf{Körper der Schleife}.
\end{bsp}
\pagebreak
\begin{bsp}
\label{bsp:schleife}
Erinnerst du dich noch an die Aufgabe, bei der du ein Quadrat zeichnest? Für das Quadrat wurden viermal die beiden Befehle \begin{scratch}\move{150}\end{scratch} und \begin{scratch}\turnl{90}\end{scratch} verwendet. Dies lösen wir nun kürzer:
\begin{center}
\begin{scratch}
\set{90}
\penon
\delete
\repeatn{4}{
\move{150}
\turnl{90}
}
\end{scratch}
\end{center}
Die Befehle vor der Schleife stellen sicher, dass unsere Figur immer in die gleiche Richtung startet und alte Malspuren gelöscht werden.
\end{bsp}
\begin{aufgabe}
Schreibe jeweils ein Programm, um ein regelmäßiges Vieleck mit der geforderten Anzahl der Ecken und der geforderten Seitenlänge zu Zeichnen.\\
(Tipp: Starte bei den Koordinaten \textit{$x: 0$ $y: 120$} und verwende vor der Schleife jeweils den gleichen Block, wie in Beispiel \ref{bsp:schleife}. Die verschiedenen Programmblöcke speicherst du bitte alle in der gleichen Datei.)
\begin{enumerate}[label=\textbf{\Alph*}]
\item 11 Ecken, Seitenlänge 50
\item 15 Ecken, Seitenlänge 30
\item 7 Ecken, Seitenlänge 100
\end{enumerate}
\end{aufgabe}
\pagebreak
\begin{bsp}\label{bsp:8star}
Der Programmblock in diesem Beispiel zeichnet den Stern wie in Abbildung \ref{fig:8star} daneben. Schreibe das Programm ab und führe es aus. (Setze zur besseren Übersicht die Figurgröße auf $20\%$.)\\
\begin{multicols}{2}
\begin{scratch}
\set{90}
\setxy{0}{0}
\delete
\penon
\repeatn{8}{
\move{100}
\move{-100}
\turnr{\teilen{360}{8}}
}
\end{scratch}
\columnbreak
\begin{figure}[H]
\centering
\includegraphics[width=0.8\linewidth]{images/8star}
\caption{Stern mit 8 Spitzen}
\label{fig:8star}
\end{figure}
\end{multicols}
\end{bsp}
\begin{aufgabe}~
\begin{enumerate}[label=\textbf{\Alph*}]
\item Ändere das Programm aus Beispiel \ref{bsp:8star} so ab, dass der Stern doppelt so viele Zacken hat (siehe Abbildung \ref{fig:16star}).
\item Zeichne einen Stern mit 360 Zacken.
\end{enumerate}
\begin{figure}[H]
\centering
\includegraphics[width=0.4\linewidth]{images/16star}
\caption{Stern mit 16 Zacken.}
\label{fig:16star}
\end{figure}
\end{aufgabe}
\pagebreak
\begin{aufgabe}
(Schwer) Schreibe ein Programm, das einen fünfzackigen Stern wie in der Abbildung \ref{fig:pentagramm} zeichnet.
\begin{figure}[H]
\centering
\includegraphics[width=0.7\linewidth]{images/pentagramm}
\label{fig:pentagramm}
\caption{Pentagramm}
\end{figure}
\end{aufgabe}
\begin{aufgabe}
Schreibe drei Programme (bzw. Programmblöcke), die eine Treppe wie in Abbildung \ref{fig:stufenb} zeichnen. Die Höhe und Länge der einzelnen Treppenstufen (siehe Abbildung \ref{fig:stufena}) wählst du wie folgt:
\begin{enumerate}[label=\textbf{\Alph*}]
\item Anzahl 10, Höhe 25, Länge 25
\item Anzahl 25, Höhe 5, Länge 10
\item Anzahl 12, Höhe 20, Länge 5
\end{enumerate}
\tipp Setze den Startpunkt in den linken unteren Bereich der Bühne. Verwende die Blöcke \begin{scratch}\movex{~}\end{scratch} und \begin{scratch}\movey{~}\end{scratch}
\begin{figure}[h]
\subfigure[\label{fig:stufena}]{\includegraphics[width=0.49\textwidth]{images/stufena}}
\subfigure[\label{fig:stufenb}]{\includegraphics[width=0.49\textwidth]{images/stufenb}}
\caption{Darstellung der Stufen}
\end{figure}
\end{aufgabe}
\pagebreak

25
chapters/titlepage.tex Normal file
View File

@@ -0,0 +1,25 @@
\begin{titlepage}
\centering
\includegraphics[width=0.30\textwidth]{images/weg_logo.png}\par\vspace{1cm}
%\includegraphics[width=0.15\textwidth]{images\weg logo.png}\par\vspace{1cm}
{\scshape\LARGE Werkgymnasium Heidenheim \par}
\vspace{1cm}
{\scshape\Large Informatik 7\par}
\vspace{1.5cm}
{\huge\bfseries Scratch-Projekt\par}
\vspace{2cm}
{\Large\itshape Name:\par}\vspace{1cm}
\begin{center}
\line(1,0){250}
\end{center}
\vfill
Autor:\par
Fabian \textsc{Drechsler}\par
\vspace{2cm}
\vfill
% Bottom of the page
{\large \today\par}
~ \vfill
% {\tiny\doclicenseThis\par}
\end{titlepage}

114
chapters/variablen.tex Normal file
View File

@@ -0,0 +1,114 @@
\section{Parameter und Variablen}
In diesem Kapitel lernst du, was ein \textcolor{magenta}{\textbf{Parameter}} ist, \textcolor{magenta}{\textbf{Variablen}} zu deklarieren und zu nutzen.
\subsection{Was ist ein Parameter?}
Beim Befehl \begin{scratch}\move{x}\end{scratch} darf für \textcolor{blue}{\textbf{x}} eine Zahl eingesetzt werden. Diese Zahl, die man für x einsetzt, legt fest, wie viele Schritte die Figur gehen soll. Bei \begin{scratch}\turnl{winkel}\end{scratch}, wählt man für \textcolor{blue}{\textbf{winkel}} eine Zahl und gibt an, um wie viel Grad sich die Figur nach links drehen soll. Den Namen \textcolor{blue}{\textbf{x}} in \begin{scratch}\move{x}\end{scratch} oder \textcolor{blue}{\textbf{winkel}} in \begin{scratch}\turnl{winkel}\end{scratch} nennt man einen \textcolor{magenta}{\textbf{Parameter}}. Der Zahlenwert, den man dabei einsetzt, heißt \textcolor{magenta}{\textbf{Wert des Parameters}}. Die Werte eines Parameters dürfen auch andere Objekte als Zahlen sein: Ein Parameter kann für eine Farbe stehen, dann ist der Wert des Parameter ein Farbname.
\subsection{Variablen}
Mit Parametern kann man mit einem einzigen Befehl, je nach Parameterwert, unterschiedliche Tätigkeiten ausführen lassen. Zum Beispiel genügt ein Befehl, um eine Anzahl an Schritten zu gehen.\\
Aus Computersicht ist ein Parameter ein Speicherplatz mit einem bestimmten Namen. Alle Parameter eines Befehls bilden eine Tabelle und immer wenn der Computer den Wert eines Parameters benötigt, liest er den Wert aus dieser Tabelle aus. Er arbeitet anschließend mit dem Wert, der im Speicherplatz x (oder winkel) abgelegt ist. Dieses Konzept von Parametern verallgemeinern wir zu \textcolor{magenta}{\textbf{Variablen}}.\\
Parameter nutzen wir um Werte unter einem Namen zu speichern und später wieder zu verwenden. Bei \textcolor{magenta}{\textbf{Variablen}} kommt hinzu, dass die Werte während der Ausführung des Programms geändert werden können und die geänderten Werte beim Zeichnen, Rechnen, ... zu nutzen.\\
Variablen werden in Scratch über den Button "`neue Variable"' angelegt.
\begin{bsp}
Wir möchten eine Spirale zeichnen. Die Figur soll jede Linie ein wenig länger als die vorherige zeichnen. Dies ist eine einfache Übung, wird aber sehr umfangreich, wenn die Spirale aus 50 oder mehr Seiten bestehen soll. Von den vielen notwendigen Blöcken ist nur ein kleiner Teil abgebildet.
\\
Das Programm wiederholt immer wieder die gleichen Befehle: \begin{scratch}\turnl{90}\end{scratch} und \begin{scratch}\move{\variable{länge}}\end{scratch}. Nur die Schrittweite wird geändert.
\begin{figure}[H]
\centering
\includegraphics[width=0.25\linewidth]{images/spirale1}
\label{fig:spirale1}
\end{figure}
Dieses Programm soll nun mit einer Schleife programmiert werden und der Computer soll so viel Arbeit übernehmen wie es geht. Das sieht dann so aus:
\begin{multicols}{2}
\begin{figure}[H]
\centering
\includegraphics[width=0.7\linewidth]{images/spirale2}
\label{fig:spirale2}
\end{figure}
\columnbreak
Zu Beginn wird der Startwert der Variable "`länge"' auf $10$ festgelegt und die Figur auf eine Startposition bewegt.\\
Anschließend wird die Schleife 50-mal durchlaufen.\\
Der Befehl am Ende der Schleife erhöht bei jeder Wiederholung den Wert der Variable "`länge"' um 5.
\\
\\
\textbf{Lege die Variable "`länge"' an und zeichne die Spirale.}
\end{multicols}
\label{bsp:spirale}
\end{bsp}
\begin{aufgabe}
Ändere das Programm aus Beispiel \ref{bsp:spirale} so ab, dass es eine Spirale mit folgenden Eigenschaften zeichnet:
\begin{itemize}
\setlength\itemsep{0.0em}
\item Die erste Seite hat die Länge $6$.
\item Jede weitere Seite ist um $2$ länger.
\item Die Spirale hat 36 Seiten.
\end{itemize}
\end{aufgabe}
\begin{aufgabe}
Entwickle ein Programm, dass eine Spirale von außen nach innen zeichnet. Die Spirale hat folgende Eigenschaften:
\begin{itemize}
\setlength\itemsep{0em}
\item Lege eine geeignete Startposition fest.
\item Die erste Seite hat die Länge $200$.
\item Jede weitere Seite ist um $3$ kürzer.
\item Die Spirale hat insgesamt 50 Seiten.
\end{itemize}
\end{aufgabe}
\begin{aufgabe}
Ändere das Programm in Beispiel \ref{bsp:spirale} so, dass eine sechseckige Spirale entsteht. Die Länge der ersten Seite ist 10. Die Seite wird immer um das $0,1$-fache der aktuellen Länge geändert. Die Schleife wird 18 Mal wiederholt.\\
Lösung:
\begin{figure}[H]
\centering
\includegraphics[width=0.25\linewidth]{"images/spirale3"}
\caption{Lösung Aufgabe sechseckige Spirale}
\label{fig:spirale-losung}
\end{figure}
\end{aufgabe}
\begin{aufgabe}
Schreibe ein Programm, das eine sechseckige Spirale zeichnet (siehe Abb. \ref{fig:spirale4}). Das Programm soll die Variablen "`Anzahl"' und "`Länge"' verwenden. Der Parameter Anzahl gibt die Anzahl der gezeichneten Seiten an und Länge beschreibt die Weite der ersten Seite. Während des Zeichenvorgangs soll die Länge der Seite immer um 3 erhöht.
\begin{figure}[H]
\centering
\includegraphics[width=0.25\linewidth]{images/spirale4}
\caption{Schema Spirale}
\label{fig:spirale4}
\end{figure}
\end{aufgabe}
\subsection{Neue Befehle}
\begin{center}
\begin{tabular}{|m{5cm}|m{8cm}|c}
\hline
\tabbild[width=\linewidth]{"images/befehl new var"} & Legt eine neue Variable an. Eine Variable ist ein Speicherplatz mit einem Namen. In einer Variablen kann immer genau ein Wert gespeichert werden. \\
\hline
\tabbild[width=\linewidth]{"images/befehl var set"} & Legt den Wert einer Variablen fest. \\
\hline
\tabbild[width=\linewidth]{"images/befehl var change"} & Erhöht den Wert der Variablen um den angegebenen Wert. Um den Wert der Variablen zu verringern können negative Werte eingetragen werden. \\
\hline
\end{tabular}
\end{center}
\subsection{Zusammenfassung}
\textcolor{magenta}{\textbf{Variablen}} heißen so, weil sich ihr Wert während der Ausführung verändern (variieren) darf. Variablen, deren Wert zu Beginn eines Programms festgelegt werden und danach nicht mehr verändern, heißen \textcolor{magenta}{\textbf{Parameter}}. Mit den Blöcken \begin{scratch}\setvar{meine Variable}{10}\end{scratch} und \begin{scratch} \changevar{meine Variable}{5}\end{scratch} kann man den Wert einer Variablen festlegen bzw. ändern.\\
Bei jeder Programmausführung legt der Computer eine Tabelle an, in der zu jeder Variablen ihr Wert steht. Ist die Variable in der Tabelle noch nicht vorhanden, so wird sie der Tabelle mit ihrem Wert hinzugefügt. Existiert die Variable bereits, wird der Wert der Variablen geändert.\\
Computer speichern immer nur den aktuellen Wert der Variablen, alte Werte werden nicht gespeichert.
\pagebreak
\subsection{Teste dich selbst}
\subsubsection*{Wissensfragen}
\begin{enumerate}
\item Was ermöglichen Variablen, was Parameter alleine nicht können?
\notes[10pt]{1}{\textwidth}
\item Warum nennt man eine Variable "`Variable"'?
\notes[10pt]{1}{\textwidth}
\item Was ist der Unterschied zwischen einer Variable und einem Parameter?
\notes[10pt]{1}{\textwidth}
\item Woher weiß der Computer, welchen Wert eine Variable hat? Wie kann sich der Computer die Werte aller Variablen merken?
\notes[10pt]{1}{\textwidth}
\item Mit welchem Befehl kannst du den Wert einer Variablen um eine feste Zahl erhöhen?
\notes[10pt]{2}{\textwidth}
\item Mit welcher Kombination aus Befehlen kannst du den Wert einer Variablen verdoppeln?
\notes[10pt]{2}{\textwidth}
\end{enumerate}

BIN
ggb-files/6Eck Schema.ggb Normal file

Binary file not shown.

BIN
ggb-files/boot.ggb Normal file

Binary file not shown.

BIN
ggb-files/pentagramm.ggb Normal file

Binary file not shown.

BIN
ggb-files/quadrat.ggb Normal file

Binary file not shown.

BIN
ggb-files/stufen.ggb Normal file

Binary file not shown.

BIN
images/16star.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
images/6eck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
images/6eck2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
images/8star.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
images/Aufbau Scratch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -0,0 +1,272 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg4636"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="Haus des Nikolaus.svg">
<defs
id="defs4630">
<inkscape:path-effect
effect="spiro"
id="path-effect5369"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5321"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5255"
is_visible="true" />
<linearGradient
id="linearGradient5247"
osb:paint="solid">
<stop
style="stop-color:#00ff00;stop-opacity:1;"
offset="0"
id="stop5245" />
</linearGradient>
<inkscape:path-effect
effect="spiro"
id="path-effect5255-5"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5255-5-1"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5255-5-1-9"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5255-5-1-3"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5321-3"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5321-3-1"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5321-3-9"
is_visible="true" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="78.203379"
inkscape:cy="544.41028"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata4633">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g5459"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<rect
y="116.05853"
x="57.462948"
height="113.32228"
width="113.32228"
id="rect4638"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4657"
d="M 57.462948,229.38081 C 171.0525,115.79126 170.51796,116.3258 170.51796,116.3258 v -0.80181"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4657-5"
d="M 57.462948,116.05853 C 171.0525,229.64808 170.51796,229.11354 170.51796,229.11354 h 0.80181"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5218"
d="M 170.78523,116.05853 C 113.32228,58.595584 113.32228,58.595584 113.32228,58.595584"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5218-3"
d="M 56.933781,116.05853 C 114.39673,58.595584 114.39673,58.595584 114.39673,58.595584"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:original-d="m 102.24256,160.17262 c 4.03201,-2.58311 8.06375,-5.16594 12.09524,-7.74852 4.03148,-2.58257 8.31,4.79737 12.46461,7.19645"
inkscape:path-effect="#path-effect5255"
inkscape:connector-curvature="0"
id="path5253"
d="m 102.24256,160.17262 c 1.10619,-2.26124 2.84305,-4.20987 4.96271,-5.56778 2.11966,-1.35791 4.61592,-2.12113 7.13253,-2.18074 2.52218,-0.0597 5.05738,0.58749 7.24226,1.84893 2.18488,1.26144 4.013,3.13338 5.22235,5.34752"
style="fill:none;stroke:#0005ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:original-d="m 102.24256,160.17262 c 4.03201,-2.58311 8.06375,-5.16594 12.09524,-7.74852 4.03148,-2.58257 8.31,4.79737 12.46461,7.19645"
inkscape:path-effect="#path-effect5255-5"
inkscape:connector-curvature="0"
id="path5253-4"
d="m 102.24256,160.17262 c 1.10619,-2.26124 2.84305,-4.20987 4.96271,-5.56778 2.11966,-1.35791 4.61592,-2.12113 7.13253,-2.18074 2.52218,-0.0597 5.05738,0.58749 7.24226,1.84893 2.18488,1.26144 4.013,3.13338 5.22235,5.34752"
style="fill:none;stroke:#0005ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="rotate(-90,114.79852,172.17651)" />
<path
inkscape:original-d="m 102.24256,160.17262 c 4.03201,-2.58311 8.06375,-5.16594 12.09524,-7.74852 4.03148,-2.58257 8.31,4.79737 12.46461,7.19645"
inkscape:path-effect="#path-effect5255-5-1"
inkscape:connector-curvature="0"
id="path5253-4-7"
d="m 102.24256,160.17262 c 1.10619,-2.26124 2.84305,-4.20987 4.96271,-5.56778 2.11966,-1.35791 4.61592,-2.12113 7.13253,-2.18074 2.52218,-0.0597 5.05738,0.58749 7.24226,1.84893 2.18488,1.26144 4.013,3.13338 5.22235,5.34752"
style="fill:none;stroke:#0005ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0,-1,-1,0,286.42296,286.42296)" />
<path
inkscape:original-d="m 102.24256,160.17262 c 4.03201,-2.58311 8.06375,-5.16594 12.09524,-7.74852 4.03148,-2.58257 8.31,4.79737 12.46461,7.19645"
inkscape:path-effect="#path-effect5255-5-1-9"
inkscape:connector-curvature="0"
id="path5253-4-7-5"
d="m 102.24256,160.17262 c 1.10619,-2.26124 2.84305,-4.20987 4.96271,-5.56778 2.11966,-1.35791 4.61592,-2.12113 7.13253,-2.18074 2.52218,-0.0597 5.05738,0.58749 7.24226,1.84893 2.18488,1.26144 4.013,3.13338 5.22235,5.34752"
style="fill:none;stroke:#0005ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(1,0,0,-1,-0.55207,343.80095)" />
<path
inkscape:original-d="m 79.752975,116.32738 c -1.574636,5.79537 -3.149537,11.59101 -4.724702,17.3869 -1.575165,5.7959 -11.853971,3.17607 -17.781354,4.7645"
inkscape:path-effect="#path-effect5321"
inkscape:connector-curvature="0"
id="path5319"
d="m 79.752975,116.32738 c 0.777894,3.04235 0.753554,6.28606 -0.06991,9.3164 -0.823462,3.03033 -2.444129,5.84025 -4.654795,8.0705 -2.263613,2.28366 -5.140847,3.9533 -8.246723,4.78552 -3.105876,0.83221 -6.432454,0.82488 -9.534631,-0.021"
style="fill:none;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:original-d="m 79.752975,116.32738 c -1.574636,5.79537 -3.149537,11.59101 -4.724702,17.3869 -1.575165,5.7959 -11.853971,3.17607 -17.781354,4.7645"
inkscape:path-effect="#path-effect5321-3"
inkscape:connector-curvature="0"
id="path5319-5"
d="m 79.752975,116.32738 c 0.777894,3.04235 0.753554,6.28606 -0.06991,9.3164 -0.823462,3.03033 -2.444129,5.84025 -4.654795,8.0705 -2.263613,2.28366 -5.140847,3.9533 -8.246723,4.78552 -3.105876,0.83221 -6.432454,0.82488 -9.534631,-0.021"
style="fill:none;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(-1,0,0,1,227.43156,0.41729445)" />
<path
inkscape:original-d="m 79.752975,116.32738 c -1.574636,5.79537 -3.149537,11.59101 -4.724702,17.3869 -1.575165,5.7959 -11.853971,3.17607 -17.781354,4.7645"
inkscape:path-effect="#path-effect5321-3-1"
inkscape:connector-curvature="0"
id="path5319-5-8"
d="m 79.752975,116.32738 c 0.777894,3.04235 0.753554,6.28606 -0.06991,9.3164 -0.823462,3.03033 -2.444129,5.84025 -4.654795,8.0705 -2.263613,2.28366 -5.140847,3.9533 -8.246723,4.78552 -3.105876,0.83221 -6.432454,0.82488 -9.534631,-0.021"
style="fill:none;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0,-1,-1,0,286.93854,286.50364)" />
<path
inkscape:original-d="m 79.752975,116.32738 c -1.574636,5.79537 -3.149537,11.59101 -4.724702,17.3869 -1.575165,5.7959 -11.853971,3.17607 -17.781354,4.7645"
inkscape:path-effect="#path-effect5321-3-9"
inkscape:connector-curvature="0"
id="path5319-5-5"
d="m 79.752975,116.32738 c 0.777894,3.04235 0.753554,6.28606 -0.06991,9.3164 -0.823462,3.03033 -2.444129,5.84025 -4.654795,8.0705 -2.263613,2.28366 -5.140847,3.9533 -8.246723,4.78552 -3.105876,0.83221 -6.432454,0.82488 -9.534631,-0.021"
style="fill:none;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(1,0,0,-1,0.85218665,345.82163)" />
<path
inkscape:original-d="m 98.273808,74.749998 c 5.165942,2.708566 10.331612,5.417394 15.497022,8.126489 5.16541,2.709095 9.84045,-5.681496 14.76028,-8.521848"
inkscape:path-effect="#path-effect5369"
inkscape:connector-curvature="0"
id="path5367"
d="m 98.273808,74.749998 c 1.662965,2.553268 3.989622,4.670199 6.688172,6.08529 2.69854,1.415091 5.76294,2.125177 8.80885,2.041199 5.91883,-0.163187 11.65954,-3.477586 14.76028,-8.521848"
style="fill:none;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<rect
y="69.269341"
x="113.77083"
height="0.75595242"
width="0.1889881"
id="rect5371"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="160.3616"
x="114.99926"
height="0.75595242"
width="0.1889881"
id="rect5371-7"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="171.88988"
x="125.77158"
height="0.75595242"
width="0.1889881"
id="rect5371-9"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="182.8512"
x="114.62128"
height="0.75595242"
width="0.1889881"
id="rect5371-95"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="172.45685"
x="102.71503"
height="0.75595242"
width="0.1889881"
id="rect5371-0"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="125.5878"
x="160.1674"
height="0.75595242"
width="0.1889881"
id="rect5371-3"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="125.58781"
x="66.996277"
height="0.75595242"
width="0.1889881"
id="rect5371-91"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
inkscape:transform-center-y="-1.1339286"
inkscape:transform-center-x="-1.3229167"
y="218.56993"
x="67.185265"
height="0.75595242"
width="0.1889881"
id="rect5371-8"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="218.00298"
x="159.60043"
height="0.75595242"
width="0.1889881"
id="rect5371-36"
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
images/Malstift.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
images/Rhombus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/Scratch Download.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

BIN
images/befehl 10er.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
images/befehl del.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
images/befehl koords.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/befehl new var 2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
images/befehl new var.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
images/befehl pen color.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
images/befehl pen off.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
images/befehl pen on.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
images/befehl pen thick.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
images/befehl richtung.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
images/befehl setze x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/befehl setze y.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
images/befehl var set.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
images/befehl x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
images/befehl y.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/blitz.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
images/boot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

BIN
images/bsp 6eck rechnen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
images/bsp rechnen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
images/dreieck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

168
images/dreieck.svg Normal file
View File

@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg8"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="dreieck.svg">
<defs
id="defs2">
<linearGradient
id="linearGradient4544"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4542" />
</linearGradient>
<linearGradient
id="linearGradient4528"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4526" />
</linearGradient>
<linearGradient
id="linearGradient4522"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4520" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="-86.047542"
inkscape:cy="521.15234"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g4628"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="rect4560"
d="m 96.217032,159.08893 59.601108,58.26475 H 40.090431 Z"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 58.719099,198.18854 a 26.726952,26.726952 0 0 1 8.097718,18.99121 l -26.726386,0.17393 z"
sodipodi:end="6.2766775"
sodipodi:start="5.4835933"
sodipodi:ry="26.726952"
sodipodi:rx="26.726952"
sodipodi:cy="217.35368"
sodipodi:cx="40.090431"
sodipodi:type="arc"
id="path4563"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:open="true"
d="m 115.60464,177.48596 a 26.726952,26.726952 0 0 1 -37.535618,1.22387"
sodipodi:end="2.3172169"
sodipodi:start="0.75918777"
sodipodi:ry="26.726952"
sodipodi:rx="26.726952"
sodipodi:cy="159.08893"
sodipodi:cx="96.217033"
sodipodi:type="arc"
id="path4563-7"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="171.65059"
x="95.94976"
height="1.3363476"
width="0.53453904"
id="rect4584"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
transform="scale(0.89406741,1.1184839)"
id="text4588"
y="191.01476"
x="57.021923"
style="font-style:normal;font-weight:normal;font-size:7.25066566px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.18126664"
xml:space="preserve"><tspan
style="stroke-width:0.18126664"
y="191.01476"
x="57.021923"
id="tspan4586"
sodipodi:role="line">45°</tspan></text>
<text
id="text4592"
y="180.47049"
x="53.453907"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="180.47049"
x="53.453907"
id="tspan4590"
sodipodi:role="line">x</tspan></text>
<text
id="text4592-6"
y="183.63164"
x="136.93831"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="183.63164"
x="136.93831"
id="tspan4590-1"
sodipodi:role="line">x</tspan></text>
<text
id="text4614"
y="231.51895"
x="69.757347"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="231.51895"
x="69.757347"
id="tspan4612"
sodipodi:role="line">x * 1,414214</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
images/haus nikolaus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
images/if anweisung1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
images/if anweisung2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
images/if.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
images/ifaufgabe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
images/ifelse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
images/pentagramm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
images/quadrat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
images/spirale1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
images/spirale2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
images/spirale3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
images/spirale4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
images/stufena.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
images/stufenb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
images/weg_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
images/while.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
images/whileinfinity.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
images/zeicheneditor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
scratch3-fr.pdf Normal file

Binary file not shown.