Turbo Pascal ในขณะที่ ... ทำ - วนรอบก่อนเงื่อนไข

Turbo Pascal แม้ว่าจะไม่ใช่คนโปรดของโลกก็ตามแอปพลิเคชันสำหรับการเขียนโปรแกรม แต่ผู้สร้างที่ทำตามขั้นตอนแรกในการเขียนซอฟต์แวร์เริ่มทำความคุ้นเคยกับสภาพแวดล้อมเฉพาะนี้ มันให้ความคิดเกี่ยวกับการแยกตัวดำเนินการฟังก์ชันและกระบวนการต่าง ๆ รวมถึงสิ่งอื่น ๆ อีกมากมาย ตัวอย่างเช่นเมื่อศึกษาโปรแกรมเมอร์จะพบวงจรใน Turbo Pascal: ขณะที่ For และทำซ้ำ

ปาสกาลในขณะที่

แนวคิดของวงจรและความหลากหลาย

วงจรเรียกว่าการกระทำซ้ำ ๆ สภาพแวดล้อมนี้ใช้:

  • ด้วยพารามิเตอร์ (For ... to ... do);
  • ด้วยเงื่อนไข (ในขณะที่ ... ทำ);
  • ด้วย postcondition (ทำซ้ำ ... จนกระทั่ง)

ประเภทแรกใช้เมื่อทราบล่วงหน้ามีกี่ขั้นตอนในการแก้ปัญหา อย่างไรก็ตามมีงานหลายอย่างที่ไม่มีข้อมูลว่าจะมีการดำเนินการบางอย่างซ้ำกี่ครั้ง ในกรณีนี้การวนซ้ำกลายเป็นสิ่งที่ขาดไม่ได้ใน Pascal While เช่นเดียวกับหลักการทำซ้ำ

โครงสร้างวงจร

สาระสำคัญของการทำงานใน Pascal While, For คืออะไรและทำซ้ำลูป? โครงสร้างดังกล่าวมีส่วนหัวและส่วนเนื้อหาแยกจากกัน ส่วนประกอบแรกระบุตัวแปรที่จะ "ทำงาน" กำหนดเงื่อนไขในการตรวจสอบความจริงช่วงเวลาที่ร่างกายจะถูกดำเนินการ ส่วนประกอบที่สองประกอบด้วยนิพจน์ที่ควรใช้หากตรงตามเงื่อนไขนั่นคือจริงไม่ใช่เท็จ

เมื่อทำซ้ำในบรรทัดสุดท้ายจากนั้นจะกลับไปที่ส่วนหัวที่มีการตรวจสอบเงื่อนไข หากเป็นจริงจะมีการดำเนินการซ้ำและหากไม่ตรงตามเงื่อนไขโปรแกรมจะ "ออกจาก" ลูปและดำเนินการต่อไป

ลูปในขณะที่มีลักษณะเช่นนี้ Pascal ABC และโปรแกรมที่คล้ายกันต้องการการเขียนโค้ดดังนี้:

  • ในขณะที่ เงื่อนไข ทำ;
  • เริ่ม;
  • ห่วงตัว;
  • สิ้นสุด.

หาก 1 คำสั่ง (1 การกระทำ) จะถูกดำเนินการในเนื้อความของลูป วงเล็บเริ่มต้น… จะถูกละเว้น

แผนภาพบล็อกลูป

Turbo Pascal ในขณะที่มีคุณสมบัติดังต่อไปนี้:

  • เงื่อนไขที่ซับซ้อนสามารถใช้ภายในโครงสร้างได้
  • ไม่ควรมีเครื่องหมายอัฒภาคหลังคำว่า do (ถือเป็นข้อผิดพลาดใน Turbo Pascal และ Pascal ABC);
  • ตัวแปร ค่าคงที่ หรือนิพจน์ที่ทำหน้าที่เป็นเอาต์พุตของรูทีนย่อยเมื่อได้รับการตอบสนองที่ผิดพลาด ต้องเป็นประเภทบูลีน นั่นคือ บูลีน

