Compito Scritto di Ingegneria del Software. 9 aprile Parte teorica, punti 14. Tempo a disposizione: 1 ora

Documenti analoghi
Compito Scritto di Ingegneria del Software. 13 luglio Parte teorica, punti 14

Ingegneria del Software II 22 Dicembre 2011 Parte teoria, punti 14 - Tempo a disposizione: 1h

Compito Scritto di Ingegneria del Software. 22 luglio Parte teorica, punti 14. Tempo a disposizione: 1 ora

Compito Scritto di Ingegneria del Software. 11 marzo Parte teorica, punti 14. Tempo a disposizione: 1 ora

Compito Scritto di Ingegneria del Software. 15 marzo 2010 punti 32. Tempo a disposizione: 2h30m

Compito Scritto di Ingegneria del Software. 10 gennaio Parte teorica, punti 14. Tempo a disposizione: 1 ora

Compito Scritto di Ingegneria del Software. 12 settembre Parte teorica, punti 14

Ingegneria del Software II 12 Gennaio 2012 Parte teoria, punti 14 - Tempo a disposizione: 1h

Compito Scritto di Ingegneria del Software. 9 aprile Parte teorica, punti 14. Tempo a disposizione: 1 ora PUNTI 7

Esercizi Esame. Esercizio 1. Soluzione. Esercizio 2

Università degli Studi di Ferrara Facoltà di Ingegneria Corso di Ingegneria del Software (IIa parte) - Prova scritta

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1

Istruzioni di Ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Istruzioni di ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Esercizio 1: parole nel testo

Manualistica 3 Le strutture di controllo

Laboratorio di informatica Ingegneria meccanica

AUTOMAZIONE INDUSTRIALE. 16 dicembre Cognome Nome Matricola Corso integrato

Dal linguaggio macchina al linguaggio C

Elementi DI INFORMATICA. Linguaggio C

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Scritto di Ingegneria del Software II. 22 Giugno 2006 (durata 2 ore Punti 32/30)

Laboratorio di informatica Ingegneria meccanica

Manualistica 3 Le strutture di controllo

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Strutture dati complesse. Vettori. Tipi di dato strutturati. Strutture dati complesse nome fulvio. Esigenze. Esigenze. dato

Esercizio 1: media di numeri reali (uso funzioni e struct)

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

AUTOMAZIONE INDUSTRIALE. 14 gennaio Cognome Nome Matricola Corso integrato

Passare argomenti al programma

Lezione 5: Controllo del flusso e costrutti avanzati

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Istruzioni Condizionali

Programmare. Compilatori e interpreti. Editor :: vi. Hello1.c. #include <stdio.h> >> cc Hello1.c. main() { printf( \n Hello World!

Le basi del linguaggio Java

Programmazione Procedurale in Linguaggio C++

PROGRAMMAZIONE EIA/ISO Macchine Utensili CNC

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Le strutture di controllo in C++

Strutture di Controllo

LB5 FUNZIONI cap. 7 del testo

Istruzioni Condizionali

Passaggio dei parametri

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Informatica/ Ing. Meccanica e Ing. Edile/ Prof. Verdicchio/ 16/07/2013 / Foglio delle domande / VERSIONE 1

Le strutture di controllo

For e do. Parte 4. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Istruzioni Condizionali in C

Informatica B Allievi Meccanici con cognome da Cl a L II prova intermedia del 13/02/01 Prof. Elisabetta Di Nitto

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome

Laboratorio di Informatica. Introduzione

Programmazione Appello d esame del 18 giugno 2010 Compito B

Istruzioni di Controllo in C. Emilio Di Giacomo

==,!=, >, <, >=, <= (a > 7), (b % 2 == 0), (x <= w) &&, (a > 7) && (b % 2 == 0)!(x >= 7) (a == 0)

For e do. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Strutture dati complesse. Tipi di dato strutturati Introduzione ai vettori Caratteristiche dei vettori

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C:

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Ingegneria del software

Compito Scritto di Ingegneria del Software. 17 settembre Parte teorica, punti 14. Tempo a disposizione: 1 ora

Dal linguaggio macchina al linguaggio C

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

Laboratorio di programmazione

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Introduzione al C. Unità 10 Preprocessore

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Procedure e funzioni A. Ferrari

Laboratorio di Informatica

Istruzioni di controllo

Aritmetica dei puntatori

Istruzioni Condizionali

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012

Programmazione in C. La struttura del programma Variabili, espressioni, operazioni

Qualsiasi programma in C++ segue lo schema:

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande / VERSIONE 1

I costrutti del C. Le Strutture del C. Il costrutto if else (I) Il costrutto if else (II) Condizionali. if-else (else if) switch Iterative

PARTE

Fondamenti di Informatica

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Istruzioni decisionali

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Strutture di Controllo Iterative: Istruzioni While e Do

del Linguaggio C Istruzioni di iterazione

Descrizione di un algoritmo

FUNZIONI. Esempi (pseudo-c): dare un nome a una espressione rendere tale espressione parametrica. float f(){ * sin(0.75); } float f1(int x) {

AUTOMAZIONE INDUSTRIALE. 19 dicembre Cognome Nome Matricola Corso integrato

Strategie di programmazione

Linguaggio C. Esercizio 1

Transcript:

Compito Scritto di Ingegneria del Software 9 aprile 2010 Parte teorica, punti 14 Tempo a disposizione: 1 ora Esercizio 4 Si descrivano le qualità esterne del prodotto software. PUNTI 7 Esercizio 5 Si definiscano i principi di implementazione ed interfaccia di un modulo, descrivendone le relative prassi di buona progettazione. PUNTI 7

Compito Scritto di Ingegneria del Software 9 aprile 2010 Parte pratica, punti 18 Tempo a disposizione: 1 ora e mezza Esercizio n. 1 Modellare con una rete di Petri un sistema di controllo di un tornio. Il tornio può essere in tre stati: spento, rotante con velocità V1 e rotante con velocità V2. Il pannello dei comandi del tornio ha un pulsante che, quando premuto, fa passare il tornio fermo alla rotazione con velocità V1, fa passare il tornio in rotazione con velocità V1 alla rotazione con velocità V2 e ferma il tornio in rotazione con velocità V2. Il tornio è dotato di un lampeggiante che è attivo solo quando il tornio è in movimento. Inizialmente il tornio è fermo e il lampeggiante è spento. PUNTI 5 Esercizio n. 2 Si dia una specifica in Z di un officina meccanica. L officina contiene n macchine utensili che possono fare lavorazioni di tipo 1 o 2 (non contemporaneamente). La lavorazione di un pezzo su una macchina richiede un ora. Si supponga che siano disponibili 24 slot da un ora in una giornata per ogni macchina, numerati da 1 a 24. Si supponga che i pezzi siano numerati con un codice intero. Si modelli le operazioni di prenotazione e di esecuzione delle lavorazioni in una giornata. Si modellino in Z le seguenti operazioni: 1) introduzione di un nuovo pezzo nel sistema: dato un codice, questo viene aggiunto all elenco del pezzi dell officina. L operazione fallisce se il pezzo è già presente. 2) prenotazione di uno slot su una macchina: dato il codice di un pezzo, il tipo di lavorazione e l ora, si aggiunga una prenotazione se esiste una macchina libera. Si restituisca il numero della macchina. Si ritorni errore se non ci sono macchine disponibili. 3) cancellazione di una prenotazione: dato il codice di un pezzo e il tipo di lavorazione, si rimuova la prenotazione corrispondente. Si ritorni errore se nessuna prenotazione per quel pezzo e per quella lavorazione è presente. 4) fine della lavorazione: data un ora, si rimuovano tutte le prenotazioni in quell ora su tutte le macchine. PUNTI 7

Esercizio n.3 Si disegni il flusso di esecuzione e si esegua l analisi di flusso, per mezzo di espressioni regolari, per le variabili del seguente programma. Si individuino inoltre eventuali sequenze non corrette di operazioni e, per ognuna, almeno un caso di test che porti alla sua esecuzione. #include<stdio.h> int main (void) { int a, b = 0, c; scanf("%d", &a); while (a > 0){ a = a - b; b = b + 1; if (a <= 0) c = a / b; } b = a - 1; printf("%d\n", b + c * 2); return 0; } PUNTI 6

Soluzione Esericzio 1 Esercizio 2 Tipi definiti dall'utente: [Ore, Macchine, Lavorazione] Ore = 0..24 Macchine=1..n Lavorazione=1..2 Variabili che descrivono lo stato del sistema: 1) prenotazioni è una funzione che associa a una macchina e a un ora un codice di pezzo e una lavorazione; 2) pezzi è l insieme dei pezzi Officina prenotazioni: Macchine Ore Lavorazione pezzi: ran prenotazioni pezzi

Officina pezzi = prenotazioni = Success rep!: Report rep! = 'Okay' 1) introduzione di un nuovo pezzo nel sistema NuovoPezzo pezzo? pezzi pezzi = pezzi {pezzo?} prenotazioni = prenotazioni PezzoGiàPresente rep!: Report pezzo? pezzi rep! = Pezzo già presente Introduzione NuovoPezzo Success PezzoGiàPresente

2) prenotazione di uno slot su una macchina PrenotazioneSlot lavorazione?: Lavorazioni macchina!: Macchine (macchina!,ora?) dom prenotazioni prenotazioni = prenotazioni {(macchina!,ora!) pezzo?, lavorazione?)} NessunaMacchinaLibera macchina: Macchine (macchina,ora?) dom prenotazioni rep! = Nessuna macchina libera VenditaSenzaCarta PrenotazioneSlot Success NessunaMacchinaLibera

3) cancellazione di una prenotazione Cancellazione Offcina lavorazione?: Lavorazioni macchina?: Macchine (macchina?,ora?) pezzo?,lavorazione?) prenotazioni prenotazioni = prenotazioni {(macchina?,ora?) pezzo?,lavorazione?) } PrenotazioneNonPresente Offcina lavorazione?: Lavorazioni macchina?: Macchine rep!: Report (macchina?,ora?) pezzo?,lavorazione?) prenotazioni rep! = Prenotazione non presente CancellazionePrenotazione Cancellazione Success PrenotazioneNonPresente 4) fine della lavorazione: data un ora, si rimuovano tutte le prenotazioni in quell ora su tutte le macchine. Fine Offcina (macchina?,ora?) pezzo?,lavorazione?) prenotazioni prenotazioni = prenotazioni {macchina: Macchine (macchina,ora?) dom prenotazioni (macchina,ora?) prenotazioni macchina,ora?) } FineLavorazione Fine Success

1. #include<stdio.h> 2. int main (void) { 3. int a, b = 0, c; 4. scanf("%d", &a); 5. while (a > 0){ 6. a = a - b; 7. b = b + 1; 8. if (a <= 0) 9. c = a / b; 10. } 11. b = a - 1; 12. printf("%d\n", b + c * 2); 13. return 0; 14. } a b c 3 a ad a 4 d 5 u 6 ud u 7 ud 8 u 9 u u d 11 u d 12 u u Le espressioni regolari delle variabili a,b,c sono: a: a d u( ud u(u+ε) u)* u b: ad ( u ud (u+ε) )* d u c: a ( (d+ε) )* u

La variabile c potrebbe essere usata senza essere definita. Questo accade in due casi: 1. Se il ciclo while non viene mai eseguito (condizione a>0 falsa), quindi per a<=0 inserita dall'utnte. 2. Se il ciclo while finisce senza che sia mai stata vera la condizione dell'if. Questo però non accade mai, perché la condizione di uscita del ciclo (che sia falso a>0, quindi a<=0) implica la verità della condizione dell'if.