Sei sulla pagina 1di 18

Giorno 1

Iniziare con C#

Che cos’è C#
Rilasciato nel giugno 2000, C# (si pronuncia “Ci sharp”) è un nuovo linguaggio di
Microsoft sottoposto a ECMA per la standardizzazione. Creato da un’équipe guidata
dall’ingegnere Anders Hejlsberg, che ha ideato altri prodotti, quali Borland Turbo
C++ e Borland Delphi, C# integra e migliora gli aspetti più funzionali di linguaggi
già esistenti.
C# è potente e flessibile e, come tutti i linguaggi di programmazione, può essere
utilizzato per creare molteplici applicazioni; non pone limiti a ciò che potete fare ed
è già stato utilizzato per progetti molto diversi tra loro, come siti Web, strumenti di
sviluppo e persino compilatori.
Vari linguaggi di programmazione possiedono caratteristiche orientate agli oggetti,
ma sono davvero pochi quelli che si possono definire completamente OOP (Object-
Oriented Programming) come C#. Il linguaggio orientato agli oggetti verrà trattato
nel Giorno 2.
Più avanti, nella lezione di oggi, si confronterà C# con altri linguaggi di programma-
zione e si vedrà quali applicazioni possono essere create.

Perché C#?
Si supponeva che Java, C++, Perl, Microsoft Visual Basic e altri linguaggi esistenti
offrissero tutte le funzionalità necessarie e, quindi, non ci fosse ragione di creare un
nuovo linguaggio di programmazione.
C# si basa su C e C++, ma ha regole proprie. Microsoft ha utilizzato le proprietà più
efficaci di C e C++ includendovi nuove caratteristiche che rendono il linguaggio fa-
cile da usare (molte di queste sono simili alle funzionalità di Java).
Le caratteristiche principali di C# sono le seguenti:
● C# è semplice;
● C# è di ultima generazione;
● C# è orientato agli oggetti.
4 Giorno 1

Ma esistono anche altre ragioni per cui C# risulta interessante:


● C# è potente e flessibile;
● C# è un linguaggio costituito da poche istruzioni;
● C# è modulare;
● C# sarà molto diffuso.
Il paragrafo seguente presenta molti termini tecnici, ma la maggior parte di
essi non sono particolarmente importanti per i programmatori di C#. Quelli
davvero rilevanti verranno spiegati successivamente nel corso del libro.

C# è semplice
C# ha permesso di eliminare alcuni aspetti complessi tipici di linguaggi quali Java e
C++, come macro, modelli, eredità multiple e classi di base virtuali, che creano vari
problemi agli sviluppatori C++.
C# è semplice perché è basato su C e C++; quindi, se avete familiarità con tali lin-
guaggi o con Java, riuscirete a comprendere meglio C#. Istruzioni, espressioni, ope-
ratori e altre funzioni derivano direttamente da C e da C++, ma le migliorie apporta-
te a C# (come l’eliminazione di ridondanze e le modifiche riguardanti la sintassi)
semplificano notevolmente il linguaggio. Per esempio, C++ possiede tre operatori
che consentono di lavorare con i membri (::, . e ->) e risulta complesso capire
quando usarli. In C#, essi vengono sostituiti da un solo simbolo: l’operatore “dot”.

Se avete usato Java e siete convinti che sia semplice, troverete che C# lo è an-
cora di più.

C# è di ultima generazione
Caratteristiche quali la gestione delle eccezioni, la garbage collection, i tipi di dati
estensibili e la protezione del codice sono proprie di un linguaggio di ultima gene-
razione e C# le possiede tutte.
I puntatori sono parte integrante di C e C++, ma rappresentano anche l’ele-
mento del linguaggio che genera maggiore confusione. C# elimina molti
dei problemi determinati dai puntatori. In C#, le garbage collection e la
protezione dei tipi sono parte integrante del linguaggio. Se non avete fami-
liarità con i concetti di puntatori, garbage collection e sicurezza dei tipi,
non preoccupatevi: saranno spiegati nelle prossime lezioni.

C# è orientato agli oggetti


TERMINE
Le caratteristiche fondamentali di un linguaggio orientato agli oggetti sono l’incap-
sulamento, l’ereditarietà e il polimorfismo. C# le supporta tutte. L’incapsulamento è
il posizionamento di funzionalità in un singolo pacchetto. L’ereditarietà è un meto-
do per estendere codice e funzionalità esistenti nei nuovi programmi e pacchetti. Il
Iniziare con C# 5

polimorfismo è la capacità di adattarsi alle operazioni richieste. Spiegazioni più det-


tagliate in merito, verranno fornite nel corso del libro e in particolare nella lezione
del Giorno 2.

C# è potente e flessibile
Come si è già accennato, C# non pone limiti alla realizzazione di qualsiasi tipo di
progetto, tra cui elaboratori di testi, grafica, fogli di calcolo e persino compilatori
per altri linguaggi.

C# è un linguaggio costituito da poche istruzioni


TERMINE
C# è un linguaggio che utilizza un numero limitato di istruzioni, denominate parole
chiave, che rappresentano la base su cui sono costruite le funzionalità del linguag-
gio. La Tabella 1.1 elenca le parole chiave di C#, la maggior parte delle quali viene
usata per descrivere informazioni. Potreste pensare che un linguaggio con un mag-
gior numero di parole chiave sia più potente, ma ciò non corrisponde al vero.
Quando programmerete con C# vi renderete conto che è possibile eseguire qualsia-
si tipo di operazione.
Vi sono alcune altre istruzioni nei programmi C# che, sebbene non siano
parole chiave, dovrebbero essere trattate come se lo fossero: si tratta di get,
set e value.

Tabella 1.1 Le parole chiave di C#


abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
while
6 Giorno 1

C# è modulare

TERMINE
Il codice C# può (e dovrebbe) essere scritto in parti denominate classi, che conten-
gono routine chiamate metodi membri. Classi e metodi possono essere riutilizzati in
altre applicazioni e programmi. Passando parti di informazioni alle classi e ai meto-
di, potete creare un codice utile e riutilizzabile.

Nel Giorno 2 imparerete le classi e nel Giorno 6 come crearle.

C# sarà molto diffuso


C# è uno dei linguaggi di programmazione più recenti e si può affermare a ragion
veduta che conoscerà un’ampia diffusione. Questo è anche l’intento di Microsoft e
sebbene un’azienda non possa determinare la notorietà di un prodotto, può sicura-
mente contribuirvi.
Non molto tempo fa, Microsoft ha registrato il fallimento del sistema operativo Mi-
crosoft Bob. C# ha migliori opportunità di Microsoft Bob poiché Microsoft lo utiliz-
za continuamente e porzioni di molti dei suoi prodotti sono già state riscritte in C#;
in questo modo l’azienda ne rafforza le capacità per soddisfare le necessità dei pro-
grammatori.
Microsoft .NET è un’altra ragione per cui C# ha grandi possibilità di affermarsi: .NET
rappresenta una svolta nel modo in cui si effettua la creazione e l’implementazione
delle applicazioni. Sebbene virtualmente qualsiasi linguaggio di programmazione
possa venire usato con .NET, C# sta dimostrando di essere quello maggiormente
adatto. Il Giorno 2 comprende un paragrafo che illustra i punti di forza di .NET.
Grazie alle caratteristiche citate precedentemente, C# avrà buone possibilità di affer-
marsi e di diffondersi ampiamente come linguaggio di programmazione.

C# e gli altri linguaggi di programmazione


Probabilmente, vi state domandando non solo quali differenze intercorrano tra C# e
gli altri linguaggi di programmazione, ma anche se non sia consigliabile imparare
uno di questi linguaggi al posto di C#.
Le principali domande relative a .NET che si incontrano nei forum di Inter-
net sono:
● qual è la differenza tra Java e C#?
● C# non è semplicemente un clone di Java?
● qual è la differenza tra C# e C++?
● dovrei imparare Visual Basic .NET o C#?
Microsoft afferma che C# coniuga la potenza di C++ con la semplicità di Visual Ba-
sic. Potrebbe forse non essere facile come Visual Basic 6, ma lo è sicuramente quan-
to Visual Basic .NET (versione 7), che è stato riscritto completamente. Dunque, si
Iniziare con C# 7

può concludere che Visual Basic non è più facile di C#: impiegando C#, infatti, po-
tete scrivere molti programmi con meno codice.
C# ha eliminato alcune caratteristiche di C++ che causano molti problemi ai pro-
grammatori, mantenendo potenza e funzionalità. Alcuni degli errori di programma-
zione in cui è più facile incorrere in C++ possono essere tranquillamente evitati, ri-
sparmiando ore o addirittura giorni di lavoro.
Un altro linguaggio molto diffuso è Java che, come C++ e C#, si basa su C. Avrete
modo di scoprire che quanto avrete imparato su C# può essere applicato quasi sem-
pre anche a Java.
Probabilmente, conoscete il linguaggio di programmazione C. Molti utenti si chiede-
ranno se debbano imparare C prima di C#, C++ o Java. In realtà, non è assolutamente
necessario.
Nei prossimi paragrafi esplorerete i passaggi di creazione di un programma.

Preparazione alla programmazione


