PRÀCTICA Nº 4: 1 sessió
(del 3 al 9 d’Abril de 2003)
Cues d’impressió
0. Objectius
El objectiu d’esta pràctica és l’implementació i us de la clase "Cua" en C++. Per a fer-ho es demana realitzar un xicotet eixemple d’una cua d’impressió, que gestiona dos impresores.
1. explicació de la prÀctica
El nostre departament té cinc ordinadors en una xarxa d’àrea local. Cada un d’ells crea al principi del dia una cua de documents per a imprimir. Les dades guardades en cada cua deuen ser:
Per a poder provar que estes cues es generen corrèctament es deuria començar el programa introduient les dades previamente indicades pel teclat. En qualsevol cas, una vegada hem comprovat que es creen les cues corrèctament es deurán de agarrar les dades des de un fitxer previament creat.
El format del fitxer serà el següent (en este cas sols hi ha treballs d’impressió de dos ordinadors):
1 texto.doc bw
3 prueba.txt bw
1 prog.cpp color
1 prog.c bw
3 prueba.doc color
Es a dir, un número indeterminat de linies. Cada una d’elles amb una tasca d’impressió, on el codi de identificació del ordinador, el document a imprimir i l’identificació de la impresora estàn separats per un espai.
A partir del fitxer previ es crearàn tantes cues d’impresió como ordinadors traten d’imprimir:
Cola ordinador 1 |
Cola ordinador 3 |
1 texto.doc bw |
3 prueba.txt bw |
1 prog.cpp color |
3 prueba.doc color |
1 prog.c bw |
El nostre departament conta amb una impressora de color (color) i un atra de blanc i negre (bw). Al començar cada dia estes impresores reben les peticions d’impressió d’eixe dia, i les situen en una cua d’impresió. Per a fer-ho agafen la cua del ordinador u i anem tragent cada un dels seus elements repartin-los entre les dos cues de impressores disponibles. Quan acabem amb la cua del ordinador u, pasarem a la cua del ordinador dos i així succesivament fins que tots els ordinadors hagen volcat les seues peticions en les cues de les dos impressores, quedant una cua de impressió per cada impressora, tal i com es mostra a continuació:
color |
Bw |
1 prog.cpp color |
1 texto.doc bw |
3 prueba.doc color |
1 prog.c bw |
3 prueba.txt bw |
En este moment, arriba el momento de imprimir. Es preten que el programa mostre per pantalla l’estat de les cues d’impresió inicialment i després de cada impressió o "intent d’impressió". Aço es degut a que la impressora de color sol fallar, per diverses circunstancies (falta de tinta normalment). Si es dona este cas, el document a ser impres en la impressora de color es fica en la cua de l’impressora de blanco i negre (que mai falla).
El fallo de la impressió d’un document de la impressora en color ocorre amb una probabilitat del 10%. Pero si lo que es te que imprimir es algo que té l’extensió .doc la probabilitat d’error puja al 40%.
L’eixida per pantalla podria ser algo com lo següent:
cola: color
1 prog.cpp color
3 prueba.doc color
cola: bw
1 texto.doc bw
1 prog.c bw
3 prueba.txt bw
paso1:
Imprimiendo prog.cpp en impresora color
cola: color
3 prueba.doc color
cola: bw
1 texto.doc bw
1 prog.c bw
3 prueba.txt bw
paso2:
Error imprimiendo prueba.doc
cola: color
cola: bw
1 texto.doc bw
1 prog.c bw
3 prueba.txt bw
3 prueba.doc color
paso3:
Imprimiendo texto.doc en impresora bw
cola: color
cola: bw
1 prog.c bw
1 prueba.txt bw
3 prueba.doc color
I així fins que les dos cues queden vuides.
Com a resultat del dia tindrem dos fitxers "històrics" (un de cada impressora) on s’hauràn guardat les següents dades (per orde d’impressió):
Es a dir:
Fitxer "color.txt" |
Fitxer "bw.txt" |
1 prog.cpp color |
1 texto.doc bw |
1 prog.c bw |
|
3 prueba.txt bw |
|
3 prueba.doc color |
2. Realització de la pràctica
Implementar una sola clase cua que valga tant per a la cua dels ordinadors com per a les cues de les impresores.
Esta pràctica deurá realitzar-se de dos formes: amb cues estàtiques i amb cues dinàmiques. A més a més el programa deurá tindre en conte qualsevol possible error (per eixemple que alguna cua s’ompliga) i informar-ho.
3. Entrega de Programas
Al començar la següent sessió de pràctiques s’entregaràn al professor huit fitxers:
0) Fitxer de proba d’entrada usat (##prueba.txt)
1) Fitxers de la classe Cua Estàtica (##ColaE.cpp y ##ColaE.h)
2) Fitxers de la clase Cua Dinàmica (##ColaD.cpp y ##ColaD.h)
3) Programa principal (##Impre.cpp)
4) Dos fitxers històrics de proba (##bw.txt y ##color.txt)
Nota Molt Important
Avanç de poder començar a realitzar qualsevol de les pràctiques es necesari presentar les fulles d’especificació de programes (documentació de programes) amb les tasques que es van a realitzar en la pràctica, explicant breument com es van a solventar els problemes plantejats .
LLIURAMENT DE PROGRAMES:
En començar la sessió de pràctiques del 10 al 16 d’Abril.