วันเสาร์ที่ 3 สิงหาคม พ.ศ. 2556

Ex.11 การเลือกทำแบบ if…ElseIf…

การทำงานของฟังก์ชั่น if.. ElseIf แบบหลายทางเลือกจะทำการเปรียบเทียบ ถ้าเงื่อนไขที่ 1 เป็นจริงจะทำงานในนิพจน์ที่ 1 หากเป็นเท็จจะเปรียบเทียบเงื่อนไขที่ 2 ไปเรื่อยจนกว่าจะครบทุกเงื่อนไข

รูปแบบ 

If  เงื่อนไขที่ 1  Then
    นิพจน์ที่ 1 จะทำงานเมื่อเงื่อนไขเป็น จริง
Elseif เงื่อนไขที่ 2  Then
    นิพจน์ที่ 2 จะทำงานเมื่อเงื่อนไขเป็น เท็จ
Else
     นิพจน์ที่ 3  หากไม่มีเงื่อนไขใดเป็นจริง
End if


ตัวอย่าง  โปรแกรมตัดเกรด แบบ 5 เกรด (A-E) ตามเงื่อนไขของคะแนนคือ ถ้าคะแนนตั้งแต่ 80 ขึ้นไปผลลัพธ์คือ A , ถ้าคะแนนตั้งแต่ 70 ขึ้นไปผลลัพธ์คือ B  ถ้าคะแนนตั้งแต่ 60 ขึ้นไปผลลัพธ์คือ C , ถ้าคะแนนตั้งแต่ 50 ขึ้นไปผลลัพธ์คือ D  ถ้าน้อยกว่า 50 ผลลัพธ์คือ E , และหากไม่ตรงเงื่อนไขใดๆ ผลลัพธ์คือ Error 

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim score As Integer = 70
|5|             Dim result As String
|6|    
|7|             If score >= 80 Then
|8|                 result = "A"
|9|             ElseIf score >= 70 Then
|10|                result = "B"
|11|            ElseIf score >= 60 Then
|12|                result = "C"
|13|            ElseIf score >= 50 Then
|14|                result = "D"
|15|            ElseIf score < 50 Then
|16|                result = "E"
|17|            Else
|18|                result = "Error"
|19|            End If
|20|           
|21|       Console.WriteLine("Grade is {0}", result)
|22|            Console.ReadLine()
|23|        End Sub

|24|    End Module


การแสดงผล


นักศึกษาทดลองเปลี่ยนแปลงค่าคะแนนจาก 70 เป็นคะแนนอื่น หรือ เขียนคำสั่งเพิ่มเติมเพื่อรับค่าคะแนนจะแป้นคีย์บอร์ด


********************************************************

Ex.10 การเลือกทำแบบ if…else

เป็นการเลือกทำสองทิศทางหรือเลือกทำอย่างใดอย่างหนึ่ง โดยใช้คำสั่ง if…else ถ้าหากเงื่อนไขเป็นจริง จะทำงานหลักคำสั่ง Then แต่หากเงื่อนไขเป็นเท็จ จะทำงานหลัก

รูปแบบ

If  เงื่อนไข  Then
    นิพจน์ที่ 1 จะทำงานเมื่อ
                  เงื่อนไขเป็น จริง
Else
     นิพจน์ที่ 2  จะทำงานเมื่อ
                   เงื่อนไขเป็นเท็จ
End if

ตัวอย่าง  การตรวจสอบคะแนนทีป้อนเข้ามา ถ้าได้คะแนน 60 ขึ้นไป จะมีผลลัพธ์คือ “ผ่าน” แต่หากต่ำกว่า 60 จะมีผลลัพธ์คือ “ไม่ผ่าน”   จะพบว่าการเขียนโปรแกรมลักษณะนี้จะมองเป็นการเลือกทำแบบสองทิศทาง จากตัวอย่างเมื่อเงื่อนไขเป็นเท็จจะทำงานหลังคำสั่ง else

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim score As Integer
|5|             Console.Write("input score :")
|6|             score = Console.ReadLine
|7|    
|8|             If score >= 60 Then
|9|                 Console.WriteLine("Pass.")
|10|            Else
|11|                Console.WriteLine("Fail.")
|12|            End If
|13|   
|14|            Console.ReadLine()
|15|        End Sub
|16|    End Module

การแสดงผล


********************************************************




Ex.09 คำสั่งควบคุมแบบเลือกทำ

การเขียนโปรแกรมแบบโครงสร้างเพื่อควบคุมคำสั่ง

             เหตุผลหนึ่งในการที่จะต้องเขียนโปรแกรมก็คือ เพื่อแก้ไขปัญหาและเพิ่มประสิทธิภาพในการทำงานให้มากที่สุด โดยการเขียนโปรแกรมสิ่งที่แรกที่จะต้องทำความเข้าใจก็คือ ต้องทราบถึงปัญหาว่าโจทย์ต้องการอะไรโดยพิจารณาจาก  Input และ Output ต่อไปก็คือจะต้องคิดกระบวนการ (Process) เพื่อหาผลลัพธ์ตาม Output ที่ต้องการ ซึ่งในการเขียนโปรแกรมแบบเดิมที่นักศึกษาเคยเรียนมานั้นส่วนมากจะคุ้นเคยกับการเขียนโปรแกรมเชิงโครงสร้าง ซึ่งอาศัยโครงสร้างที่จำเป็นต่อการเขียนโปรแกรมอยู่ 3 แบบ คือ การทำงานเรียงลำดับ การทำงานแบบมีเงื่อนไข และ การทำซ้ำ ซึ่งในความเป็นจริงในการเขียนโปรแกรมนั้น เราจะต้องนำ โครงสร้างทั้ง 3 แบบมาประยุกต์เพื่อให้สามารถแก้ไขปัญหาตามที่โจทย์ต้องการ
ในบทนี้เป็นการเขียนโปรแกรมโดยใช้ Console ดังนั้นหากนักศึกษายังไม่ได้ศึกษารูปแบบคำสั่งในการเพื่อเขียนโปรแกรมใน Console ซึ่งนักศึกษาสามารถศึกษาการเขียนโปรแกรมบน Console ได้จากภาคผนวก

คำสั่งควบคุมแบบเลือกทำ

1. การเลือกทำแบบ if การเลือกทำทางเดียวจะใช้คำสั่ง if ในการตรวจสอบเงื่อนไขและผลลัพธ์จะการตรวจสอบที่ได้จะมีค่า True กับ false ดังนี้

รูปแบบ

If  เงื่อนไข  Then
    นิพจน์ที่ 1 จะทำงานเมื่อเงื่อนไขเป็นจริง
End if
    นิพจน์ที่ 2 

ตัวอย่าง  การตรวจสอบรหัสผ่านว่าเป็น “lru” หรือไม่ ด้วยคำสั่ง if หากถูกต้องจะแสดงคำว่า “***  Right ***”

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim answer As String = "lru"
|5|             Dim password As String = ""
|6|             Console.WriteLine("Please enter your password.")
|7|             Console.Write("Password  is : ")
|8|             password = Console.ReadLine
|9|    
|10|            If password = answer Then
|11|                Console.Write("*** Right ***")
|12|            Else
|13|                Console.Write("*** Wrong ***")
|14|            End If
|15|   
|16|            Console.ReadLine()
|17|        End Sub
|18|   

|19|    End Module    

การแสดงผล

หากการตรวจสอบเงื่อนไขถูกต้อง ระบบจะทำงานหลังคำสั่ง Then และทำงานนิพจน์จนถึงบรรทัดที่ 12 คือ End if แต่หาก รหัสผ่านไม่ถูกต้องจะไม่แสดงค่า เนื่องจากระบบกระโดดไปยังบรรทัดที่ 12 คือ End if
****************************************************



Ex.08 การประกาศตัวแปร (Declare Variables)

ตัวแปรภาษา VB.NET ได้ออกแบบเมธอด MinValue และ MaxValue สำหรับแสดงค่าต่ำสุดและค่าสูงสุด

1.  รูปแบบการประกาศตัวแปร 

                 Dim  Vaiable_Name  As  TypeofVarible


  • Dim เป็นการแจ้งต่อ  Visual  Basic  ว่าต้องการจะสร้างตัวแปรขึ้นมา 
  • Variable_Name เป็นการกำหนดชื่อตัวแปร  ซึ่งต้องสอดคล้องกับกฎการตั้งชื่อ ใน VB  หากต้องการประกาศหลายตัวให้ใช้เครื่องหมาย ,  คั่นระหว่างตัวแปร  
  • TypeVariable   เป็นการระบุชนิดข้อมูลที่เหมาะสมกับข้อมูลและปริมาณข้อมูลที่จัดเก็บอยู่ 


ตัวอย่างการประกาศตัวแปร 

Dim name As String
Dim Price As Double, I As Single
Dim Vat, sum, total As Single
Dim social As Single = 0.05

