Documente Academic
Documente Profesional
Documente Cultură
C#
1.1.Algoritmi
Exemplu:
Rutina de dimineață:
5:00 trezirea
5:15 sport
6:00 duș cald
6:15 pregătirea micului dejun
6:30 micul dejun
6:45 urmărirea știrilor
7:15 drumul spre locul de muncă
Caracteristici:
Corect - în primul rând trebuie să rezolve problema pentru care a fost creat
General - nu trebuie să rezolve doar o problemă particulară ci o clasă de probleme
Determinist - cu aceleași date trebuie să îmi întoarcă tot timpul aceleași date de ieșire
Finit - trebuie să se termine după un număr finit de pași
Eficient - execută un număr rezonabil de pași
-2-
1.2.Limbaje de programare
Un programator scrie un text, numit cod sursă, într-un limbaj de programare pentru a crea
programe de calculator.
Atenție! - Programele trebuie scrise cu mare grijă pentru că modificări mici (de exemplu un "+"
în loc de "-") pot genera probleme foarte mari. Dacă programatorul greșește, programul poate să nu
mai funcționeze sau să nu se comporte așa cum ne așteptam. O astfel de greșeală de programare se
numește bug.
Clasificare
În general când vorbim de limbaje de programare ne referim la limbajele de nivel înalt, cum sunt
Java, C#, C++, Python, etc.
Acestea sunt mai ușor de scris și citit de către oameni dar pentru a fi citite și de către calculatoare
trebuie convertite în cod mașină
Codul mașină e specific fiecărui tip de procesor și e format doar din numere
Limbajul de asamblare face legătura între codul mașină și limbajele de nivel înalt
Este similar cu codul mașină, dar e mult mai ușor de citit pentru că codurile numerice sunt
înlocuite cu mnemonice (prescurtări de 3-4 litere care indica o operație)
Exemplu:
Același lucru în C:
1.3.Tipuri de date
Principiul de bază al programării este să primești niște date de intrare, să le procesezi și apoi
să întorci rezultatul (datele de ieșire).
Exemplu:
sensul datelor
valorile posibile pentru acel tip de date
operațiile care se pot face cu acele date
modul de stocare a datelor în memorie
-4-
Exemple:
Majoritatea limbajelor permit și definirea de tipuri noi, compuse, derivate din cele de bază. De
exemplu: șiruri de numere, enumerări, dată/oră, etc.
1.4.Medii de dezvoltare
Pentru a scrie programe folosim un mediu de dezvoltare.
Mediul de dezvoltare conține într-o singură aplicație unelte ce acoperă toți pașii
necesari pentru crearea unui program.
De exemplu:
Editarea codului sursă
Compilarea
Depanarea
Testarea
În lecțiile din acest curs vom folosi limbajul de programare C# și mediul de dezvoltare Microsoft
Visual Studio. Microsoft oferă o versiune gratuită a Visual Studio numită Community Edition care
e perfectă pentru acest curs.
-5-
CAPITOLUL II
2.1.Tipuri de programe
Nu există o definiție riguroasă despre clasificarea aplicațiilor software, dar există numeroase
criterii de a împărți programele în diverse categorii.
Exemple:
-6-
Aplicații cu interfață grafică și aplicații consolă
Majoritatea programelor din zilele nostre au o interfață grafică cu utilizatorul și
pot afișa text și elemente multimedia
se pot utiliza folosind tastatură, mouse, ecran tactil, etc.
Aplicațiile consolă sunt concepute pentru o interfață cu utilizatorul bazată doar pe text
utilizatorul interacționeză cu astfel de aplicații folosind doar tastatura și monitorul
Notă: În acest curs vom învăța să creăm și să folosim aplicații consolă. Acestea permit crearea
rapidă a unei interfețe simple cu utilizatorul și apoi ne putem concentra pe obiectivul principal al
cursului: să învățăm să creăm algoritmi pentru a rezolva anumite probleme și a automatiza diverse
procese.
2.2.Aplicații consolă
În această prezentare vom învăța să creăm prima aplicație consolă simplă în limbajul de
programare C# folosind Microsoft Visual Studio.
Creăm un proiect nou deschizând Visual Studio și selectând opțiunea Create new project:
-7-
Sau folosind meniul principal din Visual Studio: File > New > Project...
-8-
După ce am creat proiectul, în Solution Explorer observăm:
- că avem o soluție cu numele specificat anterior;
- un proiect care are același nume cu soluția;
- un fișier Program.cs ce conține codul sursă.
Dacă ați urmat pașii descriși în paginile anterioare tocmai ați creat și rulat primul
dumneavostră program, ce afișează la consolă mesajul Hello, World!
În acest curs vom învăța să creăm programe cu ceva mai multă funcționalitate.
-9-
CAPITOLUL III
3.1.Tipuri de bază în C#
3.1.1.Tipul boolean
- 10 -
3.1.2.Tipuri întregi
Declarate prin unul dintre cuvintele cheie: sbyte, byte, short, ushort, int, uint, long, ulong
Valoare implicită: 0
Cel mai folosit tip în programare: int
Intervale de valori
Vă puteți întreba de ce există atâtea tipuri întregi. Răspunsul este unul simplu: pentru a salva
spațiu. De exemplu, dacă știm că anumite date pot lua valori doar între 0 și 100 putem folosi
tipul byte, ce ocupă de 4 ori mai puțin spațiu decât tipul int. Diferența e seminifcativă mai ales dacă
trebuie să salvăm milioane de astfel de date într-o bază de date sau trebuie transferate pe Internet.
Operatori:
- operatori aritmetici: + - * / %*
- operatori de comparare: = = != < > <= >=
- operatori binari: & | ^ ~ << >>
*
La fel ca și în matematică, există o ordine în care se execută operațiile
- 11 -
Operatori aritmetici:
Operatori de comparare:
Literali:
Un literal e o valoare scrisă direct în codul sursă a unui program. Un literal de tip întreg e o
secvență de cifre, în plus poate conține un semn + sau –
Implicit orice literal din cod va fi de tip int. Există unele sufixe care pot schimba acest
comportament.
- 12 -
Conversii implicite:
Este suportată conversia implicită de la un tip mai mic la un tip mai mare:
Este posibilă forțarea conversiei de la un tip mai mare la un tip mai mic:
3.1.3.Tipuri reale:
- Declarate prin unul din cuvintele cheie: float, double sau decimal
- Valoare implicită: 0
- 13 -
float
Tip real cu precizie simplă
Dimensiune de 4 bytes
Valori de la -3.4 × 10-38 până la ±3.4 × 1038
Precizie de 7 cifre
Valori speciale: minus și plus infinit, NaN (not a number)
Exemple:
0.123456789 văzut ca și float va fi 0.1234568
la fel 123456789 ca și float va fi 1.2345678E+08
double
Tip real cu precizie dublă
Dimensiune de 8 bytes
Valori de la ±5.0 × 10-324 până la ±1.7 × 10308
Precizie de 15-16 cifre
Valori speciale: minus și plus infinit, NaN (not a number)
Exemplu:
3.141592653589793238 ca și double va fi 3.14159265358979
decimal
Dimensiune de 16 bytes
Valori de la -7.90 × 1028 până la 7.9 × 1028
Precizie de 28 de cifre
Reprezentat în sistem zecimal (și nu binar ca și float și double)
Recomandat pentru calcule financiare pentru că pierderile cauzate de rotunjiri sunt mai mici
Exemplu:
3.14159265358979323846264338327 ca și decimal va fi
3.1415926535897932384626433833
- 14 -
Literali:
Operatori:
- operatori aritmetici: + - * /
- operatori de comparare: = = != < > <= >=*
- operatori binari: & | ^ ~ << >>
*
Trebuie avut grijă la operatorii de egalitate, pentru că din cauza aproximărilor s-ar putea să nu aibă rezultatul așteptat.
Conversii implicite:
Conversii explicite:
- 15 -
- În cazul în care într-o operație aritmetică unul dintre operanzi e de tip real iar restul de tip întreg
rezultatul operației va fi de tip real
- similar, dacă unul dintre operanzi e de tip double și ceilalți de tip float, rezultatul va fi double
Rotunjiri:
3.1.4.Tipul caracter:
- Declarat prin cuvântul cheie: char
- Reprezintă un singur caracter (litere, semne de punctuație,...)
- Fiecare caracter e codat ca și un număr, de la 0 la 65535
- Valoare implicită: caracterul cu cod 0
- Similar cu tipul întreg ushort
Tabelul UNICODE:
Referințe: ASCII Table - ASCII Character Codes, HTML, Octal, Hex, Decimal
List of Unicode characters - Wikipedia
- 16 -
Literali:
- Există mai multe caractere speciale, care trebuie exceptate prin folosirea caracterului
backslash (\)
Conversii:
- char e convertit implicit la tipurile întregi cât și la tipurile reale, pentru conversie se folosește
codul caracterului
- nu există conversie implicită de la un alt tip la char
- se poate converti explicit la char din tipuri întregi și reale
- 17 -
CAPITOLUL IV
4.1.Variabile
- 18 -
4.1.1.Blocuri de cod și domeniu de vizibilitate
O variabilă e vizibilă:
în blocul de cod în care a fost definită
în sub-blocuri
din momentul în care a fost definită
4.1.2.Vocabular:
poți declara o variabilă, declarația e linia care specifică tipul și numele variabilei
poți atribui o valoare unei variabile folosind operatorul de asignare = *
poți inițializa o variabilă, prima atribuire a variabilei
poți accesa o variabilă, practic îi citești valoarea salvată în variabila respectivă
o variabilă are un domeniu (scope) de vizibilitate
o variabilă poate fi nedeclarată la un moment dat dacă încă nu a fost declarată sau nu e în același
domeniu
* Există operatori de asignare care aplică o operație aritmetică pe variabilă: +=, -=, ...
4.1.3.Rostul variabilelor:
- generalitate - la fel ca și în matematică, o variabilă reprezintă orice valoare posibilă a acelui tip
- reduce repetiția - o valoare odată calculată poate fi salvată într-o variabilă pentru a fi folosită de
câte ori e nevoie
- claritate - un calcul mai complex poate fi descompus în părți distincte
- 19 -
4.2.Constanta
Inversul unei variabile e constanta. Valoarea unei constante trebuie să fie cunoscută în
momentul declarației și nu poate fi modificată.
4.4.1.Instrucțiuni
- 20 -
4.4.2.Tipuri de instrucțiuni
4.4.3.Blocuri de instrucțiuni
4.4.4.Expresii
O expresie e o combinație de valori, variabile, operatori, paranteze și funcții care pot fi evaluate la o
valoare nouă.
- 21 -
4.5.Erori de compilare și erori de execuție
C# este un limbaj compilat. Codul sursă scris în C# trece printr-un proces de traducere până
ajunge în formatul de program executabil ce poate fi rulat pe calculator.
Procesul de traducere se numește compilare, iar programul care face traducerea compilator.
În cadrul acestui curs folosim compilatorul integrat în Microsoft Visual Studio.
4.5.1.Erori de compilare
Exemple:
Eroarea ne spune că lipește un ';' din codul sursă. Toate instrucțiunile din C# sunt separate între ele
prin ';', iar în cazul de față acesta lipsește după instrucțiunea de inițializare a lui x.
Eroarea ne spune că nu putem atribui o valoare de tip bool unei variabile de tip int.
Visual Studio ne ajută să detectăm ușor problemele din codul sursă pentru că le sublinează
cu diverse culori, în funcție de gravitate.
De exemplu, erorile de sintaxă sunt subliniate cu roșu, iar cu verde ne avertizează de
probleme posibile (gen situații când declarăm o variabilă, dar nu o folosim deloc ulterior). Dacă
mergem cu mouse-ul deasupra porțiunii de cod subliniate Visual Studio afișează motivul pentru
care apare acea subliniere.
Important:
Înainte de a trimite pentru validare soluția la un test practic asigurați-vă că ați eliminat toate
problemele potențiale:
nu aveți porțiuni de cod subliniate
ați rulat programul pe calculatorul propriu și acesta întoarce rezultatele așteptate
- 22 -
4.5.2.Erori de execuție
Exemplu:
4.6.Introducere șiruri
Un șir (array) e o secvență continuă de elemente de același tip. Numărul total de elemente
se numește lungimea sau dimensiunea șirului. Elementele șirului sunt indexate, începând de la 0
și până la N-1.
- 23 -
4.6.2.Accesarea unui element din șir
Elementele unui șir încep de la zero și merg până la dimensiunea șirului minus 1.
4.6.4.Tipul string
Declarare și inițializare:
Concatenare de string-uri:
Alipirea a două stringuri se numește concatenare.
- 24 -
4.7.Citirea datelor de intrare
Exemplu:
- un program ce calculează suma a două numere întregi trebuie să meargă pentru oricare
două numere, fără a fi modificat de fiecare dată când dorim să îl rulăm cu date de intrare diferite.
De exemplu, codul de mai jos nu e general pentru că funcționează doar pentru suma numerelor 3 și
2. Dacă vrem să calculăm 10 + 2 nu putem fără a modifica programul.
Pentru ca progamul să fie general datele de intrare trebuie furnizate de către utilizatorul
programului și citite și folosite în interiorul programului.
Într-o aplicație consolă putem citi datele de intrare introduse de către utilizator de la tastatură
folosind funcția Console.ReadLine
În exemplul de mai jos aplicația așteaptă ca utilizatorul să scrie ceva la tastatură, iar după ce
se apasă tasta <ENTER> se afișează înapoi mesajul introdus de utilizator:
4.7.2.Conversii
- 25 -