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 แทน ซึ่งประเภทต่างๆ ดูได้ตามตารางข้างล่างนี้
บางครั้ง เราอาจต้องการเขียนข้อความอธิบายการทำงาน หรือคำสั่งต่างๆ (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 แทน ซึ่งประเภทต่างๆ ดูได้ตามตารางข้างล่างนี้
Code | Format | Example |
---|---|---|
%c | ตัวอักษร หรือ อักขระ 1 ตัว | a |
%d | เลขจำนวนเต็มฐานสิบ | 475 |
%e | สัญกรทางวิทยาศาสตร์ (scientific notation) ใช้ตัว e | 4.7523e+2 |
%E | สัญกรทางวิทยาศาสตร์ (scientific notation) ใช้ตัว E | 4.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(){
int main(){
printf("20 + 11 = %d", 20+12);
printf("%d + %c = %d", 12, 23, 35);
}
ผลลัพธ์
printf("%d + %c = %d", 12, 23, 35);
}
ผลลัพธ์
20 + 12 = 32
12 + 23 = 35
--------------------------------------------------------------------------
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 กับเลขจำนวนเต็ม สังเกตผลว่าเป็นอย่างไร หลังจากนั้น
ชุดตัวอักษร หรือสายอักขระ (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
แผนผังการหาพื้นที่สามเหลี่ยม
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