Il 0% ha trovato utile questo documento (0 voti)
20 visualizzazioni38 pagine

Lab Oratorio 1

Il documento fornisce un'introduzione al laboratorio di programmazione CL.B, evidenziando le modalità di creazione, compilazione ed esecuzione di progetti in C utilizzando Visual Studio. Include informazioni su come inviare elaborati settimanali, gestire file sorgente e header, e impostare l'ambiente di sviluppo. Vengono anche forniti consigli pratici per gli studenti e dettagli sulla correzione degli elaborati.
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
20 visualizzazioni38 pagine

Lab Oratorio 1

Il documento fornisce un'introduzione al laboratorio di programmazione CL.B, evidenziando le modalità di creazione, compilazione ed esecuzione di progetti in C utilizzando Visual Studio. Include informazioni su come inviare elaborati settimanali, gestire file sorgente e header, e impostare l'ambiente di sviluppo. Vengono anche forniti consigli pratici per gli studenti e dettagli sulla correzione degli elaborati.
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 38

LAB PROG B

Lezione 01

Introduzione

Elaborati
Settimanali

Consigli
Laboratorio di Programmazione CL.B Visual Studio

Docente: Roberto Girau, Tutor: Michele Monti Creazione Progetto

Compilazione ed
Esecuzione
Progetto
[email protected], [email protected] Debug

Compilazione da
linea di comando
Ingegneria e Scienze Informatiche - Cesena
Esercizio

Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Introduzione
Lezione 01
Materiale, Ricevimento, etc..
Introduzione

Elaborati
Settimanali

Consigli
Ricevimento: Visual Studio

▶ appuntamento via email ([email protected]) Creazione Progetto

Compilazione ed
Materiale (slides, esercizi, codice) reperibile ai link: Esecuzione
Progetto
▶ https: Debug
//virtuale.unibo.it/course/view.php?id=64726 Compilazione da
linea di comando
Tipologia di Lezione:
Esercizio
▶ 60/120 minuti ca. lezione frontale, Variabili in C

▶ resto del tempo: Hands-On printf e


specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Elaborati Settimanali
Lezione 01
Iscrizione cartella Google Drive.
Introduzione

▶ Utilizzare il form https://forms.gle/fn7gGNduGcHpGyxQ8 indicando: Elaborati


Settimanali
1. Un indirizzo email Google (Es. [email protected]) Consigli
di riferimento. Visual Studio
2. Nome, Cognome, Matricola, Email istituzionale dei
Creazione Progetto
componenti del gruppo (max 2).
Compilazione ed
▶ Riceverete all’indirizzo Gmail un messaggio per l’iscrizione ad una Esecuzione
cartella condivisa su Google Drive. Progetto

▶ Accettate la richiesta (Apri). Debug

▶ Vi sarà richiesto di accedere con l’account di Google che avete indicato. Compilazione da
linea di comando
▶ Vi apparirà una schermata con la cartella chiamata con il numero del
Esercizio
vostro gruppo.
▶ In alto a destra c’è il tasto Aggiungi in Drive, accettate Variabili in C

▶ Vi apparirà un’altra schermata con in alto a destra il tasto Apri in printf e


specificatori
Drive, accettate.
scanf e
▶ Vi apparirà la schermata del gestore web di Google Drive. specificatori
▶ Questa è la cartella in cui caricherete (Tasto destro del mouse + Carica Scanf: problemi
Cartella) i vostri progetti e dove verranno caricati le note di correzione.
Elaborati
LAB PROG B
Elaborati Settimanali
Lezione 01
Consegna elaborato nella cartella Google Drive.
Introduzione

Elaborati
▶ Formato di caricamento degli elaborati: Settimanali

1. Un solo archivio ZIP (no RAR, no 7Z,... ) contenente Consigli

tutti e soli i file richiesti (in genere uno solo). Visual Studio

2. NON usare sottodirectory Creazione Progetto


3. Il nome dell’archivio deve essere: elaborato1.zip non Compilazione ed
Esecuzione
elaborato 1.zip o elaborato 1.zip Progetto
4. Per le revisioni usare: elaborato1rev.zip Debug
▶ Tempo di caricamento degli elaborati: Compilazione da
linea di comando
1. Per essere conteggiati ai fini del bonus gli elaborati
Esercizio
devono essere caricati entro la data indicata nel testo.
Variabili in C
2. Verificare sempre il corretto caricamento del file.
printf e
3. In caso di problemi comunicare via e-mail le difficoltà specificatori
prima della scadenza del termine scanf e
4. Per le consegne tardive inviare una mail per richiedere la specificatori

correzione (non valevole per il bonus) Scanf: problemi

Elaborati
LAB PROG B
Elaborati Settimanali
Lezione 01
Correzione
Introduzione

Elaborati
Settimanali

▶ La correzione avviene in genere entro 2 giorni dalla consegna. Consigli

▶ I voti sono pubblicati in un’apposita pagina linkata sulla home page del Visual Studio

corso. Vengono notificati errori di Creazione Progetto


sottomissione/compilazione/esecuzione Compilazione ed
▶ In caso di errori di compilazione l’output del compilatore viene caricato Esecuzione
Progetto
nella cartella di consegna.
▶ Il sommario dei punti acquisiti da ciascun gruppo è alla pagina: Debug

https://tinyurl.com/mrxe3c9c Compilazione da
linea di comando
▶ Per alcuni progetti sarà reso disponibile un testing framework su
Esercizio
Codeboard.io
Variabili in C
Richieste e problemi:
1. Tutte le richieste relative ai progetti devono essere indirizzate a printf e
specificatori
[email protected] e in cc. [email protected]
scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Consigli
Lezione 01
Some Tips...
Introduzione

Elaborati
Settimanali

Consigli

Visual Studio

▶ Non state a guardare!! Creazione Progetto

Compilazione ed
▶ Non scrivete codice a caso!! Esecuzione
Progetto
▶ Cercate di svolgere gli esercizi proposti
Debug
▶ L’ultima ora di laboratorio è dedicata allo sviluppo Compilazione da
linea di comando
dell’elaborato settimanale,
Esercizio
▶ Domande, domande, domande!!!. Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Ciclo di sviluppo del programma
Lezione 01
Dal problema all’eseguibile
Introduzione

Elaborati
▶ Analisi: leggere bene il testo, individuare una soluzione, Settimanali

schematizzare un algoritmo risolutivo Consigli

Visual Studio
▶ Sviluppo del Codice Sorgente: Organizzare il codice
Creazione Progetto
sorgente C in uno o più file di testo (tramite semplice
Compilazione ed
editor di testo o IDE di sviluppo) Esecuzione
Progetto
▶ Compilazione: Traduzione del codice C in linguaggio Debug
macchina. Il ”codice oggetto” viene salvato in un file Compilazione da
linea di comando
con estensione .obj (non ancora eseguibile). La
Esercizio
compilazione può essere fatta utilizzando un ambiente
Variabili in C
integrato o un compilatore a linea di comando. printf e
▶ Link: Il file oggetto prodotto deve essere combinato con specificatori

scanf e
quello delle funzioni di libreria per generare un specificatori
programma eseguibile (.exe). Scanf: problemi

Elaborati
LAB PROG B
Strumenti
Lezione 01
Ambiente di sviluppo
Introduzione

Elaborati
Settimanali
Visual Studio Consigli

▶ IDE (Integrated Development Environment). Visual Studio

Creazione Progetto
▶ Tra i migliori sul mercato.
Compilazione ed
▶ Debugger molto efficiente ed espressivo. Esecuzione
Progetto
▶ Ricco di plug-in. Debug

▶ Interfaccia intuitiva. Compilazione da


linea di comando
▶ Permette di gestire più di un linguaggio (C, C++, C#, Esercizio

J#, SQL, etc). Variabili in C

printf e
▶ Permette un’agevole scrittura del codice (Intellisense). specificatori

▶ Supporto: www.visualstudio.com. scanf e


specificatori

Scanf: problemi

Elaborati
LAB PROG B
Creazione Progetto Visual Studio
Lezione 01
Visual Studio
Introduzione

Elaborati
Settimanali

Consigli

Visual Studio

Creazione Progetto
▶ Selezionare la voce create new project Compilazione ed
Esecuzione
▶ Impostare il filtro su linguaggio C++ e scegliere Progetto

Empty Project → Next Debug

▶ Specificare il nome del progetto ed il path dove salvarlo Compilazione da


linea di comando
→ Create. Esercizio

Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Aggiungere Files al Progetto
Lezione 01
File Sorgente
Introduzione
Una volta aperto il progetto questo sarà vuoto e sarà Elaborati
Settimanali
necessario aggiungere files (.c, .h) al progetto stesso.
Consigli
Aggiungere file sorgente al progetto:
Visual Studio
▶ Nella colonna di sinistra Esplora Soluzioni selezionare Creazione Progetto
File di origine, tasto destro del mouse, Aggiungi → Compilazione ed
Esecuzione
Nuovo Elemento. Progetto

▶ Nella finestra Aggiungi nuovo elemento selezionare Debug

Visual C++ → Codice. Compilazione da


linea di comando
▶ Nella sezione centrale selezionare File di C++. Esercizio

▶ Specificare nel campo testo Nome in fondo alla finestra Variabili in C

printf e
il nome del file. specificatori

▶ Opzionalmente anche il path (di default il file viene scanf e


specificatori
salvato nella cartella del progetto). Scanf: problemi
▶ Cliccare su Aggiungi Elaborati
LAB PROG B
Aggiungere Files al Progetto
Lezione 01
File Header
Introduzione

Un file header è un file per l’inclusione di librerie. Elaborati


Settimanali
Aggiungere file header al progetto: Consigli

▶ Nella colonna di sinistra Esplora Soluzioni selezionare Visual Studio

File di intestazione, tasto destro del mouse, Aggiungi Creazione Progetto

→ Nuovo Elemento. Compilazione ed


Esecuzione
Progetto
▶ Nella finestra Aggiungi nuovo elemento selezionare
Debug
Visual C++ → Codice.
Compilazione da
▶ Nella sezione centrale selezionare File di intestazione. linea di comando

Esercizio
▶ Specificare nel campo testo Nome in fondo alla finestra
Variabili in C
il nome del file. printf e
specificatori
▶ Opzionalmente anche il path dove salvare il file (di
scanf e
default il file viene salvato nella cartella del progetto). specificatori

▶ Cliccare su Aggiungi Scanf: problemi

Elaborati
LAB PROG B
Setup Ambiente
Lezione 01
Linguaggio ANSI C.
Introduzione

I Step: (ANSI) Elaborati


Settimanali
▶ Nella barra superiore selezionare Progetto.
Consigli
▶ Dal menù selezionare la voce Proprietà di Nome-Progetto .
Visual Studio
▶ Nell’albero di opzioni alla sinistra della finestra di dialogo cliccare su
Creazione Progetto
Proprietà di Configurazione e selezionare la voce C/C++.
▶ Selezionare la voce Linguaggio e nel riquadro destro della finestra di Compilazione ed
Esecuzione
dialogo cambiare l’opzione Disabilita estensioni linguaggio in Sı̀(/Za) Progetto
(in questo modo disabilitiamo tutte le estensioni del linguaggio diverse
Debug
dallo standard ANSI).
Compilazione da
II Step: (Linguaggio C) linea di comando
▶ Nella barra superiore selezionare Progetto. Esercizio
▶ Dal menù selezionare la voce Proprietà di Nome-Progetto. Variabili in C
▶ Nell’albero di opzioni alla sinistra della finestra di dialogo cliccare su printf e
Proprietà di Configurazione e selezionare la voce C/C++. specificatori
▶ Selezionare la voce Avanzate e nel riquadro destro della finestra di scanf e
dialogo cambiare l’opzione Compila come in Compila come codice specificatori

C(/TC) (in questo modo il file viene compilato come un file C). Scanf: problemi

Elaborati
LAB PROG B
Setup Ambiente
Lezione 01
Warnings
Introduzione

Elaborati
Settimanali

Consigli
III Step: (Uso delle funzioni ANSI di I/O)
Visual Studio
▶ Nella barra superiore selezionare Progetto.
Creazione Progetto
▶ Dal menù selezionare la voce Proprietà di Nome-Progetto .
Compilazione ed
▶ Nell’albero di opzioni alla sinistra della finestra di dialogo cliccare su Esecuzione
Proprietà di Configurazione e selezionare la voce C/C++. Progetto
▶ Selezionare la voce Preprocessore e nel riquadro destro della finestra di Debug
dialogo inserire la stringa CRT SECURE NO WARNINGS; (in questo Compilazione da
modo disabilitiamo i warnings di sicurezza per alcune funzioni di linea di comando
libreria).
Esercizio
NOTA BENE
Variabili in C
▶ Il Setup delle proprietà di progetto più essere effettuato solo dopo aver
printf e
aggiunto almeno un file al progetto. specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Creazione di un Template di Progetto
Lezione 01
Uso di template personalizzato
Introduzione

Elaborati
Settimanali

▶ Selezionare Progetto dalla barra superiore, Consigli

Visual Studio
▶ Nel menù scegliere Esporta modello... → Modello di
Creazione Progetto
Progetto. Compilazione ed
Esecuzione
▶ Salvare il template con il nome ProgB.zip nella Progetto

directory proposta Debug

▶ La prossima volta che si crea un nuovo progetto sarà Compilazione da


linea di comando
possibile scegliere il template salvato. Esercizio

▶ Questo template è stato creato appositamente per lo Variabili in C

sviluppo in ANSI C e non necessita di Set-Up printf e


specificatori
Ambiente e Linguaggio. scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Il mio primo programma C
Lezione 01
Hello world
Introduzione

Elaborati
Settimanali

Consigli

Visual Studio
# include < stdio .h >
Creazione Progetto
int main () {
Compilazione ed
printf ( " Hello , World !\ n " ) ;
Esecuzione
return 0;
Progetto
}
Debug
▶ Inclusione degli header di libreria
Compilazione da
▶ Funzione main(): funzione principale e punto di inizio per l’esecuzione di un programma. linea di comando
▶ printf: funzione di libreria per la stampa di caratteri a video Esercizio
▶ system: funzione di libreria per eseguire comandi della shell del sistema operativo. (in questo
caso è commentata e non sarà eseguita) Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Compilazione Progetto
Lezione 01

Introduzione

Elaborati
Settimanali

1. Nella barra superiore selezionare Compila Consigli

Visual Studio
2. Dal menù selezionare Compila Soluzione (Shortcut F7)
Creazione Progetto
3. I messaggi di compilazione (errori, warnings, etc..) Compilazione ed
Esecuzione
vengono stampati nella box Output in basso nella Progetto
finestra principale. Debug

4. Alternativamente, cliccare sull’icona: Compilazione da


linea di comando

Esercizio

Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Esecuzione Progetto
Lezione 01

1. Nella barra superiore selezionare Debug Introduzione

Elaborati
2. Dal menù selezionare Avvia Debug (Shortcut F5) Settimanali

3. Alternativamente, scegliere Avvia senza eseguire Consigli

Debug (Shortcut CTRL+F5), Visual Studio

Creazione Progetto
Nella barra superiore possiamo cambiare la configurazione di
Compilazione ed
compilazione: Debug: che attiva tutto il framework per il Esecuzione
Progetto
debug alla vostra applicazione (più lento)
Debug

Compilazione da
linea di comando

Esercizio

Variabili in C
Release: che esegue l’applicazione senza debug e con flag di printf e
ottimizzazione (più veloce). specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Debug
Lezione 01

Attivare BreakPoints: Cliccare con il tasto sinistro del Introduzione


mouse in corrispondenza della linea di codice in cui si vuole Elaborati
Settimanali
fermare l’esecuzione del programma (Pallino Rosso)
Consigli

Visual Studio

Creazione Progetto

Compilazione ed
Esecuzione
Progetto

Debug

Far partire il debug (Avvia Debug) Compilazione da


linea di comando

Esercizio

Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Debug (II)
Lezione 01

Introduzione

Per saltare al Breakpoint successivo, quindi per proseguire Elaborati


Settimanali
l’esecuzione del programma, cliccare sulla freccia verde
Consigli
(Shortcut F5). Visual Studio

Creazione Progetto

Compilazione ed
Esecuzione
Lo spostamento della freccia gialla ci indica a che punto Progetto

Debug
siamo nell’esecuzione del programma.
Compilazione da
linea di comando

Esercizio

Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Debug (III)
Lezione 01
Monitoraggio Variabili
Introduzione

Elaborati
Settimanali

Nella finestra in basso a sinistra Variabili locali, possiamo Consigli

tenere traccia delle variabili visibili in quel punto Visual Studio

dell’esecuzione: Creazione Progetto

Compilazione ed
Esecuzione
Progetto

Debug

Compilazione da
linea di comando

Esercizio

Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Compilazione
Lezione 01
Compilazione da linea di comando
Setting delle variabili di percorso e di ambiente Introduzione

Elaborati
▶ Uso dei collegamenti del prompt dei comandi dal menu Settimanali
di Visual Studio Consigli

▶ Aprire una finestra del prompt dei comandi per gli Visual Studio

sviluppatori Creazione Progetto

Compilazione ed
In alternativa: Esecuzione
Progetto
▶ Aprire una finestra del prompt dei comandi (cmd)
Debug
▶ Eseguire /Programmi (x86)/Microsoft Visual
Compilazione da
Studio 12.0/VC/vcvarsall.bat x86: linea di comando

Esercizio
Compilazione
Variabili in C
▶ Posizionarsi nella directory in cui sono caricati i file
printf e
sorgenti specificatori

▶ Eseguire la compilazione : scanf e


specificatori
cl /Za nomefile.c Scanf: problemi

Supporto: https://msdn.microsoft.com/it-IT/ Elaborati

library/f35ctcxw.aspx.
LAB PROG B
Esercizio
Lezione 01

Introduzione

Elaborati
Settimanali

1. Modificare il programma precedente per stampare il Consigli

vostro nome, cognome, matricola e gruppo Visual Studio

Creazione Progetto
2. Rinominare il file sorgente come elaborato0.c
Compilazione ed
Esecuzione
3. Zippare il file in elaborato0.zip Progetto

4. Caricare il file nella vostra cartella su Google Drive Debug

Compilazione da
5. N.B per i gruppi composti da 2 studenti il secondo linea di comando
studente caricherà su drive il file elaborato0rev.zip Esercizio

(contenente un file sorgente con lo stesso nome Variabili in C

elaborato0.c e i suoi dati anagrafici) printf e


specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Variabili in C
Lezione 01
Dicharazione e assegnamento
Introduzione

Elaborati
Settimanali

Consigli

▶ In C esistono diversi tipi di variabili, che servono per Visual Studio

rappresentare tipi di dato diversi, dai numeri ai testi. Creazione Progetto

Compilazione ed
▶ La funzione sizeof() restituisce il numero di byte Esecuzione
Progetto
necessari per una variabile
Debug
char a = ’r ’; Compilazione da
int z , dimZ ; linea di comando
float y = 7.0 , y1 ;
double x = 3.3621 e -4932; Esercizio
y1 =4.5;
z =25; Variabili in C
dimZ = sizeof ( z ) ;
printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Variabili in C
Lezione 01
Errori comuni
Introduzione

Elaborati
Settimanali
▶ Usare una variabile prima di dichiararla Consigli

▶ Sbagliare il nome (C è case-sensitive) Visual Studio

Creazione Progetto
▶ Usare una variabile prima di inizializzarla
Compilazione ed
▶ Assegnare ad una variabile di un tipo un valore di altro Esecuzione
Progetto
tipo (es un float a un int) Debug

▶ .... Compilazione da
linea di comando

Esercizio
int x ,y , z ;
Z =25; /* Z non stata d i c h i a r a t a */ Variabili in C
z =24.5; /* warning : c o n v e r s i o n e da ’ double ’ a ’ int ’. P o s s i b i l e
printf e
perdita di dati . */
specificatori
x = y + z ; /* y non stata i n i z i a l i z z a t a */ scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Funzioni di I/O
Lezione 01
printf,scanf...
Le piu’ comuni funzioni che permettono I/O sono incluse Introduzione

nella libreria stdio.h Elaborati


Settimanali
▶ putchar(char ch) - stampa un char a video (stdout) Consigli
▶ getchar() - legge un char da tastiera (stdin) Visual Studio

▶ printf(char *format, arg list ...) - stampa un elenco Creazione Progetto

di argomenti (arg list) formattati usando diversi Compilazione ed


Esecuzione
specificatori di formato (format) Progetto

▶ scanf(char *format, args....) - legge unna serie di Debug

Compilazione da
caratteri che legge da stdin in base al formato linea di comando
specificato (format) e assegna all’elenco di variabili Esercizio

(args) i valori letti Variabili in C

/* per stampare la lettera ’a ’ : */ printf e


char lettera = ’a ’; specificatori

scanf e
putchar ( lettera ) ; /* stampa valore v a r i a b i l e */
specificatori
putchar ( ’a ’) ; /* stampa la costante ’a ’ */
putchar (97) ; /* stampa da codice ascii */ Scanf: problemi
/* Tutte queste sono e q u i v a l e n t i a */ Elaborati
printf ( " % c " , lettera ) ;
LAB PROG B
Specificatori di Formato (I)
Lezione 01
Base
Introduzione

Elaborati
Settimanali

Consigli

Visual Studio

Creazione Progetto

Compilazione ed
Esecuzione
Progetto

Debug

Compilazione da
linea di comando
▶ %E: Notazione scientifica
Tipo Specificatore
Esercizio
char %c, %d maiuscola.
int %d, %i Variabili in C
short int %d, %hd ▶ %g: Sceglie il formato più
long int %ld printf e
unsigned int %u, %o, %x compatto tra %e e %f. specificatori
unsigned short int %hu
unsigned long int %lu
▶ %o: Numeri ottali. scanf e
float %f, %F, %e, %E, %g specificatori
double %f, %F, %e, %E, %g ▶ %x: Numeri esadecimali.
long double %lf Scanf: problemi
string, char[] %s
Elaborati
LAB PROG B
Specificatori di Formato (II)
Lezione 01
Lunghezza
Introduzione

Elaborati
Settimanali

Consigli

Visual Studio

Creazione Progetto

Compilazione ed
Esecuzione
Progetto

Debug

Compilazione da
Numero minimo di caratteri stampati linea di comando

/* integer */ Esercizio
printf ( " % d \ n " , 42) ; /* Output : 42 */
Variabili in C
printf ( " %1 d \ n " , 42) ; /* Output : 42 */
printf ( " %3 d \ n " , 42) ; /* Output : 42 */ printf e
printf ( " %* d \ n " , 5 , 42) ; /* Output : 42 */ specificatori
/* float */
printf ( " % f \ n " , 42.24) ; /* Output : 4 2 . 2 4 0 0 0 0 */ scanf e
printf ( " %6 f \ n " , 42.24) ; /* Output : 4 2 . 2 4 0 0 0 0 */ specificatori
printf ( " %12 f \ n " , 42.24) ; /* Output : 4 2 . 2 4 0 0 0 0 */
/* string */ Scanf: problemi
printf ( " % s \ n " , " ciao " ) ; /* Output : ciao */
printf ( " %6 s \ n " , " ciao " ) ; /* Output : ciao */ Elaborati
LAB PROG B
Specificatori di Formato (III)
Lezione 01
Decimali
Introduzione

Elaborati
Settimanali

Consigli

Visual Studio

Creazione Progetto

Compilazione ed
Esecuzione
Progetto

Debug
▶ %d: Minimo numero di caratteri totali (eventualmente aggiunge 0 a sinistra).
▶ %f: Massimo numero di decimali dopo la virgola. Compilazione da
▶ %s: Massimo numero di caratteri (eventualmente la stringa viene troncata) linea di comando

Esercizio
/* integer */
printf ( " %.4 d \ n " , 42) ; /* Output : 0042 */ Variabili in C
printf ( " %6.4 d \ n " , 42) ; /* Output : 0042 */
/* string */ printf e
printf ( " %.2 s \ n " , " ciao " ) ; /* Output : ci */ specificatori
printf ( " %.6 s \ n " , " ciao " ) ; /* Output : ciao */
scanf e
printf ( " %6.3 s \ n " , " ciao " ) ; /* Output : cia */
specificatori
/* float */
printf ( " %.2 f \ n " , 42.24) ; /* Output : 42.24 */ Scanf: problemi
printf ( " %.4 f \ n " , 42.24) ; /* Output : 42.2400 */
printf ( " %6.4 f \ n " , 42.24) ; /* Output : 42.2400 */ Elaborati
printf ( " %9.4 f \ n " , 42.24) ; /* Output : 42.2400 */
LAB PROG B
Specificatori di Formato (IV)
Lezione 01
Allineamenti, segno, etc..
Introduzione

Elaborati
Settimanali

Consigli

Visual Studio

Creazione Progetto

Compilazione ed
Esecuzione
Progetto

Debug
▶ - Allinea a sinistra.
Compilazione da
▶ + Aggiungi il segno anche se il numero è positivo. linea di comando
▶ Aggiungi spazio davanti a numeri positivi.
▶ 0 Aggiungi 0 iniziali fino a width. Esercizio
▶ # Formato alternativo. Variabili in C

/* integer */ printf e
printf ( " %6 d \ n " , 42) ; /* Output : 42 */ specificatori
printf ( " % -6 d \ n " , 42) ; /* Output : 42 */
printf ( " %06 d \ n " , 42) ; /* Output : 000042 */ scanf e
printf ( " % d \ n " , 42) ; /* Output : 42 */ specificatori
printf ( " %+ d \ n " , 42) ; /* Output : +42 */ Scanf: problemi
/* string */
printf ( " %6 s \ n " , " ciao " ) ; /* Output : ciao */ Elaborati
printf ( " % -6 s \ n " , " ciao " ) ; /* Output : ciao */
LAB PROG B
Stampa di caratteri accentati
Lezione 01
Impostazioni locali
Introduzione

Elaborati
Settimanali
▶ La stampa a video dei caratteri accentati può non essere Consigli

corretta su alcuni sistemi, perchè la console usa un set Visual Studio

di caratteri diverso da quello di windows. Creazione Progetto

Compilazione ed
▶ Occorre impostare nel main(): setlocale(LC ALL,””); Esecuzione
Progetto
# include < locale .h > Debug
# include < stdio .h >
# include < stdlib .h > Compilazione da
int main () { linea di comando
printf ( " locale is % s \ n " , setlocale ( LC_ALL , NULL ) ) ;
printf ( " \n"); Esercizio
setlocale ( LC_ALL , " " ) ;
printf ( " now locale is % s \ n " , setlocale ( LC_ALL , NULL ) ) ; Variabili in C
printf ( " \n");
system ( " PAUSE " ) ; printf e
return 0; specificatori
}
scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Standard Input
Lezione 01
scanf()
Introduzione

Elaborati
int scanf ( const char * format ) ; Settimanali

Consigli
# include < stdio .h >
Visual Studio
int main () {
/* Esempio */ Creazione Progetto
int tm , r ;
printf ( " Il senso della vita ?\ n " ) ; Compilazione ed
r = scanf ( " % d " , & tm ) ; Esecuzione
/* Da tastiera digito 42 */ Progetto
printf ( " Il senso della vita % d ed un % d numero \ n " , tm , r ) ;
/* Output : ’ Il senso della vita 42 ed un 1 numero ’ */ Debug
return 0;
} Compilazione da
linea di comando

Esercizio
▶ Dichiarata nel file stdio.h. ▶ scanf() ignora tutti i caratteri di
▶ Legge dallo stdin e mette l’input in una o spaziatura (whitespace) tranne nel caso in Variabili in C
cui lo specificatore di formato sia %c.
più variabili printf e
▶ Dobbiamo specificare gli spazi ammessi
▶ Ritorna il numero di elementi specificatori
nella stringa di input.
effettivamente letti (%, esclusi %*).
▶ Cerca di convertire i caratteri secondo il scanf e
▶ La stringa di controllo del formato e’ specificatori
formato specificato.
simile a quella vista per printf.
▶ Si ferma quando carattere è uno spazio Scanf: problemi
▶ Da utilizzare con molta cautela.
oppure End-of-file.
Elaborati
LAB PROG B
Specificatori di formato (I)
Lezione 01

Introduzione

Elaborati
Settimanali

Consigli
▶ %[. . . ]: Solo alcuni insiemi Visual Studio
Tipo Specificatore
char %c, %[. . . ] di caratteri. Creazione Progetto
int %d
short int %hd ▶ %o: Numeri ottali. Compilazione ed
long int %ld Esecuzione
unsigned int %u, %o, %x ▶ %x: Numeri esadecimali. Progetto
unsigned short int %hu
unsigned long int %lu Debug
float %f
Compilazione da
double %lf
linea di comando
string, char[] %s, %[. . . ]
Esercizio

int a ; scanf ( " % d " , & a ) ; Variabili in C


/* Digito 42 */
printf ( " % d \ n " , a ) ; /* Output 42 */ printf e
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ specificatori
float b ; scanf ( " % f " , & b ) ;
scanf e
/* Digito 42.24 */
specificatori
printf ( " % f \ n " , b ) ; /* Output 42.24 */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ Scanf: problemi
char z ; scanf ( " % c " , & z ) ;
/* Digito 3 */ Elaborati
printf ( " % c \ n " , z ) ; /* Output 3 */
LAB PROG B
Specificatori di formato (II)
Lezione 01

Introduzione

Elaborati
Settimanali

Consigli

Visual Studio

Creazione Progetto

Compilazione ed
Esecuzione
Posso stabilire il numero di caratteri da leggere da tastiera. Progetto
Se il numero di caratteri eccede, l’input viene troncato. Debug

int a ; scanf ( " % d " , & a ) ; Compilazione da


/* Digito 42 xyx */ linea di comando
printf ( " % d \ n " , a ) ; /* Output 42 */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ Esercizio
int b ; scanf ( " %2 d " , & b ) ;
/* Digito 4224 xyz */ Variabili in C
printf ( " % d \ n " , b ) ; /* Output 42 */ printf e
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Specificatori di formato (III)
Lezione 01

Introduzione

Elaborati
Settimanali

Consigli

Visual Studio

Creazione Progetto

Compilazione ed
Il campo viene letto, ma non viene preso in considerazione. Esecuzione
Progetto
int a = 0; int x ; Debug
scanf ( " % d % d " , &a , & x ) ;
/* Digito 42 24 */ Compilazione da
/* a = 42 , x = 24 */ linea di comando
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
int a = 0; int x = 1; Esercizio
scanf ( " %* d % d " , &a , & x ) ;
Variabili in C
/* uguale a : scanf ("%* d % d " , & a ) ; */
/* Digito 42 25 */ printf e
/* a = 25 , x = 1 */ specificatori

scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Standard Input
Lezione 01
Problemi con la scanf() (I)
Introduzione
Buffer Overflow
▶ Il compilatore genera un warning quando si usa la scanf perchè questa funzione non è safe Elaborati
Settimanali
▶ La scanf può causare problemi di buffer overflow
Consigli
▶ Un buffer overflow si verifica quando in un buffer di memoria di una certa dimensione viene
scritto un dato di dimensioni maggiori. Visual Studio
▶ Ciò comporta che la parte del dato che eccede le dimensioni del buffer venga scritta nelle celle di
Creazione Progetto
memoria adiacenti al buffer, potenzialmente sovrascrivendo altre variabili, o causando un errore
di segmentazione. Compilazione ed
Esecuzione
Eliminare il messaggio di errore Progetto
▶ Nella barra superiore selezionare Progetto.
Debug
▶ Dal menù selezionare la voce Proprietà di Nome-Progetto.
Compilazione da
▶ Nell’albero di opzioni alla sinistra della finestra di dialogo cliccare su Proprietà di
linea di comando
Configurazione e selezionare la voce C/C++.
▶ Selezionare la voce Preprocessore e nel riquadro destro della finestra di dialogo Definizioni Esercizio
preprocessore aggiungere la direttiva CRT SECURE NO WARNINGS
Variabili in C

Soluzione alternativa printf e


▶ Utilizzare la funzione scanf s in cui occorre specificare la dimensione del buffer di tutti i specificatori
parametri di input di tipo stringa. Attenzione: la funzione scanf s non è ANSI ed è disponibile scanf e
solo in Visual Studio (no gcc) specificatori

Scanf: problemi
char myString [10];
scanf_s ( " % s " , myString ,10) ; Elaborati
LAB PROG B
Standard Input
Lezione 01
Problemi con la scanf() (II)
Introduzione

Elaborati
Settimanali

Buffering Consigli
▶ Ogni volta che viene premuto un tasto, il carattere corrispondente viene inserito in un’opportuna
Visual Studio
area di memoria, chiamata buffer. Quando viene eseguita una scanf, i caratteri vengono letti dal
buffer senza svuotarlo completamente per cui letture successive dal buffer possono dare risultati Creazione Progetto
inaspettati.
Compilazione ed
Esecuzione
char car1 ; int int1 ; Progetto
printf ( " Inserire un numero intero : " ) ;
scanf ( " % d " , & int1 ) ; Debug
/* Da tastiera digito 4 CR */
printf ( " Inserire un carattere : " ) ; Compilazione da
scanf ( " % c " , & car1 ) ; linea di comando
printf ( " \ nLetti : %d ,% c \ n " , int1 , car1 ) ;
/* Output : ’ Letti : 4 , ’ */ Esercizio

Variabili in C
Soluzione printf e
▶ Inserire nella scanf anche caratteri di ”spazio” o ”a capo” che devono essere letti specificatori
▶ Svuotare il buffer tra le diverse letture tramite opportune istruzioni (es. getchar(), rewind(stdin); scanf e
specificatori

Scanf: problemi

Elaborati
LAB PROG B
Standard Input
Lezione 01
Soluzioni al buffering
Introduzione

Elaborati
Settimanali
/* 1) Uso di scanf a g g i u n t i v a */
printf ( " Inserire un numero reale : " ) ; Consigli
scanf ( " % f " , & reale1 ) ;
scanf ( " %* c " ) ; /* letto e buttato via */ Visual Studio
printf ( " \ nInserire un carattere : " ) ;
scanf ( " % c " , & car1 ) ; Creazione Progetto
printf ( " \ nLetti : %f ,% c \ n " , reale1 , car1 ) ;
Compilazione ed
Esecuzione
/* 2) uso di spazio prima della lettura del c a r a t t e r e */
Progetto
printf ( " Inserire un numero reale : " ) ;
scanf ( " % f " , & reale1 ) ; Debug
printf ( " \ nInserire un carattere : " ) ;
scanf ( " % c " , & car1 ) ; // elimina e v e n t u a l i spazi e \ n Compilazione da
printf ( " \ nLetti : %f ,% c \ n " , reale1 , car1 ) ; linea di comando

Esercizio
/* 3) Uso di rewind */
printf ( " Inserire un numero reale : " ) ; Variabili in C
scanf ( " % f " , & reale1 ) ;
printf e
rewind ( stdin ) ; /* Si vuota il buffer */
specificatori
printf ( " \ nInserire un carattere : " ) ;
scanf ( " % c " , & car1 ) ; scanf e
printf ( " \ nLetti : %f ,% c \ n " , reale1 , car1 ) ; specificatori

Scanf: problemi

Elaborati
LAB PROG B
Elaborati
Lezione 01

Introduzione

Elaborati
Settimanali

Consigli

Visual Studio
Elaborato 1
Creazione Progetto
▶ Deve essere consegnato un solo file elaborato1.c Compilazione ed
compresso in elaborato1.zip Esecuzione
Progetto
▶ Non c’è framework di testing per il primo progetto Debug

▶ I risultati saranno disponibili solo al termine del periodo Compilazione da


linea di comando
di consegna. Sarà ammessa una sola revisione. Esercizio

Variabili in C

printf e
specificatori

scanf e
specificatori

Scanf: problemi

Elaborati

Potrebbero piacerti anche