Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

CICLI

Uso dei CONTATORI:

Un contatore è una variabile la quale viene inizializzata ad esempio a 0 num = 0

All’interno di ogni ciclo viene aumentato ad esempio di 1 num = num + 1 oppure num+=1

Viene usato all’interno di un ciclo, in modo che quando il contatore raggiunge un certo valore, il ciclo finsice.

WHILE

● La condizione è un’espressione booleana

● All’inizio1, la condizione viene valutata

● Se la condizione è vera, vengono eseguite tutte le istruzioni del corpo del ciclo

● Se la condizione è falsa, nessuna istruzione del corpo del ciclo viene eseguita

● Dopo l’ultima istruzione del ciclo, si ripete la valutazione della condizione

Solitamente la condizione riguarda un un contatore: es.

TRACE TABLE

La trace table è uno strumento molto utile per l’identificazione degli errori nei programmi (debugging).

Vi aiuta a comprendere come l’interpret python lavora. Provate a creare le trace table degli script che

scriverete. Vi richiederà un po’ di tempo, ma ne vale la pena.

Suggerimenti pratici:

- Create tante colonne quante sono le variabili del vostro script

- Simulate l’esecuzione delle istruzioni, un passo alla volta (non siate precipitosi)

VERIFICA DELLE CONDIZIONI

Dovrete controllare attentamente: - le istruzioni precedenti all’ingresso del ciclo

- la condizione del ciclo while

Le fasi più critiche sono: - L’ingresso nel ciclo

- L’uscita dal ciclo

Dopo aver scritto un ciclo . . . fate una verifica con un caso reale (es., trace table delle slide precedenti)

VARIABILI COMPLESSE: struttura dati

Una struttura dati è un modo per memorizzare, organizzare i dati e semplificarne l’accesso e la modifica.

Strutture dati possono essere classificate per:

• l’aggregazione dell’informazione

• la plasticità dell’informazione nel tempo

• l’omogeneità dell’informazione

Aggregazione:

● semplici= atomiche ed indivisibili

● complesse= aggregazione di elementi semplici in:

● insieme, elemen disordina

● sequenza, elemen ordina

● mappa, elemen con riferimento fisso

Plasticità nel tempo:

● statiche = organizzazione interna e dimensioni fisse (immutbili)

● dinamiche = organizzazione interna e dimensioni variabili (mutabili)

Omogeneità:

● omogenee = composte da elementi atomici aventi stesso tipo primitivo

● eterogenee = composte da elementi atomici aventi diverso tipo primitivo

Metodi

Alcuni tipi di variabile hanno funzioni predefinite chiamate metodi che possono essere applicate a loro istanze.

oggetto.metodo(parametri)

Oggetto = variabile su cui applicare il metodo

Metodo = nome della funzione da applicare all’oggetto

Parametri = eventuale lista di parametri da passare al metodo

Tipi variabili

Numeriche:

• int = identifica un numero intero Z

• long = identifica un numero intero di lunghezza “illimitata” Z

• float = identifica un numero reale R

• complex = identifica un numero complesso C

Logica:

• bool = identifica una variabile di tipo booleano {True; False}

LISTE

Una variabile di tipo semplice permette di memorizzare solamente un valore per volta. Una lista permette di

memorizzare più informazioni contemporaneamente.

Vantaggi delle liste rispetto all’uso delle variabili singole:

- gestione unitaria di informazioni tra loro collegate

- implementazione di operazioni ripetitive (semplificazione attraverso l’uso dei cicli )

Terminologia:

- Elementi = i valori che costituiscono la lista L = [1, 2, “c”, “d”, ..]

Gli elementi sono valori int, float o str

- Indice di una lista = In una lista ogni elemento è identificato da un indice numerico

Con la notazione nome_lista[ indice_numerico ] è possibile accedere ad un singolo elemento della lista,

utilizzando il corrispondente indice_numerico.

Il primo elemento (a partire da sx di una lista) è contraddistinto dall’indice 0, il secondo elemento è

