Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

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

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

Published by paiboonclass, 2020-05-15 01:30:08

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

Search

Read the Text Version

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

3.1 โครงสรา้ งโปรแกรม ลกั ษณะโครงของภาษาซีแบ่งออกไดเ้ ป็ น 5 สว่ น ดงั ต่อไปน้ ี 1. พรีโพรเซสเซอรไ์ ดเร็กทีฟ (Preprocessor directives) 2. ส่วนการกาหนดคา่ (Global declarations) 3. สว่ นฟังกช์ นั หลกั (The main() function) 4. การสรา้ งฟังกช์ นั และการใชฟ้ ังกช์ นั (Uses-defined function) 5. สว่ นอธิบายโปรแกรม (Program comments) โครงสรา้ งของโปรแกรมประกอบดว้ ยหลายส่วน แต่ในการเขียนโปรแกรม น้ันไม่จาเป็ นตอ้ งเขียนหมดทุกส่วน ส่วนใดไม่ใชก้ ็สามารถตัดท้ ิงได้ แต่ทุก โปรแกรมตอ้ งมีสว่ นพรีโพรเซสเซอรไ์ ดเร็กทีฟ และสว่ นฟังกช์ นั หลกั 2

พรโี พรเซสเซอรไ์ ดเรกทีฟ (Preprocessor directives) ใชส้ าหรบั เรียกไฟลท์ ี่โปรแกรมตอ้ งการในการทางานและกาหนดคา่ ต่างๆ โดยคอมไพลเ์ ลอรจ์ ะกระทาตามคาสงั่ ก่อนที่จะคอมไพลโ์ ปรแกรม เร่ิมตน้ ดว้ ย เครื่องหมาย ไดเร็กทีฟ (Directive) # และตามดว้ ยช่ือโปรแกรม หรือช่ือตวั แปร ที่ตอ้ งการกาหนดคา่ สาหรบั Directive ท่ีใชก้ นั บ่อย ๆ ไดแ้ ก่ • #include เป็ นการแจง้ ใหค้ อมไพเลอรอ์ ่านไฟลอ์ ื่นเขา้ มาคอมไพร่วมดว้ ย รปู แบบการใชจ้ ะทาโดยเขียน #include แลว้ ตามดว้ ยชื่อไฟล์ ดงั น้ ี #include <stdio.h> หมายความวา่ อ่านไฟล์ stdio.h เขา้ มาดว้ ย #include <Pro1.c> หมายความวา่ อ่านไฟล์ Pro1.c เขา้ มาดว้ ย การกาหนดชื่อไฟลต์ ามหลงั #include น้ันอาจใชเ้ คร่ืองหมาย <> คร่อมชื่อ ไฟลห์ รือ ‚ ‛ ก็ได้ 3

พรโี พรเซสเซอรไ์ ดเรกทฟี (Preprocessor directives)(2) • #define เป็ นการกาหนดค่านิพจน์ต่าง ๆ ใหก้ ับชื่อของตัวแปร โดยมี รปู แบบดงั น้ ี #define NAME VALUE เชน่ #define END 20 ; กาหนด END มีคา่ เทา่ กบั 20 #define A 5*6+3 ; กาหนด A มีคา่ เป็ น 5*6+3 4

3.2 โปรแกรมภาษาซีเบ้ ีองตน้ #include<stdio.h> ส่วนหวั main() สว่ นฟังกช์ นั หลกั { //statement } โปรแกรมต่อไปน้ ีจะเป็ นโปรแกรมแรกท่ีจะใชเ้ ขียนโปรแกรมภาษาซี โดย จะใชฟ้ ังกช์ นั printf() ซ่ึงจะทาหนา้ ท่ีพมิ พข์ อ้ มลู ออกทางจอภาพ 5

3.2 โปรแกรมภาษาซีเบ้ ีองตน้ (2) #include<stdio.h> ตวั อยา่ ง main() โปรแกรมภาษาซี { printf(‚COMPUTER‛); } ฟังกช์ นั หลกั เรียกใชฟ้ ังกช์ นั printf() ซ่ึงจะทาหน้าที่พิมพข์ อ้ ความหรือ สตริง (string) ท่ีอยใู่ น ‚ ‛ ออกทางหน้าจอ และจบฟังกช์ นั ดว้ ย (;) โดย ฟังกช์ นั น้ ีจะเก็บไวใ้ น stdio (standard input output) ซึ่งจะเก็บชุดคาสงั่ เกี่ยวกบั การส่งขอ้ มลู เขา้ ออกเอาไว้ สาหรบั #include เรียกว่า ไดเรกทีฟ (directive) และ stdio.h เรียกวา่ ไฟลส์ ว่ นหวั (header file) 6

