Un exemplu de folosire a unui dictionar

February 9th, 2010 de zeltera

   In acest articol, vom lucra un exemplu in care vom folosi o colectie, un dictionar cu perechi de chei de tip int si valori de tip string, dictionar care va fi construit pe baza a ceea ce introduce utilizatorul de la tastatura. Dupa crearea lui, il vom salva intr-un fisier text pe hard. Apoi vom citi colectia din fisierul text.

   Vom alege un proiect de tip Console Application si vom explica notiuni care nu au fost introduse pana acum.

   Construim clasa DictionarExemplu, care va avea ca metode NumarElemente, CreeazaDictionar, SalveazaDictionar, CitesteDictionar.

   Mai intai, in interiorul clasei, declaram un obiect de tip Dictionary<int,string>:

Citeste continuarea »

Dictionary – o colectie utila

February 6th, 2010 de zeltera

   O alta colectie generica utila in .Net este Dictionary. Ea functioneaza pe principiul perechilor cheie/valoare.

   Dictionarele stabilesc o relatie (”map“) intre o cheie si o valoare. De exemplu, avem numarul de identificare al unui angajat, caruia ii putem atribui un obiect care reprezinta angajatul.

   Clasa generica Dictionary face parte din spatiul de nume System.Collection.Generics. Pentru folosirea ei, vom folosi:

    using System.Collections.Generic;

   Folosind in continuare clasa Cont, folosita in articolele despre ArrayList si List<T>, construim un dictionar care va stoca perechi cheie/valoare de tipul string/Cont:

Citeste continuarea »

Cateva cuvinte despre List – introducere in clasele generice

February 5th, 2010 de zeltera

   Reamintesc problema din articolul despre ArrayList: cream o lista in care adaugam referinte catre obiecte iar pentru a le accesa trebuia sa convertim explicit la tipul obiectului, altfel primeam eroare la compilare, de tipul: “Cannot implicitly convert type ‘object’ to ‘ContExemplu.Cont’. An explicit conversion exists (are you missing a cast?)”.

   C# este un limbaj type-safe, lucru care permite ca unele eventualele erori sa fie returnate la compilare (acest lucru face ca programul sa fie stabil, in sensul ca mare parte dintre errorile datorate tipurilor de date folosite sunt detectate la compilare), si nu la executie (run-time).

   Am expus aceasta problema, pentru a intelege mai bine termenul de generic. Clasele sau functiile generice sunt cele care primesc ca parametru tipul datelor manipulate si sunt foarte folosite in implementarea colectiilor sau algoritmilor care actioneaza asupra unor tipuri variate de date.

   Notiunea de cod generic poate parea cunoscuta celor care programeaza in C++, doar ca implementarea si regulile de utilizare difera in .Net.

Citeste continuarea »

ArrayList – un vector mai bun!

February 1st, 2010 de zeltera

   ArrayList este o colectie simpla care poate stoca orice tip de obiect.

   Clasa ArrayList este continuta in spatiul de nume System.Collections. Aceasta clasa ne permite sa construim un vector care sa creasca in marime, adaugand mereu elemente noi.

Citeste continuarea »

Despre fire de executie in c# (threads)

January 27th, 2010 de zeltera

   De multe ori, aplicatiile au nevoie de mult timp pentru a rezolva o sarcina (descarcarea unui fisier, printare, generarea unui raport etc), timp in care programul nu poate raspunde unei alte actiuni a utilizatorului. Pentru a face ca o aplicatie sa indeplineasca o sarcina si sa poata primi si altele in acelasi timp, sunt folosite firele de executie multiple (multiple threads).

   Intr-un program liniar se executa o singura linie de cod, se asteapta pentru completare si apoi se continua cu urmatoarea linie de cod.  Programul nu poate raspunde actiunii unui utilizator in acest timp si chiar in cazul mai multor procesoare, va fi folosit doar unul singur, limitand performanta, datorita programarii single-thread.

Citeste continuarea »

Cateva reguli de scriere

January 26th, 2010 de zeltera

