Numeri e stringhe. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Documenti analoghi
I tipi di dati. Il comando dir. Capitolo 4

La codifica. dell informazione

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Informatica d ufficio

Numeri frazionari. sistema posizionale. due modi: virgola fissa virgola mobile. posizionale, decimale

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

EXCEL: FORMATTAZIONE E FORMULE

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

La programmazione nel linguaggio C

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

Linguaggio C: introduzione

Esame di INFORMATICA (*) Operazioni Aritmetiche: Somma. Lezione 3. Operazioni Aritmetiche: Somma. Operazioni Aritmetiche: Somma

Esercitazione 4. Comandi iterativi for, while, do-while

Linguaggio C Espressioni e operatori

Espressioni aritmetiche e ordine delle operazioni

Rappresentazioni numeriche

Mini-Corso di Informatica

Python. Valerio Perticone

Introduzione al Python

Automatizzare le attività con le macro di Visual Basic

Codifica dei Numeri. Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi

Video Scrittura (MS Word) Lezione 2 Tabelle e Immagini

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

Caratteri e stringhe. Funzioni di libreria

Stringhe. Capitolo 6. Python for Informatics: Exploring Information

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

INTRODUZIONE ALLE BASI DATI RELAZIONALI

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

INDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5.

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

Esercizio 1: archivio CD e DVD

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

FUNZIONI DI BASE PANNELLO SMS

Algebra di Boole Algebra di Boole

Input/output in C e in C++

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

= < < < < < Matematica 1

Files in C++ Fondamenti di Informatica. R. Basili. a.a

La tabella dell addizione Completa la tabella e poi rispondi alle domande.

Diagrammi a blocchi 1

Richiami sulla rappresentazione dei numeri in una base fissata

Lezione 2. Sommario. Il sistema binario. La differenza Analogico/Digitale Il sistema binario

Codice Gray. (versione Marzo 2007)

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

ISTRUZIONI VELOCI DI PYTHON Versione (manuale realizzato con Google Documenti)

TEOREMA DEL RESTO E REGOLA DI RUFFINI

Fondamenti di Programmazione

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

4 GLI ARRAY E LE STRINGHE

La gestione dei caratteri in C

Il linguaggio SQL: query innestate

Problema: calcolare il massimo tra K numeri

Matematica finanziaria

Array multidimensionali e stringhe

Il foglio elettronico: Excel Riferimenti assoluti, relativi e misti

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2014

Rappresentazione di dati: caratteri. Appunti a cura del prof. Ing. Mario Catalano

Sistema Informativo del Turismo

Architettura degli elaboratori Docente:

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

Definizione di metodi

Esercitazioni di Reti Logiche. Lezione 4

Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel

La disposizione estetica della lettera commerciale

Disequazioni in una incognita. La rappresentazione delle soluzioni

PROGRAMMAZIONE STRUTTURATA

DATI, FUNZIONI E FORMULE IN EXCEL Ver.(1.0)

1 Definizione di sistema lineare omogeneo.

Numeri Frazionari. Numeri Frazionari

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

IL MIO PRIMO IPERTESTO CON POWERPOINT

Un esempio di if annidati

3. Matrici e algebra lineare in MATLAB

Le quattro operazioni fondamentali

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

CAPITOLO V. DATABASE: Il modello relazionale

Gestione risorse (Windows)

Variabili d ambiente (2) Variabili d ambiente. Ambito delle Variabili (2) Ambito delle Variabili

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Strutture di accesso ai dati: B + -tree

Manuale del software Supplemento. Comunicazione tra sensore per rilevamento oggetti O2D2xx e Siemens Simatic S / / 2011

Le regole del calcolo aritmetico e le espressioni Arithmetic Expression Rules

ESPONENZIALI E LOGARITMI. chiameremo logaritmica (e si legge il logaritmo in base a di c è uguale a b ).

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori.

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

DOCUMENTAZIONE WEB RAIN - ACCESSO CLIENTI

Informatica Teorica. Macchine a registri

Home Page. Title Page. Contents. Laboratorio di LATEX. Page 1 of 16. Go Back. maggio Full Screen. Close. Quit

