Skip to content
Grok

Imperative Programming

แนวคิดหลัก

Imperative Programming เป็นกระบวนทัศน์การเขียนโปรแกรมที่เน้นการบอกคอมพิวเตอร์ว่า "ทำอย่างไร" (How) มากกว่า "ต้องการอะไร" (What) โดยใช้ชุดคำสั่งที่เปลี่ยนแปลงสถานะของโปรแกรมตามลำดับ

องค์ประกอบหลัก

  • การเปลี่ยนแปลงสถานะ: ใช้ตัวแปรที่สามารถเปลี่ยนค่าได้ (mutable variables) เพื่อเก็บและอัปเดตข้อมูลระหว่างการทำงาน
ts
// ประกาศตัวแปรที่สามารถเปลี่ยนแปลงค่าได้
let counter: number = 0;

// เปลี่ยนแปลงค่าตัวแปร
counter = counter + 1;
console.log(counter); // แสดงผลลัพธ์: 1

// ตัวแปรแบบ object ก็สามารถเปลี่ยนแปลงค่าได้
const person = { name: "John", age: 30 };
person.age = 31; // เปลี่ยนแปลงค่า property
console.log(person); // { name: 'John', age: 31 }

ลำดับคำสั่ง

  • ลำดับคำสั่ง: โค้ดทำงานตามลำดับจากบนลงล่าง การเปลี่ยนลำดับคำสั่งจะส่งผลต่อผลลัพธ์
ts
// ตัวอย่างการทำงานตามลำดับ
let x: number = 5;
let y: number = 10;
let z: number = x + y; // z = 15

// เปลี่ยนค่า x หลังจากคำนวณ z แล้ว
x = 20;
console.log(z); // ยังคงแสดง 15 เพราะ z คำนวณจากค่า x เก่า

// ลำดับมีความสำคัญ
let a: number = 10;
a = a * 2; // a = 20
a = a + 5; // a = 25
console.log(a); // แสดง 25

// ถ้าเปลี่ยนลำดับ
let b: number = 10;
b = b + 5; // b = 15
b = b * 2; // b = 30
console.log(b); // แสดง 30 (ผลลัพธ์ต่างจากข้างบน)

การวนซ้ำ

  • การวนซ้ำ: ใช้โครงสร้างแบบ loops เพื่อทำงานซ้ำๆ โดยไม่ต้องเขียนโค้ดซ้ำ
ts
// ตัวอย่างการใช้งาน for loop
let sum: number = 0;
for (let i = 1; i <= 5; i++) {
  sum += i;
  console.log(`รอบที่ ${i}: sum = ${sum}`);
}
// แสดงผล:
// รอบที่ 1: sum = 1
// รอบที่ 2: sum = 3
// รอบที่ 3: sum = 6
// รอบที่ 4: sum = 10
// รอบที่ 5: sum = 15

// ตัวอย่างการใช้งาน while loop
let count: number = 0;
let total: number = 0;
while (count < 5) {
  count++;
  total += count;
  console.log(`รอบที่ ${count}: total = ${total}`);
}

// ตัวอย่างการใช้งาน for...of กับ array
const numbers: number[] = [10, 20, 30, 40, 50];
let arraySum: number = 0;
for (const num of numbers) {
  arraySum += num;
  console.log(`เพิ่มค่า ${num}, ผลรวมปัจจุบัน: ${arraySum}`);
}

เงื่อนไข

  • เงื่อนไข: ใช้คำสั่งแบบมีเงื่อนไขเพื่อควบคุมการทำงานของโปรแกรม
ts
// ตัวอย่างเงื่อนไขพื้นฐาน
const score: number = 75;
let grade: string;

if (score >= 80) {
  grade = "A";
} else if (score >= 70) {
  grade = "B";
} else if (score >= 60) {
  grade = "C";
} else {
  grade = "F";
}

console.log(`คะแนน ${score} ได้เกรด ${grade}`); // คะแนน 75 ได้เกรด B

// ตัวอย่างเงื่อนไขแบบ switch case
const dayOfWeek: number = 3;
let dayName: string;

switch (dayOfWeek) {
  case 0:
    dayName = "อาทิตย์";
    break;
  case 1:
    dayName = "จันทร์";
    break;
  case 2:
    dayName = "อังคาร";
    break;
  case 3:
    dayName = "พุธ";
    break;
  case 4:
    dayName = "พฤหัสบดี";
    break;
  case 5:
    dayName = "ศุกร์";
    break;
  case 6:
    dayName = "เสาร์";
    break;
  default:
    dayName = "ไม่พบวัน";
}

console.log(`วันนี้คือวัน${dayName}`); // วันนี้คือวันพุธ

// ตัวอย่างเงื่อนไขแบบ Ternary Operator
const age: number = 20;
const canVote: string = age >= 18 ? "สามารถเลือกตั้งได้" : "ยังเลือกตั้งไม่ได้";
console.log(canVote); // สามารถเลือกตั้งได้

โปรแกรมย่อย

  • โปรแกรมย่อย: แบ่งโค้ดเป็นฟังก์ชันหรือโปรซีเจอร์ที่สามารถเรียกใช้ซ้ำได้
ts
// ฟังก์ชันคำนวณพื้นที่สี่เหลี่ยมผืนผ้า
function calculateArea(width: number, height: number): number {
  return width * height;
}

// ฟังก์ชันคำนวณค่าดัชนีมวลกาย (BMI)
function calculateBMI(weightKg: number, heightM: number): number {
  return weightKg / (heightM * heightM);
}

// ฟังก์ชันแสดงผลข้อมูล BMI พร้อมคำแนะนำ
function showBMIInfo(weight: number, height: number): void {
  const bmi = calculateBMI(weight, height / 100); // แปลงส่วนสูงเป็นเมตร
  console.log(`น้ำหนัก: ${weight} กก.`);
  console.log(`ส่วนสูง: ${height} ซม.`);
  console.log(`ค่า BMI: ${bmi.toFixed(2)}`);

  if (bmi < 18.5) {
    console.log("อยู่ในเกณฑ์น้ำหนักน้อย / ผอม");
  } else if (bmi < 23) {
    console.log("อยู่ในเกณฑ์ปกติ (สุขภาพดี)");
  } else if (bmi < 25) {
    console.log("น้ำหนักเกิน");
  } else if (bmi < 30) {
    console.log("อ้วนระดับ 1");
  } else {
    console.log("อ้วนระดับ 2");
  }
}

// ตัวอย่างการใช้งาน
const roomWidth = 4;
const roomHeight = 5;
const area = calculateArea(roomWidth, roomHeight);
console.log(`พื้นที่ห้อง: ${area} ตารางเมตร`); // พื้นที่ห้อง: 20 ตารางเมตร

// เรียกใช้ฟังก์ชันแสดงผล BMI
showBMIInfo(65, 170);
// ผลลัพธ์:
// น้ำหนัก: 65 กก.
// ส่วนสูง: 170 ซม.
// ค่า BMI: 22.49
// อยู่ในเกณฑ์ปกติ (สุขภาพดี)

เหมาะสำหรับ

  • โปรแกรมที่ต้องการประสิทธิภาพสูงและควบคุมทรัพยากรอย่างละเอียด
  • งานที่ต้องจัดการสถานะหรือปฏิสัมพันธ์กับระบบภายนอกโดยตรง
  • การเขียนโค้ดระดับต่ำที่ใกล้ชิดกับฮาร์ดแวร์
  • ผู้เริ่มต้นเรียนรู้การเขียนโปรแกรม เนื่องจากเข้าใจง่ายและตรงไปตรงมา