+ All Categories
Home > Documents > Informatica - dinamico2.unibg.itdinamico2.unibg.it/moriggia/ING/lucidi/InformaticaING.pdf ·...

Informatica - dinamico2.unibg.itdinamico2.unibg.it/moriggia/ING/lucidi/InformaticaING.pdf ·...

Date post: 18-Feb-2019
Category:
Upload: phamtruc
View: 214 times
Download: 0 times
Share this document with a friend
112
Informatica (PROGRAMMAZIONE)
Transcript

Informatica

(PROGRAMMAZIONE)

Informatica

Informatica

Computer Science

▪ Informazione: tutto ciò che possiede un significato per l’uomo

+▪Automatica: senza l’intervento dell’uomo

Evoluzione

1. Computer Science (Informatica) e Electronic Data Processing (EDP)

2. Information Technology (IT, Scienza dell’informazione)

3. Information and Communication Technology (ITC, Scienza della conservazione, elaborazione e trasmissione dell'informazione)

Computer

Calcolatore/Elaboratore

“Macchina per la risoluzione di problemi generici”

▪Elaborazione

▪Archiviazione

▪Trasmissione

Codifica delle informazioni

Linguaggio (strumento che sostituisce dei simboli agli oggetti e ai concetti)

▪naturale: utilizzato dall’uomo, ad es.:

▪ italiano (A–Z) 21 / inglese (A–Z) 26

▪ greco (α–ω) / russo (Њ Ц) / arabo (ف (ك

▪ formale: creato artificialmente senza eccezioni, ad es.:

▪ Morse ( . – )

▪ semaforo (rosso, giallo verde)

▪ numerazione binaria (0, 1)

▪ numerazione decimale (0–9)

Codifica delle informazioni

bit

byte

rappresentazione dei dati (conservazione) interi

reali

alfanumerici

trattamento dei dati (elaborazione) operatori aritmetici

operatori logici

invio di segnali (trasmissione) segnali analogici

segnali digitali

Architettura dei calcolatori

Architettura dei calcolatori

processore {39}

dispositivi di memoria

periferiche

sistema operativo {55}

file system {69}

reti e Internet

Componenti di un calcolatore

architettura del sistema

▪hardware: componenti fisici (elettrici, elettronici, meccanici, ottici) del sistema

< EPROM* + firmware** >

▪software: componenti logici (programmi) eseguiti dal sistema

*) Erasable Programmable Read Only Memory

**) microprogrammi per ROM

Classificazione tradizionale dei calcolatori

microcomputer o PC

workstation

minicomputer

mainframe

elaboratori per il calcolo parallelo

(supercomputer)

Architettura di Von Neumann(evoluta)

John Von Neumann(János Lajos Neumann)Budapest, 28Dic1903

Washington, 8Feb1957

Bus di sistema

Mezzo di conduzione delle informazioni all’interno del calcolatore

▪Bus DATI, trasmissione dati da e a CPU

▪Bus INDIRIZZI, trasmissione indirizzi a RAM

▪Bus CONTROLLI, trasmissione ordini daCPU a periferiche

Central Processing Unit (CPU)

(processore)

▪Acquisisce un’istruzione

▪Interpreta le istruzioni che compongono i programmi(un’istruzione alla volta)

▪Esegue le istruzioni dei programmi coordina la macchina

▪Carica le singole istruzione dalla MEMORIA CENTRALE (RAM)

Architettura della CPU

Unità Aritmetico-Logica (ALU)

ALU

Control Unit (CU)

CU

Bus interno

Bus di sistema

Orologio di Sistema(System Clock)

clock

Registri

A

B

PC

CIR

INTR

SR

AR DR CDR

Registri A e B

A

B

PC

CIR

INTR

SR

AR DR CDR

Status Register

A

B

PC

CIR

INTR

SR

AR DR CDR

Program Counter

A

B

PC

CIR

INTR

SR

AR DR CDR

Current Instruction Register

A

B

PC

CIR

INTR

SR

AR DR CDR

Address Register e Data Register

A

B

PC

CIR

INTR

SR

AR DR CDR

Control Driver Register

A

B

PC

CIR

INTR

SR

AR DR CDR

Interrupt Register

A

B

PC

CIR

INTR

SR

AR DR CDR

Memoria Centrale

(RAM, Random Access Memory)

Memorizza programmi

Memorizza dati

Memoria VOLATILE

Organizzata a livello logico come:

▪ Sequenza di Bytes (B)ciascuno da 8 bits (b)

▪ Raggruppati in words (8b ÷ 64b)

▪ Indirizzo (posizione) di ciascuna word:

Architettura 32b 232 indirizzo (4GB)

Architettura 64b 264 indirizzo (16GB2)

Capacità di memoria

1 bit (b)

1 Byte (B)

1 Kb (Chilo) = 1024 Byte = 210

Bytes

1 Mb (Mega) = 1024 Kb = 220

Bytes = 1048576 Bytes

1 Gb (Giga) = 1024 Mb = 230 Bytes

1 Tb (Tera) = 1024 Gb = 240 Bytes

1 Pb (Peta) = 1024 Tb = 250 Bytes

1 Eb (Exa) = 1024 Pb = 260 Bytes

Periferiche (dispositivi)

LOCALE (standalone)

▪ Tastiera

▪ Mouse

▪ Video

▪ Touch-screen

▪ Disco

▪ USB drive

▪ Stampante

▪ Foto/video camera, …

REMOTO (networking)

▪RJ45

▪Wi-Fi

▪Bluetooth

Memoria di massa

Disco magnetici, ottici, … (dispositivi elettro-meccanici)

USB drive (dispositivi elettronici)

obsoleti: floppy, nastri, schede perforate, …

▪Memoria PERSISTENTE

▪“Lenta”

▪“Capiente”

Software

Software

“Insieme dei programmi e delle procedure che servono a finalizzare gli strumenti

fisici alla risoluzione del problema presentato dall’utente del sistema”*

▪di base (sistema operativo)

▪applicativo

*) Lorenzi A., V. Moriggia (2012) Teoria e ambiente di programmazione, Atlas, p. 86.

