DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab 1 – Info B
Marco D. Santambrogio – [email protected]
Riccardo Cattaneo – [email protected]
Ver. aggiornata al 9 Agosto 2013
Lab 1: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
2
Lab 1: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
3
Calendario dei Labs
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Calendario dei Labs
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Lab 1: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Informazioni sui laboratori
• Benvenuti nel fantastico mondo del C
• Esercizi Lab1
6
Premessa: int vs. void main()
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Premessa: int vs. void main()
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Premessa: int vs. void main()
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
9
Il primo programma: ciao mondo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
10
Ciao Mondo: stdio.h
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Ciao Mondo: main
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutti i programmi in C
contengono un
elemento principale:
 Il main
• main contiene le
istruzioni che verranno
eseguite all’avvio del
nostro programma
12
Ciao Mondo: main
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Ciao Mondo: printf
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
14
Ciao Mondo: printf
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Stampa a video il
mesaggio “Ciao
Mondo!”
• printf e’ contenuta in
stdio.h
• Il messaggio da
stampare e’ contenuto
tra “”
15
Ciao Mondo: printf
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
•
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
Input - Output
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Tipi di dato in C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Mostra caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Si scriva un programma che richieda
l’inserimento di un carattere e lo mostri a
video
19
Tipo carattere e codifica ASCII
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
20
Sommare “-32”
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
21
Un esempio di calcolo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
22
HELP: errori sull’input
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
23
Lab 1: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Exe1: “printf”
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Scrivere un programma in C che visuallizzi
a video la seguente scritta:
Informatica B - 2012/2013
Laboratorio 1
Studente: Nome Cognome
Matricola: #mat
25
Exe1: “printf”
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Possibile soluzione
26
Exe2: Trova errori
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
27
Debugger
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
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)
28
Debugger
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una volta partito il debug, possiamo
scegliere varie opzioni.
Noi useremo solo “Watches”, per
vedere il contenuto delle variabili
29
Debugger
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
L’esecuzione si ferma alla riga 7.
Nel riquadro in basso vediamo il
valore della variabile “numero” prima
che gli venga assegnato un valore
30
Debugger
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ora siamo fermi alla riga 9, il valore
delle variabile “numero” è cambiato
31
Exe3: Inserimento dati
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Richiedi all’utente 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
Pseudocodice vs Codice C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Pseudocodice
1.
2.
3.
4.
Scrivi “quanto sei alto?”
Leggi altezzacm
Altezzam = alteccacm/100
Scrivi “sei alto: altezzam”
33
Un primo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
34
Un secondo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
35
Un terzo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
36
Soluzione corretta
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
37
Vero e falso in C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Exe4: Gestione errori sull’input
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dati
 L’insieme dei caratteri ammissibili
{a, b, c, …, z}
1.
2.
3.
4.
Richiedere l’inserimento di un carattere
Se carattere inserito corretto
Allora stampa a video carattere-32
Altrimenti stampa a video un messaggio
di errore
40
Maiuscolo: codice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
41
Maiuscolo: esecuzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
42
Gestione errori sull’input
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dati
 L’insieme dei caratteri ammissibili
{a, b, c, …, z}
1.
2.
3.
4.
Richiedere l’inserimento di un carattere
Se carattere inserito corretto
Allora stampa a video carattere-32
Altrimenti stampa a video un messaggio
di errore
44
Maiuscolo: codice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
45
Maiuscolo: esecuzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
46
Exe5: Massimo Comune Divisore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
MCD: pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
1.
2.
3.
4.
5.
Leggi A e B
min= il minimo tra A e B
tmp = 1
MCD = 1
Finche’ tmp < min
1. tmp = tmp + 1
2. Se tmp divide A e B
1. Allora MCD = tmp
6. Stampa MCD
48
MCD: codice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Scarica

Lab 1