În postarea precedentă, am creat primul nostru program în C#, o aplicație de consolă care afișează o singură propoziție și care conținea următoarele instrucțiuni:
E momentul să analizăm structura unui program de consolă în C#.
În primul rând, când spun „program de consolă”, nu mă refer la console de jocuri. Programele de consolă sunt doar acele programe cu fereastre neagre care apar pe ecran, nu conțin butoane, casete de text sau imagini, iar modul în care puteți interacționa cu ele este doar prin intermediul tastaturii.
Aceste instrucțiuni sunt foarte asemănătoare cu majoritatea celor pe care le vom întâlni în cele mai multe dintre programele pe care le vom scrie vreodată.
După cum se poate vedea, programul nostru începe cu câteva instrucțiuni using. Instrucțiunile using cer compilatorului să utilizeze conținutulul unui fișier. În cazul programului nostru, instrucțiunile using cer compilatorului să includă conținutul unor fișiere, conținuturi care sunt numite System.Collections.Generic, System.Text, etc.
Aceste conținuturi sunt stocate în ceea ce programatorii .NET numesc Namespace. Nu trebuie să vă faceți griji cu privire la ceea ce înseamnă namespace pentru moment, tot ce trebuie să știți este că acestea conțin coduri suplimentare pe care le putem folosi în programele noastre. De fiecare dată când utilizați o directivă using, nu trebuie să tastați manual aceste coduri și nici nu trebuie să re-inventați roata.
De exemplu, dacă ar trebui să scrieți un program care să calculeze radicali, nu va trebui să creați o funcție pentru a face acest lucru. În schimb, ați insera o directivă using System.Math;, care conține o funcție de calcul al rădăcinilor pătrate, și alte funcții matematice, gata disponibile.
După cum probabil ați observat, câteva directive using au fost adăugate automat de Visual Studio, când am creat proiectul. Visual Studio încearcă să vă simplifice munca adăugând cele mai frecvent utilizate directive using, pentru a vă ajuta să începeți. Cu toate acestea, nu aveți întotdeauna nevoie de toate fișierele importate, iar acesta este și motivul pentru care unele dintre directivele using sunt albe, în timp ce altele sunt gri. Ori de câte ori folosim în programele noastre coduri care sunt conținute în fișierele importate cu directivele using, directivele using își vor schimba culoarea fontului în alb. Prin urmare, ori de câte ori vedeți directive using gri, le puteți șterge în siguranță.
Puteți chiar automatiza acest proces, făcând clic dreapta oriunde în fereastra principală și alegând opțiunea Remove and Sort Usings (eliminare și sortare directive using), astfel:
Visual Studio va elimina automat directivele using nefolosite din fișierul programului.
După declarațiile using, veți vedea două noi concepte: namespace (spațiu de nume) și class (clasă). Deocamdată, ne gândim la o clasă ca fiind un obiect. Un obiect din lumea reală, cum ar fi o mașină, o casă, o pisică, etc. Clasele sunt obiecte, și ele conțin proprietăți și alte lucruri. Namespace, pe de altă parte, sunt o colecție de clase, grupate după aceleași criterii. De exemplu, am putea avea un namespace numit Univers, care ar conține unele obiecte (clase): stele, planete, galaxii, etc. Acum are sens să grupăm aceste obiecte într-un namespace, pentru că ele au ceva în comun: ele sunt PARTE a Universului.
Următoarea linie a programului nostru este
Fiecare aplicație de consolă pe care o veți crea va conține o linie similară cu instrucțiunea void Main . Pe viitor, veți observa că va fi mult mai ușor să grupăm instrucțiunile pe care un program trebuie să le execute, astfel încât acestea să fie mai inteligibile pentru noi sau pentru alți programatori, ori pentru a înțelege ce anume trebuie să execute programul. Ceea ce trebuie să vă amintiți este că într-o aplicație de consolă, instrucțiunea void Main este executată întotdeauna prima. Este punctul de pornire al execuției unui program. Deci, când efectuați dublu click pe un executabil, funcția Main este prima care va fi executată.
Cum rămâne cu caracterele { }? Deocamdată, tot ce trebuie să știți este că programele C# au instrucțiunile grupate în blocuri, iar fiecare bloc începe cu { și se termină cu }. Acesta este modul în care compilatorul poate înțelege unde începe un bloc de cod, și unde se termină. Rețineți că pentru orice acoladă deschisă, trebuie să utilizați o acoladă de închidere.
În sfârșit, în programul nostru, în interiorul blocului de cod al funcției Main, avem două linii de cod:
Prin utilizarea Console.WriteLine am instruit programul nostru să afișeze un text în fereastra sa. Prin utilizarea Console.Read, l-am instruit să nu închidă fereastra după ce execuția se încheie (programele de consolă tind să se închidă singure când își termină execuția), ci să aștepte o interacțiune din partea noastră (în cazul de față, orice text introdus la tastatură, urmat de tasta Enter).
Conceptele explicate în această lecție sunt prezentate și în mod visual, în videoclipul următor: