ปูพื้นฐานการเขียนโปรแกรมภาษา C
ภาษา C คือ ภาษาคอมพิวเตอร์ใช้สำหรับพัฒนาโปรแกรมโดยผู้พัฒนาต้องเรียนรู้โครงสร้างภาษา C ว่ามีโครงสร้างการเขียนอย่างไรเพื่อสั่งการให้คอมพิวเตอร์นั้นทำงานตามวัตถุประสงค์ที่ต้องการ เพื่อให้ผู้พัฒนาโปรแกรมนั้นสามารถสื่อสารกับคอมพิวเตอร์ได้ต้องอาศัยส่วนที่เรียกว่า ตัวแปลภาษา
ตัวแปลภาษาเปรียบเสมือนกับล่ามทำหน้าที่แปลงโค้ดภาษาคอมพิวเตอร์ที่มนุษย์เขียนขึ้น (ภาษา C) ไปเป็นภาษาที่เครื่องคอมพิวเตอร์เข้าใจว่าต้องการให้ทำงานอะไร
ประเภทของตัวแปลภาษา
ในปัจจุบันตัวแปลภาษาแบ่งออกเป็น 2 ประเภท
คอมไพเลอร์ (Compiler)
ข้อดี
- ทำงานได้เร็ว เนื่องจากจะทำการแปลคำสั่งทั้งหมดในครั้งเดียว แล้วจึงทำงานตามคำสั่งของโปรแกรมในภายหลัง
ข้อเสีย
- เมื่อเกิดข้อผิดพลาดขึ้นจะตรวจสอบหาข้อผิดพลาดได้ยาก เพราะทำการแปลคำสั่งทีเดียวทั้งโปรแกรม
อินเตอร์พรีเตอร์ (Interpreter)
ข้อดี
- แปลคำสั่งทีละบรรทัด ทำให้หาข้อผิดพลาดของโปรแกรมได้ง่าย
- เนื่องจากแปลคำสั่งทีละบรรทัด สามารถสั่งให้โปรแกรมทำงานเฉพาะจุดได้
- ไม่เสียเวลารอการแปลคำสั่งเป็นเวลานาน
ข้อเสีย
- ช้า เนื่องจากทำงานทีละบรรทัด
ภาษา C จัดเป็นภาษาคอมพิวเตอร์ที่ใช้ตัวแปลภาษาแบบคอมไพเลอร์
โครงสร้างคำสั่งภาษา C
#include <stdio.h>
/*
นำคำสั่งพื้นฐานที่อยู่ในไลบราลี่ stdio เข้ามาทำงาน
เช่น กลุ่มคำสั่งที่ต้องการแสดงผลออกทางจอภาพ (printf) เป็นต้น
*/
int main()
{
printf("Hello World"); //แสดงผลข้อความ Hello World ออกทางจอภาพ
return 0;
}
คำสั่งของภาษา C ที่เขียนในไฟล์นามสกุล .c จะถูกเรียกมาจากส่วนที่เรียกว่าไลบราลี่ (Library)
ไลบราลี่ (Library) ประกอบด้วย 3 องค์ประกอบ ได้แก่
- เครื่องหมาย # (Preprocessor) คือการกำหนดให้ตัวแปลภาษา C ทราบว่าต้องแปลความหมายของไลบราลี่อะไร
- ไดเรกทีฟ (Directive) คำสั่งที่ต่อจาก # คือการ include หรืออ้างอิงไฟล์ไลบราลี่ ที่อยู่ระหว่างเครื่องหมาย < กับ >
- Header File หมายถึงชื่อไลบราลี่ที่ต้องการอ้างอิง เช่น stdio.h
หมายเหตุ (Comment)
ใช้อธิบายหน้าที่หรือความหมายของโค้ดที่เขียนหรือยกเลิกโค้ดชั่วคราว ส่งผลให้ตัวแปลภาษาไม่สนใจโค้ดในบรรทัดที่ถูกทำหมายเหตุ
การเขียนหมายเหตุ
- วิธีที่ 1 โดยใช้เครื่องหมาย Slash ( // ) ใช้ในการอธิบายคำสั่งสั้นๆ
ในรูปแบบบรรทัดเดียว - วิธีที่ 2 เขียนคำอธิบายไว้ในเครื่องหมาย /* … */ ใช้ในการอธิบายคำสั่งยาวๆหรือแบบหลายบรรทัด
ตัวอย่าง
#include <stdio.h>
/*
นำคำสั่งพื้นฐานที่อยู่ในไลบราลี่ stdio เข้ามาทำงาน
เช่น กลุ่มคำสั่งที่ต้องการแสดงผลออกทางจอภาพ (printf) เป็นต้น
*/
int main()
{
printf("Hello World"); //แสดงผลข้อความ Hello World ออกทางจอภาพ
return 0;
}
แสดงผลข้อมูล (Output)
คือคำสั่งสำหรับใช้แสดงผลข้อมูลออกจากจอภาพทั้งข้อมูลที่อยู่ในรูปแบบ ตัวเลขและตัวอักษรหรือผลลัพธ์จากการประมวลผล มีโครงสร้างคำสั่งดังนี้
printf("Format String",List Of Data);
- Format String คือ ชุดข้อความพิเศษสำหรับกำหนดรูปแบบการแสดงผลข้อมูล
- List Of Data คือ รายการข้อมูลต่างๆที่ต้องการแสดงผล ซึ่งสามารถแสดงข้อมูลได้มากกว่า 1 รายการโดยคั่นด้วยเครื่องหมายคอมม่า (,)
ตัวอย่าง Format String
- %d คือ ข้อมูลตัวเลขจำนวนเต็ม
- %f คือ ข้อมูลตัวเลขที่มีจุดทศนิยม
- %c คือ ข้อมูลตัวอักษร
- %s คือ ข้อมูลข้อความ มีลักษณะเป็นชุดของตัวอักษร ตัวเลข หรือ อักขระพิเศษ อยู่ในพื้นที่เครื่องหมาย Double Quote ( “”)
อักขระควบคุมการทำงาน
- \n ขึ้นบรรทัดใหม่
- \t เว้นช่องว่างในแนวนอน
ตัวอย่าง
int score = 15;
printf("คะแนนของฉัน คือ %d \n",score);
ตัวแปรและชนิดข้อมูล
ตัวแปร (Variable) คือ ชื่อที่ถูกนิยามขึ้นมาเพื่อใช้เก็บค่าข้อมูลสำหรับนำไปใช้งานในโปรแกรม โดยข้อมูลประกอบด้วย ข้อความ ตัวเลข ตัวอักษร หรือผลลัพธ์จากการประมวลผลข้อมูลค่าที่เก็บในตัวแปรสามารถเปลี่ยนแปลงค่าได้
ชนิดข้อมูลพื้นฐาน (Data Type)
- boolean ค่าทางตรรกศาสตร์ (True = 1 / False = 0)
- int ตัวเลขที่ไม่มีจุดทศนิยม
- float ตัวเลขที่มีจุดทศนิยม
- char ตัวอักษร (ใช้เครื่องหมาย ‘ ’)
- string กลุ่มตัวอักษรหรือข้อความ (ใช้เครื่องหมาย “ ”)
การสร้างตัวแปร
ชนิดข้อมูล ชื่อตัวแปร = ค่าเริ่มต้น;
int score=100;
char grade='A';
float gpax=3.99;
กฎการตั้งชื่อ
- ขึ้นต้นด้วยตัวอักษร A-Z หรือ a-z หรือ _ เครื่องหมายขีดเส้นใต้เท่านั้น
- อักษรตัวแรกห้ามเป็นตัวเลข
- ตัวพิมพ์เล็ก-พิมพ์ใหญ่มีความหมายต่างกัน (Case Sensitive)
- ห้ามใช้อักขระพิเศษมาประกอบเป็นชื่อตัวแปร เช่น {} , % ^
และช่องว่าง เป็นต้น - ไม่สามารถประกาศชื่อเดียวกัน แต่มีชนิดข้อมูล 2 ชนิดได้
- ไม่ซ้ำกับคำสงวนในภาษา C
ค่าคงที่ (Constant)
มีลักษณะการใช้งานคล้ายกับตัวแปร แต่ค่าคงที่คือค่าที่ไม่สามารถเปลี่ยนแปลงได้ ตอนประกาศใช้งานค่าคงที่จะต้องมีการประกาศค่าเริ่มต้นเสมอ
ประเภทของค่าคงที่ (Constant)
Literal Constant คือ ค่าคงที่ซึ่งเป็นข้อมูลที่แน่นอน ไม่จำเป็นต้องมีตัวแปรมารองรับ สามารถกำหนดเข้าไปในโปรแกรมได้เลย เช่น
printf("Hello %s","KongRuksiam");
printf(" 2 x 2 = %d" , 4);
Defined Constant คือ ค่าคงที่ซึ่งประกาศไว้ที่ส่วนหัวของโปรแกรมในลักษณะ Preprocessing Directives เช่น
#define MAX_VALUE 100;
int main(){
printf("MAX = %d",MAX_VALUE);
}
Memory Constant เป็นการกำหนดค่าคงที่ให้ตัวแปร ส่งผลให้ตัวแปรที่ถูกกำหนดค่านั้น ไม่สามารถแปรเปลี่ยนค่าได้ ตลอดการทำงานของโปรแกรม ตัวอย่าง เช่น
const float PI = 3.14 ;
const int SIZE = 10;
การรับข้อมูล (Input)
คือ คำสั่งสำหรับรับค่าผ่านทางคีย์บอร์ดและเก็บค่าดังกล่าวลงในตัวแปรมีโครงสร้างคำสั่ง ดังนี้
scanf("Format String",List Of Address)
- Format String คือ ชุดข้อความพิเศษสำหรับกำหนดรูปแบบการรับข้อมูลจากผู้ใช้
- List Of Address คือ ตำแหน่งของตัวแปรในหน่วยความจำ โดยทั่วไปจะอยู่ในรูปของตัวแปรที่มีเครื่องหมาย & นำหน้า เช่น ตำแหน่งของตัวแปร name คือ &name
ตัวอย่าง Format String
- %d เก็บข้อมูลตัวเลขจำนวนเต็ม
- %f เก็บข้อมูลตัวเลขที่มีจุดทศนิยม
- %c เก็บข้อมูลตัวอักษร
- %s เก็บข้อมูลกลุ่มตัวอักษร (ข้อความ)
ตัวดำเนินการ (Operator)
หมายถึง กลุ่มของเครื่องหมายหรือสัญลักษณ์ที่ใช้ในการเขียนโปรแกรม
ตัวดำเนินการทางคณิตศาสตร์
- + หมายถึง การบวก
- - หมายถึง การลบ
- * หมายถึง การคูณ
- / หมายถึง การหาร
- % หมายถึง การหารเอาเศษ
int x = 100;
int y = 50;
x+y; //100 + 50 = 150
x-y; //100 - 50 = 50
x*y; //100 x 50 = 5000
x/y; //100 / 50 = 2
x%y; //100 % 50 = 0
ตัวดำเนินการเพิ่มค่าและลดค่า
++ (Prefix)
int a=5;
printf("ค่าเริ่มต้น=%d",a);//5
printf("prefix=%d",++a);//6
printf("ค่าล่าสุด=%d",a);//6
++ (Postfix)
int a=5;
printf("ค่าเริ่มต้น=%d",a); //5
printf("postfix=%d",a++); //5
printf("ค่าล่าสุด=%d",a);//6
— (Prefix)
int a=5;
printf("ค่าเริ่มต้น=%d",a); //5
printf("prefix=%d",--a);//4
printf("ค่าล่าสุด=%d",a);//4
— (Postfix)
int a=5;
printf("ค่าเริ่มต้น=%d",a); //5
printf("postfix=%d",a--); //5
printf("ค่าล่าสุด=%d",a);//4
ตัวดำเนินการกำหนดค่า (Compound Assignment) หมายถึงการใช้ตัวดำเนินการทางคณิตศาสตร์ร่วมกับเครื่องหมายเท่ากับ (=)
int x = 100;
int y = 50;
x+=y; //หมายถึง x=x+y -> 150
x-=y; //หมายถึง x=x-y -> 50
x*=y; //หมายถึง x=x*y -> 5000
x/=y; //หมายถึง x=x/y -> 2
x%=y; //หมายถึง x=x%y -> 0
ตัวดำเนินการเปรียบเทียบ ผลการเปรียบเทียบจะได้คำตอบ คือ True (1) หรือ False (0)
/*
== หมายถึง เท่ากับ
!= หมายถึง ไม่เท่ากับ
> หมายถึง มากกว่า
< หมายถึง น้อยกว่า
>= หมายถึง มากกว่าเท่ากับ
<= หมายถึง น้อยกว่าเท่ากับ
*/
ตัวดำเนินการทางตรรกศาสตร์ ประกอบด้วย
/*
&& (AND) และ
|| (OR) หรือ
! (NOT) ไม่
*/
โครงสร้างควบคุมแบบมีเงื่อนไข (Condition)
กลุ่มคำสั่งที่ใช้ตัดสินใจในการเลือกทำงานตามเงื่อนไขต่างๆ ภายในโปรแกรม
If Statement
เป็นคำสั่งที่ใช้กำหนดเงื่อนไขในการตัดสินใจทำงานของโปรแกรม ถ้าเงื่อนไขเป็นจริงจะทำตามคำสั่งต่างๆ ที่กำหนดภายใต้เงื่อนไขนั้นๆ
if(เงื่อนไข){
//คำสั่งเมื่อเงื่อนไขเป็นจริง;
}
If…Else Statement
if(เงื่อนไข){
//คำสั่งเมื่อเงื่อนไขเป็นจริง ;
}else{
//คำสั่งเมื่อเงื่อนไขเป็นเท็จ ;
}
แบบลดรูป (Ternary Operator)
ตัวแปร = เงื่อนไข ? คำสั่งเมื่อเงื่อนไขเป็นจริง : คำสั่งเมื่อเงื่อนไขเป็นเท็จ;
รูปแบบคำสั่งแบบหลายเงื่อนไข
if(เงื่อนไขที่ 1){
//คำสั่งเมื่อเงื่อนไขที่ 1 เป็นจริง ;
}else if(เงื่อนไขที่ 2){
//คำสั่งเมื่อเงื่อนไขที่ 2 เป็นจริง ;
}else if(เงื่อนไขที่ 3){
//คำสั่งเมื่อเงื่อนไขที่ 3 เป็นจริง ;
}else{
//คำสั่งเมื่อทุกเงื่อนไขเป็นเท็จ ;
}
Switch..Case
Switch เป็นคำสั่งที่ใช้กำหนดเงื่อนไขคล้ายๆกับ if แต่จะเลือกเพียงหนึ่งทางเลือกออกมาทำงานโดยนำค่าในตัวแปรมากำหนดเป็นทางเลือกผ่านคำสั่ง case (ตัวแปรควบคุม)
switch (ค่าที่เก็บในตัวแปรควบคุม) {
case ค่าที่ 1 : คำสั่งที่ 1;
break;
case ค่าที่ 2 : คำสั่งที่ 2;
break;
……
case ค่าที่ N : คำสั่งที่ N;
break;
default : คำสั่งเมื่อไม่มีค่าที่ตรงกับที่ระบุใน case
}
โครงสร้างควบคุมแบบทำซ้ำ (Loop)
กลุ่มคำสั่งที่ใช้ในการวนรอบ (Loop) โปรแกรมจะทำงานไปเรื่อยๆจนกว่าเงื่อนไขที่กำหนดไว้จะเป็นเท็จ จึงจะหยุดทำงาน
While Loop
จะทำงานตามคำสั่งภายใน while ไปเรื่อยๆเมื่อเงื่อนไขที่กำหนดเป็นจริง
while(เงื่อนไข){
//คำสั่งที่จะทำซ้ำเมื่อเงื่อนไขเป็นจริง ;
}
For Loop
เป็นรูปแบบการซ้ำที่ใช้ในการตรวจสอบเงื่อนไขการทำงาน มีการกำหนดค่าเริ่มต้นและเปลี่ยนค่าไปพร้อมๆกัน เมื่อเงื่อนไขในคำสั่ง for เป็นจริงก็จะทำงานตามคำสั่งที่แสดงไว้ภายในคำสั่ง for ไปเรื่อยๆ
for(ค่าเริ่มต้นของตัวแปร; เงื่อนไข; เปลี่ยนแปลงค่าตัวแปร) {
//คำสั่งเมื่อเงื่อนไขเป็นจริง;
}
Do…While Loop
โปรแกรมจะทำงานตามคำสั่งอย่างน้อย 1 รอบ เมื่อทำงานเสร็จจะมาตรวจสอบเงื่อนไขที่คำสั่ง while ถ้าเงื่อนไขเป็นจริงจะวนกลับขึ้นไปทำงานที่คำสั่งใหม่อีกรอบ แต่ถ้าเป็นเท็จจะหลุดออกจากลูป
do {
//คำสั่งต่างๆ เมื่อเงื่อนไขเป็นจริง;
} while(เงื่อนไข);
คำสั่งที่เกี่ยวข้องกับ Loop
- break ถ้าโปรแกรมพบคำสั่งนี้จะหลุดจากการทำงานในลูปทันที เพื่อไปทำคำสั่งอื่นที่อยู่นอกลูป
- continue คำสั่งนี้จะทำให้หยุดการทำงานแล้วย้อนกลับไปเริ่มต้นการทำงานที่ต้นลูปใหม่
ข้อแตกต่างและการใช้งาน Loop
- For ใช้ในกรณีรู้จำนวนรอบที่ชัดเจน
- While ใช้ในกรณีที่ไม่รู้จำนวนรอบ
- Do..while ใช้ในกรณีที่อยากให้ลองทำก่อน 1 รอบแล้วทำซ้ำไปเรื่อยๆตราบเท่าที่เงื่อนไขเป็นจริง
หัวข้อเสริม
การรับและแสดงผลข้อมูลแบบตัวอักษรนอกจากจะใช้ฟังก์ชั่น scanf() และ printf() แล้ว ยังมีฟังก์ชั่นเฉพาะที่ใช้สำหรับรับข้อมูลแบบตัวอักษร คือ
- getchar() คือ ฟังก์ชั่นสำหรับรับข้อมูล 1 ตัวอักษรจากคีย์บอร์ด
- putchar() คือ ฟังก์ชั่นสำหรับแสดงผลข้อมูล 1 ตัวอักษรออกทางจอภาพ
การรับและแสดงผลชุดข้อความ (String) นอกจากจะใช้ฟังก์ชั่น scanf() และ printf() แล้ว ยังมีฟังก์ชั่นเฉพาะที่ใช้จัดการข้อความ คือ
- gets() คือ ฟังก์ชั่นสำหรับรับข้อมูลชุดข้อความจากคีย์บอร์ด
- puts() คือ ฟังก์ชั่นสำหรับแสดงผลชุดข้อความออกทางจอภาพ
อาร์เรย์ (Array) คืออะไร
- ชุดของตัวแปรที่อยู่ในรูปลำดับใช้เก็บค่าข้อมูลให้อยู่ในกลุ่มเดียวกัน โดยข้อมูลภายในอาร์เรย์จะถูกเก็บในตำแหน่งที่ต่อเนื่องกัน
- เป็นตัวแปรที่ใช้ในการเก็บข้อมูลที่มีลำดับที่ต่อเนื่อง ซึ่งข้อมูลมีค่าได้หลายค่าโดยใช้ชื่ออ้างอิงได้เพียงชื่อเดียว และใช้หมายเลขกำกับ (index) ให้กับตัวแปรเพื่อจำแนกความแตกต่างของค่าตัวแปรแต่ละตัว
คุณสมบัติของอาร์เรย์
- ใช้เก็บกลุ่มของข้อมูล
- ข้อมูลที่อยู่ในอาร์เรย์จะเรียกว่าสมาชิก หรือ อิลิเมนต์ (element)
- แต่ละอิลิเมนต์ (element) จะเก็บค่าข้อมูล (value) และ อินเด็กซ์ (Index)
- Index หมายถึงคีย์ของอาร์เรย์ใช้อ้างอิงตำแหน่งของ element เริ่มต้นที่ 0
- สมาชิกในอาร์เรย์ต้องมีชนิดข้อมูลเหมือนกัน
- สมาชิกในอาร์เรย์จะถูกคั่นด้วยเครื่องหมายคอมม่า
การสร้างอาร์เรย์
แบบกำหนดขนาด
//ชนิดข้อมูล ชื่อตัวแปร[ขนาด]; //ขนาดต้องเป็นตัวเลขจำนวนเต็ม
int score [3];
แบบกำหนดขนาดและค่าเริ่มต้น
// ชนิดข้อมูล ชื่อตัวแปร [ขนาด] = {สมาชิก,….};
int score [3] = {100,90,70};
แบบไม่กำหนดขนาด
// ชนิดข้อมูล ชื่อตัวแปร[] = {สมาชิก,....};
int score [] = {100,90,70,80};
การเปลี่ยนแปลงข้อมูลสมาชิก Array
int number[] = {10, 20, 30, 40};
number[2] = 100;
char vowels[] = {‘A’,’F’,’I’,’O’,’U’}
vowels[1]=’E’;
การเข้าถึงสมาชิกด้วย For Loop
int number[] = {10, 20, 30};
for (int i = 0; i < 3; i++) {
// กระบวนการทำงาน
}
อาร์เรย์ 2 มิติ
- อาร์เรย์ที่มีข้อมูลสมาชิกภายในเป็นอาร์เรย์ (Array ซ้อน Array)
- มีโครงสร้างเป็นรูปแบบแถว (แนวนอน) และคอลัมน์ (แนวตั้ง)
การสร้างอาร์เรย์ 2 มิติ
//แบบกำหนดขนาด
//ชนิดข้อมูล ชื่อตัวแปร[ขนาดแถว][ขนาดคอลัมน์];
int score [2][4];
//แบบกำหนดขนาดและค่าเริ่มต้น
//ชนิดข้อมูล ชื่อตัวแปร[ขนาดแถว][ขนาดคอลัมน์] = {สมาชิก,....};
int numbers [2][4]={
{50,70,80,90},
{100,99,60,55}
};
การเปลี่ยนแปลงค่าในอาร์เรย์ 2 มิติ
// ชื่อตัวแปร[แถว][คอลัมน์] = กำหนดค่า
score [0][1] = 99
score [1][3] = 80
สรุปอาร์เรย์
- ใช้เก็บกลุ่มของข้อมูล ที่มีชนิดข้อมูลเดียวกัน
- ใช้ตัวแปรชื่อเดียวกัน
- ใช้หมายเลขกำกับเพื่ออ้างอิงตำแหน่งของข้อมูลในอาร์เรย์
- มีขนาดที่แน่นอนไม่สามารถปรับเปลี่ยนขนาดได้
ฟังก์ชั่น (Function)
ชุดคำสั่งที่นำมาเขียนรวมกันเป็นกลุ่มเพื่อให้เรียกใช้งานตามวัตถุประสงค์ที่ต้องการและลดความซ้ำซ้อนของคำสั่งที่ใช้งานบ่อย ฟังก์ชั่นสามารถนำไปใช้งานได้ทุกที่และแก้ไขได้ในภายหลัง ทำให้โค้ดในโปรแกรมมีระเบียบและใช้งานได้สะดวกมากยิ่งขึ้น
ประเภทของฟังก์ชั่น
- ฟังก์ชั่นมาตรฐาน (Standard Library Functions) คือ ฟังก์ชั่นที่มีอยู่ในภาษา C ผู้ใช้สามารถเรียกใช้งานได้เลย เช่น printf() , scanf() ที่ทำงานอยู่ในไลบราลี่ หรือ Header File เช่น stdio.h เป็นต้น
- ฟังก์ชั่นที่ผู้ใช้สร้างขึ้นมาเอง (User-Define Function) คือ
ฟังก์ชั่นที่ถูกสร้างขึ้นมาให้ทำงานตามวัตถุประสงค์ที่ผู้ใช้ต้องการ
ฟังก์ชั่น main() คือ ฟังก์ชั่นพิเศษกลุ่มคำสั่งที่อยู่ในฟังก์ชั่นนี้จะถูกสั่งให้ทำงานโดยอัตโนมัติเป็นลำดับแรกเสมอ
กฎการตั้งชื่อฟังก์ชั่น
- ชื่อฟังก์ชันต้องไม่ซ้ำกัน
- ชื่อฟังก์ชันสามารถตั้งเป็นตัวอักษรหรือตัวเลขได้
- ชื่อของฟังก์ชันต้องไม่ขึ้นต้นด้วยตัวเลข
วิธีสร้างฟังก์ชั่น
นิยามชื่อฟังก์ชั่นก่อนกำหนดโครงสร้าง
func_name(); //นิยามชื่อฟังก์ชั่น (function prototype)
int main(){
}
func_name(){} //กำหนดโครงสร้างการทำงานหลังฟังก์ชั่น main
นิยามชื่อฟังก์ชั่นพร้อมกำหนดโครงสร้าง
// นิยามชื่อพร้อมกำหนดโครงสร้างคำสั่ง (เขียนอยู่ด้านบน main เท่านั้น)
func_name(){ }
int main(){
}
ฟังก์ชั่นที่ไม่มีการรับและส่งค่า (void)
//โครงสร้างคำสั่ง
void ชื่อฟังก์ชั่น(){
// คำสั่งต่างๆ
}
//การเรียกใช้งานฟังก์ชั่น
ชื่อฟังก์ชั่น ();
ฟังก์ชั่นแบบมีพารามิเตอร์ (Parameter)
//โครงสร้างคำสั่ง
void ชื่อฟังก์ชั่น(parameter1,parameter2,.....){
// กลุ่มคำสั่งต่างๆ
}
//การเรียกใช้งานฟังก์ชั่น
ชื่อฟังก์ชั่น (argument1,argument2,.....);
อาร์กิวเมนต์ คือ ตัวแปรหรือค่าที่ต้องการส่งมาให้กับฟังก์ชัน (ตัวแปรส่ง)
พารามิเตอร์ คือ ตัวแปรที่ฟังก์ชันสร้างไว้สำหรับรับค่าที่จะส่งเข้ามาให้กับฟังก์ชัน (ตัวแปรรับ)
ฟังก์ชั่นแบบมีค่าส่งกลับ (Return)
//โครงสร้างคำสั่ง
type ชื่อฟังก์ชั่น(){
return ค่าที่จะส่งออกไป (อ้างอิงตามชนิดข้อมูล)
}
//การเรียกใช้งานฟังก์ชั่น
ตัวแปรที่รับค่าจากฟังก์ชั่น = ชื่อฟังก์ชั่น();
ฟังก์ชั่นแบบรับและส่งค่า (Parameter & Return)
//โครงสร้างคำสั่ง
type ชื่อฟังก์ชั่น(parameter1,parameter2,.....){
return ค่าที่จะส่งออกไป (อ้างอิงตามชนิดข้อมูล)
}
//การเรียกใช้งานฟังก์ชั่น
ตัวแปรที่รับค่าจากฟังก์ชั่น = ชื่อฟังก์ชั่น(argument1,argument2..);
ขอบเขตตัวแปร
- Local variable ตัวแปรที่ประกาศอยู่ภายในฟังก์ชั่นมีขอบเขตการทำงานตั้งแต่จุดเริ่มต้นไปจนถึงจุดสิ้นสุดของฟังก์ชั่นจะถือได้ว่าฟังก์ชั่นนั้นเป็นเจ้าของตัวแปรนั้น ฟังก์ชั่นอื่นจะไม่สามารถเรียกใช้งานตัวแปรนี้ได้
- Global variable ตัวแปรที่ประกาศอยู่นอกฟังก์ชั่นมีขอบเขตการทำงานตั้งแต่จุดเริ่มต้นไปจนถึงจุดสิ้นสุดของไฟล์ที่ประกาศใช้ นั่นหมายถึงตัวแปรดังกล่าวนั้นเป็นสาธารณะ ไม่มีฟังก์ชั่นใดเป็นเจ้าของ ทุกฟังก์ชั่นสามารถเรียกใช้งานตัวแปรนี้ได้
พอยน์เตอร์ (Pointer)
คือตัวแปรที่ใช้เก็บตำแหน่งที่อยู่ของตัวแปรที่สนใจหรือค่าแอดเดรสหน่วยความจำ ซึ่งมีประโยชน์อย่างมากสำหรับการเขียนโปรแกรมจัดการหน่วยความจำ
การสร้างตัวแปร Pointer
//โครงสร้างคำสั่ง
//ชนิดข้อมูล *ตัวแปรพอยน์เตอร์;
int number = 10;
char letter = 'A';
//ตัวแปร p1 คือ ตัวแปร pointer ที่ชี้ไปที่แอดเดรสของตัวแปรที่เป็นรูปแบบ int
int *p1 = &number;
//ตัวแปร p2 คือ ตัวแปร pointer ที่ชี้ไปที่แอดเดรสของตัวแปรที่เป็นรูปแบบ char
char *p2 = &letter;
* คือ ตำแหน่งแอดเดรสในหน่วยความจำที่พอยน์เตอร์ชี้อยู่
& คือ ค่าแอดเดรสของตัวแปร
สตรัคเจอร์ (Structure)
คือ ข้อมูลแบบโครงสร้างที่นำเอาข้อมูลที่มีชนิดข้อมูลต่างกันมารวบรวมเข้าด้วยกัน แต่มีความสัมพันธ์ของข้อมูลแบบต่อกัน มาเก็บไว้ภายในโครงสร้างเดียวกัน
**เปรียบเสมือนกับสร้างชนิดข้อมูลขึ้นมาใช้งานเอง**
การสร้างสตรัคเจอร์
//โครงสร้างคำสั่ง
struct ชื่อสตรัคเจอร์ {
ชนิดข้อมูลตัวที่ 1 ตัวแปรที่ 1 ;
ชนิดข้อมูลตัวที่ 2 ตัวแปรที่ 2 ;
…..
}
//สร้าง structure
struct user{
char name[20];
char gender;
int age;
};
//นำ structure ไปใช้งาน
struct user emp1;
strcpy(emp1.name,”kong”);
emp1.gender=’M’;
emp1.age = 30;