Übungsblatt 3: Algorithmen in Java & Grammatiken



Ähnliche Dokumente
Programmierkurs Java

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Java: Vererbung. Teil 3: super()

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Einführung in die Java- Programmierung

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Grundlagen der Theoretischen Informatik, SoSe 2008

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Java Projekt: Tic Tac Toe + GUI

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Version 0.3. Installation von MinGW und Eclipse CDT

Java Einführung Collections

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Grundbegriffe der Informatik

Einführung in die Programmierung

Übungen zu C++ Kapitel 1

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Schumacher, Chris Druckdatum :11:00

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Einführung in die Programmierung für Wirtschaftsinformatik

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Grundlagen der Informatik

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Prüfziffern. Man versucht, solche Fehler zu erkennen, indem man der Zahl eine weitere Ziffern, die sog. Prüfziffern, hinzufügt.

Programmablauf für die Batch Wlan Komplettpakete mit Windows CE

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Übungen Programmieren 1 Felix Rohrer. Übungen

Anwendungsbeispiele Buchhaltung

1 Vom Problem zum Programm

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

Diana Lange. Generative Gestaltung Operatoren

Einführung in die Java- Programmierung

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Erstellen einer digitalen Signatur für Adobe-Formulare

Internet online Update (Internet Explorer)

Whitepaper. Produkt: combit Relationship Manager. SQL Server 2008 R2 Express um Volltextsuche erweitern. combit GmbH Untere Laube Konstanz

Computeranwendung und Programmierung (CuP)

Zeichen bei Zahlen entschlüsseln

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Überblick. Lineares Suchen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

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

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Orientierungstest für angehende Industriemeister. Vorbereitungskurs Mathematik

Physik & Musik. Stimmgabeln. 1 Auftrag

5. Tutorium zu Programmieren

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

Artikel Schnittstelle über CSV

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Leichte-Sprache-Bilder

Arbeiten mit dem neuen WU Fileshare unter Windows 7

Einführung in die Programmierung (EPR)

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Um zusammenfassende Berichte zu erstellen, gehen Sie folgendermaßen vor:

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Vorlagen im Online Banking. Anlegen von Vorlagen

Adressen der BA Leipzig

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Verwendung des Terminalservers der MUG

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Kurzeinführung Moodle

Die Post hat eine Umfrage gemacht

Sie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben.

Objektorientierte Programmierung. Kapitel 12: Interfaces

Vorkurs Informatik WiSe 15/16

GDPdU Export. Modulbeschreibung. GDPdU Export. Software-Lösungen. Stand: Seite 1

Lokales Netzwerk Wie kann ich lokal installierte Drucker im Netzwerk für andere Nutzer freigeben? Frage:

Verwendung des IDS Backup Systems unter Windows 2000

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

YouTube: Video-Untertitel übersetzen

Freischaltung eines neuen VR-NetKeys mit SecureGo

Schulberichtssystem. Inhaltsverzeichnis

Einführung in die Programmierung

Vorgehensweise bei Lastschriftverfahren

FastViewer Remote Edition 2.X

Programmierkurs Java

Programmiersprachen und Übersetzer

Internet online Update (Mozilla Firefox)

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Formale Sprachen und Grammatiken

Vertreterabrechnung DdD Cowis backoffice

Informationsblatt Induktionsbeweis

OP-LOG

Dossier: Rechnungen und Lieferscheine in Word

Internet Explorer Version 6

Transkript:

Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015 über Goya Die Lösung dieses Übungsblatts soll in Gruppen von je 2 Personen erfolgen. Die Abgabe der Lösungen erfolgt durch Hochladen einer angegebenen Datei für jede Aufgabe im Goya-System. Hinweis: Die Lösungen zu den Aufgaben 1 und 2 sollen als Java-Quellcode erfolgen, aus diesen Quellen soll auf dem Rechner gruenau5.informatik.hu-berlin.de durch den Aufruf von javac möglich sein, das jeweilige Java-Programm zu erzeugen. Das Java-Programm wird dann wie in der jeweiligen Aufgabe angegeben ausgeführt. Bitte testen Sie ihre Lösung. Aufgabe 1 (5 Punkte) Square.java Schreiben Sie ein Java-Programm mit dem Namen Square, das ein nichtausgefülltes Quadrat mit dessen Diagonalen ausgibt. Die Begrenzung des Quadrats soll aus dem Plus-Zeichen (+) bestehen, die Diagonalen aus dem Stern-Zeichen (*). Die Seitenlänge (Anzahl der Plus- Zeichen auf einer Seite des Quadrats) soll dabei per Konsolenargument einstellbar sein. Verwenden Sie das Rumpfprogramm am Ende der Aufgabestellung und beachten Sie die Hinweise zu Konsolenargumenten. Nachfolgend ein paar Beispielaufrufe mit den entsprechenden Quadraten: java Square 7 +++++++ +* *+ + * * + + * + + * * + +* *+ +++++++ java Square 4 ++++ +**+ +**+ ++++ java Square 2 ++ ++ java Square 0

Ihr Programm könnte folgendermaßen beginnen: public class Square { /** * * @param args die Variable args enthält alle (durch Leerzeichen * getrennte) Konsolenargumente, die beim Aufruf des Programms in der * Konsole übergeben wurden. */ public static void main(string[] args) { // mit dem Index 0 wird auf das erste Konsolenargument zugegriffen String arg1 = args[0]; // arg1 ist eine Zeichenkette vom Typ String // mit Hilfe der Funktion Integer.parseInt wird die Zeichenkette // in eine Ganzzahl von Typ int umgewandelt. int length = Integer.parseInt(arg1);

Aufgabe 2 (8 Punkte) IDCheck.java Ein Verfahren zur Erkennung von Eingabefehlern ist die Verwendung von Prüfziffern. Diese werden aus einer Eingabezahl berechnet und dann zu dieser hinzugefügt. Ein Beispiel für eine Prüfziffer ist die letzte Stelle der 10-stelligen Nummer eines deutschen Personalausweises. Die Prüfziffer (10. Stelle) wird aus den ersten 9 Stellen der Ausweisnummer nach folgendem Schema berechnet: - von links nach rechts werden die einzelnen Ziffern sich wiederholend mit 7, 3, 1 gewichtet, wobei Buchstaben die folgenden Werte haben: A=10, B=11, C=12,, - die jeweiligen Produkte aus dem Wert der jeweiligen Ziffer und ihrem Gewicht werden errechnet, - die Endziffer der Summe der einzelnen Produkte ist die Prüfziffer. Beispiel für T220001293: Zeichen Wert Gewicht Produkt T 29 7 203 2 2 3 6 2 2 1 2 0 0 7 0 0 0 3 0 0 0 1 0 1 1 7 7 2 2 3 6 9 9 1 9 233 Schreiben Sie ein Java-Programm, das anhand einer 10-stelligen Ausweisnummer, die mit Aufruf des Programms übergeben wird, entscheidet, ob die Ausweisnummer gültig ist (d.h., ob die Prüfziffer stimmt). Sie können mit dem folgenden Java-Programm beginnen: public class IDCheck { public static void main(string[] args) { String id = args[0]; // 1. Argument in der Konsole

Damit lässt sich das Java-Programm dann z.b. folgendermaßen aufrufen: java IDCheck T220001293 Bei diesem Aufruf soll dann folgende Ausgabe erscheinen (und nichts anderes): Ausweisnummer ist gültig Bei folgendem Aufruf: java IDCheck 1220001295 Soll dann folgende Ausgabe erscheinen (und nichts anderes): Ausweisnummer ist nicht gültig Hinweise: Um auf ein bestimmtes Zeichen in einer Zeichenkette zuzugreifen, können Sie folgende Methode aus der Klasse String verwenden: public char charat(int index) Beispiele: String str = "Hallo Welt"; // Index 0 greift auf das erste Zeichen zu char c = str.charat(0); // c enthält den Buchstaben 'H' // Index 6 greift auf das 7. Zeichen zu c = str.charat(6); // c enthält den Buchstaben 'W' Um den Wert eines Zeichens zu erhalten, können Sie folgende Funktion aus der Klasse Character nutzen: public static int getnumericvalue(char c) Beispiele: char c = 'A'; int value = Character.getNumericValue(c); // value hat den Wert 10 c = 'T'; value = Character.getNumericValue(c); // value hat den Wert 29

Aufgabe 3 (4 Punkte) blatt3_aufgabe3.txt Bitte beachten Sie für diese Aufgabe die Vorrangregeln (Vorlesung II.8) und die (Links-) Assoziativität der meisten Operatoren. 1) a = x == y!= z p >= q/3 2) b = 4*x ^ 3-y >> 5 3) c = x y & y ^ z z & x 4) d? ++i << 5%3 : ~~1-2 a) Ergänzen Sie in den obigen Java-Ausdrücken genau alle sinnerhaltenden Klammern ohne Mehrfachklammerung eines Teilausdrucks, indem Sie jeden Teilausdruck explizit klammern. Bei einer Mehrfachklammerung ist ein bereits geklammerter Ausdruck wieder direkt geklammert, z. B. ist (1+2) einfach geklammert und ((1+2)) oder (((1+2))) sind mehrfachgeklammert. Bei Mehrfachklammerung könnte der Ausdruck beliebig lang werden. Zur Vereinfachung sollen außerdem die den gesamten Ausdruck umschließenden Klammern sowie die Klammern um einzelne Zahlen und Variablen weggelassen werden. Beispiel: Der sinnerhaltend geklammerte Ausdruck zum Ausdruck 1+2*3+4 ist (1 + (2 * 3)) + 4. b) Die auftretenden Variablen sind vom Typ int oder vom Typ boolean, die sich jeweils aus dem Kontext der verwendeten Operatoren ergeben. Welchen Typ hat der jeweilige Ausdruck aus obigen Beispielen 1) 4)? (Möglich sind: int boolean int oder boolean) Beispielformat der Abgabedatei: 1a) a=(1+(2*3))+4 1b) int 2a) b=q 2b) int oder boolean 3a) c=(1>1) (2>2) 3b) boolean 4a) d=77 4b) int

Aufgabe 4 (3 Punkte) blatt3_aufgabe4.txt Gegeben sind Grammatiken G1, G2 und G3. Entscheiden Sie ob die jeweils angegebenen Wörter durch die entsprechende Grammatik erzeugt werden oder nicht. Bitte beachten Sie: Alle Antworten in einer Teilaufgabe müssen korrekt sein, damit sie einen Punkt bekommen. 1. G1 = {{a, b, {S, N, S, R1 R1 = { (S, anb), (S, anbanb), (N, anb), (N, ε) 1.1. ab 1.2. abb 1.3. aababb 1.4. abaaabbb 2. G2 = {{c, d, e, f, {S, M, N, S, R2 R2 = { (S, cmd), (M, c), (M, cmd), (M, endc), (M, edc), (N, enf), (N, ε) 2.1. cd 2.2. ef 2.3. ccd 2.4. cefd 3. G3 = {{g, h, {S, M, N, S, R3 R3 = { (S, gmgg), (M, gmg), (M, ε), (M, hn), (N, hn), (N, ε) 3.1. ghgg 3.2. ghggg 3.3. gghhgg 3.4. ggghhhhhgggg Beispielformat der Abgabedatei: 1.1. ja 1.2. nein 1.3. ja 1.4. nein 2.1. ja 2.2. nein 2.3. ja 2.4. nein 3.1. ja 3.2. nein 3.3. ja 3.4. nein Auch in diesem Jahr steht Ihnen wieder der FIT Java Tutor ein intelligentes Lernsystem für die Java Programmierung zur Verfügung: https://its.fit.informatik.hu-berlin.de/