Scorciatoie del Web. Krishna Tateneni Yves Arrouye Traduzione: Luciano Montanaro Manutenzione della traduzione: Federico Zenith

Quando usiamo Python in modo interattivo in genere e' lo shell utilizzato che gestisce l'indentazione e la deindentazione.

Operatori Relazionali in MATLAB. Logica e relazioni

PROGETTAZIONE DISCIPLINARE MATEMATICA classe 2^

Transcript:

Andrea Passerini passerini@dsi.unifi.it Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Numeri Principali tipi numerici interi normali interi con una gamma prefissata di possibili valori (che dipende dall architettura, e.g. [-2147483648,2147483647] con parole a 32-bit): 3452, -15, 0 interi lunghi interi con gamma illimitata (dipende dalla quantità di memoria della macchina): 3422252352462462362446L, -134135545444432435l reali in virgola mobile numeri reali, rappresentabili sia in notazione scientifica che non: -1.234, 19e5, -2E-6, 45.4E+24 booleani assumono solo due valori: True (corrispondente a 1) e False (corrispondente a 0). Si usano nelle espressioni logiche.

Operazioni su numeri operatori aritmetici binari: + - * / l interprete esegue operazioni solo su operandi dello stesso tipo. Quando gli operandi sono di tipo diverso, l interprete li converte nel tipo più complesso tra i tipi degli operandi prima di eseguire l operazione >>> 3 / 2 # operandi interi -> divisione intera 1 >>> 3 + 4.5 # primo operando convertito in reale 7.5 >>> 3.2 / 2 # secondo operando convertito in reale 1.6000000000000001 >>> 3 / 1.2 # primo operando convertito in reale 2.5

Operazioni su numeri divisione intera: // la divisione intera restituisce il quoziente della divisione intera a prescindere dal tipo degli operandi numerici se di diverso tipo, gli operandi vengono comunque prima convertiti nel tipo più complesso >>> 3 // 2 1 >>> 3.2 // 2 1.0 >>> 3 // 1.2 2.0

Operazioni su numeri modulo: % l operazione di modulo restituisce il resto della divisione intera funziona sia per operandi interi che reali, nel secondo caso il resto sarà un numero reale >>> 3 % 2 1 >>> 4.5 % 2 0.5 >>> 4.5 % 2.5 2.0

Operazioni su numeri elevamento a potenza: ** eleva il primo operando alla potenza del secondo effettua automaticamente la conversione di tipo del risultato se necessario >>> 4 ** 2 16 >>> 4 ** 2.5 32.0 >>> 4 ** -1 0.25

Operazioni su numeri operatori di confronto: < <= > >= == <>!= Confrontano due operandi e restituiscono un valore di verità >>> 4 <= 5 True >>> -2 > 6 False L operatore di uguaglianza (==) non va confuso con l istruzione di assegnazione (=) >>> 5 == 6 False >>> 5 = 6 File "<stdin>", line 1 SyntaxError: can t assign to literal

Operazioni su numeri operatore di disuguaglianza: <>!= L operatore di disuguaglianza si scrive in due modi equivalenti: >>> 4!= 4 False >>> 4 <> 5 True

Operazioni su numeri operatori logici: and or not Permettono di costruire espressioni logiche di cui testare il valore di verità: >>> 4 == 4 and 5 < 3 False >>> 4 > 2 or not 4 > 2 True

Operatori logici Cosa è vero e cosa è falso Falso False, None, lo zero (di qualunque tipo), un oggetto vuoto (stringa, tupla, etc) Vero tutto il resto >>> not "" >>> not None True True >>> not "piena" >>> not 0.0 False True >>> not () >>> a = [1,2] True >>> not a >>> not (1,2) False False

Operatori Precedenze Quando si scrivono espressioni contenenti combinazioni di operatori, l ordine con cui le operazioni sono eseguite dipende dalla precedenza degli operatori gli operatori ordinati per precedenza decrescente sono: * % / // + - < <= > >= == <>!= not and or quando due operatori hanno stessa precedenza, l ordine è da sinistra a destra è sempre possibile (e più facile) forzare l ordine delle operazioni raggruppando tra parentesi tonde le sottoespressioni

