Saturday, June 28, 2014

Sonlarni so`zlarga aylantiradigan kichik va oson dastur


/**
 * Created by Virus on 6/28/2014.
 */
public class Simple {

    public static void main(String[] args) {

        String text = "346836873469720";

        String[] a = {"", "bir", "ikki", "uch", "to`rt", "besh", "olti", "yetti", "sakkiz", "to`qqiz"};
        String[] b = {"", "o`n", "yigirma", "o`ttiz", "qirq", "ellik", "oltmish", "yetmish", "sakson", "to`qson"};
        String[] c = {"", "ming", "million", "milliard", "trillion"};

        StringBuffer buffer = new StringBuffer();

        for (int i = 0; i < text.length(); i++) {

            if ((text.length() - i) % 3 == 0) {

                buffer.append(a[Integer.valueOf(text.substring(i, i + 1))]);
                buffer.append(" yuz ");
            } else if ((text.length() - i) % 3 == 1) {

                buffer.append(a[Integer.valueOf(text.substring(i, i + 1))]);
                buffer.append(" ");
                int h = text.length() / 3 - i / 3 - 1;
                buffer.append(c[h < 0 ? 0 : h]);
                buffer.append(" ");
            } else if ((text.length() - i) % 3 == 2) {

                buffer.append(b[Integer.valueOf(text.substring(i, i + 1))]);
                buffer.append(" ");
            }
        }

        System.out.print(buffer);
    }
}

Saturday, May 3, 2014

C# .NET da Excel ga jadval tuzib unga mos Bar Chart chizish dasturi

using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection; 

Biz pastda Microsoft.Office.Interop.Excel ning o`rniga Excel deb yozib ketamiz(yozuvni qisqartirish maqsadida).

1-qadamda excel jadvaliga ma`lumot yozilgan
private void button1_Click(object sender, System.EventArgs e)
{
 Excel.Application oXL;
 Excel._Workbook oWB;
 Excel._Worksheet oSheet;
 Excel.Range oRng;

 try
 {
  //Start Excel and get Application object.
  oXL = new Excel.Application();
  oXL.Visible = true;

  //Get a new workbook.
  oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
  oSheet = (Excel._Worksheet)oWB.ActiveSheet;

  //Add table headers going cell by cell.
  oSheet.Cells[1, 1] = "First Name";
  oSheet.Cells[1, 2] = "Last Name";
  oSheet.Cells[1, 3] = "Full Name";
  oSheet.Cells[1, 4] = "Salary";

  //Format A1:D1 as bold, vertical alignment = center.
  oSheet.get_Range("A1", "D1").Font.Bold = true;
  oSheet.get_Range("A1", "D1").VerticalAlignment = 
   Excel.XlVAlign.xlVAlignCenter;
  
  // Create an array to multiple values at once.
  string[,] saNames = new string[5,2];
  
  saNames[ 0, 0] = "John";
  saNames[ 0, 1] = "Smith";
  saNames[ 1, 0] = "Tom";
  saNames[ 1, 1] = "Brown";
  saNames[ 2, 0] = "Sue";
  saNames[ 2, 1] = "Thomas";
  saNames[ 3, 0] = "Jane";
  saNames[ 3, 1] = "Jones";
  saNames[ 4, 0] = "Adam";
  saNames[ 4, 1] = "Johnson";

         //Fill A2:B6 with an array of values (First and Last Names).
         oSheet.get_Range("A2", "B6").Value2 = saNames;

  //Fill C2:C6 with a relative formula (=A2 & " " & B2).
  oRng = oSheet.get_Range("C2", "C6");
  oRng.Formula = "=A2 & \" \" & B2";

  //Fill D2:D6 with a formula(=RAND()*100000) and apply format.
  oRng = oSheet.get_Range("D2", "D6");
  oRng.Formula = "=RAND()*100000";
  oRng.NumberFormat = "$0.00";

  //AutoFit columns A:D.
  oRng = oSheet.get_Range("A1", "D1");
  oRng.EntireColumn.AutoFit();

  //Manipulate a variable number of columns for Quarterly Sales Data.
  DisplayQuarterlySales(oSheet);

  //Make sure Excel is visible and give the user control
  //of Microsoft Excel's lifetime.
  oXL.Visible = true;
  oXL.UserControl = true;
 }
 catch( Exception theException ) 
 {
  String errorMessage;
  errorMessage = "Error: ";
  errorMessage = String.Concat( errorMessage, theException.Message );
  errorMessage = String.Concat( errorMessage, " Line: " );
  errorMessage = String.Concat( errorMessage, theException.Source );

  MessageBox.Show( errorMessage, "Error" );
 }
}

2-qadamda esa chart chizilgan

