C/C++

การส่งผ่านอาร์กิวเมนท์ไปยังโปรแกรม

บทความยังไม่เรียบร้อยครับ !!!

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

รายการอาร์กิวเมนต์

เมื่อเราใช้เรียกใช้งานโปรแกรมบน shell prompt เราสามารถเพิ่มข้อมูลบางอย่างให้กับโปรแกรมเพื่อใช้ในการทำงานได้โดยการพิมพ์ข้อมูลเพิ่มเติมต่อท้ายชื่อโปรแกรม อาจเป็นข้อมูลที่เป็นคำๆ เดียวหรือหลายๆ คำก็ได้ โดยใช้ช่องว่างเป็นตัวแบ่งคำนั้นๆ (หากเป็นกลุ่มคำที่มีช่องว่าปรากฏอยู่สามารถใช้เครื่องหมายอัญประกาศ ("...") ครอบข้อมูลชุดนั้นได้เช่น "debian club" เป็นต้น) เราจะเรียกข้อมูลเหล่านี้ว่า "command-line arguments" ตัวอย่างการใช้งานคำสั่ง ls

$ ls -al /

1.3: ดีบั๊กโปรแกรมด้วย GDB

เมื่อเราเริ่มเขียนโปรแกรมไม่ว่าภาษาอะไรก็ตาม มักมีผู้แนะนำเสมอว่าควรใช้งานดีบักเกอร์ควบคู่กันไปด้วย เพื่อใช้ศึกษาขั้นตอนการทำงานของโปรแกรมว่าถูกต้องตามที่ตั้งใจไว้หรือไม่ หรือแม้กระทั้งตรวจสอบความผิดพลาดของโปรแกรมที่เกิดขึ้น สำหรับผู้ใช้งานระบบปฏิบัตการลินุกซ์แล้วมักจะรู้จักโปรแกรมดีบักเกอร์กันดีคือ GDB (The GNU Debugger)

การจะเริ่มใช้งาน GDB ได้นั้นต้องเริ่มตั้งแต่การคอมไพล์โปรแกรมเสียก่อนด้วยการเพิ่มออพชัน "-g" เข้าไปขณะคอมไพล์โปรแกรม ซึ่งมีตัวอย่างคอมไพล์ดังต่อไปนี้

gcc -g -c main.c
g++ -g -c reciprocal.cpp
g++ -g -o reciprocal main.o reciprocal.o

1.2 GNU Make

GNU Make หรือ make เป็นเครื่องมือควบคุมการ build โปรแกรมของยูนิกซ์ ซึ่งเป็นตัวช่วยให้เราสามารถคอมไพล์โปรแกรมที่มี source code มากๆ ได้ง่ายขึ้น แนวคิดของ make คือ หากเราต้องการคอมไพล์โปรแกรมเราก็บอก make ว่า target คืออะไร หลังจากนั้นบอกให้ make รู้ว่ากฎการสร้าง target นั้นๆ คืออะไร (rules) โดยระบุสิ่งที่เกี่ยวข้องกับการคอมไพล์นั้น (dependencies) หากมีการเปลี่ยนแปลงเกิดขึ้นจะได้ rebuild ใหม่ได้ถูกต้อง โดยมีรูปแบบ Makefile ดังต่อไปนี้

target: dependencies
<TAB>command
<TAB>...

โดย <TAB> หมายถึงกดคีย์ Tab หนึ่งครั้ง

1.1: การคอมไพล์โปรแกรมบน Linux

การคอมไพล์โปรแกรม ต้องอาศัย compiler ที่ทำหน้าที่แปลงจาก source code ที่โปรแกรมเมอร์เขียนเป็น machine code ที่สามารถทำงานบนเครื่องคอมพิวเตอร์ได้ ซึ่งบนระบบปฏิบัติการ Linux มีชุด compiler ของ GNU ให้เลือกใช้งาน โดยในที่นี่เราจะเลือกใช้งาน gcc หรือ g++ สำหรับ คอมไพล์ภาษา C และ C++ ตามลำดับ

1: เตรียมความพร้อมก่อนเขียนโปรแกรม

การเขียนโปรแกรมที่ดีต้องรู้จักเครื่องมือสำหรับการใช้งานโปรแกรมเสียก่อน ซึ่งเครื่องมือสำหรับเขียนโปรแกรมที่จำเป็นก็ไม่พ้น Text Editor เลือกโปรแกรม Text editor ตัวโปรดสักตัวที่คุณชื่นชอบ ไม่ว่าจะเป็น Vi nano Emacs ก็ได้ฝึกหัดใช้งานให้คล่องเพื่อจะไม่ไม่ติดขัดขณะใช้งาน หากมีการจัดรูปแบบอัตโนมัติ หรือ Syntax highlight ก็จะช่วยสำหรับการเขียนโปรแกรมของเราได้ไม่น้อยทีเดียว อาจจะเลือกใช้โปรแกรมที่มีความสามารถมากกว่า Text editor ทั่วไปที่เรามักเรียกว่า IDE หรือ Integrated Development Environment

C/C++ Linux Programming

เห็นสมาชิกเว็บหลายท่านเขียนเกี่ยวกับ Python หรือ Shell script ก็เลยลองเขียนเกี่ยวกับ C/C++ ดูครับ เนื่องจากภาษา C/C++ นิยมใช้มากในลินุกซ์ และมี Library มาตรฐานสำหรับการใช้งานบน Linux หรือ Unix เพื่อใช้จัดการ i/o ต่างๆ ของตัวระบบปฏิบัติการเอง หรือทรัพยากรต่างๆ โดยที่บทความนี้ผมจะใช้ C++ เป็นหลัก แต่ Library เกี่ยวกับ Linux จะเป็นภาษา C ท่านที่เขียนภาษา C ก็สามารถใช้ได้นะครับ ถ้าไม่เข้าใจสามารถถามได้ผมจะได้เขียนโค๊ดเทียบเคียงให้ ในบทความชุดนี้ผมอ้างอิงการใช้งานบน Linux เป็นหลักถึงแม้ว่าบางอย่างจะสามารถนำไปเขียนบนระบบปฏิบัติการ Unix อื่นได้ก็ตาม และไม่เน้นการเขียนโปรแกรม ขั้นพื้นฐานนะครับ หากไม่เข้าใจสามารถถามได้ หากมีผู้ต้องการเรียนรู้เกี่ยวกับ C/C++ อาจจะเขียนเป็นอีกหนึ่งชุดก็ได้ครับ สำหรับผู้มีประสบการณ์เขียนโปรแกรมหากมีอะไรผิดพลาดช่วยแก้ไขด้วยนะครับ เพราะผมพึ่งศึกษาได้ไม่นานและยังไม่มีประสบการณ์สำหรับการพัฒนาโปรแกรมบน Linux ขนาดใหญ่ครับ
ผมเขียนบนความนี้โดยอ้างอิง Advanced Linux Programming บางส่วมผมอาจจะแปลมาเลยนะครับ สำหรับหนังสือภาษาไทยที่เคยอ่านก็มี เจาะประเด็นงานเขียนโปรแกรมบนลินุกซ์ โดย คุณ สันติ ศรีลาศักดิ์ และ วรวุฒิ เที่ยงธรรม ครับ

Syndicate content
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้