Sunday, 20 March 2016

boolean хувьсагч ба Логик Оператор

Хувьсагчийн boolean төрөл
Өмнөх хичээлээр салаалсан алгоритмын тухай үзсэн. >,<,==,<=,>= эдгээр жиших операторуудыг мэддэг болсон байх. Эдгээр операторуудыг хоёр тоог(өөр зарим хувьсагч класс байж болно) жишихэд ашигладаг ба бодоод гарсан хариу нь true юмуу false ("үнэн" "худал") аль нэг нь байна.

Бид өмнө нь хувьсагчийн тоон төрөлүүдийг үзсэн. long, int, short, float, double гээд
Яг үүнтэй адилаар boolean төрөл гэж байх ба энэ нь өөртөө сая дурдсан true,false гэсэн хоёр утгын аль нэгийг хадгалах 1 bit ийн санах ойг нөөцлөнө. Жишилт хийгээд гарсан хариуг boolean хувьсагчид хадгалж болно. Учир нь жишилтээс гарсан хариу true,false гэсэн утгууд байдаг. Бас if үйлдэлдээ ч хэрэглэж болно (хэрэв boolean хувьсагчид true утга хадгалагдсан байвал үнэнд харгалзах үйлдэл хийнэ үгүй бол else д байгаа үйлдлийг хийнэ).

Хариу нь "unen" гэж хэвлэнэ.












Логик оператор
Тоог хоёр оронтой эсэхийг шалгах дараах програмыг авч үзье.







Ийм байх нь мэдээж. Тэгвэл логик операторын гол зорилго нь олон давхар if нөхцөл ашиглахгүйгээр шийдэлд хүрэх явдал юм.
Гурван төрлийн логик оператор байна
&& - and
|| - or
!  - not

Логик AND (ба)
(boolean)&&(boolean) гэсэн хэлбэртэй байх ба гол санаа нь хоёр талд байгаа boolean утгууд хоёул үнэн үед ерөнхий хариу үнэн байна бусад үед худал гарна гэсэн үг юм. (a>b) гэдэг чинь хариу нь boolean гарна тиймээс (жишилт)&&(жишилт) байж болно.

Манай жишээнд тоо>9 ба 100>тоо  гэсэн хоёр нөхцөл хоёул үнэн байсан тохиолдолд үнэн хариу гарж байх ёстой. Тэгвэл дараах байдлаар бичиж болно.





Логик OR (эсвэл)
(boolean)&&(boolean) гэсэн хэлбэртэй байх ба гол санаа нь хоёр талд байгаа boolean утгуудын аль нэг нь үнэн байвал ерөнхий хариу үнэн гараад бусад үед худал гарна гэсэн үг юм.

Тоог хоёр оронтой биш байвал үнэн гэж гаргадаг алгоритм байж болно.
Тэгвэл 10>number аль эсвэл 99<number үед үнэн гэж гарч байх ёстой.







Логик NOT (биш)
!(boolean) гэсэн хэлбэртэй байх ба гол санаа нь ардаа байгаа boolean утгыг эсрэгээр нь солих юм.
Тоог сондгой эсэхийг шалгах алгоритмыг авч үзье.
number%2==0 энэ жишилт нь number тэгш байвал үнэн гэж гарна. тэгвэл 
!(number%2==0) гэвэл эсэргээр шалгана.







Жишээ:

Эдгээрийг хольж хэрэглэж болно.
2 сарын 29 ыг өндөр жил гэж нэрлэдэг. Тухайн оноосоо хамаарч өндөр жил байх эсэх нь тооцогддог. Тухайн жил 400д хуваагддаг эсвэл 4т хуваагдаад зууд хуваагддаггүй байвал тэр жилийг өндөр жил гэж тооцно. 








Жишээ нь year = 1800 гэж оруулъя. (year%400==0) юм уу ((year%4==0) && !(year%100==0))
гэсэн хоёр нөхцөлийн аль нэг үнэн байвал өндөр жил гэсэн үг. 400 д хуваагдахгүй учир эхнийх худал гарна. Дарачийх нь (year%4==0)  эсвэл  !(year%100==0) энэ хоёр үнэн байж байж үнэн гарна. 4, 100 д хоёуланд хуваагдах тул ((year%4==0) && !(year%100==0))  ий хариу худал гарна. (year%400==0) ээс ч худал гараад ((year%4==0) && !(year%100==0))  ээс ч худал гарсан учир ерөнхий хариу худал гэсэн үг. 1800 он өндөр жил биш байхнээ.




Sunday, 6 March 2016

Getting Started With Java

Анхныхаа хичээлийг үүгээр эхэлж байгаад баяртай байна. Юун түрүүнд Жава хэлний үүсэл хөгжил, онцлог давуу талуудын тухай цухас дурдах нь дээр болов уу.

Жава хэл нь өнөө үед түгээмэл хэрэглэгдэх болсон обьект хандлагат програмчлалын хэл юм. 1991 онд анх James GoslingMike Sheridan, and Patrick Naughton нар анх Жава хэлийг хөгжүүлэх үндэсийг тавьж байжээ. Gosling ажлынхаа газарын ойролцоо байдаг Oak гэж модны нэрээр анх нэрлэсэн байж, дараагаар нэрийг нь Индонезийн нэгэн аралын Жава коффений нэрээр нэрлэх болсон байна.

Жава бол обьект хандлагат хэл. Анх үүсэн бий болохдоо WORA буюу  "write once, run anywhere" нэг бичээд хаана ч ашигла гэсэн зорилготой үүсч байсан гэдэг.

Жавагийн давуу талууд:
  • Обьект Хандлагат:
    • Энэ бол програм бүтээх нэгэн төрөлийн арга технологи юм. Өмнөх үеийн програмчлалын аргуудаас хамаагүй хялбар, ойлгомжтой, сурхад хүртэл дөхөм байдаг. Класс, удамшил ороод эхэлхээр ойлгомжтой болно.
  • Платформоос үл хамаарсан
    •  Жавагийн кодыг нэг компайлдаад  аль ч платформ үйлдлийн системүүдэд ажиллуулж болдог. Иймээс та бүхэн Жаваг сурчихвал windows, Unix, Mac ын алийг нь ч програмчлаж чадахтай боллоо л гэсэн үг
  • Энгийн
    • C,C++ ийг бодоход маш энгийн бичиглэлтэй, Обьект хандлагат ухагдхуунуудаа мэдэж байхад л бараг болоод явчихна
  • Авсаархан
    • Жавагийн хоёртын код маш бага хэмжээтэй үүсдэг.
  • Хурдан 
    • Си г ч яагаад ч гүйцэхгүй л дээ гэхдээ JIT компайлер нь нэг их удаад туйлдаад байдаггүй
  • Нээлттэй
    • Жава нь албан ёсоор Oracle аас үнэгүй эх кодтойгоор түгээгддэг.
Жавагийн анхны хувилбар нь 1996 онд JDK 1.0 байсан ба сүүлд 2014 онд Java SE 8 хувилбар нь гарсан байна. Java version history

HELLOWORLD

Жавагийн үүсэл хөгжилийн тухайд гэвэл ийм байна. Одоо HelloWorld програмаа бичицгээе энэ програм нь дэлгэцэнд Hello World гэж харуулах зорилготай. HelloWorld ийг бичихгүй бол тухайн хэлээ сурдгүй гэсэн мухар сүсэг яваад байдаг үнэн ч байж мэднэ шүү.

Энэ линкээр орж Жава пакетийг татаж авна уу  http://javadl.oracle.com/webapps/download/AutoDL?BundleId=116038

1. Install >

2. Уншуулж дуусгаад C:\Program Files\Java гэсэн фолдер үүссэн байгаа. Хүн хүний компьютер адил биш болохоор C ээс өөр дискэнд ч үүссэн байж болно. 
3. jdk1.8.0_45 фолдер бол Jаva Development Kit буюу Жавагийн хөгжүүлэлт хийхэд зориулсан багц нь энэ хэсэгт суусан байдаг. Бидний татаж авсан хувилбар нь сүүлд гарсан 1.8 хувилбар юм.

Жава гэхээр Eclipse програмыг ашиглаж хийдэг гэсэн нэг буруу ойлголт яваад байдаг. Үнэндээ Eclipse бол NotePad тай л адил text editor юм.

4. Одоо хэдүүлээ сонирхолтой юм хийнэ.

За энэ бол бидний анхны програмын эх код байна.Үүнийг хараад бүү цочирдоорой танд бараг л Англи хэлний үгсийн сангаас дураараа хэдэн үг сонгоод энд тэнд холиод тавьчихсан юм шиг санагдаж байгаа байх. Бид нарийвчлан үзэх болно

5. Үүнийгээ хэдүүлээ Desktop доо хадгалцгаая.

Заавал HelloWorld.java гэж хадгалаарай.  (java гэсэн өргөтгөлтэй байх ёстой шүү)

6. За одоо та Windows 7 хэрэглэж байгаа бол Start->All programs->Accessories->Command Prompt
   Windows 8 эсвэл 10 бол cmd гээд хайгаад орчих

7. За тэгэнгүүт нэг хар дэлгэц гараад ирж байгаа байх. Энэ бол Windows ийн комманд удирдлагын хэсэг юм (Mac OS тэй бол terminal гэж хайгаарай). Бид үүндээр эх кодоо боловсруулж програмаа гаргаж авах юм. Eclipse ийн цаана юу болж байгааг бид ердөө ч мэддэггүй. Эхний хичээл дээр Eclipse, NetBeans зэрэг ямар хялбар програмуудаас зайлс хийхийг хичээлээ.

Ямартай ч cd гээд биччих

8. Одоо нөгөө Desktop дээр хадгалсан HelloWorld дээрээ очоод баруун mouse аа дараад properties руу оронгуут Location гэсэн хэсэг байгаа энд эх кодны маань зам байрлах ба cd гэснийхээ ард нэг зай аваад хуулж бичээд Enter дар



9. Windows PATH гэсэн хувьсагч байдаг. Энэ нь програм агуулсан фолдеруудын замыг хадгалдаг. Иймээс Жавагийнхаа компайлер дебаггер агуулсан замаа үүнд нэмэж хэрэгтэй. Саяны татаж аваад суулгасан JDK 1.8 ийн bin гэсэн фолдер юм. Миний компьютерт
 C:\Program Files\Java\jdk1.8.0_65\bin  гэсэн замд байна. Ороод үзвэл exe файлууд бий
За одоо нэмэхдээ PATH=%PATH%;саяны зам гэсэн командыг өгөөрэй



За ингээд PATH хувьсагчдаа нэмээд өгч байгаа нь энэ юм. Шалгая гэвэл path гэж бичээд харангуут хамгийн сүүлд нь нэмэгдсэн байгаа.

10. За одоо наанаа java - version гээд бичээд үзвэл Жавагийн аль хувилбар байна гэдэгийг харуулна. Одоо зорилгоруугаа оръё javac гэдэг командаар Жава кодыг компайлддаг(кодыг програм болгохыг хэлж байгаа юм). Тэгвэл одоо HelloWorld.java аа Компайлдъя үүний тулд
javac HelloWorld.java  гэхэд л болох юм.


Ингээд ямар нэг алдааны мэдээ гарахгүй бол та амжилттай хийлээ гэсэн үг Desktop оо шалгавал HelloWorld.class файл үүссэн байгаа энэ бол бэлэн болсон програм юм.

11. Одоо ажилуулах үлдэх шив. Бэлэн болсон Жава програмыг ажиллуулахдаа java командыг хэрэглэнэ. java HelloWorld  гэж бичнэ. Нөгөө HelloWorld.class файлыг ажиллуулж байна гэсэн үг
 
За ингээд програм маань ажилчихлаа

Дараагийн хичээлээр Eclipse татаж суулгаад тоон өгөгдлийн төрөл, арифметик оператор, тэдгээрийн жишээг үзэцгээнэ.

Алгоритм гэж юу вэ ?

Алгоритм гэж юу вэ ?

