หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 1 1 5 6 5 4

7 ธันวาคม พ.ศ.2549
469 Users On-Line.
Visitors - Page views
 8 4 1 1 0 1 7
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

การประยุกต์ใช้งาน MS Visual Basic 6.0 กับการพัฒนาสื่อการเรียนการสอน

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 7/12/2550 15:15:00
(อ่าน : 26299) 

ตัวอย่างของบทความชิ้นนี้ จะว่าไปแล้วแทบจะไม่ต้องใช้ตรรกะ (Logic) อะไรที่มันยุ่งยากเลยครับพี่น้อง เพียงแต่ผมอยากนำเสนองานแบบ CAI (Computer Assisted Instruction) ในลักษณะของการโต้ตอบกับผู้เรียนได้ (Interactive) ในอีกรูปแบบหนึ่ง อย่างน้อยๆก็หวังให้ครูผู้สอนรุ่นใหม่ หรือ ครูพันธุ์ใหม่ทั้งหลาย ได้มีแนวคิด หรือ เกิดแรงบันดาลใจ ในการนำคอมพิวเตอร์มาช่วยประยุกต์ใช้งานในการเรียน การสอนให้เกิดประโยชน์มากขึ้น ทีแรกผมก็กะจะทำให้เห็นเป็นตัวอย่างบางส่วนเท่านั้นแหละครับ ... พี่น้อง ทำไปทำมาก็เอ้า ... เอาให้มันสมบูรณ์แบบไปเลยดีกว่า และผมก็ทำเป็นชุดติดตั้งเอาไว้ให้กับบรรดาพ่อแม่ ผู้ปกครอง ดาวน์โหลดของฟรี ไม่เสียกะตังค์ ไปให้ลูกให้หลานได้ลองเล่นดูกัน ... อนึ่ง ... พี่น้องครับ อย่าแค่ไปหวังให้เด็กกดแป้นคีย์บอร์ด และลากเมาส์เป็นแค่นั้นน่ะครับ ต้องสอน และแนะนำเด็กๆให้หัดเขียนตัวเลขลงบนกระดาษด้วยล่ะ ... เหอๆๆๆๆ ... ประเดี๋ยวเด็กๆจะเขียนหนังสือกันไม่เป็น


หน้าตาโปรแกรม


การบวกเลข

 

ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
ดาวน์โหลดชุดติดตั้งโปรแกรม (Arithmetic Software) - Setup Program

Component ที่เลือกมาใช้งาน ... คราวนี้ผมเลือก Flash เข้ามาช่วยด้วยครับ

สาระสำคัญในการบวกเลข
' โปรแกรมย่อยเพื่อใช้ในการสุ่มตัวเลข ... ผมเลือกใช้งานฟังค์ชั่นการสุ่มที่ผมเคยนำเสนอมาแล้วน่ะครับ
' ดูได้จากโมดูล gRandom.bas
' จากฟังค์ชั่นการสุ่มนี้ มันมีประสิทธิภาพที่ดีกว่าการสั่ง Randomize ที่ติดมากับ Visual Basic ครับพี่น้อง ...
Sub RandomNumber()
Dim MaxNumber As Integer
    ' เลือกจำนวนหลักที่ต้องการ
    Select Case Digit
        Case 1:
            MaxNumber = 9
            lblCarry.Visible = False
        Case 2:
            MaxNumber = 99
            lblCarry.Visible = True
        Case 3:
            MaxNumber = 999
            lblCarry.Visible = True
        Case 4:
            MaxNumber = 9999
            lblCarry.Visible = True
    End Select
    
    ' สุ่มค่าวันเวลาก่อน ... สำมะคัญน่ะครับตัวนี้
    RandShuffle Date$ + Time$ + Str$(Timer)
    
    ' ส่งค่าต่ำสุด และ ค่า สูงสุดไปยังฟังค์ชั่นสุ่มตัวเลขจำนวนเต็ม
    lblSetNumber.Caption = RandInteger(1, MaxNumber)
    lblOperand.Caption = RandInteger(1, MaxNumber)
    
