Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร...

49
C Programming Lecture no. 2: Overview of C Programming 885288 C Programming

Transcript of Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร...

Page 1: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

C Programming

Lecture no. 2:

Overview of C Programming

885288 C Programming

Page 2: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

2

ภาษา BCPL

ภาษา B

ภาษา C

บนเครือ่ง PDP-7 (UNIX) พ.ศ. 2513

พ.ศ. 2515

โดย เดนนชิ รทิชี ่

Basic Combined Programming Language

ประวตัคิวามเป็นมา

885288 C Programming

Page 3: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

3

ภาษาซ ี(C Language)

เป็นภาษาระดบัสงู

ไมข่ึน้กบัระบบปฏบิัตกิาร (OS)

ไมข่ึน้กบัชนดิของเครือ่งคอมพวิเตอร ์

เป็นภาษาโครงสรา้ง (Structure Language)

คณุสมบตั ิ

885288 C Programming

Page 4: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

4

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

1. สว่นประมวลผลกอ่น 2. สว่นประกาศสว่นกลาง 3. สว่นตน้แบบฟังกช์ัน่ 4. สว่นของฟังกช์ัน่

โครงสรา้งประกอบดว้ย สว่นประมวลผลกอ่น

สว่นประกาศสว่นกลาง

สว่นของฟังกช์นั

สว่นตน้แบบฟังกช์นั

885288 C Programming

Page 5: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

5

สว่นที ่1 เป็นสว่นทีร่ะบใุหซ้คีอมไพเลอรเ์ตรยีมการท างานที ่ก าหนดในสว่นนีไ้ว ้ โดยหนา้ค าส ัง่จะมเีครือ่งหมาย # เชน่

เป็นการระบใุหน้ าไฟล ์stdio.h มารวมกบัไฟลน์ี ้ เพือ่ทีจ่ะสามารถใชค้ าส ัง่ทีอ่ยูใ่นไฟลน์ีม้าใชง้านได ้ หรอื เป็นการก าหนดคา่คงทีใ่หก้บัตวัแปร START โดยใหม้คีา่เป็น 0 หรอื เป็นการก าหนดใหต้วัแปร temp มคีา่เทา่กบั 37

# include <stdio.h>

สว่นประมวลผลกอ่น

# define START 0

# define temp 37

885288 C Programming

Page 6: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

6

สว่นที ่2 declaration เป็นการก าหนดชนดิขอ้มลูทีจ่ะใชใ้น โปรแกรมซึง่ตวัแปรหรอืขอ้มลูตา่ง ๆ น ัน้จะตอ้งถกูประกาศ ในสว่นนีก้อ่น จงึจะสามารถน าไปใชใ้นโปรแกรมได ้ เชน่ เป็นการก าหนดวา่ตวัแปร stdno เป็นขอ้มลูชนดิจ านวนเต็ม หรอื interger ซึง่อาจไดแ้กค่า่ 0,4,-1,-3,…. เป็นตน้ เป็นการก าหนดวา่ตวัแปร score เป็นขอ้มลูชนดิเลขมจีดุ ทศนยิม (floating point)ซึง่อาจมคีา่ 0.23, 1.34 เป็นตน้

สว่นประกาศสว่นกลาง

int stdno;

float score;

885288 C Programming

Page 7: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

7

สว่นที ่3 เป็นสว่นทีใ่ชก้ าหนดวา่มฟีงักช์ ัน่อะไรบา้ง และมกีารประกาศพารามเิตอรอ์ยา่งไร เชน่ เป็นการประกาศฟงักช์ ัน่ตน้แบบส าหรบัพงักช์ ัน่ชือ่ main โดยมคีา่ทีส่ง่กลบัเป็นชนดิ interger และไมม่กีารสง่คา่เขา้ไปในฟงักช์ ัน่นี ้

สว่นประกาศตน้แบบฟงักช์ ัน่

int main ( void );

885288 C Programming

Page 8: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

8

สว่นที ่4 เป็นสว่นทีใ่ชก้ าหนดรายละเอยีดของแตล่ะฟงักช์ ัน่ วา่มลีกัษณะการท างานเป็นอยา่งไรบา้ง รบัคา่ใดเขา้ไปในฟงักช์ ัน่บา้ง และสง่คา่กลบัเป็นอะไร เชน่ เป็นการประกาศฟงักช์ ัน่ชือ่ main ตามฟงักช์ ัน่ตน้แบบ ส าหรบัพงักช์ ัน่ main นีไ้มม่กีารรบัคา่เขา้ในฟงักช์ ัน่ แตเ่มือ่ท างานเสร็จแลว้จะสง่คา่กลบัมาเป็น 0

สว่นประกาศฟงักช์ ัน่

int main ( void ) { printf ( “Hello World \n” ); return (0); }

885288 C Programming

Page 9: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

9

กฎเกณฑข์องโปรแกรมภาษาซ ี

ประกอบดว้ยสว่นยอ่ย ๆ โดยใชปี้กกา ({ }) เป็นตวัก าหนดขอบเขต ฟังกช์ัน่แรกตอ้งเป็น main() เสมอ ใชเ้ครือ่งหมาย ; (semi colon) เป็นตวัก าหนดการ สิน้สดุของค าสัง่ ใชอ้กัษรตวัเล็กในการเขยีนโปรแกรม ใชเ้ครือ่งหมาย , (comma) เป็นตวัคัน่ตวัแปรและ พารามเิตอร ์ ใชเ้ครือ่งหมาย /* */ เป็นการก าหนดขอ้ความ ทีไ่ม ่ ตอ้งการใหค้อมไพเลอรป์ฏบิตังิาน

กฎเกณฑ ์(Rules)

885288 C Programming

Page 10: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

10

# include <stdio.h>

int main ( void )

{

printf(“Hello, Good morning. \n”);

return ( 0 );

}

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

เป็นโปรแกรมส ัง่พมิพข์อ้ความ Hello, Good morning.

885288 C Programming

Page 11: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

Identifier

• Identifier คอื การตัง้ชือ่ส าหรับใชเ้ป็น variable, function, หรอื ชือ่อืน่ใดในโปรแกรม (user-defined item)

• Identifier เริม่ดว้ย A to Z หรอื a to z หรอื an underscore _ ตามดว้ย letters, underscores, และ digits (0 to 9)

• C ไมอ่นุญาตใหใ้ชเ้ครือ่งหมายวรรคตอน @, $, # and % ในการก าหนด identifiers

• C is a case sensitive programming language

885288 C Programming 11

Page 12: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

ตวัอยา่ง Identifiers

• mohd

• zara

• abc

• move_name

• a_123

• myname50

• _temp

• j

• a23b9

• retVal 885288 C Programming 12

Page 13: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

Keywords

885288 C Programming 13

• หา้มใชค้ าเหลา่นีใ้นการตัง้ชือ่ตวัแปร และ identifiers ตา่ง ๆ

Page 14: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

14

แบบขอ้มลูหรอืชนดิของตวัแปรตา่ง ๆ ทีก่ าหนดไว้ในภาษาซปีระกอบดว้ย char ชนดิของตวัอกัษรหรอือกัขระ int ชนดิจ านวนเต็มปกต ิ short ชนดิจ านวนเต็มปกต ิ long ชนดิจ านวนเต็มทีม่คีวามยาวเป็น 2 เทา่ unsigned ชนดิของเลขทีไ่มค่ดิเครือ่งหมาย float ชนดิเลขมจีดุทศนยิม double ชนดิเลขทีม่จีดุทศนยิมความยาว เป็น 2 เทา่

ชนดิและแบบของขอ้มลูในภาษาซ ี

885288 C Programming

Page 15: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

15

( )

Char 1 -128 to 127 or 0 to 255

Int 2 4 –32768 to 32767 -2,147,483,648 to 2,147,483,647

Unsigned int 2 4 0 to 65,535 0 to 4,294,967,295

Short 2 –32768 32767

Long 4 -2,147,483,648 to 2,147,483,647

Float 4 1.2E-38 to 3.4E+38

Double 8 2.3E-308 to 1.7E+308

Long double 10 3.4E-4932 to 1.1E+4932

ตารางแสดงเนือ้ทีใ่นหนว่ยความจ าของชนดิขอ้มลู

885288 C Programming

Page 16: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

ตวัอยา่งโปรแกรม #include <stdio.h>

#include <float.h>

int main()

{

printf("Storage size for float : %d \n", sizeof(float));

printf("Minimum float positive value: %E\n", FLT_MIN );

printf("Maximum float positive value: %E\n", FLT_MAX );

printf("Precision value: %d\n", FLT_DIG );

return 0;

}

885288 C Programming 16

Page 17: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

ตวัอยา่งโปรแกรม #include <stdio.h>

int main()

{

printf("Storage size for int : %d \n", sizeof(int));

return 0;

}

885288 C Programming 17

Page 18: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

18

ในการเขยีนโปรแกรม แบบขอ้มลูทีใ่ชจ้ะแบง่ออกเป็น 4 กลุม่ใหญ ่ๆ ดงันี ้ ขอ้มลูและตวัแปรชนดิอกัขระ ขอ้มลูและตวัแปรชนดิจ านวนเต็ม ขอ้มลูและตวัแปรชนดิเลขมจีดุทศนยิม ขอ้มลูและตวัแปรแบบสตรงิ

ชนดิและแบบของขอ้มลูในภาษาซ ี

885288 C Programming

Page 19: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

19

อกัขระแทนดว้ย char โดยอยูภ่ายในเครือ่งหมาย ‘ ’ เชน่ ‘a’ , ‘A’ , ‘9’ อกัขระพเิศษบางตวัไมส่ามารถใหค้า่ไดโ้ดยตรง แต ่ จะใหค้า่เป็นรหสั ASCII ซึง่จะเขยีนในรปูของเลข ฐานแปด เชน่ รหสั BELL แทนดว้ย ASCII 007 เขยีนแทนดว้ย BELL=‘\007’ หรอืรหสัควบคมุการ ข ึน้บรรทดัใหม ่ ตวัอกัขระทีก่ าหนดใหก้บัรหสั คอื n สามารถก าหนดเป็น newline = ‘\n’;

ชนดิขอ้มลูชนดิอกัขระ

885288 C Programming

Page 20: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

20

จ านวนเต็มในภาษาซสีามารถใชแ้ทนได ้4 รปูแบบ คอื int, short, long และ unsigned การก าหนดตวัแปรแบบ unsigned คอืจ านวนเต็ม ทีไ่มค่ดิเครือ่งหมาย ซึง่จะตอ้งใชค้วบคูก่บัรปูแบบ ขอ้มลูจ านวนเต็มชนดิอืน่ คอื int , short หรอื long เชน่

ชนดิขอ้มลูของเลขจ านวนเต็ม

unsigned int unsigned short

885288 C Programming

Page 21: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

21

การก าหนดขนดิขอ้มลูเลขจดุทศนยิมสามารถ ก าหนดได ้2 แบบ คอื float , double โดย double เก็บคา่ไดเ้ป็น 2 เทา่ของ float ตวัเลข

แบบนีน้ยิมใชก้บังานทางวทิยาศาสตรท์ีต่อ้งการ ความละเอยีดในการเก็บคา่ การเก็บขอ้มลูในรปูแบบนี ้ คอื เก็บแบบเอ็กโพเนนซ ์ ดงัตวัอยา่งตอ่ไปนี ้ ตวัเลข แสดงแบบเอ็กโพเนนซ ์ แสดงแบบวทิยาศาสตร ์ 9,000,000,000 9.0*109 9.0e9 345,000 3.45*105 3.45e5 0.00063 6.3*10-4 6.3e-4 0.00000924 9.24*10-6 9.24e-6

ชนดิขอ้มลูของเลขมจีดุทศนยิม

885288 C Programming

Page 22: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

22

สตรงิหมายถงึการน าตวัอกัขระหลายตวัมาประกอบ กนัเป็นขอ้ความ จะเรยีกวา่ array หรอืแถวล าดบัของตวัอกัขระ น ัน่เอง ในการใชง้านชนดิขอ้มลูแบบสตรงิน ัน้อกัขระตวั สดุทา้ยจะเก็บรหสั null คอื \0 หมายถงึจดุจบของ ขอ้ความ เชน่

ชนดิขอ้มลูแบบสตรงิ

H e l l o \0

1 2 3 4 5 6

885288 C Programming

Page 23: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

23

ตวัแปร คอื การจองเนือ้ทีใ่นหนว่ยความจ าและต ัง้ชือ่ไว ้เพือ่เรยีกใชง้านในขณะปฏบิตังิาน การก าหนดชือ่ตวัแปร มหีลกัการดงันี ้ 1. ตอ้งขึน้ตน้ดว้ยตวัอกัษร 2. หา้มใชเ้ครือ่งหมายทางคณิตศาสตรใ์นชือ่

ตวัแปร 3. สามารถใชเ้ครือ่งหมาย underline ‘_’ ได ้ 4. หา้มใช ้reserved words เชน่ int, float,etc.

ตวัแปรในภาษาซ ี

885288 C Programming

Page 24: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

24

การประกาศชือ่ตวัแปรในภาษาซสีามารถท าไดด้งันี ้

การประกาศตวัแปรในภาษาซ ี

<ชนดิขอ้มลู> <ชือ่ตวัแปร>;

ตวัอยา่งเชน่

char ch;

int num;

float width;

double height;

unsigned int a;

long int b;

885288 C Programming

Page 25: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

25

การเขยีนประโยคค าส ัง่ในภาษาซ ีแตล่ะค าส ัง่จะ ประกอบดว้ย ตวัระบ ุ(Identifier) ค าสงวน ตวัแปร ชือ่ฟงักช์ ัน่ และตวัด าเนนิการ (operator) ตา่ง ๆ แตล่ะค าส ัง่จบลงดว้ยเครือ่งหมายอฒัภาค (;) เชน่

การเขยีนประโยคค าส ัง่

printf ( “Hello” ); printf ( “ C \n” );

อาจเขยีนในบรรทดัเดยีวกนัก็ได ้เชน่

printf ( “Hello” );printf ( “ C \n” );

ท ัง้สองแบบใหผ้ลลพัธเ์หมอืนกนั

885288 C Programming

Page 26: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

26

การแสดงผลลพัธใ์นภาษาซจีะใชฟ้งักช์ ัน่ printf โดยทีฟ่งักช์ ัน่ printf มรีปูแบบดงันี ้

o สว่นควบคมุการพมิพ ์จะเป็นขอ้ความและรปูแบบ ของการพมิพโ์ดยอยูใ่นเครือ่งหมาย “ ” o อารก์วิเมนต ์ เป็นสว่นทีจ่ะน าขอ้มลูมาพมิพ ์ ตามรปูแบบทีก่ าหนดมาในสว่นควบคมุการพมิพ ์

การแสดงผลลพัธใ์นภาษาซ ี

printf( สว่นควบคมุการพมิพ,์ อารก์วิเมนต,์ …)

885288 C Programming

Page 27: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

27

รปูแบบการพมิพส์ าหรบัตวัเลขมดีงันี ้ %d พมิพข์อ้มลูจ านวนเต็มดว้ยเลขฐานสบิ %o พมิพข์อ้มลูดว้ยเลขฐานแปด %x พมิพข์อ้มลูดว้ยเลขฐานสบิหก %u พมิพข์อ้มลูดว้ยเลขฐานสบิแบบไมค่ดิ เครือ่งหมาย %e พมิพข์อ้มลูดว้ยตวัเลขแบบวทิยาศาสตร ์ เชน่ 2.13e45 %f พมิพข์อ้มลูดว้ยตวัเลขมจีดุทศนยิม %g พมิพข์อ้มลูดว้ยรปูแบบ %e หรอื %f โดยเลอืกแบบทีส่ ัน้ทีส่ดุ

