ภาษาซีซี ฟังก์ชัน Scanf C: คำอธิบาย ชนิดข้อมูลที่กำหนดหรือไม่ได้กำหนด

การเรียนรู้พื้นฐานและความซับซ้อนของภาษาการเขียนโปรแกรม C++ หนังสือเรียนพร้อมแบบฝึกหัดและแบบทดสอบ คุณต้องการเรียนรู้การเขียนโปรแกรมหรือไม่? ถ้าอย่างนั้นคุณก็มาถูกที่แล้ว - นี่คือการฝึกอบรมการเขียนโปรแกรมฟรี ไม่ว่าคุณจะมีประสบการณ์หรือไม่ก็ตาม บทเรียนการเขียนโปรแกรมเหล่านี้จะช่วยให้คุณเริ่มต้นสร้าง คอมไพล์ และดีบักโปรแกรม C++ ในสภาพแวดล้อมการพัฒนาที่หลากหลาย: Visual Studio, Code::Blocks, Xcode หรือ Eclipse

ตัวอย่างและคำอธิบายโดยละเอียดมากมาย เหมาะสำหรับทั้งผู้เริ่มต้น (หุ่นจำลอง) และขั้นสูง ทุกอย่างได้รับการอธิบายตั้งแต่เริ่มต้นจนถึงรายละเอียดทั้งหมด บทเรียนเหล่านี้ (200+) จะทำให้คุณมีพื้นฐาน/พื้นฐานที่ดีในการทำความเข้าใจการเขียนโปรแกรม ไม่เพียงแต่ในภาษา C++ เท่านั้น แต่ยังรวมถึงภาษาการเขียนโปรแกรมอื่นๆ ด้วย และมันฟรีจริงๆ!

นอกจากนี้ ยังมีการสร้างเกมทีละขั้นตอนด้วย C++, ไลบรารีกราฟิก SFML และงานมากกว่า 50 รายการเพื่อทดสอบทักษะและความรู้ของคุณใน C++ โบนัสเพิ่มเติมคือ

สำหรับการโพสต์ซ้ำ +20 ให้กับกรรมและความกตัญญูของฉัน!

บทที่ 0 การแนะนำ. เริ่มต้นใช้งาน

บทที่ 1 พื้นฐาน C++

บทที่ 2 ตัวแปรและชนิดข้อมูลพื้นฐานในภาษา C++

บทที่ 3 ตัวดำเนินการในภาษา C++

บทที่ 4 ขอบเขตและตัวแปรประเภทอื่นๆ ใน C++

บทที่ 5 ลำดับที่โค้ดถูกดำเนินการในโปรแกรม ลูปและสาขาใน C ++

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

ประเภทของโปรแกรม

เพื่อให้สื่อสารกับคอมพิวเตอร์ได้อย่างมีประสิทธิภาพซึ่งเป็นสิ่งที่เราต้องการ จึงมีภาษาโปรแกรมที่หลากหลาย

มีหลายปัจจัยที่ต้องพิจารณาเมื่อเลือกภาษาการเขียนโปรแกรม ขึ้นอยู่กับประเภทของโครงการ นี่คือรายการปัจจัยที่น่าสังเกตมากที่สุด:

การรวบรวม การตีความ และการรวบรวม JIT

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

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

และสุดท้ายคือสิ่งที่เรียกว่าการรวบรวมแบบทันทีทันใด (หรือการรวบรวม JIT) ภาษาดังกล่าวได้รับการรวบรวมอย่างรวดเร็วในขณะที่เปิดตัวโปรแกรม ตามกฎแล้วโปรแกรมที่เขียนด้วยภาษา JIT จะไม่ได้รับการปรับให้เหมาะสม จึงช่วยเร่งกระบวนการคอมไพล์และคืนความสมดุลระหว่างประสิทธิภาพและความเข้ากันได้ข้ามแพลตฟอร์ม

ระดับการเขียนโปรแกรมสูงหรือต่ำ

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

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

ระบบประเภทข้อมูลภาษาโปรแกรม

สำหรับภาษาการเขียนโปรแกรมทุกภาษาจะมีข้อกำหนดที่กำหนดกฎเกณฑ์ต่างๆ ที่ภาษาการเขียนโปรแกรมต้องปฏิบัติตาม บางภาษาไม่มีประเภทข้อมูล ดังนั้นจึงใช้ไม่ได้กับภาษาเหล่านั้น อย่างไรก็ตาม ภาษาส่วนใหญ่ (รวมถึง C++) มีประเภทข้อมูล ดังนั้นข้อมูลนี้จะเป็นประโยชน์สำหรับคุณ

ระบบประเภทข้อมูลที่แข็งแกร่งหรืออ่อนแอ

ระบบอินพุตที่อ่อนแอไม่ได้กำหนดข้อจำกัดใดๆ โปรแกรมเมอร์จะต้องตรวจสอบสิ่งนี้ เมื่อฉันพูดว่า "ระบบข้อมูลที่อ่อนแอ" ฉันหมายความว่าภาษาที่มีระบบข้อมูลดังกล่าวไม่ได้ควบคุมประเภทข้อมูลที่มีอยู่อย่างเคร่งครัด ตัวอย่างเช่น หากคุณส่งสตริงหรือสัญลักษณ์แทนตัวเลขไปยังฟังก์ชันการคูณ ภาษาโปรแกรมที่พิมพ์ไม่เข้มงวดจะดำเนินการโค้ดดังกล่าว แม้ว่าผลลัพธ์ของการคูณจะสูญเสียความหมายทั้งหมด เนื่องจากสตริงไม่สามารถคูณด้วย ตัวเลข. ยิ่งไปกว่านั้น ผลลัพธ์ของการคูณแบบไร้ความหมายนี้จะไม่สามารถคาดเดาได้ หากพิมพ์ภาษาโปรแกรมอย่างเคร่งครัดในขั้นตอนการคอมไพล์นักแปลจะรายงานข้อผิดพลาดและหยุดกระบวนการสร้างโครงการ ตัวอย่างเช่น,

// ตัวอย่างโปรแกรมในภาษา C++ #include ใช้เนมสเปซมาตรฐาน; int main())( char string = "example"; int number = 5; cout<< string * number << endl; // умножаем строку на число }

เป็นผลให้คอมไพเลอร์จะรายงานข้อผิดพลาด:

ข้อผิดพลาด: ตัวถูกดำเนินการประเภท 'char ' และ 'int' ไม่ถูกต้องเป็นไบนารี 'operator*'

เราจะพยายามทำเช่นเดียวกันในภาษาโปรแกรมที่ไม่พิมพ์ดีนัก - php โปรดทราบว่าแม้ในขณะที่ประกาศตัวแปร คุณไม่จำเป็นต้องระบุประเภทข้อมูล

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

ชนิดข้อมูลที่กำหนดหรือไม่ได้กำหนด

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

ชนิดข้อมูลแบบคงที่หรือไดนามิก

หากภาษาถูกพิมพ์แบบคงที่ คอมไพลเลอร์/ล่ามจะพิมพ์การตรวจสอบหนึ่งครั้งก่อนกระบวนการคอมไพล์/ตีความ หากชนิดข้อมูลเป็นแบบไดนามิก ชนิดข้อมูลจะถูกตรวจสอบ ณ รันไทม์

ระบบประเภทข้อมูลที่ปลอดภัยหรือไม่ปลอดภัย

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

ปัจจัยเหล่านี้สามารถกำหนดลักษณะภาษาโปรแกรมหนึ่งภาษาหรือหลายภาษาก็ได้

กระบวนทัศน์การเขียนโปรแกรมที่รองรับ

กระบวนทัศน์การเขียนโปรแกรมคือวิธีการหรือวิธีการเขียนโปรแกรมที่ภาษาการเขียนโปรแกรมรองรับ นี่คือรายการกระบวนทัศน์หลัก:

กระบวนทัศน์ที่ประกาศ

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

กระบวนทัศน์การทำงาน

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

กระบวนทัศน์ทั่วไป

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

กระบวนทัศน์ที่จำเป็น

ภาษาที่จำเป็นช่วยให้โปรแกรมเมอร์สามารถมอบรายการคำสั่งที่จำเป็นต่อคอมพิวเตอร์ให้เสร็จสิ้นได้ ภาษาโปรแกรมที่จำเป็นนั้นตรงกันข้ามกับภาษาโปรแกรมที่ประกาศ

กระบวนทัศน์โครงสร้าง

ภาษาการเขียนโปรแกรมเชิงโครงสร้างมุ่งหวังที่จะจัดเตรียมโค้ดบางรูปแบบ ซึ่งเป็นโครงสร้างแบบลำดับชั้น เมื่อมองเห็นโครงสร้างของโค้ดได้ชัดเจน ลำดับการดำเนินการคำสั่งก็จะชัดเจนตามสัญชาตญาณ ภาษาดังกล่าวมักจะไม่สนับสนุนให้ "กระโดด" จากส่วนหนึ่งของโค้ดไปยังอีกส่วนหนึ่ง เช่น ตัวดำเนินการ goto ที่เราทุกคนรู้จัก ซึ่งกำหนดไว้ในภาษา C และ C++

กระบวนทัศน์ขั้นตอน

ภาษาโปรแกรมขั้นตอนหมายถึงภาษาโปรแกรมที่มีโครงสร้างซึ่งสนับสนุนแนวคิดของขั้นตอนหรือรูทีนย่อย

กระบวนทัศน์เชิงวัตถุ

การเขียนโปรแกรมเชิงวัตถุ (บางครั้งเรียกสั้น ๆ ว่า OOP) เป็นส่วนย่อยของการเขียนโปรแกรมเชิงโครงสร้างที่แสดงโปรแกรมในรูปของ "วัตถุ" กระบวนทัศน์นี้อนุญาตให้นำโค้ดกลับมาใช้ซ้ำได้ และแนวทางนี้ค่อนข้างเข้าใจง่าย

การทำให้เป็นมาตรฐาน

ภาษามีมาตรฐานอย่างเป็นทางการหรือไม่? การกำหนดมาตรฐานเป็นสิ่งสำคัญมากเพื่อให้แน่ใจว่ามีความเข้าใจโปรแกรมโดยปราศจากข้อขัดแย้งโดยคอมไพเลอร์/ล่ามที่แตกต่างกัน บางภาษาได้รับมาตรฐานโดย American National Standards Institute (ANSI) ส่วนภาษาอื่น ๆ ได้รับมาตรฐานโดยองค์การระหว่างประเทศเพื่อการมาตรฐาน (ISO) ภาษาการเขียนโปรแกรมทั้งหมดจะต้องมีมาตรฐาน มิฉะนั้น จะไม่มีข้อตกลงว่าอะไรถูกและผิดทางไวยากรณ์

เรามาอธิบายลักษณะของภาษาการเขียนโปรแกรม C++ กันดีกว่า

ตอนนี้เราได้ตรวจสอบคุณลักษณะหลักของภาษาการเขียนโปรแกรมแล้ว ให้เราพิจารณาว่าปัจจัยใดที่ภาษาโปรแกรม C++ พึงพอใจ

C++ เป็นภาษาโปรแกรมมาตรฐาน ISO

C++ ยังไม่มีมาตรฐานอย่างเป็นทางการมาระยะหนึ่งแล้ว อย่างไรก็ตาม ตั้งแต่ปี 1998 เป็นต้นมา C++ ได้รับการกำหนดมาตรฐานโดยคณะกรรมการ ISO

ภาษาที่คอมไพล์ด้วย C++

C++ คอมไพล์เป็นรหัสเครื่องโดยตรง ทำให้เป็นหนึ่งในภาษาที่เร็วที่สุดในโลก

C++ เป็นภาษาที่พิมพ์ได้ชัดเจน

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

C++ รองรับชนิดข้อมูลแบบคงที่และไดนามิก

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

C++ รองรับหลายกระบวนทัศน์

C++ รองรับกระบวนทัศน์การเขียนโปรแกรมเชิงขั้นตอน ทั่วไป และเชิงวัตถุ และกระบวนทัศน์อื่นๆ อีกมากมาย

C++ เป็นภาษาโปรแกรมแบบพกพา

เนื่องจากเป็นหนึ่งในภาษาที่ใช้กันมากที่สุดในโลกและเป็นภาษาเปิด C++ มีคอมไพเลอร์มากมายที่ทำงานบนแพลตฟอร์มที่หลากหลาย รหัสไลบรารีมาตรฐาน C++ จะทำงานบนหลายแพลตฟอร์ม

C++ เข้ากันได้กับภาษา C อย่างสมบูรณ์

ใน C ++ คุณสามารถใช้ไลบรารี C และไลบรารีเหล่านั้นจะทำงานได้อย่างถูกต้อง

1. บทนำ

การเขียนโปรแกรมต้องใช้โมเดลอัลกอริธึมสากลใหม่และฮาร์ดแวร์ใช้อัลกอริธึมไม่เพียง แต่ในรูปแบบที่แตกต่างกัน แต่ยังอยู่บนพื้นฐานของโมเดลอัลกอริธึมที่แตกต่างกัน - ออโตมาตะ การยืมเทคโนโลยีจากการพัฒนาฮาร์ดแวร์เป็นแนวคิดหลักเบื้องหลังการเขียนโปรแกรมออโตมาตะ อย่างไรก็ตาม การสังเคราะห์อุปกรณ์ดิจิทัลแตกต่างจากการเขียนโปรแกรม แต่ในแง่หนึ่งเมื่อยืมแบบจำลองมา ไม่แนะนำให้เปลี่ยนแปลงอย่างมีนัยสำคัญ และในทางกลับกัน เราไม่สามารถเพิกเฉยต่อทฤษฎีและแนวปฏิบัติของการเขียนโปรแกรมที่มีอยู่แล้วได้

ต่อไป เราจะมาดูเทคโนโลยี SWITCH สำหรับการออกแบบโปรแกรมออโตมาตะ ซึ่งคุณจะพบกับกระบวนการที่คล้ายกันตลอดเวลา ในด้านหนึ่ง มันเปลี่ยนโมเดลเครื่องจักรสถานะจำกัดมากจนเกินขอบเขตของทฤษฎีออโตมาตะจริงๆ และในทางกลับกัน มันแนะนำแนวคิดในการเขียนโปรแกรมที่ยากสำหรับโปรแกรมเมอร์ที่จะรับรู้ และในบางครั้งก็เป็นเพียงสิ่งฟุ่มเฟือยเพราะ มีอะนาล็อกที่คุ้นเคยมากกว่าจากทฤษฎีโปรแกรมและการฝึกเขียนโปรแกรม

เพื่อเป็นพื้นฐานในการอภิปรายปัญหาของการเขียนโปรแกรมอัตโนมัติ เราจะบรรยายล่าสุดโดย Shalyto A.A. และบทความ “การเขียนโปรแกรม” ของเขาเกี่ยวกับคำจำกัดความของกระบวนทัศน์การเขียนโปรแกรมอัตโนมัติ

C++ (อ่าน c-plus-plus) เป็นภาษาโปรแกรมทั่วไปที่คอมไพล์และพิมพ์คงที่ ซึ่งคุณสามารถสร้างโปรแกรมที่ซับซ้อนได้ทุกระดับ
เป็นเวลากว่า 20 ปีแล้วที่ภาษานี้เป็นหนึ่งในสามภาษาการเขียนโปรแกรมที่ได้รับความนิยมและเป็นที่ต้องการมากที่สุด (คุณสามารถตรวจสอบได้โดยไปที่เว็บไซต์ TIOBE)
ภาษานี้มีต้นกำเนิดในช่วงต้นทศวรรษ 1980 เมื่อบียอร์น สตรุสทรัป พนักงานของ Bell Labs ได้พัฒนาภาษา C หลายอย่างตามความต้องการของเขาเอง

Bjarne Stroustrup – ผู้สร้างภาษา C++

Stroustrup ตัดสินใจขยายภาษา C ด้วยความสามารถที่พบในภาษา Simula C ซึ่งเป็นภาษาพื้นฐานของระบบ UNIX ที่คอมพิวเตอร์ Bell ใช้นั้น มีความรวดเร็ว มีคุณสมบัติหลากหลาย และพกพาได้ Stroustrup เพิ่มความสามารถในการทำงานกับคลาสและวัตถุ ด้วยเหตุนี้ ปัญหาการสร้างแบบจำลองเชิงปฏิบัติจึงเป็นไปได้ที่จะแก้ไขทั้งในแง่ของเวลาในการพัฒนา (ขอบคุณการใช้คลาสที่คล้าย Simula) และในแง่ของเวลาในการคำนวณ (ขอบคุณความเร็ว C)
นักพัฒนาภาษาพูดถึงเรื่องนี้อย่างไร:



ในปี 1998 มาตรฐานภาษาแรกที่เรียกว่า C++98 ได้รับการเผยแพร่โดยคณะกรรมการมาตรฐาน C++ มีการพัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการในปัจจุบัน หนึ่งในกลุ่มที่พัฒนาภาษา C++ และส่งข้อเสนอเพื่อปรับปรุงต่อคณะกรรมการมาตรฐาน C++ คือ บูสต์ซึ่งมีส่วนร่วมในการปรับปรุงความสามารถของภาษาโดยการเพิ่มคุณสมบัติเมตาโปรแกรมมิงเหนือสิ่งอื่นใด มาตรฐานล่าสุดเปิดตัวในปี 2560 และมีชื่อว่า ค++17- มาตรฐานถัดไปจะมาในเร็วๆ นี้ และคาดว่าจะปรากฏในปี 2020
ไม่มีใครเป็นเจ้าของสิทธิ์ในภาษา C++; ในเดือนมีนาคม 2559 คณะทำงาน WP21 C++ ถูกสร้างขึ้นในรัสเซีย กลุ่มนี้จัดขึ้นเพื่อรวบรวมข้อเสนอสำหรับมาตรฐาน C++ ส่งไปยังคณะกรรมการ และปกป้องข้อเสนอเหล่านั้นในการประชุมใหญ่ขององค์การระหว่างประเทศเพื่อการมาตรฐาน
C++ เป็นภาษาที่มีหลายกระบวนทัศน์ (จากคำว่า Paradigm ซึ่งเป็นรูปแบบของการเขียนโปรแกรมคอมพิวเตอร์) รวมถึงรูปแบบการเขียนโปรแกรมและเทคโนโลยีที่หลากหลาย มักถูกจัดว่าเป็นภาษาเชิงวัตถุ แต่หากพูดอย่างเคร่งครัด ในกรณีนี้ไม่เป็นเช่นนั้น ในระหว่างขั้นตอนการทำงาน นักพัฒนาจะได้รับอิสระอย่างเต็มที่ในการเลือกเครื่องมือ เพื่อให้ปัญหาที่ได้รับการแก้ไขโดยใช้แนวทางเฉพาะได้รับการแก้ไขอย่างมีประสิทธิภาพมากที่สุด กล่าวอีกนัยหนึ่ง C++ ไม่ได้บังคับให้โปรแกรมเมอร์ยึดติดกับรูปแบบการพัฒนาโปรแกรมเพียงรูปแบบเดียว (เช่น เชิงวัตถุ)
C++ มีไลบรารีมาตรฐานที่หลากหลายซึ่งประกอบด้วยคอนเทนเนอร์และอัลกอริธึมทั่วไป, I/O, นิพจน์ทั่วไป, การสนับสนุนมัลติเธรด และคุณลักษณะอื่นๆ C++ มีอิทธิพลต่อภาษาการเขียนโปรแกรมหลายภาษา รวมถึง: Java, C#, D เนื่องจาก C++ เป็นของตระกูลภาษาตามไวยากรณ์ของภาษา C คุณจึงสามารถเชี่ยวชาญภาษาการเขียนโปรแกรมอื่นในตระกูลนี้ได้อย่างง่ายดาย: JavaScript, PHP , Perl, Objective-C และอื่นๆ อีกมากมาย ฯลฯ รวมถึงภาษาแม่ด้วย - C. -
ในระหว่างที่มันดำรงอยู่ ภาษา C++ ได้รับความเชื่อผิด ๆ ที่ไม่หยุดยั้งซึ่งถูกหักล้างอย่างง่ายดาย (ดูที่นี่: ส่วนที่ 1 และส่วนที่ 2)

ประวัติความเป็นมาของภาษาและมาตรฐานการเผยแพร่

1983

ผู้สร้างภาษาคือ Björn Stroustrupซึ่งเป็นพนักงานของ Bell Labs ได้เปิดตัวภาษา C++ เวอร์ชันแรกๆ (“C พร้อมคลาส”)

1985

การเปิดตัวเชิงพาณิชย์ครั้งแรกของ C++ ภาษานี้ใช้ชื่อที่ทันสมัย

1986

การเปิดตัว The C++ Programming Language ฉบับพิมพ์ครั้งแรก - หนังสือเกี่ยวกับ C++ ที่เขียนโดย Björn Stroustrup

1998

มาตรฐานสากลสำหรับภาษา C++ ได้รับการรับรองแล้ว: ISO/IEC 14882:1998 “มาตรฐานสำหรับภาษาการเขียนโปรแกรม C++”

2003
2005

รายงานทางเทคนิคของห้องสมุด 1 (TR1) ได้รับการเผยแพร่แล้ว แม้ว่าจะไม่ได้เป็นส่วนหนึ่งของมาตรฐานอย่างเป็นทางการ แต่รายงานก็ได้อธิบายส่วนขยายของไลบรารีมาตรฐานที่ควรรวมไว้ในเวอร์ชันถัดไปของภาษา C++

2011

การเปิดตัวมาตรฐานใหม่ – C++11 หรือ ISO/IEC 14882:2011; มาตรฐานใหม่รวมถึงการเพิ่มเติมในแกนภาษาและการขยายไลบรารีมาตรฐาน รวมถึง TR1 ส่วนใหญ่

2014

การเปิดตัวมาตรฐาน C++14 (“มาตรฐานสากล ISO/IEC 14882:2014(E) ภาษาการเขียนโปรแกรม C++”); C++14 สามารถมองได้ว่าเป็นส่วนขยายขนาดเล็กเหนือ C++11 ซึ่งมีการแก้ไขข้อบกพร่องและการปรับปรุงเล็กน้อยเป็นส่วนใหญ่

2017

การเปิดตัวมาตรฐานใหม่ – C++1z (C++17) มาตรฐานนี้ทำให้เกิดการเปลี่ยนแปลงและเพิ่มเติมมากมาย ตัวอย่างเช่น STD รวมไลบรารีของมาตรฐาน C11 ระบบไฟล์ที่อิงตาม boost::filesystem และไลบรารี TS I รุ่นทดลองส่วนใหญ่

2020

C++20 เป็นชื่ออย่างไม่เป็นทางการของมาตรฐาน ISO/IEC สำหรับภาษาการเขียนโปรแกรม C++ ซึ่งคาดว่าจะเป็นไปตาม C++17 ร่างมาตรฐาน N4800

ปรัชญา C++

