510 likes | 792 Views
Chapter 4. Data-Variable-Operant. รูปแบบการเขียนโปรแกรม. คำสั่งของภาษา Visual Basic ถูกเขียนไว้คำสั่งละบรรทัดและอยู่ในกรอบของโปรแกรม Private Sub xxxxxxx xxxxxxxxxx xxxxxxxxxx End Sub คำสั่งแต่ละคำสั่งเรียกว่า Statement
E N D
Chapter 4 Data-Variable-Operant
รูปแบบการเขียนโปรแกรมรูปแบบการเขียนโปรแกรม • คำสั่งของภาษา Visual Basic ถูกเขียนไว้คำสั่งละบรรทัดและอยู่ในกรอบของโปรแกรม Private Sub xxxxxxx xxxxxxxxxx xxxxxxxxxx End Sub • คำสั่งแต่ละคำสั่งเรียกว่า Statement • คำสั่งที่ประกอบด้วยคำสั่งย่อย ๆ รวมกันจะเรียกว่านิพจน์ (Expression) • ตัวอย่างเช่น Result = Num1+Num2
Data & Variable • Data (ข้อมูล) มีมากมายหลายชนิดไม่ว่าจะเป็นข้อความ,ตัวเลข,วันเวลา ฯลฯ โดยข้อมูลนั้นสามารถนำมาคำนวณ เปลี่ยนแปลง หรือประมวลผลในรูปแบบต่าง ๆ ซึ่งจะใช้ตัวแปรทำหน้าที่เก็บค่าของข้อมูลที่เราจะใช้งาน • Variable (ตัวแปร) คือ สิ่งที่ใช้เก็บข้อมูลที่เราจะใช้งานไว้ในหน่วยความจำซึ่งข้อมูลของตัวแปรอาจได้มาจากผู้ใช้ อ่านมาจากไฟล์ หรือค่าของผลลัพธ์จากการคำนวณ ฯลฯ ซึ่งข้อมูลในตัวแปรอาจเปลี่ยนแปลงได้โดยโค้ดในโปรแกรม
ชนิดของข้อมูล • Numeric ข้อมูลที่มีค่าเป็นตัวเลข ทั้งจำนวนเต็มและทศนิยม • String ข้อมูลที่เป็นอักขระ(ตัวอักษรตัวเดียว) และข้อความ • DateTime ข้อมูลในรูปของวันเดือนปีและเวลาหรือมีทั้งสองรูปแบบผสมกัน • Boolean ข้อมูลที่มีค่าเป็นจริง(True) หรือเท็จ (False) ข้อมูลที่จัดเก็บจะเก็บค่าไว้เพียงค่าเดียวทางการเขียนโปรแกรมจะเรียกว่าเป็นชนิดข้อมูลพื้นฐานหรือ Primitive Data Type หรือ Built-In Data Type
ชนิดของข้อมูล (ต่อ) • ในชีวิตประจำวันข้อมูลมักจะมีลักษณะเป็นชุด ดังนั้นข้อมูลจึงมีลักษณะเป็นโครงสร้างด้วยเช่น • โครงสร้างข้อมูลที่เก็บเป็นชุด เป็นการนำข้อมูลพื้นฐานให้ได้มากกว่า 1 ค่ามาจัดทำเป็นโครงสร้างเดียวกัน ทำให้เก็บหลายค่าแต่เป็นชนิดเดียวกัน หรือต่างชนิดกันก็ได้ • Object เป็นโครงสร้างข้อมูลชนิดพิเศษที่ไม่ใช่มีแต่การเก็บข้อมูลชนิดอื่นไว้ภายในเท่านั้น แต่ยังสามารถเก็บความสามารถในการจัดการข้อมูลที่อยู่ภายในไว้ได้ด้วย ซึ่งเป็นที่มาของการเขียนโปรแกรมแบบ Object Oriented Programming : OOP
ชนิดของข้อมูล (ต่อ) • ข้อมูลชนิดจำนวนเต็ม แบ่งเป็นชนิดย่อย ๆ ได้ 8 ชนิดดังตาราง
ชนิดของข้อมูล (ต่อ) • ข้อมูลชนิดเลขทศนิยม • เลขทศนิยมอาจใช้ตัว “E”เพื่ออ้างถึงเลข 10ยกกำลังได้ ดังนั้นระดับความละเอียดในการคำนวณสูง ๆ ทางวิทยาศาสตร์ หรือวิศวกรรม จะใช้ Double
ชนิดของข้อมูล (ต่อ) • ข้อมูลตัวเลข Decimal สามารถใช้เก็บจำนวนเต็มขนาดใหญ่ หรือเก็บทศนิยมที่มีค่าสูง ๆ • ข้อมูลชนิดตรรกะ
ชนิดของข้อมูล (ต่อ) • ข้อมูลชนิดตัวอักษรและข้อความ • ข้อมูลชนิดวันเวลา • ข้อมูลชนิดอื่น
ชนิดของข้อมูล (ต่อ) • ตัวอักษรพิเศษใน VB
สรุป Data Tpye • ข้อมูลแบบเลขจำนวนเต็ม ได้แก่ Byte, SByte, Short, UShort, Integer, UInteger, Longและ Ulong *ข้อมูลแบบคิดเครื่องหมาย(Signed)เก็บได้ทั้งค่าบวก ลบ และศูนย์ เช่น SByte, Short, Integer, Long *ข้อมูลแบบไม่คิดเครื่องหมาย(UnSigned)เก็บได้แค่ค่าบวกและศูนย์เช่น Byte, Ushort, Ulong, และ UInteger • ข้อมูลแบบทศนิยม ได้แก่ Single, Double และ Decimal • ข้อมูลแบบตัวอักษร/ข้อความ ได้แก่ Charและ Stringโดย Char ใช้เก็บอักษร 1ตัวในระบบ Unicodeส่วน Stringใช้เก็บข้อความอาจมีแค่ 1ตัวก็ได้ • ข้อมูลชนิดอื่น ๆ ได้แก่ Boolean (เก็บค่าตรรกะ จริง-เท็จ), Date (เก็บวันเวลา) และ Object
การประกาศตัวแปร • รูปแบบ : Dim ชื่อตัวแปร As ชนิดของข้อมูล • การกำหนดค่าให้กับตัวแปร : ชื่อตัวแปร = ค่าที่กำหนด • กฎการตั้งชื่อตัวแปร • ใช้ตัวอักษรภาษาอังกฤษ ตัวเลข และเครื่องหมาย _ ในการตั้งชื่อได้ • ต้องไม่ซ้ำกับคำสงวนของภาษา Visual Basic .NET • ตัวอักษรตัวแรกของชื่อต้องไม่เป็นตัวเลข • ชื่อตัวแปรห้ามยาวเกิน 1,024 ตัวอักษร
Dim Private as Integer หรือ Dim dim as String เป็นต้น การประกาศตัวแปรใน VB • รูปแบบคำสั่ง Dim คือ Dim ชื่อตัวแปร [as ชนิดตัวแปร]ตัวอย่างเช่น Dim Name As String ‘ประกาศตัวแปร Name เป็นชนิด String Dim Surname As String ‘ประกาศตัวแปร Surname เป็นชนิด String • ในการประกาศตัวแปรใด ๆ ในภาษา VB มีกฏดังนี้ • ต้องขึ้นต้นด้วยตัวอักษร • สามารถผสมด้วยอักษร ตัวเลข หรือเครื่องหมายขีดล่าง ( _ ) เช่น Last_Name • ต้องไม่เกิน 1024 ตัวอักษร • ** ห้ามใช้จุดทศนิยม สัญลักษณ์ทางคณิตศาสตร์ เครื่องหมายทางการ และต้องไม่ซ้ำกับคำเฉพาะที่สงวนไว้ในคำสั่งโปรแกรม เช่น
การประกาศตัวแปรใน VB • หากต้องการประกาศตัวแปรที่มีชนิดเดียวกันสามารถประกาศภายในบรรทัดเดียวกันได้ Dim Score1 As Integer Dim Score2 As Integer Dim Score3 As Integer Dim Score1 as Integer , Score2 as Integer , Score3 as Integer - ข้อความที่อยู่หลังเครื่องหมายคำพูดเดี่ยวจะไม่มีผลต่อการทำงานของโปรแกรม - เครื่องหมาย * ใช้สำหรับประกาศขนาดของตัวแปรได้เช่น Dim a As String * 10 ‘ประกาศตัวแปรแบบ string ชื่อ a มีความยาว 10 ตัวอักษร
การประกาศและใช้งานตัวแปรการประกาศและใช้งานตัวแปร • ไม่จำเป็นต้องประกาศตัวแปรที่ตอนต้นของโปรแกรม ปกติการประกาศตัวแปรไว้ที่ส่วนต้นของโปรแกรมแต่ใน VB สามารถประกาศในจุดใด ๆ ก็ได้ที่ต้องการใช้งาน * การประกาศตัวแปรที่มีการเรียกใช้บ่อยและไม่มีการเปลี่ยนแปลงค่าตลอดทั้งโปรแกรมมักจะตั้งค่าตัวแปรเป็นแบบ ค่าคงที่ (Constant)มีรูปแบบดังนี้ Constชื่อค่าคงที่ Asชนิดข้อมูลของค่าคงที่ = ค่าที่กำหนด ตัวอย่าง Const Pi As Double = 3.14159265
การใช้งาน Option ประกอบการประกาศตัวแปร
การใช้งานตัวดำเนินการการใช้งานตัวดำเนินการ • คำสั่งสำหรับการคำนวณ จะประกอบไปด้วยข้อมูล 2ส่วน คือตัวดำเนินการคั่นกลาง ข้อมูลที่นำมาใช้กับตัวดำเนินการเราเรียกว่า “Operand” c = a + b Operand (a,b) Operand (c) ตัวดำเนินการ(=,+)
การใช้งานตัวดำเนินการ (ต่อ) • ตัวดำเนินการแบ่งได้ 3ประเภทคือ • Unary Operator ตัวดำเนินการที่ใช้ Operandเพียงตัวเดียว • Binary Operator ตัวดำเนินการที่ใช้Operandสองตัว • Ternary Operator ตัวดำเนินการที่ใช้Operandสามตัว • นอกจากนี้ยังแบ่งตัวดำเนินการตามรูปแบบการใช้งานได้ดังนี้ • Arithmetic Operator ตัวดำเนินการเพื่อการคำนวณทางคณิตศาสตร์ • Comparison Operator ตัวดำเนินการเพื่อการเปรียบเทียบ • Logical Operator ตัวดำเนินการเพื่อการคำนวณทางตรรกศาสตร์ • Bitwise Operator ตัวดำเนินการเพื่อการจัดการข้อมูลในระดับบิต • Assignment Operator ตัวดำเนินการเพื่อกำหนดค่าให้กับOperand • Concatenation Operator ตัวดำเนินการเพื่อเชื่อมข้อความ 2 ตัวเข้าด้วยกัน
ลำดับความสำคัญของตัวดำเนินการลำดับความสำคัญของตัวดำเนินการ
ตัวดำเนินการเปรียบเทียบ (Comparison Operator) • ผลการเปรียบเทียบจะได้ผลลัพธ์เป็นจริงหรือเท็จเท่านั้น
ตัวดำเนินการทางตรรกศาสตร์(Logical Operator) • ผลการเปรียบเทียบจะได้ผลลัพธ์เป็นจริงหรือเท็จเท่านั้น • AndAlsoต่างจาก Andคือ Andจะตรวจสอบเงื่อนไขทั้งสองฝั่ง แต่AndAlsoจะตรวจเงื่อนไขทางซ้ายหากพบว่าเป็น False จะให้ผลลัพธ์เป็น Falseทันทีโดยไม่ต้องตรวจสอบฝั่งขวา ส่วน OrElse ก็เช่นกัน หากเงื่อนไขฝั่งซ้ายเป็น Trueผลลัพธ์จะเป็น True โดยไม่พิจารณาเงื่อนไขฝั่งขวา นอกจากฝั่งซ้ายเป็น Falseจึงต้องมาพิจารณาฝั่งขวาด้วย
ตัวดำเนินการในระดับบิต(Bitwise Operator) • ต้องแปลงข้อมูลเป็นเลขฐานสองแล้วจึงใช้ตัวดำเนินการจัดการ
ตัวดำเนินการในการกำหนดค่า(Assignment Operator) • การใช้งานตัวดำเนินการสามารถใช้ได้หลายตัวไม่เฉพาะ = เพียงตัวเดียว
ตัวดำเนินการ If • เป็นการเปรียบเทียบค่าสองค่าซึ่งอยู่ใน Operandตัวแรก • ถ้าผลออกมาเป็นจริงให้ดึง Operandตัวที่ 2มาใช้ • ถ้าผลออกมาเป็นเท็จให้ดึง Operandตัวที่ 3มาใช้ ตัวดำเนินการนี้บางครั้งเรียกว่า “Conditional Operator” มีรูปแบบดังนี้ If (เงื่อนไขเปรียบเทียบ, ค่าเมื่อเงื่อนไขเป็นจริง,ค่าเมื่อเงื่อนไขเป็นเท็จ)
ลำดับความสำคัญของตัวดำเนินการลำดับความสำคัญของตัวดำเนินการ
การแปลงชนิดของข้อมูล • วิธีที่ 1 : Implicit Conversion • วิธีที่ 2 :แปลงชนิดของข้อมูลด้วย Data Type Conversion Function • วิธีที่ 3 :แปลงชนิดของข้อมูลด้วยฟังก์ชัน CTpye • วิธีที่ 4 :แปลงชนิดของข้อมูลด้วยออบเจ็กต์ Convert
วิธีที่ 1 :Implicit Conversion • การแปลงชนิดข้อมูลโดยไม่ชัดเจน คือ นำข้อมูลไปประมวลผลในคำสั่งเดียวกันหรือผ่าน Assignment Operator มักใช้แปลงข้อมูลที่เป็นประเภทเดียวกัน เช่น ตัวเลข หรือตัวอักษรเหมือนกัน • Implicit Conversion จะทำงานถูกต้องเมื่อแปลงข้อมูลจากชนิดที่ใช้พื้นที่เก็บขนาดเล็กไปสู่ชนิดที่ใช้พื้นที่เก็บขนาดใหญ่ • แต่จะเกิดการผิดพลาดเมื่อแปลงจากชนิดที่ใช้พื้นที่เก็บขนาดใหญ่ไปสู่ชนิดที่ใช้พื้นที่เก็บขนาดเล็ก
Implicit Conversionหรือ Automatic Type Conversion • ตัวอย่างเช่น 1Dim FirstNum, SecondNum As Double 2FirstNum = TextBox1.Text 3SecondNum = TextBox2.Text 4TextBox3.Text = Ans จากการกำหนดค่าให้ตัวแปรที่นำข้อมูลจาก TextBoxจะเป็นข้อมูลสตริง ถึงแม้จะป้อนเป็นตัวเลขเข้ามาก็ตาม เมื่อไปกำหนดตัวแปรเป็น DoubleVBก็จะทำการแปลงข้อมูลจาก Stringเป็น Double ทันทีในคำสั่งบรรทัด 2,3 ดังนั้น จากคำสั่งในบรรทัด4ข้อมูลในตัวแปร Ansจะถูกแปลงจาก Doubleเป็น Stringโดยอัตโนมัติ เนื่องจากค่าของ object: TextBoxนั้นเก็บค่าเป็นสตริง
การควบคุมการแปลงชนิดข้อมูลอัตโนมัติการควบคุมการแปลงชนิดข้อมูลอัตโนมัติ 4)กดปุ่ม Save เพื่อบันทึกคุณสมบัติของโปรเจ็ค • กำหนดค่าดังนี้ 1)คลิกขวาที่ชื่อโปรเจ็ค 2)เลือก Tabชื่อ Compile 3)กำหนด Option Strict ให้เป็น On
การควบคุมการแปลงชนิดข้อมูลอัตโนมัติการควบคุมการแปลงชนิดข้อมูลอัตโนมัติ • เมื่อกำหนดค่าแล้ว โปรแกรมจะแปลงชนิดข้อมูลอัตโนมัติให้ระหว่างชนิดข้อมูลแบบเลขจำนวนเท่านั้น รวมทั้ง Charไปเป็น String ด้วย และการแปลงจากชนิดข้อมูลที่มีช่วงค่าแคบไปค่ากว้างเท่านั้น • ดังตัวอย่าง รูปแสดงช่วงค่าของชนิดข้อมูลต่าง ๆ จากแคบไปกว้าง Dim intV As Integer Dim dblV As Double intV =dblV โค้ดนี้ไม่สามารถคอมไพล์ได้ เพราะ โปรแกรมจะแปลงชนิดข้อมูลของตัวแปรdblVจากDouble เป็นIntegerไม่ได้หากกำหนด option strict Dim intV As Integer Dim dblV As Double dblV = intV โค้ดนี้สามารถรัน, คอมไพล์ได้ โดย โปรแกรจะแปลงชนิดข้อมูลขอตัวแปรintV จาก Integer เป็นDoubleให้อัตโนมัติ
วิธีที่ 2 :แปลงชนิดของข้อมูลด้วย Data Type Conversion Function • การแปลงข้อมูลชนิดหนึ่งเป็นอีกชนิดด้วยฟังก์ชันที่เรียกว่า Data Type Conversion Function มีรูปแบบการใช้งานดังนี้ VarName = FuncName(expression) VarName คือ ตัวแปรที่จะรับผลการแปลง FuncName คือ ชื่อฟังก์ชันที่จะแปลง Expression คือ ข้อมูลที่ต้องการแปลง จะเป็นชนิดใดก็ได้
วิธีที่ 2 :แปลงชนิดของข้อมูลด้วย Data Type Conversion Function • ฟังก์ชันสำหรับใช้งานมีดังนี้
วิธีที่ 3 :แปลงชนิดของข้อมูลด้วยฟังก์ชัน CTpye • การใช้ฟังก์ชันที่ต้องการระบุชนิดข้อมูลไว้ด้วยในการแปลง มีรูปแบบดังนี้ VarName = CType (expression,TypeName) VarName คือ ตัวแปรที่จะรับผลการแปลง expression คือ ข้อมูลที่ต้องการแปลง TypeName คือ ชื่อชนิดข้อมูลที่ต้องการ ซึ่งต้องตรงกับชนิดข้อมูลของตัวแปร VarName
วิธีที่ 4 :แปลงชนิดของข้อมูลด้วยออบเจ็กต์ Convert • Convertเป็นออบเจ็กต์พิเศษสำหรับการแปลงข้อมูลให้เป็นชนิดที่ต้องการ มีรูปแบบดังนี้ VarName = Convert (TypeName) VarName คือ ตัวแปรที่จะรับผลการแปลง TypeName คือ ชื่อชนิดข้อมูลที่ต้องการ ซึ่งต้องตรงกับชนิดข้อมูลของตัวแปร VarName
ข้อควรระวังสำหรับการแปลงข้อมูลข้อควรระวังสำหรับการแปลงข้อมูล • การสูญเสียรายละเอียดของข้อมูลหลังจากการแปลง เช่นแปลงจากตัวเลขทศนิยมเป็นจำนวนเต็มรายละเอียดหลังจุดทศนิยม หรือการปัดเศษของตัวเลขอาจส่งผลได้ • การแปลงข้อมูลจากข้อมูลชนิดที่ใหญ่ไปเก็บในตัวแปรที่เล็กกว่า
สรุปตารางการแปลงข้อมูลสรุปตารางการแปลงข้อมูล ควรแปลงข้อมูลไปเก็บในตัวแปรที่มีขอบเขตใหญ่กว่า
การทำงานทางคณิตศาสตร์การทำงานทางคณิตศาสตร์ • เมธอดที่ใช้ทำงานทางคณิตศาสร์ได้แก่
Method (เมธอด) • เมธอด เป็นฟังก์ชันหรือโพรซีเยอร์ที่ถูกสร้างไว้ในคลาส เพื่อให้เป็นการกระทำของออบเจ็คที่สร้างขึ้นมากจากคลาสนั้น เช่น การสร้างปุ่ม (Object ชนิด Button) จะมีเมธอด Hideสำหรับซ่อนปุ่มก็ได้ • หรือ เมธอดของคณิตศาสตร์ จากตารางจะถูกรวบรวมไว้ในคลาส Mathภายใต้ Namespace System ดังนั้นในการเรียกใช้เมธอดเหล่านี้ต้องระบุ System.Math.นำหน้าด้วย เช่นตัวอย่างการหาค่า Logฐาน 10ของ 10000 Dim Result As Double Result = System.Math.Log10(10000) Msgbox(Result)
Namespace & Import • Namespaceคือวิธีการจัดหมวดหมู่ให้กับคลาสต่าง ๆ ใน .netรวมถึงคลาสที่โปรแกรมเมอร์สร้างขึ้นเอง เนมสเปซจึงเปรียบได้กับโฟลเดอร์ที่ใช้จัดหมวดหมู่ให้กับไฟล์บนดิสก์ เช่น • เนมสเปซเกี่ยวกับข้อมูล จะถูกรวบรวมไว้ที่ System.Data • เนมสเปซเกี่ยวกับภาพกราฟิก อยู่ที่ System.Drawing • Importคือคำสั่งที่ใช้อิมพอร์ตเนมสเปซ หรือคลาสก็ได้ ทำให้การเรียกใช้ไม่ต้องระบุชื่อเนมสเปซหน้าชื่อคลาสอีก แต่ถ้าอิมพอร์ตคลาสก็จะทำให้เรียกใช้พร็อพเพอร์ตี้และเมธอดในคลาสได้โดยไม่ต้องระบุชื่อเนมสเปซและชื่อคลาสหน้าชื่อ พร็อพเพอร์ตี้/เมธอด
ตัวอย่างการใช้คำสั่ง Import Import System.Math Public Class Form1 Private Sub Button1_Click Dim Result As Double Result = Log10(10000) Msgbox(Result) End Sub End Class
Exercise • จากชื่อตัวแปรที่กำหนดให้ตัวแปรใดใช้ได้และถ้าใช้ไม่ได้เพราะเหตุใด
Exercise • จงหาผลลัพธ์ของตัวแปร Result (ตัวแปร Result As Integer) • Result = 6+3*5 • Result = 12/2-4 • Result = 2+7*3-6 • Result = 3*(2+4) • Result = 10\3 • Result = 2*6^3 • Result = 47 Mod 15
Exercise • จงหาค่าของตัวแปร a และ b หลังจากรันแล้ว Dim a,b As Double a=3.5 b=2.6 a*=2.0 b/=2.0 b+=a
Exercise • จงรันโค้ดต่อไปนี้แล้วอธิบายข้อแตกต่างที่เกิดขึ้น Dim small As Byte Dim large As Integer large = 123 small=large Dim small As Byte Dim large As Integer large = 123 small=CByte(large) ถ้า ตัวแปร large = 12345 ผลรันจะเป็นอย่างไร จงอธิบาย
Exercise • จงเขียนโปรแกรมคำนวณค่า 2ค่าที่รับมาจาก user
Exercise • จงเขียนโปรแกรมคำนวนค่าดัชนีมวลกาย