Esercizio 5.1 Raffaele Di Leo Gerarchia dei Task: Disegnare Ellisse Disegnare forma ellisse Colorare Definire lunghezza Selezionare forma Scegliere colore Definire posizione Csm(i) Point(x,y) Psm(x,y) Csm(i) Scegliere tipo di colorazione Riempimento uniforme Riempimento a macchie Csm(i) (pannello) Csm(i) Interno Ellisse Csm(i) (pannello) Csm(i) Interno Ellisse Grammatica: Σ: { csm(i) , point(x,y) , psm(x,y) } V:{ <disegnare ellisse> , <disegnare forma ellisse> , <colorare> , <scegliere forma> , <definire posizione> , <definire dimensione> , <scegliere colore> , <scegliere tipo colorazione> , <riempimento uniforme> , <riempimento a macchia> } P:{ <disegnare ellisse > <disegnare forma ellisse>+<colorare> <disegnare forma ellisse> <scegliere forma> + <definire posizione> + <definire dimensione> <colorare> <scegliere colore> + <scegliere tipo di colorazione> <scegliere tipo di colorazione> <riempimento uniforme> + <riempimento a macchie> <scegliere forma> csm(ellisse) <definire posizione> point(vertice superiore sinistro) <definire dimensione> psm(vertice basso a destra) <scegliere colore> csm(rosso) | csm(verde) | … <riempimento uniforme> csm(pannello) + csm(interno ellisse) <riempimento a macchie> csm(pannello) + csm(interno ellisse)* } Gerarchia dei Task: Disegnare Triangolo Disegnare linea Colorare Definire lunghezza Selezionare tipo linea Scegliere colore Definire posizione Csm(i) Point(x,y) Psm(x,y) Csm(i) Scegliere tipo di colorazione Riempimento uniforme Riempimento a macchie Notare che, non potendo rappresentare l’iterazione, le due gerarchie di task sembrano simili. Alternativa: disegnare forma triangolo, decomposto in task elementari Csm(i) (pannello) Csm(i) Interno Ellisse Csm(i) (pannello) Csm(i) Interno Ellisse Grammatica: Σ: { csm(i) , point(x,y) , psm(x,y) } V:{ <disegnale ellisse>,<disegnare forma ellisse>,<colorare>,<scegliere forma>,<definire posizione>,<definire dimensione>,<scegliere colore>,<scegliere tipo colorazione>,<riempimento uniforme>,<riempimento a macchia> } P:{ <discegnare triangolo > <disegnare forma linea>+ <disegnare forma linea >+ <disegnare forma linea >+<colorare> <disegnare forma linea> <scegliere tipo linea> + <definire posizione> + <definire dimensione> <colorare> <scegliere colore> + <scegliere tipo di colorazione> <scegliere tipo di colorazione> <riempimento uniforme> + <riempimento a macchie> <scegliere forma> csm(linea) <definire posizione> point(vertice superiore sinistro) <definire dimensione> psm(vertice basso a destra) <scegliere colore> csm(rosso) | csm(verde) | … <riempimento uniforme> csm(pannello) + csm(interno figura triangolo) <riempimento a macchie> csm(pannello) + csm(interno figura triangolo)* } Si, ma le cose sono più semplici se si rappresenta la continuità nel disegno della forma Esercizio 5.2 1 cancellare un carattere per volta di una stringa di lunghezza 5 = ‘ Corso ’ 2 isolando la parola col mouse e poi usando il tasto cancella 1) Tm :pensare al metodo da applicare = 1.4 sec + Th: portare la mano sul mouse= 0.4 sec + Tp: puntare con mouse dopo la parola ‘ corso ’ = 1.1 sec + Tc: clicco sul tasto sinistro del mouse per posizionare il cursore = 0.2 sec + Tk: battere 5 volte il tast |back| = 40 sec about =______43.1 sec ; N.B. Siccome il tasto premuto è sempre lo stesso, ho calcolato solo il tempo per ritrovare il tasto di Back. 2) Tm :pensare al metodo da applicare = 1.4 sec + Th: portare la mano sul mouse= 0.4 sec + Tp: puntare con mouse dolo la parola ‘ corso ’ = 1.1 sec + Tc: clicco sul tasto sinistro del mouse per posizionare il cursore = 0.2 sec + Ts: seleziono la parola per cancellare = 3 sec + Tk: battere il tasto |Canc| = 40 sec =______46.1 sec ; Conclusione : E’ più conveniente il primo metodo! Nota: è sempre più conveniente, indipendentemente dalla lunghezza della stringa da cancellare? Esercizio 5.5 Ecco la corrispondente in UAN: ( A ( C || D ) ) | ( B E ). Begin Esercizio 5.6 …oppure Expert(User) End RP: Invio Esercizio 5.7 Considero il Software Microsoft Outlook Express Invio CSM(Invio) RP: Scrivo Messaggio Invio E-MAIL CSM(new Mail) Digito lettera ? RP: Scrivo destinatario Finestra di composizione messaggio CSM (interno a textArea) CSM(Input Text destinatario) Indirizzo E-Mail Destinatario Compongo il testo Digito lettera ? Digito lettera discutere… Descrizione: Nel momento in cui clicco sul pulsante ‘Nuovo’, si apre una finestra di messaggio in cui posso inserire un testo oppure un indirizzo a cui inviare l’E-mail. I due task possono essere eseguiti secondo una indipendenza d’ordine. Begin Scrivo messaggio Scrivo destinatario Invio end Nota: secondo questa RP, bisogna aver terminato uno dei due task per poter eseguire l’altro: è così in Outlook? Se così non è, come si può modificare la rete? Esercizio 5.8 Taglia :Attivazione condizionata; Begin Cond(P0) Oggetto selezionato CSM (Pulsante Taglia ) Elemento Tagliato End Da discutere Divieto di Accesso alla rete, con messaggio di errore, in caso di connessione interrotta; Begin Connesso alla rete Finestra di connessione CSM(connetti) Connesso Connessione interrotta CSM(pulsante Ok) CSM(pulsante Disconnetti) Da discutere End Disegno un rettangolo colorato Esercizio 5.10 Rettangolo Begin Colore Pannello CSM(figura rettangolo) CSM (colore scelto) Colore scelto CSM( point _alto Sx ) CSM(Pannello) CSM( point_basso Dx ) CSM (rettangolo) Rettangolo disegnato end Begin Ellisse Colore Pannello CSM(figura ellisse) CSM (colore scelto) Colore scelto CSM( point _alto Sx ) CSM(Pannello) Conclusione : CSM( point_basso Dx ) CSM (ellisse) Ellisse disegnata end Fra i due Task disegna rettangolo e disegna ellisse vi è una perfetta consistenza funzionale, perché le loro reti di Petri sono identiche.