Python

Python คืออะไร

มาศึกษาและแลกเปลี่ยนเรียนรู้ประสบการณ์การเขียนโปรแกรมด้วยภาษาต่าง ๆ ร่วมกกัน

อัลกอริทึมคืออะไร
    อัลกอริทึมเป็นคำที่บัญญัติขึ้นมาจากนักคณิตศาสตร์ชาวอาหรับ ชื่อ Aleu Ja’far Mohammed ibn Musu al Khowarzmi นักคณิตศาสตร์ผู้นี้แต่งหนังสือที่อธิบายกระบวนงานสำหรับการคำนวณด้วยเลขฮินดู
    ปัจจุบันอัลกอริทึมนั้นหมายถึง กระบวนงาน (procedure) สำหรับการแก้ปัญหาในแต่ละขั้นตอนหรือการบรรลุเป้าหมาย สำหรับด้านวิทยาการคอมพิวเตอร์อัลกอริทึม หมายถึงกระบวนงานซึ่งสามารถนำไปดำเนินงานได้โดยเครื่องคอมพิวเตอร์ และมีคุณสมบัติดังต่อไปนี้
    1. มีขั้นตอนการดำเนินงานที่ชัดเจนและไม่กำกวม ดังนั้นแต่ละคำสั่งนั้นมีความสมบูรณ์ในตัวเอง
    2. กระบวนงานนั้นเรียบง่ายเพียงพอที่จะได้รับการดำเนินงานโดยเครื่องคอมพิวเตอร์
    3. กระบวนงานมีการดำเนินที่มีจุดจบ (finiteness) โดยที่อัลกอริทึมสามารถหยุดการทำงาน
    หลังจากการดำเนินงานไปได้ ระยะหนึ่งตามที่ต้องการและตามที่เวลากำหนด

    ข้อความสั่งกำหนดค่าแบบเลขจำนวนเต็ม เช่น x := y + z เป็นตัวอย่างของคำสั่งซึ่งสามารถดำเนินงานได้ในปริมาณงานที่จำกัด ในคำสั่งของอัลกอริทึมสามารถกำหนดให้มีการวนซ้ำในเวลาขณะหนึ่งนอกจากนี้เมื่อกำหนดข้อมูลนำเข้าที่มีมูลค่าต่างกันให้อัลกอริทึมดำเนินงาน อัลกอริทึมนั้นสามารถจบลงได้ดังนั้นโปรแกรมคืออัลกอริทึมที่ไม่มีวงอนันต์ในการดำเนินงาน เมื่อกำหนดข้อมูลนำเข้าชนิดใด ๆ ให้คุณสมบัติของอัลกอริทึมที่กล่าวไปแล้ว คือ การดำเนินงานที่มีจุดจบของอัลกอริทึม

    เมื่อมองถึงคุณสมบัติ 2 ประเภทของอัลกอริทึม คือ ความไม่กำกวมและความเรียบง่าย สามารถอธิบายอัลกอริทึมในรูปแบบที่คล้ายคลึงกับโปรแกรมคอมพิวเตอร์ ดังนั้นการแปลงอัลกอริทึมแต่ละขั้นตอนไปเป็นโปรแกรมคอมพิวเตอร์ทำได้ง่าย โดยทั่วไปการเขียนอัลกอริทึมมักจะเขียนในรูปแบบของคำสั่ง
ลำลอง (pseudocode) ซึ่งเป็นการรวมภาษาธรรมชาติกับสัญญลักษณ์ คำศัพท์ และ คุณลักษณะอื่น ๆ ที่ใช้ในภาษาโปรแกรมมิ่งระดับสูง อย่างไรก็ตามคำสั่งลำลองนี้ไม่มีมาตรฐานของไวยกรณ์ จึงทำให้ภาษานี้ มีความแตกต่างกันสำหรับนักเขียนโปรแกรมแต่ละคน

คุณสมบัติอัลกอริธึ
            1. คุณสมบัติที่มีความแน่นอนตายตัวที่ทราบได้ อัลกอริทึมหนึ่ง ๆ จะหยุดจบลงหลังจาก ดำเนินการขั้นตอนหนึ่งหรือมากกว่าเป็นจำนวนครั้งที่รู้ได้แน่นอน  ถ้าไม่มีคุณสมบัตินี้ไม่ว่า มนุษย์หรือเครื่องจักรก็ไม่อาจนำไปประยุกต์ใช้ได้
            2. คุณสมบัติที่กำหนดได้ชัดเจน  ในทุกๆขั้นตอนของอัลกอริธึมจะต้องกำหนดไว้อย่าง ชัดเจนไม่กำกวม (ที่เป็นไปได้ทั้งทางคณิตศาสตร์และทางกายภาพ)
            3. คุณสมบัติที่ให้ผลดี  อัลกอริทึมหนึ่ง ๆ จะต้องระบุถึงการกระทำที่ง่ายที่ยังผลในการ ปฏิบัติ  ซึ่งคุณสมบัตินี้จะรับประกันได้ว่าขั้นตอนของอัลกอริทึมสามารถที่ดำเนินการได้ตามปกติ
            4. คุณสมบัติอินพุท  อัลกอริทึมหนึ่ง ๆ จะต้องมีข้อมูลนำเข้าเป็นศูนย์หรือมากกว่า
            5. คุณสมบัติ Output  อัลกอริทึมหนึ่ง ๆ จะก่อให้เกิดผลลัพธ์หนึ่งอย่างหรือมากกว่า ที่เรียกว่าเป็น Output

การสร้างสรรค์อัลกอริธึ
            ทักษะในการสร้างสรรค์อัลกอริธึมเป็นสิ่งสำคัญในการเป็นนักเขียนโปรแกรม ( Programmer ) หรือนักวิเคราะห์ระบบ (System Analyst)  การศึกษาขั้นต้นนี้เพียงแต่พิจารณาเนื้อหาที่สำคัญ ที่ช่วยให้เราได้พัฒนาทักษะหลัก ๆ  เพื่อจะได้ไม่รู้สึกยากจนเกินไปในการสร้างอัลกอริธึม

ขั้นเริ่มแรกของอัลกอริทึม
            สิ่งที่ต้องกระทำในเบื้องต้นที่ทำให้เราเริ่มต้นกระบวนการสร้างสรรค์ในการพัฒนาอัลกอริทึมที่เหมาะสมสำหรับปัญหาที่กำหนด อันเป็นจุดแรกที่ยากของการเป็นนักเขียน โปรแกรม
            1. ให้เขียนรายการปัญหาอย่างชัดเจนที่ต้องการจะแก้ปัญหา  โดยรวมเอาทั้งข้อมูล นำเข้า และผลลัพธ์หรือ Output ที่ต้องการรายงาน
            2. ให้แน่ใจว่าข้อมูลนำเข้าและ Output ที่ต้องการนั้นได้กำหนดไว้ชัดเจน
            3. แยกแยะเรียงรายการเป็นปัญหาย่อย ๆ  แต่ละปัญหาย่อยสามารถที่จะแก้ได้  เพื่อให้สามารถได้มาซึ่งผลลัพธ์ที่ต้องการ
            4. แต่ละปัญหาย่อยให้แยกแยะว่ามีการกระทำใดที่ต้องปฏิบัติให้สมบูรณ์เพื่อแก้ปัญหา
เราควรจะยอมรับความคิดในการแบ่งปัญหาใหญ่ให้เป็นปัญหาที่เล็กย่อยลง  เมื่อไรก็ตามที่เราเห็นว่าเป็นปัญหาที่ใหญ่และซับซ้อนเกินไป  ในแต่ละกรณีจำเป็นต้องแบ่ง ย่อยปัญหาเพื่อให้สามารถเข้าใจขั้นตอนที่จะนำไปแก้ปัญหาที่เล็กย่อยลงไปนั้น