contraddistinto dall’indice 1, l’indice numerico permette di definire un ordine tra gli elementi di una lista.

Print(lista[0]) stampa il primo valore

Print(lista[:5]) stampa tutti i valori prima della posizione 5

Lunghezza lista len(nome_lista)

Somma elementi lista

nome_lista = [a, b, c, d]

somma=0

i=0

while i < len(nome_lista)

somma = somma + nome_lista

i = i + 1

print(somma)

Cambio elemento E’ possibile assegnare un nuovo valore ad uno degli elementi già esistenti della lista.

Il comando nome_lista[indice]=nuovo_valore si può utilizzare per rimpiazzare elementi già esistenti.

Aggiungo elemento Per aggiungere posti vuoti in coda si può utilizzare il comando append, posso aggiungere

sia un valore che una variabile (che assume un determinato valore).

Cancellare un elemento del(lista[0])

Estendo lista aggiunge la lista2 in coda alla lista lista.extend(lista2)

Ordino lista lista.sort()

Operatore IN è un operatore booleano, controlla se un valore è presente in una lista.

.

Copia di liste

listaA=[1, 2, 3, 4] con l’uguale anche la listaB avrà gli stessi valori

listaB=listaA Se poi modifico listaB viene modificata anche listaA

listaB= list(listaA) prende i valori di listaA ma se poi modifico listaB, listaA non cambia.

OPERATORI TRA LISTE

+ concatena le liste * ripete una lista un certo numero di volte

(per creare lista con ad es. 10 elementi uguali)

NUMERO CASUALE

Genera un numero casuale nell’intervallo scelto.

Import random

Num_cas=random.randint(0,10)

STRINGHE

La stringa è una struttura dati complessa di tipo sequenza, statica ed omogenea.

E’ una sequenza di lettere e spazi. a=”testo”

a[4] restituisce la lettera che si trova nel posto 4 (5° lettera)

a[-1] restituisce l’ultima lettera della stringa

len(a) restituisce la lunghezza della stringa

Non posso mutare una lettera con un'altra come nella lista.

a[:5] restituisce le lettere fino alla postazione 5 (esclusa, solo le prime 5 lettere)

a[6:8] restituisce le lettere tra la postazione 6 e 8 (8 esclusa)

Es. scrivere una stringa in verticale

Operazioni tra stringhe:

a+b concatenazione delle stringhe a e b

*n ripetizione della stringa n volte

METODI PER STRINGHE

.upper() restituisce la stringa in maiuscolo

.find(stringToFind) Restituisce l’indice del primo carattere della prima occorrenza della stringa cercata

Restituisce -1 se la stringa non viene trovata

.count(subStr) restituisce numero delle occorrenze di subStr nella stringa (conta quante volte c’è quella lettera)

.split([sep]) restituisce la stringa divisa in base a cosa ho messo nelle parentesi

.strip([chars]) restituisce una copia della stringa con i caratteri in “chars” rimossi dll’inizio alla fine

TUPLE

Una tupla è una struttura dati simile alla lista ma immutabile,gode della maggior parte delle proprietà di una

lista ma non può essere modificata, una volta creata.

Tupla=(1, 2, 3, 4) uso parentesi tonde invece che parentesi quadre, ma posso anche ometterle.

Operatore IN Lunghezza tupla :Funzione LEN

Print (tupla[0]) in questo caso si usano comunque le parentesi quadre

Cosa cambia (tra liste e tuple) nella sintassi per accedere ad un elemento?

- Niente: in entrambi i casi si usano le [ ]

- In generale, l’operatore [ ] serve per estrarre un elemento da una collezione si applica sia alle tuple sia a liste

- Posso usare le ( ) per accedere ad un elemento di una lista/tupla? NO!

Nelle tuple, non si può: - aggiungere elementi

- rimuovere elementi

- modificare elementi

Le tuple sono utili perché: - permettono i raggruppare informazioni eterogenee e gestirle unitariamente

- definiscono degli insiemi di costanti

- permettono di memorizzare i dati e accedervi più velocemente delle liste

