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

Structuri de date

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.

Continue reading

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#.

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.