dipartimento di elettronica e informazione lab 1 – info b marco d. santambrogio –...
TRANSCRIPT
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab 1 – Info B Lab 1 – Info B
Marco D. Santambrogio – [email protected] Cattaneo – [email protected]
Ver. aggiornata al 9 Agosto 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab 1: AgendaLab 1: Agenda
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab 1: AgendaLab 1: Agenda
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Calendario dei LabsCalendario dei Labs
• 8 Ottobre 2012, 3pm-5pm, @ LM1 Installation Party: strumenti di sviluppo
per il corso di Info B
• 22 Ottobre 2012, 3pm-7pm, @ L13 Primi programmi in C: Strutture di
controllo e cicli
• 29 Ottobre 2012, 3pm-7pm, @ LM1 C: array e matrici
4
Info da aggiornare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Calendario dei LabsCalendario dei Labs
• 3 Dicembre 2012, 3pm-6pm, @ L13 MATLAB: ambiente di sviluppo e primi
codici
• 17 Dicembre 2012, 3pm-7pm, @ LM1 MATLAB: strutture di controllo, tipi di dato
strutturato, e vettori
• 14 Gennaio 2013, 3pm-7pm, @ LM1 MATLAB: funzioni ricorsive, funzioni di
ordine superiore, grafici 2D e 3D
5
Info da aggiornare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab 1: AgendaLab 1: Agenda
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Premessa: int vs. void Premessa: int vs. void main()main()
• Lo standard (ANSI C99) prevede l’uso di int main() con l’istruzione return 0; al termine del programma
• L’uso 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 Premessa: int vs. void main()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 l’istruzione return 0; al termine del programma
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Premessa: int vs. void Premessa: int vs. void main()main()
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il primo programma: ciao Il primo programma: ciao mondomondo
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ciao Mondo: stdio.hCiao 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: mainCiao Mondo: main
• Tutti i programmi in C contengono un elemento principale: Il main
• main contiene le istruzioni che verranno eseguite all’avvio del nostro programma
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ciao Mondo: mainCiao 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: printfCiao Mondo: printf
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ciao Mondo: printfCiao 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: printfCiao 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 - OutputInput - 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 CTipi di dato in C
• In C esistono diversi tipi di dato built-in, tra cui int: numeri interi float: 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 definire dei nuovi tipi di dato
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Mostra caratteriMostra caratteri
• Problema Si scriva un programma che richieda
l’inserimento di un carattere e lo mostri a video
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo carattere e codifica ASCIITipo carattere e codifica ASCII
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sommare Sommare ““-32-32””
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di calcolo Un esempio di calcolo
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
HELP: errori sullHELP: errori sull’’inputinput
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab 1: AgendaLab 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 dall’utente• Verifica ingressi
Altri exe…• MCD
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Exe1: Exe1: ““printfprintf””
• Problema Scrivere un programma in C che
visuallizzi a video la seguente scritta:
Informatica B - 2012/2013Laboratorio 1Studente: Nome CognomeMatricola: #mat
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Exe1: Exe1: ““printfprintf””
• Possibile soluzione
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Exe2: Trova erroriExe2: Trova errori
• Problema
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
DebuggerDebugger
28
Questa è la barra del debugger.Iniziamo il debug premendo il primo tasto a sinistra (“Debug/Continue”).Per fermare l’esecuzione 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 INFORMAZIONE
DebuggerDebugger
29
Una volta partito il debug, possiamo scegliere varie opzioni.Noi useremo solo “Watches”, per vedere il contenuto delle variabili
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
DebuggerDebugger
30
L’esecuzione 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 INFORMAZIONE
DebuggerDebugger
31
Ora siamo fermi alla riga 9, il valore delle variabile “numero” è cambiato
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Exe3: Inserimento datiExe3: Inserimento dati
• Problema Richiedi all’utente la sua altezza in
centrimentri e mostrala a video in metri
• Pseudocodice1.Scrivi “quanto sei alto?”2.Leggi altezzacm3.Altezzam = alteccacm/1004.Scrivi “sei alto: altezzam”
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Pseudocodice vs Codice CPseudocodice vs Codice C
• Pseudocodice
1. Scrivi “quanto sei alto?”2. Leggi altezzacm3. Altezzam = alteccacm/1004. Scrivi “sei alto: altezzam”
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un primo errore Un primo errore
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un secondo erroreUn secondo errore
35
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un terzo erroreUn terzo errore
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione correttaSoluzione corretta
37
L ’importanza dei tipi di dato
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Vero e falso in CVero e falso in C
• In C non esiste un tipo di dato specifico 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 Exe4: Gestione errori sullsull’’inputinput
• 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 INFORMAZIONE
PseudocodicePseudocodice
• Dati L’insieme dei caratteri ammissibili
{a, b, c, …, z}
1. Richiedere l’inserimento di un carattere
2. Se carattere inserito corretto3. Allora stampa a video carattere-324. Altrimenti stampa a video un
messaggio di errore
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaiuscoloMaiuscolo: codice: codice
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaiuscoloMaiuscolo: esecuzione: esecuzione
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Gestione errori sullGestione errori sull’’inputinput
• 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 l’insieme dei caratteri validi Verificare l’appartenenza del carattere
inserito, all’insieme dei caratterei validi
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
PseudocodicePseudocodice
• Dati L’insieme dei caratteri ammissibili
{a, b, c, …, z}
1. Richiedere l’inserimento di un carattere
2. Se carattere inserito corretto3. Allora stampa a video carattere-324. Altrimenti stampa a video un
messaggio di errore
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaiuscoloMaiuscolo: codice: codice
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaiuscoloMaiuscolo: esecuzione: esecuzione
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Exe5: Massimo Comune Exe5: Massimo Comune DivisoreDivisore
• 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: pseudocodiceMCD: pseudocodice
1. Leggi A e B2. min= il minimo tra A e B3. tmp = 14. MCD = 15. Finche’ tmp < min
1. tmp = tmp + 12. Se tmp divide A e B
1. Allora MCD = tmp
6. Stampa MCD
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MCD: codiceMCD: codice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio
Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill• Capitolo 3
• Credits Emanuele Panigati https://sites.google.com/site/engpanigati/
50