29
หน่วยที2 การเขียนโปรแกรมภาษาซี วัตถุประสงค์ 1. เพื่อให้สามารถรู้ความหมายข้อมูลและตัวแปรในโปรแกรมภาษาซี 2. เพื่อให้สามารถรู้เครื่องหมายและการดาเนินการในโปรแกรมภาษาซี 3. เพื่อให้สามารถรู้คาสั่งการแสดงผลและการรับข้อมูล เนื้อหาสาระ 2. การเขียนโปรแกรมภาษาซี 2.1 ความหมายข้อมูลและตัวแปรโปรแกรมภาษาซี 2.1.1 ชนิดของข้อมูลในโปรแกรมภาษาซี 2.1.2 ชนิดของตัวแปรโปรแกรมภาษาซี 2.2 เครื่องหมายและการดาเนินการในโปรแกรมภาษาซี 2.2.1 เครื่องหมายในการคานวณคณิตศาสตร์ (Arithmetic Operators) 2.2.2 เครื่องหมายในการเปรียบเทียบ (Relational Operators) 2. 2.3 เครื่องหมายในทางตรรกะ (Logical Operators) 2.2.4 เครื่องหมายการเพิ่มค่าและลดค่า (Increment and Decrement Operation) 2.2.5 เครื่องหมายบิตไวท์ (Bit wise Operation) 2.2.6 เครื่องหมายการกาหนดค่า (Assignment Operation ) 2.2.7 ลาดับการทางานของเครื่องหมาย (Precedence) 2.3 การแสดงผลและการรับข้อมูล 2.3.1 แสดงผลทางหน้าจอด้วย printf( ),putchar( ), puts( ) 2.3.2 รับข้อมูลจากคีย์บอร์ดด้วย scanf(),getchar( ),getch( ),gets( )

Programming With C Language

  • Upload
    vipaj

  • View
    45

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Programming With C Language

หนวยท 2 การเขยนโปรแกรมภาษาซ

วตถประสงค

1. เพอใหสามารถรความหมายขอมลและตวแปรในโปรแกรมภาษาซ 2. เพอใหสามารถรเครองหมายและการด าเนนการในโปรแกรมภาษาซ 3. เพอใหสามารถรค าสงการแสดงผลและการรบขอมล

เนอหาสาระ

2. การเขยนโปรแกรมภาษาซ

2.1 ความหมายขอมลและตวแปรโปรแกรมภาษาซ 2.1.1 ชนดของขอมลในโปรแกรมภาษาซ

2.1.2 ชนดของตวแปรโปรแกรมภาษาซ 2.2 เครองหมายและการด าเนนการในโปรแกรมภาษาซ 2.2.1 เครองหมายในการค านวณคณตศาสตร (Arithmetic Operators) 2.2.2 เครองหมายในการเปรยบเทยบ (Relational Operators)

2.2.3 เครองหมายในทางตรรกะ (Logical Operators) 2.2.4 เครองหมายการเพมคาและลดคา (Increment and Decrement Operation) 2.2.5 เครองหมายบตไวท (Bit wise Operation)

2.2.6 เครองหมายการก าหนดคา (Assignment Operation )

2.2.7 ล าดบการท างานของเครองหมาย (Precedence)

2.3 การแสดงผลและการรบขอมล

2.3.1 แสดงผลทางหนาจอดวย printf( ),putchar( ), puts( )

2.3.2 รบขอมลจากคยบอรดดวย scanf(),getchar( ),getch( ),gets( )

Page 2: Programming With C Language

2

2.1 ความหมายขอมลและตวแปรโปรแกรมภาษาซ การเขยนโปรแกรมภาษาซ นน สงแรกทจะตองท ากคอ ตองมการเตรยม ‚ ขอมล ‛ และหลงจากทมการเตรยมขอมลเสรจเรยบรอยแลว ตอมากคอจะตองรถงวธการน าขอมลเหลานมาใชในโปรแกรมภาษาซ ซงกคอ การสรางตวแปรหรอการประกาศคาตวแปร โดยในหนวยนจะกลาวถงขอมลและตวแปรทใชในภาษาซ รวมทงการประกาศคาตวแปรตางๆ ของภาษาซ ดวย ความหมายของขอมลในโปรแกรมภาษาซ ทมความเกยวของกบปญหาในงานทตองท า และตองน ามาใชในการแกโจทยปญหา หรอน ามาใชในการเขยนโปรแกรมนนเอง เชน ถาตองการเขยนโปรแกรมคนหาขอมลของนกศกษา ขอมลทเกบรวบรวมเพอใชในการเขยนโปรแกรมมตงแต รหสนกศกษา, ชอนกศกษา, สาขาทเรยน, ประวตสวนตวของนกศกษา (วน เดอน ปเกด อาย, เพศ), ระยะเวลาในการเรยน (เรยน 4 ป หรอเรยนเทยบโอน 3 ป), ระดบชนทก าลงศกษา เปนตน ขอมลเหลานถอวาเปนขอมลส าหรบปญหา แตในการแกโจทยปญหา ไมไดน าขอมลทไดเกบรวบรวมมาใชทงหมด แตเลอกเฉพาะขอมลทมประโยชนและน าไปใชในการเขยนโปรแกรมทตองการเทานน ถาตองการเขยนโปรแกรมภาษาซ ขนมา กควรทจะทราบวาในโปรแกรมภาษาซ มขอมลอยกชนดแตละชนดมความหมายและมรายละเอยดอยางไรบาง เพอทจะพจารณาถงปญหาในงานทจะตองแกไข และจะน าขอมลใดทเกบรวบรวมมาใชบาง กอนการเขยนโปรแกรมตองก าหนดจดประสงคของโปรแกรมกอน ดงนนขอมล หมายถงสงทตองทราบกอนทจะเขยนโปรแกรม วาจะสรางสงทไดจากโปรแกรมขนมาเพอประโยชนอะไร หรอเขยนโปรแกรมขนมาเพอใชในงานประเภทอะไร เพราะจดประสงคหลกของการเขยนโปรแกรมไมวาเปนการเขยนโปรแกรมภาษาอะไรกตาม จดประสงคคอ การท าใหงานทตองการส าเรจตามเปาหมายทไดก าหนดเอาไว 2.1.1 ชนดของขอมลในภาษาซ ขอมลทมความหมายและใชงานในโปรแกรมภาษาซนน สามารถแบงตามลกษณะของขอมลไดเปน 6 ชนด รายละเอยดของขอมลแตละประเภท มดงน 1.ขอมลชนดตวเลขจ านวนเตม (Integer) ส าหรบขอมลชนดตวเลขจ านวนเตมในโปรแกรมภาษาซ กคอ ตวเลขจ านวนเตมปกตทวไป (Integer) ซงเปนจ านวนเตมบวก จ านวนเตมศนย หรอจ านวนเตมลบ โดยทวไปแลวนนขอมลชนดตวเลขจ านวนเตมจะแบงเปน 2 ชนด คอ Short ซงมขนาด 2 ไบท มชวงอยท 32,768 ถง +32,767 และ Long ซงมขนาด 4 ไบท มชวงอยท –2,147,438,648 ถง +2,147,438,647 ขอมลชนดตวเลขจ านวนเตมนสามารถน าไปใชในการค านวณได ตวอยางขอมลชนดตวเลขจ านวนเตม ไดแก 9, 779955, 900, -3, 0, -66, -4655 เปนตน 2.ขอมลชนดตวเลขจ านวนจรง (Float) ส าหรบขอมลชนดตวเลขจ านวนจรงในโปรแกรมภาษาซ กคอ ตวเลขทมจดทศนยม โดยอาจจะเปนเลขทศนยมชนดคงท หรอทศนยมไมรจบ

Page 3: Programming With C Language

3

หรอทศนยมทอยในรป E (หรอ e) ยกก าลงกได ซงขอมลชนดตวเลขจ านวนจรงสามารถแบงออกไดเปน 3 ชนด คอ Float, Double, Long Double ขอมลชนดตวเลขจ านวนจรงนสามารถน าไปใชในการค านวณได ตวอยางขอมลชนดตวเลขทศนยม ไดแก 4.00, 17.55, -8.00, -1.2E, 9.7e12, 5.55555..., 7.77777... เปนตน 3. ขอมลชนดเลขฐานแปด (Octal) นอกจากระบบเลขฐานสบทใชกนเปนประจ าในชวตประจ าวนแลว คอมพวเตอรยงใชระบบเลขฐานแปดในการท างานดวย ซงระบบเลขฐานแปด กคอ ระบบทมตวเลขอยเพยง 8 ตว กคอ 0-7 เรยงสลบกนโดยโดยไมม 8 และ 9 เชน 125, 759, 552 สวนใหญแลวจะมการเขยนเลข 8 ตอทายจ านวนเพอบอกใหรวาเปนเลขของระบบเลขฐานแปด เชน 1738, 5228, 5778 เปนตน ดงนนขอมลชนดเลขฐานแปดจงมความหมายในโปรแกรมภาษาซ เพราะคอมพวเตอรสามารถใชระบบเลขฐานแปดในการท างานใหกบงานทเราตองการท าได ซงถาตองการเขยนเลขฐานแปดในโปรแกรมภาษาซ จะตองเขยนเลขศนย (0) น าหนาเลขในระบบเลขฐานแปดเสมอ เชน 0123, 0597, 0102, 09 เปนตน ขอมลชนดเลขฐานแปดนสามารถน าไปใชในการค านวณไดเชนเดยวกบ 2 ขอมลทกลาวมาแลว 4. ขอมลชนดเลขฐานสบหก (Hexadecimal) ระบบเลขฐานสบหกกคอ ระบบทมตวเลขอยในระบบ 16 ตว คอ 0-15 ซงเขยนออกมาไดดงน 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F ส าหรบตวเลข 10-15 จะใชเปนตวอกษร A-F แทน เชน 987, 999, 259, A (10), B (11) เปนตน โดยทวไปแลวจะเขยนเลข 16 หอยตอทายจ านวนเพอบอกใหรวาเปนเลขของระบบเลขฐานแปด เชน A516 , 9B916 , 9E116 เปนตน เลขฐานสบหกเปนระบบเลขฐานอกชนดหนงทคอมพวเตอรใชงานกบงานทตองการท า ดงนนขอมลชนดเลขฐานสบหกจงมความหมายในโปรแกรมภาษาซ และสามารถน ามาใชในการค านวณได ส าหรบการเขยนขอมลชนดเลขฐานสบหกในโปรแกรมภาษาซ ใหเขยนเลขศนยและตว X น าหนาเลขในระบบฐานสบหก ตวอยางขอมลชนดเลขฐานสบหกในโปรแกรมภาษาซ ไดแก 0X99, 0X05, 0X22 เปนตน 5. ขอมลชนดตวอกขระ (Character) ขอมลชนดตวอกขระกคอ ตวอกษรหรอสญลกษณอนๆ ทมความหมาย ขอมลชนดตวอกขระเปนขอมลทใชหนวยความจ าหลกในคอมพวเตอรนอยทสด คอ 1 byte หรอมคาเทากบความยาว 1 ตวอกษร ซงมชวงอยท –128 ถง +127 (Unsigned) ขอมลชนดนสามารถเปนไดตงแต ตวอกษร A–Z ,a-z ,0-9 หรอสญลกษณอนๆ ทมความหมาย ขอมลชนดตวอกขระ เชน { , \n , # เปนตน โดยขอมลชนดตวอกษรจะตองเขยนไวภายในเครองหมาย‘ ’ (Single Quote) ตวอยาง การเขยนขอมลชนดตวอกขระในโปรแกรมภาษาซ เชน ‘C’, ‘{’, ‘\n’, ‘#’, ‘@’ เปนตน

ขอมลชนดอกขระสามารถน ามาใชในการค านวณไดเหมอนกบขอมลชนดตวเลข โดย อกขระ 1 ตวมทงคาในระบบฐานแปด ฐานสบ และฐานสบหก ซงการทตวแปรภาษาจะน าคาในระบบเลขฐานใดไปค านวณนน ขนอยกบวาตองการผลลพธออกมาเปนคาในระบบเลขฐานใด

Page 4: Programming With C Language

4

6.ขอมลชนดขอความ (String) ขอมลชนดขอความกคอ อกขระทมความยาวมากกวา 1 ตวเรยงตอกนเปนขอความ โดยขอมลชนดขอความตองเขยนอยภายใตเครองหมาย ‚ ‛ (Double quote) เชน ‚ Program C ‛, ‚ Technology ‛, ‚ Computer ‛ เปนตน ส าหรบขอมลชนดขอความไมสามารถน าไปใชในการค านวณได ความหมายของตวแปรโปรแกรมภาษาซ

เมอเตรยมขอมลส าหรบการเขยนโปรแกรมไวเรยบรอยแลว การทจะน าขอมลทเตรยมไวมาใชในโปรแกรม จะตองท าใหตวแปรภาษาซ รจกขอมลทเตรยมไวเสยกอนถงจะใชงานได ซงวธทจะท าใหตวแปรภาษาซรจกขอมล กคอ การสรางตวแปรส าหรบขอมลเหลานนขนมา 1.ตวแปร(Variable) หมายถง ชอของหนวยความจ าหลก (RAM) ในแตละต าแหนงของเครองคอมพวเตอรทไดตงขน เพอท าหนาทในการจองพนทส าหรบเกบขอมลทไดเตรยมเอาไว และเมอใดทตองการทจะเรยกขอมลทเกบไวในหนวยความจ าหลกขนมาใชงาน กตองเรยกผานชอตวแปร ยกตวอยางเชน ถาสรางตวแปรขนมา 1 ตว โดยใชชอวา name ส าหรบเกบชอบคคล ถาชอบคคลทตองการเกบ คอ May เมอตองการน าชอ May มาใชงานเพยงแคเรยกชอ name ซงตวแปรภาษาซ จะแปลความหมายไดถกตองวา name คอการน าชอ May ทเกบไวในหนวยความจ าหลกมาใชงาน หรอถาสรางตวแปรโดยตงชอวา number เพอเกบขอมลตวเลข 9 และเมอใดทตองการน าคาตวเลข 9 ออกมาใชงาน กตองเรยกผานตวแปร number เพราะในเบองตนไดกลาวไวแลววา ตวแปรภาษาซ จะแปลความหมายวา เมอเรยกใช number กตอเมอตองการน าจ านวน 9 ทเกบไวในหนวยความจ าหลกมาใชงานนนเอง 2.คาคงท (Constant) คอ การก าหนดคาใหกบโปรแกรม ซงมกใชรวมกบการก าหนดคาใหกบตวแปร หรอใชในรปแบบการก าหนด ดงน

# define ชอคาคงท คาคงท ตวอยาง # define Max 99 2.1.2 ชนดของตวแปรในภาษาซ ตวแปรทใชในโปรแกรมภาษาซ นนสามารถแบงออกไดเปน 2 ประเภท คอ ตวแปรพนฐาน (Scalar) ซงตวแปรประเภทนสามารถใชเกบขอมลไดเพยงคาเดยว เชน ถาสรางตวแปรพนฐานขนมา 1 ตว โดยใชชอวา num เพอเกบคาตวเลข 9 จะเหนไดวาสามารถเกบขอมลไดเพยง 1 คาเทานน คอ ตวเลข 9 แตถาเปนตวแปรประเภทตวแปรชด (Array) ตวแปรประเภทนจะใชเกบขอมลไวไดหลายคาภายในตวแปรเดยว เชน ถาสรางตวแปรชดขนมา 1 ตว โดยใชชอวา Array[5] ขนมาเพอเกบตวเลข 1, 2, 3, 4 และ 5 จะเหนไดวาถาเกบขอมลในตวแปรชดแลว สามารถทจะเกบขอมลไดมากกวา 1 คา ซงถาดจากตวอยางแลวนน เพยงแคสรางตวแปรทมชอวา Array[5] ขนมาเพยงแคตวแปรเดยวเทานน แตสามารถเกบขอมลไดถง 5 ตว คอ ตวเลข 1, 2, 3, 4 และ 5 ตวแปรชดจงเหมาะทจะใชในการเขยนโปรแกรมประเภททตองการเกบขอมลในจ านวนมากๆ เชน การเขยนโปรแกรมเกยวกบขอมลของนกศกษา การเขยนโปรแกรมเกยวกบเงนเดอนพนกงาน เปนตน โดยในหนวยท 2 น จะกลาวถงเฉพาะตวแปรพนฐานเทานน

Page 5: Programming With C Language

5

สวนตวแปรชดจะกลาวตอในหนวยท 4 เรองของอารเรยตวแปรพนฐานในภาษาซ ตามมาตรฐาน ANSI มอยหลายชนดดวยกน ซงควรเลอกใชตวแปรใหเหมาะสมกบชนดของขอมล ดงแสดงในตารางท 2-1 ตาราง ตวแปรพนฐานในภาษาซ มาตาฐาน ANSI

ชนดของ ตวแปร

ขนาด (bits)

ขอบเขต ความหมาย

char 8 -128 ถง 127 (อกขระ ASCII)

เกบขอมลชนดอกขระ โดยใชพนทหนวยความจ าในการจดเกบ 8 bits (1 byte )

unsigned char 8 0 ถง 255 เกบขอมลชนดอกขระ แบบไมคดเครองหมาย

int 16 -32,768 ถง 32,767

เกบขอมลชนดตวเลขจ านวนเตม ใชพนทในหนวยความจ า 16 bits (2 bytes)

unsigned int 16 0 ถง 65,535 เกบขอมลชนดตวเลขจ านวนเตม แบบไมคดเครองหมาย

short 8 -128 ถง 127 เกบขอมลชนดตวเลขจ านวนเตมแบบสน ใชพนทหนวยความจ าในการจดเกบ 8 bits (1 bytes)

unsigned short 8 0 ถง 255 เกบขอมลชนดตวเลขจ านวนเตมแบบสน โดยไมคดเครองหมาย

ตารางท 2-1 ตวแปรพนฐานในภาษาซ มาตาฐาน ANSI (ตอ) ชนดของ ตวแปร

ขนาด (bits)

ขอบเขต ความหมาย

long 32 -2,147,483,648 ถง 2,147,483,649

เกบขอมลชนดตวเลขจ านวนเตมแบบยาวใชพนทหนวยความจ าในการจดเกบ 32 bits (4 bytes)

unsigned long 32 0 ถง 4,294,967,296

เกบขอมลชนดตวเลขจ านวนเตมแบบยาว และไมคดเครองหมาย

float 32 3.4*10-38 ถง 3.4*1038

เกบขอมลชนดตวเลขทศนยม ใชพนทหนวยความจ าในการจดเกบ 32 bits (4 bytes ) โดยเกบคาทศนยมประมาณ 6 ตว

double 64 3.4*10-308 ถง 3.4*10308

เกบขอมลชนดตวเลขทศนยม ใชพนทหนวยความจ าในการจดเกบ 64 bits (8 bytes ) โดยเกบคาทศนยมประมาณ 12 ตว

Page 6: Programming With C Language

6

long double 128 3.4*10-4032 ถง 3.4*104032

เกบขอมลชนดตวเลขทศนยม ใชพนทหนวยความจ าในการจดเกบ 128 bits (16 bytes )โดยเกบทศนยมประมาณ 24 ตว

การประกาศตวแปรในภาษาซ (Variables Declaring )

การประกาศคาตวแปร เปนงานแรกในการเขยนโปรแกรมของทกภาษานนคอ การก าหนดชอเขาไปในหนวยความจ าหลกของเครองคอมพวเตอร พรอมทงก าหนดชนดของขอมลวาเปนขอมลชนดอะไร ซงถอเปนการจองพนทในหนวยความจ าหลกในระบบปฏบตการของเครองคอมพวเตอร และเมอใดทตองการเรยกตวแปรทสรางขนออกมาใชงาน โปรแกรมกจะสามารถเรยกตวแปรเหลานนออกมาใชไดทนท รปแบบการประกาศตวแปร ในโปรแกรมภาษาซ การสรางตวแปรเพอทจะใชในการเกบขอมล เรยกการสรางตวแปรนนวา การประกาศคาตวแปร (Variables Declaring) ซงการประกาศคาตวแปรจะตองท าใหถกตองตามรปแบบทโปรแกรมภาษาซ ทไดก าหนดไว โดยรปแบบของการประกาศคาตวแปรในโปรแกรมภาษาซ มดงน

Type Variable ; Type = ชนดของตวแปรทเราสรางขน Variable = ชอของตวแปรทตงขนส าหรบตวแปรทสรางขนมา

ตวอยาง การประกาศตวแปร char ch; ----> สรางตวแปรชอ ch เพอเกบขอมลชนดตวอกษร int num; ----> สรางตวแปรชอ num เพอเกบขอมลชนดตวเลขจ านวนเตม float y; ----> สรางตวแปรชอ y เพอเกบขอมลชนดตวเลขทมทศนยม long u; ----> สรางตวแปรชอ u เพอเกบขอมลชนดเกบขอมลชนดตวเลขจ านวนเตมแบบยาว

ในการประกาศคาตวแปรในโปรแกรมภาษาซ นนชนดของตวแปรทสรางขนควรเลอกให

เหมาะสมกบชนดของขอมลทตองการเกบในตวแปรนน เชน ขอมลชนดตวอกษรกควรเกบอยในตวแปรชนด Character, ขอมลชนดของเลขจ านวนเตมกควรเกบอยในตวแปรชนด Integer สวนชอของตวแปรจะตองตงใหถกตองตามหลกการตงชอของตวแปรภาษาซ ซงจะกลาวในหวขอของหลกการตงชอของตวแปรตอไป

ในการเขยนโปรแกรมภาษาซ สามารถทจะก าหนดคาเรมตนใหกบตวแปรทสรางขนเพอเกบขอมลได โดยมรปแบบในการก าหนดคาเรมตนมดงตอไปน

Type Variable = Value

Page 7: Programming With C Language

7

Type = ชนดของตวแปรทสรางขน Variable = ชอของตวแปรทตงขนส าหรบตวแปรทเราสรางขนมา Value = คาเรมตนทก าหนดใหกบตวแปร

ตวอยาง การก าหนดคาเรมตนใหกบตวแปร char ch = ‘@’; ----> สรางตวแปรชอ ch เพอเกบขอมลชนดตวอกขระโดยก าหนคา

เรมตนใหเปนเครองหมาย @ int start = 0x55; ----> สรางตวแปรชอ start เพอเกบขอมลชนดตวเลขจ านวนเตมโดย

ก าหนดคาเรมตนใหเปนเลขฐานสบหก 55 จงตองเขยนน าหนา ดวย 0x

long million = 999999; ----> สรางตวแปรชอ millionเพอเกบขอมลชนดตวเลขจ านวนเตม แบบยาวโดยก าหนคาเรมตนใหเปน 999999

หลกการตงชอตวแปร

โดยหลกการตงชอมดงตอไปน 1. ตองขนตนดวยตวอกษรภาษาองกฤษตวพมพใหญ คอ A-Z หรอ ตวอกษรองกฤษ

พมพเลก คอ a-z หรอเครองหมาย _ (Underscore) เทานน 2. ภายในชอตวแปรทสรางขนใหใชภาษาองกฤษตวพมพใหญ คอ A-Z หรอ ตวอกษร

องกฤษพมพเลก คอ a-zหรอตวเลข 0-9 หรอเครองหมาย _ เทานน 3. หามเวนชองวางภายในตวแปร หรอใชสญลกษณอนนอกเหนอจากทไดก าหนดไว

ก าหนดไวในขอท 2 4. การใชตวอกษรภาษาองกฤษพมพใหญหรอพมพเลก มความแตกตางกน เชน ถา

สรางตวแปรขนมาโดยใชชอวา Name และ name จะถอวาสรางตวแปรขนมา 2 ตว แมวาตวแปรจะมชอเดยวกนกตาม

5. หามตงชอตวแปรซ ากบค าสงวน (Reserved Word) หรอทเรยกอกอยางวาค าส ารองโดยค าสงวนเปนค าทโปรแกรมภาษาซ ไดก าหนดความหมายในการน าไปใชงานไวแลว ดงนนจะน าไปตงซ าเปนชอตวแปรไมได ค าสงวนในโปรแกรมภาษาซ มดงตอไปน

Page 8: Programming With C Language

8

Auto do float register switch break double for return typedef case else goto shot union char entry if size of unsigned continue enum int static void default extern long struct while

ตวอยาง การตงชอตวแปรในโปรแกรมภาษาซ แบบทถกตอง ดงตอไปน business -----------------> ถกตองตามหลกการตงชอ number75 -----------------> ถกตองตามหลกการตงชอ sanook_com -----------------> ถกตองตามหลกการตงชอ SYSTEM -----------------> ถกตองตามหลกการตงชอ A5A5A -----------------> ถกตองตามหลกการตงชอ

ตวอยาง การตงชอตวแปรในโปรแกรมภาษาซ แบบทไมถกตอง ดงตอไปน bc-computer -----------------> ไมถกตอง เนองจากมเครองหมาย – อยในชอตวแปร goto -----------------> ไมถกตอง เนองจากน าค าสงวนมาใชในการตงชอตวแปร _man men -----------------> ไมถกตอง เนองจากมการเวนชองวางในชอตวแปร 597compute -----------------> ไมถกตอง เนองจากมตวเลขน าหนาชอตวแปร

Variable Local, Global

ตวแปร (Variable) ในโปรแกรมภาษาซ นนแบงออกเปน 5 ชนด ดงทไดกลาวไวแลวในเบองตนแลว ในโปรแกรมภาษาซ แบงตวแปรเปน 2 ประเภท คอ ตวแปร Local Variable และ ตวแปร Global Variable โดยแสดงรายละเอยดดงน 1) Local Variable หรอเรยกวาตวแปร Automatic ตวแปรประเภทนเปนตวแปรทประกาศไวในฟงกช นซงสามารถเรยกใชไดเฉพาะฟงกช นทไดประกาศไวเทานน หมายความวา ไมสามารถเรยกใชงานหรอเปลยนคาตวแปรจากฟงกชนอนได เชน ถาเขยนโปรแกรมภาษาซ ขนแลวประกาศคาตวแปรประเภท Local ซงถาตงชอซ ากนระหวางฟงกชนจะถอวาเปนคนละตวแปรกน และจะไมมผลกระทบใด ๆ เมอมการสงเปลยนคาตวแปรฟงกชนใดฟงกชนหนง โดยจะกลาวถงรายละเอยดของตวแปร Local ไวในหนวยท 5 ในหวขอของตวแปรและขอบเขตการใชงานส าหรบฟงกชน

Page 9: Programming With C Language

9

2) Global Variable หรอเรยกวาตวแปร External ตวแปรประเภทนเปนตวแปรทประกาศไวนอกฟงกชน โดยสามารถเรยกใชจากฟงกชนใดกไดภายในโปรแกรม เชน ถาตองการประกาศคาตวแปรประเภท Global Variable ไวในโปรแกรมภาษาซ จะตองเขยนค าสงประกาศไวทสวนก าหนดคาเรมตนของโปรแกรม ตอจากค าสงพรโปรเซสเซอรไดเรคทฟ ตวแปร Global Variable ไมไดสรางไวภายในฟงกชนใดฟงกชนหนงโดยเฉพาะเหมอนกบ ตวแปรประเภท Local Variable ซงรายละเอยดของตวแปร Global Variable จะกลาวตอไวในหนวยท 5 ในหวขอของตวแปรและขอบเขตการใชงานส าหรบฟงกชน 2.2 เครองหมายและการด าเนนการ (Operator) ในโปรแกรมภาษาซ เครองหมาย (Operator) เปนเครองหมายทใหขอมลหรอตวแปรมากกวา 2 ตวขนไป เกดการประมวลผลหรอ ท าอยางใดอยางหนง ทท าใหเกดผลลพธ 2.2.1 เครองหมายในการค านวณคณตศาสตร (Arithmetic Operators)

