Übungen zu Algorithmen

Ähnliche Dokumente
Programmierkurs Java

Übungen zu Algorithmen

Die Shell. [prompt]> <command> <flags> <args>

PIWIN 1 Übung Blatt 5

Informatik B von Adrian Neumann

Übung zur Vorlesung Strukturiertes Programmieren WS 2014/15. Übungsblatt 1: JAVA - Erste Schritte Abgabe: Besprechung:

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

Computer & GNU/Linux Einführung Teil 4

Arbeiten mit der Shell Teil 1

Literatur. Einführung in Unix. Login. Passwort. Mag. Thomas Griesmayer. Benutzererkennung und Passwort Case-Sensitiv Prompt

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

Strukturiertes Programmieren

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum

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

Arbeiten mit der Shell Teil 1

Primitive Datentypen

Arbeiten mit der Shell Teil 1

Dr. Monika Meiler. Inhalt

Einführung in die Programmierung WS 2014/15. Übungsblatt 0: Einführung

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Übungsblatt 3: Algorithmen in Java & Grammatiken

Informatik für Schüler, Foliensatz 1 Einführung bis...

Programmieren mit dem Java-Hamster-Modell. VP Orientierung Informatik WS 2008/09 H.Hagenauer

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

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

Anhang III: Arbeiten am CIP Pool in C++

7. Pakete Grundlagen der Programmierung 1 (Java)

Einführung in die Angewandte Bioinformatik

5. Tutorium zu Programmieren

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Java Programmierung auf der Konsole / unter Eclipse

Programmieren I + II Regeln der Code-Formatierung

Arbeiten in der Unix-Kommandozeile. PeP et al. Toolbox Workshop

Objektorientierte Programmierung OOP Programmieren mit Java

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

