การเขียนโปรแกรมคอมพิวเตอร์ โครงสร้างข้อมูลและอัลกอริธึม และอีกหลาย ๆ วิชา โดย
โปรแกรมทั้งสองสามารถติดตั้งบนคอมพิวเตอร์ทุกสถาปัตยกรรมและทุกระบบปฏิบัติการ
บนระบบปฎิบัติการลินุกซ์แทบทุกดิสดริบิวชั่นจะติดตั้งภาษา C หรือ C++ มาให้เป็นค่าเริ่มต้น
อยู่แล้ว เราจึงสามารถเรียกใช้งานผ่านโปรแกรม Terminal ได้ทันที แต่ในบางดิสทริบิวชั่นหาก
ไม่มีติดตั้งเป็นค่าเริ่มต้นก็สามารถติดตั้งเพิ่มภายหลังได้
Debian 7.7 หลังจากติดตั้งระบบจะไม่ติดตั้งโปรแกรมภาษา C/C++ มาเป็นค่าเริ่มต้น เรา
สามารถตรวจสอบตำแหน่งภาษา C และเวอร์ชั่น ได้ด้วยคำสั่งต่อไปนี้
submarine@Debian77:~$ which gcc #พิมพ์เสร็จแล้วกด Enter
submarine@Debian77:~$ #ผลการตรวจสอบไม่พบตำแหน่งที่ติดตั้ง
submarine@Debian77:~$ gcc --version #คำถามตรวจสอบเวอร์ชั่นของภาษา C
bash: gcc: command not found #ไม่พบเวอร์ชั่นที่ตรวจสอบ
submarine@Debian77:~$
เมื่อไปพบการติดตั้งเราสามารถติดตั้งออนไลน์ได้ (เครื่องเชื่อมต่ออินเตอร์เน็ตแล้ว) โดย
เปลี่ยนผู้ใช้เป็น Super user (root)
submarine@Debian77:~$ su #คำสั่งเปลี่ยนเป็น Super user
Password: #ใส่รหัสผ่านของ Super user
root@Debian77:/home/submarine#
เมื่อได้ Super user แล้วก้ติดตั้งโปรแกรมภาษา C และ C++ ด้วยคำสั่ง
root@Debian77:/home/submarine# aptitude install gcc g++
The following NEW packages will be installed:
binutils{a} g++ g++-4.7{a} gcc gcc-4.7{a} libc-dev-bin{a} libc6-dev{a} libitm1{a} libstdc++6-4.7-dev{a}
linux-libc-dev{a} manpages-dev{a}
0 packages upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Need to get 30.1 MB of archives. After unpacking 81.2 MB will be used.
Do you want to continue? [Y/n/?] y
Get: 1 http://ftp.us.debian.org/debian/ wheezy/main libitm1 i386 4.7.2-5 [36.2 kB]
Get: 2 http://ftp.us.debian.org/debian/ wheezy/main binutils i386 2.22-8 [4,565 kB]
Get: 3 http://ftp.us.debian.org/debian/ wheezy/main gcc-4.7 i386 4.7.2-5 [8,267 kB]
Get: 4 http://ftp.us.debian.org/debian/ wheezy/main gcc i386 4:4.7.2-1 [5,062 B]
Get: 5 http://ftp.us.debian.org/debian/ wheezy/main libc-dev-bin i386 2.13-38+deb7u6 [220 kB]
Get: 6 http://ftp.us.debian.org/debian/ wheezy/main linux-libc-dev i386 3.2.63-2 [831 kB]
Get: 7 http://ftp.us.debian.org/debian/ wheezy/main libc6-dev i386 2.13-38+deb7u6 [4,938 kB]
Get: 8 http://ftp.us.debian.org/debian/ wheezy/main libstdc++6-4.7-dev i386 4.7.2-5 [1,711 kB]
Get: 9 http://ftp.us.debian.org/debian/ wheezy/main g++-4.7 i386 4.7.2-5 [7,786 kB]
Get: 10 http://ftp.us.debian.org/debian/ wheezy/main g++ i386 4:4.7.2-1 [1,372 B]
Get: 11 http://ftp.us.debian.org/debian/ wheezy/main manpages-dev all 3.44-1 [1,737 kB]
Fetched 30.1 MB in 3min 17s (152 kB/s)
Selecting previously unselected package libitm1:i386.
(Reading database ... 148933 files and directories currently installed.)
Unpacking libitm1:i386 (from .../libitm1_4.7.2-5_i386.deb) ...
Selecting previously unselected package binutils.
Unpacking binutils (from .../binutils_2.22-8_i386.deb) ...
Selecting previously unselected package gcc-4.7.
Unpacking gcc-4.7 (from .../gcc-4.7_4.7.2-5_i386.deb) ...
Selecting previously unselected package gcc.
Unpacking gcc (from .../gcc_4%3a4.7.2-1_i386.deb) ...
Selecting previously unselected package libc-dev-bin.
Unpacking libc-dev-bin (from .../libc-dev-bin_2.13-38+deb7u6_i386.deb) ...
Selecting previously unselected package linux-libc-dev:i386.
Unpacking linux-libc-dev:i386 (from .../linux-libc-dev_3.2.63-2_i386.deb) ...
Selecting previously unselected package libc6-dev:i386.
Unpacking libc6-dev:i386 (from .../libc6-dev_2.13-38+deb7u6_i386.deb) ...
Selecting previously unselected package libstdc++6-4.7-dev.
Unpacking libstdc++6-4.7-dev (from .../libstdc++6-4.7-dev_4.7.2-5_i386.deb) ...
Selecting previously unselected package g++-4.7.
Unpacking g++-4.7 (from .../g++-4.7_4.7.2-5_i386.deb) ...
Selecting previously unselected package g++.
Unpacking g++ (from .../g++_4%3a4.7.2-1_i386.deb) ...
Selecting previously unselected package manpages-dev.
Unpacking manpages-dev (from .../manpages-dev_3.44-1_all.deb) ...
Processing triggers for man-db ...
Setting up libitm1:i386 (4.7.2-5) ...
Setting up binutils (2.22-8) ...
Setting up gcc-4.7 (4.7.2-5) ...
Setting up gcc (4:4.7.2-1) ...
Setting up libc-dev-bin (2.13-38+deb7u6) ...
Setting up linux-libc-dev:i386 (3.2.63-2) ...
Setting up libc6-dev:i386 (2.13-38+deb7u6) ...
Setting up manpages-dev (3.44-1) ...
Setting up libstdc++6-4.7-dev (4.7.2-5) ...
Setting up g++-4.7 (4.7.2-5) ...
Setting up g++ (4:4.7.2-1) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
root@Debian77:/home/submarine#
root@Debian77:/home/submarine# exit #ออกจาก Super user
exit
submarine@Debian77:~$ which gcc #ตรวจสอบตำแหน่งภาษา C ที่ติดตั้ง
/usr/bin/gcc #โปรแกรมภาษา C ถูกติดตั้งเรียบร้อย
submarine@Debian77:~$
submarine@Debian77:~$ gcc --version #ตรวจสอบเวอร์ชั่นของโปรแกรมภาษา C และคำตอบ
gcc (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
submarine@Debian77:~$
การเขียนโปรแกรมภาษา C/C++ ก็เหมือนกับการเขียนโปรแกรมภาษาอื่นซึ่งประกอบ
ด้วยการวิเคราะห์โจทย์ วิเคราะห์ระบบว่าต้องการให้โปรแกรมประมวลผลเรื่องใด เช่น
คิดคำนวณ เปรียบเทียบ จัดเรียง เป็นต้น การวิเคราะห์ระบบประกอบด้วยส่วนสำคัญ 3 ส่วน
ส่วนแรกคือส่วนนำเข้า (Input) ในภาษา C จะต้องกำหนดส่วนหัวโปรแกรม การเลือกใช้
ชุดคำสั่ง (Library) เช่น ชุดคำสั่งในการคิดคำนวณ การประวลผลภาพ เป็นต้น นอกจากนี้
ส่วนเข้าเข้าของโปรแกรมยังประกอบด้วยการกำหนดตัวแปร ชนิดของตัวแปร ส่วนที่สอง
ของการเขียนโปรแกรม คือ การประมวลผล (Processing) ส่วนใหญ่ก็ประกอบด้วยการคำนวณ
การเปรียบเทียบ และการจัดเรียง เป็นต้น ส่วนสุดท้ายของการเขียนโปรแกรม คือ การ
แสดงผล (Output) เป็นการแสดงผลของการทำงานของโปรแกรมทั้งการแสดงผลทางหน้าจอ
การพิมพ์ออกทางเครื่องพิมพ์ และการแสดงออกเป็นเสียงทางลำโพงเป็นต้น
กลับมาที่การเขียนโปรแกรมภาษา C/C++ บนระบบปฏบัติการ Debian 7.7 ที่เพิ่งติดตั้ง
ไปข้างต้น เราสามารถเขียนโปรแกรมได้ทั้งบน Terminal หรือโปรแกรม Editor ตัวอื่น เช่น
Gedit เช่นเดียวกับคอมพิวเตอร์ระบบอื่น เช่น MS Windows ที่ติดต่อมาใช้งานผ่านระบบ
เครือข่ายด้วย Dos prompt, Putty ก็สามารถใช้งานบน Terminal ได้ หรือจะใช้โปรแกรม Editor
ที่เป็น GUI mode เช่น Edit Plus ได้เช่นกัน
หลังจากเขียนโปรแกรมภาษา C/C++ ด้วยหลักไวยากรณ์ที่ถูกต้องก่อนประมวลผล
โปรแกรมจำเป็นต้องมีการเปลี่ยนภาษาที่เขียนที่เป็นภาษาคน (ภาษาอังกฤษ) ให้เป็นภาษา
เครื่อง เราเรียกว่า การคอมไพล์ (Comply) ชุดโปรแกรม gcc ที่ติดตั้งจะทำหน้าที่เป็นตัว
คอมไพล์ (Complier) คือเปลี่ยนภาษาคนเป็นภาษาเครื่อง โดยเราจะกำหนดให้ผลที่ได้จาก
การคอมไพล์เป็นไฟล์อีกชื่อหนึ่ง เช่น โปรแกรมภาษา C/C++ ที่เขียน ชื่อไฟล์ test.c เมื่อ
คอมไพล์เสร็จตั้งชื่อว่า test เป็นต้น
ด้วยการวิเคราะห์โจทย์ วิเคราะห์ระบบว่าต้องการให้โปรแกรมประมวลผลเรื่องใด เช่น
คิดคำนวณ เปรียบเทียบ จัดเรียง เป็นต้น การวิเคราะห์ระบบประกอบด้วยส่วนสำคัญ 3 ส่วน
ส่วนแรกคือส่วนนำเข้า (Input) ในภาษา C จะต้องกำหนดส่วนหัวโปรแกรม การเลือกใช้
ชุดคำสั่ง (Library) เช่น ชุดคำสั่งในการคิดคำนวณ การประวลผลภาพ เป็นต้น นอกจากนี้
ส่วนเข้าเข้าของโปรแกรมยังประกอบด้วยการกำหนดตัวแปร ชนิดของตัวแปร ส่วนที่สอง
ของการเขียนโปรแกรม คือ การประมวลผล (Processing) ส่วนใหญ่ก็ประกอบด้วยการคำนวณ
การเปรียบเทียบ และการจัดเรียง เป็นต้น ส่วนสุดท้ายของการเขียนโปรแกรม คือ การ
แสดงผล (Output) เป็นการแสดงผลของการทำงานของโปรแกรมทั้งการแสดงผลทางหน้าจอ
การพิมพ์ออกทางเครื่องพิมพ์ และการแสดงออกเป็นเสียงทางลำโพงเป็นต้น
กลับมาที่การเขียนโปรแกรมภาษา C/C++ บนระบบปฏบัติการ Debian 7.7 ที่เพิ่งติดตั้ง
ไปข้างต้น เราสามารถเขียนโปรแกรมได้ทั้งบน Terminal หรือโปรแกรม Editor ตัวอื่น เช่น
Gedit เช่นเดียวกับคอมพิวเตอร์ระบบอื่น เช่น MS Windows ที่ติดต่อมาใช้งานผ่านระบบ
เครือข่ายด้วย Dos prompt, Putty ก็สามารถใช้งานบน Terminal ได้ หรือจะใช้โปรแกรม Editor
ที่เป็น GUI mode เช่น Edit Plus ได้เช่นกัน
หลังจากเขียนโปรแกรมภาษา C/C++ ด้วยหลักไวยากรณ์ที่ถูกต้องก่อนประมวลผล
โปรแกรมจำเป็นต้องมีการเปลี่ยนภาษาที่เขียนที่เป็นภาษาคน (ภาษาอังกฤษ) ให้เป็นภาษา
เครื่อง เราเรียกว่า การคอมไพล์ (Comply) ชุดโปรแกรม gcc ที่ติดตั้งจะทำหน้าที่เป็นตัว
คอมไพล์ (Complier) คือเปลี่ยนภาษาคนเป็นภาษาเครื่อง โดยเราจะกำหนดให้ผลที่ได้จาก
การคอมไพล์เป็นไฟล์อีกชื่อหนึ่ง เช่น โปรแกรมภาษา C/C++ ที่เขียน ชื่อไฟล์ test.c เมื่อ
คอมไพล์เสร็จตั้งชื่อว่า test เป็นต้น
โปรแกรมแรกเราจะใช้ชุดคำสั่ง <stdio.h> ซึ่งเป็นชุดคำสั่งพื้นฐานที่มีคำสั่ง Input, Process
และ Output ง่าย เพื่อแสดงผลทางหน้าจอทั้งภาษาไทย และภาษาอังกฤษ
submarine@Debian77:~$ mkdir C #สร้างโฟลเดอร์ชื่อ C เพื่อเก็บโปรแกรมภาษา C
submarine@Debian77:~$ cd C #เปิดโฟลเดอร์ C
submarine@Debian77:~/C$
submarine@Debian77:~/C$ pico hello.c #ใช้โปรแกรม pico ซึ่งเป็น editor สร้างไฟล์ชื่อ hello.c
hello.c
submarine@Debian77:~/C$
ขั้นตอนต่อไปเป็นการคอมไพล์ไฟล์ชื่อ hello.c ให้เป็นไฟล์ ชื่อ hello ตั้งเป็นชื่ออื่นก็ได้
การคอมไพล์ไฟล์ภาษา C/C++ บนระบบปฏิบัติการลินุกซ์ มีรูปแบบคำสั่ง ดังนี้
gcc -o ชื่อไฟล์ที่เป็นผลลัพธ์ ชื่อไฟล์ภาษา C/C++ ที่ต้องการคอมไฟล์
-o เป็นตัวโอว พิมพ์เล็ก
submarine@Debian77:~/C$ gcc -o hello hello.c #คอมไพล์ไฟล์ชื่อ hell.c ให้เป็นไฟล์ชื่อ hello
submarine@Debian77:~/C$
submarine@Debian77:~/C$ ls #ตรวจสอบแล้วมีไฟล์เพิ่มขึ้น
hello hello.c
submarine@Debian77:~/C$
submarine@Debian77:~/C$ ./hello #สั่งรันไฟล์ชื่อ hello พร้อมการแสดงผล
Hello, world!
ทดสอบภาษาไทยบน Debian
submarine@Debian77:~/C$
จากที่กล่าวมาข้างต้นพบว่าระบบปฏิบัติการ Debian 7.7 GNU Linux รองรับการใช้งาน
ภาษา C/C++ ทั้งที่ใช้งานเป็นเครื่องที่ไม่เชื่มต่อเครือข่าย และเชื่อมต่อเครือข่ายไว้ในฐานะ
ที่เป็นเซิร์ฟเวอร์ให้บริการโปรแกรมภาษา C/C++ ให้กับเครื่องคอมพิวเตอร์ระบบปฏิบัติการ
อื่นได้
ในตอนต่อไปผู้เขียนจะกล่าวถึงการเขียนโปรแกรมภาษา C/C++ ที่ใช้ชุดคำสั่งในการ
คำนวณ การกำหนดตัวแปร การป้อนข้อมูลที่ซับซ้อนยิ่งขึ้น
และ Output ง่าย เพื่อแสดงผลทางหน้าจอทั้งภาษาไทย และภาษาอังกฤษ
submarine@Debian77:~$ mkdir C #สร้างโฟลเดอร์ชื่อ C เพื่อเก็บโปรแกรมภาษา C
submarine@Debian77:~$ cd C #เปิดโฟลเดอร์ C
submarine@Debian77:~/C$
submarine@Debian77:~/C$ pico hello.c #ใช้โปรแกรม pico ซึ่งเป็น editor สร้างไฟล์ชื่อ hello.c
เนื้อหาในโปรแกรมชื่อ hello.c เป็นดังนี้
#include <stdio.h> #บรรทัดนี้เรียกใช้ชุดคำสั่ง <stdio.h>
main() #ส่วนหัวโปรแกรมภาษา C ซึ่งต้องใส่
{
printf("Hello, world!\n"); #คำสั่งแสดงผลทางหน้าจอ \n=ขึ้นบรรทัดใหม่
printf("ทดสอบภาษาไทยบน Debian\n"); #คำสั่งเดียวกันให้แสดงผลภาษาไทยด้วย
return 0;
} #สองบรรทัดล่างเป็นรูปแบบการจบโปรแกรม
โปรแกรม pico จัดเก็บข้อมูลด้วยคำสั่ง Ctrl+W และออกจากโปรแกรมด้วยคำสั่ง Ctrl+X
submarine@Debian77:~/C$
submarine@Debian77:~/C$ ls #สั่งแสดงว่ามีไฟล์ที่ต้องการในโฟลเดอร์หรือไม่hello.c
submarine@Debian77:~/C$
ขั้นตอนต่อไปเป็นการคอมไพล์ไฟล์ชื่อ hello.c ให้เป็นไฟล์ ชื่อ hello ตั้งเป็นชื่ออื่นก็ได้
การคอมไพล์ไฟล์ภาษา C/C++ บนระบบปฏิบัติการลินุกซ์ มีรูปแบบคำสั่ง ดังนี้
gcc -o ชื่อไฟล์ที่เป็นผลลัพธ์ ชื่อไฟล์ภาษา C/C++ ที่ต้องการคอมไฟล์
-o เป็นตัวโอว พิมพ์เล็ก
submarine@Debian77:~/C$ gcc -o hello hello.c #คอมไพล์ไฟล์ชื่อ hell.c ให้เป็นไฟล์ชื่อ hello
submarine@Debian77:~/C$
submarine@Debian77:~/C$ ls #ตรวจสอบแล้วมีไฟล์เพิ่มขึ้น
hello hello.c
submarine@Debian77:~/C$
submarine@Debian77:~/C$ ./hello #สั่งรันไฟล์ชื่อ hello พร้อมการแสดงผล
Hello, world!
ทดสอบภาษาไทยบน Debian
submarine@Debian77:~/C$
จากที่กล่าวมาข้างต้นพบว่าระบบปฏิบัติการ Debian 7.7 GNU Linux รองรับการใช้งาน
ภาษา C/C++ ทั้งที่ใช้งานเป็นเครื่องที่ไม่เชื่มต่อเครือข่าย และเชื่อมต่อเครือข่ายไว้ในฐานะ
ที่เป็นเซิร์ฟเวอร์ให้บริการโปรแกรมภาษา C/C++ ให้กับเครื่องคอมพิวเตอร์ระบบปฏิบัติการ
อื่นได้
ในตอนต่อไปผู้เขียนจะกล่าวถึงการเขียนโปรแกรมภาษา C/C++ ที่ใช้ชุดคำสั่งในการ
คำนวณ การกำหนดตัวแปร การป้อนข้อมูลที่ซับซ้อนยิ่งขึ้น


ไม่มีความคิดเห็น:
แสดงความคิดเห็น