เครองหมายในการค านวณคณตศาสตร (Arithmetic Operators) เปนเครองหมายทใชในการค านวณคาของตวแปร

ตาราง เครองหมายเครองหมายทใชการค านวณคณตศาสตร เครองหมาย ความหมาย

+ เครองหมายบวก (Addition) - เครองหมายลบ (Subtraction) * เครองหมายคณ (Multiplication) / เครองหมายหาร (Division) % เครองหมายเอาเศษ (Modulus)

ตาราง ตวอยางการใชเครองหมายเครองหมายการค านวณคณตศาสตร เครองหมาย ตวแปร การใชงาน ค าอธบาย + A+B 4+2 = 6 4 บวก 2 เทากบ 6 - A-B 4-2 = 2 4 ลบดวย 2 เทากบ 2 * A*B 4*2 = 8 4 คณดวย 2 เทากบ 8 / A/B 4/2 = 1 4 หารดวย 2 เทากบ เศษ 2 สวน 1 คาทได คอ 1 % A%B 4%2 = 2 4 หารดวย 2 เทากบ เศษ 2 สวน 1 คาทได คอ 2

Page 10: Programming With C Language

10

2.2.2 เครองหมายในการเปรยบเทยบ (Relational Operators) เครองหมายในการเปรยบเทยบ (Relational Operators) เปนเครองหมายทใชในการ

เปรยบเทยบคาของ 2 ตวแปร หรอ ประโยคค าสงตงแต 2 ประโยคขนไป ซงผลลพธทไดออกมาจะมคาเปนจรง (True) หรอ เทจ (False)

ตาราง เครองหมายเครองหมายทใช ในการเปรยบเทยบ เครองหมาย ความหมาย = = เทากบ (Equal) != ไมเทากบ (Not Equal) > มากกวา (Greater than) < นอยกวา (Less than) >= มากกวาหรอเทากบ (Greater than and Equal) <= นอยกวาหรอเทากบ (Less than and Equal)

ตารางท ตวอยางการใชเครองหมายเครองหมายการเปรยบเทยบ เครองหมาย ตวอยางตวแปร ตวอยางการใชงาน ผลทได ค าอธบาย = = A = = B (4+2) = = (4-2) True 4 = = 2 != A != B (4+2) ! = (4-2) False 6 != 2 > A > B (4+2) > (4-2) True 6 > 2 < A < B (4+2) < (4-2) False 6 < 2 >= A >= B (4+2) >= (4-2) False 6 >= 2 <= A <= B (4+2) <= (4-2) False 6 <= 2

2.2.3 เครองหมายในทางตรรกะ (Logical Operators)

เครองหมายในทางตรรกะ (Logical Operators) เปนเครองหมายทใชในการเปรยบเทยบและตดสนใจ โดยเอาเงอนไขหลายๆ ประโยคเขาดวยกน โดยผลทไดจะมคาเปน True และ False แตจะน าคาทมาประมวลผลตอมกจะใชกบประโยคค าสง If เพอทดสอบเงอนไขของ IF

Page 11: Programming With C Language

11

ตารางเครองหมายเครองหมายทใชในทางตรรกะ เครองหมาย ความหมาย ความหมาย ! ไม (Not) คาทไดเปนคาตรงขามกบคาทไดจากประโยค && และ (And) ผลลพธของ 2 ประโยค จะเปนจรงกตอเมอ มเปนคาเปน

จรง ทง 2 ประโยค || หรอ (Or) ผลลพธของ 2 ประโยค จะเปนจรงกตอเมอ มประโยคใด

ประโยคหนงทมเปนคาเปนจรง ตาราง ตวอยางการใชเครองหมายเครองหมายในทางตรรกะ เครองหมาย ตวอยางตวแปร ตวอยางการใชงาน ค าอธบาย ผลทได ! A > B ! C < D !(4 > 2) && !(4 < 2) !(True)&&!(False) True && A > B && C < D 4 > 2 && 4 < 2 True && False False || A > B || C < D 4 > 2 || 4 < 2 True || False True

