ขั้นตอนของอัลกอริทึม
เครื่องมือที่ใช้แสดงขั้นตอนการทำงาน
(Algorithm) ของระบบงานใดๆในงานคอมพิวเตอร์มีหลายอย่างและเครื่องมือที่นิยมใช้กันมากก็คือ
ผังงานโครงสร้าง (Structured
Flowchart) และคำสั่งเทียม(Pseudo Code) ซึ่งเครื่องมือที่ใช้เหล่านี้ผู้พัฒนาระบบงาน สามารถนำไปแปลงเป็นชุดคำสั่งตามรูปแบบไวยากรณ์(Syntax) ของภาษาคอมพิวเตอร์ภาษาใดๆก็ได้เพื่อพัฒนาระบบงานขึ้นมา
1.1 ผังงานโครงสร้าง (Structured Flowchart)
จะเป็นเครื่องมือ(Tools) ที่ใช้อธิบายรายละเอียดการทำงานตามขั้นตอนการทำงาน(Algorithm) โดยใช้ สัญลักษณ์(Symbol)แทนคำสั่ง ใช้ข้อความ(Statement)ในสัญลักษณ์แทนตัวแปรและตัวดำเนินการทางการคำนวณและการเปรียบเทียบ
อีกทั้งยังแสดงความสัมพันธ์ของการทำงานต่างๆอย่างเป็นลำดับขั้นตอนโดยสามารถแบ่งลักษณะของความสัมพันธ์เป็นรูปแบบต่างๆได้แก่ การทำงานแบบมีลำดับ การทำงานแบบให้เลือกทำและการทำงานแบบทำซ้ำในเงื่อนไขต่างๆ
โดยที่สามารถสรุปรายละเอียดของสัญลักษณ์ที่สำคัญและที่นิยมใช้งานบ่อยๆได้ดังนี้
5.3 อธิบายหลักการทำงานของโปรแกรม
5.3.1. ส่วนของอุปกรณ์ RFID ในขณะนี้ยังเป็นการพัฒนาเพียงในส่วนของ dll ที่ใช้ในการติดต่อระว่างเครื่องคอมพิวเตอร์เนื่องจาก dll ที่ให้มาพร้อมเครื่องไม่สะดวกกับการใช้งาน จึงได้มีการพัฒนาขึ้นใหม่ให้เข้ากับการใช้งานในส่วนของการพัฒนาด้านการแสดงผลของแผนผังอาคาร เหลือการพัฒนาในส่วนของการส่งข้อมูลโดยใช้ระบบ LAN
/// <summary>
/// กำหนดค่ารูปแบบของ
Tag ที่ใช้งาน
/// โดยชนิดของ
Tag
/// SIC7771 ให้ใช้ค่า
71
/// SIC7960 ให้ใช้ค่า
60
/// SIC7845 ให้ใช้ค่า
45
/// SIC7845X ให้ใช้ค่า
46
/// </summary>
/// <param name="SICTagType"></param>
/// <returns></returns>
public static int SIC_Tag_Type(byte
SICTagType)
{
SendLen = 2;
SendBuff[0] = 0xC1;
SendBuff[1] = SICTagType;
return DUAL_Polling(Port, Address,ref SendBuff[0], SendLen,ref
RecvBuff[0]);
}
/// <summary>
/// สั่งงานให้
Reader เล่นเสียง
/// โดย
0 -> ปิดเสียง
/// 1 -> ดังหนึ่งครั้ง
(สั้น)
/// 2 -> ดังสองครั้ง
/// 3 -> ดังหนึ่งครั้ง
(ยาว)
/// </summary>
/// <param name="Buzzer"></param>
/// <returns></returns>
public static int SIC_Buzzer(byte
Buzzer)
{
SendLen = 2;
SendBuff[0] = 0xC3;
SendBuff[1] = Buzzer;
return DUAL_Polling(Port, Address,ref SendBuff[0], SendLen,ref
RecvBuff[0]);
}
/// <summary>
/// ตั้งค่า
Data Rate, Encode, Packet
/// โดย
DataRate RF/32 -> 1, RF/64 -> 0 (แต่ยังไม่สามารถใช้งานได้ ในเวอร์ชั่นนี้)
/// Encode
Manchester -> 0, Bi-Phase -> 1
/// Packet
ST-E5551 -> 0, EM4001 -> 1, ISO11784 -> 2
/// คำแนะนำ สำหรับ
SIC7771/SIC7960 ให้ใช้ค่า Packet เป็น
0 และ Encode เป็น 0 หรือ
1
/// คำแนะนำ สำหรับ Animal Tag ให้ใช้ค่า Packet เป็น 2 และ
Encode เป็น 1
/// </summary>
/// <param name="DRate"></param>
/// <param name="Coding"></param>
/// <returns></returns>
public static int SIC_Configure_Codec(byte
DRate, byte Coding)
{
SendLen = 4;
SendBuff[0] = 0xC6;
SendBuff[1] = DRate;
SendBuff[2] = Coding;
SendBuff[3] = 0; // Packet = 0
-> สำหรับ SIC7771 / SIC7960
return DUAL_Polling(Port, Address,ref SendBuff[0], SendLen,ref
RecvBuff[0]);
}
/// <summary>
/// อ่านข้อมูลใน
Block ที่กำหนด
/// ข้อมูลมีขนาด
4 Bytes
/// และคำสั่งนี้ไม่สามารถใช้งานได้
หากอยู่ใน Password Mode
/// </summary>
/// <param name="blk"></param>
/// <returns></returns>
public static int SIC_Direct_Access(byte
blk)
{
SendLen = 2;
SendBuff[0] = 0xE3;
SendBuff[1] = blk;
return DUAL_Polling(Port, Address,ref SendBuff[0], SendLen,ref
RecvBuff[0]);
}
/// <summary>
/// เขียนข้อมูลใน
Block แบบ Standard Write
/// </summary>
/// <param name="write_mode"></param>
/// <param name="blk"></param>
/// <param name="data_0"></param>
/// <param name="data_1"></param>
/// <param name="data_2"></param>
/// <param name="data_3"></param>
/// <param name="onField"></param>
/// <param name="lck"></param>
/// <param name="pwd_0"></param>
/// <param name="pwd_1"></param>
/// <param name="pwd_2"></param>
/// <param
name="pwd_3"></param>
/// <returns></returns>
public static int SIC_Write(string
blk, string data_0, string
data_1, string data_2, string
data_3)
{
SendLen = 8;
SendBuff[0] = 0xE4;
// Data in Standard
and Protected Write
SendBuff[1] = Convert.ToByte(blk);
SendBuff[2] = Convert.ToByte(data_0);
SendBuff[3] = Convert.ToByte(data_1);
SendBuff[4] = Convert.ToByte(data_2);
SendBuff[5] = Convert.ToByte(data_3);
SendBuff[6] = 0x01;
SendBuff[7] = 0x00;
return DUAL_Polling(Port, Address,ref SendBuff[0], SendLen,ref
RecvBuff[0]);
}
/// <summary>
/// เขียนข้อมูลใน
Block แบบ Protected Write
/// </summary>
/// <param name="write_mode"></param>
/// <param name="blk"></param>
/// <param name="data_0"></param>
/// <param name="data_1"></param>
/// <param name="data_2"></param>
/// <param name="data_3"></param>
/// <param name="onField"></param>
/// <param name="lck"></param>
/// <param name="pwd_0"></param>
/// <param name="pwd_1"></param>
/// <param name="pwd_2"></param>
/// <param name="pwd_3"></param>
/// <returns></returns>
public static int SIC_Write(string
blk, string data_0, string
data_1, string data_2, string
data_3, string pwd_0, string
pwd_1, string pwd_2, string
pwd_3)
{
SendLen = 12;
SendBuff[0] = 0xE4;
SendBuff[1] = Convert.ToByte(blk);
SendBuff[2] = Convert.ToByte(data_0);
SendBuff[3] = Convert.ToByte(data_1);
SendBuff[4] = Convert.ToByte(data_2);
SendBuff[5] = Convert.ToByte(data_3);
SendBuff[6] = 0x01;
SendBuff[7] = 0x00;
ขั้นตอนการทำงาน และอธิบายการทำงานของ Dijkstra's algorithm
ภาพขั้นตอนการทำงานของ Dijkstra's algorithm ที่ใช้ในการคำนวนหาเส้นทางและระยะทางที่สั้นที่สุดโดยแสดงดังรูปที่
3
1. Depth First Search
Depth First Search เป็นการค้นหาแบบลึกก่อนเป็นการค้นหาที่กำหนดทิศทางจากรูปของโครงสร้างต้นไม้
ที่เริ่มต้นจากโหนดราก (Root node) ที่อยู่บนสุด
แล้วเดินลงมาให้ลึกที่สุด เมื่อถึงโหนดล่างสุด (Terminal node) ให้ย้อนขึ้นมาที่จุดสูงสุดของกิ่งเดี่ยวกันที่มีกิ่งแยกและยังไม่ได้เดินผ่าน
แล้วเริ่มเดินลงจนถึงโหนดลึกสุดอีก ทำเช่นนี้สลับไปเรื่อยจนพบโหนดที่ต้องการหาหรือสำรวจครบทุกโหนดแล้ว
การค้นหาแบบลึกก่อนจะมีลำดับการเดินตามโหนดดังตัวเลขที่กำกับไว้ในแต่ละโหนดดังรูปที่
4
อัลกอริทึม
1.
กำหนดจุดเริ่มต้น
2.
นําโหนดที่อยู่ติดกับโหนดที่กําลังสํารวจอยู่(ที่ยังไม่ได้ทําการสํารวจและยังไม่ได้อยู่ในแสต็กมาใส่แสต็ก) มาเก็บไว้ในสแต็ก
3.
เมื่อสํารวจโหนดนั้นเสร็จ ให้พอพ(pop) ตัวบนสุดของโหนดออกมาทําการสํารวจ
4.
ทำการตรวจสอบโหนดที่ต้องการ
แล้วนําโหนดข้างเคียงทั้งหมดที่ยังไม่ได้สํารวจมาต่อท้ายแสต็ก
5.
พอพตัวบนสุดออกมาสํารวจ ทำตามขั้นตอนที่
2-4 จนกระทั้งพบโหนดที่ต้องการ หรือสํารวจครบทุดโหนด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น