ค้นหาไซต์

Turbo Pascal ในขณะที่ ... ทำ - ห่วงกับ precondition

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

Pascal ในขณะที่

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

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

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

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

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

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

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

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

  • ในขณะที่ สภาพ ทำ;
  • เริ่มต้น;
  • ร่างกายของวงจร;
  • ปลาย

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

ผังงานของวงจร

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

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

แผนภาพบล็อกของวัฏจักรของรุ่นนี้มีลักษณะดังนี้ แสดงลำดับการกระทำ

pascal abc ในขณะที่

ขั้นตอนของวงจร

.. ในสภาพแวดล้อมการเขียนโปรแกรมง่ายมและเอชในปาสคาลเอบีซีในขณะที่วงทำงานบนหลักการต่อไปนี้:

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

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

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

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

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

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

ในกรณีนี้เพื่อหยุดงานให้กด CTRL + F2

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

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

ขณะที่ Pascal ทำงาน

แก้ปัญหา

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

กิจกรรมที่ 1: ฟังก์ชัน Y = 5-X ^ 2/2 จะได้รับ สร้างตารางค่าที่มีขั้นตอน sh = 0.5 ในช่วง [-5; 5]

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

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

นี่คือรหัสในโปรแกรม Pascal ABC

ในขณะที่งาน pascal

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

ในขณะที่งาน pascal

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

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

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

loop ขณะ pascal abc

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

loop ขณะ pascal abc

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

</ p>
  • การประเมินผล: