Aufgabenblatt 3. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:
|
|
- Mina Brauer
- vor 6 Jahren
- Abrufe
Transkript
1 Aufgabenblatt 3 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, :00 Uhr in TUWEL hoch. Zusätzlich müssen Sie in TUWEL ankreuzen, welche Aufgaben Sie gelöst haben und während der Übung präsentieren können. Ihre Programme müssen kompilierbar und ausführbar sein. Ändern Sie bitte nicht die Dateinamen und die vorhandene Ordnerstruktur. Bei manchen Aufgaben finden Sie Zusatzfragen. Diese Zusatzfragen beziehen sich thematisch auf das erstellte Programm. Sie müssen diese Zusatzfragen in der Übung beantworten können. Verwenden Sie, falls nicht anders angegeben, für alle Ausgaben System.out.println() bzw. System.out.print(). Verwenden Sie für die Lösung der Aufgaben keine speziellen Aufrufe (Klassen) aus der Java-API, außer diese sind ausdrücklich erlaubt, wie z.b. die Klassen StdDraw und Scanner oder Klassen, die in den Hinweisen zu den einzelnen Aufgaben aufscheinen. 13. November 2017 Seite 1
2 1 /* Aufgabe 1 Gegeben sei der Programmcode aus Listing 1: 2 Aufgabe 1) Methoden ohne Rueckgabe 3 */ 4 public class Aufgabe1 { 5 Listing 1: Vorgegebener Programmcode in Aufgabe1.java 6 public static void main(string[] args) { 7 printhello(); } 11 } Erweitern Sie das Programm wie folgt: 1. Definieren Sie die fehlende Methode, sodass obiger Code die Zeichenkette H e l l o W o r l d! in der Konsole ausgibt. 2. Schreiben Sie eine weitere Methode printtext mit einem String-Parameter. Die Methode soll den String in der Konsole ausgeben. Z.B. soll der Aufruf printtext( This is just a test ) die Ausgabe This is just a test in der Konsole erzeugen. Fügen Sie in main einen entsprechenden Aufruf zum Testen der Methode ein und überprüfen Sie die Ausgabe. 3. Schreiben Sie eine weitere Methode printrepeatedtext mit einem String-Parameter und einen weiteren Parameter vom Typ int. Hier soll eine nicht negative 1 ganze Zahl angegeben werden können, die angibt, wie viele Zeilen mit dem angegebenen Text ausgegeben werden sollen. Z.B. soll der Aufruf printrepeatedtext( Hallo, 3) die Ausgabe Hallo Hallo Hallo in der Konsole erzeugen. Der Aufruf printrepeatedtext( Hallo, 0) erzeugt gar keine Ausgabe. Testen Sie wieder durch Aufruf der Methode in main. 1 Die Bedingung, dass die Zahl größer oder gleich 0 ist, muss beim Aufruf der Methode erfüllt sein. Sie muss von der Methode nicht überprüft werden (man spricht hier von einer Vorbedingung). 13. November 2017 Seite 2
3 Aufgabe 2 Gegeben sei der Programmcode aus Listing 2. Verändern Sie das Programm wie folgt: 1. Kürzen Sie den obigen Programmcode durch Verwendung von Unterprogrammen (Methoden): Schreiben Sie geeignete Methoden, die es ermöglichen, dass beliebiger Text und bestimmte ganze Zahlen durch Aufruf von Methoden in der speziellen Formatierung ausgegeben werden können, ohne dass dabei die Inhalte der Variablen text1, text2, a, b und c nach der Initialisierung beim Programmablauf verändert werden. Z.B. soll durch die Anweisung printtext( Hello World! ) die Ausgabe H-e-l-l-o- -W-o-r-l-d-! oder durch die Anweisung printnumber(1023) die Ausgabe in der Konsole erzeugt werden. Nutzen Sie dabei den bereits bestehenden Code. Zusatzfragen: 1. Können Sie anstelle der Methodennamen printtext und printnumber für beide Methoden denselben Namen print benutzen? 2. Was ist eine lokale Variable? 3. Bei welchen Variablenbelegungen liefert der vorgegebene Code keine Ausgabe bzw. eine Fehlermeldung? 13. November 2017 Seite 3
4 1 /* Listing 2: Vorgegebener Programmcode in Aufgabe2.java 2 Aufgabe 2) Neugestaltung von Spaghetticode durch Methoden 3 */ 4 public class Aufgabe2 { 5 6 public static void main(string[] args) { 7 8 //Im Folgenden stehen einige Variablendefinitionen. 9 String text1 = "Hello World!"; 10 String text2 = "This is not a test!"; 11 int a = 1023; 12 int b = 815; 13 int c = 7; //Der Inhalt der Variablen wird in einer speziellen Formatierung 16 //in der Konsole ausgegeben. 17 for (int i = 0; i < text1.length()-1; i++) { 18 System.out.print(text1.charAt(i)); 19 System.out.print("-"); 20 } 21 System.out.println(text1.charAt(text1.length()-1)); for (int i = 0; i < text2.length()-1; i++) { 24 System.out.print(text2.charAt(i)); 25 System.out.print("-"); 26 } 27 System.out.println(text2.charAt(text2.length()-1)); int ndigits = 1; 30 while(a > ndigits) { 31 ndigits = ndigits * 10; 32 } 33 ndigits /= 10; 34 while(a > 0) { 35 System.out.print(a / ndigits); 36 a %= ndigits; 37 if (a > 0) { 38 System.out.print("-"); 39 } 40 ndigits /= 10; 41 } 42 System.out.println(); 13. November 2017 Seite 4
5 43 44 ndigits = 1; 45 while(b > ndigits) { 46 ndigits = ndigits * 10; 47 } 48 ndigits /= 10; 49 while(b > 0) { 50 System.out.print(b / ndigits); 51 b %= ndigits; 52 if (b > 0) { 53 System.out.print("-"); 54 } 55 ndigits /= 10; 56 } 57 System.out.println(); ndigits = 1; 60 while(c > ndigits) { 61 ndigits = ndigits * 10; 62 } 63 ndigits /= 10; 64 while(c>0) { 65 System.out.print(c / ndigits); 66 c %= ndigits; 67 if (c > 0) { 68 System.out.print("-"); 69 } 70 ndigits /= 10; 71 } 72 System.out.println(); } } 13. November 2017 Seite 5
6 Aufgabe 3 1. Schreiben Sie die Methoden aus Aufgabe 2 so um, dass beim Methodenaufruf zusätzlich zum auszugebenden Wert auch das Trennzeichen für die Textformatierung spezifiziert werden kann (z.b.: printtext(text1, # )). Dadurch soll es zum Beispiel möglich sein, dass die Inhalte der Variablen text1 oder text2 oder a aus Aufgabe 2 durch entsprechende Aufrufe mit angegebenen Trennzeichen so ausgegeben werden: H-e-l-l-o- -W-o-r-l-d-! H#e#l#l#o# #W#o#r#l#d#! T.h.i.s..i.s..n.o.t..a..t.e.s.t.! T h i s i s n o t a t e s t! 1*0*2*3 2. Schreiben Sie anschliessend eine Methode print, die beispielsweise beim Aufruf print(text1, A+/ ) folgende Ausgabe erzeugt: HAeAlAlAoA AWAoArAlAdA! H+e+l+l+o+ +W+o+r+l+d+! H/e/l/l/o/ /W/o/r/l/d/! d.h. der zweite Parameter ist ein String mit Trennzeichen. Jedes der Trennzeichen wird in einer Zeile für eine formatierte Ausgabe benutzt. Die Länge des zweiten Strings bestimmt somit die Anzahl der ausgegebenen Zeilen. Die Methode soll auch für ganze Zahlen definiert werden, d.h. beim Aufruf print(123,.:/ ) soll die Ausgabe :2:3 1/2/3 erzeugt werden (überladene Methoden). Nicht funktionale Anforderungen: Diese neuen Methoden sollen in ihrem Rumpf die zuvor implementierten Methoden (mit den Signaturen printtext(string, char) bzw. printnumber(int, char) aufrufen). Es soll also bei der Lösung kein Code dupliziert werden. 3. Schreiben Sie eine Methode main um Ihre Methoden zu testen. Zusatzfragen: 1. Wie ermöglichen Sie es, dass mit demselben Programm Aufrufe mit und ohne Trennzeichen möglich sind, d.h. es soll zum Beispiel durch print(text1); H-e-l-l-o- -W-o-r-l-d-! mit dem voreingestellten Trennzeichen - (wie bisher) erzeugt werden, und der Aufruf print(text1, # ) soll H#e#l#l#o# #W#o#r#l#d#! erzeugen? 13. November 2017 Seite 6
7 Aufgabe 4 1. Schreiben Sie eine Methode printnumbers, die einen Parameter n vom Typ int und einen Parameter sep vom Typ char hat und in einer Zeile die Zahlen 1 bis n durch das Trennzeichen sep getrennt ausgibt (Formatierung wie aus Aufgabe 2 bis auf abschliessenden Zeilenvorschub). 2. Schreiben Sie eine Methode sum, die einen Parameter n hat und die Summe der Zahlen von 1 bis n als Ergebnis zurückliefert. 3. Schreiben Sie eine Methode printsum, die einen Parameter n hat und die Summe der Zahlen von 1 bis n ausgibt. Schreiben Sie diese Methode so, dass im Methodenrumpf sum aufgerufen wird und dadurch duplizierter Code vermieden wird. 4. Schreiben Sie in der Methode main ein Programmstück, das mit Hilfe der Klasse Scanner zur Laufzeit eine Zahl n einliest und danach die Zahlen 1 bis n durch + getrennt ausgibt, gefolgt von einem = und der Summe der Zahlen von 1 bis n. Nutzen Sie die in Schritten 1.)- 3.) implementierten Methoden um duplizierten Code zu vermeiden. Beispiel einer Ausgabe wenn die Zahl 5 eingelesen wurde: =15 5. Schreiben Sie eine Methode increment, die einen Parameter n hat, und den Wert n + 1 zurückliefert. 6. Testen Sie increment durch einen Aufruf in main. 7. Schreiben Sie eine Methode add mit zwei Parametern m und n vom Typ int, die für nicht negative Werte m und n (Annahme 2 : n 0, m 0) die Summe m + n zurückliefert. Für die Implementierung sollen direkt keine arithmetischen Operatoren benutzt werden (+,-,++,--, etc.), sondern stattdessen soll die obige Methode increment für die Implementierung von add benutzt werden. Zusatzfragen: 1. Warum ist es nicht möglich, eine Methode increment zu schreiben, die nichts zurückliefert (void Methode) und ihren Parameter um eins erhöht, sodass beispielsweise n nach Ausführung folgender Anweisungsfolge den Wert 2 hat? int n = 1; increment(n); // n hat immer noch den Wert 1 2 Diese Bedingungen müssen beim Aufruf der Methode erfüllt sein. Sie müssen von der Methode nicht überprüft werden (man spricht hier von Vorbedingungen). 13. November 2017 Seite 7
8 Aufgabe 5 Gegeben ist eine Methode squarerotated (siehe Listing 3) mit den Parametern v1, v2, radius und angle, die ein um einen bestimmten Winkel rotiertes Quadrat zeichnet. Die ersten drei Parameter geben wie bei StdDraw.square die Position und die halbe Seitenlänge des zu zeichnenden Quadrates an. Der Parameter angle gibt den Rotationswinkel gegen den Uhrzeigersinn an. Z.B. entspricht der Wert Math.PI/4 für angle einer Rotation gegen den Uhrzeigersinn um 45 Grad. 1. Schreiben Sie eine Methode squares mit den Parametern v1, v2, radius, die ein normales achsenparalleles Quadrat und ein in dieses eingeschriebenes, um 45 Grad gedrehtes und entsprechend skaliertes Quadrat an der angegebenen Position in der angegebenen Größe zeichnet (siehe Abbildung 1a). Diese Methode soll squarerotated aufrufen, um doppelten Code zu vermeiden. 2. Schreiben Sie in der Methode main ein Programmstück, das mit Hilfe einer Schleife eine Graphik wie in Abbildung 1b erzeugt. Im Schleifenrumpf muss ein entsprechender Aufruf von squares vorkommen. Die Schleife soll beendet werden, sobald die Auflösungsgrenze (das äußere Quadrat wird kleiner als ein Pixel) erreicht wird. 3. Schreiben Sie in der Methode main ein weiteres Programmstück, das mit Hilfe einer Schleife eine Graphik wie in Abbildung 1c erzeugt. Es handelt sich um eine Folge von Quadraten, bei der jedes Quadrat jeweils durch dieselbe Transformation der Parameterwerte (v1, v2, radius und angle) des Vorgängerquadrats berechnet werden kann. Die Seitenlänge eines Quadrates entspricht der Länge der Diagonale des Nachfolgerquadrates. Dieses wird gegenüber dem Vorgänger immer um 45 Grad weitergedreht und die Positionierung erfolgt wie in Abbildung 1c Eckpunkt an Eckpunkt. Im Schleifenrumpf muss ein entsprechender Aufruf von squarerotated vorkommen. Die Schleife soll beendet werden, sobald die Auflösungsgrenze erreicht wird (d.h. das neu hinzugefügte Quadrat wird kleiner als ein Pixel). (a) (b) (c) Abbildung 1: Beispiele für die gewünschten graphischen Ausgaben, wenn die voreingestellte Strichstärke und Bildgröße ( ) verwendet wird. Sie sollten durch entsprechend gewählte aktuelle Parameterwerte beim Aufruf Ihrer Methoden solche Figuren erzeugen können. 13. November 2017 Seite 8
9 1 /* Listing 3: Vorgegebener Programmcode in Aufgabe5.java 2 Aufgabe 5) Zeichnen mit Schleifen und Methoden 3 */ 4 public class Aufgabe5 { 5 6 private static void squarerotated(double v1, double v2, double radius, double angle) { 7 8 // Bestimmung der 4 Eckpunkte (dabei den Mittelpunkt nicht beruecksichtigen): 9 double upperleftx = -radius; 10 double upperlefty = radius; double upperrightx = radius; 13 double upperrighty = radius; double lowerleftx = -radius; 16 double lowerlefty = -radius; double lowerrightx = radius; 19 double lowerrighty = -radius; // Jeden Eckpunkt jeweils mittels Rotationsformel drehen (um den Ursprung). 22 // Erster Eckpunkt: 23 double rotupperleftx = upperleftx*math.cos(angle) - upperlefty*math.sin(angle); 24 double rotupperlefty = upperleftx*math.sin(angle) + upperlefty*math.cos(angle); // Zweiter Eckpunkt: 27 double rotupperrightx = upperrightx*math.cos(angle) - upperrighty*math.sin(angle); 28 double rotupperrighty = upperrightx*math.sin(angle) + upperrighty*math.cos(angle); // Dritter Eckpunkt: 31 double rotlowerleftx = lowerleftx*math.cos(angle) - lowerlefty*math.sin(angle); 32 double rotlowerlefty = lowerleftx*math.sin(angle) + lowerlefty*math.cos(angle); // Vierter Eckpunkt: 35 double rotlowerrightx = lowerrightx*math.cos(angle) - lowerrighty*math.sin(angle); 36 double rotlowerrighty = lowerrightx*math.sin(angle) + lowerrighty*math.cos(angle); // Gedrehtes Quadrat um seinen Mittelpunkt (v1,v2) zeichnen. 39 StdDraw.line(rotUpperLeftX+v1, rotupperlefty+v2, rotupperrightx+v1, rotupperrighty+v2); 40 StdDraw.line(rotUpperRightX+v1, rotupperrighty+v2, rotlowerrightx+v1, rotlowerrighty+v2); 41 StdDraw.line(rotLowerRightX+v1, rotlowerrighty+v2, rotlowerleftx+v1, rotlowerlefty+v2); 42 StdDraw.line(rotLowerLeftX+v1, rotlowerlefty+v2, rotupperleftx+v1, rotupperlefty+v2); } } 13. November 2017 Seite 9
Programmiertechnik Klassenmethoden
Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Programm zur Berechung von public class Eval1 { public static void main(string[] args) { java.util.scanner
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Datentypen (int, long, double, boolean, String) Variablen und Variablendeklarationen
MehrAutor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH
Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
Mehrpublic class SternchenRechteckGefuellt {
Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und
MehrSie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben.
Informatik I Wintersemester 2013/14 Prof. Dr. Carsten Damm Georg-August-Universität Göttingen Dr. Henrik Brosenne Institut für Informatik Übung 6 Abgabe bis Dienstag, 10.12., 18:00 Uhr. Werfen Sie Ihre
MehrÜbungsblatt 3: Algorithmen in Java & Grammatiken
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
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrJava 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
MehrJava Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
MehrPIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrObjektorientierte Programmierung OOP Programmieren mit Java
Übungen: 6 Schleifen Objektorientierte Programmierung OOP Programmieren mit Java 1. do-schleife 2. while-schleife 3. a) c) Verschiedene for-schleifen 6 Schleifen Übungen 4. for-schleife: halber Tannenbaum
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrVorkurs Informatik WiSe 15/16
Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
MehrInstitut für Informatik
Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Aufgabenblatt 1 Prof. R. Westermann, A. Lehmann,
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrÜbungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11
Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe
MehrWiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung
Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben
MehrProgrammentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004
Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Name : Vorname : Matrikelnummer : Hauptfach : Nebenfach/Fachrichtung Hinweise : 1. Überprüfen
MehrJava programmieren: Konsolen-Programme
Java programmieren: Es war einmal vor langer Zeit in einer weit entfernten Galaxis ok, das ist etwas übertrieben. In den Anfängen der Personal Computer in den 1980er sahen Computer noch etwa so aus: Diese
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden
Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");
MehrProgrammierung für Mathematik HS12 Übung 3
Programmierung für Mathematik HS12 Übung 3 14. Oktober 2012 1 Aufgabe: Code verstehen 1.1 Ziele Präzedenz verstehen. If else kennen lernen. 1.2 Aufgabenstellung 1.2.1 Präzedenz Lesen Sie folgende Codeaussschnitte.
MehrEinführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
Mehr1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)
Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende
Mehr5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
MehrÜbungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Der hat die früher handschriftlichen Folien lesbar gemacht. Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Heutige Themen Hello World!
MehrAKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen
L AKTUEL ZU fritz JOBST JAVA 8 PROGRAMMIEREN IN JAVA 7. Auflage Im Internet: Alle Beispielprogramme und Lösungen 4 1 Der Einstieg in Java keinem Fall zulässig. Die Schreibweisen Hello.java für den Namen
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
MehrObjektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ
Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die
Mehr12 Klassen in Java. 12.1 Instanz- und Klassenbestandteile
12 Klassen in Java Nun soll es endlich daran gehen, in Java eigene Klassen zu erstellen. Wir schließen hier an der in in Kapitel?? begonnenen Diskussion über Klassen und Objekte an. Wenn Ihnen die Inhalte
MehrHello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.
Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike
MehrEin erstes Java-Programm
Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println
MehrGrundlagen Programmierung
13. Aufgabe (13 Punkte) Schreiben Sie eine neue Klasse Zahlenanalyse, mit der Integer-Objekte genauer betrachtet werden können. Bei den zu entwickelnden Methoden kann es immer sinnvoll sein, sich den Ablauf
MehrJavaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden
Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter
MehrUniversität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger
Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger Informatik II Hinweise: Die Bearbeitungszeit beträgt 90
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrJava Einführung Programmcode
Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:
MehrTest zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003
Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrProgrammiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013
Programmiervorkurs Wintersemester 2012/2013 Organisation: Steffen Gebert, Alexander Wolff Tutoren: Jürgen Zöller, Jonathan Stoll Kontakt (für Organisatorisches, Fehler auf Folien...): Steffen Gebert steffen.gebert@informatik.uni-wuerzburg.de
MehrGreenfoot: Schleifen. 1. Die for-schleife
Greenfoot: Schleifen Kommen wir noch einmal zurück zum etwas langweiligen, aber schön einfachen ausgabe_in_konsole- Szenario (öffnen Sie es, speichern Sie ggf. eine Kopie des momentanen Zustands, dann
MehrVererbung. Martin Wirsing. Ziele. Vererbung
2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp
Mehr5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
MehrProgrammieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik
Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen
MehrVersuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.
Hochschule Harz Programmierung1 Tutorial 11: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Sortieren und generische Klassen Versuchsziele Kenntnisse
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
Mehr1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
Mehr1. Der Einstieg in Java. Was heißt Programmieren?
1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung
MehrEinführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrAlgorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.
Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrArbeiten mit JavaKara
Arbeiten mit JavaKara 1. Programmierumgebung Möchte man ein neues Programm erstellen, so wird einem ein Programmeditor zur Verfügung gestellt, der bereits eine vorgefertigte Schablone darstellt. In der
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)
MehrVorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm
MehrJava - Programmierung - Objektorientierte Programmierung 1
Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrJava Einführung VARIABLEN und DATENTYPEN Kapitel 2
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen
MehrJava 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7
Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen
MehrProjekt: Python Programmierung
Projekt: Python Programmierung Zeichnen mit Schildkröten das Elektrotechnik- und Informatik-Labor der Fakultät IV http://www.dein-labor.tu-berlin.de Handout zum Projekt: Python Programmierung Zeichnen
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE22-NutzungVonKlassen (Stand 28.09.2012) Aufgabe 1: Entwickeln Sie in Eclipse auf der Basis der vorgestellten Java-GUI-Klassen ein Java- Programm, das
Mehr2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)
2. Methoden n Generelles zum Aufruf von Methoden n Parameterübergabemechanismen (call by value, call by reference) n Speicherorganisation bei Methodenaufruf und Parameterübergabe (Laufzeitkeller) n vararg
MehrPIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik
Mehr4. Objektorientierte Programmierung
4. Objektorientierte Programmierung In Abschnitt 3 ging es um fundamentale Basiskonzepte von Java, wie es sie in jeder anderen gängigen Programmiersprache so oder so ähnlich auch gibt. In Abschnitt 4 nun
MehrAufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.
»Programmieren«, WS 006/007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 4 Aufgabe 1 OOP In dieser Aufgabe sollen Sie Autos als Klasse Car modellieren. Die Eigenschaften auf attributiver Ebene sind:
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrObjektorientierte Programmierung
Unterlagen zur Veranstaltung Einführung in die Objektorientierte Programmierung Mit Processing Alexis Engelke Sommer 2012 Alexis Engelke Inhalt Level 1: Geometrie Hintergrundfarben Punkte, Linien und deren
MehrObjektorientierte Programmierung OOP Programmieren mit Java
Aufgaben: 2 JDK/SDK/JRE und Java Entwicklungswerkzeuge Objektorientierte Programmierung OOP Programmieren mit Java 1. Installation von Java 2. Erstes Java Programm Hello World 3. Dreimal Hallo Olten 2
MehrSelbsteinstufungstest Vorkurs Programmieren
VPR Selbsteinstufungstest Vorkurs Programmieren Zeit 90 Minuten Aufgabe 1: Einzigartig (10 Punkte) Schreiben Sie eine Methode die angibt, ob ein String str1 in einem zweiten String str2 genau einmal vorkommt.
MehrJava Einführung ABLAUFSTEUERUNG Kapitel 3 und 4
Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Inhalt dieser Einheit Merkmale und Syntax der verschiedenen Kontrollstrukturen: if else switch while do while for break, continue EXKURS: Rekursion 2 Kontrollstrukturen
MehrLiebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.
Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren. Niemand bedauert diese Fehler mehr als der Autor selbst.
MehrDr. Monika Meiler. Inhalt
Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins
MehrProgrammiertechnik Operatoren, Kommentare, Ein-/Ausgabe
Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,
MehrÜbungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.
Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Daher ist y = x + 5.6; keine Gleichung, sondern die Anweisung den Wert
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrBrainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen
Brainfuck 1 Brainfuck 1.1 Brainfuck Geschichte und Umfeld Brainfuck ist eine sogenannte esoterische Programmiersprache. Sie wurde 1993 vom Schweizer Urban Müller entworfen mit dem Ziel, eine Sprache mit
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Mehr