ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยKate Traivut ได้เปลี่ยน 10 ปีที่แล้ว
1
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
Warattapop Chainate
2
Outline เพื่อควบคุมลำดับการทำงานของโปรแกรมให้ตรงตามที่โปรแกรมเมอร์ต้องการ สำหรับกลุ่มภาษาเชิงคำสั่ง (imperative) และภาษาเชิงวัตถุ (object oriented) โครงสร้างควบคุมจะประกอบด้วยโครงสร้างของ... คำสั่งกำหนดค่า คำสั่งรวมกลุ่มการทำงาน คำสั่งแบบมีเงื่อนไข คำสั่งทำซ้ำ นอกจากนี้ ภาษาคอมพิวเตอร์รุ่นใหม่ๆ มักจะมีโครงสร้างเพื่อการทำโปรแกรมย่อย และโครงสร้างเพื่อการจัดการกรณียกเว้น ทั้งหมด เพื่อให้โปรแกรมมีโครงสร้างที่ดี และเชื่อถือได้ในด้านความทนทานต่อข้อบกพร่อง
3
นิพจน์ (Expression) นิพจน์ เป็นส่วนประกอบพื้นฐานของคำสั่งแทบทุกคำสั่ง
เป็นส่วนผลิตค่าให้กับคำสั่ง Literal Operator Monadic or unary Dyadic or binary รูปแบบการเขียนนิพจน์ แบ่งได้เป็น Infix notation Prefix notation Postfix notation
4
รูปแบบอินฟิกซ์ เขียนโอเปอเรเตอร์อยู่ตรงกลางระหว่างโอเปอแรนด์ทางซ้าย และทางขวา ในกรณีที่นิพจน์มีมากกว่าหนึ่งโอเปอเรเตอร์ และโอเปอเรเตอร์เหล่านั้นมีคสามสำคัญเท่าเทียมกัน เช่น x+y+z, x, a=b=c=3 ผู้ออกแบบภาษาจะต้องกำหนดทิศทางการคำนวณว่า จะทำจากซ้ายไปขวา หรือจากขวาไปซ้าย เราจะเรียกทิศทางในการคำนวณนี้ว่า associative Left-associative Right-associative
5
Infix ในกรณีที่นิพจน์มีโอเปอเรเตอร์ที่ความสำคัญไม่เท่ากัน เช่น x+p*q
ผู้ออกแบบภาษาจะต้องกำหนดลำดับความสำคัญก่อนหลังเรียกว่า precedence ** right associative
6
รูปแบบพรีฟิกซ์ และโพสฟิกซ์
รูปแบบพรีฟิกซ์ บางครั้งเรียกว่า รูปแบบโพลิช (Polish notation) ถูกสร้างขึ้นเพื่อให้การเขียนนิพจน์คณิตศาสตร์ไม่จำเป็นต้องใช้วงเล็บ เพื่อระบุลำดับก่อนหลังของการคำนวณ รูปแบบพรีฟิกซ์นี้ จะเขียนโอเปอเรเตอร์ไว้ก่อนหน้าโอเปอแรนด์ เช่น 4+(5*6) เขียนให้อยู่ในรูปนิพจน์พรีฟิกซ์ได้ +4*56 และ (4+5)*6 เขียนให้อยู่ในรูปนิพจน์โพสต์ฟิกซ์ได้ *+456 รูปแบบโพสฟิกซ์ มีลักษณะตรงข้าม กับพรีฟิกซ์ บางครั้งจึงเรียกว่า รูปแบบโพลิชสลับลำดับ (reverse Polish notation) รูปแบบโพสฟิกซ์จะเขียนโอเปอเรเตอร์ไว้หลังโอเปอแรนด์
7
Infix, Prefix and Postfix notations
ในทางคณิตศาสตร์ การเขียนนิพจน์ส่วนใหญ่ จะใช้รูปแบบอินฟิกซ์ แต่มีการดำเนินการบางอย่างที่ใช้รูปแบบพรีฟิกซ์ และรูปแบบโพสฟิกซ์ ในทางคอมพิวเตอร์ ส่วนใหญ่ก็จะใช้รูปแบบอินฟิกซ์ แต่ก็มีบางการดำเนินการที่ใช้รูปแบบพรีฟิกซ์ และโพสฟิกซ์
8
การคำนวณผลลัพธ์ของนิพจน์
Operator overloading: การใช้เครื่องหมายโอเปอเรเตอร์เดียวทำงานมากกว่าหนึ่งแบบ ซึ่งมักจะเกิดขึ้นบ่อยมากในภาษาคอมพิวเตอร์ มีข้อดีคือ ลดการมีเครื่องหมายโอเปอเรเตอร์ให้ใช้มากชนิดเกินไป การคำนวณผลลัพธ์แบบอินฟิกซ์ จะต้องใช้ข้อมูลเกี่ยวกับ precedence และ association ประกอบการพิจารณาลำดับการคำนวณ เช่น นิพจน์ในภาษา Pascal a = b < c ((FALSE = FALSE) < FALSE) => (TRUE < FALSE) => FALSE หากเป็นนิพจน์ในภาษา C a == b < c ((0 == 0) < 0) => (1 < 0) => 0
9
การคำนวณผลลัพธ์ของนิพจน์ (cont)
การกำหนดค่าของนิพจน์ให้ตัวแปร ภาษา Pascal ใช้เครื่องหมาย := แทนการกำหนดค่า เช่น x := 3 ภาษา C ใช้เครื่องหมาย = เช่น x = 3 เครื่องหมาย = จัดเป็นโอเปอเรเตอร์ที่มีลำดับการทำงานจากขวาไปซ้าย ผลลัพธ์ของนิพจน์จะเป็นค่าของโอเปอแรนด์ที่อยู่ทางซ้ายมือของ = ดังนั้น a = b = c = 0; จะหมายความว่า (a = (b = (c = 0))) ลองอธิบายคำสั่งต่อไปนี้ while ((*p++=*q++)!=0) {} Side effect?
10
การคำนวณผลลัพธ์ของนิพจน์ (cont)
การเขียนนิพจน์ในภาษา C แล้ว นอกจากจะใช้เครื่องหมาย = แล้ว ยังสามารถใช้เครื่องหมาย ?: ที่เป็นโอเปอเรเตอร์ หมายถึงการทำงานแบบมีเงื่อนไข if… then… else… เช่น x!=0 ? 1/x : 0; หากผลลัพธ์ที่ได้จากโอเปอเรเตอร์ ?: เป็นค่า (value) นิพจน์นี้สามารถอยู่ทางขวาของเครื่องหมาย = ได้ q = (x!=0) ? 1/x : 0; หากเป็นตำแหน่ง (address) สามารถปรากฏทางซ้ายของเครื่องหมาย = (p>r) ? *p : *r = 0;
11
การคำนวณผลลัพธ์ของนิพจน์ (cont)
ข้อความสั่งบางประเภทมีการใช้นิพจน์ย่อยหลายนิพจน์ การคำรวณผลลัพธ์ของนิพจน์ย่อยเหล่านั้น ไม่จำเป็นจะต้องกระทำทั้งหมดในคราวเดียว ถ้าในโปรแกรมมีการประกาศอาร์เรย์ a[1..10] และมีการเรียกใช้คำสั่ง ต่อไปนี้ IF (i<=10) AND (a[i]>0) THEN … นิพจน์ย่อยในคำสั่งนี้คือ (i<=10) และ (a[i]>0) Lazy evaluation ใช้มากในการทำโปรแกรมเชิงหน้าที่ เพื่อเพิ่มความเร็วในการประมวลผลโปรแกรม ในภาษา C มีการกำหนดวิธีการทำงานของบางโอเปอเรเตอร์ เช่น &&, II สำหรับการทำงานแบบเกียจคร้าน เรียกโอเปอเรเตอร์เหล่านี้ว่า short-cut operators หรือ short-circuit operators ภาษา Ada, if (I<=10) and then (A[I]>0) then … end if ;
12
คำสั่งกำหนดค่า (Assignment statement)
เป็นคำสั่งที่ใช้ในการสร้าง หรือเปลี่ยนแปลงค่าให้กับตัวแปร เช่นคำสั่งในภาษา C i = (x+y)/2; จะเกิดการคำนวณผลลัพธ์ของนิพจน์ (x+y)/2 (source) และค่าที่ได้จะถูกกำหนดให้กับตัวแปร i (target or destination) ของการกำหนดค่า r-value : ค่าที่เก็บอยู่ในหน่วยความจำตำแหน่งต่างๆ l-value : ตำแหน่งหรือแอดเดรสของหน่วยความจำ
13
Assignment statement (cont)
จากตัวอย่างเดิม ถ้ามีคำสั่งเพิ่มเติมดังนี้ x = y*i ; ในเรื่องนี้ หลักทางคณิตศาสตร์ และทางคอมพิวเตอร์ ต่างกันอย่างไร (ร่วมอภิปราย)
14
คำสั่งเป็นกลุ่ม (Compound statement)
Sequence: คำสั่งต่อเนื่องเหล่านี้ สามารถถูกจัดให้เป็นชุดเดียวกัน โดยใช้
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.