Se ho una tupla con un singolo valore, perché il tipo sia “tuple” quando lo inizializzi devi mettere una virgola

b=2, type(b) -> tuple ; b=(2) type(b) -> int

Metodi per le tuple:

.index(element) restituisce l’indice più piccolo di element nella tupla

.count(element) retituisce il conteggio delle occorrenze di element nella tupla

Se nella print metto vari elementi separati da virgole, vengono interpretati come tupla:

Es.

SLICING in liste e tuple Estrae un sottoinsieme dalla stringa di partenza.

sotto_stringa = stringa[pos_a:pos_b]

- pos_a: indice del primo elemento della sottostringa da estrarre

- pos_b: indice dell’elemento successivo all’ultimo elemento da estrarre

Se nello slicing non viene inserito:

● il primo elemento (a sx dei :), si assume che la sottostringa parta da 0

●l’ultimo elemento (a dx dei :), si assume che sia len(st), in altre parole l’ultimo elemento della sottostringa

coinciderà con l’ultimo elemento della stringa di partenza

DIZIONARI

Problema: vogliamo memorizzare in una struttura dati il contenuto di un vocabolario inglese-italiano

- semplificazione: lavoriamo con parole singole

- vogliamo memorizzare una parola in inglese e la corrispondente parola in italiano

- altra semplificazione: supponiamo che data parola inglese, ci sia sempre 1 e 1 sola parola italiana associata

I dizionari servono a rappresentare due insiemi di dati attraverso un’unica struttura dati.

Un dizionario è un insieme di più coppie d = {‘chiave1’ : ‘valore1’ , ‘chiave2’ : ‘valore2’}

Ogni elemento del dizionario è una coppia chiave:valore. Nella coppia, la chiave è separata dal valore per

mezzo dei : . In fase di dichiarazione, l’insieme delle coppie è separato da virgole e racchiuso tra {}.

La comodità maggiore dei dizionari: per mezzo della chiave è possibile risalire al valore.

CHIAVE

La chiave è il valore che permette di identificare univocamente uno ed un solo valore (es. matricola)

Da chiave risalgo a valore, non viceversa.

Nelle liste le chiavi sono gli interi, le posizioni e qualsiasi tentativo di usare altri tipi di dati come indice produce

un errore. I dizionari sono come le liste, ma possono usare come indice anche valori non numerici:

- stringhe

- tuple

- valori numerici

- valori booleani

Ma non possono essere usati tipi come liste, dizionari, strutture di dati complessi che mutano nel tempo.

Da una chiave risalgo al valore corrispondente, non possono esserci duplicazioni di chiavi in un dizionario.

Posso assegnare un valore diverso ad una chiave gia esistente, sovrascrivendo il vecchio valore.

Posso aggiungere nuove coppie chiave-valore:

dizionario = {“chiave1” : “valore1” , “chiave2” : “valore2” }

dizionario[“nuova_chiave”] = ”nuovo_valore”

Lunghezza dizionario = numero di coppie

len(dizionario)

Metodi per i dizionari:

.keys() restituisce la lista delle chiavi contenute nel dizionario

.values() restituisce la lista dei valori contenuti nel dizionario

Oppure posso farlo in un altro modo ciclo for.

CICLO FOR

for elemento in iteratore:

…. lista comandi

Nei dizionari, è utile per stampare a video in maniera immediata i valori:

for parola in diz:

print diz[parola] stampa i valori associati ad ogni chiave

“parola” diventa un insieme contenente tutte le chiavi, ad ogni ciclo parola assume una chiave diversa e viene

visto a video il valore di quella chiave. L’insieme iteratore però non ha un ordinamento, le chiavi, i suoi

elementi non sono ordinabili, a differenza delle liste.

Nei dizionari, per stampare chiavi: Nelle liste, per stampare gli elenti:

dizionario = {“testo”: a , “testo1” : b , “testo2”: c .. } lista = [1, 2, 3, ..]

for elemento in dizionario: for elemento in lista:

print elemento testo testo1 testo2 print elemento 1 2 3 ..

 

(il ciclo for opera sulle chiavi, non sui valori) Nelle tuple, per stampare gli elementi:

Nelle stringhe, per stampare lettere: tupla = (1, 2, 3, ..)

stringa = “testo” for elemento in tupla:

for elemento in stringa: print elemento 1 2 3 ..

print elemento t e s t o

Tramite il ciclo for, posso costruire un iteratore per eseguire un numero prefissato di iterazioni range()

Lo posso usare per dare valore ad una variabile iterabile = range (start, stop, step)

- start = valore di partenza

- stop = valore massimo (necessario)

- step = incrementi con cui vengono costtruiti gli elementi

Oppure nel ciclo for posso scriverlo così For contatore in range(x):

Significa che ripete il ciclo x volte, e posso usare come variabile quel contatore all’interno del ciclo, viene

implementato da solo.

Es.

Proprietà principali strutture dati:

STRUTTURE DATI MULTIDIMENSIONALI

Liste bidimensionali tabella con tante righe e tante colonne.

Una lista bidimensionale può essere considerata una lista di liste organizzate sequenzialmente:

M[0] = A[0] A[1] A[2] A[3] … A[n-1]

M = A M = M[0] M[1] = B[0] B[1] B[2] B[3] … B[n-1]

B M[1] …

C M[2] M[m-1] = Z[0] Z[1] Z[2] Z[3] … Z[n-1]

D M[3] ovvero:

… …

Z M[m-1] M[0] = M[0][0] M[0][1] M[0][2] M[0][3] … M[0][n-1]

M[1] = M[1][0] M[1][1] M[1][2] M[1][3] … M[1][n-1]

M[m-1] = M[m-1][0] M[m-1][1] … M[m-1][n-1]

Il primo valore M[0][0] è il valore della riga, il secondo M[0][0] è delle colonne.

M[i][j] : riga i , colonna j

Somma per ogni colonna di una riga = M[0][0] + M[0][1] + M[0][2] + M[0][3] + …

Somma per ogni colonna di ciascuna riga = M[0][0] + M[0][1] + M[0][2] + M[0][3] + …

= M[1][0] + M[1][1] + M[1][2] + M[1][3] + …

= M[2][0] + M[2][1] + M[2][2] + M[2][3] + …

Somma per ogni riga di una colonna = M[0][0] + M[1][0] + M[2][0] + M[3][0] + …

Somma per ogni riga di ciascuna colonna = M[0][0] + M[1][0] + M[2][0] + M[3][0] + …

= M[0][1] + M[1][1] + M[2][1] + M[3][1] + …

= M[0][2] + M[1][2] + M[2][2] + M[3][2] + …

Posso fare sia lista di liste, che lista di tuple, che dizionari di tuple

FUNZIONI

La funzione può essere vista come un nome attribuito ad un insieme di istruzioni:

- codice (insieme di istruzioni) indipendente dalla parte rimanente del programma

- filosofia: scrivi il codice di una funzione una volta, riutilizzalo più volte

Caratteristiche di una funzione:

- esegue un compito specifico

- la funzione può essere chiamata (invocata, attivata) in diversi punti del programma di cui fa parte come se

fosse una singola istruzione

Vantaggi delle funzioni

Attraverso il riutilizzo, facilitano la scrittura del codice:

- all’interno di uno script aiutano a ridurre la duplicazione del codice

- E’ possibile riutilizzare una funzione in uno script diverso da quello in cui (la funzione) è stata scritta

- E’ possibile utilizzare funzioni già scritte da altri, senza conoscerne l’implementazione

Migliorano :

- la comprensione del codice

- l’organizzazione

- le operazioni di manutenzione ed evoluzione

Output Parametri (in input)

Funzione

 

Una funzione in Python

- può essere chiamata ad operare più volte su dati diversi

- può restituire o non restituire un risultato

Le funzioni possono essere composte:

COME CREARE UNA FUNZIONE

La creazione di nuove funzioni è una fra le peculiarità più utili di un linguaggio di programmazione