End Sub

' การตรวจคำตอบ
Private Sub cmdAnswer_Click()
Dim i As Byte
Dim Result As Integer
    ' หากยังไม่มีคำตอบให้ออกจากโปรแกรมย่อย พร้อมกับ Focus ไปยัง Control ที่ยังไม่ได้ตอบ
    For i = 0 To Digit - 1
        If Trim(txtAnswer(i).Text) = "" Or Len(Trim(txtAnswer(i).Text)) = 0 Then
            MsgBox "น้องๆต้องกรอกตัวเลขในช่องที่ " & i + 1 & " ก่อนด้วยน่ะค่ะ.", vbOKOnly + vbExclamation, "รายงานสถานะ"
            txtAnswer(i).SetFocus
            Exit Sub
        End If
    Next
    ' การนำตัวอักขระ (Character) มาเรียงต่อๆกันไปด้วยเครื่องหมาย +
    ' จากนั้นแปลงค่าให้อยู่ในรูปแบบของตัวเลข (Number)
    Select Case Digit
        Case 1:
            Result = Val(txtAnswer(1).Text + txtAnswer(0).Text)
        Case 2:
            Result = Val(txtAnswer(2).Text + txtAnswer(1).Text + txtAnswer(0).Text)
        Case 3:
            Result = Val(txtAnswer(3).Text + txtAnswer(2).Text + txtAnswer(1).Text + txtAnswer(0).Text)
        Case 4:
            Result = Val(txtAnswer(4).Text + txtAnswer(3).Text + txtAnswer(2).Text + txtAnswer(1).Text + txtAnswer(0).Text)
    End Select
    ' ทำได้ถูกต้อง
    ' ก็ไม่มีอะไรมาก ก็นำค่าใน Label Control ของตัวตั้งกับตัวบวกมารวมกัน แล้วไปเปรียบเทียบกับค่าใน TextBox Control ที่เด็กตอบลงไป
    If (Val(lblSetNumber.Caption) + Val(lblOperand.Caption)) = Result Then
        'MsgBox "เก่งจังเลยค่ะ ... หนูทำได้ถูกต้องแล้วค่ะ.", vbOKOnly + vbInformation, "รายงานสถานะ"
        
        ' การใช้งาน Shockwave Flash ...
        ' พี่น้องลองไปแก้ไขเพิ่มเติมเพื่อให้มันมีการแสดงผลกาีรสุ่ม Flash (มีอยู่ในบทความของผมแล้ว)
        ' เพื่อสร้างแรงจูงใจ หรือ กำลังใจให้กับเด็กผู้เรียนด้วยน่ะครับ
        ' เสียงที่พี่น้องได้ยินน่ะ เป็นเสียงของผมเองครับ ... 
        ' ผมใช้โปรแกรมง่ายๆอย่าง Acoustica กับ GoldWave เข้าช่วย ... โอกาสหน้าก็จะทำการสาธยายให้ฟังอีกทีนึงครับ
        Flash.Playing = True
        Flash.Movie = App.Path & "\Right.swf"
        Right = Right + 1
    ' ทำผิด
    Else
        'MsgBox "หนูทำไม่ถูกน่ะค่ะ ... พยายามทำใหม่ด้วยค่ะ.", vbOKOnly + vbExclamation, "รายงานสถานะ"
        Flash.Playing = True
        Flash.Movie = App.Path & "\Wrong.swf"
        Wrong = Wrong + 1
    End If
    
    ' เริ่มต้นตั้งโจทย์ใหม่
    Call SetupScreen
    Call RandomNumber
    txtAnswer(0).SetFocus
End Sub

สาระสำคัญในการลบเลข
Sub RandomNumber()
Dim Temp As Integer
Dim MaxNumber As Integer
    Select Case Digit
        Case 1:
            MaxNumber = 9
            lblCarry.Visible = False
        Case 2:
            MaxNumber = 99
            lblCarry.Visible = True
        Case 3:
            MaxNumber = 999
            lblCarry.Visible = True
        Case 4:
            MaxNumber = 9999
            lblCarry.Visible = True
    End Select
    
    ' สุ่มค่าวันเวลาก่อน
    RandShuffle Date$ + Time$ + Str$(Timer)
    
    ' ส่งค่าต่ำสุด และ ค่า สูงสุดไปยังฟังค์ชั่นสุ่มตัวเลขจำนวนเต็ม
    lblSetNumber.Caption = RandInteger(1, MaxNumber)
    lblOperand.Caption = RandInteger(1, MaxNumber)
    
    ' *** เทคนิคของการสลับค่า หรือ Swap ***
    ' ตรวจสอบว่าตัวตั้งมีค่าน้อยกว่า ตัวกระทำหรือไม่
    ' หากใช่ก็ทำการสลับเปลี่ยน (SWAP) ค่าทั้งคู่ซ่ะก็หมดเรื่อง ...
    ' ซึ่งไม่ต้องการให้ตัวตั้งมีค่าน้อยกว่าตัวลบนั่นเอง
    ' ดังนั้นเพื่อไม่ให้เสียเวลา เราจึงไม่ต้องไปทำการสุ่มค่าใหม่ก็ได้น่ะครับ ... พี่น้อง
    If Val(lblSetNumber.Caption) < Val(lblOperand.Caption) Then
        Temp = lblOperand.Caption
        lblOperand.Caption = lblSetNumber.Caption
        lblSetNumber.Caption = Temp
    End If
End Sub

เพิ่มเติม:
' พี่น้องครับ ... เนื่องจากผมใช้ MDI Form ซึ่งทำให้ฟอร์มของการบวกและลบสามารถทำการปิดหน้าจอได้
' ผมอยากให้พี่น้องทำการทดสอบค่าของตัวแปรทั้ง 3 ทางด้านล่างนี้ โดยใส่ Comment ให้มัน พร้อมกับ
' ใส่ Comment เอาไว้ที่ Form_Unload แล้วพี่น้องลองดูซิครับว่าจะเกิดอะไรขึ้น ?????
Private Sub Form_Load()
    ' ต้องกำหนดค่าเริ่มต้น ให้กับตัวแปร กรณีที่โหลดฟอร์มขึ้นมาใหม่ทุกครั้ง
    ' แต่ที่ผมทำ Comment เอาไว้ ก็เพื่อให้พี่น้องไปสังเกตในเหตุการณ์ Form_Unload ด้วย
    ' ใน Form_Unload ผมมีโค้ด Set frmSubtract = Nothing เอาไว้ ซึ่งหากไม่มีโค้ดตัวนี้ (ใส่ ' Comment ให้มัน)
    ' ค่าในตัวแปรจะยังคงอยู่ ... ลองเล่นดูเอาเถิดครับ ... พี่น้อง
    'Right = 0
    'Wrong = 0
    'Total = 0
    
    ' เลือกจำนวนหลักก่อน ... จากนั้นในโปรแกรมย่อย optDigit_Click จะทำการเคลียร์หน้าจอเอง
    Call optDigit_Click(0)
    Call RandomNumber
End Sub

Private Sub Form_Unload(Cancel As Integer)
    'Set frmAdd = Nothing
End Sub

เป็นอย่างไรกันบ้างล่ะครับ ... โปรแกรมเล็กๆกระทัดรัดแบบนี้ สามารถนำมาประยุกต์ใช้งานกับระบบการเรียนการสอนได้ดีขนาดไหนล่ะ เอาไว้โอกาสหน้าผมจะนำเสนอ Visual Basic 6.0 ผสมกับ Flash ใ้ห้สมบูรณ์แบบยิ่งขึ้นไปกว่านี้ ... โปรดติดตามชมกันได้ในตอนต่อไป ... สู้เขาต่อไปทาเคชิ


จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
Email: [email protected] หรือ โทร. 08-6862-6560