Se siete impegnati nella soluzione di un problema, dovreste seguire dei passaggi
ben precisi. Prima di tutto, ovviamente, è necessario definire il problema; dopo di
che potete mettere a punto una strategia per porvi rimedio, attuarla e, infine, testare
i relativi risultati per assicurarvi di aver raggiunto l’obiettivo. Questa stessa logica
può essere applicata a molti altri campi, programmazione compresa.
Quando, infatti, create un programma in C# (o in qualsiasi linguaggio), dovreste se-
guire una sequenza di passaggi.
1. Determinare l’obiettivo (o gli obiettivi) del programma.
2. Determinare i metodi che intendete usare nello scrivere il programma.
3. Creare il programma per risolvere il problema.
4. Eseguire il programma per verificare i risultati.
Si potrebbe scrivere un elaboratore di testi o un programma di database oppure,
molto più semplicemente, posizionare il vostro nome sullo schermo. Comunque, se
non fissate un obiettivo, non sarete in grado di scrivere un programma efficace.
Successivamente, dovete determinare il metodo da usare per scrivere il programma.
Avete necessità di un programma per risolvere il problema? Di quali informazioni
dovete disporre? Quali formule saranno usate? Dovreste provare a determinare ciò
che è necessario e in quale ordine verrà implementato.
Supponete che qualcuno vi domandi di scrivere un programma per determinare
l’area all’interno di un cerchio. Il primo passaggio, dunque, è già superato, poiché
conoscete il vostro obiettivo. Il secondo passaggio è determinare ciò che vi serve
per circoscrivere l’area. Date per scontato che il programmatore fornisca il raggio
del cerchio; in questo modo potete applicare la formula πr2 per ottenere la risposta.
Ora disponete di tutti gli elementi necessari, potete quindi passare al terzo e al
quarto passaggio, ovvero al ciclo di sviluppo del programma.
8 Giorno 1

Ciclo di sviluppo del programma


Il ciclo di sviluppo del programma impone di seguire passaggi precisi. Nel primo
passaggio, potete usare un editor per creare un file contenente il vostro codice sor-
gente; nel secondo, compilate il codice sorgente per creare un file intermedio deno-
minato file eseguibile o file libreria; il terzo passaggio, infine, consiste nell’eseguire
il programma per verificarne il funzionamento.

Creare il codice sorgente


TERMINE
Il codice sorgente è una serie di istruzioni o comandi utilizzati per istruire il compu-
ter a eseguire le attività desiderate. Come già accennato, il primo passaggio del ciclo
di sviluppo del programma consiste nell’inserire codice sorgente in un editor. Di se-
guito viene mostrata una riga di codice sorgente C#:
System.Console.WriteLine(“Hello, Mom!”);

Con questa istruzione il computer è in grado di visualizzare il messaggio Hello,


Mom! sullo schermo. (Per ora, non preoccupatevi di come funziona.)

Uso di un editor
TERMINE
Un editor è un programma che può essere usato per inserire o salvare un codice
sorgente; ne esistono vari da utilizzare con C#: ideati specificatamente o meno.
Al momento della stesura del libro esistevano solo alcuni editor creati per C#; tutta-
via, a breve, molti altri saranno presenti sul mercato. Microsoft ha potenziato le ca-
pacità del suo prodotto Visual Studio, che include Visual C#, l’editor attualmente
più importante in circolazione. Se non possedete Visual Studio .NET, potete comun-
que lavorare con C#.
Vi sono inoltre altri editor disponibili per C# che, Come Visual Studio .NET, vi con-
sentono di eseguire tutti i passaggi del ciclo di sviluppo senza abbandonare l’editor
stesso. La maggior parte di questi colorano il testo che inserite; questo rende più fa-
cile individuare eventuali errori. Molti editor vi offrono anche varie informazioni su
ciò che dovete inserire e forniscono aiuto consistente.
Se non possedete un editor C#, non preoccupatevi: gran parte dei sistemi di elabo-
razione comprendono un programma che può essere usato come editor. Se state
usando Microsoft Windows, potete scegliere Blocco note o WordPad come vostro
editor. Se avete optato per un sistema Linux o UNIX, potete impiegare editor quali
ed, ex, edit, emacs o vi.
Quasi tutti gli elaboratori di testo usano speciali codici per formattare i loro docu-
menti; altri programmi, invece, non possono leggerli correttamente. Vari word pro-
cessor, quali WordPerfect, Microsoft Word e WordPad, sono capaci di salvare file
sorgenti in un formato basato sul testo. Per salvare un file di elaboratore di testi
come file di testo, selezionate l’opzione testo.
Iniziare con C# 9

