C Programming : เขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 1 – Basic
บทความนี้ ผมคัดลอกมาจากบล็อกเก่า ที่ผมเขียนไว้สมัยเรียนตอนเรียนภาษา C ตอนนั้นเรียนอะไรก็มาเขียนไว้ วันนี้เลยตั้งใจนำมาปรับปรุงใหม่ให้มีแต่เนื้อๆ โดยบทความนี้จะนำเสนอตั้งแต่พื้นฐานแบบ zero มาเลย และอาจจะค่อนข้างรวบรัดนิดนึง ขอแบ่งเป็นตอนๆ เพราะแม้จะพื้นฐานแต่ก็เยอะมาก หนังสือที่ขายกันก็เล่มหนาๆทั้งนั้น
ทำไมต้องเริ่มที่ภาษา C
ภาษา C เป็นรากฐานของหลายๆภาษาในเชิงโปรแกรมมิ่ง ตัวผมเองก็เริ่มจากภาษา C นี่แหละ จากนั้นก็ขยับไป C++ Java C# รูปการเขียนก็ง่าย ไม่ซับซ้อน แต่ทั้งนี้ทั้งนั้นไม่จำเป็นต้องเริ่มที่ภาษา C ก็ได้ แต่ถ้าใครจะเริ่มหัดเขียนโปรแกรม ผมก็แนะนำให้เริ่มรู้จักที่ภาษา C ก่อน
รู้จักโปรแกรม Dev Cpp
โปรแกรมที่ใช้เขียนมีหลายตัวให้เลือก แต่ที่ผมชอบคือ Dev C++ อีกตัวที่นิยมคือ Code Block ในบทความนี้จะใช้ Dev c++
ดาวน์โหลด
https://sourceforge.net/projects/orwelldevcpp/
ถ้าใช้ Windows 8 หรือใหม่กว่า แนะนำให้โหลดเวอชัน 5.0 ขึ้นไป
ติดตั้งโปรแกรมให้เสร็จ
สร้างไฟล์ ไปที่ New > Source File
จะได้หน้าเปล่าๆขึ้นมา สำหรับเขียน code
ให้ทำการ save ก่อน สังเกตว่า นามสกุลจะมีให้เลือก คือ .c หรือ .cpp
.c คือ สำหรับภาษา C
.cpp คือ สำหรับ ภาษา C++ และเราสามารถใช้ C++ เขียน C ได้
.h คือ สกุลของไลบรารี่
ให้เลือก .c แล้วกด save
การ Compile & Run กด F11 หรือกดปุ่มดังรูป
Compile คือ แปลง code ที่เราเขียนเป็น ภาษาโปรแกรมที่ computer เข้าใจ
Compiler คือ ตัวที่ทำหน้าที่ compile
Run คือ การเปิดโปรแกรมที่ compile แล้วขึ้นมา
เรื่องสำคัญที่ต้องรู้
Syntax
ทุกคำสั่งการทำงานจะต้องปิดท้ายด้วย ; (Semi-colon) เช่น
age = 23;
Notation and Comment
เครื่องหมาย = คือ การกำหนดค่า เช่น การกำหนดให้ a มีค่าเป็น 20
a = 20; // assign 20 to a.
นอกนั้นก็ + , – , * , / ได้ตามสมการปกติ ใช้วงเล็บได้ ( )
เช่น สมการ (10+5)/5
answer = (10+5)/5;
บางทีเราต้องการลบโค้ดส่วนนั้นออกชั่วคราว เรียกว่า การคอมเม้น คือ การเขียนเพื่อระบุว่า ตรงนี้ Compiler จะไม่นำไปประมวลผล อาจจะทำเพื่อ อธิบายคนอ่าน หรือ เพื่อลบโค้ดส่วนนั้นชั่วคราว จะใช้
// เพื่อคอมเม้น 1 บรรทัด และ
/* */ แทนหลายๆบรรทัด เช่น
// This comment single line. /* This . comment multi line. */
Case sensitive
คือ ชื่อ abc จะไม่เท่ากับ ABC หรือ aBc
Data Type
ชนิดของข้อมูลพื้นฐาน ที่ควรรู้ คือ
char = ตัวหนังสือ
int = ตัวเลข จำนวนเต็ม -1 -2 0 1 2 3 4 ….
long = เลขจำนวนเต็มเยอะๆ
float = ตัวเลขทศนิยม เช่น 1.5
double = ตัวเลขทศนิยมที่มีจำนวนมากๆ
และถ้าเป็น char จะต้องมี ‘ (single quote) ปิดหน้าหลังเสมอ
char grade = 'A'; int age = 23; float grade = 3.8; double money = 1556.3204843;
มีอีกหลายตัว สามารถไปศึกษาเพิ่มเติมได้
Variable name and Reserve word
การตั้งชื่อ ตัวแปรต่างๆในโปรแกรมมีกฏอยู่เล็กน้อย เช่น ห้ามมีเลขขึ้นต้น ห้ามมีอักษรพิเศษ และห้ามเป็นชื่อเฉพาะ
age_city2 แบบนี้ ถูกต้อง
2age_city แบบนี้ ผิด เพราะ ตัวเลขขึ้นต้นไม่ได้
age฿city แบบนี้ ผิด เพราะ มีอักขระพิเศษ
main แบบนี้ ผิด เพราะ เป็น key word หรือชื่อเฉพาะ
คำสงวนที่ห้ามใช้ตั้งชื่ออยู่ เพราะระบบใช้ไปแล้ว เดี๋ยวจะงง ยกตัวอย่างบางคำนะครับ เพราะมีค่อนข้างเยอะ
char
double
for
if
int
return
void
while
จบคอร์สแบบรวบรัดสุดๆ พื้นฐานข้างบนต้องจำให้ได้
รู้จักกับ #include
#include คือการระบุว่า เราจะนำ library หรือ code ที่มีคนเขียนไว้แล้วมาใช้ในโปรแกรมเรา ซึ่งเจ้านี่จะมีนามสกุล .h เช่น เราต้องการแสดงข้อมูลบนหน้าจอ ก็ต้องอันเชิญ stdio.h (Standard Input/Ouput) เข้ามาในโปรแกรมก่อน โดยจะเขียนไว้ด้านบนสุดของไฟล์
#include<stdio.h>
รู้จักกับฟังชันก์ main
main คือชื่อฟังก์ชันที่เป็นจุดเริ่มทำงานของโปรแกรม พูดง่ายๆคือเปิดโปรแกรมขึ้นมา มันจะมาทำงานที่นี่ โดยจะทำงานตั้งแต่ { ปีกกาเปิด ถึง } ปีกกาปิด จึงเขียนได้ว่า
main() { // do some thing }
รู้จักฟังชันก์ printf()
printf คือ ฟังชันก์ ใน stdio.h ดังนั้นก่อนใช้ต้องอัญเชิญ stdio.h มาก่อนนะ ความสามารถของมันคือ ปริ้นข้อความ เช่น
#include <stdio.h> main(){ printf("Hello World"); }
เราจะได้ข้อความ “Hello world”
ถ้าเป็นข้อความยาวๆ เราจะใช้ ” (double quote)
รู้จักกับการสร้างตัวแปร
การสร้างตัวแปร โดยทั่วไปในทางการเขียนโปรแกรม จะเรียกว่าการประกาศ (Declaration)
ตัวแปร (variable) คือ ตัวที่เก็บข้อมูลของเราไว้ โดยจะต้องระบุ ประเภทขึ้นต้นก่อน เช่น ต้องการบอกว่า ตอนนี้ มีเงินอยู่ 100 บาท ก็แค่สร้างตัวแปร money ขึ้นมา แล้วระบุด้านหน้า money ว่าเป็น int นะ
int money = 100;
เปลี่ยนค่ามันก็สามารถกำหนดอีกครั้งแต่ไม่ต้องมี ประเภท
int money = 100; printf("money = %d",money); money = 22; printf(" , new money = %d",money);
แล้วลอง run
ขึ้นบรรทัดใหม่และการแท็บ
บางทีเราจะปริ้นข้อความอะไรมันก็จะติดกันยาว ทำให้ไม่สวยงาม ซึ่งใน printf สามารถใช้อักษณะพิเศษได้ดังนี้
\n คือ ขึ้นบรรทัดใหม่
\t คือ แท็บ
นำตัวแปรมาใช้กับ printf
บางทีเราก็ต้องการแสดงค่าจาก ตัวแปร ก็สามารถทำได้ แต่เราต้องรู้ก่อนว่ามันทำงานยังไง
int money = 100; printf("Money = %d",money);
แบบนี้คือแสดง ข้อความ “Money = 100” สังเกตว่า 100 จะมาแทน %d นั่นเอง โดย 100 มาจาก money อีกที
แล้วถ้ามีตัวแปรมากกว่า 1 ตัวล่ะ
ก็ใช้รูปแบบเดิม
int money = 100; char grade = 'B'; printf("Money = %d and Grade = %c",money,grade);
ลองรันเพื่อดูผล
สังเกตว่า money จะไปแทน %d และ grade จะไปแทน %c ถ้ามี 3 4 5 ตัวหรือมากกว่านี้ ก็ใช้หลักการนี้
ซึ่งต่าง data type กันก็ใช้ % ต่างกันไป เพื่อแสดงผล
int = %d
float = %f
double = %lf
long = %ld
char = %c
รู้จักกับ Ascii
acii คือ ค่าตัวเลขที่แทนอักขระ เพื่อให้เห็นภาพ ลองดู code ด้านล่าง
เราประกาศตัวแปร alphabet_A , alphabet_B , alphabet_C ว่าเป็นชนิด char
แต่ตอนเรา printf เราสั่ง %d ที่เป็นสำหรับ int
#include <stdio.h> main(){ char alphabet_A = 'A'; char alphabet_B = 'B'; char alphabet_C = 'C'; printf("\n A = %d",alphabet_A); printf("\n B = %d",alphabet_B); printf("\n C = %d",alphabet_C); }
ลองรันดู
มันก็แสดงผลออกมาเป็นเลข เลขในที่นี้ก็คือ ค่าของ ascii อักขระตัวนั้นนั่นเอง
‘A’ = 65
‘B’ = 66
‘C’ = 67
ในทางกลับกัน ลองกำหนดค่า int แล้วไปแสดงเป็น char ดูบ้าง
#include <stdio.h> main(){ int value_A = 65; int value_B = 66; int value_C = 67; printf("\n 65 = %c",value_A); printf("\n 66 = %c",value_B); printf("\n 67 = %c",value_C); }
ดังนั้นอักขระทุกตัวจะมีค่า ascii ของตัวเอง และสังเกตว่า A B C จะมีค่า ascii เรียงกันไป
อีกทั้งมันมีค่าเป็นตัวเลข เราจึงสามารถเอามา + – กันได้ด้วย เช่น
#include <stdio.h> main(){ int value_A = 65; int value_Z = value_A + 25; printf("\n A+25 = %c",value_Z); }
ตอนนี้คงเข้าใจแล้วว่า Ascii คืออะไร และสามารถดูค่า อื่นๆจาก ตาราง Ascii ได้
http://www.asciitable.com/
รู้จักฟังชันก์กับ scanf
ก่อนหน้านี้เราทำได้แค่แสดงผล แต่ไม่สามารถทำให้โปรแกรมรับค่าได้จากคีบอร์ด
ฟังชันก์รับค่า ใน ภาษา C คือ scanf
วิธีการคือ เราต้องประกาศตัวแปรก่อน
จากนั้นเรียกใช้ฟังชันก์ scanf
พารามิเตอร์แรกคือ รูปแบบ ตาม type ของตัวแปร เช่น %d
พารามิเตอร์ตัวที่สองคือ ตัวแปรที่ต้องเอาไปเก็บค่า เช่น &data
อย่าลืม ใส่ & (ampersand) ไว้หน้าตัวแปร
ที่ต้องใส่ & ไปที่หน้าตัวแปรด้วย คือ การบ่งบอกว่า เราจะรับค่าไปเก็บที่ address ใน memory ของตัวแปรนั้น (อย่าพึ่งงง)
ใช่แล้วครับ & หมายถึง address ใน memory ถ้าเราไม่ใส่ สมมุติว่าตัวแปร data มีค่า 20 ซึ่ง address 20 ใน memory อาจจะไม่มีก็ได้ทำให้โปรแกรมพัง เรื่องนี้เดี๋ยวอธิบายเพิ่มเติมในบทความต่อไป
ลองทำกันดีกว่า เราจะทำโปรแกรม ให้ผู้ใช้ใส่เลขลงไป แล้วโปรแกรมจะแสดงผลเป็นเลขนั้นยกกำลังสอง
#include <stdio.h> main(){ int data = 0; printf("Input integer = "); scanf("%d",&data); data = data * data; printf("\nvalue power 2 = %d",data); }
ลองรัน
ใส่เลขลงไป แล้วกดปุ่ม ENTER
เท่านี้แหละ การใช้ scanf แบบพื้นฐาน การรับ char , float ก็ใช้หลักการเดียวกัน
บทความนี้เป็นพื้นฐานมากๆในการรู้จักกับ ภาษา C
อ่านต่อใน บทความตอนที่ 2 ครับ
(: