:
Comment
บางครั้ง เราอาจต้องการเขียนข้อความอธิบายการทำงาน หรือคำสั่งต่างๆ (Statement) ของโปรแกรม
เพื่อให้คนอื่นหรือแม้แต่ตัวเราเองซึ่งมาอ่านในภายหลัง สามารถเข้าใจได้ง่ายและรวดเร็วขึ้น
โดยข้อความเหล่านี้ เราไม่ต้องการให้คอมพิวเตอร์ประมวลผล จะทำอย่างไร ?
ตัวอย่าง Comment

#include <stdio.h>

int main(){
       // This is a comment and will not be shown in output.
       printf( "This isn\'t a comment" ); // This is a single line comment.
       /*
       This is a multiple line comment.
       Comment #1
       Comment #2
       */
}

ผลลัพธ์
This isn't a comment


เราเรียก ข้อความที่ไม่ต้องการให้คอมพิวเตอร์ประมวลผลนี้ว่า
คอมเม้นท์ (Comment) มีอยู่สองแบบ

1. คอมเม้นท์แบบบรรทัดเดียวจบ (Single line comment)
ข้อความที่ตามหลังเครื่องหมาย // ในบรรทัดนั้นทั้งบรรทัด จะไม่ถูกประมวลผล คอมพิวเตอร์จะเริ่มประมวลผลโค๊ดใหม่ในบรรทัดถัดไป

2. คอมเม้นท์แบบหลายบรรทัด (Multiple line comment)
เริ่มต้นด้วยเครื่องหมาย /* และจบด้วยเครื่องหมาย */
ข้อความที่อยู่ระหว่างเครื่องหมายทั้งสองนี้ จะถือว่าเป็น Comment ทั้งหมด

----------------------------------------------------------------
----------------------------------------------------------------

จงแก้ Error โค้ด ต่อไปนี้ ด้วยการคอมเม้นต์ ทั้งแบบบรรทัดเดียว และแบบหลายบรรทัด ลงในโค๊ดเริ่มต้นที่กำหนดให้โดยต้องไม่ไปเปลี่ยนแปลงผลลัพธ์ของโค๊ด

#include <stdio.h>
int main(){
       printf(" Let\'s comment this program in both types. ");
       printf( "This isn\'t a comment." ); // this is a single line comment
       This is a multiple line comment.
       Comment #1
       Comment #2 getchar();
}

ผลลัพธ์
Let's comment this program in both types.
This isn't a comment.

* หมายเหตุ ผลลัพธ์ ไม่สำคัญ ต้องการ ตรวจการ คอมเม้นต์ ในโค้ด หรือสามารถแก้ error code ได้

---------------------------------------------------------------------------------
Text Formatting 1

คำสั่ง printf() นอกจากจะใช้แสดงผลข้อความธรรมดาๆ แล้ว ยังสามารถจัดรูปแบบให้กับข้อความได้อีกด้วย
ซึ่งชื่อเต็มๆ ของ printf ก็คือ print formatted นั่นเอง

ตัวอย่าง Print Formated

#include <stdio.h>
       int main(){
       printf("2 + 2 = %d", 4);
       printf("%d + %d = %d", 2, 3, 5);
}

ผลลัพธ์ 
2 + 2 = 4
2 + 3 = 5


อาร์กิวเมนต์ (Argument) ของคำสั่งใดๆ คือสิ่งที่อยู่ระหว่าง ( และ ) ของคำสั่งนั้นๆโดยอาร์กิวเมนต์อาจมีได้มากกว่าหนึ่งตัว ใช้ , (Comma) คั่นระหว่างอาร์กิวเมนต์แต่ละตัว
คำสั่ง printf() ที่ผ่านๆมาในบทก่อนหน้า มีเพียงอาร์กิวเมนต์เดียว นั่นคือข้อความที่ต้องการแสดงผลนั่นเอง
แต่คำสั่ง printf() ในตัวอย่างด้านบน มีึหลายอาร์กิวเมนต์ เราจะมาทำความเข้าใจความหมายของมันกัน

