ในสภาพแวดล้อมของ MS Visual C# การพัฒนาแอพลิเคชันขึ้นมาหนึ่งชิ้นเรียกว่าการสร้างโซลูชัน
)solution) ซึ่งประกอบไปด้วยโปรเจ็กต์ (project) ตั้งแต่หนึ่งหรือมากกว่า โดยแต่ละโปรเจ็กต์เป็นชิ้นส่วน
ของซอฟต์แวร์ที่อาจเป็นส่วนของโปรแกรมหลัก หรือส่วนไลบรารี (library) ที่ถูกเรียกใช้โดยโปรเจ็กต์
อื่น ๆ
การใช้งานโปรแกรมภาษา C# มักจะมีการใช้งานตัวระบุ (identifier) อยู่ทั่วไปภายในโปรแกรม เช่น
ชื่อของเนมสเปซ คลาส ตัวแปร ค่าคงที่ โดยการตั้งชื่อตัวระบุจะต้องตั้งชื่อตามกฎเกณฑ์ที่กำหนดไว้
อย่างไรก็ตาม การตรวจสอบว่าโปรแกรมที่เขียนขึ้นทำงานได้ถูกต้องตามที่ต้องการจำเป็นต้องมีการ
แสดงผลลัพธ์ให้เห็นในรูปแบบใดรูปแบบหนึ่ง ในที่นี้เราอาศัยคำสั่งที่ใช้ในการพิมพ์ข้อความและค่าของ
นิพิจน์ต่าง ๆ ออกทางจอภาพ ได้แก่ คำสั่ง Write และ WriteLine ซึ่งถูกนิยามไว้ในคลาสชื่อ Console
และเนมสเปสชื่อ System สองคำสั่งนี้มีการใช้งานในลักษณะเดียวกัน แตกต่างกันที่คำสั่ง WriteLine จะ
พิมพ์ข้อความตามด้วยการขึ้นบรรทัดใหม่
ภาษา C# เป็นภาษาโปรแกรมเชิงวัตถุ (object-oriented programming language) ที่ถูกพัฒนาขึ้นมา
โดยบริษัทไมโครซอฟต์ การพัฒนาโปรแกรมคอมพิวเตอร์ด้วยภาษา C# นั้นจะประกอบด้วยขั้นตอนดังนี้
• วิเคราะห์ปัญหาและความต้องการในการพัฒนาโปรแกรม เช่น โปรแกรมจะติดต่อกับผู้ใช้อย่างไร
ข้อมูลที่ผู้ใช้จะป้อนให้กับโปรแกรมเป็นอย่างไร และผลลัพธ์จะถูกแสดงผลอย่างไร
• ออกแบบขั้นตอนวิธี โดยแสดงการทำงานของโปรแกรมในภาพรวมออกมาเป็นลำดับขั้นตอน แต่
ละขั้นตอนมีความชัดเจนและสามารถเปลี่ยนให้อยู่ในรูปคำสั่งภาษา C# ได้โดยง่าย
• นำขั้นตอนวิธีที่ออกแบบไว้มาสร้างเป็นไฟล์โปรแกรมรหัสต้นฉบับ (source code) ที่ถูกต้อง
ตามโครงสร้างและไวยกรณ์ของตัวภาษา C# ทั้งนี้ไฟล์รหัสต้นฉบับต้องมีนามสกุล .cs เสมอ
เช่น prog1.cs
• แปลงรหัสต้นฉบับให้อยู่ในรูปรหัสภาษาเครื่องที่คอมพิวเตอร์เข้าใจและทำงานตามคำสั่งได้
ขั้นตอนนี้ต้องใช้โปรแกรมที่เรียกว่า คอมไพเลอร์ (compiler) ไฟล์รหัสภาษาเครื่องที่ถูกสร้างขึ้น
จากคอมไพเลอร์จะมีนามสกุล .exe ซึ่งย่อมาจาก executable หมายถึงไฟล์ที่ถูกเรียกทำงานได้
• ทดสอบการทำงานของโปรแกรม หากพบข้อผิดพลาดให้ตรวจสอบความถูกต้องในขั้นตอนที่ผ่าน
มา ซึ่งอาจหมายถึงการแก้ไขโปรแกรม ขั้นตอนวิธี หรือแม้กระทั่งวิเคราะห์ปัญหาและความต้องการ
ใหม่
ขั้นตอนการพัฒนาโปรแกรมดังกล่าวนี้นอกจากจะสามารถจะใช้กับภาษา C# แล้วยังสามารถนำไป
ประยุกต์ใช้กับภาษาอื่น ๆ ได้ด้วย
วันพฤหัสบดีที่ 30 มิถุนายน พ.ศ. 2554
วันจันทร์ที่ 27 มิถุนายน พ.ศ. 2554
ภาษาปาสคาล Pascal
คงเคยได้ยินคำว่าภาษาคอมพิวเตอร์มาบ้างแล้ว ในที่นี้จะได้กล่าวถึงความหมายของคำว่า “ภาษาคอมพิวเตอร์” ให้ชัดเจนอีกครั้ง ภาษาคอมพิวเตอร์ หมายถึง สื่อที่ผู้เขียนโปรแกรมสามารถใช้ติดต่อกับเครื่องคอมพิวเตอร์ เพื่อให้เกิดการทำงานตามวัตถุประสงค์ที่ต้องการ ตามความหมายของการเขียนโปรแกรมที่ศึกษาในหัวข้อที่แล้ว ภาษาคอมพิวเตอร์คือสื่อที่ใช้สร้างโปรแกรม ซึ่งหมายถึง ชุดคำสั่งที่ใช้สำหรับสั่งให้คอมพิวเตอร์ทำงานเพื่อให้ได้ผลลัพธ์ที่ต้องการ โดยอาศัยข้อมูลที่กำหนดให้ ซึ่งในที่นี้ผลลัพธ์ก็เปรียบได้กับคำตอบหรือข้อมูลออกของปัญหา ในขณะที่ข้อมูลที่กำหนดก็คือเงื่อนไขหรือข้อมูลของปัญหาซึ่งผู้แก้ปัญหาได้วิเคราะห์ไว้
ภาษาคอมพิวเตอร์แบ่งเป็นระดับต่ำและภาษาระดับสูง การเขียนโปรแกรมด้วยภาษาระดับต่ำนั้นต้องอาศัยความรู้เกี่ยวกับฮาร์ดแวร์และระบบเลขฐานสอง ซึ่งเป็นเรื่องที่ทำความเข้าใจได้ยาก ถึงแม้จะมีการกำหนดรหัสหรือสัญลักษณ์ที่ทำให้เข้าใจหรือจำได้ง่ายขึ้น แต่ก็ยังคงมีความยุ่งยากในการจดจำ จึงได้มีความพยายามออกแบบภาษาระดับสูงสำหรับคอมพิวเตอร์ ซึ่งผู้ใช้สามารถจดจำได้ง่ายและเขียนโปรแกรมได้สะดวก เนื่องจากในการใช้งานภาษาระดับสูงผู้เรียนไม่จำเป็นต้องเรียนรู้การทำงานภายในหน่วยประมวลผลกลางของเครื่องและไม่จำเป็นต้องรู้เรื่องระบบเลขฐานสอง ภาษาปาสคาลเป็นภาษาระดับสูงภาษาหนึ่งที่ใช้หลักการของการโปรแกรมแบบโครงสร้างในการเขียนโปรแกรม และเป็นภาษาที่เป็นระบบ ซึ่งง่ายต่อการตรวจสอบความผิดพลาดและความเข้าใจการทำงาน จึงเหมาะแก่การเรียนรู้วิธีการเขียนโปรแกรมในระดับเริ่มต้น
ภาษาปาสคาลจัดเป็นภาษาในกลุ่มโปรแกรมแบบโครงสร้าง (Structured Programming) ซึ่งมุ่งเน้นให้มีการแบ่งโปรแกรมออกเป็นส่วนย่อย ๆ ชัดเจน จากนั้นจึงค่อยเชื่อมโยง ทำให้สามารถจัดการได้โดยง่าย ภาษาปาสคาลจึงเป็นภาษาคอมพิวเตอร์ที่เหมาะสำหรับสร้างพื้นฐานความคิดในการเขียนโปรแกรมโครงสร้างให้แก่นักเรียน เพื่อให้เป็นผู้พัฒนาโปรแกรมที่มีทักษะในการเขียนโปรแกรมอย่างมีหลักเกณฑ์และถูกต้อง สามารถอ่านและทำความเข้าใจได้โดยง่าย อีกทั้งภาษาปาสคาลเป็นภาษาที่มีโครงสร้างโปรแกรมชัดเจน ซึ่งง่ายต่อการเรียนรู้
ภาษาคอมพิวเตอร์แบ่งเป็นระดับต่ำและภาษาระดับสูง การเขียนโปรแกรมด้วยภาษาระดับต่ำนั้นต้องอาศัยความรู้เกี่ยวกับฮาร์ดแวร์และระบบเลขฐานสอง ซึ่งเป็นเรื่องที่ทำความเข้าใจได้ยาก ถึงแม้จะมีการกำหนดรหัสหรือสัญลักษณ์ที่ทำให้เข้าใจหรือจำได้ง่ายขึ้น แต่ก็ยังคงมีความยุ่งยากในการจดจำ จึงได้มีความพยายามออกแบบภาษาระดับสูงสำหรับคอมพิวเตอร์ ซึ่งผู้ใช้สามารถจดจำได้ง่ายและเขียนโปรแกรมได้สะดวก เนื่องจากในการใช้งานภาษาระดับสูงผู้เรียนไม่จำเป็นต้องเรียนรู้การทำงานภายในหน่วยประมวลผลกลางของเครื่องและไม่จำเป็นต้องรู้เรื่องระบบเลขฐานสอง ภาษาปาสคาลเป็นภาษาระดับสูงภาษาหนึ่งที่ใช้หลักการของการโปรแกรมแบบโครงสร้างในการเขียนโปรแกรม และเป็นภาษาที่เป็นระบบ ซึ่งง่ายต่อการตรวจสอบความผิดพลาดและความเข้าใจการทำงาน จึงเหมาะแก่การเรียนรู้วิธีการเขียนโปรแกรมในระดับเริ่มต้น
ภาษาปาสคาลจัดเป็นภาษาในกลุ่มโปรแกรมแบบโครงสร้าง (Structured Programming) ซึ่งมุ่งเน้นให้มีการแบ่งโปรแกรมออกเป็นส่วนย่อย ๆ ชัดเจน จากนั้นจึงค่อยเชื่อมโยง ทำให้สามารถจัดการได้โดยง่าย ภาษาปาสคาลจึงเป็นภาษาคอมพิวเตอร์ที่เหมาะสำหรับสร้างพื้นฐานความคิดในการเขียนโปรแกรมโครงสร้างให้แก่นักเรียน เพื่อให้เป็นผู้พัฒนาโปรแกรมที่มีทักษะในการเขียนโปรแกรมอย่างมีหลักเกณฑ์และถูกต้อง สามารถอ่านและทำความเข้าใจได้โดยง่าย อีกทั้งภาษาปาสคาลเป็นภาษาที่มีโครงสร้างโปรแกรมชัดเจน ซึ่งง่ายต่อการเรียนรู้
วันพฤหัสบดีที่ 23 มิถุนายน พ.ศ. 2554
พื้นฐานโปรแกรมภาษา C (Introduction to C Programming)
ก่อนอื่นของแนะนำพื้นฐานเกี่ยวกับคอมพิวเตอร์กันซักนิด ก่อนที่จะเริ่มเรียนรู้ภาษา C กัน หน่วยสำคัญที่สุดของคอมพิวเตอร์ก็คือ หน่วยประมวลผลหรือที่เรียกกันว่า CPU โดยปกติ CPU จะมีภาษาของตัวเองที่เรียกว่า ภาษาเครื่อง (Machine Language) ซึ่งจะเป็นภาษาที่ประกอบไปด้วยเลขฐานสองมากมาย ดังนั้นการที่จะเขียนโปรแกรมควบคุมการทำงานของคอมพิวเตอร์ โดยใช้ภาษาเครื่องโดยตรงนั้นจึงทำได้ยาก จึงได้มีการพัฒนาตัวแปรภาษาเครื่องที่เรียกว่า โปรแกรมภาษาระดับสูงขึ้นมา หรือที่เรียกว่า High Level Languages โดยภาษาในระดับสูงเหล่านี้ จะมีลักษณะรูปแบบการเขียน (Syntax) ที่ทำให้เข้าใจได้ง่ายต่อการสื่อสารกับผู้พัฒนา และถูกออกแบบมาให้ง่ายต่อการใช้งาน และจะเปลี่ยนคำสั่งจากผู้ใช้งาน ไปเป็นเป็นภาษาเครื่อง เพื่อที่จะควบคุมการทำงานของคอมพิวเตอร์ต่อไป ตัวอย่างของโปรแกรมภาษาระดับสูง ได้แก่ COBOL ใช้กันมากสำหรับโปรแกรมทางด้านธุรกิจ, Fortran ใช้กันมากสำหรับการพัฒนาโปรแกรมด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ เพราะง่ายต่อการคำนวณ, Pascal มีใช้กันทั่วไป แต่เน้นสำหรับการพัฒนาเครื่องมือสำหรับการเรียนการสอน, C & C++ ใช้ทั่วไป ปัจจุบันมีผู้เลือกที่จะใช้กันอย่างแพร่หลาย, PROLOG เน้นหนักไปทางด้านงานประเภท AI และ JAVA ใช้ได้ทั่วไป ปัจจุบันเริ่มมีผู้หันมาสนใจกันมากและเพิ่มขึ้นอย่างรวดเร็ว
คราวนี้เราลองมาเตรียมตัวกันซักนิก ก่อนที่จะลงมือพัฒนาโปรแกรมคอมพิวเตอร์ ขั้นแรก เราต้องศึกษารูปแบบความต้องการของโปรแกรมที่จะพัฒนา จากนั้นก็วิเคราะห์ถึงปัญหาตลอดจนวิธีการแก้ปัญหา จากนั้นจึงนำเอาความคิดในการแก้ปัญหาอย่างเป็นขั้นตอน ไปเขียนในรูปแบบของโปรแกรมภาษาในระดับสูง ซึ่งจะอยู่ในรูปแบบของ Source Program หรือ Source Code จากนั้นเราก็จะใช้ Complier ของภาษาที่เราเลือก มาทำการ Compile Source code หรือกล่าวง่ายๆ คือแปลง Source code ของเราให้เป็นภาษาเครื่องนั่นเอง ซึ่งในขั้นตอนนี้ ผลที่ได้ เราจะเรียกว่า Object code จากนั้น Complier ก็จะทำการ Link หรือเชื่อม Object code เข้ากับฟังก์ชันการทำงานใน Libraries ต่างๆ ที่จำเป็นต่อการใช้งาน แล้วนำไปไว้ในหน่วยความจำ แล้วเราก็จะสามารถ Run เพื่อดูผลของการทำงานโปรแกรมได้ หากโปรแกรมมีข้อผิดพลาด เราก็จะทำการแก้ หรือที่เรียกกันในภาษาคอมพิวเตอร์ว่า การ Debug นั่นเอง
ภาษา C เป็นโปรแกรมภาษาระดับสูง ถูกพัฒนาขึ้นในปี 1972 ที่ AT&T Bell Lab เราสามารถใช้ภาษา C มาเขียนเป็นคำสั่งต่างๆ ที่คอมพิวเตอร์สามารถเข้าใจได้ และกลุ่มของคำสั่งเหล่านี้ เราก็เรียกกันว่า อัลกอริธึม ได้มีผู้ให้คำจำกัดความของคำว่า อัลกอริธึม ว่าเป็น “A precise description of a step-by-step process that is guaranteed to terminate after a finite number of steps with a correct answer for every particular instance of an algorithmic problem that may occur.” สำหรับ Compiler ภาษา C ที่มีในปัจจุบัน มี 2 ค่ายใหญ่ๆ ที่มีผู้คนสนใจใช้กันมากได้แก่ Microsoft และ Borland การใช้งาน Compiler ทั้งสองตัวนี้ สามารถเรียนรู้ได้ไม่ยากนัก เราจึงจะมาเริ่มต้นที่การเขียนโปรแกรมในภาษา C กันเลย เราลองมาเริ่มจากตัวอย่างการเขียน ภาษา C แบบ ง่ายๆ กันก่อนกับโปรแกรม Hello World
#include
main()
{
printf("Hello World !! ");
}
บรรทัดแรก #include เป็นการบอกว่าให้ทำการรวม Header file ที่ชื่อว่า stdio.h (.h = header) ซึ่งเป็น header ที่เกี่ยวข้องกับการรับและให้ข้อมูล (Standard Input Output) นอกจาก stdio.h แล้ว ก็ยังมี Header อื่นๆ ที่ผู้พัฒนาสามารถที่จะเรียกใช้งาน Function ที่จำเป็นจาก Header นั้นๆ ได้ อาทิเช่น
รู้จัก Header File กันไปล่ะ คราวนี้ เราลองมาดูบรรทัดถัดไปกัน ก็คือ ฟังก์ชัน main() จะเป็นจุดเริ่มต้นของโปรแกรม และโปรแกรมทุกโปรแกรมในภาษา C จะต้องมี Function main() นี้ โดยส่วนมาก เราจะใช้ Function main() ในการกำหนดค่าเริ่มต้นต่างๆ ของโปรแกรม จากนั้นจึงเข้าสู่ Function ต่างๆ ที่ผู้พัฒนา ได้กำหนดขึ้นไว้
บรรทัดถัดมาจะเป็นเครื่องหมาย { ซึ่งเป็นเครื่องหมายบ่งบอกขอบเขตของ Function โดยขอบเขตของฟังก์ชัน จะเปิดและปิดโดยใช้เครื่องหมายเปิด { และเครื่องหมายปิด } ตามลำดับ ภายใน Function main() จะมีคำสั่ง (Statement) printf("Hello World !! "); ซึ่ง printf เป็น Function ในภาษา C ทำหน้าที่ให้โปรแกรม ทำการแสดงผลออกทางหน้าจอว่า Hello World !! และทุกครั้ง ผู้พัฒนาจะต้องทำการจบคำสั่งหรือ Statement ด้วยเครื่องหมาย semi-colon ;
ดังนั้นรูปแบบของการเขียนโปรแกรม จึงเขียนออกมาในรูปแบบดังนี้
// ข้อความที่อยู่ข้างหลังเครื่องหมาย // จะเป็นคำอธิบายโปรแกรม
#include
void main()
{
constant declarations; // การกำหนดค่าคงที่ต่างๆ
variable declarations; // การกำหนดตัวแปรต่างๆ
executable statements; // คำสั่งการทำงานของโปรแกรม
}
การอ่านข้อมูลและการแสดงผล (Input & Output)
รูปแบบการใช้งานฟังก์ชัน printf จะทำการพิมพ์ในรูปแบบที่ เริ่มต้นด้วย Format ที่ต้องการจะพิมพ์ และตามด้วยตัวแปรที่ต้องการพิมพ์ ดังนี้
printf( const char *format [, argument]... );
สำหรับการนำข้อมูลเข้าก็เช่นกัน จะใช้ฟังก์ชัน scanf ซึ่งจะเป็นฟังก์ชันสำหรับอ่านข้อมูลจากคีย์บอร์ด และจะนำข้อมูลที่ User ทำการพิมพ์ไปเก็บไว้ใน argument โดยแต่ละ argument จะต้องเป็นตัวแปรที่เรียกว่า pointer (รายละเอียดจะได้กล่าวต่อไป) และมีชนิดที่ตัวแปรที่สัมพันธ์กับที่ได้กำหนดไว้ใน Format รูปแบบการใช้งานของฟังก์ชัน scanf สามารถเขียนได้ดังนี้
scanf( const char *format [,argument]... );
บทความจาก ดร. จันทร์จิรา สินทนะโยธิน, วิศรุต พลสิทธิ
สำนักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ (สวทช)
คราวนี้เราลองมาเตรียมตัวกันซักนิก ก่อนที่จะลงมือพัฒนาโปรแกรมคอมพิวเตอร์ ขั้นแรก เราต้องศึกษารูปแบบความต้องการของโปรแกรมที่จะพัฒนา จากนั้นก็วิเคราะห์ถึงปัญหาตลอดจนวิธีการแก้ปัญหา จากนั้นจึงนำเอาความคิดในการแก้ปัญหาอย่างเป็นขั้นตอน ไปเขียนในรูปแบบของโปรแกรมภาษาในระดับสูง ซึ่งจะอยู่ในรูปแบบของ Source Program หรือ Source Code จากนั้นเราก็จะใช้ Complier ของภาษาที่เราเลือก มาทำการ Compile Source code หรือกล่าวง่ายๆ คือแปลง Source code ของเราให้เป็นภาษาเครื่องนั่นเอง ซึ่งในขั้นตอนนี้ ผลที่ได้ เราจะเรียกว่า Object code จากนั้น Complier ก็จะทำการ Link หรือเชื่อม Object code เข้ากับฟังก์ชันการทำงานใน Libraries ต่างๆ ที่จำเป็นต่อการใช้งาน แล้วนำไปไว้ในหน่วยความจำ แล้วเราก็จะสามารถ Run เพื่อดูผลของการทำงานโปรแกรมได้ หากโปรแกรมมีข้อผิดพลาด เราก็จะทำการแก้ หรือที่เรียกกันในภาษาคอมพิวเตอร์ว่า การ Debug นั่นเอง
ภาษา C เป็นโปรแกรมภาษาระดับสูง ถูกพัฒนาขึ้นในปี 1972 ที่ AT&T Bell Lab เราสามารถใช้ภาษา C มาเขียนเป็นคำสั่งต่างๆ ที่คอมพิวเตอร์สามารถเข้าใจได้ และกลุ่มของคำสั่งเหล่านี้ เราก็เรียกกันว่า อัลกอริธึม ได้มีผู้ให้คำจำกัดความของคำว่า อัลกอริธึม ว่าเป็น “A precise description of a step-by-step process that is guaranteed to terminate after a finite number of steps with a correct answer for every particular instance of an algorithmic problem that may occur.” สำหรับ Compiler ภาษา C ที่มีในปัจจุบัน มี 2 ค่ายใหญ่ๆ ที่มีผู้คนสนใจใช้กันมากได้แก่ Microsoft และ Borland การใช้งาน Compiler ทั้งสองตัวนี้ สามารถเรียนรู้ได้ไม่ยากนัก เราจึงจะมาเริ่มต้นที่การเขียนโปรแกรมในภาษา C กันเลย เราลองมาเริ่มจากตัวอย่างการเขียน ภาษา C แบบ ง่ายๆ กันก่อนกับโปรแกรม Hello World
#include
main()
{
printf("Hello World !! ");
}
บรรทัดแรก #include เป็นการบอกว่าให้ทำการรวม Header file ที่ชื่อว่า stdio.h (.h = header) ซึ่งเป็น header ที่เกี่ยวข้องกับการรับและให้ข้อมูล (Standard Input Output) นอกจาก stdio.h แล้ว ก็ยังมี Header อื่นๆ ที่ผู้พัฒนาสามารถที่จะเรียกใช้งาน Function ที่จำเป็นจาก Header นั้นๆ ได้ อาทิเช่น
รู้จัก Header File กันไปล่ะ คราวนี้ เราลองมาดูบรรทัดถัดไปกัน ก็คือ ฟังก์ชัน main() จะเป็นจุดเริ่มต้นของโปรแกรม และโปรแกรมทุกโปรแกรมในภาษา C จะต้องมี Function main() นี้ โดยส่วนมาก เราจะใช้ Function main() ในการกำหนดค่าเริ่มต้นต่างๆ ของโปรแกรม จากนั้นจึงเข้าสู่ Function ต่างๆ ที่ผู้พัฒนา ได้กำหนดขึ้นไว้
บรรทัดถัดมาจะเป็นเครื่องหมาย { ซึ่งเป็นเครื่องหมายบ่งบอกขอบเขตของ Function โดยขอบเขตของฟังก์ชัน จะเปิดและปิดโดยใช้เครื่องหมายเปิด { และเครื่องหมายปิด } ตามลำดับ ภายใน Function main() จะมีคำสั่ง (Statement) printf("Hello World !! "); ซึ่ง printf เป็น Function ในภาษา C ทำหน้าที่ให้โปรแกรม ทำการแสดงผลออกทางหน้าจอว่า Hello World !! และทุกครั้ง ผู้พัฒนาจะต้องทำการจบคำสั่งหรือ Statement ด้วยเครื่องหมาย semi-colon ;
ดังนั้นรูปแบบของการเขียนโปรแกรม จึงเขียนออกมาในรูปแบบดังนี้
// ข้อความที่อยู่ข้างหลังเครื่องหมาย // จะเป็นคำอธิบายโปรแกรม
#include
void main()
{
constant declarations; // การกำหนดค่าคงที่ต่างๆ
variable declarations; // การกำหนดตัวแปรต่างๆ
executable statements; // คำสั่งการทำงานของโปรแกรม
}
การอ่านข้อมูลและการแสดงผล (Input & Output)
รูปแบบการใช้งานฟังก์ชัน printf จะทำการพิมพ์ในรูปแบบที่ เริ่มต้นด้วย Format ที่ต้องการจะพิมพ์ และตามด้วยตัวแปรที่ต้องการพิมพ์ ดังนี้
printf( const char *format [, argument]... );
สำหรับการนำข้อมูลเข้าก็เช่นกัน จะใช้ฟังก์ชัน scanf ซึ่งจะเป็นฟังก์ชันสำหรับอ่านข้อมูลจากคีย์บอร์ด และจะนำข้อมูลที่ User ทำการพิมพ์ไปเก็บไว้ใน argument โดยแต่ละ argument จะต้องเป็นตัวแปรที่เรียกว่า pointer (รายละเอียดจะได้กล่าวต่อไป) และมีชนิดที่ตัวแปรที่สัมพันธ์กับที่ได้กำหนดไว้ใน Format รูปแบบการใช้งานของฟังก์ชัน scanf สามารถเขียนได้ดังนี้
scanf( const char *format [,argument]... );
บทความจาก ดร. จันทร์จิรา สินทนะโยธิน, วิศรุต พลสิทธิ
สำนักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ (สวทช)
วันจันทร์ที่ 20 มิถุนายน พ.ศ. 2554
ไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์
คือ อุปกรณ์ควบคุมขนาดเล็ก ซึ่งบรรจุความสามารถที่คล้ายคลึงกับระบบคอมพิวเตอร์ โดยในไมโครคอนโทรลเลอร์ได้รวมเอาซีพียู, หน่วยความจำ และพอร์ต ซึ่งเป็นส่วนประกอบหลักสำคัญของระบบคอมพิวเตอร์เข้าไว้ด้วยกัน โดยทำการบรรจุเข้าไว้ในตัวถังเดียวกัน
โครงสร้างทั่วไป
โครงสร้างโดยทั่วไป ของไมโครคอนโทรลเลอร์นั้น สามารถแบ่งออกมาได้เป็น 5 ส่วนใหญ่ๆ ดังต่อไปนี้
1.หน่วยประมวลผลกลางหรือซีพียู (CPU : Central Processing Unit)
2.หน่วยความจำ (Memory) สามารถแบ่งออกเป็น 2 ส่วน คือ หน่วยความจำที่มีไว้สำหรับเก็บโปรแกรมหลัก (Program Memory) เปรียบเสมือนฮาร์ดดิสก์ของเครื่องคอมพิวเตอร์ตั้งโต๊ะ คือข้อมูลใดๆ ที่ถูกเก็บไว้ในนี้จะไม่สูญหายไปแม้ไม่มีไฟเลี้ยง อีกส่วนหนึ่งคือหน่วยความจำข้อมูล (Data Memory) ใช้เป็นเหมือนกกระดาษทดในการคำนวณของซีพียู และเป็นที่พักข้อมูลชั่วคราวขณะทำงาน แต่หากไม่มีไฟเลี้ยง ข้อมูลก็จะหายไปคล้ายกับหน่วยความแรม (RAM) ในเครื่องคอมพิวเตอร์ทั่วๆ ไป แต่สำหรับไมโครคอนโทรลเลอร์สมัยใหม่ หน่วยความจำข้อมูลจะมีทั้งที่เป็นหน่วยความจำแรม ซึ่งข้อมูลจะหายไปเมื่อไม่มีไฟเลี้ยง และเป็นอีอีพรอม (EEPROM : Erasable Electrically Read-Only Mempry) ซึ่งสามารถเก็บข้อมูลได้แม้ไม่มีไฟเลี้ยง
3.ส่วนติดต่อกับอุปกรณ์ภายนอก หรือพอร์ต (Port) มี 2 ลักษณะคือ พอร์ตอินพุต (Input Port) และพอร์ตส่งสัญญาณหรือพอร์ตเอาต์พุต (Output Port) ส่วนนี้จะใช้ในการเชื่อมต่อกับอุปกรณ์ภายนอก ถือว่าเป็นส่วนที่สำคัญมาก ใช้ร่วมกันระหว่างพอร์ตอินพุต เพื่อรับสัญญาณ อาจจะด้วยการกดสวิตช์ เพื่อนำไปประมวลผลและส่งไปพอร์ตเอาต์พุต เพื่อแสดงผลเช่น การติดสว่างของหลอดไฟ เป็นต้น
4.ช่องทางเดินของสัญญาณ หรือบัส (BUS) คือเส้นทางการแลกเปลี่ยนสัญญาณข้อมูลระหว่าง ซีพียู หน่วยความจำและพอร์ต เป็นลักษณะของสายสัญญาณ จำนวนมากอยู่ภายในตัวไมโครคอนโทรลเลอร์ โดยแบ่งเป็นบัสข้อมูล (Data Bus) , บัสแอดเดรส (Address Bus) และบัสควบคุม (Control Bus)
5.วงจรกำเนิดสัญญาณนาฬิกา นับเป็นส่วนประกอบที่สำคัญมากอีกส่วนหนึ่ง เนื่องจากการทำงานที่เกิดขึ้นในตัวไมโครคอนโทรลเลอร์ จะขึ้นอยู่กับการกำหนดจังหวะ หากสัญญาณนาฬิกามีความถี่สูง จังหวะการทำงานก็จะสามารถทำได้ถี่ขึ้นส่งผลให้ไมโครคอนโทรลเลอร์จัวนั้น มีความเร็วในการประมวลผลสูงตามไปด้วย
บทความจาก วิกิพีเดีย th.wikipedia.org/wiki
คือ อุปกรณ์ควบคุมขนาดเล็ก ซึ่งบรรจุความสามารถที่คล้ายคลึงกับระบบคอมพิวเตอร์ โดยในไมโครคอนโทรลเลอร์ได้รวมเอาซีพียู, หน่วยความจำ และพอร์ต ซึ่งเป็นส่วนประกอบหลักสำคัญของระบบคอมพิวเตอร์เข้าไว้ด้วยกัน โดยทำการบรรจุเข้าไว้ในตัวถังเดียวกัน
โครงสร้างทั่วไป
โครงสร้างโดยทั่วไป ของไมโครคอนโทรลเลอร์นั้น สามารถแบ่งออกมาได้เป็น 5 ส่วนใหญ่ๆ ดังต่อไปนี้
1.หน่วยประมวลผลกลางหรือซีพียู (CPU : Central Processing Unit)
2.หน่วยความจำ (Memory) สามารถแบ่งออกเป็น 2 ส่วน คือ หน่วยความจำที่มีไว้สำหรับเก็บโปรแกรมหลัก (Program Memory) เปรียบเสมือนฮาร์ดดิสก์ของเครื่องคอมพิวเตอร์ตั้งโต๊ะ คือข้อมูลใดๆ ที่ถูกเก็บไว้ในนี้จะไม่สูญหายไปแม้ไม่มีไฟเลี้ยง อีกส่วนหนึ่งคือหน่วยความจำข้อมูล (Data Memory) ใช้เป็นเหมือนกกระดาษทดในการคำนวณของซีพียู และเป็นที่พักข้อมูลชั่วคราวขณะทำงาน แต่หากไม่มีไฟเลี้ยง ข้อมูลก็จะหายไปคล้ายกับหน่วยความแรม (RAM) ในเครื่องคอมพิวเตอร์ทั่วๆ ไป แต่สำหรับไมโครคอนโทรลเลอร์สมัยใหม่ หน่วยความจำข้อมูลจะมีทั้งที่เป็นหน่วยความจำแรม ซึ่งข้อมูลจะหายไปเมื่อไม่มีไฟเลี้ยง และเป็นอีอีพรอม (EEPROM : Erasable Electrically Read-Only Mempry) ซึ่งสามารถเก็บข้อมูลได้แม้ไม่มีไฟเลี้ยง
3.ส่วนติดต่อกับอุปกรณ์ภายนอก หรือพอร์ต (Port) มี 2 ลักษณะคือ พอร์ตอินพุต (Input Port) และพอร์ตส่งสัญญาณหรือพอร์ตเอาต์พุต (Output Port) ส่วนนี้จะใช้ในการเชื่อมต่อกับอุปกรณ์ภายนอก ถือว่าเป็นส่วนที่สำคัญมาก ใช้ร่วมกันระหว่างพอร์ตอินพุต เพื่อรับสัญญาณ อาจจะด้วยการกดสวิตช์ เพื่อนำไปประมวลผลและส่งไปพอร์ตเอาต์พุต เพื่อแสดงผลเช่น การติดสว่างของหลอดไฟ เป็นต้น
4.ช่องทางเดินของสัญญาณ หรือบัส (BUS) คือเส้นทางการแลกเปลี่ยนสัญญาณข้อมูลระหว่าง ซีพียู หน่วยความจำและพอร์ต เป็นลักษณะของสายสัญญาณ จำนวนมากอยู่ภายในตัวไมโครคอนโทรลเลอร์ โดยแบ่งเป็นบัสข้อมูล (Data Bus) , บัสแอดเดรส (Address Bus) และบัสควบคุม (Control Bus)
5.วงจรกำเนิดสัญญาณนาฬิกา นับเป็นส่วนประกอบที่สำคัญมากอีกส่วนหนึ่ง เนื่องจากการทำงานที่เกิดขึ้นในตัวไมโครคอนโทรลเลอร์ จะขึ้นอยู่กับการกำหนดจังหวะ หากสัญญาณนาฬิกามีความถี่สูง จังหวะการทำงานก็จะสามารถทำได้ถี่ขึ้นส่งผลให้ไมโครคอนโทรลเลอร์จัวนั้น มีความเร็วในการประมวลผลสูงตามไปด้วย
บทความจาก วิกิพีเดีย th.wikipedia.org/wiki
จุดเริ่มต้นของภาษาซี
จุดเริ่มต้นของภาษาซี
ภาษาซีเกิดขึ้นในปี ค.ศ.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) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า "ANSI C"Dennis Ritchieภาษาซีนั้นจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงานกับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับเหตุผลที่ควรเรียนภาษาซีก็เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้นจาก C สู่ C++ถูกพัฒนาโดย Bjarne Stroustrup แห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้นBjarne Stroustrupจำเป็นไหม? ที่ต้องเรียนภาษา C ก่อน เรียน C++ เลยไม่ได้เหรอ? คำตอบก็คือ คุณจะเรียน C++ เลยก็ได้ครับ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าคุณเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก ซึ่งในบทความในช่วงแรกผมจะนำเสนอหลักและแนวคิดในการเขียนโปรแกรมภาษา C ก่อนนะครับ เพื่อให้ผู้อ่านได้เข้าใจในพื้นฐานก่อนนะครับต่อไปจะขอเกริ่นถึงการเขียนโปรแกรมแบบโครงสร้างสักเล็กน้อยก่อนนะครับ แล้วก็จะเริ่มเข้ากระบวนการการเขียนโปรแกรมกันลักษณะโปรแกรมแบบโครงสร้างการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้นครับ ผมจะยกตัวอย่างในภาษา C ในรูปแบบการเขียนโปรแกรมแบบโครงสร้างให้ดูดังด้านล่างนะครับภาพ: โปรแกรมที่เขียนด้วยภาษาซีแบบง่ายๆ แสดงถึงโครงสร้างจากโปรแกรมข้างต้นนะครับ สามารถแบ่งโครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ นะครับ ก็คือส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)ส่วนที่ 3 แสดงผลทางจอภาพ (Display)
จุดเด่นของภาษาซี
1. เป็นภาษาที่เข้าใจง่าย มีลักษณะเป็นโครงสร้าง ท่านอ่านคำสั่งต่างๆแล้ว ทำความเข้าใจไม่ยากเลยสามารถควบคุมฮาร์ดแวร์ได้อย่างไม่มีสิ่งใดมาขวางกั้น โปรแกรมทำงานได้อย่างรวดเร็ว ใช้งานได้หลากหลาย ยืดหยุ่น สามารถเขียนแยกเป็นโมดูล (เป็นโปรแกรมย่อยๆ) ได้
2. เป็นรากฐานเพื่อไปศึกษาภาษาอื่นได้อีก ไม่ว่าจะเป็น Java Perl PHP C# ล้วนแต่ถูกสร้างมาจากภาษาซี เพราะภาษาซีนั้นเป็นภาษาที่ถูกสร้างขึ้นมานานมากแล้ว และถูกนำมาใช้กันทั่วโลก และหากท่านจะสร้างภาษาโปรแกรมขึ้นมาสักภาษาหนึ่ง หากท่านอยากจะให้มันเข้าใจง่าย และใช้กันแพร่หลาย ท่านจะคิดคำสั่งเอง หรือท่านจะเอาคำสั่งที่โปรแกรมเมอร์ทั่วโลกเขาเข้าใจอยู่แล้วมาใช้ล่ะครับ แน่นอน ก็ต้องอย่างหลังอยู่แล้ว ทำให้ภาษาโปรแกรมหลายๆตัวที่นิยม ล้วนสร้างขึ้นมาจากภาษาซี หากท่านศึกษาภาษาซีก่อน เมื่อท่านไปศึกษาภาษาอื่น ท่านจะข้ามพื้นฐานไปได้เลย ทำให้การศึกษาภาษาอื่น เป็นไปด้วยความรวดเร็ว
3. เป็นภาษาที่ทำงานเร็ว คล่องตัว เพราะการเรียนภาษาซีนั้น ทำกันบนบรรทัดคำสั่ง เพื่อสั่งให้ทำงานบนหน้าจอโดยตรง หรือจะสั่งเครื่องพิมพ์ก็ย่อมได้ ภาษาโปรแกรมใหม่ๆ มักจะมีตัวแปลภาษาและอีดิตเตอร์เป็นแบบ IDE ไม่ทันไรผู้เรียนก็สามารถสร้างหน้าจอ GUI (กราฟิกยูเซอร์อินเตอร์เฟช) ได้แล้ว แต่มันเป็นง่ายไปครับ การข้ามขั้นพื้นฐานไป ทำให้ความรู้ท่านไม่แน่นพอ หากท่านเรียนภาษาซีท่านจะได้เริ่มตั้งแต่รันบนดอสกันไปเลย ทำให้ท่านเข้าใจพื้นฐานของโปรแกรมต่างๆ เมื่อพื้นฐานท่านแน่น อีกหน่อยจะไปพัฒนาระบบใหญ่ๆ หรือเขียนโปรแกรมเชิงวัตถุก็สบาย
4. มีพอยเตอร์ให้เราได้ศึกษาในเรื่องของหน่วยความจำ ภาษาซีจะสามารถเข้าจัดการหน่วยความจำได้ ไม่ว่าจะเป็นการจัดสรร เพิ่มลดข้อมูลในหน่วยความจำ ก็ย่อมได้ เพราะอย่างที่ได้กล่าวไว้ว่า ภาษาซีสามารถควบคุมฮาร์ดแวร์ได้ การจะจัดการกับหน่วยความจำก็ไม่ใช่ปัญหาเลย ท่านสามารถจัดสรรทรัพยากรให้เหมาะสมกับการทำงานของท่านได้ เช่น หากโปรแกรมอยู่เฉยๆก็ไม่ต้องให้โปรแกรมกินหน่วยความจำ เมื่อมันเริ่มทำงานเมื่อไหร่ก็ให้เริ่มกินหรือจองหน่วยความจำ ทำให้โปรแกรมของท่านมีความยืดหยุ่น พลิกแพลงได้ เรื่องพอยเตอร์นี่แหละครับ จุดเด่นของภาษาซี
5. มีชุดพัฒนาอยู่มากมาย เพื่อใช้ในงานเฉพาะทาง ไม่ว่าจะเป็นการจัดการกับรูปภาพ ด้วยชุดพัฒนา Images Processing การพัฒนาโปรแกรมบนวินโดวส์ด้วย MFC หรือ Visual C++ และอีกมากมาย หากท่านมีพื้นฐานดีแล้ว ท่านสามารถศึกษาชุดพัฒนาเหล่านี้ได้ไม่ยาก และที่สำคัญสามารถหาชุดพัฒนาที่ถูกสร้างจากภาษาซีได้ทั่วโลก
6. ภาษาซีนั้นมีมาตรฐานเดียวกันทั่วโลก นั่นหมายความว่า ท่านศึกษาครั้งเดียว ท่านเขียนได้ทั้งบน วินโดวส์และยูนิกซ์หรือลีนุกซ์ ซึ่งทำให้ท่านสามารถพัฒนาโปรแกรมในระบบปฏิบัติการหลายๆแบบได้ ไม่ต้องศึกษาภาษาใหม่เลย อาจจะศึกษาลักษณะที่ต่างกัน ก็เพียงเล็กน้อย นอกนั้นก็คล้ายกันเลยทีเดียว
7. หลายๆสถาบันมักจะให้เรียนภาษาซีเป็นภาษาแรก เพื่อเป็นพื้นฐานไปสู่การเขียนโปรแกรมเชิงวัตถุ เช่น C++ , Java ท่านยังสามารถศึกษาไปในด้านของวิชาโครงสร้างข้อมูลได้ ซึ่งใช้ในการจัดสรรทรัพยากรหน่วยความจำ การจัดเก็บข้อมูล การเรียงลำดับ การค้นหา และเป็นพื้นฐานของอีกหลายๆวิชา
จุดด้อยของภาษา C
อีกปัญหาหนึ่ง ก็คือตัวของภาษา C ไม่มีตัวจัดการจองหน่วยความจำในตัวเอง เมื่อเวลาเราต้องการจองหน่วยความจำแบบ Dynamic ภาษา C ทำ wrapper เพื่อติดต่อกับ OS เพื่อขอจองหน่วยความจำโดยตรง ปัญหาก็คือ การติดต่อกันระหว่างโปรแกรมของเรากับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืมบอก OS ว่า เลิกจองหน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะถูกจองไปเรื่อยๆ เราจะเห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอนเช้า แต่พอตกบ่ายก็ช้าลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot ใหม่ สาเหตุหลักของปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว หรือ Memory Leak ก็เรื่องจองแล้วลืมเอาคืนนั่นแหละครับ
ภาษาซีเกิดขึ้นในปี ค.ศ.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) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า "ANSI C"Dennis Ritchieภาษาซีนั้นจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงานกับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับเหตุผลที่ควรเรียนภาษาซีก็เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้นจาก C สู่ C++ถูกพัฒนาโดย Bjarne Stroustrup แห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้นBjarne Stroustrupจำเป็นไหม? ที่ต้องเรียนภาษา C ก่อน เรียน C++ เลยไม่ได้เหรอ? คำตอบก็คือ คุณจะเรียน C++ เลยก็ได้ครับ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าคุณเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก ซึ่งในบทความในช่วงแรกผมจะนำเสนอหลักและแนวคิดในการเขียนโปรแกรมภาษา C ก่อนนะครับ เพื่อให้ผู้อ่านได้เข้าใจในพื้นฐานก่อนนะครับต่อไปจะขอเกริ่นถึงการเขียนโปรแกรมแบบโครงสร้างสักเล็กน้อยก่อนนะครับ แล้วก็จะเริ่มเข้ากระบวนการการเขียนโปรแกรมกันลักษณะโปรแกรมแบบโครงสร้างการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้นครับ ผมจะยกตัวอย่างในภาษา C ในรูปแบบการเขียนโปรแกรมแบบโครงสร้างให้ดูดังด้านล่างนะครับภาพ: โปรแกรมที่เขียนด้วยภาษาซีแบบง่ายๆ แสดงถึงโครงสร้างจากโปรแกรมข้างต้นนะครับ สามารถแบ่งโครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ นะครับ ก็คือส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)ส่วนที่ 3 แสดงผลทางจอภาพ (Display)
จุดเด่นของภาษาซี
1. เป็นภาษาที่เข้าใจง่าย มีลักษณะเป็นโครงสร้าง ท่านอ่านคำสั่งต่างๆแล้ว ทำความเข้าใจไม่ยากเลยสามารถควบคุมฮาร์ดแวร์ได้อย่างไม่มีสิ่งใดมาขวางกั้น โปรแกรมทำงานได้อย่างรวดเร็ว ใช้งานได้หลากหลาย ยืดหยุ่น สามารถเขียนแยกเป็นโมดูล (เป็นโปรแกรมย่อยๆ) ได้
2. เป็นรากฐานเพื่อไปศึกษาภาษาอื่นได้อีก ไม่ว่าจะเป็น Java Perl PHP C# ล้วนแต่ถูกสร้างมาจากภาษาซี เพราะภาษาซีนั้นเป็นภาษาที่ถูกสร้างขึ้นมานานมากแล้ว และถูกนำมาใช้กันทั่วโลก และหากท่านจะสร้างภาษาโปรแกรมขึ้นมาสักภาษาหนึ่ง หากท่านอยากจะให้มันเข้าใจง่าย และใช้กันแพร่หลาย ท่านจะคิดคำสั่งเอง หรือท่านจะเอาคำสั่งที่โปรแกรมเมอร์ทั่วโลกเขาเข้าใจอยู่แล้วมาใช้ล่ะครับ แน่นอน ก็ต้องอย่างหลังอยู่แล้ว ทำให้ภาษาโปรแกรมหลายๆตัวที่นิยม ล้วนสร้างขึ้นมาจากภาษาซี หากท่านศึกษาภาษาซีก่อน เมื่อท่านไปศึกษาภาษาอื่น ท่านจะข้ามพื้นฐานไปได้เลย ทำให้การศึกษาภาษาอื่น เป็นไปด้วยความรวดเร็ว
3. เป็นภาษาที่ทำงานเร็ว คล่องตัว เพราะการเรียนภาษาซีนั้น ทำกันบนบรรทัดคำสั่ง เพื่อสั่งให้ทำงานบนหน้าจอโดยตรง หรือจะสั่งเครื่องพิมพ์ก็ย่อมได้ ภาษาโปรแกรมใหม่ๆ มักจะมีตัวแปลภาษาและอีดิตเตอร์เป็นแบบ IDE ไม่ทันไรผู้เรียนก็สามารถสร้างหน้าจอ GUI (กราฟิกยูเซอร์อินเตอร์เฟช) ได้แล้ว แต่มันเป็นง่ายไปครับ การข้ามขั้นพื้นฐานไป ทำให้ความรู้ท่านไม่แน่นพอ หากท่านเรียนภาษาซีท่านจะได้เริ่มตั้งแต่รันบนดอสกันไปเลย ทำให้ท่านเข้าใจพื้นฐานของโปรแกรมต่างๆ เมื่อพื้นฐานท่านแน่น อีกหน่อยจะไปพัฒนาระบบใหญ่ๆ หรือเขียนโปรแกรมเชิงวัตถุก็สบาย
4. มีพอยเตอร์ให้เราได้ศึกษาในเรื่องของหน่วยความจำ ภาษาซีจะสามารถเข้าจัดการหน่วยความจำได้ ไม่ว่าจะเป็นการจัดสรร เพิ่มลดข้อมูลในหน่วยความจำ ก็ย่อมได้ เพราะอย่างที่ได้กล่าวไว้ว่า ภาษาซีสามารถควบคุมฮาร์ดแวร์ได้ การจะจัดการกับหน่วยความจำก็ไม่ใช่ปัญหาเลย ท่านสามารถจัดสรรทรัพยากรให้เหมาะสมกับการทำงานของท่านได้ เช่น หากโปรแกรมอยู่เฉยๆก็ไม่ต้องให้โปรแกรมกินหน่วยความจำ เมื่อมันเริ่มทำงานเมื่อไหร่ก็ให้เริ่มกินหรือจองหน่วยความจำ ทำให้โปรแกรมของท่านมีความยืดหยุ่น พลิกแพลงได้ เรื่องพอยเตอร์นี่แหละครับ จุดเด่นของภาษาซี
5. มีชุดพัฒนาอยู่มากมาย เพื่อใช้ในงานเฉพาะทาง ไม่ว่าจะเป็นการจัดการกับรูปภาพ ด้วยชุดพัฒนา Images Processing การพัฒนาโปรแกรมบนวินโดวส์ด้วย MFC หรือ Visual C++ และอีกมากมาย หากท่านมีพื้นฐานดีแล้ว ท่านสามารถศึกษาชุดพัฒนาเหล่านี้ได้ไม่ยาก และที่สำคัญสามารถหาชุดพัฒนาที่ถูกสร้างจากภาษาซีได้ทั่วโลก
6. ภาษาซีนั้นมีมาตรฐานเดียวกันทั่วโลก นั่นหมายความว่า ท่านศึกษาครั้งเดียว ท่านเขียนได้ทั้งบน วินโดวส์และยูนิกซ์หรือลีนุกซ์ ซึ่งทำให้ท่านสามารถพัฒนาโปรแกรมในระบบปฏิบัติการหลายๆแบบได้ ไม่ต้องศึกษาภาษาใหม่เลย อาจจะศึกษาลักษณะที่ต่างกัน ก็เพียงเล็กน้อย นอกนั้นก็คล้ายกันเลยทีเดียว
7. หลายๆสถาบันมักจะให้เรียนภาษาซีเป็นภาษาแรก เพื่อเป็นพื้นฐานไปสู่การเขียนโปรแกรมเชิงวัตถุ เช่น C++ , Java ท่านยังสามารถศึกษาไปในด้านของวิชาโครงสร้างข้อมูลได้ ซึ่งใช้ในการจัดสรรทรัพยากรหน่วยความจำ การจัดเก็บข้อมูล การเรียงลำดับ การค้นหา และเป็นพื้นฐานของอีกหลายๆวิชา
จุดด้อยของภาษา C
อีกปัญหาหนึ่ง ก็คือตัวของภาษา C ไม่มีตัวจัดการจองหน่วยความจำในตัวเอง เมื่อเวลาเราต้องการจองหน่วยความจำแบบ Dynamic ภาษา C ทำ wrapper เพื่อติดต่อกับ OS เพื่อขอจองหน่วยความจำโดยตรง ปัญหาก็คือ การติดต่อกันระหว่างโปรแกรมของเรากับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืมบอก OS ว่า เลิกจองหน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะถูกจองไปเรื่อยๆ เราจะเห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอนเช้า แต่พอตกบ่ายก็ช้าลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot ใหม่ สาเหตุหลักของปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว หรือ Memory Leak ก็เรื่องจองแล้วลืมเอาคืนนั่นแหละครับ
สมัครสมาชิก:
บทความ (Atom)