กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
288 1
URL.หัวข้อ /
URL
เว็บกลับสู่สภาพปกติอีกทีแล้ว มาดู Algorythm ง่ายๆ กันดีกว่า
ช่วงอาทิตย์ที่ผ่านมา Server ของเราจะมีปัญหาในเรื่องของ Active Directories แต่วันนี้กลับเข้าสู่ภาวะปกติแล้วครับ ต้องขอขอบคุณทางด้าน Amdin ด้วยครับ
มีคนถามคำถามเกี่ยวกับ algorythm ไว้ที่
http://www.thaiasp.net/board2/question.asp?QID=7587
โดยมีคำถามดังนี้
รบกวนหน่อยนะครับ เวลาเราสร้างเว็บบอร์ดแล้วแสดงจำนวนเพจไซต์ สมมติว่า เป็น 20 แล้ว(แสดงจำนวนหน้าให้คลิ้กได้แล้ว)อยากให้จำนวนนับหัวข้อต่อไปนับต่อไปเรื่อย ๆ แต่ที่ผมทำพอคลิ้กหน้าต่อไปมันก็จะเริ่มนับ1 - 20 ใหม่ครับ ต้องทำอย่างไรครับ
ผมได้ตอบเขาไปว่าใช้ algorithm ธรรมดานี่แหล่ะ
เอาว่าแบ่งหน้าละ 20 หน้าที่ 1 จะต้องเริ่มจากข้อมูลที่ 1...20
หน้าที่ 2 จะเริ่มจากข้อมูลที่ 21...40
...
ถ้าใช้ For I = 1 To ข้อมูลสุดท้ายในหน้านี้
หน้า 1 จะได้ I = 1 To 20
PageSize = 20
จะต้องใช้สูตรอย่างไรในการทำให้มันได้ค่าออกมาเป็น 1-20
หน้า 2 จะได้ I = 1 To 20
PageSize = 20
จะต้องใช้สูตรอย่างไรในการทำให้มันได้ค่าออกมาเป็น 21-40
จะเห็นว่าหมายเลขหน้า (1 และ 2) น่าจะต้องเข้ามาอยู่ในสมการด้วย
และจากค่าที่เพิ่มขึ้นที่ละ 1 ฉะนั้น I ก็ต้องเข้ามามีส่วนด้วยเหมือนกัน
ลองคิดเล่นๆ ดูครับ
เฉลยคำตอบ
<%=((PageNo*PageSize)-PageSize) + I %>
Algorythm จะมีประโยชน์ต่อการคำนวณอย่างนี้มาก แต่ตอนเรียนนักศึกษาจะไม่ชอบกันเป็นอย่างมาก เพราะมองไม่เห็นประโยชน์ของมันที่จะนำไปใช้งานในชีวิตจริง และในห้องเรียนมักจะไม่มีตัวอย่างในชีวิตจริงให้นักศึกษาได้คิดตามเท่าไร
ผมเองไม่เคยรู้ว่า Algorythm มันคืออะไร ไม่เคยได้เรียนหรือเปิดตำราอ่าน แต่ในการเขียนโปรแกรมของผมจะมีงานลักษณะนี้อยู่หลายๆ ครั้ง จนผมมารู้ตอนหลังว่า มันคือ algorythm
ตรงนี้ผมไม่ได้บอกว่าผมเก่ง algorythm แต่อย่างใด ลึกๆ ลงไปผมก็งง หรือ ทำไม่ได้เหมือนกัน แต่ผมจะยกตัวอย่างให้ท่านได้เห็นว่า การเรียนจากการปฏิบัติจริงจะสนุก และจดจำได้ดีกว่าเรียนจากตำรา แต่ไม่รู้ว่าจะนำไปใช้ในการงานอย่างไร
ลองเขียนฟังก์ชันใน Access เพื่อทดสอบ algorythm ตัวนี้ก็ได้ครับ ดังนี้
Function MyAlgo1(PageNo As Integer, PageSize As Integer)
Dim I As Integer
For I = 1 To 20
Debug.Print ((PageNo * PageSize) - PageSize) + I
Next I
End Function
ทดสอบจะได้ผลดังนี้ครับ
? MyAlgo1(1,20)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
มีคนถามคำถามเกี่ยวกับ algorythm ไว้ที่
http://www.thaiasp.net/board2/question.asp?QID=7587
โดยมีคำถามดังนี้
รบกวนหน่อยนะครับ เวลาเราสร้างเว็บบอร์ดแล้วแสดงจำนวนเพจไซต์ สมมติว่า เป็น 20 แล้ว(แสดงจำนวนหน้าให้คลิ้กได้แล้ว)อยากให้จำนวนนับหัวข้อต่อไปนับต่อไปเรื่อย ๆ แต่ที่ผมทำพอคลิ้กหน้าต่อไปมันก็จะเริ่มนับ1 - 20 ใหม่ครับ ต้องทำอย่างไรครับ
ผมได้ตอบเขาไปว่าใช้ algorithm ธรรมดานี่แหล่ะ
เอาว่าแบ่งหน้าละ 20 หน้าที่ 1 จะต้องเริ่มจากข้อมูลที่ 1...20
หน้าที่ 2 จะเริ่มจากข้อมูลที่ 21...40
...
ถ้าใช้ For I = 1 To ข้อมูลสุดท้ายในหน้านี้
หน้า 1 จะได้ I = 1 To 20
PageSize = 20
จะต้องใช้สูตรอย่างไรในการทำให้มันได้ค่าออกมาเป็น 1-20
หน้า 2 จะได้ I = 1 To 20
PageSize = 20
จะต้องใช้สูตรอย่างไรในการทำให้มันได้ค่าออกมาเป็น 21-40
จะเห็นว่าหมายเลขหน้า (1 และ 2) น่าจะต้องเข้ามาอยู่ในสมการด้วย
และจากค่าที่เพิ่มขึ้นที่ละ 1 ฉะนั้น I ก็ต้องเข้ามามีส่วนด้วยเหมือนกัน
ลองคิดเล่นๆ ดูครับ
เฉลยคำตอบ
<%=((PageNo*PageSize)-PageSize) + I %>
Algorythm จะมีประโยชน์ต่อการคำนวณอย่างนี้มาก แต่ตอนเรียนนักศึกษาจะไม่ชอบกันเป็นอย่างมาก เพราะมองไม่เห็นประโยชน์ของมันที่จะนำไปใช้งานในชีวิตจริง และในห้องเรียนมักจะไม่มีตัวอย่างในชีวิตจริงให้นักศึกษาได้คิดตามเท่าไร
ผมเองไม่เคยรู้ว่า Algorythm มันคืออะไร ไม่เคยได้เรียนหรือเปิดตำราอ่าน แต่ในการเขียนโปรแกรมของผมจะมีงานลักษณะนี้อยู่หลายๆ ครั้ง จนผมมารู้ตอนหลังว่า มันคือ algorythm
ตรงนี้ผมไม่ได้บอกว่าผมเก่ง algorythm แต่อย่างใด ลึกๆ ลงไปผมก็งง หรือ ทำไม่ได้เหมือนกัน แต่ผมจะยกตัวอย่างให้ท่านได้เห็นว่า การเรียนจากการปฏิบัติจริงจะสนุก และจดจำได้ดีกว่าเรียนจากตำรา แต่ไม่รู้ว่าจะนำไปใช้ในการงานอย่างไร
ลองเขียนฟังก์ชันใน Access เพื่อทดสอบ algorythm ตัวนี้ก็ได้ครับ ดังนี้
Function MyAlgo1(PageNo As Integer, PageSize As Integer)
Dim I As Integer
For I = 1 To 20
Debug.Print ((PageNo * PageSize) - PageSize) + I
Next I
End Function
ทดสอบจะได้ผลดังนี้ครับ
? MyAlgo1(1,20)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R06508
Time: 0.1179s