Per trovare editor alternativi, potete cercare nei negozi di computer, nei ca-
taloghi di vendita per corrispondenza o negli annunci delle riviste di pro-
grammazione di computer. Di seguito vengono riportati alcuni editor di-
sponibili al momento della stesura di questo libro.
● CodeWrite. È un editor che fornisce speciale supporto per ASP, XML,
HTML, C#, Perl, Python e altri. Si trova consultando il sito www.pre-
mia.com.
● EditPlus. È un editor di testo adatto a Internet, un editor HTML e un
editor per programmatori di Windows. Oltre a rappresentare un buon
sostituto di Blocco note, offre molte caratteristiche potenti per autori e
programmatori di pagine Web, inclusa la codifica colore per il codice.
Si trova all’indirizzo www.editplus.com.
● JEdit. È un editor open source per Java; tuttavia può essere impiegato
anche per C#. Comprende la capacità di codifica colore di codice. Si
trova all’indirizzo http://jedit.sourceforge.net.
● Poorman IDE di Duncan Chen. Fornisce un editor che evidenzia la
sintassi sia per C# sia per Visual Basic .NET. Consente anche di eseguire
il compilatore e catturare l’output del terminale, in modo da non dover
abbandonare IDE Poorman. Si trova all’indirizo www.geocities.
com/duncanchen/poormanide.htm.
● SharpDevelop di Mike Krüger. È un editor gratuito per progetti C#
su piattaforme .NET di Microsoft ed è open source (GPL): potete scarica-
re sia il codice sorgente sia gli eseguibili da www.icsharpcode.net.

Attribuire un nome ai file sorgente


Quando salvate un file sorgente, dovete attribuirgli un nome che descriva le funzio-
ni del programma. Inoltre, quando salvate un file sorgente di programmi C#, date al
file un’estensione .cs. Sebbene possiate scegliere per il vostro file sorgente qualsiasi
nome ed estensione, .cs è considerata quella più appropriata.

Eseguire un programma C#
Prima di addentrarci nel ciclo di sviluppo del programma, è importante capire come
viene eseguito un programma C# che è strutturato in modo diverso da quelli che
create con altri linguaggi di programmazione.

TERMINE
I programmi C# sono creati per essere eseguiti in CLR (Common Language Run-
time). Ciò significa che se create un programma eseguibile C# e provate a ese-
guirlo su un computer che non possiede CLR o un runtime compatibile, non
verrà eseguito. Eseguibile significa che il programma può essere eseguito dal vo-
stro computer.
Il vantaggio nel creare programmi per un ambiente runtime consiste nella portabili-
tà. In linguaggi più datati, quali C e C++, se volevate creare un programma da ese-
guire su diverse piattaforme o sistemi operativi dovevate compilare differenti pro-
grammi eseguibili. Per esempio, se avevate scritto un’applicazione C e desideravate
10 Giorno 1

eseguirla su un computer Linux e su un computer Windows, dovevate creare due


programmi differenti. Con C#, invece, potete creare un solo programma ed eseguir-
lo su entrambi i sistemi operativi.

TERMINE
Se desiderate che il vostro programma venga eseguito il più velocemente possi-
bile, dovete creare un vero eseguibile. Un computer necessita di istruzioni digita-
li o binarie in ciò che viene chiamato linguaggio computer. Un programma no-
minato compilatore esegue questa traduzione: prende il vostro file di codice sor-
gente come input e produce un file su disco contenente le istruzioni che corri-
spondono alle istruzioni del vostro codice sorgente. Con programmi quali C e
C++ il compilatore crea un file che può essere eseguito senza ulteriori operazioni
da compiere.
Con C# potete usare un compilatore che non produce linguaggio macchina,
bensì un file IL (Intermediate Language). Poiché esso non è direttamente ese-
guibile dal computer, occorre effettuare un passaggio in più per tradurre o per
compilare il programma per il computer. CLR o una fase di esecuzione C# com-
patibile compie la necessaria compilazione finale.
Una delle prime operazioni che fa CLR con un file IL è una compilazione finale del
programma. In questo processo, CLR trasforma il codice IL portabile in un linguag-
gio (linguaggio macchina) che il computer possa comprendere ed eseguire. CLR in
realtà compila solo le parti del programma che vengono utilizzate, consentendo di
risparmiare tempo. Inoltre, dopo che a una porzione del vostro file IL è stata data
una vera compilazione, non è più necessario ricompilarla, poiché questa porzione
del programma viene salvata e riutilizzata tutte le volte che viene eseguita.
Poiché il runtime deve compilare il file IL, la prima volta ci vuole un po’
più di tempo per eseguire un programma in C# rispetto a quello impiega-
to per eseguire un linguaggio pienamente compilato come C++. Ma le vol-
te successive che un programma in C# viene eseguito la differenza di
tempo non sussiste più, perché verrà usata la sua versione pienamente
compilata.

L’ultimo minuto di compilazione di un programma C# è denominato com-


pilazione Just in time o anche jitting.

Compilare codice sorgente C#


Per creare il file IL potete usare il compilatore C#. Normalmente si usa il comando
csc per eseguire il compilatore, seguito dal nome di file sorgente. Per esempio, per
compilare un file sorgente denominato radius.cs, digitate la formula seguente alla
riga di comando:
csc radius.cs

Se state usando un ambiente di sviluppo grafico, compilare è persino più semplice.


Nella maggior parte degli ambienti grafici potete compilare un programma selezio-
nando l’icona Compila o l’appropriata opzione dal menu. Dopo che il codice è stato
compilato, selezionando l’icona Esegui o l’appropriata opzione dal menu il pro-
Iniziare con C# 11