เครองหมาย ‘Not‛ ผลทไดจากการกระท า จะมผลตรงขามกบคาตงตนเสมอ ตาราง ผลทไดจากการกระท าเครองหมาย ‘Not‛

ประโยค คาของประโยค ผลทไดจาก เครองหมาย “Not” !(4 > 2) True False !(4 < 2) False True

เครองหมาย ‚And‛ ผลทไดขนอยกบคาของประโยคประโยคดวย ถาคาของประโยค

ออกมาเปน จรงทง 2 ประโยค ผลทไดจะเปน จรง เสมอ

ตาราง ผลทไดจากการกระท าเครองหมาย ‘And‛ คาประโยคท1 คาประโยคท 2 ผลทไดจาก เครองหมาย “And”

True True True True False False False True False False False False

Page 12: Programming With C Language

12

เครองหมาย ‚Or‛ ผลทไดขนอยกบคาของประโยคประโยคดวย ถาคาของประโยคออกมาเปน จรง ประโยคใดประโยคหนง ผลทไดจะเปน จรง เสมอ จะเปน False กตอเมอทง 2 ประโยคเปนเทจทงค

ตาราง ผลทไดจากการกระท าเครองหมาย ‘Or‛ คาประโยคท1 คาประโยคท 2 ผลทไดจาก เครองหมาย “Or”

True True True True False True False True True False False False

2.2.4 เครองหมายการเพมคาและลดคา (Increment and Decrement Operation) เครองหมายเพมคาและลดคา เปนเครองหมายทไวส าหรบเพมและลดคาของตวแปรทละค า

ตาราง ตารางเครองหมายเครองหมายทใชการเพมคาและลดคา เครองหมาย ความหมาย

++ เพมคา (Increment) -- ลดคา (Decrement)

ตาราง ตวอยางการใชเครองหมายเครองหมายการเพมคาและลดคา เครองหมาย ตวอยางตวแปร ค าอธบาย

++ ++A หรอ -AA A = A+1 -- --A หรอ -AA A = A-1

2.2.5 เครองหมายบตไวท (Bit wise Operation) ตาราง เครองหมายเครองหมายบตไวท เครองหมาย ความหมาย

& และ (And) | ทกกรณ (Inclusive OR) ^ เฉพาะกรณ (Exclusive OR) ~ เตมเตม (Complement) << เลอนบตไปทางขวา (Right Shift) >> เลอนบตไปทางซาย (Left Shift)

Page 13: Programming With C Language

13

ตาราง ตวอยางการใชงานเครองหมายเครองหมายบตไวท เครองหมาย ตวอยางตวแปร ค าอธบาย

& A&B A AND B | A | B A OR B ^ A^B A XOR B ~ ~A Complement ของ A << A<<5 เลอนบตไปทางขวา 5 บต >> A>>4 เลอนบตไปทางซาย 4 บต

หมายเหต เครองหมายเครองหมายบตไวทจะใชกบระบบเลขฐานสอง 2.2.6 เครองหมายการก าหนดคา (Assignment Operation)

เครองหมายการก าหนดคา เปนเครองหมายทใชการก าหนดคาใหกบตวแปร หรอ Property ของ Object ซงคาทก าหนดใหกบตวแปร หรอProperty ของ Object อาจเปนคาคงท หรอประโยคค าสง (Expression)

ตาราง ตารางเครองหมายเครองหมายทใชก าหนดคา เครองหมาย ความหมาย

= การก าหนดคา += การเพมคา -= การลบคา *= การคณคา /= การหาร เอาจ านวนเตม %= การเอาเศษ &= ด าเนนการ (Inclusive OR) |= ด าเนนการ (Exclusive OR) ^= ด าเนนการ (Complement) <<= เลอนบตไปทางขวา (Right Shift) >>= เลอนบตไปทางซาย (Left Shift)

Page 14: Programming With C Language

14

ตาราง ตวอยางการใชเครองหมายเครองหมายทใชก าหนดคา เครองหมาย ตวอยางการใช ตวอยางการใช

= A = B += A += B A = A+B -= A -= B A = A-B *= A *= B A = A*B /= A /= B A = A/B %= A %= B A = A%B &= A &= B A = A&B |= A | = B A = A | B ^= A ^= B A = A ^ B <<= A <<=5 A = A<<5 >>= A >>= 5 A = A<<5

2.2.7 ล าดบการท างานของเครองหมาย (Precedence) ล าดบการท างานของเครองหมาย คอ การเรยงล าดบการท างานของเครองหมายทมสงสด

ไปยงต าสด และในการค านวณคานพนธใด ๆ จะตองเรมท าเครองหมายทมล าดบดารท างานสงสดกอน ถงท าเครองหมายทมล าดบรองลงมา แตถาเครองหมายทมล าดบการหาคานพนธทเทากน ใหท างานเครองหมายจากซายไปขวา

ตาราง แสดงล าดบการท างานกอนหลงของเครองหมาย ล าดบท เครองหมาย

1 () [ ] . -> 2 ~ ! * & 3 ++ -- 4 * / % 5 +- 6 << >> 7 < > <= => 8 = = != 9 & (Bitwise AND) 10 ^ (Bitwise Exclusive OR) 11 | (Bitwise 0Inclusive OR)

Page 15: Programming With C Language

15

12 && 13 || 14 ?: 15 = += -= % 16 <<= >>=

ตวอยางท 2-1 ล าดบการท างานของเครองหมาย X * 4 / 8 < 10 || Y = ‘Bee’ ในนพจนขางตน จะหาคาของนพจนตามล าดบดงตอไปน 1. การคณ X * 4 2. การหาร X * 4 / 8 เนองจากวามล าดบการท ากอนเทากบ * จงตองท าตามล าดบตาม

การพบเครองหมายจากซายไปขวา 3. การเปรยบเทยบ X * 4 / 8 < 10 4. การเปรยบเทยบ Y = ‘Bee’ 5. การเชอมทางตรรกะ OR

Page 16: Programming With C Language

16

2.3 การแสดงผลและการรบขอมล การเขยนโปรแกรมภาษาซ ภายในโปรแกรมทเขยนขนมามหนาทการท างานทส าคญ คอ

การแสดงผลการท างานออกทางหนาจอ และการรบขอมลจากคยบอรด ซงเปนการท างานทสวนใหญทกโปรแกรมจะตองใชการแสดงผลการท างานหนาจอและการรบขอมลจากคยบอรด โดยการเรยกใชฟงกชนตาง ๆ ทภาษาซ เตรยมไวใหใชงาน รปแบบการแสดงผลและการรบขอมลเบองตนมดงน 2.3.1 แสดงผลทางหนาจอดวย printf()

การแสดงผลออกทางหนาจอสามารถท าไดหลายวธ แตวธทงายและนยมใชมากทสด คอ printf() ซงเปนฟงกชนมาตรฐานในภาษาซใชส าหรบแสดงขอความ ตวแปร ผลการด าเนนงานของนพจนออกทางหนาจอ

รปแบบ การเรยกใชงานฟงกชน printf() ดงน printf(‚Control‛,Value); Control = สวนทใชควบคมการแสดงผล ซงมอย 3 รปแบบดวยกน คอ ขอความธรรมดา

รหสควบคมรปแบบ(เชน %d, %f) และอกขระควบคมการแสดงผล (เชน \n, \t) โดยสวนทใชในการควบคมการแสดงผลจะตองเขยนไวภายในเครองหมาย ‚ ‚(Double Quote)

Value = คาของตวแปรนพจน โดยถามมากกวาหนงตวใหใชเครองหมาย , (Comma) คนระหวางแตละตว

ตวอยาง รปแบบการเรยกใชงานฟงกชน printf() เพอแสดงขอความออกทางหนาจอ ดงน #include<stdio.h> // 1 void main() // 2 {

printf(‚I love you‛); // 3 } จากตวอยางสามารถอธบายไดดงน 1. เรยกใชพรโปรเซสเซอรไดเรคทฟ #include น าไฟล stdio.h เขามารวมกอนแปล

ความหมาย เนองจากภายในโปรแกรมไดเรยกใชฟงกชน printf() ซงอยในไฟล stdio.h 2. เรมตนการท างานโดยฟงกชน main() 3. เรยกใชฟงกชน printf() เพอแสดงขอความ computer science ออกทางหนาจอ โดย