Operatori Precedenze: esempi >>> 3 + 2 * 5 13 >>> (3 + 2) * 5 25 >>> 5 + 4 > 8 True

Operatori Operatori e variabili Una variabile viene creata nel momento in cui le si assegna un valore. >>> a = 4 * 2 / 3 Non è possibile utilizzare una variabile prima che venga creata >>> print b Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name b is not defined Una successiva istruzione di assegnazione modificherà il contenuto di una variabile con il risultato dell espressione a destra dell assegnazione >>> a = 4 * 5 >>> b = 2 >>> a = a ** b >>> print a 400

Stringhe: rappresentazione Apici singoli e doppi Una stringa può essere delimitata da apici singoli o doppi >>> "abc" abc >>> abc abc l eco dell interprete (salvo casi particolari) restituisce una stringa delimitandola con apici singoli I due tipi di rappresentazione sono utili per scrivere stringhe contenenti l altro tipo di apice: >>> "l alba" "l alba" >>> tra "apici" tra "apici"

Stringhe: rappresentazione Sequenze di escape Le stringhe possono contenere alcuni caratteri speciali di controllo. Questi caratteri vengono preceduti dal carattere \ (backslash) generando una sequenza di escape. Sequenze di escape si usano anche per poter scrivere caratteri come apici, e la \ stessa. Le più comuni sequenze di escape sono: \\ backslash (scrive \) \ apice singolo (scrive ) \ apice doppio (scrive ) \n ritorno a capo \t tab orizzontale

Stringhe: rappresentazione Esempi di sequenze di escape >>> print "ab\\\tcd\nef" ab\ cd ef >>> "ab\\\tcd\nef" ab\\\tcd\nef eco vs print L eco dell interprete dei comandi non restituisce lo stesso output del comando print Il comando print formatta gli oggetti in maniera più fruibile. Per le stringhe, interpreta le sequenze di escape.

Stringhe: rappresentazione Stringhe raw In alcuni casi (e.g. percorsi di file in sistemi Windows), la presenza delle sequenze di escape complica le cose E possibile specificare che una stringa deve essere letta così com è aggiungendo il prefisso r (per raw): >>> print "C:\system\tmp" C:\system mp >>> print r"c:\system\tmp" C:\system\tmp

Stringhe: rappresentazione Stringhe con virgolette triple Per poter rappresentare una stringa che abbia più righe con le modalità precedenti, è necessario scriverla su un unica riga inserendo sequenze di escape \n. E possibile invece scrivere stringhe su più righe, delimitandole con virgolette triple (usando sia singoli che doppi apici) >>> multiriga = """vai a capo con invio... l interprete chiede altro testo... finisci con """ >>> >>> print multiriga vai a capo con invio l interprete chiede altro testo finisci con nelle sessioni interattive, se l interprete si aspetta del testo su più righe, presenta... invece di >>>.

Operazioni su stringhe Operatori Somma tra stringhe concatena due stringhe e restituisce il risultato >>> "biologia" + "molecolare" biologiamolecolare Prodotto stringa per intero replica la stringa un numero di volte pari all intero, e restituisce la stringa risultante (e.g. utile per stampare delimitatori) >>> "=" * 20 ====================

Operazioni su stringhe Operator overloading Somma e prodotto producono risultati diversi rispetto alla versione con operandi numerici Si parla di operator overloading: il risultato di un operazione dipende dal tipo degli operandi Se non è stata definita un operazione per il tipo degli operandi proposti, si genera un errore >>> "x" * "=" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can t multiply sequence by non-int of type str

Stringhe come sequenze Operazioni su sequenze Una stringa è una sequenza di caratteri Una sequenza è una collezione di oggetti (in questo caso caratteri) con ordinamento posizionale (da sinistra a destra) Questa caratteristica fa sì che le stringhe supportino una serie di operazioni su sequenza Ad esempio si può calcolare la lunghezza di una stringa (numero di caratteri): >>> len("abcd") 4 >>> len("abcd\n ") # \n vale 1 carattere 6

Operazioni su sequenze Ricerca L operatore di confronto in restituisce True se un certo carattere (o sottostringa) si trova in una stringa, False altrimenti >>> s = "abcd" >>> "a" in s True >>> "bc" in s True >>> "bcd" in s True >>> "ad" in s False