3.2 โปรแกรมภาษาซีเบ้ ีองตน้ (3) สาหรับในการเขียนโปรแกรมเราสามารถเขียนคาอธิบาย (comments) ต่างๆ ได้ โดยคอมไพเลอรจ์ ะไม่แปรความหมายเป็ นภาษาเครื่อง ซ่ึงจะตอ้ งเปิ ด ดว้ ยเครื่องหมาย /* และปิ ดดว้ ยเครื่องหมาย */ เชน่ /* PROGRAM BY PAIBOON SOMNUK*/ // PROGRAM BY PAIBOON SOMNUK #include <stdio.h> ผลการรนั void main() ED.ENGINEER 28 KMITL { printf(\"ED.ENGINEER 28 KMITL\"); /* PROGRAM BY PAIBOON SOMNUK*/ // PROGRAM BY PAIBOON SOMNUK } 7

3.3 ตวั แปร หากตอ้ งการใหโ้ ปรแกรมรบั ขอ้ มูลจากผูใ้ ชม้ าเก็บไว้ หรือมีการคานวณ และเก็บผลลพั ธจ์ ะตอ้ งสรา้ งตวั แปรสาหรบั เก็บขอ้ มลู ท่ีเป็ นผลลพั ธน์ ้ัน พิจารณา โปรแกรมต่อไปน้ ี รูปแบบ ชนิดขอ้ มลู ชอ่ื ตวั แปร, …, N; หรอื รปู แบบสมการ variable = expression; ตวั อยา่ ง int feet, inches; inches = feet * 12; //(=, +, -, *, /) 8

3.3 ตวั แปร(2) ในการประกาศตวั แปรน้ันมกี ฎการต้งั ชื่อดงั ต่อไปน้ ี • ช่ือตวั แปรประกอบดว้ ยตวั อกั ษร A ถึง Z รวมถึงตวั เลข 0 ถึง 9 • ชื่อตวั แปรตอ้ งข้ ึนตน้ ดว้ ยตวั อกั ษร • ตวั พมิ พใ์ หญ่ ตวั พิมพเ์ ล็กมีความหมายตา่ งกนั • ตอ้ งไม่มีเวน้ วรรคระหวา่ งชื่อตวั แปร • ช่ือตอ้ งไม่ซ้ากบั คาสงวน (Reserved Word) ท่ีโปรแกรมรจู้ กั 9

3.3 ตวั แปร(3) ตวั อยา่ ง #include <stdio.h> int feet, inches; ประกาศตวั แปร main() { ผลการรนั Height in inches is 72 feet = 6; inches = feet * 12; printf(‚Height in inches is %d‛,inches) } 10

3.4 การเก็บขอ้ มูลของตวั แปร ในการประกาศตัวแปรใหก้ ับโปรแกรมน้ัน เม่ือโปรแกรมถูกรันตัวแปร ต่างๆ จะเป็ นตาแหน่งหน่วยความจาที่ใชเ้ ก็บขอ้ มลู ตวั อยา่ งเชน่ #include <stdio.h> หน่วยความจา int x; main() 6 { 8 x = 6; ผลการรนั x = 8; X is 8 printf(‚X is %d‛,x); } 11

3.4 การเก็บขอ้ มูลของตวั แปร(2) ในการประกาศตัวแปรใหก้ ับโปรแกรมน้ัน เมื่อโปรแกรมถูกรันตัวแปร ต่างๆ จะเป็ นตาแหน่งหน่วยความจาที่ใชเ้ ก็บขอ้ มลู ตวั อยา่ งเชน่ #include <stdio.h> ผลการรนั int x; 14 main() 14 { num1 = 5; num2 = 14; num1 = num2; printf(‚%d \\n‛,num1); printf(‚%d \\n‛,num2); } 12

