19.02.2014 Aufrufe

Grundlagen der Informatik - Fachhochschule Frankfurt am Main

Grundlagen der Informatik - Fachhochschule Frankfurt am Main

Grundlagen der Informatik - Fachhochschule Frankfurt am Main

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong><br />

Übungen zur Vorlesung<br />

Prof.Dr.Manfred Hannemann<br />

Fachbereich 2,<br />

<strong>Fachhochschule</strong> <strong>Frankfurt</strong>/<strong>Main</strong><br />

Kleiststraße 3,<br />

60318 <strong>Frankfurt</strong>/<strong>Main</strong><br />

Email: hannemann@em.uni-frankfurt.de<br />

Home-Page: www.fh-frankfurt.de/∼fx7009<br />

5. Oktober 2002


Inhaltsverzeichnis<br />

I Zur Einstimmung und Motivation 5<br />

1 Unix and all that ... 7<br />

2 Einfache Fragestellungen 9<br />

3 Zahlendarstellungen 11<br />

II Prozessor- und Rechnerstrukturen 13<br />

4 Allgemeine Betrachtungen 15<br />

5 Pipeline-Rechner 17<br />

6 Parallelrechner 19<br />

III Betriebssysteme 21<br />

7 Allgemeines 23<br />

8 Unix: <strong>Grundlagen</strong> 25<br />

9 Unix: Prozesse 27<br />

10 Unix: Filesysteme, Directories und Dateien 29<br />

11 Unix: Network-Tools 33<br />

12 Unix: Shell-Progr<strong>am</strong>mierung 35<br />

IV Vom Problem zum Progr<strong>am</strong>m 37<br />

13 Abstraktion und Mechanisierung von Problemen 39<br />

3


4 INHALTSVERZEICHNIS<br />

14 Anwendung des Phasenmodells 41<br />

V Algorithmen 43<br />

15 Allgemeine Betrachtungen 45<br />

16 Iteration 47<br />

17 Induktion 49<br />

18 Rekursion 51<br />

19 Evolutionsstrategien 53


Teil I<br />

Zur Einstimmung und<br />

Motivation<br />

5


Kapitel 1<br />

Unix and all that ...<br />

1. Lassen Sie sich eine userid und ein Passwort geben, d<strong>am</strong>it Sie auf die<br />

entsprechenden Rechner Zugriff bekommen. Dann versuchen Sie, wenn<br />

Ihnen das Login gelungen ist, die Übungsblätter auf meiner Home-Page<br />

herunterzuladen und lesbar zu machen.<br />

2. Machen Sie sich mit dem Betriebssystem Unix 1 vertraut. Beschäftigen Sie<br />

sich mit den folgenden Befehlen:<br />

man befehl<br />

cp file1 file2<br />

mv file1 file2<br />

rm file1<br />

cd /dir<br />

ps<br />

sh<br />

rlogin mndserv1<br />

Hilfe-Funktion<br />

Kopier-Befehl<br />

Move-Befehl<br />

Delete-Befehl<br />

change directory<br />

process status<br />

neue Shell<br />

Remote Login<br />

3. Finden Sie den File .profile. Nutzen Sie dazu den ls-Befehl aus.<br />

4. Kopieren Sie den File .profile auf den File xprofile in das Directory<br />

Ihres Nachbarn (-in).<br />

5. Stellen Sie fest wieviele Prozesse gerade auf dem Server mndserv1/2 laufen.<br />

6. Drucken Sie Ihre Datei .profile aus.<br />

7. Löschen Sie den Kernel Ihres Betriebssystems.<br />

8. Geben Sie mit dem echo-Befehl ihren N<strong>am</strong>en an Ihrem Bildschirm aus.<br />

9. Finden Sie für sich den adäquaten Editor — unter den angebotenen Editoren<br />

vi, emacs, xedit, ... —heraus.<br />

1 Speziell auf diesen Rechnern ist es ein Unix-Derivat von Data General.<br />

7


8 KAPITEL 1. UNIX AND ALL THAT ...


Kapitel 2<br />

Einfache Fragestellungen<br />

1. Gegeben sei ein 4MB-Speicher. Exakt um 18Uhr wird ein Zeichen (= 1<br />

Byte) eingelesen. Um 18:01Uhr 4 weiter Zeichen, um 18:02Uhr 16 weitere<br />

Zeichen usw. Zu welchem Zeitpunkt kann keine weitere Zeichenfolge in<br />

den Speicher eingelesen werden und wieviel Platz ist dann belegt?<br />

2. Analysieren Sie die Problemlösung für ein lineares Gleichungsssystem <strong>der</strong><br />

Art<br />

ax + by = e<br />

cx + dy = f.<br />

Wie kann dieses Problem modularisiert werden? Welche Eingabe ist notwendig<br />

und welche Information sollte ausgegeben werden?<br />

3. Konstruieren Sie einen Mechanismus, <strong>der</strong> das Problem des Handlungsreisenden<br />

wenigstens im Prinzip löst.<br />

4. Zeigen Sie, das <strong>der</strong> arme Handlungsreisende im worsed case die Länge <strong>der</strong><br />

(N−1)!<br />

2<br />

-Wege zu berechnen und zu vergleichen hat. Hierbei wird angenommen,<br />

daß es sich um den symmetrischen Fall handelt. Dies bedeutet <strong>der</strong><br />

Hin- und Rückweg zwischen zwei Städten ist gleich.<br />

5. Untersuchen Sie die folgenden Automaten auf ihre primitiven Grundfunktionen<br />

hin:<br />

• Geldautomat;<br />

• Spülmaschine;<br />

• Taschenrechner;<br />

• Kreditautomaten in Tankstellen o<strong>der</strong> Kaufhäusern;<br />

• Auto;<br />

• Kühlschrank.<br />

9


10 KAPITEL 2. EINFACHE FRAGESTELLUNGEN<br />

6. Diskutieren Sie nochmals die vier KI-Ansätze aus <strong>der</strong> Vorlesung.<br />

7. Ein Hotel hat 1000 Türen. Die Zimmertüren sind geschlossen. Der n-te<br />