Può essere usato qualsiasi nome per una funzione, fatta eccezione per le parole riservate di Python

Una funzione deve essere definita prima di essere usata.

La sintassi per la definizione di una funzione in python è:

Le funzioni possono essere definite in qualsiasi punto del programma.

Unica condizione: una funzione deve essere definita prima di poter essere usata.

Per evitare problemi di questo tipo conviene dichiarare tutte le funzioni all’inizio del file.

Quando definisco una funzione non conosco a priori i valori sui quali dovrà operare PARAMETRI.

Parametri formali = nella definizione uso i parametri formali per dare un nome ai dati che ancora non conosco

Parametri attuali = valori reali collegati ai parametri formali.

E’ possibile dichiarare delle variabili all’interno delle funzioni.

Al termine della funzione, le variabili dichiarate internamente (per es. risultato) cessano di esistere

E’ opportuno dare alle variabili, dichiarate nelle funzioni, nomi diversi dai nomi delle variabili dichiarate nel

corpo principale del programma.

IMPORTARE ED UTILIZZARE UNA FUNZIONE DALL’ESTERNO

Modulo: un file .py con all’interno una collezione di funzioni pronte per l’uso.

Package: un insieme di moduli che collaborano tra loro per svolgere compiti complessi.

E’ una directory contenente uno o più moduli. La directory di un package deve avere un file

particolare: __init__.py per evitare che una directory contenente alcuni script .py venga

scambiata per un package.

Per poter utilizzare le funzioni di un modulo dobbiamo dire all’interprete di caricare il

modulo in memoria. Questa operazione viene chiamata importazione.

Importare un modulo (presente nella dir. corrente)

Localizzazione di moduli nel file system

Inizia una ricerca in diverse directory, secondo l’ordine descritto qui di seguito. Non appena viene trovato un

file itamat.py, la ricerca termina.

- directory di lavoro corrente (nel ns caso, la directory in cui si trova il file esempiouso.py)

- directory in cui si trovano i moduli e i package della libreria standard di python

Libreria di Python

Il programma di installazione di python, oltre ad installare l’interprete, installa anche la libreria standard di

python, un insieme di package e moduli (pronti per essere utilizzati), ognuno dedicato ad un compito specifico.

La libreria standard di Python è molto estesa: - operazioni matematiche

- gestione di oggetti grafici

- operazioni sul file system

Se vogliamo un modulo non presente nella libreria standard, basta recuperarlo e installarlo nel computer.

Importare un modulo della libreria standard

I moduli della libreria standard possono essere importati anche se non risiedono nella directory di lavoro

corrente. Per utilizzare una funzione di un modulo dobbiamo specificare il nome del modulo che la contiene e

il nome della funzione separati da un punto. Questo formato è chiamato notazione punto.

Es.

Nella documentazione ufficiale del linguaggio python, oltre alla sintassi del linguaggio vengono descritti in

dettaglio i contenuti della liberia standard. Una modifica alla libreria standard determina una variazione

della versione di python.

Package Manager

In aggiunta alla libreria standard, è possibile installare dei pacchetti aggiuntivi: ( Conda)

- Posso usare un modulo o un package copiandolo nella mia directory di lavoro corrente. In questo modulo,

però altri utenti non riuscirebbero ad utilizzarlo.

- L’installazione manuale di un pacchetto nel computer (tutti gli utenti) può essere un’operazione complicata.

- Per questo motivo sono stati introdotti i Package Manager.

Il package manager è un software che si occupa di installare pacchetti aggiuntivi, rendendoli disponibili per

tutti gli utenti di uno specifico computer.

Molti dei package manager esistenti, scaricano pacchetti da fonti accessibili via internet:

- Esistono diverse fonti di pacchetti aggiuntivi (sia liberamente scaricabili, sia a pagamento).

- Una delle più grandi fonti di pacchetti python scaricabili è il Python Package Index. ://pypi.python.org/pypi

- Il contenuto della libreria e il tipo di package manager costituisce la maggior differenza tra le diverse

