Schleifen in Javascript

Ähnliche Dokumente
Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

C++ - Einführung in die Programmiersprache Schleifen

Programmentwurf Prof. Metzler

2 Teil 2: Nassi-Schneiderman

Labor Software-Entwicklung 1

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Funktionen in JavaScript

Funktionen in JavaScript

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

Schleifen: Immer wieder dasselbe tun

06 While-Schleifen. While-Schleifen 1/7 Wiederholung: Schleifen

Flussdiagramm / Programmablaufplan (PAP)

Kontrollstrukturen -- Schleifen und Wiederholungen

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

In Java: Schleifen 1. Art: Vorabprüfung: while. Wiederholungen (Kapitel 8) Schleife mit Vorabprüfung. Schleifen 2. Art: Endprüfung: do while

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

5. Strukturierte Programmierung

Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

VORKURS INFORMATIK EINE EINFÜHRUNG IN JAVASCRIPT

Girls Day 2017 Programmierung

BKTM - Programmieren leicht gemacht.

Grundlegende Programmierkonzepte: Abläufe mit Wiederholungen (Schleifen)

WiMa-Praktikum 1. Woche 8

Einführung in die Programmierung II. 3. Kontrollstrukturen

Kontrollstrukturen - Universität Köln

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Access 2010 Programmierung Schleifen

Einstieg in die Informatik mit Java

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Tag 3 Repetitorium Informatik (Java)

einseitige Selektion zweiseitige Selektion

Webbasierte Programmierung

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Einstieg in die Informatik mit Java

Javakurs für Anfänger

Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch

Name Klasse Datum. Kontrollstrukturen steuern die Ausführung von Anweisungen

Funktionen nur wenn dann

Schleifenanweisungen

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

Funktionen nur wenn dann

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Informatik I Übung, Woche 40

4 Schleifen -= Entstanden unter Excel 2003 =-

5. Elementare Befehle und Struktogramme

Programmiertechnik Kontrollstrukturen

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

2.5 Programmstrukturen Entscheidung / Alternative

Einstieg in die Informatik mit Java

Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Arrays und Schleifen

Kapitel 2: Programmfluss steuern

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Tag 3 Repetitorium Informatik (Java)

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Programmieren lernen mit Visual Basic

Greenfoot: Verzweigungen

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Syntax der Sprache PASCAL

Arbeitsblätter für Algorithmierung und Strukturierung C #

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

Verzweigungen und Wiederholungen

Einführung in die Programmierung Wintersemester 2011/12

<? $ZeilenMax = 9; $SpaltenMax = 9; echo "<pre>";

PHP. M.Sc. Nadine Preuß Geographische Analyse- und Darstellungsmethoden WS 15/

Elementare Konzepte von

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Grundlagen. Wie sind PHP-Dateien aufgebaut?

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Programmierkurs Java

Programmsteuerung mit PHP - if/else, elseif,switch

Algorithmen und ihre Programmierung -Teil 2-

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

5. Übung - Kanalkodierung/Programmierung

Aufgabe Total Punkte

Kleine Anekdote. Schleifen in C

Objektorientierte Programmierung

Installation. Start. Das Territorium im Simulator

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Kapitel 3: Variablen

Einführung in die Programmierung mit VBA

05 For-Schleifen. For-Schleifen 1/7 Was ist eine Schleife?

Schleifen in C/C++/Java

3. Anweisungen und Kontrollstrukturen

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Transkript:

Schleifen in Javascript Jobst-Hartmut Lüddecke 3. April 2013 Zusammenfassung In dieser Lektion geht es um Schleifen (engl. loop). Diese Schleifen sind in jeder Programmiersprache das beste Werkzeug für Wiederholungen. Diese Wiederholungen finden entweder für eine bestimmte Anzahl von Durchläufen statt, oder solange eine Bedingung erfüllt ist. Dabei gibt es noch die Variationen, dass die Bedingung vor oder nach dem Schleifendurchlauf geprüft wird. Die Beispiele wurde für HTML5 angepasst. Inhaltsverzeichnis 1 Struktogramm 2 2 Pre-checked Loops 2 2.1 For-Schleife........................................... 3 2.2 While-Schleife.......................................... 4 3 Post-checked Loops 5 3.1 Do-While-Schleife........................................ 5 4 Schachteln von Schleifen 6 5 Aufgaben 7 Abbildungsverzeichnis 1 Struktogramm mit einfachen Anweisungen......................... 2 2 Struktogramm einer einfachen for-schleife.......................... 3 3 Prinzip der for-schleife..................................... 3 4 HTML5-Seite, die die Funktion zaehler() im Javascript zaehler.js mit einer Zählschleife mit for und direkter Ausgabe der Werte aufruft....................... 4 5 Javascript zaehler.js mit Zählschleife mit for und direkter Ausgabe der Werte...... 4 6 Struktogramm einer einfachen while-schleife........................ 5 7 Prinzip der while-schleife.................................... 5 8 Version von zaehler.js mit einer Zählschleife die jetzt while verwendet........... 5 9 Struktogramm einer einfachen do-while-schleife....................... 5 10 Prinzip der do-while-schleife.................................. 5 11 Zählschleife mit do-while und direkter Ausgabe der Werte................. 6 1

1 Struktogramm Ein Struktogramm auch Nassi-Schneidermann-Diagramm ist eine Form der grafischen Darstellung der Struktur eines Programms. Gleiches tut ein Flußdiagramm. Weiterhin gebräuchlich sind Hierarchiediagramme, Automaten und Petrinetze um die Ebenen der Funktionsaufrufe und gewisse Übergangsfunktionen 1 darstellen zu können. All dies füllt ganze Regalmeter mit Büchern, ist aber zwingendes Werkzeug für eine ernsthafte Software-Entwicklung. Die Verbindung zu diesen Möglichkeiten der Darstellung sind dann die Kommentare im Programm selbst. An dieser Stelle nun ein Struktogramm. Ein Flußdiagramm haben Sie bereits an anderer Stelle kennen gelernt. Warum nun jetzt ein Struktogramm? Ganz einfach, mit einem Struktogramm kann man keine Struktur von Spaghetti-Programmen darstellen und da Sie die Struktur vorher festlegen sollen, können sie damit auch keine Spaghetti-Programme programmieren. Dies ist mit einem Flußdiagramm eines der leichtesten Übungen. Jetzt will ich Ihnen aber nicht zeigen wie man es nicht machen soll, sondern ein Werkzeug an die Hand geben, mit dem man saubere Strukturen festlegen kann. Hat man so eine Struktur erst einmal festgelegt, ist es völlig egal in welcher Programmiersprache jetzt diese Struktur umgesetzt und programmiert wird. Dazu müssen Sie aber eine gewisse Abstraktionsebene einhalten und keine direkten Befehle einer bestimmten Programmiersprache verwenden. Gerade dies fällt Anfängern besonders schwer. Sie werden jetzt Stück für Stück mit einigen Darstellungsmöglichkeiten so eines Struktogramms konfrontiert. Die Abarbeitung der Struktur geschieht von Oben nach Unten. Es ist also ein Top-Down Design. Wo es Top-Down gibt, gibt es an anderer Stelle noch ein Bottom-Up. Einfacher Programm-Befehl Funktionsaufruf Rückgabewert Meldung Rückgabewert Abbildung 1: Struktogramm mit einfachen Anweisungen Obiges Beispiel enthält nun die ersten 4 Konstrukte: Die erste Schachtel ist ein einfacher Befehl. Die zweite Schachtel ist der Aufruf einer anderen Funktion. In anderen Programmiersprachen gibt es noch Unterprogramme und Prozeduren. Die Schachtel sieht gleich aus. Die überwiegende Zahl der Funktionen liefert etwas zurück, was weiter verarbeitet werden soll. Die entsprechende Darstellung dafür ist die dritte Schachtel. Erwartet man nichts zurück, kann man diese Schachtel weglassen. Die vierte Schachtel ist dann wieder ein einfacher Befehl. In diesem Fall eine Wertzuweisung. 2 Pre-checked Loops Dies sind Schleifen, bei denen die Bedingung für den Durchlauf der Schleife vor dem Durchlauf der Schleife geprüft wird. Ist die Bedingung nicht erfüllt, wird die Schleife erst gar nicht durchlaufen. 1 Wichtig wenn man selbst Betriebssysteme oder Compiler programmiert 2

2.1 For-Schleife Das Struktogramm einer Pre-checked loop, und damit auch einer For-Schleife hat auf der linken Seite einen Haken, der alle Befehle, die innerhalb der Schleife liegen umfasst. Diese Befehle können dann wiederum alle gültigen Konstrukte sein und aus mehreren Anweisungen bestehen. von 1 bis 5 Anweisung innerhalb der Schleife Noch eine Anweisung in der Schleife Anweisung nach der Schleife Abbildung 2: Struktogramm einer einfachen for-schleife Bei der For-Schleife wird eine vorher deklarierte 2 Zählvariable (z.b. i) initialisiert 3, eine Bedingung definiert und die Zählvariable inkrementiert 4, oder dekrementiert 5. Die Schleife wird solange durchlaufen, solange die Bedingung wahr, bzw. der boolsche Wert des Vergleiches true ergibt. var i; for ( i=1; i<5; i++){ <Anweisungen innerhalb der Schleife> <Anweisung nach der Schleife> Abbildung 3: Prinzip der for-schleife Eine for-schleife gibt es in jeder mir bekannten Programmiersprache, allerdings können die Parameter und Ausdrücke anders aussehen, machen aber immer das Gleiche. In Javascript besteht der Parameter der for-schleife immer aus 3 Teilen und stehen in runden Klammern und zwar aus: Der Zählvariablen mit dem Startwert. Der Endbedingung. Dem Zählausdruck (rauf oder runter). Beispiel: Der Anfangswert der Zählvariablen i wird auf den Wert 1 gesetzt. 1 ist kleiner als 5, die Bedingung ist also true und die Schleife wird durchlaufen und die Zählvariable i mit i++ 6 inkrementiert. Jetzt ist der Wert der Zählvariablen 2, die Bedingung ist erfüllt und der nächste Durchlauf wird gemacht usw. Sobald die Zählvariable i den Wert 5 erreicht hat, ist die Bedingung false, denn 5 ist nicht kleiner als 5, sondern gleich und die Schleife wird nicht mehr durchlaufen, sondern mit der Anweisung nach der Schleife das Programm fortgesetzt. Achtung: Alles zwischen den geschweiften Klammern nach der Schleifendefinition in runden Klammern steht, wird in der Schleife wiederholt. Im Struktogramm entspricht dies dem Teil, der vom linken Haken umfasst wird. 2 siehe letztes Skript. In diesem Beispiel: var i; 3 auf einen Anfangswert gesetzt 4 bei der Zählvariablen z.b. mit dem Namen i wird mit Ausdruck i++ der Wert der Variablen i um 1 erhöht. Der Ausdruck i++ entspricht einem i=i+1 und schon sind wir bei den Schreibweisen für Schreibfaule. 5 den Wert z.b. mit i - - um 1 verkleinert. Das i - - entspricht also einem i=i-1 6 eine der speziellen Notationen 3

Der Begriff <Anweisungen innerhalb der Schleife> ist wieder ein Dummy. Es ist kein Javascript-Befehl, sondern ein Platzhalter für ein Programmsegment das in der Schleife wiederholt abgearbeitet werden soll. In der Praxis besteht so ein mehrfach abgearbeitetes Programmsegment aus einigen Anweisungen, oder kann auch eine Funktion sein. Frage: Wie viele Schleifendurchläufe gibt es bei diesem Beispiel? <!DOCTYPE html> <html lang="de" xml:lang="de"> <head> <title>for-schleife mit Javascript</title> <script language="javascript" src="zaehler.js"> </script> </head> <body onload=zaehler()> </body> </html> Abbildung 4: HTML5-Seite, die die Funktion zaehler() im Javascript zaehler.js mit einer Zählschleife mit for und direkter Ausgabe der Werte aufruft. function zaehler(){ var i=0; var schluss=10; document.write("hier geht es los: "); document.write("<br>"); for (i=1;i<=schluss;i++){ document.write(i); document.write(","); Abbildung 5: Javascript zaehler.js mit Zählschleife mit for und direkter Ausgabe der Werte. 2.2 While-Schleife Die While-Schleife wird solange durchlaufen, solange die Bedingung erfüllt, also true ist. Dabei kann die Bedingung eine boolsche Variable, ein logischer Ausdruck, oder der boolsche Rückgabewert einer Funktion sein. Diese Art der Schleife ist einfach zu programmieren, will aber genau bedacht werden. Leicht ist es möglich, dass die Bedingung nie erfüllt ist und damit die Schleife nie durchlaufen wird. Das Gegenteil wäre die Endlosschleife, bei der die Bedingung immer erfüllt ist und das Programm nie zum Ende kommt. Achtung: <Bedingung> und <Schleifeninhalt> sind wieder Platzhalter für eine beliebige Bedingung und eine beliebige Aktion innerhalb der Schleife. Folglich sollten Sie bei Ihren Übungen dann die jeweils passenden Befehle in Javascript einsetzen!!! 4

solange <Bedingung> wahr ist Inhalt der Schleife Abbildung 6: Struktogramm einer einfachen while-schleife while( <Bedingung> ){ <Schleifeninhalt> Abbildung 7: Prinzip der while-schleife function zaehler(){ var i=0; var schluss=10; document.write("hier geht es los: "); while (i < schluss ){ i++; document.write(i); document.write(","); Abbildung 8: Version von zaehler.js mit einer Zählschleife die jetzt while verwendet. 3 Post-checked Loops Dies sind Schleifen, bei der die Schleife zunächst erst einmal durchlaufen wird und am Ende, praktisch als Abbruchbedingung geprüft wird. 3.1 Do-While-Schleife Die Do-While-Schleife entspricht der While-Schleife, nur wird die Bedingung erst am Ende der Schleife geprüft. D.h. die Schleife wird mindestens einmal und damit einmal ungeprüft durchlaufen. Inhalt der Schleife solange <Bedingung> wahr ist Abbildung 9: Struktogramm einer einfachen do-while-schleife do{ <Schleifeninhalt> while( <Bedingung> ) Abbildung 10: Prinzip der do-while-schleife 5

function zaehler(){ var i=0; var schluss=10; document.write("hier geht es los: "); do { i++; document.write(i); document.write(","); while(i<schluss); Abbildung 11: Zählschleife mit do-while und direkter Ausgabe der Werte. 4 Schachteln von Schleifen Selbstverständlich kann im Schleifeninhalt selbst wieder eine Schleife stehen. Man muss sich nur darüber im Klaren sein, dass die äußere Schleife erst weiterarbeitet, nachdem die innere Schleife fertig abgearbeitet ist. 6

5 Aufgaben Bringen Sie die Zählschleife mit for in ihrem Bereich zum Laufen. Nicht nur abtippen, sondern auch mitdenken! Nun kommt die Zählschleife mit while dran. Selbstverständlich sollen Sie auch die Zählschleife mit do-while üben. Programmieren Sie eine Funktion, die die Zahlen von 0 bis 99 in 10 Zeilen mit jeweils 10 Spalten als Tabelle ausgibt. Mir kommt es dabei nicht auf eine besonders hübsche Formatierung, oder der Verwendung von html-tabellen an. Ich möchte lediglich sehen, ob Sie 2 ineinander geschachtelte Schleifen richtig hinkriegen können. Tipp: Schauen Sie sich genau die bisherigen Beispiele an. Sie müssen lediglich eines dieser Beispiele erweitern und noch eine Schleife darum herum legen. Beachten Sie, dass document.write dynamischen html-code ausgibt und folglich Zeilenumbrüche mit html- Code gemacht werden müssen. 7 Tipp 2: Sie machen sich die Sache leicht, wenn Sie 3 Zählvariablen verwenden. Eine für die Zeilen, eine für die Spalten und eine für den Inhalt der Tabelle. Es ist auch eine gute Idee seine Variablen entsprechend zu benennen. 8 Tipp 3: Papier und Bleistift ist das beste Entwicklungswerkzeug. Versuchen Sie bevor Sie anfangen zu Programmieren ein Struktogramm für diese Aufgabe zu entwickeln. Sie machen sich das Leben damit wirklich leichter! Programmieren Sie ein Tabellen-Werk aus 10 untereinander stehenden Tabellen (mit Abstand zwischen den Tabellen) aus jeweils 10 Zeilen mit jeweils 10 Spalten mit den Zahlen von 0 bis 999 als Inhalt. Verwenden Sie als äußere Schleife eine while-schleife. Tipp: Sie machen sich die Sache leicht, wenn Sie jetzt 4 Zählvariablen verwenden. Eine für die Zeilen, eine für die Spalten, eine für die Tabellen und eine für den Tabelleninhalt. Alternative: Sie verwenden die o.a. Tabelle und setzen die Abbruchbedingung einer while-schleife geschickt auf den Endwert der Tabelleninhalte. Tipp 2: Dies ist jetzt die Fortschreibung in 3 geschachtelte Schleifen. Wenn dies bei Ihnen läuft, habe Sie die heutige Lektion verstanden. Tipp 3: Haben Sie für die letzte Aufgabe ein Struktogramm gemacht, dann sollte es jetzt kinderleicht sein um diese Struktur noch eine sinnvolle Schleife zu legen. Was in der Übungszeit nicht geschafft wird, wird zur Hausaufgabe zum nächsten Praktikumstermin. Es ist sehr wichtig, dass Sie dieses Lernziel erreicht haben. Es sind Grundlagen auf die wir aufbauen werden! 7 siehe letzte Lektion. 8 Leitsatz in der Informatik: Benutze sprechende Namen! 7