146 lines
6.4 KiB
TeX
146 lines
6.4 KiB
TeX
\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
|
|
|