Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

เรื่องภาษาซี

3,183 views

Published on

เรื่องภาษาซี

Published in: Education
  • Be the first to comment

เรื่องภาษาซี

  1. 1. 1 โครงงาน เรื่อง ภาษาซี นางสาว อริษา ทองศรี ม.5/3 เลขที่ 25 โรงเรียนเฉลิมพระเกียรติสมเด็จพระศรีนครินทร์ กาญจนบุรี ในพระราชูปถัมภ์สมเด็จพระเทพรัตนราชสุดาฯสยามบรมราชกุมารี สานักงานเขตพื้นที่การศึกษามัธยมศึกษาเขต๘
  2. 2. 2 คำนำ รายงานฉบับนี้เป็นส่วนหนึ่งของรายวิชาโปรแกรมสานักงานขั้นสูง2 เพื่อเป็นประโยชน์แก่ผู้อ่านหรือผู้ ที่สนใจที่จะศึกษาเกี่ยวกับภาษาซี ซึ่งผู้จัดทาขึ้นเพื่อศึกษาสื่อเพื่อการศึกษา ผู้จัดทาหวังเป็นอย่างยิ่งว่ารายงานฉบับนี้จะเป็นประโยชน์แก่ผู้อ่านหรือผู้ที่สนใจที่จะศึกษาเกี่ยวกับสื่อ เพื่อการศึกษาอาเซียน หากมีข้อบกพร่องประการใด ผู้จัดทาขออภัยไว้ณ โอกาสนี้ด้วย อริษา ทองศรี
  3. 3. 3 สารบัญ ภำษำซี (C Programming Language)..........................................................................................................4 วิวัฒนำกำรของภำษำซี.................................................................................................................................5 กำรเขียนโปรแกรมแบบมีเงื่อนไข.....................................................................................................................6 กำรประกำศตัวแปร....................................................................................................................................10 โครงสร้ำงพื้นฐำนของภำษำซี.......................................................................................................................14 บรรณำนุกรม ............................................................................................................................................18
  4. 4. 4 ภาษาซี (C Programming Language) ภำษำซี เป็นกำรเขียนโปรแกรมพื้นฐำน สำมำรถประยุกต์ใช้กับงำนต่ำงๆได้มำกมำย ระบบปฏิบัติกำรคอมพิวเตอร์ ทำงคณิตศำสตร์ โปรแกรมทำงไฟฟ้ำ อิเล็กทรอนิกส์ ไมโครคอนโทรลเลอร์ และยังมีโปรแกรมอื่นๆ ที่มีภำษำซีประยุกต์ใช้กันอีกมำกมำย ภำษำซีเป็นภำษำที่ถือว่ำเป็นทั้งภำษำระดับสูงและระดับต่ำ ถูกพัฒนำโดยเดนนิส ริดชี (Dennis Ritche) แห่ง ห้องทดลองเบลล์ (Bell Laboratories) ที่เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสได้ใช้หลักกำรของภำษำ บีซีพีแอล (BCPL : Basic Combine Programming Language) ซึ่งพัฒนำขึ้นโดยเคน ทอมสัน (Ken Tomson) กำรออกแบบและพัฒนำ ภำษำซีของเดนนิส ริดชี มีจุดมุ่งหมำยให้เป็นภำษำสำหรับใช้เขียนโปรแกรมปฏิบัติกำรระบบยูนิกซ์ และได้ตั้งชื่อว่ำ ซี (C) เพรำะเห็นว่ำ ซี (C) เป็นตัวอักษรต่อจำกบี (B) ของภำษำ BCPL ภำษำซีถือว่ำเป็นภำษำระดับสูงและภำษำระดับต่ำ ทั้งนี้ เพรำะ ภำษำซีมีวิธีใช้ข้อมูลและมีโครงสร้ำงกำรควบคุมกำรทำงำนของโปรแกรมเป็นอย่ำงเดียวกับภำษำของโปรแกรม ระดับสูงอื่นๆ จึงถือว่ำเป็นภำษำระดับสูง ในด้ำนที่ถือว่ำภำษำซีเป็นภำษำระดับต่ำ เพรำะภำษำซีมีวิธีกำรเข้ำถึงในระดับ ต่ำที่สุดของฮำร์ดแวร์ ควำมสำมำรถทั้งสองด้ำนของภำษำนี้เป็นสิ่งที่เกื้อหนุนซึ่งกันและกัน ควำมสำมำรถระดับต่ำทำให้ ภำษำซีสำมำรถใช้เฉพำะเครื่องได้ และควำมสำมำรถระดับสูง ทำให้ภำษำซีเป็นอิสระจำกฮำร์ดแวร์ ภำษำซีสำมำรถสร้ำง
  5. 5. 5 รหัสภำษำเครื่องซึ่งตรงกับชนิดของข้อมูลนั้นได้เอง ทำให้โปรแกรมที่เขียนด้วยภำษำซีที่เขียนบนเครื่องหนึ่ง สำมำรถ นำไปใช้กับอีกเครื่องหนึ่งได้ ประกอบกับกำรใช้พอยน์เตอร์ในภำษำซี นับได้ว่ำเป็นตัวอย่ำงที่ดีของกำรเป็นอิสระจำก ฮำร์ดแวร์ วิวัฒนาการของภาษาซี วิวัฒนำกำรของภำษำซี - ค.ศ. 1970 มีกำรพัฒนำภำษำ B โดย Ken Thompson ซึ่งทำงำนบนเครื่อง DEC PDP-7 ซึ่ง ทำงำนบนเครื่อง ไมโครคอมพิวเตอร์ไม่ได้ และยังมีข้อจำกัดในกำรใช้งำนอยู่ (ภำษำ B สืบทอดมำจำก ภำษำ BCPL ซึ่งเขียนโดย Marth Richards) - ค.ศ. 1972 Dennis M. Ritchie และ Ken Thompson ได้สร้ำงภำษำ C เพื่อเพิ่มประสิทธิภำพ ภำษำ B ให้ดียิ่งขึ้น ใน ระยะแรกภำษำ C ไม่เป็นที่นิยมแก่นักโปรแกรมเมอร์โดยทั่วไปนัก - ค.ศ. 1978 Brian W. Kernighan และ Dennis M. Ritchie ได้เขียนหนังสือเล่มหนึ่งชื่อว่ำ The C Programming Language และหนังสือเล่มนี้ทำให้บุคคลทั่วไปรู้จักและนิยมใช้ภำษำ C ในกำรเขียน โปรแกรมมำกขึ้น - แต่เดิมภำษำ C ใช้ Run บนเครื่องคอมพิวเตอร์ 8 bit ภำยใต้ระบบปฏิบัติกำร CP/M ของ IBM PC ซึ่งในช่วงปี ค. ศ. 1981 เป็นช่วงของกำรพัฒนำเครื่องไมโครคอมพิวเตอร์ ภำษำ C จึงมี บทบำทสำคัญในกำรนำมำใช้บนเครื่อง PC ตั้งแต่นั้น เป็นต้นมำ และมีกำรพัฒนำต่อมำอีกหลำย ๆ ค่ำย ดังนั้นเพื่อกำหนดทิศทำงกำรใช้ภำษำ C ให้เป็นไปแนวทำงเดียวกัน ANSI (American National Standard Institute) ได้กำหนดข้อตกลงที่เรียกว่ำ 3J11 เพื่อสร้ำงภำษำ C มำตรฐำน ขึ้นมำ เรียนว่ำ ANSI C - ค.ศ. 1983 Bjarne Stroustrup แห่งห้องปฏิบัติกำรเบล (Bell Laboratories) ได้พัฒนำภำษำ C++ ขึ้นรำยละเอียด และควำมสำมำรถของ C++ มีส่วนขยำยเพิ่มจำก C ที่สำคัญ ๆ ได้แก่ แนวควำมคิดของกำรเขียนโปรแกรมแบบกำหนด วัตถุเป้ำหมำยหรือแบบ OOP (Object Oriented Programming) ซึ่งเป็นแนวกำรเขียนโปรแกรมที่เหมำะกับกำรพัฒนำ โปรแกรมขนำดใหญ่ที่มีควำมสลับซับซ้อนมำก มีข้อมูลที่ใช้ในโปรแกรมจำนวนมำก จึงนิยมใช้เทคนิคของกำรเขียน โปรแกรมแบบ OOP ในกำรพัฒนำโปรแกรมขนำดใหญ่ในปัจจุบันนี้
  6. 6. 6 การเขียนโปรแกรมแบบมีเงื่อนไข 1. if else if 2. switch case if else if IF เป็นโครงสร้ำงภำษำที่สำคัญอย่ำงหนึ่ง ใช้ในกำรตรวจสอบเงื่อนไขกำรทำงำน และกำหนดทิศทำงในกำรทำงำนที่ เหมำะสมกับเงื่อนไขนั้น ซึ่งโครงสร้ำงของ if ก็เป็นเช่นเดียวกับภำษำ C คือ view source print? 1.if (condition expression) 2.Statement
  7. 7. 7 โดย if จะตรวจสอบว่ำ เงื่อนไขใน expression เป็น จริง (TRUE) หรือไม่ ถ้ำเป็นจริง ก็จะเข้ำไปทำคำสั่งใน statement ถ้ำ ไม่เป็นจริง (FALSE) ก็จะไม่ทำคำสั่งใน statement ซึ่ง statement นี้ อำจจะเป็นคำสั่งเพียง คำสั่งเดียว หรือว่ำ เป็นชุดคำสั่งก็ได้ ซึ่งถ้ำเป็นชุดคำสั่ง ก็ต้องมี วงเล็บปีกกำ คร่อม ชุดคำสั่งนั้นด้วย จำกตัวอย่ำง view source print? 1.<? 2. if ($a > $b) 3. echo “ a is bigger than b”; 4. if ($b > $c) { 5. echo “b is bigger than c”; 6. $c = $b; 7. } 8.?> Note : จำกตัวอย่ำงข้ำงบน ถ้ำมี Statement เดียว ไม่จำเป็นต้องมี { } เปิด Statement ไว้ แต่ถ้ำมีก็ไม่เป็นไร แต่ถ้ำมี 2 Statement ขึ้นไป ต้องมี { } ปิดไว้ ELSE ในกรณีที่ต้องกำรให้มีทำงเลือก มำกกว่ำหนึ่งทำง โดยท่ำเงื่อนไขเป็นจริง ก็ให้ทำทำงเลือกหนึ่ง ถ้ำไม่เป็นจริง ก็ให้ทำ อีกทำงเลือกหนึ่ง ก็สำมำรถทำได้โดยใช้ else เข้ำมำช่วยใน if ดังนี้ view source print? 1.if (expression) 2.true-statement; 3.else 4 false-statement;
  8. 8. 8 ตัวอย่ำง view source print? 01. <? 02. … 03. if ($a > $b) { 04. echo “ a is bigger than b”; 05. } else { 06. echo “a is not bigger than b”; 07. } 08. … 09.?> จำกตัวอย่ำง ถ้ำเงื่อนไขเป็นจริง ก็จะทำคำสั่งชุดแรก ถ้ำเงื่อนไขไม่เป็นจริง ก็จะไปทำใน else หรือว่ำ คำสั่งชุดที่สอง แทน ELSEIF elseif เป็นกำรนำเอำ else มำรวมกับ if โดยเมื่อ เงื่อนไขแรกไม่เป็นจริง และต้องมำทำคำสั่งใน else ก็จะทำกำร ตรวจสอบเงื่อนไขใน if ที่อยู่กับ else ทันที ซึ่งจะมีรูปแบบดังนี้ view source print? 1. if (expression–1) 2. statement-1; 3. elseif (expression-2) 4. statement-2; 5. else 6. statement-3;
  9. 9. 9 ตัวอย่ำง view source print? 01.<? 02. … 03. if ($a > $b) { 04. echo “a is bigger than b”; 05. } elseif ($a == $b) { 06. echo “a is equal to b”; 07. } else { 08. echo “a is smaller than b”; 09. } 10. … 11.?> จำกตัวอย่ำง จะเห็นว่ำมีกำรตรวจสอบเงื่อนไขว่ำ $a > $b หรือไม่ ถ้ำเป็นจริง ก็จะทำคำสั่งในชุดแรก แล้วก็ออกจำก เงื่อนไข if เลย แต่ถ้ำไม่จริง ก็จะไปตรวจสอบเงื่อนไขที่สองคือ $a == $b หรือไม่ ถ้ำเป็นจริง ก็จะไปทำคำสั่งในชุดที่ สอง แต่ถ้ำเป็นเท็จ ก็จะไปทำคำสั่งในชุดที่สำมเลย กำรใช้ elseif นั้น จะใช้ซ้อนกันกี่ชั้นก็ได้ ซึ่งกำรตรวจสอบเงื่อนไข ก็จะทำไล่มำเรื่อย ๆ Note : ให้ลองเขียนเป็นภำษำของคนก่อนนะ เช่น ตัวอย่ำงข้ำงบนนะ้้ถ้ำเป็นภำษำที่คนเรำเข้ำใจก็คือ ถ้ำ a > b ให้บอกว่ำ a is bigger than b แต่ถ้ำ a = b ให้บอกว่ำ a is equal b แต่ถ้ำ a < b ให้บอกว่ำ a is smaller than b
  10. 10. 10 แล้วจะได้ส่วนของ code ข้ำงบน ชนิดของข้อมูลและตัวแปรในภำษำซี ชนิดของข้อมูล (data type) ในกำรเขียนโปรแกรมหนึ่งๆ จะมีข้อมูลต่ำงๆ เข้ำมำเกี่ยวข้องเช่น กำรนับจำนวนรอบ (loop) ของกำรทำงำนโดยใช้ข้อมูลชนิดจำนวนเต็ม หรือกำรแสดงข้อควำม โดยใช้ข้อมูลชนิดตัวอักษร จะเห็นว่ำข้อมูลต่ำงๆ ถูกแบ่งออกเป็นหลำยชนิดตำมจุดประสงค์ของกำรใช้งำน นอกจำกนี้ข้อมูลแต่ละชนิด ยังใช้เนื้อที่หน่วยควำมจำ (memory) ไม่เท่ำกันจึงมีกำรแบ่งชนิดของข้อมูล ดังแสดงในตำรำงด้ำนล่ำง ตัวแปร (variable) เนื่องจำกข้อมูลถูกเก็บอยู่ในหน่วยควำมจำ กำรอ้ำงถึงตำแหน่งของข้อมูลนี้ จึงมีควำมซับซ้อน ไม่สะดวกต่อกำรเขียนโปรแกรม จึงมีกำรเรียกหน่วยควำมจำ ในตำแหน่งที่สนใจผ่ำนตัวแปร การประกาศตัวแปร(variable declaration) คือกำรจองเนื้อที่ในหน่วยควำมจำสำหรับเก็บค่ำบำงอย่ำง พร้อมทั้งกำหนดชื่อเรียกแทนหน่วยควำมจำในตำแหน่งนั้นเพื่อให้ผู้เขียนโปรแกรมมีควำมสะดวกในกำรเข้ำถึงค่ำที่เก็บอยู่ ในหน่วยควำมจำดังกล่ำว รูปแบบกำรประกำศตัวแปร type variable-name; โดย type คือชนิดของตัวแปร (ตำมตำรำงด้ำนล่ำง) variable-name คือชื่อของตัวแปร (ควรตั้งชื่อให้มีควำมหมำยสอดคล้องกับกำรใช้งำนและจำง่ำย) ตัวอย่ำงกำรประกำศตัวแปรแบบต่ำงๆ int num; /*ประกำศตัวแปรชนิดจำนวนเต็ม ชื่อ num*/ float x;
  11. 11. 11 char grade, sex; /*ประกำศตัวแปรชนิิดอักขระ ชื่อ grade และ sex (ประกำศพร้อมกันในบรรทัดเดียว)*/ float temp = 123.45; /*ประกำศตัวแปรชนิดเลขทศนิยมพร้อมกำหนดค่ำ 123.45*/ char c = "A", t = "B"; /*ประกำศตัวแปรชนิดอักขระสองตัว พร้อมกำหนดค่ำให้แต่ละตัว*/ int oct = 0555; /*ประกำศตัวแปรชนิดจำนวนเต็มชื่อ num พร้อมกำหนดค่ำคือ 555 (เป็นเลขฐำนแปดเพรำะมี 0 นำหน้ำ)*/ int hex = 0x88; /*ประกำศตัวแปรชนิดจำนวนเต็มชื่อ hex พร้อมกำหนดค่ำคือ 88 (เป็นเลขฐำน 16 เพรำะมี 0x นำหน้ำ)*/ ข้อควรระวัง!! ชื่อตัวแปรจะต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมำย "_" เท่ำนั้น ภำยในชื่อตัวแปรให้ใช้ตัวอักษร, ตัวเลข 0-9 หรือเครื่องหมำย "_" ห้ำมมีช่องว่ำงในชื่อตัวแปร อักษรตัวพิมพ์เล็ก-ใหญ่ มีควำมแตกต่ำงกัน (case sensitive) เช่น Name, NAME และ name ถือเป็นชื่อที่แตกต่ำงกัน ห้ำมซ้ำกับ ชื่อตัวแปรสงวน (reserved word) ชื่อตัวแปรสงวน asm do huge short void auto double if
  12. 12. 12 signed volatile break else int sizeof while case enum interrupt static _ds cdecl extern long struct _es char far near switch _ss const float pascal typedef continue
  13. 13. 13 for register union default goto return unsigned ตัวแปรชนิดข้อควำม (string) ถ้ำเรำต้องกำรเก็บข้อควำม "C programming language" ไว้ในตัวแปร จะทำได้อย่ำงไร? ที่ผ่ำนมำเรำทรำบว่ำเรำสำมำรถเก็บข้อมูลชนิดตัวอักขระไว้ในตัวแปรชนิด char ได้ แต่ตัวแปรชนิด char นั้น สำมำรถเก็บตัวอักขระได้เพียงตัวเดียวเท่ำนั้น ไม่สำมำรถเก็บทั้งข้อควำมได้ แล้วเรำจะแก้ปัญหำได้อย่ำงไร? หำกพิจำณำให้ดี ข้อควำมดังกล่ำวประกอบด้วยตัวอักขระ (ตัวอักษร+สัญลักษณ์) หลำยๆ ตัวเรียงต่อกันเป็นสำย ซึ่งเป็นลักษณะของตัวแปรแบบ array (จะได้กล่ำวภำยหลัง) กำรประกำศตัวแปรแบบ array เพื่อเก็บข้อมูลดังกล่ำวสำมำรถทำได้ดังนี้ type variable-name[size]; โดย size คือขนำดของข้อควำม+1 โดยขนำดที่เพิ่มขึ้นเพรำะต้องเก็บอักขระสุดท้ำยของข้อควำมเป็นอักขระ 0 หรือ NULL เพื่อบอกว่ำสิ้นสุดข้อควำมแล้ว ตัวอย่ำงกำรประกำศตัวแปรแบบ array เพื่อเก็บข้อควำม "C programming language" (22 ตัวอักษร) ทำได้หลำยวิธีดังนี้
  14. 14. 14 char[23] text = "C programming language"; /*กำหนดขนำดเพิ่มขึ้น 1 ตัว สำหรับเก็บค่ำ 0 หรือ NULL ในตำแหน่งสุดท้ำย*/ char[23] text = {'C',' ','p','r','o','g','r','a','m','m','i','n','g',' ','l','a','n','g','u','a','g','e','0'}; /*กำหนดขนำดเพิ่มขึ้น 1 ตัว สำหรับเก็บค่ำ 0 หรือ NULL ในตำแหน่งสุดท้ำย*/ char[] text = "C programming language"; /*ถ้ำไม่กำหนดขนำดของ array แล้ว ตัวแปรภำษำซีจะกำหนดให้โดยมีขนำดเท่ำกับขนำดข้อควำม+1*/ นอกจำกนี้เรำยังสำมำรถแก้ไขตัวอักษรที่เก็บอยู่ใน array ได้โดยกำรอ้ำงอิงตำแหน่งเช่น text[0] = 'A'; /*แก้ตัวอักษรตัวแรก (เริ่มนับจำก 0) จะได้ผลลัพธ์คือ A programming language*/ text[2] = ' '; /*ผลลัพธ์คือ A rogramming language (ใส่ช่องว่ำงแทนตัว p)*/ โครงสร้างพื้นฐานของภาษาซี กำรเขียนโปรแกรมไม่ว่ำจะเป็นภำษำใดก็ตำม ก็จะมีโครงสร้ำงของตัวภำษำอยู่ภำษำซีก็เช่นเดียวกัน โดยส่วนใหญ่ ประกอบไปด้วย 3 ส่วนหลักๆ คือ ส่วนหัว(Header) ส่วนประกำศตัวแปร(Declaration) และส่วนคำสั่ง(Body) ส่วนที่ 1 ส่วนหัว (header) ส่วนหัวเป็นส่วนที่ระบุซีคอมไพเลอร์เตรียมกำรทำงำนที่กำหนดในส่วนนี้ไว้ โดยหน้ำคำสั่งจะมีเครื่องหมำย # ตัวอย่ำง # include <stdio.h> หมำยถึง เป็นกำรระบุให้นำไฟล์ stdio.h มำรวมกับไฟล์นี้เพื่อที่จะสำมำรถใช้คำสั่งที่อยู่ในไฟล์นี้มำใช้งำนได้
  15. 15. 15 # define START 0 หมำยถึง เป็นกำรกำหนดค่ำคงที่ให้กับตัวแปร START โดยให้มีค่ำเป็น 0 # define temp 37 หมำยถึง เป็นกำรกำหนดให้ตัวแปร temp มีค่ำเท่ำกับ 37 ส่วนที่ 2 ประกำศตัวแปร (Declaration) ส่วนประกำศตัวแปร เป็นกำรกำหนดชนิดข้อมูลที่จะใช้ในโปรแกรม ซึ่งตัวแปร หรือข้อมูลต่ำงๆนั้นจะถูกประกำศ (Declare) ในส่วนนี้ก่อน จึงจะสำมำรถนำไปใช้ในโปรแกรมได้ดังตัวอย่ำง int stdno; หมำยถึง เป็นตัวกำหนดว่ำตัวแปร stdno เป็นชนิดข้อมูลจำนวนเต็ม integer ซึ่งอำจได้แก่ค่ำ 0,4,-1,-3,...เป็น ต้น float score; หมำยถึง เป็นกำรกำหนดว่ำตัวแปร score เป็นข้อมูลชนิดเลขมีจุดทศนิยม(floating point) ซึ่งอำจมีค่ำ 0.23, 1.34, -21.002,….เป็นต้น ส่วนที่ 3 ส่วนตัวคำสั่ง (Boddy)
  16. 16. 16 ส่วนตัวคำสั่ง คือส่วนของโปรแกรม โดยจะต้องเริ่มต้นด้วยฟังก์ชัน main () แล้วใส่เครื่องหมำยกำหนดขอบเขต เริ่มต้นของตัวโปรแกรมคือ { หลังจำกนั้นใส่คำสั่งหรือฟังก์ชันต่ำงๆโดยแต่ล่ะคำสั่งหรือฟังก์ชันนั้นๆ จะต้องปิดด้วย เครื่องหมำย ; เมื่อต้องกำรจบโปรแกรมให้ใส่เครื่องหมำย } ดังตัวอย่ำง main () { /*เริ่มต้นโปรแกรม*/ คำสั่งต่ำงๆ ; ฟังก์ชั่น ; .................... ..................... }/*จบโปรแกรม*/ เครื่องหมำยต่ำงๆในภำษำซี 1. { } เป็นตัวกำหนดขอบเขตหรือบล็อกของฟังก์ชัน 2. ( ) เป็นกำรระบุตัวอ่ำนค่ำหรืออำร์กิวเมนต์ให้กับฟังก์ชัน ถ้ำภำยในวงเล็บไม่มีข้อควำมใดๆ แสดงว่ำไม่มีตัวผ่ำน ค่ำที่ต้องกำรระบุฟังก์ชันนั้นๆ
  17. 17. 17 3. /* */ - เป็นกำรกำหนด comment หรือข้อควำม ที่ไม่ต้องกำรให้คอมไพเลอร์ปฏิบัติงำน ซึ่งข้อควำมที่อยู่ภำยใน เครื่องหมำยนี้จะถือว่ำ ไม่ใช่คำสั่งปฏิบัติงำน
  18. 18. 18 บรรณานุกรม https://sites.google.com/site/wunnipa21548/home

×