2.  อักขระระบุชนิดข้อมูล 
รูปแบบหนึ่งของการกำหนดชนิดข้อมูลก็คือการใช้อักขระระบุ  ตารางต่อไปนี้เป็นอักขระระบุชนิดข้อมูล  (Data  type  characters)  ของ  Visual  Basic


อักขระ
ชนิดข้อมูล
%
Integer
&
Long
@
Decimal
!
Single
#
Double
$
String
ชนิดข้อมูลกำหนดได้โดยใส่อักขระระบุชนิดข้อมูลไว้หลังจากชื่อของตัวแปร
ตัวอย่าง  การประกาศตัวแปร  num_dresserts  ชนิดข้อมูลแบบ  Long  และตัวแปร  satisfaction_quotient  ชนิดข้อมูลแบบ  Double

|1|  Dim  num_desserts&
|2|  Dim  satisfaction_quotient#
|3|  num_desserts = 100
|4|  satisfaction_quotient# = 1.23


 3.  กฎการประกาศตัวแปร

ชื่อตัวแปรต้องเป็นภาษาอังกฤษ และ และต้องเริ่มต้นด้วยอักษรภาษาอังกฤษหรือ _   และไม่เกิน 255 ตัวอักษร  ตัวแรกเป็นตัวอักษร ตัวต่อมาเป็นตัวอักษรหรือตัวเลข หรือขีดเส้นใต้ก็ได้  จะไม่มีเว้นวรรคในชื่อตัวแปร  ไม่ซ้ำกับคำสงวน (Reserved Word) ของ VB.NET เช่น String, Dim Variant  และควรตั้งชื่อให้สื่อความหมาย เพื่อให้สามารถอ่านและแก้ไขโปรแกรมได้ง่าย เช่น CustName, Price , Vat

ตัวอย่าง การนำตัวแปรมาแสดงผล 

ชื่อตัวแปร
ความหมาย
num_employees
ใช้ได้
NumEmployees
ใช้ได้
_manager
ใช้ได้  (แต่ไม่ใช่กรณีปกติ)
_
ใช้ไม่ได้  (มีเครื่องหมายขีดเส้นใต้เพียงตัวเดียว)
__
ใช้ได้  (ใช้เครื่องหมายขีดเส้นใต้สองตัวได้  แต่น่าสับสนมาก)
1 st_employee
ใช้ไม่ได้  (ไม่ได้เริ่มต้นด้วยตัวอักษรหรือขีดเส้นใต้)
ผลการรันโปรแกรม คือ


จากตัวอย่างการนำตัวแปรมาแสดงผล ของทั้งสอง จะให้ผลต่างกันมาก  หากตัวแปรอยู่ภายใต้เครื่องหมายคำพูด “ ”  ดังเช่นตัวอย่างที่ 2


ตัวอย่าง การนำรหัสควบคุมการแสดงผลมาใช้ ดังนี้ 

|1|  Module Module1
|2| 
|3|      Sub Main()
|4|          Dim MyAge As Integer = 25
|5|          Dim someMoney As Double = 39.45
|6| 
|7|          Console.WriteLine("The money is {0}. ${0} is a lot my age which is {1}.", someMoney, MyAge)
|8|          Console.ReadLine()
|9|      End Sub
|10|
|11| End Module


ผลการรันโปรแกรม คือ 



4. การประกาศค่าคงที่

การประกาศค่าคงที่  เป็นการนำค่าคงที่ (Constant) มาใช้เก็บค่าที่ไม่มีการเปลี่ยนแปลงตลอดโปรแกรม ช่วยให้เขียนและดูแลรักษาโปรแกรมได้ง่ายขึ้น

รูปแบบ

                 Const <ชื่อตัวแปร> [As <ชนิดข้อมูล>] = <ค่าคงที่>
  
จากรูปแบบข้างต้นสามารถระบุชนิดข้อมูลหรือไม่ก็ได้ เช่น

        Const ip As Single = 3.14
        Const cVatRate = 0.07
        Const lru As String = "Loei Rajabhat University" 

สรุป 
การประกาศตัวแปร (Declarations)  เป็นการกำหนดชื่อและชนิดข้อมูลให้กับตัวแปรเพื่อนำไปใช้ในโปรแกรม  โดยการตั้งชื่อจะต้องคำนึงถึงค่าของข้อมูล  และชนิดของข้อมูลที่อ้างอิง นอกจากนี้การตั้งชื่อควรให้สื่อความหมายของข้อมูล และอักษรของชื่อจะจำแนกแตกต่างกันระหว่างอักษรตัวพิมพ์เล็กกับอักษรตัวพิมพ์ใหญ่  ควรเป็นไปตามรูปแบบของการประกาศตัวแปร  และกฎของการประกาศตัวแปร


