Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmierung Prof.docx
Скачиваний:
4
Добавлен:
29.08.2019
Размер:
96.63 Кб
Скачать

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr

Programmierung Prof. Dr.-Ing. Nobert Fuhr

Gudrun Fischer Sascha Kriewel

1 + 2 * - 3*4

23

programmierung@is.informatik.uni-duisburg.de

Übungsblatt Nr. 2

Aufgabe 4: Operatoren und Präzedenz

In der Vorlesung wurden ein-, zwei- und dreistellige Operatoren vorgestellt. Bestimmte Operatoren haben bei der Auswertung Vorrang vor anderen, d.h. sie werden zuerst ausgewertet. Ist die Auswertungsreihenfolge dagegen nicht durch Rangfolge (Präzedenz) und/oder Klammern festgelegt, so werden Operatoren von links nach rechts ausgewertet.

Beispiel: 1 + 2 * - 3 * 4

In diesem Ausdruck wird zuerst das unäre Minus ausgewertet, da es am stärksten bindet. Danach werden nacheinander die beiden Multiplikationen (*) ausgewer­tet, und schließlich die Addition (+). Durchnumeriert sieht das so aus:

1 + 2 * - 3 * 4 4. 2. 1. 3.

Abkürzend schreiben wir dafür auch: 4 2 13. (Anmerkung: Diese Schreibweise gilt nur in dieser Vorlesung.)

Die folgende Baumdarstellung zeigt neben der Auswertungsreihenfolge auch die Werte der einzelnen Teilausdrücke an:

Durch das Setzen von Klammern kann man nun die Auswertungsreihenfolge der Operatoren in dem obigen Ausdruck verändern.

Beispiel: (1 + 2) * - (3 * 4)

Die Reihenfolge bei dieser Klammerung ist dann:

(1 + 2) * - (3 * 4) 1. 4. 3. 2.

Abkürzend: 1 4 3 2.

Als Baum:

  1. Geeignete Klammersetzung

  • Gib die Auswertungsreihenfolge und die entsprechende Baumdarstellung für den folgenden ungeklammerten Ausdruck an:

3 * 8 / 4 * 5

  • Füge in diesen Ausdruck geeignet Klammern ein, so dass sich die Reihen­folge 2 3 1 ergibt.

  • Setze geeignet Klammern, so dass sich stattdessen die Reihenfolge 3 1 2 ergibt.

    1. Ausdrücke mit Variablen, noch einmal Klammersetzung

  • Gib die Auswertungsreihenfolge und die entsprechende Baumdarstellung für den folgenden ungeklammerten Ausdruck an:

а ++ * b << 2+1

(ohne Leerzeichen, mit int-Variablen a=5 und b=3) Hinweis: Der Variablenausdruck а alleine hat genau den Wert, der der Variablen a zugewiesen wurde, im obigen Fall also den Wert 5. Der Operator ++ bewirkt die Erhöhung eines Variablenwertes um 1. Im Fall а + + wird dabei zuerst der Ausdruck ausgewertet und dann der Variablenwert verändert. Im Fall + + а wird zuerst der Variablenwert verändert und dann der Ausdruck ausgewertet.

  • Welche der folgenden Klammerungen ergeben eine andere Auswertungs­reihenfolge?

( а ++) * b<< 2+1

а ++ * ( b << 2 ) + 1

а ++ * b<< (2+1)

( а ++ * b ) << 2+1

Hinweis: Genau einer dieser Ausdrücke ergibt einen Wert von 41, wäh­rend alle anderen den Wert 80 haben.

c) Typischer Denkfehler

Das folgende Programm soll die Ausdrücke aus Teil b) testen. Es gibt jedoch völlig andere Zahlen aus! Wieso?

Listing 1: Praezdenztest.Java

1

public

class Praezedenztest

{

2

public static void

main (String [ ]

args) {

3

// Teil c)

4

int a=5;

5

int b=3;

6

System . out .

println (a++*—

-b<<2+1);

7

System . out .

println (( a++)*

—b<<2+1);

8

System . out .

println (a++*(—

-b<<2) + 1);

9

System . out .

println (a++*—

-b < < (2 +1));

10

System . out .

println (( a++*-

—b)<<2+1);

11

}

12

}

Aufgabe 5: Ein kleiner Rechner (Programmierung)

Das folgende Programm kannst du abtippen oder aber von der Webseite herun­terladen:

1 2

  1. 9

10 11 12

    1. 17

Listing 2: Rechner.java

public class Rechner {

public static void main ( S tring [ ] args ) {

int a=Integer.valueOf(args [0]).intValue(); System. out . print ( a+" w" );

String operator=args [ 1 ] ; System . out . print ( operator+" w" );

int b=Integer .valueOf(args [2]).intValue(); System . out . print (b+" w" );

System . out . print (" er gib t ^" ) ; if ( operator . equals ("+"))

System . out . println ( a+b );

else

System . out . println (" Unsinn" ) ;

18 } 19 }

  1. Code verstehen Was tut dieses Programm?

Welche Variablen kommen vor, und mit welchen Werten werden sie besetzt?

Welche Ausgabe erzeugt das Programm, wenn es wie folgt aufgerufen wird: java Rechner 1+2

Welche Ausgabe erzeugt das Programm bei dem folgenden Aufruf: java Rechner 1 und 2

Was passiert, wenn du in dem Vergleich if (operator.equals("+"))

stattdessen den Vergleichsoperator == verwendest: if (operator == "+")

Informiere dich in der Java-API-Dokumentation über String-Vergleiche.

  1. Code ändern

Passe den Programmcode so an, dass das Programm auch die Operatoren —, *, <<, >> und == „versteht". Bei unbekannten Operatoren soll es weiterhin „ ... ergibt Unsinn" ausgeben.

Teste das Programm mit geeigneten Parametern (Hinweis: bei einigen Operato­ren wird es nötig sein, sie beim Aufruf in Anführungszeichen zu setzen).

Was fällt dir bei der Wirkung des Operators == auf?

  1. Division

Erweitere das Programm nun noch um den Divisionsoperator /.

Welche Ausgabe erzeugt dein Programm nun bei dem folgenden Aufruf: java Rechner 3/2

Hast du dieses Ergebnis erwartet?

Passe das Programm gegebenenfalls so an, dass es beim Operator / eine Kom­mazahl ausgibt.

Was passiert beim folgenden Aufruf: java Rechner 3/0

Passe das Programm gegebenenfalls so an, dass das Programm in solchen Fällen dem Anwender mitteilt, was falsch ist, z.B. „ ... ist eine Division durch 0 und daher nicht erlaubt."

Programmierung Prof. Dr.-Ing. Nobert Fuhr

Gudrun Fischer Sascha Kriewel

programmierung@is.informatik.uni-duisburg.de

Übungsblatt Nr. 3

Aufgabe 6: Zeichenketten

Anmerkung: Die Klasse java.lang.String bringt zahlreiche Methoden zur Manipulation von Zeichenketten mit. Benutze nach Möglichkeit die vorhandenen Methoden. Informiere Dich vorab in der Java-API darüber, welche Methoden zur Verfügung stehen.

Schreibe eine Klasse GanzNeueRechtschreibung. Diese soll eine Methode String altNachNeu(String) besitzen, die einen deutschen Satz folgendermas­sen behandelt und die neue Zeichenkette zurückliefert.

    1. Säubere den Text, indem Du Leerzeichen am Anfang und Ende entfernst.

    2. Ersetze alle Vorkommen von ß durch ss.

    3. Schreibe alle Worte klein, mit Ausnahme des Satzanfangs.

    4. Entferne alle Kommata.

Schreibe nun zum Testen der Klasse eine main-Methode. Benutze den folgenden Text für Deinen Test.

„Alle Menschen sind vor dem Gesetz gleich und haben ohne Unterschied An­spruch auf gleichen Schutz durch das Gesetz. Alle haben Anspruch auf gleichen Schutz gegen jede Diskriminierung, die gegen diese Erklärung verstößt, und ge­gen jede Aufhetzung zu einer derartigen Diskriminierung."

Zerlege ihn zunächst z.B. mit substring in seine zwei einzelnen Sätze. Rufe dann altNachNeu() mit beiden Sätzen auf und gebe zur Kontrolle die originale und die veränderte Version des Textes, sowie jeweils die Länge der Zeichenkette aus.

Aufgabe 7: Klassen und Objekte

Nimm an, Du möchtest Deine private Büchersammlung in Java modellieren. Ein Buch hat bestimmte Eigenschaften, wie ISBN, Titel, Autoren und Zustand. Zu­sätzlich soll die Klasse Buch auch noch ein Attribut Ort verwalten, das festhält, wo sich ein Buch zur Zeit befindet.

Beim Erstellen eines neuen Buchobjektes sollen mindestens ISBN und Titel gesetzt werden müssen. Entwerfe entsprechende Konstruktoren. Der Zustand eines neu erstellten Buches soll stets „Neuwertig" sein.