public class SternchenRechteckGefuellt {

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

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

Datenbanken & Informationssysteme Übungen Teil 1

Einstieg in die Informatik mit Java

Dr. Monika Meiler. Inhalt

Dateien und Verzeichnisse

Literatur. Einführung in Unix. Login. Passwort. Mag. Thomas Griesmayer. Benutzererkennung und Passwort Case-Sensitiv Prompt

Inf 12 Aufgaben

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (

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

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

Objektorientierte Programmierung OOP Programmieren mit Java

Schleifenanweisungen

1 Linux-Befehlsübersicht

Nützliche Tastenkombinationen (Word)

3. Anweisungen und Kontrollstrukturen

Tutorium Java Ein Überblick. Helge Janicke

Grundlagen der Informatik für Ingenieure I

LINUX Gesamtmitschrift

Propädeutikum zur Programmierung

Wiederholung und Vertiefung. Programmieren in C. Pointer und so... thoto. /dev/tal e.v. 6. April 2013 (Version vom 11. April 2013) Programmieren in C

Linux Kurs Vorlesung 2 - Terminal

JAVA - Methoden

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

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

Teil 1: Einführung in die Shell. Was ist die Shell? Wichtige Kommandos (1) Einführung in die Shell. Grundlagen der Shell-Programmierung

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Grundlagen der Programmierung UE

1. So einfach ist der Excel-Bildschirm

Einführung Unix Shell

Einführung in die Informatik 1 - Javainstallationsanleitung

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Grundlagen der Programmierung UE

Informatik I - Einstiegskurs

Abgabe: (vor 12 Uhr)

Übung 1: Wichtige Kommandos unter Linux

Prof. Dr. Heinrich Müller. Informatik VII Universität Dortmund. Organisatorisches zum Vorkurs Informatik

EiP Übung

Praktikum RO1 Einführung Linux / Ubuntu / Bash

Vorkurs Linux Grundlagen

Material zum Grundlagenpraktikum ITS. eine kleine Linux-Befehlsreferenz. Stand: Oktober 2007 zusammengestellt von: Cornelia Menzel Version 1.

Einfache Rechenstrukturen und Kontrollfluss II

cat more less tail head

Javakurs für Anfänger

JAVA - Zufallszahlen

Beuth Hochschule Zahlensysteme SS16, S. 1

Einführung in die Nutzung von eclipse

Delegatesund Ereignisse

Beuth Hochschule Zahlensysteme WS15/16, S. 1

Eine Einführung in. für mathematisch- technische Assistenten / Informatik (IHK)

FH Frankfurt am Main WS 2007/2008. Unix-Praktikum

Übungen Informatik I. Unix. Helga Gabler, Stefanie Schwall Übungen Informatik 1 1

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

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Java-Schulung Grundlagen

SCI Linux Einführung

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 1 Telnet und FTP

Tutorium 1 Systemadministration 2 - Linux Universität Hildesheim

Java programmieren: Konsolen-Programme

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

UNIX Grundlagen. Sascha Frank SS August 2006 UNIX I. Sascha Frank. Einführung. Basic Befehle. Quellen

Software Engineering I

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Transkript:

Institut für Informatik Universität Osnabrück, 01.11.2016 Prof. Dr. Oliver Vornberger http://www-lehre.inf.uos.de/~ainf Lukas Kalbertodt, B.Sc. Testat bis 09.11.2016, 14:00 Uhr Nils Haldenwang, M.Sc. Übungen zu Algorithmen Wintersemester 2016/2017 Blatt 2: Schleifen Aufgabe 2.1: Unix-Kommandos (0 Punkte) Machen Sie sich mit den folgenden UNIX-Kommandos vertraut: Kommando man vi ls -l mkdir Blatt1 rmdir Blatt1 cd Blatt1 cd.. cd pwd cp <Pfad/Dateiname>. javac Collatz.java java Collatz Erklärung Ausgabe der Manualseite zum Kommando vi. Auflisten aller Dateien und Verzeichnisse in Tabellenform (list). Anlegen des Verzeichnisses Blatt1 (make directory). Löschen des (leeren) Verzeichnisses Blatt1 (remove directory). Wechsel in das Verzeichnis Blatt1 (change directory). Wechsel in das übergeordnete Verzeichnis. Wechsel in das Heimatverzeichnis. Gibt das aktuelle Verzeichnis aus (print working directory). Kopiert eine Datei in das aktuelle Verzeichnis. Übersetzen der Programmdatei Collatz.java, Ergebnis ist die Datei Collatz.class. Ausführen des Programms Collatz. Legen Sie sich am besten für jedes Aufgabenblatt ein Verzeichnis an. Sollten Sie eine Endlosschleife verursacht haben, können Sie Ihr Programm mit der Tastenkombination Ctrl c abbrechen. Schließen Sie nicht achtlos das Terminalfenster, da der Prozess ansonsten im Hintergrund weiterläuft. Aufgabe 2.2: Fragen (30 Punkte) Beantworten Sie Ihrer Tutorin beziehungsweise Ihrem Tutor Fragen zu den Inhalten der Veranstaltung.

Aufgabe 2.3: Quersumme (15 Punkte) Schreiben Sie ein Programm Quersumme.java, welches eine ganze Zahl n > 0 einliest und die Quersumme der Zahl berechnet und ausgibt. Die Quersumme bezeichnet die Summe der einzelnen Ziffern. Beispiele: 123 -> 6 23 -> 5 42 -> 6 Musterlösung: /****************************** Quersumme.java *************************/ import AlgoTools.IO; /** * Liest eine Zahl >= 0 ein und gibt die Quersumme der Zahl aus. */ public class Quersumme { public static void main(string[] args) { int zahl; do { zahl = IO.readInt("Zahl > 0 zur Berechnung Quersumme eingeben: "); while(zahl <= 0); int quersumme = 0; // So lange Stellen abschneiden und addieren, bis keine mehr // da sind. while(zahl > 0) { // letzte Stelle aufaddieren quersumme = quersumme + zahl % 10; // letzte Stelle durch ganzzahliges Teilen abschneiden zahl = zahl / 10; IO.println("Die Quersumme ist: " + quersumme); Aufgabe 2.4: Tabelle (20 Punkte) Schreiben Sie ein Java-Programm Tabelle.java, das eine Zahl k mit 1 k 15 einliest und für alle Paare (x,y) {1,...,k {1,...,k den Wert x%y ausgibt. Benutzen Sie für die Darstellung der Ergebnisse eine Tabelle, in der Sie die Werte rechtsbündig eintragen. Beispiel für k = 4: 2

1 2 3 4 ---+----------------- 1 0 1 1 1 2 0 0 2 2 3 0 1 0 3 4 0 0 1 0 Achten Sie darauf, dass der Benutzer keinen nicht erlaubten Wert eingeben kann. Musterlösung: /****************************** Tabelle.java ********************************/ import AlgoTools.IO; /** * Liest eine natuerliche Zahl k kleinergleich 15 ein und gibt für alle * Paare (x,y) aus {0,...,k-1x{0,...,k-1 den Wert x % y aus. */ public class Tabelle { public static void main(string[] args) { int abstand = 4; //Groesse einer Spalte // Benutzereingabe mit Validierung int k; do { k = IO.readInt("Bitte eine Zahl zwischen 1 und 15 eingeben: "); while (k <= 0 k > 15); // Leerzeichen in die linke obere Ecke IO.print(" ", abstand); // Tabellenkopf for (int spalte = 1; spalte <= k; spalte++) { IO.print(spalte, abstand); // Trennlinie for (int i = 1; i < abstand; i++) { IO.print("-"); IO.print("+"); for (int i = 0; i <= k * abstand; i++) { 3

IO.print("-"); // aeussere Schleife fuer Zeilen for (int zeile = 1; zeile <= k; zeile++) { // mit Trennstrich IO.print(zeile + " ", abstand); // innere Schleife fuer Spalten for (int spalte = 1; spalte <= k; spalte++) { //hier erfolgt die Berechnung des Zelleninhalts IO.print((zeile % spalte), abstand); // Zeilenumbruch Aufgabe 2.5: Zahlen ausprechen (35 Punkte) Schreiben Sie ein Java-Programm Zahlen.java, welches eine eingelesene Zahl aus [10, 999] in englischer Sprache ausspricht. Verwenden Sie ein geeignetes switch-case-konstrukt, um die einzelnen Stellen der Zahl (Hunderter, Zehner, Einer) entsprechend zusammenzusetzen. Beispiele: 12 -> twelve 42 -> forty-two 100 -> one hundred 140 -> one hundred and forty 142 -> one hundred and forty-two Musterlösung: /***************************** Zahlen.java *********************************/ import AlgoTools.IO; /** * Gibt die textuelle Darstellung einer Zahl aus [10,999] in englischer Sprache * aus. * * @author Sebastian Buescher (sbuesche@uos.de) * @author Nicolas Neubauer (nneubauer@uos.de) * @author Jana Lehnfeld (jlehnfel@uos.de) 4

*/ public class Zahlen { public static void main(string[] args) { // sicheres Einlesen int zahl; do { zahl = IO.readInt("Bitte eine Zahl aus [10,999]: "); while (zahl < 10 zahl > 999); //Ziffern int hunderter = zahl / 100; int zehner = (zahl % 100) / 10; int einer = zahl % 10; //Hunderter-Stelle switch (hunderter) { case 0: //nichts ausgeben bei 0 case 1: IO.print("one hundred "); case 2: IO.print("two hundred "); case 3: IO.print("three hundred "); case 4: IO.print("four hundred "); case 5: IO.print("five hundred "); case 6: IO.print("six hundred "); case 7: IO.print("seven hundred "); case 8: IO.print("eight hundred "); case 9: IO.print("nine hundred "); IO.println("Fehler: Hunderter kann nicht umgewandelt werden"); // and muss nur eingefügt werden, wenn danach noch etwas // kommt if(hunderter > 0 && (zehner > 0 einer > 0)) IO.print("and "); //Sonderfaelle (elf, zwoelf...) und Einer-Stelle switch (zehner) { case 1: //Sonderfaelle switch (einer) { case 0: IO.print("ten"); case 1: IO.print("eleven"); case 2: IO.print("twelve"); case 3: IO.print("thirteen"); case 4: IO.print("fourteen"); case 5: IO.print("fifteen"); case 6: IO.print("sixteen"); 5

case 7: IO.print("seventeen"); case 8: IO.print("eighteen"); case 9: IO.print("nineteen"); case 0: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: //Zehner-Stelle switch(zehner) { case 0: case 1: //1xer sind schon behandelt case 2: IO.print("twenty"); case 3: IO.print("thirty"); case 4: IO.print("forty"); case 5: IO.print("fifty"); case 6: IO.print("sixty"); case 7: IO.print("seventy"); case 8: IO.print("eighty"); case 9: IO.print("ninety"); IO.println("Fehler: Zehner kann nicht umgewandelt werden"); // Bindestrich einfügen, wenn Zehnerstelle nicht 0 ist if(zehner > 0 && einer!= 0){ IO.print("-"); switch(einer) { case 0: //nichts ausgeben case 1: IO.print("one"); case 2: IO.print("two"); case 3: IO.print("three"); case 4: IO.print("four"); case 5: IO.print("five"); case 6: IO.print("six"); case 7: IO.print("seven"); case 8: IO.print("eight"); case 9: IO.print("nine"); IO.println("Fehler: Einer kann nicht umgewandelt werden"); IO.println("Fehler: Einer/Sonderfall kann nicht umgewandelt" + " werden"); 6

//Absatz fuer die Optik 7