Basic Program 3. "Odd Even"

เรียนรู้่ Condition (เงื่อนไขและทางเลือก)

โปรแกรมนี้จะรับค่า a มาแล้วเช็คว่าหาร 2 ลงตัวหรือเปล่า

// oddeven.c
#include <stdio.h>

int main() {
  int a;
  scanf("%d", &a);
  if (a % 2 == 0) {
    printf("even\n");
  } else {
    printf("odd\n");
  }
  return 0;
}

อะไรคือ a % 2

% เป็นเครื่องหมายชื่อ Modulo (หารเอาเศษ) เช่น

0 % 3 == 0  เพราะว่า 0 เขียนในรูป 3x + 0 ได้
1 % 3 == 1  เพราะว่า 1 เขียนในรูป 3x + 1 ได้
2 % 3 == 2  เพราะว่า 2 เขียนในรูป 3x + 2 ได้
3 % 3 == 0  เพราะว่า 3 เขียนในรูป 3x + 0 ได้
4 % 3 == 1  เพราะว่า 4 เขียนในรูป 3x + 1 ได้
5 % 3 == 2  เพราะว่า 5 เขียนในรูป 3x + 2 ได้
6 % 3 == 0  เพราะว่า 6 เขียนในรูป 3x + 0 ได้
7 % 3 == 1  เพราะว่า 7 เขียนในรูป 3x + 1 ได้
8 % 3 == 2  เพราะว่า 8 เขียนในรูป 3x + 2 ได้
9 % 3 == 2  เพราะว่า 9 เขียนในรูป 3x + 2 ได้

100 % 3 == 1
35 % 4 == 3
5 % 1000 == 5
85 % 11 = 8

อะไรคือ ==

เครื่องหมาย = คือเช็คความเท่ากัน equal. เป็นหนึ่งใน operator ที่ใช้ได้ (operator ⊂ function)

การใช้ a == 13 เป็นการเปรียบเทียบว่าค่าที่ทดๆไว้ที่ a มีค่าเท่ากับ 13 หรือไม่

มีผลลัพท์เป็น bool มีมีโอกาศเป็นได้สองค่าคือ

นอกจาก == แล้วยังมี comparator อย่างอื่นด้วยนะ

compare operation description สร้าง compare operation จากเครื่องหมาย <
a == b a มีค่า เท่ากับ b !(a < b) && !(b < a)
a !== b a มีค่า ไม่เท่ากับ b (a < b) || (b < a)
a < b a มีค่า น้อยกว่า b a < b
a > b a มีค่า มากกว่า b b < a
a <= b a มีค่า น้อยกว่าหรือเท่ากับ b !(b < a)
a >= b a มีค่า น้อยกว่าหรือเท่ากับ b !(a < b)

อะไรคือ if/else

if เป็นการแสดงเงื่อนไขการทำ ให้ทำถ้าเงื่อนไขเป็นจริง. และถ้าไม่จริงก็ไปทำ else ต่อได้

if (condition) {
  // ทำเมื่อ condition เป็นจริง
} else {
  // ทำเมื่อ condition เป็นเท็จ
}

image

นอกจากนั้น ถ้ามีหลายเงื่อนไขก็สามารถ chain กันต่อได้

if (condition_a) {
  __A;
} else {
  if (condition_b) {
    __B;
  } else {
    if (condition_c) {
      __C;
    } else {
      __D;
    }
  }
}

แต่คำสั้งมีคำสั้งเดียว เราสามารถเอา {} ออกได้ กลายเป็น

if (condition_a) {
  __A;
} else
  if (condition_b) {
    __B;
  } else
    if (condition_c) {
      __C;
    } else {
      __D;
    }

จัดบรรทัดใหม่
if (condition_a) {
  __A;
} else if (condition_b) {
  __B;
} else if (condition_c) {
  __C;
} else {
  __D;
}

สำหรับบางภาษามีการออกแบบ syntax แยกของ else if เช่น python ใช่ elif แทน else if

if cond_a: A() elif cond_b: B() elif cond_c: C() else: D()

ทำให้สั้นขึ้นด้วย Short Hand If Else (Ternary Operator)

ternary operator

// oddeven_ternary.c
#include <stdio.h>

int main() {
  int a;
  scanf("%d", &a);
  printf(a % 2 == 0 ? "even\n" : "odd\n");
// หรือ
  (a % 2 == 0)
    ? printf("even\n")
    : printf("odd\n");
  return 0;
}