ในหนังสือของเขา The Design and Evolution of C++ (2007) Björn Stroustrup อธิบายถึงหลักการที่เขาปฏิบัติตามเมื่อออกแบบ C++ (ตัวย่อ):

  • รับภาษาสำหรับใช้งานทั่วไปพร้อมประเภทข้อมูลคงที่ ประสิทธิภาพ และความสะดวกในการพกพาของภาษา C
  • รองรับรูปแบบการเขียนโปรแกรมที่หลากหลายโดยตรงและครอบคลุม
  • ให้อิสระแก่โปรแกรมเมอร์ในการเลือก แม้ว่าจะเปิดโอกาสให้เขาเลือกผิดก็ตาม
  • รักษาความเข้ากันได้กับ C ให้มากที่สุดเท่าที่จะเป็นไปได้ ดังนั้นจึงทำให้เปลี่ยนจากการเขียนโปรแกรม C ได้ง่าย
  • หลีกเลี่ยงความแตกต่างระหว่าง C และ C++: โครงสร้างใดๆ ที่ถูกต้องในทั้งสองภาษาจะต้องมีความหมายเหมือนกันในแต่ละภาษา และนำไปสู่พฤติกรรมของโปรแกรมเดียวกัน
  • หลีกเลี่ยงฟีเจอร์ที่ขึ้นอยู่กับแพลตฟอร์มหรือไม่เป็นสากล
  • “อย่าจ่ายเงินสำหรับสิ่งที่คุณไม่ได้ใช้” - ไม่มีฟีเจอร์ภาษาใดที่ควรทำให้ประสิทธิภาพของโปรแกรมที่ไม่ได้ใช้ลดลง
  • ไม่ต้องการสภาพแวดล้อมการเขียนโปรแกรมที่ซับซ้อนจนเกินไป

ซี และ ซี++

ไวยากรณ์ของ C++ นั้นสืบทอดมาจากภาษา C แม้ว่าอย่างเป็นทางการแล้ว หนึ่งในหลักการของ C++ ยังคงรักษาความเข้ากันได้กับภาษา C แต่ในความเป็นจริงแล้ว กลุ่มมาตรฐานสำหรับภาษาเหล่านี้ไม่มีการโต้ตอบ และการเปลี่ยนแปลงที่พวกเขาทำ เพียงแต่ไม่สัมพันธ์กัน แต่มักจะขัดแย้งกันในเชิงอุดมการณ์โดยพื้นฐาน ดังนั้นองค์ประกอบที่มาตรฐาน C ใหม่เพิ่มให้กับเคอร์เนลจึงอยู่ในองค์ประกอบมาตรฐาน C++ ของไลบรารีมาตรฐานและไม่ได้อยู่ในเคอร์เนลเลย ตัวอย่างเช่น อาร์เรย์แบบไดนามิก อาร์เรย์ที่มีขอบเขตคงที่ สิ่งอำนวยความสะดวกในการประมวลผลแบบขนาน จากข้อมูลของ Stroustrup การผสมผสานการพัฒนาของทั้งสองภาษานี้จะเป็นประโยชน์อย่างยิ่ง แต่ก็ไม่น่าจะเป็นไปได้ด้วยเหตุผลทางการเมือง ดังนั้นความเข้ากันได้ในทางปฏิบัติระหว่าง C และ C++ จะค่อยๆ หายไป
ในตัวอย่างนี้ ขึ้นอยู่กับคอมไพเลอร์ที่ใช้ "C++" หรือ "C" จะถูกส่งออก:

โปรแกรม 9.1

#รวม int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

นี่เป็นเพราะความจริงที่ว่าค่าคงที่อักขระใน C เป็นประเภท int และใน C++ เป็นประเภท char แต่ขนาดของประเภทเหล่านี้แตกต่างกัน

โมเดลวงจรการใช้งานของแอปพลิเคชัน

วงจรชีวิตซอฟต์แวร์คือช่วงเวลาที่เริ่มต้นจากช่วงเวลาที่ตัดสินใจเกี่ยวกับความจำเป็นในการสร้างผลิตภัณฑ์ซอฟต์แวร์และสิ้นสุดในขณะที่ถูกถอนออกจากบริการโดยสมบูรณ์ วงจรนี้เป็นกระบวนการสร้างและพัฒนาซอฟต์แวร์ มีโมเดลวงจรชีวิตหลายแบบ
โมเดลน้ำตกวงจรชีวิต (แบบจำลองน้ำตกภาษาอังกฤษ) ถูกเสนอในปี 1970 โดย Winston Royce จัดให้มีการดำเนินการตามลำดับของทุกขั้นตอนของโครงการในลำดับคงที่อย่างเคร่งครัด การเปลี่ยนไปสู่ขั้นต่อไปหมายถึงงานที่สมบูรณ์ในขั้นก่อนหน้า ข้อกำหนดที่กำหนดในขั้นตอนของการสร้างข้อกำหนดนั้นได้รับการบันทึกไว้อย่างเคร่งครัดในรูปแบบของข้อกำหนดทางเทคนิคและจะถูกบันทึกไว้สำหรับการพัฒนาทั้งหมดของโครงการ แต่ละขั้นตอนจะสิ้นสุดลงด้วยการปล่อยชุดเอกสารที่สมบูรณ์เพียงพอเพื่อให้ทีมพัฒนาอื่นสามารถดำเนินการพัฒนาต่อไปได้
ขั้นตอนโครงการตามแบบจำลองน้ำตก:

  1. การก่อตัวของข้อกำหนด
  2. ออกแบบ;
  3. การดำเนินงาน;
  4. การทดสอบ;
  5. การดำเนินงาน;
  6. การดำเนินงานและการบำรุงรักษา