ความเป็นหนึ่งเดียวของอัลกอริทึม
            อันกอริทึมไม่ได้มีเพียงอัลกอริธึมเดียวในการแก้ปัญหาที่กำหนดให้  โดยทฤษฏีแล้วมีอัลกอริทึมที่แตกต่างกันในการแก้ปัญหาเดียวกันนั้นได้หลายแบบ  ซึ่งก็มีผู้คิดค้นมากมายที่คิดค้นอัลกอริทึมขึ้นมา  แต่ก็ไม่ได้แตกต่างกันมากนักโดยนัยสำคัญ  แต่ก็มีอัลกอริทึมอันหนึ่งที่ดูเหมือนว่าจะมีแนวทางในการแก้ปัญหาเดียวกับคนอื่นๆมากที่สุด  เมื่อไรก็ตามที่ผู้เขียนโปรแกรมมีอัลกอริทึมให้เลือกหลายแบบที่มีอยู่ในการแก้ปัญหาเดียวกัน  สิ่งที่ผู้เขียนโปรแกรมจะต้อง พิจารณาเป็นอันดับแรกก็คือคำถามต่อไปนี้อัลกอริทึมใดที่ใช้เวลาคอมพิวเตอร์ในการทำงานมากที่สุดอัลกอริทึมใดที่เมื่อเขียนเป็นโปรแกรมแล้วเปลืองเนื้อที่ในหน่วยความจำน้อยที่สุด อัลกอริทึมใดที่เข้าใจได้ง่ายที่สุดอัลกอริทึมใดที่นำไปใช้ได้เร็วและง่ายที่สุดคำตอบจากคำถามเหล่านี้เป็นสิ่งที่น่าคำนึงถึงอย่างยิ่ง  แต่ก็ไม่เท่ากับความสำคัญของคำถามที่ว่าอัลกอริทึมใดที่แก้ปัญหาได้อย่างถูกต้องที่สุด
สำหรับสองคำถามแรกอาจต้องใช้ความรู้ นอกเหนือขอบข่ายในการเขียนโปรแกรม เบื้องต้น  แต่ในสามคำถามหลัง  ผู้เขียนเริ่มเขียนโปรแกรมเริ่มต้นทำความเข้าใจ  และพัฒนา ทักษะขึ้นได้ไม่ยากนัก
ภายใต้ concept การพัฒนาอัลกอริทึม  โดยการดำเนินการบอกถึงปัญหาทั้งหมดให้ ชัดเจน  ที่แยกแยะเป็นหาออกเป็นปัญหาที่ง่ายลง  เมื่อแก้ปัญหาที่แยกแยะออกให้ง่ายลงได้ ก็เท่ากับแก้ปัญหาโดยรวมได้  จากส่วนที่ง่ายของปัญหานี้  โปรแกรมคอมพิวเตอร์ที่เขียนขึ้น ก่อให้เกิดผลลัพธ์ที่ต้องการ  ซึ่งวิธีการเช่นนี้เรียกว่าการออกแบบโปรแกรมจากบนลงล่าง (top-down)   ในบางครั้งหลายคนได้อ้างถึงขั้นตอนที่จะมีการ
เขียนโปรแกรมจริงว่า เป็นการ เขียนกึ่งรหัสคำสั่งหรือรหัสเทียม( semi code or pseudocode )  ในขั้นตอนนี้จะมีรายละเอียดพอ ที่จะเขียนเป็นรหัสคำสั่งในภาษาที่ใช้เขียนโปรแกรม  ต่อไปจะได้กล่าวถึงในรายละเอียดที่ รหัสเทียมสามารถแทนอัลกอริทึม  อยู่ในรูปข้อความภาษาอังกฤษอย่างย่อ ๆ  และในรูปของผัง หรือไดอะแกรมที่เรียกว่าโฟลว์ชาร์ต(flowcharts)

.

Magna pulvinar tempus

Rutrum bibendum. Proin pellentesque diam non ligula commodo tempor. Vivamus eget urna nibh. Curabitur non fringilla nisl. Donec accumsan interdum nisi, quis tempus.

More

Magna pulvinar tempus

Rutrum bibendum. Proin pellentesque diam non ligula commodo tempor. Vivamus eget urna nibh. Curabitur non fringilla nisl. Donec accumsan interdum nisi, quis tempus.

More
The Endorsements

Aliquam diam consequat

Eget mattis at, laoreet vel amet sed velit aliquam diam ante, dolor aliquet sit amet vulputate mattis amet laoreet lorem.

Nisl adipiscing sed lorem

Eget mattis at, laoreet vel amet sed velit aliquam diam ante, dolor aliquet sit amet vulputate mattis amet laoreet lorem.

Mattis tempus lorem

Eget mattis at, laoreet vel amet sed velit aliquam diam ante, dolor aliquet sit amet vulputate mattis amet laoreet lorem.