3.4 การเก็บขอ้ มูลของตวั แปร(3) ในการประกาศตัวแปรใหก้ ับโปรแกรมน้ัน เม่ือโปรแกรมถูกรันตัวแปร ต่างๆ จะเป็ นตาแหน่งหน่วยความจาท่ีใชเ้ ก็บขอ้ มลู ตวั อยา่ งเชน่ ในการกาหนดค่าใหก้ บั ตวั แปรน้ันเราสามารถนาคา่ ตวั แปรเดิมมากระทา ทางคณิตศาสตรไ์ ด้ โดยท่ีตวั แปรทางซา้ ยเปล่ียนไปตามการกระทาทางขวามือ ดงั ตวั อยา่ งต่อไปน้ ี ก. count = count +1 {เพิ่มคา่ ในตวั แปร count ข้ ึนหนึ่ง} ข. sum = sum + x {นาคา่ ใน sum บวกกบั x โดยคา่ ใน x จะไมเ่ ปล่ียน} ค. num = 3 * num {นาคา่ ใน num คณู กบั 3 และเก็บไวท้ ่ีเดิม} 13

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ ต่อไปจะกล่าวถึงการรบั ขอ้ มูลและการส่งขอ้ มูลโดยจะกล่าวถึงฟังกช์ นั ใน การรบั ขอ้ มลู จากแป้ นพิมพ์ และการส่งขอ้ มลู ออกทางจอภาพ โดยคาสงั่ ดงั กล่าว จะอยใู่ นไลบราลี stdio.h ซ่ึงจะตอ้ งเรียกออกมาก่อนดว้ ย #include Input Process Output 14

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (2) ฟังกช์ นั printf() ฟังกช์ นั น้ ีเราไดท้ ดลองใชอ้ ยา่ งงา่ ย ๆ มาแลว้ โดยใชส้ าหรบั แสดงขอ้ ความ หรือตวั แปรฟังกช์ นั printf() มีชื่อเต็มวา่ ‚print format‛ เป็ นฟังกช์ นั ที่ใชพ้ ิมพ์ ขอ้ ความต่างๆ ออกทางจอภาพโดยมีรปู แบบดงั น้ ี รูปแบบ printf(‚ขอ้ ความ‛) หรือ printf(‚รหสั ควบคุมรปู แบบ‛,ตวั แปร) หรือ printf(‚control string‛,variable list,……..); จากรปู แบบ สว่ นแรกเรียกวา่ สตริงฟอรแ์ มต เป็ นส่วนที่ใชค้ วบคุมลกั ษณะ การแสดงผล (control string) และส่วนท่ีสองหมายถึง ค่าคงที่ หรือตวั แปร (variable list) 15

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (3) ตวั อยา่ งท่ี 1 #include ‚stdio.h‛ ผลการรนั main() COMPUTER { 20 printf(‚COMPUTER\\n‛); printf(‚\\n\\nCOMPUTER‛); printf(‚%d\\n‛,20); } ซึ่งจะเห็นว่าขอ้ ความที่จะพิมพจ์ ะอย่ใู นเครื่องหมายคาพดู นอกจากน้ ียงั มี เคร่ืองหมายแบ็คสแลซตามดว้ ย n (\\n) ซึ่งเป็ นการบอกวา่ เม่ือพิมพเ์ รียบรอ้ ย แลว้ ใหข้ ้ ึนบรรทดั ใหมเ่ คร่ืองหมายน้ ีเรียกวา่ รหสั แบค๊ สแลซ (backslash) 16

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (4) รหสั แบค๊ สแลซ (backslash) รหสั ผลท่ีได้ \\n ใหข้ ้ ึนบรรทดั ใหม่ \\t ใหเ้ วน้ tab เป็ นระยะ 8 ชว่ ง \\xhh ใสต่ วั อกั ษร hh เมอ่ื เป็ นเลขฐานสิบหก \\a ส่งเสียงบีป \\\\ เคร่ืองหมาย Backslash (\\) 17

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (5) กาหนดรูปแบบ (Format specification) เคร่อื งหมาย การใชง้ าน %d ใหพ้ ิมพร์ ปู แบบเลขจานวนเต็มฐานสิบ %u ใหพ้ ิมพร์ ปู แบบเลขจานวนเต็มไม่มีเคร่ืองหมาย %f ใหพ้ ิมพร์ ปู แบบเลขทศนิยม %e ใหพ้ ิมพเ์ ลขจานวนจริงในรปู เลขยกกาลงั %c ใหพ้ ิมพต์ วั อกั ษรตวั เดียว (Char) %s ใหพ้ ิมพช์ ุดตวั อกั ษร (string) หรือขอ้ ความ %o ใหพ้ ิมพเ์ ลขฐานแปด %x ใหพ้ ิมพเ์ ลขฐานสิบหก %% ใหพ้ ิมพเ์ คร่ืองหมาย % 18

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (5) ตวั อยา่ ง ในการเขียนคาสงั่ printf หนึ่งบรรทดั เราสามารถใหพ้ มิ พต์ วั อกั ษร หลาย ๆ รปู แบบไดั ดงั เชน่ คาสงั่ ต่อไปน้ ี จะเห็นวา่ คาสงั่ น้ ีมีการพิมพห์ ลายรปู แบบและมี variable list หลายตวั ถา้ เป็ นสตริงจะอยใู่ นเครื่องหมาย ‚-‛ ถา้ เป็ นตวั อกั ษรจะอยใู่ นเคร่ืองหมาย ‘-’ สาหรบั ค่า variable list จะตอ้ งเรียกตามลาดับที่กาหนดใน controlstring ผลลพั ธจ์ ากการทาคาสงั่ จะเป็ นดงั น้ ี Sam 14 -8.760000 X 19

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (6) จากตวั อยา่ งก่อนหน้า จะสงั เกตเห็นว่าในการพิมพเ์ ลขทศนิยมขอ้ มลู ที่ใส่ ไปคอื –8.76 แต่ผลลพั ธท์ ี่ไดจ้ ะไดท้ ศนิยมหลายตาแหน่ง คาสงั่ printf สามารถ ระบุจานวนเลขทศนิยมได้ โดยใส่จานวนทศนิยมและเคร่ืองหมายจุดระหว่าง % และ f ดงั ตวั อยา่ งคาสงั่ ต่อไปน้ ี ผลลพั ธท์ ี่ไดจ้ ากการทาคาสงั่ จะเป็ นดงั น้ ี 4.567800 4.568 4.57 4.6 20

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (7) ฟังกช์ นั scanf() ฟังกช์ นั น้ ีจะตรงขา้ มกบั ฟังกช์ นั printf() โดยจะใชอ้ า่ นคา่ จากการกดแป้ น พิมพ์ท่ีอยู่ในรูปรหัส ASCIIไปเก็บในตัวแปรท่ีกาหนด และสามารถใชเ้ ป็ น รหัสควบคุมหรือ control string ระบุชนิดของขอ้ มูลที่จะเก็บในตัวแปรได้ รปู แบบของคาสงั่ เป็ นดงั น้ ี รูปแบบ scanf(‚control string‛,&variable list,……..); หรือ scanf(‚รหสั รบั ขอ้ มลู ‛,&ตวั แปรเก็บขอ้ มลู ); โดยเคร่ืองหมาย & เป็ นการช้ ีไปที่แอดเดรสหน่วยความจาของตัวแปรที่ กาหนดเพื่อใหเ้ ก็บขอ้ มลู สาหรบั control string จะเป็ นตวั บอกวา่ จะใหเ้ ก็บขอ้ มลู ในลกั ษณะใด 21

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (8) ตวั อยา่ งเช่น int num; scanf(‚%d‛,&num); เมื่อคอมพิวเตอร์ทาชุดคาสัง่ จะรอรับขอ้ มูลจากแป้ นพิมพ์ เมื่อใส่ขอ้ มูล และกด Enter จะนาขอ้ มลู ไปเก็บในตวั แปรชื่อ num ในรูปของเลขฐานสิบ เน่ืองจาก control string เป็ น %d สาหรบั control string มีไดห้ ลายตัว เชน่ เดียวกบั คาสงั่ printf() 22

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (8) พจิ ารณาชุดคาสงั่ ต่อไปน้ ี int i, j; scanf(‚%o %x‛,&i,&j); printf(‚%o %x‛,i,j); เม่ือคอมพิวเตอรท์ างานจะรบั ขอ้ มูลเขา้ ไป 2 ค่า การใส่ขอ้ มลู ระหวา่ งค่า แรกและคา่ ท่ีสองตอ้ งกดคียเ์ วน้ วรรคเป็ นการแยกคา่ ของขอ้ มลู ขอ้ มลู ค่าแรกที่รบั เขา้ ไปจะรบั ในรูปเลขฐานแปดเน่ืองจากใชร้ หสั ควบคุม เป็ น %o ค่าที่สองจะรับในรูปเลขฐานสิบหกเน่ืองจากใชร้ หัสควบคุมเป็ น %x คาสงั่ ต่อมาจะใหค้ อมพิวเตอรพ์ ิมพข์ อ้ มลู ที่เก็บอยใู่ นรูปเลขฐานแปดและ ฐานสิบหก 23