Sistema operativo

“Insieme dei programmi che consentono all’utente, o alle applicazioni

informatiche, di accedere alle operazioni di base per utilizzare le risorse del sistema

di elaborazione”*

*) Lorenzi A., V. Moriggia (2012) Teoria e ambiente di programmazione, Atlas, p. 87.

Modularità

In informatica, caratteristica di un

sistema o di un programma che si

compone di unità distinte, ognuna

delle quali assolve in genere un

compito specifico ed è capace di

interagire con le altre.

Modularità dei sistemi operativi

HARDWARE

Nucleo (kernel)

Gestore della memoria

Gestiore delle periferiche

File System

Interprete dei comandiGUI Prompt

Programmi applicativi

Software applicativo

Programma/Codice/Applicazione/App

“Insieme dei programmi non necessari al funzionamento del computer, ma che lo

rendono ‘specializzato’ in una particolare funzione durante tutto il periodo di

funzionamento dell’applicativo”

▪Sorgente (linguaggio di alto livello)

▪Eseguibile (linguaggio macchina)

Licenze

▪Software commerciale/proprietario

▪Freeware

▪Open-source

▪proprio codice

Linguaggio di alto livello

Linguaggio di programmazione ad alto livello

“E’ un linguaggio artificiale impiegato nella programmazione degli elaboratori, solitamente nato

dalla formalizzazione e semplificazione di un linguaggio naturale”

▪Diversamente dal linguaggio macchina (direttamente eseguibile da un computer) necessita di una traduzione (compilazione) nel linguaggio (macchina) compreso dall’elaboratore

Linguaggi di programmazione

Due categorie:

▪Compilatiinteramente tradotti in linguaggio macchina e memorizzati in un file (programma/codice eseguibile)

▪ Interpretatitradotti ed eseguiti un’istruzione alla volta

copyright

time

waster

Advantages and Disadvantages

▪ Compiled programs generally run faster than interpreted ones, because interpreted programs must be reduced to machine instruction at runtime (i.e. during the execution).

▪ However, with an interpreted language you can do things that cannot be done in a compiled language. ▪ For example, interpreted programs can modify

themselves by adding or changing functions at runtime. ▪ It is also usually easier to develop application in an

interpreted environment because you don’t have to recompile your application each time you want to test a small section.

▪ Even though interpreted programs are readable (by any other) and must be translated in machine language during any execution

edit in

execution

Linguaggi programmazione

▪FORTRAN (1956) FORmula TRANslation

▪COBOL (1960) COmmon Business Oriented Language

▪BASIC (1964) Beginners All-purposes Symbolic Instruction Code

▪RPG (1966) Report Program Generator

▪PASCAL (1971)

▪C e C++ (1974)

▪PYTHON (1991)

▪ JAVA (1995)

Compiled vs. Interpreted

▪ ProblemAnalysis

▪ AlgorithmImplementation

▪ Source Code (program)Compiling (+ linking)

▪ Executable (program)Execution (running)

COMPILED LANGUAGE

INTERPRETED LANGUAGE

FORTRAN, PASCAL, C ecc.

VBA, BASIC, PYTHON, etc.

.for, .pas, .c .bas, .py

.obj

.exe

execution

PythonPARTE I

Python

▪ Guido van Rossum(inizio degli anni novanta)

▪ Free language

▪ www.python.org

IDE

▪ PyCharm

▪ PyScripter

Designer

▪ QtDesigner

▪ Glade3

Shell

iPython

IDLE

Python

PythonW

online

OUTPUT: print

print "Hello world"

print 2 + 3

print a

Compatibilità con Python 3:

from __future__ import print_function

print("Hello world")

print(2 + 3, a)

print(dato, end="") # stampa succ. in linea

print(dato, end=' ') # stampa succ. in lineacon spazio

COMMENTI

"""

autore: io

data: 1 Oct 2015

UN PO' DI COMMENTI

"""

# Commento fino all’acapo

print "Hello" # commento sulla riga

OPERATORI

▪Aritmetici:

+ addizione

- sottrazione

* moltiplicazione

/ divisione reale

// divisione intera

% resto della divisione

** elevazione a potenza

VARIABILI

▪In Python le varabili NON hanno bisogno di dichiarazione.

▪Le variabili vengono create attraverso l'assegnazione di un valore:

variabile = espressione

a = 5

ASSEGNAZIONE (NON UGUAGLIANZA!)

LISTE

Collezione dinamica di dati eterogenei detti «elementi»

▪Esempi di liste[ 1, 2, 5, 3]

[3, "Rossi", 12800]

list(range(4))

▪Lista vuota[]

L = list()

LISTE: operatori

▪Elemento i-esimo: L[i]

▪Concatenamento: [3] + ['AB', 3.14] + L

▪Stampa: print(L)

▪Numero di elementi: len(L)

▪Confronto (ne basta uno): == != > < >= <=

▪Ricerca del valore v nella lista L: v in L

▪Scansione: for elemento in L:

▪Sottolista dal secondo al quarto: L[1:4]

LISTE: sottoliste

[0|1|2|3|4|5]

▪ NomeLista[ inizio : fine+1 ]

L[1:3] # [1, 2]

L[1:10:2] # [1, 3, 5]

▪ NomeLista[ ()inizio : ]

L[2:] # [2, 3, 4, 5]

L[-2:] # [4, 5]

▪ NomeLista[: fine+1 ]

L[:3] # [0, 1, 2]

▪ NomeLista[:]

L[:] # [0, 1, 2, 3, 4, 5]

LISTE: metodi mutator

Mutator: cambiano lo stato interno dell’oggetto

L.append(elemento)Accoda elemento alla lista L

L.extend(M)Accoda la lista M alla lista L

L.insert(posizione, elemento)Inserisce l’elemento alla posizione, spostando i restanti di un posto (se posizione>len(L), accoda)

L.pop()Estrae (elimina e restituisce) l’ultimo elemento

L.pop(posizione)Estrae l’elemento in posizione

L.sort()Riordina gli elementi nella lista L, se di tipo uniforme

Liste: duplicazione

ATTENZIONE! L’assegnazione non crea una copiadella lista

L = [3, "Rossi", 12800]

M = L

L[1] = 10

print(M) # [3, 10, 12800]

L’assegnazione crea uno

pseudonimo (alias) della lista

Liste: duplicazione

Per duplicare una lista è necessario caricare un elemento per volta nella nuova lista

L = [3, "Rossi", 12800]

M = []

for m in L:

M.append(m)

L[1] = 10

print(M) # [3, "Rossi", 12800]

print(L) # [3, 10, 12800]

