บทความอื่นๆ ในชุดของ C Programming
- [ชีทรวมสรุปการเขียนโปรแกรมภาษา C - First Edition]
- ตอนที่ 1 Intro to C แนะนำภาษาซี
- ตอนที่ 2 Tools โปรแกรมสำหรับการเขียนภาษาซี (1) - IDE
- ตอนที่ 3 Tools โปรแกรมสำหรับการเขียนภาษาซี (2) - คอมไพล์เองด้วย cmd
- ตอนที่ 4 Variable (1) - ตัวแปรคืออะไร และ การคำนวณในภาษา C ทำยังไง
- ตอนที่ 5 Output แสดงผลลัพธ์ด้วย printf ในภาษาซี
- ตอนที่ 6 Variable (2) - ชนิดของตัวแปรประเภทต่างๆ
- ตอนที่ 7 Input - การรับค่าจากผู้ใช้เข้ามาในโปรแกรม
- ตอนที่ 8 Expression - การสร้างสมการเพื่อคำนวณค่าคำตอบออกมา
หลักการเขียนโปรแกรมที่เราเคยพูดถึงในบท อัลกอริทึมในมุมมองของคอมพิวเตอร์ ประกอบด้วย 3 ขั้นตอนคือ
Input → Process → Output
ในบทที่แล้วเราพูดถึงวิธีการสร้างตัวแปรเพื่อเก็บค่า และทำการคิดเลขง่ายๆ กันไปแล้ว ที่ขาดไปของโปรแกรมเราก็คือการแสดงผลคำตอบออกมา ขั้นแรกมาดูส่วนที่ง่ายที่สุดกันก่อนกับการแสดงผล
การแสดงผล Output
การแสดงผลออกมาในภาษาซีมีหลายวิธีมากๆ แต่วิธีแบบมาตราฐานที่สุดเราจะทำด้วยการใช้คำสั่ง printf()
แบบที่เคยพูดถึงไปครั้งนึงในบทแรกแล้ว
การใช้งานคำสั่ง printf()
นั้นจะทำทำการโหลดชุดคำสั่งที่เก็บอยู่ใน library ที่ชื่อว่า stdio.h (standard input-output) เข้ามาด้วยคำสั่ง #include
แบบนี้
#include<stdio.h> int main() { printf("hello TAMEMO"); return 0; }
ถ้าเรามีการเรียกใช้คำสั่ง printf()
แต่ลืม include ตอนคอมไพล์มันจะแจ้งว่า undefined function "printf" หรือก็คือมันไม่รู้จัก printf นั่นเอง
สิ่งที่ต้องอย่าลืมอีกอย่างเกี่ยวกับการใช้ printf()
คือ value ที่จะส่งไปปริ๊นจะต้องอยู่ในรูปแบบของ string (แปลว่า สายอักขระ = ประโยค นั่นเอง) แล้ววิธีที่จำบอกว่าสิ่งที่เราพิมพ์ไปเป็น string เราจะใช้สัญลักษณ์ "
ที่เรียกว่า double-quote (เครื่องหมายคำพูดแบบ 2 ขีด, ถ้าเป็น '
จะเรียกว่า single-quote)
เช่น
printf("hello TAMEMO") //แบบนี้ได้ โปรแกรมจะทำการปริ๊นคำว่า hello TAMEMO ออกมาทางหน้าจอ printf(hello TAMEMO) //แบบนี้ไม่ได้ จะคอมไพล์ไม่ผ่านเพราะถือว่าเขียนผิดรูปแบบ printf('hello TAMEMO') //แบบนี้ก็ไม่ได้ เพราะ string ต้องใช้ " เท่านั้น
สำหรับใครที่ใช้งาน IDE เวลาจะรันโปรแกรมส่วนใหญ่จะมีปุ่ม "Compile & Run" อยู่ (ส่วนใครใช้โปรแกรมอะไร ก็หาปุ่มนี้เอาเองนะ ในตัวอย่างนี้จะยกตัวอย่างเป็น Dev-C ที่มีคนใช้งานค่อนข้างเยอะ)
สำหรับ Dev-C ปุ่ม "Compile & Run" จะอยู่ใน toolbar ด้านบน หลังจากกดแล้ว (ถ้าไม่พิมพ์อะไรผิดนะ ฮา) IDE จะแสดง status ว่ากำลังทำการคอมไพล์อยู่ที่ด้านล่าง หลังจากนั้นจะรันผลลัพธ์ของโปรแกรมออกมาในหน้า console
สำหรับบางโปรแกรมหลังผลลัพทธ์ของเราแล้ว อาจจะมีการแสดงผล stat อะไรบางอย่างต่อให้ด้วย เช่น Dev-C มันจะแสดงเวลารวมที่ใช้มรการรันออกมาให้
ส่วนถ้าใช้งานแบบ cmd ก็จะเริ่มจากการสั่ง compile ด้วยคำสั่ง gcc
แล้วก็ต้องรันโปรแกรม (รันเองด้วยนะ) จากนั้นโปรแกรมก็จะแสดงผลลัพธ์ออกมาตรงนั้นเลย
newline การขึ้นบรรทัดใหม่และอักษรพิเศษ
ถ้าใครลองพิมพ์โค้ดและสั่งคอมไพล์เองแล้ว อาจจะพบปัญหาบางอย่าง เช่นถ้าเราต้องการสั่งให้โปรแกรมขึ้นบรรทัดใหม่ เราจะทำยังไง
ลองแบบนี้ดูจะเวิร์กมั้ย
#include<stdio.h> int main() { printf("this is a book"); printf("and a pen"); return 0; }
โดยเราก็คาดหวังว่าจะเห็นผลลัพธ์ออกมาแบบนี้
this is a book
and a pen
แต่ถ้าเราลองรันดูจริงๆ เราจะพบว่ามันจะออกมาเป็น..
this is a bookand a pen
นั่นเพราะว่าการขึ้นบรรทัดใหม่ในโค้ดโปรแกรม ไม่ได้เป็นการบอกว่าผลลัพธ์จะขึ้นบรรทัดใหม่ตามไงล่ะ งั้นถ้าลองแบบนี้ล่ะ..
#include<stdio.h> int main() { printf("this is a book and a pen"); return 0; }
ถ้าไม่ยอมขึ้นให้ ก็กด enter เองซะเลยเป็นไง!
แบบนี้ถ้ากดคอมไพล์ปุ๊บ ผลที่ได้คือหนักกว่าเดิม เพราะมันจะคอมไพล์ไม่ผ่าน!!
นั่นเพราะว่าในภาษาซี (และภาษาส่วนใหญ่ด้วย) การเขียน string นั้นจะต้องจบอยู่ในบรรทัดเดียวเท่านั้น ส่วนการขึ้นบรรทัดใหญ่จะต้องใช้อักษรพิเศษคือตัว \n
(back-slash ตามด้วยตัว n) ตัวอักษรนี้ถือว่าเป็นตัวอักษร 1 ตัวแม้ว่าจะเขียนด้วย \ และ n ถึง 2 ตัวก็ตามนะ เช่น
printf("this is a book\n"); printf("and a pen"); //หรือแบบนี้ก็ได้ printf("this is a book\nand a pen");
ผลลัพธ์ก็จะออกมาเป็นแบบนี้
this is a book
and a pen
นั่นคือโปรแกรมจะทำการขึ้นบรรทัดใหม่ในทุกที่เราวาง \n
ลงไปนั่นเอง ไม่จำเป็นต้องวางไว้หลังสุด จะวางตรงไหน และวางกี่ตัวก็ได้ตามใจเลย
Back-Slash Character
เป็นตัวอักษรพิเศษที่ไม่สามารถพิมพ์แบบปกติได้ เช่น enter สำหรับขึ้นบรรทัดใหม่ หรือการพิมพ์ \ ตัวเดียวก็ไม่ได้ (เนื่องจาก \ จะเป็นเพื่อเป็นการบอกว่าต่อไปจะเป็นอักษรพิเศษนะ)
\n - ขึ้นบรรทัดใหม่ \" - แสดง " (double-quote) \t - แท็บ (4หรือ8ช่อง แล้วแต่เครื่อง) \\ - แสดง \ (เพราะพิมพ์ \ ธรรมดาแปลว่าเป็น Format code )
เช่น
printf("my name is "Ta" na"); //แบบนี้ไม่ได้ เพราะโปรแกรมจะงงคู่ของ " ตัวข้างนอก printf("my name is \"Ta\" na"); //ต้องใช้แบบนี้แทน
my name is "Ta"
printf กับ variable
ที่ผ่านมาเราแสดงผลโดยใช้ value ที่เป็นแบบ static (หมายถึงค่าแบบตายตัว เปลี่ยนแปลงไม่ได้) ต่อไปเราจะมาทำงานกับ variable กันบ้าง
ในกรณีที่เรามีค่าเก็บไว้ในตัวแปร แล้วอยากแสดงผลออกมา เราก็ต้องใช้คำสั่ง printf()
นี่แหละ แต่รูปแบบจะต่างออกไป
เช่น
int x = 1; printf("x is x");
สั่งแบบนี้ไม่ได้แน่นอน เพราะคอมพิวเตอร์จะไม่รู้ว่า x ที่เราพิมพ์ไป ตัวไหนที่เป็น string ตัวไหนเป็น variable
และถ้าเรากดรัน แม้ว่าจะไม่เกิด error แต่ก็จะได้ผลออกมาแบบนี้
x is x
สำหรับภาษาซี เราจะต้องใช้สัญลักษณ์ %
เป็นการบอกตำแหน่งของตัวแปร แบบนี้
int x = 1; printf("x is %d");
เนื่องจาก x เป็นไทป์แบบ int เราจะใช้ %d ในการบอกว่าตรงนี้เป็นตำแหน่งของตัวแปร (สำหรับไทป์อื่นๆ เดี๋ยวจะพูดถึงต่อไป)
แต่ในกรณีนี้ ถ้าเกิดมีตัวแปรหลายตัวในโปรแกรม คอมพิวเตอร์ก็คงเดาไม่ออกอีกนั่นแหละ ว่าตำแหน่ง %d
ที่เราใส่ลงไปคือตัวแปรตัวไหน ดังนั้นเราจะต้องบอกด้วยว่าเราจะแสดงผลตัวแปรอะไร
แบบนี้..
int x = 1; printf("x is %d", x);
ก็จะได้ผลแบบนี้ออกมา
x is 1
ส่วนในกรณีที่มีตัวแปรหลายตัว เราจะต้องวางตัวแปรตามลำดับ เช่น
int a, b, sum; a = 1; b = 2; sum = a + b; printf("%d plus %d equals to %d", a, b, sum);
1 plus 2 equals to 3
ลำดับการแสดงค่าตัวแปรทั้งหมด จะเรียงตามลำดับตัวแปรที่ใส่ลงไป
ส่วนเรื่องที่ทำไมต้องเป็น %d
แล้วมี % อย่างอื่นอีกมั้ย เดี๋ยวเราจะพูดกันต่อในบทต่อไป เพราะเราต้องรู้จักกับ Variable Type หรือชนิดของตัวแปรกันซะก่อนนะ