3.5 การรบั และแสดงผลขอ้ มูลเบ้ ืองตน้ (9) พิจารณาชุดคาสงั่ ต่อไปน้ ี char str[80]; printf(‚Enter a string : ‚); scanf(‚%s‛,str); รบั String ไม่ตอ้ งมี & printf(‚Here ‘ s your string: %s‛,str); จะเป็ นการประกาศตวั แปร str เป็ นตวั แปรประเภทสตริงท่ีเก็บขอ้ มลู ไดไ้ ม่ เกิน 80 ตัวอักษร และแสดงขอ้ ความใหพ้ ิมพ์สตริง ต่อมาจะรับขอ้ มูลในรูป สตริงเขา้ ไปเก็บในตวั แปร str และพิมพอ์ อกทางจอภาพ 24

3.6 โปรแกรมอนิ เตอรแ์ รคทีฟ (Interactive Program) โปรแกรมคอมพิวเตอรท์ ่ีมีการตอบสนองการทางานภายหลงั ท่ีผใู้ ชท้ าการ ป้ อนค่าอินพุทเข้าไปจะเรียกว่า โปรแกรมอินเตอร์แรคทีฟ (interactive) ตัวอย่างต่อไปน้ ีเป็ นโปรแกรมท่ีคอมพิวเตอร์จะใหป้ ้ อนค่าขอ้ มูลเป็ น ฟุต จากน้ันคอมพวิ เตอรจ์ ะคานวณคา่ ในหน่วยของน้ ิวและแสดงทางหน้าจอ #include <stdio.h> ผลการรนั main() Enter number of feet 6 { int feet, inches; Height in inches is 72 printf(‚Enter number of feet ‛); scanf(‚%d‛,&feet); inches = feet * 12; printf(‚\\nHeight in inches is %d‛,inches); } 25

