ตัวอย่างปาสคาล ICT ของอัลกอริธึมแบบวนรอบ อัลกอริธึมแบบวน ประเภทของวงจรและคำสั่งแบบวนในภาษาปาสคาล การเลือกรอบการทำงานขึ้นอยู่กับลักษณะของสภาวะปัญหา การฝึกฝนเท่านั้นที่จะบอกคุณถึงทางออกที่ดีที่สุด
![](https://i1.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img1.jpg)
ประเภทของรอบ
วนซ้ำด้วยพารามิเตอร์ สำหรับ
วนซ้ำโดยมีเงื่อนไขเบื้องต้น
วงจร ในขณะที่ โดยมีเงื่อนไขเบื้องต้น
วงจร ทำซ้ำ - จนกระทั่ง ด้วยสภาวะภายหลัง
![](https://i1.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img2.jpg)
วนซ้ำโดยมีเงื่อนไขเบื้องต้นใน Pascal - WHILE
ตัวดำเนินการวนซ้ำที่มีเงื่อนไขเบื้องต้นจะดำเนินการโดยไม่ทราบจำนวนครั้ง การวนซ้ำจะสิ้นสุดลงหากนิพจน์เชิงตรรกะหรือผลลัพธ์กลายเป็นเท็จ
เพราะความจงรักภักดี การแสดงออกทางตรรกะมีการตรวจสอบตั้งแต่ต้น เนื้อความของลูปอาจไม่ถูกดำเนินการแม้แต่ครั้งเดียว
![](https://i1.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img3.jpg)
โครงสร้างห่วง ในขณะที่
![](https://i0.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img4.jpg)
บล็อก - แผนภาพวงจร ในขณะที่
ตัวดำเนินการ
เงื่อนไข
![](https://i1.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img5.jpg)
ตัวอย่าง
ภารกิจ: เขียนโปรแกรมที่คำนวณผลรวมของเลขคู่ทั้งหมดจนถึง 50
writeln("ผลรวมคือ: ",ผลรวม);
![](https://i0.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img6.jpg)
งาน
เขียนโปรแกรมที่ค้นหา n!.
![](https://i1.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img7.jpg)
วนซ้ำกับ postcondition ในภาษา Pascal – REPEAT-UNTIL
โอเปอเรเตอร์นี้คล้ายกับโอเปอเรเตอร์ลูปที่มีเงื่อนไขเบื้องต้น แต่แตกต่างตรงที่เงื่อนไขจะถูกตรวจสอบหลังจากดำเนินการเนื้อความ (การกระทำ) ของลูป เพื่อให้แน่ใจว่ามีการดำเนินการอย่างน้อยหนึ่งครั้ง ไม่เหมือนลูปที่แยกวิเคราะห์ก่อนหน้านี้
โปรดทราบว่า โอเปอเรเตอร์นี้วงจรหมายถึงการมีอยู่ของตัวดำเนินการหลายตัวในเนื้อความของวงจร นั่นคือสามารถดำเนินการได้หลายอย่าง ดังนั้นคำว่าบริการ เริ่ม และ จบ ไม่ต้องการ.
![](https://i2.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img8.jpg)
โครงสร้างห่วง
ทำซ้ำจนกระทั่ง
![](https://i0.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img9.jpg)
บล็อก - แผนภาพวงจร ทำซ้ำจนกระทั่ง
ตัวดำเนินการ
เงื่อนไข
![](https://i1.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img10.jpg)
ตัวอย่าง
ภารกิจ: เขียนโปรแกรมหาผลรวมของตัวเลขตัวแรกและตัวสุดท้ายของตัวเลข
a,b,c,d:จำนวนเต็ม;
writeln("ใส่ตัวเลข");
writeln('ผลรวมของตัวเลขตัวแรกและตัวสุดท้ายคือ:'c);
![](https://i2.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img11.jpg)
งาน
เขียนโปรแกรมกำหนดว่าจำนวนเฉพาะเป็นจำนวนเฉพาะหรือไม่
![](https://i2.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img12.jpg)
วนซ้ำด้วยพารามิเตอร์ใน Pascal - FOR
วงจร สำหรับ กำหนดเงื่อนไขที่โปรแกรมจะทำงานก่อนที่จะถูกดำเนินการ สมมติว่าคุณต้องวนซ้ำโปรแกรม n ครั้ง จากนั้นจึงทำได้อย่างง่ายดายโดยใช้การวนซ้ำนี้
วงจรยู สำหรับ มีคุณสมบัติเป็นลักษณะ - ตัวนับซึ่งโดยปกติจะกำหนดด้วยตัวอักษร i หรือ j
ในลูป สามารถระบุตัวนับได้โดยตรง (service word ถึง ) และในลำดับย้อนกลับ (คำที่ใช้งานได้ ลงไป ).
![](https://i2.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img13.jpg)
โครงสร้างห่วง สำหรับ
สำหรับ i:= n1 ถึง n2 DO
แบบฟอร์มการบันทึกครั้งที่ 1
สำหรับ i:= n2 ลงไป n1 DO
แบบฟอร์มการบันทึกครั้งที่ 2
![](https://i1.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img14.jpg)
บล็อก - แผนภาพวงจร สำหรับ
ผม:= n1 … n2
ตัวห่วง
![](https://i2.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img15.jpg)
ตัวอย่าง
ภารกิจ: เขียนโปรแกรมที่คำนวณกำลัง n ของจำนวนที่กำหนด
a, n, i, pr: จำนวนเต็ม;
writeln('กรอกตัวเลข');
writeln('ใส่กำลังของตัวเลข');
สำหรับฉัน:= 1 ถึง n ทำ
writeln('กำลังของตัวเลขคือ',pr);
![](https://i2.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img16.jpg)
งาน
เขียนโปรแกรมโดยหาตัวเลข P = (1-1/2)(1-1/3)*…*(1-1/n)
N ถูกป้อนจากแป้นพิมพ์
![](https://i2.wp.com/fhd.multiurok.ru/b/c/6/bc66798dc1bbc48714695095821ba03d8de7066b/img17.jpg)
วนซ้ำด้วยเงื่อนไขเบื้องต้น หากไม่ทราบจำนวนการทำซ้ำล่วงหน้า แต่ระบุโดยเงื่อนไขเท่านั้น และการดำเนินการที่ต้องดำเนินการหลังจากตรวจสอบเงื่อนไขแล้วเท่านั้น ให้ใช้การวนซ้ำพร้อมเงื่อนไขเบื้องต้น นิพจน์เชิงตรรกะถูกใช้เป็นเงื่อนไข ส่วนเนื้อความของลูปคือตัวดำเนินการแบบง่ายหรือแบบผสม ก่อนการดำเนินการกับเนื้อความของลูปแต่ละครั้ง จะมีการตรวจสอบเงื่อนไข หากผลลัพธ์เป็น "จริง" จากนั้นเนื้อความของลูปจะถูกดำเนินการอีกครั้ง หากเป็น "เท็จ" แสดงว่าการวนซ้ำจะออกจากการทำงาน ในบล็อกไดอะแกรม ใน Pascal เริ่มต้นสิ้นสุด; เงื่อนไข เนื้อความของลูป ไม่มี แบบฝึกหัด เริ่มต้นของลูป สิ้นสุดของลูป ใช่ ขณะทำ
วนซ้ำด้วยเงื่อนไขภายหลัง หากไม่ทราบจำนวนการทำซ้ำล่วงหน้า แต่ระบุโดยเงื่อนไขเท่านั้น และการกระทำที่ต้องทำก่อนตรวจสอบเงื่อนไข ให้ใช้การวนซ้ำด้วยเงื่อนไขภายหลัง นิพจน์เชิงตรรกะถูกใช้เป็นเงื่อนไข ส่วนเนื้อความของลูปคือตัวดำเนินการแบบง่ายหรือแบบผสม หลังจากการดำเนินการกับเนื้อความของลูปแต่ละครั้ง จะมีการตรวจสอบเงื่อนไข หากผลลัพธ์เป็น "เท็จ" เนื้อความของลูปจะถูกดำเนินการอีกครั้ง หากเป็น "จริง" แสดงว่าการวนซ้ำออกจากการทำงาน ในแผนภาพบล็อก ใน Pascal Repeat Condition Loop Body ใช่ ไม่ ฝึกจนถึง ;
วนซ้ำด้วยพารามิเตอร์ ในกรณีที่ทราบจำนวนการทำซ้ำล่วงหน้า จะใช้การวนซ้ำพร้อมพารามิเตอร์ ตัวแปรที่ระบุจำนวนการทำซ้ำเรียกว่าพารามิเตอร์ลูปหรือตัวแปรควบคุม หลังจากการดำเนินการแต่ละครั้งของเนื้อหาลูป ตัวแปรควบคุมจะเพิ่มขึ้นหรือลดลง การวนซ้ำจะถูกดำเนินการจนกว่าจะเกินหรือน้อยกว่าขีดจำกัด ในแผนภาพบล็อกใน Pascal X คือตัวแปรควบคุม (พารามิเตอร์วงจร) A คือค่าเริ่มต้นของ X, B คือค่าสุดท้ายของ X C คือขั้นตอนของการเปลี่ยนแปลง X ในขั้นตอนนี้คุณสามารถใช้ได้เท่านั้น: “to” = 1; “downto” = -1 X:=A,B,C การฝึกวนร่างกายสำหรับ X:=A ถึง B เริ่มต้นสิ้นสุด;
ตัวอย่างของปัญหาการใช้ลูปที่มีเงื่อนไขเบื้องต้น เพิ่มเลข 3 ให้เป็นกำลังที่กำหนด ภารกิจ: อัลกอริธึมทางวาจา: คูณตัวเลข X โดยเริ่มแรกเท่ากับ 1 จำนวนครั้งที่กำหนด (H) ด้วย 3 เริ่ม H BHBH X: =1 X:=X*3 สิ้นสุด X ป้อนองศาที่กำหนด ค่าเริ่มต้น “B” ตัวนับองศา B=B+1 คูณด้วย 3 การเพิ่มตัวนับ การแสดงผลค่าผลลัพธ์ Programm Stepen; ตัวแปร H,B,X:จำนวนเต็ม; เริ่มเขียน(ปริญญา?); อ่าน(H); เอ็กซ์:=1; ข:=1; ในขณะที่บี
H X:=1 X:=X*3 สิ้นสุด X ป้อนกำลังที่กำหนด ค่าเริ่มต้น" title="ตัวอย่างงานที่ใช้ลูปโดยมีเงื่อนไขภายหลัง เพิ่มเลข 3 ให้เป็นกำลังที่กำหนด TASK: อัลกอริธึมทางวาจา: ทวีคูณ ตัวเลข X เริ่มต้นเท่ากับ 1 จำนวนครั้งที่กำหนด (H) สำหรับ 3. เริ่มต้น N B>=H X:=1 X:=X*3 สิ้นสุด X ป้อนระดับที่กำหนด ค่าเริ่มต้น" class="link_thumb"> 8 !}ตัวอย่างของปัญหาในการใช้ลูปที่มีเงื่อนไขหลัง เพิ่มเลข 3 ให้เป็นกำลังที่กำหนด ภารกิจ: อัลกอริธึมทางวาจา: คูณตัวเลข X โดยเริ่มแรกเท่ากับ 1 ซึ่งเป็นจำนวนครั้งที่ระบุ (H) ด้วย 3 เริ่ม H B>=H X :=1 X:=X*3 สิ้นสุด X เข้าสู่ระดับที่กำหนด ค่าเริ่มต้น “B” ตัวนับระดับ B=B+1 คูณด้วย 3 การเพิ่มตัวนับ เอาท์พุตมูลค่าผลลัพธ์ Programm Stepen; ตัวแปร H,B,X:จำนวนเต็ม; เริ่มเขียน(ปริญญา?); อ่าน(H); เอ็กซ์:=1; ข:=0; ทำซ้ำ X:=X*3; ข:=ข+1; จนกระทั่ง B>=H; Writeln(ผลลัพธ์,X); จบ. ไม่ใช่ ใช่ คำอธิบายแผนภาพบล็อกทฤษฎีปาสคาล B:=0 =H X:=1 X:=X*3 end X เข้าสู่ระดับที่กำหนด ค่าเริ่มต้น"> =H X:=1 X:=X*3 end X เข้าสู่ระดับที่กำหนด ค่าเริ่มต้น "B" ตัวนับองศา B=B +1 คูณด้วย 3 เพิ่มตัวนับเอาท์พุทค่าผลลัพธ์ โปรแกรม Stepen; Var H,B,X:integer; Begin Writeln(Degree?); Readln(H); X:=1; B:=0; ทำซ้ำ X:= X*3; B: =B+1; จนถึง B>=H; Writeln (ผลลัพธ์,X); สิ้นสุด ไม่ ใช่ ทฤษฎี Pascal Block Diagram คำอธิบาย B:=0"> =H X:=1 X:=X*3 end X ป้อนระดับที่กำหนด ค่าเริ่มต้น" title=" ตัวอย่างปัญหาโดยใช้ลูปที่มีเงื่อนไขภายหลัง เพิ่มเลข 3 ให้เป็นกำลังที่กำหนด ภารกิจ: อัลกอริธึมทางวาจา: คูณตัวเลข X เริ่มต้นเท่ากับ 1 ของตัวเลขที่กำหนด จำนวนครั้ง (H) คูณ 3 เริ่มต้น N B>=H X: =1 X:=X*3 สิ้นสุด X เข้าสู่ระดับที่กำหนด ค่าเริ่มต้น"> title="ตัวอย่างของปัญหาในการใช้ลูปที่มีเงื่อนไขหลัง เพิ่มเลข 3 ให้เป็นกำลังที่กำหนด ภารกิจ: อัลกอริธึมทางวาจา: คูณตัวเลข X โดยเริ่มแรกเท่ากับ 1 ซึ่งเป็นจำนวนครั้งที่ระบุ (H) ด้วย 3 เริ่ม H B>=H X :=1 X:=X*3 end X ป้อนระดับที่กำหนด ค่าเริ่มต้น"> !}
ตัวอย่างของงานที่ใช้ลูปพร้อมพารามิเตอร์ เพิ่มเลข 3 ให้เป็นกำลังที่กำหนด ภารกิจ: อัลกอริธึมทางวาจา: คูณตัวเลข X โดยเริ่มแรกเท่ากับ 1 ซึ่งเป็นจำนวนครั้งที่ระบุ (H) ด้วย 3 เริ่ม H X:=1 X:=X*3 สิ้นสุด X ป้อนกำลังที่กำหนด ค่าเริ่มต้น X=1 พารามิเตอร์จาก 1 ถึง N คูณด้วย 3 เอาต์พุตของค่าผลลัพธ์ โปรแกรม Stepen; ตัวแปร H,B,X:จำนวนเต็ม; เริ่มเขียน(ปริญญา?); อ่าน(H); เอ็กซ์:=1; สำหรับ B:=1 ถึง H ให้เริ่มต้น X:=X*3; จบ; Writeln(ผลลัพธ์,X); จบ. B:=1,H,1 คำอธิบายแผนภาพบล็อกทฤษฎีปาสคาล
ภารกิจ: เมื่อเริ่มฝึกแล้ว นักกีฬาวิ่ง 10 กม. ในวันแรก ทุกวันเขาเพิ่มบรรทัดฐานรายวัน 10% ของบรรทัดฐานของวันก่อนหน้า ระยะทางรวมที่นักกีฬาจะครอบคลุมใน 7 วันคือเท่าไร? ตัวแปรอินพุต: ตัวแปรเอาต์พุต: S – เส้นทางทั้งหมด d – จำนวนวัน Sd – ระยะทางสำหรับวันปัจจุบัน
คำถามท้ายเรื่องสำหรับการควบคุม: 1. ตัวดำเนินการใดใน Pascal กำหนดลูปที่มีเงื่อนไขเบื้องต้น 2. จะระบุขั้นตอน “1” และ “-1” ในพารามิเตอร์ในลูปได้อย่างไร 3. สาขาใดที่ลูปที่มีเงื่อนไขภายหลังตามมา? 4. มีพารามิเตอร์เงื่อนไขหรือไม่ 5. สิ่งที่สามารถเป็นเนื้อหาของลูปได้ 6. เมื่อใดที่ลูปพร้อมพารามิเตอร์ที่ใช้
สไลด์ 2
วางแผน
แนวคิดของลูป คำสั่ง Loop สำหรับ Loop While Loop Repeat Literature
สไลด์ 3
วรรณกรรม
คาสเตอร์นอฟ เอเอฟ, เอฟสตราโตวา จี.เอ. ภาษาโปรแกรมปาสคาล: บทช่วยสอนสำหรับมหาวิทยาลัย - Cherepovets: สถาบันการศึกษาของรัฐสำหรับการศึกษาวิชาชีพชั้นสูง ChSU, 2010. - 117 น. - บรรณานุกรม: หน้า 114. หนังสือเรียนอิเล็กทรอนิกส์เกี่ยวกับภาษาการเขียนโปรแกรม Pascal /http://pascal.guti.ru Plan
สไลด์ 4
แนวคิดของวัฏจักร
อัลกอริทึมในการแก้ปัญหาหลายอย่างเป็นแบบวนรอบเพื่อให้ได้ผลลัพธ์ ลำดับเฉพาะการดำเนินการจะดำเนินการหลายครั้ง ตัวอย่างเช่น โปรแกรมควบคุมความรู้แสดงคำถาม ยอมรับคำตอบ เพิ่มเครื่องหมายสำหรับคำตอบของคะแนนรวม จากนั้นทำซ้ำการกระทำเหล่านี้จนกว่าผู้เรียนจะตอบคำถามทั้งหมด หรือเช่นหากต้องการค้นหานามสกุลที่ต้องการในรายการคุณควรตรวจสอบนามสกุลแรกในรายการเพื่อดูว่าตรงกับนามสกุลที่ค้นหาจากนั้นนามสกุลที่สองที่สามเป็นต้น จนกว่าจะพบนามสกุลที่ต้องการหรือถึงจุดสิ้นสุดของรายการ
สไลด์ 5
อัลกอริธึมที่มีกลุ่มของคำสั่งที่ถูกดำเนินการหลายครั้งเรียกว่าวงจร กลุ่มของคำสั่งที่ซ้ำกันเรียกว่าส่วนเนื้อหาของลูป ในภาษาปาสคาล สามารถใช้คำสั่งลูป For, While และ Repeat ได้ วางแผน
สไลด์ 6
สำหรับโอเปอเรเตอร์แบบวนซ้ำ
ตัวดำเนินการ For loop จะใช้หากจำเป็นต้องดำเนินการเนื้อความของ loop หลายครั้ง และทราบจำนวนครั้งของการทำซ้ำล่วงหน้า
สไลด์ 7
รูปแบบที่ 1 ของการเขียนตัวดำเนินการ For loop
รูปแบบที่ 1 ของการเขียนตัวดำเนินการ For ใน ปริทัศน์มีลักษณะดังนี้: ForCounter:=Start_valuetoFinal_valuedoOperator; โดยที่ For, to, do เป็นคำฟังก์ชัน ตัวนับคือตัวแปรลำดับ (โดยปกติจะเป็นจำนวนเต็ม) ที่กำหนดจำนวนครั้งที่การวนซ้ำจะเกิดซ้ำ จำนวนการซ้ำคำนวณโดยใช้สูตร: Final_value – Initial_value+1 End_Value ต้องมากกว่าหรือเท่ากับ Start_Value
สไลด์ 8
หากเนื้อความของลูปประกอบด้วยตัวดำเนินการหลายตัว รูปแบบที่ 1 ของการเขียนตัวดำเนินการ For จะมีลักษณะดังนี้: ForCounter:=Start_valuetoFinal_valuedo Begin (เนื้อความของห่วง) สิ้นสุด;
สไลด์ 9
มาดูอัลกอริทึมของ For loop ในรูปแบบแรกของการเขียนกัน ตัวนับถูกกำหนดเป็นค่าเริ่มต้น_ มีการตรวจสอบเงื่อนไข: ค่าตัวนับมากกว่าค่า End_value หรือไม่ หากเงื่อนไขเป็นจริง (ใช่) การวนซ้ำจะสิ้นสุด หากเงื่อนไขเป็นเท็จ (ไม่ใช่) เนื้อความของลูปจะถูกดำเนินการ จากนั้นค่าตัวนับจะเพิ่มขึ้นหนึ่งค่า และตรวจสอบเงื่อนไขอีกครั้ง เช่น ข้อ 2.
สไลด์ 10
รูปแบบที่ 2 ของการเขียนตัวดำเนินการ For loop
รูปแบบที่ 2 ของการเขียนตัวดำเนินการ For โดยทั่วไปมีลักษณะดังนี้: For Counter:=Start_valuedowntoFinal_valuedoOperator; โดยที่: สำหรับ, downto, do เป็นคำที่ทำหน้าที่ ตัวนับคือตัวแปรลำดับ (โดยปกติจะเป็นจำนวนเต็ม) ที่กำหนดจำนวนครั้งที่การวนซ้ำจะเกิดซ้ำ จำนวนการซ้ำคำนวณโดยใช้สูตร: Start_value–Final_value+1 Start_Value ต้องมากกว่าหรือเท่ากับ End_Value
สไลด์ 11
หากเนื้อความของลูปประกอบด้วยตัวดำเนินการหลายตัว รูปแบบที่ 2 ของการเขียนตัวดำเนินการ For จะมีลักษณะดังนี้: ForCounter:=Start_valuedowntoFinal_valuedo Begin //Loop body End;
สไลด์ 12
ลองพิจารณาอัลกอริทึมของ For loop ในรูปแบบที่สองของสัญลักษณ์: ตัวนับถูกกำหนดเป็นค่า Initial_ มีการตรวจสอบเงื่อนไข: ค่าตัวนับน้อยกว่าค่า End_value หรือไม่ หากเงื่อนไขเป็นจริง (ใช่) การวนซ้ำจะสิ้นสุด หากเงื่อนไขเป็นเท็จ (ไม่ใช่) เนื้อความของลูปจะถูกดำเนินการ ค่าตัวนับจะลดลงหนึ่งค่า และตรวจสอบเงื่อนไขอีกครั้ง เช่น ข้อ 2.
สไลด์ 13
สำหรับโอเปอเรเตอร์แบบวนซ้ำ
โปรแกรมEx1; var i, n:จำนวนเต็ม; (i – ตัวนับ, n – จำนวนดาวที่ต้องการ) s:string;(s – สตริงดาวที่สร้างขึ้น) เริ่มต้น Writeln("ป้อนจำนวนดาว"); (สอบถามจำนวนดาว) Readln(n); (ผู้ใช้กรอกจำนวนดาว n) s:=""; (การสร้างสตริงเครื่องหมายดอกจันเริ่มต้นด้วยสตริงว่าง) (สตริงถูกสร้างขึ้นโดยใช้ For loop ค่า default_value ของตัวนับคือ 1 ค่า Final_value คือจำนวนดาวที่ต้องการ n) fori:= 1 ถึง n do s :=s+"*"; (ในแต่ละขั้นตอนของลูปจะมีเครื่องหมายดอกจันติดอยู่ที่บรรทัด) Writeln(s) (บรรทัดถูกพิมพ์) Readln; จบ. ตัวอย่างแผน: โปรแกรมสร้างกลุ่มดาว จำนวนดาวในบรรทัดจะถูกกำหนดโดยผู้ใช้
สไลด์ 14
ในขณะที่วนซ้ำ
ลูป While ถูกใช้เมื่อไม่ทราบจำนวนการทำซ้ำของเนื้อหาลูปในระหว่างการพัฒนาโปรแกรม และสามารถระบุได้เฉพาะในขณะที่โปรแกรมกำลังทำงานอยู่เท่านั้น โดยทั่วไป คำสั่ง While จะถูกเขียนดังนี้: While Condition doOperator; โดยที่ While คือคำที่ทำหน้าที่ เงื่อนไขคือนิพจน์เชิงตรรกะที่กำหนดความต่อเนื่องของการวนซ้ำ
สไลด์ 15
หากเนื้อหาของลูปประกอบด้วยหลายคำสั่ง ดังนั้นการวนรอบ While จะถูกเขียนดังนี้: WhileCondition do Begin //Loop body End;
สไลด์ 16
มาดูอัลกอริทึมของ While loop: มีการตรวจสอบเงื่อนไขแล้ว หากเงื่อนไขเป็นจริง เนื้อความของลูปจะถูกดำเนินการ หลังจากนั้นจะมีการตรวจสอบเงื่อนไขอีกครั้ง หากเงื่อนไขเป็นเท็จ การวนซ้ำก็จะสิ้นสุดลง
สไลด์ 17
ดังนั้น While คือลูปที่มีเงื่อนไขเบื้องต้นหรือลูป "While" (เนื้อความของลูปจะถูกดำเนินการในขณะที่เงื่อนไขเป็นจริง) ถ้าเงื่อนไขเป็นเท็จในการผ่านครั้งแรกของลูป เนื้อความของลูปจะไม่ถูกดำเนินการแม้แต่ครั้งเดียว หากเงื่อนไขไม่เคยกลายเป็นเท็จ การวนซ้ำจะเกิดซ้ำไปเรื่อยๆ เช่น การวนซ้ำจะเกิดขึ้น
สไลด์ 18
โปรแกรมEx2; varAccount: จริง; (ขนาดบัญชี) เดือน: จำนวนเต็ม; (จำนวนเดือนที่ผ่านไปนับตั้งแต่เปิดบัญชี) เริ่มต้นบัญชี:=1000; (ฝาก 1,000 รูเบิลเข้าบัญชี) เดือน:=0; (บัญชีเพิ่งเปิด) ในขณะที่บัญชี
สไลด์ 19
ทำซ้ำวงจร
ลูปทำซ้ำ เช่นเดียวกับลูป While ถูกใช้ในโปรแกรมหากจำเป็นต้องดำเนินการกับเนื้อความของลูปหลายๆ ครั้ง แต่ไม่ทราบจำนวนการทำซ้ำล่วงหน้า โดยทั่วไป ลูปทำซ้ำจะถูกเขียนดังนี้: ทำซ้ำ //เนื้อความของลูปจนกระทั่งเงื่อนไข; โดยที่ซ้ำ, จนกระทั่งเป็นคำฟังก์ชัน เงื่อนไขคือนิพจน์บูลีนที่กำหนดจุดสิ้นสุดของการวนซ้ำ
สไลด์ 20
ลองพิจารณาอัลกอริทึมของลูปทำซ้ำ: เนื้อความของลูปที่อยู่ระหว่างคำสงวนทำซ้ำและจนกระทั่งถูกดำเนินการ มีการตรวจสอบสภาพ หากเงื่อนไขเป็นจริง การวนซ้ำจะสิ้นสุดลง หากเงื่อนไขเป็นเท็จ เนื้อความของลูปจะถูกดำเนินการอีกครั้ง
สไลด์ 21
ดังนั้น Repet จึงเป็นลูปที่มีเงื่อนไขภายหลังหรือลูป "Before" (เนื้อความของลูปจะถูกดำเนินการจนกว่าเงื่อนไขจะเป็นจริง) ดังนั้นเนื้อความของลูปจึงถูกดำเนินการอย่างน้อยหนึ่งครั้ง ถ้าเงื่อนไขไม่เคยเป็นจริง การวนซ้ำจะไม่มีที่สิ้นสุด
สไลด์ 22
โปรแกรมEx3; var เวลา: จำนวนเต็ม; (เวลาหาร) เซลล์: จำนวนเต็ม;(จำนวนเซลล์) เริ่มต้นเวลา:=0;(เซลล์ยังไม่ได้เริ่มการแบ่ง) เซลล์:=1;(หนึ่งเซลล์) ทำซ้ำเวลา:=Time+3;(ในอีกสามชั่วโมงข้างหน้า ) เซลล์: =เซลล์*2;(จำนวนเซลล์เพิ่มขึ้น 2 เท่า) จนกระทั่งเซลล์>24; (จนกระทั่งเงื่อนไข “จำนวนเซลล์มากกว่า 24” เป็นจริง) Writeln(Time); (ส่งออกผลลัพธ์) Readln; จบ. ตัวอย่างแผน: อะมีบาเซลล์เดียวแบ่งออกเป็น 2 เซลล์ทุกๆ 3 ชั่วโมง กำหนดจำนวนเซลล์ที่จะเกิน 24 ในเวลาต่อมากี่ชั่วโมง
ดูสไลด์ทั้งหมด
กลับไปข้างหน้า
ความสนใจ! ดูตัวอย่างสไลด์นี้มีวัตถุประสงค์เพื่อให้ข้อมูลเท่านั้นและอาจไม่ได้แสดงถึงคุณลักษณะทั้งหมดของการนำเสนอ ถ้าคุณสนใจ งานนี้กรุณาดาวน์โหลดเวอร์ชันเต็ม
เป้า:ศึกษาโครงสร้างอัลกอริทึมของวัฏจักร การสร้างแบบจำลองและอัลกอริทึมสำหรับการแก้ปัญหาเชิงปฏิบัติ
ในระหว่างเรียน
I. การอัพเดตความรู้
- ทบทวนแนวคิดของอัลกอริทึมและโครงสร้างพื้นฐานของภาษาอัลกอริทึม
- สามารถพัฒนาได้ แบบจำลองทางคณิตศาสตร์อัลกอริทึมและบล็อกไดอะแกรมสำหรับการแก้ปัญหา
- มีความเข้าใจในภาษาการเขียนโปรแกรมและวัตถุประสงค์
- สามารถทำงานในสภาพแวดล้อมการเขียนโปรแกรมได้
- รู้โครงสร้างของโปรแกรม
- สามารถเขียนนิพจน์ที่มีปริมาณเชิงตัวเลขและเชิงสัญลักษณ์ได้
- รู้โครงสร้างของผู้ปฏิบัติงานและคุณลักษณะของงาน
- สามารถใช้โอเปอเรเตอร์ในการเขียนโปรแกรมที่มีโครงสร้างเชิงเส้นและแบบแยกสาขาได้
- สามารถสร้างและรันโปรแกรมบนคอมพิวเตอร์เพื่อทำการดีบักได้
ครั้งที่สอง เนื้อหาทางทฤษฎีของบทเรียน
ปัญหาในทางปฏิบัติส่วนใหญ่จำเป็นต้องมีการกระทำเดิมซ้ำๆ กัน นั่นคือ การใช้ตัวดำเนินการตั้งแต่หนึ่งตัวขึ้นไปซ้ำ (การนำเสนอ)
สมมติว่าคุณต้องป้อนและประมวลผลลำดับตัวเลข หากมีเพียงห้าตัวเลข คุณสามารถสร้างอัลกอริทึมเชิงเส้นได้ หากมีมากกว่าหนึ่งพันรายการก็เป็นไปได้ที่จะเขียนอัลกอริธึมเชิงเส้น แต่มันน่าเบื่อและไร้เหตุผลมาก หากไม่ทราบจำนวนตัวเลขในขณะที่พัฒนาอัลกอริทึม แสดงว่าอัลกอริทึมเชิงเส้นนั้นเป็นไปไม่ได้โดยพื้นฐาน
ตัวอย่างอื่น. หากต้องการค้นหานามสกุลของบุคคลในรายการ คุณต้องตรวจสอบชื่อนามสกุลในรายการ จากนั้นจึงตรวจสอบนามสกุลที่สอง สาม ฯลฯ จนกว่าจะเจออันที่ต้องการหรือถึงจุดสิ้นสุดของรายการ คุณสามารถเอาชนะความยากลำบากดังกล่าวได้ด้วยความช่วยเหลือของวงจร
วงจรคือส่วนของอัลกอริธึม (โปรแกรม) ที่ถูกดำเนินการซ้ำๆ ดังนั้น อัลกอริธึมแบบวนรอบจึงเป็นอัลกอริธึมที่มีวัฏจักร
วัฏจักรมีสองประเภท: โดยไม่ทราบจำนวนการทำซ้ำ และไม่ทราบจำนวนการทำซ้ำ ในทั้งสองกรณี นี่หมายถึงจำนวนการทำซ้ำในขั้นตอนการพัฒนาอัลกอริทึม
โครงสร้างวงจรมี 3 ประเภท:
- วนซ้ำโดยมีเงื่อนไขเบื้องต้น
- วนซ้ำกับเงื่อนไขหลัง;
- วนซ้ำด้วยพารามิเตอร์
มิฉะนั้น โครงสร้างเหล่านี้จะเรียกว่าวัฏจักร เช่น "ขณะ" "ก่อน" "สำหรับ"
รูปแบบกราฟิกของข้อมูลการบันทึกของโครงสร้างอัลกอริทึม:
วนซ้ำด้วยเงื่อนไขเบื้องต้น (aka loop ลาก่อน) มีรูปแบบ:
เงื่อนไข – การแสดงออกของประเภทตรรกะ
การวนซ้ำอาจไม่ถูกดำเนินการแม้แต่ครั้งเดียวหากค่าของนิพจน์เชิงตรรกะกลายเป็นเท็จทันที
ชุดคำสั่งระหว่าง start และ end จะถูกดำเนินการจนถึง ในขณะที่เงื่อนไขเป็นจริง .
สำหรับการที่ เพื่อให้วงจรสิ้นสุดลงจำเป็นที่ลำดับคำสั่งระหว่าง BEGIN และ END จะเปลี่ยนค่าของตัวแปรที่รวมอยู่ในนั้น เงื่อนไข.
วนซ้ำด้วยเงื่อนไขภายหลัง (aka loop ก่อน) มีรูปแบบ:
เงื่อนไข – การแสดงออกของประเภทตรรกะ
บันทึก:
ลำดับคำสั่งระหว่างทำซ้ำ และจนกระทั่ง จะสำเร็จเสมอไป อย่างน้อยหนึ่งครั้ง;
เพื่อให้การวนซ้ำเสร็จสมบูรณ์จำเป็นต้องมีลำดับของคำสั่งระหว่างทำซ้ำ และจนกระทั่ง เปลี่ยนค่าของตัวแปรที่รวมอยู่ในนิพจน์เงื่อนไข
คำสั่งทำซ้ำ เช่นเดียวกับคำสั่ง while จะถูกใช้ในโปรแกรมหากจำเป็นต้องทำการคำนวณซ้ำ (ลูป) แต่ไม่ทราบจำนวนการทำซ้ำล่วงหน้า และถูกกำหนดโดยความคืบหน้าของการคำนวณเอง
วนซ้ำด้วยพารามิเตอร์ (aka loop สำหรับ)มีรูปแบบ:
ฉัน – พารามิเตอร์รอบ;
a – ค่าเริ่มต้นของวงจร;
b – ค่าสุดท้ายของวงจร
h – ขั้นตอนการเปลี่ยนพารามิเตอร์
โครงสร้างของวัฏจักรนี้เรียกอย่างอื่น วนรอบฉันครั้ง.
คำสั่งนี้ดำเนินการในลักษณะนี้: พารามิเตอร์ i ถูกตั้งค่าเป็นค่าเริ่มต้น a เปรียบเทียบกับค่าสุดท้าย b และหากน้อยกว่าหรือเท่ากับค่าสุดท้าย b ชุดคำสั่งจะถูกดำเนินการ พารามิเตอร์ถูกกำหนดให้เป็นค่าของพารามิเตอร์ก่อนหน้าเพิ่มขึ้น ชม.– ขั้นตอนของการเปลี่ยนแปลงพารามิเตอร์และเปรียบเทียบกับค่าสุดท้าย b อีกครั้ง
ในภาษาการเขียนโปรแกรม Pascal ขั้นตอนการเปลี่ยนแปลงพารามิเตอร์สามารถเท่ากับหนึ่งหรือลบหนึ่งได้
หากมีคำสั่งเดียวระหว่าง start และ end ก็ไม่จำเป็นต้องเขียนวงเล็บโอเปอเรเตอร์ กฎนี้ใช้ได้กับลูปเช่น "While" และ "For"
ลองดูตัวอย่างการแก้ปัญหาโดยใช้โครงสร้างเหล่านี้
ตัวอย่าง.
คำนวณผลคูณของตัวเลขตั้งแต่ 1 ถึง 5 โดยใช้ตัวเลือกการวนซ้ำต่างๆ
แบบจำลองทางคณิตศาสตร์:
Р= 1·2·3·4·5=120
มาเขียนอัลกอริทึมในรูปแบบของบล็อกไดอะแกรม
เพื่อตรวจสอบความถูกต้องของอัลกอริธึม ให้กรอกข้อมูลในตารางการติดตาม
ขั้นตอน | การดำเนินการ | ร | ฉัน | การตรวจสอบสภาพ |
1 | ป:=1 | 1 | ||
2 | ฉัน:=1; | 1 | 1 | |
3 | ฉัน<=5 ป:=ป*ผม ผม:=ผม+1 |
1 | 1 | 1<=5, да (истина) |
4 | ฉัน<=5 ป:=ป*ผม ผม:=ผม+1 |
2 | 2 | 2<=5, да (истина) |
5 | ฉัน<=5 ป:=ป*ผม ผม:=ผม+1 |
6 | 3 | 3<=5, да (истина) |
6 | ฉัน<=5 ป:=ป*ผม ผม:=ผม+1 |
24 | 4 | 4<=5, да (истина) |
7 | ฉัน<=5 ป:=ป*ผม ผม:=ผม+1 |
120 | 5 | 5<=5, да (истина) |
8 | ฉัน<=5 ป:=ป*ผม ผม:=ผม+1 |
6<=5, нет (ложь) |
การตรวจสอบเงื่อนไขเกิดขึ้นในหลายขั้นตอน: การตรวจสอบเงื่อนไขและการดำเนินการคำสั่งบนสาขาใดสาขาหนึ่ง ดังนั้นตารางการติดตามจะไม่บันทึกคำสั่งอัลกอริธึม แต่เป็นการดำเนินการแต่ละรายการที่คอมพิวเตอร์ดำเนินการในแต่ละขั้นตอน
ขั้นตอนแรก: P ได้รับการกำหนดให้มีค่าเป็นหนึ่ง
ขั้นตอนที่สอง: ฉันได้รับมอบหมายค่าหนึ่ง
ขั้นตอนที่สาม: เมื่อ i เท่ากับ 1 เราก็ตรวจดูว่าเงื่อนไข 1 น้อยกว่าหรือเท่ากับ 5 ใช่แล้ว เงื่อนไขเป็นจริง คือ ให้ P มีค่า 1 คูณ 1 ก็จะได้ 2 สำหรับ i: หนึ่งบวกหนึ่งเท่ากับสอง
ขั้นตอนที่สี่:เมื่อ i เท่ากับ 2 เราก็ตรวจดูว่าเงื่อนไข 2 น้อยกว่าหรือเท่ากับ 5 ใช่แล้ว เงื่อนไขเป็นจริง คือ ให้ P มีค่า 2 คูณ 1 จะเป็น 2 สำหรับ i: 2 บวก 1 มันจะเป็นสาม
ขั้นตอนที่ห้า:โดยที่ i เท่ากับ 3 เราก็ตรวจดูว่าเงื่อนไข 3 น้อยกว่าหรือเท่ากับ 5 ใช่แล้ว เงื่อนไขเป็นจริง แปลว่า P มีค่าเป็น 2 คูณ 3 ก็จะได้เป็น 6 สำหรับ i: สามบวกหนึ่งเท่ากับสี่
ขั้นตอนที่หก:โดยที่ i เท่ากับ 4 เราก็ตรวจดูว่าเงื่อนไขที่ 4 น้อยกว่าหรือเท่ากับ 5 ใช่แล้ว เงื่อนไขเป็นจริง แปลว่า P มีค่าเท่ากับ 6 คูณ 4 ก็จะเท่ากับ 24 สำหรับฉัน: สี่บวกหนึ่งเท่ากับห้า
ขั้นตอนที่เจ็ด:โดย i เท่ากับ 5 เราก็ตรวจดูว่าเงื่อนไข 5 น้อยกว่าหรือเท่ากับ 5 ใช่แล้ว เงื่อนไขเป็นจริง คือ ให้ P มีค่าเป็น 24 คูณ 5 ก็จะได้เป็น 120 สำหรับฉัน: ห้าบวกหนึ่งเป็นหก
ขั้นตอนที่แปด:เมื่อ i เท่ากับ 6 เราก็เช็คว่าเงื่อนไข 6 น้อยกว่าหรือเท่ากับ 5 ไม่ใช่ เงื่อนไขเป็นเท็จ แล้วเราก็ออกจาก loop แล้วผลที่ได้คือค่าสุดท้ายเท่ากับ 120 .
โปรแกรม PR1;
ตัวแปร i: จำนวนเต็ม;
เริ่ม
ป:=1;
ฉัน:=1;
ขณะที่ฉัน<=5 do
เริ่ม
ป:=P*ฉัน;
ฉัน:=ฉัน+1;
จบ;
เขียน('P=', P);
จบ.
สำหรับการวนซ้ำที่มีเงื่อนไขภายหลัง เราจะสร้างบล็อกไดอะแกรมและตารางการติดตาม (สไลด์16)
เป็นผลให้เราได้ค่าสุดท้ายเท่ากับหนึ่งร้อยยี่สิบในขั้นตอนที่เจ็ด
และสำหรับไซเคิลที่มีพารามิเตอร์ เราจะสร้างบล็อกไดอะแกรมและตารางการติดตาม (สไลด์ 17)
เป็นผลให้เราได้ค่าสุดท้ายเท่ากับหนึ่งร้อยยี่สิบในขั้นตอนที่หก
งาน:
แสดงตัวเลขตั้งแต่ 1 ถึง 5 ใน:
- สั่งตรง;
- ในลำดับย้อนกลับ
แบบจำลองทางคณิตศาสตร์:
- 1 2 3 4 5;
- 5 4 3 2 1.
แผนภาพบล็อกและโปรแกรมสำหรับการแก้ปัญหาจะแสดงสำหรับตัวเลขในลำดับไปข้างหน้าและย้อนกลับ
(สไลด์ 21)
ให้เราเขียนอัลกอริธึมที่พิจารณาในภาษาการเขียนโปรแกรม Pascal
(สไลด์ 22)
สาม. สรุปบทเรียน
ดังนั้นเราจึงพิจารณาคำถามต่อไปนี้:
- วงจรโครงสร้างอัลกอริทึม
- ประเภทของโครงสร้างอัลกอริทึม:
- วนซ้ำโดยมีเงื่อนไขเบื้องต้น
- วนซ้ำกับเงื่อนไขหลัง;
- วนซ้ำด้วยพารามิเตอร์
- เราพิจารณาวิธีการบันทึกโครงสร้างเหล่านี้
- เราดูตัวอย่างการแก้ปัญหาโดยใช้โครงสร้างเหล่านี้