สารสนเทศ10

โครงสร้างภาษาc

คำศัพท์ของภาษา C

โดยปกติแล้วโปรแกรมของผู้เริ่มต้นเป็นโปรแกรมที่เรียกว่า "Hello word" ซึ่งจะแสดงคำว่า "Hello World!" ออกทางจอคอมพิวเตอร์ของคุณ มันเป็นโปรแกรมที่ง่ายที่สุดที่จะแสดงให้นักพัฒนามือใหม่ได้เห็น มาดูว่ามันเป็นอย่างไร
#include <stdio.h>

int main ()
{
    printf ("Hello word!");
    return 0;
}
โปรแกรมนี้เป็นโปรแกรมเพื่อแสดงข้อความอย่างง่าย "Hello word!" ออกทางหน้าจอ เราได้ใช้ฟังก์ชันต่างๆ จากไลบรารี่ stdio.h ของภาษา C ที่สามารถให้เราทำสิ่งต่างๆ ได้ แสดงข้อความออกทางจอภาพหรือรับค่าจากคีย์บอร์ด และคุณจะได้เรียนในบทอื่นต่อไป สำหรับบทเรียนภาษา C นี้
Hello word!
นี่เป็นผลลัพธ์การทำงานของโปรแกรมซึ่งจะแสดงผลข้อความ Hello word! ออกทางหน้าจอ คุณสามารถเปลี่ยนเป็นชื่อของคุณเองแล้วดูผลลัพธ์

ฺBlocks

บล็อค คือสิ่งที่กำหนดขอบเขตและควบคุมการทำงานของโปรแกรม ซึ่งจะใช้เครื่องหมาย {และสิ้นสุดด้วย } ในภาษา C บล็อคนั้นมีหลายรูปแบบ เช่น บล็อคของฟังก์ชัน บล็อคของคำสั่งควบคุม หรือบล็อคย่อยในโปรแกรม และนอกจากนี้บล็อคยังสามารถซ้อนกันได้ นี่เป็นตัวอย่างของบล็อคในภาษา C
#include <stdio.h>

int sum (int a, int b)
{
    return a + b;
}

int main ()
{
    int x = 3, y = 4;

    if (x < y) {
        printf ("%d\n", sum(x, y));
    }

    printf ("Summation program\n", sum(x, y));
    return 0;
}
ในตัวอย่าง เป็นโปรแกรมหาผลรวมของตัวเลขสองจำนวนในภาษา C ในโปรแกรมนั้นประกอบไปด้วย 3 บล็อค คือบล็อคของฟังก์ชัน Main ซึ่งเป็นฟังก์ชันหลักในการทำงานของโปรแกรมซึ่งโปรแกรมจะเริ่มการทำงานที่นี่ บล็อคที่สองเป็นของฟังก์ชัน sum() ซึ่งเป็นฟังก์ชันสำหรับหาผลรวมของตัวเลขที่เรียกโดยฟังก์ชันหลัก และภายในฟังก์ชัน main มีบล็อคคำสั่งเงื่อนไข if เพื่อควบคุมการทำงานของโปรแกรมอยู่ภายใน
#include <stdio.h>
ในภาษา C คำสั่ง #include ใช้สำหรับนำเข้าโค้ดจากไฟล์อื่นเข้ามาใช้งานในโปรแกรม โดยปกติแล้วเราได้นำเข้าชุดไลบรารี่ stdio.h ของภาษา C ซึ่งประกอบไปด้วยฟังก์ชันต่างๆ ที่จำเป็นในการเขียนโปรแกรม เช่น ฟังก์ชันสำหรับแสดงผลออกทางหน้าจอ หรือรับค่าจากคีย์บอร์ด เป็นต้น คุณสามารถสร้างไฟล์ .h ของคุณเองได้เพื่อนำมาใช้ในโปรแกรม

Comment

Comment เป็นส่วนของโค้ดที่ไม่มีผลต่อการทำงานของโปรแกรม มันถูกใช้เพื่ออธิบายโปรแกรมสำหรับมนุษย์เข้าใจ ในภาษา C เราสามารถคอมเม้นท์ได้สองวิธี คือ การคอมเม้นท์แบบหนึ่งบรรทัดและแบบหลายบรรทัด
// Single line comment example
#include <stdio.h>

int main ()
{
    // This is my comment
    printf ("Hello C language");
    return 0;
}
ในตัวอย่างเป็นการคอมเม้นท์แบบหนึ่งบรรทัด เราจะใช้เครื่องหมาย slash สองอัน (//) และตามด้วยสิ่งที่เราต้องการคอมเม้นท์ ในตัวอย่างเราได้สร้างคอมเม้นต์สองอันในโปรแกรม
/* Multiple lines comment example */
#include <stdio.h>

int main ()
{
    /* This is my comment
    This another line comment */
    printf ("Hello C language");
    return 0;
}
คอมเม้นท์อีกแบบหนึ่งคือการคอมเม้นท์หลายบรรทัด มันจะละเว้นทุกอย่างหลังจากการปรากฏครั้งแรกของเครื่องหมาย slash star (/*) และสิ้นสุดที่ star slash (*/)

Semicolon

เซมิโคลอน (Semicolon) (;) เป็นสัญลักษณ์ที่ใช้เพื่อแบ่งแยกคำสั่งภายในโปรแกรม ซึ่งมันหมายถึงการจบคำสั่งนั้นๆ เซมิโคลอนใช้ในภาษาต่างๆ และมันเป็นสิ่งที่บังคับ เพื่อให้ตัวคอมไพเลอร์ของภาษาสามารถแยกแยะคำสั่งในการทำงานได้
int a;
int b = 5; b = 2;
printf ("%d", a+b);
ในตัวอย่างเรามีสี่คำสั่ง บรรทัดแรกเป็นการประกาศตัวแปร บรรทัดที่สองคุณจะเห็นสองคำสังอยู่ในบรรทัดเดียวกันและมันสิ้นสุดด้วยเซมิโคลอน บรรทัดที่สามจะแสดงค่าผลรวมของตัวแปร a และ b

Whitespace

Whitespace คือตัวอักษรหรือเครื่องหมายที่ใช้แบ่งแยกคำสั่งและ Token ในโค้ดของโปรแกรม ในภาษา C นั้น white space จะประกอบไปด้วย การเว้นวรรค Tab และการขึ้นบรรทัดใหม่ Whitespace ที่เรียงต่อกันเป็นจำนวนมากนั้นไม่มีผลต่อการทำงานของโปรแกรมและคอมไพเลอร์ แต่มันช่วยให้โปรแกรมเมอร์สามารถทำโค้ดให้เป็นระเบียบและสามารถอ่านเข้าใจได้ง่ายขึ้นโดยคนอื่นๆ แต่ Whitespace ยังคงต้องใช้ในบางที่ เช่น ระหว่างคำสั่งของภาษา C และชื่อของตัวแปร เป็นต้น
int a = 1;
int b=2;
int c  =  3;
ในตัวอย่าง เป็นการใช้ Whitespace ในรูปแบบต่างๆ ซึ่งถือว่าเป็นรูปแบบการเขียนโปรแกรมของแต่ละคน แต่โดยปกติแล้วเรานิยมใช้ Whitespace ในรูปแบบของการประกาศตัวแปร a

Keywords

keyword เป็นกลุ่มคำที่ถูกสงวนไว้โดยเราไม่สามารถใช้คำเหล่านี้ในการประกาศเป็นชื่อตัวแปร ฟังก์ชัน ซึ่งในโปรแกรมทุกภาษาต่างก็มี keyword
นี่เป็น keyword มาตราฐานในภาษา C
autobreakcasechar
constcontinuedefaultdo
doubleelseenumextern
floatforgotoif
intlongregisterreturn
shortsignedsizeofstatic
structswitchtypedefunion
unsignedvoidvolatilewhile
keyword เหล่านี้มีหน้าที่การทำงานที่แน่นอนซึ่งขึ้นกับวัตุประสงค์ของมัน int, short, float, double ใช้เพื่อประกาศตัวแปร ในขณะที่ if for while เป็นคำสังในการควบคุมการทำงานของโปรแกรม
ในบทนี้ เราได้พูดถึงเกี่ยวกับคำศัพท์ในภาษา C และโครงสร้างพื้นฐานของภาษาที่เราจะได้นำไปใช้ในบทต่อๆ ไปในภาษา C ตัวแปรเป็นสถานที่สำหรับเก็บข้อมูลในหน่วยความจำ โดยมีชื่อของตัวแปรเพื่อใช้อ้างถึงข้อมูล (identifier) ตัวแปรถูกใช้เพื่อเก็บค่า เราสามารถสร้างตัวแปรได้เป็นจำนวนมากโดยมีชื่อที่แตกต่างกัน รูปแบบของการประกาศตัวแปรในภาษา C คือ:
type identifier;
type identifier = value;
type เป็นประเภทของข้อมูลที่จะเก็บในตัวแปร identifier เป็นที่รู้จักกันในในชื่อของตัวแปร เราใช้ชื่อนี้เพื่ออ้างถึงค่าที่ตัวแปรนั้นเก็บอยู่ values เป็นทางเลือกที่คุณสามารถกำหนดค่าให้กับตัวแปรเมื่อมันถูกสร้าง หรือกำหนดในภายหลังได้ มาดูตัวอย่าง
int a;
float b;
char c = 'A';
ในตัวอย่างเรามีตัวแปร 3 ตัว ตัวแรกประเภทของมันคือ int และมีชื่อว่า a มันใช้เพื่อเก็บค่าเลขจำนวนเต็ม (integer) และเรายังไม่ได้กำหนดค่าใดๆ ให้มัน ดังนั้นค่าเริ่มต้นของตัวแปรเมื่อถูกสร้างขึ้นจะเป็น NULL ตัวแปรที่สองมีประเภทเป็น float ตัวแปรนี้จะถูกใช้เพื่อเก็บค่าของจำนวนจริง และตัวแปรที่สามมีประเภทเป็น char มันถูกใช้เพื่อเก็บสัญลักษณ์หนึ่งตัวใน ASCII code และเรากำหนด 'A' เป็นค่าเริ่มต้นให้กับมัน

ประเภทข้อมูล

ในภาษา C มีประเภทข้อมูลชนิดต่างๆ ที่ให้เราสามารถใช้เพื่อชนิดการกับข้อมูลต่างประเภทกัน เช่น boolean, number, character, object เป็นต้น
ตารางข้างล่างนี้แสดงประเภทข้อมูลทั้งหมดในภาษา C
Data typeSizeValue
char1 byte-128 to 127
unsigned char1 byte0 to 255
signed char1 byte-128 to 127
int4 byte-2,147,483,648 to 2,147,483,647
unsigned int4 byte0 to 4,294,967,295
short2 byte-32,768 to 32,767
unsigned short2 byte0 to 65,535
long4 byte-2,147,483,648 to 2,147,483,647
unsigned long4 byte0 to 4,294,967,295
float4 byte1.2E-38 to 3.4E+38
double8 byte2.3E-308 to 1.7E+308
long double10 byte3.4E-4932 to 1.1E+4932
bool1 bit0 to 1

การประกาศตัวแปร

ตอนนี้เราจะมาเรียนวิธีการประกาศและกำหนดค่าเริ่มต้นให้กับตัวแปรกับตัวอย่างง่ายๆ
#include <stdio.h>

int main () {
    int a = 5;
    int b;
    b = 10;
    int c = a + b;
    printf("Value of c is %d", c);
    return 0;
}
ในตัวอย่าง เราได้สร้างตัวแปรสามตัวคือ a, b และ c ที่มีชนิดข้อมูลเป็น int และเรารวมค่าของ a และ b แล้วเก็บไว้ในตัวแปร c ข้างล่างนี้เป็นผลลัพธ์ของโปรแกรม
Value of c is 15
อย่างไรก็ตาม คุณสามารถประกาศชนิดข้อมูลอื่นได้ ซึ่งมันไม่อยากเกินไป มาดูตัวอย่างเพิ่มเติม
#include <stdio.h>

int main () {
    float PI = 3.14;
    int r;
    scanf("Enter circle radius %d", &r);
    double result = 2*PI*r;
    printf("Area is %f", result );
    return 0;
}
ในตัวอย่าง แสดงให้คุณเห็นการใช้ตัวแปรประเภทต่างๆ ในภาษา C นั้นมีข้อมูลประเภทต่างๆ ที่ให้เราสามารถจัดการกับข้อมูลที่แตกต่างกันออกไป เช่น ตัวเลขจำนวนเต็ม ตัวเลขจำนวนจริง หรือข้อมูลแบบตัวอักษร ซึ่งข้อมูลแต่ละประเภทมีรูปแบบการใช้งานและขนาดของข้อมูลที่แตกต่างกัน ดังแสดงในตารางก่อนหน้า ต่อไปเราจะอธิบายและแสดงตัวอย่างของการใช้ข้อมูลประเภทต่างๆ ในภาษา C สำหรับเขียนโปรแกรม

Boolean

Boolean เป็นประเภทข้อมูลที่มีได้เพียงสองค่าคือจริง (true) และเท็จ (false) ซึ่งเป็นประเภทของตัวแปรสำหรับเก็บค่าที่เป็นไปได้เพียงสองค่า เช่น กลางวันและกลางคืน สีขาวและสีดำ ร้อนและหนาว เป็นต้น ข้อมูลประเภทนี้มักจะใช้สำหรับสร้าง Expression สำหรับเงื่อนไขการทำงานของโปรแกรม ในภาษา C ค่าของ boolean นั้นใช้ 1 หรือ true สำหรับค่าที่เป็นจริงและ 0 หรือ false สำหรับค่าที่เป็นเท็จ มาดูตัวอย่างการใช้งาน
#include <stdio.h>
#include <stdbool.h>

int main ()
{
    bool male = 1;
    bool open = 0;

    if (male) {
        printf("This is the boy.\n");
    }
    else {
        printf("This is the girl.\n");
    }

    if(open) {
        printf("The door is open.\n");
    }
    else {
        printf("The door is not open.\n");
    }

    return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวแปรประเภท Boolean ในภาษา C ในตัวแปร male เราได้กำหนดตัวแปรให้หมายถึงเพศ ถ้าในตัวแปรนั้นมีค่าเป็นจริงจะหมายถึงเป็นผู้ชาย และถ้ามีค่าเป็นเท็จจะหมายถึงเป็นผู้หญิง และตัวแปร open ใช้สำหรับเก็บสถานะการเปิดและปิดของประตู เมื่อตัวแปรมีค่าเป็นจริงจะหมายถึงประตูถูกเปิดอยู่ และเมื่อค่าในตัวแปรเป็นเท็จก็หมายความว่าประตูนั้นไม่ได้เปิด
This is the boy.
The door is not open.
ในคอมไพเลอร์ของภาษา C ในปัจจุบันนั้น ข้อมูลประเภท bool นั้นถูกนำออกแล้ว ดังนั้นเพื่อใช้ข้อมูลประเภทนี้ เราต้องทำเข้าไลบรารี่จาก stdbool.h สำหรับการใช้งาน และคอมไพลเลอร์ของคุณสนับสนุนเวอร์ชัน C99 ด้วย อย่างไรก็ตามมีหลายวิธีที่จะ implement ข้อมูลประเภท bool ถ้าหากคุณใช้บ่อยๆ ในโปรแกรม หรือสามารถใช้ข้อมูลประเภท Integer แทนได้

Char ตัวอักษร

Char เป็นประเภทข้อมูลที่ใช้สำหรับเก็บตัวอักษรจำนวนหนึ่งตัวอักษรใน ASCII ภาษา C นั้นยังไม่ได้สนับสนุนการเก็บข้อมูลแบบ String แต่คุณสามารถทำแบบนั้นได้ โดยการใช้ char array เพื่อเก็บตัวอักษรที่ต่อกันหลายตัว มาดูตัวอย่างการใช้งานตัวแปรประเภท char ในภาษา C
#include <stdio.h>

int main ()
{
    char n = 'A';
    printf("%c\n", n);
    printf("%d\n", n);

    char *name = "marcuscode";
    printf("%s", name);

    char extension[] = ".com";
    printf("%s", extension);

    return 0;
}
ในตัวอย่าง เป็นการประกาศตัวแปรประเภท char โดยการเก็บตัวอักษร A ตัวอักษรทุกตัวนั้นมีรหัส ASCII ของมันในฐาน 10 ในภาษา C นั้นข้อมูลประเภท Char และ Integer สามารถแปลงค่าได้โดยวิธี implicit และ Explicit type casting ยกตัวอย่างเช่น เมื่อเราต้องการค่าที่หมายถึง A และสามารถใช้ 65 แทนได้ดังตัวอย่างข้างล่าง
char a = 65; // A
int b = 'A'; // 65
เราสามารถเก็บตัวอักษรที่มากกว่าหนึ่งตัวอักษรได้ โดยเราเรียกว่าอาเรย์ หรือ Array of char ซึ่งสามารถสร้างได้ทั้งในรูปแบบของอาเรย์ปกติและพอยน์เตอร์ นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการใช้งานข้อมูลประเภท Char และ Char อาเรย์
A
65
marcuscode.com

Integer ตัวเลขจำนวนเต็ม

Integer เป็นประเภทข้อมูลแบบจำนวนเต็ม ซึ่งข้อมูลแบบ Integer นั้นจะประกอบไปด้วยหลายขนาด เช่น short int และ long ซึ่งจะเก็บข้อมูลในระยะที่แตกต่างกัน เรามักจะใช้ตัวแปรประเภท Integer สำหรับเก็บข้อมูลที่นับได้ เช่น จำนวนของผลไม้ในตระกร้า จำนวนของคนในห้อง จำนวนของรถที่วิ่งบนท้องถนน เป็นต้น มาดูตัวอย่างการใช้งานตัวแปรประเภท Integer ในภาษา C
#include <stdio.h>

int main ()
{
    int apple = 3;
    int orange = 2;
    int total = apple + orange;

    printf("%d apples and %d oranges\n", apple, orange);
    printf("I have %d fruits in total", total);

    return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวแปรประเภท Integer สำหรับเก็บจำนวนของผลไม้แต่ละชนิด และหาผลรวมของผลไม้ทั้งสองในตัวแปร total ต่อไปเราจะพูดเกี่ยวกับค่ามากสุดและค่าน้อยสุดของข้อมูลประเภท Integer ในภาษา C ข้างล่างนี้เป็นตัวอย่างของโปรแกรม
#include <stdio.h>
#include <limits.h>

int main ()
{
    printf("Maximum value of int: %d\n", INT_MAX);
    printf("Minimum  value of int: %d\n", INT_MIN);

    int a = INT_MAX;
    printf("%d\n", a);
    a = a + 1;
    printf("%d\n", a);

    return 0;
}
ในตัวอย่าง เป็นโปรแกรมในการแสดงค่ามากสุดและค่าน้อยสุดของข้อมูลประเภท Integer โดยใช้ค่าคงที่ INT_MAX และ INT_MIN ซึ่งเป็นค่าที่กำหนดโดย marco ที่อยู่ในไลบรารี่ limits.hของภาษา C และเราทดสอบการทำงานของโปรแกรมโดยการกำหนดค่ามากสุดให้กับตัวแปร a และเพิ่มค่าของตัวแปรขึ้นไป 1 ผลลัพธ์ที่ได้คือค่าในตัวแปรนั้นเกิด overflow และเป็นที่น้อยที่สุดของ Integer ซึ่งจะได้ผลลัพธ์ตามข้างล่าง
Maximum value of int: 2147483647
Minimum value of int: -2147483648
2147483647
-2147483648

Floating-point numbers ตัวเลขจำนวนจริง

Floating-point number เป็นประเภทข้อมูลสำหรับเก็บตัวเลขจำนวนจริง ในภาษา C จะมีอยู่สองประเภทคือ float และ double สิ่งที่แตกต่างกันคือขนาดของพื้นที่ที่ใช้ในการจัดเก็บ และข้อมูลประเภท double นั้นจะเก็บจำนวนของทศนิยมได้มากกว่า ข้อมูลประเภทนี้จะใช้เก็บข้อมูลที่มีค่าเป็นเศษส่วนหรือตัวเลขที่มีเลขหลังจุดทศนิยม ยกตัวอย่างเช่น ข้อมูลการคำนวณทางวิทยาศาสตร์ เป็นต้น มาดูตัวอย่างการประกาศตัวแปรและใช้งาน
#include <stdio.h>

int main ()
{
    float pi = 3.14f;
    float half = 3 / 2.0f;
    float half2 = 3 / 2;

    printf("Pi: %f\n", pi);
    printf("Half of 3: %f\n", half);
    printf("Half of 3: %f\n", half2);

    double gravity = 9.807;
    double earth_mass = 5.972E24;
    double meter = 1E-3;

    printf("Earth gravity: %lf m/s^2\n", gravity);
    printf("Earth mass: %lf kg\n", earth_mass);
    printf("1 centimeter: %lf meter\n", meter);
    return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวแปรสำหรับเก็บข้อมูลในรูปแบบของทศนิยมทั้งตัวแปรประเภท float และ double ในส่วนแรกเราได้ประกาศตัวแปร float จำนวนสามตัวและกำหนดค่าให้กับตัวแปร ค่าของข้อมูลประเภท float นั้นจะลงท้ายด้วย f หรือ F เสมอ
float half = 3 / 2.0f;
float half2 = 3 / 2;
ต่อมาเป็นการทดสอบการหารตัวเลขในตัวแปร half และ half2 เพื่อให้คุณเข้าใจและเห็นความแตกต่างของสิ่งที่เกิดขึ้น การคูณหรือการหารตัวเลขในภาษา C นั้นจะได้ผลลัพธ์เป็น Integer ถ้าหากตัวเลขทั้งสองตัวนั้นเป็นประเภท Integer เหมือนในตัวแปร half2 ถ้าหากมีตัวแปรอย่างน้อนหนึ่งตัวแปรที่เป็น float หรือ double จะได้ข้อมูลเป็น float หรือ double นี่จึงเป็นสิ่งที่ต้องควรระวังในการเขียนโปรแกรม
double gravity = 9.807;
double earth_mass = 5.972E24;
double meter = 1E-3;
สามตัวแปรต่อมาเป็นการประกาศตัวแปรประเภท double สำหรับตัวแปรทั้งสองประเภทนั้นสามารถประกาศในรูปแบบสัญกรณ์วิทยาศาสตร์ได้ เช่นในตัวอย่างในตัวแปร earth_massเป็นการกำหนดค่าแบบย่อซึ่งมีค่าเท่ากับ 5.972 x 10^24 และในตัวแปร meter นั้นมีค่าเท่ากับ 1 x 10^-3
Pi: 3.140000
Half of 3: 1.500000
Half of 3: 1.000000
Earth gravity: 9.807000 m/s^2
Earth mass: 5972000000000000300000000.000000 kg
1 centimeter: 0.001000 meter
นี่เป็นผลลัพธ์ของโปรแกรมในการทำงานกับประเภทข้อมูลแบบทศนิยมในภาษา C ด้วยตัวแปรแบบ float และ double
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการประกาศและใช้งานตัวแปรในภาษา C และได้รู้จักประเภทข้อมูลชนิดต่างๆ ซึ่งใช้ในการเก็บข้อมูลที่แตกต่างกันในการเขียนโปรแกรม

ตัวดำเนินการตัวดำเนินการจะถูกใช้กับตัวแปรและค่าคงที่ในการดำเนินการบางอย่าง เช่น การดำเนินการทางคณิตศาสตร์ ในภาษา C มีตัวดำเนินการประเภทต่างๆ ที่ทำหน้าที่แตกต่างกันไป ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับตัวดำเนินการและตัวอย่างการใช้ตัวดำเนินการประเภทต่างๆ ในภาษา C

ข้างล่างนี้เป็นรายการของตัวดำเนินการในภาษา C
  • Assignment operator
  • Arithmetic operators
  • Compound assignment
  • Increment and decrement
  • Relational and comparison operators
  • Logical operators
  • Bitwise operators
  • Operator precedence

Assignment operator

ตัวดำเนินการกำหนดค่า ในภาษา C ใช้สัญลักษณ์เท่ากับ = มันถูกใช้เพื่อกำหนดค่าให้กับตัวแปรหรือค่าคงที่ ตัวดำเนินการจะมีสอง operand การทำงานของมันคือการนำค่าทางด้านขวาไปใส่ทางด้านซ้าย และ operand ทางด้านขวาสามารถเป็น expression ใดๆ
a = 2;
b = 3;
c = a + b;
ในตัวอย่างนี้ เราได้สร้างสามตัวแปรและกำหนดค่า 2 ให้กับตัวแปร a 3 ให้กับตัวแปร b และผลรวมของ a และ b ให้กับตัวแปร c ตามลำดับ

Arithmetic operators ( +, -, *, /, % )

ตัวดำเนินการทางคณิตศาสตร์ คือตัวดำเนินการที่ใช้เพื่อกระทำการดำเนินการทางคณิตศาสตร์ระหว่างตัวแปรหรือค่าคงที่ เช่น การบวก การลบ การคูณ และการหาร สำหรับในการเขียนโปรแกรมในภาษา C นั้นจะมีตัวดำเนินการสำหรับการหารเอาเศษ (Modulo) เพิ่มเข้ามา
ตารางข้างล่างนี้คือตัวดำเนินการทางคณิตศาสตร์ในภาษา C
SymbolNameExample
+Additionc = a + b
-Subtractionc = a - b
*Multiplicationc = a * b
/Divisionc = a / b
%Moduloc = a % b
จากในตารางของตัวดำเนินการข้างบน คุณน่าจะคุ้นเคยกับมันมาบ้างแล้วในการเรียนในวิชาคณิตศาสตร์ นอกจากตัวดำเนินการ Modulo ที่เป็นการหารเอาเศษ ต่อไปมาดูตัวอย่างการใช้ตัวดำเนินการทางคณิตศาสตร์ ในการเขียนโปรแกรมในภาษา C
#include <stdio.h>

int main () {
    int a = 5;
    int b = 10;
    printf("a + b = %d\n", a + b);
    printf("a - b = %d\n", a - b);
    printf("a * b = %d\n", a * b);
    printf("a / b = %d\n", a / b);
    printf("a % b = %d\n", a % b);
    return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวดำเนินการประเภทต่างๆ ในภาษา C เราได้ประกาศตัวแปร a และ b และพร้อมกับกำหนดค่าให้กับมันและใช้ตัวดำเนินการต่างๆ ซึ่งคุณคงจะคุ้นเคยดี และในตัวดำเนินการ Modulo นั้นเป็นการหารเอาเศษซึ่งคำตอบที่ได้จะเป็นเศาของการหาร เมื่อรันโปรแกรม มันจะได้ผลลัพธ์ดังนี้
a + b = 15
a - b = -5
a * b = 50
a / b = 0
a % b = 5

Compound assignment (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

Compound assignment คือตัวดำเนินการที่ใช้เพื่ออัพเดทหรือแก้ไขค่าปัจจุบันของตัวแปรโดยการกระทำทางคณิตศาสตร์และใช้ตัวดำเนินการกำหนดค่าร่วมด้วย ซึ่งตัวดำเนินการแบบ Compound assignment มักจะใช้เป็นรูปแบบสั้นของตัวดำเนินการทางคณิตศาสตร์และตัวดำเนินการระดับบิตเพื่อให้การเขียนสั้นลง
ข้างล่างนี้เป็นตารางของ compound assignment operators ในภาษา C
OperatorExampleEquivalent to
+=a += 2;a = a + 2
-=a -= 2;a = a - 2
*=a *= 2;a = a * 2
/=a /= 2;a= a / 2
%=a %= 2;a = a % 2
>>=a >>= 2;a = a >> 2
<<=a <<= 2a = a << 2
&=a & = 2;a = a & 2
^=a ^= 2;a= a ^ 2
|=a |= 2;a = a | 2
มาดูตัวอย่างของการใช้งานของตัวดำเนินการ compound assignment
#include <stdio.h>

int main () {
    int x = 10;
    int y = 2;
    x += 10; //equivalent to x = x + 10
    y -= 2;  //equivalent to y = y - 2
    printf("x = %d, y = %d", x, y);
    return 0;
}
ในตัวอย่าง นั้นเป็นรูปแบบอย่างสั้นในการดำเนินการทางคณิตศาสตร์ของมัน โดยการทำงานของตัวดำเนินการจะอ้างอิงจากค่าเดิม เช่น ในตัวแปร x นั้นเป็นการบวกค่าเข้าไปในตัวแปรเดิมอีก 10 และในตัวแปร y นั้นเป็นการลบค่าออกจากตัวแปรเดิมออก 2 และมันจะได้ผลลัพธ์ดังนี้
x = 20, y = 0

Increment and decrement (++, --)

ตัวดำเนินการเพิ่มและลดค่า คือตัวดำเนินการที่ใช้เพื่อบวกหรือลบค่าออกจากตัวแปรโดย 1 โดยการเพิ่มเครื่องหมาย ++ หรือ-- ใส่ข้างหน้าหรือข้างหลังตัวแปร ซึ่งมีรูปแบบการใช้ดังนี้
identifier++
มาดูตัวอย่างของการใช้ตัวดำเนินการเพิ่มและลดค่า
#include <stdio.h>

int main () {
    int a = 1;
    int b = 10;
    a++;
    b--;
    printf("a=%d, b=%d", a, b);
    return 0;
}
เมื่อเรารันโปรแกรม นี่เป็นผลลัพธ์ที่เราจะได้
a=2, b=9
เหมือนที่คุณเห็นในตัวอย่าง มันเป็นรูปแบบอย่างสั้นของ a = a + 1 และ b = b - 1 มันมักจะใช้กับคำสั่ง for loop เพื่อเพิ่มของการรัน index หรือตำแหน่ง index ของอาเรย์
และยังมีรูปแบบอื่นของตัวดำเนินการนี้คือ prefix เช่น ++a --b โดยมันหมายถึงจะมีการเพิ่มหรือลดค่าก่อนที่จะมีการประมวลผลคำสั่งปัจจุบัน

Relational และ comparison operators ( ==, !=, >, <, >=, <= )

ตัวดำเนินการความสัมพันธ์และเปรียบเทียบ คือตัวดำเนินการที่ถูกใช้เพื่อประเมินค่า true และ false ระหว่างสองตัวถูกดำเนินการ ซึ่งขึ้นกับเงื่อนไขและความสัมพันธ์ของมัน
ข้างล่างนี้เป็นรายการของตัวดำเนินการ relational และตัวดำเนินการเปรียบเทียบ
OperaterExampleResult
==a == btrue if a equal to b, otherwise false
!=a != btrue if a not equal to b, otherwise false
<a < btrue if a less than b, otherwise false
>a > btrue if a greater than b, otherwise false
<=a <= btrue if a less than or equal to b, otherwise false
>=a >= btrue if a greater than or equal to b, otherwise false
ตัวดำเนินการเหล่านี้ถูกใช้ เช่น เพื่อเปรียบเทียบค่าระหว่างตัวแปรว่าเท่ากันหรือไม่ หรือเปรียบการมากกว่าน้อยกว่าหรือค่าในตัวแปร และผลลัพธ์ของการเปรียบเทียบจะเป็น true และ false
#include <stdio.h>

int main () {
    int a = 5;
    int b = 10;

    if (a == b) {
        printf ("a and b are equal");
    } else {
        printf ("a and b are not equal");      
    }

    return 0;
}
ในตัวอย่าง เป็นโปรแกรมในการเปรียบเทียบค่าในตัวแปร a และ b โดยการใช้คำสั่ง if ซึ่งถ้าหากค่าของตัวแปรทั้งสองเท่ากันซึ่งจะทำให้เงื่อนไขเป็นจริง จะทำให้โปรแกรทำงานในบล็อคของคำสั่ง if ไม่เช่นนั้นโปรแกรมจะทำในบล็อคของคำสั่ง else แทน
a and b are not equal
นี่เป็นผลลัพธ์การทำงานของโปรแกรม จะเห็นว่าโปรแกรมทำงานในบล็อคของคำสั่ง else เพราะว่าค่าในตัวแปรทั้งสองนั้นไม่เท่ากัน ให้คุณลองเปลี่ยนค่าในตัวแปรให้เท่ากันแล้วลองรันโปรแกรมอีกครั้งเพื่อดูผลลัพธ์

Logical operators ( !, &&, || )

ตัวดำเนินการทางตรรกศาสตร์ถูกใช้เพื่อประเมิน expression ย่อยหลายๆ expression ให้เหลือเพียงอันเดียว โดยผลลัพธ์สุดท้ายนั้นจะเป็นจริงหรือเท็จ
ข้างล่างนี้เป็นรายการตัวดำเนินการทางตรรกศาสตร์ในภาษา C
NameSymbolExample
not!!a
and&&a && b
or||a || b
ในการทำงานของตัวดำเนินการนั้น ตัวดำเนินการ Not จะกลับค่าของ Boolean expression ตัวดำเนินการ and ทำการเชื่อมสอง expression เข้าด้วยกัน โดยจะได้ผลลัพธ์เป็นจริงหากทั้งสองค่าเป็นจริง ไม่เช่นนั้นจะเป็นเท็จ และตัวดำเนินการ or เชื่อมสอง expression เข้าด้วยกัน โดยจะได้ผลลัพธ์เป็นจริงหากมีอย่างน้อยหนึ่ง expression ที่เป็นจริง ไม่เช่นนั้นจะเป็นเท็จ ต่อไปมาดูตัวอย่างการใช้งานของตัวดำเนินการตรรกศาสตร์
#include <stdio.h>

int main() {
    int a = 10;
    bool b = 1;
    bool c = 0;
    
    // using "not" operator
    if(!(a == 10))
        printf("a is not equal to 10.\n");
    else
        printf("a is equal to 10.\n");

   // using "and" operator
   if(b && c)
        printf("True.\n");
   else
        printf("False.\n");

   // using "or" operator
   if(b || c)
        printf("True.\n");
   else
        printf("False.\n");
    
    return 0;
}
ในตัวอย่างเรามีตัวแปรสามตัว ตัวแปร a เป็น integer ในขณะที่ตัวแปร b และ c เป็น boolean ในภาษา C ค่าของ boolean ที่เป็นจริงนั้นจะมีค่าเป็น 1 และเท็จจะเป็น 0
และนี่คือผลลัพธ์ของโปรแกรม
a is equal to 10.
False.
True.

Bitwise operators ( &, |, ^, ~, <<, >> )

Bitwise operators นั้นถูกใช้ในการดำเนินการระดับบิตของตัวแปรหรือข้อมูล มันมีประโยชน์มากในการเขียนโปรแกรมระดับต่ำ ตัวดำเนินการ Bitwise นั้นใช้หลักการทำงานเหมือนกับตัวดำเนินการทางตรรกศาสตร์ โดยใช้ 1 สำหรับค่าจริงและ 0 สำหรับค่าเท็จ
นี่เป็นรายการของตัวดำเนินการ Bitwise ในภาษา C
SymbolNameDescription
&Bitwise AND1 ถ้าบิตทั้งคู่เป็น 1, ไม่เช่นนั้นเป็น 0
|Bitwise inclusive OR1 ถ้าอย่างน้อยหนึงบิตเป็น 1, ไม่เช่นนั้นเป็น 0
^Bitwise exclusive OR1 ถ้าทั้งสองบิตแตกต่างกัน, ไม่เช่นนั้นเป็น 0
~bit inversionกลับบิตจาก 1 เป็น 0 และในทางตรงข้าม
<<Shift bits leftเลื่อนบิตไปทางซ้าย เติมบิต 0 ทางขวา
>>Shift bits rightเลื่อนบิตไปทางขวา เติมบิต 0 ทางซ้าย
จากตารางข้างบน เป็นตัวดำเนินการประเภทต่างๆ ในภาษา C ที่ใช้ดำเนินการกับข้อมูลในระดับบิต ยกตัวอย่าง เช่น เมื่อเรากำหนดค่าให้กับตัวแปรนั้น คอมพิวเตอร์จะเก็บข้อมูลในรูปแบบของเลขฐานสอง (binary) ตัวดำเนินการเหล่านี้ใช้สำหรับจัดการกับข้อมูลดังกล่าว มาดูตัวอย่างการใช้งานในภาษา C
#include <stdio.h>

int main () {
    int a = 2; // 00000010
    int b = 5; // 00000101
    printf("a & b = %d\n", a & b);    // 00000000 = 0
    printf("a & b = %d\n", a | b);    // 00000111 = 7
    printf("~a = %d\n", ~a);          // 11111101 = -1
    printf("a >> 1 = %d\n", a >> 1);  // 00000001 = 1
    printf("a << 1 = %d\n", a << 1);  // 00000100 = 8
    return 0;
}
ในตัวอย่าง เป็นโปรแกรมในการใช้งานตัวดำเนินการระดับบิตกับการจัดการข้อมูลประเภท Integer เราได้ประกาศตัวแปร a และ b และได้คอมเมนต์ค่าของ binary ที่ถูกเก็บไว้ในหน่วยความจำ การทำงานของตัวดำเนินการ & และ | นั้นทำงานกับคู่ของแต่ละบิตของตัวแปรทั้งสอง ส่วนอีกสามตัวดำเนินการที่เหลือนั้นกระทำกับตัวแปรเดียว ในตัวดำเนินการ ~ นั้นเป็นการกลับบิต และสำหรับตัวดำเนินการ bit shift นั้นเมื่อเลื่อนบิตไปทางซ้ายจะทำให้ค่าเพิ่มขึ้นสองเท่า และเมื่อเลื่อนบิตไปทางขวาก็จะทำให้ค่าลดลงสองเท่า
a & b = 0
a & b = 7
~a = -3
a >> 1 = 1
a << 1 = 4
นี่เป็นผลลัพธ์การทำงานของโปรแกรมของการใช้งานตัวดำเนินการระดับบิตในภาษา C

Operator precedence

ลำดับความสำคัญของตัวดำเนินการ (Operator precedence) ใช้เพื่อกำหนดว่าตัวดำเนินการใช้ที่จะถูกทำงานก่อน ยกตัวอย่างเช่น ในการทำงานของ expression 6 + 3 * 4 นั้นจะได้ผลลัพธ์เป็น 18 เพราะว่าตัวดำเนินการ * นั้นมีความสำคัญมากกว่าตัวดำเนินการ + คุณสามารถบังคับให้การบวกทำงานก่อนได้โดยใช้วงเล็บ (6 + 3) * 4 เพื่อให้การบวกสามารถทำงานก่อนได้ ซึ่งจะได้ผลลัพธ์เป็น 36 เป็นต้น
ข้างล่างนี้ เป็นตารางแสดงลำดับความสำคัญของตัวดำเนินการในภาษา C
Operator NameAssociativityOperators
Primaryleft to right()[].
Unaryขวาไปซ้าย++--+-!~&*(type_name)sizeof new delete
Multiplicativeซ้ายไปขวา*/%
Additiveซ้ายไปขวา+-
Bitwise Shiftซ้ายไปขวา<<>>
Relationalซ้ายไปขวา<><=>=
Equalityซ้ายไปขวา==!=
Bitwise ANDซ้ายไปขวา&
Bitwise Exclusive ORซ้ายไปขวา^
Bitwise Inclusive ORซ้ายไปขวา|
Logical ANDซ้ายไปขวา&&
Logical ORซ้ายไปขวา||
Conditionalขวาไปซ้าย?:
Assignmentขวาไปซ้าย=+=-=*= /=<<=>>= %= &=^=|=
Commaซ้ายไปขวา,
ในบทนี้ เราได้ครอบคลุมการดำเนินการพื้นฐานในภาษา C คุณได้เรียนรู้และทำความเข้าใจในตัวดำเนินการประเภทต่างๆ และได้เห็นถึงตัวอย่างการใช้งานของตัวดำเนินการแต่ละรูปแบบ ซึ่งจะนำไปใช้ในการเขียนโปรแกรมในบทต่อๆ ไป

Input-output กับประเภทข้อมูล

ในบทเรียนนี้ คุณจะได้เรียนเกี่ยวกับการรับค่าและการแสดงผลโดยการใช้ฟังก์ชันของภาษา C โดยปกติในการเขียนโปรแกรม เรามักจะมีการรับค่าและการแสดงผลจากผู้ใช้ ในการรับค่าโดยทั่วไปแล้วจะเป็นการรับค่าจากคีย์บอร์ดและการแสดงผลจะเป็นทางหน้าจอคอมพิวเตอร์
ในภาษา C มีฟังก์ชันให้เราสามารถรับค่าและแสดงผลได้ โดยจะมีรูปแบบในการรับค่าและแสดงผลของข้อมูลขึ้นกับประเภทของข้อมูล นี่เป็นข้อมูลส่วนมากที่เราจะพบในการทำงาน โดยจะเป็น specifier ที่จะใช้ในการรับข้อมูลแต่ละแบบ
specifierDescriptionUsage
dintegerใช้กับตัวเลขจำนวนเต็ม
ffloating, doubleใช้กับตัวเลขจำนวนจริง
cCharacterใช้กับตัวอักษรหนึ่งตัวอักษร
sString of charactersใช้กับสตริงหรือตัวอักษรหลายตัว
pPointerใช้กับค่าที่อยู่ของหน่วยความจำ
%%เครื่องหมายที่จะตามโดย specifier ตัวอื่นๆ

ฟังก์ชัน printf

ในการแสดงผลในภาษา C ฟังก์ชันที่ใช้คือฟังก์ชัน printf ซึ่งเป็นฟังก์ชันที่สามารถแสดงข้อมูลประเภทต่างออกทางหน้าจอภาพได้ โดยมันมีรูปแบบการใช้งานดังนี้
printf ("string pattern", value1, value2, ...);
ในการใช้ฟังก์ชัน อาร์กิวเมนต์ตัวแรกคือรูปแบบการแสดงผล และอาร์กิวเมนต์ตัวต่อไปเป็นข้อมูลที่ตรงกับ specifier ที่เรากำหนดไว้ตามลำดับ มาดูตัวอย่างการใช้งานจริง
printf ("Hello, my name is Mateo\n");

int age = 20;
printf ("I\'m %d year old\n", age);

printf ("I have %f USD and %d cents\n", 10.5, 4);
จากตัวอย่างเป็นการใช้ฟังก์ชัน printf เพื่อการแสดงผลแบบต่างๆ อันแรกเป็นการแสดงผลข้อความโดยที่ไม่มี specifier อันที่สองเราต้องการแสดงอายุที่เป็น integer เราจึงใช้ %d เพื่อแทนการแสดงผลของมัน อันสุดท้ายแสดงให้เห็นถึงการแสดงหลาย ค่าโดยเราต้องกำหนด specifier ให้ตรงกับค่าของเรา
และนี่เป็นตัวอย่างผลลัพธ์ของโปรแกรม
Hello, my name is Mateo
I'm 20 years old
I have 4.5 USD and 4 cents

ฟังก์ชัน scanf

ในการรับค่านั้นเราจะใช้ฟังก์ชัน scanf ในการรับค่า โดยการรับค่าเรามักจะหมายถึงการรับค่าจากคีย์บอร์ด โดยรูปแบบการใช้งานของฟังก์ชันเป็นดังนี้
scanf ("%specifier1 %specifier2 ...", variable1, variable2, ...);
ฟังก์ชัน scanf นั้นมีรูปแบบที่คล้ายกันกับฟังก์ชัน printf โดยอาร์กิวเมนต์ในฟังก์ตัวแรกเป็นสตริงของ specifier input ที่เราต้องการรับ และเป็นลำดับของตัวแปรที่ตรงกับ specifier ที่เราได้กำหนดไว้ในอาร์กิวเมนต์ตัวแรก และใส่ตัวแปรให้ตรงกับลำดับของ specifier ที่กำหนด
ต่อไปมาดูตัวอย่าง ของการรับค่าโดยการใช้ฟังก์ชัน scanf
int a;
float b;
scanf ("%d%f", &a, &b);
printf ("value of a is %d\n", a);
printf ("value of b is %f\n", b);
ในตัวอย่าง เราได้มีตัวแปรสองตัวคือ a และ b และมีประเภทของตัวแปรเป็น integer และ floating ตามลำดับ ดังนั้นใน specifier input เราจึงใส่ %d สำหรับตัวแปร a และ %f สำหรับตัวแปร b อาร์กิวเมนต์ตัวต่อไปเราจะใส่ลำดับของตัวแปร โดยลำดับของตัวแปรจะแตกต่างจากฟังก์ชัน printf โดยจะนำหน้าด้วยเครื่องหมาย & ซึ่งมันหมายถึงที่อยู่ของตัวแปร ถ้าในกรณีที่ตัวแปรเป็นอาเรย์ของตัวอักษรนั้นเราไม่ต้องใส่
และนี่เป็นตัวอย่างของโปรแกรมเมื่อใส่ค่าเป็น 5 และ 10.5 ตามลำดับ
5 10.5
value of a is 5
value of b is 10.500000

Escape characters

Escape characters เป็นตัวอักษรพิเศษในภาษา C ที่จะต้องใช้สัญลักษณ์เครื่องหมาย \ นำหน้าเสมอ เพื่อไม่ให้เกิดข้อผิดพลาดในการคอมไพล์โปรแกรม เพราะว่าตัวอักษรนี้เป็นสัญลักษณ์ที่ตรงกันกับโครงสร้างของภาษา นี่เป็นรายการของตัวอักษรพิเศษในภาษา C
Escape characterCharacter represented
\aAlarm
\bBackspace
\nNewline
\rCarriage Return
\tHorizontal Tab
\vVertical Tab
\\Backslash
\'Single quotation mark
\"Double quotation mark
\?Question mark
ต่อไปมาดูตัวอย่างการใช้งานของ Escape characters ในภาษา C ซึ่งเราจะเก็บข้อความที่มีตัวอักษรเหล่านี้ไว้ภายในตัวแปร char และตัวแปร char array
#include <stdio.h>

int main ()
{
    char tab = '\t';
    char a = 'A';

    char text[] = "His name is \"Mateo\".\n";
    char text2[] =
    "You can visit Mateo's website by asking him for address.\n";

    printf("%c%c\n", tab, a);
    printf("%s", text);
    printf("%s", text2);

    return 0;
}
ในตัวอย่าง เป็นการใช้งาน Escape characters ในการเขียนโปรแกรม ในสองตัวแปรแรก tabและ a นั้นเป็นตัวแปรแบบ char ตัวแปรแรกเป็นตัวแปรที่เป็นตัวอักษรพิเศษซึ่งหมายถึง tab และตัวแปรที่สองเป็นค่าปกติของ char ที่ไม่ใช่ตัวอักษรพิเศษ
ต่อมาในตัวแปร text และ text2 เป็นตัวแปรแบบ char array หรือตัวแปรที่เก็บข้อมูลของ char ได้มากกว่า 1 ตัวอักษร สำหรับการกำหนดค่าให้กับตัวแปรเราจึงใช้ \" สำหรับเครื่องหมาย " และ \' สำหรับเครื่องหมาย ' ส่วน \n นั้นเป็นตัวอักษรพิเศษที่หมายถึงการขึ้นบรรทัดใหม่ซึ่งเราจะใช้บ่อยในบทเรียนนี้
        A
His name is "Mateo".
You can visit Mateo's website by asking him for address.
นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการใช้งาน Escape characters ในภาษา C
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการรับค่าและการแสดงผลในภาษา C เบื้องต้น เพื่อให้สามารถสร้างโปรแกรมที่มีการติดต่อกับผู้ใช้ได้ อย่างไรก็ตาม Input-output นั้นสามารถเป็นได้ในทางอื่นๆ เช่น การรับค่าจากเสียง กล้องถ่ายรูป หรืออาจจะเป็นการทำงานกับไฟล์ หรือแม้กระทั่งกับ Network สำหรับบทนี้ เราพูดถึงการรับค่าทางคีย์บอร์ดและการแสดงผลทางหน้าจอ Console

คำสั่งควบคุมการควบคุมการทำงานของโปรแกรมโดยใช้คำสั่งควบคุม ในภาษา C มีคำสั่งควบคุมหลายประเภทที่คุณสามารถใช้ได้ เช่น if, if-else, for, while, do-while เป็นต้น ซึ่งคำสั่งควบคุมการทำงานของโปรแกรมนั้นจะมีสองประเภทคือ คำสั่งเลือกเงื่อนไขและคำสั่งวนซ้ำที่คุณจะได้เรียนในบทนี้

คำสั่ง If

คำสั่งควบคุมการทำงานที่เป็นพื้นฐานที่สุดในภาษา C นั้นก็คือคำสั่ง if มันใช้สำหรับสร้างเงื่อนไขให้โปรแกรมทำงานตามที่ต้องการ ยกตัวอย่างเช่น ถ้าหากวันนี้ฝนไม่ตก คุณจะออกไปเที่ยวข้างนอก นี่เป็นการตัดสินใจที่เกิดขึ้นและถูกนำแนวคิดมาใช้ในการเขียนโปรแกรม นี่เป็นรูปแบบของการใช้งานคำสั่ง if ในภาษา C
if (expression) {
    // statements
}
คำสั่ง if เป็นคำสั่งที่ใช้ในการตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่ โดยการใช้ตัวดำเนินการต่างๆ ในการสร้างเงื่อนไขหรือ expression ถ้าผลลัพธ์เป็นจริง โปรแกรมจะทำงานในบล็อคของคำสั่ง if ที่เราได้กำหนดขึ้น และถ้าหากผลลัพธ์ไม่เป็นจริงโปรแกรมจะข้ามการทำงานในบล็อคคำสั่งไป มาดูตัวอย่างการใช้งานของมัน;
#include <stdio.h>

int main () {
    if (10 == 10) {
        printf ("block 1 is executed.\n");
    }

    if (3 < 1) {
        printf ("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0) {
        printf ("block 3 is executed.\n");
    }
    return 0;
}
ในการทำงานของโปรแกรมเป็นการใช้คำสั่ง if เพื่อเปรียบเงื่อนไขต่างๆ โดยแต่ละบล็อคคำสั่งจะทำงานเมื่อเงื่อนไขเป็นจริงเท่านั้น บล็อคแรกจะทำงานเพราะว่า 10 มีค่าเท่ากับ 10 บล็อคที่สองจะไม่ทำงานเพราะว่า 3 ไม่น้อยว่า 1 และสำหรับบล็อคสุดท้ายจะทำงาน เพราะว่า a เป็นจำนวนคู่
และนี่เป็นผลลัพธ์ของโปรแกรมเมื่อรัน คุณจะเห็นว่ามีแค่ block 1 และ 3 ที่แสดงผลเพราะว่าเงื่อนไขของ if เป็นจริง
block 1 is executed
block 3 is executed

คำสั่ง If else

คำสั่ง if else เป็นคำสั่งมีการเพิ่มเงื่อนไข else if เข้ามาสำหรับการสร้างเงื่อนไขแบบหลายทางเลือก นั่นหมายถึงในบล็อคของคำสั่งจะทำงานเมื่อเงื่อนไขไม่ต้องกับเงื่อนไขก่อนหน้าแต่ตรงกับเงื่อนไขปัจจุบัน นอกจากนี้ยังมีคำสั่ง else ซึ่งเป็นบล็อคของคำสังที่จะทำงานถ้าหากไม่มีเงื่อนไขใดเป็นจริงเลย มาดูตัวอย่างของการใช้คำสั่ง if-else
#include <stdio.h>

int main () {

    int score;
    scanf ("%d", &score);

    if (score < 50)
        printf ("Your grade is F");
    else if (score < 60)
        printf ("Your grade is D");
    else if (score < 70)
        printf ("Your grade is C");
    else if (score < 80)
        printf ("Your grade is B");
    else
        printf ("Congratulation! You got grade A");

    return 0;
}
ในตัวอย่างนี้เป็นโปรแกรมสำหรับการคำนวณเกรด โดยโปรแกรมจะให้คุณสามารถใส่เกรดเข้ามา และเปรียบเทียบเงื่อนไขโดยใช้คะแนนตรวจสอบ คุณจะสังเกตเห็นว่าเราสามารถ ใช้ else if ได้ถ้าหากมีหลายเงื่อนไข และใช้คำสั่ง else เป็นเงื่อนไข default ในกรณีที่ไม่ตรงกับเงื่อนไขใดๆ เลย
74
Your grade is B
85
Congratulation! You got grade A
นี่เป็นผลลัพธ์การทำงานของโปรแกรมเมื่อเราได้กรอกคะแนนเป็น 74 ซึ่งตรงกับเงือนไขของเกรด B หลังจากโปรแกรมพบอย่างน้อยหนึ่งเงือนไขที่เป็นจริง บล็อคที่เหลือจะถูกข้ามไปในทันที และเราได้รับโปรแกรมอีกครั้งและกรอกคะแนนเป็น 85 ซึ่งโปรแกรมไม่ตรงกับเงื่อนไขใดเลย ในบล็อคของคำสั่ง if และ else if ทำให้ในบล็อคของคำสั่ง else ทำงานและได้เกรด A

คำสั่ง Switch case

Switch case เป็นคำสั่งเงื่อนไขที่ทำงานคล้ายกับ if แต่ส่วนมากจะใช้สำหรับการเปรียบเทียบกับค่าคงที่และต้องเป็นข้อมูลประเภท Integer หรือ Char เท่านั้น มาดูตัวอย่างของการใช้คำสั่ง Switch
#include <stdio.h>

int main () {

    int number = 5;

    switch (number) {
        case 1:
            printf ("n is 1");
            break;
        case 2:
            printf ("n is 2");
            break;
        case 3:
            printf ("n is 3");
            break;
        default:
            printf ("Unknown");
    }

    return 0;
}
ในการทำงานจากตัวแปรด้านบน เป็นการส่งตัวแปร number โดยจะนำไปเปรียบเทียบกับแต่ละ case ถ้าเงื่อนไขตรง โปรแกรมจำทำงานทันที่ จนกว่าจะสิ้นสุดบล็อคของคำสั่ง switch ดังนั้นเราจำเป็นต้องใช้คำสั่ง break เพื่อให้จบการทำงาน สำหรับคำสั่ง default จะเป็นการทำหลังจากที่ number ไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้า

คำสั่ง while loop

หลังจากที่คุณได้รู้จักคำสั่งเงื่อนไขพื้นฐานไปแล้ว ต่อไปคุณจะได้รู้จักคำสั่งของการทำงานซ้ำ ซึ่งสามารถให้เราประมวลผลส่วนของโปรแกรมที่ต้องการได้
คำสั่งวนซ้ำที่ง่ายที่สุดคือคำสั่ง while loop โดยการทำงานของคำสั่ง while loop จะทำงานเมื่อเงื่อนไขเป็นจริง และจะสิ้นสุดการทำงานจนกว่าเงื่อนไขจะเป็นเท็จ มาดูตัวอย่างของโปรแกรม
#include <stdio.h>

int main () {
    int n = 1;

    while (n <= 10) {
        printf ("%d, ", n);
        n++;
    }
    return 0;
}
ในตัวอย่างเป็นการใช้คำสั่ง while เพื่อแสดงผลตัวเลข 1 ถึง 10 โดยเราได้กำหนดค่าเริ่มต้นให้ n เท่ากับ 1 และจะเพิ่มขึ้นในการแสดงผลแต่ละครั้ง จนกว่าจะมากกว่า 10 จึงสิ้นสุดการทำงานของโปรแกรม และจะได้ผลลัพธ์ดังนี้
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

คำสั่ง do-while loop

คำสั่ง do while นั้นคล้ายกับคำสั่ง while แต่สิ่งที่แตกต่างกันเล็กน้อยคือ คำสั่ง do while จะทำงานก่อนอย่างน้อยหนึ่งรอบ แล้วจะตรวจเงื่อนและถ้าเงื่อนไขไม่เป็นจริงจะสิ้นสุดการทำงาน มาดูตัวอย่างการใช้งาน
#include <stdio.h>

int main () {
    int n = 1;

    do {
        printf ("Enter number: ");
        scanf ("%d", &n);
        printf ("You have entered %d\n", n);
    } while (n != 0);

    printf ("The program is terminated");
    return 0;
}
ในตัวอย่างนี้ เป็นโปรแกรมที่จะรับค่าจากคีย์บอร์ด โดยจะรับตัวเลขเข้ามาและแสดงผลตัวเลขที่ได้รับเข้ามา และจะสิ้นสุดการทำงานเมื่อตัวเลขเป็น 0
1
You have entered 1
3
You have entered 3
0
You have entered 0
The program is terminated

คำสั่ง for loop

คำสั่ง for loop เป็นคำสั่งวนซ้ำที่เราสามารถกำหนดค่าเริ่มต้นเงื่อนไขและการเปลี่ยนแปลงของค่าได้ ในตอนแรกครั้งเดียว โดยมีรูปแบบดังนี้
for (initial; expression; increment) {
    // statements
}
คำสั่ง for loop สามารถใช้ได้เหมือนกับ คำสั่ง while loop และ do while loop แต่โดยทั่วไปแล้ว เรามักจะใช้คำสั่ง for loop กับการวนซ้ำในจำนวนรวบที่แน่นอน หรือมันมักจะถูกใช้กับอาเรย์ มาดูตัวอย่างการใช้งาน
int i;

for (i = 0; i <= 10; i++) {
    printf ("%d, ", i);
}
ในตัวอย่างเป็นการใช้คำสั่ง for loop เพื่อวนซ้ำแสดงผลลัพธ์เลข 1 ถึง 10 เหมือนกับตัวอย่างของคำสั่ง while loop ก่อนหน้า มาดูตัวอย่างเพิ่มเติมในการใช้คำสั่ง for loop
#include <stdio.h>

int main () {

    char n[] = "Hello World";

    int i;
    for (i = 0; i < strlen(n); i++) {
        printf ("%c", n[i]);
    }

    printf ("\n");

    for (i = strlen(n) - 1; i >= 0; i--) {
        printf ("%c", n[i]);
    }

    return 0;
}
ในตัวอย่างเราได้ใช้ for loop ในการวนอ่านค่าจากในตัวแปรอาเรย์ โดยจำนวนรอบในการวนจะใช้ฟังก์ชัน strlen ในการหาความยาวของอาเรย์ ซึ่งคุณจะได้เรียนรู้เรื่องอาเรย์ในบทหลัง โดยในครั้งแรกจะอ่านมาแสดงปกติ และครั้งที่สองจะอ่านจากด้านหลังมา โดยจะได้ผลลัพธ์ดังนี้
Hello World
dlroW olleH

คำสั่ง break

คำสั่ง break เป็นคำสั่งที่ใช้สำหรับหยุดการทำงาน loop ในทันที โดยจะไม่สนใจเงื่อนไขของ loop ว่ายังเป็นจริงอยู่หรือไม่ มาดูตัวอย่างการใช้งานในการแสดงผลตัวเลข 1 ถึง 10
#include <stdio.h>

int main () {
    int i;
    for (i = 1; i <= 10; i++) {
        printf ("%d, ", i);
        if(i == 3) break;
    }
    return 0;
}
ในการทำงานของโปรแกรม โปรแกรมจะวนเพียง 3 รอบ เพราะว่าเมื่อ i มีค่าเป็น 3 เราได้ใช้คำสั่ง break เพื่อให้สิ้นสุดการทำงานของ for loop ทันที โดยจะไม่สนใจกว่าเงื่อนไขของ for loop จะยังคงเป็นจริง และนี่เป็นผลลัพธ์ของโปรแกรมเมื่อรัน
1, 2, 3,

คำสั่ง continue

คำสั่ง continue เป็นคำสั่งสำหรับการข้ามการทำงานในรอบปัจจุบัน และทำงานในรอบใหม่ทันที มาดูตัวอย่าง
#include <stdio.h>

int main () {
    int i;
    for (i = 1; i <= 10; i++) {
        if(i % 2 != 0) continue;
        printf ("%d, ", i);
    }
    return 0;
}
ในตัวอย่างโปรแกรมจะทำงานคำสั่ง continue ถ้าหาก i หาร 2 มีเศษเป็น 0 หรือจำนวนคู่ ดังนั้นโปรแกรมจะได้ดังนี้
2, 4, 6, 8, 10,
ในบทนี้ คุณได้เรียนรู้คำสั่งควบคุมในเบื้องต้นในภาษา C เราได้พูดถึงการควบคุมโปรแกรมด้วยคำสั่งเลือกเงือนไขอย่งเช่นคำสั่ง If และ switch และคำสั่งวนซ้ำที่สามารถทำให้โปรแกรมของเราทำงานแบบเดิมซ้ำๆ ได้ภายในเงื่อนไขที่เปลี่ยนแปลงไป และนอกจากนี้คุณยังได้รู้จักการใช้คำสั่ง continue และ break สำหรับควบคุมการทำงานของลูป




ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ระบบสารสนเทศ6

ไทยแลนด์ 4.0