gramma viene eseguito. Dovreste controllare i vostri manuali di compilazione per


avere ulteriori dettagli sulla compilazione e sull’esecuzione di un programma.

TERMINE
Dopo la compilazione, ottenete un file IL. Se osservate un elenco dei file nella di-
rectory o nella cartella in cui avete compilato, dovreste trovare un nuovo file che ha
lo stesso nome del vostro file sorgente ma con un’estensione .exe (invece che .cs).
Il file con l’estensione .exe è il vostro programma “compilato” (chiamato assembly).
Questo programma è pronto per essere eseguito sul CLR. Il file assembly contiene
tutte le informazioni che la fase di esecuzione ordinaria deve conoscere per esegui-
re il programma.
La Figura 1.1 mostra che cosa accade nel passaggio dal codice sorgente al codice
eseguibile.

OXOXOXO
XOXOXOX
QUESTO
OXOXOX
È Compila
CODICE OXOXOX
XOXOXO
O X X OO X

File assembly
contenente IL

Figura 1.1
Il codice sorgente C# che scrivete è convertito in un codice IL (Intermediate Language) dal compilatore.

In generale vengono creati due tipi di programmi C#: gli eseguibili e le libre-
rie. Durante le prime due settimane lezione sarete concentrati sugli esegui-
bili, che sono file EXE. Potete inoltre usare C# per altri tipi di programma-
zione, compreso lo scripting su pagine ASP.NET. Approfondirete la cono-
scenza delle librerie nelle lezioni della terza settimana.

Completamento del ciclo di sviluppo


Una volta che il vostro programma è un file IL compilato, potete eseguirlo inseren-
do il suo nome nel prompt da riga di comando o semplicemente come qualsiasi al-
tro programma.
Se eseguite il programma e ottenete risultati differenti da ciò che vi aspettavate, do-
vete tornare al primo passaggio del processo di sviluppo. Dovete identificare ciò
che ha provocato il problema e correggerlo nel codice sorgente. Quando apportate
una modifica al codice sorgente, dovete ricompilare il programma per creare una
versione corretta del file eseguibile. Continuate a seguire questo ciclo finché non
riuscite a eseguire il programma esattamente come volevate.
12 Giorno 1

Il ciclo di sviluppo C#
Passaggio 1. Usate un editor per scrivere il vostro codice sorgente. Ai file co-
dice sorgente C# viene abitualmente attribuita l’estensione .cs (per esempio,
a_program.cs, database.cs e così via).
Passaggio 2. Compilate il programma usando un compilatore C#. Se il
compilatore non individua alcun errore nel programma, produce un file
assembly con l’estensione .exe o .dll. Per esempio, myprog.cs è compilato a
myprog.exe di default. Se il compilatore individua errori, li riporta. Dove-
te ritornare al passaggio 1 per effettuare le correzioni nel vostro codice
sorgente.
Passaggio 3. Eseguite il programma sul computer con un runtime C# quale
il Common Language Runtime. Dovreste verificare se il vostro programma
funziona correttamente. In caso contrario, iniziate di nuovo dal passaggio
1 ed effettuate le modifiche e le aggiunte al vostro codice sorgente.
La Figura 1.2 mostra i passaggi del processo di sviluppo del programma. Per tutti i
programmi, tranne quelli più semplici, potreste dover eseguire questa sequenza
molte volte. Persino i programmatori più esperti non riescono a scrivere un pro-
gramma completo senza errori, la prima volta! Quindi, poiché eseguirete il ciclo
edita-compila-effettua test molte volte, è importante avere dimestichezza con l’edi-
tor, il compilatore e l’ambiente di runtime.

Il vostro primo programma C#


Per aiutarvi a conoscere meglio il vostro compilatore, il Listato 1.1 contiene un pro-
gramma semplice e rapido su cui potete lavorare.
Questa dimostrazione impiega un programma denominato hello.cs che visualizza
le parole Hello, World! sullo schermo ed è il più utilizzato per introdurre gli
utenti alla programmazione; poiché risulta molto valido per l’apprendimento. Il
codice sorgente per hello.cs è riportato nel Listato 1.1. Quando lo digitate, non in-
cludete il numero delle righe a sinistra o i due punti.

Listato 1.1 hello.cs


1: class Hello
2: {
3: static void Main()
4: {
5: System.Console.WriteLine(“Hello, World!”);
6: }
7: }

Assicuratevi di aver installato il vostro compilatore come specificato nelle istruzioni


di installazione fornite con il software. Una volta che il compilatore e l’editor sono
pronti, seguite i passaggi descritti nel prossimo paragrafo per inserire, compilare ed
eseguire hello.cs.
Iniziare con C# 13

Inizio

Inserimento
codice sorgente Passaggio 1

Compilazione

Passaggio 2

