Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Tipuri de date in c# | Introducere in programare

     Tipurile de date si operatorii stau la baza oricarui limbaj de programare. Ele stabilesc limitele unui limbaj si determina tipurile de activitati pentru care poate fi utilizat.

     Un program opereaza cu date. Daca un limbaj de programare nu furnizeaza un mod pentru stocarea datelor, atunci el este inutil.

     O variabila este o locatie de memorie cu nume, careia ii poate fi stocata o valoare. Valoare se poate modifica pe parcursul executarii programului. Nu exista conceptul de variabila fara “tip” pentru ca tipul unei valori determina in mod exact operatiile permise asupra sa (nu toate operatiile sunt permise asupra tuturor tipurilor).

     O constanta (literal), spre deosebire de variabila, desemneaza o valoare fixa. Pentru fiecare tip de data, C# are un mod de declarare.

De ce tipurile de date sunt importante ?

     C# este un limbaj puternic tipizat. Asta inseamna ca pentru toate operatiile, compilatorul efectueaza verificari privind compatibilitatea tipurilor. Aceste verificari sunt necesare pentru prevenirea erorilor si cresterea fiabilitatii programelor.

     Pentru urmatoarele exemple, o sa adoptam urmatoarea conventie de scriere, numita conventia Pascal : in cazul numelor compuse din mai multe cuvinte, fiecare cuvant este scris cu majuscula (ex, AnFabricatie) – valabila pentru numele claselor, metodelor, proprietatilor, enumerarilor, interfetelor, spatiilor de nume. In cazul variabilelor, primul cuvant incepe cu minuscula (variabila anFabricatie).

    Comentariile (foarte importante !) intr-un program C# se fac prin folosirea // pentru a comenta  un rand, iar pe mai multe randuri se folosesc /*  */ . 

Tipuri valorice in C#

    Limbajul C# contine doua tipuri generale de tipuri predefinite.

    Toate tipurile de date sunt derivate din tipul System.Object.

I – tip valoare.

    Toate tipurile sunt derivate din clasa System.ValueType.

    In cazul acestor tipuri de date, atunci cand se declara o variabila, va fi nevoie si de alocare de spatiu pentru ea. Initial,variabilele contin valoarea implicita specifica tipului. Cand se face atribuirea, are loc o copiere a datelor in variabila destinatie care nu mai este legata de variabila initiala (transmitere prin valoare, ”value semantics”).

 

using System;
using System.Collections.Generic;
using System.Text;
namespace ExempluTipuriValoare
{
    public struct Masina
    {
        //variabila instanta
        public int anFabricatie;
    }
    class Program
    {
        static void Main(string[] args)
        {
            //creez obiectul masina, numit Seat
            Masina seat = new Masina();
            //atribui o valoare variabilei an a instantei seat
            seat.anFabricatie = 2009;
            Masina opel = seat;
            // se initializeaza prin copiere variabila sb
            Console.WriteLine("Masina Seat este din anul {0}.", seat.anFabricatie);
            Console.WriteLine("Masina Opel este din anul {0} prin initializare.", opel.anFabricatie);
            //schimb valoarea variabile an a instantei seat
            seat.anFabricatie = 2010;
            Console.WriteLine("Masina Seat este din anul {0}.", seat.anFabricatie);
            //valoare variabilei an a instantei opel ramane aceeasi
            Console.WriteLine("Masina Opel este din anul este {0}.", opel.anFabricatie);
            Console.ReadLine();
        }
    }
}
ValueTypeExample
II – tip referinta.

         In cazul acestor tipuri de date, la declararea unei variabile nu are loc automat alocarea de spatiu. Initial, referintele sunt null. E nevoie de alocare explicita de memorie pentru obiectele propriu-zise, iar la atribuire este copiata referinta in destinatie, obiectul spre care indica ramanand acelasi (“aliasing”, “reference semantics”).

Masina seat = new Masina();
            seat.anFabricatie = 2009;
            Masina opel = seat;

            Console.WriteLine(seat.anFabricatie);
            Console.WriteLine(opel.anFabricatie);
            Console.Read();

RefTypeExample

     Sistemul de operare si Common Language Runtime impart memoria folosita pentru stocarea datelor in memorie stiva (stack) si memorie heap, fiecare functionand in mod diferit.

     Memoria stack are o structura de tip FIFO (first in, last out) si este foarte eficienta. Ca un exemplu practicStiva retine variabilele de tip valoare.

     Heap retine variabilele create dinamic. Ca avantaj este faptul ca obiectele pot fi alocate si sterse intr-o ordine aleatoare. Pentru a putea detine mai mult control si ordine, memoria heap are nevoie de un “memory manager” si un “garbage collector”.

     Tipurile de date reprezinta un subiect foarte vast. Vom continua cu tipurile valorice fundamentale in C#.

Category: Uncategorized
  • Razvan Valcaneantu says:

    FILO, nu FIFO

    June 4, 2012 at 12:20 pm
  • Catalin says:

    Nci FILO nici FIFO!!!
    LIFO = Last In First Out

    November 30, 2012 at 10:43 pm

Your email address will not be published. Required fields are marked *

*