การเขียนโปรแกรมในแบบที่คอมพิวเตอร์เข้าใจได้ (Programming Procedure)#
การตีโจทย์ปัญหาไปเป็นภาษาคอมพิวเตอร์ (Problem Solving)#
การตีโจทย์ปัญหาคือขั้นตอนในการทำความเข้าใจปัญหาที่เราต้องการแก้ไข และการแปลงปัญหานั้นให้เป็นภาษาที่คอมพิวเตอร์เข้าใจได้ ขั้นตอนนี้เกี่ยวข้องกับการสร้างอัลกอริธึม ซึ่งเป็นชุดของขั้นตอนที่ชัดเจนในการดำเนินการแก้ปัญหา เช่น การคำนวณ การตัดสินใจ หรือการทำซ้ำ
อัลกอริธึม#
อัลกอริธึม เป็นการกำหนดลำดับของขั้นตอนที่จำเป็นเพื่อให้ได้ผลลัพธ์ที่ต้องการ เช่น ถ้าเราต้องการหาผลรวมของตัวเลข 1 ถึง 10 อัลกอริธึมอาจจะระบุขั้นตอนในการเพิ่มตัวเลขแต่ละตัวเข้าไปในตัวแปรผลรวม
Algorithm 1 (การหาผลรวมของตัวเลข 1 ถึง 10)
Inputs ตัวเลข ( n = 10 )
Output ผลรวมของตัวเลขตั้งแต่ 1 ถึง ( n )
เริ่มต้น (Start)
กำหนดตัวแปร
sumให้เป็น 0กำหนดตัวแปร
numberให้เป็น 1ทำซ้ำ จนกว่า
numberจะมากกว่า 10:เพิ่มค่า
numberเข้าไปในsumเพิ่มค่า
numberขึ้น 1
แสดงผลค่า
sumสิ้นสุด (End)
Algorithm 2 (การตรวจสอบว่าเลขที่ป้อนเข้ามาเป็นเลขคู่หรือเลขคี่ โดยใช้การตรวจสอบการหารด้วย 2 เป็นหลัก)
Inputs ตัวเลข ( n )
Output ระบุว่า ( n ) เป็นเลขคู่หรือเลขคี่
เริ่มต้น (Start)
If ( n \mod 2 = 0 ) then:
แสดง “เลขคู่”
Else:
แสดง “เลขคี่”
สิ้นสุด (End)
ความเชื่อมโยงอัลกอริธึม กับการสร้างผังงาน และรหัสเทียม#
อัลกอริธึมสามารถแสดงได้ในรูปแบบต่าง ๆ เช่น ผังงาน (Flowchart) และซูโดโค้ด (Pseudo Code)
ผังงาน (Flowchart)#
ผังงานคือการเขียนอธิบายการทำงานของโปรแกรมในรูปแบบสัญลักษณ์หรือรูปภาพ ซึ่งสามารถเข้าใจได้ง่ายกว่าการอธิบายเป็นข้อความธรรมดา การใช้ผังงานช่วยให้เห็นลำดับขั้นตอน (Algorithm) การทำงานของโปรแกรมอย่างชัดเจน โดยเฉพาะเมื่อเจอโจทย์ที่มีความซับซ้อน การอธิบายขั้นตอนการแก้ปัญหาด้วยข้อความอาจทำให้เกิดความสับสนได้ แต่การใช้ผังงานช่วยทำให้การอธิบายง่ายขึ้นและมีความเป็นมาตรฐานในการใช้งานทั่วไป
สัญลักษณ์หลัก ๆ ที่ใช้ในผังงาน#
สี่เหลี่ยมผืนผ้า (Process): ใช้สำหรับแสดงการดำเนินการต่าง ๆ เช่น การคำนวณ หรือการประมวลผลข้อมูล
ตัวอย่าง: การคำนวณผลรวม
วงรี (Start/End): ใช้สำหรับระบุจุดเริ่มต้นและจุดสิ้นสุดของผังงาน
ตัวอย่าง: จุดเริ่มต้นของโปรแกรม
รูปเพชร (Decision): ใช้สำหรับแสดงการตัดสินใจที่ต้องเลือกเส้นทาง เช่น การตรวจสอบเงื่อนไข
ตัวอย่าง: การตรวจสอบว่าเลขเป็นคู่หรือคี่
สี่เหลี่ยมด้านขนาน (Input/Output): ใช้สำหรับแสดงการรับข้อมูลเข้า หรือการแสดงผลลัพธ์ออก
ตัวอย่าง: การรับค่าตัวเลขจากผู้ใช้ หรือการแสดงผลลัพธ์ของการคำนวณ
ลูกศร (Flow Line): ใช้เพื่อเชื่อมโยงระหว่างสัญลักษณ์ต่าง ๆ และแสดงลำดับการทำงาน
ตัวอย่าง: แสดงลำดับขั้นตอนการทำงาน
การใช้ผังงานช่วยให้สามารถสื่อสารแนวคิดได้อย่างมีประสิทธิภาพและลดความยุ่งเหยิงในการอธิบายขั้นตอนการทำงานของโปรแกรม ซึ่งเหมาะสำหรับการนำเสนอแนวคิดที่ซับซ้อนในรูปแบบที่เข้าใจง่าย
Fig. 4 Flowchart Symbols#
Image from https://thaiwinner.com/flow-chart/
Fig. 5 More Flowchart Symbols#
Image from https://thaiwinner.com/flow-chart/
การทำความเข้าใจ 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 แล้ว คุณสามารถทำการแสดงผลได้ง่ายๆ โดยทำตามขั้นตอนดังนี้:
คัดลอก Output:
คัดลอก output ของ flowchart ที่ได้จาก Python code
วางในเว็บไซต์:
ไปที่ flowchart.js.org
วาง output ที่คัดลอกลงในพื้นที่ที่กำหนด
ดูผลลัพธ์:
คุณจะสามารถเห็น 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