โปรแกรมเชิงเส้นคืออะไร สั้น ๆ เกี่ยวกับโปรแกรมเชิงเส้นตรง โปรแกรมเชิงเส้นพร้อมอาร์เรย์
ข้างต้น เราได้พิจารณางานปฏิบัติต่างๆ ที่ลงมาถึงโครงการ การเขียนโปรแกรมเชิงเส้น... ในหนึ่งในภารกิจเหล่านี้ ข้อ จำกัด เชิงเส้นดูเหมือนความไม่เท่าเทียมกันในผู้อื่น - ความเท่าเทียมกันในผู้อื่น - ทั้งสองอย่าง
ในที่นี้ เราจะพิจารณาปัญหาการโปรแกรมเชิงเส้นตรงที่มีข้อจำกัดความเท่าเทียมกัน ซึ่งเรียกว่าปัญหาโปรแกรมเชิงเส้นตรงพื้นฐาน (0PLP)
ในสิ่งต่อไปนี้ เราจะแสดงให้เห็นว่าเราจะเปลี่ยนจากปัญหาข้อจำกัดความไม่เท่าเทียมกันไปเป็น LPLP ได้อย่างไร และในทางกลับกัน
งานหลักของโปรแกรมเชิงเส้นมีดังนี้
มีหลายตัวแปร
จำเป็นต้องค้นหาค่าที่ไม่เป็นลบของตัวแปรเหล่านี้ที่จะตอบสนองระบบ สมการเชิงเส้น:
และยิ่งไปกว่านั้น จะย่อให้เล็กสุด ฟังก์ชันเชิงเส้น
เห็นได้ชัดว่ากรณีที่ฟังก์ชันเชิงเส้นไม่จำเป็นต้องหมุนเป็นค่าต่ำสุด แต่สูงสุดจะลดลงเป็นฟังก์ชันก่อนหน้าได้ง่าย หากเราเปลี่ยนเครื่องหมายของฟังก์ชันและพิจารณาแทนฟังก์ชัน
ตกลงจะเรียกตัวแปรชุดใดก็ได้
สมการที่น่าพอใจ (2.1)
ทางออกที่ดีที่สุดคือของโซลูชันที่เป็นไปได้ซึ่งฟังก์ชันเชิงเส้นตรง (2.2) จะกลายเป็นค่าต่ำสุด
ปัญหาการเขียนโปรแกรมเชิงเส้นพื้นฐานไม่จำเป็นต้องมีวิธีแก้ไข
ปรากฎว่าสมการ (2.1) ขัดแย้งกันเอง มันอาจกลายเป็นว่าพวกเขามีวิธีแก้ปัญหา แต่ไม่ใช่ในพื้นที่ของค่าที่ไม่เป็นลบ จากนั้น OZLP ก็ไม่มีวิธีแก้ปัญหาที่เป็นไปได้ สุดท้าย อาจกลายเป็นว่าโซลูชันที่เป็นไปได้ของ DLP มีอยู่ แต่ในหมู่พวกเขาไม่มีโซลูชันที่เหมาะสมที่สุด: ฟังก์ชัน L ในพื้นที่ของโซลูชันที่เป็นไปได้นั้นไม่มีขอบเขตจากด้านล่าง
เราจะทำความคุ้นเคยกับตัวอย่างคุณสมบัติดังกล่าวของ OZLP ในอนาคต
ก่อนอื่นให้เราพิจารณาคำถามเกี่ยวกับการมีอยู่ของวิธีแก้ปัญหาที่ยอมรับได้สำหรับ LPLP
เมื่อแก้ปัญหานี้ เราสามารถแยกฟังก์ชันเชิงเส้น L ออกจากการพิจารณาได้ ซึ่งจะต้องถูกย่อให้เล็กสุด - การมีอยู่ของคำตอบที่เป็นไปได้จะถูกกำหนดโดยสมการ (2.1) เท่านั้น
ดังนั้น ให้มีระบบสมการ (2.1) มีค่าที่ไม่เป็นลบที่ตรงกับระบบนี้หรือไม่? คำถามนี้พิจารณาในส่วนพิเศษของคณิตศาสตร์ - พีชคณิตเชิงเส้น
ให้เราสรุปสั้น ๆ ของประโยคพีชคณิตเชิงเส้นบางประโยค โดยไม่ต้องอาศัยการพิสูจน์ของทฤษฎีบทที่เกี่ยวข้องกัน
เมทริกซ์ของระบบสมการเชิงเส้น
เรียกว่าตารางประกอบด้วยสัมประสิทธิ์ที่
เมทริกซ์ขยายของระบบสมการเชิงเส้นคือเมทริกซ์เดียวกัน เสริมด้วยคอลัมน์ของเทอมอิสระ:
อันดับของเมทริกซ์คือลำดับสูงสุดของดีเทอร์มีแนนต์ที่ไม่ใช่ศูนย์ ซึ่งสามารถหาได้โดยการลบบางแถวและบางคอลัมน์ออกจากเมทริกซ์
ในพีชคณิตเชิงเส้นได้รับการพิสูจน์แล้วว่าเพื่อให้ระบบของสมการเชิงเส้น (2.1) เข้ากันได้ จำเป็นและเพียงพอที่อันดับของเมทริกซ์ของระบบจะเท่ากับอันดับของเมทริกซ์ขยาย
ตัวอย่างที่ 1 ให้ระบบสามสมการที่มีสี่ไม่ทราบค่า:
ตรวจสอบว่าระบบทำงานร่วมกันหรือไม่
สารละลาย. เมทริกซ์ระบบ:
เมทริกซ์ขยาย:
ให้เรากำหนดอันดับของเมทริกซ์แรก ต้องไม่เกิน 3 (เนื่องจากจำนวนแถวคือ 3) ลองเขียนดีเทอร์มีแนนต์โดยลบคอลัมน์บางคอลัมน์ออกจากเมทริกซ์ เช่น คอลัมน์สุดท้าย เราได้รับ
การคำนวณดีเทอร์มีแนนต์นี้ตามกฎที่รู้จักกันดี เราได้รับ:
ดีเทอร์มีแนนต์นี้ไม่เท่ากับศูนย์ ซึ่งหมายความว่าอันดับของเมทริกซ์ของระบบคือ 3 เห็นได้ชัดว่าอันดับของเมทริกซ์แบบขยายก็เท่ากับ 3 ด้วย เนื่องจากดีเทอร์มีแนนต์เดียวกันสามารถสร้างได้จากองค์ประกอบของ เมทริกซ์แบบขยาย จากความเท่าเทียมกันของอันดับของเมทริกซ์ที่ระบบสมการมีความสอดคล้องกัน
ตัวอย่างที่ 2 ตรวจสอบความเข้ากันได้ของระบบสมการสองสมการที่มีสามไม่ทราบค่า:
สารละลาย. เมทริกซ์ระบบขยาย:
(ด้านซ้ายของมันคือเมทริกซ์ระบบ)
ให้เราหาอันดับของเมทริกซ์ของระบบโดยเขียนดีเทอร์มีแนนต์อันดับสองที่เป็นไปได้ทั้งหมด:
ดังนั้น ดีเทอร์มีแนนต์ที่เป็นไปได้ทั้งหมดของลำดับที่สอง ซึ่งประกอบด้วยองค์ประกอบของเมทริกซ์ของระบบ มีค่าเท่ากับศูนย์ ดังนั้นอันดับของเมทริกซ์นี้ของระบบ
หาอันดับของเมทริกซ์ขยาย ดีเทอร์มิแนนต์
ดังนั้นอันดับของเมทริกซ์แบบขยายจึงไม่เท่ากับอันดับของเมทริกซ์ของระบบ: Грфг ดังนั้นระบบของสมการจึงไม่สอดคล้องกัน
ตัวอย่างที่ 3 เพื่อตรวจสอบความสอดคล้องของระบบสามสมการกับสี่ไม่ทราบ:
โซลูชันเมทริกซ์ระบบขยาย (ร่วมกับเมทริกซ์ระบบ):
มาหาอันดับของเมทริกซ์ของระบบกัน หาดีเทอร์มีแนนต์อันดับสามที่ประกอบด้วยองค์ประกอบ เช่น
เป็นที่ทราบกันว่าถ้าแถวของดีเทอร์มีแนนต์ใดๆ เป็นผลรวมเชิงเส้นของอีกสองแถวของอีกสองแถว ดีเทอร์มีแนนต์จะเท่ากับศูนย์ ในกรณีของเรา แถวที่สามเป็นการรวมเชิงเส้นของสองแถวแรก: เพื่อให้ได้มา ก็เพียงพอแล้วที่จะเพิ่มแถวแรกด้วยวินาทีที่ทวีคูณ ดังนั้น
ง่ายต่อการตรวจสอบว่าดีเทอร์มีแนนต์อันดับสามใดๆ ที่ประกอบด้วยองค์ประกอบของเมทริกซ์ระบบมีคุณสมบัติเหมือนกัน ดังนั้น ลำดับของเมทริกซ์ระบบ
เนื่องจากมีดีเทอร์มีแนนต์ที่ไม่ใช่ศูนย์ของลำดับที่สอง ตัวอย่างเช่น
แล้วอันดับของเมทริกซ์ของระบบคือ
โดยใช้เหตุผลเดียวกัน เราจะทำให้แน่ใจว่าอันดับของเมทริกซ์ขยายเท่ากับสอง: ดังนั้น ระบบสมการจึงสอดคล้องกัน
สังเกตว่าสมการทั้งสาม ตัวอย่างนี้ไม่เป็นอิสระ: อันที่สามสามารถรับได้จากสองอันแรกโดยการคูณวินาทีด้วยสองแล้วบวกเข้ากับอันแรก ดังนั้น สมการที่สามจึงเป็นผลลัพธ์ง่ายๆ ของสองสมการแรก มีสมการอิสระเพียงสองสมการในระบบ: สิ่งนี้สะท้อนให้เห็นโดยความจริงที่ว่าอันดับของเมทริกซ์ของระบบ
ดังนั้น หากระบบสมการ-ข้อจำกัดของ LPLP สอดคล้องกัน เมทริกซ์ของระบบและเมทริกซ์ขยายจะมีอันดับเท่ากัน
อันดับโดยรวมนี้เรียกว่าอันดับของระบบ มันไม่มีอะไรมากไปกว่าจำนวนของสมการอิสระเชิงเส้นระหว่างข้อจำกัดที่กำหนด
เห็นได้ชัดว่าอันดับของระบบต้องไม่เกินจำนวนสมการ:
เป็นที่ชัดเจนว่าอันดับของระบบไม่สามารถมากกว่าจำนวนตัวแปรทั้งหมด:
อันที่จริง ลำดับของเมทริกซ์ของระบบถูกกำหนดให้เป็นลำดับที่ใหญ่ที่สุดของดีเทอร์มีแนนต์ที่ประกอบด้วยองค์ประกอบของเมทริกซ์ เนื่องจากจำนวนบรรทัดเท่ากัน เนื่องจากจำนวนคอลัมน์เท่ากัน
โครงสร้างของปัญหาการโปรแกรมเชิงเส้นขึ้นอยู่กับอันดับของระบบข้อจำกัด (2.1)
ประการแรก พิจารณากรณีที่ เมื่อ นั่นคือ เมื่อจำนวนของสมการอิสระเชิงเส้นที่รวมอยู่ในระบบ (2.1) เท่ากับจำนวนตัวแปร n เราละทิ้งสมการ "ที่ไม่จำเป็น" ซึ่งเป็นผลรวมเชิงเส้นของสมการอื่น ระบบสมการ-ข้อจำกัดของ LPLP มีรูปแบบดังนี้
เนื่องจากดีเทอร์มีแนนต์ประกอบด้วยสัมประสิทธิ์
ไม่เป็นศูนย์ เป็นที่ทราบกันดีอยู่แล้วจากพีชคณิตว่าในกรณีนี้ ระบบ (2.4) มีวิธีแก้ปัญหาเฉพาะตัว ในการหาค่า ก็เพียงพอที่จะแทนที่คอลัมน์ในดีเทอร์มีแนนต์ด้วยคอลัมน์ของสมาชิกอิสระแล้วหารด้วย
ดังนั้น สำหรับระบบสมการ-ข้อจำกัด LPLP มีคำตอบเฉพาะ:
หากในสารละลายนี้มีปริมาณเป็นค่าลบอย่างน้อยหนึ่งรายการ แสดงว่าสารละลายที่ได้นั้นไม่สามารถยอมรับได้ ดังนั้น ZZLP จึงไม่มีวิธีแก้ปัญหา
หากปริมาณทั้งหมดไม่เป็นค่าลบ แสดงว่ายอมรับวิธีแก้ปัญหาที่พบได้ เห็นได้ชัดว่าเหมาะสมที่สุดเช่นกัน (เพราะไม่มีอย่างอื่น)
เห็นได้ชัดว่าคดีเล็กๆ น้อยๆ นี้ไม่น่าสนใจสำหรับเรา
ดังนั้นในสิ่งต่อไปนี้เราจะพิจารณาเฉพาะกรณีที่เมื่อนั่นคือเมื่อจำนวนของสมการอิสระที่ต้องเป็นไปตามตัวเลขตัวแปรของตัวแปรเอง จากนั้นหากระบบเข้ากันได้ก็มีโซลูชั่นมากมาย ในกรณีนี้ เราสามารถกำหนดค่าตามอำเภอใจให้กับตัวแปรได้ (เรียกว่าตัวแปรอิสระ) และตัวแปรที่เหลือจะแสดงผ่านตัวแปรเหล่านี้ (เราจะเรียกตัวแปรเหล่านี้ว่าพื้นฐาน)
โปรแกรมเชิงเส้นคือโปรแกรมที่ประกอบด้วยคำสั่งง่าย ๆ (ตัวดำเนินการ)
คำสั่งง่าย ๆ (คำสั่งง่าย ๆ ของอัลกอริทึม) เรียกว่าคำสั่งที่ไม่ใช้เงื่อนไขในการดำเนินการ ตัวดำเนินการอย่างง่ายประกอบด้วยคำสั่งการมอบหมาย อินพุตและเอาต์พุต (ตัวดำเนินการ) การเรียกอัลกอริทึมเสริม (รูทีนย่อย)
ผู้ดำเนินการมอบหมาย มันตั้งค่าหรือเปลี่ยนค่าปัจจุบันของตัวแปรบางตัว สิ่งนี้จะเปลี่ยนเนื้อหาขององค์ประกอบหน่วยความจำเฉพาะที่จัดสรรสำหรับตัวแปรนี้ เนื่องจากเป้าหมายของอัลกอริธึมใด ๆ คือการได้รับตำแหน่งหน่วยความจำที่เฉพาะเจาะจง ค่าที่ต้องการเกือบทุกโปรแกรมมีโอเปอเรเตอร์นี้ ตัวดำเนินการ I / O ขั้นตอนการป้อนข้อมูลมาตรฐานใช้เพื่อกำหนดค่าเริ่มต้นของตัวแปรบางตัวและประกอบด้วยชื่อขั้นตอนและรายการอินพุตที่มีชื่อของตัวแปรซึ่งค่าจะถูกป้อนจากแป้นพิมพ์หรือจากไฟล์เช่น ตัวแปรจะได้รับการกำหนดค่าเฉพาะบางอย่าง
บ่อยครั้งจะสะดวกกว่าที่จะใช้คำสั่ง input เพื่อกำหนดค่าเริ่มต้น แทนที่จะเป็นคำสั่งการมอบหมาย เพราะถ้าคุณต้องการใช้โปรแกรมกับแหล่งข้อมูลอื่น คุณไม่จำเป็นต้องเปลี่ยนข้อความของโปรแกรม
หากมีคำสั่งอินพุตในเร็กคอร์ดอัลกอริธึม การดำเนินการของคำสั่งนั้นจะถูกขัดจังหวะและการควบคุมจะถูกโอนไปยังโปรแกรมที่สามารถทำการป้อนข้อมูลได้ หลังจากป้อนข้อมูล การควบคุมจะถูกโอนไปยังคำสั่งถัดไปของอัลกอริทึม
ใน Pascal ขั้นตอนการป้อนข้อมูลคือ:
อ่าน (รายการ);
READLN (รายการเข้า)
เมื่อดำเนินการตามขั้นตอน READ และ READLN โปรแกรมจะเข้าสู่สถานะรอการป้อนข้อมูล หากมีการระบุตัวแปรหลายตัวในรายการรายการ ตัวแปรเหล่านี้สามารถป้อนในบรรทัดเดียว แยกจากกันโดยใช้อักขระเว้นวรรค หรือแยกบรรทัด (ในคอลัมน์) ให้กรอกค่าแต่ละรายการด้วยปุ่ม Enter
ขั้นตอนจะไม่สิ้นสุดจนกว่าจะป้อนค่าสำหรับตัวแปรทั้งหมดในรายการ ประเภทของค่าอินพุตต้องตรงกับตัวแปรที่เกี่ยวข้อง
คำสั่ง READLN แตกต่างจากคำสั่ง READ โดยที่หลังจากป้อนข้อมูลตามจำนวนที่ต้องการแล้ว เคอร์เซอร์จะย้ายไปที่บรรทัดถัดไป
หากป้อนข้อมูลจากแป้นพิมพ์ รายการอินพุตจะเป็นรายการตัวแปร เช่น ลำดับของชื่อตัวแปรที่คั่นด้วยเครื่องหมายจุลภาค หากอินพุตมาจากไฟล์ ตัวแปรแรกในรายการอินพุตคือไฟล์ ซึ่งเชื่อมโยงกับชื่อของไฟล์จริง
ขั้นตอนมาตรฐานสำหรับการแสดงผลผลลัพธ์ของการคำนวณนั้นใช้เพื่อส่งออกค่าไปยังหน้าจอ เครื่องพิมพ์ หรือไฟล์ ใน Pascal ขั้นตอนการอนุมานคือ:
เขียน (รายการผลลัพธ์);
WRITELN (รายการผลลัพธ์)
รายการองค์ประกอบเอาต์พุตกว้างกว่าขั้นตอนอินพุตมาก อาจรวมถึง:
ตัวระบุปริมาณค่าที่จะส่งออกไปยังอุปกรณ์ที่เกี่ยวข้องหรือไปยังไฟล์
นิพจน์ค่าที่จะคำนวณก่อนแล้วจึงส่งออกไปยังอุปกรณ์
กลายเป็นปริมาณ (ตัวเลข อักขระ สตริง)
ความแตกต่างระหว่าง WRITE และ WRITELN คือ คำสั่ง WRITE เริ่มต้นที่ตำแหน่งปัจจุบันของเคอร์เซอร์บนหน้าจอมอนิเตอร์ และเคอร์เซอร์ยังคงอยู่ในบรรทัดเดียวกันหลังจากสิ้นสุดเอาต์พุต คำสั่ง WRItelN พิมพ์ค่าจากตำแหน่งปัจจุบัน จากนั้นเคอร์เซอร์จะย้ายไปที่บรรทัดถัดไป คุณสามารถใช้คำสั่ง WRItelN โดยไม่มีรายการผลลัพธ์เพื่อย้ายเคอร์เซอร์ไปที่บรรทัดใหม่
หากเอาต์พุตถูกดำเนินการบนหน้าจอมอนิเตอร์ รายการเอาต์พุตจะเป็นรายการของตัวแปร หรือลำดับของชื่อของตัวแปร ค่าคงที่ หรือนิพจน์ โดยคั่นด้วยเครื่องหมายจุลภาค หากเอาต์พุตถูกดำเนินการไปยังไฟล์ ตัวแปรแรกในรายการเอาต์พุตจะเป็นตัวแปรไฟล์ที่เชื่อมโยงกับชื่อของไฟล์จริง
ในคำสั่งเอาต์พุต หลังจากองค์ประกอบของรายการเอาต์พุต คั่นด้วยโคลอน คุณสามารถระบุรูปแบบเอาต์พุตได้ เช่น ความกว้างของหน้าจอที่จะระบุค่า เมื่อแสดงข้อมูลที่ถูกต้อง คุณยังสามารถระบุจำนวนหลักทศนิยมในส่วนเศษส่วนที่จะแสดงได้
ตัวอย่าง: เขียน (A: 10: 3, B: 8)
ตัวดำเนินการสำหรับการเรียกอัลกอริทึมเสริม ใน Pascal มีการใช้ Routines-procedures และ Routines-functions รูทีนย่อยถูกเรียกตามชื่อพร้อมพารามิเตอร์จริง ในกรณีนี้ อาจมีค่าเฉพาะ ชื่อของตัวแปรจริง นิพจน์ และแทนที่ผลลัพธ์ได้ - เฉพาะชื่อของตัวแปรจริงเท่านั้น ในกรณีนี้ จำนวน ชนิด และวัตถุประสงค์ของพารามิเตอร์ที่เป็นทางการและจริงในรายการพารามิเตอร์ที่เกี่ยวข้องจะต้องเหมือนกัน
งานห้องปฏิบัติการหมายเลข 1
หัวข้อ: "การเขียนโปรแกรม อัลกอริธึมเชิงเส้น... ทำงานกับดีบักเกอร์ "
วัตถุประสงค์ในการทำงาน
1.1 การเรียนรู้โครงสร้างที่ง่ายที่สุดของโปรแกรม C
1.2 รับทักษะในการจัดระเบียบอินพุต-เอาท์พุตในภาษาซี
การสนับสนุนทางเทคนิค
2.1 คอมพิวเตอร์ส่วนบุคคล
2.2 แป้นพิมพ์
2.3 การแสดงผล
2.4 อุปกรณ์การพิมพ์
3.1 ห้องผ่าตัด ระบบ Windows
3.2 ระบบการเขียนโปรแกรม Visual C ++ เวอร์ชัน 6.0 หรือ Borland C ++ เวอร์ชัน 3.1 ขึ้นไป
การกำหนดปัญหา
การเขียน โปรแกรมที่ง่ายที่สุดด้วยการประมวลผลข้อมูล
5.1 หัวข้อและวัตถุประสงค์ของงาน
5.2 คำชี้แจงของปัญหา
5.3 ข้อความโปรแกรม
5.4 ผลการดำเนินการของโปรแกรม
5.5 แบบแผนของอัลกอริทึมของโปรแกรม
ข้อมูลทั่วไป
หากในโปรแกรมคำสั่งทั้งหมดถูกดำเนินการตามลำดับ ทีละโปรแกรม โปรแกรมดังกล่าวจะเรียกว่า เชิงเส้นยกตัวอย่างโปรแกรมที่คำนวณผลลัพธ์โดยใช้สูตรที่กำหนด
งาน 1.1. คำนวณตามสูตร
เขียนโปรแกรมที่แปลงอุณหภูมิเป็นองศาฟาเรนไฮต์เป็นองศาเซลเซียสโดยใช้สูตร:
โดยที่ C คืออุณหภูมิเซลเซียสและ F คืออุณหภูมิฟาเรนไฮต์
ก่อนเขียนโปรแกรมใด ๆ จำเป็นต้องกำหนดให้ชัดเจนก่อนว่าต้องใส่อะไรลงไปบ้างและผลที่ตามมาคืออะไร
ในกรณีนี้:
ข้อมูลเริ่มต้นคือจำนวนจริงหนึ่งจำนวน ซึ่งแทนอุณหภูมิในหน่วยเซลเซียส
ผลที่ได้คือจำนวนจริงอีกจำนวนหนึ่ง
ก่อนเขียนโปรแกรม เรามาเปิดสภาพแวดล้อม Visual C ++ แบบบูรณาการกันก่อน:
เริ่ม / โปรแกรม / Microsoft Visual Studio / Microsoft Visual C ++ 6.00
1) ไฟล์> ใหม่ ...
2) ในหน้าต่างที่เปิดขึ้น:
เลือกประเภทแอปพลิเคชันคอนโซล Win32
ป้อนชื่อโครงการในกล่องข้อความชื่อโครงการ
ป้อน (เลือกโดยใช้ปุ่ม ...) ชื่อของไดเร็กทอรีที่มีไฟล์โครงการอยู่ในกล่องข้อความ Location เช่น G: / ASOIZ /
คลิกซ้ายที่ปุ่มตกลง
3) แอปพลิเคชันคอนโซล Win32 - กล่องโต้ตอบ Stepl ของ 1 จะเปิดขึ้นและในนั้น:
เลือกประเภท โครงการที่ว่างเปล่า;
คลิกปุ่มเสร็จสิ้น
4) หลังจากคลิกแล้ว หน้าต่าง New Project จะปรากฏขึ้น โดยคลิกที่ปุ่ม OK
1) ไฟล์ > ใหม่ .... ซึ่งจะเปิดกล่องโต้ตอบใหม่
2) บนแท็บไฟล์:
เลือกประเภทไฟล์ (ในกรณีนี้: C ++ Source File);
ในกล่องข้อความ File Name ให้ป้อนชื่อไฟล์ที่ต้องการ
ต้องเปิดใช้งานกล่องกาเครื่องหมายเพิ่มในโครงการ
คลิกปุ่มตกลง
เราพิมพ์ข้อความโปรแกรมต่อไปนี้:
ลองพิจารณาแต่ละบรรทัดของโปรแกรมแยกกัน
ที่จุดเริ่มต้นของโปรแกรมมีการเขียนคำสั่งตัวประมวลผลล่วงหน้าตามที่ไฟล์ส่วนหัวเชื่อมต่อกับซอร์สโค้ดของโปรแกรม
โปรแกรม C ++ ใด ๆ ประกอบด้วยฟังก์ชั่นซึ่งหนึ่งในนั้นต้องมีชื่อหลักซึ่งบ่งชี้ว่าโปรแกรมเริ่มทำงานจากฟังก์ชั่นนี้ หลังวงเล็บ เนื้อหาของฟังก์ชันเขียนด้วยวงเล็บปีกกา () เช่น คำสั่งเหล่านั้นที่คุณต้องการดำเนินการ
เมื่อเขียนโปรแกรม เทมเพลตใดๆ จะมีลักษณะดังนี้:
#รวม<…>
#รวม<…>
การประกาศตัวแปร
การป้อนข้อมูลเริ่มต้น
การคำนวณผลลัพธ์
ผลลัพธ์;
ในการจัดเก็บข้อมูลเริ่มต้นและผลลัพธ์ คุณต้องจัดสรรพื้นที่เพียงพอใน หน่วยความจำเข้าถึงโดยสุ่ม... Operator 2 ใช้สำหรับสิ่งนี้ ในโปรแกรม เราต้องเก็บค่าสองค่า: อุณหภูมิในเซลเซียสและอุณหภูมิในฟาเรนไฮต์ดังนั้นตัวแปรสองตัวจึงถูกกำหนดในตัวดำเนินการ หนึ่งสำหรับการรักษาอุณหภูมิในฟาเรนไฮต์เรียกว่า fahr อีกอัน (เซลเซียส) - เซล โปรแกรมเมอร์กำหนดชื่อของตัวแปรตามวัตถุประสงค์ ชื่อสามารถประกอบด้วยตัวอักษรละติน ตัวเลข และขีดล่างเท่านั้น และต้องไม่ขึ้นต้นด้วยตัวเลข
เมื่ออธิบายตัวแปรใด ๆ คุณต้องระบุ ประเภทของ.เนื่องจากอุณหภูมิไม่เพียงแต่รับค่าจำนวนเต็มเท่านั้น จึงเลือกประเภทจริงสำหรับตัวแปร ลอย.
ประเภทพื้นฐาน:
int (สั้น, ไม่ได้ลงนาม) - จำนวนเต็ม,
float (ดับเบิ้ล, ดับเบิ้ลยาว) - จริง
ถ่าน - ตัวอักษร
บูล - บูลีน
เพื่อให้ผู้ใช้โปรแกรมทราบว่าจำเป็นต้องป้อนข้อมูลจากแป้นพิมพ์ในช่วงเวลาใดจึงจะใช้พรอมต์สำหรับการป้อนข้อมูล (ตัวดำเนินการ 3) ที่ระบุในตัวดำเนินการจะแสดงบนหน้าจอ ศาลบรรทัดของอักขระและเคอร์เซอร์จะย้ายไปยังบรรทัดถัดไป หากต้องการเลื่อนไปยังบรรทัดถัดไป ให้ใช้ endl.
คำสั่ง 4 ดำเนินการป้อนข้อมูลด้วยแป้นพิมพ์
สำหรับสิ่งนี้จะใช้วัตถุมาตรฐาน ซินและการแยก (อ่าน) การดำเนินการ >> หากต้องการมากกว่าหนึ่งค่า โซ่ของการดำเนินการ >> จะถูกใช้
คำสั่งที่ 5 ประเมินนิพจน์ที่เขียนทางด้านขวาของ การดำเนินงานที่ได้รับมอบหมาย(แสดงด้วย =) และผลลัพธ์ถูกกำหนดให้กับตัวแปร cels นั่นคือมันถูกเก็บไว้ในหน่วยความจำที่จัดสรรให้กับตัวแปรนี้ อันดับแรก ทั้งหมด ค่าคงที่ 5 จะถูกหารด้วย จูบ ค่าคงที่ 9 จากนั้นผลลัพธ์ของการดำเนินการนี้จะถูกคูณด้วยผลลัพธ์ของการลบ 32 ออกจากตัวแปร fahr
เพื่อแสดงผลลัพธ์ในคำสั่ง 6 จะใช้วัตถุ ศาลห่วงโซ่ของห้าองค์ประกอบจะปรากฏขึ้น นี่คือเส้น "ฟาเรนไฮต์:", ค่าของตัวแปร fahr, ไลน์ ", หน่วยเป็นองศาเซลเซียส:", ค่าของตัวแปร เซลและตัวดำเนินการแบ่งบรรทัด ปลาย
คำสั่งสุดท้าย (คำสั่ง 7) ของโปรแกรมนี้มีวัตถุประสงค์เพื่อส่งคืนจากมันและโอนค่าไปยังสภาพแวดล้อมภายนอก
ต่อไปเราจะคอมไพล์โปรแกรม ในการดำเนินการนี้ ให้กดปุ่มบนแถบเครื่องมือหรือคีย์ผสม Ctrl + F7 หน้าต่างแสดงผล (ที่ด้านล่างของหน้าจอ) ควรแสดงข้อความ 0 ข้อผิดพลาด (s), 0 คำเตือน (s) (0 ข้อผิดพลาด, 0 คำเตือน) หากมีข้อผิดพลาดให้ตรวจสอบกับต้นฉบับ
หากต้องการเริ่มโปรแกรม ให้กดปุ่มบนแถบเครื่องมือหรือกดคีย์ผสม Ctrl + F5
เมื่อเริ่มโปรแกรมแทนตัวอักษรรัสเซียเราจะเห็น ??? ซึ่งเกิดจากมาตรฐานการเข้ารหัสอักขระ Cyrillic ที่แตกต่างกัน ระบบปฏิบัติการ MS DOS และ Windows หากต้องการแก้ไข ให้เพิ่มฟังก์ชัน CharToOem ลงในโปรแกรม (ส่วนเพิ่มเติมจะไฮไลต์ด้วยสีแดงเพื่อความชัดเจน)
#รวม
#รวม
ถ่าน * RUS (const ถ่าน * ข้อความ)
CharToOem (ข้อความ buf);
float fahr, เซลส์;
ศาล< เซล = 5/9 * (fahr - 32); ศาล< ศาล< การทำงาน มาตุภูมิ ()ไม่สามารถใช้งานได้มากกว่าหนึ่งครั้งในห่วงโซ่การดำเนินงาน<< для одного объекта ศาลดังนั้นเราจึงแบ่งมันออกเป็นสองส่วน อย่างที่คุณเห็น ผลลัพธ์ของการรันโปรแกรมด้วยความเสถียรนั้นเป็นศูนย์! นี่เป็นเพราะวิธีการประเมินนิพจน์ กลับไปที่โอเปอเรเตอร์ 4 กัน ค่าคงที่ 5 และ 9 เป็นประเภทจำนวนเต็ม ดังนั้นผลลัพธ์ของการหารจึงเป็นจำนวนเต็มด้วย โดยธรรมชาติแล้ว ผลลัพธ์ของการคำนวณเพิ่มเติมไม่สามารถเป็นอย่างอื่นได้นอกจากศูนย์ แก้ไขข้อผิดพลาดนี้ได้ง่าย - การเขียนค่าคงที่อย่างน้อยหนึ่งค่าเป็นจำนวนจริงก็เพียงพอแล้ว ตัวอย่างเช่น เซล = 5./9 * (fahr - 32);