บทเรียนนี้มีลักษณะที่ตัวดำเนินการตามเงื่อนไขในภาษา Pascal ( ถ้า- อธิบายวิธีการใช้หลายเงื่อนไขในโครงสร้างเดียว ( และและ หรือ- มีการพิจารณาตัวอย่างการทำงานกับผู้ปฏิบัติงาน
เราขอเตือนคุณว่าไซต์นี้ไม่ได้เสแสร้งว่าจะนำเสนอข้อมูลในหัวข้อนี้โดยสมบูรณ์ วัตถุประสงค์ของพอร์ทัลคือการให้โอกาสในการดูดซึมเนื้อหาตามตัวอย่างที่แก้ไขแล้วในหัวข้อ "ภาษา" การเขียนโปรแกรมภาษาปาสคาล» มีภารกิจภาคปฏิบัติเพื่อเสริมกำลังวัสดุ งาน Pascal ที่นำเสนอบนเว็บไซต์จะถูกจัดเรียงตามลำดับเมื่อความซับซ้อนเพิ่มขึ้น ครูและอาจารย์สามารถใช้เว็บไซต์นี้เป็นสื่อช่วยการมองเห็นได้
ก่อนที่จะพิจารณาหัวข้อนี้ส่วนใหญ่จะใช้ อัลกอริธึมเชิงเส้นในภาษาปาสคาล โดยทั่วไปสำหรับงานง่ายๆ เมื่อการกระทำ (ตัวดำเนินการ) ดำเนินการตามลำดับ ทีละงาน อัลกอริธึมที่ซับซ้อนมากขึ้นเกี่ยวข้องกับการใช้โครงสร้างการแยกสาขา
แผนภาพบล็อกตัวดำเนินการแบบมีเงื่อนไข: คำสั่งแบบมีเงื่อนไขใน Pascal มีรูปแบบดังนี้:
เวอร์ชันสั้น:
ถ้าเงื่อนไขก็สั่ง;
เวอร์ชันเต็ม:
ถ้าเงื่อนไขก็ให้สั่งคำสั่งอื่น;
ตัวดำเนินการตามเงื่อนไขใน Pascal - if - ทำหน้าที่จัดระเบียบความคืบหน้าของงานในลักษณะที่ลำดับการดำเนินการของตัวดำเนินการเปลี่ยนแปลงไปขึ้นอยู่กับเงื่อนไขเชิงตรรกะบางประการ เงื่อนไขทางลอจิคัลสามารถรับค่าใดค่าหนึ่งจากสองค่าได้: จริงหรือเท็จ ตามลำดับ โดยอาจเป็นจริงหรือเท็จก็ได้
ตัวดำเนินการแบบผสม
หากภายใต้เงื่อนไขที่แท้จริง จำเป็นต้องดำเนินการหลายคำสั่ง ดังนั้น ตามกฎของภาษาปาสคาล จะต้องอยู่ในบล็อกเริ่มต้นด้วยคำฟังก์ชัน start และลงท้ายด้วยคำฟังก์ชัน end โดยปกติจะเรียกว่าบล็อกดังกล่าว วงเล็บปีกกา, ก การออกแบบนี้ — ตัวดำเนินการแบบผสม:
วงเล็บผู้ประกอบการและ ตัวดำเนินการแบบผสมในภาษาปาสคาล:
ถ้า การแสดงออกทางตรรกะจากนั้นเริ่มคำสั่ง 1;
ตัวดำเนินการ2; จบอย่างอื่นเริ่มต้นคำสั่ง 1;
ตัวดำเนินการ2; จบ; |
การแปลเงื่อนไขจากภาษาอังกฤษจะทำให้เข้าใจการใช้งานได้ง่ายขึ้น: |
ถ้า |
แล้ว |
อื่น |
ถ้า |
ที่ มิฉะนั้น
- เงื่อนไข (ในนิพจน์เชิงตรรกะ) ใช้ตัวดำเนินการเชิงสัมพันธ์
- พิจารณารายชื่อตัวดำเนินการเชิงสัมพันธ์ของ Pascal:
- เพิ่มเติม >
- น้อย
- มากกว่าหรือเท่ากับในภาษาปาสคาล >=
- น้อยกว่าหรือเท่ากับในภาษาปาสคาล
การเปรียบเทียบใน Pascal =ไม่เท่ากันในภาษาปาสคาล
ตัวอย่าง: |
หาค่าที่ใหญ่ที่สุดของตัวเลขสองตัว |
|
|
ตัวเลือกที่ 1 ตัวเลือกที่ 2
การเปรียบเทียบใน Pascal =เข้าใจงานอย่างละเอียด
คุณสามารถใช้โอเปอเรเตอร์แบบมีเงื่อนไขใน Pascal ได้โดยดูวิดีโอสอน: คำนวณค่าของตัวแปร y โดยใช้หนึ่งในสองสาขา
แสดงวิธีแก้ปัญหา: var x,y:จริง; เริ่มต้น writeln("ป้อน x"); อ่าน(x); ถ้า x>0 แล้ว y:=ln(x) อื่น y:=exp(x); writeln ("y=", y:6:2) (ตัวเลขผลลัพธ์จะมี 6 ตำแหน่งและจะมีทศนิยม 2 ตำแหน่ง) สิ้นสุดโปรดทราบวิธีการเข้า ในตัวอย่างนี้ y กำลังส่งออก เมื่อถอนตัว ตัวแปรประเภทในภาษาปาสคาล คุณสามารถใช้สิ่งที่เรียกว่า เอาต์พุตที่จัดรูปแบบแล้ว หรือสัญกรณ์ที่มีเครื่องหมายทวิภาคสองตัว: ย:6:2
- ตัวเลขหลังเครื่องหมายทวิภาคแรก (6) ระบุจำนวนอักขระที่ตัวเลขจะใช้เมื่อแสดงบนหน้าจอ
- ตัวเลขหลังเครื่องหมายทวิภาคที่สอง (2) ระบุจำนวนตำแหน่งทศนิยมของจำนวนจริงที่จะแสดงดังนั้น การใช้สัญลักษณ์ดังกล่าวในภาษาปาสคาลจึงทำให้คุณสามารถปัดเศษเป็นร้อย หลักพัน ฯลฯ ได้
งาน 0คำนวณค่าของตัวแปร y โดยใช้หนึ่งในสองสาขา:
ภารกิจที่ 1มีการป้อนตัวเลขสองตัวลงในคอมพิวเตอร์ หากค่าแรกมากกว่าค่าที่สอง ให้คำนวณผลรวม มิฉะนั้น - ผลคูณ หลังจากนี้คอมพิวเตอร์ควรพิมพ์ผลลัพธ์และข้อความ PROBLEM SOLVED ภารกิจที่ 2มังกรจะโตได้สามหัวทุกปี แต่เมื่ออายุครบ 100 ปี ก็จะมีหัวเพียงสองหัวเท่านั้น มังกรมีกี่หัวและตา?
เอ็น
ปี?
- การดำเนินการเชิงตรรกะในภาษาปาสคาล (ในนิพจน์เชิงตรรกะ) และ
เมื่อคุณจำเป็นต้องใช้เงื่อนไขคู่ใน Pascal คุณจะต้องดำเนินการเชิงตรรกะ
- การดำเนินการเชิงตรรกะ หรือ
(OR) บอกว่าเพียงพอแล้วหากมีอย่างน้อยหนึ่งเงื่อนไขที่ตรงตามเงื่อนไข (หนึ่งในสองเงื่อนไขเป็นจริง) ความหมายเชิงตรรกะของการดำเนินการคือ "การแยกทาง"
- ในปาสคาล แฮคเกอร์
- สัญญาณของการดำเนินการเชิงตรรกะที่มีความหมายว่า "การแยกทางอย่างเข้มงวด" และบ่งชี้ว่าจำเป็นต้องปฏิบัติตามเงื่อนไขข้อใดข้อหนึ่ง (จริง) และอีกข้อหนึ่งไม่พอใจ (เท็จ)
- การดำเนินการเชิงตรรกะในภาษาปาสคาล (ในนิพจน์เชิงตรรกะ) ไม่
ก่อนนิพจน์หรือตัวแปรเชิงตรรกะ หมายถึง "การปฏิเสธ" หรือ "การผกผัน" และบ่งชี้ว่าหากตัวแปรหรือนิพจน์ที่กำหนดเป็นจริง การปฏิเสธของมันจะเป็นเท็จและในทางกลับกัน
สำคัญ:แต่ละเงื่อนไขอย่างง่ายต้องอยู่ในวงเล็บ
ตัวอย่าง: ลองดูตัวอย่างการดำเนินการเชิงตรรกะในนิพจน์เชิงตรรกะในภาษา Pascal
1
2
3
4
5
6
7
8
| var n: จำนวนเต็ม;<10
)
then
writeln
("истина"
)
;
if
(n>เริ่มต้น n: = 6 ;<10
)
then
writeln
("истина"
)
;
if
(n>ถ้า (n>5 ) และ (n<10
)
then
writeln
("истина"
)
;
if
not
(n>7 ) หรือ (น |
7 )เอ็กซ์ซอร์ (n<10) then writeln("истина");
if (n>7) จากนั้น writeln("true");<10) then writeln("истина");
if (n>จบ.<10) then writeln("истина");
if not(n>var n:จำนวนเต็ม; เริ่มต้น n:=6; ถ้า (n>5) และ (n
การเปรียบเทียบใน Pascal = 7) หรือ (น 7)เอ็กซ์ซอร์(n 7) จากนั้น writeln("true"); จบ.
บริษัทฯ รับสมัครพนักงานอายุตั้งแต่ 25 ถึง 40 ปี รวม ระบุอายุของบุคคลนั้นและพิจารณาว่าเขาเหมาะสมกับบริษัทนี้หรือไม่ (แสดงคำตอบว่า “เหมาะสม” หรือ “ไม่เหมาะสม”)
ลักษณะเฉพาะ:
เราจำเป็นต้องตรวจสอบว่าตรงตามเงื่อนไขสองข้อพร้อมกันหรือไม่
ผู้ประกอบการเปลี่ยน 1..9999
คราวนี้ผมจะพิจารณาหัวข้อ “ผู้ปฏิบัติงาน” ต่อไป คำสั่งกระโดด (ไม่มีเงื่อนไข) ได้รับการออกแบบมาเพื่อถ่ายโอนการควบคุมไปยังคำสั่งที่มีป้ายกำกับ (นำหน้าด้วยป้ายกำกับ)เวอร์ชันภาษาของผู้เขียนถือว่าฉลากมีการจัดรูปแบบเป็นเลขทศนิยมจำนวนเต็มในช่วง
- เป็นเครื่องหมาย
เทอร์โบปาสคาล
อนุญาตให้ใช้ตัวระบุ เมื่อใช้ตัวดำเนินการกระโดด ต้องปฏิบัติตามกฎต่อไปนี้:
การใช้การกระโดดแบบไม่มีเงื่อนไขในโปรแกรมถือว่าซ้ำซ้อนในทางทฤษฎี เนื่องจากอาจทำให้เกิดความสับสนในสายโซ่ของการดำเนินการของโปรแกรมตามตรรกะ ซึ่งอาจนำไปสู่ความยากลำบากอย่างมากในการดีบักและแก้ไขโปรแกรมดังกล่าว ขอแนะนำให้ใช้ตัวดำเนินการเปลี่ยนตามกฎต่อไปนี้:
1) หากดูเหมือนว่าเป็นไปไม่ได้ที่จะทำโดยไม่มีตัวดำเนินการการเปลี่ยนแปลง คุณควรพยายามใช้ตัวดำเนินการเหล่านั้นเพื่อถ่ายโอนการควบคุมเฉพาะข้อความโปรแกรม (ไปข้างหน้า) หากจำเป็นต้องถ่ายโอนการควบคุม "ย้อนกลับ" ควรใช้ตัวดำเนินการวนซ้ำ (ดูด้านล่าง)
2) เพื่อความชัดเจน ระยะห่างระหว่างฉลากและผู้ปฏิบัติงานที่จะข้ามไปยังข้อความนั้นไม่ควรเกินหนึ่งหน้าของข้อความ (หรือความสูงของหน้าจอแสดงผล) มิฉะนั้น ความหมายของการเปลี่ยนแปลงแบบไม่มีเงื่อนไขดังกล่าวจะยากต่อการเข้าใจ
ป้ายกำกับถูกกำหนดโดยคำอธิบายที่ขึ้นต้นด้วยคำที่ทำหน้าที่ ฉลากและมีลำดับชื่อป้ายกำกับโดยคั่นด้วยเครื่องหมายจุลภาค ในการถ่ายโอนการควบคุมไปยังผู้ปฏิบัติงานที่มีป้ายกำกับ จะมีการจัดหาผู้ดำเนินการเปลี่ยนแบบไม่มีเงื่อนไข ข้ามไป- ป้ายกำกับจะถูกแยกออกจากข้อความต่อไปนี้ด้วยเครื่องหมาย ':' (โคลอน) ตัวอย่าง:
varเจ:จำนวนเต็ม;
(เราประกาศสองป้ายกำกับ)
ฉลากเริ่ม, สิ้นสุด;
เริ่มต้น: writeln('เริ่มโปรแกรม');
ข้ามไปเสร็จ;
เสร็จสิ้น: writeln('สิ้นสุดโปรแกรม');
ตัวดำเนินการแบบผสม
ตัวดำเนินการโครงสร้างที่ง่ายที่สุดคือตัวดำเนินการแบบผสม คำสั่งนี้ระบุลำดับการดำเนินการของตัวดำเนินการที่มีอยู่ในนั้น ตัวดำเนินการผสมถูกจัดรูปแบบเป็นรายการตัวดำเนินการที่แยกจากกันด้วยสัญลักษณ์ ';' (อัฒภาค) และล้อมรอบด้วยคำช่วย เริ่มและ จบ.
ความจำเป็นในการใช้ตัวดำเนินการแบบผสมอาจเกิดขึ้นในกรณีที่ไวยากรณ์ภาษา Pascal อนุญาตให้ใช้ตัวดำเนินการเพียงตัวเดียวในตำแหน่งในโปรแกรมที่จำเป็นต้องมีการดำเนินการทั้งชุด (ตัวดำเนินการ) ดูตัวอย่างด้านล่าง นี่เป็นตัวอย่างง่ายๆ ของตัวดำเนินการแบบผสม:
ตัวดำเนินการแบบมีเงื่อนไข
ความหมายของตัวดำเนินการแบบมีเงื่อนไขคือการวิเคราะห์เงื่อนไขเชิงตรรกะบางอย่าง และโอนการควบคุมไปยังตัวดำเนินการที่เกี่ยวข้องเพื่อให้เป็นไปตามเงื่อนไขนี้หรือไม่ เงื่อนไขอาจเป็นนิพจน์ที่ส่งกลับค่าบูลีน ผลลัพธ์ของการวิเคราะห์เงื่อนไขอาจเป็นค่าได้ จริง, เช่น. สภาพเป็นที่พอใจและ เท็จ, เช่น. ไม่เป็นไปตามเงื่อนไข
คำสั่งแบบมีเงื่อนไขจะดำเนินการดังต่อไปนี้ นิพจน์ที่ระบุหลังจากคำบริการได้รับการคำนวณล่วงหน้า ตัวดำเนินการ2; จบ;- หากตรงตามเงื่อนไข การควบคุมจะถูกโอนไปยังผู้ปฏิบัติงานที่ระบุหลังคำบริการ แล้วหากไม่เป็นเช่นนั้น ตัวดำเนินการที่ระบุหลังจากดำเนินการคำบริการ else ในกรณีนี้ ส่วนหนึ่งของตัวดำเนินการตามเงื่อนไขที่ขึ้นต้นด้วยคำว่า else อาจหายไป นี่คือตัวอย่างของคำสั่งแบบมีเงื่อนไข:
ถ้ากดปุ่มแล้ว แล้ว writeln('กดปุ่ม');
ถ้าเอ>บี แล้วนาที:= บ
อื่นนาที:= ก;
ถ้า X1 > X2 จากนั้นเริ่มต้น
ตัวอย่างสุดท้ายคือกรณีที่จำเป็นต้องดำเนินการตัวดำเนินการจำนวนหนึ่งตามเงื่อนไข แต่เนื่องจากความจริงที่ว่าอยู่เบื้องหลังคำบริการ แล้วหรือ อื่นมีเพียงคำสั่งเดียวเท่านั้นที่สามารถติดตามได้ กล่าวคือ สามารถแก้ไขสถานการณ์ได้โดยใช้คำสั่งผสมที่มีคำสั่งที่จำเป็นเพียงจำนวนหนึ่ง
เมื่อเขียนคำสั่งแบบมีเงื่อนไขแบบซ้อน โปรดทราบว่าสาขา else จะเป็นของสาขาก่อนหน้าเสมอ ตัวดำเนินการ2; จบ;ซึ่งยังไม่มีสาขาอื่น เหล่านั้น. การก่อสร้างต่อไปนี้
ถ้าเงื่อนไข1 แล้วถ้าเงื่อนไข2 แล้วตัวดำเนินการ1 อื่นตัวดำเนินการ2;
เพื่อความชัดเจนสามารถตีความได้ดังนี้
ถ้าเงื่อนไข1 จากนั้นเริ่มต้น
ถ้าเงื่อนไข2 แล้วตัวดำเนินการ1 อื่นตัวดำเนินการ2;
จำเป็นต้องระมัดระวังเมื่อใช้คำสั่งแบบมีเงื่อนไขแบบซ้อน เพื่อที่ว่าในช่วงเวลาที่ร้อนแรงเมื่อเขียนคำสั่งแบบมีเงื่อนไขถัดไปของโปรแกรม คุณจะไม่ละสายตาจากรายละเอียดเล็ก ๆ น้อย ๆ ที่อาจนำไปสู่การดำเนินการที่แตกต่างไปจากเดิมอย่างสิ้นเชิง การแตกแขนงแบบมีเงื่อนไข
ตัวดำเนินการตัวแปร
บ่อยครั้งที่สถานการณ์เกิดขึ้นเมื่อกลุ่มของคำสั่งแบบมีเงื่อนไขเติบโตขึ้นเป็นสัดส่วนมหาศาล ตัวอย่างเช่น ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการแตกแขนงที่มีขนาดพอเหมาะ แต่มีความซับซ้อนในการรับรู้ความหมายที่มีอยู่ในนั้นอยู่แล้ว:
พิมพ์ TWay = (ขึ้น, ขวา, ลง, ซ้าย);
varวิธี: TWay;
MapX, MapY: คำ;
ถ้าทาง = ขึ้น แล้วแผนที่Y:= แผนที่Y - 1
อื่น ถ้าทาง = ถูกต้อง แล้วแมปเอ็กซ์:= แมปเอ็กซ์ + 1
อื่นถ้าทาง = ลง แล้วแผนที่ Y:= แผนที่ Y + 1
อื่นแมปเอ็กซ์:= แมปเอ็กซ์ - 1;
สาขาอื่นสุดท้ายไม่มีคำสั่ง ถ้าเนื่องจากหากไม่ตรงตามเงื่อนไขทั้งสามข้อ มันจะเป็นตรรกะสำหรับตัวดำเนินการที่สอดคล้องกับตัวเลือกที่สี่และสุดท้ายของค่าที่เป็นไปได้ของประเภทที่จะมีผลใช้บังคับ ทีเวย์.
ในกรณีนี้เราโชคดีที่ประเภท ทีเวย์มีเพียงสี่ค่าที่เป็นไปได้เท่านั้น การเขียนสาขาดังกล่าวจะกลายเป็นเรื่องน่าเบื่อหรือไม่หากมีทางเลือกตั้งแต่ 10 ทางเลือกขึ้นไป? แต่ในการแตกแขนงที่นำเสนอนี้ จะมองเห็นรูปแบบที่เรียบง่ายได้ เป็นไปได้ไหมที่จะทำให้มันง่ายขึ้นและทำให้มีประสิทธิภาพและอ่านง่ายขึ้น? เป็นไปได้ และเพื่อจุดประสงค์นี้ ภาษาได้จัดให้มีตัวดำเนินการที่แตกต่างกัน ซึ่งการก่อสร้างสามารถมีจำนวนทางเลือกอื่นสำหรับนิพจน์บางอย่างได้ตามใจชอบ ตัวอย่างสุดท้ายสามารถเขียนใหม่ได้ด้วยวิธีใหม่:
กรณีทาง ของ
ขึ้น: MapY:= MapY - 1;
ขวา: MapX:= MapX + 1;
ลง: MapY:= MapY + 1;
ซ้าย: MapX:= MapX - 1;
นั่นเป็นเรื่องที่แตกต่างอย่างสิ้นเชิง ตอนนี้เรามาดูลำดับการดำเนินการของคำสั่งนี้กัน ค่าของนิพจน์ที่อยู่หลังคำฟังก์ชันจะถูกคำนวณไว้ล่วงหน้า กรณีแต่เนื่องจากในกรณีนี้ชื่อตัวแปรคือ ทางจากนั้นค่าของตัวแปรนี้จะถูกอ่าน ค่าผลลัพธ์จะถูกเปรียบเทียบตามลำดับกับแต่ละทางเลือก (ค่าคงที่ ค่าปัจจุบัน) ที่ระบุหลังคำบริการ ของ- ถ้าค่าของนิพจน์เท่ากับค่าคงที่ถัดไป ตัวดำเนินการสำรองที่ตามหลังค่าคงที่นี้ ซึ่งคั่นด้วยเครื่องหมายทวิภาคจะถูกดำเนินการ หลังจากที่คำสั่งทางเลือกดำเนินการเสร็จสิ้นแล้ว การดำเนินการจะย้ายไปยังคำสั่งที่อยู่ถัดจากคำสั่งตัวแปร หากค่าไม่ตรงกัน ทางโดยไม่มีค่าคงที่ โอเปอเรเตอร์นี้ตัวเลือกไม่ได้ดำเนินการใดๆ
แต่จะเกิดอะไรขึ้นหากจำเป็นต้องระบุสาขาของตัวดำเนินการที่จะดำเนินการหากค่าของนิพจน์ไม่ตรงกับค่าคงที่ใดๆ คุณสามารถใช้ทางเลือกอื่นสำหรับสิ่งนี้ได้ เช่น:
กรณีทาง ของ
ขึ้น: MapY:= MapY - 1;
ขวา: MapX:= MapX + 1;
ลง: MapY:= MapY + 1;
อื่นแมปเอ็กซ์:= แมปเอ็กซ์ - 1;
ดังนั้นการก่อสร้างที่สร้างขึ้นโดยใช้ตัวดำเนินการเคสจึงเทียบเท่ากับการก่อสร้างที่สร้างขึ้นก่อนหน้านี้โดยใช้ตัวดำเนินการอย่างสมบูรณ์ ตัวดำเนินการ2; จบ;- นอกจากนี้ยังชัดเจนยิ่งขึ้นและไม่เสี่ยงต่อการสับสนมากมาย อื่น.
ฉันต้องการดึงความสนใจของคุณอีกครั้งว่าค่าคงที่ในตัวดำเนินการตัวแปรสามารถเป็นได้ทั้งจำนวนเต็มโดยตรงและชื่อของค่าคงที่ที่ไม่ได้พิมพ์ตามที่อธิบายไว้ก่อนหน้านี้ ไม่อนุญาตให้ใช้ค่าคงที่ที่พิมพ์แทนตัวดำเนินการตัวแปร นอกจากนี้ ในแต่ละตัวเลือก คุณสามารถระบุรายการค่าคงที่ทั้งหมดที่คั่นด้วยเครื่องหมายจุลภาคหรือช่วงของค่าได้ เช่น:
กรณีทาง ของ
ขึ้น, ลง: writeln('เคลื่อนที่ในแนวตั้ง');
ขวา, ซ้าย: writeln ('เคลื่อนที่ในแนวนอน');
กรณีเอ็กซ์ ของ
10,20,30: writeln('สิบ');
1..9: writeln('หน่วย');
ในการก่อสร้างครั้งสุดท้ายผู้ปฏิบัติงาน writeln('หน่วย')จะถูกดำเนินการหากตัวแปร X มีค่าใดค่าหนึ่ง 1,2,3,..,8,9
.
ดังที่คุณอาจสังเกตเห็น ฉันจัดแนวเส้นด้วยค่าคงที่ด้วยเครื่องหมายทวิภาค เนื่องจากสำหรับฉันแล้วดูเหมือนว่าประเภทนี้จะมองเห็นได้ชัดเจนกว่า แม้ว่าจะเป็นเรื่องของรสนิยม และอย่างที่คุณทราบ ไม่มีเพื่อนสำหรับรสนิยมO)
ควรใช้ตัวดำเนินการตัวแปรตามกฎต่อไปนี้:
1) ค่าที่ยอมรับได้ของนิพจน์ - "สวิตช์" เขียนหลังคำฟังก์ชัน กรณีจะต้องตอบสนอง ประเภทไม่ต่อเนื่อง: สำหรับประเภทจำนวนเต็มจะต้องอยู่ในช่วง -32768..32767
.
2) ค่าคงที่ทางเลือกที่ระบุทั้งหมดต้องเป็นประเภทที่เข้ากันได้กับประเภทของนิพจน์
3) ค่าคงที่ในทางเลือกอื่นจะต้องไม่ซ้ำกันภายในคำสั่งตัวแปร และช่วงจะต้องไม่ทับซ้อนกันและต้องไม่มีค่าคงที่ที่ระบุในทางเลือกนี้หรือทางเลือกอื่น
และอีกอย่างหนึ่ง ออกแบบ กรณีให้หนึ่งคำสั่งสำหรับแต่ละทางเลือก หากคุณต้องการดำเนินการหลายคำสั่ง คุณควรจัดกลุ่มคำสั่งเหล่านั้นให้เป็นคำสั่งผสม เริ่มต้น..สิ้นสุด- คุณสามารถระบุตัวดำเนินการว่างสำหรับทางเลือกอื่นได้โดยการวางสัญลักษณ์ ";" (อัฒภาค) ทันทีหลังลำไส้ใหญ่ซึ่งจะไม่ทำอะไรเลย และไวยากรณ์สาขา อื่นจัดให้มีการระบุลำดับของตัวดำเนินการที่คั่นด้วยสัญลักษณ์ ';' (อัฒภาค) |
ตัวดำเนินการกระโดดแบบมีเงื่อนไขใน Turbo Pascal มีรูปแบบ:
ถ้า เงื่อนไขแล้ว ผู้ดำเนินการ 1อื่น ผู้ดำเนินการ 2;
เงื่อนไขเป็นนิพจน์เชิงตรรกะ ขึ้นอยู่กับว่าเลือกสาขาใดสาขาหนึ่งของอัลกอริธึมทางเลือก หากค่าเงื่อนไขเป็น TRUE แสดงว่า ผู้ดำเนินการ 1เขียนไว้หลังคีย์เวิร์ด then มิฉะนั้นจะถูกดำเนินการ ผู้ดำเนินการ 2ตามด้วยคำอื่นในขณะนั้น ผู้ดำเนินการ 1ข้ามไป หลังจากรันคำสั่งที่ระบุแล้ว โปรแกรมจะดำเนินการรันคำสั่งทันทีหลังจากคำสั่ง if
สิ่งสำคัญคือต้องจำไว้ว่าไม่เคยวางเครื่องหมายอัฒภาคไว้หน้าคำหลัก else!
else - ส่วนหนึ่งในคำสั่ง if อาจหายไป:
ถ้า เงื่อนไขแล้ว ผู้ดำเนินการ 1;
จากนั้น หากไม่ตรงตามเงื่อนไขลอจิคัล การควบคุมจะถูกโอนไปยังผู้ปฏิบัติงานที่อยู่ในโปรแกรมทันทีหลังจากสร้าง if
การดำเนินการพื้นฐาน ขั้นตอนและฟังก์ชันทางคณิตศาสตร์
นิพจน์ทางคณิตศาสตร์ในรูปแบบอัลกอริทึมประกอบด้วยการดำเนินการและตัวถูกดำเนินการ การดำเนินการส่วนใหญ่เป็นไบนารี่ เช่น มีตัวถูกดำเนินการสองตัว (การดำเนินการแบบเอกนารีมีตัวถูกดำเนินการหนึ่งตัว เช่น -a ใช้ที่อยู่ @B)
การดำเนินการทางคณิตศาสตร์:
+, -, /, *, div (การหารจำนวนเต็ม), mod (การหารส่วนที่เหลือ),
ตรรกะ: ไม่ใช่ และ หรือ หรือ xor
การดำเนินการเชิงสัมพันธ์: >,<, >=, <=, <>, =.
การคำนวณเชิงตรรกะและการดำเนินการเชิงสัมพันธ์
การมีอยู่ของประเภทบูลีนและการดำเนินการทำให้คุณสามารถโปรแกรมการคำนวณเชิงตรรกะซึ่งขึ้นอยู่กับพีชคณิตแบบบูลีน มีการแนะนำการดำเนินการทางลอจิคัลสี่รายการ ผลลัพธ์จะเป็นประเภทบูลีนเสมอและสามารถมีได้เพียงค่าใดค่าหนึ่งจากสองค่า (Trueº1 (จริง) หรือ Falseº0 (เท็จ))
เพื่อหลีกเลี่ยงข้อผิดพลาด ควรใส่วงเล็บไว้ระหว่างการคำนวณเชิงตรรกะจะดีกว่า ตัวอย่างเช่น สัญกรณ์ไม่ใช่ A และ B จะถูกตีความโดยคอมไพเลอร์เป็น (ไม่ใช่ A) และ B แต่บางทีอาจมีความจำเป็นดังต่อไปนี้: ไม่ใช่ (A และ B)
ขั้นตอนและฟังก์ชันทางคณิตศาสตร์
ไลบรารีระบบ Turbo Pascal แสดงอยู่ในตาราง:
ฟังก์ชันทางคณิตศาสตร์มีความอ่อนไหวต่อช่วงของการโต้แย้งมาก นอกจากนี้ค่าที่ส่งคืนของประเภทจำนวนเต็มจะต้องพอดีกับค่าเหล่านั้น มิฉะนั้นอาจส่งผลร้ายแรงได้
ฟังก์ชั่นส่วนใหญ่เป็นฟังก์ชั่นมาตรฐานและไม่ต้องการความคิดเห็น แยกกันฉันต้องการอยู่กับสิ่งที่เฉพาะเจาะจง
ฟังก์ชัน PI สร้างตัวเลข “Pi” ด้วยความแม่นยำขึ้นอยู่กับการมีอยู่ของตัวประมวลผลร่วมและมีเลขนัยสำคัญตั้งแต่ 10 ถึง 14 หลักหลังจุดทศนิยม ซึ่งสามารถใช้ในการคำนวณเป็นค่าคงที่ได้ แต่ไม่สามารถวางไว้ในค่าคงที่ที่คำนวณได้ ของบล็อกคอนสต์
ชุดฟังก์ชันตรีโกณมิติมีจำกัด แต่ทำให้สามารถขยายไลบรารีทางคณิตศาสตร์ได้โดยการแนะนำฟังก์ชันของคุณเองที่กำหนดฟังก์ชันทางคณิตศาสตร์มาตรฐาน
ประเภทข้อมูล
งานห้องปฏิบัติการหมายเลข 2(2 ชั่วโมง)
ตัวเลือกที่ 5
ตัวดำเนินการเป็นองค์ประกอบที่แบ่งแยกไม่ได้ของโปรแกรมที่ทำให้สามารถดำเนินการตามอัลกอริทึมบางอย่างได้ ความแตกต่างระหว่างโอเปอเรเตอร์และองค์ประกอบอื่นๆ ก็คือ มันจะบ่งบอกถึงการกระทำบางอย่างเสมอ ในภาษาปาสคาล ตัวดำเนินการประกอบด้วยคำฟังก์ชัน ตัวดำเนินการที่ใช้ในโปรแกรมจะถูกแยกออกจากกันและจากองค์ประกอบของโปรแกรมอื่นๆ ด้วยสัญลักษณ์ (;) ทั้งหมด ตัวดำเนินการปาสคาลสามารถแบ่งคร่าวๆได้เป็น สองกลุ่ม:
- เรียบง่าย;
- มีโครงสร้าง
ตัวดำเนินการง่ายๆเป็นตัวดำเนินการที่ไม่มีตัวดำเนินการอื่น ซึ่งรวมถึง:
- ผู้ดำเนินการมอบหมาย (:=);
- คำชี้แจงขั้นตอน;
- ตัวดำเนินการกระโดดแบบไม่มีเงื่อนไข (GOTO)
งบที่มีโครงสร้างเป็นตัวดำเนินการที่มีตัวดำเนินการอื่น ซึ่งรวมถึง:
- ตัวดำเนินการแบบผสม
- ตัวดำเนินการตามเงื่อนไข (IF, CASE);
- ตัวดำเนินการวนซ้ำ (FOR, WHILE, REPEAT);
- เข้าร่วมโอเปอเรเตอร์ (WITH)
ตัวดำเนินการง่ายๆ
ผู้ดำเนินการขั้นตอน
ผู้ดำเนินการขั้นตอนทำหน้าที่เรียกขั้นตอน
รูปแบบ: [procedure_name] (รายการพารามิเตอร์การโทร);
คำชี้แจงขั้นตอนประกอบด้วยตัวระบุขั้นตอน ตามด้วยรายการพารามิเตอร์การโทรในวงเล็บทันที Pascal มีโพรซีเดอร์ที่ไม่มีพารามิเตอร์ ในกรณีนี้ เมื่อเรียก จะไม่มีรายการพารามิเตอร์ การดำเนินการตามคำสั่งขั้นตอนจะนำไปสู่การเปิดใช้งานการดำเนินการที่อธิบายไว้ในเนื้อหา มีสองประเภทของขั้นตอนในภาษาปาสคาล:
- มาตรฐานซึ่งอธิบายไว้ในภาษานั้นและเป็นส่วนหนึ่งของภาษา
- ขั้นตอนผู้ใช้ที่ผู้ใช้สร้างขึ้น
หากต้องการเรียกขั้นตอนมาตรฐาน คุณต้องเชื่อมต่อในส่วน USES ของชื่อโมดูล (ไลบรารี) ซึ่งมีการอธิบายขั้นตอนนี้ไว้ ขั้นตอนจำนวนหนึ่งที่อยู่ในโมดูล SYSTEM จะเชื่อมต่อกับโปรแกรมโดยอัตโนมัติเสมอ และไม่จำเป็นต้องเชื่อมต่อในส่วน USES ขั้นตอนมาตรฐานของ Pascal คือ READ, WRITE, REWRITE, CLOSE, RESET
อ่าน ([file_variable], [input_list])
อ่าน(x,y)
ต้องสร้างขั้นตอนผู้ใช้ (ที่ไม่ได้มาตรฐาน) ก่อนใช้ในโปรแกรมและอยู่ในส่วนคำอธิบายของโปรแกรมหรือในหน่วยโปรแกรมแยกต่างหากของโมดูล หากขั้นตอนอยู่ในโมดูล จะต้องระบุชื่อของโมดูลนั้นในแอปพลิเคชัน USES
ตัวดำเนินการ GOTO ที่ไม่มีเงื่อนไข
รูปแบบ: ไปที่ [ฉลาก];
GOTO เป็นคำสงวนในภาษาปาสคาล [label] เป็นตัวระบุที่กำหนดเองซึ่งช่วยให้คุณสามารถทำเครื่องหมายคำสั่งโปรแกรมบางอย่างและอ้างอิงถึงในภายหลังได้ ในภาษาปาสคาล คุณสามารถใช้จำนวนเต็มที่ไม่ได้ลงนามเป็นป้ายกำกับได้ ป้ายจะถูกวางไว้ข้างหน้าและแยกออกจากตัวดำเนินการที่มีเครื่องหมาย (:) คำสั่งเดียวสามารถทำเครื่องหมายได้หลายป้ายกำกับ พวกเขายังแยกจากกัน (:) ก่อนที่จะใช้ป้ายกำกับในส่วนคำสั่ง จะต้องอธิบายไว้ในส่วน LABEL (ส่วนคำอธิบาย)
การดำเนินการ GOTO ถ่ายโอนการควบคุมไปยังคำสั่งที่ทำเครื่องหมายไว้ที่เหมาะสม เมื่อใช้แท็ก คุณต้องปฏิบัติตามกฎต่อไปนี้:
- ฉลากจะต้องอธิบายในส่วนคำอธิบายและต้องใช้ฉลากทั้งหมด
- หากใช้จำนวนเต็มเป็นป้ายกำกับ จะไม่ประกาศค่าเหล่านั้น
ขัดแย้งกับหลักการของเทคโนโลยีการเขียนโปรแกรมแบบมีโครงสร้าง ภาษาโปรแกรมสมัยใหม่ไม่รวมโอเปอเรเตอร์ดังกล่าวและไม่จำเป็นต้องใช้ นอกจากนี้ คอมพิวเตอร์สมัยใหม่ยังใช้สิ่งที่เรียกว่าวิธีสายพานลำเลียง หากพบตัวดำเนินการกระโดดแบบไม่มีเงื่อนไขในโปรแกรม ตัวดำเนินการดังกล่าวจะทำลายไปป์ไลน์ทั้งหมด บังคับให้สร้างมันขึ้นมาใหม่ ซึ่งจะทำให้กระบวนการคำนวณช้าลงอย่างมาก
งบที่มีโครงสร้าง
คำสั่งเงื่อนไข IF
ตัวดำเนินการแบบมีเงื่อนไขใช้ในโปรแกรมเพื่อใช้โครงสร้างอัลกอริธึม - การแตกแขนง ในโครงสร้างนี้ กระบวนการคำนวณสามารถดำเนินต่อไปในทิศทางใดทิศทางหนึ่งที่เป็นไปได้ การเลือกทิศทางมักกระทำโดยการตรวจสอบเงื่อนไขบางประการ โครงสร้างการแยกย่อยมีสองประเภท: โครงสร้างทางแยกและทางแยก
ในภาษาปาสคาล ตัวดำเนินการ IF แบบมีเงื่อนไขเป็นวิธีการจัดการกระบวนการคำนวณแบบแยกสาขา
รูปแบบ: ถ้า [boolean_expression] จากนั้น [operator_1]; อื่น [โอเปอเรเตอร์_2];
IF แล้ว Else คือคำฟังก์ชัน [operator_1], [operator_2] - การดำเนินการปกติของภาษาปาสคาล ส่วนอื่น ๆ เป็นทางเลือก (อาจหายไป)
คำสั่ง IF ทำงานดังนี้: ขั้นแรกจะตรวจสอบผลลัพธ์ของนิพจน์บูลีน หากผลลัพธ์เป็น TRUE ดังนั้น [statement_1] ที่ตามหลังคำฟังก์ชัน That จะถูกดำเนินการ และ [statement_2] จะถูกข้ามไป หากผลลัพธ์เป็น FALSE ระบบจะข้าม [statement_1] และดำเนินการ [statement_2]
หากไม่มีส่วน Else แสดงว่าคำสั่ง IF ไม่ได้อยู่ในรูปแบบเต็ม:
IF [นิพจน์บูลีน] จากนั้น [โอเปอเรเตอร์];
ในกรณีนี้ หากผลลัพธ์เป็น True (TRUE) แสดงว่า [คำสั่ง] จะถูกดำเนินการ หากเป็นเท็จ (FALSE) การควบคุมจะถูกโอนไปยังคำสั่งที่อยู่หลังคำสั่ง IF
มี 2 ตัวเลข A และ B จงหาจำนวนสูงสุด
ตัวดำเนินการแบบผสม
คำสั่งผสมคือลำดับของการดำเนินการตามอำเภอใจในโปรแกรม ซึ่งอยู่ในวงเล็บที่เรียกว่า (เริ่มต้น-สิ้นสุด)
รูปแบบ: เริ่มต้น [ตัวดำเนินการ]; จบ;
คำสั่งผสมอนุญาตให้กลุ่มของคำสั่งสามารถแสดงเป็นคำสั่งเดียวได้
คำชี้แจงการเลือก CASE
ออกแบบมาเพื่อใช้งานหลายสาขา เนื่องจากตัวดำเนินการ IF สามารถใช้กระบวนการคำนวณได้เพียงสองทิศทาง จึงไม่สะดวกเสมอไปที่จะใช้เพื่อใช้งานหลายสาขา การแยกหลายสาขาถูกนำมาใช้โดยคำสั่ง CASE
รูปแบบ: กรณี [select_key] ของ
[selection_constant_1]:[โอเปอเรเตอร์_1];
[selection_constant_2]:[โอเปอเรเตอร์_2];
[selection_constant_N]:[โอเปอเรเตอร์_N];
ELSE [ผู้ดำเนินการ];
CASE, OF, ELSE, END - คำฟังก์ชัน [select_key] เป็นพารามิเตอร์ของประเภทลำดับใดประเภทหนึ่ง [selection_constants] - ค่าคงที่ประเภทเดียวกันกับคีย์การเลือกที่ใช้การเลือก [operator_1(N)] คือโอเปอเรเตอร์ธรรมดา ELSE อาจจะหายไป
ตัวดำเนินการเลือกทำงานดังนี้: ก่อนที่ตัวดำเนินการจะทำงาน จะมีการกำหนดค่าของพารามิเตอร์คีย์การเลือก พารามิเตอร์นี้สามารถแสดงเป็นตัวแปรในโปรแกรมหรือด้วยวิธีอื่นก็ได้ จากนั้นพารามิเตอร์คีย์การเลือกจะถูกเปรียบเทียบตามลำดับกับค่าคงที่การเลือก หากค่าของคีย์การเลือกตรงกับหนึ่งในค่าคงที่การเลือก ตัวดำเนินการที่ตามหลังค่าคงที่นี้จะถูกดำเนินการ และตัวดำเนินการอื่นๆ ทั้งหมดจะถูกละเว้น หากคีย์การเลือกไม่ตรงกับค่าคงที่ใดๆ คำสั่งที่ตามหลัง Else จะถูกดำเนินการ บ่อยครั้งที่ Else เป็นทางเลือก และหากคีย์การเลือกไม่ตรงกับค่าคงที่การเลือกใดๆ และหากไม่มี Else การควบคุมจะถูกถ่ายโอนไปยังคำสั่งที่ตามหลังคำสั่ง CASE
คำสั่ง CASE ไม่มีการตรวจสอบเงื่อนไขที่ชัดเจนซึ่งเป็นเรื่องปกติสำหรับคำสั่ง IF ในเวลาเดียวกัน การดำเนินการเปรียบเทียบจะดำเนินการโดยปริยาย CASE แนะนำความไม่สอดคล้องกันในโปรแกรม Pascal เนื่องจากคำสั่งนี้ลงท้ายด้วยคำว่า End ซึ่งไม่มีการจับคู่ Begin
สร้างอัลกอริทึมและโปรแกรมสำหรับจำลองปัญหาการทำงานของสัญญาณไฟจราจร เมื่อคุณป้อนสัญลักษณ์อักษรตัวแรกของสีไฟจราจร โปรแกรมควรแสดงข้อความเกี่ยวกับสีและการทำงานที่เกี่ยวข้อง
โปรแกรมทำงานดังต่อไปนี้: โดยใช้ขั้นตอนการอ่านสัญลักษณ์ตัวอักษรของสีไฟจราจรจะถูกป้อนจากแป้นพิมพ์ หากป้อนตัวอักษร 'z' ที่สอดคล้องกับสีเขียว จากนั้นในคำสั่ง CASE ค่าที่ป้อนในรายการตัวเลือกจะค้นหาค่าคงที่การเลือก 'z' และข้อความ "สีเขียว อนุญาตให้เคลื่อนไหวได้" จะปรากฏขึ้น เมื่อคุณป้อนสัญลักษณ์ตัวอักษร 'k' และ 'zh' ข้อความที่คล้ายกันจะปรากฏขึ้น หากคุณป้อนอักขระอื่น ข้อความ "สัญญาณไฟจราจรไม่ทำงาน" จะปรากฏขึ้น เนื่องจากในกรณีนี้ ส่วนอื่นของคำสั่ง CASE จะใช้งานได้
คำสั่งวนรอบ
โครงสร้างอัลกอริธึมแบบวนเป็นโครงสร้างที่มีการดำเนินการบางอย่างหลายครั้ง โครงสร้างลูปในการเขียนโปรแกรมมีสองประเภท: ลูปพร้อมพารามิเตอร์และลูปวนซ้ำ
ในวงจรที่มีพารามิเตอร์ จะมีสิ่งที่เรียกว่าพารามิเตอร์วงจรเสมอ: X, X n, X k, ∆X บางครั้งการวนซ้ำที่มีพารามิเตอร์เรียกว่าการวนซ้ำปกติ คุณลักษณะเฉพาะคือสามารถกำหนดจำนวนลูปและการทำซ้ำได้ก่อนที่จะดำเนินการลูป
ในการวนซ้ำ ไม่สามารถระบุจำนวนลูปก่อนที่จะดำเนินการได้ จะดำเนินการตราบเท่าที่เป็นไปตามเงื่อนไขการต่อเนื่องของลูป
ภาษาปาสคาลมีตัวดำเนินการสามตัวที่ใช้โครงสร้างการคำนวณแบบวนรอบ:
- ตัวดำเนินการนับสำหรับ มีจุดมุ่งหมายเพื่อใช้การวนซ้ำด้วยพารามิเตอร์ และไม่สามารถใช้ในการวนซ้ำซ้ำได้
- ตัวดำเนินการวนซ้ำพร้อมเงื่อนไข WHILE;
- ตัวดำเนินการวนซ้ำพร้อมเงื่อนไข REPEAT
สองอันสุดท้ายมุ่งเน้นไปที่การนำลูปวนซ้ำมาใช้ แต่ยังสามารถใช้เพื่อนำลูปไปใช้ด้วยพารามิเตอร์ได้ด้วย
สำหรับผู้ประกอบการ
รูปแบบ: สำหรับ [loop_parameter] := [n_z_p_ts] ถึง [k_z_p_ts] Do [operator];
FOR, To, Do เป็นคำฟังก์ชัน [cycle_parameter] - พารามิเตอร์รอบ [n_z_p_ts] - ค่าเริ่มต้นของพารามิเตอร์รอบ [k_z_p_ts] - ค่าสุดท้ายของพารามิเตอร์รอบ [ตัวดำเนินการ] - ตัวดำเนินการโดยพลการ
พารามิเตอร์ลูปต้องเป็นตัวแปรลำดับ ค่าเริ่มต้นและสิ้นสุดของพารามิเตอร์ลูปจะต้องเป็นประเภทเดียวกันกับพารามิเตอร์ลูป
พิจารณางานของผู้ปฏิบัติงานโดยใช้อัลกอริธึม:
ในขั้นตอนแรก ค่าของพารามิเตอร์รอบจะใช้ [n_z_p_ts] จากนั้นพารามิเตอร์รอบจะถูกตรวจสอบให้น้อยกว่าหรือเท่ากับ [k_z_p_ts] เงื่อนไขนี้เป็นเงื่อนไขสำหรับการวนซ้ำต่อไป หากดำเนินการ ลูปจะยังคงดำเนินการต่อไปและ [คำสั่ง] จะถูกดำเนินการ หลังจากนั้นพารามิเตอร์ลูปจะเพิ่มขึ้น (ลดลง) ทีละรายการ จากนั้น ด้วยค่าใหม่ของพารามิเตอร์ลูป จะมีการตรวจสอบเงื่อนไขสำหรับการวนซ้ำต่อไป หากบรรลุผลแล้ว การกระทำนั้นก็จะเกิดขึ้นซ้ำอีก หากไม่เป็นไปตามเงื่อนไข การวนซ้ำจะหยุดทำงาน
ตัวดำเนินการ For แตกต่างอย่างมากจากตัวดำเนินการที่คล้ายกันในภาษาการเขียนโปรแกรมอื่น ความแตกต่างมีดังนี้:
- เนื้อความของตัวดำเนินการ For คำสั่งอาจไม่ถูกดำเนินการแม้แต่ครั้งเดียว เนื่องจากมีการตรวจสอบเงื่อนไขความต่อเนื่องของลูปก่อนตัวลูป
- ขั้นตอนการเปลี่ยนแปลงพารามิเตอร์วงจรคงที่และเท่ากับ 1;
- เนื้อความของลูปในคำสั่ง For จะแสดงด้วยคำสั่งเดียว หากการทำงานของตัวลูปต้องการคำสั่งง่ายๆ มากกว่าหนึ่งคำสั่ง คำสั่งเหล่านี้จะต้องถูกแปลงเป็นคำสั่งผสมเพียงคำสั่งเดียวโดยใช้วงเล็บปีกกา (BEGIN-END)
- พารามิเตอร์ลูปสามารถเป็นได้เฉพาะตัวแปรลำดับเท่านั้น
ตัวอย่างการใช้ตัวดำเนินการ FOR:สร้างตารางสำหรับแปลงรูเบิลเป็นดอลลาร์
คำสั่ง WHILE (คำสั่งวนซ้ำพร้อมเงื่อนไขเบื้องต้น)
รูปแบบ: ในขณะที่ [เงื่อนไข] ทำ [ผู้ดำเนินการ];
ในขณะที่ทำ - คำฟังก์ชั่น [เงื่อนไข] - การแสดงออกของประเภทตรรกะ [ตัวดำเนินการ] - ตัวดำเนินการสามัญ
;
คำสั่ง While ทำงานดังนี้ ประการแรก ผลลัพธ์ของเงื่อนไขลอจิคัลจะถูกตรวจสอบ หากผลลัพธ์เป็นจริง คำสั่งจะถูกดำเนินการ หลังจากนั้นคำสั่งจะกลับไปตรวจสอบเงื่อนไขด้วยค่าใหม่ของพารามิเตอร์ในนิพจน์เชิงตรรกะของเงื่อนไข หากผลลัพธ์เป็นเท็จ แสดงว่าการวนซ้ำถูกยกเลิก
เมื่อทำงานกับ While คุณต้องใส่ใจกับคุณสมบัติของมัน:
- เงื่อนไขที่ใช้ใน While คือเงื่อนไขการวนซ้ำ
- ในส่วนเนื้อความของลูป ค่าของพารามิเตอร์ที่รวมอยู่ในนิพจน์เงื่อนไขจะเปลี่ยนแปลงอยู่เสมอ
- การวนซ้ำ While อาจไม่ดำเนินการแม้แต่ครั้งเดียว เนื่องจากการตรวจสอบเงื่อนไขในการวนซ้ำต่อเนื่องจะดำเนินการก่อนเนื้อความของลูป
คำสั่ง REPEAT (คำสั่งวนซ้ำพร้อมเงื่อนไขภายหลัง)
รูปแบบ: ทำซ้ำ [วงจร_ร่างกาย]; จนกระทั่ง [เงื่อนไข];
คำสั่ง REPEAT ทำงานดังต่อไปนี้: ขั้นแรก คำสั่งในส่วนเนื้อหาของลูปจะถูกดำเนินการ หลังจากนั้นผลลัพธ์จะถูกตรวจสอบสำหรับเงื่อนไขลอจิคัล หากผลลัพธ์เป็นเท็จ ก็จะกลับไปดำเนินการคำสั่งของเนื้อหาลูปถัดไป หากผลลัพธ์เป็นจริง ผู้ดำเนินการจะออกจากระบบ
ตัวดำเนินการทำซ้ำมีคุณสมบัติดังต่อไปนี้:
- ในการทำซ้ำ จะมีการตรวจสอบเงื่อนไขการสิ้นสุดลูป และหากตรงตามเงื่อนไข ลูปจะหยุดทำงาน
- เนื้อความของลูปจะถูกดำเนินการอย่างน้อยหนึ่งครั้งเสมอ
- พารามิเตอร์สำหรับตรวจสอบเงื่อนไขมีการเปลี่ยนแปลงในเนื้อความของลูป
- คำสั่งเนื้อหาลูปไม่จำเป็นต้องอยู่ในวงเล็บโอเปอเรเตอร์ (BEGIN-END) ในขณะที่บทบาทของวงเล็บโอเปอเรเตอร์จะดำเนินการโดยทำซ้ำและจนถึง
คำนวณ y=sin(x) โดยที่ xn=10, xk=100 ขั้นตอนคือ 10
มันเกิดขึ้นที่โปรแกรมจำเป็นต้องจัดระเบียบการแยกสาขา ในกรณีนี้ กระบวนการแก้ไขปัญหาเกิดขึ้นบนพื้นฐานของการปฏิบัติตามหรือไม่ปฏิบัติตามเงื่อนไขบางประการ
ในภาษาปาสคาล การเลือกการดำเนินการ ขึ้นอยู่กับเงื่อนไขบางประการ สามารถนำไปใช้ได้โดยใช้โครงสร้าง
ถ้า... ถ้าอย่างนั้น... อย่างอื่น...
ถ้า... แล้ว...
2. รูปแบบเต็มของตัวดำเนินการกระโดดแบบมีเงื่อนไขหากเป็นภาษา Pascal คืออะไร?
รูปแบบเต็มของตัวดำเนินการกระโดดแบบมีเงื่อนไข ถ้า
:
ถ้า
เงื่อนไข แล้ว
ตัวดำเนินการ1
อื่น
ตัวดำเนินการ2;
การกระทำของตัวดำเนินการมีดังนี้ ขั้นแรก ค่าของนิพจน์จะถูกคำนวณ เงื่อนไข
- หากเป็นจริง (เท่ากับ TRUE ) คำสั่งที่ตามหลังคำนั้นจะถูกดำเนินการ แล้ว
(ตัวดำเนินการ1- หากค่าเป็นเท็จ (FALSE) คำสั่งที่ตามหลังคำนั้นจะถูกดำเนินการ อื่น(ตัวดำเนินการ2
).
ผู้ประกอบการ ตัวดำเนินการ1และ ตัวดำเนินการ2สามารถประสมได้ กล่าวคือ มีโค้ดหลายบรรทัด ตัวดำเนินการดังกล่าวจะอยู่ในวงเล็บสำหรับตัวดำเนินการ เริ่มต้น...สิ้นสุด- ความต้องการนี้เกิดขึ้นหากหลังจากคำที่สงวนไว้ แล้วหรือ อื่นคุณต้องระบุตัวดำเนินการหลายตัว
ในกรณีนี้ รูปแบบทั่วไปของตัวดำเนินการกระโดดแบบมีเงื่อนไขอาจมี เช่น รูปแบบต่อไปนี้:
ถ้า
เงื่อนไข แล้ว
เริ่ม
// ผู้ประกอบการหลายราย
...
จบ
อื่น
เริ่ม
// ผู้ประกอบการหลายราย
...
จบ ;
3. ตัวดำเนินการกระโดดแบบมีเงื่อนไขมีรูปแบบย่อว่าอย่างไร?
รูปแบบสั้นของตัวดำเนินการกระโดดแบบมีเงื่อนไขไม่มีบล็อก อื่นและมีรูปแบบดังนี้
ถ้า
เงื่อนไข แล้ว
ตัวดำเนินการ;
ในกรณีนี้ โอเปอเรเตอร์จะทำงานดังนี้ ขั้นแรก ให้คำนวณค่าของนิพจน์เชิงตรรกะ (บูลีน) เงื่อนไข
- หากเป็นผลจากการแสดงออกเชิงตรรกะ เงื่อนไขจริง (เท่ากับ จริง) จากนั้นตัวดำเนินการที่ตามหลังคำนั้นจะถูกดำเนินการ แล้ว- หากผลลัพธ์เป็น FALSE คำสั่งที่ตามหลังคำสั่งนั้นจะถูกดำเนินการ ถ้า(ในแถลงการณ์ ถ้า...แล้วไม่มีอะไรทำ)
หากตรงตามเงื่อนไข หากจำเป็นต้องดำเนินการกับตัวดำเนินการหลายตัว รูปแบบทั่วไปของตัวดำเนินการข้ามแบบมีเงื่อนไขอาจเป็นดังนี้:
ถ้า
เงื่อนไข แล้ว
เริ่ม
// ตัวดำเนินการตั้งแต่สองคนขึ้นไป
...
จบ
;
4. ตัวอย่างการใช้ตัวดำเนินการกระโดดแบบมีเงื่อนไขซึ่งมีแบบฟอร์มการแสดงแบบเต็ม
ตัวอย่างที่ 1ส่วนของโปรแกรมสำหรับหาค่าสูงสุดระหว่างจำนวนจริงสองตัว
varก,ข:จริง; // a, b - ตัวแปรที่ต้องการค่าสูงสุด
สูงสุด:จริง; - สูงสุด
...
เริ่ม
...
// a, b - ถูกระบุ
ถ้าก>ข แล้วสูงสุด:=ก อื่นสูงสุด:=ข; จบ
;
-
ตัวอย่างที่ 2 แฟรกเมนต์รหัสโปรแกรม
...
varแก้ไขปัญหานี้: เริ่ม
...
// x,f:จริง;
ถ้า
-5
แล้ว x - ระบุไว้ อื่นฉ:= x*x+8 // ฉ:= -x*x*x+2 ;
...
จบ
;
ในตัวแปร f - ผลลัพธ์
ตัวอย่างที่ 1 5. ตัวอย่างการใช้ตัวดำเนินการกระโดดแบบมีเงื่อนไขซึ่งมีรูปแบบการแสดงที่สั้นลง ข้อมูลโค้ดที่ค้นหาค่าต่ำสุดระหว่างจำนวนจริงสองตัวและ x
.
...
varย เริ่ม
...
// นาที:จริง; -
x, y - ให้ ถ้านาที:= x; แล้วนาที จบ
;
-นาที:= ปี;
var- เริ่ม
...
// คำนวณค่าของฟังก์ชันตามเงื่อนไข สมมติว่าเราต้องค้นหาค่าของฟังก์ชัน:
ถ้า x, f:จริง;<-6
แล้ว x - ระบุไว้ ถ้า
(-6
<=x) xฉ:=3 *x*x-x;<=5
) แล้วและ ถ้า(x แล้ว f:=sqrt(7 -x); จบ
;