Dark mode
Imperative Programming
แนวคิดหลัก
Imperative Programming เป็นกระบวนทัศน์การเขียนโปรแกรมที่เน้นการบอกคอมพิวเตอร์ว่า "ทำอย่างไร" (How) มากกว่า "ต้องการอะไร" (What) โดยใช้ชุดคำสั่งที่เปลี่ยนแปลงสถานะของโปรแกรมตามลำดับ
องค์ประกอบหลัก
- การเปลี่ยนแปลงสถานะ: ใช้ตัวแปรที่สามารถเปลี่ยนค่าได้ (mutable variables) เพื่อเก็บและอัปเดตข้อมูลระหว่างการทำงาน
js
let counter = 0; // สร้างตัวแปรเริ่มต้น
counter = counter + 1; // เปลี่ยนแปลงค่าของตัวแปร
console.log(counter); // แสดงผลลัพธ์: 1
rust
fn main() {
let mut counter = 0; // สร้างตัวแปรเริ่มต้นที่เปลี่ยนแปลงได้ (mut)
counter = counter + 1; // เปลี่ยนแปลงค่าของตัวแปร
println!("{}", counter); // แสดงผลลัพธ์: 1
}
python
counter = 0 # สร้างตัวแปรเริ่มต้น
counter = counter + 1 # เปลี่ยนแปลงค่าของตัวแปร
print(counter) # แสดงผลลัพธ์: 1
go
package main
import "fmt"
func main() {
counter := 0 // สร้างตัวแปรเริ่มต้น
counter = counter + 1 // เปลี่ยนแปลงค่าของตัวแปร
fmt.Println(counter) // แสดงผลลัพธ์: 1
}
ลำดับคำสั่ง
- ลำดับคำสั่ง: โค้ดทำงานตามลำดับจากบนลงล่าง การเปลี่ยนลำดับคำสั่งจะส่งผลต่อผลลัพธ์
js
let x = 5;
let y = 10;
let z = x + y; // z = 15
x = 20; // เปลี่ยนค่า x แต่ไม่มีผลกับค่า z ที่คำนวณไปแล้ว
console.log(z); // ยังคงแสดง 15
rust
fn main() {
let mut x = 5;
let y = 10;
let z = x + y; // z = 15
x = 20; // เปลี่ยนค่า x แต่ไม่มีผลกับค่า z ที่คำนวณไปแล้ว
println!("{}", z); // ยังคงแสดง 15
}
python
x = 5
y = 10
z = x + y # z = 15
x = 20 # เปลี่ยนค่า x แต่ไม่มีผลกับค่า z ที่คำนวณไปแล้ว
print(z) # ยังคงแสดง 15
go
package main
import "fmt"
func main() {
x := 5
y := 10
z := x + y // z = 15
x = 20 // เปลี่ยนค่า x แต่ไม่มีผลกับค่า z ที่คำนวณไปแล้ว
fmt.Println(z) // ยังคงแสดง 15
}
การวนซ้ำ
- การวนซ้ำ: ใช้โครงสร้างแบบ loops เพื่อทำงานซ้ำๆ โดยไม่ต้องเขียนโค้ดซ้ำ
js
let sum = 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
rust
fn main() {
let mut sum = 0;
for i in 1..=5 {
sum += i;
println!("รอบที่ {}: sum = {}", i, sum);
}
// แสดงผล:
// รอบที่ 1: sum = 1
// รอบที่ 2: sum = 3
// รอบที่ 3: sum = 6
// รอบที่ 4: sum = 10
// รอบที่ 5: sum = 15
}
python
sum = 0
for i in range(1, 6):
sum += i
print(f"รอบที่ {i}: sum = {sum}")
# แสดงผล:
# รอบที่ 1: sum = 1
# รอบที่ 2: sum = 3
# รอบที่ 3: sum = 6
# รอบที่ 4: sum = 10
# รอบที่ 5: sum = 15
go
package main
import "fmt"
func main() {
sum := 0
for i := 1; i <= 5; i++ {
sum += i
fmt.Printf("รอบที่ %d: sum = %d\n", i, sum)
}
// แสดงผล:
// รอบที่ 1: sum = 1
// รอบที่ 2: sum = 3
// รอบที่ 3: sum = 6
// รอบที่ 4: sum = 10
// รอบที่ 5: sum = 15
}
เงื่อนไข
- เงื่อนไข: ใช้คำสั่งแบบมีเงื่อนไขเพื่อควบคุมการทำงานของโปรแกรม
js
let score = 75;
let grade;
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
rust
fn main() {
let score = 75;
let grade;
if score >= 80 {
grade = "A";
} else if score >= 70 {
grade = "B";
} else if score >= 60 {
grade = "C";
} else {
grade = "F";
}
println!("คะแนน {} ได้เกรด {}", score, grade); // คะแนน 75 ได้เกรด B
}
python
score = 75
grade = ""
if score >= 80:
grade = "A"
elif score >= 70:
grade = "B"
elif score >= 60:
grade = "C"
else:
grade = "F"
print(f"คะแนน {score} ได้เกรด {grade}") # คะแนน 75 ได้เกรด B
go
package main
import "fmt"
func main() {
score := 75
var grade string
if score >= 80 {
grade = "A"
} else if score >= 70 {
grade = "B"
} else if score >= 60 {
grade = "C"
} else {
grade = "F"
}
fmt.Printf("คะแนน %d ได้เกรด %s\n", score, grade) // คะแนน 75 ได้เกรด B
}
โปรแกรมย่อย
- โปรแกรมย่อย: แบ่งโค้ดเป็นฟังก์ชันหรือโปรซีเจอร์ที่สามารถเรียกใช้ซ้ำได้
js
function calculateArea(width, height) {
return width * height;
}
let roomWidth = 4;
let roomHeight = 5;
let area = calculateArea(roomWidth, roomHeight);
console.log(`พื้นที่ห้อง: ${area} ตารางเมตร`); // พื้นที่ห้อง: 20 ตารางเมตร
rust
fn calculate_area(width: i32, height: i32) -> i32 {
width * height
}
fn main() {
let room_width = 4;
let room_height = 5;
let area = calculate_area(room_width, room_height);
println!("พื้นที่ห้อง: {} ตารางเมตร", area); // พื้นที่ห้อง: 20 ตารางเมตร
}
python
def calculate_area(width, height):
return width * height
room_width = 4
room_height = 5
area = calculate_area(room_width, room_height)
print(f"พื้นที่ห้อง: {area} ตารางเมตร") # พื้นที่ห้อง: 20 ตารางเมตร
go
package main
import "fmt"
func calculateArea(width, height int) int {
return width * height
}
func main() {
roomWidth := 4
roomHeight := 5
area := calculateArea(roomWidth, roomHeight)
fmt.Printf("พื้นที่ห้อง: %d ตารางเมตร\n", area) // พื้นที่ห้อง: 20 ตารางเมตร
}
เหมาะสำหรับ
- โปรแกรมที่ต้องการประสิทธิภาพสูงและควบคุมทรัพยากรอย่างละเอียด
- งานที่ต้องจัดการสถานะหรือปฏิสัมพันธ์กับระบบภายนอกโดยตรง
- การเขียนโค้ดระดับต่ำที่ใกล้ชิดกับฮาร์ดแวร์
- ผู้เริ่มต้นเรียนรู้การเขียนโปรแกรม เนื่องจากเข้าใจง่ายและตรงไปตรงมา