วันเสาร์ที่ 27 ธันวาคม พ.ศ. 2557

พื้นฐานความรู้ภาษาซี

โครงสร้างของภาษา C

          
         

          ภาษา C เป็นภาษาคอมพิวเตอร์ที่ถูกค้นคิดขึ้นโดย 

Denis Ritchie ในปี ค.ศ.1970 โดยใช้ระบบปฏิบัติการของ

ยูนิกซ์ (UNIX) นับจากนั้นมาก็ได้รับความนิยมเพิ่มขั้นจนถึง

ปัจจุบัน ภาษา C สามารถติดต่อในระดับฮาร์ดแวร์ได้ดีกว่าภาษา

ระดับสูงอื่น ๆ ไม่ว่าจะเป็นภาษาเบสิกฟอร์แทน ขณะเดียวกันก็มี

คุณสมบัติของภาษาระดับสูงอยู่ด้วย ด้วยเหตุผลดังกล่าวจึงจัด

ได้ว่าภาษา C เป็นภาษาระดับกลาง (Middle –lever 

language) ภาษา C เป็นภาษาคอมพิวเตอร์ชนิดคอมไพล์ 

(compiled Language) ซึ่งมีคอมไพลเลอร์ (Compiler) 

ทำหน้าที่ในการคอมไพล์ (Compile) หรือแปลงคำสั่งทั้งหมดใน

โปรแกรมให้เป็น

         ภาษาเครื่อง (Machine Language) เพื่อให้

เครื่องคอมพิวเตอร์นำคำสั่งเหล่านั้นไปทำงานต่อไป

โครงสร้างของภาษา C



ทุกโปรแกรมของภาษา C มีโครงสร้างเป็นลักษณะดังรูป


 
      