Füge der Klasse einige Methoden hinzu:

      1. void ausleihen(String) - setzt den Ort des Buches auf den übergebenen String

      2. void zurückbekommen() - setzt den Ort des Buches auf „Regal" und den Zustand des Buches auf „Gebraucht" (wenn bisher ,Neuwertig") oder auf ,Altpapier" (wenn bisher „Gebraucht")

      3. String toString() - soll eine Beschreibung des Buches (d.h. der gespei­cherten Eigenschaften) als String zurückliefern

Eine solche Beschreibung könnte also z.B. so aussehen:

„GNU Emacs - kurz & gut" von Debra Cameron, ISBN 3-89721-211-0. Der Zustand ist Gebraucht. Zur Zeit an Anna ausgeliehen.

      1. String getISBN(), setlSBN(String) - Methoden zum expliziten Set­zen und Auslesen der ISBN - prüfe beim Setzen der ISBN, ob der neue Wert ein gültiger Wert für eine ISBN ist, sonst belasse den alten Wert

Eine gültige ISBN besteht aus zehn Ziffern, die in vier Blöcke variabler Länge unterteilt sind. Die Blöcke dürfen durch Bindestriche oder Leerzeichen getrennt sein. D.h. die folgenden Zeichenketten wären gültige ISBN:

0-8436-1072-7 3 528 57235 3

Die letzte Ziffer der ISBN ist eine Prüfziffer auf der Basis des Modulo 11. Statt einer 10 wird ein 'X' benutzt, so dass sie die Werte 0-9 und 'X' annehmen kann.

Zur Überprüfung multipliziert man die erste Ziffer der ISBN mit 10, die zweite mit 9, die dritte mit 8, und so weiter. Die Prüfziffer wird mit 1 multipliziert. Lässt sich die Summe der so entstandenen Zahlen glatt durch 11 teilen, handelt es sich um eine korrekte ISBN.

Nachlesen kann man das auch unter

http://www.isbn-international.org/en/userman/chapter4.html. Benutze die folgende main-Methode zum Testen Deiner Klasse:

Listing 1: Buch.java

1

public class Buch {

2

3

/ *

4

*

Attribute

5

*

6

*

Konstruktoren und

7

*

Klasse . . .

8

*

9

* /

/

10

public static void main( String [] args) {

Buch meinBuch =

new Buch( "Mein^Buchtitel" ,"3^528^57235^3" );

System .out.println( meinBuch .toString());

meinBuch. ausleihen (" Steffi " ) ;)

System .out.println( meinBuch .toString());

meinBuch . zurueckbekommen () ;

System .out.println( meinBuch .toString());

// Testen auf Gleichheit Buch meinAnderesBuch =

new Buch( "Mein^buchtitel" , "3^528^57235^3" ) ; System .out.println( meinBuch . equals ( meinAnderesBuch ))

// keine korrekte ISBN meinBuch. setISBN( "1 -567-67878-1" ); System .out.println( meinBuch . get IS BN ); // k o r r e k t e ISBN

}

meinBuch. setISBN( "1 -567-67878-0" ); System .out.println( meinBuch . get IS BN );

}

Wenn Du noch Zeit hast, versuche Deine Klasse Buch zu verbessern:

        1. Schreibe get- und set-Methoden für die anderen Attribute.

        2. Füge der Klasse zusätzliche Attribute hinzu, z.B. Erscheinungsjahr. Pas­se gegebenenfalls die Konstruktoren an, ergänze get- und set-Methoden, sowie die Ausgabe von toString().

        3. Schreibe eine Methode boolean equals(Object). Diese soll true zurück­liefern, wenn die ISBN des übergebenen Buches mit der ISBN dieses Buchs übereinstimmt

Da der Parameter von der allgemeinen Klasse Object ist, musst Du zu­nächst casten. Um zu überprüfen, dass es sich bei dem Objekt tatsäch­lich um eine Instanz der Klasse Buch handelt, kennt Java den binären instanceof Operator:

11 12

  1. 21 22

a instanceof b liefert true, wenn das Objekt a eine Instanz der Klasse b ist, und false sonst.

Programmierung Prof. Dr.-Ing. Nobert Fuhr

Gudrun Fischer Sascha Kriewel

programmierung@is.informatik.uni-duisburg.de

Übungsblatt Nr. 4

Aufgabe 8: Vereinfachte arithmetische Ausdrücke — Schleifen, Re­kursion und eine Baumstruktur

Ein mathematischer Ausdruck setzt sich aus einem Operator (z.B. * für Multi­plikation) und einem oder mehreren Operanden zusammen. Auf diesem Übungs­blatt soll eine Datenstruktur für arithmetische Ausdrücke aus natürlichen Zah­len und dem Operator * entwickelt werden.

Betrachte dazu zunächst die Eigenschaften eines solchen arithmetischen Aus­drucks:

  • Eine natürliche Zahl für sich genommen ist schon ein Ausdruck. Beispiel: 42

  • Zwei Ausdrücke, die mit * verbunden sind, bilden wiederum einen Aus­druck. Beispiel: 6 * 7

Betrachtet man Ausdrücke nun als Objekte einer zu definierende Java-Klasse Ausdruck, dann wären dies Eigenschaften der Klasse:

  • ein Basisblock, der entweder eine natürliche Zahl oder ein Operator sein kann

  • zwei Operanden, die wiederum Ausdrücke sind, aber auch leer sein können

Wenn der Basisblock eine natürliche Zahl ist, so sind keine Operanden erlaubt. Ist der Basisblock ein Operator, dann hängt von der Art des Operators ab, wieviele Operanden vorhanden sein müssen (z.B. genau zwei für den Operator

*).

Die Datei Ausdruck.java auf der Webseite enthält ein Gerüst für die folgenden Aufgaben. In der Methode main sind für jede Teilaufgabe Testaufrufe vorgese­hen, aber noch auskommentiert. Diese kannst du zum Testen deiner Lösungen verwenden. Entwirf zusätzlich auch eigene Testaufrufe.

  1. Definition der Variablen für die Klasse Ausdruck

Erstelle eine Klasse Ausdruck und definiere für sie drei Instanzvariablen:

  • eine Variable basisBlock vom Typ String

  • eine Variable linkerOperand vom Typ Ausdruck

  • eine Variable rechterOperand vom Typ Ausdruck

Warum sollen die beiden Variablen linkerOperand und rechterOperand den Datentyp Ausdruck haben?

  1. Definition passender Konstruktoren

Erstelle zwei Konstruktoren für die Klasse Ausdruck. Ausdruck(String zahl)

Das soll dem Fall entsprechen, dass der zu repräsentierende Ausdruck aus einer einzelnen natürlichen Zahl besteht.

Ausdruck(String t, Ausdruck lOperand, Ausdruck rOperand)

Das soll einem zusammengesetzten Ausdruck entsprechen, bei dem der Operator als Text abgespeichert wird, und die Operanden wiederum Ausdrücke sind.

Achte darauf, in beiden Konstruktoren die Instanzvariablen basisBlock, linkerOperand und rechterOperand passend zu setzen. Was ist ein sinnvoller Wert für linkerOperand und rechterOperand, wenn es sich bei dem Ausdruck um eine Zahl handelt?

  1. Konsistenzprüfung

Schreibe zwei Hilfsmethoden:

boolean istErlaubterOperator(String zeichenkette)

...soll genau dann true zurückgeben, wenn die Zeichenkette zeichenkette der erlaubte Operator „*" ist.

boolean istNatuerlicheZahl(String zeichenkette)

...soll genau dann true zurückgeben, wenn die Zeichenkette zeichenkette eine natürliche Zahl (inklusive 0, ohne Vorzeichen) ist.

Verwende diese beiden Methoden in den Konstruktoren, um folgende Punkte sicherzustellen:

  • Wenn basisBlock eine Zahl ist, dann darf der Ausdruck keine Operanden besitzen. Anderfalls soll eine Fehlermeldung ausgegeben werden.

  • Wenn basisBlock ein erlaubter Operator ist, dann muss der Ausdruck die korrekte Anzahl an Operanden besitzen, die nicht den Wert null haben. Anderfalls soll eine Fehlermeldung ausgegeben werden.

  • Wenn basisBlock weder eine Zahl, noch ein erlaubter Operator ist, han­delt es sich um keinen gültigen Ausdruck und es soll ebenfalls eine Fehler­meldung ausgegeben werden.

  1. Ausgabe

Schreibe eine Methode, mit der sich ein Ausdruck komplett mit allen relevanten Instanzvariablen selber zu einem String wandelt: public String toString()

Diese Methode soll für die folgenden Ausdrücke die folgenden Strings liefern: Für 3 * 4 * 2

„Ausdruck( op = *, links = Ausdruck( 3 ), rechts = Ausdruck( op = *, links = Ausdruck( 4 ), rechts = Ausdruck( 2 ) ) )"

Für (1 * 2) * (3 * 4)

„Ausdruck( op = *, links = Ausdruck( op = *, links = Ausdruck( 1 ), rechts = Ausdruck( 2 ) ), rechts = Ausdruck( op = *, links = Ausdruck( 3 ), rechts = Ausdruck( 4 ) ) )"

Warum braucht man hier eine rekursive Methode? Anmerkung:

Hier wird bei jedem Ausdruck zuerst der Operator und dann die beiden Ope­randen ausgegeben. Diese Reihenfolge nennt man Präfix-Notation. Analog gibt es noch die Infix-Notation (zuerst der linke Operand, dann der Operator, und zuletzt der rechte Operand) und die Postfix-Notation (zuerst die beiden Ope­randen, dann der Operator).

  1. Auswertung

Schreibe eine Methode, mit der sich ein Ausdruck selbst auswertet: int berechneWert()

  1. Schleifen

Angenommen, wir wollen einen zusätzlichen Operator „**" zulassen. Der Aus­druck 3 * *4 soll dann als „3 hoch 4" (also 3 * 3 * 3 * 3) interpretiert werden.

Schreibe eine statische Methode exp, die zwei int-Parameter nimmt und die entsprechende Potenz zurückliefert: static int exp(int a, int b) ...soll a * *b zurückgeben.

Verwende bei der Berechnung keine sonstigen Klassen, sondern stattdessen eine while-do-Schleife.

Versuche nun, die Methode exp stattdessen mit einer do-while-Schleife zu for­mulieren.

Ist auch eine for-Schleife möglich?

Kannst du dir eine Lösung ohne Schleifen, aber auch ohne Verwendung anderer Klassen vorstellen?

g) Baumstruktur