distribuzioni del linguaggio python.

PARAMETRI DI FUNZIONI

Parametri - Formali

- Attuali

Definizione di funzione

Modalità di passaggio dei parametri

Quando si richiama una funzione, vengono trasferiti i valori dai parametri attuali ai parametri formali della

funzione. Il passaggio di parametri può avvenire in due modalità distinte:

● Passaggio per valore (o per copia): il parametro formale è una copia del parametro attuale se la funzione

modifica il contenuto del parametro formale, si modifica la copia e non l’originale

● Passaggio per riferimento: il parametro formale è collegato direttamente al parametro attuale modificando il

valore del parametro formale si altera anche il valore del parametro attuale

La differenza si nota quando, all’interno di una funzione, viene modificato un parametro formale

● (nel passaggio per valore) il corrispondente parametro attuale rimane invariato

● (nel passaggio per riferimento) il corrispondente parametro attuale viene modificato

Tipi delle variabili e passaggio di parametri

In Python i tipi semplici (int, float, . . . ) sono passati per valore (le funzioni . . . lavorano su una copia)

I tipi complessi (liste, dizionari, . . . ) sono invece passati per riferimento (le funzioni . . . lavorano sull’originale)

Esiste una categoria intermedia: i tipi complessi non mutabili (es. stringhe, tuple).

- Non possono essere modificati . . .

- Non si pone il problema del passaggio per copia o per valore

- Sono passati per riferimento

Variabili e riferimento: generalizzazione

In generale, le strutture dati complesse non sono altro che dei riferimenti a porzioni di memoria

Name Space, scoping delle variabili

Variabili locali: variabili create all’interno di una funzione. Le variabili locali esistono solo all’interno della

funzione. Non possono essere usate all’esterno.

I parametri formali sono assimilabili a delle variabili locali.

Variabili globali : variabili dichiarate nel corpo principale della funzione, visibili all’interno delle funzioni.

Scope (visibilità) delle variabili

Scope di una variabile: l’insieme delle righe di codice in cui una variabile e il suo contenuto sono accessibili.

Namespace: l’insieme delle variabili alle quali l’interprete Python può accedere in un certo istante.

Il name space è dinamico: cambia durante l’esecuzione di uno script.

Name Space di una funzione

Ne fanno parte:

● le variabili definite all’interno della funzione:

- variabili locali

- parametri formali

● le variabili definite nel blocco di codice all’interno del quale è dichiarata la

funzione (corpo principale)

- variabili globali (le variabili definite nel corpo principale del programma)

Risoluzione dei conflitti

E’ possibile che si dichiari una variabile locale con un nome già utilizzato da una variabile globale, la variabile

all’interno della funzione maschererà la variabile globale, per tutta la durata dell’esecuzione della funzione, ciò

genera un potenziale conflitto.

Non potete modificare all’interno di una funzione il valore di una variabile globale.

Questo comportamento è voluto, serve per evitare di modificare inavvertitamente variabili globali:

- Si tratta di errori che in altri linguaggi possono accadere

- Sono molto difficili da scovare

In una funzione è un buono stile di programmazione:

- limitare l’accesso alle variabili globali

- utilizzare solo i parametri formali per veicolare informazioni dall’esterno

Parametri opzionali

Nei parametri formali di una funzione possono essere inseriti anche dei parametri opzionali.

I parametri obbligatori vengono mappati sulla base della posizione. I parametri opzionali vengono mappati in

base al nome del parametro utilizzato, indipendentemente dalla loro posizione.

tasso è il parametro opzionale

0,12 valore di default del parametro opzionale

Funzioni senza return

Funzioni senza return restituiscono il valore speciale None

- None è una costante speciale del linguaggio

- None è logicamente equivalente a False

Tutte le funzioni in Python è come se avessero un return value,

- anche se nessun return è presente nel codice

- per questo quelle che in altri linguaggi sarebbero considerate procedure, in Python sono comunque

classificate come funzioni

Una funzione python può restituire più valori, ma con istruzione return python costruisce una tupla con questi

sono