Int main (void)
{
เฮดเดอร์ไฟล์ (Header Files)
เป็นส่วนที่เก็บไลบรารี่มาตรฐานของภาษา C ซึ่งจะถูกดึงเข้ามารวม
กับโปรแกรมในขณะที่กำลังทำการคอมไพล์ โดยใช้คำสั่ง
#include<ชื่อเฮดเดอร์ไฟล์> หรือ
#include  “ชื่อเฮดเดอร์ไฟล์”
ตัวอย่าง
#include<stdio.h>
                
          เฮดเดอร์ไฟล์นี้จะมีส่วนขยายเป็น .h เสมอ และ
เฮดเดอร์ไฟล์เป็นส่วนที่จำเป็นต้องมีอย่างน้อย 1 เฮดเดอร์ไฟล์ ก็
คือ เฮดเดอร์ไฟล์ stdio.h ซึ่งจะเป็นที่เก็บไลบรารี่มาตรฐานที่
จัดการเกี่ยวกับอินพุตและเอาท์พุต

ส่วนตัวแปรแบบ Global (Global Variables)
เป็นส่วนที่ใช้ประกาศตัวแปรหรือค่าต่าง ๆ ที่ให้ใช้ได้ทั้งโปรแกรม 
ซึ่งใช้ได้ทั้งโปรแกรม  ซึ่งในส่วนไม่จำเป็นต้องมีก็ได้

ฟังก์ชัน (Functions)

เป็นส่วนที่เก็บคำสั่งต่าง ๆ ไว้ ซึ่งในภาษา C จะบังคับให้มีฟังก์ชัน
อย่างน้อย 1 ฟังก์ชั่นนั่นคือ ฟังก์ชั่น Main() และในโปรแกรม 
1 โปรแกรมสามารถมีฟังก์ชันได้มากกว่า 1 ฟังก์ชั่น

ส่วนตัวแปรแบบ Local (Local Variables)

เป็นส่วนที่ใช้สำหรับประกาศตัวแปรที่จะใช้ในเฉพาะฟังก์ชันของ
ตนเอง ฟังก์ชั่นอื่นไม่สามารถเข้าถึงหรือใช้ได้ ซึ่งจะต้องทำการ
ประกาศตัวแปรก่อนการใช้งานเสมอ  และจะต้องประกาศไว้ในส่วนนี้
เท่านั้น
ตัวแปรโปรแกรม (Statements)
เป็นส่วนที่อยู่ถัดลงมาจากส่วนตัวแปรภายใน ซึ่งประกอบไปด้วยคำ
สั่งต่าง ๆ ของภาษา C และคำสั่งต่าง ๆ จะใช้เครื่องหมาย ; 
เพื่อเป็นการบอกให้รู้ว่าจบคำสั่งหนึ่งๆ แล้วส่วนใหญ่ คำสั่งต่างๆ 
ของภาษา C เขียนด้วยตัวพิมพ์เล็ก เนื่องจากภาษา C จะแยก
ความแตกต่างชองตัวพิมพ์เล็กและพิมพ์ใหญ่หรือCase 
Sensitive นั่นเอง ยกตัวอย่างใช้ Test, test หรือจะถือว่า
เป็นตัวแปรคนละตัวกัน นอกจากนี้ภาษา C ยังไม่สนใจกับการขึ้น
บรรทัดใหม่ เพราะฉะนั้นผู้ใช้สามารถพิมพ์คำสั่งหลายคำสั่งใน
บรรทัดเดียวกันได้ โดยไม่เครื่องหมาย ; เป็นตัวจบคำสั่ง

ค่าส่งกลับ (Return Value)
เป็นส่วนที่บอกให้รู้ว่า ฟังก์ชันนี้จะส่งค่าอะไรกลับไปให้กับฟังก์ชั่นที่
เรียกฟังก์ชั่น ซึ่งเรื่องนี้ผู้เขียนจะยกไปกล่าวในเรื่องฟังก์ชั่นอย่าง
ละเอียดอีกทีหนึ่ง

หมายเหตุ (Comment)
  
     เป็นส่วนที่ใช้สำหรับแสดงข้อความเพื่ออธิบายสิ่งที่ต้องการใน
โปรแกรม ซึ่งจะใช้เครื่องหมาย /*และ */ ปิดหัวและปิดท้ายของ
ข้อความที่ต้องการ 

  

รูปที่ 2-2 แสดงการเขียนหมายเหตุหรือ Comment ในลักษณะต่าง ๆ

โปรแกรมที่ 2 – 1 โปรแกรมแรกสำหรับคุณ 

 

การตั้งชื่อ 
การตั้งชื่อ (Identifier) ให้กับตัวแปร ฟังก์ชันหรืออื่น ๆ มี
กฎเกณฑ์ในการตั้งชื่อ ดังนี้ 

1.  ตัวแรกของชื่อจะต้องขึ้นต้องด้วยตัวอักษรหรือเครื่องหมาย _ 
เท่านั้น
2.  ตัวอักษรตั้งแต่ตัวที่ 2 สามารถเป็นตัวเลข หรือ
เครื่องหมาย_ก็ได้
3.  จะต้องไม่มีการเว้นวรรคภายในชื่อ แต่สามารถใช้เครื่อง_คั่น
ได้
4.  สามารถตั้งชื่อได้ยาไม่จำกัด แต่จะใช้ตัวอักษรแค่ 31 ตัวแรก
ในการอ้างอิง
5.  ชื่อที่ตั้งด้วยตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก จะถือว่าเป็น
คนละตัวกัน
6.  ห้ามตั้งชื่อซ้ำกับคำสงวนของภาษา C

ตัวอย่างการตั้งที่ถูกและผิด


แบบที่ถูก
แบบที่ผิด
A
$sum
Student_name
Student Name
_SystemName
2names
A1
int

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

ชนิดข้อมูลแบบไม่มีค่า หรือ Void Type (Void)
ข้อมูลชนิดนี้ จะไม่มีค่าและจะไม่ใช้ในการกำหนดชนิดตัวแปร แต่
ส่วนใหญ่จะใช้เกี่ยวกับฟังก์ชั่น ซึ่งจะขอยกไปอธิบายในเรื่องฟังก์ชั่น

ชนิดข้อมูลมูลแบบจำนวนเต็ม หรือ Integer Type (int)
เป็นชนิดข้อมูลที่เป็นตัวเลขจำนวนเต็ม ไม่มีทศนิยม ซึ่งภาษา C 
จะแบ่งข้อมูลชนิดนี้ออกได้เป็น 3 ระดับ คือ short int,int 
และ long int ซึ่งแต่ละระดับนั้นจะมีขอบเขตการใช้งานที่แตก
ต่างกัน ดังแสดงในตารางที่ 2-1



ชนิดข้อมูล
คิดเครื่อง
หมาย
ขนาด(ไบต์)
จำนวนบิต
ค่าน้อยที่สุด
ค่ามากที่สุด
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 และสัญลักษณ์
ต่าง ๆ ตามมาตรฐาน ACSII (American Standard 
Code Information Interchange) ซึ่งเมื่อกำหนดให้กับ
ตัวแปรแล้วตัวแปรนั้นจะรับค่าได้เพียง 1 ตัวอักษรเท่านั้น และ
สามารถรับข้อมูลจำนวนเต็มตั้งแต่ถึง 127 จะใช้ขนาดหน่วยความ
จำ 1ไบต์หรือ 8 บิต

ชนิดข้อมูลแบบทศนิยม หรือ Floating Point Type (flat)
เป็นข้อมูลชนิดตัวเลขที่มีจุดทศนิยม ซึ่งสามารถแบ่งออกเป็น 3 
ระดับ คือ float, double และ long double แต่ละระดับ
นั้นจะมีขอบเขตที่แตกต่างกันในการใช้งาน ดังแสดงในตารางที่ 2-
2

ตารางที่ 2-2 แสดงรายละเอียดของชนิดข้อมูลแบบทศนิยม

ชนิดข้อมูล
ขนาด(ไบต์)
จำนวนบิต
ค่าที่น้อยที่สุด
float
4
32
      -38                38
3.4-10    ถึง 3.4-10
double
8
64
      -308                308
1.7*10    ถึง 1.7*10
long double
10
80
      -4932             4932
3.4*10    ถึง 1.1*10

ตัวแปร

ตัวแปร คือ ชื่อที่ใช้อ้างถึงตำแหน่งต่าง ๆ ในหน่วยความจำ ซึ่ง
ใช้เก็บข้อมูลต่าง ๆ ด้วยขนาดตามชนิดข้อมูล

การประกาศตัวแปร
การประกาศตัวแปรในภาษา C นั้นสามรถทำได้ 2 ลักษณะ คือ 
การประกาศตัวแปรแบบเอกภาพ หรือการประกาศตัวแปรแบบ 
Global คือ ตัวแปรที่จะสามารถเรียกใช้ได้ทั้งโปรแกรม และแบบ
ที่สองการประกาศตัวแปรแบบภายใน หรือการประกาศตัวแปรแบบ 
Local ซึ่งตัวแปรแระเภทนี้จะใช้ได้ในเฉพาะฟังก์ชั่นของตัวเอง
เท่านั้น 

#include<stdio.h>
int total; /*การประกาศตัวแปรแบบ Global */
main()
{
int price,money; /*การประกาศตัวแปรแบบ Local*/
}
  
รูปที่ 2-3 แสดงการประกาศตัวแปรแบบต่าง ๆ

การกำหนดค่าให้กับตัวแปร 
การกำหนดค่าให้กับตัวแปรนั้น จะสามารถกำหนดได้ตั้งแต่ตอนที่
ประกาศตัวแปรเลยหรือจะกำหนดให้ภายในโปรแกรมก็ได้ ซึ่งการ
กำหนดค่าจะใช้เครื่องหมาย = กั้นตรงกลาง 

int total = 0;
ถ้ามีตัวแปรข้อมูลชนิดเดียวกัน ก็สามารถทำแบบนี้ได้
int total =0,sum
หรือ
int total =0,sum=0;
ถ้าเป็นการกำหนดภายในโปรแกรม ซึ่งตัวแปรนั้นได้ประกาศไว้แล้ว
สามารถทำแบบนี้
total = 50;
หรือ
total = total+sum
หรือกำหนดค่าจาการพิมพ์ข้อมูลเข้าทางคีย์บอร์ด
scanf(“%d”,&total);

โปรแกรมที่ 2-2 การประกาศและใช้ตัวแปร
#include<stdio.h>
/*การประกาศตัวแปร Global*/
int sum = 0;
int main(void)
{
/*การประกาศตัวแปรแบบ Local */
int a;
int b;
int c;


/*คำสั่ง */
printf(“\nWelcome. This Program adds\n”);
printf(“threenumbers.Enter three numbers\n”);
printf(“in the form: nnn nnn nnn <retur>\n”);
scanf(“%d %d %d”,&a,&b,&c);
/* ทำการบวกค่าระหว่าง a,b และ c เข้าด้วยกันแล้วกำหนดค่า
ให้ sum*/
sum=a+b+c;
printf(“The total is: %d\n”,sum);
printf(“Thant 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.

การกำหนดชนิดข้อมูลแบบชั่วคราว
เมื่อผู้ใช้ได้กำหนดชนิดข้อมูลให้กับตัวแปรใด ๆ ไปแล้ว ตัวแปรตัว
นั้นจะมีชนิดข้อมูลเป็นแบบที่กำหนดให้ตลอดไป บางครั้งการเขียน
โปรแกรมอาจจะต้องมีความจำเป็นต้องเปลี่ยนชนิดข้อมูลของตัวแปร
ตัวนั้น ซึ่งภาษาซี ก็มีความสามารถที่จะทำเช่นนั้นได้
รูปแบบ 
([ชนิดข้อมูล])[ตัวแปร]

ตัวอย่าง
(float)a
(int)a
โปรแกรมที่ 2-3 แสดงการใช้ตัวแปรแบบชั่วคราว
#include<stdio.h>
int main(void)
{
float a= 25.3658;
printf(“Value of a : %\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 folat a = 5.23;
const int b = a%2;

โปรแกรมที่ 2-4 การใช้ตัวแปรชนิดข้อแบบค่าคงที่
#include<stdio.h>
imt main(void)
{
const float pi = 3.14159;
float radius;
radius = 3;
printf(“Value of pi  : %f\n”,pi);
printf(“Value of area : %f\n”,pi*
(radius*radius));
return 0;
}
ผลการทำงาน:
Value of pi : 3.141590
Value of area : 28.274311

constant นั้นสามารถแบ่งออกได้ ดังนี้
Integer Constants เป็นค่าคงที่ชนิดข้อมูลแบบตัวเลข
จำนวนเต็มไม่มีจุดทศนิยม
const int a = 5;

Floating-Point Constants เป็นค่าคงที่ชนิดข้อมูลแบบ
ตัวเลขที่มีจุดทศนิยม
const float b = 5.6394;

Character Constants เป็นค่าคงที่ชนิดตัวอักษร ซึ่งจะต้อง
อยู่ภายในเครื่องหมาย ‘’เท่านั้น
const char b = ‘t’;

String Constants เป็นค่าคงที่เป็นข้อความ ซึ่งจะต้องอยู่ภาย
ใต้เครื่องหมาย “”เท่านั้น
“”
“h”
“Hello world\n”
“HOW ARE YOU”
“Good Morning!”
โปรแกรมที่ 2-5 การใช้ตัวแปรชนิดข้อมูลแบบค่าคงที่แบบต่าง ๆ
#includ<stdio.h>
int main(void)
{
const int a = 3; /*Integer Constats*/
const flat b = 3.14159; /*Floating – Point 
Constants*/
const cahr c = ‘P’; /*Character Constants*/
printf(“Value of a: %d\n”,a);
printf(“Value of b: %d\n”,b);
printf(“Value of c: %d\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 
แบบ คือ Expression Statement และ Compound 
Statement ณ.ที่นี้จะมีด้วยกัน 2 แบบ

     1. ExpressionStatementหรือเรียกอีกอย่างหนึ่ง

ว่า Single Statementซึ่งStatementแบบนั้นจะต้องมี

เครื่องหมาย; หลังจาก statement เมื่อภาษา C พบ

เครื่องหมาย ; จะทำให้มันรู้ว่าจบชุดคำสั่งแล้ว แล้วจึงข้ามไปทำ 

Statement ชุดต่อไป   a = 2;

หรือ
printf(“x contains %d, y contains %d\n”,x,y);

Compound Statement คือ ชุดคำสั่งที่มีคำสั่งต่าง ๆ รวมอยู่
ด้านใน Block ซึ่งจะใช้เครื่องหมาย {เป็นการเปิดชุดคำสั่ง และ
ใช้} เป็นตัวปิดชุดคำสั่ง ตัวอย่างที่เห็นได้ชัดเจนสำหรับ 
Statement แบบนี้ คือ ตัวฟังก์ชั่น Main โดยทั่ว ๆ ไปใน
ภาษา C Compound Statement จะเป็นตัวฟังชั่น

ผังงาน
     
    ผังงาน (Flowchart)  มีไว้เพื่อให้ผู้ใช้ออกแบบขั้นตอน
การทำงนของโปรแกรมก่อนที่จะลงมือเขียนโปรแกรม ซึ่งจะช่วยให้
ผู้ใช้เขียนโปรแกรมได้ง่ายขึ้นและไม่สับสนซึ่งผังงานที่นิยมใช้มี
มาตรฐานมากมายหลายแบบ  โดยมีสัญลักษณ์ของผังงานดังนี้ 


1. 
Terminator

สัญลักษณ์แทนจุดเริ่มต้นและจุดสิ้นสุด 


        
2.Process                                                           
สัญลักษณ์กระบวนการต่าง ๆ เช่น การประกาศตัวแปร การบวก 
เป็นต้น


        3.
Decision 
สัญลักษณ์เงื่อนไข 

        4.Data

สัญลักษณ์ติดต่อกับผู้ใช้โดยการรับข้อมูลหรือแสดงข้อมูล 

5.Manual Input 

สัญลักษณ์การรับข้อมูลจากผู้ใช้ 


6.Display 

สัญลักษณ์การแสดงผลออกทางจอภาพ 


        7.
Predefined Process


   สัญลักษณ์ระบุการทำงานย่อยหรือฟังก์ชั่นย่อย 

8.Connect 

สัญลักษณ์จุดเชื่อม 

        9.Arrow

สัญลักษณ์เส้นทางการดำเนินงาน

โดยการออกแบบผังงาน จะมี 3 แบบ ดังนี้ 

1.  แบบเรียงลำดับ จะเป็นลักษณะการทำงานที่เรียงกันไปเรื่อย 
ๆ โดยไม่มีการวนซ้ำ ดังรูป 


 
                                            

2.  แบบทางเลือก จะเป็นลักษณะการทำงานที่มีทางเลือก ซึ่งจะ
พบในเรื่องคำสั่งเงื่อนไข เช่น คำสั่ง if…else ดังรูป 



               
                                                                                                          

3.  แบบการทำงานซ้ำ จะเป็นลักษณะการทำงานที่วนการ
ทำงานแบบเดิม จนครบตามจำนวนที่ต้องการ ซึ้งจะพบในเรื่องคำ
สั่ง วนลูป เช่น คำสั่ง do….while ดังรูป












ไม่มีความคิดเห็น:

แสดงความคิดเห็น