Gast (n =1, 2, 3, ...) öffnet entwe<strong>der</strong> die i-te Tür wenn sie geschlossen ist,<br />

o<strong>der</strong> schließt sie wenn sie offen ist, dann und nur dann wenn n ein Teiler<br />

von i ist.<br />

Abstrahieren Sie dieses Problem und finden Sie eine Lösungsstrategie.<br />

Berechnen Sie die Anzahl <strong>der</strong> offen stehenden Türen, nachdem <strong>der</strong> tausendste<br />

Gast durch das Hotel gegangen ist.


Kapitel 3<br />

Zahlendarstellungen<br />

1. Führen Sie die Zahlenfolge<br />

fort.<br />

10000 121 100 31 24 ? ? ? (3.1)<br />

2. Addieren Sie die beiden Dezimalzahlen 53 + 53 in <strong>der</strong> Basis b ∈{2, 3, 5}.<br />

3. Transformieren Sie die folgenden Binärzahlen<br />

(a) 11001101;<br />

(b) 0111010;<br />

(c) 111110;<br />

in ihre oktale Darstellung.<br />

4. Rechnen Sie die nachfolgenden Dezimalzahlen in Hexadezimalzahlen um:<br />

(a) 17;<br />

(b) 1111;<br />

(c) 33333.<br />

5. Führen Sie die folgenden binären Rechenoperationen durch. Subtraktionen<br />

sind dabei mit Hilfe des Zweierkomplementes anzugehen.<br />

(a) 1101010 + 10101110;<br />

(b) 11101101 - 101001;<br />

(c) 1101 - 11101.<br />

6. Angenommen wir verwenden zur Zahlendarstellung ein Trit anstatt einem<br />

Bit. Erklären Sie für diese Zahlendarstellung zur Basis 3 die Additions<br />

und Subtraktion zweier Trits. Wieviele Dezimalzahlen können Sie mit drei<br />

Ziffern z ∈{0, 1, 2} darstellen? Beispielsweise entspricht 000 3 ≃ 0 10 .<br />

11


12 KAPITEL 3. ZAHLENDARSTELLUNGEN<br />

7. Stellen Sie die Zahl 17, 3125 10 im Dualsystem dar.<br />

8. Addieren Sie die beiden Zahlen 17 8 und 26 8 in <strong>der</strong> Basis 5 und 7 jeweils.<br />

9. Addieren Sie die beiden Zahlen 18 9 und 51 6 .<br />

10. Subtrahieren Sie die folgenden Zahlendarstellungen zur Basis 3.<br />

(a) 112 - 012;<br />

(b) 210 - 011;<br />

(c) 222 - 111.


Teil II<br />

Prozessor- und<br />

Rechnerstrukturen<br />

13


Kapitel 4<br />

Allgemeine Betrachtungen<br />

1. Ein Arbeiter <strong>der</strong> Telekom bekommt die Aufgabe eine Grube von 1m 3<br />

Volumen auszuschachten. Dazu benötigt er genau eine Stunde Arbeitszeit.<br />

Folglich brauchen 3600 Telekomarbeiter 1sec an Arbeitszeit.<br />

Dies ist natürlich kompletter Mumpiz. Man stelle sich vor wie 3600 Arbeiter<br />

versuchen mit ihren 3600 Spaten 1m 3 auszuheben versuchen. Es<br />

stellt sich mit Sicherheit ein starkes Gedränge an <strong>der</strong> Grube ein.<br />

Wäre allerdings die Aufgabenstellung die, 3600 verschiedene Löcher so<br />

auszuheben, daß gerade das Volumen von 1m 3 herauskommt, dann wäre<br />

die Arbeitszeit von 1sec nicht ganz unrealistisch. Obwohl in beiden Fällen<br />

das Volumen identisch ist, gibt es im ersten Fall heiloses Durcheinan<strong>der</strong>,<br />

während im zweiten Fall die 3600 Arbeiter weitestgehend ungestört simultan<br />

ihre Arbeit machen können.<br />

Diskutieren Sie die Parallelisierbarkeit und die kausale Abfolge <strong>der</strong> Arbeiten<br />

für beide Problemstellungen.<br />

2. Geben Sie die Vor- und Nachteile von schwach und stark gekoppelten<br />

Rechnersystemen an.<br />

3. Welche Unterschiede bestehen zwischen einem Vektor- und Parallelrechner?<br />

4. Parallelisieren sie das folgende Problem. Dabei soll die Pyr<strong>am</strong>ide<br />

1<br />

2 3 2<br />

3 4 5 4 3<br />

4 5 6 7 6 5 4<br />

5 6 7 8 9 8 7 6 5<br />

6 7 8 9 0 1 0 9 8 7 6<br />

7 8 9 0 1 2 3 2 1 0 9 8 7<br />

15


16 KAPITEL 4. ALLGEMEINE BETRACHTUNGEN<br />

als Folge aus <strong>der</strong> Ziffernmenge {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} erzeugt werden.<br />

5. Was sind die wesentlichen konzeptionellen Unterschiede zwischen einem<br />

von Neumann Rechner, einem Vektor- und einem Parallelrechner?<br />

6. Welche Typen von Speicher findet man bei Rechner je<strong>der</strong> Art?<br />

7. Wie groß sind typischerweise die Puffer (Cache) eines Rechner?<br />

8. Berechnen Sie die maximale Rechenleistung (”Peak-Performance”) eines<br />

Parallelrechners in Abhängigkeit von <strong>der</strong> Anzahl p seiner Prozessorelemente.


Kapitel 5<br />

Pipeline-Rechner<br />

1. Ein Computer hat zur Befehlsabarbeitung eine vierstufige Pipeline eingebaut.<br />

Jede Stufe benötigt für die Bearbeitung dieselbe Zeit von 1ns. Wie<br />

viele Befehle kann dieser Rechner pro Sekunde abarbeiten?<br />

2. Berechnen Sie den Geschwindigkeitsgewinn (Speedup) S für n =10, 20, 50, 100,<br />

jeweils für die Multiplikation mit K = 7 und einer Addition mit K =6.<br />

