Anteprima
Vedrai una selezione di 9 pagine su 36
Prove esame svolte Fondamenti di informatica Pag. 1 Prove esame svolte Fondamenti di informatica Pag. 2
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Prove esame svolte Fondamenti di informatica Pag. 6
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Prove esame svolte Fondamenti di informatica Pag. 11
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Prove esame svolte Fondamenti di informatica Pag. 16
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Prove esame svolte Fondamenti di informatica Pag. 21
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Prove esame svolte Fondamenti di informatica Pag. 26
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Prove esame svolte Fondamenti di informatica Pag. 31
Anteprima di 9 pagg. su 36.
Scarica il documento per vederlo tutto.
Prove esame svolte Fondamenti di informatica Pag. 36
1 su 36
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Corso di Laurea in Ingegneria Informatica

Prova scritta di Fondamenti di informatica I

6 settembre 2022

Tempo a disposizione: 2 ore

Esercizio 1

Si consideri il seguente programma Python:

def f(a):
    z = 0
    for x in range(len(a)//2):
        y = len(a)-x-1
        if a[x][x] != a[y][y] or a[y][x] != a[x][y]:
            return False
        z += a[x][x] + a[y][y]
        z -= a[y][x] + a[x][y]
    return z == 0

m = [ [3, 9, 3, 2, 2],
      [9, 0, 2, 1, 6],
      [4, 2, 9, 4, 3],
      [2, 1, 2, 0, 6],
      [2, 9, 3, 8, 3] ]

print(f(m))

Si descriva sinteticamente la funzione svolta dal programma, si mostri la traccia d'esecuzione e l'output prodotto.

Esercizio 2

Si scriva una funzione codifica_lista che riceve una lista a e restituisce una lista che contiene tutti i valori distinti di a seguiti dal numero delle loro occorrenze.

Esempio: Se a = [1,2,3,4,1,1,2,3,5,4,5,2,8], codifica_lista(a) restituisce [1,3,2,3,3,2,4,2,5,2,8,1] perché il valore 1 compare 3 volte, il valore 2 compare 3 volte, il valore 3 compare 2 volte, il valore 4 compare 2 volte, ecc.

Corso di Laurea

in Ingegneria Informatica

Prova scritta di Fondamenti di informatica I6 settembre 2022

Tempo a disposizione: 2 ore

Esercizio 3

Si vuole realizzare un'applicazione per l'analisi dei voti delle elezioni comunali. Ogni cittadino può votare secondo una delle seguenti modalità:

  1. mettendo una croce sul nome di un candidato sindaco - in questo caso, il voto viene attribuito solo al candidato;
  2. mettendo una croce su una lista elettorale - in questo caso, il voto viene attribuito sia alla lista elettorale che al candidato sindaco appoggiato da quella lista;
  3. tramite voto disgiunto mettendo una croce sul nome di un candidato sindaco e una croce sul simbolo di una lista elettorale che appoggia un candidato diverso - in questo caso, viene attribuito un voto al candidato sindaco e un voto alla lista.

I voti sono memorizzati in una matrice V avente 3 colonne, in cui la generica riga [candidato, lista, seggio] indica che un cittadino ha votato nel seggio

seggio secondo una delle tre modalità sopra elencate. Si noti che se lista='' allora il cittadino ha votato secondo la modalità (1) e se candidato='' allora il cittadino ha votato secondo la modalità (2). Le liste elettorali che appoggiano i singoli candidati sono memorizzate in un dizionario D in cui ad ogni candidato sindaco è associata la lista delle liste elettorali.

Si scriva un modulo Python che metta a disposizione (almeno) le seguenti funzioni:

  1. spoglio(V,D) che restituisce un dizionario in cui ad ogni candidato è associato il numero dei voti ricevuti.
  2. seggi_simili(V,D,s1,s2), che restituisce True se e solo se nei seggi s1 ed s2 la maggior parte dei voti sono andati allo stesso candidato sindaco, False altrimenti.
  3. statistiche(V,D,cand), che restituisce un dizionario in cui ad ogni seggio è associato il numero dei voti ricevuti dal candidato sindaco cand.
  4. seggi_sindaco (V,D), che restituisce la lista dei seggi in

cui il candidato vincitore ha ricevuto voti, ordinata in maniera decrescente in base al numero di voti ricevuti in ciascun seggio.

'Rossi' '' 1

Chiave Valore

Esempio: Se V = e D ='' 'lista_A' 1 'Rossi' ['lista_A', 'lista_B']'' 'lista_A' 2 'Verdi' ['lista_C']'' 'lista_B' 3 'Neri' ['lista_D']'Verdi' '' 4'Verdi' 'lista_D' 2'Neri' '' 3'Neri' 'lista_C' 1'Verdi' '' 2'Neri' '' 3'Rossi' '' 2'Rossi' '' 2allora: Chiave Valore

• spoglio(V,D) restituisce il dizionario: 'Rossi' 6'Verdi' 3'Neri' 3

Si noti che al candidato a sindaco Rossi vengono attribuiti anche i voti assegnati, nei seggi 1, 2, e 3, alle liste A e B che lo sostengono (è importante che in

tali voti non sia stato indicato un altro candidato, cioè non siastato usato il voto disgiunto, altrimenti non gli sarebbero stati attribuiti)

  • seggi_simili(V,D,1,2) restituisce True perché nei seggi 1 e 2 la maggior parte dei voti (2 su 3 al seggio 1 e 3su 5 al seggio 2) sono andati allo stesso candidato sindaco (Rossi).
  • Chiave Valorestatistiche(V,D,'Verdi') restituisce il dizionario: 1 02 23 04 1
  • seggi_sindaco(V,D) restituisce la lista [2, 1, 3] perché il candidato vincitore (che come si può osservare dallospoglio è il candidato Rossi) ha ottenuto 3 voti al seggio 2, 2 voti al seggio 1 ed 1 voto al seggio 3.

Corso di Laurea in Ingegneria Informatica

Prova scritta di Fondamenti di informatica I – Traccia A8 febbraio 2022

Tempo a disposizione: 2 ore

Esercizio 1

Si consideri il seguente programma Python:

def f2(m,e):
    z = 0
    for i in range(len(m)):
        for j in range(len(m)):
            if m[i][j] == e:
                z += 1
    if z == 2:
        return True
    return False
```html

f1(m,n):

q = 0
for i in range(len(m)):
    for j in range(len(m)):
        e = m[i][j]
        if f2(m,e) and e > q:
            q = e
return q == n

m = [ [1,2,1,6],[2,5,2,2],[4,1,7,3],[3,8,2,1] ]

n = int(input('Inserisci un numero: '))

print(f1(m, n))

Si descriva sinteticamente la funzione svolta dal programma e, in particolare, si mostri la traccia d'esecuzione e si determini un valore da inserire in input affinché l'output prodotto sia True.

Esercizio 2

Si scriva una funzione verifica_lista che riceve in ingresso una lista L di stringhe ed un intero k. Si assuma che la lista L abbia lunghezza maggiore di k. La funzione restituisce True se e solo se ogni stringa in L avente k stringhe successive non ha lettere in comune con tali stringhe.

Esempio: Se L = ['abcd', 'efgh', 'ijk', 'ab', 'cdef'], allora verifica_lista(L,2) restituisce True perché:

  • 'abcd' non ha lettere in comune con 'efgh' e 'ijk';
  • 'efgh' non ha lettere in comune con 'ijk' e 'ab';
  • 'ijk' non ha lettere in comune con 'ab' e 'cdef';
  • 'ab' non ha lettere in comune con 'cdef';
  • 'cdef' non ha lettere in comune con nessuna delle stringhe successive.
```

'efgh' non ha lettere in comune con 'ijk' e 'ab';• 'ijk' non ha lettere in comune con 'ab' e 'cdef'.

Corso di Laurea in Ingegneria Informatica

Prova scritta di Fondamenti di informatica I – Traccia A8 febbraio 2022

Tempo a disposizione: 2 ore

Esercizio 3

Si vuole realizzare un'applicazione per la gestione delle informazioni riguardanti le consegne effettuate da diverse filiali di un corriere. L'applicazione memorizza i dati relativi alle consegne utilizzando una matrice M avente 4 colonne, in cui la generica riga [filiale, data, prezzo, data_prevista] rappresenta il fatto che la filiale filiale ha effettuato una consegna in data data, che il cliente ha pagato per la consegna il prezzo prezzo e che la data prevista per la consegna era data_prevista. Per semplicità, sia le date che i prezzi sono rappresentati mediante numeri interi.

I dati relativi alle filiali sono memorizzati in un dizionario D in cui ad

ogni filiale è associata la città in cui essa opera. Il ritardo di una consegna è dato dalla differenza tra la data prevista e la data in cui la consegna è stata effettuata. Il ritardo complessivo di una filiale è dato dalla somma dei ritardi delle consegne effettuate dalla filiale. Si scriva un modulo Python che metta a disposizione (almeno) le seguenti funzioni: 1. filiali_ritardatarie(M), che restituisce la lista delle filiali che hanno il massimo ritardo complessivo. 2. statistiche_citta(M,D), che restituisce un dizionario in cui ad ogni città è associato il prezzo totale pagato per le consegne effettuate dalle filiali che operano in quella città. 3. filiale_migliore(M,f), che restituisce una filiale fm che soddisfa entrambe le seguenti condizioni: a. il ritardo complessivo della filiale fm è minore o uguale al ritardo complessivo della filiale f; b. il prezzo totale pagato per le consegne effettuate dalla filiale fm è

maggiore del prezzo totalepagato per le consegne effettuate dalla filiale f.

Nel caso in cui più di una filiale soddisfi le condizioni, la funzione ne restituisce una qualsiasi.

Nel caso in cuinessuna filiale soddisfi le condizioni, la funzione restituisce una stringa vuota.

4. citta_limitate(M,D,d,k), che restituisce la lista delle città le cui filiali, fino alla data d inclusa, hannocomplessivamente effettuato meno di k consegne.

'Filiale A' 10 5 8 Chiave Valore

Esempio: Se M = e D ='Filiale B' 12 10 12 'Filiale A' 'Cosenza'

'Filiale C' 6 5 4 'Filiale B' 'Rende'

'Filiale D' 4 5 4 'Filiale C' 'Reggio Calabria'

'Filiale E' 8 10 7 'Filiale D' 'Rende'

'Filiale F' 6 15 5 'Filiale E' 'Catanzaro'

'Filiale A' 10 10 9 'Filiale F' 'Catanzaro'

'Filiale B' 11 5 11'Filiale C' 6 5

5'Filiale D' 11 10 10allora:
• filiali_ritardatarie(M) restituisce la lista ['Filiale A', 'Filiale C'] perché tali filiali hanno il massimo ritardocomplessivo (3).
Chiave Valore
• statistiche_citta(M,D) restituisce il dizionario 'Cosenza' 15 'Rende' 30 'Reggio Calabria' 10 'Catanzaro' 25
• filiale_migliore(M,'Filiale E') restituisce 'Filiale D' perché:
o il ritardo complessivo della filiale 'Filiale D' (1) è minore o uguale al ritardo complessivo della filiale 'Filiale E' (1);
o il prezzo totale pagato per le consegne effettuate dalla filiale 'Filiale D' (15) è maggiore del prezzototale pagato per le consegne effettuate dalla filiale 'Filiale E' (10).
• citta_limitate(M,D,10,2) restituisce la lista ['Rende'] perché le sole filiali di Rende, fino alla data 10 inclusa, hanno

effettuato meno di 2 consegne (una consegna, effettuata dalla filiale 'Filiale D').

Corso di Laurea in Ingegneria Informatica

Prova scritta di Fondamenti di informatica e laboratorio - Modulo 1

12 settembre 2016

Tempo a disposizione: 2 ore

Cognome e nome:

Matricola:

Corso:

Esercizio 1

Si consideri il seguente programma Python:

def f1(x):
    for i in range(len(x)-1):
        a = f2(x,i+1)
        if x[i] > a:
            return False
    return True

def f2(x,i):
    a = x[i]
    for j in range(len(x)-1,i,-1):
        if x[j] < a:
            a = x[j]
    return a

a = [2,3,7,8,5,11,15,16]
print(f1(a))

Si descriva sinteticamente la funzione svolta dal programma e, in particolare, si mostrino la traccia d'esecuzione e l'output prodotto.

Dettagli
Publisher
A.A. 2022-2023
36 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Giuslay di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università della Calabria o del prof Scarcello Francesco.