ในแบบจำลองแบบเรียงซ้อน การเปลี่ยนจากระยะโครงการหนึ่งไปยังอีกระยะหนึ่งจะถือว่าผลลัพธ์ของระยะก่อนหน้านั้นถูกต้องโดยสมบูรณ์ ในโครงการขนาดใหญ่ แทบจะเป็นไปไม่ได้เลยที่จะบรรลุผลสำเร็จ ดังนั้นโมเดลนี้จึงเหมาะสำหรับการพัฒนาโครงการขนาดเล็กเท่านั้น (ดับเบิลยู. รอยซ์เองไม่ได้ยึดติดกับแบบจำลองนี้และใช้แบบจำลองซ้ำ)
รูปแบบการวนซ้ำ
อีกทางเลือกหนึ่งสำหรับแบบจำลองแบบเรียงซ้อนคือแบบจำลองการพัฒนาซ้ำและแบบเพิ่มหน่วย (IID) ซึ่งได้รับจาก T. Gilb ในยุค 70 ชื่อของแบบจำลองวิวัฒนาการ โมเดล IID เกี่ยวข้องกับการแบ่งวงจรชีวิตของโปรเจ็กต์ออกเป็นลำดับของการวนซ้ำ ซึ่งแต่ละรอบจะมีลักษณะคล้ายกับ "มินิโปรเจ็กต์" รวมถึงกระบวนการพัฒนาทั้งหมดที่นำไปใช้กับการสร้างฟังก์ชันการทำงานเล็กๆ น้อยๆ เมื่อเปรียบเทียบกับโปรเจ็กต์โดยรวม เป้าหมายของการวนซ้ำแต่ละครั้งคือการได้รับเวอร์ชันที่ใช้งานได้ของระบบซอฟต์แวร์ รวมถึงฟังก์ชันการทำงานที่กำหนดโดยเนื้อหาที่ผสานรวมของการวนซ้ำก่อนหน้าและปัจจุบันทั้งหมด ผลลัพธ์ของการวนซ้ำครั้งสุดท้ายประกอบด้วยฟังก์ชันที่จำเป็นทั้งหมดของผลิตภัณฑ์ ดังนั้น เมื่อเสร็จสิ้นการวนซ้ำแต่ละครั้ง ผลิตภัณฑ์จะได้รับการเพิ่มขึ้น - เพิ่มขึ้น - ขีดความสามารถของผลิตภัณฑ์ ซึ่งดังนั้นจึงพัฒนาแบบวิวัฒนาการ


แนวทางการพัฒนาซ้ำหลายแบบถูกนำมาใช้ในวิธีการพัฒนาที่ทันสมัยที่สุด:

กระบวนการพัฒนา - กระบวนการรวมเหตุผล (RUP)

กระบวนการรวมเหตุผลแบบมีเหตุผล (RUP)(กระบวนการแบบรวมเหตุผล) เป็นวิธีการพัฒนาซอฟต์แวร์ที่ดูแลโดย Rational Software (IBM) วิธีการให้คำแนะนำสำหรับทุกขั้นตอนของการพัฒนา: ตั้งแต่การสร้างแบบจำลองธุรกิจไปจนถึงการทดสอบและการว่าจ้างโปรแกรมที่เสร็จสมบูรณ์ Unified Modeling Language (UML) ใช้เป็นภาษาการสร้างแบบจำลอง
วงจรชีวิตการพัฒนาผลิตภัณฑ์ที่สมบูรณ์ประกอบด้วยสี่ระยะ ซึ่งแต่ละระยะจะมีการทำซ้ำอย่างน้อยหนึ่งครั้ง

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

  • ชี้แจง
  • ข้อกำหนดด้านเอกสาร การออกแบบ การใช้งาน และการทดสอบสถาปัตยกรรมปฏิบัติการ ชี้แจงข้อกำหนดและค่าใช้จ่าย การลดความเสี่ยงที่สำคัญ การบรรลุผลสำเร็จของขั้นตอนการพัฒนาหมายถึงการบรรลุเป้าหมายสำคัญของ Lifecycle Architecture

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

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



“เทคโนโลยีสารสนเทศ วิศวกรรมระบบและซอฟต์แวร์ กระบวนการวงจรชีวิตของซอฟต์แวร์" มาตรฐานนี้ได้รับการรับรองโดยหน่วยงานกลางด้านกฎระเบียบทางเทคนิคและมาตรวิทยาแห่งสหพันธรัฐรัสเซีย และคล้ายคลึงกับมาตรฐานสากล ISO/IEC 12207:2008 มาตรฐานนี้กำหนดโครงสร้างทั่วไปของกระบวนการวงจรชีวิตซอฟต์แวร์ที่สามารถปฏิบัติตามได้ในอุตสาหกรรมซอฟต์แวร์ มาตรฐานไม่ได้เสนอแบบจำลองวงจรชีวิตที่เฉพาะเจาะจง ข้อกำหนดนี้เป็นเรื่องปกติสำหรับโมเดลวงจรชีวิต วิธีการ และเทคโนโลยีสำหรับการสร้างซอฟต์แวร์ อธิบายโครงสร้างของกระบวนการวงจรชีวิตโดยไม่ระบุวิธีดำเนินการหรือทำกิจกรรมและงานที่รวมอยู่ในกระบวนการเหล่านั้น

การนำเสนอสำหรับบทเรียน
หัวข้อข้อความ
  • มูลนิธิซอฟต์แวร์เสรี (FSF)
  • ลิขสิทธิ์ซอฟต์แวร์ฟรี
  • ซอฟต์แวร์ฟรีและโอเพ่นซอร์ส
  • ประวัติความเป็นมาของการพัฒนาภาษาโปรแกรม
  • ประวัติความเป็นมาของภาษา C และ C++
  • เรื่องราว
  • คำติชมของ C++
  • ประวัติความเป็นมาของยูนิกซ์
  • แบบจำลองวงจรชีวิตของซอฟต์แวร์แบบเกลียว
  • UML (ภาษาการสร้างแบบจำลองแบบรวม)
  • กรอบโซลูชันของ Microsoft
  • IDE สำหรับการเขียนโปรแกรม C/C++ บน Windows
  • คอมไพเลอร์ C/C++
  • การสร้างแอปพลิเคชันคอนโซลบน Windows
คำถาม
  1. เหตุใดการพัฒนาซอฟต์แวร์โมเดลน้ำตกจึงไม่ใช้ในโครงการขนาดใหญ่
  2. อะไรคือความแตกต่างระหว่างโมเดลการพัฒนาแบบน้ำตกและแบบวนซ้ำ?
  3. แสดงรายการขั้นตอนของการพัฒนาซอฟต์แวร์ในระเบียบวิธี Rational Unified Process (RUP)

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

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

