02 – Variabili e Metodi

Questa lezione sarà apparentemente piu’ teorica, ma ci permetterà durante il proseguio, di capire molti meccanismi del c#.

Il c# è un linguaggio orientato agli oggetti. Tutti i linguaggi orientati agli oggetti, godono essenzialmente di 4 proprietà, che li contraddistinguono:

  1. Incapsulamento
  2. Polimorfismo
  3. Ereditarietà
  4. Riuso.

Prima di parlare della prima caratteristica, definiamo due “tipologie”: Metodi e Variabili. Come detto precedentemente, le variabili sono dei “contenitori” che immagazzinano valori in input o in output (ovvero che forniamo noi al programma, o che il programma da in uscita, o che ancora usa lui senza dirci nulla per fare qualche calcolo o altro). I metodi sono funzioni che possiamo creare anche noi. Facciamo un esempio di metodo. Supponiamo di voler calcolare l’area del rettangolo. Abbiamo detto che ogni cosa in c# e’ una classe, quindi definiamo la classe rettangolo:

using System;

Class Rettangolo

{

int Base=2;

int Altezza=3;

//Base ed altezza sono due variabili di tipo intero

int Area;

Area=Base*Altezza;

Console.WriteLine(”L’area vale {0},Area);

Console.ReadLine();

}

Provate ad eseguire questo semplice programma, e vedrete spuntare sulla finestrella Dos la scritta

L’area vale 6

Per ora non preoccupatevi del codice che non capite, lo vedremo piu’ avanti. Vi ricordo che il comando Console.WriteLine stampa a schermo una stringa (le stringhe sono racchiuse tra ” “). Notate come dopo la stringa compaia un {0}. Ebbene questo e’ un identificatore che dice al WriteLine che dopo la stringa dovrà stampare qualcos’altro, ovvero qualcosa che viene dopo la stringa, e dopo una virgola :) (in questo caso la variabile Area); Se avessimo voluto calcolare l’area del rettangolo 100 volte, avremmo dovuto dichiarare 300 variabili diverse (ovvero una terna Base,Altezza,Area) (anche se vedremo che non e’ proprio cosi’) e di volta in votla calcolare l’area….ma e’ possibile riusare il codice per questo genere di routine? ebbene si, basta creare un metodo. Nel nostro esempio creeremo un Metodo AreaRettangolo (detta anche Funzione AreaRettangolo), che fara’ divenire il programma cosi’

using System;

Class Rettangolo

{

int AreaRettangolo(int Base, int Altezza)

{

int Area=Base*Altezza;

return Area;

}

Class Calcolo

{

int Base=2;

int Altezza=3;

Console.WriteLine(”L’area vale {0}”,AreaRettangolo(Base,Altezza));

}

}

Come vedete abbiamo creato una funzione (ovvero un metodo) per determinare l’area del rettangolo. Il metodo ha una forma del tipo

tipo variabile di ritorno NomeMetodo(tipo variabile1,tipo variabile 2…)

Dove:

  • Tipo variabile di ritorno e’ la variabile che restituisce col return il metodo
  • NomeMetodo e’ il nome della nostra procedura (vi ricordo che c#e’ Case sensitive, quindi ad esempio possiamo dichiarare due metodi differenti AreaRettangolo ed arearettangolo, o ancora ArEaRettangolo, ec…e tutti questi saranno metodi diversi per c#).
  • (tipo variabile1,tipo variabile 2…) sono le varie variabili con le quale il metodo fara’ il suo lavoro.

Vi chiederete a cosa serve tutto cio’…beh se ha poca importanza per il nostro esempio, supponete di dover calcolare ogni volta media, scarto quadratico medio, moda, covarianza di 100 numeri simultaneamente…capite bene che le cose cambiano e molto in termini di righe di codice no? :)

Bene per questa lezione direi che e’ tutto, come al solito se vi fossero dubbi aspetto i vostri commenti. Come esercizio provate a creare un programma che calcoli l’area di un cerchio. Aspetto il vostro listato tra i commenti ;)

01 – I Tipi di Dato

Eccoci alla prima vera lezione sulla programmazione ad oggetti. Prima di cominciare vi propongo due utilissimi compilatori gratuiti per c#. Il primo e’ gratuito ed open source, e lo trovate qua

http://www.icsharpcode.net/OpenSource/SD/

Il secondo altro non è se non un “pezzo” di visual studio, ovvero Visual c# Express Edition, che per i vostri usi dovrebbe andare piu’ che bene, e lo trovate qui

http://www.microsoft.com/express/vcsharp/

Cominciamo a capire meglio cosa siano i tipi di dato. Nella vostra vita avrete avuto a che fare con numeri, e sapete bene che i numeri possono essere interi, decimali, razionali ecc…Ogni numero avrà una certa grandezza, a seconda del TIPO di numero stesso. Una cosa simile avviene in c#. Ogni variabile(ovvero ogni “contenitore” di numeri, stringhe e quant’altro) va “definita”. Per definizione di variabile, si intende la definizione della sua tipologia. Ad esempio se dovessimo dichiarare nel nostro programma una variabile Numero di tipo intero (Numero e’ il nome della variabile, che avremmo pure potuto chiamare giovanna o peppina) scriveremo:

int Numero;

A questo punto notate due cose molto importanti del c#. Intanto c# è un linguaggio Case sensitive (Quanto adoro farmi la bocca di parole in inglese :D ). Tradotto nella nostra bella lingua italiana, significa che c# vede le variabile

int Numero; e int numero; o ancora int nUmero; come variabili diverse. OK? Bene. Avrete notato anche che alla fine di ogni riga di codice inserisco un punto e virgola. Questo dice al compilatore (ovvero al programma che ha il compito di tradurre il codice che scrivete in un linguaggio comprensibile alla macchina) che una sequenza logica ha avuto termine (un po come il periodo delle frasi che si scrivono in un testo); Realizziamo ora il nostro primo programma, un semplice Ciao a tutti (Solitamente si usa Hello World, ma in quanto innovativo voglio cambiare :P ). Ecco il codice:

using System;

Class Ciao

{

string Ciao=”Ciao a tutti”;

Console.WriteLine(Ciao);

}

Iniziamo ad esaminare il tutto. Tralasciamo per ora la dicitura using che sara’ oggetto delle prossime lezioni. Come abbiamo gia’ detto, in c# ogni variabile, letterale o altro è un oggetto. Possiamo definire l’oggetto come la concretizzazione, o meglio l’istanza di una classe. Una classe non è altro che un insieme di variabili e metodi (ovvero, per chi ha programmato in c, funzioni). Come detto in precedenza, paragonate la classe ad un contenitore. Poichè ogni programma in c# presuppone l’esistenza di una classe, abbiamo creato la classe Ciao; Fatto ciò definiamo una variabile di tipo string (ovvero che può contenere caratteri alfanumerici, ovvero lettere, punti, virgole ed altri segni che vedremo piu’ avanti). Notate che essa viene posta uguale ad una certa frase, che per le variabili di tipo stringa va inserita in virgolette. Questa uguaglianza prende il nome di inizializzazione. In c#, a differenza degli altri linguaggi come c++ o c, le variabili vanno SEMPRE inizializzate, pena l’errore da parte del compilatore. Una volta inizializzata la stringa, pongo punto e virgola per terminare l’istruzione (notate ancora come dopo la dichiarazione della Classe Ciao non abbia inserito alcun punto e virgola). Subito dopo usiamo la classe Console (Parleremo dopo di queste classi del FrameWork) che possiede al suo interno una funzione WriteLine che stampa su schermo l’informazione della stringa Ciao. L’ouput di questo programma e’ un semplice:

Ciao a Tutti

Notate che usando una finestra di Dos semplice, potra’ succedere di vedere la finestra aprirsi e subito chiudersi. In tal caso subito dopo la dichiarazione Console.Writeline(Ciao); Inserite la riga

Console.Readline();

e la vostra finestra non si chiuderà finchè non premerete invio. Come al solito non preoccupatevi del significato di queste funzioni, lo scopriremo dopo :) . Dire che per oggi abbiamo fatto assai. Per conoscere tutti i tipi di dato che c# possiede, vi rimando alla guida ufficiale Microsoft

Per qualsiasi altra informazione, sto pensando di aprire un forum che spieghi ed aiuti i neofiti sul c# in maniera semplice (Visto che su internet non ho MAI TROVATO NULLA che spiegasse in maniera candida e pulita il c#) aspetto solo di capire se il tutto interessa, quindi …COMMENTATE :)

00 – C#, in cosa differisce dai programmi DOS?

Chi di voi avrà mai steso due righe di codice in c, saprà subito che il programma comincia subito con il classico void main(). Chi si sarà avventurato anche in IDE come visual studio, o avrà aperto i sorgenti di qualche programma scritto in c# (Penso non molti) avrà notato invece come di questo fantomatico void main non vi sia l’ombra. Allora? da dove parte il programma? Molto semplice. Se voi create una applicazione di tipo windows form (Aprendo VS – file – nuovo progetto – applicazione windows form), visual studio vi aprirà come prima cosa la form base (per form intendiamo la finestra nuda e cruda di windows).

ImagesTime.com - Free Images Hosting

Come potrete notare, alla sinistra avrete il pannello degli strumenti (ovvero degli oggetti come bottoni, caselle di testo ecc..), mentre alla destra vedete il pannello delle proprietà, e “L’esplora soluzioni”. Non abbiate paura, vedremo queste finestre più avanti. Fate ora click col tasto destro del mouse sulla form1 e selezionate “visualizza codice”. Questo e’ quel che vedrete.

ImagesTime.com - Free Images Hosting

ma cosa e’ quel codice? da dove parte il programma? cosa sta succedendo? niente paura spieghero’ tutto e’ subito :)

Essenzialmente, a differenza delle solite applicazioni di tipo console (insomma quelle stile DOS), le applicazioni windows form ragionano su dei concetti base, ovvero il concetto di oggetto, il concetto di classe, il concetto di evento.

Come abbiamo detto tempo addietro, l’oggetto e’ un elemento particolare che caratterizza il nostro programma. La form che vedete ad esempio, e’ un oggetto, ed ogni form del vostro programma (ovvero ogni finestra che creerete) è un oggetto, con un suo particolare codice. Ancora, mentre nel programma in dos generalmente scrivevate il codice in maniera piu’ o meno lineare, qui non avviene cosi’. Se ad esempio volevate creare un programma che calcolasse l’area di un cerchio, come prima cosa avreste richiesto il raggio, e subito dopo calcolato l’area del cerchio, fornendola come risultato e chiudendo la finestra :)

Nelle applicazioni di tipo windows invece, il tutto non avviene in maniera sequenziale. L’utente potrebbe ad esempio non inserire il raggio, oppure potrebbe chiudere la finestra, o potrebbe inserire un numero e premere un bottone, e cosi’ via. Capite subito quindi che ogni “evento” deve essere previsto, ed ad esso assegnato un codice. Ricordate bene questo concetto di evento, ne parleremo in seguito.

ebbene, torniamo al vecchio programma in c. Come avrete capito, ogni form ha un suo codice, strutturato per eventi (ovvero se clicco su un bottone fai questo, se scrivi in una casella di testo fai quest’altro, e cosi’ via). Ma come regolarsi in tutto questo putiferio? semplice, ci si regola in modo analogo a come fate quando organizzate il lavoro in file e cartelle. Immaginate il namespace come una cartella, e la classe come un file. I namespace sono quindi contenitori di classi, e di altri eventuali namespace :)

A questo punto spero avrete capito perche’ la form1 presente il codice su riportato. Ma quegli using? beh…saranno oggetto delle prossime lezioni. Non perdete la prossima lezione, in essa inizieremo a muoverci nel concetto di classe, e creeremo il nostro primo programma in c#a finestra!!!

Cosa e’ C# e cosa e’ Visual Studio

C# (Si legge ci sharp) eì uin nuovo linguaggio di programmazione, molto potente e flessibile, che unisce il meglio di java, visual basic e c++, mantenendo pero’ una facilità d’uso notevole. Vedremo nelle prossime lezioni che c# mantiene MOLTE delle caratteristiche comuni del c, e piu’ in generale dei linguaggi di programmazione comuni (quindi istruzioni che regolano il flusso del programma come if, switch ecc, tipi di dato come int, double, ecc..) La grande peculiarita’ del c# pero’ consiste nell’essere un linguaggio “orientato agli oggetti”. Cosa vogliamo dire intendendo cio’? semplicemente questo: ricordate i vecchi linguaggi come turbo pascal, o come il c stesso? (per chi non li conoscesse nessuna paura)….ebbene con quei linguaggi non potevate creare applicazioni windows, ovvero finestre sbrilluccicanti (Per chi usa Vista) con tanto di pulsanti e comandi. Con c# potrete e sarete in grado di fare di meglio!!! Oltre ad essere un linguaggio conforme, C# viene molto spinto e propagandato da Microsoft, la quale pare abbia addirittura programmato il suo ultimo OS Vista con esso. In tutto cio’ , per creare le vostre applicazioni vi servira’ un tool di sviluppo. Tale tool permette di creare un programma orientato agli oggetti. Ne esistono di gratuiti ed open source come Sharp Develop , mentre ne esistono altri come visual studio che sono a pagamento (anche se potrete per i vostri scopi, scaricare la versione Express, che e’ gratuita, ed e’ piu’ che sufficiente!). Sempre girovagando in internet, ho notato che molti siti davano lezioni su c#, ricopiando in pratica sempre le stesse cose, e non dando risposte esaurienti sul bello della programmazione, come le windows form e molto altro. Ebbene le lezioni di questo blog saranno suddivise per difficolta’, che andranno dalla base alla crescente :)

Benvenuti in ciSharp!

Un grosso benvenuto a tutti. Dopo aver TANTO girovagato nella eret, ed avendo la passione dell’informatica, ho purtroppo trovato molte lacune e pochissime informazioni complete riguardo questo nuovo linguaggio di programmazione, molto potente e flessibile. Proprio da questa idea nasce c# Blog, il mio “diario di appunti” sul c#, che vi introdurra’ in questo fantastico mondo, passo passo.

Benvenuti :)