บทที่ 5
พื้นฐานภาษาซี
ไมโครคอนโทรลเลอร์เป็นอุปกรณ์ที่ทำงำนตำมกำรโปรแกรม
ซึ่งสำมำรถเขียนได้หลำยภำษำ อย่ำงเช่น ภำษำแอสเซมบลี ภำษำซี กำร
เขียนโปรแกรมด้วยภำษำซีจะช่วยทำให้กำรพัฒนำโปรแกรม สำมำรถ
ทำได้เร็วและง่ำยกว่ำกำรใช้ภำษำแอสเซมบลี และสำมำรถจำลองกำร
ทำงำนของโปรแกรมได้
พื้นฐานภาษาซี
1.โครงสร้ำงภำษำ
2.ข้อกำหนดกำรตั้งชื่อตัวแปรในภำษำซี
3.ชนิดของตัวแปร
4.ตัวกระทำทำงลอจิก
5.ตัวกระทำเปรียบเทียบ
6.ฟังก์ชั่น
7.กำรสร้ำงฟังก์ชั่น
8.กำรส่งค่ำผ่ำนฟังก์ชั่น
9.ตัวแปรแบบโกลบอลและโลคอล
10.อำร์เรย์
11.พอย์เตอร์
5.1 โครงสร้างของภาษาซี
ภำษำซีประกอบไปด้วยไฟล์ส่วนหัวโปรแกรม (Header files) และ
ส่วนของตัวโปรแกรม ไฟล์ส่วนหัวโปรแกรมเป็นไฟล์ที่มีส่วนขยำยเป็น .h
ใช้ร่วมในกำรคอมไพล์โปรแกรม ตัวโปรแกรมจะเริ่มต้นด้วยฟังก์ชัน
main() เป็นฟังก์ชันหลักของโปรแกรมมีเครื่องหมำย ({) เป็นเครื่องหมำย
เริ่มต้นกำรเขียนโปรแกรมและมีเครื่องหมำย (}) เป็นเครื่องหมำยจบ
โปรแกรม
โครงสร้ำงของภำษำซี
ตัวโปรแกรม
ไฟล์ส่วนหัวโปรแกรม
โปรแกรมตัวอย่างของภาษาซี
// Summation Program
#include <stdio.h>
main()
{
int loop,sum=0;
for(loop=1;loop<6;loop++)
sum=sum+loop;
}
1
2
3
4
5
6
7
8
คาอธิบาย
บรรทัดที่ 1 คำอธิบำยโปรแกรมไม่มีผลต่อกำรคอมไพล์
บรรทัดที่ 2 ไฟล์ส่วนหัวของโปรแกรม
บรรทัดที่ 3 ฟังก์ชันหลักของโปรแกรม
บรรทัดที่ 4 ปีกกำเปิดเริ่มต้นเขียนโปรแกรม
บรรทัดที่ 5 กำรประกำศตัวแปร
บรรทัดที่ 6 และ 7 ชุดคำสั่งของภำษำซี
บรรทัดที่ 8 ปีกกำปิดจบโปรแกรม
5.2 ข้อกาหนดการตั้งชื่อตัวแปรในภาษาซี
1. ชื่อตัวแปรตัวแรกต้องขึ้นต้นด้วยตัวอักษร เช่น key,num,score
2. ไม่มีกำรเว้นวรรคแต่สำมำรถใช้เครื่องหมำยขีดล่ำงขั้นได้ เช่น
chk_sw,stop_motor
3. ถัดจำกตัวแรกจะเป็นตัวเลขหรือเครื่องหมำยขีดล่ำงได้ เช่น
a1,num1,score_1
4. ตัวอักษรตัวเล็กและใหญ่แตกต่ำงกันเช่น a1,A1 เป็นสองแปรตัว
5.ต้องไ ม่ ตั้ งชื่ อซ้ ำกับคำสงว น ใ น ภ ำษ ำซี ดัง ตัว อย่ำงเ ช่ น
if,do,while,printf ,else ฯลฯ
ตัวอย่างการตั้งชื่อตัวแปรที่ถูก
int a1,b1,num;
char key,chk_sw,data1;
ตัวอย่างการตั้งชื่อตัวแปรที่ผิด
int 1a,b 1 ;2num;
char else,1chk,data 1;
ชนิดของตัวแปร ขนำด ช่วงของข้อมูล กำรกำหนด
ชนิดตัวแปร
1.Character
2.Unsigned character
3.Integer
4.Unsigned integer
5.Long integer
6.Floating point
8 บิต
8 บิต
16 บิต
16 บิต
32 บิต
32 บิต
-128ถึง+127
0 ถึง 255
-32768 ถึง+32767
0 ถึง 65535
-2147483648 ถึง
2147483647
3.4x10-38 ถึง 3.4x10+38
char
unsigned char
int
unsigned int
long int
float
5.3 ชนิดของตัวแปรในภาษาซี
5.4 ตัวกระทาทางคณิตศาสตร์
5.5 ตัวกระทาเปรียบเทียบ
5.6 ตัวกระทาลอจิก
5.7 ตัวกระทาระดับบิต
ตัวกระทำระดับบิตสำมำรถเข้ำถึงข้อมูลในระดับบิตได้ จึง
อำนวยควำมสะดวกในกำรเขียนโปรแกรมตรวจสอบบิตข้อมูล
ตัวกระทาระดับบิต
การทางานตัวกระทาระดับบิต AND OR และ XOR
5.8 ฟังก์ชัน if
ฟังก์ชัน if เป็นฟังก์ชันที่ใช้ในกำร เปรียบเทียบข้อมูล เพื่อ
ใช้ในกำรตัดสินใจว่ำจะทำงำนในเงื่อนไขหรือทำงเลือกใดถ้ำ
เงื่อนไขเป็นจริงจะทำชุดฟังก์ชันหรือคำสั่งที่กำหนดซึ่งฟังก์ชัน if
จะมีทั้งทำงเลือกเดียวและหลำยทำงเลือก
5.8.1 ฟังก์ชัน if ทางเลือกเดียว
กำรทำงำนของฟังก์ชัน if ทำงเลือกเดียวถ้ำเงื่อนไขในกำร
เปรียบเทียบเป็นจริงจะทำคำสั่งในชุดฟังก์ชันระหว่ำงปีกำเปิดและ
ปีกกำปิดแต่ถ้ำไม่จริงหรือเป็นเท็จจะจบกำรทำงำน
รูปแบบ
If (ตัวแปร ตัวกระทำเปรียบเทียบ ค่ำคงที่หรือตัวแปร)
{
ชุดฟังก์ชัน
}
โฟลว์ชาร์ตการทางานของฟังก์ชัน if ทางเลือกเดียว
Start
if(เง
ื่อนไข)
End
ชุดฟังก์ชัน
จริง
เท็จ
5.8.2 ฟังก์ชัน if สองทางเลือก
กำรทำงำนของฟังก์ชัน if สองทำงเลือกต้องใช้ร่วมกับ else
คือถ้ำเงื่อนไขในกำรเปรียบเทียบเป็นจริงจะทำชุดฟังก์ชันที่ 1 แต่
ถ้ำเงื่อนไขเป็นเท็จจะทำชุดฟังก์ชันที่ 2 ซึ่งอยู่หลัง else
รูปแบบ
if(ตัวแปร ตัวกระทำเปรียบเทียบ ค่ำคงที่หรือตัวแปร)
{ ชุดฟังก์ชันที่ 1
}
else
{ ชุดฟังก์ชันที่ 2
}
โฟลว์ชาร์ตการทางานของฟังก์ชัน if สองทางเลือก
Start
if(เง
ื่อนไข)
End
ชุดฟังก์ชันที่1
จริง
เท็จ
ชุดฟังก์ชันที่2
5.8.3 ฟังก์ชัน if หลายทางเลือก
กำรทำงำนของฟังก์ชัน if หลำยทำงเลือกจะทำกำรเปรียบเทียบ
เงื่อนไขที่ 1 ถ้ำเงื่อนไขเป็นจริงจะทำชุดฟังก์ชันที่ 1 แต่ถ้ำเป็นเท็จ
จะทำกำรเปรียบเทียบกับเงื่อนไขที่ 2 ถ้ำเงื่อนไขที่ 2 เป็นจริงจะทำ
ชุดฟังก์ชันที่ 2 แต่ถ้ำเป็นเท็จจะทำชุดฟังก์ชันที่ 3
รูปแบบ
if(ตัวแปร ตัวกระทำเปรียบเทียบ ค่ำคงที่หรือตัวแปร)
{ ชุดฟังก์ชันที่1
}
else if(ตัวแปร ตัวกระทำเปรียบเทียบ ค่ำคงที่หรือตัวแปร)
{ ชุดฟังก์ชันที่2
}
else
{ ชุดฟังก์ชันที่3
}
โฟลว์ชาร์ตการทางานของฟังก์ชัน if หลายทางเลือก
Start
End
เท็จ
if(เง
ื่อนไขท
ี ่ 1)
จริง
else if(เง
ื่อนไขท
ี ่ 2)
จริง
else ช
ุ ดฟ
ั งก
์ ช
ั นท
ี ่ 3
เท็จ
ชุดฟังก์ชันที่1
ชุดฟังก์ชันที่2
5.9 ฟังก์ชัน switch
ฟังก์ชัน switch เป็นฟังก์ชันที่ใช้ในกำรเปรียบเทียบข้อมูล
เหมำะสำหรับกำรเปรียบเทียบข้อมูลหลำยๆ ทำงเลือกและ
ฟังก์ชัน switch จะไม่สำมำรถเปรียบเทียบข้อมูลแบบมำกกว่ำ
หรือน้อยกว่ำเหมือนกับฟังก์ชัน if ได้แต่จะเปรียบข้อมูลกับ
ค่ำคงที่ ตัวอักษรหรือตัวแปร
รูปแบบ
switch(v)
{
case x1 : ชุดฟังก์ชันที่1 break;
case x2 : ชุดฟังก์ชันที่2 break;
case x3 : ชุดฟังก์ชันที่3 break;
case x4 : ชุดฟังก์ชันที่4 break;
default : ชุดฟังก์ชันที่5
}
โฟลว์ชาร์ตการทางานของฟังก์ชัน switch
จริง
เท็จ
Start
End
case x1: ชุดฟังก์ชันที่1 break;
default: ช
ุ ดฟ
ั งก
์ ช
ั นท
ี ่ 5
case x2: ชุดฟังก์ชันที่2 break;
case x3: ชุดฟังก์ชันที่3 break;
case x4: ชุดฟังก์ชันที่4 break;
switch(v)
จริง
จริง
จริง
เท็จ
เท็จ
เท็จ
ตัวอย่างโปรแกรมตรวจสอบเลข 1 ถึง 5
#include <stdio.h>
void main()
{ char num;
clrscr();
printf("EnterNumber[1-5]=");
scanf("%d",&num);
switch(num)
{ case 1: printf("NumberOne"); break;
case 2: printf("NumberTwo");break;
case 3: printf("NumberThree");break;
case 4: printf("NumberFour");break;
case 5: printf("NumberFive");break;
default:printf("OtherNumber");
}
getch();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
คาอธิบาย
1. บรรทัดที่ 5 แสดงข้อควำม Enter number[1-5]=
2. บรรทัดที่ 6 รอรับค่ำตัวเลขมำเก็บไว้ที่ตัวแปร num
3. บรรทัดที่ 7 ฟังก์ชัน switch ทำกำรเปรียบเทียบตัวแปร num กับ
case 1 ถึง case 5
4. บรรทัดที่ 8 ถึง 12 ถ้ำค่ำของตัวแปร num ตรงกับ case ใดจะทำ
คำสั่งใน case นั้น
5. บรรทัดที่ 13 ถ้ำไม่ใช่เลข 1 ถึง 5 จะแสดงข้อควำม Other Number
ที่อยู่หลัง default
Enter number [1-5]=3
Number Three
ผลการรันโปรแกรม
โปรแกรมตรวจสอบตัวอักษร a e i o และ u
#include <stdio.h>
void main()
{ char key;
clrscr();
printf("EnterCharacter= ");
key=getche();
switch(key)
{ case 'a':printf("na character");break;
case 'e':printf("ne character");break;
case 'i':printf("ni character");break;
case 'o':printf("no character");break;
case 'u':printf("nu character");break;
default :printf("nOther character");
}
getch();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
คาอธิบาย
1. บรรทัดที่ 5 แสดงข้อควำม Enter character =
2. บรรทัดที่ 6 รอรับค่ำกำรกดแป้นพิมพ์ 1 ตัวอักษรมำเก็บไว้ที่ตัว
แปร key
3. บรรทัดที่ 7 ฟังก์ชัน switch ทำกำรเปรียบเทียบค่ำกับตัวแปร key
4. บรรทัดที่ 8 ถึง 12 ถ้ำค่ำของตัวแปร key ตรงกับ case ใดจะทำ
คำสั่งใน case นั้น
5. บรรทัดที่ 13 ถ้ำกับ case ใดจะแสดงข้อควำม Other Character ที่อยู่
หลัง default
ผลการรันโปรแกรม
Enter character = a
a character
Enter character = x
Other character
5.10 ฟังก์ชัน for
ฟังก์ชัน for เป็นฟังก์ชันวนลูปหรือวนรอบใช้ในกำรเขียน
โปรแกรมที่มีลักษณะกำรทำงำนวนรอบซ้ำๆ กันเพื่อลดขนำด
ของโปรแกรมและเพิ่มควำมเร็วในกำรประมวลผล
รูปแบบ
for(ค่ำเริ่มต้น;เงื่อนไข;กำรเพิ่มค่ำหรือลดค่ำ)
{
ชุดฟังก์ชัน
}
โฟลว์ชาร์ตการทางานของฟังก์ชัน for
ตรวจสอบเงื่อนไข
Start
ชุดฟังก์ชัน
End
การเพิ่มหรือการลดค่า
การกาหนดค่าเริ่มต้น
จริง
เท็จ
โปรแกรมวนรอบนับ 1 ถึง 10 โดยใช้ฟังก์ชัน for
#include <stdio.h>
main()
{ char count;
clrscr();
for(count=1;count<11;count++)
printf(“Loop=%dn”,count);
getch();
}
1
2
3
4
5
6
7
8
คาอธิบาย
1. บรรทัดที่ 5 ใช้ฟังก์ชัน for วนรอบนับ 1 ถึง 10 โดยกำหนดค่ำ
เริ่มต้นให้กับตัวแปร count=1 เงื่อนไขในกำรออกจำกลูปตัว
แปร count < 11 และจะทำกำรเพิ่มค่ำตัวแปร count ขึ้นทีละ 1
2. บรรทัดที่ 6 แสดงข้อควำม Loop=1 ถึง Loop=10 ตำมค่ำของ
ตัวแปร count
โฟลว์ชาร์ตแสดงการทางานของโปรแกรมวนรอบ
นับ 1 ถึง 10
count<11
Start
count=1
แสดงข้อความ Loop=count
count=count+1
End
เท็จ
จริง
ผลการรันโปรแกรม
โปรแกรมจะวนรอบแสดงข้อควำม Loop=1 ถึง Loop=10
5.11 ฟังก์ชัน do while
ฟังก์ชัน do while เป็นฟังก์ชันวนลูปหรือวนรอบใช้ในกำร
เขียนโปรแกรมที่มีลักษณะกำรทำงำนวนรอบซ้ำๆ กันกำร
ทำงำนของฟังก์ชัน do while จะทำชุดฟังก์ชันก่อนจำกนั้นจะ
ทำกำรตรวจสอบเงื่อนไขถ้ำเงื่อนไขเป็นจริงก็จะทำชุดฟังก์ชัน
ในลูปต่อแต่ถ้ำเงื่อนไขเป็นเท็จจะออกจำกกำรวนรอบ
รูปแบบ
do
{
ชุดฟังก์ชัน
}whlie(เงื่อนไข);
โฟลว์ชาร์ตการทางานของฟังก์ชัน do while
Start
do{
ชุดฟังก์ชัน
}
while(เง
ื่อนไข);
End
จริง
เท็จ
โปรแกรมนับ 1 ถึง 10 โดยใช้ฟังก์ชัน do while
#include <stdio.h>
main()
{ char count=1;
clrscr();
do{
printf("Loop=%dn",count);
count=count+1;
}while(count<11);
getch();
}
1
2
3
4
5
6
7
8
9
10
ผลการรันโปรแกรม
กำรทำงำนของโปรแกรมจะเริ่มจำกกำหนดค่ำให้ตัวแปร
count=1 แล้วทำคำสั่งหลังฟังก์ชัน do โดยกำรแสดงข้อควำม
Loop=1 ถึง Loop=10 ตำมเงื่อนไขของ while(count<11) ซึ่ง
ผลกำรรันโปรแกรมจะเหมือนกับตัวอย่ำง
5.12 ฟังก์ชัน while
ฟังก์ชัน while เป็นฟังก์ชันวนลูปหรือวนรอบใช้ในกำร
เขียนโปรแกรมที่มีลักษณะกำรทำงำนวนรอบซ้ำๆ กันกำร
ทำงำนเริ่มจำกตรวจสอบเงื่อนไขก่อนถ้ำเงื่อนไขเป็นจริงจะ
ทำชุดฟังก์ชันภำยในปีกกำเปิดและปิดแต่ถ้ำเงื่อนไขเป็นเท็จ
จะออกจำกลูป while
รูปแบบ
while(ตรวจสอบเงื่อนไข)
{
ชุดฟังก์ชัน
}
โฟล์วชาร์ดการทางานของฟังก์ชัน while
จริง
เท็จ
while(เง
ื่อนไข)
{
ชุดฟังก์ชัน
}
Start
End
โปรแกรมนับ 1 ถึง 10 โดยใช้ฟังก์ชัน while
ผลการรันโปรแกรม
กำรทำงำนของโปรแกรมจะเริ่มจำกกำหนดค่ำให้ตัวแปร
count=1 แล้วทำกำรตรวจสอบเงื่อนไขในฟังก์ชัน
whlie(count<11) ถ้ำเงื่อนไขเป็นจริงจะทำชุดคำสั่งภำยในปีก
กำเปิดและปีกกำปิด โดยกำรแสดงข้อควำม Loop=1 ถึง
Loop=10 ตำมเงื่อนไขของ while(count<11)
5.13 ฟังชันก์ go to
ฟังชันก์ go to เป็นฟังชันก์ทำหน้ำที่กระโดดไปยังตำแหน่ง
หรือบรรทัดที่กำหนดเพื่อข้ำมกำรทำงำนหรือใช้ในกำรวนรอบ
กำรทำงำน
รูปแบบ
goto Label;
Label คือตำแหน่งหรือสัญลักษณ์ที่ต้องกำรให้กระโดดไป
ทำงำน
โปรแกรมตัวอย่างการทางานของฟังชันก์ goto
ผลการรันโปรแกรม
เริ่มจำกกำหนดค่ำ sum=0 แล้ววนรอบเพื่อบวกค่ำ
sum=sum+1 ซึ่งจะเป็นกำรวนรอบตลอดกำล
การทางานของฟังก์ชัน goto
sum=0
start:
sum=sum+1
goto start;
5.14 การสร้างฟังชันก์
กำรสร้ำงฟังก์ชันประกอบไปด้วยขั้นตอนดังนี้คือ เริ่มจำก
กำรประกำศชื่อฟังก์ชัน เขียนฟังก์ชันซึ่งจะทำกำรเขียนก่อน
หรือหลังฟังก์ชัน main ก็ได้และขั้นตอนสุดท้ำยคือกำรเรียกใช้
ฟังก์ชัน
โปรแกรมการสร้างฟังก์ชันแสดงข้อความ
คาอธิบาย
1. บรรทัดที่2ประกำศชื่อฟังก์ชันvoid subfunction(); เป็นฟังก์ชันที่
ไม่มีกำรส่งค่ำกลับ
2. บรรทัดที่ 6 เรียกใช้ฟังก์ชัน subfunction(); สำมำรถทำได้โดยกำร
เขียนชื่อฟังก์ชันนั้น
3. บรรทัดที่ 11 ถึง 13 ฟังก์ชัน void subfunction() ที่สร้ำงขึ้นจะไม่มี
เครื่องหมำยเซมิคอลอนปิดท้ำย
ผลการรันโปรแกรม
โปแกรมจะแสดงข้อควำม Main Function จำกนั้นจะทำกำร
เรียก subfunction ซึ่งจะทำกำรแสดงข้อควำม Sub Function แล้ว
กลับสู่โปรแกรมหลักซึ่งจะแสดงผลกำรทำงำนดังนี้
Main Function
Sub Function
5.15 การส่งค่าผ่านฟังชันก์
กำรส่งค่ำผ่ำนฟังก์ชันคือกำรส่งค่ำจำกฟังก์ชันหนึ่งไปยังอีก
ฟังก์ชันหนึ่งซึ่งจะต้องกำหนดตัวแปรไว้ในกำรรับค่ำ กำรส่งค่ำ
ผ่ำนฟังก์ชันสำมำรถส่งไปค่ำเดียวหรือหลำยค่ำก็ได้และมีทั้ง
กำรส่งค่ำไปและกำรส่งค่ำกลับขึ้นอยู่กับลักษณะกำรใช้งำน
โปรแกรมบวกเลขแบบส่งค่าผ่านฟังก์ชัน
คาอธิบาย
1. บรรทัดที่ 2 ประกำศฟังก์ชัน void sum(int n); เป็นฟังก์ชันที่มีกำรส่งค่ำแบบ
ทำงเดียวไม่มีกำรส่งค่ำกลับมีตัวแปร n เป็นตัวแปรชนิดจำนวนเต็ม 16 บิต
ใช้ในกำรรับค่ำ
2. บรรทัดที่ 5 เรียกใช้ฟังก์ชัน sum(5); และส่งค่ำ 5 ให้กับฟังก์ชัน int sum(int
n) ซึ่งจะมีตัวแปร n เป็นตัวรับค่ำ 5 มำเก็บไว้เพื่อใช้ในกำรคำนวณ
3. บรรทัดที่ 6 เรียกใช้ฟังก์ชัน sum(10); และส่งค่ำ 10 ให้กับฟังก์ชัน int
sum(int n) มีตัวแปร n เป็นตัวรับค่ำ 10 มำเก็บไว้เพื่อใช้ในกำรคำนวณ
4. บรรทัดที่ 10 ถึง 16 ฟังก์ชัน void sum(int n) ทำหน้ำที่บวกเลข 1 ถึง n ตำม
ค่ำตัวเลขที่รับมำ
ผลการรันโปรแกรม
โปรแกรมจะทำกำรบวกเลข 1 ถึง 5 และ 1 ถึง 10 ตำมกำรส่งค่ำ
ของฟังก์ชัน sum โดยจะมีตัวแปร n รับค่ำเข้ำมำคำนวณและ
แสดงผลดังนี้
Sum of 1 to 5 =15
Sum of 1 to 10=55
โปรแกรมส่งค่าผ่านฟังก์ชันแบบหลายค่า
คาอธิบาย
1. บรรทัดที่ 3 ประกำศฟังก์ชัน int multiply(int a,int b); ซึงเป็นฟังก์ชันที่มีกำร
ส่งค่ำแบบไปและกลับโดยมีตัวแปร a และ b เป็นตัวแปรชนิดจำนวนเต็ม 16
บิตเพื่อใช้ในกำรรับและส่งค่ำ
2. บรรทัดที่ 6 c=multiply(3,5); ทำกำรส่งค่ำ 3 และ 5 จำกนั้นฟังก์ชัน int
sum(int a,int b) จะรับค่ำ 3 มำเก็บไว้ที่ a และ 5 มำเก็บไว้ที่ b และทำกำรคูณ
ค่ำ a กับ b แล้วจึงส่งค่ำกลับ return(a*b); ให้กับฟังก์ชัน multiply และตัว
แปร c
3. บรรทัดที่ 10 และ 11 ฟังก์ชัน int multiply(int a,int b)
ผลการรันโปรแกรม
โปรแกรมจะส่งค่ำ 3 และ 5 ให้ฟังก์ชัน multiply เพื่อทำ
กำรคูณเลขแล้วส่งค่ำกลับให้ฟังก์ชัน multiply และตัวแปร c
ซึ่งมีค่ำเท่ำกับ 3*5=15
5.16 ตัวแปรแบบโกลบอลและโลคอล
ตัวแปรแบบโกลบอล (Global) เป็นตัวแปรที่มีกำรประกำศก่อน
ฟังก์ชัน main ซึ่งค่ำเริ่มต้นของตัวแปรจะมีค่ำเท่ำกับศูนย์อัตโนมัติ
ตัวแปรแบบโกลบอลทุกฟังก์ชันสำมำรถใช้ร่วมกันได้โดยไม่ต้อง
ประกำศตัวแปรในฟังก์ชันอีก
ตัวแปรแบบโลคอล
ตัวแปรแบบโลคอล (Local) เป็นตัวแปรที่มีกำรประกำศหลัง
ฟังก์ชัน main หรือประกำศในฟังก์ชันที่สร้ำงขึ้น ซึ่งตัวแปรโล
คอลจะสำมำรถใช้ได้เฉพำะฟังก์ชันที่มีกำรประกำศตัวแปรเท่ำนั้น
ฟังก์ชันที่ไม่ได้ประกำศจะไม่สำมำรถใช้งำนได้
5.17 อาร์เรย์
อำร์เรย์ (Array) คือตัวแปรชุดที่เป็นตัวแปรชนิดเดียวกันใน
กำรประกำศตัวแปรแบบอำร์เรย์จะมีเครื่องหมำย [ ] ต่อท้ำยตัวแปร
เพื่อบอกขนำดของตัวแปรอำร์เรย์ซึ่งตัวแปรอำร์เรย์มีขนำดตั้งแต่ 1
มิติ 2 มิติและ 3 มิติ
อาร์เรย์
อำร์เรย์1 มิติคือตัวแปรชุดหรือตัวแปรชนิดเดียวกันที่มี 1 มิติ
หรือ 1 แกน
อำร์เรย์2 มิติคือตัวแปรชุดหรือตัวแปรชนิดเดียวกันที่มี 2 มิติ
หรือ 2 แกน
อำร์เรย์3 มิติคือตัวแปรชุดหรือตัวแปรชนิดเดียวกันที่มี 3 มิติ
หรือ 3 แกน
การกาหนดตัวแปรอาร์เรย์แบบ 1 มิติ
char sw[5];
หมำยถึง กำรประกำศตัวแปร sw ให้เป็นตัวแปรอำร์เรย์มี
ขนำดเท่ำกับ 5 หน่วยประกอบไปด้วยตัวแปรอำร์เรย์sw[0] ถึง
sw[4] แต่ละตัวจะเก็บข้อมูลได้1 ไบต์
การประกาศตัวแปรอาเรย์ sw[5]
1 By te 1 By te
1 By te
1 By te
1 By te
sw[0] sw[1] sw[2] sw[3] sw[4]
int ar[10];
หมำยถึง กำรประกำศตัวแปร ar ให้เป็นตัวแปรแบบอำร์เรย์มี
ขนำดเท่ำกับ 10 หน่วยประกอบไปด้วยตัวแปรอำร์เรย์ar[0] ถึง ar[9]
แต่ละตัวจะเก็บข้อมูลได้2 ไบต์
การประกาศตัวแปรอาเรย์ ar[10]
โปรแกรมกาหนดค่า 0 ถึง 4 ใช้กับตัวแปรอาร์เรย์ 1 มิติ
ผลการรันโปรแกรม
โปรแกรมจะกำหนดค่ำ 0 ถึง 4 ให้กับตัวแปรอำร์เรย์A[0]
ถึง A[4] ซึ่งเป็นตัวแปรอำร์เรย์ 1 มิติดังนี้ A[0]=0 A[1]=1
A[2]=2 A[3]=3 และ A[4]=4
การกาหนดตัวแปรอาร์เรย์แบบ 2 มิติ
int A2 [2][5];
หมำยถึง ประกำศตัวแปร A2 เป็นตัวแปรอำร์เรย์ขนำด 2 มิติแต่ละ
หน่วยเก็บข้อมูลได้16 บิตซึ่งประกอบด้วยตัวแปรอำร์เรย์ A2[0][0]
ถึง A2[1][4] ทั้งหมดจำนวน 10 ตัว
ตัวแปรอาร์เรย์ขนาด 2 มิติ
A2[0][ ]
A2[1][ ]
[0] [1] [2] [3] [4]
โปรแกรมกาหนดเลข 0 ถึง 9 ใช้กับตัวแปรอาร์เรย์ 2 มิติ
ผลการรันโปรแกรม
โปรแกรมจะกาหนดค่าตัวเลข 0 ถึง 9 ให้กับตัวแปรอาร์เรย์
2 มิติ A2 ดังนี้
A2[0][0] = 0 A2[1][0] = 5
A2[0][1] = 1 A2[1][1] = 6
A2[0][2] = 2 A2[1][2] = 7
A2[0][3] = 3 A2[1][3] = 8
A2[0][4] = 4 A2[1][4] = 9
การกาหนดตัวแปรแบบ 3 มิติ
char A3 [2][3][5] ;
หมำยถึง ประกำศตัวแปร A3 เป็นตัวแปรอำร์เรย์ 3 มิติแต่ละ
หน่วยเก็บข้อมูลได้ 8 บิต ซึ่งประกอบไปด้วยอำร์เรย์ A3[0][0][0]
ถึง A3[1][2][4] จำนวณ 30 หน่วย
ตัวแปรอาร์เรย์ขนาด 3 มิติ
A3[ ][0][ ]
A3[ ][1][ ]
A3[ ][3][ ]
[0] [1] [2] [3] [4]
[0]
[1]
โปรแกรมกาหนดค่าตัวเลข 0 ถึง 29 ไปด้วยตัวอาร์เรย์ 3 มิติ
ผลการรันโปรแกรม
โปรแกรมจะวนรอบกำหนดค่ำตัวเลข 0 ถึง 29 ให้กับตัวแปร
อำร์เรย์3 มิติ A3 ดังนี้
A3[0][0][0]=0 A3[0][1][0]=5 A3[0][2][0]=10
A3[0][0][1]=1 A3[0][1][1]=6 A3[0][2][1]=11
A3[0][0][2]=2 A3[0][1][2]=7 A3[0][2][2]=12
A3[0][0][3]=3 A3[0][1][3]=8 A3[0][2][3]=13
A3[0][0][4]=4 A3[0][1][4]=9 A3[0][2][4]=14
A3[1][0][0]=15 A3[1][1][0]=20 A3[1][2][0]=25
A3[1][0][1]=16 A3[1][1][1]=21 A3[1][2][1]=26
A3[1][0][2]=17 A3[1][1][2]=22 A3[1][2][2]=27
A3[1][0][3]=18 A3[1][1][3]=23 A3[1][2][3]=28
A3[1][0][4]=19 A3[1][1][4]=24 A3[1][2][4]=29
(ต่อ)
5.17 พอยเตอร์
พอยเตอร์ (Pointer) คือตัวชี้ตำแหน่งหรือแอดเดรสของข้อมูล
ในกำรเก็บข้อมูลตัวแปรแบบพอยเตอร์จะเก็บตำแหน่งของข้อมูล
แทนกำรเก็บค่ำของข้อมูลจริงๆ และกำรกำหนดชนิดของตัว แปร
แบบพอยเตอร์จะใช้เครื่อหมำย * นำหน้ำตัวแปร
รูปแบบ
ชนิดตัวแปร * ชื่อตัวแปร;
ตัวอย่ำง
Int *pt;
หมำยถึง ประกำศตัวแปร pt เป็นตัวแปรแบบพอย
เตอร์
โปรแกรมการใช้งานตัวแปรพอยเตอร์
ผลการรันโปรแกรม
โปรแกรมจะแสดงข้อมูลและตำแหน่งตองตัวแปรพอยเตอร์ pt ดังนี้
*pt = 10,pt is address of a = A001
*pt = a[0]= 10
*(pt+1) = a[1] = 11
*(pt+2) = a[2] = 12
*(pt+3) = a[3] = 13
การทางานของตัวแปรพอยเตอร์
Address of Memmory
pt=a=&a[0]=A100 H
pt+1=&a[1]=A101 H
pt+2=&a[2]=A102 H
pt+3=&a[3]=A103 H
10
13
12
11
*pt=*a=a[0]=10
*(pt+1)=a[1]=11
*(pt+2)=a[2]=12
*(pt+3)=a[3]=13
Data
5.19 สรุปท้ายบท
ในบทนี้ได้นำเสนอพื้นฐำนกำรเขียนโปรแกรมภำษำซี
โครงสร้ำงของภำษำซี ชนิดของตัวแปร ตัวกระทำทำงคณิตศำสตร์
ตัวกระทำเปรียบเทียบ ตัวกระทำลอจิก ตัวกระทำระดับบิต กำร
วนรอบ กำรเปรียบเทียบ กำรสร้ำงฟังก์ชัน กำรส่งค่ำผ่ำนฟังก์ชัน
ตัวแปรแบบอำเรย์และพอยเตอร์ เพื่อใช้เป็นควำมรู้พื้นฐำนในกำร
พัฒนำระบบควบคุมไมโครคอนโทรลเลอร์โดยใช้ภำษำซี

บทที่ 5 พื้นฐานภาษาซี