ต่อไปนี้เป็นแผนภาพบล็อกของวงจรประเภทนี้ มันแสดงให้เห็นลำดับของการกระทำ

ปาสกาล abc ในขณะที่

อัลกอริธึมการทำงานของวงจร

ในสภาพแวดล้อมการเขียนโปรแกรมที่ง่ายที่สุด รวมถึง Pascal ABC ลูป while จะทำงานตามหลักการต่อไปนี้:

  • การวนซ้ำที่กำหนด เช่น การทำซ้ำ จะทำงานหลายครั้งตราบเท่าที่เงื่อนไขเป็นจริง
  • ทันทีที่ไม่ตรงตามเงื่อนไขและให้คำตอบเป็นเท็จ (หรือ "เท็จ") ผู้ดำเนินการออกจากลูป
  • ทันทีที่สิ่งนี้เกิดขึ้น โปรแกรม "ไป" กับสิ่งปลูกสร้างที่อยู่หลังวัฏจักร

นี่เป็นข้อแตกต่างที่สำคัญระหว่าง while และ Repeat นั่นคือ การวนซ้ำที่มีเงื่อนไขเบื้องต้นจากเงื่อนไขภายหลัง

มันสำคัญมากที่จะให้ในเนื้อหาของวงรอบสุดท้ายเปลี่ยนตัวแปรที่ระบุในส่วนหัวในขณะที่ ไม่ว่าในกรณีใด ต้องมีสถานการณ์ที่ให้ค่าเป็นเท็จในบางครั้ง ไม่เช่นนั้นจะเกิดการวนซ้ำไม่รู้จบ จากนั้นคุณจะต้องใช้มาตรการเพิ่มเติมเพื่อออกจากคอมไพเลอร์ ข้อผิดพลาดดังกล่าวถือว่าเลวร้ายและไม่สามารถให้อภัยได้

ฉันจะออกจากโปรแกรมระหว่างลูปได้อย่างไร?

มักมีสถานการณ์เกิดขึ้นเมื่อโอเปอเรเตอร์ในขณะที่ Pascal สร้างการวนซ้ำไม่รู้จบในรหัสโปรแกรมที่เขียน สิ่งนี้หมายความว่า? การวนซ้ำซ้ำหลายครั้งนับไม่ถ้วนเนื่องจากเงื่อนไขเป็นจริงเสมอ ตัวอย่างเช่น นี่คือตัวอย่างบางส่วนของโปรแกรม:

  • ในขณะที่ 2> 1 ทำ;
  • เขียน (1).

ในกรณีนี้ หากต้องการหยุดการทำงาน ให้กด CTRL + F2

มีอีก 2 วิธีในการควบคุมสิ่งนี้พฤติกรรมของโปรแกรม ตัวอย่างเช่น หากคุณเขียน Continue ลงในโค้ด ซึ่งจะถ่ายโอนการควบคุมไปยังจุดเริ่มต้นของโครงสร้างการวนซ้ำ จากนั้นการควบคุมจะถูกส่งผ่านในลูปในขณะที่ไปยังการตรวจสอบก่อนหน้า

คำสั่ง Break สามารถขัดจังหวะการดำเนินการทุกอย่างได้วนซ้ำและควบคุมการถ่ายโอนไปยังการวนซ้ำครั้งต่อไป ทางออกจากโครงสร้างจะไม่ถูกตรวจสอบที่นี่ รูปภาพแสดงตัวอย่างการใช้ตัวดำเนินการเหล่านี้

ในขณะที่คำสั่งปาสกาล

แก้ไขปัญหา

มาดูการทำงานของลูป while กันPascal เสนอวิธีแก้ปัญหาที่หลากหลายที่สุด ตอนนี้เรามาอาศัยสิ่งที่ง่ายที่สุดเพื่อทำความเข้าใจหลักการทำงาน งานในโปรแกรม Pascal ABC ได้รับการแก้ไขแล้ว แต่จะมีภาพของสภาพแวดล้อม Turbo Pascal แบบคลาสสิกสำหรับการเปรียบเทียบ

