Greenfoot: Variablen. Nicolas Ruh und Dieter Koch

Ähnliche Dokumente
Greenfoot: Variablen Nicolas Ruh und Dieter Koch

Greenfoot: Verzweigungen

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

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

Greenfoot: Schleifen. 1. Die for-schleife

Kapitel 3: Variablen

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

Makro + VBA 2007 effektiv

Greenfoot: Schleifen. 1. Die for- Schleife

Einführung in die Programmierung 1

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

Processing Info zu Variablen und Bedingungen

GI Vektoren

Objective-C CheatSheet

Elementare Datentypen in C++

Informatik I - Einstiegskurs

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

2 Einfache Rechnungen

Programmierung mit C Zeiger

Javakurs für Anfänger

Einstieg in die Informatik mit Java

Kapitel 1: Die ersten Schritte Thema: Programmieren Seite: 1

ÜBUNGS-BLOCK 1 LÖSUNGEN

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Am Anfang werden die Attribute deklariert public class Kreis {

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Die einfachsten Anweisungen

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Tag 4 Repetitorium Informatik (Java)

Klassen in Java. Grundlagen der Programmierung. Stephan Kleuker 68

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmen und ihre Programmierung

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

Variablen und Datentypen

Repetitorium Informatik (Java)

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Speicherklassen (1) Lokale Variablen

Klausur Fachprüfung Wirtschaftsinformatik. Name:

Datumsangaben, enthält mindestens Jahr, Monat, Tag

3. Datentypen, Ausdrücke und Operatoren

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 5. Blatt Für den 26. und

Arbeiten mit JavaKara

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Einführung in die C-Programmierung

5.4 Klassen und Objekte

Java Einführung Klassendefinitionen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Übersicht Shell-Scripten

Algorithmen zur Datenanalyse in C++

Einführung in die Java- Programmierung

Aktivitäten in C# /.NET umsetzen

Java Einführung Methoden in Klassen

Grundlagen von C# - 1

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Grundlagen der Informatik

Deklarationen in C. Prof. Dr. Margarita Esponda

Programmieren in Haskell Einstieg in Haskell

Programmieren in Haskell

JAVA-Datentypen und deren Wertebereich

+ C - Array (Vektoren, Felder)

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

Einstieg in die Informatik mit Java

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

2. Programmierung in C

Die Programmiersprache C

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Klausur Grundlagen der Programmierung

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Einstieg in die Informatik mit Java

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Fachbericht DPR. Name: René Wagener. Klasse: CI3O1. Fachlehrer: Herr Balog

6. Zeiger Allgemeines Definition eines Zeigers

Eine kleine Befehlssammlung für Java Teil1

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Man kann bei der Deklaration einen Wert der Variablen angeben oder später den Wert zuweisen. Beide Befehlsfolgen leisten dasselbe:

System.out.println("TEXT");

Einstieg in die Informatik mit Java

Der Aufbau einer Quelltext-Datei. Anweisungen. - Header /Kopfzeile...program main

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen

Zahlenraten: Ein Spiel in Java.

Einführung in die Programmiersprache C

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Welche Informatik-Kenntnisse bringen Sie mit?

Übungen zu C++ Kapitel 1

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Handbuch zum VivaWeb-Serienbrief-Programm

Einführung in die Java- Programmierung

Objektorientierte Programmierung OOP Programmieren mit Java

3 Die Grundrechenarten

Transkript:

Greenfoot: Variablen Nicolas Ruh und Dieter Koch Sicher haben Sie schon mal ein Computerspiel gespielt. Bei den meisten Spielen wird irgendwo der Spielstand angezeigt, z.b. in Form von Punkten oder von erarbeitetem Geld. Dieser Wert ist ja sicher nicht immer der gleiche. Er muss also abgespeichert und verändert werden können. Ebenfalls muss man wieder z.b. für die Ausgabe am Bildschirm darauf zugreifen können. Was tun Sie zu Hause, wenn Sie von Ihrem Götti etwas kriegen, das Sie behalten und später wieder einmal vorzeigen und ev. sogar abändern möchten (oder müssen)? Sie schmeissen es in eine Kiste oder Schachtel, die Sie anschreiben, um den Gegenstand später wieder zu finden. Variablen in einem Computerprogramm kann man sich ebenfalls als solche Kisten vorstellen, wobei jede Kiste die drei folgenden Eigenschaften besitzt: Typ = Form und Grösse der Kiste Name = Aufschrift der Kiste Wert = Inhalt der Kiste Zum Typ: Ein einzelner Buchstabe braucht natürlich viel weniger Speicherplatz als ein ganzer Text, eine kleine Ganzzahl weniger als eine Dezimalzahl mit 12 Nachkommastellen. Deshalb reserviert man nicht für jeden Wert den man abspeichern möchte gleich viel Speicher. Stellen Sie sich ein grosses Containerschiff vor. Es gibt darauf eine ganz grosse Menge von Kisten, alle haben die gleiche Grösse. Darf in jeder Kiste nur höchstens ein Gegenstand sein (also z.b. ein Auto oder eine Banane), so bräuchte es für die gleiche Menge Ware viel mehr Schiffe. Auch im Computer beinhaltet jede Variable nur einen Wert. Um den Speicherplatz effizient zu nutzen, werden also verschieden grosse Kisten benötigt. Die zweite Funktion des Variablentyps ist diejenige, bei der Interpretation des Kistenwertes zu helfen. Beispielsweise ist unter der Variable vornameninitial der Wert 68 zu finden. Falls es sich dabei um eine Variable vom Typ char (Zeichen) handelt, weiss der Computer sofort, dass er bei einem Aufruf nicht die Zahl 68 sondern den Buchstaben D ausgeben soll. Rechts eine kleine Übersicht, später mehr dazu. Zum Namen: Grundsätzlich kann man Variablennamen ziemlich frei aus Buchstaben und Zahlen zusammensetzen. Verboten ist dabei aber der Gebrauch von Spezialzeichen wie Leerzeichen, Umlauten, Akzenten und Satzzeichen. Damit wir den eigenen (und fremden) Quellcode besser lesen können, halten wir uns zudem an folgende Regeln: Wir schreiben Variablen klein; z.b. vorname statt Vorname. Besteht eine Variable aus mehreren Teilwörtern, so schreiben wir bei jedem folgenden Teilwort den ersten Buchstaben gross (= camelcase); z.b. geburtsort statt geburtsort oder geburts_ort. Wir verwenden selbsterklärende Variablennamen, also z.b. alterinjahren statt x.

Zum Wert: Vereinfacht gesagt: Der zu speichernde Wert muss dem Variablentyp entsprechen. Ist dies nicht der Fall, so gibt der Compiler eine Fehlermeldung aus. Das macht auch Sinn, denn wir haben ja sozusagen versucht, einen Tennisball in eine Pralinenschachtel zu stecken. 1. Variablen deklarieren und Werte zuweisen Um eine Variable benutzen zu können, müssen wir sie zunächst deklarieren. Bildlich gesprochen heisst dies, dass wir die Kiste bauen (resp. einen Platz im Gestell reservieren ) und anschreiben. Die Befehlszeile int meinezahl; erstellt nun also eine Variable des Typs int (für integer, Ganzzahl) und gibt ihr den Namen meinezahl. Dabei steht der Typ immer vor dem Namen und das ganze wird mit einem Semikolon (Strichpunkt) abgeschlossen. Der Editor kennt das Schlüsselwort int und stellt es mit roter Farbe dar. Nun kann man dieser Variablen beliebig oft Werte zuweisen. Z.B. mit meinezahl = 2; Dabei gilt: Das was rechts des Gleichheitszeichens steht wird genommen (ev. zuerst berechnet) und als Wert in die Variablen links des Gleichheitszeichens geschrieben. Man kann sich daher ein einzelnes Gleichheitszeichen im Programmcode immer auch als nach links gerichteten Pfeil vorstellen: meinezahl 2. Selbstverständlich kann man rechts des Gleichheitszeichens auch die Namen bereits deklarierter Variablen verwenden. Falls ich also auf der Strasse eine Hunderternote finde, so kann ich den Effekt mit folgender Zuweisung ausdrücken: meinvermoegen = meinvermoegen + 100; Falls ich Röbi überfalle und mir all sein Geld aneigne dann mit meinvermoegen = meinvermoegen + roebisvermoegen; roebisvermoegen = 0; Und wenn ich dann aus Reue die Hälfte der Kirche spende, so wirkt sich auch dies aus: meinvermoegen = 0.5*meinVermoegen; Wenn es sich anbietet, kann man die Deklaration und Zuweisung einer Variable übrigens auch in einer einzigen Zeile erledigen: int meinezahl = 7; 2. Variablen-Werte ausgeben Die Ausgabe kann auf ganz vielfältige Weise geschehen. Wir wollen uns im Moment darauf beschränken, unsere Resultate in ein Text-Fenster zu schreiben. Dafür stellen wir Ihnen ein fast leeres Szenario zur Verfügung, es heisst ausgabe_in_konsole. Speichern Sie es in Ihrem persönlichen Ordner, entpacken sie es gegebenenfalls (wenn die Dateiendung.zip ist) und öffnen Sie es in Greenfoot.

Das Szenario besteht aus einer fast leeren Welt, einzig bestückt mit einer Instanz der Klasse Beispiel (zu erkennen am grünen Symbol links oben). Öffnen Sie die Klasse Beispiel im Editor. Sie sehen, dass die act()-methode im Moment noch leer ist. Wir ergänzen diese nun folgendermassen: public void act() { int meinezahl=2; // Variable deklarieren und Wert zuweisen System.out.println(meineZahl); // Wert in Konsolenfenster ausgeben } Vgl. auch nachfolgende Abbildung: Kompilieren Sie das ganze und klicken Sie auf die > Act -Schaltfläche. Die Methode wird nun aufgerufen und unser Code ausgeführt. Dabei wird ein Fenster geöffnet und die Zahl ausgegeben. Das ist übrigens dasselbe Fenster, in dem ggf. die Fehlermeldungen des Compilers angezeigt werden, die sogenannte Konsole. Sehr spannend ist das Programm jetzt noch nicht, verändern wir daher die Variable vor der Ausgabe noch. Fügen Sie die zusätzliche Zeile ein: public void act() { int meinezahl=2; // Variable deklarieren und Wert zuweisen meinezahl = meinezahl + 1; // Wert verändern System.out.println(meineZahl); // Wert in Konsolenfenster ausgeben } Kompilieren und testen Sie. Jedesmal, wenn wir auf die > Act -Schaltfläche klicken wird die gleiche Zahl ausgegeben. Dies liegt daran, dass die Variable nach dem Klick immer zuerst auf den Wert 2 gesetzt wird.

3. Instanzvariablen verwenden Damit sich die Ausgabe verändert, müssen wir das Neusetzen der Variable verhindern. Wir deklarieren und initialisieren (die allererste Zuweisung nennt man Initialisierung) daher die Variable als sogenannte Instanzvariable direkt in der Beispiel-Klasse also innerhalb des grün hinterlegten Klassen-Blocks, aber nicht in einem der gelb hinterlegten Methoden-Blöcke. Dazu verschieben wir die entsprechende Zeile nach oben (in der Abbildung grün umrahmt). Die Variable erhält ihren Wert jetzt ausserhalb der act()-methode und wird während des Programmablaufes nicht mehr neu initialisiert. Bei jedem Aufruf der act()-methode wird wieder der alte Wert genommen, dann zunächst der Wert der Variablen vergrössert und dann ausgegeben. 4. Aufgaben zu int-variablen 1) Ändern Sie den Code so ab, dass a) nur gerade Zahlen ausgegeben werden: 2, 4, 6, b) die Zahl immer verdoppelt wird: 2, 4, 8, 16 c) die Siebenerreihe ausgegeben wird 2) Was wird ausgegeben, wenn die Veränderung an der Variablen mit meinezahl = -meinezahl; vorgenommen wird? (Zuerst überlegen, dann ausprobieren.) 3) Zuerst überlegen, dann ausprobieren: Führen Sie eine zweite Variable ein: int summand = -1; Welche Ausgabe bewirkt der nachfolgende Code? summand = -summand; meinezahl = -meinezahl+summand; 4) Wie könnte man dann folgende Ausgaben erreichen? a) 2, -4, 6, -8, 10, -12, b) 2, 4, 7, 11, 16, 22, 29, 5) Man kann auch Resultate im Ausgabebefehl direkt berechnen lassen. Testen Sie dies mit meinezahl = meinezahl +1; System.out.println(meineZahl*6); Wie erreicht man dann die Ausgaben 9, 18, 27, 36, resp. 1, 4, 9, 16, 25,?