private void DisplayQuarterlySales(Excel._Worksheet oWS)
{
 Excel._Workbook oWB;
 Excel.Series oSeries;
 Excel.Range oResizeRange;
 Excel._Chart oChart;
 String sMsg;
 int iNumQtrs;

 //Determine how many quarters to display data for.
 for( iNumQtrs = 4; iNumQtrs >= 2; iNumQtrs--)
 {
  sMsg = "Enter sales data for ";
  sMsg = String.Concat( sMsg, iNumQtrs );
  sMsg = String.Concat( sMsg, " quarter(s)?");

  DialogResult iRet = MessageBox.Show( sMsg, "Quarterly Sales?", 
   MessageBoxButtons.YesNo );
  if (iRet == DialogResult.Yes)
   break;
 }

 sMsg = "Displaying data for ";
 sMsg = String.Concat( sMsg, iNumQtrs );
 sMsg = String.Concat( sMsg, " quarter(s)." );

 MessageBox.Show( sMsg, "Quarterly Sales" );

 //Starting at E1, fill headers for the number of columns selected.
 oResizeRange = oWS.get_Range("E1", "E1").get_Resize( Missing.Value, iNumQtrs);
 oResizeRange.Formula = "=\"Q\" & COLUMN()-4 & CHAR(10) & \"Sales\"";

 //Change the Orientation and WrapText properties for the headers.
 oResizeRange.Orientation = 38;
 oResizeRange.WrapText = true;

 //Fill the interior color of the headers.
 oResizeRange.Interior.ColorIndex = 36;

 //Fill the columns with a formula and apply a number format.
 oResizeRange = oWS.get_Range("E2", "E6").get_Resize( Missing.Value, iNumQtrs);
 oResizeRange.Formula = "=RAND()*100";
 oResizeRange.NumberFormat = "$0.00";

 //Apply borders to the Sales data and headers.
 oResizeRange = oWS.get_Range("E1", "E6").get_Resize( Missing.Value, iNumQtrs);
 oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin;

 //Add a Totals formula for the sales data and apply a border.
 oResizeRange = oWS.get_Range("E8", "E8").get_Resize( Missing.Value, iNumQtrs);
 oResizeRange.Formula = "=SUM(E2:E6)";
 oResizeRange.Borders.get_Item( Excel.XlBordersIndex.xlEdgeBottom ).LineStyle 
  = Excel.XlLineStyle.xlDouble;
 oResizeRange.Borders.get_Item( Excel.XlBordersIndex.xlEdgeBottom ).Weight 
  = Excel.XlBorderWeight.xlThick;

 //Add a Chart for the selected data.
 oWB = (Excel._Workbook)oWS.Parent;
 oChart = (Excel._Chart)oWB.Charts.Add( Missing.Value, Missing.Value, 
  Missing.Value, Missing.Value );

 //Use the ChartWizard to create a new chart from the selected data.
 oResizeRange = oWS.get_Range("E2:E6", Missing.Value ).get_Resize( 
  Missing.Value, iNumQtrs);
 oChart.ChartWizard( oResizeRange, Excel.XlChartType.xl3DColumn, Missing.Value,
  Excel.XlRowCol.xlColumns, Missing.Value, Missing.Value, Missing.Value, 
  Missing.Value, Missing.Value, Missing.Value, Missing.Value );
 oSeries = (Excel.Series)oChart.SeriesCollection(1);
 oSeries.XValues = oWS.get_Range("A2", "A6");
 for( int iRet = 1; iRet <= iNumQtrs; iRet++)
 {
  oSeries = (Excel.Series)oChart.SeriesCollection(iRet);
  String seriesName;
  seriesName = "=\"Q";
  seriesName = String.Concat( seriesName, iRet );
  seriesName = String.Concat( seriesName, "\"" );
  oSeries.Name = seriesName;
 }                
 
 oChart.Location( Excel.XlChartLocation.xlLocationAsObject, oWS.Name );

 //Move the chart so as not to cover your data.
 oResizeRange = (Excel.Range)oWS.Rows.get_Item(10, Missing.Value );
 oWS.Shapes.Item("Chart 1").Top = (float)(double)oResizeRange.Top;
 oResizeRange = (Excel.Range)oWS.Columns.get_Item(2, Missing.Value );
 oWS.Shapes.Item("Chart 1").Left = (float)(double)oResizeRange.Left;
}


Monday, March 3, 2014

Ikki va undan ortiq, ko`p o`lchovli massivlar haqida

Ikki va undan ortiq, ko`p o`lchovli massivlar haqida

