C#

C Sharp, C# არის ობიექტურად ორიენტირებული, ბრძანებითი, ფუნქციური პროგრამირების ენა დამზადებული Microsoft .NET პლათფორმისთვის .

რთული კლასები

რთული კლასები

ერთი ობიექტი შეიძლება მეორე ობიექტს შეიცავდეს. მაგალითად, ობიექტი „უნივერსიტეტი" შეიძლება შეიცავდეს „სტუდენტი" ობიექტს. ამ დროს კლასის ცვლადის გამოცხადება ხდება სხვა კლასის გამოყენებით. შედეგად, შეგვიძლია რთული კლასების შექმნა, რომლის წევრებს ექნება სხვა კლასების ტიპები. განვიხილოთ მაგალითი. // // პროგრამაში ხდება რთულ კლასთან მუშაობის დემონსტრირება class Studenti // მარტივი კლასი { public string gvari; public string fakulteti; public int kursi; public void Metodi_Studenti() { MessageBox.Show("მარტივი კლასი\n" + gvari + "\n" + fakulteti + "\n" + kursi.ToString()); } } class Universiteti // რთული კლასი { public Studenti studenti; // studenti ცვლადს აქვს Studenti კლასის ტიპი public string misamarti; public void Metodi_Universiteti() { MessageBox.Show("რთული კლასი\n" + misa
this საკვანძო სიტყვა

this საკვანძო სიტყვა

მეთოდს გამოძახებისას ავტომატურად გადაეცემა არაცხადი არგუმენტი, რომელიც წარმოადგენს გამომძახებელ ობიექტზე მიმართვას. ამ მიმართვას ეწოდება this. იმის გასაგებად თუ როგორ მუშაობს this მიმართვა, განვიხილოთ პროგრამა, რომელშიც იქმნება Axarisxeba კლასი. ის განკუთვნილია რიცხვის ხარისხის გამოსათვლელად. // // პროგრამაში ხარისხის გამოთვლა სრულდება კონსტრუქტორის კოდში class Axarisxeba { public double wiladi; public int mteli; public double shedegi; public Axarisxeba(double par_ricxvi, int par_xarisxi) { wiladi = par_ricxvi; mteli = par_xarisxi; shedegi = 1; if ( par_xarisxi == 0 ) return; for ( ; par_xarisxi > 0; par_xarisxi-- ) shedegi *= wiladi; } public double xarisxis_dabruneba() { return shedegi; } } private void button1_Click(object sender, EventArgs e) { double ricxvi = Co
ობიექტების მასივის შექმნა

ობიექტების მასივის შექმნა

ობიექტებისაგან შეგვიძლია შევქმნათ როგორც ერთ, ისე რამდენიმე განზომილებიანი მასივი. მოყვანილი პროგრამით იქმნება Martkutxedi ტიპის ერთგანზომილებიანი მასივი, რომელიც 5 ობიექტისაგან შედგება. მასივის გამოცხადების შემდეგ, მისი თითოეული ელემენტი (ობიექტი) ცალ-ცალკე უნდა შეიქმნას. class Martkutxedi { public int simagle; public int sigane; int perimetri; public Martkutxedi(int par1, int par2) { simagle = par1; sigane = par2; perimetri = ( simagle + sigane ) * 2; } public int Gamotana() { return perimetri; } } private void button1_Click(object sender, EventArgs e) { // Martkutxedi ტიპის ერთგანზომილებიანი მასივის შექმნა, // რომელიც 5 ობიექტისაგან შედგება Martkutxedi[] masivi = new Martkutxedi[5]; // თითოეული ობიექტის შექმნა და მათი ცვლადების ინიციალიზება for ( int ind = 0; ind &l
რთულ ობიექტებთან მუშაობა

რთულ ობიექტებთან მუშაობა

ამ განყოფილებაში ვნახავთ თუ როგორ შეიძლება LINQ მოთხოვნის გამოყენება რთული ობიექტების მიმართ. მაგალითისთვის შევქმნათ სტუდენტის კლასი. // // პროგრამით ხდება LINQ მოთხოვნის გამოყენებით დემონსტრირება // რთული ობიექტების მიმართ class Studenti1 { public string gvari; public int asaki; public double tanxa; public int kursi; public string fakulteti; public Studenti1(string par1, int par2, double par3, int par4, string par5) { gvari = par1; asaki = par2; tanxa = par3; kursi = par4; fakulteti = par5; } } private void button1_Click(object sender, EventArgs e) { Studenti1[] obj = new Studenti1[10]; obj[0] = new Studenti1("სამხარაძე", 21, 1200.50, 4, "ინფორმატიკის"); obj[1] = new Studenti1("კაპანაძე", 20, 1250.50, 4, "ენერგეტიკის"); obj[2] = new Studenti1("კირვალიძე", 18, 1300.50,
აგრეგირების ოპერატორები 

აგრეგირების ოპერატორები 

LINQ მოთხოვნას აქვს აგრეგირების ოპერატორები, რომლებიც იძლევიან შედეგის ანალიზის საშუალებას. ხშირად გამოყენებადი ოპერატორებია: Average() – გასცემს შედეგში მოთავსებული რიცხვების საშუალო არითმეტიკულს; Count() – გასცემს მონაცემების რაოდენობას შედეგში; Max() – გასცემს შედეგში მოთავსებული მონაცემების მაქსიმალურ მნიშვნელობას;  Min() – გასცემს შედეგში მოთავსებული მონაცემების მინიმალურ მნიშვნელობას; Sum() - გასცემს შედეგში მოთავსებული რიცხვების ჯამს. ამ ოპერატორების მუშაობის დემონსტრირება ხდება მოყვანილი პროგრამით. // //          პროგრამით ხდება Average(), Count(), Max(), Min(), Sum() //          ოპერატორების მუშაობის დემონსტრირება Random Shemtxveviti_Ricxvebi = new Random(); int[] masivi = new int[12345678]; for ( int i = 0; i < masivi.Length; i++ ) masivi[i] = Shemtxveviti_Ric
მონაცემთა დიდი ზომის ნაკრებთან მუშაობა 

მონაცემთა დიდი ზომის ნაკრებთან მუშაობა 

LINQ მოთხოვნა შეგვიძლია, აგრეთვე გამოვიყენოთ დიდი ზომის რიცხვითი მასივიდან რიცხვების ამოსაჩევად. მოყვანილი პროგრამით ხდება ამის დემონსტრირება. // //          შედეგიდან 5500-ზე ნაკლები მნიშვნელობის მქონე რიცხვების ამორჩევა label1.Text = ""; Random Shemtxveviti_Ricxvebi = new Random(); int[] masivi = new int[1000000]; for ( int i = 0; i < masivi.Length; i++ ) masivi[i] = Shemtxveviti_Ricxvebi.Next(); //          LINQ მოთხოვნის ფორმირება var shedegi = from cvladi in masivi  where cvladi < 5500 select cvladi; //          შედეგების ეკრანზე გამოტანა label1.Text = "5500-ზე ნაკლები რიცხვები:\n"; foreach (var elementi in shedegi) label1.Text += elementi.ToString() + "   "; } ძირითადი პროგრამიდან ხდება RixvebisGenerireba() მეთოდის გამოძახება და მისთვის 1000000-
LINQ  მეთოდის სინტაქსი და ლამბდა გამოსახულებები  

LINQ  მეთოდის სინტაქსი და ლამბდა გამოსახულებები  

 როგორც აღვნიშნეთ, პროგრამა დაიწერა LINQ მოთხოვნის სინტაქსის გამოყენებით. ახალა იგივე პროგრამა დავწეროთ LINQ მეთოდის სინტაქსის გამოყენებით. LINQ არის განხორციელებული როგორც კოლექციების, მასივების, მოთხოვნების შედეგების და სხვა ობიექტების, რომლებიც უზრუნველყოფენ IEnumerable ინტერფეისს, გაფართოებული მეთოდების სერია. LINQ-ს გაფართოებული მეთოდები გამოჩნდება, თუ 18.1 პროგრამაში saxelebi ცვლადის შემდეგ შევიტანთ „ .“ წერტილს. გაიხსნება სია, რომელშიც გამოჩნდება LINQ-ს გაფართოებული მეთოდები: Aggregate<>, All<>, Any<>, Average<>, First<>, Last<>, Contains<>, Take<>, Where<>, Reverse<> Sum<> და ა.შ. თუ using System.Linq დირექტივას გავაკომენტარებთ, მაშინ სიაში ეს მეთოდები აღარ გამოჩნდება.   უნდა გვახსოვდეს, რომ მოთხოვნის სინტაქსი უნდ
LINQ მოთხოვნის სინტაქსი

LINQ მოთხოვნის სინტაქსი

ინტეგრირებული მოთხოვნების ენა (LINQ, Language-Integrated Query) არის C# ენის გაფართოება, რომელიც ინტეგრირებულია ამ ენაში. ის არის დიდი მოცულობის მონაცემებთან მუშაობის მოხერხებული, სწრაფი და ეფექტური მექანიზმი. LINQ გვათავისუფლებს მონაცემების გაფილტვრისა და დახარისხების რთული და გრძელი კოდების წერისაგან. ის არის მოთხოვნების ენა, რომელიც საშუალებას გვაძლევს მიღებული შედეგები ადვილად დავახარისხოთ, გავფილტროთ და შევასრულოთ გამოთვლები. LINQ საშუალებას გვაძლევს ეფექტურად ვიმუშაოთ დიდი ზომის მონაცემთა ბაზებთან და კომპლექსურ XML დოკუმენტებთან, რომლებშიც მილიონზე მეტი ჩანაწერია. LINQ ტექნოლოგია შეგვიძლია გამოვიყენოთ მონაცემთა Object, SQL და XML ტიპების მიმართ: წარმოქმნის მოთხოვნებს, რომლებიც      გამოიყენება    მასივების,       სიებისა           და        სხვა კოლექციების მიმართ. წარმო
mainpage info sms ვირუსის პროგრამის გაშიფვრა + JS/JSE Encoding/Decoding

mainpage info sms ვირუსის პროგრამის გაშიფვრა + JS/JSE Encoding/Decoding

ერთმა დადო ერთ-ერთ ჯგუფში საიტი yousms.info, სადაც დევს პროგრამა, რომლითაც შეგიძლია გააგზავნო დღეში ერთი სმს უფასოდ, მაგრამ ნომრის მაგივრად შეგიძლია რა სახელიც გინდა ის ჩაწერო, მაგალითად TBC Bank. მოკლედ დადო და დაწერა რომ ვირუსიაო, დამაინტერესა და გადავწყვიტე დამეშალა და მენახა რა იყო. ახლა ზუსტად მივყვებით იმ ნაბიჯებს რაც მე გავაკეთე და ბოლოში იმასაც ისწავლით, როგორ გაუკეთოთ encode / decode ჯავასკრიპტის კოდს. სანამ რამეს დავიწყებთ, დაგვჭირდება NetReflector, რომლის დაყენების ინსტრუქცია და გადმოსაწერი ლინკი შეგიძლიათ ნახოთ აქ. ეს კი ენკოდერის და დეკოდერის არქივის ლინკი. მოკლედ გადმოვწერეთ პროგრამა "Send SMS.exe", გავხსენით რეფლექტორი და ჩავაგდეთ შიგნით. მე რამდენჯერმე +-ს დავაჭირეთ და მივედით ".ctor()"-ზე, სადაც გვხვდება ესეთი სურათი: აქედან ჩანს, რომ პროგრამა პირველი რიგში ამოწმებს
ჰეშ-ცხრილები

ჰეშ-ცხრილები

ჰეშ-ცხრილები ინახავენ   წყვილებს-გასაღები-მნიშვნელობა,ანუ    ჰეშ-ცხრილის თითოეული ელემენტი შედგება გასაღებისა და მნიშვნელობისაგან. გასაღები გამოიყენება შესაბამისი მნიშვნელობის მისაღებად. ჰეშ-ცხრილები განსაზღვრულია Hashtable კლასში. ამ კლასის თვისებები და მეთოდები მოყვანილია ცხრილებში 14.3 და 14.4. ჰეშ-ცხრილში გასაღები და მნიშვნელობა შეიძლება იყოს ნებისმიერი ტიპის ობიექტი. თუმცა, ჩვეულებრივ, გასაღების როლში ხშირად სტრიქონებს იყენებენ. Hashtable კლასის თვისებები თვისებები ტიპი აღწერა Count int შეიცავს ჰეშ-ცხრილში შენახული ელემენტების რაოდენობას IsFixedSize bool ამოწმებს აქვს თუ არა ჰეშ-ცხრილს ფიქსირებული სიგრძე IsReadOnly bool ამოწმებს არის თუ არა ჰეს-ცხრილი მხოლოდ წაკითხვადი Item object გასცემს ან აყენებს მითითებული გასაღების მქონე ელემენტის მნიშვნელო