คำนำ
ก่อนอื่นอย่าพูดถึงการสร้างโครงการพื้นฐานของ AngularJS เป็นการดีที่สุดที่จะใช้เครื่องมือนั่งร้าน Yeoman เพื่อสร้างมันโดยตรง หากไม่มีสภาพแวดล้อมเช่นนี้คุณสามารถแนะนำโครงการได้โดยการดาวน์โหลดไฟล์ AngularJS ด้วยตัวเอง
ตัวอย่างรายละเอียดคำอธิบาย
Main.js เป็นไฟล์ JS หลักของโครงการ JS ทั้งหมดเขียนไว้ในไฟล์นี้ หลังจากเริ่มต้นรหัส JS ของไฟล์มีดังนี้
Angular .Module ('calculatorApp', ['nganimate', 'ngcookies', 'ngresource', 'ngroute', 'ngsanitize', 'ngtouch']). controller ('mainctrl', ฟังก์ชั่น ($ scope) "1": ["AC", "+/-", "%", "÷"], "2": ["7", "8", "9", "×"], "3": ["4", "5", "6", "-"]ผลลัพธ์ที่นี่ถูกใช้เพื่อผูกผลลัพธ์การคำนวณในการผูกสองทางและข้อมูลคือตัวเลขและสัญลักษณ์บนแป้นพิมพ์เครื่องคิดเลข
รหัส CSS ทั้งหมดที่เกี่ยวข้องกับโครงการนี้มีดังนี้:
*{มาร์จิ้น: 0; Padding: 0;} body {padding-top: 20px; Padding-bottom: 20px;} H1 {text-allign: center; สี:#3385ff;}. หลัก {มาร์จิ้น: 20px auto; ชายแดน: 1px Solid #202020; ขอบด้านล่าง: ไม่มี; ความกว้าง: 60%; ความสูง: 600px;}. ผลลัพธ์ {display: block; ความกว้าง: 100%; ความสูง: 30%; ความเป็นมา:#202020; การปรับขนาดกล่อง: กล่องชายแดน; ชายแดน: ไม่มี; Padding: 0; มาร์จิ้น: 0; ปรับขนาด: ไม่มี; สี: #FFF; ขนาดตัวอักษร: 80px; TEXT-ALIGING: ถูกต้อง; สายไฟ: 270px; ล้น: ซ่อน; คลิปพื้นหลัง: border-box;}. แถว {ความสูง: 14%; ความเป็นมา: #D7D8DA; การปรับขนาดกล่อง: กล่องชายแดน; ขอบด้านล่าง: 1px Solid #202020; ล้น: ซ่อน;}. col {ความสูง: 100%; การปรับขนาดกล่อง: กล่องชายแดน; ชายแดนขวา: 1px Solid #202020; ลอย: ซ้าย; สี: #202020; ขนาดตัวอักษร: 28px; TEXT-ALIGN: CENTER; Line-Height: 83px;}. ปกติ {Width: 25%;}. end-no {width: 25%; ชายแดนขวา: ไม่มี; ความเป็นมา: #F78E11; สี: #FFF;}. Zero {WIDTH: 50%;}. ประวัติ {พื้นหลัง: #3385FF; สี: #FFF; ขนาดตัวอักษร: 22px; TEXT-ALIGING: CENTRE;}จากนั้นเค้าโครง HTML มีดังนี้:
<body ng-app = "calculatorapp"> <h1> เครื่องคิดเลขสำหรับ iOS8 </h1> <hr/> <p> {{history.oin ("")}} </p> <div> <textarea ng-model = "ผลลัพธ์"> </textarea> ng-class = "showclass ($ index, a)" ng-click = "showresult (a)"> {{a}} </div> </div> </div> </body> ที่นี่แท็ก P ของประวัติคลาสจะใช้เพื่อแสดงบันทึกอินพุตซึ่งหมายความว่าปุ่มทั้งหมดที่คุณกดจะปรากฏขึ้นเพื่อให้ดูผลลัพธ์ได้ง่าย ประวัติเป็นอาร์เรย์ด้านล่างขอบเขตปัจจุบันซึ่งจะอธิบายในภายหลัง ที่นี่มีการใช้ textarea เป็นหน้าจอแสดงผลสำหรับผลการคำนวณส่วนใหญ่เพื่อใช้คุณสมบัติการผูกสองทาง ในเวลาเดียวกันแต่ละองค์ประกอบคีย์และอินเทอร์เฟซของเครื่องคิดเลขจะถูกสร้างขึ้นโดยการวนซ้ำผ่านวัตถุข้อมูล วิธี showClass เป็นวิธีด้านล่างขอบเขตซึ่งใช้เพื่อรับแอตทริบิวต์คลาสขององค์ประกอบการแสดงผลอินเตอร์เฟสที่ผิดปกติ มันจะถูกอธิบายในภายหลัง วิธี showResult เป็นวิธีหลักในการตอบสนองต่อคีย์ การตอบสนองทั้งหมดของเราต่อคีย์นั้นได้มาจากวิธีนี้และเราจะอธิบายรายละเอียดในภายหลัง
รหัสวิธี showclass มีดังนี้:
// แสดงสไตล์เครื่องคิดเลข $ scope.showclass = function (index, a) {if (a == 0) {return "zero"; } return index == 3 || a == "="? "end-no": "ปกติ"; -วิธีนี้ส่วนใหญ่เกี่ยวข้องกับคอลัมน์สุดท้ายของแต่ละแถวที่จะแสดงเป็นสีส้มและปุ่มที่แสดง 0 จะต้องครอบครองสองเซลล์สำหรับการประมวลผลพิเศษ
จนถึงตอนนี้อินเทอร์เฟซเครื่องคิดเลขได้ถูกนำไปใช้อย่างเต็มที่
การเรนเดอร์มีดังนี้:
สิ่งต่อไปนี้จำเป็นต้องตระหนักถึงการตอบสนองต่อกุญแจ คีย์ประกอบด้วยคีย์ตัวเลขคีย์ผู้ให้บริการและปุ่ม AC การกดปุ่มแต่ละครั้งจะมีการตอบสนองที่แตกต่างกันและมีการเชื่อมต่อระหว่างปุ่ม
เพื่อให้โค้ดอธิบายได้ง่ายขึ้นวิธีการใช้เพื่อให้รหัสของวิธีการ showresult ในเซ็กเมนต์แล้วอธิบายอย่างละเอียด
ก่อนอื่นเราต้องเพิ่มตัวแปรหลายตัวสำหรับการควบคุมและการจัดเก็บ
// สแต็กของตัวเลขที่ใช้สำหรับการคำนวณ $ scope.num = []; $ scope.history = []; // ตัวดำเนินการ stack $ scope.opt = []; // ผลการคำนวณของเครื่องคิดเลข $ scope.result = ""; // ผลลัพธ์ของเครื่องคิดเลข $ scope.result = ""; // หมายความว่าจะเริ่มแสดงอีกครั้งหรือไม่ จริงหมายถึงการไม่แสดงอีกครั้ง เท็จหมายถึงการล้างเอาต์พุตปัจจุบันและแสดงจำนวน number $ scope.flag = true; // หมายความว่าผู้ให้บริการสามารถป้อนได้หรือไม่ ถ้ามันสามารถเป็นจริงมิฉะนั้นจะเป็นเท็จ $ scope.isopt = true;
อาร์เรย์ NUM เป็นสแต็กที่ใช้เพื่อรับตัวเลขที่ผู้ใช้ป้อน การใช้งานเฉพาะจะถูกอธิบายในภายหลัง อาร์เรย์ประวัติเป็นคีย์ทั้งหมดที่ป้อนโดยผู้ใช้ ทุกครั้งที่คุณกดสัญลักษณ์หรือตัวเลขบนคีย์จะถูกใส่ลงในสแต็กจากนั้นจะแสดงบนอินเทอร์เฟซแบบเรียลไทม์โดยใช้การผูก Opt Array เป็นสแต็กอื่นที่ใช้เพื่อรับอินพุตของผู้ใช้งานโดยผู้ใช้ การใช้งานเฉพาะจะถูกอธิบายในภายหลัง ธงเป็นธง เมื่อเป็นจริงหมายความว่าจำนวนที่กดระหว่างการกดหมายเลขเป็นส่วนหนึ่งของหมายเลขที่แสดงในปัจจุบันและจำเป็นต้องแสดงอยู่ด้านหลัง ตัวอย่างเช่นอินเทอร์เฟซปัจจุบันจะแสดง 12 จากนั้นกด 3 จะถูกตัดสิน ถ้าเป็นจริง 123 จะปรากฏขึ้น มิฉะนั้นอินเทอร์เฟซจะถูกล้างและ 3.ISOPT เป็นธงอื่น ส่วนใหญ่เป็นการป้องกันผู้ใช้จากการป้อนข้อมูลที่ผิดกฎหมายของผู้ประกอบการในระหว่างกระบวนการป้อนข้อมูล ตัวอย่างเช่นผู้ใช้ป้อน 1+ 2+ ติดต่อกัน เมื่อป้อนอินพุตที่นี่อินพุตด้านล่างควรเป็นตัวเลข แต่ผู้ใช้จะป้อนผู้ให้บริการ โดยการตัดสินธงนี้เครื่องคิดเลขจะไม่สนใจตัวดำเนินการที่ผิดกฎหมายนี้และเก็บอินพุตไว้ที่ 1+2+
รหัสต่อไปนี้ได้รับในเซ็กเมนต์และรหัสที่สมบูรณ์คือการเชื่อมต่อเข้าด้วยกัน
$ scope.init = function () {$ scope.num = []; $ scope.opt = []; $ scope.history = []; $ scope.flag = true; $ scope.isopt = true; - $ scope.showResult = function (a) {$ scope.history.push (a); var reg = // d/ig, regdot = //./ig, regabs = /// ig; // ถ้าคลิกที่ตัวเลขถ้า (reg.test (a)) {// กำจัดการแช่แข็งถ้า ($ scope.isopt == เท็จ) {$ scope.isopt = true; } if ($ spope.result! = 0 && $ scope.flag && $ scope.result! = "ข้อผิดพลาด") {$ spope.result += a; } else {$ scope.result = a; $ scope.flag = true; - วิธี init ใช้เพื่อเริ่มต้นตัวแปรและธงเพื่อส่งคืนพวกเขาไปยังสถานะเดิม วิธี showResult เป็นวิธีหลักในการแสดงอินเทอร์เฟซเพื่อตอบสนองต่อการทำงานของผู้ใช้ รหัสด้านบนเป็นสาขา IF ในวิธีนี้แสดงว่าหากป้อนอินพุตของตัวดำเนินการแล้วหากอินพุตไปยังตัวดำเนินการถูกแช่แข็ง (ผู้ประกอบการไม่ได้รับอนุญาตให้ป้อนและจะถูกละเว้นหลังจากอินพุต) เมื่อเข้าสู่หมายเลข หากผลลัพธ์ที่แสดงในปัจจุบันไม่ว่างเปล่าและหมายเลขที่กดเป็นส่วนหนึ่งของหมายเลขที่แสดงในปัจจุบันและไม่มีข้อผิดพลาดเกิดขึ้นผลลัพธ์ที่แสดงคือหมายเลขที่กดอยู่ในปัจจุบันเชื่อมต่อกับปลายหมายเลขที่แสดงในปัจจุบัน มิฉะนั้นหมายความว่าหมายเลขที่คุณป้อนในครั้งต่อไปจะต้องแสดงหลังจากหมายเลขนี้เมื่อมีการแสดงซ้ำ
รหัส JS (ต่อ)
// ถ้าคุณคลิก ac else ถ้า (a == "ac") {$ scope.result = 0; $ scope.init (); -หาก AC ที่คลิกจะหมายถึงการเริ่มต้นให้ผลการแสดงผลเป็น 0 และสถานะทั้งหมดจะถูกล้าง
รหัส JS (ต่อ)
// ถ้าคุณคลิกที่จุดทศนิยมอื่นถ้า (a == ".") {ถ้า ($ scope.result! = "" &&! regdot.test ($ scope.result)) {$ scope.result+= a; -หากการคลิกเป็นจุดทศนิยมให้จุดทศนิยมเชื่อมต่อกับจุดสิ้นสุดของจอแสดงผลปัจจุบันหากจอแสดงผลปัจจุบันไม่ว่างเปล่าและไม่มีจุดทศนิยมในผลลัพธ์การแสดงผลปัจจุบัน
รหัส JS (ต่อ)
// ถ้าคุณคลิกที่ตัวดำเนินการผกผันอื่นถ้า (regabs.test (a)) {ถ้า ($ scope.result> 0) {$ scope.result = "-"+$ scope.result; } else {$ scope.result = math.abs ($ scope.result); -หากการคลิกเป็นการดำเนินการแบบผกผันผลการแสดงผลปัจจุบันจะกลับกัน
รหัส JS (ต่อ)
// ถ้าคุณคลิกที่เครื่องหมายเปอร์เซ็นต์อื่นถ้า (a == "%") {$ scope.result = $ scope.format (หมายเลข ($ scope.result)/100); - หากคุณคลิกที่เครื่องหมายเปอร์เซ็นต์ให้หารผลลัพธ์ที่แสดงปัจจุบันด้วย 100 แล้วแสดง นี่คือฟังก์ชั่น format
รหัสมีดังนี้:
// รูปแบบผลลัพธ์ผลลัพธ์ $ scope.format = function (num) {var regnum =/. {10,}/ig; if (regnum.test (num)) {ถ้า (//./. ทดสอบ (num)) {return num.toexponential (3); } else {return num.toexponential (); }} else {return num; }}} else {return num; -ฟังก์ชั่นหลักของมันคือเครื่องคิดเลขที่มาพร้อมกับ iOS8 จะไม่แสดงตัวเลขจำนวนมากอย่างไม่สิ้นสุด หากเกิน 10 หลัก (รวมถึงจุดทศนิยม) การคำนวณทางวิทยาศาสตร์จะถูกนำมาใช้เพื่อแสดง เพื่อความเรียบง่ายเมื่อใช้การคำนวณทางวิทยาศาสตร์สำหรับผลการแสดงผลที่มีจุดทศนิยมและเกิน 10 หลักให้เก็บการแสดงผล 3 หลักหลังจากจุดทศนิยม
รหัส js (ส่วน showresult เชื่อมต่อ)
// ถ้าตัวดำเนินการที่คลิกและผลลัพธ์การแสดงผลปัจจุบันไม่ว่างเปล่าและข้อผิดพลาดอื่นถ้า ($ scope.checkoperator (a) && $ scope.result! = "" && $ scope.result! = "ข้อผิดพลาด" && $ scope.isopt) {$ scope.flag = false; $ scope.num.push ($ scope.result); $ scope.operation (a); // หลังจากคลิกผู้ประกอบการหนึ่งครั้งคุณต้องเพิกเฉยต่อสถานการณ์ที่ผู้ประกอบการถูกคลิกอีกครั้ง $ scope.isopt = false; -สาขานี้เป็นสาขาที่ซับซ้อนที่สุดซึ่งหมายความว่าหากอินพุตเป็นตัวดำเนินการจะทำการดำเนินการ ในการเข้าสู่สาขานี้คุณจะต้องตั้งค่าสถานะเป็นเท็จก่อนซึ่งคือการป้อนหมายเลขในครั้งต่อไปซึ่งคือการป้อนหมายเลขอีกครั้งแทนที่จะป้อนผลลัพธ์การแสดงผลปัจจุบัน
จากนั้นให้หมายเลขที่แสดงในปัจจุบันเป็นหมายเลขที่คำนวณเพื่อป้อนหมายเลขสแต็กก่อน วิธี operation คือวิธีการดำเนินการ เนื่องจากผู้ประกอบการถูกคลิกในครั้งนี้ในครั้งต่อไปที่คุณคลิกคุณต้องเพิกเฉยต่อผู้ให้บริการและตั้งค่า ISOPT เป็น FALSE
รหัสการทำงานมีดังนี้
// เปรียบเทียบลำดับความสำคัญของตัวดำเนินการอินพุตในปัจจุบันและตัวดำเนินการสแต็กตัวดำเนินการด้านบน // หากลำดับความสำคัญของตัวดำเนินการด้านบนมีขนาดเล็กผู้ดำเนินการปัจจุบันจะถูกวางไว้บนสแต็กและไม่ได้คำนวณ // มิฉะนั้นตัวดำเนินการด้านบนจะถูกวางไว้บนสแต็กและวางจำนวนสแต็กไว้บนสแต็กสำหรับสององค์ประกอบต่อเนื่องและคำนวณ // จากนั้นผู้ประกอบการปัจจุบันจะถูกวางไว้บนสแต็ก $ scope.operation = function (ปัจจุบัน) {// ถ้าสแต็กผู้ปฏิบัติงานว่างเปล่าให้วางผู้ให้บริการปัจจุบันโดยตรงบนสแต็กถ้า (! $ scope.opt.length) {$ scope.opt.push (ปัจจุบัน); กลับ; } ตัวดำเนินการ var, ขวา, ซ้าย; var lastopt = $ scope.opt [$ scope.opt.length-1]; // หากลำดับความสำคัญของผู้ประกอบการปัจจุบันมากกว่าตัวดำเนินการล่าสุดจะมีเฉพาะสแต็กที่ป้อนถ้า ($ scope.ispri (ปัจจุบัน, lastopt)) {$ scope.opt.push (ปัจจุบัน); } else {operator = $ spope.opt.pop (); ขวา = $ scope.num.pop (); ซ้าย = $ scope.num.pop (); $ SCOPE.CALLICOURE (ซ้าย, ผู้ประกอบการ, ขวา); $ scope.operation (ปัจจุบัน); -วิธีนี้ยอมรับตัวดำเนินการอินพุตในปัจจุบันเป็นพารามิเตอร์ แนวคิดหลักคือได้รับผู้ให้บริการในขณะนี้ หากสแต็กของผู้ประกอบการว่างเปล่าผู้ให้บริการปัจจุบันจะถูกวางลงบนสแต็กและไม่จำเป็นต้องทำสิ่งอื่นใดในกรณีนี้ หากสแต็กผู้ให้บริการปัจจุบันไม่ว่างเปล่าองค์ประกอบด้านบนของสแต็กผู้ให้บริการปัจจุบันจะถูกผุดขึ้นมาเพื่อให้ผู้ประกอบการที่ได้รับในปัจจุบันและตัวดำเนินการด้านบนได้รับลำดับความสำคัญ (ลำดับความสำคัญของการคูณและการหารมากกว่าการเพิ่มและการลบ วิธีการ ISPRI ใช้เพื่อกำหนดลำดับความสำคัญและรับพารามิเตอร์สองตัว ครั้งแรกคือผู้ให้บริการที่ได้รับในปัจจุบันและที่สองคือผู้ให้บริการอันดับต้น ๆ บนสแต็ก หากผู้ประกอบการปัจจุบันมีลำดับความสำคัญสูงกว่าตามกฎที่กล่าวถึงข้างต้นผู้ประกอบการจะถูกวางลงบนสแต็กโดยตรง หากลำดับความสำคัญของตัวดำเนินการปัจจุบันมีขนาดเล็กกว่าด้านบนของตัวดำเนินการสแต็กคุณจะต้องทำการคำนวณและเปลี่ยนการแสดงผลของเครื่องคิดเลข องค์ประกอบทั้งสองที่อยู่ด้านบนของสแต็กของหมายเลขการดำเนินการจะปรากฏขึ้นในทางกลับกันเนื่องจากหมายเลขการทำงานทั้งสองสำหรับการดำเนินการหนึ่งครั้งจากนั้นส่วนบนของสแต็กของสแต็กผู้ปฏิบัติงานจะถูกนำมาเป็นผู้ปฏิบัติงานสำหรับการดำเนินการนี้และวิธีการคำนวณจะเรียกใช้วิธีการคำนวณสำหรับการดำเนินการ
รหัสวิธีมีดังนี้
// รับผิดชอบในการคำนวณฟังก์ชั่นผลลัพธ์ $ scope.calculate = ฟังก์ชั่น (ซ้าย, ตัวดำเนินการ, ขวา) {สวิตช์ (ตัวดำเนินการ) {case " +": $ scope.result = $ scope.format (หมายเลข (ซ้าย) + หมายเลข (ขวา)); $ scope.num.push ($ scope.result); หยุดพัก; กรณี " -": $ scope.result = $ scope.format (หมายเลข (ซ้าย) - หมายเลข (ขวา)); $ scope.num.push ($ scope.result); หยุดพัก; กรณี "×": $ scope.result = $ scope.format (หมายเลข (ซ้าย) * หมายเลข (ขวา)); $ scope.num.push ($ scope.result); หยุดพัก; กรณี "÷": ถ้า (ขวา == 0) {$ scope.result = "ข้อผิดพลาด"; $ scope.init (); } else {$ scope.result = $ scope.format (หมายเลข (ซ้าย) / หมายเลข (ขวา)); $ scope.num.push ($ scope.result); } หยุดพัก; ค่าเริ่มต้น: break; -วิธีนี้ยอมรับพารามิเตอร์สามตัวหมายเลขการดำเนินการด้านซ้ายตัวดำเนินการกลางและหมายเลขการทำงานที่ถูกต้องและเปลี่ยนแปลงผลลัพธ์เพื่อแสดงผลลัพธ์หลังจากการเพิ่มการลบการคูณและการทำงานของการหารและทำให้การคำนวณผลลัพธ์ลงในสแต็กของหมายเลขการคำนวณ ที่นี่มีความจำเป็นที่จะต้องทราบว่าหากการคำนวณคือการแบ่งและตัวหารคือ 0 ข้อผิดพลาดเกิดขึ้นแสดงข้อผิดพลาดและสถานะทั้งหมดจะถูกล้างมิฉะนั้นการคำนวณเป็นเรื่องปกติ
หลังจากการดำเนินการครั้งหนึ่งเสร็จสิ้นรัฐในสแต็กผู้ประกอบการและจำนวนสแต็กจะเปลี่ยนไปและค่าปัจจุบันคีย์ปัจจุบันยังไม่ได้ถูกใส่ลงในสแต็ก ดังนั้นกระบวนการข้างต้นจะต้องทำซ้ำเพื่อเปรียบเทียบลำดับความสำคัญจากนั้นดำเนินการ ในความเป็นจริงมันเป็นกระบวนการเรียกซ้ำจนกว่าสแต็กของผู้ปฏิบัติงานจะว่างเปล่าหรือลำดับความสำคัญของตัวดำเนินการปัจจุบันสูงกว่าตัวดำเนินการด้านบนของสแต็กผู้ปฏิบัติงาน วิธีการ ISPRI ใช้เพื่อกำหนดลำดับความสำคัญของผู้ประกอบการ
รหัสมีดังนี้:
// ตัดสินว่าผู้ให้บริการปัจจุบันมีลำดับความสำคัญสูงกว่าที่ผ่านมาหรือไม่หากได้รับการส่งคืนจริง // มิฉะนั้นให้ส่งคืน false $ scope.ispri = function (ปัจจุบัน, สุดท้าย) {ถ้า (current == สุดท้าย) {return false; } else {if (current == "×" || current == "÷") {ถ้า (last == "×" || last == "÷") {return false; } else {return true; }} else {return false; -กฎการตัดสินได้อธิบายไว้ก่อนหน้านี้
นอกจากนี้ยังมีวิธี checkOperator ซึ่งเป็นวิธีการตรวจสอบว่าสัญลักษณ์อินพุตเป็นสัญลักษณ์ตัวดำเนินการทั้งสี่ของการเพิ่มการลบการคูณและการหารหรือไม่
รหัสมีดังนี้:
// ตัดสินว่าสัญลักษณ์ปัจจุบันเป็นสัญลักษณ์ที่ใช้งานได้ $ scope.checkoperator = function (opt) {ถ้า (opt == "+" || opt == "-" || opt == "×" | | opt == "÷") {return true; } return false; -ถ้าเป็นเช่นนั้นให้ส่งคืนจริงมิฉะนั้นจะกลับเท็จ
จนถึงตอนนี้ยังมีสาขาที่มีอินพุตเท่ากับจำนวนที่ไม่มี
รหัสมีดังนี้ (เชื่อมต่อกับวิธี showresult)
// ถ้าการคลิกเป็นเครื่องหมายที่เท่ากันถ้า (a == "=" && $ scope.result! = "" && $ spope.result! = "ข้อผิดพลาด") {$ scope.flag = false; $ scope.num.push ($ scope.result); ในขณะที่ ($ scope.opt.length! = 0) {ตัวดำเนินการ var = $ spope.opt.pop (); var right = $ scope.num.pop (); var left = $ scope.num.pop (); $ SCOPE.CALLICOURE (ซ้าย, ผู้ประกอบการ, ขวา); -หากอินพุตเป็นเครื่องหมายที่เท่ากันให้ตั้งค่าสถานะแรกเป็นเท็จให้อนุญาตให้อินเทอร์เฟซเพื่อแสดงซ้ำในครั้งต่อไปที่คุณป้อนหมายเลขและหมายเลขที่แสดงในปัจจุบันจะต้องใส่ลงในสแต็กเป็นหมายเลขการคำนวณ จากนั้นคุณจะต้องดำเนินการจัดซ้อนอย่างต่อเนื่องจนกว่าผู้ให้บริการจะว่างเปล่าก่อนที่จะหยุด
สรุป
ข้างต้นเป็นรหัสหลักและกระบวนการของการใช้งาน เนื่องจากมีรหัสสาขามากมายสาขาทั้งหมดจึงได้รับพร้อมกันและไม่สามารถอธิบายได้ในรายละเอียด ดังนั้นวิธีการ showresult จะถูกแยกออกซึ่งอาจไม่สามารถปรับได้ เนื่องจากการเขียนนั้นเร่งรีบและไม่ได้ใช้เวลาในการทดสอบมากเกินไปอาจมีข้อบกพร่องบางอย่างโปรดชี้ให้เห็น ในเวลาเดียวกันเนื่องจากระดับที่ จำกัด วิธีนี้อาจไม่ดีที่สุด ยินดีต้อนรับสู่การวางแผนที่ดีกว่าในการสื่อสารและเรียนรู้ร่วมกัน ~~ ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะช่วยให้การศึกษาหรือที่ทำงานของทุกคน