Diskutieren Sie die Speedup-Funktion S(n).<br />

17


18 KAPITEL 5. PIPELINE-RECHNER


Kapitel 6<br />

Parallelrechner<br />

1. Konstruieren Sie einen Parallelrechner, <strong>der</strong> aus 4×4 gitterförmig angeordneten<br />

menschlichen Gehirnen besteht. Zwei o<strong>der</strong> mehr weitere Studenten<br />

(-innen) simulieren das Betriebssystem.<br />

Berechnen Sie mit diesem Rechner eine Summe von ganzen Zahlen, multiplizieren<br />

Sie das Ergebnis mit drei neuen Zahlen und addieren Sie die<br />

Ergebnisse auf. Führen Sie diese Operationen mehrmals hintereinan<strong>der</strong><br />

aus. Parallelisieren Sie das Problem und bilden Sie es auf Ihren Rechner<br />

ab.<br />

2. Konstruieren Sie einen binären Baum als Parallelrechner und führen Sie<br />

die gleiche Aufgabe wie unter 1) aus.<br />

3. Vergleichen Sie die Laufzeiten Ihres Progr<strong>am</strong>mes auf beiden Rechnerstrukturen<br />

mit denen eines von Neumann-Rechner.<br />

4. Berechnen Sie mit Hilfe Ihres massiv parallelen Rechners das Skalarprodukt<br />

a · b = a 1 b 1 + a 2 b 2 + a 3 b 3 <strong>der</strong> Vektoren.<br />

⎛<br />

a = ⎝ 1.15<br />

⎞ ⎛<br />

2.3333... ⎠ , b = ⎝ 133.8<br />

⎞<br />

1111 ⎠ .<br />

π<br />

201<br />

Untersuchen Sie zunächst die Parallelisierbarkeit des Problems und bilden<br />

es dann auf den MP-Rechner ab. Verallgemeinern Sie Ihre Vorgehensweise<br />

auf Vektoren a, b ∈ R n .<br />

19


20 KAPITEL 6. PARALLELRECHNER


Teil III<br />

Betriebssysteme<br />

21


Kapitel 7<br />

Allgemeines<br />

1. Was sind die beiden Hauptaufgaben eines Betriebssystems?<br />

2. Was versteht man unter Multiprogr<strong>am</strong>ming?<br />

3. Bei den ersten Rechnern wurde das Lesen und Schreiben jedes einzelnen<br />

Bytes vom Prozessor durchgeführt (es gab noch keinen DMA-Modus). Was<br />

für Konsequenzen hatte das für das Multiprogr<strong>am</strong>ming?<br />

4. Welcher <strong>der</strong> folgenden Befehle sollte nur im Systemmodus und nicht im<br />

Benutzermodus durchgeführt werden?<br />

(a) Sperren aller Unterbrechungen (Interrupts);<br />

(b) Lesen <strong>der</strong> aktuellen Uhrzeit;<br />

(c) Setzen <strong>der</strong> aktuellen Uhrzeit;<br />

(d) Än<strong>der</strong>ung <strong>der</strong> Speicherzuordnungstabellen;<br />

(e) Än<strong>der</strong>ung <strong>der</strong> Benutzer-Quotas.<br />

5. Ein Lektor findet in einem Buch einen Fehler, <strong>der</strong> sich konstant durch das<br />

ges<strong>am</strong>te Werk zieht. Das Buch hat 700 Seiten, wobei jede Seite 50 Zeilen<br />

mit 80 Zeichen pro Zeile enthält. Wie lange dauert es, bis das ges<strong>am</strong>te<br />

Dokument elektronisch eingescannt ist, wobei das Dokument in je<strong>der</strong> Speicherebene<br />

(Register, Cache, Hauptspeicher, Platten, Band) vorhanden<br />

ist? Die internen Speicher haben eine Zugriffszeit von 1ns pro Zeichen, bei<br />

Plattenspeichern wird die Zeit pro Block mit 1024 Zeichen angegeben und<br />

bei Bandlaufwerken ist die Zeit im Mittel von 100s bis zum Erreichen<br />

<strong>der</strong> richtigen Position angegeben, danach entspricht die Übertragungs-<br />

Geschwindigkeit etwa <strong>der</strong> einer Platte.<br />

6. Im einfachsten Prozessor-Modell gibt es die drei Zustände Rechnend, Rechenbreit,Blockiert.<br />

Rein theoretisch gäbe es bei drei Zuständen 3! = 6 Übergänge.<br />

Nennen Sie die Gründe, warum es nur vier Übergänge gibt?<br />

23


24 KAPITEL 7. ALLGEMEINES<br />

7. Ein Schnellimbiss hat vier Arten von Angestellten:<br />

(a) Bedienungen, die die Bestellungen <strong>der</strong> Kunden aufnehmen;<br />

(b) Köche, die das Essen zubereiten;<br />

(c) Einpacker, die das Essen in Tüten einpacken;<br />

(d) Kassierer, die den Kunden die Tüten geben und das Geld entgegennehmen;<br />

Je<strong>der</strong> Angestellte kann als ein kommunizieren<strong>der</strong>, aufeinan<strong>der</strong>folgen<strong>der</strong><br />

Prozess angesehen werden. Welche Art von Interprozesskommunikation<br />

benutzen Sie? Setzen Sie dieses Modell in Beziehung zu Prozessen in Unix.


Kapitel 8<br />

Unix: <strong>Grundlagen</strong><br />

1. Geben Sie die folgenden Kommandos hinter dem Unix Prompt ein und<br />

versuchen jeweils die Ausgaben zu interpretieren:<br />

echo hello world<br />

passwd<br />

date<br />

hostn<strong>am</strong>e<br />

arch<br />

un<strong>am</strong>e -a<br />

dmesg | more(you may need to press q to quit)<br />

uptime<br />

who <strong>am</strong> i<br />

who<br />

id<br />

last<br />

finger<br />

w<br />

top (you may need to press q to quit)<br />

echo $SHELL<br />

echo {con,pre}{sent,fer}{s,ed}<br />

man "automatic door"<br />

man ls (you may need to press q to quit)<br />

man who (you may need to press q to quit)<br />

who can tell me why i got divorced<br />

lost<br />

clear<br />

cal 2000<br />

cal 9 1752(do you notice anything unusual?)<br />

bc -l(type quit or press Ctrl-d to quit)<br />

echo 5+4 | bc -l<br />

yes please(you may need to press Ctrl-c to quit)<br />

25


26 KAPITEL 8. UNIX: GRUNDLAGEN<br />

time sleep 5<br />

history<br />

2. Wählen Sie sich auf Ihrem Rechner ein und gehen mittels dem Befehl<br />

rlogin auf einen an<strong>der</strong>en Rechner im FH-Netz bzw. im WWW.


Kapitel 9<br />

Unix: Prozesse<br />

1. Archive the contents of your home directory using tar. Compress the tar<br />

file with gzip. Now uncompress and unarchive the .tar.gz file using cat,<br />

tar and gzip on one command line.<br />

2. Use find to compile a list of all directories in the system, redirecting the<br />

output so that the list of directories ends up in a file called directories.txt<br />

and the list of error messages ends up in a file called errors.txt.<br />

3. Try the command sleep 5. What does this command do?<br />

4. Run the command in the background using &.<br />

5. Run sleep 15 in the foreground, suspend it with Ctrl-z and then put it<br />

into the background with bg. Type jobs. Type ps. Bring the job back into<br />

the foreground with fg.<br />

6. Run sleep 15 in the background using &, and then use kill to terminate<br />

the process by its job number. Repeat, except this time kill the process<br />

by specifying its PID.<br />

7. Run sleep 15 in the background using &, and then use kill to suspend the<br />

process. Use bg to continue running the process.<br />

8. Startup a number of sleep 60 processes in the background, and terminate<br />

them all at the s<strong>am</strong>e time using the killall command.<br />

9. Use ps, w and top to show all processes that are executing.<br />

10. Use ps -aeH to display the process hierarchy. Look for the init process.<br />

See if you can identify important system daemons. Can you also identify<br />

your shell and its subprocesses?<br />

11. Combine ps -fae with grep to show all processes that you are executing,<br />

with the exception of the ps -fae and grep commands.<br />

27


28 KAPITEL 9. UNIX: PROZESSE<br />

12. Start a sleep 300 process running in the background. Log off the server,<br />

and log back in again. List all the processes that you are running. What<br />

happened to your sleep process? Now repeat, except this time start by<br />

running nohup sleep 300.<br />

13. Multiple jobs can be issued from the s<strong>am</strong>e command line using the operators<br />

;, && and ——. Try combining the commands cat nonexistent and<br />

echo hello using each of these operators. Reverse the or<strong>der</strong> of the commands<br />

and try again. What are the rules about when the commands will<br />

be executed?<br />

14. What does the xargs command do? Can you combine it with find and grep<br />

to find yet another way of searching all files in the /home subdirectory<br />

tree for the word hello?<br />

15. What does the cut command do? Can you use it together with w to produce<br />

a list of login n<strong>am</strong>es and CPU times corresponding to each active<br />

process? Can you now (all on the s<strong>am</strong>e command line) use sort and head<br />

or tail to find the user whose process is using the most CPU?


Kapitel 10<br />

Unix: Filesysteme,<br />

Directories und Dateien<br />

1. Delete the kernel of your system.<br />

2. Try the following command sequence:<br />

cd<br />

pwd<br />

ls -al<br />

cd .<br />

pwd (where did that get you?)<br />

cd ..<br />

pwd<br />

ls -al<br />

cd ..<br />

pwd<br />

ls -al<br />

cd ..<br />

pwd (what happens now)<br />

cd /etc<br />

ls -al | more<br />

cat passwd<br />

cd -<br />

pwd<br />

3. Continue to explore the filesystem tree using cd, ls, pwd and cat. Look in<br />

/bin, /usr/bin, /sbin, /tmp and /boot. What do you see?<br />

4. Explore /dev. Can you identify what devices are available? Which are<br />

character- oriented and which are block-oriented? Can you identify your<br />

29


30 KAPITEL 10. UNIX: FILESYSTEME, DIRECTORIES UND DATEIEN<br />

tty (terminal) device (typing who <strong>am</strong> i might help); who is the owner of<br />

your tty (use ls -l)?<br />

5. Explore /proc. Display the contents of the files interrupts, devices, cpuinfo,<br />

meminfo and uptime using cat. Can you see why we say /proc is a pseudofilesystem<br />

which allows access to kernel data structures?<br />

6. Change to the home directory of another user directly, using cd usern<strong>am</strong>e.<br />

7. Change back into your home directory.<br />

8. Delete the subdirectory called work.<br />

9. Make subdirectories called work and play.<br />

10. Copy the file /etc/passwd into your home directory.<br />

11. Move it into the subdirectory play.<br />

12. Change into subdirectory play and create a symbolic link called terminal<br />

that points to your tty device. What happens if you try to make a hard<br />

link to the tty device?<br />

13. What is the difference between listing the contents of directory? Play with<br />

ls -l and ls -L?<br />

14. Create a file called hello.txt that contains the words ”hello world”. Can<br />

you use cpüsing terminaläs the source file to achieve the s<strong>am</strong>e effect?<br />

15. Copy hello.txt to terminal. What happens?<br />

16. Imagine you were working on a system and someone accidentally deleted<br />

the ls command (/bin/ls). How could you get a list of the files in the<br />

current directory? Try it.<br />

17. How would you create and then delete a file called ”$SHELL”? Try it.<br />

18. How would you create and then delete a file that begins with the symbol<br />

#? Try it.<br />

19. How would you create and then delete a file that begins with the symbol<br />

-? Try it.<br />

20. What is the output of the command: echo con,present,fers,ed? Now, from<br />

your home directory, copy /etc/passwd and /etc/group into your home<br />

directory in one command given that you can only type /etc once.<br />

21. Still in your home directory, copy the entire directory play to a directory<br />

called work, preserving the symbolic link.<br />

22. Delete the work directory and its contents with one command. Accept no<br />

complaints or queries.


31<br />

23. Change into a directory that does not belong to you and try to delete all<br />

the files (avoid /proc or /dev, just in case!)<br />

24. Experiment with the options on the ls command. What do the d, i, R and<br />

F options do?


32 KAPITEL 10. UNIX: FILESYSTEME, DIRECTORIES UND DATEIEN


Kapitel 11<br />

Unix: Network-Tools<br />

1. Use telnet to request a web page from the web server www.doc.ic.ac.uk.<br />

2. Use ping to find the round-trip delay to www.altavista.com.<br />

3. Use traceroute to see the network route taken to www.altavista.com (which<br />

is in the USA). Can you tell which cities your network traffic passes<br />

through?<br />

4. Use ftp to connect to the FTP site sunsite.doc.ic.ac.uk. Obtain the latest<br />

version of the package units (in the form of a .tar.gz file) from the directory<br />

packages/gnu/units. Decompress and unarchive the .tar.gz file. Type<br />

configure and then make. Run the executable progr<strong>am</strong> that is produced<br />

as ”./units -f units.dat”. What does the progr<strong>am</strong> do? If you were the system<br />

administrator, what would you have to do to install the package for<br />

everyone to use?<br />

5. Use wget to get a copy of the web page http://www.doc.ic.ac.uk/index.html.<br />

Have a look at the contents of the file. Can you use sed to strip out the<br />

HTML tags (text enclosed in ¡ and ¿) to leave you with just plain text?<br />

6. Use finger or who to get a list of users on the machine.<br />

7. Use write to send them a message. To stop people from sending you messages,<br />

type mesg n”. To reenable messages, type mesg y”.<br />

8. Try use talk to send a message to someone (N.B. this may not work).<br />

9. List all your processes, using sed to substitute mefor your usern<strong>am</strong>e.<br />

10. Use who, awk, sort and uniq to print out a sorted list of the logins of<br />

active users.<br />

11. Use awk on /etc/passwd to produce a list of users and their login shells.<br />

33


34 KAPITEL 11. UNIX: NETWORK-TOOLS<br />

12. Write an awk script that prints out all lines in a file except for the first<br />

two.<br />

13. Modify the awk script in the notes so that it doesn’t increase the number<br />

of players used to calculate the average if the manner of dismissal is notout”.<br />

14. Create a file called hello.c containing the simple ”hello worldprogr<strong>am</strong> in<br />

the notes. Create an appropriate makefile for compiling it. Run make.<br />

15. Use man -k to find a suitable utility for viewing postscript files.


Kapitel 12<br />

Unix:<br />

Shell-Progr<strong>am</strong>mierung<br />

1. Use your favourite UNIX editor to create the simple shell script, which<br />

copy one of your files to your neigthbours HOME-Directory.<br />

2. Extend the script so that it generates a random secret number between 1<br />

and 100 and then keeps asking the user to guess the secret number until<br />

they guess correctly. The script should give the user hints such as Ï’m<br />

sorryyourguessistoolowör Ï’m sorry your guess is too high”.<br />

3. Write a shell script which ren<strong>am</strong>es all .txt files as .text files. The command<br />

basen<strong>am</strong>e might help you here.<br />

4. Write a shell script called pidof which takes a n<strong>am</strong>e as par<strong>am</strong>eter and<br />

returns the PID(s) of processes with that n<strong>am</strong>e.<br />

5. Shell scripts can also include functions. Functions are declared as:<br />

function funcn<strong>am</strong>e()<br />

{<br />

statements<br />

}<br />

and invoked as funcn<strong>am</strong>e par<strong>am</strong>1 par<strong>am</strong>2... The par<strong>am</strong>eters passed to the<br />

function are accessible inside the function through the variables $1, $2,<br />

etc. Now add a usage() function to your pidof script which prints usage<br />

instructions. Call usage() if the wrong number of par<strong>am</strong>eters is passed to<br />

the script.<br />

6. Modify your .bash profile script so that your PATH includes the current<br />

directory (.) and so that your environment variable EDITOR is set to<br />

35


36 KAPITEL 12. UNIX: SHELL-PROGRAMMIERUNG<br />

emacs or vi (or whatever else you prefer to use). Run the modified script<br />

using source .bash profile and check that the changes you made have been<br />

applied to the current shell (type set).


Teil IV<br />

Vom Problem zum<br />

Progr<strong>am</strong>m<br />

37


Kapitel 13<br />

Abstraktion und<br />

Mechanisierung von<br />

Problemen<br />

Finden Sie bei den folgenden Problemen eine Lösungsstrategie. Je nach Schwierigkeitsgrad<br />

<strong>der</strong> Aufgabenstellungen können sie diese Probleme als Herausfor<strong>der</strong>ung<br />

für mehrere Übungstunden verstehen. Im Laufe <strong>der</strong> Übungen werden wir einige<br />

ihrer Teilaspekte lösen.<br />

1. Starten Sie zwei unabhängige Progr<strong>am</strong>me, welche abwechselnd die natürlichen<br />

Zahlen von 1 bis 100 nacheinan<strong>der</strong> in einen File schreiben und aufaddieren.<br />

Die Summe sollte dann <strong>am</strong> Bildschirm ausgegeben werden.<br />

2. Gegeben sei ein Character-String C (dessen Inhalt Sie selbst definieren<br />

können, z.B. C =’Mein N<strong>am</strong>e ist Hugo’). Dieser soll durch ein entsprechendes<br />

Progr<strong>am</strong>m in umgekehrter Reihenfolge <strong>am</strong> Bildschirm ausgegeben werden.<br />

3. LesenSieeinfünfstelliges Wort ein und dekodiren es Buchstben für Buchstaben,<br />

indem Sie 30 von dem numerischen Wert aus <strong>der</strong> ASCII-Tabelle<br />

von je<strong>der</strong> Zahl, die den Buchstaben darstellt, abziehen. Beispielsweise<br />

würde man den Buchstaben C (= 67) erhalten, wenn man bei A (= 97)<br />