За тэгэхээр би бөөр 0 ээс нь эхэлсэн нь дээр гэж бодож байна. Юун түрүүнд та бүхэн заавал Java,  Eclipse энэ тэрээ суулгахын урьдаар Алгоритмын тухай ойлголттой болсон нь дээр болов уу. 

Алгоритм гэдэгийг хүмүүс янз бүрээр л ойлгож байна үнэндээ энэ маань их энгийн ойлголт юм. Үүнийг ердөө аливааг хийж гүйцэтгэх нарийвчилсан дараалал гээд л ойлгочих. Алгоритмыг хүн эсвэл машин (компьютер) гүйцэтгэдэг. Цай чанахад хүртэл тодорхой алхамууд бий 

1. Данхандаа усаа хийлээ
2. Плетгэндээ тавьлаа
3. Идээгээ хийлээ давсаа хийлээ
4. Буцалгалаа
5. Хар цай боллоо уулаа

Энэ чинь л нэг Алгоритм.
Тэгэхээр өнөөгийн бүхий л робот, машин, электрон хэрэгсэл, програмууд нь Алгоритмын дагуу үйл ажиллагаагаа явуулдаг. Саяхан нэг робот гарсан байна лээ маршрутыг нь заагаад өгчихөд өөрөө явчихдаг. Энэ бас л нэг жишээ юм.

Тэгэхээр харин яаж компьютерээр энэ алхамт дарааллуудыг хийлгэх вэ гэдэгийг л бид эхний ээлжинд судлах юм. 

Бага зэрэг онолын түвшиний ойлголтуудыг ярья. Ер нь нэг их онол гээд байх зүйл Алгоритмд байхгүй.
Алгоритм салаалсан байж болно: 
       Энэ бол их энгийн ойлголт. Цай чанах алгоритмаа ахиад аваад үзье
       Эхлээд данхандаа усаа хийлээ дараа нь Плетгэндээ тавьлаа дараагийн алхам
       цайныхаа идээг хийх гэж байна тэгсэн дуусчихаж. Тэгэхээр нэг жүжигэнд гардаг даа
       "энэ зам нь дотроо хоёр салаа замтай" гээд л яг энэ шиг эхний алгоритмаар явах
       гэсэн чинь идээ дууссан гэсэн нөхцөл бичигдээгүй байна. Иймээс алгоритм хоёр 
       салаа замтай байж болох юм.


Алгоритм давталттай байж болно:
     Энэхүү чанар нь өнөөгийн техник технологийг гайхалтай болгож байгаа ганц зүйл ч байж мэднэ. Аливаа нөхцөлийг биелэх хүртэл нь өмнөхөө давтаж хийдэг чанар юм. Хажуугийн зургийг харж байгаа байх цайгаа тавьчихаад минут хүлээлээ доор байгаа гурвалжин дахь асуултанд очоод эхний ээлжинд худал гэж гараад ахиад минут хүлээнэ "Цай буцалсан уу ? " гэсэн асуултанд үнэн гэж хариулах хүртэл  давтаад байна гэсэн үг энэ чинь л давталт. Роботд яг энэ маягаар л юу хийхийг зааж өгөх юм даа.

Нэг сонирхолтой юм ярихад хэрвээ утасний PIN кодыг хэдэн ч удаа хийж болдог байсан бол давталтыг ашиглаад 0000 ээс 9999 хүртэл боломжит хувилбаруудыг компьютерээр шалгуулаад кодыг гаргаж авч болох байсан. Фэйсбүүкийг ч бас тэгж болно гэхдээ энэ бол хэтэрхий муйхар арга юм. Үүнийг brute force attack гэж нэрлэдэг. AI буюу хийсвэр оюун ухааныг сүүлийн үед түлхүү судлах болсон. Видео тоглоомонд баатрууд нь өөрсдийн оюун ухаанаар хөдлөөд байдаг үүний цаана бас л алгоритм байгаа шүү дээ. Алгоритмын хэрэглээний тухай ярьвал маш их зүйлийг хэлж болно.

Ямартай ч та бүхэн эхний ээлжинд Алгоритм гэж юу байдаг талаарх ерөнхий ойлголт авсан байх гэж бодож байна.