Professional Documents
Culture Documents
Paw C# 1
Paw C# 1
Diferenta intre tipuri valorice (manipulate direct prin nume) si tipuri referentiale (alocate dinamic)
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace ConsoleApplication17
{
class Class1
{
public int Val=0;
}
struct Struct1
{
public int Val;
}
class Test
{
static void Main()
{
//tip valoric, manipulat prin nume
//stocat pe stiva
Struct1 tv1;
tv1.Val = 0;
//se face copierea continutului din membrul drept peste cel stang
Struct1 tv2 = tv1;
tv2.Val = 123;
//tip referential, manipulate prin referinta
//la fel ca un pointer, doar ca se derefera automat, referintele pot fi
definite nule si pot fi incarcate cu obiecte generate cu new sau referinte
//de obiecte deja existente
//tipurile referentiale pot fi instantiate numai cu new , sunt stocate
numai in heap
Class1 tr1 = new Class1();
//tr2 refera primul obiect ,orice modificare actioneaza asupra ambelor
obiecte, nu se face o copiere intre obiecte
Class1 tr2 = tr1;
tr2.Val = 123;
Siruri de caractere
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace ConsoleApplication17
{
class Test
{
static void Main()
{
\r =return
\n=newline
string s1 = "text";
string text = "linia 1 \r\n linia2";
string fis1="c:\\stud\\CS\\siruri\\fisier.txt";
//se foloseste @ ca o o prefixare pentru netratarea evenimentelor de escape
string fis2=@"c:\stud\CS\siruri\fisier.txt"; //copie la indigo
char c=s1[0];
s1+=text;
string x="sir", y="sir",z;
z=x;
if(x==y)
Console.WriteLine("Acelasi");
if(x==z)
Console.WriteLine("Acelasi");
Console.WriteLine(text);
Console.Read();
}
}
}
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace ConsoleApplication17
{
}
}
}
Vectori si colectii
Vectori de obiecte
Persoana p1=new Persoana[4];
null
null
null
null
p1
p2
p3
p4
Vectorii de tipuri valorice tin valori, adica numele vectorului este referinta.
Vectorii de obiecte tin referinte la obiecte, numele vectorului este referinta, iar la capatul referintei
sunt alte referinte.
// tip[] nume pt vectori, dimensiunea se da la executie
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
class Pers
{
public int Marca;
public string Nume;
//constructor cu parametru
public Pers(int m,string n)
{
Marca = m;
Nume = n;
}
}
class Test
{
static void Main(string[] args)
{
Pers p1,p2; //nu genereaza o instanta, doar se declara o referinta nula,
trebuie incarcata ulterior cu adresa unei
//instante deja existente
p1 = new Pers(1, "Unu");
p2 = p1;
//vector de persoane (vector de obiecte)
Pers[] vp; //nu instantiaza nimic
vp = new Pers[4]; //e instantiat
//in fiecare element avem o referinta => ii alocam memorie
int[] vi = { 1, 2, 3, 4 };
vp[0] = new Pers(0, "Zero");
vp[1] = p1;
Console.Write("{0}-{1} \n,\n", vp[1].Marca, vp[1].Nume);
vp[2] = new Pers(2, "Doi");
//parcurgere a vectorului
foreach (Pers crt in vp)
Console.Write("{0}-{1} \n", crt.Marca, crt.Nume);
Console.Read();
}
}
Colectii
Tipuri de colectii:
1.
2.
3.
4.
Pers.cs
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Colectii
{
class Pers
{
public int Marca;
public string Nume;
public Pers(int m, string n)
{
Marca = m;
Nume = n;
}
}
}
Pers
marca
nume
vector
Vect[0]
Vect[1]
Vect[2]
@Pers
@Pers
@Pers
using
using
using
using
using
System;
System.Collections;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Colectii
{
class Program
{
static void Main(string[] args)
{
//-----------------------------------------//
// Tipuri de COLECTII - Declarari
//
//-----------------------------------------//
ArrayList lista;
//lista cu val null
SortedList slista;
//map
Queue coada; //coada
Stack stiva; //stiva
//vector de persoane
Pers[] vect = new Pers[3];
vect[0] = new Pers(0, "Zero"); //se apeleaza constructorul din clasa Pers
si se asociaza marca si numele cu valorile impuse
vect[1] = new Pers(1, "Unu");
vect[2] = new Pers(2, "Doi");
lista = new ArrayList(); //initializare
//se foloseste metoda AddRange() pentru a popula o lista pornind de la un
vector
lista.AddRange(vect); //se adauga valorile vectorului de Persoane
//lista.Add(new Pers(0,"Zero"));
//lista.Add(new Pers(1, "Unu"));
//lista.Add(new Pers(2,"Doi"));
//adresare indexata
lista[1] = lista[2]; //refera aceeasi zona de memorie
vect[1] = vect[2];
//in cazul listelor e nevoie de operatorul cast
//modificare valori element 2 din lista
((Pers)lista[1]).Nume = "Nou";
vect[1].Nume = "Nou"; //la vectori nu este nevoie de conversie, pt ca
vectorul este deja de tip Pers
//parcurgem lista de persoane
foreach (Pers crt in lista)
Console.WriteLine("{0} - {1} \t", crt.Marca, crt.Nume);
Console.WriteLine("\n");
//parcurgem vectorul de persoane
foreach (Pers crt in vect)
Console.WriteLine("{0} - {1} \t", crt.Marca, crt.Nume);
Console.Read();
}
}
}
lista[1] = lista[2];
Valoare (nou)
lista[1].Nume = Nou
lista
lista[2].Nume = Nou
@
lista[0]
lista[1]
lista[2]
Clasa Produs.cs
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Proprietati
{
class Produs
{
string den;
string um;
float pret;
int stoc;
public Produs()
{
stoc=0;
}
//proprietati pt atributul stoc
public int Stoc
{
get { return stoc; }
set { if(value > 0) stoc = value; }
}
}
}
using
using
using
using
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Proprietati
{
class Program
{
static void Main(string[] args)
{
Produs p1 = new Produs();
p1.Stoc = 100; //se apeleaza proprietatea set
Console.WriteLine("\nStocul este " + p1.Stoc); //se apeleaza proprietatea
get pt afisarea stocului
}
}
}
Delegari si evenimente
Sa se defineasca si sa se utilizeze un delegat care sa permita gestionarea metodelor de vanzare si
cumparare, en gros si en detail, in cadrul unor activitati comerciale desfasurate de o firma.
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Delegari
{
delegate void PersDelegat(Produs p, double suma);
class Produs
{
string
string
public
public
den;
um;
double pret;
int stoc;
public Produs()
{
stoc = 0;
pret = 1.0;
}
}
}
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Delegari
{
class ActivComerciale
{
public void cumpara_en_detail(Produs p, double suma)
{
p.stoc += (int)(suma / p.pret);
Console.WriteLine("\nCumpara en detail de " + suma + " lei");
}
public void cumpara_en_gros(Produs p, double suma)
{
p.stoc += (int)(suma / (p.pret * 0.9));
Console.WriteLine("\nCumpara en gros de " + suma + " lei");
}
public void vinde(Produs p, double suma)
{
p.stoc -= (int)(suma / p.pret);
Console.WriteLine("\nVinde in valoare de " + suma);
}
}
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Delegari
{
class Program
{
static void Main(string[] args)
{
Produs prod1 = new Produs();
ActivComerciale a = new ActivComerciale();
PersDelegat Popescu = new PersDelegat(a.cumpara_en_detail);
Popescu(prod1, 1000.0);
Console.WriteLine("\nStocul este " + prod1.stoc + " buc");
Popescu = new PersDelegat(a.cumpara_en_gros);
Popescu(prod1, 1000.0);
Console.WriteLine("\nStocul este " + prod1.stoc + " buc\n\n");
}
}
}
Interfete
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Interfete
{
interface IMiscare
{
void start();
void stop();
void inainte(int distanta, int viteza);
void inapoi(int distanta, int viteza);
bool stanga(int unghi);
bool dreapta(int unghi);
}
}
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Interfete
{
class Vehicul:IMiscare
{
string tip;
public void start()
{
Console.WriteLine("\nStart vehicul");
}
public void stop()
{
Console.WriteLine("\nStop vehicul");
}
public void inainte(int distanta, int viteza)
{
Console.WriteLine("\nVehicul {0} m inainte cu {1} km/h", distanta,
viteza);
}
public void inapoi(int distanta,
{
Console.WriteLine("\nVehicul
}
public bool stanga(int unghi)
{
Console.WriteLine("\nVehicul
return true;
}
public bool dreapta(int unghi)
{
Console.WriteLine("\nVehicul
return true;
}
}
}
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
int viteza)
{0} m inapoi cu {1} km/h", distanta, viteza);
using System.Threading.Tasks;
namespace Interfete
{
class Program
{
static void Main(string[] args)
{
Vehicul v = new Vehicul();
v.start();
v.stanga(20);
v.inainte(10, 100);
v.stop();
Console.Read();
}
}
}
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Lista
{
class nod
{
object inf; //informatia utila din nod
public nod next; //adresa catre urmatorul nod
public nod(object k)
{
inf = k;
next = null;
}
public nod (object k, nod urm)
{
inf = k;
next = urm;
}
//proprietate pt a obtine/modifica informatia utila
public object informatia
{
get { return inf; }
set { inf = value; }
}
}
}
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Lista
{
class lista
{
//capul listei = referinta la primul element al listei
protected Lista.nod cap;
//NR DE NODURI din lista
protected uint nrn;
public lista()
{
cap = null;
nrn = 0;
}
public void Adaugare(object k)
{
if (cap == null)
cap = new Lista.nod(k);
else
{
Lista.nod aux = cap;
while (aux.next != null)
aux = aux.next;
aux.next = new Lista.nod(k);
}
nrn++;
}
public void Afisare()
{
Lista.nod aux = cap;
while(aux!=null)
{
Console.Write("
{0}
", aux.informatia);
aux = aux.next;
}
}
public uint NrNoduri
{
get { return nrn; }
}
}
}
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Lista
{
class Program
{
static void Main(string[] args)
{
Lista.lista l = new Lista.lista();
l.Adaugare(20);
l.Adaugare(90);
l.Adaugare(45);
l.Afisare();
}
}
}