DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab 1 – Info B
Marco D. Santambrogio – [email protected]
Riccardo Cattaneo – [email protected]
Ver. aggiornata al 12 Ottobre 2013
Obiettivi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Imparare ad usare l’ambiente di sviluppo
 Cosa è e come funziona un compilatore
 Sistemazione degli ambienti di sviluppo
 Comandi base da linea di comando
• Esercitarsi sui costrutti visti a lezione
 Inserimento dati da tastiera
 Controllo dei dati
 Uso delle funzioni
2
Lab 1: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
3
Lab 1: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
4
Calendario dei Labs
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 15 Ottobre 2013, 10am-12pm, @ LM1
 Installation Party: strumenti di sviluppo per il corso di
Info B
• 22 Ottobre 2013, 10am-12pm, @ LM1
 C: Strutture di controllo e cicli
• 29 Ottobre 2013, 10am-12.45pm, @ LM1
 C: array e matrici
• 12 Novembre 2013, 10am-12.45pm, @ LM1
 C: tipi di dato e strutture
5
Calendario dei Labs
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 10 Dicembre 2013, 12pm-2pm, @ LM1
 MATLAB: Ambienti di sviluppo e primi codici
• 7 Gennaio 2014, 10am-12.45pm, @ LM1
 MATLAB: strutture di controllo, tipi di dato
strutturato, e vettori
• 14 Gennaio 2014, 10am-12.45pm, @ LM1
 MATLAB: funzioni ricorsive
• 21 Gennaio 2014, 10am-12.45pm, @ LM1
 MATLAB: funzioni ricorsive, funzioni di ordine
superiore, grafici 2D e 3D
6
Struttura
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tolte le slide di “contesto” su
 Obiettivi
 Elenco esercizi
• Approccio dritto al sodo, niente "fronzoli":
 Introduzione all'uso di un editor di testo e di una shell
 Non useremo un IDE (e.g., code::blocks, eclipse, ...)
• È una proposta, ci sono molti modi diversi di ottenere gli stessi risultati
• Per info, fare riferimento al sito del corso:
Home: http://home.deib.polimi.it/santambr/dida/infob
Corso di questo anno: Home/1314
Calendario: Home/calendario.htm
Video: Home/1314/video.htm
7
Lab 1: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
 Ambiente di sviluppo
 Un primo programma
• Esercizi Lab1
8
Ambienti di sviluppo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• C
 Un compilatore C
• g++, gcc
• MinGW: http://www.mingw.org/
 Un editor/IDE
• Code::Blocks: http://www.codeblocks.org/
• Geany: http://www.geany.org/
• DevC++: http://www.bloodshed.net/devcpp.html
• Matlab
 Matlab: http://www.mathworks.it/products/matlab/
 Octave: http://www.gnu.org/software/octave/
 QtOctave: http://www.malinc.se/math/octave/mainen.php
• Virtual Machine già pronte
 http://home.deib.polimi.it/santambr/dida/infob/1314/labgb/tools.htm
9
Ambiente di sviluppo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Useremo un ambiente basato su distribuzioni
Linux:
 Sulle macchine del lab
 Sui vostri portatili…
• Per sviluppare del codice C, è sufficiente avere:
 Un editor di testo, magari con syntax highlighting (e.g.,
geany, gedit) - Un compilatore (e.g., gcc)
10
Ambiente – CentOS o VM
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Editor:
gedit
Shell:
bash
11
Come si lanciano…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
12
Struttura di un programma C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
parte dichiarativa globale
inclusione librerie / per poter invocare funzioni utili (i/o, ...) /
dichiarazione di variabili globali e funzioni
int main ( ) {
parte dichiarativa locale
dichiarazione di variabili locali
istruzione 1;
istruzione 2;
istruzione 3;
istruzione 4;
...
istruzione N;
/ tutti i tipi di operazioni, e cioè: /
/ istr. di assegnamento /
/ istr. di input / output /
/ istr. di controllo (condizionali, cicli) /
parte esecutiva
}
Ogni programma C deve contenere un modulo int main() {...}
13
Il primo programma: ciao mondo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
14
Tutorial: bash e gcc
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Ecco alcuni comandi utili per utilizzare la shell bash:




$ pwd - (Print Working Directory) visualizza la directory corrente
$ ls - elenca i file presenti nella cartella corrente
$ cd CARTELLA - cambia la cartella corrente a CARTELLA
$ ./PROG - esegue il programma specificato (se è nella cartella
corrente)
• Questi pochi comandi sono sufficienti per individuare ed
eseguire un programma
 Per compilare un sorgente, abbiamo usato il comando gcc
• gcc FILE.c -o PROG
 Questo comando traduce il codice sorgente presente in FILE.c
e lo salva nel file eseguibile PROG
15
HowTo: compilare ed eseguire
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Per poter eseguire il nostro programma, bisogna tradurlo in
codice macchina
 Questa operazione viene eseguita dal compilatore (e.g., gcc)
• Scritto e salvato il file sorgente (e.g., sul Desktop, nel file
primo.c),
• Dobbiamo compilare ed eseguire un programma
utilizzando una shell (e.g., bash)
$ cd Desktop
$ gcc primo.c –o exe
$ ./exe
16
Lab 1: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
17
Exe 1: Stampa a video
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Scrivere un programma in C che
visuallizzi a video la seguente scritta:
INFOB - 2013/2014
Laboratorio 1
Studente: Nome Cognome
Matricola: #mat
18
Exe 2: Trova errori
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il seguente programma non funziona…
19
Exe 3: Mostra caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Si scriva un programma che richieda
l’inserimento di un carattere e lo mostri
a video, con anche la sua codifica
ASCII
20
Exe 4: Gestione errori sull’input
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Si scriva un programma in C che ammete
l’inserimento da tastiera solo di numeri
dispari e compresi tra 1 e 7
21
Exe 5: Inserimento dati
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Si scriva un “convertitore” di unità dal
sistema SI al US customary units
• Ci interessano solo le seguenti
conversioni
 piedi in metri (1ft= 0.3048 m)
 pound in Kg (1lb = 453.59237g)
 yard in metri (1yd = 0.9144m)
22
Fine…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
23
Scarica

V5 - PPT