Teil 1: Grundeigenschaften von Rechnern und Software [10P]



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

Einführung in die Programmierung

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

Einführung in die Programmierung

Java: Vererbung. Teil 3: super()

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

Programmierung in C. Grundlagen. Stefan Kallerhoff

Diana Lange. Generative Gestaltung Operatoren

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

1 Vom Problem zum Programm

Objektorientierte Programmierung

Einführung in die Java- Programmierung

Programmierkurs Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java

BEISPIELKLAUSUR Softwareentwicklung:

5. Tutorium zu Programmieren

Große Übung Praktische Informatik 1

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

Graphic Coding. Klausur. 9. Februar Kurs A

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

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

Musterlösungen zur Klausur Informatik 3

Dr. Monika Meiler. Inhalt

Informatik Repetitorium SS Volker Jaedicke

Zählen von Objekten einer bestimmten Klasse

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

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Teil 1: Grundeigenschaften von Rechnern und Software [10P]

Delegatesund Ereignisse

Klausur in Programmieren

5.4 Klassen und Objekte

Angewandte Mathematik und Programmierung

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Computeranwendung und Programmierung (CuP)

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Einführung in die C++ Programmierung für Ingenieure

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Hochschule München, FK 03 FA SS Ingenieurinformatik

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

2A Basistechniken: Weitere Aufgaben

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Übersicht Programmablaufsteuerung

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

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

Probeklausur: Programmierung WS04/05

Klausur in Programmieren

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Java Kurs für Anfänger Einheit 5 Methoden

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Vorkurs Informatik WiSe 16/17

Modellierung und Programmierung 1

Objektorientierte Programmierung. Kapitel 12: Interfaces

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Übung Programmierung WS 2007/08 - Blatt 5

Klausur in Programmieren

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Einführung in die Programmierung (EPR)

Einführung in die Java- Programmierung

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Einführung in die Programmierung

Kontrollstrukturen und Funktionen in C

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

Modul 122 VBA Scribt.docx

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

2. Semester, 2. Prüfung, Lösung

5.5.8 Öffentliche und private Eigenschaften

Einführung in die Programmierung für Wirtschaftsinformatik

Übungen Programmieren 1 Felix Rohrer. Übungen

Java-Schulung Grundlagen

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Deklarationen in C. Prof. Dr. Margarita Esponda

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Studentische Lösung zum Übungsblatt Nr. 7

E-PRIME TUTORIUM Die Programmiersprache BASIC

Übungen zu C++ Kapitel 1

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Kontrollstrukturen, Strukturierte Programmierung

Vorkurs C++ Programmierung

SEP 114. Design by Contract

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Java Einführung Collections

3 Objektorientierte Konzepte in Java

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Prüfung Computation, Programming

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

Dr. Monika Meiler. Inhalt

Programmieren in Java

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

Einstieg in die Informatik mit Java

Klausur in Programmieren

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Mediator 9 - Lernprogramm

Österreichische Trachtenjugend

Transkript:

Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software [10P] Aufgabe 1.1 - Programmieren Lernen [5P] 0,5P pro richtigem Feld Klassifizieren Sie die folgenden Aussagen als richtig oder falsch Beim Programmieren lernen Richtig Falsch muss man nur Rezepte lernen, weil alle Programme ähnlich sind [ ] [X] sollte man viel selber probieren, und notfalls jemanden fragen [X] [ ] muss man langfristig lernen und nicht erst kurz vor der Klausur [X] [ ] braucht man möglichst viele Bücher und Unterlagen. Nur lesen bildet! [ ] [X] muss der Groschen nach 15min fallen, sonst fällt er gar nicht mehr [ ] [X] Aufgabe 1.2 - Programmierung in der Praxis [5P] 0,5P pro richtigem Feld Klassifizieren Sie die folgenden Aussagen als richtig oder falsch Beim Programmieren Richtig Falsch muss man zuerst wissen, was man will, und dann an den Rechner gehen [X] [ ] baut man neue Sachen zum ausprobieren gleich ins Hauptprogramm ein [ ] [X] kann man durch Testen alle Laufzeitfehler finden [ ] [X] kann man im Team genauso unbedarft arbeiten wie alleine [ ] [X] sind Debugger nur was für Anfänger. Profis machen keine Fehler [ ] [X]

Blatt Nummer: 2 Teil 2: Grundlagen der Kodierung von Informationen [10P] Aufgabe 2.1 - Zahlensysteme [5P] 1P pro Antwort mit Rechenweg, sonst -0,5P Rechnen Sie die folgenden Zahlen in das jeweils angegebene Zahlensystem um Hinweis: Der Rechenweg muss erkennbar sein! Dezimal: 497 --> Binär: 1 1111 0001 (Restwertalgorithmus oder "Basteln") 497 => 248 R1 => 124 R0 => 62 R0 => 31 R0 => 15 R1 => 7 R1 => 3 R1 => 1 R1 => 0 R1 Binär: 10010110 --> Oktal: 010 010 110 = 226 (oktal) (1 Oktalziffer = 3 Bit) Oktal: 3165 --> Hex: via Binär: 3165 = 011 001 110 101 = 0110 0111 0101 = 675 Hex: ABE --> Dezimal: 1010 1011 1110 = 2560 + 176 + 14 = 2750 x256 x16 x1 NICHT: A=10 + B=11 +E=14 => 35 %$ &! Dezimal -78 --> Binär (8 Bit): 78 = 80 2 = 5*16 2 = 0101 0000 10 = 0100 1110 2er-Komplement: 1011 0001 + 0000 0001 = 1011 0010 Aufgabe 2.2 Berechnungen in anderen Zahlensystemen [5P] Berechnen Sie im jeweiligen Zahlensystem: Dezimal: 3624 Binär: 10010010 +146 1P + 1753 1P + 01101011 +107 1000 00000100 010 5377 11111101 +253 Oktal: 617 399 Hex: B1A7 45479 1,5P + 063 + 51 1,5P + 6359 25433 110 110 0110 10110 702 450 (1)1500 70912

Blatt Nummer: 3 Teil 3: Elementare Programmbestandteile [40P] Aufgabe 3.1 - Datentypen [5P] je 1P Beantworten Sie die folgenden Fragen: Welche Eigenschaften (einer Variablen) charakterisiert ein Datentyp? Der Datentyp legt eine Menge der zulässigen Werte sowie die gültigen Operationen fest. Welcher Unterschied besteht zwischen primitiven Datentypen und Referenztypen? Bei primitiven Datentypen wird ein Wert gespeichert, bei Referenztypen ein Verweis auf ein Objekt Was passiert, wenn man den int-wert 4 und den String-Wert "tel" addiert? JA DAS GEHT WIRKLICH, VGL. ÜBUNG ZUM THEMA DATENTYPEN!!! Der int-wert wird in eine Zeichenkette umgewandelt und diese mit "tel" zu "4tel" verknüpft. Welcher primitive Datentyp wird in Java per Default für "Kommazahlen" verwendet? Der Datentyp double Welcher Referenztyp wird in Java für Zeichenketten verwendet? Der Datentyp String Aufgabe 3.2 - Literale [5P] Beantworten Sie die folgende Fragen: Was versteht man unter einem Literal? 1P Ein Literal ist ein Wert, den man direkt hinschreiben kann. Welche der folgenden Literale sind nicht korrekt (durchstreichen)? 8 x 0,5 = 4P 666 'falle' 0xB16L 17,5 23b 0.3f 0823 "\n" 666 'falle' 0xB16L 17,5 23b 0.3f 0823 "\n" char = nur ein Zeichen Kommazahlen Keine 8 in Oktal mit Punkt (sic!)

Blatt Nummer: 4 Aufgabe 3.3 - Variablen [5P] Beantworten Sie die folgenden Frage: Was ist der entscheidende Unterschied zwischen Variablen und Literalen (Stichwort XValue)? 1P Eine Variable bezeichnet einen Speicherplatz, der einen änderbaren Wert enthält (LValue). Ein Literal beschreibt einen unveränderlichen Wert (RValue). Welche Arten von Variablen gibt es in Java? 4 x 0,5P AUS WERTUNG GENOMMEN DA MISSVERSTÄNDLICH Klassenvariablen, Instanzvariablen, Parameter, lokale Variablen (alternativ noch: Konstanten) Skizzieren Sie die Struktur der folgenden Array-Variablen im Speicher 2P int[][] shapearray = { { 1, 0, {6, 8, 3, null, {5, 4; int[4][]shapearray --> int[] --> [1][0] int[] --> [6][8][3] int[] --> null int[] --> [5][4] 0,5P je Teilarray Aufgabe 3.4 - Ausdrücke [10P] 2 x 5 x 1 = 10P Beantworten Sie die folgenden Fragen Geben Sie den Datentyp der folgenden Ausdrücke an (mit i=int, d=double) i * 7 Antwort: int (Ganzzahl Multiplikation) 5f + 8L Antwort: float + long = float (Promotion) 15.5 % 3 Antwort: double (Rest aus Modulo Operator) i << 2 Antwort: int (Bit-Operation) i/2 == d Antwort: boolean (Vergleichsoperator) Berechnen Sie den Wert der folgenden Ausdrücke 17 % 4 Antwort: 1 0x0e 015 Antwort: 1110 & 1101 = 1111 = 15, Ansatz 0,5P 1/2 >= 0.33 Antwort: false, da 1/2 in int = 0 (9 & 1) == 0? 6 : 3 Antwort: 3 5 << 2 Antwort: 20 da 0101 << 2 = 10100

Blatt Nummer: 5 Aufgabe 3.5 - Kontrollstrukturen [10P] Geben Sie für folgende Aufgaben jeweils eine geeignetes Programmstück an und Benennen Sie die Art der Kontrollstruktur (Schleife, Verzweigung, Sequenz) a) Erzeugung der folgenden Bildschirmausgabe Sequenz, Folge von Anweisungen: (1P) ist das nicht zu leicht? System.out.println( "ist das"); System.out.println( "nicht zu"); System.out.println( "leicht?"); b) Ausgabe von "Ja" wenn bei einer gegebenen Variable z das Bit 4 gesetzt ist (Tipp: Bit 7 = 128). Falls dies nicht der Fall ist, soll das Bit gesetzt werden. Selektion mit if-else (2P = Verzweigung + Ausdrücke) IF-IST-KEINE-SCHLEIFE!!!!! if ( z&0x10!= 0) { System.out.println( "Ja"); else { z = 0x10; c) Berechnung der Summe der ersten 10 Glieder der folgenden Zahlenreihe 1 3 5 7 9 Schleife (vollständig), z.b. for-schleife (3P = Schleife + Schrittweite + Berechnung) int z = 1; // 0,5P int summe = 0; // 0,5P for ( int i=0; i<=10; ++i) { // 1P summe += z; // 0,5P z += 2; // 0,5P System.out.println( "Summe=" + summe); d) Berechnung und Ausgabe der Summe aller Zahlen in dem 2-dimensionalen int-array numbers. Geschachtelte Schleifen (neue for-schleife oder alte Schleifen mit i und j (4P = 2 Schleifen + Vars) int summe = 0; for ( int[] subnumbers : numbers) { // 1P Grundschleife for ( int number : subnumbers) { summe += number; System.out.println( "Summe=" + summe);

Blatt Nummer: 6 Aufgabe 3.6 - Funktionen [5P] + 2ZP Beantworten Sie die folgenden Fragen Verbinden Sie die folgenden Methoden mit den richtigen Aufrufen in der main()-methode. public class Klausur { int jahr = 0; public Klausur( int jahr) { (a) this.jahr = jahr; public void aufgabe( double d) { (b) // Aufgabe am Bildschirm anzeigen public void aufgabe( int i1, int i2) { (c) // Aufgabe am Bildschirm anzeigen public void aufgabe( int f) { (d) // Aufgabe am Bildschirm anzeigen public void aufgabe( String text) { (e) // Aufgabe am Bildschirm anzeigen (a) Klausur k = new Klausur( 2009); (c) k.aufgabe( 5,9); (d) k.aufgabe( '8'); (b) k.aufgabe( 08.15); (e) k.aufgabe( "foo"); je 1P pro richtiger Antwort Zusatzfrage: Geben Sie die Signatur einer öffentlichen Methode in der Klasse Person mit dem Namen getfullname an, welche die Instanzvariablen firstname und lastname der aufgerufenen Person verkettet und zurückliefert. public String getfullname() { // 2P, -0,5P pro Fehler return firstname + " " + lastname; // nicht verlangt

Blatt Nummer: 7 Teil 4: Objektorientierte Konzepte [10P] Aufgabe 4.1 - Kapselung [6P] je 1P pro Antwort inkl. Begründung, -1P für Fehler In Java gibt es verschiedene Möglichkeit, den Zugriff auf Variablen und Methoden zu verbieten. Erläutern Sie auf welche Elemente der Klasse Konto die Subklasse Girokonto im Paket bank.konten, die Klasse Institut aus dem Paket bank sowie die Klasse Dieb aus dem Paket unterwelt jeweils nicht zugreifen können. // Datei: Konto.java package bank; public class Konto { private double kontostand; protected Konto() { this.kontostand = 0; public double getkontostand() { return this.kontostand; void setkontostand( double kontostand) { this.kontostand = kontostand; Girokonto hat keinen Zugriff auf - kontostand ist private (andere Klasse) - setkontostand() ist default (anderes Paket) Institut hat keinen Zugriff auf - kontostand ist private (andere Klasse) Dieb hat keinen Zugriff auf - kontostand ist private (andere Klasse) - Konto() ist protected (anderes Paket, keine subklasse) - setkontostand() ist default (anderes Paket)

Blatt Nummer: 8 Aufgabe 4.2 - Vererbung [4P] + 1ZP 1P pro Stichwort / Begründung Beantworten Sie die folgenden Fragen Wieviele Subklassen kann eine Klasse in Java haben? (1P) beliebig viele In der folgenden Vererbungshierarchie wird die Vererbung falsch eingesetzt. Benennen Sie die fehlerhafte(n) Stelle(n) und machen Sie wenn möglich entsprechende Korrekturvorschläge. Person personalnr : int vorname : String nachname : String Professor besoldungsgruppe: String Student matrikelnr : int fachsemester: int urlaubssemester: int Arbeitnehmer gehalt : double Ingenieur fachrichtung :String Manager bonus : double Die personalnr gehört in die Klasse Arbeitnehmer, Professor und Ingenieur darunter. Zusatzfrage: Was bedeutet das Schlüsselwort final bei einer Klasse? (1P) finale Klassen können keine Subklassen haben

Blatt Nummer: 9 Teil 5: Angewandte Programmierung [30P] Aufgabe 5.1 [5P] je 1P pro richtiger Diagnose bzw. Korrektur Interpretieren Sie die folgenden Code-Beispiele sowie die zugehörigen Fehlermeldungen und machen Sie jeweils einen Korrekturvorschlag Quellcode public class Errors1 { int[] a = { 5, 1, 6, 3, 8, 6, 9, 3, 2; for ( int i=0; i<=a.length; ++i) { System.out.println(a[i]); Fehlermeldung Exception in thread "main" java.lang.arrayindexoutofboundsexception: 9 at Errors1.main(Errors1.java:6) Problem/Lösung Der Operator in der Schleife muss < statt <= sein. Quellcode public class Errors2 { public static void main( String args) { System.out.println( "Ich bin ein kurzer Prozess"); Fehlermeldung (zur Laufzeit) Exception in thread "main" java.lang.nosuchmethoderror: main Problem/Lösung Die Methode main() hat die falsche Signatur ( String statt String[]) Quellcode public class Errors3 { for ( int k=9; k>0; k--); System.out.println( 9); Fehlermeldung Keine, Programm druckt die Zahl 9 aus und endet dann Problem/Lösung Der Strichpunkt hinter der for-schleife beendet diese und muss weg. In der Klammer muss k stehen.

Blatt Nummer: 10 Quellcode public class Errors4 { int errorcode; public Errors4( int errorcode) { this.errorcode = errorcode; public int geterrorcode() { return errorcode; Errors4 e = new Errors4(0); System.out.println( geterrorcode()); Fehlermeldung Errors4.java:16: non-static method geterrorcode() cannot be referenced from a static context System.out.println( geterrorcode()); ^ 1 error Problem/Lösung geterrorcode() ist eine Instanzmethode, der Aufruf muss e.geterrorcode() lauten Quellcode public class Errors5 { for ( int d=0; d<360; ++d) { System.out.println( Math.sinus( d*2*math.pi/360)); Fehlermeldung Errors5.java:5: cannot find symbol symbol : method sinus(double) location: class java.lang.math System.out.println( Math.sinus( d*2*math.pi/360)); ^ 1 error Problem/Lösung Die Methode heisst Math.sin, nicht Math.sinus

Blatt Nummer: 11 Aufgabe 5.2 - Programme lesen [10P] Analysieren Sie das folgende Programm, beschreiben Sie die Bedeutung der einzelnen Variablen/Methoden und geben sie die Ausgabe des Programms an. public class Mystery { static boolean[] f = null; Array für Markierungen public static void s( int c, int z) { Markiert Vielfache von z bis c f = new boolean[c]; for ( int i=z; i<c; i+=z) { f[i] = true; public static void pp() { Gibt nicht markierte Zahlen aus for ( int i=0; i<f.length; ++i) { if (!f[i]) System.out.println( i); s(10, 3); Zuerst markieren pp(); Dann ausgeben Funktion: Eliminierung aller Vielfachen einer Zahl aus einem vorgegeben Zahlenbereich Ausgabe: 0 1 2 4 5 7 8

Blatt Nummer: 12 Aufgabe 5.3 - Programme schreiben [15P] Das folgende Programm dient zur Eingabe von Klausurnoten sowie zur Berechnung des Notendurchschnitts. Ergänzen Sie die fehlenden Stellen! Quellcode: import java.util.*; public class Notenliste { Map noten = new TreeMap(); CommandLine cl = new CommandLine(); public void noteeingeben() { String matrikelnr = cl.readstring( "Matrikelnummer? "); String note = cl.readstring( "Note? "); noten.put( matrikelnr, note); public void notenausgeben() { for ( Object matrikelnr : noten.keyset()) { String note = (String)noten.get( matrikelnr); System.out.println( matrikelnr + " : " + note); public void durchschnittberechnen() { int summe = 0; int anzahl = 0; for ( Object note : noten.values()) { try { int wert = Integer.parseInt( (String)note); summe = summe + wert; anzahl++; catch ( NumberFormatException ex) { System.out.println( "Ungültige Note: " + note); System.out.println( "Durchschnitt: " + (double)summe/anzahl);

Blatt Nummer: 13 public void showmenu() { System.out.println( "\nnotenliste"); System.out.println( "----------"); System.out.println( "(1) Note eingeben"); System.out.println( "(2) Noten ausgeben"); System.out.println( "(3) Durchschnitt berechnen"); System.out.println( "(4) Ende\n"); public void start() { int auswahl; do { showmenu(); auswahl = cl.readint( "Auswahl? "); switch ( auswahl) { case 1: noteeingeben(); break; case 2: notenausgeben(); break; case 3: durchschnittberechnen(); break; while ( auswahl!=4); new Notenliste().start();