******************************************

Ex.07 พฤติกรรมของตัวแปรและชนิดข้อมูล

การประกาศตัวแปรเป็นการจองพื้นที่หน่วยความจำสำหรับเก็บข้อมูล  ซึ่งค่าที่เก็บในตัวแปรนั้นสามารถเปลี่ยนแปลงได้  ตัวแปรจะมีการอ้างถึงชื่อตัวแปรซึ่งจะเป็นการอ้างไปยังตำแหน่งหน่วยความจำแรมของคอมพิวเตอร์ ดังนั้นต้องมีการระบุชนิดข้อมูล

1. พฤติกรรมของตัวแปร  พฤติกรรมของตัวแปรมีปัจจัยอยู่ 4 อย่าง คือ

  1. ชนิดข้อมูล  (Data  type)  เพื่อให้ทราบว่าข้อมูลเป็นชนิดใด   เช่น  จำนวนเต็ม  อักขระ  สตริง  ฯลฯ
  2. ขอบเขต  (Scope)  เป็นการกำหนดขอบเขตของโค้ด เพื่อให้สามารถเข้าถึงตัวแปร  เช่น ถ้าประกาศตัวแปรไว้ในลูป  For จะสามารถใช้ตัวแปรนั้นได้ในลูป For เท่านั้น 
  3. การเข้าถึงตัวแปรจากโมดูลอื่น  (Accessibility)  เป็นตัวบ่งชี้ว่าตัวแปรใดที่อนุญาตให้โมดูลอื่นให้สามารถเข้าถึงตัวแปรได้บ้าง  เช่น ใช้คีย์เวิร์ด Private และ Public
  4. อายุของตัวแปร  (Lifetime)  เป็นตัวบ่งชี้ว่าตัวแปรจะอยู่  (valid)  นานเท่าใด  เช่น ประกาศตัวแปรในซับรูทีน เมื่อออกจากซับรูทีนแล้วตัวแปรก็จะหยุดการทำงาน 
  5. ชนิดข้อมูลของตัวแปร

ตารางประเภทของข้อมูลในภาษา VB.NET

ชนิด
ขนาด
ค่า
Boolean
2 bytes
True  หรือ  False
Byte
1 byte
0  ถึง  255  (unsigned  byte)
SByte
1 byte
-128  ถึง  127  (signed  character)
ชนิด
ขนาด
ค่า
Char
2 bytes
0  ถึง  65,535  (unsigned  character)
Short
2 bytes
32,768  ถึง  32,767
UShort
2 bytes
0  ถึง  65,535  (unsigned  short)
Integer
4 bytes
-2,147,483,648  ถึง  2,147,483,647
UInteger
4 bytes
0  ถึง  4,294,967,295  (unsigned  integer)
Long
8 bytes
-9,223,372,036,854,775,808  ถึง 9,223,372,036,854,775,807 
ULong
8 bytes
0  ถึง  18,446,744,073,709,551,615  (unsigned  long)
Decimal
16 bytes
0  ถึง  +/-79,228,162,514,264,337,593,543,950,335  เมื่อไม่มีจุดทศนิยม
0  ถึง  +/-7.9228162514264337593543950335  กับทศนิยม  28  ตำแหน่ง

ชนิด
ขนาด
ค่า
Single
4 Bytes
\-3.40282365E+38  ถึง  -1401298E-45 (ค่าลบ)
1.401298E-45  ถึง  3.40282365E+38  (ค่าบวก)
Double
8 bytes
-1.79769313486231570E+308  ถึง  -4.94065645841246544E-324  (ค่าลบ)


4.94065645841246544E-324  ถึง  1.79769313486231570E+308  (ค่าบวก)
ชนิด
ขนาด
ค่า
String
แปรค่า
ขึ้นกับแพลตฟอร์ม  สตริงสามารถจัดเก็บได้  0  ถึง  2  พันล้านตัวอักขระ  Unicode
Date
8 bytes
January  1, 0001  0:0:00  ถึง  December  31, 9999,  11:59:59  pm
Object
4 bytes
จัดเก็บชนิดข้อมูลแบบใด ๆ
Structure
แปรค่า
สมาชิกต่าง ๆ ใน  Structure  มีขนาดของตัวมันเอง

** ชนิดข้อมูล  Integer  จะให้ประสิทธิภาพที่ดีกว่าข้อมูลจำนวนเต็มชนิดอื่นๆ เช่น  Char Byte  Short  Lon หรือ  Decimal  แต่ถ้าต้องการประหยัดพื้นที่หน่วยความจำ ควรจะใช้ชนิดของ


2. ประเภทของตัวแปรชนิดข้อมูล



จากแผนภาพจะเห็นว่าข้อมูลชนิดจำนวนเต็มมีหลายประเภท ซึ่งมีขนาดหน่วยความจำที่แตกต่างกัน นักศึกษาต้องเลือกใช้ชนิดข้อมูลที่เหมาะสมกับปริมาณข้อมูลที่ต้องการจัดเก็บ

ตัวอย่าง โปรแกรมแสดงค่าสูงสุด และ ต่ำสุดของตัวเลขจำนวนเต็ม

|1|  Module Module1
|2|      Sub Main()
|3|          Console.WriteLine("min Byte=" & Byte.MaxValue)
|4|          Console.WriteLine("max Byte=" & Byte.MinValue)
|5|          Console.WriteLine("min SByte=" & SByte.MaxValue)
|6|          Console.WriteLine("max SByte=" & SByte.MinValue)
|7|          Console.WriteLine("min Short=" & Short.MaxValue)
|8|          Console.WriteLine("max Short=" & Short.MinValue)
|9|          Console.WriteLine("min UShort=" & UShort.MaxValue)
|10|         Console.WriteLine("max UShort=" & UShort.MinValue)
|11|         Console.WriteLine("min Integer=" & Integer.MaxValue)
|12|         Console.WriteLine("max Integer=" & Integer.MinValue)
|13|         Console.WriteLine("min UInteger=" & UInteger.MaxValue)
|14|         Console.WriteLine("max UInteger=" & UInteger.MinValue)
|15|         Console.WriteLine("min Long=" & Long.MaxValue)
|16|         Console.WriteLine("max Long=" & Long.MinValue)
|17|         Console.WriteLine("min ULong=" & ULong.MaxValue)
|18|         Console.WriteLine("max ULong=" & ULong.MinValue)
|19|         Console.ReadLine()
|20|
|21|     End Sub

|22| End Module


เมื่อรันโปรแกรมจะได้ผลดังนี้

***************************************************


Ex.06 เมธอดรับข้อมูลจากภายนอก

การเขียนโปรแกรมเพื่อรับค่าข้อมูลจากภายนอกของ VB.NET มีอยู่หลายวิธี  แต่วิธีที่ดีที่สุด คือ การใช้เมธอด ReadLine() ซึ่งเก็บอยู่ในคลาส Console โดยจะเป็นการรับข้อมูลจากแป้นพิมพ์ และจะทำงานสิ้นสุดเมื่อกดปุ่ม Enter
สามารถประกาศตัวแปรและส่งค่า โดยอาจเขียนได้อีกรูปแบบคือ

|1|  Dim NameStr As String
|2|  NameStr = Console.ReadLine


ทดสอบเขียนโปรแกรมเพื่อรับค่าข้อมูลจากแป้นพิมพ์

|1|  Module Module1
|2| 
|3|      Sub Main()
|4| 
|5|          Console.Write("Enter your name ,please: ")
|6|          Dim nameStr As String = Console.ReadLine
|7| 
|8|          Console.Write("Hello ," & nameStr)
|9|          Console.ReadLine()
|10|     End Sub

|11| End Module

สูตรการส่งค่า

  • ขวาส่ง  ซ้ายรับ
  • ซ้ายมีหน้าที่รับอย่างเดียว
  • เก็บค่าอะไรไว้ทิ้งให้หมด



จากการทดสอบเขียนโปรแกรม  ขั้นตอนการแสดงผลจะเป็นดังนี้

1. เมื่อรันจะพบเคอร์เซอร์กระพริบเพื่อรอรับค่า 

    Enter your name ,Please: _

2. จากนั้นพิมพ์ชื่อ  เช่น  “Anooruk  Pomkotka” จากนั้นกดปุ่ม Enter ที่แป้นพิมพ์ 

    Enter your name ,Please: Anooruk Pomkotka

3. ระบบแสดงค่า ที่เก็บอยู่ในตัวแปร nameStr

    Enter your name ,Please: Anooruk Pomkotka
    Hello ,Anooruk Pomkotka


********************************************


 
ไม่สงวนลิขสิทธิ์บทความใดๆในบล๊อคนี้ หากท่านเห็นว่าเป็นประโยชน์..สามารถเผยแพร่ได้ตามสมควร