Operazioni su sequenze Indicizzazione E possibile recuperare un carattere all interno di una stringa specificandone la posizione (a partire da zero): >>> s = "abcd" >>> s[0] a >>> s[3] d >>> s[4] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range Superare gli estremi della stringa genera un errore

Operazioni su sequenze Indicizzazione E possibile specificare posizioni negative, che si contano da destra a sinistra (a partire da -1): >>> s = "abcd" >>> s[-1] d >>> s[-3] b >>> s[-4] a La posizione può essere specificata tramite un espressione che restituisca un valore numerico >>> a = -3 >>> b = 1 >>> s[a+b] c

Operazioni su sequenze Sottostringa Permette di restituire porzioni di stringa (slices) X[i:j] restituisce la sottostringa che va dalla posizione i inclusa alla j esclusa >>> s = "abcd" >>> s[1:3] bc i vale 0 se non specificato. j vale la lunghezza della stringa se non specificato. >>> s[1:len(s)] >>> s[:3] bcd abc >>> s[1:] >>> s[:-1] bcd abc >>> s[0:3] >>> s[:] # copia stringa abc abcd

Operazioni su sequenze Operazioni su altri tipi di sequenze Le operazioni su sequenze sono definite su tutti i tipi sequenza Anche liste e tuple sono sequenze (vedremo). >>> a = [1,2,3,4] >>> len(a) 4 >>> a[-2] 3 >>> a[:-2] [1, 2] >>> a * 2 [1, 2, 3, 4, 1, 2, 3, 4] >>> a + [5,6] [1, 2, 3, 4, 5, 6]

Immutabilità delle stringhe Oggetti immutabili Le stringhe sono un tipo di oggetti immutabili Non è possibile modificare una stringa una volta creata Le operazioni su stringhe restituiscono sempre un nuovo oggetto con il risultato. Il vecchio oggetto rimane invariato >>> s = "abcd" >>> s * 2 abcdabcd >>> s abcd

Immutabilità delle stringhe Oggetti immutabili Non è possibile quindi sostituire un carattere all interno di una stringa >>> s[2] = "h" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: str object does not support item assignment E sempre possibile però assegnare la nuova stringa creata alla variabile che si riferiva alla vecchia stringa >>> s = "abcd" >>> s = s * 2 >>> s abcdabcd Non stiamo modificando la vecchia stringa, ma solo cambiando l oggetto a cui la variabile si riferisce

Conversioni di tipo Operazioni tra stringhe e numeri Abbiamo detto che non è possibile eseguire operazioni tra tipi non compatibili (e.g. sommare una stringa e un numero) E possibile però convertire esplicitamente un oggetto di un tipo in uno di un altro tipo (dove tale conversione è definita) >>> "x=" + str(12) # str da numeri a stringhe x=12 >>> int("3") + 4 # int da stringhe a interi 7 >>> float("3.2") / 1.2 # float da stringhe a reali 2.666666666666667

Formattazione di stringhe Operatore % L operatore % serve a formattare una stringa a partire da una tupla di argomenti. >>> "x=%s,y=%s,z=%s" % (5,10,"basso") x=5,y=10,z=basso La stringa a sinistra contiene degli specificatori di conversione (%s), la tupla a destra i valori da sostituirci %s indica una stringa, in pratica utilizza la funzione str per convertire l elemento corrispondente della tupla in una stringa

Metodi Metodi di oggetti La maggior parte dei tipi di oggetti Python (a parte i numeri) possiede metodi Un metodo è semplicemente una funzione che esegue una certa operazione sull oggetto Un metodo può avere degli argomenti e/o restituire un risultato (come abbiamo visto per le funzioni. e.g. len("abcd")) I metodi di un oggetto si chiamano tramite un riferimento all oggetto stesso, facendolo seguire da. e il nome del metodo, eventualmente seguito dai valori degli argomenti tra parentesi >>> s = "abcd" >>> s.replace("bc","xx") axxd

