อัลกอริธึม (Algorithm) คือ กระบวนการ
การทำงานที่ใช้การตัดสินใจ
โดยนำหลักเหตุผลและคณิตศาสตร์มาช่วยเลือกวิธีการหรือขั้นตอนการดำเนินงานต่อไป
จนกระทั่งถึงขั้นตอนสุดท้าย
เป็นวิธีการที่ใช้แยกย่อยและเรียงลำดับขั้นตอนของกระบวนการในการทำงานต่างๆ
เพื่อเพิ่มประสิทธิภาพในการค้นหาและแก้ไขปัญหา
ที่มาของคำว่าอัลกอริธึม (Algorithm) คือ
คำที่ตั้งให้เป็นเกียรติแก่ อแลน เดอะ กอริทึม ทิวริง (Alan The Gorithm Turing)
ผู้ค้นพบว่าการพิสูจน์ทางคณิตศาสตร์หรือปัญหาทางตรรกะ
สามารถหาคำตอบได้ด้วยชุดของขั้นตอนวิธีที่ถูกต้อง
ประโยชน์ของอัลกอริธึม (Algorithm) คือ
ทำให้ไม่สับสนกับวิธีดำเนินงาน
เพราะทุกอย่างจะถูกจัดเรียงเป็นขั้นตอนมีวิธีการและทางเลือกไว้ให้
เมื่อนำมาใช้จะทำให้การทำงานสำเร็จอย่างรวดเร็ว
ทำให้ปัญหาลดลงหรือสามารถค้นหาต้นเหตุของปัญหาได้อย่างรวดเร็ว
เนื่องจากกระบวนการถูกแยกแยะกิจกรรม ขั้นตอน และความสัมพันธ์
ออกมาให้เห็นอย่างชัดเจน
อัลกอริธึม (Algorithm)
หรือขั้นตอนวิธีทางคอมพิวเตอร์ต้องมีการวัดประสิทธิภาพโดยนำความรู้ทางคณิตศาสตร์มาใช้
ดังนี้
1. การพิสูจน์โดยการเหนี่ยวนำเชิงคณิตศาสตร์ มีหลักการคือ
กล่าวถึงว่าทฤษฎีนั้นถูกต้องสำหรับค่าตัวแรกเริ่มต้นหรือค่าต่ำสุด
โดยแทนค่าดังกล่าวลงในทฤษฎีเพื่อแสดงให้เห็นว่า ทฤษฎีนั้นถูกต้อง
จากนั้นสมมติให้ทฤษฎีนั้นยังถูกต้องเมื่อเพิ่มค่าตัวแปรจนถึงค่าที่ n-1
แล้วจึงนำสมมติฐานนั้นมาพิสูจน์ทฤษฎี
โดยการทำให้ค่าของตัวแปรเพิ่มขึ้นอีกหนึ่งจำนวน
2.
การหาผลบวกและผลคูณ
3. ทฤษฎีตัวเลข
4.
การประมาณค่า
5. การหาสัมประสิทธิแบบ Binomial
6.
การสรุปโดยการประมาณขอบเขตบนสุด
การประยุกต์ใช้อัลกอริธึม
สามารถนำอัลกอริธึมมาปรับใช้กับการทำงานของเรา
โดยที่เรากำหนดอัลกอริธึ่มของงานขึ้นมา ซึ่งอาจทำให้ลดเวลาการทำงาน
และเพิ่มประสิทธิผลในการทำงานได้ หรือกระทั่งช่วยการวางแผนชีวิต เช่น
ขั้นตอนการลงทุนจนถึงผลของการลงทุน เป็นต้น
รหัสเทียม หรือซูโดโค้ด (Pseudo Code)
คือ รหัสจำลองที่ใช้เป็นตัวแทนของอัลกอริทึม
โดยมีถ้อยคำหรือประโยคคำสั่งที่เขียนอยู่ในรูปแบบของภาษาอังกฤษที่ไม่ขึ้นกับภาษาคอมพิวเตอร์ใดภาษาหนึ่ง
คือ การแสดงขั้นตอนวิธีการที่ใช้ภาษาเขียนที่เข้าใจได้ง่าย
อาจใช้ภาษาไทยหรือภาษาอังกฤษก็ได้ขึ้นอยู่กับความสะดวกของผู้เขียนและกิจกรรมที่จะนำเสนอ
มักใช้รูปแบบคล้ายประโยคภาษาอังกฤษเพื่ออธิบายรายละเอียดของอัลกอริทึม
ผังงาน (Flowchart) คือ
การแสดงขั้นตอนวิธีการที่ใช้สัญลักษณ์ที่เข้าใจได้ง่าย แต่ให้รายละเอียดได้น้อยกว่า
ความแตกต่างของ Algorithm และ Pseudo Code คือ
การแสดงความคิดที่ได้จากการจินตนาการถึงขั้นตอน ซึ่งขั้นตอนที่อยู่ในความคิดก็คือ
Algorithm ที่ผ่านการแยก และจัดลำดับแล้ว เมื่อนำเสนอก็อาจใช้ภาษาง่าย ๆ
แต่หากนำเสนอด้วยการเขียนเป็นภาษาที่สื่อให้ทุกคนเข้าใจตรงกันได้ง่ายก็คือ Pseudo
Code นั้นเอง สำหรับหนังสือหลายเล่มแสดง Algorithm ด้วย Pseudo Code ก็ยังเรียกว่า
Algorithm ได้เช่นกัน
วันจันทร์ที่ 30 กรกฎาคม พ.ศ. 2555
โครงสร้างข้อมูล (Data Structure)
ในสาขาวิทยาการคอมพิวเตอร์ โครงสร้างข้อมูล เป็นวิธีการจัดเก็บข้อมูลในคอมพิวเตอร์เพื่อให้สามารถใช้งานได้อย่างมีประสิทธิภาพ บ่อยครั้งที่การเลือกโครงสร้างข้อมูลที่เหมาะสมจะทำให้เราสามารถเลือกใช้อัลกอริทึมที่มีประสิทธิภาพไปพร้อมกันได้ การเลือกโครงสร้างข้อมูลนั้นโดยส่วนใหญ่แล้วจะเริ่มต้นจากการเลือกแบบชนิดข้อมูลนามธรรม โครงสร้างข้อมูลที่ออกแบบเป็นอย่างดีจะสามารถรองรับการประมวลผลที่หนักหน่วงโดยใช้ทรัพยากรที่น้อยที่สุดเท่าที่จะเป็นไปได้ ทั้งในแง่ของเวลาและหน่วยความจำ
โครงสร้างข้อมูลแต่ละแบบจะเหมาะสมกับงานที่แตกต่างกัน และโครงสร้างข้อมูลบางแบบก็ออกแบบมาสำหรับบางงานโดยเฉพาะ อย่างเช่น ต้นไม้แบบบีจะเหมาะสำหรับระบบงานฐานข้อมูล
ในกระบวนการออกแบบโปรแกรมคอมพิวเตอร์ การเลือกโครงสร้างข้อมูลเป็นสิ่งสำคัญอันดับแรกที่ต้องคำนึงถึง ซึ่งจากการพัฒนาระบบงานใหญ่ๆได้แสดงให้เห็นว่า ความยากในการพัฒนาและประสิทธิภาพของระบบจะขึ้นอยู่กับโครงสร้างข้อมูลที่เลือกใช้อย่างมาก หลังจากตัดสินใจเลือกโครงสร้างข้อมูลที่จะใช้แล้วก็มักจะทราบถึงอัลกอริทึมที่ต้องใช้ได้ทันที แต่ในบางครั้งก็อาจจะกลับกัน คือ การประมวลผลที่สำคัญๆของโปรแกรมได้มีการใช้อัลกอริทึมที่ต้องใช้โครงสร้างข้อมูลบางแบบโดยเฉพาะ จึงจะทำงานได้เต็มประสิทธิภาพ ถึงอย่างไรก็ตาม ไม่ว่าจะเลือกโครงสร้างข้อมูลด้วยวิธีการใด โครงสร้างข้อมูลที่เหมาะสมก็เป็นสิ่งที่สำคัญมากอยู่ดี
แนวความคิดในเรื่องโครงสร้างข้อมูลนี้ส่งผล กับการพัฒนาวิธีการมาตรฐานต่างๆในการออกแบบและเขียนโปรแกรม หลายภาษาโปรแกรมนั้นได้พัฒนารวมเอาโครงสร้างข้อมูลนี้ไว้เป็นส่วนหนึ่งของระบบโปรแกรม เพื่อประโยชน์ในการใช้ซ้ำ
โครงสร้างข้อมูลแต่ละแบบจะเหมาะสมกับงานที่แตกต่างกัน และโครงสร้างข้อมูลบางแบบก็ออกแบบมาสำหรับบางงานโดยเฉพาะ อย่างเช่น ต้นไม้แบบบีจะเหมาะสำหรับระบบงานฐานข้อมูล
ในกระบวนการออกแบบโปรแกรมคอมพิวเตอร์ การเลือกโครงสร้างข้อมูลเป็นสิ่งสำคัญอันดับแรกที่ต้องคำนึงถึง ซึ่งจากการพัฒนาระบบงานใหญ่ๆได้แสดงให้เห็นว่า ความยากในการพัฒนาและประสิทธิภาพของระบบจะขึ้นอยู่กับโครงสร้างข้อมูลที่เลือกใช้อย่างมาก หลังจากตัดสินใจเลือกโครงสร้างข้อมูลที่จะใช้แล้วก็มักจะทราบถึงอัลกอริทึมที่ต้องใช้ได้ทันที แต่ในบางครั้งก็อาจจะกลับกัน คือ การประมวลผลที่สำคัญๆของโปรแกรมได้มีการใช้อัลกอริทึมที่ต้องใช้โครงสร้างข้อมูลบางแบบโดยเฉพาะ จึงจะทำงานได้เต็มประสิทธิภาพ ถึงอย่างไรก็ตาม ไม่ว่าจะเลือกโครงสร้างข้อมูลด้วยวิธีการใด โครงสร้างข้อมูลที่เหมาะสมก็เป็นสิ่งที่สำคัญมากอยู่ดี
แนวความคิดในเรื่องโครงสร้างข้อมูลนี้ส่งผล กับการพัฒนาวิธีการมาตรฐานต่างๆในการออกแบบและเขียนโปรแกรม หลายภาษาโปรแกรมนั้นได้พัฒนารวมเอาโครงสร้างข้อมูลนี้ไว้เป็นส่วนหนึ่งของระบบโปรแกรม เพื่อประโยชน์ในการใช้ซ้ำ
วันจันทร์ที่ 23 กรกฎาคม พ.ศ. 2555
ประวัติภาษาซี
จุดเริ่มต้นของภาษาซีภาษาซีเกิดขึ้นในปี ค.ศ.1972 โดย Dennis Ritchie แห่ง Bell Labsโดยภาษาซีนั้นพัฒนามาจาก ภาษา B และจากภาษา BCPL ซึ่งในช่วงแรกนั้นภาษาซีถูกออกแบบให้ใช้เป็นภาษาการเขียนโปรแกรมในระบบ UNIX และเริ่มมีคนสนใจมากขึ้นในปี ค.ศ.1978 เมื่อ Brain Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้นมา คือ K&R (Kernighan & Ritchie) และทั้งสองยังได้แต่งหนังสือชื่อว่า "The C Programming Language" โดยภาษาซีนั้นสามารถจะปรับใช้กับเครื่องคอมพิวเตอร์รูปแบบต่างๆได้ ต่อมาในช่วง ปี ค.ศ.1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า"ANSIC"
ภาษาซีนั้นจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงานกับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับ
เหตุผลที่ควรเรียนภาษาซี
ก็เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้น
จาก C สู่ C++
ถูกพัฒนาโดย Bjarne Stroustrupแห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้น
จำเป็นไหม ที่ต้องเรียนภาษา C ก่อน เรียน C++
คำตอบก็คือ จะเรียน C++ เลยก็ได้ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก ซึ่งในบทความในช่วงแรกผมจะนำเสนอหลักและแนวคิดในการเขียนโปรแกรมภาษา C ก่อน เพื่อให้ผู้อ่านได้เข้าใจในพื้นฐานก่อน
ลักษณะโปรแกรมแบบโครงสร้างการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่้งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้นครับ ผมจะยกตัวอย่างในภาษา C ในรูปแบบการเขียนโปรแกรมแบบโครงสร้างให้ดูดังด้านล่าง
โครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ ก็คือ
ส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)
ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)
ส่วนที่ 3 แสดงผลทางจอภาพ (Display)
ภาษาซีนั้นจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงานกับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับ
เหตุผลที่ควรเรียนภาษาซี
ก็เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้น
จาก C สู่ C++
ถูกพัฒนาโดย Bjarne Stroustrupแห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้น
จำเป็นไหม ที่ต้องเรียนภาษา C ก่อน เรียน C++
คำตอบก็คือ จะเรียน C++ เลยก็ได้ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก ซึ่งในบทความในช่วงแรกผมจะนำเสนอหลักและแนวคิดในการเขียนโปรแกรมภาษา C ก่อน เพื่อให้ผู้อ่านได้เข้าใจในพื้นฐานก่อน
ลักษณะโปรแกรมแบบโครงสร้างการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่้งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้นครับ ผมจะยกตัวอย่างในภาษา C ในรูปแบบการเขียนโปรแกรมแบบโครงสร้างให้ดูดังด้านล่าง
โครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ ก็คือ
ส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)
ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)
ส่วนที่ 3 แสดงผลทางจอภาพ (Display)
วันจันทร์ที่ 2 กรกฎาคม พ.ศ. 2555
My Profile
นายอภิวัฒน์ โสภณวรางกูร ม.5/12 เลขที่ 8
เลขประจำตัว 33682
ชื่อเล่น เอิร์ธ อายุ 16 ปี
วันเกิด 28 เมษายน พ.ศ. 2539
อาหารโปรด ข้าวไข่เจียวหมูสับ
สีที่ชอบ สีดำ
วิชาที่ชอบ คณิตศาสตร์ เคมี
กีฬาที่ชอบ ฟุตบอล ปิงปอง
สมัครสมาชิก:
บทความ (Atom)