Die hier entwickelte Klasse Ausdruck ist ein Beispiel für einen „Baum", eine Struktur, auf die man in der Informatik häufiger trifft. Kannst du dir vorstellen, wieso diese und ähnliche Strukturen „Baum" heißen?

Programmierung Prof. Dr.-Ing. Nobert Fuhr

Gudrun Fischer Sascha Kriewel

programmierung@is.informatik.uni-duisburg.de

Übungsblatt Nr. 5

Aufgabe 9: Magische Zahlenquadrate

Felder oder Arrays können in Java auch mehrdimensional sein. Zum Beispiel wird durch

int[][] feld = new int[2][3];

ein sechs-elementiges, zweidimensionales Feld von 2x3 Ganzzahlen deklariert und initialisiert. Auf diesem Übungsblatt sollen nun solche zweidimensionalen Felder verwendet werden, um damit magische Quadrate zu bauen.

Ein magisches Quadrat ist ein Zahlenfeld aus jeweils n Zeilen und Spalten, das mit den natürlichen Zahlen von 1 bis n x n gefüllt wird - und zwar derart, dass die Zahlensumme in jeder Zeile, Spalte und den Hauptdiagonalen gleich ist.

Ein mögliches magisches Quadrat (es gibt mehr als eine Lösung) für n = 3 sieht so aus:

2

7

6

9

5

1

4

3

8

Schreibe eine Klasse MagischesQuadrat, die magische Quadrate für beliebige ungerade natürliche Zahlen n > 1 erzeugen kann. Bediene Dich dazu des Algo­rithmus nach Bachet de Mezeriac, wie er in den Teilaufgaben a) bis d) angegeben ist. Bei diesem Verfahren hilft es, sich vorzustellen, dass die linke und die rechte bzw. die obere und untere Seite des Quadrates miteinander verbunden sind - das Quadrat also quasi auf einem Torus aufgewickelt wurde.

    1. Beginne das Quadrat mit dem Feld (n, n + 1), benutze dabei ganzzahlige Division (und denke daran, dass Felder von 0 ab durchnummeriert wer­den). Trage hier eine 1 ein. Iteriere die folgenden Schritte für i = 2 bis n2, bis alle Zahlen eingetragen sind.

    2. Dekrementiere die Nummer der Zeile und inkrementiere die Nummer der Spalte. Wenn Du dadurch aus dem Zahlenbereich des Feldes herauslaufen würdest, setze die Zeile statt auf —1 auf n — 1 bzw. die Spalte statt auf n auf 0.

    3. Wenn diese Position des Feldes noch frei ist, trage i ein, und setze den Algorithmus mit i + 1 fort.

    4. Ist diese Position bereits belegt, finde die neue Position wie folgt: inkre- mentiere sowohl Zeilen- als auch Spaltennummer. Wenn Du dadurch aus dem Zahlenbereich des Feldes herauslaufen würdest, setze die Zeilen- bzw. Spaltennummer statt auf n auf 0. Gehe zu (c).

