Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 4A

Ähnliche Dokumente
Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin

Arbeiten mit der Shell Teil 1

Arbeiten mit der Shell Teil 1

Einführung in die Angewandte Bioinformatik

Arbeiten mit der Shell Teil 1

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

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

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

Tutorium 1 Systemadministration 2 - Linux Universität Hildesheim

ATB Ausbildung Technische Berufe Ausbildungszentrum Klybeck

Wie man eigene Programme erstellt

Vorsemesterkurs Informatik

SCI Linux Einführung

Praktikum RO1 Einführung Linux / Ubuntu / Bash

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

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

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

Computer & GNU/Linux Einführung Teil 4

Shell-Programmierung

Skript. Vorkurs Informatik. Sommersemester Conrad Rau Dr. David Sabel Jens Keppeler

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

Übungsblatt 1: Zur Benutzung von Computern im CIP-Pool der Informatik

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

Einführung in die Kommandozeile

Einführung Wissenschaftliches Rechnen. René Lamour. Sommersemester 2015

Linux Grundlagen. Wolfgang Scheicher 20. Mai Allgemeines Bootvorgang Verzeichnisstruktur... 2

Embedded So)ware. Einrichten der Arbeitsumgebung

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Praktikumstermin B-07: make & Makefiles

Update Messerli MySQL auf Linux

Einführung in das wissenschaftliche Rechnen

1 Linux-Befehlsübersicht

Systemprogrammierung: Erste Schritte (P) Das Manpage-System (P) Versionsverwaltung mit Subversion (P)

Installation DV4mini ausgehend von einem frisch installierten System:

1 Vorbemerkungen. 1.1 Vorraussetzungen und Ziele. 1.3 Homepage. 1.2 Übungsaufgaben. 1.4 Arbeiten am Computer. Es sind keine Vorkenntnisse nötig

Aufgabensammlung IT Shellprogrammierung Teil I

Linux Tutorium. 12. Shellprogrammierung. Version vom :38:56

Vorbereitungskurs Informatik - Tag 1

Einführung ins Praktikum Wissenschaftliches Rechnen I

Bioinformatische Suche nach pre-mirnas

Linux-Einführung WS 2010/2011

Integration von SATA / RAID / SCSI Treibern in Windows XP Setup

Einführung in die Nutzung von eclipse

Computer & GNU/Linux Einführung Teil 3

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

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

Skript. Vorkurs Informatik. Sommersemester Prof. Dr. Georg Schnitger Dr. David Sabel Conrad Rau

Nützliches unter UNIX...

Dateisystem 2, Suchen & Finden

Übertragen von Schulwebseiten auf musin.de

Kurs 6108 Programmierkurs C++ Wintersemester 2001/02. Prof. R. Schrader. Vorlesung freitags 15:15 16:45 Uhr

Technische Praxis der Computersysteme I 3. Vorlesung

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

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Installation Messerli MySQL auf Linux

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Anleitung: Webspace-Einrichtung

Hans-Georg Eßer Betriebssysteme, WS 2006/07. Fachbereich Informatik/Mathematik Übungsblatt 1, Seite 1/5 Fachhochschule München

Übung 4: Schreiben eines Shell-Skripts

Dateisystem 2, Suchen & Finden, Manpages

Informatik I Tutorial

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

Greenfoot: Verzweigungen

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

Computer Algebra Plan der Vorlesung. erstes Drittel: linux, emacs, L A TEX zweites Drittel: Sage als Taschenrechner letztes Drittel: Python für Sage

SHELL WE BEGIN? EINE EINFÜHRUNG IN DIE SHELL. Max Rosin - ANKÜNDIGUNGEN

Benutzung der Manpage, Shell Teil 3

Grundlegende Kommandos unter UNIX / LINUX

OpenVMS/VAX Notizen. Thomas Strathmann. 19. April 2010

Installation Messerli MySQL auf MAC OS X

ALP I Einführung in Haskell

Übungsblatt A zu Linux

AplusixEditor : Editor für Aplusix 3 Benutzerhandbuch

Dateien und Verzeichnisse

Verzeichnisse unter Linux

Übung 1: Wichtige Kommandos unter Linux

2.4 Das erste C++-Programm *

Perlkurs WS 14/15 - Einführung

Ihr erstes C#- Programm

Anleitung für die Benutzung des Programms Grundwasserwärmepumpen (GWP-SF_09.05) Anleitung für MS Excel 2003 Getestet mit Excel 2003

Kurzanleitung: GCC mit CYGWIN unter WINDOWS

Betriebssysteme UNIX/Linux Übungsthema 1 Einführung in UNIX/Linux. Dirk Wenzel Dr. Jörg Gruner

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Aussagenlogik. Aussagen und Aussagenverknüpfungen

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

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

Einführung für Linux/UNIX-Anfänger

Speichern. Speichern unter

Die Linux-Konsole, die Bash, das Terminal, die Kommandozeile, die Shell

Kommandozeilen effizient nutzen und verstehen

Objektorientiertes Programmieren mit Suse Linux

Linux I II III Res/Pro WN/TT Theorie Terminal Ein- und Ausgabe. Linux I. 1 Linux I. Theorie Terminal Ein- und Ausgabe. Ressourcen-Vorkurs

Grundbefehle. LPI Zertifizierung. Auf dem Weg: Certified Linux

Kurze Einweisung in die Shell

Übungsblatt 2. Abgabe: Freitag, 7. November 2014, 18:00 Uhr

Eprog Starthilfe. 5. Oktober Einleitung 2

Linux-Befehlsreferenz

Objektorientierte Programmierung OOP Programmieren mit Java

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

Transkript:

Fachbereich Informatik und Mathematik Institut für Informatik Vorsemesterkurs Informatik Sommersemester 2018 Aufgabenblatt Nr. 4A Aufgabe 1 (Haskell Interpreter: GHCi) a) Starten Sie den Haskell Interpreter GHCi aus Ihrem Homeverzeichnis, indem Sie ghci in einer Konsole eingeben. und lassen Sie sich die Hilfe anzeigen, indem Sie im GHCi das Kommando :help eingeben. b) Üben Sie das Starten und Verlassen des GHCi: Der GHCi kann mit :quit beendet werden. c) Lassen Sie für die folgenden Ausdrücke, jeweils den Wert vom GHCi berechnen: 4+5+6 3^3*2 (3^3)*2 3^(3*2) 10 / 3 10 mod 3 10 div 3 10 > (2*2-10) 6*8+10 <= 3245/65 sqrt 2 123 + -81 123 + (-81) 2*9 > 8*3 4*6 >= 3*6 6*10 == 5*12 && not (True /= False) Benutzen Sie die Pfeiltasten, um nicht jedes mal alles neu zu tippen! d) Lassen Sie den Wert von fünf weiteren Ausdrücken berechnen, die Sie sich selbst ausgedacht haben. e) even testet, ob eine Zahl gerade ist, und odd testet, ob eine Zahl ungerade ist. Überprüfen Sie das, indem Sie für die Zahlen X {1, 2, 3, 4, 5} jeweils odd X und even X im GHCi berechnen lassen. f) Geben Sie jeweils Zahlen für X und Y an, sodass der entsprechende Ausdruck im GHCi zu True auswertet: even X && odd Y even X == odd Y not (even (2 * X)) not (odd (X * Y )) 1