การติดตั้ง /IDE

สิ่งแรกที่คุณควรทำก่อนเริ่มเรียน C++ คือต้องแน่ใจว่าคุณมี IDE ซึ่งเป็นสภาพแวดล้อมการพัฒนาแบบรวม (โปรแกรมที่คุณจะเขียนโปรแกรม) หากคุณไม่มี IDE คุณก็ไปได้เลย เมื่อคุณตัดสินใจเลือก IDE แล้ว ให้ติดตั้งและฝึกสร้างโปรเจ็กต์ง่ายๆ

รู้เบื้องต้นเกี่ยวกับ C ++

ภาษา C++ คือชุดคำสั่งที่บอกให้คอมพิวเตอร์ทราบว่าต้องทำอย่างไร ชุดคำสั่งนี้มักเรียกว่าซอร์สโค้ดหรือโค้ดเพียงอย่างเดียว คำสั่งอาจเป็น "ฟังก์ชัน" หรือ "คำสำคัญ" คำหลัก (คำสงวน C/C++) เป็นองค์ประกอบพื้นฐานของภาษา ฟังก์ชันต่างๆ เป็นองค์ประกอบที่ซับซ้อนเนื่องจากเขียนขึ้นในแง่ของฟังก์ชันที่เรียบง่ายกว่า คุณจะเห็นสิ่งนี้ในโปรแกรมแรกของเรา ซึ่งแสดงไว้ด้านล่าง โครงสร้างของฟังก์ชันนี้มีลักษณะคล้ายกับเนื้อหาของหนังสือ เนื้อหาสามารถแสดงบทต่างๆ ของหนังสือ แต่ละบทในหนังสือสามารถมีเนื้อหาเป็นของตัวเองซึ่งประกอบด้วยย่อหน้า แต่ละย่อหน้าสามารถมีย่อหน้าย่อยของตัวเองได้ แม้ว่า C++ จะมีฟังก์ชันทั่วไปและคำสงวนมากมายที่คุณสามารถใช้ได้ แต่ก็ยังมีความจำเป็นต้องเขียนฟังก์ชันของคุณเอง

เริ่มที่ส่วนไหนของโปรแกรม? แต่ละโปรแกรมในภาษา C++ มีฟังก์ชันเดียว เรียกว่าฟังก์ชันหลักหรือฟังก์ชันหลัก การทำงานของโปรแกรมจะเริ่มต้นด้วยฟังก์ชันนี้ จากฟังก์ชันหลัก คุณยังสามารถเรียกใช้ฟังก์ชันอื่นๆ ได้ ไม่ว่าจะเป็นฟังก์ชันที่เราเขียนหรือตามที่คอมไพเลอร์จัดเตรียมไว้ข้างต้น

แล้วคุณจะเข้าถึงคุณสมบัติมาตรฐานเหล่านี้ได้อย่างไร? ในการเข้าถึงฟังก์ชันมาตรฐานที่มาพร้อมกับคอมไพเลอร์ คุณต้องรวมไฟล์ส่วนหัวโดยใช้คำสั่ง preprocessor - #include เหตุใดสิ่งนี้จึงมีประสิทธิภาพ? ลองดูตัวอย่างโปรแกรมการทำงาน:

#รวม << "Моя первая программа на С++\n"; cin.get(); }

ให้เราพิจารณารายละเอียดองค์ประกอบของโปรแกรม #include เป็นคำสั่ง "ตัวประมวลผลล่วงหน้า" ที่บอกให้คอมไพเลอร์ใส่โค้ดจากไฟล์ส่วนหัว iostream ลงในโปรแกรมของเราก่อนที่จะสร้างไฟล์ปฏิบัติการ ด้วยการเชื่อมต่อไฟล์ส่วนหัวเข้ากับโปรแกรมของคุณ คุณจะสามารถเข้าถึงฟังก์ชันต่างๆ มากมายที่คุณสามารถใช้ในโปรแกรมของคุณได้ ตัวอย่างเช่น ตัวดำเนินการ cout ต้องการ iostream บรรทัดโดยใช้เนมสเปซ std; บอกให้คอมไพเลอร์ใช้กลุ่มของฟังก์ชันที่เป็นส่วนหนึ่งของไลบรารีมาตรฐานมาตรฐาน บรรทัดนี้ยังอนุญาตให้โปรแกรมใช้ตัวดำเนินการ เช่น cout อัฒภาคเป็นส่วนหนึ่งของไวยากรณ์ C++ มันบอกคอมไพเลอร์ว่านี่คือจุดสิ้นสุดของคำสั่ง คุณจะเห็นทันทีว่ามีการใช้เครื่องหมายอัฒภาคเพื่อยุติคำสั่งส่วนใหญ่ใน C++

บรรทัดถัดไปที่สำคัญของโปรแกรมคือ int main() บรรทัดนี้จะบอกคอมไพลเลอร์ว่ามีฟังก์ชันที่เรียกว่า main และฟังก์ชันส่งคืนจำนวนเต็ม วงเล็บปีกกา ( และ ) ส่งสัญญาณการเริ่มต้น (และสิ้นสุด) ของฟังก์ชัน วงเล็บปีกกายังใช้ในบล็อกโค้ดอื่น ๆ แต่จะระบุสิ่งหนึ่งเสมอ - จุดเริ่มต้นและจุดสิ้นสุดของบล็อกตามลำดับ

ในภาษา C++ วัตถุ cout ใช้เพื่อแสดงข้อความ (ออกเสียงว่า "C out") เขาใช้สัญลักษณ์<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

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

