Grundlagen der Informatik - Fachhochschule Frankfurt am Main
Grundlagen der Informatik - Fachhochschule Frankfurt am Main
Grundlagen der Informatik - Fachhochschule Frankfurt am Main
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.