22
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 ใใใใใใใใใใ ใใใใใใใใใใใใใใใใใใใ ใใใใใใใใใใใใ Lab 7 : ใใใใใใใใใใ C# ใใใใใใใใใใใใใใ (1) 01204111 : Computer & Programming ชื่อ...................................................... รหัสนิสิต...................................... หมู...............

โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

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

ชอ......................................................รหสนสต......................................หม...............

Page 2: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

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

Page 3: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

อาจจะมคำาเตอนวาม Solution ชอนอยแลวเพราะวามการใชงานมากอน หากเกดขนใหกด “Overwrite” เพอให Sharp Develop เขยนทบของเกาเหลานน

เมอเราสราง Solution เรยบรอยแลว Sharp Develop จะแสดงหนาจอทพรอมใหเราแกไขและทดลองโปรแกรมดงรปท 3

รปท 3 หนาจอสำาหรบแกไขและตรวจสอบโปรแกรมของ Sharp Develop

เมอเรมตน ระบบ Sharp Develop จะแสดงโครงของโปรแกรมมาใหโดยอตโนมต เราสามารเขยนหรอแกไขโปรแกรมไดในชองตรงกลางหนาตาง และสามารถเรยกใหโปรแกรมดงกลาวทำางานไดโดยกดปม Run ( ) แบบฝกหดท 1 : ใหนสตลองกดปม Run จ�กนนบนทกผลลพธทไดว�เกดอะไรขนอย�งไร ถ�โปรแกรมทำ�ง�นค�งใหกดปมใด ๆ บนแปนพมพ

Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (3)01204111 : Computer & Programming

สวน หรบเขยนโปรแกรมสำ�

ปม Run

Page 4: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

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

สวนของเมธอด

Page 5: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

แบบฝกหดท 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

Page 6: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

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

Page 7: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

ภาษา 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

Page 8: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

บางบรรทด

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

Page 9: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

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

Page 10: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

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

Page 11: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

แบบฝกหดท 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

Page 12: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

    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

Page 13: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

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

Page 14: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

ลางของสวนสำาหรบแกไขโปรแกรม (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

Page 15: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

แบบฝกหดท 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

Page 16: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

(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

Page 17: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

(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

Page 18: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

รปท 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

Page 19: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

2.3.3 ตวนบเราจะนบจำานวนครงทผใชคลกถกตอง กอนอนใหประกาศตวแปร clickCount ทใชเกบจำานวนครงทเรากดปมไดกอน โดยใหประกาศไวภายนอกเมธอด Button1Click แตอยภายในคลาส MainForm ดงแสดงในรปท 10 สงเกตวาเรากำาหนดใหคาเรมตนของตวแปรดงกลาวเปนศนย

Lab 7 : แนะนำาภาษา C# และสภาพแวดลอม (19)01204111 : Computer & Programming

Page 20: โปรแกรม Sharp Develop - Kasetsart University · Web viewในปฏ บ ต การน เราจะได ทดลองศ กษาภาษา C# เบ องต

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