ขอความจะตองเขยนอยภายในเครองหมาย ‚ ‚ (Double quote) ผลการประมวลผลโปรแกรม ดงน

computer science

Page 17: Programming With C Language

17

ตวอยาง โปรแกรมแสดงขอความออกทางหนาจอ โดยเปนการแสดงผลคาในตวแปรขนมาแสดงผลดงน

#include<stdio.h> // 1 int num = 30; // 2 void main() { printf(num); // 3 }

จากตวอยางสามารถอธบายไดดงน 1. เรยกใช พรโปรเซสเซอรไดเรคทฟ #include น าไฟล stdio.h เขามารวมกอนแปล

ความหมาย เนองจากภายในโปรแกรมไดเรยกใชฟงกชน printf() ซงอยในไฟล stdio.h 2. สรางตวแปรชอ num ชนด int ส าหรบเกบเลขจ านวนเตม โดยก าหนดคาเรมตนคอ 30 3. เรยกใชฟงกชน printf() เพอแสดงคาของตวแปร num ออกทางหนาจอ ซงการเขยน

ค าสงใหแสดงคาของตวแปรในลกษณะน คาของตวแปรจะไมแสดงออกทางหนาจอ ผลการประมวลผลโปรแกรม ดงน

Borland Intl. รหสรปแบบ (Format Code) ส าหรบค าสง I/O

รหสรปแบบ (Format Code) เปนรหสควบคมการแสดงผลของตวแปร นพจนหรอมาโครออกทางหนาจอ โดยรหสรปแบบในภาษาซมหลายรปแบบ ซงการเลอกน าไปใชจะตองพจารณาใหเหมาะสมกบขอมลทจะน าไปแสดงผลประเภทของรหสรปแบบในภาษาซ มดงน ตารางท 2 – 18 ประเภทของรหสรปแบบ (Format Code) รหสรปแบบ การน าไปใชงาน %d ส าหรบการแสดงผลตวเลขจ านวนเตม (int, short, unsigned short, long,

unsigned long) %u ส าหรบการแสดงผลตวเลขจ านวนเตมบวก (unsigned short, unsigned long) %o ส าหรบการแสดงผลออกมาในรปแบบของเลขฐานแปด %x ส าหรบการแสดงผลออกมาในรปแบบของเลขฐานสบหก %f ส าหรบการแสดงผลตวเลขทศนยม (float, double, long double) %e ส าหรบการแสดงผลตวเลขทศนยมออกมาในรปแบบของ E (หรอ e) ยกก าลง

(float, double, long double) %c ส าหรบการแสดงผลอกขระ 1 ตว

Page 18: Programming With C Language

18

%s ส าหรบการแสดงผลขอความ (อกขระมากกวา 1 ตว) %p ส าหรบการแสดงผลตวชต าแหนง (pointer)

การแสดงผลในรปแบบทศนยม โดยก าหนดจ านวนตวเลขหลงจดทศนยมรหสรปแบบ %f และ %e จะใชกบการแสดงผลขอมลชนดตวเลขทศนยม โดยสามารถก าหนดจ านวนตวเลขหลงจดทศนยมทแสดงผล รปแบบดงน %.nf

n = จ านวนตวเลขหลงจดทศนยมทตองการใหแสดงผล ถาก าหนดรหสรปแบบ %.3f หมายถง ใหแสดงผลขอมลเปนตวเลขทศนยม โดยตวเลข

หลงจดทศนยม 3หลก ตวอยางเชน 1.357 3.667 -5.423 %.ne n = คอจ านวนตวเลขหลงจดทศนยม(หนา E หรอ e)

ถาก าหนดรหสรปแบบ %.3e หมายถง ใหแสดงผลขอมลเปนตวเลขทศนยมทจะอยในรป E หรอ e โดยตวเลขหลงจดทศนยม 3 หลก ตวอยางเชน 1.329E+11 2.726E-02 5.476E34

ตวอยาง การใชรหสรปแบบกบฟงกชน printf เพอแสดคาขอตวแปรชนดตางๆ ทางหนาจอ #include<stdio.h> int n1 = -123, n2 = 046, n3 = 0x329; float x1 = -12.345, x2 = 1.46e02; char Z = ‘C’; void main() {

printf(‚ %d %d ‚,n1,n2); // 1 printf(‚ %u ‛,n1); // 2 printf(‚ %f ‛,x2); // 3 printf(‚ %d ‛,z); // 4

}

จากตวอยางสามารถอธบายไดดงน

Page 19: Programming With C Language

19

1. ค าสงแสดงคาของตวแปร n1 และ n2 ออกทางหนาจอ โดยใชรหสรปแบบ ‚%d %d‛ ท าใหตวแปรภาษาซแสดงคาออกมาเปนเลขฐานแปด และคาของตวแปร n3 ซงเปนเลขฐาน สบหกออกมาในรปแบบของตวเลขจ านวนเตมฐานสบ ผลทไดจากการท างานคอ –123 38 ซงเปนคาในระบบเลขฐานสบของ 046 และ 0x329

2. ค าสงแสดงคาของตวแปร n1 ออกทางหนาจอ โดยใชรหสรปแบบ ‚%u‛ ดงนนคาของตวแปร 1 จะแสดงออกมาในรปของตวเลขจ านวนเตมบวก โดยการน าจ านวน -123 ไปหาคา Complement เพอใหไดผลออกมาเปนจ านวนเตมบวก 65413

3. ค าสงแสดงคาของตวแปร x2 ออกทางหนาจอ โดยใชรหสควบคม ‚%f‛ ดงนนคาของตวแปร x2 จะแสดงออกมาในรปของตวเลขทศนยม ซงไดผลออกมาเปน 146.000000

4. ค าสงแสดงคาของตวแปร z ออกมาทางหนาจอ โดยใชรหสควบคม ‚%d‛ ดงนนคาของตวแปร z จะแสดงผลออกมาในรปแบบของตวเลขจ านวนเตม 99 ซงกคอคาในระบบตวเลขฐานสบของตวอกษร ‘c’

ผลการประมวลผลโปรแกรม ดงน -123 38 65413 146.000000 99

ตวอยาง การใชรหสรปแบบส าหรบแสดงผลชนดตวเลขทศนยม ดงน #include<stdio.h> float n1 = 72.643,n2 = 1.294e+22 void main() {

printf(‚ %.4f ‚,n1); // 1 printf(‚ %.1f ‚,n1); // 2 printf(‚ %.2e‛,n2); // 3 printf(‚ %.1e ‚,n2); // 4

}

จากตวอยางสามารถอธบายไดดงน 1. แสดงคาของตวแปร n1 ในรปแบบตวเลขทศนยม โดยก าหนดใหแสดงตวเลขหลงจด

ทศนยม 4 ต าแหนง ดงนนคาของตวแปร n1 จะแสดงออกเปน 72.6430 2. แสดงคาของตวแปร n1 ในรปแบบตวเลขทศนยม โดยก าหนดใหแสดงตวเลขหลงจด

ทศนยม 1 ต าแหนง ดงนนคาของตวแปร n1 จะแสดงออกเปน 72.6 3. แสดงคาของตวแปร n2 ในรปแบบ e ยกก าลง โดยก าหนดใหแสดงตวเลขหลงจด

ทศนยม (หนา e) 2 ต าแหนง ดงนนคาของตวแปร n2 จะแสดงออกเปน 1.29e+22

Page 20: Programming With C Language

20

4. แสดงคาของตวแปร n2 ในรปแบบ e ยกก าลง โดยก าหนดใหแสดงตวเลขหลงจดทศนยม (หนา e) 2 ต าแหนง ดงนนคาของตวแปร n2 จะแสดงออกเปน 1.3e+22

ผลการประมวลผลโปรแกรม ดงน 72.6430 72.6 1.29 e+22 1.3e+22

แสดงผลขอความโดยก าหนดจ านวนอกขระ

แสดงผลขอความโดยก าหนดจ านวนอกขระ โดยใชรหสรปแบบ %s เราสามารถก าหนดไดวาตองการแสดงขอความทงหมดหรอเลอกเฉพาะบางสวนของขอความ โดยก าหนดจ านวนอกขระทตองการแสดงผล รปแบบการแสดงผลขอความโดยก าหนดจ านวนอกขระ

%.ns

n = จ านวนอกขระทตองการใหแสดงผล ตวอยาง การใชรหสรปแบบกบการแสดงขอความออกทางหนาจอ #include<stdio.h> char message[ ] = ‚ C Language‛; // 1 void main() {

printf(‚%.6s ‚,message); // 2 }

จากตวอยางสามารถอธบายไดดงน 1. สรางตวแปร (Global Variable) ชนด char ชอ message โดยก าหนดคาเรมตนคอ C

Language 2. แสดงขอความในตวแปร message ออกทางหนาจอโดยใชรหสรปแบบ ‚%.6s‛

หมายถง ใหน าอกขระในขอความ C Language มาแสดงเพยงแค 6 ตว นบจากตวแรก ดงนนจงแสดงขอความ คอ C Lang

ผลการประมวลผลโปรแกรม ดงน C Lang

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

ดวยรหสรปแบบ %m.ns

Page 21: Programming With C Language

21

m = จ านวนพนททตองการใชในการแสดงผล โดยหนวยเปนจ านวนอกขระ n = จ านวนอกขระทตองการน ามาแสดงผล

ตวอยาง การใชรหสรปแบบก าหนดขนาดของพนท ดงน #include<stdio.h> char message[ ] = ‚C Language‛; void main() {

printf(‚%12.65‛,message); // 1 }

จากตวอยางสามารถอธบายไดดงน แสดงอกขระในขอความ C Language ออกทางหนาจอเปนจ านวน 6 ตว โดยจองพนทใน

การแสดงผลไวเปนจ านวน 12 อกขระ ผลการประมวลผลโปรแกรม ดงน

C Lang แสดงผลขอความชดขอบดานซาย วธการก าหนดใหแสดงขอความชดขอบซายของหนาจอใหใชเครองหมาย – รวมกบรหส

รปแบบ ดงน %-m.ns - = เครองหมาย – ใชก าหนดเพอแสดงขอความชดขอบดานซายของพนท m = จ านวนพนทซงตองการใชในการแสดงผล n = จ านวนอกขระทตองการน ามาแสดงผล

ตวอยาง โปรแกรมแสดงผลขอความชดขอบดานซาย #include<stdio.h> char message[ ] = ‚C Language‛; void main() {

printf(‚%-12.6s‛,message); // 1 }

Page 22: Programming With C Language

22

จากตวอยางสามารถอธบายไดดงน แสดงอกขระในขอความ C Language ออกมาทางหนาจอ 6 ตว โดยจองพนททงหมด 12

ตว พรอมกบก าหนดใหแสดงขอความชดขอบดานซาย ดงนนจงเหลอพนทวางทางดานขวาของขอความ อกขระควบคมการแสดงผล (Carriage Control) ส าหรบค าสง I/O

การจดขอความทแสดงออกทางหนาจอใหเปนระเบยบ เชน การเวนบรรทด การเวนชองวางสงเหลานจะท าใหขอความทแสดงออกทางหนาจอนาอานมากขน โดยการจดรปแบบการแสดงผลในภาษาซ จะใชอกขระควบคมการแสดงผลเขามาชวย มดงน ตารางท 2 -19 แสดงอกขระควบคมการแสดงผล อกขระควบคมการแสดงผล ความหมาย

\n ขนบรรทดใหม \t เวนชองวางเปนระยะ 1 tab (6 ตวอกษร) \r ก าหนดใหเคอรเซอรไปอยตนบรรทด \f เวนชองวางเปนระยะ 1 หนาจอ \b ลบอกขระตวสดทายออก 1 ตว

ตวอยาง การใชอกขระควบคมการแสดงผล ดงน #include<stdio.h> #define PUBLISH ‚Infopress‛ // 1 int n1 =15 , n2 = 4; void main() {

printf(‚This is the book from %s\n‛,PUBLISH); // 2 printf(‚Sum of %d + %d =\t%d\n‛,n1,n2,n1+n2); // 3

}

จากตวอยางสามารถอธบายไดดงน 1. สรางมาโคชอ PUBLISH โดยก าหนดคาเรมตนเปนขอความคอ ‚Infopress‛ 2. ค าสงแสดงขอความ This is the book from infopress ออกทางหนาจอ โดยตวแปล

ภาษาซ แสดงขอความ infopress ซงเปนคาของมาโค PUBLISH ทต าแหนงของ %s หลงจากแสดงขอความทงหมดแลวจะขนบรรทดใหม เพราะมการใชอกขระควบคมการแสดงผล \n

Page 23: Programming With C Language

23

3. ค าสงแสดงขอความ Sum of 15 + 4 = 19 ออกทางหนาจอ โดยตวแปลภาษาซจะแสดงคาของตวแปร n1 แทนทต าแหนงของ %d ตวแรก แสดงคาของตวแปร n2 แทนทต าแหนงของ %d ตวทสอง และแสดงคาของนพจน n1 + n2 แทนทต าแหนงของ %d ตวสดทาย และหลงเครองหมาย = จะเวนชองวางเปนระยะ 1 tab เนองจากมการใช \t และขนบรรทดใหมหลงจากแสดงขอความทงหมด เนองจากใช \n

ผลการประมวลผลโปรแกรม ดงน This is the book from Infopress Sum of 15 + 4 = 19

แสดงผลทละอกขระดวย putchar()

การแสดงผลทละอกขระออกทางหนาจอ นอกจากจะเรยกฟงกชน printf() แลวในภาษาซ ยงมฟงกชน putchar() ซงใชส าหรบการแสดงผลทละอกขระออกทางหนาจอ

รปแบบ การเรยกใชงาน ดงน putchar(char); char = เปนตวแปรชนด char หรออกขระทเขยนภายในเครองหมาย ‘ ‘

ตวอยาง การใชงานฟงกชน putchar() แสดงผลทละอกขระทางหนาจอ ดงน #include<stdio.h> // 1 #include<conio.h> char first =’0’; // 2 void main() {

clrscr(); // 3 putchar(first); // 4 putchar(‘k’); // 5

}

จากตวอยางสามารถอธบายไดดงน 1. เปนค าสงใหตวแปรภาษาซ น าไฟลชอ stdio.h เขามารวมกอนทจะแปลความหมาย

เนองจากภายในโปรแกรมมการเรยกใชฟงกชน putchar() อยในไฟล stdio.h 2. สรางตวแปร (Global Variables) ชนด char ชอ first พรอมทงก าหนดคาเรมตนเปน

ตวอกขระ o 3. เรยกใชงานฟงกชน clrstr() เพอลบหนาจอใหวาง 4. ค าสงแสดงอกขระทเกบไวในตวแปร first ออกทางหนาจอ

Page 24: Programming With C Language

24

5. ค าสงแสดง k ออกทางหนาจอ ผลการประมวลผลโปรแกรม ดงน

ok แสดงผลเปนขอความดวย puts()

ฟงกชน puts() เปนฟงกชนแสดงผลเปนขอความออกทางหนาจอ รปแบบ การแสดงผลดวยฟงกชน puts() ดงน puts(str); str = ตวแปรทเกบขอมลชนดขอความ หรอขอความทเขยนอยภายในเครองหมาย ‚ ‚ ตวอยาง การใชเรยกใชงานฟงกชน puts() เพอแสดงผลเปนขอความ ดงน #include<stdio.h> #include<conio.h> char message[ ] = ‛ What is your name? ‚; // 1 void main() {

clrscr(); puts(message); // 2 put(‚My name is c ‚); // 3 }

จากตวอยางสามารถอธบายไดดงน 1. สรางตวแปร (Global Variables) ชนด char ชอ message[ ] พรอมก าหนดคาเปน

ขอความ 2. ค าสงแสดงขอความทเกบไวในตวแปร message ออกทางหนาจอ โดยการใชฟงกชน

puts() ซงหลงจากแสดงขอความแลวจะขนบรรทดใหม 3. ค าสงแสดงขอความ My name is c ออกทางหนาจอ และขนบรรทดใหมโดยเคอรเซอร

ลงมาอยบรรทดลาง เมอประมวลผลแลวไดขอความ ดงตอไปน

What is your name? My name is c

Page 25: Programming With C Language

25

2.3.2 รบขอมลจากคยบอรดดวย scanf() การเขยนโปรแกรมจะตองรบขอมลจากผใชเขามา เชน เลอกรายการตวอยาง เลอก

รายการอาหาร เปนตน เพอน าขอมลเขามารวมประมวลผลดวยในโปรแกรม โดยสวนใหญผเขยนตองการใหผใชกรอกขอมลเขามาทางคยบอรด ในภาษาซ การรบขอมลจากคยบอรดจะใชฟงกชน scanf() ซงเปนฟงกชนมาตรฐานส าหรบการรบขอมลจากคยบอรด

รปแบบ การใชงานของฟงกชน scanf() จะคลายกบฟงกชน printf() ดงน

scanf(‚ format‛,& variables);

Format = เปนการใชรหสรปแบบ เพอก าหนดชนดของขอมลทรบเขามา โดยรปแบบของฟงกชน scanf() จะใชงานคลายกบฟงกชน printf() เราจงควรก าหนดรหสรปแบบใหมความสอดคลองกบฟงกชน printf()

Variables = เปนตวแปรทใชส าหรบเกบขอมลทรบเขามาทางคยบอรด โดยการเขยนจะตองอยหลงเครองหมาย &เสมอ ยกเวน ตวแปรทเกบขอมลชนดขอความเทานน ทสามารถใสตวแปรไดเลยโดยไมตองค านงเครองหมาย & ตวอยาง การใชงานฟงกชน scanf() รบขอมลจากคยบอรด ดงน #include<stdio.h> #include<conio.h> int age; // 1 void main() {

clrscr(); printf(‚How old are you? ‚); // 2 scanf(‚%d‛,&age); // 3 printf(‚You are %d years old.\n‛,age); // 4

}

จากตวอยางสามารถอธบายไดดงน 1. สรางตวแปร (Global Variables) ชนด int ชอ age เพอเกบตวเลขจ านวนเตม 2. แสดงขอความ How old are you? ออกทางหนาจอ เพอแจงใหผใชทราบวาจะตอง

กรอกขอมลเปนอาย 3. เรยกใชฟงกชน scanf() เพอรบคาจากคยบอรดเขามา 1 ตว โดยก าหนดรหสรปแบบ

%d คอขอมลทเกบไวใสในรปของตวเลขจ านวนเตม

Page 26: Programming With C Language

26

4. แสดงคาของตวแปร age ขนมาบนหนาจอ คอตวเลขจ านวนเตมทผใชกรอกใหกบโปรแกรม

เมอประมวลผลแลวขอความจะแสดง ดงน How old are you?

เมอกรอกตวเลขจ านวนเตม 1 ตว แลวกดปม Enter โปรแกรมจะท างานตอไป

How old are you?19 ผลการท างานของโปรแกรมหลงจากกรอกขอมลลงไปแลวดงน

How old are you?19 You are 19 year old.

รบขอมลทละอกขระดวย getchar()

ฟงกชน getchar() จะใชกบขอมลทละอกขระเขามาจากคยบอรด โดยการรบขอมลจะรบไดครงละ 1 อกขระเทานน และการแสดงผลออกทางหนาจอขอมลจะตองกด Enter

รปแบบ การท างานของ getclhar() ดงน

variable = getchar();

varible = เปนชอของตวแปรชนดอกขระซงท าหนาทเกบคาของอกขระทรบเขามาจากคยบอรด ตวอยาง การใชงานของฟงกชน getchar() รบขอมลทละอกขระจากคยบอรด ดงน #include<stdio.h> // 1 #include<conio.h> char n; // 2 void main() {

clrscr(); printf(‚What is your blood : ‚); // 3 n = getchar(); // 4 printf(‚Your insert : %c ‚,n); // 5

}

Page 27: Programming With C Language

27

จากตวอยางสามารถอธบายไดดงน 1. น าไฟลชอ stdio.h เขามารวมกอนทจะแปลความหมายเนองจากภายในโปรแกรมม

การเรยกใชฟงกชน getchar() อยในไฟล stdio.h 2. สรางตวแปรชนด char ชอ n เพอเกบขอมลชนดอกขระ 3. แสดงขอความ What is your blood : เพอใหผใชทราบวาตองกรอกขอมล เปนกรปเลอด 4. เรยกใชฟงกชน getchar() เพอเกบขอมลชนดอกขระทละ 1 อกขระ โดยการเกบท

ตวแปร n 5. แสดงคาตวแปร n ออกทางหนาจอ เมอประมวลผลแลวจะไดขอความ ดงน

What is your blood : a ผลการท างานของโปรแกรมหลงจากทเรากรอกตวอกษร ดงน

What is your blood : a Your insert : a

รบขอมลทละอกขระดวย getch()

ฟงกชน getch() เปนฟงกชนทรบขอมลทละอกขระเขามาจากคยบอรด โดยจะรบขอมลอกขระทละ 1 อกขระเทานน จะเหมอนกบฟงกชน getchar() แตการรบขอมลดวยฟงกชน getch() เมอผใชกรอกขอมลเขามา 1 อกขระแลว โปรแกรมจะท างานตอทนท โดยไมตองกด Enter และอกขระทกรอกจะไมแสดงขนมาใหเหนบนหนาจอ

รปแบบ การเรยกใชฟงกชน ดงน variable = getch();

variable = เปนชอของตวแปรชนดอกขระซงท าหนาทเกบคาของอกขระทรบเขามาจากคยบอรดส าหรบลกษณะการใชงานของฟงกชน getch() จะเหมอนกบฟงกชน getchar() ดงตวอยางท 6-15 เมอน าฟงกชน getch() ไปแทนทฟงกชน getchar() จะไดผลลพธเหมอนกน แตแตกตางกนตรงท โปรแกรมจะท างานตอทนท โดยไมตองกด Enter และอกขระทกรอกจะไมแสดงขนมาใหเหนบนหนาจอ รบขอมลเปนขอความดวย gets()

ฟงกชน gets() เปนฟงกชนทรบขอมลเปนขอความเขามาจากคยบอรด เราเรยกใชฟงกชน gets() ซงเปนฟงกชนส าหรบขอความโดยเฉพาะ รปแบบการเรยกใชงานของฟงกชน gets() ดงน

Page 28: Programming With C Language

28

gets(str);

str = เปนตวแปรทใชส าหรบเกบขอความ ซงจะตองสรางเตรยมไวกอนทจะเรยกใชงานฟงกชน gets() ตวอยาง การใชงานฟงกชน gets() ดงน #include<stdio.h> #include<conio.h> char msg[20]; // 1 void main() {

clrscr(); // 2 printf(‚Enter your message : ‛); // 3 gets(msg); // 4 printf(‚Your message is %s ‚,msg); // 5

}

จากตวอยางสามารถอธบายไดดงน 1. สรางตวแปร ( Global Variables ) ชนด char ชอ msg[ ] ใชเกบขอมลชนดขอความ 2. เรยกใชฟงกชน clrscr() เพอลบหนาจอ 3. ค าสงแสดงขอความ Enter your message เพอใหผใชกรอกขอมลทเปนขอความ 4. ค าสงรบขอความ โดยจะน าขอมลเกบไวในตวแปร msg โดยผใชจะตองกรอก

ขอความ เมอกรอกขอมลเสรจจะตองกด Enter 5. ค าสงแสดงขอความ Your message is : Hello C ออกทางหนาจอ ผลการประมวลผลโปรแกรม ดงน

Enter your message :

เมอเรากรอกขอความทตองการแลว ใหกดปม Enter Enter your message : Nice to meet you!

ผลการท างานของโปรแกรมเมอเรยกดโดยกดปม < Alt + F5 > แสดงไดดงน

Enter your message : Nice to meet you! Enter message is Nice to meet you

Page 29: Programming With C Language

29