Bir o`lchovli massivlar vector(vektor) deyiladi.
Ikki o`lchovli massiv esa matrix(matritsa) deyiladi.
Vektorlar - int[] a={2,3,4,54,5}; (C#, Java)
Matritsa - int[,] a={{3,5,3},{3,5,6},{544,3,64},{654,0,-5}}; (C#,Java)
Massivning ixtiyoriy elementini o`zgartirishda uning indexi(pozitsiyasi) orqali o`zgartiriladi.
a[4]=2; (5- element o`zgartirildi)

b[3]="3423"; (4- element o` zgartirildi)

Main funksiyasi

Main funksiyasi(asosiy funksiya) - Barcha dasturlarda mazkur funksiya bor. Bu funksiya dasturning kirish eshigi, dastur ishga tushirilganda avtomatik shu funksiyaga murojaat bo`lib, shu funksiyada qaysi funksiya ko`rsatilsa shu yerga yo`naltiriladi. agar hech bir funksiyaga murojaat qilinmagan bo`lsa boshqa class yoki funksiyalarga murojaat qilmasdan dastur ish faoliyatini tugatadi.

Funksiyalar bilan ishlash

Funksiyalar bilan ishlash

Funksiyalar biz uchun nega kerak? - Class biz uchun tip, funksiyalarni e`lon qilish maydoni, biror obyektni qayta ishlash uchun kerakligini bildik. Endi funksiya haqida, nima uchun foydalanishimiz kerakligi haqida bilib olamiz. Sizchi nima deb o`ylaysiz?

Demak, class ning vazifalari ichida mantiqiy yoki arifmetik amallar yo`q. Biz biror missiyani bajarishni xohlasak uning algoritmini qanday kiritamiz? Albatta funksiyaga. Funksiyalar ko`p bo`lishi mumkin ular bir classda yoki bir nechta class da bo`lishi ham mumkin. Eslab o`tamiz tashqaridan ko`rishimiz uchun bu funksiya albatta public bo`lishi lozim. Demak funksiyada dasturning mantig`i yoziladi, bu mantiq funksiyalarga, classlarga ma`nosi bo`yicha ajratib, tartiblab yoziladi. Kerak bo`lgan yerda shu qismni e`lon qilinadi, kerak bo`lgan yerda murojaat qilinaveradi. Bir nechta kichik dastur tuzmoqchi bo`lsangiz yoki bir nechta masalani ishlamoqchi bo`lsangiz har biriga alohida proyekt yaratib o`tirishni keragi yo`q, har bir masalani bittadan funksiyada bajarib, shu funksiyalarni asosiy funksiyadan chaqirib qo`yish kifoya. Son-sanoqsiz funksiyalar, classlar bo`lishi mumkin, ammo ular siz qachon murojaat qilsangizgina faoliyatni boshlaydilar. Bundan anglashiladiki, yozayotgan kodimi kattalashib ketmasligi uchun classlarga, funksiyalarga bo`lib tashlasak xotirani tejaymiz, murojaat qilsakgina ishlar ekanlar. Funksiyaga murojaat ham faqat funksiya ichidan bo`ladi, e`lon qilish esa faqat class ichida. Demak class da e`lon qilyapmiz, funksiyadan boshqa funksiyani chaqirayapmiz. Funksiyaga murojaat qilganda funksiya nomidan so`ng "(" belgisini qo`yamiz(qavsni yopmay turamiz) va bizga kiritishimiz shart bo`lgan kerakli parametrlar ko`rinadi. Demak ko`rindiki funksiyalardan foydalanish, e`lon qilish uchun maxsus bilim shart emas, tiplarni bilsak bo`ldi ekan. Tiplarni esa OOP ni o`rganishdan oldin misol yechish jarayonida yodlab, tushunib olamiz. Xulosa shuki biz uchun o`ylagan algoritmimizni funksiyani e`lon qilib uning ichida(tanasida) yozamiz.

Classlarga murojaat

Classlarga murojaat


Classlarga murojaat qilganda ma`lumot dinamik xotiraga tushadi. Chunki classni chaqirish C# va Java da deyarli bir xil. 


Bu yerda Tom -class, tom - obyekt. demak Tom tipidagi tom.(Mushuklar turiga kiruvchi bir hayvon yoki obyekt, ya`ni bir mushuk. E`tibor bering: Tom(Mushuk) bilan tom(mushuk) farq qilmoqda).

Static elementlar

Static elementlar

   Class, funksiya, obyekt yoki propertyni static(static) element sifatida e`lon qilish mumkin. Bundan ko`zlangan maqsad statik elementni xotiraning yuqori pog`onasiga chiqarib qo`yish va uni xotirada doim saqlash, kerak bo`lganda unga murojaat qilish. Statik bo`lmagan elementlar esa classga murojaat vaqtida ular ham yangidan xotiraga olinadi, classni ishlatishni to`xtatib block yopilganda esa u elementlar xotiradan tozalab tashlanadi. Undan tashqari class ni bir necha marta qayta-qayta murojaat etib chaqirib foydalanilganda shu class tipida bir nechta obyekt hosil bo`ladi, statik bo`lmagan elementlari har bir klassda alohida element qabul qiladi, statik bo`lsa shu obyektlarda hammasida ayni shu statik elementi bir xil qiymatga moslashib qoladi(bittasidagi statik element o`zgartirilsa hamma obyektlarda xuddi shu statik element bir xil yangi qiymatga o`zgarib qoladi).
Funksiyalar ham statik bo`lishlari mumkin. Bu qachon bo`ladi? Qachonki bir funksiyaning vazifasi o`zi joylashgan classdagi boshqa funksiyaga bog`liq bo`lmasa va uni asosan boshqa classlardan chaqirilsa shunda ishlatiladi.
Static elementlar class nomidan so`ng nuqta(.) qo`yib chaqiriladi
Masalan: Console.WriteLine("..."); System.out.println("...");

 bu yerda Console va System -class, WriteLine va println esa statik funksiyalar.

Funksiyaga murojaat

Funksiyaga murojaat - Funksiyani chaqirish, funksiyani ishlatish, funksiya ijro etish...

Funksiyaga murojaat etishda quyidagilarga e`tibor qaratish lozim:
1. Funksiya qiymat qaytaradimi? - agar qaytarsa demak undan biror natija olib boshqa o`zgaruvchiga berish mumkin.
2. Funksiyaning tipi qanaqa, ya`ni bizga qaytadigan qiymat qaysi tipda bo`ladi? - Agar yangi o`zgaruvchi e`lon qilib unga funksiyaning qiymatini berishni istasak, demak yangi o`zgaruvchining tipi funksiyaning tipini o`z ichiga olishi yoki u bilan bir xil bo`lishi shart.
3. Funksiya parametr oladimi? - agar parametr olsa, unga parametr kiritish kerak bo`ladi.
4. Parametrlari nechta va tiplari qanaqa? - parametrlarning o`rniga biror qiymat yoki boshqa bir o`zgaruvchi kiritish mumkin. Ketma-ketlik esa parametrlarning ketma-ketligi bilan bir xil va har bir kiritilayotgan parametrning tipi e`lon qilingan parametr o`zgaruvchisining tipi bilan bir xil bo`lishi kerak.
bular 4 ta bo`lgani bilan qiyin emas.
Ushbu shartlar qanoatlantirilsa funksiya ishlaydi va biror natija olish yoki shunchaki ishlatib yuborish mumkin.

Ko`rib turganimizdek funksiyalarning ichki qismida yana biz bilgan tizimli dasturlashning arifmetik amallaridan foydalaniladi. Shu sababli yosh dasturchilarga masala ishlatib, ularni ko`niktirib boriladi va Class tushunchasini qabul qilish ularga og`irlik qilmaydi. Sababi funksiyani e`lon qilish va chaqirishdan boshqa deyarli barcha narsalar arifmetik ifodalar bo`lmoqda...

Class lar haqida

Class  lar haqida

Class lar o`zida qiymat saqlovchi obyektlardan, funksiya va property(xususiyat) lardan tashkil topgan. Vazifa bir turga yaqin funksiyalarni bir joyga saqlash uchun biror bir klassning ichida e`lon qilinadi(joylashtiriladi) va biror nom bilan nomlanadi.
Funksiyalarni e`lon qilish - funksiyani biror class ning ichiga joylashtirib uning ichiga logikasini(bajaradigan missiyasini) yozish.
Funksiyani chaqirish(ishlatish) - E`lon qilingan funksiyani chaqirish mumkin, e`lon qilinmagan funksiya mavjud bo`lmaydi. Funksiyalar - kichik dasturchalar, ular parametr berib ishlatiladi va biror natijani qabul qilib olinadi.

funksiyalarni e`lon qilishda ham ma`lum bir type(Reference yoki Value) bilan e`lon qilinadi(yaratiladi deb ham yoziladi - bu e`lon qilish ma`nosida). Kirish parametrlari bir nechta bo`lsa ham natijaning qiymati bir dona bo`ladi(ya`ni bitta qiymat qaytadi).. Parametrlar ham natija ham biror type ga tegishli bo`ladi. Natija esa funksiyaning qiymati deb aytiladi.  Qiymat qaytarmaydigan funksiyalar ham bor, bular  Prosedura(Procedure) deyiladi. E`lon qilinishi xuddi funksiyalar bilan bir xil, faqat  funksiyaning tipi void deb belgilanadi. void- - bu maxsus tip, faqat funksiyalarda qo`yiladi, qachonki uni proseduraga aylantirish kerak bo`lgan vaqtlarda.


Return - ingliz tilida qaytarmoq, qaytarib bermoq, jo`natmoq yoki javob bermoq ma`nolarini beradi. Biz bu operatorni funksiyalarda qo`llaymiz. Shu funksiyaning natijasini qaytaruvchi operator. Dasturning biror qismidan kerakli funksiyani chaqirganimizda odatda undan biror natija kutamiz va kelgan natijani boshqa bir o`zgaruvchiga beramiz. Shu funksiyadan natija qaytishi uchun returndan foydalaniladi. Returndan keyingi operatsiyalar bajarilmaydi. Funksiyada qanday amallar bajarilganiga qaramay returnda nima berilgan bo`lsa shu qaytad(funksiyaning qiymati shunga teng bo`ladi).

Obyektga yo`naltirilgan dasturlash tillari (OOP)

Obyektga yo`naltirilgan dasturlash tillari (OOP)

Obyektlar orqali ma`lumotlarni qayta ishlash va amallar bajarishni ta`minlashda foydalaniladigan dasturlash tillari Obyektga yo`naltirilgan dasturlash tillaridir. OOP ham rivojlanish evaziga ehtiyoj sababli yuzaga kelgan.  OOP ning imkoniyatlari ba`zida bizning tasavvurimizdan ham kattaroq. Unda istalgan tipdagi obyektlarni qayta ishlashning imkoni bor. OOP dasturlarini tasavvur qilish tizimli dasturlarni tuza oladigan dasturchilar uchun qiyin emas, OOP - tizimli dasturlarning majmui. Istalgan dasturni tahlil qilsak - hech bir dastur yo`qki unda tizimli dasturlash tillaridagi amallar bajarilmasa, OOP da ham turli xil tiplar bo`lgani bilan ular ham oddiy tiplardan tuzilgan to`plamlardir, ular o`rtasida amal bajarganda ham shundoq o`zini emas ichidagi a`zolari o`rtasida amallar bajariladi. A`zolari esa o`sha biz bilgan oddiy tiplar hisoblanadi.
OOP ning 3 prinspi:
1. Inkaptsulyatsiya (incapsulation)(Class a`zolarining xavfsizligini ta`minlash)
2. Nasl olish(Abstraction-Inheritance)(Avlod classda ajdod classning xususiyatlaridan foydalanish)
3. Polimorfizm
Savol: Object nima? Object(obyekt) - xotirada saqlangan ma`lumotning e`lon qilingan nomi(o`zgaruvchisi).  O`zgaruvchi - ma`lumotni biror bir nom bilan e`lon qilish.
Savol: Struct nima? Struct(struktura) -obyekt tegishli bo`lgan to`plamning nomi. Bu to`plamni tip(type) deb ataladi. Struct tipidagi obyektda ichidagi barcha o`zgaruvchilar tashqaridan ko`rinib turadi.
Savol: Class nima? Class ham xuddi Struct kabi type, lekin undagi obyektning ba`zi xususiyatlari bor, ular bu obyektning tanasini yashirib turadi va boshqalar.. Shu sababli ham struct dan odatda juda kam foydalaniladi. Chunki Struct - bu public(ommaviy, ochiq, oshkora obyekt). Bundan tashqari Class lar kod yozishda ham muhim ahamiyatga ega. Dasturchi dastur tuzganda odatda har bir missiya uchun bir funksiya ochadi va funksiya nomini shu missiyaga mos qilib nomlaydi. Kodning matnini shu funksiyalarda yozadi. Funksiyani o`zini esa Class da yoziladi. Demak Classda kod matnini emas funksiya(method-metod), property(xususiyat) hamda o`zgaruvchilar yoziladi, funksiyaning ichida esa kodning matni yoziladi.(adashtirmaslik kerak). Ma`lum bir guruhga kiradigan missiyalar, mantiqlar to`plami bitta Class da tashkil etiladi va shu class nomini ham mantiqdan kelib chiqib nom beriladi. Agar bu class mantiqiy amallarni bajarish uchun emas, faqat to`plamning tipi(type) uchun yaratib vaqtincha shu tipdagi ma`lumotni saqlab turish uchun yaratilgan bo`lsa (ya`ni undan maqsad faqat ma`lumot saqlash va biror manzilga yo`naltirish) demak unda funksiyaning keragi yo`q.  

Masalan:


Bu class Tom obyektining qiymatini saqlash uchun e`lon qilingan. Tom-mushuk bir obyekt bo`lsa uning ismi va yoshini saqlab turadigan class. Demak bu to`plam yoki bir tip ki, unda mushuk haqida ma`lumotlar saqlanadi. Bu klass tipidagi obyektlar ko`pligi bizga bir nechta mushukning ma`lumotlari saqlanayotganligini bildiradi. Oydinlashadiki. biz OOP dasturlash tillarida o`zimiz xohlagancha tip e`lon qilib foydalana olishimiz mumkin ekan. Biz OOP orqali juda katta imkoniyatlarga erishamiz. Class lar birgalikda kutubxona(library-biblioteka) fayllarini tashkil etadi, bu kutubxonalar ham biror katta dasturlar tizimini tashkil etadi. Masalan: Windows OS ham kutubxonalardan tashkil topgan.

Public va Private nima? Class a`zolarining xavfsizligini ta`minlash(inkapsulyatsiya)-incapsulation) prinspining maxsus so`zlari. Public, Protected, Private turlari mavjud.
Public(umumiy) - ushbu elementni class tashqarisidan ko`rish, o`zgartirish mumkin yoki yo`qligini bildiradi
Protected(himoyalangan) - ushbu element shu class avlodlari(nasl olinganda) ichida va shu class ning ichida ko`rinishi, murojaat qilish mumkinligi va qiymatini o`zgartira olish huquqini beradi
Private(maxfiy) - mazkur element o`zi joylashgan class ichidagina ko`rinishi va qiymatlarini o`zgartira olinishi hamda murojaat huquqini beradi.
Bu bizga nima uchun zarur? Tasavvur qilishga oson bo`lishi uchun kompyuter klaviaturasidan foydalanamiz. Klavishlar public elementlar, uning ichki qismidagi sxemalar esa private. Bizga faqat foydalanishimiz kerak bo`lgan elementlar ko`rsatib qo`yilgan, qolgani esa biz uchun muhim emas va mavhum. Protectedni esa xotirada qolishi uchun foydalangan vaqtimizda tushuntirib o`tamiz.