5. Weitere Variablentypen Nebst den Ganzzahlen sind für uns zunächst vor allem Zeichen und Zeichenketten sowie Fliesskommazahlen wichtig. Ein einzelnes Zeichen wird als char gespeichert. Eine Zeichenkette als String (es kann sein, dass eine Zeichenkette manchmal auch nur aus einem Zeichen besteht). Für Fliesskommazahlen stehen diedatentypen float und double zur Verfügung. Double kann mehr Nachkommastellen speichern, braucht aber doppelt so viel Platz. char meinvornameninitial = 'D'; // Zeichen: einfache Anführungszeichen String meinvorname = "Dieter"; // Zeichenkette: doppelte Anführungszeichen double meineschuhgroesse = 43.5; // Fliesskommazahl doppelter Genauigkeit Achtung: Der Typbezeichner String wird gross geschrieben. Nun kann man Textteile verknüpfen und ausgeben lassen. System.out.println("Mein Vorname lautet " + meinvorname + "."); Der Operator + steht hier nicht für die Addition, sondern für die Verknüpfung zweier Zeichenketten, der sogenannten Konkatenation. Verknüpft man eine Zeichenkette mit einer Zahl, so wird die Zahl vor dem Verketten automatisch in eine Zeichenkette umgewandelt: System.out.println("Meine Schuhgroesse ist " + meineschuhgroesse + "."); 6. Aufgaben zu verschiedenen Variablentypen 6) Ändern Sie das Beispiel so ab, dass der folgende Text ausgegeben wird (Bsp. für meine Angaben): Mein Vorname beginnt mit einem D, er lautet naemlich Dieter. 7) Definieren Sie zwei Variablen: String meinvorname = "James"; String meinnachname = "Bond"; Verketten Sie geeignet, so dass für diese Wahl der Namen folgender Text ausgegeben wird: Mein Name ist Bond, James Bond.. (Setzen Sie danach ihren eigenen Vornamen resp. Nachnamen ein.) 8) Definieren Sie drei Variablen: String person = "Trudi"; String menge = "viel"; String was = "Programme"; Verketten Sie geeignet, so dass für diese Wahl der Namen folgender Text ausgegeben wird: Trudi macht es viel Spass, Progamme zu schreiben. (Setzen Sie danach andere Werte für die Variablen ein.) 9) Es soll im Textfenster ausgegeben werden, wie oft schon auf die > Act -Schaltfläche geklickt wurde.

10) Probieren Sie den nachfolgenden Code aus. Was fällt auf? Können Sie sich die Unterschiede in der Ausgabe erklären? System.out.println("3+4="+3+4); System.out.println("3+4="+(3+4)); System.out.println(3+4+"=3+4"); System.out.println("3*4="+3*4); 11) Schreiben Sie ein Programm, so dass man zu Beginn zwei Zahlenwerte festlegen kann und deren Summe und Produkt und berechnet und ausgegeben werden. Die Ausgabe für die Werte 3 und 5 würde lauten: Die Summe von 3 und 5 beträgt 8, das Produkt 15. 12) Probieren Sie den nachfolgenden Code aus. Was fällt auf? Können Sie sich die Unterschiede in der Ausgabe erklären?. double meinebruchzahl = 7; System.out.println(meineBruchzahl / 2); int meineganzzahl = 7; System.out.println(meineGanzzahl / 2); 13) Welche Ausgaben erhält man, wenn man beide Variablen auf 8 initialisiert? 14) Nutzen Sie ihre Erkenntnisse aus obigen zwei Aufgaben, um mit mehrmaligem Klicken auf die > Act - Schaltfläche folgende Zahlenreihen zu erhalten: a) 1, 1, 2, 2, 3, 3, 4, 4, b) 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, c) 2, 4, 5, 7, 8, 10, 11, 13 (schwierig!) 15) Probieren Sie den nachfolgenden Code aus. Was fällt auf? (Vergleichen Sie mit der ähnlichen Aufgabe weiter oben.) double meinebruchzahl = 7; System.out.println(0.5*meineBruchzahl); int meineganzzahl = 7; System.out.println(0.5*meineGanzzahl);