Liste: duplicazione

E’ anche possibile duplicare una lista attraversoil concatenamento con una lista vuota

L = [3, "Rossi", 12800]

M = [] + L

print("Lista M: ", M)

# Lista M: [3, 'Rossi', 12800]

print("Lista L: ", L)

# Lista L: [3, 10, 12800]

Stringhe

▪Stringa costante: "Salve Mondo"

▪Set di caratteri (p. 45)

▪Sequenze di escape (p. 40)

▪Concatenamento: "Hello" + "World"

"HelloWorld"0123456789

▪Sottostringhe

S[5] # 'W'

S[-3:] # 'rld'

Stringhe: metodi

▪ {108}

S.count(stringa)

S.find(stringa)

S.replace(vecchia-stringa, nuova-stringa)

S.split()

▪ATTENZIONE: questi metodi NON modificano la stringa di partenza

Formattazione del testo

▪Stringa formattata

"testo %tipo-di-formato altro testo" % dato

▪Tipo di formato stringa

%[[-]ampiezza[.troncamento] ]s

intero%ampiezzad oppure %ampiezzai

reale%ampiezza.precisionef

notazione esponenziale (scientifica/virgola mobile)

%ampiezza.precisionee

Formattazione del testo

r = "%6s" % 'abc‘ # ' abc'

print("<%-10s>" % "testo") # <testo >

"<%3.2s>" % "testo“ # < te>

"<%-10d>" % 3.14 # <3 >

"<%10i>" % 123.14 # < 123>

"<%-10.4f>" % 3.14 # <3.1400 >

"<%10.4f>" % 3.14 # < 3.1400>

"<%10.4e>" % 3.14 # <3.1400e+00>

▪ Con più dati

print("x=%.2f\ty=%.2f" % (2.5,3.14))

# x=2.50 y=3.14

Sistemi di numerazione

Sistema decimale

▪𝔻 ≡ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Cifre del numero 3 8 7 5 2

Posizione 4 3 2 1 0 -1 -2

Peso 104 103 102 101 100 10-1 10-2

sommatoria 3100 810 71 5/10 2/100

387.52 = 3102 + 8101 + 7100 + 510-1 + 210-2

Sistema binario

▪𝔹 ≡ {0, 1}

Cifre del numero 1 1 0 1 1

Posizione 4 3 2 1 0 -1 -2

Peso 24 23 22 21 20 2-1 2-2

sommatoria 14 12 01 1/2 1/4

(110.11)2 = 122 + 121 + 020 + 12-1 + 12-2

= 4 + 2 + 0.5 + 0.25

= (6.75)10

Sistema binario: conteggio

▪ In base due (bin)

da 1 si passa a 10

da 11 si passa a 100

da 111 si passa a 1000

. . .

▪ In base dieci (dec)

da 9 si passa a 10

da 99 si passa a 100

da 999 si passa a 1000

. . .

00 0000

01 0001

02 0010

03 0011

04 0100

05 0101

06 0110

07 0111

08 1000

09 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111

16 10000

=21

=22

=23

=24

=20

Sistema binario: conversione in decimale

(1110)2 = 23 + 22 + 2 = 8 + 4 + 2 = (14)103 2 1 0

(0110'0111)2= (?)107 6 5 4 3 2 1 0

(1000'0001)2= (?)10

(0101'0100)2= (?)10

Sistema binario: massimo numero rappresentabile

Con quattro bit (binary digit)

0000 = 0

0001 = 1

...

1110 = 23 + 22 + 2 = 8 + 4 + 2 = 14

1111 = 23 + 22 + 2 + 1 = 15

10000 = 24 = 16

= 24 – 1

Sistema decimale: conversione in binario

84 20 42 2

0 21 21 10 2

0 5 21 2 2

0 1 21 01

1

1

0

0

00

Al mondo esistono 10 tipi di persone: quelle che capiscono l’aritmetica binaria, e quelle che non la capiscono.

Sistema esadecimale

▪ℍ ≡ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹}

Cifre del numero 3 A 7 F 2

Posizione 4 3 2 1 0 -1 -2

Peso 164 163 162 161 160 16-1 16-2

sommatoria 3256 1016 71 15/16 2/256

(3A7.F2)16 = 3162 + 10161 + 7160 + 1516-1 + 216-2

= 3256 + 1016 + 71 + 15/16 + 2/256

= 768 + 160 + 7 + 0.9375 + 0.0078125

= (935.9453125)10 (circa)

Sistema esadecimale:conteggio

▪ In base 16 (hex)

da 9 si passa a A

da A si passa a B

da F si passa a 10

da FF si passa a 100

. . .

▪ In base dieci (dec)

da 9 si passa a 10

da 99 si passa a 100

da 999 si passa a 1000

. . .

dec bin hex

00 0000 0

01 0001 1

02 0010 2

03 0011 3

04 0100 4

05 0101 5

06 0110 6

07 0111 7

08 1000 8

09 1001 9

10 1010 A

11 1011 B

12 1100 C

13 1101 D

14 1110 E

15 1111 F

Sistema esadecimale: conversione in binario e decimale

Conversione in binario

(7FD2)16

▪ 7 = 0111

▪ F = 1111

▪ D = 1101

▪ 2 = 0010

(0111'1111'1101'0010)2

Conversione in decimale

(7FD2)16

▪ 7 ⋅ 163 = 7 ⋅ 4096 = 28672

▪ 15 ⋅ 162 = 15 ⋅ 256 = 3840

▪ 13 ⋅ 161 = 13 ⋅ 16 = 208

▪ 2 ⋅ 160 = 2 ⋅ 1 = 2

▪ 28672 + 3840 + 208 + 2 =

(32722)10

Sistema binario: conversione in esadecimale

1001'0101 = (95)16

9 5

10110100

2 D

= (2D)16'

Rappresentazioneinterna dei dati

Numeri interi con segno

Tipo Valori Limite Bit

------------------------------------------------------------------------------------------------

Shortint - 128 .. 127 8

Integer - 32 768 .. 32 767 16

Longint - 2 147 483 648 .. 2 147 483 647 32

Byte 0 .. 255 8

Word 0 .. 65 535 16

Integer - 32 768 .. 32 767 16

Longint - 2 147 483 648 .. 2 147 483 647 32

Numeri interi con segno

▪Sistema con modulo e segno (MS)

(+5)10 = (????'????)2MS

= (0000'0101) 2MS

(–5)10 = (????'????)2MS

= (1000'0101) 2MS

▪Difetti (maggiori calcoli e confronti)

Esiste +0 e –0

Operazioni aritmetiche: se A>0 e B>0, …

Numeri interi con segno

▪Sistema in complemento a due (CA2)

L’ordinamento è mantenuto

Sottrazione con una Addizione:+3 + (–5) = –20011 + 1011 = 1110

Inversione di segno rapida:(–5)10

(5)10 = (0101)2

not(0101) = 1010 1010 + 1 = (1011)2

dec bin

7 0111

6 0110

5 0101

4 0100

3 0011

2 0010

1 0001

0 0000

–1 1111

–2 1110

–3 1101

–4 1100

–5 1011

–6 1010

–7 1001

–8 1000

Numeri reali

▪Rappresentazione in virgola fissa: a = xxxx.dddd

▪Forte riduzione dell’intervallo numerico rappresentato

▪Con una rappresentazione del tipo: xxx.dd, con quante cifre significative potrebbero essere rappresentati i valori: 1234567.8, 1324.5678, 0.00018888 ?

▪Quante cifre sarebbero necessarie per poter rappresentare valori del tipo: 1.5*10+50,

2.0*10-30 ?

Numeri reali in virgola mobile (o floating point)

▪Un numero reale 𝑎 in base 𝑏 può essere scritto:

𝑎 = 𝑥 ⋅ 𝑏±𝑛 = 𝑥𝐸 ± 𝑛 = ±𝑐0, 𝑐1𝑐2𝑐3…𝐸 ± 𝑛

con 𝑐0 ≠ 0

▪Esempi▪ -0.00123 -12.3E-4

▪ -12.34 -12.34E00

▪+1.2E-25 +0.0…12

▪0.1234E+30 12340…0

▪Normalizzazione: 1 ≤ 𝑥 < 𝑏

Mantissa e Esponente

𝑎 = ±𝑐0, 𝑐1𝑐2𝑐3𝑐4𝑐5…𝐸 ± 𝑛

±𝑐0, 𝑐1𝑐2𝑐3𝑐4𝑐5… ±𝑛

mantissa esponente

Sistema binario:mantissa ed esponente

▪Standard IEEE 754 (su 32 bit)

M = 1.m

E = e – k

k = 2(n–1) – 1

n = numero di bit per l’esponente (8)

Esempi di rappresentazione dei reali in virgola mobile

Tipo Valori Limite Bit--------------------------------------------------------------------------------------

Real 2.9 E-39 .. 1.7 E+38 48

Single 1.5 E-45..3.4 E+38 32

Double 5.0 E-324 .. 1.7 E+308 64

Extended 3.4 E-4932 .. 1.1 E+4932 80

Rappresentazioneinterna dei caratteri (codice ASCII)

Algebra booleana

ALGEBRA BOOLEANACalcolo Proposizionale

George Boole 1815 – 1864

▪ In matematica, informatica ed elet-tronica, l'algebra di Boole è un ramo dell'algebra astratta che comprende tutte le algebre che operano con i soli valori di verità 0 o 1, detti variabili booleane o logiche.

▪L'algebra booleana è finalizzata al calcolo proposizionale

▪Proposizione“Frase alla quale può essere

attribuito un valore di verità:vero o falso”

ALGEBRA BOOLEANACalcolo Proposizionale

Connettivi

+

A AND B

A OR B

NOT A

A XOR B

Valori di verità Vero (1)

Falso (0)

AND , , ,

OR , , + ,

XOR , ,

NOT , , -

proposizioni

atomiche

Proposizioni composte

op

era

tori

log

ici

Operatori logici: AND

Congiunzione

Tavola di verità

A B A and B

0 0 0

0 1 0

1 0 0

1 1 1

𝐴 ∙ 𝐵 𝐴 ∧ 𝐵

Operatori logici: OR

Disgiunzione

Tavola di verità

A B A or B

0 0 0

0 1 1

1 0 1

1 1 1

𝐴 + 𝐵 𝐴 ∨ 𝐵

Operatori logici: NOT

Negazione

Tavola di verità

A not A

0 1

1 0

¬ 𝐴 𝐴

Operatori logici: proprietà

▪ CommutativaA or B = B or AA and B = B and A

▪ Associativa(A or B) or C = A or (B or C)(A and B) and C = A and (B and C)

▪ DistributivaA or (B and C)

= (A or B) and (A or C)A and (B or C)

= (A and B) or (A and C)

▪ IdempotenzaA and A = AA or A = A

▪ Legge di assorbimentoA or (A and B) = AA and (A or B) = A

▪ not (not A) = A

▪ A or (not A) = Vero

▪ A and (not A) = Falso

Leggi di De Morgan

not(A and B) = (not A) or (not B)

not(A or B) = (not A) and (not B)

Operatori logici: XOR

Disgiunzione esclusiva

Tavola di verità

A B A or B

0 0 0

0 1 1

1 0 1

1 1 0

𝐴⊕𝐵

Operatori logici: IF-THEN

Implicazione

Tavola di verità

A B A or B

0 0 1

0 1 1

1 0 0

1 1 1

𝐴 → 𝐵

Operatori logici: IF-THEN

Esempio

A = Piero è bergamasco

B = Piero può essere italiano

▪ se Piero NON è bergamasco allora Piero può NON essere italiano

▪ se Piero NON è bergamasco allora Piero può essere italiano

▪ se Piero è bergamasco allora Piero può NON essere italiano

▪ se Piero è bergamasco allora Piero può essere italiano

𝐴 → 𝐵

or

or

______________

Tavola di verità

(not A) and B

Operatori logici: funzione booleana

A B f(A, B)

0 0 0

0 1 1

1 0 1

1 1 1

A and (not B)

A and B

f(A,B) = ((not A) and B) or (A and (not B)) or (A and B)

= ((not A) and B) or (A or ((not B) and B))

= ((not A) and B) or (A or Falso) = ((not A) and B) or A

= ((not A) or A) and (B or A) = Vero and (B or A) = A or B

PythonPARTE II

Tuple

▪Come le liste, ma costanti:

giorno = ('Lu','Ma','Me','Gi','Ve')

▪L’elenco è tra parentesi tonde, anziché quadre

Dizionari

▪Dati organizzati per associazione (tabelle)

{chiave : dato [, chiave:dato…]}

La chiave è quell’attributo (colonna) che garantisce l’unicità delle tuple (righe)

▪ Inizializzazione

Elenco = {'nome':'Mario', \'cognome':'Rossi', \'eta':35}

Dizionari: operazioni

▪Accesso agli elementi

Elenco['nome'] = 'Piero'

print(Elenco['sesso'])

print(Elenco.get('sesso', None))

▪Conversione in lista

list(Elenco.items())

Dizionari: operazioni

▪Scansione

for chiave in Elenco:

print(chiave, Elenco[chiave])

for (chiave, val) in Elenco.items():

print(chiave, val)

Dizionari: metodi

▪Valore del dizionario D con chiave k, se non esiste k restituisce default (se specificato)

D.get(k [, default])

▪Estrae il valore con chiave k e eliminal’elemento , se non esiste k restituisce default (se specificato)

D.pop(k [, default])

Dizionari: metodi

▪Elenca tutte le chiavi del dizionario D

D.keys()

▪Elenca tutti i valori del dizionario D

D.values()

▪Elenca tutte le tuple del dizionario D

D.items()

▪Elimina tutte le voci del dizionario D

D.clear()

Dizionari: altre operazioni

▪Numero di voci nel dizionario D

len(D)

Gestione delle eccezioni

try:

istruzioni-1

except ValueError:

istruzioni-2

▪Controlla il “buon esito” di un blocco di istruzioni (istruzioni-1).

▪ In caso di errore di run-time verranoeseguite le istruzioni-2.

Funzioni anomine

▪Funzioni anonime

lambda var-1 [,var-2, …]: espressione

Alias di funzioni

assoluto = abs

radq = math.sqrt

incrementa = lambda x: x+1

▪Liste di funzioni

L = [abs, math.sqrt, lambda x: x+1]

▪Dizionari di funzioni

DF = {'assoluto':abs,

'radq':math.sqrt,

'incrementa':lambda x: x+1}

Funzioni speciali

▪Mappatura

map( funzione ,dati )

▪Filtraggio

filter( funzione ,dati )

▪Riduzione

reduce( funzione ,dati )

(Per python 3 importare:)

# from functools import reduce

Object Oriented Programming(OOP)

▪Programmazione Orientata agli Oggetti

Nuova tecnica di programmazione che concentral’analisi sui dati e sulle azioni da applicare a questi

▪SUGGERIMENTO PRATICO:

Si tratta di un’INTEGRAZIONE di quanto già visto(singoli moduli e/o funzioni), da utilizzare in ognisituazione in cui torni utile, NON forzarel’implementazione esclusivamente agli oggetti

Grafici

▪Oggetto:

▪Turtle

from turtle import Turtle

▪pyplot

from matplotlib import pyplot

Grafici: Turtle

▪ from turtle import Turtle

▪ # ISTANZA (ESEMPLARE)

▪ t = Turtle()

▪ # NON SCRIVERE

▪ t.up()

▪ # Posizionamento sul piano

▪ t.goto(2,2)

▪ # PRONTI A SCRIVERE

▪ t.down()

▪ # TRACCIO UNA RIGA di 50 px

▪ t.forward(50)

▪ # CAMBIO DIREZIONE

▪ t.setheading(90)

▪ # TRACCIO UNA RIGA di 50 px

▪ t.forward(50)

Grafici: pyplot

from matplotlib import pyplot

p = pyplot

p.plot(x, y)

p.xlabel('time')

p.ylabel('frequence')

p.show()

Numeri pseudo-casuali

▪ import random

▪x = random.randint(1,6)

▪x = random.gauss(0,1)

Files di testo

▪Apertura

f = open(nome file, modalità)modalità = 'w' oppure 'r'

▪Chiusura

▪f.close()

▪Lettura

▪f.read()

▪f.readline()

▪Scrittura

▪f.write(stringa)

OOP: class

▪Nella Programmazione Orientata agliOggetti gli oggetti vengono definitiattraverso le classi e utilizzatiattraverso le istanze (o esemplari)

▪Una classe si compone di▪attributi: caratteristiche o prprietàdell’oggetto

▪metodi: azioni che l’oggetto può eseguire

▪eventi: lo stato in cui si trova un oggetto


Recommended