Nu stiu daca sunt cel mai in masura sa scriu despre asa ceva, dat fiind ca nu am o indelungata experienta in lumea scrisului, insa “o sa ma risc”! Tot ce scriu e rezultatul experientei proprii, cateva reguli pe care le-am dedus sau invatat citind ceea ce altii au scris. Nu, nu o sa scriu despre ce trebuie scris, ci despre cum trebuie scris, chestii tehnice, de genul: daca tot e titlu, fa-l mai mare decat restul textului, ca sa stim si noi ca e titlu; sau: daca tot te apuci de scris ceva, macar scrie corect. Aminteste-ti ca gramatica nu e optionala la scris.

Scrisul de tip messenger este numai pentru messenger. Acolo trebuie sa comunici rapid, de obicei cu prieteni, cu care iti permiti sa spui/scrii orice si oricum, si, de obicei, ei fac la fel. Insa in momentul in care ai iesit in public, incearca sa nu zgarii retina cititorului prin compozitii de text si imagine greu digerabile. Si prin greu digerabile ma refer atat la cunoscutul stil messengerist care combina tot soiul de icons cu text si combinatii de prescurtari etc cat si la texte scrise negliject, cu gramatica sau semne de punctuatie lipsa.

Citeste continuarea »

Aplicatie utila: paint.Net

January 24th, 2010 de zeltera

Mai devreme sau mai tarziu toti ajungem sa avem nevoie de un editor de imagini.
Fie ca vrem sa corectam o fotografie, fie ca vrem sa o redimensionam, sa "taiem"
un detaliu pe care nu il vrem acolo, cand trimitem o poza pe email etc. Nu pot sa
imi imaginez pe cineva nu are nevoie de un astfel de program.

Ce face acum omu' care are nevoie de un editor ocazional? Ori cauta pe net tot
soiul de demo/shareware si, de obicei gaseste tot soiul de chestii ciudate, ori
cauta un program consacrat si il imprumuta – un crack gaseste tot omu pentru ultima
versiune de photoshop. Insa aici apar alte probleme: nu stii daca nu cumva acest
crack nu este de fapt un virus/troian care ajuta pe o parte, si pe alta parte iti
trimite toata lista de contacte la un grup de baieti buni.

Citeste continuarea »

c# events | evenimente in c# (.Net)

January 24th, 2010 de zeltera

    In stransa legatura cu facilitatea delegate a limbajului C#, prezentam evenimentele, events.

   Cele mai multe evenimente sunt actiuni ale utilizatorilor (click, schimbarea unei liste, introducere de text, sfarsitul unui calcul etc).

    In .Net, obiectele cunoscute ca si event senders, declanseaza evenimente atunci cand au loc actiuni. Event receivers se ocupa de aceste evenimente prin rularea unei metode numite event handler. Pentru ca event sender-ul nu stie care metoda se va ocupa de eveniment, trebuie creat un delegate care sa se comporte ca un pointer catre event handler.

    Pentru a produce un eveniment, trebuie sa parcurgem 3 pasi : sa declaram un delegate, sa construim un obiect eveniment, sa apelam delegatul intr-o metoda.

Citeste continuarea »

Afisarea unui XML intr-un GridView

January 23rd, 2010 de zeltera

Un document xml poate stoca date de tip tabela. Ce inteleg prin date de tip tabela? Daca am tabelul de mai jos:

id projName verion asignedTo lastUpdateDate
175077 UI Web john smith 1/4/2009 9:57:15 PM
175078 Windows UI olga bruno 2/4/2009 10:07:20 AM
175079 2.0 CommeonDLL Adrian Blumer 15/2/2009 07:12:21 AM
175070 1.0 WS Joseph Lee 6/1/2010 11:11:10 AM

pot salva acest tabel ca document xml asa:
Citeste continuarea »

despre delegates – Introducere

January 23rd, 2010 de zeltera

    In programare, exista situatii cand trebuie sa executam o anumita actiune, dar fara sa stim in avans ce metoda sau ce obiect vom apela pentru executarea actiunii. Exemplu : la apasare, un buton va sti ca trebuie sa notifice un anumit obiect , dar nu stie exact care. Solutia simpla consta in conectarea butonului la un delegat si apoi acesta sa indice catre o anumita metoda.

    Un delegat este un obiect care poate referi o metoda. Chiar daca nu este un obiect, o metoda ocupa un loc in memorie, iar aici, la aceasta adresa, va fi transmis controlul la invocarea metodei.

Citeste continuarea »