การเขียนโปรแกรมในแบบที่คอมพิวเตอร์เข้าใจได้ (Programming Procedure)

Contents

การเขียนโปรแกรมในแบบที่คอมพิวเตอร์เข้าใจได้ (Programming Procedure)#

การตีโจทย์ปัญหาไปเป็นภาษาคอมพิวเตอร์ (Problem Solving)#

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


อัลกอริธึม#

อัลกอริธึม เป็นการกำหนดลำดับของขั้นตอนที่จำเป็นเพื่อให้ได้ผลลัพธ์ที่ต้องการ เช่น ถ้าเราต้องการหาผลรวมของตัวเลข 1 ถึง 10 อัลกอริธึมอาจจะระบุขั้นตอนในการเพิ่มตัวเลขแต่ละตัวเข้าไปในตัวแปรผลรวม

Algorithm 1 (การหาผลรวมของตัวเลข 1 ถึง 10)

Inputs ตัวเลข ( n = 10 )

Output ผลรวมของตัวเลขตั้งแต่ 1 ถึง ( n )

  1. เริ่มต้น (Start)

  2. กำหนดตัวแปร sum ให้เป็น 0

  3. กำหนดตัวแปร number ให้เป็น 1

  4. ทำซ้ำ จนกว่า number จะมากกว่า 10:

    • เพิ่มค่า number เข้าไปใน sum

    • เพิ่มค่า number ขึ้น 1

  5. แสดงผลค่า sum

  6. สิ้นสุด (End)

Algorithm 2 (การตรวจสอบว่าเลขที่ป้อนเข้ามาเป็นเลขคู่หรือเลขคี่ โดยใช้การตรวจสอบการหารด้วย 2 เป็นหลัก)

Inputs ตัวเลข ( n )

Output ระบุว่า ( n ) เป็นเลขคู่หรือเลขคี่

  1. เริ่มต้น (Start)

  2. If ( n \mod 2 = 0 ) then:

    • แสดง “เลขคู่”

  3. Else:

    • แสดง “เลขคี่”

  4. สิ้นสุด (End)


ความเชื่อมโยงอัลกอริธึม กับการสร้างผังงาน และรหัสเทียม#

อัลกอริธึมสามารถแสดงได้ในรูปแบบต่าง ๆ เช่น ผังงาน (Flowchart) และซูโดโค้ด (Pseudo Code)

ผังงาน (Flowchart)#

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

สัญลักษณ์หลัก ๆ ที่ใช้ในผังงาน#

  1. สี่เหลี่ยมผืนผ้า (Process): ใช้สำหรับแสดงการดำเนินการต่าง ๆ เช่น การคำนวณ หรือการประมวลผลข้อมูล

    • ตัวอย่าง: การคำนวณผลรวม

  2. วงรี (Start/End): ใช้สำหรับระบุจุดเริ่มต้นและจุดสิ้นสุดของผังงาน

    • ตัวอย่าง: จุดเริ่มต้นของโปรแกรม

  3. รูปเพชร (Decision): ใช้สำหรับแสดงการตัดสินใจที่ต้องเลือกเส้นทาง เช่น การตรวจสอบเงื่อนไข

    • ตัวอย่าง: การตรวจสอบว่าเลขเป็นคู่หรือคี่

  4. สี่เหลี่ยมด้านขนาน (Input/Output): ใช้สำหรับแสดงการรับข้อมูลเข้า หรือการแสดงผลลัพธ์ออก

    • ตัวอย่าง: การรับค่าตัวเลขจากผู้ใช้ หรือการแสดงผลลัพธ์ของการคำนวณ

  5. ลูกศร (Flow Line): ใช้เพื่อเชื่อมโยงระหว่างสัญลักษณ์ต่าง ๆ และแสดงลำดับการทำงาน

    • ตัวอย่าง: แสดงลำดับขั้นตอนการทำงาน

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

_images/Flow-Chart-1.png

Fig. 4 Flowchart Symbols#

_images/Flow-Chart-2.png

Fig. 5 More Flowchart Symbols#