แบบฝึกหัดที่ 1: กำหนดฟังก์ชัน Y = 5-X ^ 2/2 สร้างตารางค่าที่มีขั้นตอน sh = 0.5 ในช่วงเวลา [-5; 5]

อัลกอริทึมของการกระทำ:

  • ตั้งค่าตัวแปร X เป็นค่าเริ่มต้น -5 (นั่นคือจุดเริ่มต้นของช่วงเวลา)
  • คำนวณค่าของ Y จนกระทั่งตัวแปร x ถึงจุดสิ้นสุดของกลุ่มที่ระบุ
  • แสดงค่าของฟังก์ชันและ abscissa (X);
  • เพิ่ม X ตามขั้นตอนที่กำหนด

นี่คือลักษณะของโค้ดในโปรแกรม Pascal ABC

ในขณะที่งานปาสกาล

รหัสมีลักษณะอย่างไรในโปรแกรม Turbo Pascal ภาพด้านล่างแสดงให้เห็นสิ่งนี้

ในขณะที่งานปาสกาล

การบ้าน 2: กำหนดให้อาร์เรย์ A ประกอบด้วยจำนวนเต็มบวกและตัวเลขติดลบ ประกอบด้วยองค์ประกอบ 10 ประการ จำเป็นต้องสร้างเมทริกซ์ B ซึ่งจะแสดงองค์ประกอบที่เป็นบวกของอาร์เรย์ A ที่มีดัชนีคู่ แสดงผลรวมของกำลังสองในตัวเลขจากเมทริกซ์ใหม่

อัลกอริทึมของการกระทำ:

  • จำเป็นต้องเขียนรูทีนย่อยที่จะ "ทำงาน" เฉพาะกับองค์ประกอบของอาร์เรย์ A ที่มีดัชนีคู่กัน ในลูป ค่าของตัวแปรที่รับผิดชอบต่อพาริตีของดัชนีจะเพิ่มขึ้น 2
  • หากเป็นตัวเลขที่มีดัชนีคู่จากเมทริกซ์ Aสอดคล้องกับเงื่อนไข x> 0 จากนั้นตัวนับขององค์ประกอบอาร์เรย์จะเพิ่มขึ้น 1 ค่าปัจจุบันของตัวแปรตัวนับจะเป็นดัชนีของตัวเลขที่คัดลอกในอาร์เรย์ B
  • เริ่มแรก ค่ารวมของตัวแปร ซึ่งมีหน้าที่ในการหาผลรวมของกำลังสองของจำนวนบวก ถูกกำหนดเป็น 0 จากนั้นการดำเนินการจะถูกดำเนินการ: ค่าใหม่ของกำลังสองจะถูกเพิ่มเข้าไปในผลรวมก่อนหน้า
  • อย่ากลัวถ้าไม่บวกทั้งหมดตัวเลขย้ายจากเมทริกซ์หนึ่งไปยังอีกเมทริกซ์ คุณต้องระวัง โปรแกรมเมอร์มือใหม่หลายคนเขียนโค้ดใหม่ด้วยความตื่นตระหนก คุณควรศึกษาเงื่อนไขอย่างรอบคอบ: ตัวเลขบวกอยู่ใน "ตำแหน่ง" คู่ นั่นคือ มีดัชนีที่ทวีคูณของ 2

ในขณะที่ pascal abc loop

จำเป็นต้องมีการติดตามด้วยตนเองเพื่อให้แน่ใจว่าการคำนวณนั้นถูกต้อง ในบางครั้ง เมื่อใช้วิธีนี้ คุณจะระบุข้อผิดพลาดที่ไม่เข้าตาในระหว่างการตรวจสอบโค้ดที่เขียนเป็นประจำได้

ในขณะที่ pascal abc loop

หากคุณทำการคำนวณด้วยตนเอง คุณสามารถมั่นใจได้ว่าว่าโปรแกรมทำงานอย่างถูกต้อง ในทางกลับกัน แสดงให้เห็นว่าอัลกอริทึมสำหรับการสร้างโค้ดนั้นถูกต้อง ลำดับของการกระทำจะนำไปสู่จุดสิ้นสุดทางตรรกะ