รปูแบบทีใ่ชก้ าหนดการพมิพใ์น printf

885288 C Programming

Page 28: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

28

รปูแบบการพมิพส์ าหรบัสตรงิมดีงันี ้ %c พมิพด์ว้ยตวัอกัษรตวัเดยีว %s พมิพด์ว้ยขอ้ความ ตวัอยา่งการค าส ัง่ printf เชน่

รปูแบบทีใ่ชก้ าหนดการพมิพใ์น printf

printf ( “%d %f %s“ , 20 , 25.5 , “Hello” );

คูท่ ี ่1

คูท่ ี ่2

คูท่ ี ่3

885288 C Programming

Page 29: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

29

เครือ่งหมายส าหรบัปรบัเปลีย่นรปูแบบของขอ้มลู ในการแสดงผล

o เครือ่งหมายลบ ใหพ้มิพข์อ้มลูชดิขอบซา้ย (ปกตขิอ้มลูท ัง้หมดจะพมิพช์ดิขวา)

o สตรงิตวัเลข ระบคุวามกวา้งของฟิลด ์o จดุทศนยิม เป็นการก าหนดความกวา้งของ จดุทศนยิม

ตวัอยา่งการใชเ้ครือ่งหมายปรบัเปลีย่นรปูแบบของ การแสดงผล

เครือ่งหมายปรบัเปลีย่นรปูแบบขอ้มลู

printf ( “%3d %-6.0f “ , 20 , 25.5 );

885288 C Programming

Page 30: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

30

การรบัขอ้มลูเขา้มาใชง้านในภาษาซจีะใชฟ้งักช์ ัน่ scanf รปูแบบของ scanf ( )

o สว่นควบคมุขอ้มลู เป็นการก าหนดรปูแบบ ขอ้มลูในเครือ่งหมาย “ ” o อารก์วิเมนต ์ เป็นสว่นทีจ่ะน าขอ้มลูมาเก็บ (ในตวัแปร) ซึง่ชนดิของขอ้มลูตอ้งตรงตาม รปูแบบทีก่ าหนดในสว่นควบคมุขอ้มลู

การรบัขอ้มลูเขา้ในภาษาซ ี

scanf( สว่นควบคมุขอ้มลู, อารก์วิเมนต,์...)

885288 C Programming

Page 31: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

31

การก าหนดลกัษณะอารก์วิเมนตม์ไีด ้2 แบบดงันี ้o ถา้ขอ้มลูน ัน้อาจจะน าไปใชใ้นการค านวณ

จะใสเ่ครือ่งหมาย & หนา้ตวัแปร o ถา้ขอ้มลูน ัน้เป็นขอ้ความทีจ่ะน าไปเก็บไวใ้นตวั แปรเลยไมจ่ าเป็นตอ้งใสเ่ครือ่งหมาย & หนา้ ตวัแปร

ตวัอยา่งการใชฟ้งักช์ ัน่ scanf

การรบัขอ้มลูเขา้ในภาษาซ ี

scanf ( “%d “,&num);

scanf ( “%s “,str);

885288 C Programming

Page 32: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

32

เครือ่งหมายทีใ่ชค้ านวณในภาษาซเีรยีกวา่ ตวัด าเนนิการ (Operator) มดีงันี ้

เครือ่งหมายทีใ่ชค้ านวณในภาษาซ ี

ตวัด าเนนิการ ความหมาย ตวัอยา่ง ผลลพัธ ์

+ การบวก 6 + 8 14

- การลบ 7 – 5 2

* การคณู 3 * 4 12

/ การหาร 8/2 4

- ลบ (ยนูารเีครือ่งหมายลบ) -5 -5

% โมดลูสั

