Tags:
tag this topic
create new tag
view all tags
%TOC% ---+ Primi passi Questa pagina cerca di aiutare a muovere i primi passi con il linguaggio di programmazione Python. In particolare, guida alla prima installazione e a configurare il sistema in modo da poter seguire e partecipare ai laboratori. ---+ Installare il software Tipicamente questo passaggio dovrebbe essere necessario su una macchina privata, dato che le macchine dei laboratori dovrebbero già essere configurate, mediante il meccanismo di macchine virtuali di Windows 10. ---++ Che software usiamo? * Python 3 - nella versione installata con il gestore Anaconda che include Python 3.7 * Un editor di testi - NON un editor di documenti come Word - per scrivere i nostri programmi in Python. Consideriamo due diverse alternative: IDLE (l'edtor incluso nell'installazione standard di Python) e Spyder (l'editor incluso in Anaconda). Comunque, qualsiasi editor di testi va bene (notepad, notepad++, gedit, atom e simili). ---++ Scaricare il software e installare A seconda della versione del nostro PC (32-bit o 64-bit) e del nostro sistema operativo (Windows, MacOS, Linux), scarichiamo il giusto pacchetto dal sito <a href="https://www.anaconda.com/distribution" target="_blank">https://www.anaconda.com/distribution</a> e installiamo seguendo le indicazioni che ci forniscono. ---+ Usare il terminale e l'editor Per questa pagina useremo Anaconda installato sotto Windows. Abbiamo l'opportunità di usare l'editor IDLE o l'editor Spyder. In realtà, Spyder è un software molto più complesso di IDLE, dato che ---come vedremo--- include molte funzionalità in più di un semplice editor di testi. Dal menu di Windows, cerchiamo la cartella Anaconda e selezioniamo *Anaconda Prompt.* <img alt="python01.jpg" height="646" src="%PUBURL%/Programmazione1/AA17_18/PrimiPassi/python01.jpg" title="python01.jpg" width="552" /> In questo modo si aprirà una finestra nera in cui possiamo inserire del testo. <img alt="python00.jpg" height="512" src="%PUBURL%/Programmazione1/AA17_18/PrimiPassi/python00.jpg" title="python00.jpg" width="979" /> Questa finestra si chiama *terminale* e mostra la riga di comando (command line). <blockquote> DIVAGAZIONE: il nome "terminale" deriva dal fatto che tale software svolge la stessa funzione dei vecchi terminali, ovvero macchine degli inizi dell'era informatica, il cui unico scopo era quello di fare da tramite tra l'operatore umano e il main-frame, ricevendo i comandi (l'input) dall'operatore e l'esito del comando (l'output) dal mainframe. Il terminale è l'interfaccia che usiamo per interagire con il nostro sistema operativo e con il quale possiamo svolgere le stesse funzioni dell'interfaccia grafica, ovvero avviare applicazioni, copiare e maneggiare i file e, in generale, cambiare la configurazione del nostro sistema. </blockquote> La riga di comando include un cursore lampeggiante dopo una riga del tipo C:\Users\Angelo>, che indica il fatto di essere pronto a ricevere i nostri comandi. Tale riga è la<b> directory corrente</b> della riga di comando ed è molto importante dato che determina il modo in cui possiamo indicare i programmi da eseguire. Noi vogliamo eseguire l'editor IDLE e pertanto digitiamo *idle* seguito da invio e aspettiamo. <pre>(C:\Users\Angelo\Anaconda3\) C:\Users\Angelo>idle</pre> In questo modo abbiamo chiesto al sistema operativo di avviare il programma con nome idle.exe. Si aprirà una finestra bianca con un prompt diverso da quello del terminale. <img alt="python02.jpg" height="196" src="%PUBURL%/Programmazione1/AA17_18/PrimiPassi/python02.jpg" title="python02.jpg" width="672" /> <blockquote> ATTENZIONE ATTENZIONE!! Se l'invocazione di idle ritorna un errore di comando non trovato, allora non abbiamo eseguito la riga di comando di Anaconda. Questo perché i programmi che abbiamo installato con Anaconda NON SONO conosciuti dalla riga di comando di Windows, ma devono essere manualmente inclusi, ovvero sono inclusi nel prompt di Anaconda. Più precisamente, il percorso nel filesystem in cui sono i file degli eseguibili non è incluso nella variabile di ambiente PATH, che contiene la lista di percorsi utilizzata dalla riga di comando per cercare i file degli eseguibili. </blockquote> Tale riga di comando, adesso, è la nostra interfaccia con l'inteprete python! Qui possiamo inserire i nostri comandi python e ne vedremo l'esito dell'esecuzione. Per aprire l'editor, adesso, selezioniamo dal menu *File->New File* e si aprirà, finalmente, il nostro editor di testi. L'editor di testi è diverso da un editor di documenti (word processor): Microsoft Word o Google Docs o Apple Pages o qualsiasi editor di documenti sono in grado di produrre e formattare bellissimi documenti, ma non sono progettati per mostrare e accedere al *contenuto reale* di un file. Quando creiamo un documento, vengono impiegati tanti caratteri che, in realtà, non sono mostrati a video, i cosiddetti caratteri speciali e le informazioni di formattazione. Per i nostri programmi python, tali informazioni non vanno bene. Il nostro python (e in generale un qualsiasi linguaggio di programmazione) ha bisogno di file con testo puro (*raw text*), ovvero sequenze di carattari. Gli editor di testi sono in fatti in modo da generare esattamente tali tipi di file. Inseriamo del testo nella finestra dell'editor... <img alt="python03.jpg" height="266" src="%PUBURL%/Programmazione1/AA17_18/PrimiPassi/python03.jpg" title="python03.jpg" width="674" /> e salviamo il nostro nuovo file: *File->Save As...*. Questo ci mostrerà una nuova finestra che ci permette di scegliere dove salvare il nostro file. Selezioniamo Documenti e la directory Python Scripts e scegliamo un nome per il file (esempio *hello.py*). <img alt="python04.jpg" height="473" src="%PUBURL%/Programmazione1/AA17_18/PrimiPassi/python04.jpg" title="python04.jpg" width="674" /> Adesso nella finestra dell'editor, vediamo che è cambiato il titolo e mostra il percorso completo del nostro nuovo file (C:/Users/Angelo/Documents/Python Scripts/hello.py). <img alt="python05.jpg" src="%PUBURL%/Programmazione1/AA17_18/PrimiPassi/python05.jpg" /> E' importante osservare bene i *percorsi dei file* (ovvero la sequenza di directory in cui essi sono salvati) poiché la riga di comando ha bisogno di sapere dove sono i file che vogliamo usare come input, come vedremo più avanti. Nella figura qui su, ad esempio, il percorso del file hello.py è C:/Users/Angelo/Documents/Python Scripts/hello.py, come indicato nel titolo della finestra. Ricapitolando, dovremmo avere aperto tre finestre: 1 Il terminale con il prompt della riga dei comandi (schermo nero) 1 Il prompt dell'interprete python (schermo bianco) 1 L'editor di testi. NOTA: l'utilizzo di IDLE come editor è solo una delle possibili scelte che abbiamo. Possiamo, infatti, usare un qualsiasi editor di testi che sia in grado di evidenziare la sintassi di python e salvare i file in un formato che python possa interpretare. ---+ Usare la command line Come abbiamo detto qualsiasi cosa possiamo fare con l'interfaccia grafica, possiamo farla con il terminale. Per usare python è bene conoscere un po' meglio la command line. La cosa principale da conoscere è il concetto di *directory corrente* (o anche *working directory*), che viene spesso visualizzata direttamente nel prompt della riga di comando. Ad esempio, la nostra riga di comando in Windows è: <pre>C:\Users\Angelo\Documents\Python Scripts></pre> allora la directory corrente è la directory Python Scripts, all'interno della directory Documents, all'interno della directory Angelo, all'interno della directory Users del disco C:. NOTA: in Linux e MacOS, il prompt è tipicamente diverso poiché non viene mostrato il disco e la directory è relativa alla home dell'utente. Per cui, per conoscere la working directory in maniera univoca bisogna usare il comando *pwd* (print working directory). Quindi, ammesso che il nostro utente si chiami angelo: <pre>mypc:Documents/Python Scripts angelo$ pwd<br />/home/angelo/Documents/Python Scripts<br />mypc:Documents/Python Scripts angelo$</pre> <blockquote> La prima cosa utile da sapere della riga di comando è che mette a disposizione molti comandi da tastiera che rendono rapido il suo uso. In particolare: * l'auto-completamento con il tasto TAB, che consente di aiutare a completare automaticamente i nomi dei file e dei comandi (ad esempio se iniziamo a scrivere "cd Doc" e premiamo il tasto TAB --quello sopra il CAPS Lock-- la riga di comando completa da solo il comando "cd Documents"). Immaginiamo la comodità se il nome del file che vogliamo scrivere è qualcosa tipo user_assignments_settings_with_fixed_names_v.1.4.05-rev3.12.json o peggio... * la navigazione della storia, che consiste nel memorizzare tutti i comandi eseguiti e consente di richiamare i comandi inseriti in precedenza per eseguirli di nuovo o alterarli prima di eseguirli. </blockquote> Per usare propriamente la riga di comando due comandi in particolare sono importanti: * *dir* (*ls* in linux/MacOS) - che serve per listare tutti i file nella directory corrente * *cd* - che sta per change directory, che serve per cambiare la directory corrente. Per cui, ogni volta che vogliamo controllare che il file che vogliamo eseguire sia nella directory corrente, possiamo usare dir (o ls) ed eventualmente cd per cambiare directory. Il comando cd può essere usato per cambiare la directory corrente, spostandosi all'interno delle directory del nostro sistema. Viene utilizzato specificando il nome della directory in cui vogliamo spostarci. Quindi se siamo all'interno della directory C:\Users\Angelo e vogliamo passare nella directory Documents, dobbiamo semplicemente usare il nome della directory: <pre>C:\Users\Angelo> cd Documents<br />C:\Users\Angelo\Documents></pre> Per tornare alla directory precedente, usiamo il nome speciale composto da due punti %RED%..%ENDCOLOR% come nell'esempio seguente: <pre>C:\Users\Angelo\Documents> cd ..<br />C:\Users\Angelo></pre> La sintassi di cd in Linux e MacOS è identica. Perché è importante conoscere la directory corrente della riga di comando? Perché quando vogliamo eseguire un programma python dobbiamo essere sicuri che *il file da eseguire sia nella directory corrente*. Alternativamente, dobbiamo specificare a python *l'intero percorso del file*, comprese tutte le sotto-directory. Esempio: per eseguire il file hello.py che abbiamo creato prima, potremmo usare i seguenti comandi (che sono equivalenti) <pre>C:\Users\Angelo\Documents\Python Scripts> python hello.py<br />C:\Users\Angelo>python "C:\Users\Angelo\Documents\Python Scripts\hello.py"</pre> <blockquote> ATTENZIONE!! Poiché il file hello.py che abbiamo creato prima NON contiene codice python, otteremo un'errore... INOLTRE, nella seconda versione del comando abbiamo dovuto usare le virgolette poiché era presente un carattere di spazio nel nome di una delle directory (Python Scripts). INFINE, se abbiamo Linux o MacOS i due comandi sarebbero leggermente diversi, poiché le directory si indicano con lo slash (*/*), invece che con il backslash (*\*). </blockquote> ---+ Uso di Python Python è un linguaggio di programmazione di tipo interpretato e ha una riga di comandi interattiva esattamente come quella che abbiamo per interagire con il sistema operativo. Una delle finestre che abbiamo aperto è esattamente questa riga di comandi e ci serve per iniziare a inserire qualche comando python. Come si vede, il prompt è diverso ed è composto da tre simboli di maggiore >>> Possiamo sperimentare qualche operazione aritmetica. Ricordiamo che alcuni degli operatori che python mette a nostra disposizione sono: * + per la somma * - per la differenza * * per i prodotto * / per la divisione in virgola mobile * // per la divisione intera * % per il resto della divisione intera * ** per l'elevamento a potenza * () le parentesi per cambiare la priorità degli operatori Facciamo qualche prova... <pre>>>> 7*3<br />21<br />>>> 5/2<br />2.5<br />>>> 5//2<br />2<br />>>> 5%2<br />1<br />>>> 5**2<br />25<br />>>> 10**100<br />10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000<br />>>> 5*(4+3)/2<br />17.5<br />>>> </pre> Python mette a disposizione il concetto di funzione, ovvero un modo molto pratico per definire una serie di istruzioni da ripetere. Inoltr, python offre tantissime funzioni che aiutano a scrivere dei programmi utili. Una delle funzioni che useremo spessissimo è la funzione *print*, ovvero la funzione che stampa a video qualcosa. Quando vogliamo usare una funzione in python dobbiamo sempre usare le parentesi tonde. Quindi possiamo chiedere a python di stampare a video la stringa Hello world! usando le parentesi tonde e le virgolette per definire una stringa nel seguente modo: <pre>>>> print("Hello world!")<br />Hello world!<br />>>></pre> Possiamo anche chiedere a python di stampare una stringa e il risultato di un'operazione: <pre>>>> print ("Zero", 4+4-4-4)<br />Zero 0<br />>>></pre> ---+ Eseguire un programma python Usiamo adesso il nostro editor di testi per scrivere il nostro programma. Cambiamo il testo del file hello.py con questo contenuto: <pre>print("Hello world!")</pre> che stampa a video la stringa "Hello world!". Come possiamo vedere, i caratteri che abbiamo inserito sono colorati in maniera diversa, perché l'editor IDLE ci aiuta a distinguere la sintassi di python: i nomi delle funzioni sono di un colore, i simboli sono di un altro e le stringhe di un altro ancora. Salviamo il file dal menu di IDLE *File->Save*. Adesso possiamo eseguire il nostro programma (che, ricordiamo è stato salvato come C:/Users/Angelo/Documents/Python Scripts/hello.py). Dalla riga di comando assicuriamoci di essere nella directory giusta --nel caso usiamo cd per spostarci-- e digitiamo dir (o ls) per essere sicuri che il file sia lì. E adesso possiamo eseguire il programma eseguendo il comando che abbiamo introdotto prima: <pre>C:\Users\Angelo\Documents\Python Scripts> python hello.py<br />Hello world!<br />C:\Users\Angelo\Documents\Python Scripts> </pre> Abbiamo eseguito un programma che stampa una stringa. Possiamo adesso creare qualsiasi altro programma python semplicemente selezionando dal nostro interprete python il comando *File->New File*. ---++ Esercitazione Cerchiamo di scrivere un programma per ognuno dei seguenti problemi: * dati in ingresso 2 numeri, l'algoritmo stampa a video la loro somma * dati in gresso il valore del raggio di un cerchio, l'algoritmo calcola e stampa a video la circonferenza e l'area del cerchio * dati in ingresso 3 valori, l'algoritmo calcola e stampa la media * dati in ingresso la base e l'altezza di un rettangolo, l'algoritmo calcola e stampa a video l'area e il perimetro * somma dei prodotti di un parametro per una lista di valori ---++ Sfida in python! Inseriamo nell'editor in un nuovo file questo testo (facciamo copia e incolla) <pre># Four fours challenge<br /># Filename: fourfours.py<br /># Problem description: The four fours challenge!<br /><br />from math import *<br />print("Zero is", 4+4-4-4)</pre> e salviamo il nuovo file con il nome fourfours.py. Adesso possiamo eseguire il file e vedere che stampa "Zero is 0". La sfida consiste nello scrivere un programma che stampa a video tutti i numeri da 0 a 20 usando sempre e soltanto e comunque quattro 4... Vanno bene anche numeri con decimali (ovvero 1.0, 2.0 etc.) e frazionari (ovvero 0.4, 0.19). Poiché abbiamo usato la riga *from math import **, per affrontare la sfida possiamo usare anche due funzioni matematiche fondamentali, ovvero il fattoriale (*factorial*) e la radice quadrata (*sqrt*): avremo, ad esempio, che factorial(5) ritorna 5!=5*4*3*2*1=120 e che sqrt(9)=3. -- %USERSIG{AngeloSpognardi - 2018-09-24}% ---++ Comments <br />%COMMENT%
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r1
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r1 - 2019-09-23
-
AngeloSpognardi
Log In
or
Register
Programmazione1/AA19_20 Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
Prenotazioni esami
Laurea Triennale ...
Laurea Triennale
Algebra
Algoritmi
Introduzione agli algoritmi
Algoritmi 1
Algoritmi 2
Algoritmi per la
visualizzazione
Architetture
Prog. sist. digitali
Architetture 2
Basi di Dati
Basi di Dati 1 Inf.
Basi di Dati 1 T.I.
Basi di Dati (I modulo, A-L)
Basi di Dati (I modulo, M-Z)
Basi di Dati 2
Calcolo
Calcolo differenziale
Calcolo integrale
Calcolo delle Probabilitą
Metodi mat. per l'inf. (ex. Logica)
canale AD
canale PZ
Programmazione
Fond. di Programmazione
Metodologie di Programmazione
Prog. di sistemi multicore
Programmazione 2
AD
EO
PZ
Esercitazioni Prog. 2
Lab. Prog. AD
Lab. Prog. EO
Lab. Prog. 2
Prog. a Oggetti
Reti
Arch. di internet
Lab. di prog. di rete
Programmazione Web
Reti di elaboratori
Sistemi operativi
Sistemi Operativi (12 CFU)
Anni precedenti
Sistemi operativi 1
Sistemi operativi 2
Lab. SO 1
Lab. SO 2
Altri corsi
Automi, Calcolabilitą
e Complessitą
Apprendimento Automatico
Economia Aziendale
Elaborazione Immagini
Fisica 2
Grafica 3D
Informatica Giuridica
Laboratorio di Sistemi Interattivi
Linguaggi di Programmazione 3° anno Matematica
Linguaggi e Compilatori
Sistemi Informativi
Tecniche di Sicurezza dei Sistemi
ACSAI ...
ACSAI
Computer Architectures 1
Programming
Laurea Magistrale ...
Laurea Magistrale
Percorsi di studio
Corsi
Algoritmi Avanzati
Algoritmica
Algoritmi e Strutture Dati
Algoritmi per le reti
Architetture degli elaboratori 3
Architetture avanzate e parallele
Autonomous Networking
Big Data Computing
Business Intelligence
Calcolo Intensivo
Complessitą
Computer Systems and Programming
Concurrent Systems
Crittografia
Elaborazione del Linguaggio Naturale
Estrazione inf. dal web
Fisica 3
Gamification Lab
Information Systems
Ingegneria degli Algoritmi
Interazione Multi Modale
Metodi Formali per il Software
Methods in Computer Science Education: Analysis
Methods in Computer Science Education: Design
Prestazioni dei Sistemi di Rete
Prog. avanzata
Internet of Things
Sistemi Centrali
Reti Wireless
Sistemi Biometrici
Sistemi Distribuiti
Sistemi Informativi Geografici
Sistemi operativi 3
Tecniche di Sicurezza basate sui Linguaggi
Teoria della
Dimostrazione
Verifica del software
Visione artificiale
Attivitą complementari
Biologia Computazionale
Design and development of embedded systems for the Internet of Things
Lego Lab
Logic Programming
Pietre miliari della scienza
Prog. di processori multicore
Sistemi per l'interazione locale e remota
Laboratorio di Cyber-Security
Verifica e Validazione di Software Embedded
Altri Webs ...
Altri Webs
Dottorandi
Commissioni
Comm. Didattica
Comm. Didattica_r
Comm. Dottorato
Comm. Erasmus
Comm. Finanziamenti
Comm. Scientifica
Comm Scientifica_r
Corsi esterni
Sistemi Operativi (Matematica)
Perl e Bioperl
ECDL
Fondamenti 1
(NETTUNO)
Tecniche della Programmazione 1° modulo
(NETTUNO)
Seminars in Artificial Intelligence and Robotics: Natural Language Processing
Informatica generale
Primo canale
Secondo canale
II canale A.A. 10-11
Informatica
Informatica per Statistica
Laboratorio di Strumentazione Elettronica e Informatica
Progetti
Nemo
Quis
Remus
TWiki ...
TWiki
Tutto su TWiki
Users
Main
Sandbox
Home
Site map
AA web
AAP web
ACSAI web
AA2021 web
Programming web
AA2021 web
AN web
ASD web
Algebra web
AL web
AA1112 web
AA1213 web
AA1920 web
AA2021 web
MZ web
AA1112 web
AA1213 web
AA1112 web
AA1314 web
AA1415 web
AA1516 web
AA1617 web
AA1819 web
Old web
Algo_par_dis web
Algoreti web
More...
AA19_20 Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
P
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
Questo sito usa cookies, usandolo ne accettate la presenza. (
CookiePolicy
)
Torna al
Dipartimento di Informatica
E
dit
A
ttach
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback