การโฆษณา

บ้าน - อินเทอร์เน็ต
เทอร์โบปาสคาล. งบที่มีโครงสร้าง

ตัวดำเนินการกระโดดแบบมีเงื่อนไขใน 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

ตัวดำเนินการเป็นองค์ประกอบที่แบ่งแยกไม่ได้ของโปรแกรมที่ทำให้สามารถดำเนินการตามอัลกอริทึมบางอย่างได้ ความแตกต่างระหว่างโอเปอเรเตอร์และองค์ประกอบอื่นๆ ก็คือ มันจะบ่งบอกถึงการกระทำบางอย่างเสมอ ในภาษาปาสคาล ตัวดำเนินการประกอบด้วยคำฟังก์ชัน ตัวดำเนินการที่ใช้ในโปรแกรมจะถูกแยกออกจากกันและจากองค์ประกอบของโปรแกรมอื่นๆ ด้วยสัญลักษณ์ (;) ทั้งหมด ตัวดำเนินการปาสคาลสามารถแบ่งคร่าวๆได้เป็น สองกลุ่ม:

  1. เรียบง่าย;
  2. มีโครงสร้าง

ตัวดำเนินการง่ายๆเป็นตัวดำเนินการที่ไม่มีตัวดำเนินการอื่น ซึ่งรวมถึง:

  • ผู้ดำเนินการมอบหมาย (:=);
  • คำชี้แจงขั้นตอน;
  • ตัวดำเนินการกระโดดแบบไม่มีเงื่อนไข (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); จบ ;

บทเรียนนี้มีลักษณะที่ตัวดำเนินการตามเงื่อนไขในภาษา 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) ค่าคงที่ในทางเลือกอื่นจะต้องไม่ซ้ำกันภายในคำสั่งตัวแปร และช่วงจะต้องไม่ทับซ้อนกันและต้องไม่มีค่าคงที่ที่ระบุในทางเลือกนี้หรือทางเลือกอื่น

และอีกอย่างหนึ่ง ออกแบบ กรณีให้หนึ่งคำสั่งสำหรับแต่ละทางเลือก หากคุณต้องการดำเนินการหลายคำสั่ง คุณควรจัดกลุ่มคำสั่งเหล่านั้นให้เป็นคำสั่งผสม เริ่มต้น..สิ้นสุด- คุณสามารถระบุตัวดำเนินการว่างสำหรับทางเลือกอื่นได้โดยการวางสัญลักษณ์ ";" (อัฒภาค) ทันทีหลังลำไส้ใหญ่ซึ่งจะไม่ทำอะไรเลย และไวยากรณ์สาขา อื่นจัดให้มีการระบุลำดับของตัวดำเนินการที่คั่นด้วยสัญลักษณ์ ';' (อัฒภาค)

 


x>5



อ่าน:

อ่าน:

แฟลชไดรฟ์ USB ตัวใดที่น่าเชื่อถือและเร็วที่สุด?

การเปลี่ยนอินเทอร์เฟซ Steam - จากรูปภาพธรรมดาไปจนถึงการนำเสนอทั้งหมดบนหน้าจอ การออกแบบไอน้ำใหม่

การเปลี่ยนอินเทอร์เฟซ Steam - จากรูปภาพธรรมดาไปจนถึงการนำเสนอทั้งหมดบนหน้าจอ การออกแบบไอน้ำใหม่

การเชื่อมต่อแล็ปท็อปเข้ากับทีวีผ่านสาย USB เพื่อเชื่อมต่อแล็ปท็อปเข้ากับทีวี VGA

วิธียกเลิกการสมัครสมาชิก Megogo บนทีวี: คำแนะนำโดยละเอียด วิธียกเลิกการสมัครสมาชิก Megogo

วิธียกเลิกการสมัครสมาชิก Megogo บนทีวี: คำแนะนำโดยละเอียด วิธียกเลิกการสมัครสมาชิก Megogo

ลักษณะและข้อดีของบริการ Megogo หนึ่งในบริการวิดีโอที่ใหญ่ที่สุดในยุโรปตะวันออกและ CIS คือ Megogo แค็ตตาล็อกประกอบด้วยมากกว่า 80,000...

วิธีแบ่งพาร์ติชันดิสก์โดยติดตั้ง Windows โดยไม่สูญเสียข้อมูล แบ่งพาร์ติชันดิสก์ 7

วิธีแบ่งพาร์ติชันดิสก์โดยติดตั้ง Windows โดยไม่สูญเสียข้อมูล แบ่งพาร์ติชันดิสก์ 7

การแบ่งฮาร์ดไดรฟ์ออกเป็นพาร์ติชั่นโดยใช้ Windows7 การแบ่งพาร์ติชั่นไดรฟ์ C:\ ใน Win7 เมื่อซื้อคอมพิวเตอร์หรือแล็ปท็อปเครื่องใหม่ที่มี...

ผู้ใช้ที่ทำงานใน Microsoft Word บ่อยครั้งอาจประสบปัญหาบางอย่างเป็นครั้งคราว  เราได้หารือเกี่ยวกับวิธีแก้ปัญหากับหลายๆ คนแล้ว... บางครั้งเมื่อคุณพยายามเข้าสู่ร้านค้าอย่างเป็นทางการของยักษ์ใหญ่ดิจิทัล Play Market จะเขียนเพื่อเปิดใช้งานรหัสส่งเสริมการขาย เพื่อให้ได้ความครอบคลุม...