Upload
truongbao
View
273
Download
9
Embed Size (px)
Citation preview
Lab 7 : แนะนำ�ภ�ษ� C# และสภ�พแวดลอม
ในปฏบตการนเราจะไดทดลองศกษาภาษา C# เบองตน สำาหรบคนทเคยเขยนภาษา Python มากอน การเรมตนโปรแกรมภาษา C# อาจจะดมพธรตรองมากสกนด แตสามารถทำาความคนเคยไดไมยากนก สำาหรบเครองมอทใชในการเขยนโปรแกรมนไดแก Sharp Develop (http://www.icsharpcode.net/opensource/sd/ )
โปรแกรม Sharp Develop เมอเรมตนใชโปรแกรม Sharp Develop เราจะเหนหนาตางลกษณะดงรปท
1
รปท 1 หนาตาง Sharp Develop เมอเรมตนทำางาน
ในภาษา C# จะเรยกวา Solution ในวชานเราจะไดเรยนการพฒนาโปรแกรมสองรปแบบคอ
1. แบบ Console หรอแบบทตดตอกบผใชผานทางตวอกษร
และ
2. แบบ Windows application หรอแบบทตดตอกบผใช
ดวยระบบหนาตาง
ในขนตอนแรกนเราจะเรมพฒนาโปรแกรมแบบ Console กอน
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (1)01204111 : Computer & Programming
ชอ......................................................รหสนสต......................................หม...............
1. โปรแกรมแบบ Console เราจะเรมสรางโปรแกรมโดยเลอกเมน File > New > Solution… หนาตาง New Project จะปรากฏขนดงรปท 2
ใหทำาตามขนตอนดงน1. ในสวน Categories ใหคลกเลอก C# และ Windows Applications2. ในสวน Templates เลอก Console Application3. ใหตงชอ (Name) ใหกบ Solution ในทนใหใช
ชอวา mech4. กด Create
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (2)01204111 : Computer & Programming
รปท 2 การเลอกประเภทของ Solution
อาจจะมคำาเตอนวาม Solution ชอนอยแลวเพราะวามการใชงานมากอน หากเกดขนใหกด “Overwrite” เพอให Sharp Develop เขยนทบของเกาเหลานน
เมอเราสราง Solution เรยบรอยแลว Sharp Develop จะแสดงหนาจอทพรอมใหเราแกไขและทดลองโปรแกรมดงรปท 3
รปท 3 หนาจอสำาหรบแกไขและตรวจสอบโปรแกรมของ Sharp Develop
เมอเรมตน ระบบ Sharp Develop จะแสดงโครงของโปรแกรมมาใหโดยอตโนมต เราสามารเขยนหรอแกไขโปรแกรมไดในชองตรงกลางหนาตาง และสามารถเรยกใหโปรแกรมดงกลาวทำางานไดโดยกดปม Run ( ) แบบฝกหดท 1 : ใหนสตลองกดปม Run จ�กนนบนทกผลลพธทไดว�เกดอะไรขนอย�งไร ถ�โปรแกรมทำ�ง�นค�งใหกดปมใด ๆ บนแปนพมพ
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (3)01204111 : Computer & Programming
สวน หรบเขยนโปรแกรมสำ�
ปม Run
1.1 โครงสร�งของโปรแกรมโครงของโปรแกรมท Sharp Develop สรางขนเปนตวอยางของโปรแกรม
ภาษา C# โดยทวไป ดงรปท 41:2:3:4:5:6: 7: 8: 9:
10:11:12: 13: 14: 15: 16: 17: 18: 19: 20:
/*
* หมายเหตของโปรแกรม ใชสำาหรบเขยนอธบายทวไป */using System;
namespace mech{ class Program { public static void Main(string[] args) { Console.WriteLine("Hello World!"); // TODO: Implement Functionality Here Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } }}
รปท 4 โครงสรางโปรแกรมเบองตน
โปรแกรมดงกลาวแสดงใหเหนเนมสเปส (namespace) คลาส (class) และเมธอด Main (ซงเปนเมธอดแรกทจะถกทำางานในโปรแกรมภาษา C#) ซงในเบองตนเราจะเรมตนเขยนโปรแกรมในสวนของ class เทานน ซงกคอเมธอด Main นนเอง ในสวนอน ๆ ใหนกเรยนคงไวดงเดมโดยเราจะอธบายในภายหลง
แบบฝกหดท 1.1.1 : Good morning teacher. จากโปรแกรมในรปท 4 ใหนกเรยนลบคำาสงในบรรทดท 12 – 17 ออกจากนนแทนดวยคำาสงเหลานConsole.WriteLine("Good morning teacher.");Console.WriteLine("How are you?");Console.WriteLine("I'm fine thank you, and you?");Console.ReadLine();
จากนนกด Run แลวบนทกผลทไดจากการทำางานของโปรแกรม
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (4)01204111 : Computer & Programming
สวนของ สวนของ class
สวนของเมธอด
แบบฝกหดท 1.1.2 : Good morning teacher again. จากโปรแกรมในแบบฝกหด 1.1.1 ใหนกเรยนแกไขคำาสง Console.WriteLine เปน Console.Write ผลทไดจากการรนโปรแกรมจะเปนเชนไร
จากแบบฝกหดท 1.1.1 และ 1.1.2 นกเรยนคดวาคำาสง Console.Write และ Console.WriteLine ใหผลการทำางานแตกตางกนอยางไร
แบบฝกหดท 1.1.3 : Console.ReadLine()จากโปรแกรมในแบบฝกหดท 1.1.1 และ 1.1.2 นนมคำาสง
Console.ReadLine(); อยในบรรทดสดทายของเมธอด Main ใหนกเรยนลองลบคำาสง Console.ReadLine(); ออกแลว แลวลอง Run โปรแกรม ผลทไดจากโปรแกรมเปนเชนไร
นกเรยนคดวาคำาสง Console.ReadLine(); มหนาททำางานเชนไร
1.2 โปรแกรมร�ค�สนค�ใหนกเรยนพจารณาโปรแกรมในภาษาไพธอนตอไปน
1:2:3:4:5:
name = input("Enter item's name: ")price = int(input("Enter item's price: "))pay = int(input("Enter the amount the customer pay: "))print(name,"price is",price)print("Customer pay", pay, ",change is", pay - price, "baht.")
โปรแกรมดงกลาวเปรยบเทยบกบโปรแกรมในภาษา C# ไดดงน1:2:
using System;namespace mech
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (5)01204111 : Computer & Programming
3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:
{class Program{
public static void Main(string[] args){ string name; int price, pay; Console.Write("Enter item's name: "); name = Console.ReadLine(); Console.Write("Enter item's price: "); price = int.Parse(Console.ReadLine()); Console.Write("Enter the amount the customer pay: "); pay = int.Parse(Console.ReadLine()); Console.WriteLine("{0} price is {1}",name, price);
Console.WriteLine("Customer pay {0},change is {1} baht.",pay,pay-price);
Console.ReadLine();}
}}
โปรแกรมขางตนดงกลาวแสดงใหเหนความแตกตางหลายประการระหวางภาษา C# และภาษา Python เราจะพจารณาสวนยอย ๆ ของโปรแกรมดงกลาว ดงน
บรรทด
คำ�สง คำ�อธบ�ย
8 - 9
string name;int price, pay; ในภาษา C# ตวแปรทกตวจะตองมการประกาศ
กอนการใชงาน ตวแปรหนงตวจะมแบบชนด (type) ทคงท นนคอจะเกบขอมลไดแบบชนดเดยวตลอดการทำางาน
10 Console.Write("Enter item's name:"); คำาสง Console.Write ทำาหนาทแสดง
ขอความออกไปหนาจอ
11 name = Console.ReadLine(); Console.ReadLine() ทำาหนาทอานคาจากผ
ใชแลวคนคานนเปนสตรง ซงในทนเรานำาสตรงนนเกบใสไวในตวแปร name อกท
12 Console.Write("Enter item's price: ");
คำาสง Console.Write ทำาหนาทแสดงขอความออกไปหนาจอ เชนเดยวกนกบคำาสงในบรรทดท 10
13 price = int.Parse (Console.ReadLine()); คำาสง Console.ReadLine() ทำาหนาทอานคา
จากผใชเปนสตรง คลายกบคำาสง input ใน
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (6)01204111 : Computer & Programming
ภาษา python ดงนนหากตองการคาเปนตวเลขจำานวนเตมจงตองมคำาสงแปลงชนดอกทซงในทนกคอคำาสง int.Parse คลายกบคำาสง int() ในภาษา python จากนนเกบตวเลขทไดไวในตวแปรชอ price
14 - 15
Console.Write("Enter customer pay: ");pay = int.Parse(Console.ReadLine());
ทำางานลกษณะเดยวกบกนคำาสงในบรรทดท 12 - 13
16 Console.WriteLine("{0} price is {1}",name, price);
คำาสง Console.WriteLine ทำาหนาทแสดงขอความออกทางหนาจอ โดยจะแทนทขอความในตำาแหนง {0} และ {1} ดวยคาทเกบไวในตวแปร name และ price ตามลำาดบ
17 Console.WriteLine("Customer pay {0},change is {1} baht.",pay,pay-price);
คำาสง Console.WriteLine คาทถกนำาไปแทนใน {0} หรอ {1} ไมจำาเปนตองเปนตวแปรเสมอไป สามารถใชนพจนทางคณตศาสตร (ตวอยางในบรรทดนคอ pay – price) ตาง ๆ แทนไดเชนกน โดยโปรแกรมจะคำานวณนพจนทางคณตศาสตรนน ๆ จนไดผลลพธสดทาย เพอนำาผลลพธนนไปแทนคา
แบบฝกหดท 1.2.1 : แกไขโปรแกรม
ใหนกเรยนทำาตามแกโปรแกรมตามขอกำาหนดตอไปน แลวจดบนทกขอผดพลาดทคอมไพเลอรแจงออกมา (ทดสอบแยกกนแตละขอ)
ก�รแกโปรแกรม ขอผดพล�ดทคอมไพเลอรแจงพรอมอธบ�ยส�เหตของคว�มผดพล�ด
1. ลบ ; ททายบรรทด
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (7)01204111 : Computer & Programming
บางบรรทด
2. ลบบรรทด string name;ในบรรทดท 8 ออก
3. แกไขบรรทดท 13 โดยเอาคำาวา int.Parse ออก ใหเหลอเปนprice = (Console.ReadLine());
จงตอบคำาถามตอไปน
คำ�ถ�ม คำ�ตอบ
1. จากคำาสงในบรรทดท 16 หากเปลยน {0} และ {1} เปน {1} และ {0} ตามลำาดบ ผลลพธทไดเปนเชนไร
2. จากคำาสงในบรรทดท 16 หากเปลยนขอความ name และ price เปนขอความ price และ name แทนตามลำาดบ ผลลพธทไดเปนเชนไร
3. จากคำาสงในบรรทดท 16 หากเปลยน {0} และ {1} เปน {1} และ {2} ตามลำาดบ ผลลพธทไดเปนเชนไร
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (8)01204111 : Computer & Programming
1.3 เกมท�ยเลข: เมธอดในสวนนเราจะทดลองเกมทายเลข ใหสราง solution ของโปรแกรมแบบ Console ขนมาใหม จากนนเราจะเรมตนโดยการเพมเมธอด RandInt ทเปนเมธอดสำาหรบสรางเลขสมเขาไปในโปรแกรม เมธอดดงกลาวจะใชตวแปร randGen ทเปนตวแปรแบบ global ในการสมตวเลข ขอสงเกตกคอทงเมธอดและตวแปรขนตนการประกาศดวยคำาวา static เราจะไดศกษารายละเอยดของการเขยนเมธอดและเรองของตวแปร global อยางละเอยดตอไป สำาหรบตอนนใหใชงานไปกอน
ใหเพมการประกาศตวแปรและ เมธอดดงกลาวลงในคลาส Program แตอยภายนอกเมธอด Main เมธอดแสดงเปนแถบสเทาในรปท 6 class Program { static Random randGen = new Random(); static int RandInt(int fr, int to) { return fr + (randGen.Next() % (to - fr + 1)); }
public static void Main(string[] args) { // ……… } }
รปท 6 แสดงการประกาศตวแปร randGen และเมธอด RandIntเราจะทดลองเมธอดดงกลาว ใหแกเมธอด Main ใหเปนดงดานลาง public static void Main(string[] args) { Console.WriteLine(RandInt(1,100)); Console.WriteLine(RandInt(1,100)); Console.WriteLine(RandInt(1,100)); Console.ReadLine(); }
ใหทดลองเรยกใหโปรแกรมทำางาน เราจะพบวาโปรแกรมจะพมพตวเลขออกทาง Console ซงตวเลขเหลานนาจะแตกตางกน จากนนทดลองเปลยนตวเลขแทนทเลข 1 และเลข 100 โดยใหตวเลขตวหนามคานอยกวาเสมอ แลวตอบคำาถามวา เมธอด “ RandInt() ทำาหนาทอะไร ”
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (9)01204111 : Computer & Programming
1.4 เกมท�ยเลข: โปรแกรมหลกเราจะเขยนโปรแกรมทายเลขแบบงายในภาษา C# โปรแกรมดงกลาวจะมลกษณะการทำางานเชนเดยวกบโปรแกรมทเราเคยเขยนในภาษา Python แกโปรแกรมหลกเปนดงดานลาง จากนนใหทดลองสงใหโปรแกรมทำางาน public static void Main(string[] args) { int s = RandInt(1,100); int g = -1; while(g != s) { Console.Write("Please guess: "); g = int.Parse(Console.ReadLine()); if(g > s) Console.WriteLine("Your guess is too high."); if(g < s) Console.WriteLine("Your guess is too low."); } Console.WriteLine("You guessed correctly."); Console.ReadLine(); }
แบบฝกหดท 1.4.1 ใหตอบคำ�ถ�มตอไปน
1. เลขทสมไดมขอบเขตเปนเทาใด?2. ใหอธบายการทำางานของคำาสง while ในโปรแกรม เงอนไขใดททำาใหโปรแกรมเลกทำางานซำา (คำาใบ: คำาสงดงกลาวมการทำางานเหมอนกบในภาษา Python)3. สมมตวาคาทคนจากเมธอด RandInt คอ 45 และผใชทายวา 70 โปรแกรมจะพมพประโยคใดออกมา
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (10)01204111 : Computer & Programming
แบบฝกหดท 1.4.2 จำ�นวนครงของก�รท�ยแกโปรแกรมใหพมพจำานวนครงของการทายออกมาเมอโปรแกรมทำางานเสรจดวย โดยเตมคำาสงทตองการลงในโปรแกรมดานลาง บรรทดทเกยวของทถกเพมในโปรแกรมแสดงเปนแถบสเทา public static void Main(string[] args) { int s = RandInt(1,100); int g = -1; int count = 0;
while(g != s) { __________________________________________________________ Console.Write("Please guess: "); g = int.Parse(Console.ReadLine()); if(g > s) Console.WriteLine("Your guess is too high."); if(g < s) Console.WriteLine("Your guess is too low."); } Console.WriteLine("You guessed correctly."); Console.WriteLine("You guessed for {0} times.”,_________________); Console.ReadLine(); }
1.5 เกมบวกเลขเราจะเขยนเกมฝกบวกเลข โดยตวอยางของการเลนเกมดงกลาวสองครงแสดงดงรปดานลาง42 + 72 = ? 114Good. You're correct.
56 + 75 = ? 7Sorry. The correct answer is 131.
ในการเขยน ใหตดสวนของเมธอด RandInt จากรปท 6 มาใสในคลาสดวย เพอใชในการสมตวเลข
แบบฝกหดท 1.5.1 สวนสมคำ�ถ�มใหเตมโปรแกรมในเมธอด Main ทสมคำาถามใหสมบรณ โปรแกรมดงกลาวจะสมจำานวนเตมระหวาง 1 ถง 100 มาสองจำานวน แลวพมพคำาถาม ถาโปรแกรมถกตองแลวเมอเรยกใหโปรแกรมทำางาน โปรแกรมจะแสดงคำาถามทสมไดแลวรอผใชกดปม Enter กอนจบการทำางาน
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (11)01204111 : Computer & Programming
public static void Main(string[] args) {
int x = ____________________________________;
____________________________________________;
Console.Write(”{0} + {1} = ? ”,____, y); Console.ReadLine(); }
แบบฝกหดท 1.5.2 สวนตรวจคำ�ตอบในสวนตรวจคำาตอบนน เราจะใชคำาสงควบคม if เพอตรวจสอบเงอนไข คำาสง if มรปแบบดงน if( เงอนไข ) statement;
สงทแตกตางจากในภาษา Python คอ คำาสง if จะควบคมคำาสงทตามมาแคคำาสงเดยวเทานน ถาตองการใหควบคมหลายคำาสง จะตองรวมคำาสงหลาย ๆ อนเปนกลมคำาสงเดยว โดยใชเครองหมายปกกา ดงรปแบบดานลาง นสตจะไดเรยนคำาสงนอยางละเอยดอกครงหนง if( เงอนไข ) { statement1; statement2; … statement3; }
การเขยนเงอนไข หรอนพจนตรรกศาสตรในภาษา C# โดยทวไปแลวไมแตกตางจากในภาษา Python มากนก กลาวคอ ถาเราตองการทดสอบวา เทากบ, มากกวา, หรอนอยกวา เราจะใชตวดำาเนนการ “==”, “>”, หรอ “<” ตามลำาดบ สงทแตกตางคอในภาษา C# ไมมตวดำาเนนการ and, or, หรอ not แตจะใชสญลกษณแทน
ในภาษา C# การยอหนาไมมความหมายใด ๆ ตอการคอมไพลหรอนำาโปรแกรมไปทำางาน อยางไรกตาม เราควรจะยอหนาในลกษณะเดยวกบใน Python เพอทำาใหโปรแกรมอานงาย
ใหเขยนโปรแกรมสวนตรวจคำาตอบ โดยเตมโปรแกรมดานลางใหสมบรณ ไมตองเขยนสวนสมและแสดงคำาถาม public static void Main(string[] args) {
// ===== สวนสมและแสดงคำ�ถ�มถกละไว ========== int ans = _____________________________
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (12)01204111 : Computer & Programming
if(_______________________) Console.WriteLine(”Good. You’re correct.”); else
Console.WriteLine(__________________________________________); }
2. โปรแกรมตดตอกบผใชแบบกร�ฟกส 2.1 แนวคดเบองตนในการพฒนาโปรแกรมทตดตอกบผใชแบบกราฟกสบนระบบวนโดวส (หรอเรยกวา GUI) มรปแบบทแตกตางไปจากการเขยนโปรแกรมทเราเคยศกษามาบาง โดยมากโปรแกรมทเราศกษามานนจะมจดเรมตน และจดสนสดเดยว นอกจากน ในการทำางาน ผใชจะตดตอกบโปรแกรมในรปแบบทคอนขางตายตว ผดกบในโปรแกรมททำางานแบบกราฟกส ทผใชสามารถเลอกกระทำาการกบหลาย ๆ สวนของหนาตางไดอยางเปนอสระมากกวา
ดงนนรปแบบการเขยนโปรแกรมตดตอกบผใชแบบกราฟกสมกนยมใชการโปรแกรมแบบตอบสนองเหตการณ (event-driven) ยกตวอยางเชน ในการเขยนโปรแกรมกบหนาตางทมปมอยหลายปม แทนทเราจะเขยนโปรแกรมหลกโปรแกรมเดยว เราจะเขยนเมธอดยอย ๆ หลาย ๆ เมธอดเพอทำางานกบเหตการณการกดปมหลาย ๆ ปมเหลานนแยกกน
2.2 ทดลองสร�งโปรแกรมแรกในสวนนเราจะทดลองโปรแกรมทตดตอกบผใชผานทางวนโดวส โปรแกรมดงกลาวจะแสดงปม เมอเรากดปมดงกลาว ขอความบนหนาจอจะแสดงคำาวา Hello, world
ใหการสราง Solution ดงกลาว ใน Sharp Develop ใหสงสราง Solution โดยในสวนของ Templates ใหเลอก “Windows application” เมอตองระบ templates สำาหรบสวนนใหใสชอ
solution เปน winhello ถาม solution นอยในเครองอยแลวใหกด overwrite เพอเขยนทบ
เมอสราง solution เสรจแลว หนาจอของ Sharp Develop จะมลกษณะไมตางจากรปท 3 ทเราใชเขยนโปรแกรมบน Console เทาใดนก อยางไรกตามทดาน
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (13)01204111 : Computer & Programming
ลางของสวนสำาหรบแกไขโปรแกรม (Editor) จะมแทบ Design ปรากฏขน ดงแสดงในรปท 5 ถานสตไมพบแทบดงกลาว อาจเปนเพราะนสตไมไดสราง Solution ถกตอง (เชน ไมไดเลอกประเภท Windows application) ใหกลบไปสราง Solution ใหมอกครง
รปท 5 (a) แทบ Design, (b) หนาจอสำาหรบออกแบบ
เมอเรากดทแทบดงกลาว เราจะเหนหนาตางเปลา ๆ ในสวนทเคยเปนโปรแกรม หนาจอนเปนหนาจอสำาหรบออกแบบ เพอใหการทำางานสะดวก ใหกดเลอกแทบ Tools ทสวนหนาจอขางซาย และแทบ Properties ทสวนหนาจอขางขวาขนมาดวย ตำาแหนงของแทบทงสองและหนาจอผลลพธแสดงในรปท 6 (a)
(a) (b)รปท 6 (a) แสดงหนาจอสำาหรบออกแบบหนาตาง วงกลมดานซายและดานขวาแสดงตำาแหนงของ
แทบ Tools และ Properties(b) แสดงแทบ Tools หลงจากเลอก Windows Forms แลว จะเหนวามวตถทเราสามารถเลอก
ใชไดหลายแบบ
ในสวนตรงกลางหนาจอ จะแสดงหนาตางของโปรแกรมของเรา เพอปองกนความสบสนเราจะเรยกหนาตางนนวาหนาตาง winhello
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (14)01204111 : Computer & Programming
แบบฝกหดท 2.2 ใหสงใหโปรแกรมทำ�ง�น ผลลพธทไดคออะไร
ใหกดปม X ทมมขวาของหนาตางทเราสรางขน เพอกลบไปยงหนาจอเขยนโปรแกรมของ Sharp Develop
2.2.1 หน�ต�งและวตถในหนา Design สวนแทบ Tools ทดานซายจะเปนสวนทเราใชเลอกวตถเชน ปม ปายขอความ หรอ กลองขอความ เพอนำามาวางในหนาตางทเรากำาลงจะออกแบบ
ในแทบ Tools เราจะเหนกลมของวตถหลาย ๆ ประเภท ใหกดเลอก “Windows Forms” เราจะเหนวตถพนฐานจำานวนมาก ดงแสดงใหรปท 6 (b) เราสามารถเลอกวตถดงกลาว จากนนนำามาวางในหนาตางของเราได
เราจะเรมออกแบบหนาจอแบบงาย ๆ โดยกดเลอกวตถประเภท Button จากแทบ Tools แลวคลกทภายในหนาตาง winhello เราจะเหนปม ปรากฏขน บนปมดงกลาวจะเขยนวา button1 จากนนใหเลอกวตถประเภท Label แลวทำาเชนเดยวกน เราจะพบวามปายขอความวา label1 ปรากฏขนทบนหนาตาง winhello เราสามารถกดเลอกทงปมหรอปายขอความได เมอเลอกแลวเราจะเหนกรอบเปนเสนประรอบวตถดงกลาว เราสามารถเลอนตำาแหนงของวตถทเราเลอกไวใหเรยงตวสวยงามได ตวอยางของหนาตาง winhello หลงขนตอนนแสดงดงรปท 7 (a)
เมอออกแบบหนาจอเสรจแลว เราสามารถสงใหโปรแกรมทำางานไดทนท โดยกดปม Run (สามเหลยม play สเขยว) รปท 7 (b) แสดงหนาตางเมอโปรแกรมทำางานแลว กอนจะทำางานในขนตอนถดไป ใหปดโปรแกรมททำางานอยเสยกอน ไมเชนนนเราจะไมสามารถแกไขโปรแกรมของเราได
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (15)01204111 : Computer & Programming
(a) (b) (c)รปท 7 (a) แสดงหนาตาง winhello ใน Sharp Develop สงเกตวาในรปปม button1
ถกเลอกอย(b) ตวอยางหนาจอ winhello เมอเราสงใหโปรแกรมทำางาน (c) คณสมบตของปม
button1
2.2.2 คณสมบต (Property)วตถตาง ๆ บนหนาตาง เชน ปายขอความ ปม หรอกลองขอความ ลวนมคณสมบตทเราสามารถปรบเปลยนได เชน ตำาแหนง, ส, ขอความทแสดง เราสามารถปรบแตงวตถบนหนาจอ winhello ทเราออกแบบอยได โดยเปลยนแปลงคณสมบต (property) บางอยางของวตถเหลานน เมอเราเลอกวตถหนง ๆ รายการคณสมบตของวตถนนจะถกแสดงบนแทบ Properties
ใหคลกเลอก button1 คณสมบตของ button1 จะถกแสดงดงรปท 7 (c) ใหทดลองเปลยน คณสมบต Text ใหเปน Hello เราจะเหนวาขอความ button1 บนปมจะถกเปลยนเปน Hello ตามทเรากำาหนดลงไป เราสามารถปรบแตงรายละเอยดอน ๆ ของวตถไดอก เชน เปลยนส หรอเปลยนรปแบบฟอนต ใหทดลองปรบแตงปมใหมขนาดใหญขนและมสตามตองการ ระวงอย�ปรบเปลยนคณสมบต Name (แสดงในแทบ Properties อยในสวน Design เปน (Name))
แบบฝกหดท 2.2.2 ทดลองสงใหโปรแกรมทำ�ง�น บนทกผลทได
สงเกตวาหนาตางทแสดงจะมลกษณะทเปลยนไปตามทเราออกแบบ อยางไรกตามยงไมมอะไรเกดขนเมอเรากดปมบนหนาตาง ทงนเนองจากเรายงไมไดเขยนโปรแกรมเพอตอบสนองเหตการณเหลานน เราจะเขยนสวนดงกลาวในขนตอนถดไป อยาลมปดโปรแกรมททำางานอยนกอนดวย
2.2.3 โปรแกรมสวสดเราจะเพมโปรแกรมเพอตอบสนองการกดปม button1 เราสามารถเรมเขยนโปรแกรมกบเหตการณดงกลาวไดโดยกดดบเบลคลกท button1 ในแทบ Design เมอกดแลว หนาจอของ Sharp Develop จะเปลยนมาแสดงผลเปนสวนแกไขโปรแกรม
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (16)01204111 : Computer & Programming
(Editor) เหมอนตอนเราเขยนโปรแกรมกบ Console สงเกตวาแทบดานลาง ถกเลอกอยท Source ไมใช Design เราจะเลอกแทบนเมอตองการแกไขโปรแกรม
เมอเราดบเบลคลกทปม Sharp Develop จะสรางเมธอดใหม ชอ Button1Click เพอใหเราเขยนโปรแกรมเพอตอบสนองกบเหตการณมาตรฐานของปม (ซงคอการถกคลก) ใหกบเรา โครงของเมธอดดงกลาวแสดงในรปท 8
รปท 8 แสดงโครงของเมธอด Button1Click ทระบบสรางให
เมอมการกดปม เราจะสงให label1 เปลยนขอความทแสดงเปน Hello, world ดงนนเราจะแกเมธอด Button1Click ใหเปนดงดานลาง
void Button1Click(object sender, EventArgs e){ label1.Text = "Hello, world";}
ใหทดลองสงใหโปรแกรมทำางาน ทดลองกดปมแลวดผลลพธ
แบบฝกหดท 2.2.3 ถ�ตองก�รใหโปรแกรมแสดงขอคว�มว� Good-bye จะ ตองแกโปรแกรมทสวนใด ? อย�งไร ?
2.3 เกมกดปมในสวนนเราจะเขยนเกมกดปม โดยปมจะยายทหนแบบสมหลงจากเรากดแลว เปาหมายคอกดใหไดจำานวนครงมากทสด
2.3.1 ตำ�แหนงบนหน�จอวตถทกชนในหนาตางทเราออกแบบ จะมคณสมบตทใชกำาหนดตำาแหนงและขนาด คอ Top, Left, Width, และ Height ดงมความหมายแสดงตามรปดานลาง
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (17)01204111 : Computer & Programming
รปท 9 แสดงคณสมบตทกำาหนดตำาแหนงและขนาดของวตถบนหนาตาง
เราจะเรมตนทดลองโดยการ แกเมธอด Button1Click ใหเปนดงดานลางvoid Button1Click(object sender, EventArgs e){ button1.Left += 10;}
แบบฝกหด 2.3.1 ใหทดลองโปรแกรมดงกล�ว จ�กนนตอบคำ�ถ�มเหล�นกอน ทำ�ง�นตอไป
1. โปรแกรมขางตนทำางานอะไร?2. ถาเราตองการใหปมเลอนขน จะตองแกคำาสงเปนอยางไร?
2.3.2 ปมย�ยทใหคดลอกเมธอด RandInt และสวนประกาศตวแปร randGen จากรปท 6 มาเพมในคลาส MainForm (นำาไปวางไวกอน เมธอด Button1Click) จากนนใหแกเมธอด Button1Click ใหสมเปลยนตำาแหนงของปม ทงในแนวแกน x และ y ใหสมใหคา Top และ Left อยระหวาง 0 ถง 100 (คำาใบ อยาลมเมธอด RandInt)
แบบฝกหด 2.3.2 ใหเขยนเมธอด Button1Click ลงทน void Button1Click(object sender, EventArgs e){
}
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (18)01204111 : Computer & Programming
2.3.3 ตวนบเราจะนบจำานวนครงทผใชคลกถกตอง กอนอนใหประกาศตวแปร clickCount ทใชเกบจำานวนครงทเรากดปมไดกอน โดยใหประกาศไวภายนอกเมธอด Button1Click แตอยภายในคลาส MainForm ดงแสดงในรปท 10 สงเกตวาเรากำาหนดใหคาเรมตนของตวแปรดงกลาวเปนศนย
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (19)01204111 : Computer & Programming
namespace winhello{ public partial class MainForm : Form { //……… //………
static int clickCount = 0; void Button1Click(object sender, EventArgs e) { // ……… } }}
รปท 10 การประกาศตวแปร clickCount
เพมบรรทดดานลางทแสดงคาของตวแปร clickCount บนปม button1 ลงไปทายเมธอด Button1Click button1.Text = clickCount.ToString() + " click(s)";
จากนนทดลองเรยกใหโปรแกรมทำางาน เราจะเหนขอความวา 0 click(s) แสดงบนปมเมอเราคลกโดนปม
แบบฝกหดท 2.3.3 ใหตอบคำ�ถ�มตอไปน
1. ใหทดลองลบคำาวา “.ToString()” ออกจากบรรทดขางตน จากนนสงใหโปรแกรมทำางาน ขอผดพลาดทพบคออะไร? เพราะเหตใด?2. ถาเราตองการเพมจำานวนครงทคลกโดนปม เราจะตองเพมคำาสงใดเขาไปในเมธอด Button1Click
Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (20)01204111 : Computer & Programming