เมื่อถึงจุดสิ้นสุดของฟังก์ชันหลัก (วงเล็บปีกกาปิด) โปรแกรมของเราจะส่งคืนค่า 0 ให้กับระบบปฏิบัติการ ค่าที่ส่งคืนนี้มีความสำคัญเนื่องจากโดยการวิเคราะห์ระบบปฏิบัติการสามารถตัดสินได้ว่าโปรแกรมของเราเสร็จสมบูรณ์หรือไม่ ค่าที่ส่งคืนเป็น 0 หมายถึงสำเร็จและส่งคืนโดยอัตโนมัติ (แต่สำหรับประเภทข้อมูล int เท่านั้น ฟังก์ชันอื่น ๆ กำหนดให้คุณต้องส่งคืนค่าด้วยตนเอง) แต่หากเราต้องการส่งคืนอย่างอื่น เช่น 1 เราก็จะต้องดำเนินการ ด้วยตนเอง

#รวม ใช้เนมสเปซมาตรฐาน; int main() ( cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

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

อย่าลืมแสดงความคิดเห็นเกี่ยวกับโปรแกรมของคุณ!

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

จะทำอย่างไรกับตัวแปรประเภทนี้?

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

การประกาศตัวแปรในภาษา C++

หากต้องการประกาศตัวแปร ให้ใช้ประเภทไวยากรณ์<имя>- - นี่คือตัวอย่างบางส่วนของการประกาศตัวแปร:

หมายเลขภายใน; อักขระถ่าน; ลอย num_float;

อนุญาตให้ประกาศตัวแปรประเภทเดียวกันหลายรายการในบรรทัดเดียว โดยต้องคั่นแต่ละรายการด้วยเครื่องหมายจุลภาค

Int x, y, z, d;

หากคุณพิจารณาอย่างละเอียด คุณอาจพบว่าการประกาศตัวแปรมักจะตามด้วยเครื่องหมายอัฒภาคเสมอ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับแบบแผน “ในการตั้งชื่อตัวแปร”

ข้อผิดพลาดทั่วไปในการประกาศตัวแปรในภาษา C++

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

การใช้ตัวแปร

ตอนนี้คุณรู้วิธีการประกาศตัวแปรแล้ว นี่คือตัวอย่างโปรแกรมที่สาธิตการใช้ตัวแปร:

#รวม ใช้เนมสเปซมาตรฐาน; int main() ( หมายเลข int; cout<< "Введите число: "; cin >>หมายเลข;<< "Вы ввели: "<< number <<"\n"; cin.get(); }

ลองมาดูโปรแกรมนี้และตรวจสอบโค้ดของมันทีละบรรทัด คีย์เวิร์ด int ระบุว่าตัวเลขนั้นเป็นจำนวนเต็ม ฟังก์ชัน cin >> อ่านค่าเป็นตัวเลข ผู้ใช้ต้องกด Enter หลังตัวเลขที่ป้อน cin.ignore() เป็นฟังก์ชันที่อ่านอักขระและละเว้นอักขระนั้น เราได้จัดระเบียบอินพุตของเราลงในโปรแกรม หลังจากป้อนตัวเลขแล้ว เราก็กดปุ่ม ENTER ซึ่งเป็นสัญลักษณ์ที่ถูกส่งไปยังสตรีมอินพุตด้วย เราไม่ต้องการมัน เราก็เลยทิ้งมันไป โปรดทราบว่าตัวแปรได้รับการประกาศเป็นประเภทจำนวนเต็ม หากผู้ใช้พยายามป้อนเลขฐานสิบ ตัวแปรนั้นจะถูกตัดทอน (นั่นคือ ส่วนทศนิยมของตัวเลขจะถูกละเว้น) ลองป้อนเลขทศนิยมหรือลำดับอักขระ เมื่อคุณรันโปรแกรมตัวอย่าง คำตอบจะขึ้นอยู่กับค่าอินพุต

โปรดทราบว่าเมื่อพิมพ์จากตัวแปร จะไม่มีการใช้เครื่องหมายคำพูด การไม่มีเครื่องหมายคำพูดจะบอกคอมไพลเลอร์ว่ามีตัวแปร ดังนั้นโปรแกรมควรตรวจสอบค่าของตัวแปรเพื่อแทนที่ชื่อตัวแปรด้วยค่าของมันในขณะดำเนินการ คำสั่ง shift หลายรายการในบรรทัดเดียวกันเป็นที่ยอมรับได้อย่างสมบูรณ์ และผลลัพธ์จะดำเนินการในลำดับเดียวกัน คุณควรแยกตัวอักษรสตริง (สตริงที่อยู่ในเครื่องหมายคำพูด) และตัวแปร โดยให้แต่ละตัวดำเนินการกะของตัวเอง<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

การเปลี่ยนแปลงและการเปรียบเทียบค่า

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

  • * การคูณ
  • - การลบ
  • + นอกจากนี้
  • / แผนก,
  • = งานที่ได้รับมอบหมาย
  • == ความเท่าเทียมกัน
  • >เพิ่มเติม
  • < меньше.
  • != ไม่เท่ากัน
  • >= มากกว่าหรือเท่ากับ
  • <= меньше или равно

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

นี่คือตัวอย่างบางส่วน:

ก = 4 * 6; // ใช้ความคิดเห็นบรรทัดและอัฒภาค a เท่ากับ 24 a = a + 5; // เท่ากับผลรวมของค่าเดิมและห้า a == 5 // ไม่ได้กำหนดห้า ตรวจสอบว่ามีค่าเท่ากับ 5 หรือไม่

คุณมักจะใช้ == ในโครงสร้าง เช่น คำสั่งแบบมีเงื่อนไขและลูป

ก< 5 // Проверка, a менее пяти? a >5 // ตรวจสอบมากกว่าห้าหรือเปล่า? a == 5 // กำลังตรวจสอบเท่ากับห้าใช่ไหม? a != 5 // เช็คสิ มันไม่เท่ากับห้าเหรอ? a >= 5 // ตรวจสอบว่า a มากกว่าหรือเท่ากับ 5 หรือไม่? ก<= 5 // Проверка, a меньше или равно пяти?

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