The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by phalikid.it, 2021-05-21 03:19:12

โครงสร้างภาษาซีเบื้องต้น





โครงสรางภาษาซเบองตน




















ครูศรายุทธ ตากกระโทก

โปรแกรมภาษา














ในการเขยนโปรแกรมคอมพิวเตอร ด้วยภาษาระดับต าหรอ







ระดับสง จะต้องเปลยนภาษานั้นให้เปนภาษาเครอง เพอให้เครอง




คอมพิวเตอรท างานได้
โปรแกรมต้นฉบับ (Source Program)
ี่
ื่
โปรแกรมทเครองท างานได้ (Executable Program)

ื่
 การเขยนโปรแกรมด้วยแอสเซมบล (ภาษาระดับต า) เปนภาษาเครอง
















ขันตอนการแปลงภาษาแอสเซมบลีเปนภาษาเครอง
ื่



โปรแกรมภาษา







 การเขยนโปรแกรมด้วยภาษาระดับสงเปนภาษาเครอง


ื่





 อนเทอรพรเตอร (Interpreter)



interpreter










 คอมไพเลอร (Compiler)






compiler






ขันตอนการแปลภาษาโปรแกรม


ขั้นตอนพัฒนาโปรแกรม













การเขยนโปรแกรมคอมพิวเตอรให้ท างานได้ตามเราต้องการ ผู้เขยน





โปรแกรมจะต้องรว่าจะให้โปรแกรมท าอะไร มข้อมลอะไร และต้องการอะไร

จากโปรแกรม รวมทั้งรปแบบการแสดงผลด้วย โดยทั่วไปจะมขั้นตอนการ


พัฒนาโปรแกรม ดังน้



 การก าหนดและวิเคราะหปญหา


 การเขยนผังงานและซโดโค๊ด




 การเขยนโปรแกรม


 การทดสอบและแก้ไขโปรแกรม



 การท าเอกสารและบ ารงรกษาโปรแกรม



แนะนาภาษาซ










ี่
 ภาษาทเปนโครงสราง


 ค าสั่งประกอบด้วยพจน์ (term) ซงจะมลักษณะเหมอนกับนพจน์ทางพีชคณต







 มส่วนขยายเปนค าหลัก (keyword) ในภาษาอังกฤษ เช่น if, else, for, do และ while

 สามารถใช้งานในระดับต า (low-level) ได้



 สามารถใช้กับงานด้านโปรแกรมระบบ (system programming เช่น เขยน

)


โปรแกรมระบบปฏบัตการ (operating system) หรอใช้กับงานทั่ว ๆ ไป

 สามารถย้ายไปท างานในเครองอนได้
ื่
ื่

ประวัตภาษาซ











 ภาษาซพัฒนาข้นมาในป 1970 โดย Dennis Ritchie แห่ง Bell Telephone





Laboratories, Inc. (ปจจบันคอ AT&T Bell Laboratories)

 ต้นก าเนดมาจากภาษา 2 ภาษา คือ ภาษา BCPL และ ภาษา B



 ภาษาซนั้นถกใช้งานอยู่ เพียงใน Bell Laboratories จนกระทั่งป 1978 Brian








Kernighan และ Ritchie นั้นเปนทรจักกันในชอของ "K&R C"







 ในกลางป 1980 ภาษาซก็กลายเปนภาษาทได้รบความนยม



โครงสร้างโปรแกรมภาษาซ








void main(void)
Preprocessor directive

{


Global Declarations Local Declarations



main function Statements ;



User define functions }



int function ()


{

User define functions Local Declarations






โครงสรางภาษาซประกอบดวยหลายสวน แต ่ Statements ;





ในการเขียนไมจ าเปนจะตองเขียนทุกสวน }




การใช้ Preprocessor Directive









 ทกโปรแกรมต้องม




 ใช้เรยกไฟล์ทโปรแกรมใช้ในการท างานร่วมกัน
 ใช้ก าหนดค่าคงทให้กับโปรแกรม





 เร่มต้นด้วยเครองหมาย #




 ทเราจะใช้กันม 2 directives คอ
 #include ใช้ส าหรบเรยกไฟล์ทโปรแกรมใชในการท างาน
ี่



 #define ใช้ส าหรบก าหนดมาโครทให้กับโปรแกรม




#include #define #undef #if



#ifdef #ifndef #else #elif


#endif #line #error #pragma

การใช้ #include








วิธการใช้งาน




#include <ชอไฟล์> หรอ #include ‚ชอไฟล์‛
ื่
ื่





ตัวอย่าง




#include <stdio.h> (เปนการเรยกใช้ไฟล์ stdio.h เข้ามาในโปรแกรม)




#include <mypro.h> (เปนการเรยกใช้ไฟล์ mypro.h เข้ามาในโปรแกรม)











< > จะเรยกไฟล์ใน directory ทก าหนดโดยตัวคอมไพล์เลอร

“ ” จะเรยกไฟล์ใน directory ทท างานอยู่ในปจจบัน




การใช้ #define









วิธการใช้งาน



#define ชอ ค่าทต้องการ







ตัวอย่าง




#define START 10 (ก าหนดค่า START = 10)



#define A 3*5/4 (ก าหนดค่า A=3*5/4)



#define pi 3.14159 (ก าหนดค่า pi = 3.14159)



#define sum(a,b) a+b


ี่
ี่
ี่
ี่
(ก าหนดค่า sum(ตัวแปรท1, ตัวแปรท2) = ตัวแปรท1+ตัวแปรท2


สวนประกาศ (Global Declarations)








 เปนการประกาศตัวแปรเพือใช้งานในโปรแกรม โดยตัวแปรนั้นสามารถ
ใช้ได้ในทกทในโปรแกรม

ี่



 เปนส่วนทใช้ในการประกาศ Function Prototype ของโปรแกรม

 ส่วนน้ในบางโปรแกรมอาจจะไม่มก็ได้






ตัวอย่าง




int summation(float x, float y) ; (ประกาศ function summation)





int x,y ; (ก าหนดตัวแปร x,y เปนจ านวนเต็ม)


float z=3; (ก าหนดตัวแปร z เปนจ านวนจรง)



สวนประกาศ (Global Declarations)






ตัวอย่าง





#include <stdio.h>


int feet,inches;

void main()


{


feet = 6;

inches = feet * 12;


printf("Height in inches is %d",inches);

}



ผลการท างาน




Height in inches is 72


ฟงก์ชันหลักของโปรแกรม (Main Function)









 ส่วนน้ทกโปรแกรมจะต้องม โดยโปรแกรมหลักจะเร่มต้นด้วย main() และ





ื่
ตามด้วยเครองหมายปกกาเปด ‘{’ และปกกาปด ‘}’
 ระหว่างปกกาจะประกอบไปด้วยค าสั่ง(Statement) ต่างๆ ทจะให้โปรแกรม



ท างาน


 แต่ละค าสั่งจะต้องจบด้วยเซมโคลอน ‘;’ (Semicolon)






#include <stdio.h>

void main(void)

{

...

Statement ;

}


ฟงก์ชันหลักของโปรแกรม (Main Function)






ตัวอย่าง





#include <stdio.h>


int feet,inches;

void main()


{


feet = 6;

inches = feet * 12;


printf("Height in inches is %d",inches);

}



ผลการท างาน




Height in inches is 72


การสร้างฟงก์ชันใช้งานเอง (User Define Function)











 สรางฟงก์ชันหรอค าใหม่ ข้นมาใช้งานตามทเราต้องการ





 ระหว่างปกกาจะประกอบด้วยค าสั่ง(Statement) ต่างๆ ทจะให้ฟงก์ชันท างาน

 สามารถเรยกใช้ภายในโปรแกรมได้ทกท

ี่
#include <stdio.h>
int function()
void main(void)

{

...
Statement ;

}

int function()

{
Statement ;

...

return (int value);
}


การสร้างฟงก์ชันใช้งานเอง (User Define Function)






ตัวอย่าง





#include <stdio.h>

int Feet2Inch(int);

int feet,inches;

void main()

{

feet = 6;

inches = Feet2Inch(feet);

printf("Height in inches is %d",inches);

}

int Feet2Inch(int f)

{ ผลการท างาน

return f*12;

} Height in inches is 72


การใช้ค าอธบาย (Program Comments)








 ใช้เขยนส่วนอธบายโปรแกรม (คอมเมนต์)


 ช่วยให้ผู้ศกษาโปรแกรมภายหลังเข้าใจการท างานของโปรแกรม





 ส่วนของค าอธบายจะถกข้ามเมอคอมไพล์โปรแกรม






การเขยนส่วนอธบายโปรแกรม (comments)ท าได้ 2 วิธคอ











// ส าหรบค าอธบายไปจนถงท้ายบรรทัด
และ





/* ค าอธบาย */ ลักษณะการใช้เหมอนวงเล็บนั้นเอง



การใช้ค าอธบาย (Program Comments)






ตัวอย่าง





#include <stdio.h> // Change Feet to Inches


void main() // main function

{ // Start


int feet,inches;


feet = 6; // feet  6

inches = feet * 12; // inches  feet * 12


printf("Height in inches is %d", inches);

// write inches


} // Stop

ผลการท างาน




Height in inches is 72

การใช้ printf()











เปนค าสั่งทใช้ในการแสดงผลออกทางจอภาพ โดยมรปแบบการใช้งานดังน้




printf(“control หรอ format string”, variable list …);





control หรอ format string









เปนสวนทใสขอความทจะแสดงผล และสวนควบคุมลักษณะการ







ี่
แสดงผล รวมทงบอกตาแหนงทตวแปรจะแสดงผล
variable list
ี่

เปนตวแปรทตองการจะแสดงผล ในกรณีทตองการแสดงขอความ ไม ่

ี่





จ าเปนตองมีสวนน้



โปรแกรมที่ 1











ื่
 สราง folder ชอ 517111/รหัสนักศกษา


 สรางไฟล์ hello.c โดยให้พมพ์ค าว่า hello world

 การใช้งาน turbo c



F2 Save


Alt+F9 Compile






Ctrl+F9 Compile & Run



Alt+F5 Output







 พมพ์ชอตัวเองเพ่มอกหนงบรรทัด





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








โปรแกรม




#include <stdio.h>

Backslash n

void main() { ข้นบรรทัดใหม่

printf(“Hello world\n");

printf(“Welcome to Computer Programming 1");

return ;
}




ผลการท างาน





Hello world
Welcome to Computer Programming 1

ค าแนะนา








โปรแกรม





#include <stdio.h>




main ()



{ clrscr(); เคลยรหน้าจอ

….




getch(); รอรบค่าจากคย์บอรด
}

การใช้ Control ด้วย Backslash







จากตวอยางท 3 จะเหนได้ว่าหากต้องการให้แสดงผลข้ามบรรทัดจะต้องเพิ่ม \n


ี่



ลงไป เรยกว่า backslash นอกจากน้ยังมตัวอนๆ เช่น





\n ข้นบรรทัดใหม่


\t เว้นระยะ 1 tab





ื่
ใส่ตัวอักษร hh เมอ hh เปนเลขฐานสบหก

\xhh
เช่น 41 = 'A', 42 = 'B'



ิ้
\a ส่งเสยงปบ

\\ แสดง \



\" แสดง "


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









โปรแกรม




#include <stdio.h>



main() {

printf("%d %5.2f %s", 12, 20.3, "Example");

}







ผลการท างาน




12 20.30 Example








%d %5.2f %s คอ รหัสควบคม

รหัสควบคุมลักษณะ (Format String)















%d พมพ์จ านวนเต็มฐานสบ





%u พมพ์เลขไม่มเครองหมาย


%f พมพ์เลขทศนยม




%e พมพ์ในรปจ านวนจรงยกก าลัง


%c พมพ์ตัวอักษรตัวเดยว



%s พมพ์ชดตัวอักษร (String)

ื่

%% พมพ์เครองหมาย %


%o พมพ์เลขฐานแปด




%x พมพ์เลขฐานสบหก


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







โปรแกรม




#include <stdio.h>

#define x 65

main()

{

printf("%d %c %o %x\n", x, x, x, x);

printf(“x = %d”, x);

}





ผลการท างาน




65 A 101 41

X = 65

การจัดการหน้าจอด้วยรหัสควบคุมลักษณะ













ในกรณทต้องการจัดการหน้าจอแสดงผลสามารถใช้ตัวเลขร่วมกันกับ
รหัสควบคมได้ เช่น




%5d หมายถง แสดงตัวเลขจ านวนเต็ม 5 หลักอย่างต า

%5.2f หมายถง แสดงตัวเลขจ านวนจ านวน 5 หลักอย่างต า และ


ทศนยม 2 ต าแหน่ง





คา %d %5d คา %f %5.2f


12 12 ___12 1.2 1.200000 _1.20



123 123 __123 1.234 1.234000 _1.23



1234 1234 _1234 12.345 12.345000 12.35



12345 12345 12345 123.456 123.456000 123.46

X in decimal = 65

โปรแกรมที่ 2 X in octadecimal = 101


X in Hexadecimal = 41

Y = 1.234


 สรางไฟล์ print.c โดย Y = 1.23e+00




 ก าหนด #define ดังต่อไปน้ CH = %C




จ านวนเต็ม X มค่า 65 SU = “Sipakorn university”





จ านวนจรง Y มค่า 1.23456



ตัวอักษร CH มค่า ‘C’



ชดตัวอักษร SU มค่า ‚Silpakorn university”




 พมพ์ค่าต่างๆ ทก าหนด ให้แสดงผลดังรป





การเก็บค่าในภาษา C










 ท าได้ 2 ลักษณะ คอ



 แบบค่าคงท (Constant)

 แบบตัวแปร (Variable)



 การสรางตัวแปร



 ต้องรว่าจะใช้ตัวแปรเก็บค่าอะไร

 ประกาศตัวแปรให้เหมาะสมกับค่าทจะเก็บ



 ชนดของตัวแปรหลักในภาษา C




 ตัวแปรทใช้เก็บอักขระ (Character variable)


 ตัวแปรทใช้เก็บเลขจ านวนเต็ม (Integer variable)



 ตัวแปรทใช้เก็บเลขจ านวนจรง (Float variable)

การประกาศตัวแปร












รปแบบของการประกาศตัวแปร










ชนดตัวแปร ชอตัวแปร;

ื่






int i; ประกาศ i ให้ชนดเปน integer



float realnum; ประกาศ realnum ให้มชนดเปน float






char ch; ประกาศ ch ให้ชนดเปน character

ชนดของตัวแปร









ประเภท ิ คาที่เก็บได ขนาด






ขอมูล ค าอธบาย (ไบต)




ตัวอักษร 1
char -128 ถง 127 1


ตัว



ตัวเลข
short -128 ถง 127 1


จ านวนเต็ม



ตัวเลข
int -32768 ถง 32767 2


จ านวนเต็ม



ตัวเลข
long -2 ถง 2 -1 4
32

32
จ านวนเต็ม



ตัวเลข
float 3.4E+/-38 (7 ต าแหน่ง) 4


ทศนิยม


ตัวเลข

double 1.7E+/-308 (15 ต าแหน่ง) 8

ทศนยม

การประกาศตัวแปรชนดเดียวกัน







 เราสามารถประกาศตัวแปรหลายๆตัว ที่มีชนดเดียวกันโดยใช้เพียง



ประโยค(statement) เดยวได้ โดยใช้รปแบบ





1. การประกาศทีละตัว เชน



int i;



int j;




int k;




2. การประกาศพรอมกันหลายตัว เชน int i, j, k;




ิ่
การประกาศตัวแปรพรอมใหคาเรมตน




 ในภาษา C ประโยค (statement) ของการประกาศตัวแปร สามารถ



ก าหนดค่าเริ่มต้นให้กับตัวแปรได้ทันที





โดยใช้รปแบบ ชนดตัวแปร ชื่อตัวแปร = คาเร่มต้น;







เช่น int i = 5;





 นอกจากนี้ยังสามารถประกาศ หลายๆ ตัวแปรในบรรทัดเดียว




กันได้อีก




เช่น int i = 5, k = 3, y;



หลักการตังช่อ (Identifier)





ื่
ชอ (Identifier)














ไอเดนตฟายเออร เปนชอทผู้ใช้ก าหนดข้นในโปรแกรม เช่น ชอค่าคงท






ชอตัวแปร ชอฟงก์ชัน เปนต้น
 ต้องข้นต้นด้วยตัวอักษรภาษาอังกฤษ (ตัวใหญ่หรอเล็กก็ได้) หรอขดล่าง ‘_’






 ตามด้วยตัวอักษรภาษาอังกฤษ ตัวเลข หรอขดล่าง (Underscore) ‘_’

 ไม่มช่องว่างหรอตัวอักษรพิเศษอนๆ เช่น ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’ เปนต้น




 ตัวพิมพ์ใหญ่และเล็กจะเปนคนละตัวกันเช่น NAME, name, Name, NamE

 ห้ามซ ้ากับค าสงวน Reserve Words ของภาษา C


 ห้ามตั้งชอซ ้ากับ Function ทอยู่ใน Library ของภาษา C



ค าสงวน Reserve Words ของภาษา C








auto double int struct


break else long switch



case enum register typedef


char extern return union


const float short unsigned



continue for signed void


default goto sizeof volatile


do if static While



asm _cs _ds _es


_ss cdecl far huge


interrupt near pascal _export



วีธการสรางตัวแปรและก าหนดค่า







#include <stdio.h> #include <stdio.h>


void main () void main ()

{ {


int age; int age = 20;


char sex; char sex = ‘ f ’;


float grade; float grade = 3.14;


char name[10] = “malee”


age = 20;


sex = ‘ f ’; printf(“you are %s\n”,name);


grade = 3.14; ...


} }



นพจน










 นพจนอาจประกอบดวย

 ตัวแปร a + b
x = y

 คาคงที่ c = a + b







 การเรยกใชฟงกชน x == y

++i

 หรอมีตัวด าเนนการรวมอยูก็ได





ตัวด าเนนการ








กลุ่มของตัวด าเนินการ ตัวด าเนินการ

ล าดับความส าคัญมาก
ตัวด าเนินการยูนาร ี - ++ -- ! sizeof (type)



คูณ หาร และหาเศษเหลือ * / %



บวกและลบ + -



ตัวด าเนินการเปรียบเทียบ < <= > >=



ตัวด าเนินการเทียบเท่า == !=



AND &&



OR ||



ตัวด าเนินการเงื่อนไข ? :



ล าดับความส าคัญน้อย ตัวด าเนินการก าหนดค่า = += -= *= /= %=

โปรแกรมที่ 3










 สรางไฟล์ triangle.c โดยให้


 รบค่าฐานเปนเลขจ านวนจรง







 รบค่าความสงเปนเลขจ านวนจรง




 ค านวนหาค่าพื้นทของสามเหลยม
 Area = ½ * ฐาน * สง


การใช้ scanf()















เปนค าสั่งทใช้ในการรบค่า โดยมรปแบบการใช้งานดังน้
scanf(“format string”, address list …);







format string






เปนสวนทใชในการใสรูปแบบของการรบขอมูล





address list




เปนต าแหนงของตวแปรทตองการจะเก็บขอมูล






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







โปรแกรม




#include <stdio.h>



void main() {

int x ;



scanf("%d",&x);

printf("%d %c", x, x);

return ;

}

ผลการท างาน




66 65
66 B 65 A


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








โปรแกรม




#include <stdio.h>



void main() {

char s1[80], s2[80] ;



scanf("%[0-9]%[a-zA-Z]", s1, s2);

printf("%s %s", s1, s2);

return ;

}

ผลการท างาน




1234test test1234

1234 test test


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









Input Base = 12.0 Input Base = 3.2

Input Height = 6.0 Input Height = 1.2
Area of triangle is 36.00 Area of triangle is 1.92




#include <stdio.h>



void main() {

float b,h,area ;

printf("Input Base = ");

scanf("%f",&b);

printf("Input Height = ");

scanf("%f",&h);

area = 0.5*b*h ;

printf("Area of triangle is %5.2f",area);

return ;

}

โปรแกรมที่ 4










 สรางไฟล์ circle.c โดยให้






 รบค่ารศมเปนเลขจ านวนจรง



 ก าหนดค่าคงท PI มค่า 3.14159

 ค านวนหาค่าพื้นทของวงกลม




 Area = PI* (รศม) 2


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









Input Radias = 12.0

Area of circle is 452.39






/* program to calculate area of a circle */

#include <stdio.h>

#define PI 3.14159

main()

{

float radius, area;

printf(“Input Radius = ?");

scanf("%f", &radius);

area = PI * radius * radius;

printf("Area of circle is %7.2f ", area);

}

โปรแกรมที่ 5










 สรางไฟล์ donut.c โดยให้





 รบค่ารศมของวงกลม 2 วง



 ก าหนดค่าคงท PI มค่า 3.14159

 ค านวนหาค่าพื้นทของวงกลมส่วนสเทา




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








#include <stdio.h>

#define PI 3.14159
main()

{

float radius1,radius2, area1, area2;
printf("Input outer radius =");

scanf(%f, &radius1);

printf("Input inner radius =");

scanf(%f, &radius2);
if (radius2 < radius1) {

area1 = PI * radius1 * radius1;

area2 = PI * radius2 * radius2;
printf("Area of donut is %5.2f", area1-area2);

}

}




จบโครงสรางภาษาซเบ้องต้น



















Question ?

คาถามเก่ยวกับ printf()











จากส่วนของโปรแกรม




yards = 8;

feet = yards * 3;

printf(“%d yards is \n”, yards);

Printf(“%d feet”, feet);





ผลการท างาน คอ ?





8 yards is

24 feet


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








โปรแกรม




#include <stdio.h>



void main() {

char s1[80], s2[80] ;



scanf("%[^0-9]%[^a-zA-Z\n]", s1, s2);

printf("%s %s", s1, s2);

return ;

}

ผลการท างาน




test1234 1234test

test 1234 1234


Click to View FlipBook Version