Arduino:
การใช้แอเรย์สมาชิก
วิธีทำ:
โดยเคร่งครัด, Arduino ไม่มีการสนับสนุน built-in สำหรับอาร์เรย์แอสโซซิเอทีฟเช่นที่คุณจะพบในภาษาระดับสูง แต่ไม่ต้องกังวล เราสามารถใช้โครงสร้างและอาร์เรย์เพื่อจำลองการทำงานนี้ได้ นี่คือตัวอย่างง่ายๆเพื่อสร้าง “อาร์เรย์แอสโซซิเอทีฟ” พื้นฐานสำหรับจัดเก็บและเข้าถึงอุณหภูมิสำหรับเมืองต่างๆ
แรกสุด, กำหนดโครงสร้างเพื่อถือเมือง (คีย์) และอุณหภูมิของมัน (ค่า):
struct CityTemperature {
String city;
float temperature;
};
ต่อไป, เริ่มต้นอาร์เรย์ของวัตถุ CityTemperature
:
CityTemperature temperatures[] = {
{"New York", 19.5},
{"Los Angeles", 22.0},
{"Chicago", 17.0}
};
นี่คือวิธีที่คุณสามารถเข้าถึงและแสดงอุณหภูมิของเมืองที่เฉพาะเจาะจงได้:
void setup() {
Serial.begin(9600);
for(int i = 0; i < 3; i++) {
if(temperatures[i].city == "Los Angeles") {
Serial.print("อุณหภูมิใน Los Angeles คือ: ");
Serial.println(temperatures[i].temperature);
}
}
}
void loop() {
// ไม่มีอะไรที่นี่เพื่อตอนนี้
}
การรันโค้ดนี้จะให้ผลลัพธ์:
อุณหภูมิใน Los Angeles คือ: 22.0
ลึกลงไป
ในอดีต, ภาษาการเขียนโปรแกรมเช่น C และ C++ (ซึ่ง Arduino ได้รับการสืบทอดไวยากรณ์) ไม่ได้มีอาร์เรย์แอสโซซิเอทีฟในตัว, นำไปสู่การหาวิธีแก้ปัญหาเช่นที่แสดงข้างต้น วิธีนี้ค่อนข้างง่าย แต่ขยายขนาดได้ไม่ดีเมื่อขนาดข้อมูลเพิ่มขึ้นเนื่องจากมีเวลาค้นหาที่ O(n)
ภาษาเช่น Python นำเสนอ dictionaries, และ JavaScript มี objects สำหรับวัตถุประสงค์นี้, ทั้งคู่มีประสิทธิภาพมากขึ้นสำหรับการจัดการกับคู่คีย์-ค่า ใน Arduino, เมื่อประสิทธิภาพและคุณภาพกลายเป็นสิ่งสำคัญ, นักพัฒนาอาจเลือกใช้โครงสร้างข้อมูลที่เฉพาะเจาะจงมากขึ้น, เช่น ตารางแฮช, ซึ่งได้รับการดำเนินการผ่านไลบรารี
แม้ว่า Arduino จะไม่สนับสนุนอาร์เรย์แอสโซซิเอทีฟโดยตรง, ชุมชนได้พัฒนาไลบรารีเช่น HashMap
ที่สามารถเพิ่มเข้าไปในโปรเจ็กต์ของคุณเพื่อให้มีความสามารถที่คล้ายคลึงกับประสิทธิภาพที่ดีกว่าวิธี DIY ไลบรารีเหล่านี้มักนำเสนอวิธีการที่งดงามและมีประสิทธิภาพมากขึ้นในการจัดการอาร์เรย์แอสโซซิเอทีฟ, โดยเฉพาะสำหรับโปรเจกต์ที่ซับซ้อนมากขึ้น