Esercitazioni di Informatica (CIV) - Politecnico di Milano-DEIB

Esercitazioni di Informatica (CIV)
Introduzione
Andrea Romanoni
[email protected]
sito web: http://home.deib.polimi.it/romanoni/
Dipartimento di Elettronica, Informazione e Bioingegneria
Politecnico di Milano
15 ottobre 2014
L’informatica: questa sconosciuta
Perchè l’informatica?
cosa c’è dietro a un computer (pura curiosità)
per interagire in modo appropriato con una macchina
I
I
I
che ragionamenti permettono alle macchine di funzionare
che potenzialità hanno le macchine
che limiti hanno le macchine
in futuro. . . se avrete a che fare con noi informatici
. . . siete politecnici
Andrea Romanoni
Esercitazioni di Informatica (CIV)
2 / 15
L’informatica: questa sconosciuta
Perchè il linguaggio C?
strumento pratico per implementare le conoscenze teoriche
molto simile a come “ragiona” la macchina
Andrea Romanoni
Esercitazioni di Informatica (CIV)
3 / 15
L’informatica: questa sconosciuta
Perchè il linguaggio C?
strumento pratico per implementare le conoscenze teoriche
molto simile a come “ragiona” la macchina
e allora, perchè FORTRAN?
differenti strumenti per ottenere lo stesso risultato
diverse esigenze → diversi linguaggi
utilizzato da molti ingegneri civili per automatizzare i calcoli
Andrea Romanoni
Esercitazioni di Informatica (CIV)
3 / 15
informatica 6= altre materie
Andrea Romanoni
Esercitazioni di Informatica (CIV)
4 / 15
Gli esercizi in informatica
Gli esercizi sono programmi e i programmi sono come delle scatole
Andrea Romanoni
Esercitazioni di Informatica (CIV)
5 / 15
Gli esercizi in informatica
Gli esercizi sono programmi e i programmi sono come delle scatole
Il vostro scopo è quello di creare la scatola
Andrea Romanoni
Esercitazioni di Informatica (CIV)
5 / 15
Gli esercizi in informatica
Cos’è una soluzione
Informatica
6=
altre materie:
una soluzione non è unica
la soluzione corretta è una scatola che per ogni input restituisce
l’output richiesto
uno stesso problema può essere risolto con differenti algoritmi
(esempio: ordinamento)
stesso problema, diversi linguaggi → diverse soluzioni
è necessario provare gli esercizi a computer
Andrea Romanoni
Esercitazioni di Informatica (CIV)
6 / 15
Gli esercizi in informatica
Come esercitarsi a casa
Strumenti per esercitarsi:
Macchina Virtuale: dove svilupperemo le scatole-programmi
gedit/pluma: editor di testo
terminale: dove inserire comandi
compilatore: gcc oppure clang
GDB: per ispezionare cosa succede nella scatola-programma
Un’ informazione pratica: per scrivere le parentesi graffe:
AltGr + 7 (per {)
AltGr + 0 (per })
Andrea Romanoni
Esercitazioni di Informatica (CIV)
7 / 15
La Macchina Virtuale
Scaricate VirtualBox
(https://www.virtualbox.org/wiki/Downloads) e installatela
sul vostro computer
Scaricate la macchina virtuale sul sito del Prof. Barenghi http://
home.deib.polimi.it/barenghi/doku.php?id=teaching:info1
Installate la macchina virtuale:
I
I
I
Aprite VirtualBox
File → Importa applicazione virtuale → Apri applicazione virtuale →
cercate il file scaricato macchina_virtuale.ova → Apri → Avanti →
Importa
dopo pochi minuti comparirà la voce Informatica in VirtualBox; d’ora
in poi aprendola avvierete la Macchina virtuale
quando avvierete la macchina virtuale vi verrà chiesta una password
che è. . . password
Andrea Romanoni
Esercitazioni di Informatica (CIV)
8 / 15
L’editor di testo
Ovvero gedit o pluma
L’editor di testo sarà il vostro strumento principale dove scrivere i vostri
esercizi-programmi-scatole.
Aprite l’editor di testo (Applicazioni → Accessori → Editor di testo
pluma)
La prima volta aprite: Modifica → Preferenze → e spuntate la voce
Mostrare i numeri di riga
Scrivete il vostro programma
Salvate dando un nome qualsiasi, con il vincolo che finisca in .c
I
I
esempi corretti: es1.c, pippo.c, provate_gli_esercizi_a_computer.c
esempi non corretti: es1, pippo
Andrea Romanoni
Esercitazioni di Informatica (CIV)
9 / 15
Terminale
Il terminale è un “programma“ che vi permette di eseguire altri
programmi.
Aprite il terminale (Applicazioni → Strumenti di Sistema →
Terminale di MATE)
Ora il terminale è ”posizionato” nella cartella ~ovvero nella cartella
Home di utente.
Per vedere cosa contiene la cartella utilizzate il comando (ovvero
scrivete sul terminale) ls abbreviazione di list
per navigare tra le cartelle utilizzate il comando cd abbreviazione di
change directory:
I
I
cd Documenti per entrare nella cartella Documenti
cd ../ per entrare nella cartella che contiene la cartella in cui siete
(insomma, per tornare indietro)
da terminale utilizzerete poi due comandi fondamentali per eseguire il
vostro programma: clang e gdb
Andrea Romanoni
Esercitazioni di Informatica (CIV)
10 / 15
Il compilatore
Ovvero clang
Il compilatore è quel programma che vi permette di inscatolare il codice
che avete scritto nell’editor di testo, traducendolo in un linguaggio
comprensibile alla macchina.
Se ci sono errori nel codice che avete scritto nell’editor, il compilatore vi
darà dei messaggi in cui viene specificato dove si trova l’errore.
Aprite il terminale se non lo avete ancora aperto
entrate nella cartella che contiene il vostro programma scritto con
l’editor, giocando con i comandi cd e ls spiegati nella slide prima
ora compilate il programma. Assumiamo che il vostro programma si
chiami nome.c e che vogliate chiamare programma la scatola che
verrà creata dal compilatore; scrivete allora
I
clang -g nome.c -o programma
dove -o dice al compilatore che la parola successiva sarà il nome della
scatola; -g dice al compilatore che la scatola che crea può essere
aperta da un programma opportuno (slide successiva). Se
dimenticaste di scrivere -g, il compilatore crea la scatola, ma non
potrete eseguire i passaggi della slide che segue (gdb).
Andrea Romanoni
Esercitazioni di Informatica (CIV)
11 / 15
Il compilatore
Ovvero clang
a questo punto, se dopo avere digitato il comando (e premuto invio)
non appare nessun errore, il vostro programma è stato compilato con
sutccesso (ATTENZIONE! è una condizione necessaria affinchè il
programma sia giusto, ma per vedere se effettivamente fa quello che
volete, dovete aprire la scatola oppure in futuro dovrete visualizzare a
schermo i risultati)
Potete eseguire il programma digitando a terminale:
I
./programma
dove al posto di programma dovete inserire il nome del vostro
programma
Fino a che non vedremo le funzioni di output su schermo, non vedrete
succedere nulla quando eseguite il programma, ma in realtà il
programma è stato eseguito, solo che non siamo stati in grado di
vedere cosa è successo all’interno della scatola
Andrea Romanoni
Esercitazioni di Informatica (CIV)
12 / 15
GDB
Ovvero. . . l’apriscatole (o in termini più tecnici il debugger)
Gdb è un programma che vi permette di vedere cosa succede durante
l’esecuzione del vostro programma; vi permette cioè di aprire la scatola.
Aprite il terminale se non lo avete ancora aperto
entrate nella cartella che contiene il vostro programma compilato al
passo precedente con il compilatore clang
digitate gdb programma dove al posto di programma dovete inserire
il nome del vostro programma
ora siete all’interno di gdb. Potete digitare i seguenti comandi:
I
I
I
I
run esegue il programma (attenzione che se non avete messo
breakpoint con il comando break, l’esecuzione non si ferma)
continue continuate l’esecuzione fino al prossimo break
break nome.c:numero che permette a gdb di fermare l’esecuzione
quando viene raggiunta la riga numero del file nome.c
step eseguite la prossima riga del programma
Andrea Romanoni
Esercitazioni di Informatica (CIV)
13 / 15
GDB
Ovvero. . . l’apriscatole (o in termini più tecnici il debugger)
nel caso vogliate passare degli argomenti al vostro programma
(esempio volete passare gli argomenti : 2 6 ciao) dovete avviare gdb
in questo modo (invece di gdb programma):
I
gdb ––args nome_programma argomenti
quindi nel nostro caso
I
gdb ––args programma 2 6 ciao
Andrea Romanoni
Esercitazioni di Informatica (CIV)
14 / 15
Esercizi
Scrivete i seguenti programmi:
Calcola il valore assoluto di una variabile
Calcola l’area del rettangolo
Calcola l’area del cerchio
Calcola il perimetro di un quadrato e la circonferenza di un cerchio e
salva in una variabile il valore minore tra i due
Andrea Romanoni
Esercitazioni di Informatica (CIV)
15 / 15