Z.B. Prelude> even 2 && odd 1 Prelude> even 1 == odd 2 True Prelude> even 2 == odd 1 True Prelude> not (even (2*2)) not (odd (2*2)) Aufgabe 2 (Die Frage nach dem Pfefferdieb) Das Rätsel vom Pefferdieb ist: Es gibt drei Verdächtige: Den Hutmacher, den Schnapphasen und die Haselmaus. Folgendes ist bekannt: Genau einer von ihnen ist der Pfefferdieb. Unschuldige sagen immer die Wahrheit. Der Schnapphase sagt: Der Hutmacher ist unschuldig. Der Hutmacher sagt: Die Hasel-Maus ist unschuldig. Wer ist der Pefferdieb? Das folgende Haskell-Programm formalisiert das bekannte Wissen mit Aussagenlogik und Wahrheitswerten. hutmacher = undefined schnapphase = undefined haselmaus = undefined genau_einer = (hutmacher && not schnapphase && not haselmaus) (not hutmacher && schnapphase && not haselmaus) (not hutmacher && not schnapphase && haselmaus) aussage1 = schnapphase (not hutmacher) aussage2 = hutmacher (not haselmaus) raetsel = genau_einer && aussage1 && aussage2 Die Werte von hutmacher, schnapphase und haselmaus sollen genau dann wahr sein (ihr Wert ist True), wenn der jeweilige der Pfefferdieb ist. Der Wert von genau_einer ist genau dann True, wenn ein einziger der Pfefferdieb ist, Der Wert von aussage1 ist True, wenn der Schnapphase schuldig ist, oder wenn er unschuldig ist, ebenso der Hutmacher unschuldig ist (da der Schnapphase dann die Wahrheit sagt). Analog ergibt sich der Wert von aussage2 für die Aussage des Hutmachers über die Haselmaus. a) Legen Sie eine Datei namens Pfefferdieb.hs in einem Texteditor an, die obigen Programmcode enthält. b) Starten Sie den GHCi in einer Shell und laden Sie das Programm, indem Sie :load Pfefferdieb.hs im GHCi eingeben. c) Finden Sie durch Ausprobieren heraus, wer der Pfefferdieb ist: 2

1. Setzen Sie anstelle von undefined die Wahrheitswerte True bzw. False für hutmacher, schnapphase und haselmaus im Programmtext ein. 2. Speichern Sie den geänderten Quelltext ab. 3. Laden Sie die den Quelltext im GHCi erneut durch Eingabe von :reload. 4. Lassen Sie im GHCi den Wert von raetsel berechnen. 5. Wenn raetsel zu True auswertet, wissen Sie, wer der Pfefferdieb ist. Wenn raetsel zu False auswertet, ändern Sie die Wahrheitswerte für hutmacher, schnapphase und haselmaus ab und gehen zu Schritt 2. > ghci GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim... linking... done. Loading package integer-gmp... linking... done. Loading package base... linking... done. Prelude> :load Pfefferdieb.hs *** Exception: Prelude.undefined False False False True Der Schnapphase ist der Dieb, d.h. raetsel wird zu True auswerten, für hutmacher = False schnapphase = True haselmaus = False Aufgabe 3 (Programme testen) Auf der Webseite zum Vorkurs (http://vorkurs.informatik.uni-frankfurt.de/) finden Sie eine Datei magie.hs. Laden Sie diese herunter und laden Sie sie anschließend in den GHCi. Die Datei stellt die Funk- 3

tionen magie1, magie2, magie3, magie4 und magie5 bereit. Diese erwarten eine Zeichenkette als Eingabe und liefern eine veränderte Zeichenkette. Ein Test ist z.b. magie1 "Hallo". a) Finden Sie heraus, welche der fünf Funktionen aus allen Kleinbuchstaben Großbuchstaben macht, indem Sie jede der Funktionen mit einer Zeichenkette als Argument aufrufen, die Kleinbuchstaben enthält. Z.B. magie1 "Der Hund geht mit der Katze spazieren" magie4, z.b.: *Main> magie1 "Der Hund geht mit der Katze spazieren" "der hund geht mit der katze spazieren" *Main> magie2 "Der Hund geht mit der Katze spazieren" "Magische Zahl: 37 Der Hund geht mit der Katze spazieren" *Main> magie3 "Der Hund geht mit der Katze spazieren" "Der Hund geht mit der Katze spazieren" *Main> magie4 "Der Hund geht mit der Katze spazieren" "DER HUND GEHT MIT DER KATZE SPAZIEREN" *Main> magie5 "Der Hund geht mit der Katze spazieren" "Der Hund geht mit Katzze der spazzieren" b) Welche der Funktionen verdoppeln alle im String vorkommenden Zahlen? Testen Sie alle fünf Funktionen mit geeigneten Eingaben. magie5, z.b.: *Main Data.List> magie1 "100 200 1 2 3" "000 100 0 1 2" *Main Data.List> magie2 "100 200 1 2 3" "I00 II00 I II III" *Main Data.List> magie3 "100 200 1 2 3" "000 100 0 1 2" *Main Data.List> magie4 "100 200 1 2 3" "100 200 1 2 3" *Main Data.List> magie5 "100 200 1 2 3" "200 400 2 4 6" c) Welche der Funktionen entfernen alle runden Klammern? magie3 und magie4, z.b.: "200 400 2 4 6" *Main Data.List> magie1 "((1))" "((0))" *Main Data.List> magie2 "((1))" "((I))" *Main Data.List> magie3 "((1))" "0" *Main Data.List> magie4 "((1))" "1" *Main Data.List> magie5 "((1))" "((2))" d) Welche der Funktionen ersetzen alle Fragezeichen durch Ausrufezeichen? 4

