********************************** ********* Sol es. 1 ************* ******** da verificare ********* ********************************** def insertData(): try: x1 = float(raw_input("inserisci la x del vertice in basso a sx:")) # print x1 y1 = float(raw_input("inserisci la y del vertice in basso a sx:")) # print y1 x2 = float(raw_input("inserisci la x del del vertice in alto a dx:")) # print x2 y2 = float(raw_input("inserisci la y del del vertice in alto a dx:")) # print y2 return [x1,y1,x2,y2] except: print("ricontrolla i dati inseriti") insertData() #[x1,y1,x2,y2] = insertData() def checkQuadrato(x1,y1,x2,y2): if x1>x2 or y1>y2: print "le coordinate non corrispondono a" \ "basso sx e alto dx, dovresti riavviare e reinserire" #insertData() return 0 elif x2-x1 != y2-y1: print "le coordinate non corrispondono a " \ "lati di un quadrato, dovresti riavviare e reinserire" #insertData() return 0 return 1 #checkQuadrato(x1,y1,x2,y2) def calcoli(x1,y1,x2,y2): from math import sqrt dx = x2-x1 dy = y2-y1 diag = sqrt(dx*dx+dy*dy) area = dx*dy print "lato = ", dx, "d = ", diag, "area = ", area return area def dueQuadrati(): flag =0 while not flag: print "primo quadrato" [xa1,ya1,xa2,ya2] = insertData() flag = checkQuadrato(xa1, ya1, xa2, ya2) flag = 0 while not flag: print "secondo quadrato" [xb1,yb1,xb2,yb2] = insertData() flag = checkQuadrato(xb1,yb1,xb2,yb2) area1 = calcoli(xa1,ya1,xa2,ya2) area2 = calcoli(xb1,yb1,xb2,yb2) if area1 == area2: print "le aree coincidono e valgono", area1 else: print "le aree non coincidono" dueQuadrati() ********************************** ********* Sol es. 2 ************* ********************************** Occorre prima individuare le tabelle necessarie alle varie risposte 1) Il nome delle sale e' in SALE select distinct Nome from SALE where citta = 'Cagliari' 2) Titolo, anno produzione e regista sono in FILM select Titolo from FILM where regista='Pino Pani' and AnnoProduzione>1960 3- Il titolo e regista dei film di fantascienza giapponesi o italiani prodotti dopo il 1980 sono in FILM select Titolo, Regista from FILM where AnnoProduzione> 1980 and Genere='fantascienza' and (Nazionalità='italiana' or Nazionalità=giapponese') 4) occorre prima trovare il regista di notte gialla da FILM, e poi i suoi film. Si puo' fare annidato o con join e selezione trovo il regista select distinct Regista from FILM where Titolo='Notte Gialla' poi annido usando questo risultato per trovare i suoi film: select Titolo from FILM where Regista = (select distinct Regista from FILM where Titolo='Notte Gialla') Altrimenti: select distinct from f.FILM as f, FILM as r where r.Titolo='Notte Gialla' and f.Regista = r.Regista 5) titolo e genere sono in FILM mentre Citta e' in SALE che non anno attributi in comune. Si collegano tramite PROIEZIONI che contiene anche la DataProiezione con prodotto cartesiano FILE*PROIEZIONI*SALE select distinct f.Titolo f.Genere from FILE f, PROIEZIONI p, SALE s where f.CodFilm = p.CodFilm and p.CodSala = s.CodSala and s.Citta = 'Cagliari' and p.DataProiezione = 2004 6- I nomi delle sale di Cagliari in cui nel 2004 è stato proiettato un film con l’attore “Gino Ghiani” servono SALE, PROIEZIONE, RECITA, ATTORI, FILM selec distinct s.Nome from SALE s, PROIEZIONE p, RECITA r, ATTORI a, FILM f, where a.Nome = 'Gino Ghiani' and p.DataProiezione = 2004 and s.Citta = 'Cagliari' and r.CodAttore = a.CodAttore and f.CodFilm = r.CodFilm and s.CodSala = p.CodSala 7- Il numero dei film proiettati a Cagliari l’anno 2004 occorre contare per film di cagliari e anno 2004, servono SALE, PROIEZIONI, FILM select count(f.CodFilm) from SALE s, PROIEZIONI p, FILM f where s.Citta = 'Cagliari' and s.CodSala = p.CodSala and p.CodFilm = f.CodFilm and p.DataProiezione = 2004 group by f.CodFilm SCHEMA RELAZIONALE : ATTORI (CodAttore, Nome, AnnoNascita, Nazionalità); RECITA (CodAttore*, CodFilm*) FILM (CodFilm, Titolo, AnnoProduzione, Nazionalità, Regista, Genere) PROIEZIONI (CodProiezione, CodFilm*, CodSala*, Incasso, DataProiezione) SALE (CodSala, Posti, Nome, Città) Scrivere le interrogazioni SQL che restituiscono le seguenti informazioni: (da 1 a 7)