2011/08/30

Object Pascal - วนซ้ำ

สวัสดีครับ เมื่อวานลืมมาเขียนต่อ ต้องขอโทษด้วยนะครับ ^_^

ก่อนอื่นเลย เรามาเฉลยการบ้านกันก่อนดีกว่า

5)


6)


เอาหล่ะครับ มาขึ้นเรื่องของวันนี้ดีกว่า ซึ่งก็คือเรื่อง การวนซ้ำ (Looping) นั้นเอง

Loop ใน Object Pascal มีอยู่ 3 แบบด้วยกัน คือ
  - While
  - Repeat Until
  - For

ลองมาดู Loop แบบ While กันก่อนดีกว่า



    Loop จะทำงานเมื่อเงื่อนไขเป็นจริง พอทำเสร็จก็จะมาเช็คเงื่อนไขใหม่ ถ้ายังเป็นจริงอยู่ก็ทำซ้ำไปเรื่อย ๆ จนกว่าเงื่อนไขจะเป็นเท็จ

ต่อไปมาดู Loop แบบ Repeat Until กันดีกว่า



    เมื่อรันโปรแกรม จะทำคำสั่งระหว่าง repeat ... until ก่อน 1 รอบ แล้วไปเช็คเงื่อนไขว่าเป็นจริงหรือเท็จ ถ้าเป็น เท็จ จะวนลูปต่อ แต่ถ้าเป็น จริง จะหลุดออกจากลูป (repeat until แปลว่า ทำซ้ำ จนกระทั่ง)

Loop แบบที่ 3 เป็นลูปที่วนซ้ำโดยมีตัวนับ ลองดู code กันเลย


    ทำงานโดยขั้นแรก จะกำหนดค่าให้ I เป็น Low แล้วทำงานในลูป พอจบ 1 รอบ จะบวก I ขึ้น 1 (I := I + 1) แล้วทำซ้ำจนรอบสุดท้าย I เป็น High
  เช่น for I := 0 to 9 do เป็นการวนซ้ำ 10 รอบ (จาก 0 ถึง 9)

ลองดูตัวอย่างโปรแกรมรับค่าตัวเลขที่ไม่ติดลบ ถ้าติดลบให้รับค่าเข้ามาใหม่



ลองดูตัวอย่าง Loop for กันบ้าง


จะเห็นว่าค่า Low จะต้อง น้อยกว่า High เสมอ เพราะถ้า Low > High จะไม่มีการเข้าไปทำงานในลูป
  แต่ถ้าต้องการให้ไล่จากมากไปน้อย เราจะใช้ downto แทน to เช่น



สำหรับลูป while จะให้ดู code โปรแกรมหาผลรวมของตัวเลขจำนวนเต็มที่รับเข้ามาจนกว่าผลรวมจะมีค่ามากกว่ากว่าหรือเท่ากับ 1 หมื่น



จบแล้วครับ สั้นนิดเดียวเอง ต่อไปก็ถึงการบ้านแล้ว ^_^

7) จงเขียนโปรแกรมรับค่าจำนวนเต็ม แล้วใช้ for วนลูปพิมพ์สูตรคูณแม่ที่รับเข้ามา
8) จงเขียนโปรแกรมพิมพ์สูตรคูณตั้งแต่แม่ 2 ถึง แม่ 12 โดยใช้ for
9) จงเขียนโปรแกรมรับค่าเข้ามาเรื่อย ๆ จนกว่าค่าที่รับเข้ามาจะน้อยกว่าค่าที่รับเข้ามาก่อนหน้า
10) จงเขียนโปรแกรมรับค่าเข้ามาเรื่อย ๆ จนกว่าค่าที่รับเข้ามาจะน้อยกว่าค่าที่รับเข้ามาก่อนหน้า 2 ครั้งติดกัน
11) จงเขียนโปรแกรมหาค่าเฉลี่ยเงินเดือน ให้รับค่าเงินเดือนเข้ามาจนกว่าค่าที่รับเข้ามาจะน้อยกว่าหรือเท่ากับ 0
12) จงเขียนโปรแกรมรับค่าจำนวนเต็มแล้วหาค่า Factorial ( ! ) ซึ่ง
0! = 1
1! = 1
2! = 2 * 1
3! = 3 * 2 * 1
n! = n * n-1 * n-2 * ... * 1 เมื่อ n > 0

No comments:

Post a Comment