3.7 คาสงั ่ พ้ ืนฐานการรบั และแสดงผลขอ้ มูล การเขียนโปรแกรมที่ถือว่าเป็ นพ้ ืนฐานท่ีสุดคือ การเขียนโปรแกรม แสดงผลทางหน้าจอและการรบั ขอ้ มลู ทางคียบ์ อรด์ เขา้ ไปประมวลผล ท่ีผ่านมา เราไดศ้ ึกษาฟังกช์ นั การรบั และแสดงผลขอ้ มลู พ้ ืนฐานมาแลว้ เราจะพบวา่ ฟังกช์ นั printf() สามารถใชแ้ สดงผลขอ้ มลู ที่เป็ นตวั อกั ขระ ขอ้ ความ หรือตัวเลขได้ พรอ้ มท้ังใส่รหัสควบคุมต่างๆ ลงไปไดด้ ว้ ย ฟังก์ชัน scanf() สามารถใชร้ ับขอ้ มูลทางคียบ์ อรด์ ได้ ท้ังตัวเลข และตัวอกั ขระ แต่ โดยทวั่ ไปแลว้ ฟังกช์ นั น้ ีนิยมใชร้ บั ตวั เลขเท่าน้ัน การรบั ขอั มลู แบบอื่นๆ มกั จะใช้ ฟังกช์ นั อ่ืนแทน โดยมีฟังกช์ นั แสดงผลและรบั ขอ้ มลู ท่ีน่าสนใจอีกดงั น้ ี ฟังกช์ นั แสดงผล putchar() แสดงอกั ขระ และ puts() แสดงขอ้ ความ ฟังกช์ นั รบั ขอ้ มูล getchar() รบั อกั ขระ, getch() รบั อกั ขระแบบไม่ตอ้ ง กด Enter และ gets() รบั ขอ้ ความ 26

สรุปทา้ ยบท 3.1 โครงสรา้ งโปรแกรม 3.2 โปรแกรมภาษาซีเบ้ ีองตน้ 3.3 ตวั แปร 3.4 การเก็บขอ้ มลู ของตวั แปร 3.5 การรบั และแสดงผลขอ้ มลู เบ้ ืองตน้ • ฟังกช์ นั printf() และ ฟังกช์ นั scanf() • รหสั แบค๊ สแลซ (backslash) และ กาหนดรปู แบบ (Format specification) 3.6 โปรแกรมอินเตอรแ์ รคทีฟ (Interactive Program) 3.7 คาสงั่ พ้ ืนฐานการรบั และแสดงผลขอ้ มลู *** ใหน้ กั เรยี นทาแบบฝึ กหดั ทา้ ยบทท่ี 3 *** 27

ใหน้ กั เรยี นเขียนโปรแกรมดงั ตอ่ ไปน้ ี 1. โปรแกรมท่ี 3.4 (หนา้ 52) 2. โปรแกรมที่ 3.5 (หนา้ 55) 3. โปรแกรมที่ 3.6 (หนา้ 56) 4. โปรแกรมท่ี 3.7 (หนา้ 56) 5. โปรแกรมที่ 3.8 (หนา้ 57) 28


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook