View
217
Download
0
Category
Preview:
Citation preview
Corso di Fondamenti di Informatica
Ingegneria delle Comunicazioni – BCOR
Ingegneria Elettronica – BELR
Introduzione al C
Unità 1 - Introduzione
D. Bloisi, S. Peluso, A. Pennisi, S. Salza
Obiettivi del corso (parte II)
• Concetti di algoritmo e programma
• Risolvere problemi in modo algoritmico
• Tradurre un algoritmo in programma
• Sviluppare programmi in linguaggio C
2013/2014 Introduzione al C
Unità 1
Pagina 2
Sommario – Unità 1: Introduzione
• Linguaggi macchina
• Linguaggi ad alto livello
• Traduzione ed esecuzione dei programmi
• Dal problema al programma
• Procedure ed algoritmi
• Paradigmi di programmazione
• Il linguaggio C
• Ambiente di sviluppo ed esecuzione dei programmi
• Sviluppo di un primo programma C
• Funzioni
Introduzione al C
Unità 1
Pagina 3 2013/2014
L’architettura di Von Neumann
Introduzione al C
Unità 1
Pagina 4
L’hardware dei nostri calcolatori è tuttora basato sulla
cosiddetta architettura di Von Neumann
2013/2014
L’architettura di Von Neumann (2)
• La macchina esegue una sequenza di istruzioni
• Le istruzioni vengono lette dalla memoria
• Ciascuna istruzione esegue una specifica azione su dati
che si trovano in memoria
• Ciascuna istruzione è una sequenza di bit che, in una
opportuna codifica, specificano:
a. L’azione che deve essere effettuata
b. Dove si trovano i dati su cui essa deve essere
effettuata
c. Dove mettere il risultato
Introduzione al C
Unità 1
Pagina 5 2013/2014
Programma
• Un programma specifica una procedura sistematica, per
risolvere un determinato problema
• Una procedura è una sequenza di passi elementari il cui
esito porta alla soluzione del problema
• Un programma è una sequenza di istruzioni
• Un programma viene scritto con riferimento ad una
determinata piattaforma di elaborazione, usando le
istruzioni che essa può eseguire direttamente
• Un programma può essere eseguito più volte su diverse
istanze del problema, cioè su dati diversi
Introduzione al C
Unità 1
Pagina 6 2013/2014
Esempio: somma di due numeri
• Problema: calcolare la somma di due numeri
• Procedura:
1. Leggi il primo numero e mettilo in memoria all’indirizzo n
2. Leggi il secondo numero e mettilo in memoria all’indirizzo m
3. Carica nella ALU (Arithmetic Logic Unit) il contenuto dell’indirizzo n
4. Sommagli il contenuto dell’indirizzo m
5. Sposta il contenuto della ALU in memoria all’indirizzo k
6. Stampa il contenuto dell’indirizzo k
• Programma: ad ogni passo della procedura corrisponde un’istruzione
del programma
Ma è necessario che i passi siano a livello delle operazioni
elementari che la macchina può eseguire direttamente
Introduzione al C
Unità 1
Pagina 7 2013/2014
Linguaggio macchina
• Programmare direttamente un sistema di elaborazione è
possibile ma poco pratico:
− Le istruzioni effettuano operazioni molto semplici
− Occorrono moltissime istruzioni anche per procedure
che risolvono problemi molto semplici
− Le istruzioni codificate in binario sono difficili da
scrivere e da leggere
• Chi programmava i calcolatori agli inizi degli anni ‘60
doveva fare così: non aveva scelta!
• La produttività (tempo necessario a scrivere e mettere a
punto i programmi ) era bassissima
Introduzione al C
Unità 1
Pagina 8 2013/2014
Linguaggi di programmazione
• Soluzione del problema: definire una macchina virtuale
(cioè che uno vorrebbe avere ma non ha) che sia molto
più potente della macchina reale
• Alla macchina virtuale corrisponde un linguaggio di
programmazione molto più espressivo e più leggibile:
− Istruzioni più potenti: effettuato operazioni più
complesse
− Procedure più semplici: sono necessari meno passi
− Programmi più compatti e leggibili: più facili da
sviluppare e da mettere a punto
Introduzione al C
Unità 1
Pagina 9 2013/2014
Traduzione dei programmi
• Traduzione dei programmi:
− Si realizza un traduttore
− Il traduttore è un programma esso stesso
− Input: il programma scritto per la macchina virtuale
− Output: il programma eseguibile dalla macchina reale
• Ma almeno il traduttore dovrà essere eseguibile sulla
macchina reale!
• Vuol dire che (alla peggio) si scriverà il traduttore, una
tantum, in linguaggio macchina
Introduzione al C
Unità 1
Pagina 10
Problema: visto che la macchina virtuale non
esiste, allora chi esegue questi programmi?
2013/2014
Traduzione dei programmi (2)
Introduzione al C
Unità 1
Pagina 11
TRADUTTORE
INPUT OUTPUT
Programma Sorgente:
scritto nel linguaggio
della macchina virtuale
Programma Oggetto:
scritto nel linguaggio
della macchina reale
Eseguibile sulla
macchina reale
2013/2014
Tipologie di linguaggi
• LINGUAGGI MACCHINA − Le istruzioni sono sequenze di bit
− Linguaggi diversi per piattaforme diverse (Pentium, ARM, Sparc)
Es. 01001010111000100100101011100010 (istruzione a 32 bit)
• LINGUAGGI ASSEMBLATIVI − Istruzioni binarie codificate in forma più leggibile
− Corrispondenza uno a uno fra le istruzioni
Es. ADD alfa, beta; (istruzione per al somma di due interi)
• LINGUAGGI AD ALTO LIVELLO − Più evocativi e ‘simili’ al linguaggio naturale
Es. if (i>0) i=i+1; else printf("Errore");
Introduzione al C
Unità 1
Pagina 12 2013/2014
Portabilità dei programmi
• Programmi scritti in linguaggio macchina ed assemblativo
non sono portabili per definizione
• Programmi scritti in linguaggi ad alto livello nascono per
essere portabili:
− I linguaggi ad alto livello non sono legati ad una specifica
piattaforma
− Per eseguirli su una certa piattaforma basta disporre del
traduttore per quella piattaforma
Introduzione al C
Unità 1
Pagina 13
Un programma è portabile se può essere eseguito su una
piattaforma diversa da quella per la quale è stato sviluppato
2013/2014
Sintassi e semantica
Introduzione al C
Unità 1
Pagina 14
• In un linguaggio distinguiamo due aspetti fondamentali
• SINTASSI
− Insieme di regole che specificano come scrivere un
programma formalmente corretto
− Ma, come in italiano, posso scrivere un testo
formalmente corretto, ma senza alcun significato ….
• SEMANTICA
− Regole per attribuire un significato alle istruzioni ed
alla loro composizione, cioè ai programmi
− Analogamente in italiano assegna un significato alle
parole ed una logica ai costrutti
2013/2014
Dati e operazioni
Introduzione al C
Unità 1
Pagina 15
• Un linguaggio di programmazione deve consentire di
descrivere due aspetti fondamentali del processo di
elaborazione
• DATI
− Quali sono e come sono organizzate le informazioni sulle
quali il programma opera
− Deve consentire di rappresentare le informazioni nel
dominio di interesse: es. numeri, stringhe dicaratteri ecc.
• OPERAZIONI
− Manipolazioni delle informazioni rappresentate
− Deve consentire di coprire le esigenze del dominio in cui
si vuole utilizzare il linguaggio
2013/2014
Dal problema al programma
Introduzione al C
Unità 1
Pagina 16
• Problema
− La specifica del problema definisce univocamente quello
che voglio
− Non mi dice come posso ottenerlo
• Procedura risolutiva
− Descrive, verbalmente o con qualche formalismo, i passi
che devo effettuare per arrivare ala soluzione
• Programma
− Sequenza di istruzioni che codifica la procedura risolutiva
in un certo linguaggio
2013/2014
Algoritmo
Introduzione al C
Unità 1
Pagina 17
Procedura sistematica seguendo la quale arriviamo alla
soluzione di un problema, ovvero insieme di passi che,
eseguiti nell’ordine, permettono di calcolare i risultati a
partire dalle informazioni che vengono date in ingresso.
Informazioni in
ingresso
INPUT
Sequenza
ordinata di passi
ALGORITMO
Risultati
OUTPUT
Un algoritmo è una formalizzazione della procedura risolutiva
2013/2014
Esempio: Massimo Comun Divisore
Introduzione al C
Unità 1
Pagina 18
• Problema − Calcolare il massimo comun divisore di due interi m e n, cioè il più
grande intero che sia fattore primo di entrambi
− Specifica cosa voglio, ma non mi indica come fare per trovarlo
• Algoritmo − Poni MCD=1; sia m < n.
− Ripeti per tutti gli interi 1< k m, nell’ordine, il seguente passo
− Se k è divisore sia di n che m allora MCD=k altrimenti continua
− Al termine MCD ha il valore del massimo comun divisore di m e n.
• Programma − Codifica in un linguaggio di programmazione, ad esempio C, della procedura
di cui sopra
N.B. L’algoritmo proposto non è l’unico, e nemmeno il più efficiente..
2013/2014
Paradigmi di programmazione
Introduzione al C
Unità 1
Pagina 19
I linguaggi di programmazione si ispirano a diversi paradigmi, cioè a
diverse filosofie secondo cui gli algoritmi sono codificati
• Imperativo − Enfasi sulle operazioni, intese come azioni e comandi e istruzioni che
cambiano lo stato dell’elaborazione
− Gli oggetti sono funzionali all’elaborazione
• Funzionale − Enfasi sulle operazioni, intese come funzioni che calcolano risultati
− Gli oggetti sono funzionali all’elaborazione
• Orientato agli oggetti − Enfasi sugli oggetti che complessivamente rappresentano il dominio di
interesse
− Operazioni e funzioni sono definite con riferimento agli oggetti
2013/2014
Il linguaggio C
Introduzione al C
Unità 1
Pagina 20
• C è un linguaggio di programmazione ad alto livello che
supporta i paradigmi imperativo e funzionale
• Nato agli inizi degli anni ‘70 con l’obiettivo precipuo di riscrivere
il sistema operativo UNIX (ormai non più gestibile in linguaggio
macchina)
• Gli autori Ken Thompson e Dennis Ritchie lo chiamarono C
perché era il terzo tentativo: il precedente si chiamava B ….
• Come linguaggio nativo di UNIX (il primo sistema operativo
open source) si diffuse rapidamente nel mondo universitario, e
di lì nelle nuove imprese che andavano nascendo
• E’ forse oggi il linguaggio di programmazione più diffuso
• Subisce un lungo processo di standardizzazione che si
concretizza nello standard ISO/IEC 9899-1990
2013/2014
Perché studiamo il C ?
Introduzione al C
Unità 1
Pagina 21
• E’ molto vicino alla struttura del calcolatore e ne permette
l’accesso anche a basso livello
• Consente un eccellente controllo a basso livello:
− Controllo diretto degli indirizzi
− Gestione efficiente di stringhe
• Offre anche strutture di controllo ad alto livello, che consentono
anche la codifica di algoritmi molto complessi
• Punto di partenza per altri linguaggi molto diffusi: C++ e Java
• Permette di sviluppare programmi molto efficienti
Il trend attuale è di iniziare con un linguaggio imperativo (come il C), rimandando ad una fase successiva l’apprendimento dei linguaggi
orientati agli oggetti (C++ e Java)
2013/2014
L’ambiente di sviluppo
Introduzione al C
Unità 1
Pagina 22
Cosa ci occorre per scrivere ed eseguire un programma C?
• Carta e penna (?)
Ma ormai molti di noi scrivono direttamente al PC!
• Un Editor di testo
− Permette di scrivere il programma e salvarlo come file
− Può offrire altre funzioni (editor diretto dalla sintassi)
• Un Compilatore C
− Traduttore da C a linguaggio macchina
− Genera un programma direttamente eseguibile sul nostro PC
− Offre anche funzioni accessorie, come la segnalazione di
errori sintattici (ma non di quelli semantici!)
2013/2014
L’ambiente consigliato
Introduzione al C
Unità 1
Pagina 23
• Editor di testo: Notapad++
− Editor guidato dalla sintassi (colorazione ecc.)
− Oltre al C supporta molti altri formati
− Direttamente scaricabile
http://notepad-plus-plus.org/
• Compilatore: gcc
− Disponibile su diverse piattaforme (Windows, Linux, Mac)
− Istruzioni per l’installazione sul sito del corso
Si tratta di software open source, non ci sono oneri di licenza.
Distribuzione e libera,qualità eccellente, diffusione altissima
2013/2014
Il nostro primo programma C
Introduzione al C
Unità 1
Pagina 24
#include <stdio.h>
int main() {
printf("Il mio primo programma C.");
return 0;
}
• Per essere semplice è semplice!
• Ma qualcuno vuole seriamente sostenere che è leggibile?
• Certo, a prima vista, non è evidente quello che fa?
• E poi, che stile esoterico: ma era proprio necessario?
2013/2014
Cosa significa?
Introduzione al C
Unità 1
Pagina 25
• Il programma è costituito da direttive e istruzioni
• Le direttive sono ordini rivolti al compilatore
• Alle istruzioni corrispondono azioni che si chiede di effettuare in
fase di esecuzione, e strutture che ne precisano l’ordine e le
modalità di esecuzione
1. #include <stdio.h>
−È una direttiva che chiede al compilatore di includere una serie di
definizioni relative alle operazioni predefinite di I/O
2. int main() {...}
−È la definizione della funzione main che racchiude il corpo
principale del programma, contenuto tra i due simboli { e }
−Ogni programma C deve contenere una e una sola funzione main
2013/2014
Cosa significa? (continua)
Introduzione al C
Unità 1
Pagina 26
3. printf("Il mio primo programma C.");
−È un’istruzione che stampa su video la stringa racchiusa tra apici
−Più precisamente printf è una funzione predefinita, di quelle
incluse a seguito della direttiva #include <stdio.h>
4. return 0;
− È un’istruzione che termina l’esecuzione della funzione main e
restituisce il valore 0 (per dire che tutto è andato bene)
• La cosa non vi è chiara? Niente paura: è tutto normale!
• Non c’è, purtroppo, un iter del tutto lineare per iniziare a lavorare in C
• L’alternativa (noiosa) è spiegare tutto prima di far succedere qualcosa
• Occorre un po’ di pazienza: le cose si chiariranno presto.
2013/2014
Sviluppare ed eseguire il programma
Introduzione al C
Unità 1
Pagina 27
1. SCRITTURA
− Si scrive il programma usando un editor
− Il programma viene salvato sul computer in un file
2. COMPILAZIONE
− Il file contenete il programma viene consegnato al compilatore
− Il compilatore, se non rileva errori sintattici, genera un file
eseguibile contenete la traduzione
− Altrimenti segnala gli errori e termina
3. ESECUZIONE
− Il file eseguibile viene mandato in esecuzione
− Anche più volte, senza doverlo ricompilare
2013/2014
Scrittura del programma
Introduzione al C
Unità 1
Pagina 28
Per chiarire che si tratta di un programma C, salviamo con un
nome di file primo.c dove:
− primo è il nome che vogliamo dare al nostro programma
− c è l’estensione di file che tradizionalmente indica i
programmi C
• La scrittura di un programma può essere effettuata con
qualsiasi programma che consenta la scrittura di un testo
Es. Edit, Notepad, Vim, Notepad++, Emacs,...
• Attenzione però che il formato di salvataggio sia quello di
testo non formattato (ad esempio un file docx non va bene!)
2013/2014
Compilazine del programma
Introduzione al C
Unità 1
Pagina 30
• In Windows ’interazione con il compilatore gcc avviene dando il
comando direttamente, cioè non tramite l’interfaccia grafica
• I comandi vengono passati nella finestra ‘command prompt’
1. Cambiare la directory corrente con quella che contiene il
programma, nel mio caso:
C:\Users\Utente\Desktop\ProgrammiC
2. Mandare in esecuzione il compilatore:
gcc –o first primo.c
Manda in esecuzione gcc
Nome da assegnare
al file eseguibile
Nome del programma
da compilare
Come risultato della
compilazione viene creato,
nella directory corrente,
il file first.exe
2013/2014
Esecuzione del programma
Introduzione al C
Unità 1
Pagina 31
• Se non ci sono errori il compilatore genera un file eseguibile:
− Viene salvato nella directory corrente, col nome che si è
specificato e l’estensione .exe
− Nel nostro caso first.exe in C:\...\Desktop\ProgrammiC
• Per mandare il programma in esecuzione basta passare il nome del
file eseguibile come comando nella command prompt
− Non è necessario specificare l’estensione
− Nel caso in esempio: first o first.exe
• Il risultato di ciascuna esecuzione sarà la visualizzazione nella
command prompt della stringa:
Il mio primo programma C.
2013/2014
E se ci sono errori?
Introduzione al C
Unità 1
Pagina 33
SI
ERRORI
SINTATTICI
?
COMPILAZIONE
SCRITTURA
E
MODIFICA
ERRORI
SEMANTICI
?
ESECUZIONE
INIZIO
FINE
SI NO
NO
2013/2014
Errori
Introduzione al C
Unità 1
Pagina 34
Questo programma contiene diversi errori, di diversi tipi:
#include <stdio.h>
int main () {
printf("I miei primi errori in C...\n")
Printf("...e non saranno gli ultm!!!\n");
return 0;
}
Tipi di errori:
• Sintattici: riguardano la correttezza formale
• Semantici: riguardano la correttezza sostanziale
Manca il ;
C’è un errore di ortografia
2013/2014
Errori sintattici
Introduzione al C
Unità 1
Pagina 35
• Legati alla violazione delle regole del linguaggio
#include <stdio.h>
int main () {
printf("I miei primi errori in C...\n")
Printf("...e non saranno gli ultm!!!\n");
return 0;
}
• Questi errori sono individuati dal compilatore
• Non sempre però le segnalazioni sono chiare:
>gcc -o errori errori.c
errori.c: In function 'main':
errori.c:18:4: error: expected ';' before 'Printf'
>
Manca il ;
2013/2014
Errori semantici
Introduzione al C
Unità 1
Pagina 36
• Il programma non fa quello che vorrei che facesse
• P. es. nel caso di errori.c viene stampata una stringa
contenente errori di ortografia (non è quello che vorrei):
>gcc -o errori errori.c
>errori
I miei primi errori in C...
...e non saranno gli ultm!!!
>
• Il compilatore non segnala questi errori (e non può farlo!)
• Lui che può saperne di quello che vorrei stampare?
Gli errori semantici possono essere individuati solo eseguendo il programma e analizzando i risultati
2013/2014
Programma corretto
Introduzione al C
Unità 1
Pagina 37
#include <stdio.h>
int main () {
printf("I miei primi errori in C...\n");
printf("...e non saranno gli
ultimi!!!\n");
return 0;
}
2013/2014
Funzioni
Introduzione al C
Unità 1
Pagina 38
• L’organizzazione dei programmi C e fortemente basata sul
concetto di funzione
• Gestire la complessità di un programma decomponendolo in
moduli:
− Approccio divide et impera
− Definire funzioni, cioè moduli corrispondenti a parti della
procedura che svolgono compiti precisi
− Costruire il programma utilizzando questi moduli
• Due tipi di funzioni:
− Funzioni di libreria: già definite da altri e raccolte in libreria
− Funzioni definite dal programmatore: la loro definizione è
parte del programma
2013/2014
Parametri e valore di una funzione
Introduzione al C
Unità 1
Pagina 39
• Le funzioni prevedono normalmente parametri sui quali si basa
l’elaborazione effettuata dalla funzione
• Devono essere passati ogni volta che la funzione è invocata
• I parametri permettono di usare una funzione per effettuare più
volte la stessa elaborazione su dati diversi
• In C una funzione ha (quasi) sempre un valore, che viene
restituito come risultato del calcolo della funzione
• Se la funzione non restituisce un valore di dice che il suo valore è void
ESEMPIO: sin(x)
• x è un valore reale che viene passato alla funzione come parametro
• la funzione calcola un valore reale
• in C sin è una funzione di libreria predefinita
2013/2014
Definizione e invocazione
Introduzione al C
Unità 1
Pagina 40
• Occorre distinguere chiaramente tra:
• DEFINIZIONE DI UNA FUNZIONE
− Parte del programma in cui viene definito cosa la funzione fa
− Non è esplicita per le funzioni di libreria
− Una funzione deve essere dichiarata prima di essere usata
• INVOCAZIONE DI UNA FUNZIONE
− Parte di un programma in cui viene richiesta l’esecuzione
della funzione
− Sintassi: nomeFunzione(Parametri)
− Semantica: la funzione esegue le operazioni specificate nella
sua definizione sulle informazioni passate come parametri
2013/2014
Esempio
Introduzione al C
Unità 1
Pagina 41
#include <stdio.h>
#include <math.h>
int main() {
printf("Questo programma C esegue dei calcoli ");
printf("usando funzioni matematiche predefinite..\n");
printf("la radice quadrata di 169: %f", sqrt(169) );
}
• Viene invocata la funzione di libreria sqrt che calcola la radice
quadrata del numero che gli viene passato come parametro • La libreria math di cui fa parte sqrt è indicata nella direttiva al
compilatore • Nell’esempio sqrt(169)calcola la radice di 169
• Il risultato è passato come valore e usato dalla printf
• Anche printf è una funzione di libreria: per poterla usare devo
chiedere al compilatore di includere la libreria stdio
2013/2014
La funzione main
Introduzione al C
Unità 1
Pagina 42
• Un programma C deve sempre contenere una funzione main
• La funzione main ha valore void, cioè non restituisce valore
• La definizione di altre funzioni segue quella della funzione main
• L’esecuzione del programma consiste nell’esecuzione della funzione main, la quale, eventualmente, invoca altre funzioni
provocandone l’esecuzione
PROBLEMA
− Il compilatore, per poter tradurre il programma, deve conoscere
le definizioni delle funzioni
− Quando trova le invocazioni deve almeno conoscere: numero
e tipo dei parametri e tipo del valore della funzione
− Ma le definizioni vengono dopo il main …..
2013/2014
Prototipi di funzione
Introduzione al C
Unità 1
Pagina 43
• Per risolvere il problema, in C prevede la dichiarazione dei
prototipi di funzione
• Un prototipo di funzione è una dichiarazione sintetica che
specifica:
− Il nome della funzione
− Il tipo del risultato
− Il numero ed il tipo dei parametri
• La dichiarazione dei prototipi precede la definizione della funzione main
ESEMPIO: double sqrt(double)
• La funzione sqrt restituisce un valore reale in doppia precisione
• Ha un parametro anch’esso reale in doppia precisione (tipo double)
2013/2014
Parametri
Introduzione al C
Unità 1
Pagina 44
• I parametri di una funzione sono i valori passati dal modulo
chiamante alla funzione per poter svolgere i calcoli
• In generale, i parametri passati come argomenti possono essere
espressioni complesse formate a loro volta da invocazioni di
altre funzioni
ESEMPIO
• la funzione double sqrt(double)deve essere invocata passando
un valore di cui vogliamo calcolare la radice quadrata
• la funzione double pow(double,double)calcola la potenza e i
parametri sono base ed esponente
• La chiamata sqrt(pow(5,2)+pow(12,2))calcola la radice
quadrata di 52+122 e restituisce un valore reale in doppia precisione,
nella fattispecie 13
2013/2014
La funzione printf
Introduzione al C
Unità 1
Pagina 46
• Visualizza (stampa) a video una sequenza di dati formattati
• Fa parte della libreria stdio.h e ha la forma:
printf (stringa di controllo del formato, altri argomenti )
• La stringa di controllo del formato descrive il formato dell’output
• Gli altri argomenti specificano i dati che si intende visualizzare
• Restituisce come valore il numero di caratteri visualizzati
• La stringa di controllo del formato è composta da una serie di
specifiche di conversione che indicano:
− Il tipo del dato che si vuole stampare
− L’ampiezza del campo in cui deve essere stampato
− La suddivisione all’interno del campo
• Altri caratteri nella stringa vengono stampati direttamente
2013/2014
Specifiche di conversione
Introduzione al C
Unità 1
Pagina 47
• Alcune specifiche di conversione di uso frequente sono:
%c singolo carattere
%d intero in rappresentazione decimale
%o intero in rappresentazione ottale
%x intero in rappresentazione esadecimale
%u intero in rappresentazione decimale senza segno
%f reale in notazione virgola fissa
%s stringa
%e reale in notazione scientifica
Tra % e la lettera si può inserire un segno meno che indica
giustificazione a sinistra, un numero intero che dà l'ampiezza del
campo e può essere seguito da un punto e da un altro intero che dà il
numero di cifre o il numero di caratteri per una stringa.
2013/2014
Pagina 48
Esempio di printf
#include <stdio.h>
int main()
{
printf("%d^ volta con il C\n", 1);
printf("%.4f\n", 123.987654);
return 0;
}
• Stampa la stringa:
1^ volta con il C
123.9877
N.B. Il carattere speciale \n provoca l’andata a capo
Introduzione al C
Unità 1
2013/2014
Pagina 49
Escape sequence
Introduzione al C
Unità 1
Sono sequenze di caratteri, inizianti per \ che non sono
visualizzati sullo schermo, ma producono altri effetti
\n newline, va a capo
\t tabulazione
\r posiziona il cursore all’inizio della riga corrente
\a emette un suono
\t tabulazione
\\ stampa il carattere \
\' stampa il carattere '
\" stampa il carattere “
Lista completa sul libro (o su Wikipedia)
2013/2014
Pagina 50
Stampa di apici e virgolette …
Introduzione al C
Unità 1
#include <stdio.h>
int main()
{
printf("l\'apostrofo non e\' \"facile\"");
printf(" da stampare\n");
return 0;
}
Visualizza l'apostrofo non e' "facile" da stampare
Attenzione alle “smart quotes” introdotte da molti editor! Evitare il copia e incolla (di testi formattati)
2013/2014
Esercizi
Introduzione al C
Unità 1
Pagina 51
Esercizio 1.1
• Provare a scrivere, compilare ed eseguire tutti gli esempi visti
finora. Introdurre piccole variazioni su tema, ricompilare e
controllare l’effetto.
Esercizio 1.2
• Scrivere un programma C che calcoli il valore 826 e lo visulaizzi
su video, preceduto dalla frase 86 elevato alla sesta è .
Esercizio 1.3
• Scrivere un programma che calcoli la radice quadrata di 2, e
visualizzi il risultato con 3 cifre decimali.
2013/2014
Esercizio 1.2 (soluzione)
Introduzione al C
Unità 1
Pagina 52
Esercizio 1.2 – Scrivere un programma C che calcoli il valore 866
e lo visulaizzi su video, preceduto dalla frase 86 elevato alal
sesta è .
#include <stdio.h>
#include <math.h>
int main()
{
printf("86 elevato alla sesta e\' ");
printf("%f\n", pow(82.0, 6.0));
return 0;
}
Output:
86 elevato alla sesta e' 304006671424.000000
2013/2014
Esercizio 1.3 (soluzione)
Introduzione al C
Unità 1
Pagina 53
Esercizio 1.3 – Scrivere un programma che calcoli la radice
quadrata di 2, e visualizzi il risultato con 3 cifre decimali.
#include <stdio.h>
#include <math.h>
int main()
{
printf("%.3f\n", sqrt(2.0));
return 0;
}
Output: 1.414
2013/2014
Problemi pratici: tastiera italiana
Introduzione al C
Unità 1
Pagina 54
Come si scrive la graffa aperta ( { ) ?
Alt + 123
oppure
Alt Gr + Shift + è
oppure
Fn + Alt + 123 (per i portatili)
Come si scrive la graffa chiusa ( } ) ?
Alt + 125
oppure
Alt Gr + Shift + +
oppure
Fn + Alt + 125 (per i portatili)
2013/2014
Recommended