(หาเศษเหลอืจากการหาร)

7 % 2 1

4 % 2 0

885288 C Programming

Page 33: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

33

ท าไดโ้ดยระบชุนดิทีต่อ้งการเปลีย่นภายใน เครือ่งหมาย ( ) แลว้วางหนา้ตวัแปรหรอืขอ้มลู ทีต่อ้งการเปลีย่นแปลงชนดิ ตวัอยา่ง ถา้ในโปรแกรมภาษาซมีกีารประกาศ ตวัแปรเป็น ตอ้งการเปลีย่นตวัแปร float ไปเป็น integer ท าไดด้งันี ้

การเปลีย่นชนดิของขอ้มลู

float money;

(int) money;

885288 C Programming

Page 34: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

34

นพิจนก์ าหนดคา่ (Assignment expression) เครือ่งหมายทีใ่ชก้ าหนดคา่คอื = โดยเป็นการ ก าหนดคา่ทางขวาของเครือ่งหมาย ใหก้บัตวัแปร ทีอ่ยูท่างซา้ย เชน่

นพิจนก์ าหนดคา่

j = 7+2;

k = k + 4;

หรอื

885288 C Programming

Page 35: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

35

นพิจนก์ าหนดคา่

สญัลกัษณ ์ ความหมาย

> มากกวา่

< นอ้ยกวา่

>= มากกวา่หรอืเทา่กบั

<= นอ้ยกวา่หรอืเทา่กบั

== เทา่กบั

!= ไมเ่ทา่กบั

885288 C Programming

Page 36: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

36

ความแตกตา่งของเครือ่งหมาย = และ == o เครือ่งหมาย = เป็นตวัก าหนดคา่ o เครือ่งหมาย == เป็นเครือ่งหมายเปรยีบเทยีบ

ตวัอยา่งเชน่ หมายถงึ เป็นการก าหนดคา่ใหก้บัตวัแปร point ใหม้คีา่เทา่กบั 44 หมายถงึ เป็นการตรวจสอบวา่คา่ point มคีา่เทา่กบั 44 หรอืไม ่

นพิจนก์ าหนดคา่

point = 44;

point == 44;

885288 C Programming

Page 37: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

37

เครือ่งหมายและนพิจนเ์ปรยีบเทยีบแบบ ตรรกศาสตร ์ && หมายถงึ และ (and) | | หมายถงึ หรอื (or) ! หมายถงึ ไม ่ (not) ตวัอยา่งเชน่ จะไดค้า่ความจรงิเป็นจรงิก็ตอ่เมือ่ a และ b เป็นจรงิท ัง้คู ่ จะไดค้า่ความจรงิเป็นเท็จก็ตอ่เมือ่ a และ b เป็นเท็จท ัง้คู ่

เครือ่งหมายและนพิจนแ์บบตรรกศาสตร ์

a && b

a || b

885288 C Programming

Page 38: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

38

สามารถใชเ้ครือ่งหมายตอ่ไปนีแ้ทนการเพิม่หรอื ลดคา่ของตวัแปร ++ เป็นการเพิม่คา่ใหก้บัตวัแปรทลีะ 1 -- เป็นการลดคา่ตวัแปรทลีะ 1 ตวัอยา่งเชน่ ++n เป็นการเพิม่คา่ n อกี 1 --n เป็นการลดคา่ n ลง 1 ความแตกตา่งระหวา่ง n++ และ ++n เชน่ n = 5; x = n++; จะไดค้า่ x เทา่กบั 5 แลว้คา่ n เทา่กบั 6 แตถ่า้ x = ++n; จะไดค้า่ x เทา่กบั 6

การเพิม่คา่และลดคา่ตวัแปร

885288 C Programming

Page 39: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

ค่าคงท่ีในภาษาซี

• คา่คงที ่(constant) คอื คา่ทีเ่ก็บไวต้ายตวัในโปรแกรม ซึง่จะไมส่ามารถเปลีย่นแปลงไดใ้นระหวา่งการประมวลผลของโปรแกรม