uguali

Funzioni e comunicazione

Riepilogo di come una funzione comunica con il programma chiamante

Dati in ingresso (dati che una funzione deve ricevere per svolgere l’elaborazione). Accessibili tramite:

- Parametri attuali

- Variabili globali (sconsigliato)

Dati in uscita. La funzione può inviare dati al programma chiamante usando:

- l’istruzione return

- modificando variabili globali (sconsigliato).

Attenzione: solo le strutture dati passate per riferimento mantengono le modifiche, dopo l’uscita dalla funzione

GESTIONE FILE

Hardware di un computer

Memoria centrale (o RAM)

Caratteristiche

● Memoria principale di lavoro

● Accesso molto veloce ai dati

● Capienza limitata

● Volatile (spegnendo il computer, si perdono tutte le informazioni)

Memoria di massa (disco rigido, . . . )

Caratteristiche

● Memoria secondaria di lavoro

● Capienza molto maggiore (rispetto alla memoria centrale)

● Accesso più lento ai dati (rispetto alla memoria centrale)

● Non volatile (spegnendo il computer, NON si perdono le informazioni)

Paragone con le biblioteche

Scenario: una persona cerca dei libri negli scaffali, poi li porta con se su una scrivania e inizia a consultarli

Sulla scrivania

- i libri presenti possono essere consultati velocemente

- è possibile appoggiare solo un numero limitato di libri

- se è necessario un libro non presente nella scrivania, occorre andarlo a cercare negli scaffali

- se, dopo aver cercato nuovi libri, nella scrivania non c’è più spazio, occorre riporre qualcosa negli scaffali

Negli scaffali

- capienza molto maggiore della scrivania

- tuttavia recuperare un libro richiede tempo

Analogia tra computer e biblioteca

Memoria centrale (equivalente alla scrivania della biblioteca)

● Variabili python: ospitate nella memoria centrale.

● Le variabili ereditano vantaggi e svantaggi della memoria centrale

- Velocità

- Capienza limitata

- Volatilità (al mancare della corrente si perde tutto)

Memoria di massa (i dati sono organizzati sotto forma di file e directory)

● File: contenitore di dati (equivalente al libro)

● Directory: contenitore di file (equivalente ad uno scaffale della biblioteca)

File: motivazioni

Se devo spegnere il computer, come faccio a non perdere i risultati ottenuti?

- salvo i dati nella memoria di massa

Se devo processare una grossa quantità di informazioni le cui dimensioni eccedono la capienza della memoria

centrale di un computer?

- memorizzo i dati nella memoria di massa

- carico in memoria centrale ed elaboro un sottoinsieme di dati alla volta

Altro paragone

"Lavorare con i file è simile a leggere un libro: per usarli li devi prima aprire e quando hai finito li chiudi. Mentre

il libro è aperto puoi leggerlo, puoi scrivere una nota sulle sue pagine. La maggior parte delle volte leggerai il

libro in ordine, una pagina dopo l’altra, ma nulla ti vieta di saltare a determinate pagine facendo uso

dell’indice."

Apertura, chiusura, lettura, scrittura e posizionamento sono le attività tipiche che un linguaggio di

programmazione mette a disposizione per gestire il contenuto di un file . . . . . i linguaggi di programmazione

gestiscono ulteriori attività: la creazione di un nuovo file e la cancellazione del contenuto di un file esistente.


ACQUISTATO

1 volte

PAGINE

30

PESO

3.30 MB

PUBBLICATO

3 mesi fa


DETTAGLI
Esame: Informatica
Corso di laurea: Corso di laurea in scienze statistiche ed economiche
SSD:
A.A.: 2018-2019

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher aina.belloni di informazioni apprese con la frequenza delle lezioni 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à Milano Bicocca - Unimib o del prof Cesarini Mirko.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea in scienze statistiche ed economiche

Appunti di Calcolo delle Probabilità
Appunto
Laboratorio Informatica
Appunto
Analisi matematica 1
Appunto
Apprendimento automatico (machine learning)
Appunto