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