วัตถุประสงค์เชิงพฤติกรรม (Behavioral Objectives)
หลังจากศึกษาจบบทเรียนนี้แล้ว นักศึกษาจะมีความสามารถดังนี้
(After studying this chapter, you will be able to)
1. อธิบายโครงสร้างของภาษา C และยกตัวอย่าง
2. บอกกฎเกณฑ์ในการตั้งชื่อและยกตัวอย่าง
3. แบ่งชนิดข้อมูลในภาษา C และแสดงตาราง
4. อธิบายตัวแปรและยกตัวอย่าง
5. ยกตัวอย่างชนิดข้อมูลแบบค่าคงที่
6. เขียนแผนภูมิแสดง Statements แบบต่าง ๆ ของภาษา C
7. แสดงสัญลักษณ์ของผังงานมาตรฐาน (Flow Chart)
8. แสดงการออกแบบผังงาน (แบบเรียงลำดับ แบบทางเลือก แบบการทำงานซ้ำ)
9. จัดบอร์ดเชิงปฏิบ้ติการ โครงสร้างของภาษา C
10. สนทนาเชิงปฏบัติการ ชนิดข้อมูลแบบคงที่ (Constants)
11. อธิบายคำศัพท์ได้ 14 คำ
บทที่ 2
โครงสร้างของภาษา C
ภาษา C เป็นภาษาคอมพิวเตอร์ที่ถูกคิดค้นขึ้นโดย Denis Ritchie ในปี ค.ศ. 1970โดยใช้ระบบปฏิบัติการของยูนิกซ์ (UNIX) นับจากนั้นมาก็ได้รับความนิยมเพิ่มขึ้นจนถึงปัจจุบันภาษา C สามารถติดต่อในระดับฮาร์ดแวร์ได้ดีกว่าภาษาระดับสูงอื่น ๆ ไม่ว่าจะเป็นภาษาเบสิกฟอร์แทน ขณะเดียวกันก็มีคุณสมบัติของภาษาระดับสูงอยู่ด้วย ด้วยเหตุผลดังกล่าวจึงจัดได้ว่าภาษา C เป็นภาษาระดับกลาง (Middle-lever Language)
ภาษา C เป็นภาษาคอมพิวเตอร์ชนิดคอมไพล์ (Compiled Language) ซึ่งมี
คอมไพลเลอร์ (Compiler) ทำหน้าที่ในการคอมไพล์ (Compile) หรือแปลงคำสั่งทั้งหมดในโปรแกรมให้เป็นภาษาเครื่อง (Machine Language) เพื่อให้เครื่องคอมพิวเตอร์นำคำสั่งเหล่านั้นไปทำงานต่อไป
โครงสร้างของภาษา C
ทุกโปรแกรมของภาษา C มีโครงสร้างเป็นลักษณะ
ส่วนเฮดเดอร์ไฟล์ |
ส่วนตัวแปรแบบ Global |
int main (void)
{
ส่วนตัวแปร Local
ตัวโปรแกรม
ค่าส่งกลับ
} |
โครงสร้างหรือลักษณะของภาษา C
เฮดเดอร์ไฟล์ ( Header Files)
เป็นส่วนที่เก็บไลบรารีมาตรฐานของภาษา C ซึ่งจะถูกดึงเข้ามารวมกับโปรแกรมในขณะที่กำลังทำการคอมไพล์ โดยใช้คำสั่ง
#include<ชื่อเฮดเดอร์ไฟล์> หรือ
#include ชื่อเฮดเดอร์ไฟล์
ตัวอย่าง
#include<stdio.h>
เฮดเดอร์ไฟล์นี้จะมีส่วนขยายเป็น .h เสมอ และเฮดเดอร์ไผล์เป็นส่วนที่จำเป็นต้องมีอย่างน้อย 1 เฮดเดอร์ไฟล์ ก็คือ เฮดเดอร์ไฟล์ stsio.h ซึ่งจะเป็นที่เก็บไลบรารีมาตรฐานทีจัดการเกี่ยวกับ Input และ Output
ส่วนตัวแปรแบบ Global (Global Variables)
เป็นส่วนที่ใช่ประกาศตัวแปรหรือค่าต่าง ๆ ที่ให้ใช้ได้ทั้งโปรแกรม ซึ่งในส่วนไม่จำเป็นต้องมีก็ได้
ฟังก์ชัน ( Functions)
เป็นส่วนที่เห็บคำสั่งต่าง ๆ ไว้ ซึ่งในภาาา C จะบังคับให้มีอย่างน้อย 1 ฟังก์ชันนั่นก็คือ ฟังก์ชัน Main( ) และในโปรแกรม 1 โปรแกรมสามารถมีฟังก์ชันได้มากกว่า 1 ฟังก์ชัน
ส่วนตัวแปรแบบ Local (Local Variables)
เป็นส่วนที่ใช่สำหรับประกาศตัวแปรที่จะใช้ในเฉพาะฟังก์ชันของตนเอง ฟังก์ชันอื่นไม่สามารถเข้าถึงหรือใช้ได้ ซึ่งจะต้องทำหารประกาศตัวแปรก่อนการใช้งานเสมอ และจะต้องประกาศไว้ในส่วนนี้เท่านั้น
ตัวโปรแกรม ( Statements)
เป็นส่วนที่อยู่ถัดลงมาจากส่วนตัวแปรภายใน ซึ่งประกอบด้วยคำสั่งต่าง ๆ ของภาษา C และคำสั่งต่าง ๆ จะใช้เครื่องหมาย ว เพื่อเป็นการบอกให้รู้ว่าจบคำสั่งหนึ่ง ๆ แล้ว ส่วนใหญ่คำสั่งต่าง ๆ ของภาษา C เขียนด้วยตัวพิมพ์เล็ก เนื่องจากภาษา C จะแยกความแตกต่างของตัวพิมพ์เล็กและพิมพ์ใหญ่ หรือ Case Sensitive นั่นเอง ยกตัวอย่างใช้ Files, files หรือ FILES จะถือว่าเป็นตัวแปรคนละตัวกัน นอกจากนี้ภาษา C ยังไม่สนใจกับการขึ้บรรทัดใหม่ เพราะฉะนั้นผู้ใช้สามารถพิมพ์คำสั่งหลายคำสั่งในบรรทัดเดียวกันได้ โดยมีเครื่องหมาย ; เป็นตัวจบคำสั่ง
ค่าส่งกลับ (Return Value)
เป็นส่วนที่บอกให้รู้ว่า ฟังก์ชันนี้จะส่งค่าอะไรกลับไปให้กับฟังก์ชันที่เรียกฟังก์ชันนี้ ซึ่งเรื่องนี้ผู้เขียนจะยกไปกล่าวในเรื่องฟังก์ชันอย่างละเอียดอีกที
หมายเหตุ ( Comment )
เป็นส่วนที่ใช้สำหรับแสดงข้อความเพื่ออธิบายสิ่งที่ต้องการในโปรแกรม ซึ่งจะใช้เครื่องหมาย/* และ*/ ปิดหัวและปิดท้ายของข้อความที่ต้องการ
แสดงการเขียนหมายเหตุหรือ Comment ในลักษณะต่าง ๆ
/*นี้คือ Comment*/
/*ถ้ามี 2 บรรทัด
ให้ทำแบบนี้ */
ถ้ามีหลายบรรทัดก็สามารถ
ทำแบบนี้ได้เช่นเดียวกัน
*/ |
โปรแกรมแรกสำหรับคุณ
#include<stdio.h> /*เฮดเดอร์ไฟล์*/
int main (void) /*ชื่อฟังก์ชัน*/
{
printf(Hello World\n); /*ตัวโปรแกรม*/
return 0; /*ค่าที่ส่งกลับ*/
} /*End main Function*/ |
ผลการทำงาน:
Hello World |
การตั้งชื่อ
การตั้งชื่อ (Identifier) ให้กับตัวแปร ฟังก์ชันหรืออื่น ๆ มีกฎเกณฑ์ในการตั้งชื่อ ดังนี้
- ตัวแรกของชื่อจะต้องขึ้นด้วยตัวอักษาหรือเครื่องหมาย_เท่านั้น
- ตัวอักษรตั้งแต่ตัวที่ 2 สามารถเป็นตัวเลข หรือเครื่องหมาย_ก็ได้
- จะต้องไม่มีการเว้นวรรคภายในชื่อ แต่สามารถใช้เครื่องหมาย_คั่นได้
- สามารถตั้งชื่อได้ยาวไม่จำกัด แต่จะให้ตัวอักษรอ้างอิงแค่ 31 ตัวแรกในการอ้างอิง
- ชื่อที่ตั้งด้วยอักษรพิมพ์ใหญ่และพิมพ์เล็ก จะถือว่าเป็นคนละตัวกัน
- ห้ามตั้งชื่อซ้ำกับคำสงวนในภาษา C
ตัวอย่างการตั้งที่ถูกและผิด
แบบที่ถูก |
แบบที่ผิด |
A |
$sum |
Student_name |
Student Name |
_SystemName |
2names |
A1 |
int |
ชนิดข้อมูล
ในการเขียนโปรแกรมภาษา C นั้น ผู้ใช้จะต้องหำหนดชนิดให้กับตัวแปรนั้นก่อนที่จะนำไปใช้งาน โดยผู้ใช้จะต้องรูว่าในภาษา C นั้นจะมี 4 ชนิดข้อมูลมาตรฐาน คือ
ชนิดข้อมูลแบบไม่มีค่า หรือ Void Type (void)
ข้อมูลชนิดนี้ จะไม่มีค่า และจะไม่ใช้ในการกำหนดชนิดของตัวแปร แต่ส่วนใหญ่จะใช้เกี่ยวกับฟังก์ชัน
ชนิดข้อมูลแบบจำนวนเต็ม หรือ Integer Type (int)
เป็นชนิดข้อมูลที่เป็นตัวเลขจำนวนเต็ม ไม่มีทศนิยม ซึ่งภาษา C จะแบ่งข้อมูลชนิดนี้ออกได้เป็น 3 ระดับ คือ short int, int และ long int ซึ่งแต่ละระดับนั้นจะมีขอบเขตการใช้งานที่แตกต่างกัน
แสดงรายละเอียดของชนิดข้อมูลแบบจำนวนเต็ม
ชนิดข้อมูล |
คิดเรื่องหมาย |
ขนาด(ไบต์) |
จำนวนบิต |
ค่าน้อยที่สุด |
ค่ามากที่สุด |
Short int |
คิด
ไม่คิด |
2 |
16 |
-32,768
0 |
32,768
65,535 |
int
(16บิต) |
คิด
ไม่คิด |
2 |
16 |
-32,768
0 |
32,768
65,535 |
int
(32บิต) |
คิด
ไม่คิด |
4 |
32 |
-2,147,486,643
0 |
2,147,486,643
4,294,967,295 |
long int |
คิด
ไม่คิด |
4 |
32 |
-2,147,486,643
0 |
2,147,486,643
4,294,967,295 |
ชนิดข้อมูลแบบตัวอักษร หรือ Character Type (char)
ข้อมูลชนิดนี้ก็คือ ตัวอักษรตั้งแต่ A-Z เลข 0-9 และสัญลักษณ์ต่าง ๆ ตามมาตรฐาน ASCII (American Standard Code for Information Interchange) ซึ่งเมื่อกำหนอให้กับตัวแปรแล้วตัวแปรตัวนั้นจะรับค่าได้เพียง 1 ตัวอักษรเท่านั้น และสามารถรับข้อมูลจำนวนเต็มตั้งแต่ 128 ถึง 127 จะใช้ขนาดหน่วยความจำ 1 ไบต์หรือ 8 บิต
ชนิดข้อมูลแบบทศนิยม หรือ Floating Point Type (float)
เป็นข้อมูลชนิดตัวเลขที่มีจุดทศนิยม ซึ่งสามารถแบ่งออกเป็น 3 ระดับ คือ float, double c]t long double แต่ละระดับนั้นจะมีขอบเขตที่แตกต่างกันในการใช้งาน
ชนิดข้อมูล |
ขนาด (ไบต์) |
จำนวนบิต |
ค่าน้อยที่สุด |
Float |
4 |
32 |
3.4*10-38ถึง3.4*1038 |
Double |
8 |
64 |
1.7*10-308ถึง1.7*10308 |
Long double |
10 |
80 |
3.4*10-4932ถึง1.2*104932 |
ตัวแปร
ตัวแปร คือ ชื่อที่ใช้อ้างถึงตำแหน่งต่าง ๆ ในหน่วยความจำ ซึ่งใช้เก็บข้อมูลต่าง ๆ ด้วยขนาดตามชนิดของข้อมูล
การประกาศตัวแปร
การประกาศตัวแปรในภาษา C นั้นสามารถทำได้ 2 ลักษณะ คือ การประกาศตัวแปรแบบเอกภาพ หรือการประกาศตัวแปรแบบ Global คือ ตัวแปรที่จะสามารถเรียกใช้ได้ทั้งโปรแกรม และแบบที่สองการประกาศตัวแปรแบบภายใน หรือการประกาศตัวแปรแบบ Local ซึ่งตัวแปรประเภทนั้นจะใช้ได้ในเฉพาะฟังก์ชันของตัวเองเท่านั้น
แสดงการประกาศตัวแปรแบบต่าง ๆ
#include<stdio.h>
int total; /* การประกาศตัวแปรแบบ Global*/
main( )
{
int price,money; /* การประกาศตัวแปรแบบ Local*/
...
} |
การกำหนดค่าให้กับตัวแปร
การกำหนดค่าให้กับตัวแปรนั้น จะสามารถกำหนดได้ตั้แต่ตอนที่ประกาศตัวแปรเลยหรือจะกำหนดภายในโปรแกรมก็ได้ ซึ่งการกำหนดค่าจะใช้เครื่องหมาย = กั้นตรงกลาง
int total = 0;
ถ้ามีตัวแปรข้อมูลชนิดเดียวกัน ก็สามารถทำแบบนี้ได้
int total = 0,sum;
หรือ
int total =0,sum = 0;
ถ้าเป็นการกำหนดภายในโปรแกรม ซึ่งตังแปรนั้นได้ประกาศไว้แล้วสามารถทำแบบนี้ได้
total = 50;
หรือ
total = total+sum;
หรือกำหรดค่าจากการพิมพืข้อมูลเข้าทางคีย์บอร์ด
scanf(%d,&total);
การประกาศและการใช้ตัวแปร
#include<shdio.h>
/* การประกาศตัวแปรแบบ Global*/
int sum = 0;
int main(void)
{
/*การประกาศตัวแปรแบบ Local*/
int a;
int b;
int c;
/*คำสั่ง*/
printf(\welcome. This Program adds\n);
printf(threenumbers. Enter three nomber\n);
printf(in the form nnn nnn nnn <return>\n);
scanf(%d %d%d,&a,&b,&c);
/*ทำการบวกค่าระหว่าง a,bและc เข้าด้วยกันแล้วกำหนดค่าให้ sum*/
sum = a+b+c;
printf(The total is: %d\n,sum);
printf(thank you. Have a good day. \n);
return 0;
} |
ผลการทำงาน:
Welcome. This Program adds
Three numbers. Enter three number
In the form: nnn nnn nnn <return>
11 22 23
The total is: 56
Thank you. Have a good day.
|
กำหนดชนิดข้อมูลแบบชั่วคราว
เมื่อผู้ใช้ได้กำหนดชนิดข้อมูลให้กับตัวแปรได ๆ ไปแล้ว ตัวแปรตัวนั้นจะมีชนิดข้อมูลเป็นแบบที่กำหนดให้ตลอดไป บางครั้งการเขียนโปรแกรมอาจจะต้องมรความจำเป็นต้องเปลี่ยนชนิดข้อมูลของตัวแปรตัวนั้น ซึ่งภาษา C ก็มีความสามารถที่จะทำเช่นนั้นได้
รูปแบบ
([ชนิดข้อมูล]) [ตัวแปร]
ตัวอย่าง
(float)a
(int)a
แสดงการใช้ตัวแปรแบบชั่วคราว
#include<stsio.h>
int main (void)
{
float a = 25.3658;
printf(Value of a :%f\n,a);
printf(Value of a when set is integer:%d\n,(int)a);
return 0;
} |
ผลการทำงาน
Value of a : 25.365801
Value of a when change is integer : 25 |
ชนิดข้อมูลแบบค่าคงที่ (Constants)
ชนิดข้อมูลประเภทนี้ เป็นชนิดแบบค่าคงที่ ซึ่งก็คือข้อมูลของตัวแปรประเภทที่เป็น Constants ผู้ใช้จะไม่สามารถเปลี่ยนแปลงค่าของตัวแปรนั้น ในขณะที่โปรแกรมทำงานอยู่
รูปแบบ
Const [ชนิดข้อมูล] [ตัวแปร] = [ค่า หรือ นิพจน์]
ตัวอย่าง
const float a = 5.23;
const int b = a%2;
การใช้ตัวแปรชนิดค่าคงที่
#include<stsio.h>
int main (void)
{
const float pi = 3.14159;
float radius;
radius = 3;
printf(Value of pi :%f\npi);
printf(Value of area :%f\npi*(radius*radius));
} |
ผลการทำงาน:
Value of pi :3.141590
Value of area : 28.274311 |
Constant นั้นสามารถแบ่งออกได้ ดังนี้
Integer Constants เป็นค่าคงที่ชนิดข้อมูลแบบตัวเลขจำนวนเต็ม ไม่มีจุดทศนิยม
Const int a = 5;
Fioating-Pount Constants เป็นค่าคงที่ชนิดข้อมูลแบบตังเลขที่มีจุดทศนิยม
Const float b = 5.6394;
Character Constants เป็นค่าคงที่ชนิดตัวอักษร ซึ่งจะต้องอยู่ภายในเครื่องหมายเท่านั้น
Const char b = t;
String Constants เป็นค่าคงที่เป็นข้อความ ซึ่งจะต้องอยู่ภายใต้เครื่องหมาย เท่านั้น
h
Hello world\n
HOW ARE YOU
Good Morning
การใช้ตัวแปรชนิดข้อมูลแบบค่าคงที่แบบต่าง ๆ
#include<stdio.h>
int main (void)
{
const int a = 3; /*Integer Constants*/
const float b = 3.14159; /*Floating Point Constants*/
printf(Value of a :%d\n,a);
printf(Value of b : %f\n,b);
printf(Value of c : %c\n,c);
printf(Good Bye); /*String Constants*/
return 0;
} |
ผลการทำงาน :
Value of a : 3
Value of b : 3.141590
Value of c : P
Good Bye |
Statements
Statements ในภาษา C ก็คือ คำสั่งต่าง ๆ ที่ประกอยขึ้นจนเป็นตัวโปรแกรม ซึ่งในภาษา C นั้นแบ่งออกเป็น 6 แบบ แต่จะพูดถึง 2 แบบแรกก่อน คือ Expression Statement และ Compound Statement
Statement แบบต่าง ๆ ของภาษา C
Statement |
Expression Statement |
Compound Statement |
Labeled Statement |
Selection Statement |
Iterative Statement |
Jump Statement |
Expression Statement หรือเรียกอีกอย่างได้ว่า Single Statement : ซึ่ง Statement แบบนี้จะต้องมีเครื่องหมาย ; หลังจาก Statement เมื่อภาษา พบเครื่องหมาย ; จะทำให้มันรู้ว่าจบชุดคำสั่งแล้ว แล้วจึงข้ามไปทำ Statementชุดต่อไป
A = 2;
หรือ
Printf(x contains %d,y contains %d\n,x,y);
Compound Statement คือ ชุดคำสั่งที่มีคำสั่งต่าง ๆ รวมอยู่ด้านใน Block ซึ่งจะใช้เครื่องหมาย { เป็นการเปิดชุดคำสั่ง และใช้ } เป็นตัวปิดชุดคำสั่ง ตัวอย่างที่เห็นได้ชัดสำหรับ Statement แบบนี้ คือ ตัวฟังก์ชัน Main โดยทั่ว ๆ ไปในภาษา C Compound Statement จะเป็นตัวฟังก์ชัน
 
#include<stdio.h>
int main(void)
{
Expression Statement printf(Hello World\n);
return 0; Compound Statement
} |
ผังงาน
ผังงาน (Flowchart) นั้นมีไว้เพื่อให้ผู้ใช้ออกแบบขั้นตอนการทำงานของโปรแกรมก่อนที่จะลงมือเขียนโปรแกรม ซึ่งจะช่วยให้ผู้ใช้เขีนยโปรแกรมได้งานยขึ้นและไม่สับสนซึ่งผังงานที่นิยมใช้มีมาตรฐามมากมายหลายแบบแต่ในที่นี้จะขออธิบายมาตรฐาน ANSI (American National Standard)