Dev C EP.1 Basic C language program ( โปรแกรมภาษา C ขั้นพื้นฐาน )

Tawatchai Kalawong
5 min readApr 29, 2020

--

ขออณุญาติไม่สอนวิธีการติดตั้งโปรแกรมสำหรับการเขียนโปรแกรม น่ะครับ เเต่ถ้าใครยังไม่รู้ว่าต้องลงโปรแกรมยังไง คลิ้กไปที่ลิ้ง วิธีติดตั้งโปรแกรม Dev-C++ ได้ครับ

https://www.comscidev.com/446-how-to-install-dev-c-plus-plus-program/

ใน Ep นี้ผมจะมาแนะนำ ขั้นตอนในการพัฒนาโปรแกรม โครงสร้างโปรแกรมภาษา C ตัวแปร และ ตัวดำเนินการ จนไปถึงการ แสดงผล และ รับค่า ข้อผิดพลาดที่เกิดขึ้นบ่อย โดยผมจะแนะนำขั้นพื้นฐานสำหรับคนเขียนโปรแกรมและภาษา c เป็นครั้งแรก เพื่อเป็นการเสียเวลาในการอ่าน ทข้างต้นนานจนเกินไป เราไปเริ่มกันเลยดีกว่า

โปรแกรมแรกกับภาษา C

เป็นโปรแกรมสั่งพิมพ์ข้อความ Hello World!!!

มา ต่อไปผมจะอธิบายเเต่ละส่วนให้ฟัง

ส่วนแรก จะเป็นส่วนของ preprocessor คือ

  • บรรทัดที่เริ่มต้นด้วย เครื่องหมาย # เรียกว่า preprocessor ตัวอย่างเช่น #include <stdio.h> ซึ่งเป็นตัวบอกว่าให้นำ header file ของมาตราฐานการส่งรับข้อมูล ใน stdio.h เข้ามาในโปรแกรมด้วย เนื่องจากจำเป็นต้องใช้
  • โดย header file ตัวนี้มีข้อมูลของคำสั่ง printf() ที่ใช้ในโปรแกรมของเรา
  • stdio.h คือ เป็น header file ของไลบรารี่ของฟังก์ชันที่ช่วยให้เราสามารถเขียนโปรแกรมได้โดยไม่จำเป็นต้องเขียนโปรแกรมเดิม ๆ หลาย ๆ ครั้ง§เนื่องจากฟังก์ชันบางตัวนั้นมีขนาดยาวและมีความซับซ้อน การที่ไม่ต้องเขียนฟังก์ชันเหล่านี้เองทำให้การเขียนโปรแกรมง่ายและเร็วขึ้น §การใช้งานฟังก์ชันเหล่านี้ยังเป็นการทำให้ง่ายต่อการเรียนรู้โปรแกรม เนื่องจากทำให้อ่านโปรแกรมง่าย

ส่วนที่ 2 int main ( void )

  • ทุกๆโปรแกรมจะต้องมีฟังก์ชันที่ชื่อว่า main. เพราะนี้เป็นส่วนแรกที่โปรแกรมจะเริ่มทำงาน
  • ฟังก์ชัน main( ) ถูกกำหนดขึ้นให้เป็นส่วนแรกของโปรแกรมที่จะถูกรันเพื่อให้สะดวกแก่การอ่านโปรแกรม ทุกโปรแกรมต้องมีฟังก์ชันที่มีชื่อนี้ และต้องมีเพียงฟังก์ชันเดียวเท่านั้นเพื่อให้โปรแกรมสามารถ compile และทำงานได้
  • คำสงวน “int” ที่นำหน้า main( ) เป็นตัวบอกว่าฟังก์ชันจะมีการส่งค่าออกเป็นชนิดตัวเลขจำนวนเต็ม (int มาจาก integer) เมื่อจบฟังก์ชัน
  • วงเล็บ ( )ที่ตามหลังคำสงวน “main” บอกให้ทราบว่านี้คือฟังก์ชัน
  • คำสงวน “void” บอกให้ทราบว่าฟังก์ชันดังกล่าวไม่มีการรับค่าเข้าจากภายนอก (parameter/argument)

