226101 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์ สัปดาห์ที่ 3 การประกาศตัวแปร การแสดงผล การรับค่าตัวแปร
วัตถุประสงค์ สามารถแสดงผลแบบต่างๆ ได้ สามารถรับตัวแปรแบบต่างๆ ได้ สามารถประยุกต์เขียนโปรแกรมให้รับค่าและแสดงผลการคำนวณจากตัวแปรที่รับค่าได้ เข้าใจวิธีการประกาศตัวแปรแบบภายในฟังก์ชันและแบบครอบคลุมทั้งโปรแกรม เข้าใจการประกาศตัวแปรแบบ storage class เข้าใจการประกาศตัวแปรแบบค่าคงที่
ทบทวนการเขียนโปรแกรมด้วย C การเขียนโปรแกรมแบ่งเป็น โปรแกรมที่ใช้เขียนโค้ด(ตัวหนังสือ ตัวเลข หรือสัญลักษณ์ ตามข้อตกลงของตัวแปรภาษานั้น) เราเรียกว่า editor เช่น notepad , editplus , dreamweaver เป็นต้น ตัวแปลภาษาจากโค้ดเป็นตัวโปรแกรม(executable) แบ่งเป็น แอสแซมเบลอร์(assembler) ตัวแปลภาษาสำหรับภาษา assembly เป็นภาษาเครื่อง(binary code) คอมไพเลอร์(Compiler) แปลภาษาโดยการ สั่งประมวลผล(Compile) โค้ดทั้งหมด แล้วสร้าง execute program อินเตอร์พรีเตอร์(Interpreter) ประมวลผลโค้ด(Interpret) ทีละบรรทัด แล้วทำงานจากคำสั่งบรรทัดนั้น editor + ตัวแปลภาษา + debugger(ตรวจสอบ+รัน) เรียกว่า IDE (Integrated Development Environment)
การสร้างไฟล์ภาษา นามสกุล .cpp หรือ .c คอมไพล์ สร้างตัวโปรแกรม How to use C program? การสร้างไฟล์ภาษา นามสกุล .cpp หรือ .c คอมไพล์ สร้างตัวโปรแกรม รันโปรแกรม(dos call exe , Windows double click exe) Code Compile Executable(.exe)
การรับค่า แสดงผล comment เครื่องหมายที่จะไม่ถูกนำมาประมวลผล ในภาษาซี มีสองแบบ // ใช้ comment สิ่งที่อยู่หลังเครื่องหมายไปจนสิ้นสุดบรรทัด /* ใช้ comment สิ่งที่อยู่ระหว่างเครื่องหมายนี้ (ไม่สนใจจุดสิ้นสุดบรรทัด) */ ตัวอย่าง ICT, University of Phayao
การรับค่า แสดงผล การแสดงผล printf() puts() putchar() การรับข้อมูล scanf() getchar() getch() gets() ICT, University of Phayao
การรับค่า แสดงผล (การแสดงผล) printf(" ") แสดงผลสิ่งที่อยู่ภายใต้เครื่องหมาย " " puts() แสดงผลทุกรูปแบบ โดยแยกส่วนการแสดงผล ระหว่างตัวแปรและข้อความ โดยขึ้นบรรทัดใหม่หลังใช้คำสั่ง putchar() แสดงผล ทีละตัวอักษร(character) ICT, University of Phayao
การแสดงผล การแสดงผลด้วย printf แสดงผลข้อความภายใต้ " " (double quote) แสดงผลข้อความภายใต้ " “ ผสมตัวแปร
การรับค่า แสดงผล(การจัด การแสดงผล) ตัวแทนชนิดข้อมูล ชนิดข้อมูล ตัวแทน char %c long int %ld string %s unsigned long int %lu short int %hd float %f unsigned short int %hu double %lf int %d long double unsigned int %u ชนิดข้อมูลแบบทศนิยมสามารถกำหนดจำนวนจุดทศนิยมได้ ด้วย %.xf โดย x เป็นตัวเลขแทนจำนวนทศนิยมที่ต้องการ ICT, University of Phayao
การรับค่า แสดงผล(การจัด การแสดงผล) Escape character รหัส ความหมาย \0 สิ้นสุดการกำหนดค่า \t แท๊บแนวนอน(horizontal tab) \a ส่งเสียง 1 ครั้ง \v แท๊บแนวตั้ง(vertical tab) \b ถอยหลัง 1 ช่อง(backspace) \' พิมพ์เครื่องหมาย ' \f ขึ้นหน้าใหม่(form feed) \'' พิมพ์เครื่องหมาย '' \n ขึ้นบรรทัดใหม่(windows) \\ พิมพ์เครื่องหมาย \ \r ย้าย cursor ไปไว้อักษรแรกในบรรทัด \r\n ? ICT, University of Phayao
การประกาศตัวแปรแบบต่างๆ การประกาศตัวแปร ในภาษาซี มี 2 ประเภท local variable มีการเปลี่ยนแปลงค่าแบบภายในฟังก์ชันเท่านั้น global variable มีการเปลี่ยนแปลงค่าทั้งโปรแกรม double i เป็น global variable int i เป็น local variable double i เป็น global variable
การประกาศตัวแปรแบบต่างๆ แบ่งตาม Storage Class ตามขอบเขตการทำงานของตัวแปร มี 4 ประเภท auto (local variable) ค่าที่กำหนด จะถูกล้างเมื่อมีสิ้นสุดฟังก์ชัน โดยปกติจะไม่ประกาศตัวแปรแบบ auto เนื่องจากมีลักษณะเหมือนการประกาศทั่วไป extern (global variable) ทำการอ้างอิงค่าตัวแปร ที่มีการประกาศไว้นอกฟังก์ชัน static (local or global variable) ค่าของตัวแปร จะถูกล้างเมื่อสิ้นสุดโปรแกรม(สิ้นสุดฟังก์ชันค่ายังคงเดิม) register เป็นการจองพื้นที่หน่วยความจำที่ CPU โดยตรง
การประกาศตัวแปรแบบต่างๆ auto (local variable) ค่าที่กำหนด จะถูกล้างเมื่อมีสิ้นสุดฟังก์ชัน โดยปกติจะไม่ประกาศตัวแปรแบบ auto เนื่องจากมีลักษณะเหมือนการประกาศทั่วไป
การประกาศตัวแปรแบบต่างๆ extern (global variable) ทำการอ้างอิงค่าตัวแปร ที่มีการประกาศไว้นอกฟังก์ชัน
การประกาศตัวแปรแบบต่างๆ static (local or global variable) ค่าของตัวแปร จะถูกล้างเมื่อสิ้นสุดโปรแกรม(สิ้นสุดฟังก์ชันค่ายังคงเดิม)
การประกาศตัวแปรแบบต่างๆ register เป็นการจองพื้นที่หน่วยความจำที่ CPU โดยตรง ใช้ได้แบบ local เท่านั้น
การประกาศตัวแปรแบบต่างๆ การประกาศตัวแปรแบบค่าคงที่ Defined constant ค่าคงที่ที่ไม่มีการเปลี่ยนแปลง ประกาศส่วนหัวโปรแกรม ไม่ต้องกำหนด data type รูปแบบ #define {variable name} {value} Const constant ค่าคงที่ที่ไม่มีการเปลี่ยนแปลง ประกาศส่วนหัวโปรแกรม ต้องกำหนด data type รูปแบบ #const {type} {variable name} = {value}
การประกาศตัวแปรแบบต่างๆ #define #const
การรับค่า แสดงผล (การแสดงผล) printf puts putchar การประกาศตัวแปรแบบข้อความ(String) ใช้ char {ชื่อตัวแปร}[] = "ข้อความ"; ICT, University of Phayao
การรับค่า แสดงผล(การรับค่า) scanf() รับค่าตัวแปร getchar() รับค่าตัวแปรโดยรับ 1 ตัวอักษรรวมทั้งคีย์ Enter โดยแสดงตัวอักษรที่พิมพ์ไป getch() รับค่าตัวแปรโดยรับ 1 ตัวอักษรยกเว้น คีย์ Enter โดยไม่แสดงตัวอักษรที่พิมพ์ไป getche() รับค่าตัวแปรโดยรับ 1 ตัวอักษรยกเว้น คีย์ Enter โดยแสดงตัวอักษรที่พิมพ์ไป gets() รับค่าตัวแปรเป็นข้อความ(string) การรับตัวแปรทุกรูปแบบ ห้ามมีข้อความด้านในฟังก์ชันการรับค่า ICT, University of Phayao
การรับค่า แสดงผล(การรับค่า) scanf gets รูปแบบการ scanf "%{อักษรย่อแทน data type}", &{ชื่อตัวแปร} การประกาศตัวแปรแบบข้อความ(String) ใช้ char {ชื่อตัวแปร}[100] = "ข้อความ"; หมายถึง name จะเก็บตัวอักษรได้ไม่เกิน 99 ตัวอักษร โดยตัวที่ 100 จะเก็บบิตแสดงจุดสิ้นสุดข้อความ ICT, University of Phayao
การรับค่า แสดงผล(การรับค่า) เปรียบเทียบการแสดงผล getchar() , getch() , getche() ฟังก์ชัน การหยุดรับค่า สามารถรับค่า การกด Enter เป็น 1 ตัวอักษร ได้ แสดงผลค่าที่รับ อัตโนมัติ getchar() จนกว่า enter √ getch() ครบ 1 ตัวอักษร getche() ICT, University of Phayao
ตัวอย่างโจทย์ เขียนโปรแกรมรับค่าดังต่อไปนี้ คำนำหน้า(prefix) ให้ พิมพ์ นาย นาง นางสาว : string ชื่อ(name) : string นามสกุล(surname) : string รหัสนิสิต(code) : int ภาควิชา(major) : string คณะ(schoolOf) : string เกรดในรายวิชานี้(grade) : char