วันอังคารที่ 26 พฤศจิกายน พ.ศ. 2556

สรุปภาษาC


ภาษาC
ภาษาคอมพิวเตอร์ หมายถึง ภาษาใดๆ ที่ผู้ใช้งานใช้สื่อสารกับคอมพิวเตอร์ หรือคอมพิวเตอร์ด้วยกัน แล้วคอมพิวเตอร์สามารถทำงานตามคำสั่งนั้นได้ คำนี้มักใช้เรียกแทนภาษาโปรแกรม แต่ความเป็นจริงภาษาโปรแกรมคือส่วนหนึ่งของภาษาคอมพิวเตอร์เท่านั้น และมีภาษาอื่นๆ ที่เป็นภาษาคอมพิวเตอร์เช่นกัน ยกตัวอย่างเช่น HTML เป็นทั้งภาษามาร์กอัปและภาษาคอมพิวเตอร์ด้วย แม้ว่ามันจะไม่ใช่ภาษาโปรแกรม หรือภาษาเครื่องนั้นก็นับเป็นภาษาคอมพิวเตอร์ ซึ่งโดยทางเทคนิคสามารถใช้ในการเขียนโปรแกรมได้ แต่ก็ไม่จัดว่าเป็นภาษาโปรแกรม

ภาษา C
                ภาษาซี เป็นการเขียนโปรแกรมพื้นฐาน สามารถประยุกต์ใช้กับงานต่างๆได้มากมาย ระบบปฏิบัติการคอมพิวเตอร์ ทางคณิตศาสตร์ โปรแกรมทางไฟฟ้า อิเล็กทรอนิกส์ ไมโครคอนโทรลเลอร์ เช่น โปรแกรม MATLAB (The MathWorks - MATLAB and Simulink for Technical Computing) ซึ่งเวลาใช้สามารถพิมพ์ชุดคำสั่งภาษาซีเพิ่มเข้าไปในโปรแกรมคำนวณทางคณิตศาสตร์ ประมวลผลทางสัญญาณไฟฟ้า ทางไฟฟ้าสื่อสารก็ได้ ทำให้ประสิทธิภาพของงานที่ทำดียิ่งขึ้นครับ และยังมีโปรแกรมอื่นๆ ที่มีภาษาซีประยุกต์ใช้กันอีกมากมาย ไม่สามารถนำมากล่าวได้หมด ถึงแม้ว่าภาษาซีอาจจะดูเก่าไปสำหรับคนอื่น แต่ผมว่าควรศึกษาภาษาซีที่เป็นรากฐานของภาษาอื่นๆเสียก่อน เพราะภาษาC++ จาวา (Java) ฯลฯ และ ระบบลีนุกซ์ เป็นระบบที่ถูกพัฒนามาจากระบบยูนิกซ์ซึ่งก็เป็นที่รู้กันทั่วไปว่า ภาษาคู่บารมีของระบบปฏิบัติการตระกูลยูนิกซ์มีการพัฒนามาจากภาษาซีเช่นกัน
                ภาษาซีเป็นภาษาที่บางคนเรียกว่าภาษาระดับกลาง คือไม่เป็นภาษาระดับต่ำแบบแอสเซมบลีหรือเป็นภาษาสูงแบบ เบสิค โคบอล ฟอร์แทรน หรือ ปาสคาล เนื่องจากคุณสามารถจะจัดการเกี่ยวกับเรื่องของพอยน์เตอร์ได้อย่างอิสระ และบางทีคุณก็สามารถควบคุมฮาร์ดแวร์ผ่านทาง ภาษาซี ได้ราวกับคุณเขียนมันด้วยภาษาแอสเซมบลี ด้วยข้อดีเหล่านี้เองทำให้โปรแกรมที่ถูกเขียนด้วยภาษาซีมีความเร็วในการปฏิบัติงานสูงกว่าภาษาทั่วๆไป แต่ก็ต้องแลกกับการเรียนรู้และการฝึกฝนอย่างหนัก