magie1 und magie3 *Main Data.List> magie1 "??????" "!!!!!!" *Main Data.List> magie2 "??????" "??????" *Main Data.List> magie3 "??????" "!!!!!!" *Main Data.List> magie4 "??????" "?:-)??:-)?" *Main Data.List> magie5 "??????" "??????" e) Die Funktion magie2 gibt u.a. eine Magische Zahl aus. Welche Zahl ist das, d.h. wie hängt sie mit der Eingabe zusammen? Die Länge des eingegebenen Strings. f) Eine der Funktionen magie4 und magie5 gibt bei Eingabe eines Strings, der nur aus einer bestimmten Primzahl kleiner als 20 besteht, ein Gedicht von Goethe aus. Welche der beiden Funktionen ist es, und welche Primzahl ist gesucht? magie5 und 17 Aufgabe 4 (Verzeichnisse) a) Öffnen Sie eine Shell und finden Sie durch Eingabe von pwd das aktuelle Verzeichnis heraus. Welche Ausgabe erhalten Sie? b) Legen Sie ein neues Verzeichnis vorkurs an und wechseln Sie in das Verzeichnis, indem Sie nacheinander mkdir vorkurs cd vorkurs eingeben. c) Legen Sie im Verzeichnis vorkurs ein Unterverzeichnis MeinVerzeichnis an und wechseln Sie in das neue Unterverzeichnis. Welche Kommandos haben Sie eingegeben? mkdir MeinVerzeichnis cd MeinVerzeichnis d) Geben Sie die folgenden Kommandos nacheinander ein. cd../../ pwd 5

Wie lautet die Ausgabe? Was wurde durch die beiden Kommandos durchgeführt? Mand ist danach wieder im Home-Verzeichnis. Das erste Kommando wechselt zwei Verzeichnisse nach oben, das zweite Kommando zeigt, an in welchem Verzeichnis man ist. e) Wechseln Sie durch Ausführen eines Kommandos in das Unterverzeichnis MeinVerzeichnis. Welches Kommando haben Sie eingegeben? cd vorkurs/meinverzeichnis f) Legen Sie im Verzeichnis vorkurs ein Unterverzeichnis MeinVerzeichnis2 an während Sie im Verzeichnis MeinVerzeichnis sind. Tipp: Verwenden Sie einen relativen Pfad. mkdir../meinverzeichnis2 Aufgabe 5 (Textdateien) a) Legen Sie mithilfe eines Editors eine Datei namens IrgendeinText.txt im Verzeichnis vorkurs an, und schreiben Sie irgendeinen Text der mindestens 100 Zeilen besitzt und das Wort "Informatik" enthält in die Datei. Sichern Sie die Datei. b) Öffnen Sie eine Shell und wechseln Sie in das Verzeichnis vorkurs. Verwenden Sie das Kommando mv, um die Datei IrgendeinText.txt umzubenennen in MeinText.txt mv IrgendeinText.txt MeinText.txt c) Verwenden Sie das Kommando cp, um eine Kopie der Datei MeinText.txt namens NochmalMeinText.txt zu erstellen cp MeinText.txt NochmalMeinText.txt d) Wechseln Sie mit cd ~ in Ihr Homeverzeichnis und führen Sie anschließend das Kommando grep -R Informatik * aus. Welche Ausgabe erhalten Sie? Finden Sie anhand der Man Page zu grep heraus (indem sie man grep eingeben), was das Kommando macht. 6

grep durchsucht die angegebenen Dateien nach einem Wort. Die Option -R bedeutet, dass grep auch rekursiv in Unterverzeichnissen suchen soll. Der * steht für eine beliebige Datei, d.h. es wird nach dem Wort Informatik in allen Dateien im Homeverzeichnis (und darunter) gesucht. 7