Übungen
Aufgabe 1
Ziel ist es, eine Druckerwarteschlange zu simulieren. Dabei sollen Python-Protokolle der folgenden Art entstehen.
>>> simuliereDrucken() S: ['Eine'] S: ['Eine', 'Warteschlange'] S: ['Eine', 'Warteschlange', 'bildet'] S: ['Eine', 'Warteschlange', 'bildet', 'sich,'] Eine S: ['Warteschlange', 'bildet', 'sich,', 'wenn'] S: ['Warteschlange', 'bildet', 'sich,', 'wenn', 'mehr'] Warteschlange S: ['bildet', 'sich,', 'wenn', 'mehr', 'Anforderungen'] bildet sich, wenn S: ['mehr', 'Anforderungen', 'pro'] S: ['mehr', 'Anforderungen', 'pro', 'Zeiteinheit'] S: ['mehr', 'Anforderungen', 'pro', 'Zeiteinheit', 'an'] mehr S: ['Anforderungen', 'pro', 'Zeiteinheit', 'an', 'ein'] S: ['Anforderungen', 'pro', 'Zeiteinheit', 'an', 'ein', 'System'] Anforderungen S: ['pro', 'Zeiteinheit', 'an', 'ein', 'System', 'gerichtet'] pro Zeiteinheit an ein System gerichtet S: ['werden,'] S: ['werden,', 'als'] S: ['werden,', 'als', 'dieses'] werden, als dieses S: ['in'] in S: ['der'] der S: ['selben'] S: ['selben', 'Zeit'] selben Zeit S: ['verarbeiten'] verarbeiten S: ['kann.'] kann.
Der folgende (noch unfertige) Quelltext liefert ein entsprechendes Simulationsorogramm.
from schlange import *
from random import *
def simuliereDrucken():
f = open("warteschlange.txt", 'r')
text = f.read()
liste = text.split()
s = Schlange()
i = 0
while (len(liste) > 0) or not s.istLeer():
z = randint(0, 1)
if z == 0:
# Auftrag drucken
else:
# Auftrag erteilen
Analysiere zunächst den Quelltext und kläre folgende Fragen:
- Woher stammen die als Druckaufträge dienenden Zeichenketten?
- Welche Rolle spielt der Zufallsgenerator bei der Simulation?
Vervollständige den Quelltext und teste das Simulationsprogramm.