การทำความเข้าใจ Flowcharts: รูปแบบต่าง ๆ และตัวอย่าง#

1. แบบลำดับ (Sequence Process)#

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

ตัวอย่าง: คำนวณผลรวมของตัวเลข#

  • รับค่าตัวเลขจากผู้ใช้

  • คำนวณผลรวมของตัวเลข

  • แสดงผลลัพธ์

from pyflowchart import Flowchart

# Your Python code that checks if a number is even or odd
code = """
# Your Python code that calculates the sum of numbers
def calculate_sum():
    numbers = input("Enter numbers separated by space: ")
    number_list = map(int, numbers.split())
    total_sum = sum(number_list)
    print("Sum:", total_sum)
"""

# Create the flowchart from the code
flowchart = Flowchart.from_code(code)

# Print the flowchart in the mermaid format
print(flowchart.flowchart())
st70=>start: start calculate_sum
io72=>inputoutput: input: 
op75=>operation: numbers = input('Enter numbers separated by space: ')
op77=>operation: number_list = map(int, numbers.split())
op79=>operation: total_sum = sum(number_list)
sub81=>subroutine: print('Sum:', total_sum)
e83=>end: end calculate_sum

st70->io72
io72->op75
op75->op77
op77->op79
op79->sub81
sub81->e83

การแสดงผล Flowchart จาก Python Code#

เมื่อคุณสร้าง output ของ flowchart จาก Python code แล้ว คุณสามารถทำการแสดงผลได้ง่ายๆ โดยทำตามขั้นตอนดังนี้:

  1. คัดลอก Output:

    • คัดลอก output ของ flowchart ที่ได้จาก Python code

  2. วางในเว็บไซต์:

    • ไปที่ flowchart.js.org

    • วาง output ที่คัดลอกลงในพื้นที่ที่กำหนด

  3. ดูผลลัพธ์:

    • คุณจะสามารถเห็น flowchart ที่ถูกสร้างขึ้นจาก output ของคุณ

คำอธิบายเกี่ยวกับ map(int, ...)#

ฟังก์ชัน map(int, ...) ใน Python ใช้สำหรับนำฟังก์ชัน int ไปใช้กับแต่ละรายการใน iterable (เช่น รายการหรือตัวอักษร) เพื่อแปลงแต่ละรายการเป็นจำนวนเต็ม

ตัวอย่างเช่น ในโค้ดด้านล่าง:

numbers = input("Enter numbers separated by space: ")
number_list = map(int, numbers.split())
  • numbers.split() จะทำการแยกสตริงที่มีตัวเลขโดยใช้ช่องว่างเป็นตัวแบ่งและส่งกลับเป็นรายการของสตริง

  • map(int, ...) จะทำการแปลงแต่ละสตริงในรายการนั้นเป็นจำนวนเต็ม

ดังนั้นถ้าผู้ใช้ป้อน “1 2 3” รายการ number_list จะกลายเป็น iterable ของจำนวนเต็ม: 1, 2, 3 ซึ่งมีประโยชน์สำหรับการดำเนินการทางคณิตศาสตร์ต่อไปในโค้ด


2. แบบทางเลือก (Selection)#

Flowchart แบบทางเลือก ใช้ในการตัดสินใจระหว่างหลายทางเลือก ขึ้นอยู่กับเงื่อนไขที่กำหนด คำสั่งที่ใช้โครงสร้างแบบทางเลือก ได้แก่ if, else, และ switch...case

ตัวอย่าง: การตรวจสอบว่าเลขที่ใส่เข้ามาเป็นเลขคู่หรือเลขคี่#

  • ตรวจสอบว่าเลขที่ผู้ใช้ป้อนเป็นเลขคู่หรือเลขคี่

  • หากเลขนั้นเป็นคู่ แสดง “เลขคู่”

  • หากเลขนั้นเป็นคี่ แสดง “เลขคี่”

from pyflowchart import Flowchart

# Your Python code that checks if a number is even or odd
code = """
def check_even_odd(number):
    if number % 2 == 0:
        print("Even")
    else:
        print("Odd")
"""