Errori?

No

Esecuzione
programma

Passaggio 3
Funziona No
correttamente?

Fatto

Figura 1.2
I passaggi da seguire per sviluppare un programma C#.

Inserire e compilare hello.cs


Per inserire e compilare il programma hello.cs, seguite i passaggi seguenti.
1. Avviate il vostro editor.
2. Usate la tastiera per digitare il codice sorgente mostrato nel Listato 1.1. Non
inserite i numeri delle righe o i due punti, che vengono forniti solo come ri-
ferimento all’interno di questo libro. Premete Invio alla fine di ogni riga. As-
sicuratevi di inserire il codice usando le stesse maiuscole o minuscole. C# è
un programma case sensitive, quindi se modificate la maiuscola/minuscola
si genereranno errori.

In C e C++, main() è minuscolo. In C#, Main() ha una M maiuscola. In C#,


se digitate una m minuscola si genererà un errore.
14 Giorno 1

3. Salvate il codice sorgente. Dovreste nominare il file hello.cs.


4. Verificate che hello.cs sia stato salvato elencando i file nella directory o car-
tella.
5. Compilate hello.cs. Se state usando un compilatore a riga di comando, inse-
rite:
csc hello.cs

Se state usando IDE (Integrated Development Environment), selezionate


un’icona o opzione di menu appropriata. Apparirà un messaggio in cui si
segnala che non vi è alcun errore o avvertimento.
6. Controllate i messaggi del compilatore. Se non ricevete alcun messaggio di
errore o avvertimento, tutto dovrebbe funzionare.
Se avete commesso un errore digitando il programma, il compilatore lo indivi-
duerà e visualizzerà un messaggio di errore. Per esempio, se avete digitato il
termine Console al posto di Consol, vedrete un messaggio simile al seguente:
hello.cs(5,7): error CS0117: ‘System’ does not contain a definition
for ‘Consol’

7. Ritornate al passaggio 2, se viene visualizzato questo o qualsiasi altro mes-


saggio di errore. Aprite il file hello.cs nel vostro editor. Confrontate attenta-
mente il contenuto del file con il Listato 1.1, effettuate le correzioni necessa-
rie e proseguite con il passaggio 3.
8. A questo punto, il vostro primo programma C# dovrebbe risultare compila-
to e pronto per venire eseguito. Se visualizzate un elenco di directory di tut-
ti i file nominati hello (con qualsiasi estensione), dovreste osservare quanto
segue:
hello.cs, the source code file you created with your editor
hello.exe, the executable program created when you compiled
➥hello.cs

9. Per eseguire hello.exe, inserite hello nella riga di comando. Il messaggio


Hello, World! verrà visualizzato sullo schermo.
Se eseguite il programma hello facendo doppio clic in Windows Explorer
di Microsoft, potreste non vedere i risultati. Questo programma viene esegui-
to in una finestra da riga di comando. Quando fate doppio clic in Win-
dows Explorer, il programma apre un finestra da riga di comando, esegue il
programma e chiude la finestra; il tutto può avvenire così velocemente da
sembrare che non sia accaduto niente. È meglio aprire una finestra da riga
di comando, spostarsi alla directory contenente il programma e quindi ese-
guire il programma dalla riga di comando.
Hello.cs è un programma semplice, ma è un inizio. Infatti, la maggior parte dei
programmatori esperti di oggi ha imparato a lavorare compilando un programma
“hello world”.
Iniziare con C# 15

Comprendere gli errori di compilazione


Un errore di compilazione avviene quando il compilatore trova nel codice sorgen-
te un elemento che non può compilare; errori di ortografia o tipografici, per
esempio, possono causare l’arresto del compilatore. Fortunatamente, i compilatori
moderni non si bloccano semplicemente, ma indicano su quale elemento si sono
bloccati e dove risiede il problema; in questo modo diventa più facile individuare
e correggere gli errori nel codice sorgente. Tale situazione può venire illustrata in-
troducendo un errore nel programma hello.cs, sul quale avete lavorato prece-
dentemente. Se avete seguito l’esempio (e dovreste averlo fatto), diponete ora di
una copia di hello.cs sul vostro disco. Usando l’editor, spostate il cursore alla
fine della riga 5 e cancellate il punto e virgola finale: Hello.cs dovrebbe apparire
come nel Listato 1.2.

Listato 1.2 hello.cs con un errore


1: class Hello
2: {
3: static void Main()
4: {
5: System.Console.WriteLine(“Hello, World!”)
6: }
7: }

Salvate il file e compilatelo inserendo il comando per il vostro compilatore e ram-


mentate che il comando da riga di comando è:
csc hello.cs

A causa dell’errore che avete introdotto, la compilazione non viene completata. Il


compilatore visualizza invece un messaggio simile al seguente:
hello.cs(5,48): error CS1002: ; expected

Questa riga è composta da tre parti:


hello.cs Il nome del file dove è stato individuato
l’errore.
(5,48): Il numero di riga e la posizione dove è sta-
to notato l’errore: riga 5, posizione 48.
error CS1002: ; expected Una descrizione dell’errore.
Questo messaggio indica che quando il compilatore è arrivato al quarantottesimo
carattere della riga 5 di hello.cs, non ha trovato il punto e virgola che si aspettava di
incontrare. Utilizzando la vostra conoscenza di C#, dovete interpretare i messaggi
del compilatore e stabilire il posizionamento esatto di tutti gli errori riportati. Essi
vengono spesso individuati nella riga riportata dal compilatore, ma, se così non è,
sono quasi sempre presenti nella riga precedente.
16 Giorno 1

Prima di abbandonare questo argomento, date uno sguardo a un altro esempio di


errore di compilazione. Caricate nuovamente hello.cs nel vostro editor ed effettuate
le seguenti modifiche:
1. Riposizionate il punto e virgola alla fine della riga 5.
2. Cancellate le virgolette davanti alla parola Hello.
Salvate il file su disco e compilate il programma nuovamente. Questa volta il compi-
latore dovrebbe visualizzare un messaggio di errore simile al seguente:
hello.cs(5,32): error CS1010: Newline in constant

Il messaggio trova il corretto posizionamento dell’errore, localizzandolo alla riga 5;


precisamente nella posizione 32, dove mancano le prime virgolette. Questo mes-
saggio di errore non ha considerato il punto dove si trovava il punto e virgola man-
cante. In questo caso, il compilatore ha individuato il problema.
Se il compilatore riporta più errori e ne trovate uno soltanto, correggetelo e
ricompilate. Potreste scoprire che la vostra singola correzione è l’unica ne-
cessaria e il programma verrà compilato senza errori.

Comprendere gli errori di logica


Vi è un altro tipo di errore che si potrebbe generare: quello di logica, che non pote-
te imputare al codice o al compilatore, ma soltanto a voi stessi. Infatti, è possibile
creare un programma con un codice C# perfetto che contiene comunque un errore.
Per esempio, supponete che intendiate calcolare l’area di un cerchio moltiplicando
2 per il valore di PI moltiplicato per il raggio:

Area = 2πr

Potete inserire questa formula nel vostro programma, compilare ed eseguire: otter-
rete un risultato. Il programma C# potrebbe venire scritto con una sintassi corretta;
tuttavia, ogni volta che eseguite questo programma, riceverete una risposta errata. È
la logica del programma ad essere sbagliata: con questa formula otterrete la circon-
ferenza di un cerchio e non la sua area. Avreste dovuto usare la formula πr2.
Per quanto valido sia un compilatore, non sarà mai in grado di individuare gli errori
di logica. Dovete trovarli personalmente, revisionando il codice e facendo eseguire
i vostri programmi.

Tipi di programmi C#
Prima di terminare la lezione odierna, analizzate quali tipi di applicazioni potete
creare con C#.
● Applicazioni di console. Eseguono dalla riga di comando e sono princi-
palmente basate sul carattere tipografico o sul testo; di conseguenza, riman-
gono relativamente semplici da comprendere.
● Applicazioni Windows. Si avvantaggiano dell’interfaccia utente grafica
(GUI) fornita da Windows di Microsoft.
Iniziare con C# 17

● Servizi Web. Sono routine che possono essere interpellate attraverso il


Web.
● Web form/Applicazioni ASP.NET. Vengono eseguite su un server Web e
generano pagine Web dinamiche.
Inoltre, C# può essere impiegato per eseguire molte altre operazioni, comprese la
creazione di librerie, console e altro.

Domande e risposte
D. Un programma C# verrà eseguito su qualsiasi computer?
R. No. Un programma C# sarà eseguito unicamente sui computer che hanno
installato CLR (Common Language Runtime). In caso contrario, si genererà
un errore. Nelle versioni di Windows sprovviste di CLR viene, solitamente,
indicato che un file DLL è mancante.
D. Se si fornisce un programma personalizzato, quali file bisogna inserire?
R. Uno degli aspetti positivi di C# è che è un linguaggio compilato. Ciò signifi-
ca che, dopo la compilazione del codice sorgente, disponete di un pro-
gramma eseguibile. Se desiderate passare ad altri il programma hello, pote-
te farlo: fornitegli hello.exe. Infatti, non è necessario il file sorgente hello.cs
e non c’è bisogno di possedere un proprio compilatore C#; basta usare un
sistema di elaborazione che abbia una fase di esecuzione C# quale Com-
mon Language Runtime di Microsoft.
D. Dopo aver creato un file eseguibile, bisogna mantenere il file sor-
gente (.cs)?
R. Se eliminate il file sorgente, successivamente, non potete effettuare modifi-
che al programma in modo semplice, quindi dovreste conservarlo. Gran
parte degli ambienti di sviluppo integrato creano dei file in aggiunta al codi-
ce sorgente (.cs) e al file eseguibile. Finché manterrete il file sorgente (.cs),
potrete quasi sempre ricreare altri file. Quando il vostro programma impie-
ga risorse esterne quali immagini e form, non dovete mai eliminare questi
file, se pensate di dover effettuare modifiche e ricreare l’eseguibile.
D. Se il compilatore fosse fornito di un editor, si sarebbe obbligati a
usarlo?
R. Assolutamente no. Potete usare qualsiasi editor a patto che salvi il codice sor-
gente in formato testo. Se il compilatore fosse fornito di un editor, dovreste
provare a usarlo; se preferite, scegliete un editor venduto separatamente. Co-
munque, gli editor forniti con i compilatori stanno migliorando: alcuni forma-
tizzano automaticamente il vostro codice C# e altri colorano parti diverse del
vostro file sorgente per rendere più facile l’individuazione di errori.
D. È possibile ignorare i messaggi di attenzione?
R. Alcuni messaggi di attenzione non influiscono su come viene eseguito il
programma, altri invece sì. Se il compilatore visualizza un messaggio di at-
tenzione, non tutto è corretto. Quasi tutti i compilatori vi permettono di im-
postare il livello di attenzione per ottenere solo messaggi di attenzione mol-
to gravi o riceverli tutti, compreso il più insignificante. Alcuni compilatori
offrono anche diversi livelli intermedi. Nei vostri programmi dovreste con-
18 Giorno 1

trollare ogni messaggio di attenzione e adottare i provvedimenti adeguati.


Infatti, in presenza di un errore, il vostro compilatore non creerà il file ese-
guibile.

Verifica
Questo paragrafo fornisce quiz ed esercizi per consolidare la comprensione dei
temi trattati nel corso della lezione. Le risposte sono riportate nell’Appendice A.

Quiz
1. Spiegate per quali ragioni C# risulta un’ottima scelta come linguaggio da
utilizzare per la programmazione. Fornite almeno tre motivazioni.
2. Che cosa significano IL e CLR?
3. Quali sono i passaggi nel ciclo di sviluppo del programma?
4. Quale comando dovete inserire per compilare un programma denominato
my_prog.cs con il vostro compilatore?
5. Quale estensione dovreste usare per i file sorgente C#?
6. Il nome di file .txt è un nome valido per un file sorgente C#?
7. Se eseguite un programma che avete compilato e non funziona secondo le
vostre aspettative, come dovete intervenire?
8. Qual è la funzione del linguaggio macchina?
9. In quale riga è avvenuto l’errore seguente?
my_prog.cs(35,6): error CS1010: Newline in constant

10. Vicino a quale colonna si è potuto verificare l’errore riportato di seguito?


my_prog.cs(35,6): error CS1010: Newline in constant

Esercizi
1. Usate il vostro editor di testo per analizzare il file EXE che avete creato nel
Listato 1.1. Il file EXE assomiglia al file sorgente? (Non salvate questo file
quando uscite dall’editor.)
2. Inserite il seguente programma e compilatelo (non includete i numeri di
riga o i due punti). Qual è la funzione di questo programma?
1: // circle.cs – Usando variabili e valori letterali
2: // Questo programma calcola elementi attinenti al cerchio.
3: //-----------------------------------------------
4:
5: using System;
6:
7: class variables
8: {
Iniziare con C# 19

9: public static void Main()


10: {
11: //Dichiara variabili
12:
13: int radius = 4;
14: const double PI = 3.14159;
15: double circum, area;
16:
17: //Fa i calcoli
18:
19: area = PI * radius * radius;
20: circum = 2 * PI * radius;
21:
22: //Stampa i risultati
23:
24: Console.WriteLine(“Radius = {0}, PI = {1}”, radius, PI );
25: Console.WriteLine(“The area is {0}”, area);
26: Console.WriteLine(“The circumference is {0}”, circum);
27: }
28: }

3. Inserite e compilate il seguente programma. Che cosa si ottiene?


1: class AClass
2: {
3: static void Main()
4: {
5: int x,y;
6: for ( x = 0; x < 10; x++, System.Console.Write( “\n” ) )
7: for ( y = 0; y < 10; y++ )
8: System.Console.Write( “X” );
9: }
10: }

4. Il seguente programma ha un problema. Inseritelo nel vostro editor e com-


pilatelo. Quali righe generano messaggi d’errore?
1: class Hello
2: {
3: static void Main()
4: {
5: System.Console.WriteLine(Keep Looking!);
6: System.Console.WriteLine(You’ll find it!);
7: }
8: }

5. Eseguite la seguente modifica all’interno del programma dell’esercizio 3. Ri-


compilate e rieseguite questo programma. A questo punto cosa succede?
8: System.Console.Write( “{0}”, (char) 1 );

Potrebbero piacerti anche