ส่วนที 3 Comment คำอธิบายโปรแกรม

  • comment เป็นข้อมูลที่ช่วยให้ข้อมูลเกี่ยวกับโปรแกรม
  • ใช้อธิบายหน้าที่การทำงานของโปรแกรม ฟังก์ชัน หรือคำสั่ง เพื่อความง่ายในการทำความเข้าใจ
  • เขียนด้วยภาษาอะไรก็ได้ (ภาษาไทยก็ได้)
  • ไม่มีผลกระทบกับการทำงานของโปรแกรม
  • ในขณะทดลองแก้ไขโปรแกรม ส่วนใดต้องการข้ามไป ใช้ comment ปิดไว้ก่อน ไม่ต้องลบ code ออกทั้งหมด เผื่อต้องการเรียกกลับมาใช้ใหม่ได้
  • เราสามารถเขียนคำอธิบายโปรแกรมได้สองแบบ คือ

ส่วนที่ 4 ส่วนของโปรแกรม

  • บรรทัดนี้เป็นส่วนคำสั่งของภาษาซี
  • เป็นการเรียกใช้ฟังก์ชันชื่อว่า printf ( ) โดยมีการส่งผ่านค่าเข้าไปในฟังก์ชัน หนึ่งค่า “Hello World!!!” เป็น ค่าชนิด string
  • argument (parameter): ค่าที่ส่งผ่านเข้าไปในฟังก์ชั่น
  • return 0 ; เนื่องจากฟังก์ชัน main() มีการส่งค่ากลับมา ก่อนจะจบฟังก์ชันจึงต้องมีการใช้คำสั่ง return ตามด้วยตัวเลขที่จะส่งกลับไป โดยค่าที่ส่งกลับไปจะถูกส่งไปให้ระบบปฏิบัติการ (operating systems) ค่า 0 เป็นตัวบอกว่าโปรแกรมทำงานเสร็จสิ้นสมบูรณ์

ส่วนที่ 5 ขอบเขตของฟังก์ชัน

  • วงเล็บปีกกาเปิด { บอกให้ทราบว่าส่วนของฟังก์ชันหรือขอบเขตของโค๊ดเริ่มต้นที่ใด
  • วงเล็บปีกกาปิด } บอกให้ทราบว่าส่วนของฟังก์ชันหรือขอบเขตของโค๊ดสิ้นสุดที่ใด
  • เครื่องหมาย ; บอกให้ทราบว่าคำสั่งหนึ่งจบลง (ต้องใส่ไว้หลังคำสั่งทุกคำสั่ง มิฉะนั้นจะเกิด syntax error
  • การย่อหน้าในการเขียนโปรแกรมเป็นลักษณะการเขียนโปรแกรมที่ดี เพื่อให้สะดวกต่อการหาขอบเขตของคำสั่ง

ตัวอย่างโปรแกรม

# include <stdio.h>
int main (void)
{
printf(“My name is Tommy \n”);
return 0;
}

ผลการรันโปรแกรม

My name is Tommy

ตัวแปรและตัวดำเนินการ

ภาษา C เป็นภาษาที่เข้มงวดกับเรื่องชนิดข้อมูล

  • int ตัวเลขจำนวนเต็ม
  • float ตัวเลขทศนิยม
  • double ตัวเลขทศนิยมที่มีความจุเป็น 2 เท่า
  • char ตัวอักษร

ชนิดข้อมูลบางตัว อาจทำงานร่วมกับตัวปรับปรุง signed, unsigned, short และ long

ชนิดข้อมูลพื้นฐาน

ข้อมูล

ข้อมูลภายในโปรแกรม

ค่าคงที่

  • ตัวเลขจำนวนเต็ม (ฐานสิบ Decimal) เช่น 10, 20, -5

→เลขฐาน 16 (Hexadecimal) เช่น 0x32, 0x5FB (ขึ้นต้นด้วย 0x)

→เลขฐาน 8 (Octal) เช่น 013, 041, 07 (ขึ้นต้นด้วยศูนย์)

  • ตัวเลขทศนิยม เช่น 7.2, 5.6, 0.002, 2e-3, -3.14159e2, -314.159
  • ตัวอักษร เช่น ‘c’ ,’1', ‘5’ , ‘ ‘ (space), ‘$’

→ตัวอักษรพิเศษที่ขึ้นต้นด้วย \ เช่น ‘\t’

→อักขระพิเศษสามารถยกเลิกความพิเศษได้โดยใช้ \ นำหน้า เช่น ‘\\’ คืออักขระ \

  • ข้อความ String (ไม่ใช่ข้อมูลชนิดพื้นฐาน) เช่น “Hello”

→ ข้อความว่างเปล่า “”

→ ข้อความที่มีตัวอักษรว่าง(space)หนึ่งตัว “ “

ข้อมูลตัวอักษร Character

  • ขนาดหนึ่งไบต์ เก็บค่าเป็นจำนวนเต็มได้ 256 ค่า (0_255 หรือ -128_127)
  • ค่าจำนวนคือรหัสของตัวอักษร ตามมาตรฐานASCII เรียกว่ารหัสแอสกี้ (ASCII)

ตัวแปร Variable

  • ใช้หน่วยความจำของคอมพิวเตอร์ในการจดจำข้อมูล
  • ยากที่จะอ้างอิงตำแหน่งในหน่วยความจำ เราจึงใช้ชื่อของตัวแปรในการอ้างอิง
  • ตัวแปรต้องถูกประกาศก่อนการใช้งาน
  • การประกาศตัวแปร ประกอบด้วย ชนิดข้อมูล ชื่อตัวแปร (อาจจะมีการกำหนดค่าเริ่มต้นด้วย) และตามด้วย ; (semi-colon)

→ เช่น int x; หรือ int x = 2;

→ชื่อตัวแปร เป็นการประกอบกันระหว่าง ตัวอักษร ตัวเลข เครื่องหมาย

_ (underscore) ทั้งนี้ห้ามขึ้นต้นด้วยตัวเลข และไม่เป็นคำสงวน

ตัวอย่างการประกาศใช้งานตัวแปร

  • ประกาศตัวแปร c มีชนิดเป็นตัวอักษร 1 ตัว
char c ;
  • ประกาศตัวแปร count มีชนิดเป็นเลขจำนวนเต็มพร้อมทั้งกำหนดให้มีค่าเท่ากับ 8
int count=8;
  • ประกาศตัวแปร price มีชนิดเป็นเลขทศนิยม
float price;

ตัวอย่างการประกาศตัวแปร

  • ประกาศตัวแปรชื่อ happy มีชนิดเป็นตัวอักษร 1 ตัว พร้อมทั้งกำหนดให้มีค่าเป็นตัวอักษร C ( capital letter พิมพ์ใหญ่ )
char happy=‘C’;
  • ประกาศตัวแปร easy มีชนิดเป็นเลขจำนวนเต็มพร้อมทั้งกำหนดให้มีค่าเท่ากับ 5 และ ตัวแปร Easy มีชนิดเป็นเลขจำนวนเต็มพร้อมทั้งกำหนดให้มีค่าเท่ากับ 10
int easy=5, Easy=10;
หรือ
int easy=5; int Easy=10;
  • ประกาศตัวแปรชื่อ test มีชนิดเป็นเลขทศนิยมมีค่าเท่ากับ 7.5
float test=7.5;

การตั้งชื่อตัวแปร

  • อักษรตัวแรกจะต้องเป็นตัวอักษรภาษาอังกฤษหรือเครื่องหมาย

_ (underline character)

สามารถตั้งชื่อตัวแปรโดยใช้ตัวเลขร่วมกับตัวอักษรภาษาอังกฤษ ได้แต่ห้ามใช้ตัวเลขเป็นตัวอักษรตัวแรก

  • ตัวอักษรภาษาอังกฤษตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ถือเป็นคนละตัวกัน เช่น name กับ NAME

ห้ามตั้งชื่อซ้ำกับคำสงวน (Keywords) ซึ่งเป็นคำที่มีอยู่แล้วในภาษา C

ตัวอย่าง

คำต่อไปนี้สามารถนำมาตั้งเป็นชื่อตัวแปรได้หรือไม่

number   2value    ❌grade1student_idfloat     ❌_scorea!ge      ❌Number-person  ❌$age   ❌

ตัวอย่างการใช้งานตัวแปร

#include <stdio.h>     #define NUM 5  ----> NUM ไม่ใช่ตัวแปร แต่จะถูกแทนด้วย5 ก่อนการคอมไพล์int main(){int x = NUM;   ----> x เป็นตัวแปร ชนิดจำนวนเต็มfloat y;y = x + NUM;  ----> ค่า y ถูกกำหนดค่าโดยเครื่องหมาย =ด้านซ้ายเป็นตัวแปรด้านขวา
เป็นการคำนวณตัวเลข
printf(“%.1f\n”, y); return 0;}# ผลลัพธ์ของการคำนวณเป็นไปตามชนิดข้อมูลของตัวถูกดำเนินการที่ใหญ่สุด
int + float => float

ตัวดำเนินการทางคณิตศาสตร์ Arithmetic Operators

  • ตัวดำเนินการทางคณิตศาสตร์ มี 5 ตัว คือ บวก ลบ คูณ หาร มอดูลัส ( + — * / % ตามลำดับ)
  • มอดูลัสคือการหาเศษของการหาร ใช้ได้กับจำนวนเต็มเท่านั้น
  • มอดูลัส คือ เครื่องหมายที่ให้ผลลัพธ์เป็น เศษของการหาร คือ 13%5 ได้ 3
  • ผลลัพธ์ของนิพจน์ จะมีชนิดข้อมูล ตามชนิดข้อมูลที่ใหญ่ที่สุดของตัวถูกดำเนินการ

−int x =6; float y = 2.0;

−x*5 ผลลัพธ์ที่ได้คือ นิพจน์ของ int

−x/5 ผลลัพธ์ที่ได้คือ นิพจน์ของ int (เลขทศนิยมจะหายไป)

−x*y ผลลัพธ์ที่ได้ คือ นิพจน์ของ float

ตัวอย่าง

จากคำสั่งต่อไปนี้

int a,b,c;a = 2;b = 3;c = a + b;

จงหาค่าของตัวแปร c

ตอบ C = 5

ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operator)

ลำดับของตัวดำเนินการ

ตัวอย่าง การหาค่าของนิพจน์ต่อไปนี้

ความแตกต่างของเครื่องหมาย = และ ==

เครื่องหมาย = เป็นตัวกำหนดค่า

เครื่องหมาย == เป็นเครื่องหมายเปรียบเทียบ

ตัวอย่างเช่น point = 30;

หมายถึง เป็นการกำหนดค่าให้กับตัวแปร point ให้มีค่าเท่ากับ 30

point == 30;

หมายถึง เป็นการตรวจสอบว่าค่า point มีค่าเท่ากับ 30 หรือไม่

ตัวดำเนินการเพิ่มค่าและตัวดำเนินการลดค่า
(Increment & Decrement)

  • ตัวดำเนินการ ++ จะบวกหนึ่งเข้ากับตัวแปรที่ถูกดำเนินการ
  • ตัวดำเนินการ — จะลบหนึ่งออกจากตัวแปรที่ถูกดำเนินการ

ตัวอย่าง

//increment.c
#include <stdio.h>
int main()
{
int a = 2,b,c;
b = ++a;
printf(“b= %d a= %d\n”,b,a);
c = b++;
printf(“b= %d c= %d\n”,b,c);
return 0;
}

แสดงผล

b= 3 a= 3

b= 4 c=3

การแปลงชนิดข้อมูล

การแปลงชนิดข้อมูล เกิดขึ้นได้ 3 ทางด้วยกัน

  • ทางที่ 1 การแปลงผ่านเครื่องหมาย =
int a = 3;
double y=a;
printf(“y %f”,y); // 3.000
  • ทางที่ 2 การแปลงเมื่อเกิดการดำเนินการ
− เมื่อ a * b โดย a และ b เป็น intint a = 3,b,c;
float y=1.5;
printf(“%f”,(a*y)); //4.5000

•ทางที่ 3 การแปลงผ่านการทำคาสติ้ง (Casting)

− บังคับให้เป็นชนิดที่ต้องการ
int a=22, b=10; float x = (float)a/b;

ตัวอย่าง Casting
//cast.c
#include <stdio.h>
int main()
{
int a =10, b=4;
double x1,x2,x3;
printf("a/b= %d \n",(a/b));
x1=a/b;
printf("x1= %f \n",x1);
x2= (double)(a/b);
printf("x2= %f \n",x2);
x3= (double)a/b;
printf("x3= %f \n",x3);
return 0;}

ผลลัพธ์

ตัวดำเนินการประกอบ (Compound Operator)

  • เป็นรูปย่อของตัวดำเนินการและตัวแปรที่ถูกดำเนินการ

ตัวอย่างเช่น

x = x + 1; เขียนแทนได้ด้วย x += 1;

a = a — b; เขียนแทนได้ด้วย a -= b;

x = x * 2; เขียนแทนได้ด้วย x *= 2;

y = y / 5; เขียนแทนได้ด้วย y /= 5;

ตัวอย่างจากคำสั่งต่อไปนี้int num1 = 3,num2 = 1;
num1 *= 4;
num2 += num1–2;

จงหาค่าของตัวแปร num2

ตอบ num 2= 11

ตัวอย่างการใช้ตัวแปร ( ภายใน )

#include <stdio.h>void my_func();
int main()
{
double x = 1.1;
my_func();
printf(“In main x = %f\n”,x);
return 0;
}
void my_func()
{
double x;
x = 2.5;
printf(“In my_func x = %f\n”,x);
}

ผลลัพธ์

ตัวอย่างการใช้ตัวแปร ( ภายนอก )

#include <stdio.h>double x;
void my_func();
int main()
{
x = 1.1;
my_func();
printf(“In main x = %f\n”,x);
return 0;
}
void my_func()
{
x = 2.5;
printf(“In my_func x = %f\n”,x);
}

ผลลัพธ์

โอเค มาถึงตรงนี้ก็ ผู้อ่านก็คงจะเหนื่อยเเล้ว คนเขียน ก็เริ่ม เหนื่อยเเล้วเหมือนกัน เอาเป็นว่า Ep.1 ก็พอไว้เเค่นี้ก่อนน่ะ ส่วน Ep ต่อไป ก็น่าจะเป็นเรื่อง การแสดงผลและการรับค่า น่ะครับ เอาเป็นว่าก็ลองเอาโค๊ดไปลองหัดเขียนหรือหัด แกะโค๊ดบ่อยๆน่ะครับ สำหรับคนที่พึ่งศึกษาก็อย่าพึ่งท้อน่ะครับ เพราะ ภาษา C++ ถ้าศึกษา และทำความเข้าใจเกี่ยวกับกระบวนการคิด และลักษณะการเขียนโปรแกรม ก็จะทำให้เข้าใจภาษา อื่น ๆ ได้ง่ายยิ่งขึ้นครับ เอาเป็นว่าก็ขอเป็นกำลังใจให้น่ะครับ Ep ถัดไปจะมาเมื่อไหร่ไม่เเน่ใจน่ะครับ อยู๋ที่ความขยัน ของผมเองครับ ก็ขอขอบคุณที่อ่านมาถึงตรงนี้น่ะครับ ขอบคุณมากๆ ครับผม 😊

เอกอ้างอิง

- นราธร สังข์ประเสริฐ, เอกสารประกอบการบรรยายวิชา 04–511–101 การโปรแกรมคอมพิวเตอร์, คณะวิศวกรรมศาสตร์, มหาวิทยาลัยเทคโนโลยีราชมงคลศรีวิชัย , 2558

- Sites.google.com, “รหัสเทียม Psuedo Code — Programming”, 2016. [Online]. Available: https://sites.google.com/site/programmingm42/-rhas-theiym-psuedo-code. [Accessed: 17- Jan- 2016].

- Sites.google.com, “การแก้ปัญหา — Programming”, 2016. [Online]. Available: https://sites.google.com/site/programmingm42/kar-kae-payha. [Accessed: 17- Jan- 2016].

--

--

No responses yet