startet. Geben Sie das alte und neue Wort <strong>am</strong> Bildschirm aus. (Hinweis:<br />

Y = chr(ord(X) -30) für X,Y ∈{A, B, C, ..., Z}).<br />

4. Simulieren Sie <strong>am</strong> Rechner den Münzwurf als Zufallsexperiment.<br />

5. Ersinnen Sie ein interaktives fileorientiertes Progr<strong>am</strong>m, daß das folgende<br />

Record- Format<br />

N<strong>am</strong>e Adresse Telefonnummer Faxnummer Beruf<br />

Mueller Max 65555 Buxtehude, 0233-55555 0233-55555 Maler<br />

39


40KAPITEL 13. ABSTRAKTION UND MECHANISIERUNG VON PROBLEMEN<br />

Adalbertstr. 5<br />

in alphabetischer Ordnung <strong>der</strong> Nachn<strong>am</strong>en sortiert. Als Oberfläche geben<br />

Sie ein Menü <strong>am</strong> Bildschirm aus, daß dem Benutzer die Möglichkeit gibt<br />

die folgenden Aktionen durchzuführen:<br />

(a) Addiere einen neuen Record;<br />

(b) Lösche einen Record;<br />

(c) Modifiziere einen Record;<br />

(d) Finde einen existierenden Record und zeige ihn <strong>am</strong> Bildschirm;<br />

(e) Generiere eine komplette Liste aller Records;<br />

(f) Exit;<br />

Stellen Sie sicher, daß wenn ein neuer Record erzeugt wird, o<strong>der</strong> ein existieren<strong>der</strong><br />

gelöscht wird, die Recordliste wie<strong>der</strong> alphabetisch geordnet ist.


Kapitel 14<br />

Anwendung des<br />

Phasenmodells<br />

1. Berechnen Sie das Volumen V einer Box, als Funktion <strong>der</strong> Seitenflächen<br />

A, B, C.<br />

Überlegen Sie sich bei diesem einfachen Problem, wie das entsprechende<br />

Phasenmodell auszusehen hat und führen Sie die einzelnen Phasenschritte<br />

aus.<br />

2. Für welche Aufgabe ist das folgende C-Progr<strong>am</strong>m gedacht?<br />

#define RATE 0.14<br />

main()<br />

{<br />

float<br />

gross,tax,net;<br />

}<br />

printf("Gross income: ")<br />

scanf(gross);<br />

tax = RATE * gross;;<br />

net = gross - tax;<br />

printf(gross,tax,net);<br />

Installieren Sie das Progr<strong>am</strong>m in ihrer HOME/bin-Directory und überprüfen<br />

Sie es auf seine Richtigkeit.<br />

3. Implementieren Sie das Progr<strong>am</strong>m ballonwettbewerb aus <strong>der</strong> Vorlesung<br />

in Ihre jeweilige HOME-Directory unter dem Ordner bin. Bilden Sie dazu<br />

ein Te<strong>am</strong> von jeweils vier Kommilitonen. Dieses Progr<strong>am</strong>m sollte immer<br />

41


42 KAPITEL 14. ANWENDUNG DES PHASENMODELLS<br />

dann laufen, ungeachtet in welcher Directory Sie es aufrufen. Verifizieren<br />

Sie ob es fehlerhaft ist und kommentieren Sie es. Geben Sie es einer an<strong>der</strong>en<br />

Gruppe zur Begutachtung, quasi als Qualitätskontrolle.


Teil V<br />

Algorithmen<br />

43


Kapitel 15<br />

Allgemeine Betrachtungen<br />

1. Verwenden Sie das ∑ - und ∏ -Zeichen, um das folgenden darzustellen:<br />

(a) Die Summe aller ungeraden Zahlen von 1 bis 99;<br />

(b) Die Summe <strong>der</strong> Quadrate aller geraden ganzen Zahlen von 2 bis 2n;<br />

(c) Das Produkt aller Potenzen von 2 zwischen 8 und 2 n mit n>3 ∈ N;<br />

2. Verwenden Sie das ∏ -Zeichen zur Darstellung <strong>der</strong> Fakultätsfunktion n!.<br />

3. Zeigen Sie, daß die endliche geometrische Reihe ∑ n<br />

k=0 qk das Ergebnis<br />

für q ≠ 1 und n =1, 2, ... hat.<br />

1 − q n+1<br />

1 − q<br />

4. Stellen Sie die Erzeugung und Exekution eines PASCAL-Progr<strong>am</strong>mes als<br />

Algorithmus mit dem entsprechenden Regelwerk dar.<br />

5. Entwickeln Sie einen Algorithmus <strong>der</strong> den Vorgang ”Mieten eines Autos”<br />

vollständig beschreibt. Versuchen Sie dabei alle denkbaren Optinionen mit<br />

zu berucksichtigen.<br />

6. Gegeben Sie ist das folgende Regelwerk für die Algorithmen 1 und 2:<br />

(a) Algorithmus 1:<br />

Falls die Ampelanlage funktioniert, dann gehe wie folgt vor<br />

falls die Ampel rot o<strong>der</strong> gelb ist bleibe man stehen,<br />

ansonsten fahre man;<br />

(b) Algorithmus 2:<br />

45


46 KAPITEL 15. ALLGEMEINE BETRACHTUNGEN<br />

Falls die Ampelanlage funktioniert, dann gehe wie folgt vor<br />

falls die Ampel rot o<strong>der</strong> gelb ist bleibe stehen;<br />

ansonsten fahre man;<br />

In welchen Situationen unterscheiden sich beide Regelwerke? Welcher Algorithmus<br />

erscheint Ihnen zweckmäßiger?<br />

7. Erstellen Sie einen Algorithmus zur Nullstellenberechnung einer quadratischen<br />

Gleichung x 2 +2px + q 2 = 0. Die einzugebenenden Koeffizienten<br />

p, q sollen dabei aus R sein.


Kapitel 16<br />

Iteration<br />

1. Übersetzen Sie die Funktion Sel Sort:<br />

function Sel_Sort(float A, int n)<br />

{<br />

int i,j,small,temp;<br />

}<br />

