คำสั่งเทียม (Pseudo-Code)
posted on 10 Jul 2011 21:10 by maiiamzของโปรแกรมอย่างมีโครงสร้าง ซึ่งแบ่งออกเป็น 3 ประเภทคือ
- โครงสร้างลำดับ (Sequential Structure or Straight-line) เป็นขั้นตอน
คำสั่งที่มีลำดับการทำงานจากบนลงล่าง
ตัวอย่างที่ 2.3 แสดงการวิเคราะห์ปัญหาการหาพื้นที่ของรูปสามเหลี่ยม
โจทย์/ปัญหา : ให้หาพื้นที่สามเหลี่ยม ข้อมูลเข้า : ความยาวของส่วนสูง และฐาน ผลลัพธ์ : พื้นที่สามเหลี่ยมเป็นตัวเลขที่มีทศนิยม ขบวนการทำงานเฉพาะ : สูตรพื้นที่สามเหลี่ยม = 1/2 x ฐาน x สูง
ข้อมูลเข้า : รัศมี (r) หรือเส้นผ่าศูนย์กลาง (d) และความสูง (h) ผลลัพธ์ : พื้นที่สามเหลี่ยว ขบวนการทำงานเฉพาะ : สูตรปริมาตรทรงกระบอก = Pi x r2 x h หรือ Pi x d2/4 x h
- สูตรการหาปริมาตรทรงกระบอก
ปริมาตร = pi x รัศมี2 x ความสูง หรือ ปริมาตร = pi x (เส้นผ่าศูนย์กลาง/2)2 x ความสูง
- ใช้ตัวแปรหรือชื่อย่อแทน
v = pi x r2 x h หรือ v = pi x (d/2)2 x h
- ผังงาน
- สูตรการหาปริมาตรทรงกระบอก
- โครงสร้างแบบทางเลือก (Decision or Selection or Branching
Structure) เป็นขั้นตอน คำสั่งที่มีการเปรียบเทียบ เพื่อให้กำหนดทาง
เลือกให้ตัดสินใจทำหรือไม่ทำหรือทำอย่างใดอย่างหนึ่ง
- กรณีมี 1 ทางเลือก ใช้ IF..THEN.. structure
ตัวอย่าง
IF X = 4 THEN X = X + 1
- กรณีมี 2 ทางเลือก ใช้ IF..THEN..ELSE structure
ตัวอย่าง
IF X = 4 THEN X = X + 1 ELSE X = X + 2
- กรณีมีมากกว่า 2 ทางเลือก ใช้ Case structure
ตัวอย่าง
CASE n OF 4 : x = x + 1
5 : x = x + 2
6 : x = x + 3
ELSE x = x + 0 END ตัวอย่างที่ 2.5 โครงสร้างที่มีทางเลือกหรือการตัดสินใจ (Decision or
Selection Structure)
โจทย์/ปัญหา : หาค่าของตัวแปร X ในสมการ Polynomial ข้อมูลเข้า : ค่าที่กำหนดเพื่อหาค่า X คือ a, b, c ผลลัพธ์ : ค่าของตัวแปร X ที่เป็นไปได้จำนวน 2 ค่า ขบวนการทำงาน :
Refinement
- ถ้าค่า a มีค่าเป็น 0 ทำให้ตัวหารเป็น 0 ไม่สามารถหาผลลัพธ์ได้
ดังนั้น วิธีแก้คือนำค่า a แทนค่าในสมการจะได้ว่า
- ถ้า b2-4ac มีค่าเป็นลบ ( < 0 ) เมื่อถอดรากจะได้ค่าเชิงซ้อน
- ค่า + - ไม่สามารถเก็บลงตัวแปรตัวเดียวได้ ต้องแยกเป็น 2
คำสั่งเก็บลงตัวแปร 2 ตัว
ตัวแปรไว้ก่อน แล้วจึงนำค่าตัวแปรนั้นไปใช้ในหลาย ๆ ที่ของโปรแกรมได้
ผังงานแสดงการทำงานที่ได้รับการปรับปรุง
- ถ้าค่า a มีค่าเป็น 0 ทำให้ตัวหารเป็น 0 ไม่สามารถหาผลลัพธ์ได้
- กรณีมี 1 ทางเลือก ใช้ IF..THEN.. structure
- โครงสร้างวนรอบ (Looping or Repetition or Iterative Structure) เป็น
ขั้นตอนคำสั่งแสดงการทำงานซ้ำๆกับตามจำนวนครั้งที่กำหนดรอบที่
จำกัด แบ่งออกเป็น 3 ประเภท ดังนี้
- FOR..DO เป็นคำสั่งทำงานซ้ำๆ กันตามจำนวนครั้งที่กำหนด
Pseudo-code
FOR < var > = < first value > TO < last value > STEP < step size > DO
Procedure;
var : ตัวแปรที่ใช้เป็นตัวนับ (Counter) first value : ค่าเริ่มต้น last value : ค่าสุดท้าย step size : ส่วนเพิ่ม Procedure : ประกอบด้วยคำสั่งอย่างน้อย 1 คำสั่ง
ค่าตัวแปร < var > ในรอบที่ K th = < first value > + < K-1 > x < step size >
ตัวอย่าง
FOR I := 2 TO N STEP 2 DO มีจำนวนรอบ = N-2/2 + 1 = N/2 รอบ
ค่าของ I ในรอบที่ 5th = 2+(5-1)*2 = 10
ตัวอย่าง
FOR J = 200 TO 101 STEP -1 DO
มีจำนวนรอบ = (101 - 200) / (-1) +1 = (-99) / (-1) + 1 = 100 รอบ ค่าของ J ในรอบที่ 75th = 200 + (75-1) x (-1) = 200-74 = 126
ขั้นตอนการทำงาน
คำสั่งเทียม ความหมาย Set Sum to 0 กำหนดค่าผลรวมเริ่มต้นเป็นศูนย์ For I = 1 to 100 do ทำซ้ำตั้งแต่ I = 1 ถึง 100 Sum = Sum + I ผลรวม = ผลรวม + I Mean = Sum/100 คำนวณค่าเฉลี่ย Mean = SUM/100
- WHILE..DO คำสั่งที่ทำงานซ้ำๆ แบบมีการตรวจสอบเงื่อนไขก่อน ถ้า
เงื่อนไขเป็นจริงจึงจะทำคำสั่งที่อยู่ในวงรอบนั้น และจะกระทำไปจนกระทั่ง
เงื่อนไขเป็นเท็จ จึงจะออกจากวงรอบการทำงาน และทำคำสั่งถัดไป
ตัวอย่าง
Total = 0
Count = 0
WHILE Count <= 100 do
BEGIN
Total = Total+Count
Count = Count+2
ENDDO ตัวอย่างที่ 2.7 โจทย์ ให้หาค่าของผลรวมของตัวเลขจำนวน N ตัว โดย
ตัวเลขแต่ละตัวจะถูกป้อนให้คอมพิวเตอร์อย่างต่อเนื่องจนกระทั่งตัวเลข
สุดท้ายคือ -999 จะเป็นตัวเลขที่แสดงการสิ้นสุดข้อมูล(-999 ต้องไม่
ถูกนำไปหาผลรวม)
คำสั่งเทียม ความหมาย Set Counter to 0 ตั้งค่าตัวนับเป็นศูนย์ Set SUM to 0 ตั้งค่าผลลัพธ์เป็นศูนย์ Input Number N อ่านข้อมูล While Number <> -999 do ในขณะที่ข้อมูลไม่เท่ากับ -999 begin add Number to SUM บวกข้อมูลลงในผลลัพธ์ Input Number อ่านข้อมูลใหม่ end Display SUM แสดงข้อมูลผลลัพธ์
- DO..UNTIL หรือ REPEAT..UNTIL คำสั่งที่ทำงานซ้ำๆ แบบตรวจสอบ
เงื่อนไขหลังจากทำงานคำสั่งในวนรอบ โดยทำขบวนการก่อนในครั้งแรก
จึงตรวจสอบเงื่อนไข และจะทำคำสั่งที่อยู่ในวงรอบนั้นจนกระทั่ง เงื่อนไข
เป็นจริง จึงจะออกจากวงรอบการทำงาน
ตัวอย่างที่ 2.8 โจทย์ จงแสดงผลลัพธ์ของการวนสุ่มตัวเลขและแสดงผล
แล้วตั้งคำถามรอรับการกดคีย์ ถ้าผู้ใช้กด 'Y' จะทำการสุ่มตัวเลขใหม่
ถ้ากด 'N' จะจบโปรแกรม ถ้ากดปุ่มอื่นๆจะวนตั้งคำถามใหม่
Repeat Set RANDOM NUMBER to N
Disply N
repeat
Display 'Do you want to continue'
Get Key Until Key = 'Y' OR 'N' Until Key = 'N' ผังการทำงาน
(Averaging algorithm)
คำสั่งเทียม ความหมาย START set the running total to 0 กำหนดค่ายอดรวมเป็น 0 set the score counter to 0 กำหนดค่าตัวนับเป็น 0 while there are still scores to process do ขณะที่ยังมีคะแนนประมวลผลทำดังนี้ read a single score อ่านคะแนนทีละคะแนน add that score to running total บวกคะแนนเข้าในยอดรวม increment score counter by 1 เพิ่มค่าตัวนับขึ้นอีก 1 end of the while loop if score counter is 0 then ถ้าตัวนับเป็น 0 (แสดงว่าไม่มีข้อมูล) write a message that แสดงข้อความว่า there were no scores "ไม่มีคะแนน" else มิฉะนั้น set average to running total ค่าเฉลี่ย = ยอดรวม/ตัวนับ divided by score counter write out the average พิมพ์ค่าเฉลี่ยเป็นผลลัพธ์ endif STOP สิ้นสุดการทำงาน END OF THE ALGORITHM
ถ้าข้อมูลมีจำนวนเป็นเลขคี่ เช่น 85, 53, 98, 86, 42 เมื่อจัดเรียงตัว
เลขจากน้อยไปมากแล้วจะได้เป็น 42, 53, 85, 86, 98 ดังนั้นตัวเลขที่
อยู่ตรงกลางคือ 85
ถ้าข้อมูลมีจำนวนเป็นเลขคู่ เช่น 62, 86, 97, 84, 98, 56 เมื่อจัดเรียง
แล้ว จะได้เป็น 56, 62, 84, 86, 97, 98 ดังนั้น ตัวเลขที่อยู่ตรงกลาง
คือค่าเฉลี่ยของ 84 + 86 / 2 = 85
คำสั่งเทียม ความหมาย 1. Input number of numeric N 1. รับจำนวนตัวเลข N and numeric I(1), I(2),....I(n) และตัวเลขที่จะหา median 2. Sort data in ascending order 2. จัดเรียงจากน้อยไปมาก 3. Compute the median 3. หา median If N is odd ถ้า N เป็นเลขคี่ (1,3,5..) Median is in position (N+1)/2 ตำแหน่ง median คือ (N+1)/2 If N is even ถ้า N เป็นเลขคู่ (2,4,6..) Median is average of numeric median คือ ค่าเฉลี่ยของตัวเลข ณ. in position N/2 and (N/2)+1 ตำแหน่ง N/2 และ (N/2)+1 4. Display the value of N and median 4. ผลลัพธ์คือ ค่าของ N และ median
1+2+3+...+n
ข้อมูลเข้า ตัวเลขจำนวนเต็มบวกตัวสุดท้ายที่จะนำไปรวม (n) ข้อมูลออก ค่าของผลรวม (Sum)
อ้างอิงจาก http://maiiamz.exteen.com/20110710/pseudo-code - FOR..DO เป็นคำสั่งทำงานซ้ำๆ กันตามจำนวนครั้งที่กำหนด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น