.NET
.NET este o platforma dezvoltată de MicroSoft să ruleze pe mai multe tipuri de device-uri. PC, XBox, Servere Web, Telefoane mobile.
În prezent aplicațiile .NET pot rula și pe iOS și Android, mulțumită Xamarin care a dezvoltat un sistem similar, Mono.
Aplicațiile .NET sunt Component Oriented. Adică fiecare componentă conține clase și logică, componentele putănd fi scrise în limbaje diferite.
C# , J# , VB.NET , C++.NET , F#.
Codul acestor limbaje este compilat într-un limbaj intermediar numit IL (intermediary language ).
La rularea unei componente , .NET va compila codul IL în cod mașină , iar codul compilar va ramane în memoria RAM atât timp cât este accesibil.
C#
C# este un limbaj de programare , cu sintaxa C like.
Prima versiune a apărut în 2002 , fiind cel mai tânăr limbaj folosit la scară largă.
Este complet orientat obiect . Tipurile primitive au fost eliminate. Toate tipurile moștenesc clasa object.
Deși se pot folosi accesări de memorie prin pointeri in contextul unsafe, nu este ceva folosit des. .NET oferă un garbage collector pentru gestionarea resurselor de memorie.
În C# toate obiectele deriveaza din clasa object.
Nu există tipuri de date cheie. În schimb exista două mari categorii de tipuri de date value type și reference type.
Value type sunt int, char, struct, enum , etc . Ele sunt alocate pe stivă , primesc valoarea default când sunt declarate dacă nu sunt inițializate.
Deorece și value type sunt obiecte ele au metode. Un exemplu este int.Parse(string s) , care parsează un string returnând un întreg.
Reference type sunt obiectele comune. Clasele definite în program , stringurile , etc. Ele sunt alocate pe Heap.
O metoda des folosita a clasei string este string.Format("pattern {0}{1}..{n}",Param0,Param1,... ,Paramn)
Exemplu:
int n = 20;
string s = string.Format("Numarul setat este:{0}",n.ToString());
// s va avea valorea :Numarul setat este:20
Operatorii sunt similari cu cei din C++ și Java.
++,+=,-=,+,!=,==,*,/,etc.
Structurile de control întâlnite în C# sunt : if , switch, for,while,do while si foreach.
Operatorii sunt similari cu cei din C++ și Java.
++,+=,-=,+,!=,==,*,/,etc.
Exemple de vectori și matrici:
// vectori simpli
int[] array;
array = new int[5];
int[] arrayImplicit = new[] { 1, 2, 3, 4 };
// matrici
int[,] matrice = new int[2, 2];
matrice[1, 1] = 4;
// jagged arrays
int[][] jaggedArray;
jaggedArray = new int[2][];
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[3];
Pentru gestionarea erorilor , la fel ca în C++ și Java se folosește mecanismul , try catch throw finaly.
// se citeste un numar n de la tastatura. Se va afisa un triunghi de *.
int n = 0;
try
{
n = int.Parse(Console.ReadLine());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < i; j++)
{
Console.Write("*");
}
Console.WriteLine(Environment.NewLine);
}
Console.ReadKey();
Exercițiu
Realizați un program care să genere N numere aleatoare , cu N citit de la tastatură.
Pentru o valoare v citită de la tastatură, folosind căutarea secvențială determinați dacă valoarea se găsește între cele N numere generate.
Update 30 octombrie !
Rezolvare:
static void Main(string[] args)
{
int N;
int[] numerele;
Console.Write("Introduceti numarul de numere:");
N = int.Parse(Console.ReadLine());
numerele = new int[N];
Random rand = new Random();
for (int i = 0; i < N; i++)
{
//10.000 reprezinta numarul maxim ce poate fi generat
numerele[i] = rand.Next(10000);
}
int numarulCautat;
Console.Write("Numarul pe care-l cautati este:");
numarulCautat = int.Parse(Console.ReadLine());
bool gasit = false;
for (int i = 0; i < N; i++)
{
if (numerele[i] == numarulCautat)
{
gasit = true;
break;
}
}
if (gasit)
Console.WriteLine("Numarul a fost gasit!");
else
Console.WriteLine("Numarul nu a fost gasit!");
Console.ReadKey();
}