ประวัติภาษาซี
                ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำ ถูกพัฒนาโดยเดนนิส ริดชี (Dennis Ritche) แห่งห้องทดลองเบลล์ (Bell Laboratories) ที่เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสได้ใช้หลักการของภาษา บีซีพีแอล (BCPL : Basic Combine Programming Language) ซึ่งพัฒนาขึ้นโดยเคน ทอมสัน (Ken Tomson) การออกแบบและพัฒนาภาษาซีของเดนนิส ริดชี มีจุดมุ่งหมายให้เป็นภาษาสำหรับใช้เขียนโปรแกรมปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ ทั้งนี้เพราะ ภาษาซีมีวิธีใช้ข้อมูลและมีโครงสร้างการควบคุมการทำงานของโปรแกรมเป็นอย่างเดียวกับภาษาของโปรแกรมระดับสูงอื่นๆ จึงถือว่าเป็นภาษาระดับสูง ในด้านที่ถือว่าภาษาซีเป็นภาษาระดับต่ำ เพราะภาษาซีมีวิธีการเข้าถึงในระดับต่ำที่สุดของฮาร์ดแวร์ ความสามารถทั้งสองด้านของภาษานี้เป็นสิ่งที่เกื้อหนุนซึ่งกันและกัน ความสามารถระดับต่ำทำให้ภาษาซีสามารถใช้เฉพาะเครื่องได้ และความสามารถระดับสูง ทำให้ภาษาซีเป็นอิสระจากฮาร์ดแวร์ ภาษาซีสามารถสร้างรหัสภาษาเครื่องซึ่งตรงกับชนิดของข้อมูลนั้นได้เอง ทำให้โปรแกรมที่เขียนด้วยภาษาซีที่เขียนบนเครื่องหนึ่ง สามารถนำไปใช้กับอีกเครื่องหนึ่งได้ ประกอบกับการใช้พอยน์เตอร์ในภาษาซี นับได้ว่าเป็นตัวอย่างที่ดีของการเป็นอิสระจากฮาร์ดแวร์
วิวัฒนาการของภาษาซี
ค.ศ. 1970 มีการพัฒนาภาษา โดย Ken Thompson ซึ่งทำงานบนเครื่อง DEC PDP-7 ซึ่ง ทำงานบนเครื่องไมโครคอมพิวเตอร์ไม่ได้ และยังมีข้อจำกัดในการใช้งานอยู่ (ภาษา สืบทอดมาจาก ภาษา BCPL ซึ่งเขียนโดย Marth Richards)
ค.ศ. 1972 Dennis M. Ritchie และ Ken Thompson ได้สร้างภาษา เพื่อเพิ่มประสิทธิภาพ ภาษา ให้ดียิ่งขึ้น ในระยะแรกภาษา ไม่เป็นที่นิยมแก่นักโปรแกรมเมอร์โดยทั่วไปนัก
ค.ศ. 1978 Brian W. Kernighan และ Dennis M. Ritchie ได้เขียนหนังสือเล่มหนึ่งชื่อว่า The C Programming Language และหนังสือเล่มนี้ทำให้บุคคลทั่วไปรู้จักและนิยมใช้ภาษา ในการเขียน โปรแกรมมากขึ้น
แต่เดิมภาษา ใช้ Run บนเครื่องคอมพิวเตอร์ 8 bit ภายใต้ระบบปฏิบัติการ CP/M ของ IBM PC ซึ่งในช่วงปี ค. ศ. 1981 เป็นช่วงของการพัฒนาเครื่องไมโครคอมพิวเตอร์ ภาษา จึงมี บทบาทสำคัญในการนำมาใช้บนเครื่อง PC ตั้งแต่นั้นเป็นต้นมา และมีการพัฒนาต่อมาอีกหลาย ๆ ค่าย ดังนั้นเพื่อกำหนดทิศทางการใช้ภาษา ให้เป็นไปแนวทางเดียวกัน ANSI (American National Standard Institute) ได้กำหนดข้อตกลงที่เรียกว่า 3J11 เพื่อสร้างภาษา มาตรฐานขึ้นมา เรียนว่า ANSI C
ค.ศ. 1983 Bjarne Stroustrup แห่งห้องปฏิบัติการเบล (Bell Laboratories) ได้พัฒนาภาษา C++ ขึ้นรายละเอียดและความสามารถของ C++ มีส่วนขยายเพิ่มจาก ที่สำคัญ ๆ ได้แก่ แนวความคิดของการเขียนโปรแกรมแบบกำหนดวัตถุเป้าหมายหรือแบบ OOP (Object Oriented Programming) ซึ่งเป็นแนวการเขียนโปรแกรมที่เหมาะกับการพัฒนาโปรแกรมขนาดใหญ่ที่มีความสลับซับซ้อนมาก มีข้อมูลที่ใช้ในโปรแกรมจำนวนมาก จึงนิยมใช้เทคนิคของการเขียนโปรแกรมแบบ OOP ในการพัฒนาโปรแกรมขนาดใหญ่ในปัจจุบันนี้


วันอาทิตย์ที่ 17 พฤศจิกายน พ.ศ. 2556

สรุป Flowchart

Flowchart คืออะไร

Flowchart คืออะไร
flowchart เป็นแผนผังประเภทหนึ่งที่แสดงกระบวนการหรือ algorithm ที่จะแสดงเป็นขั้นเป็นตอน โดยเชื่อมต่อระหว่างกระบวนการหรือแสดงเส้นทางการไหลโดยเส้นและลูกศร นิยมใช้กันตั้งแต่ปี 1960 โดยใช้เป็นแผนที่ logic ของโปรแกรมคอมพิวเตอร์ ใช้ในการพัฒนางาน ใช้แสดงกระบวนการทำงานในปัจจุบันเพื่อหาจุดบกพร่องของงาน

เมื่อไหร่จึงจะใช้ Flowchart
ควรใช้เมื่อมีความต้องการในการพัฒนากระบวนการใดๆ ในปัจจุบัน(as-is) ซึ่ง flowchart จะช่วยให้ทีมงานหรือผู้ที่เกี่ยวข้องในการพัฒนากระบวนการเข้าใจถึงกระบวนการที่เป็นอยู่ในปัจจุบัน และสามารถนำไปเปรียบเทียบกับกระบวนการในอนาคต(to be) เพื่อพัฒนากระบวนการให้มีประสิทธิภาพมากยิ่งขึ้น
- ใช้เมื่อต้องการวิเคราะห์หรือกำหนดกระบวนการ ทั้งรายละเอียดของ action และการตัดสินใจ
- ใช้เมื่อต้องการหาปัญหาได้อย่างตรงจุดในกระบวนการ
- ใช้เมื่อประเมินศักยภาพหรือประสิทธิภาพของกระบวนการ เพื่อช่วยระบุว่าต้องทำอย่างไรจึงจะเป็นวิธีที่ดีที่สุด
- ใช้เมื่อต้องการสื่อสารหรือฝึกอบรมเบื้องต้น เพื่อให้มีความเข้าใจที่ตรงกันในรายละเอียดของกระบวนการ

ประโยชน์ของการใช้ Flowchart
- ทำให้ทุกคนเข้าใจกระบวนการที่ถูกจัดทำเป็นลำดับภาพ(ให้ทุกคนเห็นภาพเดียวกัน) : โดยทั่วไปแต่ละคนอาจมีแนวความคิดที่แตกต่างกันไปเกี่ยวการกระบวนการทำงาน flowchart จึงสามารถช่วยให้เข้าใจตรงกันในขั้นตอนหรือลำดับของกระบวนการ และยังแสดงให้เห็นถึงความเข้าใจของผู้เขียนกระบวนการที่เขียนขึ้นมาว่าถูกต้องกับสิ่งที่เป็นจริงหรือไม่
- เป็นเครื่องมือสำหรับฝึกอบรมพนักงาน : เป็นเครื่องมือช่วยในการฝึกอบรมพนักงานใหม่หรือเก่าในการทำงานให้ได้ตามมาตรฐานกระบวนการที่ได้มีการกำหนดไว้
- ทำให้ทราบปัญหาและโอกาสในการพัฒนากระบวนการ : ถ้ามองลึกลงไปในแต่ละขั้นตอนของกระบวนการและภาพ diagram จะเห็นปัญหาได้อย่างชัดเจน ซึ่งเป็นโอกาสในวิเคราะห์ปัญหาในกระบวนการได้ตรงจุด ทราบถึงขั้นตอนที่ซ้ำซ้อน และงานที่วนไปวนมาไม่มีประสิทธิภาพ

สัญลักษณ์ที่ใช้ใน Flowchart
รูปไข่ (Oval) : ใช้แสดงจุดเริ่มต้นและจุดสิ้นสุดของกระบวนการ
กล่อง (Box) : แสดงถึงขั้นตอนหรือกิจกรรมในแต่ละกระบวน
เพชร (Diamond) : แสดงจุดที่ต้องตัดสินใจ เช่น ใช่/ไม่ใช่ หรือ ไป/ไม่ไป โดยในแต่ละทางเลือกจะต้องมีทางใดทางหนึ่งที่เป็นคำตอบเสมอ
วงกลม (Circle) : แสดงการเชื่อมต่อภายในหน้าเดียวกัน โดยจะมีตัวเลขในวงกลมแสดงว่าจุดใดที่มีการเชื่อมต่อกัน
รูปห้าเหลี่ยม (Pentagon) : แสดงถึงจุดเชื่อมต่อไปยังหน้าอื่นๆ โดยจะมีตัวหนังสือเขียนกำกับว่าเชื่อมต่อกับหน้าใด
เส้นการไหล : แสดงทิศทางการไหลของกระบวนการ

ระดับในการเขียนรายละเอียดของ Flowchart
     เมื่อต้องการพัฒนาอะไรบางอย่างโดยใช้ flowchart สิ่งที่ควรพิจารณาคือใครจะเป็นผู้นำข้อมูลที่เราเขียนไปใช้งาน และต้องการใช้งานข้อมูลมากน้อยเพียงใด ซึ่งจะช่วยให้เราทราบถึงระดับของรายละเอียดการเขียน flowchart ได้
Macro Level : ระดับนี้เป็นระดับที่ไม่จำเป็นต้องมีรายละเอียดมากในระดับการทำงานของกระบวนการ แต่จะเขียนเป็นภาพกว้างๆ เพียงพอสำหรับจุดประสงค์การนำ flowchart ไปใช้งาน โดยทั่วไปแล้วระดับ macro level นี้จะเขียนไม่เกิน 6 ขั้นตอน ตัวอย่างเช่น เราอยู่บนเครื่องบินที่ระดับ 30,000 ฟุตเหนือระดับน้ำทะเล แล้วมองลงมาเห็นทะเล พื้นดิน ภูเขา
Mini Level : เป็นระดับที่อยู่กึ่งกลางระหว่างภาพกว้างๆ macro level กับ micro level ซึ่งโดยปกติแล้วจะเจาะลงไปในส่วนใดส่วนหนึ่งของ flowchart ระดับ macro level ตัวอย่างเช่น เราอยู่บนเครื่องบินที่ระดับ 10,000 ฟุต จากระดับน้ำทะเล แล้วมองเห็นบนพื้นดินมีเมืองหลายๆ เมือง หรือมีภูเขาหลายๆ ลูก ฯลฯ
Micro Level : เป็นมุมมองระดับพื้นดินที่เห็นรายละเอียดได้ครบทุกส่วน โดยจะบันทึกทุกข้อมูล ทุกกิจกรรมหรือทุกการกระทำ ทุกการตัดสินใจ ซึ่งรูปแบบนี้จะใช้เพื่อเป็นตัวบอกวิธีการทำงานอย่างละเอียด เช่น เราอยู่บนเครื่องบินระดับที่สามารถมองเห็นได้ทุกๆ รายละเอียดของเมือง เห็นทุกบ้าน และเห็นไปถึงภายในบ้าน

วิธีการเขียน Flowchart
- ระบุผู้ที่เป็นคนเขียน flowchart ให้ถูกต้อง
- พิจารณาว่าอะไรที่คาดหวังว่าจะได้จาก flowchart
- ระบุว่าใครที่จะใช้ flowchart
- กำหนดระดับในการเขียน flowchart ที่ต้องการ
- กำหนดขอบเขตของกระบวนการหรือการเขียน flowchart

สิ่งสำคัญที่จะทำให้การเขียน Flowchart ประสบความสำเร็จ
- เริ่มต้นด้วยภาพกว้างๆ ก่อน : เขียน flowchart ในระดับ macro level ก่อนเป็นอันดับแรก หลังจากนั้นจะสามารถเขียนในระดับที่ลึกลงไปในแต่ละส่วนได้
- เข้าไปสังเกตการณ์ในกระบวนการ : ทางที่จะทำให้การเขียน flowchart ประสบความสำเร็จได้ต้องเข้าไปเห็นกระบวนการทำงานจริง จึงจะเห็นภาพการทำงานที่เกิดขึ้นได้อย่างครบถ้วน
- บันทึกขั้นตอนของกระบวนการจากการเข้าไปสังเกตการณ์ : บันทึกขั้นตอนที่เกิดขึ้น เขียนขั้นตอนบนบัตรบันทึก(Post-it) จัดเรียงลำดับไว้ โดยใช้สีที่แตกต่างกันเพื่อแสดงกลุ่มการทำงาน ซึ่งจะทำให้เข้าใจกระบวนการทำงานได้มากขึ้น
- จัดเรียงลับดับเป็นขั้นเป็นตอน : จัดเรียงบัตรบันทึก(Post-it) ที่บันทึกไว้จากการเข้าไปสังเกตการณ์ วางให้ครบตามจริงที่บันทึกมา
- เขียน flowchart : เขียนจากข้อมูลต่างๆ ที่ได้ไปสังเกตการณ์ การบันทึก และจัดเรียงลับดับขั้นตอน

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

3. สัญลักษณ์ในการเขียนผังงาน
เป็นสัญลักษณ์ตามมาตรฐานของ ANSI (the ANSI flowchart symbols)

ยังมีสัญลักษณ์ของผังงานอีกหลายแบบที่ช่วยในการเขียนโปรแกรมให้สะดวกขึ้น โดยเฉพาะอย่างยิ่งในระบบคอมพิวเตอร์ที่มีการเชื่อมระบบคอมพิวเตอร์เป็นเครือข่าย
4 การจัดลำดับผังงาน
การเขียนโปรแกรมอย่างมีโครงสร้าง (Structured Programming) ช่วยให้การลำดับขั้นตอนการเขียนคำสั่งการทำงานถูกต้อง ไม่สับสน รูปแบบของผังงานเพื่อใช้ในการเขียนโปรแกรมอย่างมีโครงสร้างมี 4 แบบ คือ
       4.1 แบบตามลำดับ (Sequence structure)
       รูปแบบคือ การทำงานแต่ละคำสั่งจากคำสั่งหนึ่งไปยังอีกคำสั่งหนึ่งตามลำดับ
4.2 แบบทางเลือก (Selection structure)
     รูปแบบคือ เลือกทำตามคำสั่งตามเงื่อนไขที่กำหนด มี 2 แบบ คือ
          1) IF <เงื่อนไข> THEN <ทำคำสั่ง>
          2) If <เงื่อนไข> THEN <ทำคำสั่งที่ 1> ELSE <ทำคำสั่งที่ 2>
     รูปแบบ 1) IF <เงื่อนไข> THEN <ทำคำสั่ง>
รูปแบบ 2) IF <เงื่อนไข> THEN <ทำคำสั่งที่ 1> ELSE <ทำคำสั่งที่ 2>
4.3 แบบวนรอบ (Loop structure)
    รูปแบบ การทำคำสั่งเดิมซ้ำการหลายรอบตามเงื่อนไขที่กำหนด มี 2 แบบคือ
    1) แบบ DOWHILE หมายถึง ทำคำสั่งซ้ำ ๆ กันในขณะที่เงื่อนไขเป็นจริง
    2) แบบ DOUNTIL หมายถึง ทำคำสั่งซ้ำ ๆ กันจนกระทั่งเงื่อนไขเป็นจริง 

1) แบบ DOWHILE เป็นการทำงานซ้ำ ๆ กันภายใต้เงื่อนไขที่เป็นจริง จนกว่าเงื่อนไขจะเป็นเท็จ จึงจะหยุดทำงาน และออกไปทำคำสั่งต่อไป
2) แบบ DOUNTIL เป็นการทำงานซ้ำ ๆ กันภายใต้เงื่อนไขที่เป็นเท็จ จนกว่าเงื่อนไขที่กำหนดไว้จะเป็นจริง จึงจะหยุดและออกไปทำคำสั่งอื่นต่อไป



วันอังคารที่ 5 พฤศจิกายน พ.ศ. 2556

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

  

3. รูปแบบของผังงานมีอะไรบ้าง

3.1  เรียงลำดับ
3.2 รูปแบบที่มีการกำหนดเงื่อนไข
3.3 รูปแบบที่มีการทำงานวนรอบ