DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1 – Info B Marco D. Santambrogio – Riccardo Cattaneo – Ver. aggiornata al 9 Agosto 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Agenda Informazioni sui laboratori Benvenuti nel fantastico mondo del C Esercizi Lab1 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Agenda Informazioni sui laboratori Benvenuti nel fantastico mondo del C Esercizi Lab1 3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calendario dei Labs 8 Ottobre 2012, LM1 Installation Party: strumenti di sviluppo per il corso di Info B 22 Ottobre 2012, L13 Primi programmi in C: Strutture di controllo e cicli 29 Ottobre 2012, LM1 C: array e matrici 4 Info da aggiornare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calendario dei Labs 3 Dicembre 2012, L13 MATLAB: ambiente di sviluppo e primi codici 17 Dicembre 2012, LM1 MATLAB: strutture di controllo, tipi di dato strutturato, e vettori 14 Gennaio 2013, LM1 MATLAB: funzioni ricorsive, funzioni di ordine superiore, grafici 2D e 3D 5 Info da aggiornare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Agenda Informazioni sui laboratori Benvenuti nel fantastico mondo del C Esercizi Lab1 6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Premessa: int vs. void main() Lo standard (ANSI C99) prevede luso di int main() con listruzione return 0; al termine del programma Luso di void main() è accettato da quasi tutti i compilatori, fatto salvo la segnalazione di un warning. 7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Premessa: int vs. void main() Solo con alcuni compilatori viene segnalato un errore, e il programma non viene compilato In tal caso void main() va sostituito con int main(), mettendo listruzione return 0; al termine del programma 8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Premessa: int vs. void main() 9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il primo programma: ciao mondo 10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: stdio.h Come prima cosa, dobbiamo includere le librerie necessarie al funzionamento del nostro programma. La libreria stdio.h Standard Input Output Permette di utilizzare I comandi necessari per richiedere dati o visualizzare dei messaggi. 11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: main Tutti i programmi in C contengono un elemento principale: Il main main contiene le istruzioni che verranno eseguite allavvio del nostro programma 12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: main La sequenza di istruzioni che caratterizzano il main sono racchiuse tra parentesi graffe Tale blocco di istruzioni e anche noto come corpo Ogni istruzione deve essere seguita da un punto e virgola 13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: printf 14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: printf Stampa a video il mesaggio Ciao Mondo! printf e contenuta in stdio.h Il messaggio da stampare e contenuto tra 15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: printf return e' un comando che ci permette di comunicare con il sistema ospite In questo caso viene utilizzato per comunicare lo stato di terminazione del programma 0 indica una terminazione corretta del nostro programma 16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Input - Output printf viene utiizzata per fornire un output del programma a video scanf viene utilizzato per fornire degli input, e.g. da tastiera, al nostro programma 17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dato in C In C esistono diversi tipi di dato built-in, tra cui int: numeri interi oat: numeri con virgola (singola precisione) double: numeri con virgola (doppia precisione) char: caratteri (sono interi che possono variare tra 0-255) Inoltre il C fornisce anche la possibilità di denire dei nuovi tipi di dato 18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Mostra caratteri Problema Si scriva un programma che richieda linserimento di un carattere e lo mostri a video 19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipo carattere e codifica ASCII 20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sommare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un esempio di calcolo 22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE HELP: errori sullinput 23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Agenda Informazioni sui laboratori Benvenuti nel fantastico mondo del C Esercizi Lab1 Warm Up printf Correggi errori Qualche cosa un pò più divertente Inserimento di dati dallutente Verifica ingressi Altri exe… MCD 24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe1: printf Problema Scrivere un programma in C che visuallizzi a video la seguente scritta: Informatica B /2013 Laboratorio 1 Studente: Nome Cognome Matricola: #mat 25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe1: printf Possibile soluzione 26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe2: Trova errori Problema 27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEDebugger 28 Questa è la barra del debugger. Iniziamo il debug premendo il primo tasto a sinistra (Debug/Continue). Per fermare lesecuzione in certi punti, clicchiamo vicino al numero di riga con il tasto destro e scegliamo Set breakpoint (compare un pallino rosso, vedi riga 7 e 9)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEDebugger 29 Una volta partito il debug, possiamo scegliere varie opzioni. Noi useremo solo Watches, per vedere il contenuto delle variabili
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEDebugger 30 Lesecuzione si ferma alla riga 7. Nel riquadro in basso vediamo il valore della variabile numero prima che gli venga assegnato un valore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEDebugger 31 Ora siamo fermi alla riga 9, il valore delle variabile numero è cambiato
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe3: Inserimento dati Problema Richiedi allutente la sua altezza in centrimentri e mostrala a video in metri Pseudocodice 1.Scrivi quanto sei alto? 2.Leggi altezzacm 3.Altezzam = alteccacm/100 4.Scrivi sei alto: altezzam 32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Pseudocodice vs Codice C Pseudocodice 1.Scrivi quanto sei alto? 2.Leggi altezzacm 3.Altezzam = alteccacm/100 4.Scrivi sei alto: altezzam 33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un primo errore 34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un secondo errore 35
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un terzo errore 36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione corretta 37 Limportanza dei tipi di dato
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Vero e falso in C In C non esiste un tipo di dato specico per rappresentare i concetti vero e falso Una condizione assume un valore intero pari a 0 se la condizione è falsa 1 se la condizione è vera In generale, ogni valore diverso da zero è considerato vero ( 3 ) VERO ( 1 ) VERO ( a – a ) FALSO 38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe4: Gestione errori sullinput Problema Preso un carattere inserito da tastiera lo scrive a video in maiuscolo (e.g. a-->A) Nota Per potervi applicare la trasformazione di nostro interesse Dobbiamo prima verificare che il dato sia coerente con quanto ci aspettiamo 39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEPseudocodice Dati Linsieme dei caratteri ammissibili {a, b, c, …, z} 1. Richiedere linserimento di un carattere 2. Se carattere inserito corretto 3. Allora stampa a video carattere Altrimenti stampa a video un messaggio di errore 40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Maiuscolo: codice 41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Maiuscolo: esecuzione 42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Gestione errori sullinput Problema Preso un dato inserito da tastiera Per potervi applicare la trasformazione di nostro interesse Dobbiamo prima verificare che il dato sia coerente con quanto ci aspettiamo Soluzione Definire linsieme dei caratteri validi Verificare lappartenenza del carattere inserito, allinsieme dei caratterei validi 43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEPseudocodice Dati Linsieme dei caratteri ammissibili {a, b, c, …, z} 1. Richiedere linserimento di un carattere 2. Se carattere inserito corretto 3. Allora stampa a video carattere Altrimenti stampa a video un messaggio di errore 44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Maiuscolo: codice 45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Maiuscolo: esecuzione 46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe5: Massimo Comune Divisore Definizione Dicesi Massimo Comune Divisore (M.C.D.) il piu grande tra i divisori comuni a due o piu numeri Esempi Dati A=12, B=15 Divisori comuni: 1, 3 - MCD=3 Dati A=10, B=30 e C=20 Divisori comuni: 1, 2, 5, 10 - MCD=10 47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: pseudocodice 1.Leggi A e B 2.min= il minimo tra A e B 3.tmp = 1 4.MCD = 1 5.Finche tmp < min 1.tmp = tmp Se tmp divide A e B 1.Allora MCD = tmp 6.Stampa MCD 48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: codice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Capitolo 3 Credits Emanuele Panigati 50