Week4 Data types, Variables, Operators and Input/output (ต่อ) ไกรฤกษ์ เชยชื่น, M.Eng. Electrical.
ทบทวน: คำสั่ง printf ใช้แสดงผล ออกทางหน้าจอ มีรูปแบบดังนี้ printf(“string_format”, data_list) เมื่อ string_format = ข้อความ + อักขระพิเศษที่ใช้แทนข้อมูล + escape character data_list = ข้อมูล หรือ ตัวแปรที่เก็บข้อมูลเอาไว้
การกำหนดรูปแบบสำหรับคำสั่ง Printf เลขจำนวนเต็ม %d = แทนเลขจำนวนเต็ม %5d = เลข 5 หมายถึงแสดงเลขจำนวนเต็มได้ 5 หลัก %-5d = - หมายถึงให้แสดงเลขชิดซ้าย และแสดงจำนวนเต็มได้ 5 หลัก %05d = แทนเลขจำนวนเต็ม 5 หลักถ้าจำนวนเต็มไม่ถึง 5 หลักให้ใส่เลข 0 ข้างหน้า
ตัวอย่าง : การกำหนดรูปแบบสำหรับคำสั่ง Printf ดัดแปลงโปรแกรม 1) ดัดแปลงโจทย์ใช้คำสั่ง printf ครั้งเดียว 2) ลองกำหนดตัวเลขใน Myint มากกว่า 6 หลัก
การกำหนดรูปแบบสำหรับคำสั่ง Printf เลขจำนวนจริง %f = แทนเลขจำนวนจริง %7f = เลข 7 หมายถึงแสดงเลขจำนวนจริงได้ 7 ตำแหน่ง %-5f = - หมายถึงให้แสดงเลขชิดซ้าย และแสดงจำนวนจริงได้ 5 ตำแหน่ง (รวมจุดทศนิยม 1 ตำแหน่ง) %5.2f = แสดงเลขจำนวนจริงได้ 5 ตำแหน่ง และใน 5 ตำแหน่งนี้ บังคับแสดงจุดทศนิยม 2 ตำแหน่ง %05.2f = คล้าย กับ %5.2f แต่ถ้าเลขจำนวนจริง (รวมจุดทศนิยม) มีไม่ถึง 5 ตำแหน่ง ให้เติม 0 ด้านหน้าจนครบ 5 ตำแหน่ง
ตัวอย่าง : การกำหนดรูปแบบสำหรับคำสั่ง Printf ดัดแปลงโปรแกรม 1) ดัดแปลงโจทย์ใช้คำสั่ง printf ครั้งเดียว 2) ลอง Myfloat = 35555.5555
การใช้ escape character ในคำสั่ง Printf รหัส ความหมาย \0 ค่าว่าง (Null character) \a ส่งเสียง 1 ครั้ง (bell) \b ถอยหลัง 1 ช่องตัวอักษร \f ขึ้นหน้าใหม่ (form feed) \n ขึ้นบรรทัดใหม่ (new line) \r เลื่อนเคอร์เซอร์ไปซ้ายสุด (carriage return) \t แท็บแนวนอน (horizontal tab) \v แท็บแนวตั้ง (vertical tab) \’ พิมพ์เครื่องหมาย ‘ \’’ พิมพ์เครื่องหมาย ‘’ \\ พิมพ์เครื่องหมาย \
ตัวอย่าง : การใช้ escape character ในคำสั่ง Printf ดัดแปลงโปรแกรม 1) ทำตามตัวอย่างที่ 7.7 หน้า 98
การรับข้อมูลจากคีย์บอร์ดด้วย คำสั่ง scanf (ย่อมาจาก scan formatted) รูปแบบ scanf(“string format”, address list); เมื่อ string format = อักขระพิเศษได้แก่ %d, %s, %c หรือ %f Address list = ตำแหน่งของหน่วยความจำที่จะเก็บข้อมูลที่รับเข้ามา การอ้างตำแหน่งในหน่วยความจำ ข้อมูลตัวเลข(ทั้งจำนวนจริงและจำนวนเต็ม) ต้องใช้ & (อ่านว่า ampersand) + ตัวแปร เช่น &Myint ข้อมูลตัวอักษร อ้างถึงตัวแปรได้โดยตรง เช่น Mychar
ตัวอย่าง : การรับข้อมูลจากคีย์บอร์ดด้วย คำสั่ง scanf พิมพ์ 159 แล้วกด Enter ดัดแปลงโปรแกรม: เปลี่ยนจาก scanf(“%d”,&x); เป็น scanf(“”,x);
ตัวอย่าง : การรับข้อมูลจากคีย์บอร์ดด้วย คำสั่ง scanf
การรับข้อมูลหลายๆ ข้อมูลด้วย scanf ใช้ ช่องว่าง(space) ขั้นข้อมูล ดัดแปลงโปรแกรม: เปลี่ยนจาก scanf(“%d%d%c”, …); เป็น scanf(“%d%d %c”, …); เพิ่ม int int3; scanf(“%d%d”, & int1, &int2, &int3); printf(“%d %d %d”, int1, int2, int3);
การรับข้อมูลตัวอักษร 1 ตัวอักษร -ฟังก์ชัน scanf() -ฟังก์ชัน getchar() -ฟังก์ชัน getch() -ฟังก์ชัน getche() พิมพ์ตัวอักษรทีละตัวแล้วกด Enter โปรแกรมจะหยุดเมื่อพิมพ์ ตัว ‘s’
การรับข้อมูลตัวอักษร 1 ตัวอักษร -ฟังก์ชัน scanf() -ฟังก์ชัน getchar() -ฟังก์ชัน getch() -ฟังก์ชัน getche() รูปแบบ: ตัวแปรชนิด char รับค่า = getchar(); ดัดแปลงโปรแกรม เปลี่ยน scanf(“%c”,&mychar) เป็น mychar = getchar(); getchar เหมือนกับ scanf
การรับข้อมูลตัวอักษร 1 ตัวอักษร -ฟังก์ชัน scanf() -ฟังก์ชัน getchar() -ฟังก์ชัน getch() -ฟังก์ชัน getche() รูปแบบ: ตัวแปรชนิด char รับค่า = getch(); ดัดแปลงโปรแกรม เปลี่ยน scanf(“%c”,&mychar) เป็น mychar = getch(); กดตัวอักษรไม่ต้องกด Enter โปแกรมจบเมื่อกด ‘s’ getch ป้อนตัวอักษรได้โดยไม่ต้องกด Enter และไม่แสดงว่าเรากดตัวอักษรอะไร
การรับข้อมูลตัวอักษร 1 ตัวอักษร -ฟังก์ชัน scanf() -ฟังก์ชัน getchar() -ฟังก์ชัน getch() -ฟังก์ชัน getche() รูปแบบ: ตัวแปรชนิด char รับค่า = getche(); ดัดแปลงโปรแกรม เปลี่ยน scanf(“%c”,&mychar) เป็น mychar = getche(); กดตัวอักษรไม่ต้องกด Enter โปแกรมจบเมื่อกด ‘s’ getche ป้อนตัวอักษรได้โดยไม่ต้องกด Enter และแสดงว่าเรากดตัวอักษรอะไรบ้าง
การแสดงข้อมูลตัวอักษร 1 ตัวอักษร -ฟังก์ชัน putchar(): รูปแบบ : putchar(ตัวแปร); หรือ putchar(‘ตัวอักษร’); putchar() ทำหน้าที่ เหมือน printf() แต่ใช้ได้กับตัวอักษรตัวเดียวเท่านั้น
การรับ-แสดง ข้อมูล string ด้วย gets และ puts รูปแบบ ฟังก์ชัน gets: ใช้รับ string ตัวแปรรับค่าชนิด string = gets(); รูปแบบ ฟังก์ชัน puts: ใช้แสดง string puts(ตัวแปรรับค่าชนิด string); หรือ puts(“ข้อความที่ต้องการแสดง”);
การรับ-แสดง ข้อมูล string ด้วย gets และ puts พิมพ์ชื่อ แล้ว กด Enter