– Integer constant

– Floating constant

– Character constant

– String constant

885288 C Programming 39

Page 40: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

Integer Constant

• An integer literal can be a decimal, octal, or hexadecimal constant.

• A prefix specifies the base or radix: 0x or 0X for hexadecimal, 0 for octal, and nothing for decimal.

• 12 /* Legal */

• 215u /* Legal */

• 0xFeeL /* Legal */

• 078 /* Illegal: 8 is not an octal digit */

• 85 /* decimal */

• 0213 /* octal */

• 0x4b /* hexadecimal */

• 30 /* int */

• 30u /* unsigned int */

• 30l /* long */

• 30ul /* unsigned long */

885288 C Programming 40

Page 41: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

Floating Constant

• A floating-point literal has an integer part, a

decimal point, a fractional part, and an exponent

part.

• 3.14159 /* Legal */

• 314159E-5L /* Legal */

• 510E /* Illegal: incomplete exponent */

• 210f /* Illegal: no decimal or exponent */

• .e55 /* Illegal: missing integer or fraction */

885288 C Programming 41

Page 42: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

Character constants

• Character literals are enclosed in single quotes, e.g., 'x' and can be stored in a simple variable of char type. – \\ \ character

– \' ' character

– \" " character

– \? ? character

– \a Alert or bell

– \b Backspace

– \f Form feed

– \n Newline

– \r Carriage return

– \t Horizontal tab

– \v Vertical tab

– \ooo Octal number of one to three digits

885288 C Programming 42

Page 43: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

ตวัอยา่งโปรแกรม #include <stdio.h>

int main()

{

printf("Hello\tWorld\n\n");

return 0;

}

885288 C Programming 43

Page 44: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

String Constant

• String literals or constants are enclosed in double quotes "".

• A string contains characters that are similar to character literals: plain characters, escape sequences, and universal characters. – "hello, dear“

885288 C Programming 44

Page 45: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

Defining Constants

• Using #define preprocessor.

• Using const keyword.

885288 C Programming 45

Page 46: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

#include <stdio.h>

#define LENGTH 10

#define WIDTH 5

#define NEWLINE '\n'

int main()

{

int area;

area = LENGTH * WIDTH;

printf("value of area : %d", area);

printf("%c", NEWLINE);

return 0;

} 885288 C Programming 46

Page 47: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

#include <stdio.h>

int main()

{

const int LENGTH = 10;

const int WIDTH = 5;

const char NEWLINE = '\n';

int area;

area = LENGTH * WIDTH;

printf("value of area : %d", area);

printf("%c", NEWLINE);

return 0;

} 885288 C Programming 47

Page 48: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

แบบฝึกหดั

• ใหน้สิติเขยีนโปรแกรมภาษาซรัีบชือ่และรหสันสิติจากทางแป้นพมิพ ์จากนัน้ใหว้าดรปูกราฟิก เชน่ ดอกไม ้อาคาร รถยนต ์เป็นตน้ โดยรปูทีแ่สดงออกมานัน้ตอ้งมคีวามสงูอยา่งนอ้ย 10 บรรทัด และ พมิพช์ือ่และรหสันสิติทีรั่บเขา้มาในแถวทา้ยสดุของการแสดงผลดว้ย (ชือ่แฟ้ม st/pyXX.c)

• จงเขยีนโปรแกรมเพือ่ค านวณคา่พืน้ทีส่ามเหลีย่มมมุฉาก (ชือ่แฟ้ม st/pyXX.c)

• จงเขยีนโปรแกรมเพือ่ค านวณคา่พืน้ทีว่งกลม (ชือ่แฟ้ม st/pyXX.c)

885288 C Programming 48

Page 49: Lecture no. 2: Overview of C Programmingkrisana/885288/... · 2015-09-07 · ตัวแปร คอื การจองเนอื้ทใี่นหนว่ยความจาและตงั้ชอื่ไว้

END

885288 C Programming