Output แสดงผลลัพธ์ด้วย printf ในภาษาซี

รับสอนการเขียนโปรแกรม และ วิชาวิทยาการคอมพิวเตอร์อื่นๆ ดูรายละเอียดได้ที่นี่

หลักการเขียนโปรแกรมที่เราเคยพูดถึงในบท อัลกอริทึมในมุมมองของคอมพิวเตอร์ ประกอบด้วย 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 หรือชนิดของตัวแปรกันซะก่อนนะ

 

17254 Total Views 9 Views Today
Ta

Ta

สิ่งมีชีวิตตัวอ้วนๆ กลมๆ เคลื่อนที่ไปไหนโดยการกลิ้ง .. ถนัดการดำรงชีวิตโดยไม่โดนแสงแดด
ปัจจุบันเป็น Senior Software Engineer อยู่ที่ Centrillion Technology
งานอดิเรกคือ เขียนโปรแกรม อ่านหนังสือ เขียนบทความ วาดรูป และ เล่นแบดมินตัน

You may also like...

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *