Un program trebuie sa prelucreze volume mari de date iar pentru ca aceasta prelucrare sa se realizeze eficient este necesara organizarea datelor in structuri de date. De exemplu, putem ordona angajatii unei companii, alfabetic. Pentru acest lucru, va fi nevoie sa retinem intr-o structura de date numele si prenumele angajatilor si apoi sa ii putem ordona. Sau mai mult, tot cu ajutorul unei structuri de date puteam afisa angajatii companiei prin prisma relatiilor ierarhice.
Tipul triunghiului
Sa se determine tipul triunghiului in functie de valoarea laturilor.
Analiza Programului
Un triunghi echilatateral are toate laturile egale, un triunghi isoscel are doua laturi egale iar un triunghi oarecare nu are nici o latura egala.
using System; namespace Triangles { class Program { static void Main(string[] args) { //citirea valorilor de la tastatura int a, b, c; Console.Write("Introduceti a = "); Int32.TryParse(Console.ReadLine(), out a); Console.Write("Introduceti b = "); Int32.TryParse(Console.ReadLine(), out b); Console.Write("Introduceti c = "); Int32.TryParse(Console.ReadLine(), out c); if(a <=0 || b<=0 || c<=0) { Console.WriteLine("Nu se poate determina tipul triunghiului"); return; } //verifica daca triunghiul este echilateral if(a == b && b == c) { Console.WriteLine("Triunghiul este echilateral"); } //verifica daca triunghiul este isoscel else if(a == b || a == c || b == c) { Console.WriteLine("Triunghiul este isoscel"); } else { Console.WriteLine("Triunghiul este oarecare"); } } } }
LINQ to XML
LINQ to XML permite manipularea fisierelor XML cu ajutorul unor clase optimizate pentru interogarile de tip LINQ. Sintaxa este aceeasi folosita pentru interogarea obiectelor (vezi exemplu).
Fisierul xml pe care il vom folosi este:
<?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description> An in-depth look at creating applications with XML. </description> </book> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description> A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world. </description> </book> <book id="bk103"> <author>Corets, Eva</author> <title>Maeve Ascendant</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-11-17</publish_date> <description> After the collapse of a nanotechnology society in England, the young survivors lay the foundation for a new society. </description> </book> <book id="bk104"> <author>Corets, Eva</author> <title>Oberon's Legacy</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2001-03-10</publish_date> <description> In post-apocalypse England, the mysterious agent known only as Oberon helps to create a new life for the inhabitants of London. Sequel to Maeve Ascendant. </description> </book> </catalog>
Pentru afisarea cartilor din categoria Computer se poate scrie:
XDocument document = XDocument.Load("Books.xml"); var allBooks = from book in document.Descendants("book") where book.Element("genre").Value == "Computer" select book.Element("title").Value; foreach (var item in allBooks) { Console.WriteLine(item.ToString()); }
Combinarea datelor in LINQ
Cuvantul cheie join este folosit pentru combinarea datelor din mai multe tabele, ceea ce confera o putere extraordinara pentru LINQ. Sa ne amintim interogarea, ordonarea, si filtrarea unei colectii cu LINQ. In exemplele prezentate foloseam clasele Author si Book. Pentru a evidentia importanta cuvantului cheie JOIN, voi vrea sa returnez titlul din colectia de carti combinat cu numele autorului.
var data = from book in myBooks join author in authors on book.AuthorId equals author.Id select new { Book = book.Title, Author = author.FirstName + " " + author.LastName }; foreach (var bookAuthor in data) { Console.WriteLine("{0} - {1}", bookAuthor.Book, bookAuthor.Author); }
Join-ul a permis intr-un mod eficient si usor combinarea elementelor.
Observati ca data este un tip anonim iar folosirea lui var este obligatorie.
Pana acum am folosit LINQ pentru interogarea colectiilor de obiecte. Intr-un articol viitor, vom vedea cum este posibila interogarea unui Web Service.
Articole programare #3
ILSpy.net – IlSpy este un de-compilator open-source pentru assembly-urile .Net. Cu ajutorul lui se pot decompila assembly-uri din FCL, inapoi in C#.
Popularitatea limbajelor – Conform Tiobe, ierarhia a ramas aceeasi, in comparatie cu anul trecut: 1 – Java, 2 – C, crestere pentru Objective-C, data de numarul aplicatiilor pentru IPhone, IPad, C++ mentine pozita 4, C# cade pe 5. Criteriile conform carora s-a creat clasamentul sunt prezentate aici.
SDL.NET -SDL.NET este o librarie cu ajutorul careia poti dezvolta jocuri in C#.
ILDASM
ILDASM – Intermediate Language Dissasembler este un de-compilator cu ajutorul caruia puteam accesa codul sursa dintr-un assembly. ILDASM poate analiza dll-uri sau exe-uri si le poate converti intr-o forma care poate fi citita de programator.
Articole programare #2
Project Euler – O platforma care pune la dispozie o multime de probleme (matematica/programare) pentru rezolvare.
O idee despre cum ai putea scrie jocul Hangman in C#.
Resharper – Un articol despre cat de mult ajuta acest tool in activitatea zilnica a unui programator.
Ce mai face Windows Phone? – Alaturi de Huawei, Microsoft continua pe piata smartphone-urilor din Africa. Modelul se va numi Huawei 4Afrika, va rula Windows Phone 8 si va fi disponibil in cateva tari.
Articole programare #1
Voi incerca, de acum inainte, ca la sfarsitul fiecarei saptamani, sa adun cateva articole ce vor avea legatura cu .Net si C#, mai exact cu tema blogului.
.Net, incotro? – O parere despre viitorul .Net. C# si Xaml cel putin cativa ani de acum incolo.
Cum sa devii programator C#. Despre cum sa incepi sa programezi in .Net si ce iti mai trebuie in afara de perseverenta.
Programming-motherfucker – Doar programare.
Filtrarea unei colectii cu LINQ
Continui seria dedicata LINQ, iar dupa interogarea si ordonarea unei colectii, voi arata modul usor in care se pot selecta elementele in functie de o anumita conditie. Clauza where va filtra rezultatul conform conditiei primite.
Ordonarea unei colectii cu LINQ
Intr-un articol anterior am interogat o colectie cu LINQ. Presupunem ca in acest scenariu este nevoie de organizarea rezultatului intr-o anumita ordine.