Metodi di stringhe Ricerche s.find(sub) Restituisce l indice della prima occorrenza della sottostringa sub (o -1 se sub non c è in s). E possibile specificare una gamma di posizioni in cui cercare più piccola della stringa intera >>> s = "abbcddbbc" >>> s.find("bc") 2 >>> s.find("bc",4) 7 >>> s.find("bc",4,6) -1

Metodi di stringhe Ricerche endswith restuisce vero se la stringa finisce con una certa sottostringa (o una scelta da una tupla), falso altrimenti. >>> s = "abbcddbbc" >>> s.endswith("bc") True >>> s.endswith("xx") False >>> s.endswith(("bb","bc")) True

Metodi di stringhe Modifiche replace sostituisce tutte le occorrenze (o il numero richiesto) di una certa sottostringa con un altra >>> s = " abbcddbbc\n" >>> s.replace("bb","xx") axxcddxxc\n >>> s.replace("bb","xx",1) axxcddbbc\n upper,lower convertono una stringa in maiuscola o minuscola >>> s.upper() ABBCDDBBC\n lstrip,rstrip,strip rimuovono spazi,tab e ritorni a capo da inizio, fine o da inizio e fine stringa >>> s.lstrip() >>> s.rstrip() abbcddbbc\n abbcddbbc >>> s.strip() abbcddbbc

Metodi di stringhe Conversioni con liste split permette di convertire una stringa in una lista di sottostringhe, specificando il delimitatore da usare (spazi,tab o ritorni a capo di default) >>> s = "spazi o virgole, a scelta, per separare" >>> s.split() [ spazi, o, virgole,, a, scelta,, per, separare ] >>> s.split(",") [ spazi o virgole, a scelta, per separare ]

Metodi di stringhe Conversioni con liste Nota join permette di convertire una lista in una stringa, concatenando gli elementi e usando la stringa di partenza come delimitatore >>> s = ":" >>> s.join(["a","b","c","d"]) a:b:c:d I metodi si possono applicare anche direttamente agli oggetti, non solo a variabili che siano loro riferimenti >>> "".join(["a","b","c","d"]) abcd

Metodi di stringhe Esempio Prendere una sequenza proteica e stamparne le sottosequenze separate da C o H, una per riga >>> s = "ACFGEDHTGJDFG" >>> s1 = s.replace("h","c") >>> s1 ACFGEDCTGJDFG >>> l = s1.split("c") >>> l [ A, FGED, TGJDFG ] >>> s2 = "\n".join(l) A\nFGED\nTGJDFG >> print s2 A FGED TGJDFG

Metodi di stringhe Esempio (rivisto) Invece di assegnare i risultati delle operazioni intermedie a variabili temporanee (e.g. s1,l,s2) si possono direttamente concatenare le operazioni: >>> s = "ACFGEDHTGJDFG" >>> s.replace("h","c").split("c") [ A, FGED, TGJDFG ] >>> print "\n".join(s.replace("h","c").split("c")) A FGED TGJDFG

Documentazione dir La funzione dir prende come argomento un oggetto (o un suo riferimento), e restituisce la lista dei suoi attributi (vedremo) e metodi. >>> dir("") [ add, class, contains, delattr, doc, eq, ge, getattribute, getitem, getnewargs, getslice, gt, hash, init, le, len, lt, mod, mul, ne, new, reduce, reduce_ex, repr, rmod, rmul, setattr, str, capitalize, center, count, decode, encode, endswith, expandtabs, find, index, isalnum, isalpha, isdigit, islower, isspace, istitle, isupper, join, ljust, lower, lstrip, partition, replace, rfind, rindex, rjust, rpartition, rsplit, rstrip, split, splitlines, startswith, strip, swapcase, title, translate, upper, zfill ]

Documentazione dir Le parole che iniziano per indicano attributi e metodi speciali (da ignorare per adesso) Le altre parole indicano metodi che possono essere eseguiti sull oggetto (e.g. capitalize, find)

Documentazione help La funzione help permette di stampare informazioni sull argomento passato Chiamando help con il nome di un metodo si ottiene una descrizione di cosa fa il metodo >>> help("".join) Help on built-in function join: join(...) S.join(sequence) -> string Return a string which is the concatenation of the strings in the sequence. The separator between elements is S. Per uscire dall help e tornare al prompt dei comandi, premere il tasto q (quit)