CAPITOLUL I. INTRODUCERE ÎN LIMBAJUL C#

Anime

Mod
Membru personal
Înscris
8 Iul 2018
Mesaje
65
Aprecieri
7
Puncte
8
Offline
#1
1.1 Conceptele de bază ale limbajului C# Fiecare nou limbaj de programare este influenţat într-o anumită măsură de limbaje de programare deja existente. C# derivă direct din două dintre cele mai de succes limbaje de programare pe plan mondial şi anume C (inventat de către Dennis Ritchie în anii ’70, rulând iniţial pe sistemul de operare Unix) şi C++ (inventat de către Bjarne Stroustrup în 1979 pe baza limbajului C, noutatea fundamentală fiind introducerea programării orientate spre obiecte). De asemenea, se înrudeşte cu un alt limbaj mai nou şi deopotrivă de succes şi anume limbajul Java (dezvoltat de către firma Sun Microsystems începând cu anul 1991, având o sintaxă şi o filozofie derivate din C++, contribuţia fundamentală fiind portabilitatea programelor, necesară odată cu dezvoltarea diverselor sisteme de operare şi a Internetului). Chiar dacă Java a rezolvat cu succes multe din problemele legate de portabilitate în Internet, C# a venit să rezolve una din facilităţile care îi lipseau şi anume interoperabilitatea limbajelor de programare diferite, denumită şi programare în limbaj mixt. Aceasta reprezintă posibilitatea codului scris într-un anumit limbaj să lucreze împreună cu codul scris într-un alt limbaj, necesară în special la crearea sistemelor software distribuite, de mari dimensiuni. C# este un limbaj de programare orientat-obiect conceput de Microsoft la sfârşitul anilor ’90. Acesta fost conceput ca un concurent pentru limbajul Java. C# este un derivat al limbajului de programare C++ şi a fost dezvoltat de o echipă restrânsă de ingineri de la Microsoft, echipă din care s-a evidenţiat Anders Hejlsberg (autorul limbajului Turbo Pascal şi membru al echipei care a proiectat Borland Delphi). Limbajul C# este simplu, cu circa 80 de cuvinte cheie, şi 12 tipuri de date predefinite. El permite programarea structurată, modulară şi orientată obiect, conform preceptelor moderne ale programării profesioniste. Limbajul de programare C# a fost proiectat pe baza experienţelor acumulate din celelalte limbaje de programare. Întregul limbaj C# se bazează pe conceptul de obiecte. În esenţă, structura unui program scris în C# este gândită pe mai multe niveluri, aşa cum se arată în figura următoare.
CURS%20Introducere%20in%20C%23%202010.pdf.png
Figura 1. Într-un program C# vom avea cod de program în care se definesc metode, care sunt incluse în clase, care la rândul lor sunt incluse în nume de spaţii.


1.2 Structura unui program C# Un program scris într-un limbaj de programare constă din instrucţiuni în limba engleză, denumite cod sursă. O instrucţiune a unui limbaj de programare reprezintă o comandă dată calculatorului. Totalitatea instrucţiunilor care descriu cum se rezolvă o anumită problemă se numeşte program. Structura unui program scris în limbajul C# este descrisă în figura următoare:

2.png

Un program C# este format din una sau mai multe clase, grupate într-un spaţiu de nume (namespace). Un spaţiu de nume este o colecţie de clase care au asociat un nume. Acesta poate cuprinde mai multe clase cu nume diferite având funcţionalităţi înrudite. Două clase pot avea acelaşi nume cu condiţia ca ele să fie definite în nume de spaţii diferite. În cadrul aceluiaşi nume de spaţiu poate apărea definiţia unui alt nume de spaţiu, caz în care avem de-a face cu spaţii de nume imbricate. O clasă poate fi identificată prin numele complet (nume precedat de numele spaţiului sau spaţiilor de nume din care face parte clasa respectivă, cu separatorul punct). În exemplul nostru, Simple.Program este numele cu specificaţie completă a clasei Program. Codul şi datele scrise în limbajul C# trebuie incluse într-o clasă. Nu se pot defini variabile şi nu se pot scrie declaraţii înafara claselor. O clasă este formată din date şi metode (funcţii). Toate clasele derivă din clasa de bază denumită object. Apelarea unei metode în cadrul clasei în care a fost definită aceasta presupune specificarea numelui metodei. Apelul unei metode definite în interiorul unei clase poate fi invocată şi din interiorul altei clase, caz în care este necesară specificarea clasei şi apoi a metodei separate prin punct. Dacă în plus, clasa aparţine unui spaţiu de nume neinclus în fişierul curent, atunci este necesară precizarea tuturor componentelor numelui: spaţiu.clasă.metodă sau spaţiu.spaţiu.clasă.metodă, etc. În programul nostru de mai sus se află două spaţii de nume: unul definit (Simple) şi unul extern inclus prin directiva using System;. Console.WriteLine reprezintă apelul metodei WriteLine definită în clasa Console. Cum în spaţiul de nume curent este definită doar clasa Program, deducem că definiţia clasei Console trebuie să se găsească în spaţiul System. Altfel spus, denumirea completă ar fi System.Console.WriteLine, ceea ce însă, printre altele, ar fi incomod de redactat dacă apare adesea într-un program. În cazul în care mai mulţi programatori lucrează la realizarea unei aplicaţii complexe, există posibilitatea de a segmenta aplicaţia în mai multe fişiere numite assemblies. Într-un assembly se pot implementa mai multe spaţii de nume, iar parţi ale unui aceeaşi spaţiu de nume se pot regăsi în mai multe assembly-uri. Pentru o aplicaţie consolă, ca şi pentru o aplicaţie Windows de altfel, este obligatoriu ca una (şi numai una) dintre clasele aplicaţiei să conţină un „punct de intrare” (entry point), şi anume metoda (funcţia) Main. Să comentăm programul de mai sus:  linia 1: spune compilatorului că acest program utilizează tipuri de date şi clase incluse în spaţiul de nume System. În cazul nostru se va folosi clasa Console.  linia 3: se declară un nou spaţiu de nume, numit Simple. Noul spaţiu de nume începe la acolada deschisă din linia 4 şi extinde până la acolada închisă din linia 12. Orice tip declarat în această secţiune este membru al spaţiului de nume Simple.  linia 5: orice program C# este alcătuit din una sau mai multe clase. În această linie este declarat un nou tip de clasă, denumită Program. Orice membrii declaraţi între acoladele care încep în linia 6 şi se termină în linia 11 sunt membrii care alcătuiesc această clasă.  linia 7: în această linie este declarată metoda (funcţia) Main ca membru al clasei Program. În acest program, metoda (funcţia) Main este doar un membru al clasei Program. Main este o funcţie specială utilizată de compilator ca „punctul de intrare” în program.  linia 9: Conţine doar o singură declaraţie simplă; această linie constituie „corpul” funcţiei Main. Această declaraţie foloseşte clasa numită Console, amintită mai sus, care aparţine spaţiului de nume System şi este folosită pentru operaţiile de intrare/ieşire. Aici se apelează metoda WriteLine din această clasă, pentru afişarea mesajului dorit pe ecran. Fără folosirea directivei din linia 1 - using System – compilatorul nu are de unde să ştie unde se găseşte clasa Console. 1.3 Metodele unui clase O metodă este un bloc de cod format dintr-o serie de instrucţiuni care conduc la realizarea unei acţiuni. O metodă este asemănătoare cu funcţiile, procedurile sau subrutinele din limbajul C, C++ sau Pascal cu anumite excepţii. O metodă este o funcţie conţinută înăuntrul unei clase. Metoda Main() Orice aplicaţie scrisă în limbajul C# trebuie să conţină o metodă numită Main(), care reprezintă punctul de intrare în aplicaţie. În acest exemplu metoda Main() nu preia nici un argument din linia de comandă şi nu returnează explicit un indicator de stare a terminării programului. Toate liniile de cod care formează corpul metodei Main() vor fi executate automat atunci când programul este rulat. Clasa Console Clasa Console aparţine de spaţiul de nume System. Cele două metode (funcţii de afişare pe ecran) Write şi WriteLine afişează pe consolă (ecran) argumentele din paranteză. În cazul metodei WriteLine, după afişare se trece la linie nouă. Următoarea linie de cod este un exemplu al utilizării metodei Write: Console.Write("Acesta este un text."); ↓ Output string Codul scris mai sus produce următoarea ieşire pe ecran: Acesta este un text. Un alt exemplu este următorul cod, care afişează pe ecran trei şiruri de caractere: System.Console.Write ("This is text1."); System.Console.Write ("This is text2."); System.Console.Write ("This is text3."); Acest cod produce următoarea ieşire: This is text1. This is text2. This is text3. Sintaxa metodei Write şi WriteLine este următoarea: Console.WriteLine(FormatString, SubVal0, SubVal1, SubVal2, ... ); Dacă există mai mulţi parametrii, aceştia sunt separaţi prin virgulă. Primul parametru trebuie să fie întotdeauna un şir de caractere şi este denumit şir de formatare (format string). Şirul de formatare poate conţine marcatori de substituţie (substitution markers). Un marcator de substituţie marchează poziţia în formatul şirului unde o valoare se substituie atunci când şirul este afişat pe ecran. Un marcator este un număr natural cuprins între acolade, şi care reprezintă poziţia numerică a valorii care urmează a fi substituită şi care începe de la 0. Parametrii care urmează după şirul de formatare se numesc valori de substituţie (substitution values). Următorul cod conţine doi marcatori de substituţie, numărul 0 şi 1, şi două valori de care urmează a fi substituite, 3 şi 6. Substitution markers ↓ ↓ Console.WriteLine("Doua exemple de intregi sunt {0} si {1}.", 3, 6); ↑ ↑ Format string Substitution values Acest cod produce pe ecran: Doua exemple de intregi sunt 3 si 6. Un marcator nu trebuie să refere o valoare de la o poziţie mai lungă decât lista valorilor ce trebuie substituite, în caz contrar se produce o eroare. Următorul exemplu reflectă această situaţie: Poziţia 0 Poziţia 1 ↓ ↓ Console.WriteLine("Doi intregi: {0} si {2}.", 3, 6); // Eroare! ↑ Nu există poziţia 2. 1.4 Comentarii Comentariile sunt bucăţi de text care sunt excluse de la compilarea programului şi care servesc la introducerea în program a unor explicaţii referitoare la părţi ale acestuia.
 

Sus Jos