โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Bansomdej Chaopraya Rajabhat University
Advertisements

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
บทที่ 2 รหัสควบคุมและการคำนวณ
Introduction to C Introduction to C.
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
โครงสร้างโปรแกรมภาษา C
ความรู้พื้นฐานเกี่ยวกับการเขียนโปรแกรม
การจำลองความคิด รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
โปรแกรมควบคุมเลือกทำตามเงื่อนไข
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
Control structure part II
Functional Programming
Functional programming part II
Data Type part.III.
Functional programming part II
ชนิดของข้อมูลและตัวดำเนินการ
การแก้ปัญหาด้วยคอมพิวเตอร์
คำสั่ง while ควบคุมการทำงานวนซ้ำ กรณีระบบงานมีลักษณะตรวจสอบเงื่อนไขก่อน แล้วเข้าสู่ส่วนลำดับงานคำสั่งที่กำหนดไว้ การเขียนคำสั่ง while ต้องกำหนดนิพจน์แบบตรรกะเป็นเงื่อนไขมีค่าในหน่วยความจำเป็น.
องค์ประกอบของโปรแกรม
Visual Basic 6 By Samaporn Yendee VB6.
การวาดและการทำงานกับวัตถุ
หน่วยที่ 1 ระบบคอมพิวเตอร์
Lab 3: คำสั่งพื้นฐานสำหรับการรับและการแสดงผลข้อมูล
วิชา การออกแบบและพัฒนาซอฟต์แวร์
หน่วยที่ 5 ตัวดำเนินการ (Operators)
ฟังก์ชันของ PHP ฟังก์ชันคือ โปรแกรมย่อยที่สามารถประมวลผล และ คืนผลลัพธ์จาการประมวลผลนั้นสู่โปรแกรมหลักได้ ซึ่งจำเป็นในการเขียนโปรแกรมเพื่อช่วยให้การทำงานมีประสิทธิภาพที่สูงขึ้น.
Operators ตัวดำเนินการ
การเขียนผังงานแบบโครงสร้าง
ซอฟต์แวร์คอมพิวเตอร์ในการวิเคราะห์โครงสร้าง
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 ตัวดำเนินการ และ นิพจน์
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
ไวยากรณ์ของภาษาการทำโปรแกรม (1) (Syntax of programming languages)
รายงาน เรื่อง -ส่วนประกอบที่สำคัญของ microsoft excel -การพิมพ์ข้อมูลและการสร้างสูตรเบื้องต้น จัดทำโดย.
นิพจน์และตัวดำเนินการ
การเขียนผังงาน จุดประสงค์ 1.อธิบายความของผังงานได้
คำสั่งควบคุมการทำงานของ ActionScripts
ตัวแปรกับชนิดของข้อมูล
ตัวแปร ชนิดข้อมูล และ ตัวดำเนินการใน PHP
ทบทวน กันก่อน .....กระบวนการแปลโปรแกรม
พื้นฐานการเขียนโปรแกรม
คำสั่งควบคุมขั้นตอน Flow control statements
Operators ตัวดำเนินการ
บทที่ 4 นิพจน์ทางคณิตศาสตร์.
หลักการเขียนโปรแกรม ( )
การเขียนโปรแกรมเบื้องต้น
หลักการเขียนโปรแกรม ( )
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
ตัวดำเนินการ และนิพจน์คณิตศาสตร์
PHP การตรวจสอบเงื่อนไข.
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
บทที่ 9 พอยเตอร์. สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อ การศึกษาเท่านั้น พอยเตอร์ (Pointer) พอยเตอร์คือต้นฉบับของชนิดข้อมูล เป็นชนิด ข้อมูลที่สร้างจากข้อมูลมาตรฐานชนิดหนึ่ง.
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
การเขียนโปรแกรมคอมพิวเตอร์ 1
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หลักการเขียนโปรแกรม ( )
โครงสร้าง ภาษาซี.
แนะนำการเขียนโปรแกรมภาษา C Introduction to C Programming Language
ครูชลภิรัตน์ แก้วมูล MAIL.COM O.COM facebook : krumoo ck O.COM ครูชลภิรัตน์ แก้วมูล MAIL.COM O.COM.
ซอฟต์แวร์ (Softwarre)
การกระทำทางคณิตศาสตร์
ตัวแปร และชนิดข้อมูล.
การรับและแสดงผลข้อมูล (Input/Output)
โครงสร้างข้อมูลแบบ สแตก (stack)
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
ส่วนประกอบของคอมพิวเตอร์
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
ใบสำเนางานนำเสนอ:

โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures Warattapop Chainate

Outline เพื่อควบคุมลำดับการทำงานของโปรแกรมให้ตรงตามที่โปรแกรมเมอร์ต้องการ สำหรับกลุ่มภาษาเชิงคำสั่ง (imperative) และภาษาเชิงวัตถุ (object oriented) โครงสร้างควบคุมจะประกอบด้วยโครงสร้างของ... คำสั่งกำหนดค่า คำสั่งรวมกลุ่มการทำงาน คำสั่งแบบมีเงื่อนไข คำสั่งทำซ้ำ นอกจากนี้ ภาษาคอมพิวเตอร์รุ่นใหม่ๆ มักจะมีโครงสร้างเพื่อการทำโปรแกรมย่อย และโครงสร้างเพื่อการจัดการกรณียกเว้น ทั้งหมด เพื่อให้โปรแกรมมีโครงสร้างที่ดี และเชื่อถือได้ในด้านความทนทานต่อข้อบกพร่อง

นิพจน์ (Expression) นิพจน์ เป็นส่วนประกอบพื้นฐานของคำสั่งแทบทุกคำสั่ง เป็นส่วนผลิตค่าให้กับคำสั่ง Literal Operator Monadic or unary Dyadic or binary รูปแบบการเขียนนิพจน์ แบ่งได้เป็น Infix notation Prefix notation Postfix notation

รูปแบบอินฟิกซ์ เขียนโอเปอเรเตอร์อยู่ตรงกลางระหว่างโอเปอแรนด์ทางซ้าย และทางขวา ในกรณีที่นิพจน์มีมากกว่าหนึ่งโอเปอเรเตอร์ และโอเปอเรเตอร์เหล่านั้นมีคสามสำคัญเท่าเทียมกัน เช่น x+y+z, 1+3-2+x, a=b=c=3 ผู้ออกแบบภาษาจะต้องกำหนดทิศทางการคำนวณว่า จะทำจากซ้ายไปขวา หรือจากขวาไปซ้าย เราจะเรียกทิศทางในการคำนวณนี้ว่า associative Left-associative Right-associative

Infix ในกรณีที่นิพจน์มีโอเปอเรเตอร์ที่ความสำคัญไม่เท่ากัน เช่น x+p*q ผู้ออกแบบภาษาจะต้องกำหนดลำดับความสำคัญก่อนหลังเรียกว่า precedence ** right associative

รูปแบบพรีฟิกซ์ และโพสฟิกซ์ รูปแบบพรีฟิกซ์ บางครั้งเรียกว่า รูปแบบโพลิช (Polish notation) ถูกสร้างขึ้นเพื่อให้การเขียนนิพจน์คณิตศาสตร์ไม่จำเป็นต้องใช้วงเล็บ เพื่อระบุลำดับก่อนหลังของการคำนวณ รูปแบบพรีฟิกซ์นี้ จะเขียนโอเปอเรเตอร์ไว้ก่อนหน้าโอเปอแรนด์ เช่น 4+(5*6) เขียนให้อยู่ในรูปนิพจน์พรีฟิกซ์ได้ +4*56 และ (4+5)*6 เขียนให้อยู่ในรูปนิพจน์โพสต์ฟิกซ์ได้ *+456 รูปแบบโพสฟิกซ์ มีลักษณะตรงข้าม กับพรีฟิกซ์ บางครั้งจึงเรียกว่า รูปแบบโพลิชสลับลำดับ (reverse Polish notation) รูปแบบโพสฟิกซ์จะเขียนโอเปอเรเตอร์ไว้หลังโอเปอแรนด์

Infix, Prefix and Postfix notations ในทางคณิตศาสตร์ การเขียนนิพจน์ส่วนใหญ่ จะใช้รูปแบบอินฟิกซ์ แต่มีการดำเนินการบางอย่างที่ใช้รูปแบบพรีฟิกซ์ และรูปแบบโพสฟิกซ์ ในทางคอมพิวเตอร์ ส่วนใหญ่ก็จะใช้รูปแบบอินฟิกซ์ แต่ก็มีบางการดำเนินการที่ใช้รูปแบบพรีฟิกซ์ และโพสฟิกซ์

การคำนวณผลลัพธ์ของนิพจน์ Operator overloading: การใช้เครื่องหมายโอเปอเรเตอร์เดียวทำงานมากกว่าหนึ่งแบบ ซึ่งมักจะเกิดขึ้นบ่อยมากในภาษาคอมพิวเตอร์ มีข้อดีคือ ลดการมีเครื่องหมายโอเปอเรเตอร์ให้ใช้มากชนิดเกินไป การคำนวณผลลัพธ์แบบอินฟิกซ์ จะต้องใช้ข้อมูลเกี่ยวกับ precedence และ association ประกอบการพิจารณาลำดับการคำนวณ เช่น นิพจน์ในภาษา Pascal a = b < c ((FALSE = FALSE) < FALSE) => (TRUE < FALSE) => FALSE หากเป็นนิพจน์ในภาษา C a == b < c ((0 == 0) < 0) => (1 < 0) => 0

การคำนวณผลลัพธ์ของนิพจน์ (cont) การกำหนดค่าของนิพจน์ให้ตัวแปร ภาษา Pascal ใช้เครื่องหมาย := แทนการกำหนดค่า เช่น x := 3 ภาษา C ใช้เครื่องหมาย = เช่น x = 3 เครื่องหมาย = จัดเป็นโอเปอเรเตอร์ที่มีลำดับการทำงานจากขวาไปซ้าย ผลลัพธ์ของนิพจน์จะเป็นค่าของโอเปอแรนด์ที่อยู่ทางซ้ายมือของ = ดังนั้น a = b = c = 0; จะหมายความว่า (a = (b = (c = 0))) ลองอธิบายคำสั่งต่อไปนี้ while ((*p++=*q++)!=0) {} Side effect?

การคำนวณผลลัพธ์ของนิพจน์ (cont) การเขียนนิพจน์ในภาษา C แล้ว นอกจากจะใช้เครื่องหมาย = แล้ว ยังสามารถใช้เครื่องหมาย ?: ที่เป็นโอเปอเรเตอร์ หมายถึงการทำงานแบบมีเงื่อนไข if… then… else… เช่น x!=0 ? 1/x : 0; หากผลลัพธ์ที่ได้จากโอเปอเรเตอร์ ?: เป็นค่า (value) นิพจน์นี้สามารถอยู่ทางขวาของเครื่องหมาย = ได้ q = (x!=0) ? 1/x : 0; หากเป็นตำแหน่ง (address) สามารถปรากฏทางซ้ายของเครื่องหมาย = (p>r) ? *p : *r = 0;

การคำนวณผลลัพธ์ของนิพจน์ (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 ;

คำสั่งกำหนดค่า (Assignment statement) เป็นคำสั่งที่ใช้ในการสร้าง หรือเปลี่ยนแปลงค่าให้กับตัวแปร เช่นคำสั่งในภาษา C i = (x+y)/2; จะเกิดการคำนวณผลลัพธ์ของนิพจน์ (x+y)/2 (source) และค่าที่ได้จะถูกกำหนดให้กับตัวแปร i (target or destination) ของการกำหนดค่า r-value : ค่าที่เก็บอยู่ในหน่วยความจำตำแหน่งต่างๆ l-value : ตำแหน่งหรือแอดเดรสของหน่วยความจำ

Assignment statement (cont) จากตัวอย่างเดิม ถ้ามีคำสั่งเพิ่มเติมดังนี้ x = y*i ; ในเรื่องนี้ หลักทางคณิตศาสตร์ และทางคอมพิวเตอร์ ต่างกันอย่างไร (ร่วมอภิปราย)

คำสั่งเป็นกลุ่ม (Compound statement) Sequence: คำสั่งต่อเนื่องเหล่านี้ สามารถถูกจัดให้เป็นชุดเดียวกัน โดยใช้