Takrorlanish operatori ( for -parametrli sikl operatori)

Takrorlanish operatori ( for -parametrli sikl operatori)
Takrorlanish operatori ham muhim ahamiyatga ega. Qo`yilgan masalaning yechimi bir yoki bir-nechta arifmetik ifodaning N marta qayta-qayta hisoblanishi natijasida chiqadigan bo`lsa bundan foydalaniladi.


Shartli o`tish operatori ( if )

Shartli o`tish operatori ( if )
Shartli o`tish operatori - biror shart bajarilganda belgilangan vazifani bajarishga yo`naltiruvchi operator. E`tibor bering: shart bajarilganda. bu operatorning sintaksisi quyidagicha. Belgilangan vazifa bajarilishi uchun biror shart qo`yish kerak bo`lganda foydalaniladi.














Biror shart bajarilganda 1-vazifa aks holda 2-vazifa bajarilishi uchun ham foydalanish mumkin.


If( shart ){
.....//1-vazifa
} else {
..............//2-vazifa
}
... else - aks holda

Dasturlashda Type(tip) tushunchasi

Dasturlashda Type(tip) tushunchasi

Dasturlar amallardan(operatsiyalar) tarkib topgan. Bu amallar xoh mantiqiy xoh algebraik amallar bo`lsin barchasi matematik amallardir. Demak bu yerda qiymatlar orasida amallar bajariladi. Qiymatlar esa ma`lum bir (type)tipga tegishli bo`lishi lozim. Bu tiplarni dasturlash tillari orqali kiritganda kompyuterga anglatish uchun uni qaysi tipga tegishli ekanligini ko`rsatib e`lon qilish muhim. Shu tiplarning biriga tegishli bo`lgan qiymatni ma`lum bir nom bilan atab e`lon qilinishi o`zgaruvchilar deyiladi. Bundan kelib chiqadiki eng sodda dastur yozish juda ham oson, biror tipga tegishli bo`lgan o`zgaruvchilarni e`lon qilib ular o`rtasida amallar bajarib natijani chiqarib qo`ysak bir dasturni tuzgan hisoblanaveramiz. Tiplar 2 turga bo`linadi. Reference Type, Value Type.
Reference Type - dinamik xotiradan foydalanib e`lon qilinadigan qiymatlar tipi.
Value Type - statik xotiradan foydalanib e`lon qilinadigan qiymatlar tipi.
Tizimli dasturlash tillar.
Muayyan bir kichik masalani yechish uchun mo`ljallangan dasturlarni yechishda  foydalaniladigan dasturlash tillari tizimli dasturlash tillaridir. Chunki kichik bir masala uchun OOP ga zarurat yo`q.  Asosan qo`shish, ayirish, ko`paytirish va bo`lish amallaridan foydalaniladi. Bu amallar value tiplar orasida bajariladi. (matematiklar barcha amallar qo`shish amalidan kelib chiqqan deb hisoblashadi : 3-2=3+(-2); 3*3=3+3+3; 4/2=(2+2)/2,...).
Bu turdagi dasturlarda oddiy(value) tiplardan foydalaniladi. (faqat asosiylarini keltirib o`tamiz):
Integer- butun sonlar tipi (masalan:...-23,-3,-2, 0, 3, 6, 8,...)
String - qatorlar, so`zlar, matnlarni o`z ichiga oladi (masalan: "2312","fgtds","fg4fd"...)
Char - 1 ta belgiga teng (masalan: 'd','4','^',...)
Double - haqiqiy sonlardan iborat
va Massivlar
Massivlar haqida
Massivlar bu bir tipgagi qiymat yoki obyektlarning  kollektsiyasi ya`ni ketma-ket joylashgan ro`yxati. Ular ixtiyoriy tip bo`lishi mumkin, ammo hammasi bir tipga tegishli bo`ladi xolos.
masalan:
Integer[] a={1,2,3,4,5,6,7,8,9,34}; bu butun sonlarning massivi
Double[] a={1,2,3,4,565.5,343.6,4.54,45.65}; bu haqiqiy sonlarning massivi
String[] a={"34","sdfsa","344df3"};  qatorlar massivi.
Massivlar ham value tiplar oilasiga kiradi.
Massivlar avvaliga tushunarsiz tuyuladi, buning sababi har bir elementini maxsus tip bo`lsa kerak deb hisoblashda. Butun sonlarning massivi - har bir elementi butun son, qatorlar(string) massivi esa har bir elementi qator. Xuddi shunga ko`ra qaysi bir class ning massivi ham har  bir elementi shu class obyektlaridan tashkil topgan bir massiv deb qabul qilinadi.
Undan tashqari pozitsiya 0 dan boshlanadi. 1- element 0-pozitsiya deb qabul qilingan.
0-positsiya yo`qligi sababli massivda "-1" -indexli element bo`lmaydi, ya`ni "-1" -index mavjud emas.
a[0]=1; (birinchi elementni qiymati o`zgartirildi)
 b[3]="dsfsdf";(to`rtinchi elementni qiymati o`zgartirildi)
....

c[0]=new Tom(); c[0].Name="Tom";

Dasturlash tillari haqida

Dasturlash tillari haqida.


Muayyan dastur shaxsiy kompyuterga o`rnatilib ishga tushirilganidan so`ng u Operatsion Sistema(OS) ga biror algoritm asosida ketma-ketlik va bog`liqlik bilan buyruqlarni berib boradi, OS esa uni tartib bo`yicha bajaradi. Bi shu algoritmni kompyuterga biror bir til orqali izohlab kiritamiz. Bu til esa dasturlash tili deyiladi. Dasturlash tillari juda ko`p, ammo barcha tillar oxirida yagona tilga o`giriladi, tarjima qilinadi (translation), bu til Assembler tilidir. Assembler tili - mashina tiliga eng yaqin til, ya`ni mashinaga to`g`ridan-to`g`ri buyruq beradigan til. E`tibor bering OS ga emas, mashinaga buyruq beradigan til deb tushuntirildi. Bu tarjimani OS yoki biror dastur amalga oshirishi mumkin. Assembler dasturlash tili juda ham murakkab til bo`lganligi sababli uni o`rganish, o`rgatish juda kam uchraydi. Shu Assembler tilininig ustiga boshqa dasturlash tillari yozilgan va ular foydalanishga ancha qulay bo`lganligi sababli hozirgi vaqtda ancha ommalashib, rivojlanib bormoqda...

Zamonaviy dasturlash tillari C, C++, C#, Java, Php, ...

C, C++ dan biror bir service(kompyuterda ishga tushirilganda kerakli natijani qaytaruvchi dastur), driver(texnik qurilmalar va OS ni buyruq va ma`lumotlarni almashib turishini ta`minlovchi dastur), mikrosxemalarga dastur yozganda(robotlashtirish, avtomatlashtirish) va  kuchli matematik amallar yozganda keng foydalaniladi.
Java va C# dan foydalanuvchilar uchun dastur yoki saytlar tuzishda qo`llaniladi. C# dasturlash tili Java dan imkoniyatlari tomonidan ancha oldinlab ketgan, ammo faqat Windows OS da ishlaydi xolos. Java esa har qanday sistemada ishlayveradi. Undan tashqari C# ni o`zi ham, unda tuzilgan dasturlarni ishlatilishi uchun o`rnatiladigan qobiq dasturlar ham pullik, Java da esa tekinlari ham bor.... Xavfsizlik va tezlik tomoni muhim bo`lgani sababli bunga ham e`tibor qaratish lozim. Windows OS muhitida C# har tomonlama kuchliroq ammo Linux OS da esa C# ishlamaganligi sababli taqqoslay olmaymiz. Windows va Linux OS larni taqqoslaydigan bo`lsak - Windows shaxsiy kompyuterlarda foydalanish ma`qulroq, chunki server versiyasi Linuxdan har tomonlama orqada qoladi. Shu sababli Java da katta va xavfsizligi o`ta muhim bo`lgan saytlar yoziladi. Sabab Javada emas, OS da bo`lganligi sababli... Yaqinda C# ham platforma tanlamaydigan bo`lib chiqmoqda, ko`ramiz natija qanaqa bo`ladi endi...
PHP - kichik saytlarni, web sahifalarni, tezda bitkazilishi kerak bo`lgan ma`lumotnoma,reklama saytlarini tuzish uchun foydalaniladigan dasturlash tili....

Dasturlash tillarida xotira tushunchasi

Dastur ishlashi uchun xotira eng muhim subyektlardan biri, chunki xotirasiz hech narsa ishlamaydi, biror amal bajarishda faqat xotiradagi qiymatlar ustida amal bajariladi, xotirada bo`lmagan narsalarni dasturlash tillari xato deb hisoblaydi. Demak har bir foydalanmoqchi bo`lgan qiymatimizni avval xotiraga olib keyin foydalanar ekanmiz.
2 xil xotira mavjud. Dinamik(Dynamic) va Statik(Static) xotira turlari.
Statik xotira chegaralangan va u to`lgan sari dasturning ishlash tezligi pasayishi mumkin. Dinamik xotira esa chegaralanmagan va undan foydalanishda bizda imkoniyatlar mavjud. Statik xotirada e`lon qilingan(saqlangan) qiymat statik xotiraning o`zida saqlanadi. Dinamik xotirada saqlanganda esa qiymatning o`zi keng maydondek tasavvur qilinadigan dinamik xotiraga va uning manzili esa statik xotirada saqlab qo`yiladi. Shu tufayli katta ma`lumotlar bilan ishlaganda ham statik xotirani tejab foydalanamiz. Dinamic xotirada e`lon qilingan o`zgaruvchi o`chirib yuborilsa statik xotiradagi dinamik xotiraning adresi o`chiriladi ammo dinamik xotiradagi qiymat qolib ketadi. Bir nechta shu kabi holatlar yuzaga kelsa dinamik xotirada keraksiz ma`lumot qolib ketadi, buni ham tozalashga to`g`ri keladi. C++ da bularni dasturchining o`zi hisobga olib tozalab ketishi lozim, Java,C# da esa hisobga olingan va avtomatik ravishda ro`y beradi (Garbage Collect algoritmi asosida chiqindilardan tozalab turiladi) . Ya`ni har bir blok yopilishida o`sha blok ichidagi chiqindilar tozalab ketiladi. Demak dinamik xotirada biror qiymat o`zgartirilsa statik xotiradagi qiymat(ya`ni dinamik xotiradagi qiymatning manzili) o`zgartirilmasdan dinamik xotiradagi qiymat o`zgartirib qo`yiladi.

Tizimli va Obyektga yo`naltirilgan dasturlash tillari.

Biz yuqorida dasturlash tili deganda qisqacha ma`lumotga ega bo`ldik. Demak algoritmlarni biror bir qonuniyat bo`yicha kompyuterga bajarishi uchun buyruqlar asosida izohlab beriladigan til - dasturlash tili. Dasturlash tillari insonlar kashf qilinganida tizimli dasturlash bo`lgan xolos. Hisob-kitob, qo`shish-ayirish va shunga o`xshash oddiy narsalar bo`lgan. Obyekt tushunchasi bo`lmagan. Faqat biror bir ma`lumotni saqlab undan foydalanish bo`lgan xolos. Bular Tizimli dasturlash deyilgan.

Undan so`ng dasturlar rivojlangan va ba`zi dasturlar murakkab dasturning bir qismi(funksiyasi) bo`lib qolgan. Shunda funksiya kiritilgan, undan so`ng to`plamlardan foydalanishga ehtiyoj sezilgan. Qaysidir bir ma`lumotlar to`plamini biror tipga tegishli deb shunaqa to`plam hosil qilish fikrini ilgari surib struct, class tushunchalari kiritilgan. Struct(struktura) Class(klass)dan biroz oldinroq kiritilgan va OOP ga aloqasi yo`q. Struct bilan Class ning farqini ko`rishda Tizimli va OOP ni farqini bilib olamiz.

Saturday, March 1, 2014

Windwos OS da Maven qanday o`rnatiladi?

  Maven nima?
  -----------
  Maven - dastur strukturasini boshqaruv uskunasi. Unda Project Object Model(POM)
  tushunchasi mujassamlashgan. Maven projectning build strukturasini boshqara oladi.
  Shuningdek ma`lumotlarning markaziy bo`limidan xabar va ma`lumotlar bilan tanishamiz:

   Ma`lumotlar
  -------------
  Eng oxirgi ma`lumotlar va yangiliklarni http://maven.apache.org/ saytidan olamiz.

  O`zgarishlar
  -------------
  Barcha o`zgarishlar va yangilanishlar ro`yxatini http://maven.apache.org/release-notes.html saytidan
  ko`ramiz.

Apache Maven Windows OS da o`rnatishni talab qilmaydigan service componenti, siz internetdan Maven ning zip formatdagi arxiv faylini ko`chirib olib kompyuteringizda arxivdan chiqarasiz va "Windows environment path variable" ni configuratsiya qilasiz.

Quyidagilardan foydalanilgan:




  • JDK 1.6
  • Maven 2.2.1
  • Windows 7
  • P.S: Shuningdek Maven 3 dan foydalanilgan.


    JDK va JAVA_HOME

    JDK o`rnatilganligiga ishonch hosil qilib "Windows environment path variable" ga JAVA_HOME va MAVEN_HOME parametrlarini qo`shiladi.
    JAVA_HOME - JDK ning manzili
    MAVEN_HOME - Maven papkasining manzili



    So`ng shu yerda PATH parametriga Maven papkasining bin catalogini ham qo`shib qo`yish zarur.


    Bu ketma-ketliklarni tartib bilan bajarganingizdan so`ng, maven sizning mashinangizda o`rnatildimi yo`qmi quyidagi komanda bilan tekshirib ko`rasiz. mvn –version“. 
    C:\Documents and Settings\mkyong>mvn -version
    Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
    Java version: 1.6.0_13
    Java home: C:\Program Files\Java\jdk1.6.0_13\jre
    Default locale: en_US, platform encoding: Cp1252
    OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
    Agar shunga o`xshash natija qaytarsa demak bu muvaffaqiyatli yakunlanganligini bildiradi.