Ü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.