Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Fondamenti di informatica, Python, Schemi e mappe concettuali di Fondamenti di informatica

Programmazione base e funzioni. Hardware e software, linguaggio sql

Tipologia: Schemi e mappe concettuali

2022/2023

In vendita dal 20/12/2023

Gioia20
Gioia20 🇮🇹

4

(1)

10 documenti

1 / 43

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Python
Commandi
Stampa a video print(“ Ciao! ”)
Commento #ciao o “”ciao”” (non contiene istruzioni dell’algoritmo)
Esempio
# scrivere un programma che riceva da tastiera due valori interi e stampi su video
la loro somma
>>>print("\nInserire due valori interi da sommare:\n")
>>>a=int(input("Inserire il primo valore:"))
>>>b=int(input("Inserire il secondo valore:"))
>>>somma= a+b
>>>print(a,”+",b,"=",somma)
Istruzione che legge valori inseriti da tastiera Input()
La funzione int() che ingobba input() serve per precisare che i dati letti vanno inseriti come
interi
Somma + , differenza - , divisione / , prodotto *
Uguaglianza == , disuguaglianza !=
Se i valori interi vanno espressi come booleani ( 0 false, 1 true) si utilizzano gli operatori
and, or, not
Esercizio
#riceva da tastiera il valore intero del lato di un quadrato e ne stampi a video l'area e il
perimetro
>>>print("\nCalcola l'area e il perimetro del quadrato\n")
>>>l=int(input("Inserisci il valore del lato:"))
>>>area=l*l
>>>perimetro=l*4
>>>print("\nL'area é:",area)
>>>print("\nIl perimetro è:",perimetro)
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b

Anteprima parziale del testo

Scarica Fondamenti di informatica, Python e più Schemi e mappe concettuali in PDF di Fondamenti di informatica solo su Docsity!

Python

Commandi

  • Stampa a video^ print(“ Ciao! ”)
  • Commento^ #ciao^ o^ “”ciao””^ (non contiene istruzioni dell’algoritmo) Esempio

scrivere un programma che riceva da tastiera due valori interi e stampi su video

la loro somma >>>print("\nInserire due valori interi da sommare:\n") >>>a=int(input("Inserire il primo valore:")) >>>b=int(input("Inserire il secondo valore:")) >>>somma= a+b >>>print(a,”+",b,"=",somma)

  • Istruzione che legge valori inseriti da tastiera^ Input()
  • La funzione^ int()^ che ingobba^ input()^ serve per precisare che i dati letti vanno inseriti come interi
  • Somma^ +^ , differenza^ -^ , divisione^ /^ , prodotto^ *
  • Uguaglianza^ ==^ , disuguaglianza^ !=
  • Se i valori interi vanno espressi come booleani ( 0 false, 1 true) si utilizzano gli operatori and, or, not Esercizio #riceva da tastiera il valore intero del lato di un quadrato e ne stampi a video l'area e il perimetro >>>print("\nCalcola l'area e il perimetro del quadrato\n") >>>l=int(input("Inserisci il valore del lato:")) >>>area=ll >>>perimetro=l >>>print("\nL'area é:",area) >>>print("\nIl perimetro è:",perimetro)

Tipi di dati

  • Tipi semplici -Booleani -interi e reali -caratteri alfanumerici
  • Tipi iterabili -immutabili: stringhe(costituite da caratteri) e tuple (costituite da tipi semplice e/o iterabili) -mutabili: liste, dizionari (costituite da tipi semplice e/o iterabili)
  • L’operatore^ type()^ serve a verificare il tipo di una certa istanza - Conversione di tipo int( numero o stringa) es. int(3.55) -> 3 float(numero o stringa) es. float( 22 ) -> 22. str(tipo) es. str(99) -> “99” bool(tipo) es. bool(0) -> false

>>>print("\nLa circonferenza vale:",circonferenza) >>>print("\nL' area vale:”,area) Stringhe di caratteri: sequenza di caratteri, lettere, numeri, segni di interpunzione e caratteri speciali. In Python deve essere racchiusa da una coppia di virgolette doppie o singole. Es. “”ciao”” “ciao” “12 ; come va? \n\t”

- Nel calcolatore ogni carattere alfanumerico ha un suo codice ASCII, in Python risaliamo a esso tramite la funzione ord() , mentre il carattere corrispondente ad un certo codice viene dato tramite chr() Es. ord(“a”) -> 97 chr(97) -> a - Lettura di stringhe da tastiera -> funzione^ input()^ (Python 2) /^ raw_input()^ (python 3) Caratteri speciali Esercizio #scrivere un programma python che legga a video un carattere alfabetico minuscolo e stampi il corrispondente maiuscolo c=input("Digita un carattere minuscolo:\n") codice_c=ord(c) codice_C=codice_c- C=chr(codice_C) print("Il corrispondente maiuscolo di " + c + "é" + C + ".\n")

Indicizzazione delle stringhe I caratteri di ciascuna stringa sono indicizzati Es. >>>s=“ciao” >>>s[1] “i” >>>s[1:3] “ia” >>>s[1:] # dal carattere 1 a fine stringa “iao” Immutabilità dei caratteri di una stringa Una volta assegnata ad una variabile, non è possibile riassegnare il singolo carattere L’unico modo ad esempio per generare la stringa “miao” da “ciao” è concatenare >>> stringa= “m” + stringa[1:] Operazioni con le stringhe

  • Concatenazione “ciao” + “sono” + “Gioia\n”
  • Concatenazione iterativa numspazi = input(“Dimmi quanti spazi:\n”) “” * spazi + “Ciao!\n”

[4,11,2]

  • Il Python consente su un’unica riga di comando assegnamenti multipli Es: numero, stringa=1, “ciao”
  • L’operatore^ list()^ converte la stringa in una lista di stringhe formate dai singoli caratteri Es: >>>stringa="ciao" >>>lista=list(stringa) >>>print(lista) [“c", “i”, “a", “o”]
  • L’operatore^ str()^ trasforma la. Nostra lista in una stringa, incluse le parentesi quadre “[‘c’ , ‘i’ , ‘a’ , ‘o’]”
  • Gli elementi di una stringa e di una lista presentano affinità, ma la lista è più duttile Estrazione di sottostinghe/sottoliste i : j [ : h ]
  • (^) i indice iniziale
  • (^) j indice finale
  • (^) h passo (1 se omesso) Es. >>> s=“buonanotte” >>>s[ 2: 5 ] “ona” #l’indice finale è escluso Scorrere una lista (stringa) al contrario Si usano i valori negativi >>> l=[0,1,2,3,4,5,6,7,8,9] >>>l [-1] 9 >>>l [-1:-10:-1] #valora da l [-1] a l [-9] [9,8,7,6,5,4,3,2,1]

Metodo join di stringa s.join(l) -> concateniamo le stringhe di l usando s come elemento separatore tra esse Es. >>>s=“ ” l=[“ciao”, “come”,”stai?”] >>>s.join(l) “ciao come stai?” Esercizio #data una lista di caratteri l, generare una stringa ottenuta dalla concatenazione dei singoli caratteri >>>s="" >>>l=["c","i","a","o"] >>>print(“”.join(l)) ciao Operazioni su liste

Strutture di controllo Alterano il flusso di esecuzione sequenziale

  • (^) Condizionali
  • (^) Incondizionali Strutture di controllo condizionali Alterano il normale flusso sequenziale solo al verificarsi di una determinata condizione
  • (^) costrutto if : … else If condizione: # se la condizione è vera esegui le istruzioni indentate … [else: #altrimenti, se la condizione è falsa esigui le istruzioni indentate …] La parte else è facoltativa In questo costrutto il termine indicato come condizione è un espressione booleana che è interpretata come vera se il suo valore è diverso da 0, altrimenti falsa Condizione può essere espressa come: - (^) combinazione degli operatori booleani noti AND,NOT,OR di variabili booleane - (^) Espressioni di confronto determinate dal valore corrente assunto da variabili numeriche o caratteri - (^) Altre forme più complesse

Esempio #Scrivere un programma Python che, ricevendo da tastiera due valori interi, stampi su video qual è il maggiore tra essi >>>x=int(input(“Dammi un numero:”)) 6 >>>y=int(input(“Dammi un altro numero:”)) 4 >>>differenza=x-y 2 >>>print(“Il maggiore dei due numeri:”) >>>if differenza> maggiore=x >>>else maggiore=y >>>print(maggiore) 6 L’indentazione —> fondamentale in Python perché non solo rende leggibile il programma ma lo rende anche eseguibile #scrivere un programma Python che, ricevendo in ingresso un valore intero non negativo, compreso tra 0 e 33, stampi a video: -"valore non corretto" se non è compreso nell'intervallo -"hai passato l'esame" se il voto è compreso tra 21 e 33 -"dovrai sostenere l'orale " se l valore è tra 16 e 20 -"non hai passato l'esame" se il voto è uguale o minore a 15 >>>voto=int(input("Inserire un voto:")) >>>if ((voto<0)or(voto>33)): >>>print("Valore non corretto.\n") >>>else: >>>if((voto>20)and(voto<=33)): >>>print("Hai passato l'esame!\n") >>>else: >>>if((voto>=16)and(voto<=20)): >>>print("Dovrai sostenere l'orale\n") >>>else: >>>print("Non hai passato l’esame\n")

else: print("Mi sei indifferente”) Cicli o “loop”: il costrutto while Laddove è richiesto di ripetere-finché, in Python si adotta il costrutto while While (condizione): #finché la condizione è vera esegui le istruzioni indentate: #Scrivere un programma Python che, letto da tastiera un valore intero n, stampi su video, su righe diverse, i valori da 0 a n. n=int(input("Inserisci un numero:\n”)) # i= while (i<=n): #0<=3 si 1<=3 si 2<=3 si 3<=3 si 4<=3 no fine loop print(i) #0 1 2 3 i=i+1 #1 2 3 4 #scrivere un programma python che calcoli la media aritmetica di una sequenza di valori reali non nulli progressivamente letti da tastiera, finché non viene inserito uno zero valore=float(input("Inserisci un valore:")) n= media=0. while (valore!=0.0): n=n+ media=media+valore

valore=float(input("Inserisci un valore:")) if n>0: media=media/float(n) print("La media aritmetica è pari a " + str(media)) else: print("Nessun valore inserito”) Possiamo notare che ci sono due istruzioni di input, una prima del ciclo l’altra alla fine del corpo del ciclo. La prima istruzione inizializza una variabile con un valore che può essere controllato nella condizione del ciclo, la seconda istruzione accetta tutti gli altri valori di input, incluso quello che concluderà il ciclo. L’input deve essere accettato come stringa, non come numero, in modo che il programma possa controllare se l’utente ha digitato una stringa vuota. Se la stringa digitata non è vuota, il programma suppone che rappresento un numero e la converte in ius valore float. #scrivere un programma python che calcoli la media aritmetica di una sequenza di 20 valori reali non nulli progressivamente letti da tastiera n= i= media=0. while (i: #esegui le istruzioni indentate: Esempi: #iterazione su una lista con while i= while i>ranger(5) 14 Indici=range(len(lista)) for i in indici print(lista[i])

- (^) Modalità è una stringa di uno o due caratteri - “ w “ -> se il file è aperto in scrittura - “ r ” -> se è aperto in lettura - “ a “ -> se è aperto in modalità “append” , ovvero si vogliono aggiungere ai contenuti presenti nuovi contenuti scritti “in fondo” al file I. fp.close() - (^) è il metodo che chiude il file dopo che su esso sono state compiute le operazioni desiderate - (^) Un file va sempre chiuso al termine del suo utilizzo, se un file in scrittura non viene chiuso, nessuna modifica sarà salvata. Quando i dati vengono scritti su un file che è chiuso, tutti i dati precedentemente scritti nel file vengono cancellati Esempio

  • Sia dato il file di testo: 123 45 ciao Classe V 34.5 temperatura corporea
  • Dopo aver aperto il file in lettura ed aver assegnato f tramite open : s=f.readline()
  • s conterrà la stringa “123 45 ciao\n” #scrivere un programma che salva in un file "numeri.txt" l'insieme dei numeri naturali da 0 ad un numero n letto da tastiera. #i numeri salvati devono risultare su righe del file differenti. n=int(input("Inserisci un numero:")) f=open("numeri.txt","w") i= while (i<=n): f.write(str(i)) i=i+ f.close() #obbligatorio Scrivere numeri in un file Tipi di dati come numeri interi o decimali devono essere convertiti in stringhe prima di essere scritti in un file di output, utilizzando la funzione str. La fine del file
  • (^) in Python l’operatore readline() legge una riga e la restituisce come stringa.
  • (^) Se il file non ha più nulla restituisce il carattere vuoto “”. Ciò ci permette di creare una condizione di “fine file” in modo da leggere finché non arriviamo al termine, secondo lo schema: linea=f.readline() while linea!=“”: …istruzione da eseguire… linea=f.readline() File come tipo iterabile Il file in realtà è un identificatore iterabile. Il suo contenuto è tutto lo stream dati fino al carattere “a capo”. Esempio: leggere da file f aperto tutte le righe e memorizzarle in una lista l = [] for linea in f: l=l + [linea] print(l) Cosa succede in caso il file non esistesse La funzione open() , in caso di errore dovuto da errore di percorso o file inesistente, restituisce un valore speciale chiamato eccezione , ma normalmente interromperà l’esecuzione del programma. Per gestire questo particolare errore senza causare l’interruzione del programma si utilizza sempre, se richiesto, il formalismo: try: idFile = open(nomeFile, modalità_di_apertura) e xcept IOError: #IOError viene restituito in caso di mancata apertura ed è il nome dell’eccezione #istruzione da eseguire se l’apertura è fallita [else: #eventuali istruzioni esclusive] IOError viene restituito in caso di mancata apertura ed è il nome dell’eccezione. Altre tipologie di errore hanno diversi nomi di eccezione Esempio pratico: nome=input(“Inserisci il nome del file:”) unsuccess=True while unsuccess try: f=open(nome, “r”) except IOError #anche FileNotFoundError nome=input(“Nome file errato. \n Inserisci il nome del file: “) else: unsuccess=False Esempio con eccezioni differenti: Scrivere un programma che legga 5 stringhe ed inserisca in una lista solo quelle contenenti numeri interi Usare try-except-else per gestire eventuali errori occorrenti nel caso eval termini con errore:
  • (^) inserimento di una variabile non assegnata —> NameError
  • (^) Inserimento di un’espressione sintatticamente errata —> SyntaxError #Equivalente di l=f.realines()

Approccio Sandwich In generale è difficile seguire l’approccio Top-Down e Bottom-up in modo rigoroso in quanto:

  • (^) certe funzionalità possono risultare utili in un secondo momento
  • (^) Non si ha un’idea chiara di come il problema vada risolto nella sua integrità ma si è riusciti ad individuare alcune funzionalità di base Si preferisce un approccio ibrido che prende il nome di “sandwich”, in cui entrambe le strategie vengono condotte in parallelo. La convergenza delle due strategie porta alla soluzione del problema. Ma comunque in tutti i casi la capacità di scomporre il problema in problemi più semplici sia essenziale in quanto migliora la chiarezza del programma e attenua la “rigidità”. Individuazione delle funzionalità: esempio semplice
  • (^) leggi due valori da tastiera N e K —-> uso input
  • (^) Calcola M —-> calcola N! - Calcola (N-K)! - Calcola K!
  • (^) Stampa a video M —-> uso print Il calcolo del fattoriale è un’operazione ripetitiva, per ogni valore dovremo ripetere lo stesso codice ma con diverso valore di partenza

Funzioni Una funzione in Python è caratterizzata dalla seguente sintassi: def NOME_FUNZIONE( Lista_parametri): #seguono le istruzioni indentate rappresentanti il corpo della funzione, ovvero la soluzione del problema assolto da NOME_FUNZIONE … [ return Variabili_Risultato] #opzionale

- (^) Variabili_risultato corrisponde ad uno o più valori, separati da virgole, calcolato dalla funzione che ci si aspettano essere il risultato di interesse, come parametri in uscita, ovvero la rappresentazione della soluzione del sottoproblema. È espresso in forma numerica, di stringa, di lista, di dizionario o mista, seconda del problema. Nel caso in cui la soluzione sia “incorporata” nella funzione e non necessiti di essere rappresentata in uscita, return può essere omessa def NOME_FUNZIONE(Lista_parametri): #sequenza di istruzioni indentate rappresentante il corpo della funzione … **return Variabili_Risultato

  • NOME_FUNZIONE** identifica il sottoproblema che essa risolve - Lista_parametri è una lista di variabili che vengono fornite alla funzione ed eventualmente altre che la funzione fornisce Presenta la forma : Lista_parametri= NomeVariabile1, NomeVariabile2, …, NomeVariabileN, Parametri di ingresso —> variabili che vengono prestate alla funzione dall’esterno e vengono usate per calcolare l’uscita senza essere modificate Parametri di uscita —> variabili che fanno parte della soluzione del sottoproblema e quindi possono essere modificate dopo l’esecuzione dell’ultima istruzione della funzione - corpo della funzione è il codice che serve per risolvere il sottoproblema , che si servirà delle variabili nella Lista_parametri Chiamata a funzione Per chiamare una funzione è sufficiente seguire la sintassi [Var1 [ , Var2, …, VarN] =] NOME_FUNZIONE( Par1, Par2, …, ParM) Esempi:
  • La funzione f ( ) prevede in ingresso tre valori x, y, z e ne restituisce due. Possiamo scegliere di assegnare con l’espressione: u, v= f(x, y, z). Le variabili u e v conteranno i valori restituiti dalla funzione
  • Se scrivessimo solo u 0 f(x, y, z) la variabile u conterrebbe una tupla, con i due valori restituiti dalla funzione stessa
  • Se scrivessimo infine solo f(x, y, z) la funzione verrebbe avviata ma perderemo tutti i risultati dell’elaborazione, ovvero i due valori restituiti in uscita