for (i=1,i


48 KAPITEL 16. ITERATION<br />

3. Konstruieren Sie eine Funktion pot, die die Potenzfunktion x n für alle<br />

x ∈ R und n ∈ N berechnet. Nutzen Sie dazu die for-Schleife aus.<br />

Beispiel:<br />

for (i=1,i


Kapitel 17<br />

Induktion<br />

1. Beweisen Sie durch vollständige Induktion, daß <strong>der</strong> Zus<strong>am</strong>menhang<br />

( ) ( ) ( )<br />

n n − 1 n − 1<br />

=<br />

+<br />

(17.1)<br />

m m m − 1<br />

gilt. Der Binomialkoeffzient ist dabei definiert als<br />

( ) n n!<br />

:=<br />

m m!(n − m)! . (17.2)<br />

( )<br />

n<br />

Berechnen Sie . Nutzen Sie dazu obiges Fakultätsprogr<strong>am</strong>m aus.<br />

m<br />

2. Das folgende Progr<strong>am</strong>msegment berechnet die Summe <strong>der</strong> ganzen Zahlen<br />

im Array A[n].<br />

sum = 0;<br />

for (i=1,i


50 KAPITEL 17. INDUKTION<br />

4. Erkennt ein Code mit gera<strong>der</strong> Parität “Doppelfehler”? D<strong>am</strong>it sind Verän<strong>der</strong><br />

ungen in zwei verschiedenen Bits gemeint. Kann er einzelne Fehler<br />

korregieren?


Kapitel 18<br />

Rekursion<br />

1. Hotelproblem: Stellen Sie die Zustände <strong>der</strong> Zimmertüren des Hotels<br />

durch einen Bitstring <strong>der</strong> Länge N (= Anzahl <strong>der</strong> Türen) dar. Wenden Sie<br />

die NICHT-Operation genau dann an, wenn i ∈ Menge <strong>der</strong> Türen Teiler<br />

von j ∈ Menge <strong>der</strong> Gäste ist, auf das entsprechende Bit an. Entwickeln Sie<br />

einen rekursiven Algorithmus dazu und progr<strong>am</strong>mieren diesen in Pascal.<br />

2. Konstruieren Sie ein Mehrfach-Mergesort Progr<strong>am</strong>m, daß eine Liste in N<br />

Teile etwa leicher Länge zerlegt, diese rekursiv sortiert und die N Listen<br />

durch Vergleich aller ersten Elemente zus<strong>am</strong>menfügt. Das MergeSort aus<br />

<strong>der</strong> Vorlesung ist <strong>der</strong> Speziellfall N =2.<br />

3. Erzeugen Sie die folgende Pyr<strong>am</strong>ide<br />

1<br />

2 3 2<br />

3 4 5 4 3<br />

4 5 6 7 6 5 4<br />

5 6 7 8 9 8 7 6 5<br />

6 7 8 9 0 1 0 9 8 7 6<br />

7 8 9 0 1 2 3 2 1 0 9 8 7<br />

aus <strong>der</strong> Ziffernmenge {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} durch Rekursion.<br />

4. Berechnen Sie mittels Rekursion die Schaltjahre im zwanzigsten Jahrhun<strong>der</strong>t.<br />

5. Generieren Sie durch Rekursion das Pascalsche Dreieck<br />

1<br />

1 1<br />

1 2 1<br />

1 3 3 1<br />

51


52 KAPITEL 18. REKURSION<br />

1 4 6 4 1<br />

1 5 10 10 5 1<br />

für n =5.<br />

6. Wenden Sie die Funktion merge auf die Listen<br />

(a) L 1 =(1, 2, 3, 4, 5),L 2 =(2, 4, 6, 8, 10);<br />

(b) L 1 =(5, 4, 3, 2, 1),L 2 =(10, 8, 6, 4, 2);<br />

an.


Kapitel 19<br />

Evolutionsstrategien<br />

1. Virtuelle Läusepopulation:EsexistiereeineLäusepopulation, die genau<br />

einmal in ihrem Leben bei <strong>der</strong> Paarung jeweils zwei gesunde zeugungsfähige<br />

Nachkommen-Pärchen erzeugt. Die Geschlechtsreife <strong>der</strong> Läuse liege im<br />

Mittel bei drei Tagen. Die Kin<strong>der</strong> <strong>der</strong> Ausgangspaare können demnach<br />

nach drei Tagen neue Nachkommen generieren. Ohne innere und/o<strong>der</strong><br />

äußere Einfüße würde sich diese Population nach 300 Tagen auf ca. 2 100<br />

Läusepaare vermehrt haben.<br />

Simulieren Sie gewisse Einflüsse, wie Hunger, Krankheit o<strong>der</strong> Feinde, auf<br />

diese Population. Entwickeln sie dazu ein C-Progr<strong>am</strong>m, daß das zeitliche<br />

Verhalten dieser Population angemessen beschreibt.<br />

2. Erstellen Sie eine C-Funktion, welche die sogenannte Feigenbaum-Folge<br />

x k+1 =4x k (1 − x k ), x 0 ∈ (0, 1)<br />

rekursiv berechnet. Stellen Sie fest ob sich diese Folge chaotisch verhält.<br />

Definition 19.0.1 (Chaos) Eine Folge verhält sich genau dann chaotisch,<br />

wenn kleine Variationen des Anfangswertes große Verän<strong>der</strong>ungen<br />

des Endwertes bedingen.<br />

3. Kugelspiel Irrflug 1 : Das Spiel wird von zwei Personen auf einer Fläche<br />

von 4×4 Fel<strong>der</strong>n (ohne Koordinatenbezifferung) durchgeführt. Die Spieler<br />

erhalten jeweils 16 unterschiedlich farbige Kugeln. Je<strong>der</strong> plaziert 8 seiner<br />

Kugeln auf <strong>der</strong> ihm zugewandten Hälfte des Spielbrettes und behält die<br />

restlichen 8 in Reserve. Am Anfang des Spieles ist die Spielfläche jeweils<br />

zur Hälfte mit einer Farbe von Kugeln bedeckt.<br />

Nun wird eine Münze geworfen. Bei “Kopf” darf <strong>der</strong> Spieler 1 eine beliebige<br />

Kugel von Spieler 2 entfernen und durch eine aus seinem Reservoir<br />

1 aus Das Spiel von Ruthhild Winkler und Manfred Eigen, erschienen im Piper-Verlag 1975<br />

(Seite 50 ff.)<br />

53


54 KAPITEL 19. EVOLUTIONSSTRATEGIEN<br />

ersetzen. Man spielt für eine fest bestimmte Zeit, die lange genug bemessen<br />

sein sollte, um beiden Partnern in etwa die gleichen Gewinnchancen<br />

einzuräumen. Dazu setze man voraus, daß es sich um eine Laplace-<br />

Münze handele. D.h. beide Zustände “Kopf” und “Zahl” treten mit <strong>der</strong><br />

Wahrscheinlichkeit 1 2 auf.<br />

Durch Zusatzregeln, die Korrelationen zwischen benachbarten gleichfabigen<br />

Kugeln postulieren, läst sich das Spiel “endlich” gestalten. Eine neue<br />

Regel könnte sein, alle Kugeln des Spielers 1, die im Verlaufe des Spiels<br />

vollständig durch die von Spieler 2 eingeschlossen wurden, durch seine zu<br />

ersetzen. Das Spiel ist genau dann zu Ende, wenn eine Kugelsorte ausgestorben<br />

ist, denn jede neue ins Spiel kommende an<strong>der</strong>sfarbige Kugel<br />

wäre von den Kugeln des Gegners umzingelt.<br />

Dies simuliert den physikalischen Effekt, wie aus koorperativen Wechselwirkungen,<br />

zus<strong>am</strong>menhängende Phasen (wie fest, flüssig und gasförmig)<br />

einer Substanz (z.B. Wasser) entstehen können.<br />

4. G<strong>am</strong>e of Life 2 von J.H. Conway: Man benutze dazu ein zweidimensionales<br />

Gitter mit möglichst vielen Fel<strong>der</strong>n. Eine Koordinatenbezifferung ist<br />

zunächst nicht notwendig. Zur Nachbarschaft zählen alle vier angrenzenden<br />

orthogonalen als auch die vier diagonalen Fel<strong>der</strong>.<br />

Der Ablauf des Spieles erfolgt in separaten Zeitschritten, die man als Generationen<br />

bezeichnen kann. Innerhalb einer Generation werden die Regeln<br />

simultan auf alle Fel<strong>der</strong> angewandt. Die Regeln bestimmen, ob ein Feld<br />

belegt o<strong>der</strong> geräumt wird. Es gibt eine Alternative in diesem Spiel: Ein<br />

Feld (Gitterpunkt) kann entwe<strong>der</strong> besetzt o<strong>der</strong> leer sein.<br />

Die Regeln lauten:<br />

(a) Überleben: Ein mit einer Kugel besetztes Feld überlebt genau dann<br />

zur nächsten Generation, wenn zwei o<strong>der</strong> drei Fel<strong>der</strong> <strong>der</strong> Nachbarschaft<br />

ebenfalls besetzt sind. Die Kugel verbleibt folglich in ihrer Position.<br />

(b) Tod: Eine Kugel wird von ihrem Platz entfernt, wenn in ihrer Nachbarschaft<br />

weniger als zwei o<strong>der</strong> mehr als drei Fel<strong>der</strong> besetzt sind. Im<br />

ersten Fall stirbt das Individuum an Vereins<strong>am</strong>ung im zweiten ist das<br />

System überbevölkert.<br />

(c) Geburt: Ein Leerfeld darf genau dann mit einer Kugel belegt werden,<br />

wenn exakt drei Nachbarfel<strong>der</strong> besetzt sind.<br />

Jedes Feld wird in je<strong>der</strong> Generation separat entsprechend seinem Zustand<br />

(leer o<strong>der</strong> besetzt) gemäß <strong>der</strong> zutreffenden Regeln umgewandelt.<br />

Aus diesem Grunde ist es rats<strong>am</strong> zwei Kugelfarben zu verwenden. Man<br />

überprüft zunächst die Leerfel<strong>der</strong> und füllt sie mit Kugel <strong>der</strong> Farbe Weiß<br />

auf, wenn die Bedingungen <strong>der</strong> Regel 2 zutreffen. Danach werden — es<br />

handelt sich immer noch um dieselbe Generation — die von schwarzen<br />

2 aus Das Spiel von Ruthhild Winkler und Manfred Eigen, erschienen im Piper-Verlag 1975<br />

(Seite 218 ff.)


55<br />

Kugeln besetzten Fel<strong>der</strong>n gesichtet und entsprechend Regel 1 und 2 umgewandelt.<br />

Dabei gelten die von den weißen Kugeln okkupierten Fel<strong>der</strong>n<br />

nach wie vor als leer. Sind sämtliche Züge innerhalb einer Generation ausgeführt,<br />

ersetzt man die weißen Kugeln wie<strong>der</strong> durch schwarze. D<strong>am</strong>it ist<br />

dieser Zeitschritt abgeschlossen und man kann zur nächsten Generation<br />

übergehen, in <strong>der</strong> die genannten Operationen wie<strong>der</strong>holt werden.<br />

Das Spiel beginnt, sobald <strong>der</strong> Spieler eine beliebige — etwa sechs bis zehn<br />

schwarze Kugeln umfassende Figur — gesetzt hat. Dies ist die einzige<br />

Möglichkeit für den Spieler, den Ablauf <strong>der</strong> Spiel-Evolution zu beeinflussen.<br />

Alle weiteren Züge erfolgen deterministisch nach Maßgabe obiger<br />

Regeln.<br />

Versuchen Sie sich Gedanken über die Abstraktion dieses Spiels zu machen.<br />

Entwickeln Sie dazu einen adäquaten Algorithmus und kontruieren Sie ein<br />

C-Progr<strong>am</strong>m, welches dieses Spiel simuliert.<br />

5. Machen Sie sich den genetischen Algorithmus (GA) klar. Geben Sie hierzu<br />

die verschiedenen Schritte des Standard-GA an.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!