# Create the flowchart from the code
flowchart = Flowchart.from_code(code)

# Print the flowchart in the mermaid format
print(flowchart.flowchart())
st26=>start: start check_even_odd
io28=>inputoutput: input: number
cond32=>condition: if ((number % 2) == 0)
sub36=>subroutine: print('Even')
e43=>end: end check_even_odd
sub40=>subroutine: print('Odd')

st26->io28
io28->cond32
cond32(yes)->sub36
sub36->e43
cond32(no)->sub40
sub40->e43

3. แบบทำซ้ำ (Iteration Statements)#

Flowchart แบบทำซ้ำ ใช้เพื่อแสดงลำดับขั้นตอนที่ดำเนินการซ้ำไปซ้ำมาจนกว่าจะถึงเงื่อนไขที่กำหนด คำสั่งที่ใช้โครงสร้างแบบทำซ้ำ ได้แก่ for, while, และ do...while

ตัวอย่าง: คำนวณผลรวมของตัวเลขตั้งแต่ 1 ถึง 10#

  • คำนวณผลรวมของตัวเลขตั้งแต่ 1 ถึง 10

  • ใช้การทำซ้ำเพื่อเพิ่มค่าตัวเลขในแต่ละรอบ

from pyflowchart import Flowchart

# Your Python code to calculate the sum of numbers from 1 to 10
code = """
def sum_from_1_to_10():
    total_sum = 0
    for number in range(1, 11):  # ใช้ range(1, 11) เพื่อรวม 1 ถึง 10
        total_sum += number
    print("ผลรวมของตัวเลขตั้งแต่ 1 ถึง 10 คือ:", total_sum)
"""

# Create the flowchart from the code
flowchart = Flowchart.from_code(code,simplify=False)

# Print the flowchart in the mermaid format
print(flowchart.flowchart())
st174=>start: start sum_from_1_to_10
io176=>inputoutput: input: 
op179=>operation: total_sum = 0
cond182=>condition: for number in range(1, 11)
op189=>operation: total_sum += number
sub193=>subroutine: print('ผลรวมของตัวเลขตั้งแต่ 1 ถึง 10 คือ:', total_sum)
e195=>end: end sum_from_1_to_10

st174->io176
io176->op179
op179->cond182
cond182(yes)->op189
op189(left)->cond182
cond182(no)->sub193
sub193->e195

ซูโดโค้ด (Pseudo Code)#

ซูโดโค้ด (Pseudo Code) คือการเขียนรหัสที่มีลักษณะคล้ายกับโค้ดจริง แต่ใช้ภาษาที่เข้าใจง่ายเพื่อให้คนอ่านสามารถเข้าใจได้ง่าย โดยไม่ต้องสนใจรายละเอียดเกี่ยวกับไวยากรณ์ของภาษาการเขียนโปรแกรม

ตัวอย่างที่ 1: ตรวจสอบว่าเลขคู่หรือเลขคี่#

FUNCTION check_even_odd(number)
IF number MOD 2 == 0
THEN PRINT "เลขคู่"
ELSE PRINT "เลขคี่"
END IF
END FUNCTION

ตัวอย่างที่ 2: คำนวณผลรวมของตัวเลข#

FUNCTION calculate_sum()
DECLARE total_sum AS INTEGER
SET total_sum = 0
INPUT "ป้อนตัวเลขที่แยกด้วยช่องว่าง" INTO numbers
FOR EACH number IN numbers
    SPLIT BY SPACE
    DO total_sum = total_sum + CONVERT(number TO INTEGER)
END FOR
PRINT "ผลรวมคือ:", total_sum END FUNCTION

ตัวอย่างที่ 3: คำนวณผลรวมของตัวเลขตั้งแต่ 1 ถึง 10#

FUNCTION sum_from_1_to_10()
DECLARE total_sum AS INTEGER
SET total_sum = 0
FOR number FROM 1 TO 10
    DO total_sum = total_sum + number
END FOR
PRINT "ผลรวมของตัวเลขตั้งแต่ 1 ถึง 10 คือ:", total_sum END FUNCTION