Your SlideShare is downloading. ×
0
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
ภาษาซี
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ภาษาซี

5,230

Published on

สไลด์การเขียนโปรแกรมภาษาซี

สไลด์การเขียนโปรแกรมภาษาซี

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,230
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
75
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. การเขียนโปรแกรมด้วยภาษาซี ณัฐวุฒิ ปอโนนสูง กลุ่มสาระฯการงานอาชีพและเทคโนโลยี โรงเรียนศรีสะเกษวิทยาลัย
  • 2. เนื้อหา <ul><li>ประวัติความเป็นมาของภาษาซี </li></ul><ul><li>แนวทางการพัฒนาโปรแกรม </li></ul><ul><li>โฟล์วชาร์ตและคำสั่งเทียม </li></ul><ul><li>โครงสร้างของโปรแกรมที่เขียนด้วยภาษาซี </li></ul><ul><li>ข้อมูลในภาษาซี </li></ul><ul><li>ตัวแปร </li></ul><ul><li>กลไกการทำงานเบื้องต้นของภาษาซี </li></ul>
  • 3. ตระหนักสักนิด...... <ul><li>การเรียนวิชานี้ให้ได้ผลดี ต้องอ่านทำความเข้าในมาก่อนล่วงหน้า และต้องลงมือวิธีคิดแก้ปัญหา คิดโปรแกรม และต้องลงมือเขียนด้วยตนเอง </li></ul><ul><li>ยิ่งเขียนโปรแกรมมาก คิดแก้โจทย์หลายประเภทมาก ๆยิ่งเข้าใจมาก </li></ul><ul><li>ภาคเรียนนี้ เหมือนการหัดขี่จักรยานให้เป็น ต้องรู้และเข้าใจส่วนต่าง ๆของจักรยาน </li></ul>
  • 4. ประวัติความเป็นมาของภาษาซี <ul><li>คิดค้นเป็นครั้งแรกโดย นายเดนนิส ริทซี่ ( Dennis Ritchie) ปี ค . ศ . 1972 </li></ul><ul><li>ปี ค . ศ . 1978 ได้รับการพัฒนาและเผยแพร่อย่างเป็นทางการ โดย Brain Kernighan และ Dennis Ritchie ได้รับการยอมรับและใช้งานอย่างกว้างขวาง จนเผยแพร่ไปทั่วโลก </li></ul><ul><li>ปี ค . ศ . 1988 สร้างมาตรฐานของภาษาซีขึ้น เรียกว่า ANSI C เพื่อใช้เป็นมาตรฐานในการสร้างภาษาซีรุนต่อ ๆไป </li></ul>
  • 5. จุดเด่นของภาษาซี <ul><li>เป็นภาษาที่มีการกำหนดมาตรฐานสำหรับเครื่องคอมพิวเตอร์ทุกรุ่น และระบบปฏิบัติการทุกชนิด </li></ul><ul><li>มีการพัฒนาตัวแปลภาษา C ขึ้นมาใช้มากมาย </li></ul><ul><li>โปรแกรมที่เขียนด้วยภาษาซี จะมีขนาดเล็ก ทำงานได้เร็ว </li></ul><ul><li>ภาษาซี มีโครงสร้างทางภาษาที่ดี </li></ul><ul><li>สามารถเขียนคำสั่งควบคุมอุปกรณ์ฮาร์ดแวร์บางส่วนได้ </li></ul><ul><li>มีฟังก์ชั่นสำเร็จรูปสำหรับงานต่าง ๆให้เลือกใช้มาก </li></ul>
  • 6. ปัญหาของโปรแกรมเมอร์มือใหม่ <ul><li>ไม่รู้สภาพแวดล้อมของระบบว่าเป็นอย่างไร ( เปรียบเหมือนกับไม่รู้วัฒนธรรม ) การรู้ว่าระบบประกอบด้วยอะไรบ้าง เป็นการทำให้เขียนโปรแกรมติดต่อกับองค์ประกอบที่ต้องการได้อย่างถูกต้อง </li></ul><ul><li>ไม่รู้หลักภาษา ( เปรียบเหมือนกับไม่รู้หลักภาษาอังกฤษ ) </li></ul><ul><li>ไม่รู้ว่าจะนำเสนอแนวคิดการแก้ปัญหา ที่เราคิดในฐานะมนุษย์ มาสู่กระบวนการแก้ไขปัญหา ที่เราคิดแทนการทำงานของคอมพิวเตอร์ ประเด็นนี้เป็นประเด็นหลักที่สำคัญมากกว่า สองประเด็นแรก ที่ผู้เขียนโปรแกรมมือใหม่มักจะประสบปัญหา ซึ่งเราสามารถพัฒนาทักษะได้โดยการทำโจทย์ปัญหาบ่อย ๆ และทำมาก ๆ จะยิ่งเกิดทักษะ </li></ul>
  • 7. คอมพิวเตอร์ทำงานอะไรได้บ้าง <ul><li>ทำหน้าที่คำนวณ </li></ul><ul><li>ทำหน้าที่รับข้อมูล </li></ul><ul><li>แสดงผลข้อมูล </li></ul><ul><li>พักข้อมูลชั่วคราวระหว่างการคำนวณ </li></ul>
  • 8. ขั้นตอนการทำงานของโปรแกรมภาษาซี # include<stdio.h> main() { printf(“Hello world”) ; } C compiler test.obj ฟังก์ชันจาก ไลบรา รี่ใน ภาษาซี linker Binary file .exe test.c ไฟล์ชื่อ test.c คอมไพล์ ลิงค์
  • 9. ขั้นตอนการพัฒนาโปรแกรมเบื้องต้น <ul><li>สำหรับในรายวิชานี้ เราจะไม่ลงลึกในกระบวนการออกแบบเชิงวัตถุ แต่จะหยิบเอาเพียงบางส่วนของกระบวนการมาใช้เท่านั้น </li></ul><ul><li>กระบวนการที่เราจะเขียนโปรแกรมในรายวิชานี้ จะยึดหลักต่อไปนี้ </li></ul><ul><li>การวิเคราะห์ปัญหา และความต้องการของผู้ใช้งาน </li></ul><ul><li>การออกแบบอัลกอริทึมของโปรแกรม </li></ul><ul><li>การพัฒนาลงบนคอมพิวเตอร์ </li></ul><ul><li>- แปลงอัลกอริทึมและข้อกำหนดของข้อมูล ให้มาอยู่ในรูปโปรแกรม </li></ul><ul><li>ทดสอบการทำงานของโปรแกรม </li></ul>
  • 10. การนำเสนออัลกอริทึม <ul><li>ในการเขียนโมเดลของระบบ ส่วนที่จำเป็นอย่างหนึ่งคือ ส่วนอธิบายกลไกการทำงานของโปรแกรม โดยอธิบายในลักษณะของขั้นตอนการทำงานว่ามีลำดับอย่างไร มีทิศทางการทำงานอย่างไร </li></ul><ul><li>ขั้นตอนการทำงานของโปรแกรมนี้เอง เรียกว่า อัลกอริทึม ( Algorithm) </li></ul><ul><li>เรานิยมเขียนอัลกอริทึมอธิบายในรูปแบบภาษาที่มนุษย์เข้าใจ ไม่ขึ้นกับภาษาคอมพิวเตอร์ใด </li></ul>
  • 11. การนำเสนออัลกอริทึม <ul><li>การเขียนอธิบายอัลกอริทึม สามารถทำได้ 2 ลักษณะคือ </li></ul><ul><li>ลักษณะการเขียนอธิบายด้วยข้อความ ซึ่งเรียกว่า Pseudo code หรือ Psedo algorithm </li></ul><ul><li>ลักษณะการเขียนอธิบายด้วยแผนภาพ เรียกว่า Flowcharg หรือ Flow diagram </li></ul>
  • 12. Pseudo Algorithm <ul><li>โจทย์ จงเขียนโฟล์วชาร์ตโปรแกรมรับค่าเลขจำนวนเต็ม 2 จำนวน และหาผลบวกของเลขทั้ง 2 จำนวนนั้น </li></ul>START READ X READ Y COMPUTE SUM= X + Y PRINTF SUM STOP START STOP INPUT X,Y PRINT SUM SUM=X+Y การเขียนอัลกอริทึมโดยใช้ประโยคภาษาอังกฤษ FLOWCHART
  • 13. สัญญลักษณ์รูปภาพของโฟลว์ชาร์ต <ul><li>โฟลว์ชาร์ต คือ การแสดงขั้นตอนการทำงานโดยใช้สัญลักษณ์รูปภาพเป็นตัวสื่อความหมาย และใช้ลูกศรกำหนดทิศทางการทำงานในแต่ละขั้นตอน </li></ul>จุดเริ่มต้น หรือจุดสิ้นสุด ทิศทาง จุดเชื่อมต่อ แสดงผลออกทางเครื่องพิมพ์ รับข้อมูล หรือแสดงข้อมูล รับข้อมูลเข้าจากคีย์บอร์ด การทำงาน 1 ขั้นตอน การตัดสินใจ หรือเปรียบเทียบ
  • 14. Flow diagram START STOP กำหนดเลขรถ รถมา หมายเลขรถ = ที่กำหนด เดินขึ้นรถ มา ยัง ไม่ใช่ ใช่
  • 15. ตัวอย่างโปรแกรมภาษาซี <ul><li>/*say hello to user */ </li></ul><ul><li>#include<stdio.h> </li></ul><ul><li>main() </li></ul><ul><li>{ </li></ul><ul><li>printf(“Hello C programmer”); </li></ul><ul><li>} </li></ul>ส่วนหัวของโปรแกรม ( Head) ส่วนตัวโปรแกรม ( Body)
  • 16. รูปแบบการเขียนคำสั่งภาษาซี <ul><li>คำสั่งในภาษาซี จะต้องเขียนด้วยตัวอักษรตัวเล็ก เช่น printf( ); </li></ul><ul><li>ทุกคำสั่งต้องลงท้ายด้วยเครื่องหมาย ; (semi-colon) </li></ul><ul><li>เราสามารถเขียนคำสั่งให้ต่อเนื่องกันไปก็ได้ แต่ไม่สะดวกในการตรวจสอบ จึงนิยมเขียนคำสั่งเพียงหนึ่งคำสั่งในแต่ละบรรทัด </li></ul>
  • 17. โครงสร้างของโปรแกรมภาษาซี <ul><li>ส่วนหัวของโปรแกรม จะเริ่มต้นตั้งแต่บรรทัดแรกของโปรแกรม จนมาถึงก่อนบรรทัด ฟังก์ชั่น main() ประกอบด้วย </li></ul><ul><li>-Preprocessing Directive เช่น #include ,#define </li></ul><ul><li>- ส่วนการนิยามชื่อ ( การประกาศตัวแปร ) </li></ul><ul><li>ส่วนตัวของโปรแกรม ประกอบด้วยคำสั่งต่างๆ ในโปรแกรม </li></ul><ul><li>- คำสั่งเดี่ยว </li></ul><ul><li>- ฟังก์ชั่น </li></ul>
  • 18. Preprocessing Directive(#) <ul><li>Preprocessing Directive คือเครื่องหมายที่แจ้งให้คอมไพเลอร์กระทำการอย่างใดอย่างหนึ่ง ( เมื่อทำเสร็จ ณ จุดนั้นแล้ว จึงค่อยๆ แปลโปรแกรมต่อไป </li></ul><ul><li>อย่าลืมว่า กระบวนการที่เกิดขึ้นโดย Preprocessing Directive นั้นเกิดแก่ตัวคอมไพเลอร์ ( ผู้เขียนโปรแกรมภาษาซีสั่งให้คอมไพเลอร์ทำ ) และเกิดในขณะแปลโปรแกรม ไม่ใช่ตอนที่โปรแกรมรัน </li></ul><ul><li>คำสั่งที่เราสั่งคอมไพเลอร์นี้ จะขึ้นต้นด้วยเครื่องหมาย # เสมอ </li></ul>
  • 19. #Include Directive <ul><li>#Include directive เป็นไดเรคทีพที่ทำหน้าที่บอกให้คอมไพเลอร์ไปเปิดไฟล์อื่นเข้ามาแปลร่วมด้วย </li></ul><ul><li>ไฟล์ที่จะนำมาแปลร่วมด้วย จะต้องเขียนอยู่ภายใต้กฎโครงสร้างภาษาซี </li></ul><ul><li>ไฟล์ .h ย่อมาจาก header file หรือไฟล์ส่วนหัว ซึ่งเป็นไฟล์ต้นฉบับ ( source code) ที่นิยามชื่อฟังก์ชั่นหรือชื่อต่าง ๆ ไว้สำหรับใช้ในโปรแกรม </li></ul><ul><li>เวลาคอมไพเลอร์เจอ #include< > หรือ #include” “ คอมไพเลอร์จะไปเปิดไฟล์ดังกล่าวที่ไดเรคทอรี่ include ( หรือกรณี “ “ จะพยายามเปิดไดเรคทอรี่เดียวกันกับไฟล์ต้นฉบับก่อน ) เพื่อดึงเอาข้อความในนั้นมาคอมไพล์ เมื่อหมดสิ้นแล้ว จึงคอมไพล์ต่อจากที่ค้างไว้ต่อไป </li></ul>
  • 20. #Include Directive <ul><li>ภาษาซี ใช้การเรียกใช้ Header file เพื่อให้โปรแกรมที่เราเขียนขึ้นรู้จักฟังก์ชั่นที่นิยามไว้เป็นมาตรฐานในตัวภาษาซี </li></ul><ul><li>ดังนั้น ผู้เขียนโปรแกรมจะต้องทราบว่าจะต้องใช้ฟังก์ชั่นใด ชื่อใดจะต้องเรียกใช้ Header file ตัวใด หากไม่รู้ก็สามารถค้นหาจาก Help ของคอมไพเลอร์ได้ </li></ul><ul><li>#include<stdio.h> อ่านไฟล์จากไดเรคทอรีหลัก </li></ul><ul><li>#include”file name” อ่านไฟล์จากไดเรคทอรี่ปัจจุบัน หรือที่กำหนด </li></ul>
  • 21. #define Directive <ul><li>#define Directive ใช้สำหรับนิยามชื่อแทนส่วนของโปรแกรม </li></ul><ul><li>เวลาที่คอมไพเลอร์แปลไปจนพบชื่อที่นิยามด้วย #define เมื่อไหร่ก็จะเปลี่ยนชื่อนั้นเป็นส่วนที่นิยามไว้ แล้วจึงค่อยแปลต่อไป </li></ul><ul><li>ประโยชน์ของ #define คือแทนที่เราจะกำหนดค่า หรือบางสิ่งบางอย่างที่หมายถึงสิ่งเดียวกันซ้ำ ๆ ในหลาย ๆจุดของโปรแกรม แล้วเมื่อต้องการแก้ไข จะต้องตามไปแก้ทุกจุด ทำให้เสียเวลา ไม่สะดวก การใช้ #define จะทำให้เรานิยามไว้จุดเดียว สามารถแก้ไขได้ทุกจุดในโปรแกรม </li></ul>
  • 22. หมายเหตุ (comment) <ul><li>หมายเหตุ คือ องค์ประกอบภายในโปรแกรมต้นฉบับ (Source code) ที่เราเขียนขึ้น แต่ไม่ต้องการให้คอมไพเลอร์กระทำการใด ๆ </li></ul><ul><li>การเขียนหมายเหตุสามารถทำได้ 2 ลักษณะคือ </li></ul><ul><li>- ใช้เครื่องหมาย /* และ */ คร่อมพื้นที่ที่เป็นหมายเหตุ </li></ul><ul><li>- ใช้เครื่องหมาย // นำหน้าข้อความที่เป็นหมายเหตุในบรรทัดนั้นๆ </li></ul><ul><li>/*say hello to user*/ </li></ul><ul><li>#include<stdio.h> //header file </li></ul><ul><li>main() </li></ul><ul><li>{ </li></ul><ul><li>printf(“Hello C programmer”); </li></ul><ul><li>} </li></ul>ระหว่างเครื่องหมาย /* และ */ คือหมายเหตุ ตั้งแต่ตรงนี้เป็นต้นไปคือหมายเหตุ
  • 23. องค์ประกอบของฟังก์ชั่น <ul><li>โปรแกรมภาษาซี จะทำงานได้สมบูรณ์ต้องมีฟังก์ชั่น main() เป็นฟังก์ชั่นหลักของโปรแกรม </li></ul><ul><li>ฟังก์ชั่นมีองค์ประกอบดังนี้ </li></ul><ul><li>- ส่วนหัวของฟังก์ชั่น ทำหน้าที่กำหนดชื่อฟังก์ชั่นไว้อ้างอิง และกำหนดการรับค่าเข้ามาคำนวณ และส่งค่ากลับออกมาเป็นผลลัพท์ </li></ul><ul><li>- ส่วนตัวของฟังก์ชั่น ทำหน้าที่กำหนดการทำงาน และอื่นใดที่จะมีผลเฉพาะในฟังก์ชั่น </li></ul>
  • 24. องค์ประกอบของฟังก์ชั่น <ul><li>ชนิดค่าส่งกลับ ชื่อฟังก์ชั่น ( พารามิเตอร์รับค่าเข้า ) </li></ul><ul><li>{ </li></ul><ul><li>ส่วนกำหนดตัวแปรใช้ในฟังก์ชั่น </li></ul><ul><li>ส่วนคำสั่ง </li></ul><ul><li>} </li></ul><ul><li>int main() </li></ul><ul><li>{ </li></ul><ul><li>int a; </li></ul><ul><li>printf(“Hello worldn”); </li></ul><ul><li>return 0; </li></ul><ul><li>} </li></ul>หัวฟังก์ชั่น ตัวฟังก์ชั่น กำหนดตัวแปรใช้ภายใน ส่วนคำสั่ง
  • 25. องค์ประกอบของฟังก์ชั่น <ul><li>จากตัวอย่าง จะเห็นว่า </li></ul><ul><li>- พารามิเตอร์ที่ใช้ผ่านค่าเป็น void ในที่นี้หมายถึง”ไม่มีค่าส่งเข้า” ( ภาษาซี กำหนดความหมายของ void ไว้ 2 อย่างคือ”ไม่มี” หรือ “ไม่เจาะจง” กรณีหลังมีค่า แต่ไม่ทราบชนิดแน่นอน ( เราจะมาศึกษาภายหลัง ) </li></ul><ul><li>- ค่าส่งกลับเป็น int แสดงว่าเมื่อฟังก์ชั่นนี้ทำงานเสร็จจะ”ให้ค่า” ออกมาค่าหนึ่ง มีชนิดเป็น int </li></ul><ul><li>- ส่วนตัวของฟังก์ชั่น ตั้งแต่เครื่องหมาย { ถึง } อันกำหนดขอบเขตของ”กลุ่มคำสั่ง” ( compound statement) กลุ่มคำสั่งในภาษาซี มีความหมายเท่ากับ หนึ่งคำสั่ง </li></ul>
  • 26. องค์ประกอบของฟังก์ชั่น <ul><li>- ภายในส่วนคำสั่ง มีการกำหนดตัวแปรใช้ภายใน จากตัวอย่างกำหนดให้ a เป็นตัวแปรชนิด int และมีส่วนคำสั่งการทำงาน 2 คำสั่ง และจบคำสั่งด้วยเครื่องหมาย ; </li></ul>
  • 27. ชื่อ ( Identifiers) <ul><li>ชื่อ ( Identifiers) ในภาษาซีหมายถึง การเอาตัวอักขระมาเขียนกำหนด ติดต่อกันต่อเนื่องเป็นคำ เพื่อใช้ในการนำเสนอสิ่งต่าง ๆในโปรแกรม </li></ul><ul><li>ชื่อมี 2 ประเภท </li></ul><ul><li>- คำสงวน ( keyword) คือคำที่ภาษาซีกำหนดไว้ก่อนแล้ว เราจะนิยามซ้ำไม่ได้ </li></ul><ul><li>- คำที่ผู้ใช้ตั้งขึ้นใหม่ ( user define words) เป็นคำที่ภาษาซีไม่ได้กำหนดไว้ ผู้เขียนโปรแกรมสามารถตั้งชื่อใหม่ได้ เพื่อใช้สื่อสารในโปรแกรม </li></ul>
  • 28. ชื่อ ( Identifiers) <ul><li>ชื่อ ( Identifiers) มีกฎการกำหนดไว้ดังนี้ </li></ul><ul><li>ต้องขึ้นต้นด้วยตัวอักษร A-Z หรือ a-z หรือเครื่องหมาย _ (underscore) เท่านั้น </li></ul><ul><li>ภายในชื่อตัวแปรให้ใช้ตัวอักษร A-Z หรือ a-z หรือเครื่องหมาย _ (underscore) </li></ul><ul><li>ห้ามเว้นช่องว่างภายในตัวแปร หรือใช้สัญลักษณ์อื่นนอกเหนือจากที่กำหนดไว้ในข้อ 2 </li></ul><ul><li>การใช้อักขระเล็กใหญ่ ภาษาซี ถือว่าแตกต่างกัน เช่น Test จะถือว่าเป็นคนละตัวกับ test </li></ul>
  • 29. ตัวแปร (Variables) <ul><li>ตัวแปร (Variables) คือพื้นที่หน่วยความจำที่กำหนดขึ้นเพื่อเก็บข้อมูล ( เป็นการชั่วคราวสำหรับใช้ในโปรแกรม ) โดยการนิยามตัวแปรคือ การกำหนดพื้นที่เก็บข้อมูล โดยมีการตั้งชื่อเพื่อเรียกพื้นที่ดังกล่าวด้วย </li></ul><ul><li>การกำหนดตัวแปร สามารถกำหนดได้ 2 ระดับคือ </li></ul><ul><li>- การกำหนดนอกนิยามฟังก์ชั่น ซึ่งทำให้ได้ตัวแปรแบบ Global variables โดยตัวแปรชนิดนี้สามารถเรียกใช้ทุกฟังก์ชั่น </li></ul><ul><li>- การกำหนดเป็นส่วนหนึ่งในการนิยามฟังก์ชั่น ซึ่งจะทำให้ได้ตัวแปรแบบโลคอล ( Local variables) โดยตัวแปรชนิดนี้สามารถเรียกใช้ได้ภายในฟังก์ชั่นเท่านั้น </li></ul>
  • 30. รูปแบบการประกาศตัวแปร <ul><li>การสร้างตัวแปรขึ้นมาใช้งาน ในภาษาซีจะเรียกว่าการประกาศตัวแปร ( Variable Declaration) ซึ่งจะต้องทำให้ถูกต้องตามรูปแบบภาษาซีที่กำหนด </li></ul><ul><li>ชนิดของตัวแปร ชื่อตัวแปรที่ต้องการจะใช้ </li></ul><ul><li>เช่น int num ; // สร้างตัวแปรชื่อ num เพื่อเก็บข้อมูลชนิดตัวเลขจำนวนเต็ม </li></ul><ul><li>float y ; // สร้างตัวแปรชื่อ y เพื่อเก็บข้อมูลชนิดตัวเลขทศนิยม </li></ul><ul><li>การกำหนดข้างบน หมายถึงการจองพื้นที่ในหน่วยความจำ แต่ไม่ได้กำหนดค่าเริ่มต้นให้กับพื้นที่ ถ้าเราจะกำหนดค่าเริ่มต้นให้ด้วย ทำได้โดยใช้เครื่องหมาย = ตามด้วยค่าคงที่ประจำตัวแปรนั้น ๆ </li></ul><ul><li>เช่น int num = 20; </li></ul>
  • 31. นิพจน์ ( Expressions) <ul><li>นิพจน์ ( Expressions) คือ การกระทำใดๆ เพื่อให้ได้ค่าของการกระทำออกมาหนึ่งค่า </li></ul><ul><li>นิพจน์หนึ่ง ๆประกอบด้วยองค์ประกอบ 2 ส่วนคือ ตัวกระทำ (Operator) และตัวถูกกระทำ (Operand) รูปแบบการจัดวางของนิพจน์ประกอบไปด้วยตัวกระทำ และตัวถูกกระทำ จะมีรูปแบบใดรูปแบบหนึ่ง เช่น </li></ul><ul><li>ตัวถูกกระทำ ตัวกระทำ ตัวถูกกระทำ </li></ul><ul><li>ตัวกระทำ ตัวถูกกระทำ </li></ul><ul><li>ตัวถูกกระทำ ตัวกระทำ </li></ul><ul><li>ตัวถูกกระทำ ตัวกระทำ ตัวถูกกระทำ ตัวกระทำ ..... </li></ul>
  • 32. นิพจน์ ( Expressions) <ul><li>ตัวถูกกระทำของนิพจน์ อาจเป็นค่าคงที่ ตัวแปร นิพจน์ หรือฟังก์ชั่นที่มีค่าส่งกลับ อย่างใดอย่างหนึ่ง </li></ul><ul><li>การเขียนนิพจน์ซ้อนนิพจน์กระทำได้ เพราะตัวถูกกระทำของนิพจน์ อาจเป็นนิพจน์ของอีกตัวหนึ่งก็ได้ </li></ul><ul><li>ลำดับก่อนหลังของการกระทำ มีข้อกำหนดเฉพาะของโปรแกรม อาจไม่เป็นที่ต้องการของผู้เขียนโปรแกรมก็ได้ ซึ่งเราสามารถบังคับให้การซ้อนนิพจน์ หรือการกระทำก่อนหลังของตัวกระทำเป็นไปอย่างถูกต้อง โดยการใช้เครื่องหมายวงเล็บควบคุมได้ เช่น </li></ul><ul><li>(6+5)*(7*(2+3)) </li></ul>
  • 33. นิพจน์ ( Expressions) <ul><li>การเขียนนิพจน์ในภาษาซี คือ การนำข้อมูลหรือตัวแปรในภาษาซี มาดำเนินการโดยใช้เครื่องหมายทางคณิตศาสตร์ ตรรกศาสตร์ หรือเครื่องหมายเปรียบเทียบที่มีความหมายในภาษาซี เป็นตัวสั่งงาน </li></ul><ul><li>นิพจน์ทางคณิตศาสตร์ การเขียนนิพจน์ทางคณิตศาสตร์ในภาษาซี เหมือนกับการเขียนนิพจน์ทางคณิตศาสตร์ปกติ เพียงแต่เปลี่ยนมาใช้เครื่องหมายทางคณิตศาสตร์ของภาษาซีแทน </li></ul>2*r 2r 2*x*y+4*z 2xy+4z x+y-z x+y-z นิพจน์ทางคณิตศาสตร์ในภาษาซี นิพจน์ทางคณิตศาสตร์ปกติ
  • 34. นิพจน์ถ่ายค่า ( Assignment Expressions) <ul><li>นิพจน์ถ่ายค่า (Assignment Exprissions) คือนิพจน์ที่ประกอบด้วยตัวถูกกระทำทางซ้าย เครื่องหมายเท่ากับ (=) และตัวถูกกระทำทางขวา ดังรูป </li></ul><ul><li>การกระทำของนิพจน์ถ่ายค่า คือการทำสำเนา ( Copy) ค่าที่ได้จากตัวถูกกระทำทางขวา มาบรรจุไว้ในหน่วยความจำที่ทางซ้าย เช่น </li></ul><ul><li>a = 3+5 </li></ul>Lvalue = Rvalue กระทำ 3+5 ได้ผลลัพธ์ 8 นำไปเก็บไว้ในพื้นที่หน่วยความจำของตัวแปร a
  • 35. คำสั่ง คำสั่งว่าง และกลุ่มคำสั่งว่าง <ul><li>คำสั่ง ( Statements) คือ ขั้นตอนในการทำงานหนึ่งขั้นตอน </li></ul><ul><li>คำสั่งว่าง (Null statements) คือ คำสั่งที่มีแต่เครื่องหมาย ; อันหมายถึงการไม่ทำอะไรเลย ซึ่งมีประโยชน์แฝงต่อไป เช่น การวนรอบหนึ่งหมื่นครั้ง แต่ละครั้งไม่ทำอะไรเลย เท่ากับโปรแกรมจะเสียเวลาเท่ากับการที่คอมพิวเตอร์ใช้ในการวนรอบแต่ละครั้งเป็นจำนวนหมื่นครั้ง </li></ul><ul><li>กลุ่มคำสั่ง ( Compound Statements) คือการนำเอาคำสั่งหลายคำสั่งมาเขียนเรียงกัน แล้วปิดด้วยเครื่องหมาย { } โดยภาษาซีจะพิจารณากลุ่มคำสั่งมีลักษณะเทียบเท่ากับคำสั่งเพียงคำสั่งเดียว </li></ul><ul><li>กลุ่มคำสั่งว่าง (Null Compound Statements) คือ กลุ่มคำสั่งที่เขียนแต่ { } เท่านั้น </li></ul>
  • 36. ข้อควรจำในการเขียนนิพจน์ภาษาซี <ul><li>ค่าที่ได้จากการกระทำของนิพจน์ใด ๆ จะมีค่าผลลัพธ์ออกมาเพียงหนึ่งค่าเมื่อคำนวณเสร็จสิ้น </li></ul><ul><li>การเขียนนิพจน์อาจจะใช้หลายบรรทัดก็ได้ โดยการขึ้นบรรทัด ณ จุดที่อยู่ระหว่างตัวกระทำ และตัวถูกกระทำ เช่น </li></ul><ul><li>(5 *b) /3 + </li></ul><ul><li>a – 2 </li></ul><ul><li>มีค่าเท่ากับการเขียน </li></ul><ul><li>(5*b)/3 +a-2 </li></ul>
  • 37. ข้อควรจำในการเขียนนิพจน์ภาษาซี <ul><li>ภาษาซีไม่มีการตรวจสอบชนิดของตัวถูกกระทำว่าสอดคล้องระหว่างการกระทำหรือไม่ เช่น เราสามารถเอาค่าชนิด int กับ float มาคูณกันได้ ในบางกรณีจะทำให้การคำนวณผิดพลาดได้ เพื่อไม่ให้เกิดปัญหา เราจะใช้การแปลงชนิดของข้อมูลมาช่วย โดยการเขียนชนิดของข้อมูลที่ต้องการไว้ในวงเล็บ วางหน้าตัวถูกกระทำที่ต้องการแปลงชนิดที่ส่งออกมา เช่น </li></ul><ul><li>int a = 7; </li></ul><ul><li>float b = 4.3; </li></ul><ul><li>…… </li></ul><ul><li>a = (int)b+5; </li></ul><ul><li>b = (float) a-2.3; </li></ul>ค่าใน b ยังคงเป็น 4.3 เหมือนเดิม แต่ค่าที่นำมาบวก 5 คือ 4( ตัดทศนิยมที้งหมด ) ค่าใน a ยังคงเป็น 7 เหมือนเดิม แต่ค่าที่นำมาลบ 2.3 คือ 7.0( เติม 0 เข้าไป )
  • 38. การคำนวณ สมการและนิพจน์ <ul><li>คอมพิวเตอร์มีหน้าที่หลักคือการคำนวณ ดังนั้นเราจึงอาจกล่าวได้ว่า การคำนวณคือหัวใจของโปรแกรม </li></ul><ul><li>ในการคำนวณเราอาจนึกถึงสมการคณิตศาสตร์ เช่น y=f(x) ซึ่งหมายถึงการที่ฟังก์ชั่น x รับค่า x เข้าไปคำนวณ แล้วได้ผลลัพธ์ออกมาเก็บไว้ที่ y </li></ul><ul><li>การคำนวณในภาษาซี เปรียบได้กับรากฐานของสมการคณิตศาสตร์ แต่การคำนวณหรือการกระทำ (operation) ของภาษาซีนั้นกว้างขวางกว่าการคำนวณทางคณิตศาสตร์นัก </li></ul><ul><li>ข้อสังเกตของการคำนวณ หรือการกระทำในภาษาซี จะมีองค์ประกอบดังนี้ </li></ul><ul><li>- การกระทำในภาษาซีจะต้องประกอบไปด้วย ตัวกระทำ (operator) และตัวถูกกระทำ (operand) โดยจะประกอบขึ้นมาเป็นองค์รวมเรียกว่า นิพจน์ (Expression) </li></ul><ul><li>- การกระทำของนิพจน์ใด ๆ ในภาษาซี จะได้ผลลัพธ์ออกมาหนึ่งค่า </li></ul>
  • 39. การคำนวณ สมการและนิพจน์ <ul><li>ตัวถูกกระทำในนิพจน์อาจเป็นได้ตั้งแต่ ค่าคงที่ ตัวแปร ( ใช้ค่าในตัวแปรเพื่อมากระทำ ) นิพจน์ ( ใช้ค่าผลลัพธ์ของนิพจน์เพื่อมากระทำ ) ฟังก์ชั่น ( ใช้ค่าที่ส่งกลับมาจากฟังก์ชั่นเพื่อนำมากระทำ ) </li></ul><ul><li>เมื่อนำนิพจน์ใดๆ มาต่อท้ายด้วยเครื่องหมาย ; จะทำให้นิพจน์นั้นกลายเป็นคำสั่ง ( statement) </li></ul>
  • 40. นิพจน์ <ul><li>นิพจน์ในภาษาซีมีรูปแบบการเรียงตัวกระทำ (opertor) และตัวถูกกระทำ (operand) อย่างใดอย่างหนึ่งดังนี้ </li></ul><ul><li>ตัวกระทำ ตัวถูกกระทำ </li></ul><ul><li>ตัวถูกกระทำ ตัวกระทำ </li></ul><ul><li>ตัวถูกกระทำ ตัวกระทำ ตัวถูกกระทำ </li></ul><ul><li>ตัวถูกกระทำ ตัวกระทำ ตัวถูกกระทำ ตัวกระทำ ตัวถูกกระทำ ... </li></ul><ul><li>&a </li></ul><ul><li>a++ </li></ul><ul><li>a*3 </li></ul><ul><li>(a>5)?(b+2):0 </li></ul><ul><li>a++, b+=10,c-=0.5,d-- </li></ul>
  • 41. ตัวอย่างนิพจน์ <ul><li>7 + 5 </li></ul><ul><li>a + b </li></ul><ul><li>(a*3)+5 </li></ul><ul><li>20* sin(2.12) </li></ul>

×