web analytics

C Programming : เขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 1 – Basic

cover

บทความนี้ ผมคัดลอกมาจากบล็อกเก่า ที่ผมเขียนไว้สมัยเรียนตอนเรียนภาษา 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

2

 

จะได้หน้าเปล่าๆขึ้นมา สำหรับเขียน code

1

 

ให้ทำการ save ก่อน สังเกตว่า นามสกุลจะมีให้เลือก คือ .c หรือ .cpp
.c คือ สำหรับภาษา C
.cpp คือ สำหรับ ภาษา C++ และเราสามารถใช้ C++ เขียน C ได้
.h คือ สกุลของไลบรารี่
ให้เลือก .c แล้วกด save

3

 

การ Compile & Run กด F11 หรือกดปุ่มดังรูป
Compile คือ แปลง code ที่เราเขียนเป็น ภาษาโปรแกรมที่ computer เข้าใจ
Compiler คือ ตัวที่ทำหน้าที่ compile
Run คือ การเปิดโปรแกรมที่ compile แล้วขึ้นมา

5

 

เรื่องสำคัญที่ต้องรู้

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) 

4

 

รู้จักกับการสร้างตัวแปร

การสร้างตัวแปร โดยทั่วไปในทางการเขียนโปรแกรม จะเรียกว่าการประกาศ (Declaration)
ตัวแปร (variable) คือ ตัวที่เก็บข้อมูลของเราไว้ โดยจะต้องระบุ ประเภทขึ้นต้นก่อน เช่น ต้องการบอกว่า ตอนนี้ มีเงินอยู่ 100 บาท ก็แค่สร้างตัวแปร money ขึ้นมา แล้วระบุด้านหน้า money ว่าเป็น int นะ

 int money = 100;

เปลี่ยนค่ามันก็สามารถกำหนดอีกครั้งแต่ไม่ต้องมี ประเภท

  int money = 100;
  printf("money = %d",money);
  money = 22;
  printf(" , new money = %d",money);

แล้วลอง run

8

 

ขึ้นบรรทัดใหม่และการแท็บ

บางทีเราจะปริ้นข้อความอะไรมันก็จะติดกันยาว ทำให้ไม่สวยงาม ซึ่งใน printf สามารถใช้อักษณะพิเศษได้ดังนี้
\n คือ ขึ้นบรรทัดใหม่
\t คือ แท็บ

7

 

นำตัวแปรมาใช้กับ 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);

ลองรันเพื่อดูผล

6

สังเกตว่า money จะไปแทน %d  และ grade จะไปแทน %c ถ้ามี 3 4 5 ตัวหรือมากกว่านี้ ก็ใช้หลักการนี้

9

ซึ่งต่าง 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);
  }

ลองรันดู

10

มันก็แสดงผลออกมาเป็นเลข เลขในที่นี้ก็คือ ค่าของ 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);
  }

11

ดังนั้นอักขระทุกตัวจะมีค่า 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);
  }

12
ตอนนี้คงเข้าใจแล้วว่า Ascii คืออะไร  และสามารถดูค่า อื่นๆจาก ตาราง Ascii ได้
http://www.asciitable.com/

 

รู้จักฟังชันก์กับ scanf

ก่อนหน้านี้เราทำได้แค่แสดงผล แต่ไม่สามารถทำให้โปรแกรมรับค่าได้จากคีบอร์ด
ฟังชันก์รับค่า ใน ภาษา C คือ scanf

วิธีการคือ เราต้องประกาศตัวแปรก่อน
จากนั้นเรียกใช้ฟังชันก์ scanf
พารามิเตอร์แรกคือ รูปแบบ ตาม type ของตัวแปร เช่น %d
พารามิเตอร์ตัวที่สองคือ ตัวแปรที่ต้องเอาไปเก็บค่า เช่น &data
อย่าลืม ใส่ & (ampersand) ไว้หน้าตัวแปร

13

ที่ต้องใส่ & ไปที่หน้าตัวแปรด้วย คือ การบ่งบอกว่า เราจะรับค่าไปเก็บที่ 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

a1

เท่านี้แหละ การใช้ scanf แบบพื้นฐาน การรับ char , float ก็ใช้หลักการเดียวกัน

 

 

บทความนี้เป็นพื้นฐานมากๆในการรู้จักกับ ภาษา C
อ่านต่อใน บทความตอนที่ 2 ครับ

C Programming : การเขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 2

(: