ສະບາຍດີ ມື້ນີ້ເຮົາຈະມາເລີ່ມຮຽນຂຽນໂປຣແກຣມຢ່າງຈິງໆຈັງ ຫຼັງຈາກທີ່ໄດ້ກ່າວພາເພີນມາຫຼາຍບົດຄວາມ, ກ່ອນທີ່ເຮົາຈະກາຍໄປເປັນຊ່ຽວຊານທາງດ້ານຂຽນໂປຣແກຣມ ເຮົາຈະຕ້ອງໄດ້ມາເລີ່ມສຶກສາເຖິງພື້ນຖານຂອງການ ຂຽນໂປຣແກຣມກ່ອນ ຫຼືພາສາອັງກິດເອີ້ນວ່າ Basic.
ເອົາລະບາດນີ້ແອັດມິນຂໍເວົ້າເລື່ອງພື້ນຖານ ຂອງການຂຽນໂປຣແກຣມຂອງທຸກໆພາສາ ມັນຈະຄືກັນ(ຕ່າງແຕ່ syntax) ມັນຄືກັນຢູ່ບ່ອນໃດ? ຄືກັນຢູ່ບ່ອນຮູບແບບໃນການດຳເນີນເລື່ອງ, Strategic, Logic… ຕົວຢ່າງເຊັ່ນ ທຸກໆພາສາຈະມີ ຊະນິດຂອງຂໍ້ມູນ (Data type), ທຸກໆພາສາ ຈະມີ ວິທີການຕັດສິນໃຈເຮັດວຽກ (Decision Making) ວ່າຫາກເຮົາເລືອກທາງ A ແລ້ວຜົນລັບອອກມາເປັນ C ຫຼືຈະໄປເລືອກທາງ B ແລ້ວຜົນລັບອອກມາເປັນ D, ຈະມີເລື່ອງ ການເຮັດວຽກແບບວົນຊ້ຳ (Loop), ເຊີ່ງອັນທີ່ເວົ້າມານີ້ເປັນພຽງສ່ວນໜື່ງເທົ່ານັ້ນ.
ເຮົາຈະເຫັນໄດ້ວ່າ ເຮົາບໍ່ຕ້ອງໄປກັງວົນໃນການເລືອກໃຊ້ພາສາຫຼາຍ ຂໍພຽງແຕ່ເຂົ້າໃຈແລະຈັບທາງ ໃຫ້ໄດ້ກໍ່ພໍ, ແລະ ຮູ້ວ່າຈະຕ້ອງໃຊ້ ວິທີການໃດ ໃຫ້ເໝາະສົມກັບໂປຣແກຣມເຮົາ ຍົກຕົວຢ່າງເຊັ່ນ ເຮົາໄດ້ໂຈດມາວ່າ ຮ້ານຂາຍໝາກກ້ຽງ ຂາຍໜ່ວຍລະ 1500, ແຕ່ຖ້າຊື້ 10 ໜ່ວຍ ຂື້ນໄປໄລ່ໜ່ວຍລະ 1000, ສົມມຸດ ໄດ້ໂຈດມາແບບນີ້ ເຮົາຈະເຮັດໂປຣແກຣມແນວໃດເພື່ອມາຈັດການການຂາຍຂອງພວກເຮົາ ເຊີ່ງແນ່ເຮົາຕ້ອງໄດ້ມີ ການຕັດສິນໃຈເຂົ້າມາຊ່ວຍ.
ສະນັ້ນເຮົາຈະຄ່ອຍເປັນຄ່ອຍໄປກ່ອນໂດຍເລີ່ມຈາກອັນທີ່ນ້ອຍທີ່ສຸດ, ໃນມື້ນີ້ ແອັດມິນຊິມາເວົ້າ ເລື່ອງຂອງ “ຕົວປ່ຽນ” ເຊີ່ງຖ້າເຮົາເວົ້າເລື່ອງ ຕົວປ່ຽນ ແລ້ວມັນກໍ່ຂາດບໍ່ໄດ້ທີ່ຈະຕ້ອງເວົ້າເຖິງ ຊະນິດຂອງຂໍ້ມູນ.
ຕົວປ່ຽນແມ່ນຫຍັງ? ສຳລັບຄຳວ່າຕົວປ່ຽນມັນເປັນແນວຄິດພື້ນຖານຈາກ ຄະນິດສາດ ຍົກຕົວຢ່າງສົມຜົນ
ເຮົາເຫັນວ່າ ຕົວປ່ຽນ ມັນຊິແມ່ນອັກສອນຫຍັງກະໄດ້ ບໍ່ຈຳກັດວ່າຈະມີແຕ່ໂຕດຽວຫຼື ສິບໂຕ (ຂໍແຕ່ບໍ່ໃຫ້ໄປໃຊ້ຄຳສັບສະຫງວນກໍ່ພໍ) ແຕ່ໜ້າທີ່ຫຼັກໆຂອງມັນແມ່ນເກັບ ຜົນລັບບາງຢ່າງ ທີ່ຖືກປະມວນຜົນ ຫຼື ຄິດໄລ່ ຫຼື ຈະເປັນການປ້ອນຜົນລັບນັ້ນໃສ່ໂດຍຕົງ ໄວ້ ແລ້ວລໍຖ້າການເອີ້ນໄປໃຊ້ ຫຼື ສະແດງຜົນ, ເຊີ່ງຕົວປ່ຽນ ເປັນພາກສ່ວນທີ່ເອີ້ນວ່າເຫັນຕະຫຼອດ ໃຊ້ຕະຫຼອດ ສະນັ້ນ ຕົວປ່ຽນຈະມີຫຼາຍ ຮູບແບບ ຫຼາຍຊະນິດ.
ຍົກຕົວຢ່າງ ການໃຊ້ຕົວປ່ຽນ ແນ່ນອນລະ C = 15
ເມື່ອເຮົາໄດ້ທຳການຮູ້ຈັກກັບຕົວປ່ຽນແລ້ວ ເຮົາກໍ່ຈະມາເຈາະເລິກລົງໄປເຖິງ ວິທີການນຳໃຊ້ ວິທີການປະກາດ ແລະ ຊະນິດຂອງຂໍ້ມູນ
ຊະນິດຂອງຂໍ້ມູນ ຊະນິດຂອງຂໍ້ມູນມີຫຼາຍ ແຕ່ຖ້າເຮົາຈະແຍກເປັນກຸ່ມໃຫຍ່ໆໄດ້ດັ່ງນີ້
1. Value Type: ເຊີ່ງເຮົາກໍ່ຈະມີແຍກຍ່ອຍລົງໄປອີກວ່າ ໃນ Value Type ປະກອບໄປດ້ວຍ
- Primitive types: ສຳລັບປະເພດຂໍ້ມູນແມ່ນຮູບແບບເກົ່າແກ່ທີ່ທຸກພາສາມີ ໄດ້ແກ່ ພວກຂໍ້ມູນຕົວເລກ (int, float, double, long…), ຂໍ້ມູນແບບ ໂລຈິກ (Bool), ຂໍ້ມູນພວກໄບນາຣີ (Byte), ຂໍ້ມູນພວກຕົວອັກສອນ (Char)
int a = 10;
bool active = true;
char b = ‘b’;
- Enumerations: ສຳລັບຂໍ້ມູນປະເພດນີ້ແມ່ນເຮົາສາມາດກຳໜົດສະມາຊິກໄດ້ເອງເຊິ່ງມັນຈະມາພ້ອມກັບ ເລກກຳກັບສະເໝີ, ພົບເຫັນສ່ວນຫຼາຍ ໃນການໄວ້ເກັບ ສະຖານະ (Status) ຫຼືຂໍ້ມູນທີ່ຕ້ອງໄດ້ເອີ້ນໃຊ້ຕະຫຼອດ
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
Days today = Days.Monday;
int dayNumber =(int)today;
Console.WriteLine(“{0} is day number #{1}.”, today, dayNumber);
ຜົນລັບ: Monday is day number #1
- Structures: ສຳລັບຂໍ້ມູນປະເພດນີ້ແມ່ນເຮົາສາມາດ ເອົາຂໍ້ມູນປະເພດຕ່າງໆມາໄວ້ໃນບ່ອນດຽວໄດ້, ເຊີ່ງມັນຈະດີຫຼາຍໆ ໃນການຊ່ວຍຈັດການເລື່ອງ Input ແລະ Output ຂອງໂປຣແກຣມ ເຊີ່ງແອັດມິນຈະຂໍ ອາທິບາຍໃຫ້ເຫັນເປັນຮູບເປັນຮ່າງໃນຫົວຂໍ້ກ່ຽວກັບ Class ຕື່ມອີກ
2. Reference types: ປະກອບໄປດ້ວຍ
- Classes: ສຳລັບຂໍ້ມູນປະເພດນີ້ ແມ່ນເຮົາເຮັດໄດ້ທຸກຢ່າງເລີຍ ນັບຕັ້ງແຕ່ເຮັດເປັນ ບ່ອນເກັບຜົນລັບ, ສ້າງ function, method ມາໄວ້ປະມວນຜົນ ໆລໆ
- String: ແມ່ນຊະນິດຂໍ້ມູນປະເພດຂໍ້ຄວາມ ເປັນປະໂຫຍກ ຫຼື ອັກສອນ ໄດ້ໝົດ
- Interface: ມັນແມ່ນ Class ຊະນິດໜື່ງ ເຊີ່ງເຮົາຈະຂຽນ Method ເປົ່າໆປະໄວ້ ແລ້ວໃຫ້ໄປຂຽນ ການປະມວນຜົນຢູ່ຝັ່ງທີ່ຕ້ອງການເອີ້ນໃຊ້, ຂໍ້ດີຂອງມັນແອັດມິນມັກຫຼາຍເພາະມັນຈະຊ່ວຍໃຫ້ນັກພັດທະນາ ອອກແບບ Class ທີ່ເປັນກາງ ແຕ່ມີຄວາມແຕກຕ່າງກັນທີ່ໜ້າທີ່ການເຮັດວຽກໄດ້ ຕົວຢ່າງເຊັ່ນ: ເຮົາຕ້ອງ ການເຊື່ອມຕໍ່ໄປຍັງ API ເຮົາກໍ່ສາມາດຂຽນ Interface ທີ່ມີ Method ທີ່ຕ້ອງເຊື່ອມ, ແຕ່ຈະເຊື່ອມກັບ API ຕົວໃດນັ້ນກະຂື້ນກັບທາງຝັ່ງເອີ້ນໃຊ້ໄປຈັດການ
- Array: ແມ່ນຊະນິດຂໍ້ມູນທີ່ເກັບກັນເປັນຊຸດ ແລະ ມີການເຂົ້າເຖິງຂໍ້ມູນຕາມລຳດັບ ທີ່ເຂົາເຈົ້າຮ້ອງວ່າ Index ເຊີ່ງ Index ນີ້ຈະເລີ່ມຈາກ 0 (Zero base)
- Delegate: ສຳລັບຕົວນີ້ ແອັດມິນກະຍັງສັບສົນ ແຕ່ກະພໍຊິອາທິບາຍໄດ້ຢູ່, delegate ແມ່ນເຮົາຈະໃຊ້ໄວ້ ເອີ້ນໃຊ້ Method ທີ່ມີ ພາຣາມີເຕີ ຫຼື ຄ່າ Return ຄືກັນ ຫຼື ຊິເອົາໃຫ້ເຂົ້າໃຈງ່າຍໆ ກະແມ່ນເຮົາໃຊ້ Delegate ເພື່ອເປັນຕົວແທນ (invoke) ໃນການເອີ້ນໃຊ້ Method ອື່ນ ເຊີ່ງມັນຈະຕ້ອງມີເງື່ອນໄຂທີ່ຄືກັນ ບໍ່ວ່າຈະເປັນ parameters ທີ່ຖືກສົ່ງມາ ຫຼື ຄ່າທີ່ຈະ Return ອອກໄປ, ແລ້ວປະໂຫຍດຂອງມັນເດ ໃຊ້ໄວ້ເພື່ອຫຍັງ, ມັນສາມາດເຮັດ Call back ໄດ້ (ແລ້ວຈະອາທິບາຍພາຍຫຼັງວ່າ Call back ຈຳເປັນຕອນໃດ)
using System;
delegate void MyDelegate(string s);
class MyClass
{
public static void Hello(string s)
{
Console.WriteLine(” Hello, {0}!”, s);
}
public static void Goodbye(string s)
{
Console.WriteLine(” Goodbye, {0}!”, s);
}
public static void Main()
{
MyDelegate a, b, c, d;
// Create the delegate object a that references
// the method Hello:
a = new MyDelegate(Hello);
// Create the delegate object b that references
// the method Goodbye:
b = new MyDelegate(Goodbye);
// The two delegates, a and b, are composed to form c:
c = a + b;
// Remove a from the composed delegate, leaving d,
// which calls only the method Goodbye:
d = c – a;
Console.WriteLine(“Invoking delegate a:”);
a(“A”);
Console.WriteLine(“Invoking delegate b:”);
b(“B”);
Console.WriteLine(“Invoking delegate c:”);
c(“C”);
Console.WriteLine(“Invoking delegate d:”);
d(“D”);
}
}
ຜົນທີ່ໄດ້ຮັບ
Invoking delegate a:
Hello, A!
Invoking delegate b:
Goodbye, B!
Invoking delegate c:
Hello, C!
Goodbye, C!
Invoking delegate d:
Goodbye, D!
ສະຫຼຸບແລ້ວການນຳໃຊ້ຕົວປ່ຽນມັນສິໃຊ້ໄດ້ ກໍ່ຕໍ່ເມື່ອມັນມີຊະນິດຂອງຂໍ້ມູນຢູ່ນຳ ໝາຍຄວາມວ່າ ທຸກໆຕົວປ່ຽນຈະຕ້ອງມີ ປະເພດຂໍ້ມູນເປັນຕົວກຳກັບ ບໍ່ຊັ້ນ Compiler ຈະບໍ່ສາມາດແຍກອອກ ຕົວປ່ຽນໃດ ຄວນເອົາມາຄຳນວນ ຕົວປ່ຽນໃດ ເໝາະແກ່ການ ສະແດງຜົນ.
Data_type variable = default_value;
ແລະນີ້ກໍ່ເປັນການແນະແນວທາງໃຫ້ລອງໄປນຳໃຊ້ເບີ່ງ ໝັ່ນທົດລອງຂຽນ ທົດລອງສຶກສາເລື້ອຍໆ ຫາກຈະເທບເອງ ຖ້າຍັງມີບ່ອນໃດບໍ່ເຂົ້າໃຈ ຖີ້ມຄຳຖາມປະໄວ້ດຽວຫາກຊິມີຄົນມາຕອບໃຫ້
ປລ ຖ້າທ່ານຢາກອ່ານ ຫຼືຢາກໄດ້ຂໍ້ມູນລະອຽດ ແນະນຳໃຫ້ລອງເຂົ້າໄປ ອ່ານໄດ້ທີ່
ສຳລັບເລື່ອງ Delegate ແມ່ນ ເຂົ້າໄປ ບ່ອນນີ້ ຮັບຮອງລະອຽດສຸດ ຂອບໃຈທຸກທ່ານທີ່ອ່ານຈົບ ຖ້າມີບ່ອນໃດບໍ່ຖືກ ຫຼືຂໍ້ມູນມັນເກົ່າແລ້ວ ຕິຊົມກັນໄດ້ເລີຍ