Das Verfahren funktioniert nicht für gerade Zahlen, fange dieses Problem geeig­net ab. Füge dann der Klasse noch eine Methode zur angemessenen Ausgabe des magischen Quadrates am Bildschirm hinzu.

Aufgabe 10: Vektoren

Schreibe zwei Klassen Bibliothek und Regal als Erweiterung zur Klasse Buch vom Übungszettel 3. Ein Regal soll in einem Vektor eine variable Anzahl von Büchern verwalten, jedes Regal soll aber eine Höchstgrenze an Büchern haben, die es aufnehmen kann. Eine Bibliothek soll in einem Vektor eine variable Anzahl von Regalen verwalten.

Deine Klassen sollen folgende Dinge können:

Regal: Ein Regal soll mit einer Höchstkapazität von Büchern erschaffen wer­den, zunächst enthält es keine Bücher. Ein Regal soll einen Bezeichner besitzen, um es auch in der realen Welt lokalisieren zu können. Die Klasse soll mindestens folgende Methoden besitzen:

  • boolean addBuch(Buch): füge ein Buch hinzu, wenn noch Platz im Regal ist; liefere true, falls Hinzufügen erfolgreich, false sonst

  • boolean removeBuch(String): entferne ein Buch mit der als String übergebenen ISBN aus dem Regal; liefere true, falls Entfernen er­folgreich, false sonst

  • Vector getBücher(): liefere einen Vektor mit allen Bücher­Objekten im Regal zurück

  • String getStandort(): liefere den Bezeichner des Regals zurück

  • int getMaxKapazität(): liefere die maximale Kapazität des Regals

  • int getFreieKapazität(): liefere die freie Kapazität des Regals (wieviele Bücher kann es noch aufnehmen?)

  • int getAnzahlBücher(): liefere die aktuelle Anzahl Bücher im Re­gal

  • void print(): gebe den Inhalt des Regals nach System.out aus, benutze dafür z.B. Enumeration

Bibliothek: Eine Bibliothek muß zunächst keine Regale enthalten. Ein alter­nativer Konstruktor könnte die Bibliothek mit einem Regalobjekt initia­lisieren. Die Klasse soll mindestens folgende Methoden besitzen:

  • addRegal(Regal): füge ein Regal der Bibliothek hinzu

  • boolean removeRegal(String): entferne ein Regal mit dem als String übergebenen Bezeichner aus der Bibliothek; verteile eventuell in dem Regal stehende Bücher zunächst gleichmäßig auf die übrigen Regale; lassen sich nicht alle Bücher verteilen, weil die Kapazität der verbleibenden Regale nicht ausreicht (vorher überprüfen!), lösche das Regal nicht und liefere false zurück, sonst true

  • int getAnzahlRegale(): liefere die Anzahl der Regale in der Bi­bliothek

  • int getGesamtKapazität(): liefere die gesamte Kapazität der Bi­bliothek (also die Summe der Aufnahmekapazitäten der Regale)

  • int getGesamtFreieKapazität(): liefere die gesamte freie Kapazi­tät der Bibliothek (also die Summe der freien Kapazitäten der Regale)

  • int getGesamtAnzahlBücher(): liefere die Anzahl aller Bücher in der Bibliothek

Mehr als eine Datei in Seite bearbeiten

Wenn man in Aufgabe 10 eine Quelldatei pro Klasse schreiben möchte, ist es angenehm, die verschiedenen Dateien gleichzeitig geöffnet zu haben, und dann zwischen diesen hin- und herschalten zu können. In Scite geht auch das, wenn man die entsprechenden Einstellungen für sich vornimmt:

Wähle im Menü Options den Punkt Open User Options File. Wenn Du bisher noch keine Anpassungen vorgenommen hast, ist diese Konfigurationsdatei wahrscheinlich leer. Die folgenden Zeilen erlauben das Arbeiten mit bis zu zehn einzelnen Puffern, zwischen denen leicht gewechselt werden kann.

tabbar.visible=1 tabbar.hide.one=1 tabbar.multiline=1 buffers=10

Danach speichern, Programm schliessen und neustarten.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]