ถ้าสังเกตดีๆจะเห็นว่า ข้อความในคำสั่ง printf ด้านบน "2 + 2 = " แสดงผลออกมาตามปกติ
มีเพียง %d เท่านั้น ที่ถูกเปลี่ยนไปเป็น 4 แทน ใ่ช่แล้วครับ คำสั่ง printf จะนำอาร์กิวเมนต์ด้านหลัง
มาแทนที่ %d ในอาร์กิวเมนต์แรกตามลำดับ ทั้งนี้ ต้องใช้ให้ถูกประเภทด้วย ซึ่ง %d ใช้สำหรับ
เลขจำนวนเต็ม (Integer) ฐานสิบ หากเป็นเลขทศนิยมหรือเลขจำนวนจริง (Floating number)
ต้องใช้ %f แทน ซึ่งประเภทต่างๆ ดูได้ตามตารางข้างล่างนี้
CodeFormatExample
%cตัวอักษร หรือ อักขระ 1 ตัวa
%dเลขจำนวนเต็มฐานสิบ475
%eสัญกรทางวิทยาศาสตร์ (scientific notation) ใช้ตัว e4.7523e+2
%Eสัญกรทางวิทยาศาสตร์ (scientific notation) ใช้ตัว E4.7523E+2
%fเลขทศนิยม หรือจำนวนจริง475.23
%gเป็น %e หรือ %f ตามความเหมาะสม475.23
%Gเป็น %E หรือ %f ตามความเหมาะสม475.23
%oเลขจำนวนเต็มฐานแปด653
%xเลขจำนวนเต็มฐานสิบหก ใช้ตัวอักษรตัวเล็ก1ab
%Xเลขจำนวนเต็มฐานสิบหก ใช้ตัวอักษรตัวใหญ่1AB
%sข้อความ หรือสายอักขระ (ตัวอักษรหลายตัวเรียงต่อกัน)ABCD
%uเลขจำนวนเต็มบวก และศูนย์ (Unsigned integer)385
%%เครื่องหมาย '%'

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

----------------------------------------------------------------
----------------------------------------------------------------

จงแก้โค้ดให้ได้ผลลัพธ์ ตามที่ต้องการ และสั่งให้มีการขึ้นบรรทัดใหม่ในบรรทัดที่ 2

#include <stdio.h>
int main(){
     printf("20 + 11 = %d", 20+12);
     printf("%d + %c = %d", 12, 23, 35);
}

ผลลัพธ์
20 + 12 = 32
12 + 23 = 35
--------------------------------------------------------------------------

Text Formatting #2

การจัดรูปแบบข้อความ

#include <stdio.h>
int main(){
       printf ("Characters: %c\n", 'a');
       printf ("Decimals: %d %f\n", 1977, 650000);
       printf ("Preceding with blanks: %7d \n", 1977);
       printf ("Preceding with zeros: %07d \n", 1977);
       printf ("Base number: %d %x %o\n", 427, 427, 427);
       printf ("%s \n", "123 in this text is a String not a number");
}

ผลลัพธ์
Characters: a
Decimals: 1977 650000
Preceding with blanks:      1977
Preceding with zeros:  0001977
Base number: 427 1ab 653
123 in this text is a String not a number

ข้อควรจำ
ตัวอักษร หรืออักขระ 1 ตัว (Character) ในภาษา C เราจะใช้เครื่องหมาย ' (Single qoute) คร่อม
ชุดตัวอักษร หรือสายอักขระ (String) ในภาษา C เราจะใช้เครื่องหมาย " (Double qoute) คร่อม
ตัวเลข สามารถใช้ได้เลย ไม่ต้องมีตัวคร่อม

เพิ่มเติม
%7d หมายความว่า แสดงเลขฐานสิบโดยมีความกว้างอย่างน้อย 7 ตัวอักษร
หากเลขนั้นมีจำนวนหลักน้อยกว่า 7 หลัก โปรแกรมจะใส่ช่องว่างด้านหน้าเลขนั้นจนครบ 7 ตัว
%07d หมายความว่า แสดงเลขฐานสิบโดยมีจำนวนหลักอย่างน้อย 7 หลัก
หากเลขนั้นมีจำนวนหลักน้อยกว่า 7 หลัก โปรแกรมจะใส่เลขศูนย์ด้านหน้าเลขนั้นจบครบ 7 หลัก
%+d หมายความว่า ปกติแล้วเลขจำนวนบวกจะไม่มีเครื่องหมายนำหน้า ใช้โค๊ดนี้เพื่อสั่งให้แสดง
%.2f หมายความว่า แสดงเลขจำนวนจริง โดยแสดงตำแหน่งทศนิยมเพียง 2 หลัก

หลักการด้านบน สามารถใช้พร้อมกันได้ด้วย เ่ช่น %07.3f %+3d เป็นต้น

ทดลองใช้สิ่งต่างๆเกี่ยวกับ Text Formatting ของคำสั่ง printf() ให้คล่อง
จากโค้ด ได้ทดลองใช้โค๊ดผิดประเภท เช่น ใช้ %d กับ เลขทศนิยม ใช้ %e กับเลขจำนวนเต็ม สังเกตผลว่าเป็นอย่างไร หลังจากนั้น

----------------------------------------------------------------
----------------------------------------------------------------

จงแก้โค๊ดโปรแกรมด้านล่างให้แสดงผลดังผลลัพธ์ถูกต้อง

#include <stdio.h>
#include <math.h>
int main() {
       // type your code here
       printf("%e\n", 1668);
       printf("%d\n", 1668.258);
       printf("%c\n", 1668.258);
       printf("%.3f\n", "1668.258");
       printf("%d\n", 422);
       printf("%d\n", 422);
       printf("%d\n", M_PI); // ค่าคงที่ M_PI = 3.141593...
       printf("%s\n", "I\'m eager to go to the next page");
}

หมายเหตุ: ขอให้แก้เฉพาะในส่วน Print formate เท่านั้น (นั่นหมายถึงแก้พวก % ชนิดต่างๆ ให้ถูกต้อง)

ผลลัพธ์
1668
1668.26
1668.258
1668.258
+422
0422
3.14
I'm eager to go to the next lesson.

---------------------------------------------------------------------------------------------------
ภาษาซีได้เตรียมฟังก์ชันมาตรฐานที่ใช้ในการรับข้อมูลให้กับผู้พัฒนาโปรแกรมหลาย
ฟังก์ชัน ต่อไปนี้จะกล่าวถึงเฉพาะฟังก์ชันในการรับข้อมูล คือฟังก์ชัน scanf( )  ในส่วนของการใช้งานพื้นฐาน ซึ่งก่อนจะใช้งานฟังก์ชันดังกล่าวที่ส่วนหัวของ
โปรแกรมจะต้องมีคำสั่ง

#include <stdio.h>

การรับข้อมูล
ฟังก์ชันที่ใช้ในการรับข้อมูลมีรูปแบบของการใช้งานคือ

scanf(รูปแบบ,อากิวเมนต์1,อากิวเมนต์2,...);

ในการรับข้อมูลผู้เขียนโปรแกรมจะต้องกำหนดรูปแบบของข้อมูลที่ต้องการรับซึ่งสอดคล้องกับชนิดของ
ข้อมูลที่ต้องการรับเข้า โดยที่ผู้ใช้ต้องส่งตำแหน่ง (หรือแอดเดรสในหน่วยความจำ - Address) ของตัวแปรที่
ต้องการรับเข้าไปยังฟังก์ชัน โดยระบุในตำแหน่งนึ่งของอาร์กิวเมนต์ 

ตัวอย่างเช่น ต้องการรับข้อมูลเดือนและปีเป็นจำนวนเต็ม จะต้องใช้คำสั่ง

int month;
scanf( “%d” , &month);

หรือ 

int month, year;
scanf( “%d %d” , &month, &year);

ตัวอย่างการเขียนโปรแกรมการหาพื้นที่สามเหลี่ยม

โจทย์
จงเขียนโปรแกรมคำนวณหาพื้นที่ สามเหลี่ยมทั่วไป โดยให้โปรแกรมมีการรับค่า ฐาน และ สูงจากทาง Keyboard จากนั้นแสดงผลลัพธ์ของพื้นที่ออกทางจอภาพ

 Algorithm
อัลกอริทึมการหาพื้นที่สามเหลี่ยม

เริ่มต้น
รับค่าความยาวของฐานมาเก็บในตัวแปร base
รับค่าความยาวของสูงมาเก็บในตัวแปร height
คำนวณหาพื้นที่  area = 0.5 * base * height
แสดงผลพื้นที่ area
จบ

Flow Chart  
แผนผังการหาพื้นที่สามเหลี่ยม


Pseudo Codes 
Triangle Pseudo Codes

START
READ  base
READ  height
area = 0.5 * base * height
PRINT  area
END

Source Code
//== Program by Mr. Chanyoot Meepoh ==//
#include<stdio.h>
int main(){
   float base,height,area;
   printf("Enter Base: ");
   scanf("%f",&base);
   printf("\nEnter Height: ");
   scanf("%f",&height);
   area=0.5*base*height;
   printf("\n--->Triangle area is %.0f<---\n\n",area);
}

จากตัวอย่างให้นักเรียนทำความเข้าใจการเขียนอัลกอริทึม ผังงาน และซูโดโค้ด และเขียนโปรแกรม 



จงออกแบบการเขียนโปรแกรมด้วย อัลกอริทึม ผังงาน ซูโดโค้ด และเขียนโปรแกรม ภาษาซี จากโจทย์ต่อไปนี้

โจทย์
จงเขียนโปรแกรมคำนวณหาพื้นที่ สี่เหลี่ยมทั่วไป โดยให้โปรแกรมมีการรับค่า ความกว้าง และ ความยาวจากทาง Keyboard จากนั้นแสดงผลลัพธ์ของพื้นที่ออกทางจอภาพ

เงื่อนไขบังคับ
-ต้องมีเครดิตผู้เขียนโปรแกรมโดยใส่เป็น Comment ไว้บริเวณส่วนแรกของโค้ด





Refer: Link