ความรู้เกย่ี วกบั ภาษาซีเบื้องต้น
คำนำ หนงั สืออิเลก็ ทรอนิกส์เลม่ น้ีจดั ทำข้ึนเพ่ือเป็นส่วนหน่ึงของวิชำ ภำษำซี ช้นั ม.6/2 เพอื่ ใหไ้ ดศ้ ึกษำหำควำมรู้ในเร่ือง ภำษำซี และไดศ้ ึกษำอยำ่ ง เขำ้ ใจเพอ่ื เป็นประโยชน์กบั กำรเรียน ผจู้ ดั ทำหวงั วำ่ รำยงำนเลม่ น้ีจะเป็นประโยชนก์ บั ผอู้ ่ำน หรือนกั เรียน นกั ศึกษำ ท่ีกำลงั หำขอ้ มูลเรื่องน้ีอยหู่ ำกมีขอ้ แนะนำหรือขอ้ ผดิ พลำดประกำรใด ผจู้ ดั ทำขอนอ้ มรับไวแ้ ละขออภยั มำณ ท่ีน้ีดว้ ย ผู้จดั ทา นำย ปิ ยะกร ปันแดง เลขที่ 4 นำย จกั รชยั มิ่งขวญั ลขที่ 17
ลกั ษณะของภาษาคอมพวิ เตอร์ แบ่งได้ 3 ลกั ษณะไดแ้ ก่ 1 ) ภาษาเคร่ือง (Machine Language) ภำษำน้ีประกอบดว้ ยตวั เลขลว้ น ทำ ใหเ้ คร่ืองคอมพิวเตอร์สำมำรถทำงำนไดท้ นั ที ผทู้ ี่จะเขียนโปรแกรมภำษำเครื่องได้ ตอ้ งสำมำรถจำรหสั แทนคำสง่ั ต่ำง ๆ ได้ และในกำรคำนวณตอ้ งสำมำรถจำไดว้ ำ่ จำนวนต่ำง ๆ ท่ีใชใ้ นกำรคำนวณน้นั ถูกเกบ็ ไวท้ ี่ตำแหน่งใด ดงั น้นั โอกำสที่จะเกิด ควำมผดิ พลำดในกำรเขียนโปรแกรมจึงมีมำก นอกจำกน้ีเครื่องคอมพวิ เตอร์แต่ละ ระบบมีภำษำเครื่องที่แตกต่ำงกนั ออก ทำใหเ้ กิดควำมไม่สะดวกเม่ือมีกำรเปลี่ยน เคร่ืองคอมพิวเตอร์เพรำะจะตอ้ งเขียน โปรแกรมใหม่ท้งั หมด 2 ) ภาษาระดบั ตา่ (Low Level Language) เน่ืองจำกภำษำเครื่องเป็นภำษำท่ี มีควำมยงุ่ ยำกในกำรเขียนดงั ไดก้ ล่ำวมำแลว้ จึงไม่มีผนู้ ิยมและมีกำรใชน้ อ้ ย ดงั น้นั ไดม้ ีกำรพฒั นำภำษำคอมพวิ เตอร์ข้ึนอีกระดบั หน่ึง โดยกำรใชต้ วั อกั ษร ภำษำองั กฤษเป็นรหสั แทนกำรทำงำน กำรใชแ้ ละกำรต้งั ช่ือตวั แปรแทนตำแหน่งท่ี ใชเ้ กบ็ จำนวนต่ำง ๆ ซ่ึงเป็นค่ำของตวั แปรน้นั ๆ 3) ภาษาระดบั สูง (High Level Language) เป็นภำษำท่ีสร้ำงข้ึนเพื่อช่วย อำนวยควำมสะดวกในกำรเขียนโปรแกรม ลกั ษณะของคำส่ังจะประกอบดว้ ยคำ ต่ำง ๆ ในภำษำองั กฤษ ซ่ึงผอู้ ำ่ นสำมำรถเขำ้ ใจควำมหมำยไดท้ นั ที ผเู้ ขียน โปรแกรมจึงเขียนโปรแกรมดว้ ยภำษำระดบั สูงไดง้ ่ำยกวำ่ เขียนดว้ ยภำษำแอ สเซมบลีหรือภำษำเคร่ือง ภำษำระดบั สูงมีมำกมำยหลำยภำษำ
ประวตั คิ วามเป็ นมาภาษาซี ภำษำซีเป็นภำษำท่ีถือวำ่ เป็นท้งั ภำษำระดบั สูงและระดบั ต่ำ ถูก พฒั นำโดยเดนนิส ริดชี (Dennis Ritche) แห่งหอ้ งทดลองเบลล์ (Bell Laboratories) ท่ีเมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสไดใ้ ชห้ ลกั กำรของ ภำษำ บีซีพีแอล (BCPL : Basic Combine Programming Language) ซ่ึง พฒั นำข้ึนโดยเคน ทอมสัน (Ken Tomson) กำรออกแบบและพฒั นำภำษำซี ของเดนนิส ริดชี มีจุดมุ่งหมำยใหเ้ ป็นภำษำสำหรับใชเ้ ขียนโปรแกรม ปฏิบตั ิกำรระบบยนู ิกซ์ และไดต้ ้งั ชื่อวำ่ ซี (C) เพรำะเห็นวำ่ ซี (C) เป็น ตวั อกั ษรต่อจำกบี (B) ของภำษำ BCPL ภำษำซีถือวำ่ เป็นภำษำระดบั สูงและ ภำษำระดบั ต่ำ ท้งั น้ีเพรำะ ภำษำซีมีวิธีใชข้ อ้ มูลและมีโครงสร้ำงกำรควบคุม กำรทำงำนของโปรแกรมเป็นอยำ่ งเดียวกบั ภำษำของโปรแกรมระดบั สูง อื่นๆ จึงถือวำ่ เป็นภำษำระดบั สูง ในดำ้ นที่ถือวำ่ ภำษำซีเป็นภำษำระดบั ต่ำ เพรำะภำษำซีมีวิธีกำรเขำ้ ถึงในระดบั ต่ำที่สุดของฮำร์ดแวร์ ควำมสำมำรถท้งั สองดำ้ นของภำษำน้ีเป็นสิ่งท่ีเก้ือหนุนซ่ึงกนั และกนั ควำมสำมำรถระดบั ต่ำ ทำใหภ้ ำษำซีสำมำรถใชเ้ ฉพำะเครื่องได้ และควำมสำมำรถระดบั สูง ทำให้ ภำษำซีเป็นอิสระจำกฮำร์ดแวร์ ภำษำซีสำมำรถสร้ำงรหสั ภำษำเครื่องซ่ึงตรง กบั ชนิดของขอ้ มูลน้นั ไดเ้ อง ทำใหโ้ ปรแกรมท่ีเขียนดว้ ยภำษำซีท่ีเขียนบน เครื่องหน่ึง สำมำรถนำไปใชก้ บั อีกเคร่ืองหน่ึงได้ ประกอบกบั กำรใชพ้ อยน์ เตอร์ในภำษำซี นบั ไดว้ ำ่ เป็นตวั อยำ่ งท่ีดีของกำรเป็นอิสระจำกฮำร์ดแวร์
โครงสร้างของภาษาซี แบ่งออกเป็ น 3 ส่วน 1. ส่วนหัวของโปรแกรม ส่วนหวั ของโปรแกรมน้ีเรียกวำ่ Preprocessing Directive ใชร้ ะบุเพอ่ื บอกให้ คอมไพเลอร์กระทำกำร ใด ๆ ก่อนกำรแปลผลโปรแกรม ในท่ีน่ีคำสง่ั #include <stdio.h> ใชบ้ อกกบั คอมไพเลอร์ใหน้ ำเฮดเดอร์ไฟลท์ ี่ระบุ คือ stdio.h เขำ้ ร่วมใน กำรแปลโปรแกรมดว้ ย โดยกำรกำหนด preprocessing directives น้ีจะตอ้ งข้ึนตน้ ดว้ ยเคร่ืองหมำย # เสมอ คำส่ังที่ใชร้ ะบุใหค้ อมไพเลอร์นำเฮดเดอร์ไฟลเ์ ขำ้ ร่วมในกำรแปล โปรแกรม สำมำรถเขียนได้ 2 รูปแบบ คือ - #include <ช่ือเฮดเดอร์ไฟล>์ คอมไพเลอร์จะทำกำรคน้ หำเฮดเดอร์ไฟลท์ ี่ระบุ จำกไดเรกทอรีที่ใชส้ ำหรับเกบ็ เฮดเดอร์ไฟลโ์ ดยเฉพำะ (ปกติคือไดเรกทอรีชื่อ include) - #include “ช่ือเฮดเดอร์ไฟล”์ คอมไพเลอร์จะทำกำรคน้ หำเฮดเดอร์ไฟท่ีระบุ จำก ไดเร็คทอรีเดียวกนั กบั ไฟล์ source code น้นั แตถ้ ำ้ ไม่พบกจ็ ะไปคน้ หำไดเร็คทอรี ที่ใชเ้ กบ็ เฮดเดอร์ไฟลโ์ ดยเฉพำะ
2. ส่วนของฟังก์ชั่นหลกั ฟังกช์ นั่ หลกั ของภำษำซี คือ ฟังกช์ น่ั main() ซ่ึงโปรแกรมภำษำซีทุก โปรแกรมจะตอ้ งมีฟังกช์ นั่ น้ีอยใู่ นโปรแกรมเสมอ จะเห็นไดจ้ ำกชอ่ื ฟังกช์ นั่ คือ main แปลวำ่ “หลกั ” ดงั น้นั กำรเขียนโปรแกรมภำษซีจึงขำดฟังกช์ นั่ น้ีไปไม่ได้ โดยขอบเขตของฟังกช์ นั่ จะถกู กำหนดดว้ ยเครื่องหมำย { และ } กลำ่ วคือ กำร ทำงำนของฟังกช์ นั่ จะเริ่มตน้ ที่เครื่องหมำย { และจะสิ้นสุดที่เคร่ืองหมำย } ฟังกช์ นั่ main() สำมำรถเขียนในรูปแบบของ void main(void) กไ็ ด้ มีควำมหมำย เหมือนกนั คือ หมำยควำมวำ่ ฟังกช์ น่ั main() จะไม่มีอำร์กิวเมนต์ (argument) คือ ไม่มีกำรรับค่ำใด ๆ เขำ้ มำประมวลผลภำยในฟังกช์ นั่ และจะไม่มีกำรคนื ค่ำใด ๆ กลบั ออกไปจำกฟังกช์ น่ั ดว้ ย
3. ส่วนรายละเอยี ดของโปรแกรม เป็นส่วนของกำรเขียนคำสั่ง เพ่อื ใหโ้ ปรแกรมทำงำนตำมที่ได้ ออกแบบไว้ คอมเมนตใ์ นภำษำซี คอมเมนต์ (comment) คือส่วนท่ีเป็นหมำยเหตุของโปรแกรม มีไว้ เพ่อื ใหผ้ เู้ ขียนโปรแกรมใส่ขอ้ ควำมอธิบำยกำกบั ลงไปใน source code ซ่ึง คอมไพเลอร์จะขำ้ มำกำรแปลผลในส่วนท่ีเป็นคอมเมนตน์ ้ี คอมเมนตใ์ น ภำษำซีมี 2 แบบคือ ¨ คอมเมนตแ์ บบบรรทดั เดียว ใชเ้ ครื่องหมำย // ¨ คอมเมนตแ์ บบหลำยบรรทดั ใชเ้ ครื่องหมำย /* และ */ ตวั อยำ่ ง กำรคอมเมนตใ์ นภำษำซี // Comment only one line #include <stdio.h> #include <conio.h> main void() { clrscr(); /*comment Many line*/ }
ตวั แปร (Variables) ตวั แปรจะเป็นช่ือท่ีใชใ้ นกำรบอกจำนวนหรือปริมำณ ซ่ึงสำมำรถท่ีจะ ทำกำรเปล่ียนแปลงจำนวนไดด้ ว้ ยโปรแกรมคอมพิวเตอร์ กำรต้งั ช่ือตวั แปร จะตอ้ งต้งั ชื่อใหแ้ ตกต่ำงไปจำกช่ือของตวั แปรอ่ืนๆ ยกตวั อยำ่ งชื่อของตวั แปร ไดแ้ ก่ x, y, peter, num_of_points และ streetnum เป็นตน้ โดยปกติกำรเขียน โปรแกรมท่ีดี ควรจะต้งั ชื่อตวั แปรใหส้ อดคลอ้ งกบั กำรทำงำนหรือหนำ้ ท่ีของตวั แปรน้นั ๆ เพรำะเม่ือถึงเวลำตอ้ งมำทำกำรปรับปรุงแกไ้ ขโปรแกรม จะสำมำรถทำ ไดโ้ ดยไม่ยำกนกั ในภำษำ C หรือ C++ ไดม้ ีกฏในกำรต้งั ช่ือตวั แปรท่ีสำมำรถใชง้ ำนไดด้ งั น้ี - ชื่อตวั แปรจะตอ้ งข้ึนตน้ ดว้ ยตวั อกั ษร - ชื่อตวั แปรจะประกอบไปดว้ ย ตวั อกั ษร ตวั แลข และ _ ไดเ้ ท่ำน้นั - ชื่อตวั แปรจะตอ้ งไม่ใช่ชื่อ reserved word (ช่ือที่มีกำรจองไวแ้ ลว้ ) กำรกำหนดชนิดของตวั แปรมีวตั ถุประสงคห์ ลกั 2 ประกำรไดแ้ ก่ - เป็นกำรบอกชนิด และต้งั ช่ือตวั แปรที่จะเรียกใช้ ชนิดของตวั แปรจะทำให้ คอมไพเลอร์สำมำรถแปลคำส่ังไดอ้ ยำ่ งถูกตอ้ ง (ยกตวั อยำ่ งเช่น ใน CPU คำสง่ั ท่ี ใชใ้ นกำรบวกตวั เลขจำนวนเตม็ 2 จำนวน ยอ่ มแตกต่ำงจำกคำส่ังท่ีจะบวกจำนวน จริง 2 จำนวนเขำ้ ดว้ ยกนั ) - ชนิดของตวั แปร ยงั เป็นบ่งบอกคอมไพเลอร์ใหท้ รำบวำ่ จะตอ้ งจดั เตรียมเน้ือที่ ใหก้ บั ตวั แปรตวั น้นั มำกนอ้ ยเท่ำใด และจะจดั วำงตวั แปรน้นั ไวแ้ อดเดรส (Address) ไหนท่ีสำมำรถเรียกมำใชใ้ น code ได้
ชนิดตวั แปร 4 ชนิดท่ีใชก้ นั มำกไดแ้ ก่ int, float, bool และ char int ชนิดตวั แปรท่ีสำมำรถแทนค่ำจำนวนเตม็ ไดท้ ้งั บวกและลบ โดย ปกติสำหรับคอมพิวเตอร์ทวั่ ไป คอมไพเลอร์ จะจองเน้ือท่ี 2 ไบต์ สำหรับตวั แปร ชนิด int จึงทำใหค้ ่ำของตวั แปรมีค่ำต้งั แต่ -32768 ถึง +32768 ตวั อยำ่ งของค่ำ int ไดแ้ ก่ 123 -56 0 5645 เป็นตน้ float ชนิดของตวั แปรท่ีเป็นตวั แทนของจำนวนจริง หรือตวั เลขท่ีมีค่ำ ทศนิยม ควำมละเอียดของตวั เลขหลงั จุดทศนิยมข้ึนอยกู่ บั ระบบคอมพิวเตอร์ โดย ปกติแลว้ ตวั แปรชนิด float จะใชเ้ น้ือที่ 4 ไบต์ นนั่ คือจะใหค้ วำมละเอียดของ ตวั เลขหลงั จุดทศนิยม 6 ตำแหน่ง และมีค่ำอยรู่ ะหวำ่ ง -1038 ถึง +1038 ตวั อยำ่ งของค่ำ float ไดแ้ ก่ 16.315 -0.67 31.567 bool ชนิดของตวั แปรที่สำมำรถเกบ็ ค่ำลอจิก จริง (True) หรือ เทจ็ (False) ตวั แปรชนิดน้ี เป็นที่รู้จกั กนั อีกช่ือคือ ตวั แปรบูลีน (Boolean) ตวั อยำ่ งของตวั แปรชนิด bool ไดแ้ ก่ 1 0 true false (เมื่อ 1 = true และ 0 = false) char เป็นชนิดตวั แปรที่เป็นตวั แทนของ ตวั อกั ษรเพยี งตวั เดียว อำจ เป็นตวั อกั ษร ตวั เลข หรือตวั อกั ขระพิเศษ โดยปกติตวั แปรชนิดน้ีจะใชเ้ น้ือที่เพียง 1 ไบต์ ซ่ึงจะใหต้ วั อกั ษรในรูปแบบที่แตกต่ำงกนั ไดถ้ ึง 256 ค่ำ กำรเขียนรูปแบบ ของ char หลำยๆ ตวั โดยปกติ จะอำ้ งอิงกบั American Standard Code for Information Interchange (ASCII) ตวั อยำ่ งของตวั แปรชนิด char ไดแ้ ก่ '+' 'A' 'a' '*' '7'
กฎการต้งั ช่ือ กำรปรำกำศตวั แปร จะตอ้ งมีกำรกำหนดชื่อใหก้ บั ตวั แปร เพอื่ ให้ โปรแกรมทำงำน กฏกำรต้งั ช่ือในภำษำซียงั ใชก้ บั ช่ือต่ำงๆ ในโปรแกรมไดอ้ ีกดว้ ย ตวั อยำ่ งเช่น กำรกำหนด ชื่อโปรแกรม ชื่อของตวั แปรต่ำงๆ เป็นตน้ กำรต้งั ชื่อในภำษำซี มีรูปแบบดงั น้ี 1. ช่ือตอ้ งไม่ซ้ำกบั คำสงวน (Reserved word) และคำมำตรฐำนท่ีคอมไพลเ์ ลอร์ รู้จกั 2. จะตอ้ งข้ึนตน้ ดว้ ยตวั อกั ษร (A-Z, a-z) หรือเครื่องหมำย _ (Underscore) เท่ำน้นั 3. ตวั ต่อไปตอ้ งเป็นตวั อกั ษรหรือตวั เลขหรือเคร่ืองหมำย _ 4. กำรต้งั ช่ือจะตอ้ งไม่มีช่องวำ่ ง 5. ตวั อกั ษรตวั เลก็ และตวั อกั ษรตวั ใหญ่จะมีควำมมำยแตกต่ำงกนั ตวั อยำ่ งกำรต้งั ช่ือ เช่น X y12 sum_1 _temp name area tax_rate TABLE *** การต้งั ชื่อไม่สามารถต้งั ชื่อเหมือนกบั คาสงวนได้และไม่สามารถเว้นช่องว่าง ระหว่างช่ือได้ ***
การเขียนผงั งาน (Flowchart) ผงั งำน (Flowchart) เป็นผงั งำนรูปภำพท่ีใชแ้ สดงแนวคิด หรือข้นั ตอน กำรทำงำนของโปรแกรม และเป็นเคร่ืองมือท่ีช่วยใหม้ องเห็นภำพรวมของ โปรแกรมท่ีทำใหเ้ รำเขียนโปรแกรมไดง้ ่ำยยงิ่ ข้ึน เน่ืองจำกเรำสำมำรถมองเห็น แนวคิด และทิศทำงกำรทำงำนของโปรแกรมน้นั เอง หลกั กำรเขียนผงั งำน (Flowchart) ผงั งำน (Flowchart) เป็นผงั งำนท่ีใชแ้ สดงแนวควำมคิด หรือข้นั ตอน กำรทำงำนของโปรแกรม โดยใชส้ ัญลกั ษณ์แทนคำอธิบำย ไม่วำ่ จะเป็นกำรใช้ กรอบสี่เหล่ียมเป็นสญั ลกั ษณ์แทนกำรประมวลผล หรือจะเป็นกำรใชล้ ูกศรแทน ทิศทำงกำรทำงำนของโปรแกรม กำรเขียนผงั งำน(Flowchart) มีหลกั กำรง่ำยๆที่ควรคำนึงดงั น้ี คือ 1. ผงั งำน (Flowchart) จะตอ้ งมีจุดเริ่มตน้ และจุดสิ้นสุดเสมอ 2. เลือกใชส้ ญั ลกั ษณ์เพ่ือส่ือควำมหมำยใหถ้ ูกตอ้ ง 3. ใชล้ กู ศรเป็นตวั กำหนดทิศทำงกำรทำงำนของโปรแกรมจำกบนลงล่ำง จำกซำ้ ย ไปขวำโดยเรียงตำมลำดบั 4. รูปสญั ลกั ษณ์ทุกตวั ตอ้ งมีลูกศรเขำ้ และออก ยกเวน้ จุดเร่ิมตน้ จะมีเฉพำะออก จุดสิ้นสุดจะมีเฉพำะเขำ้ เท่ำน้นั 5. ลกู ศรทุกตวั จะช้ีออกจำกรูปสัญลกั ษณ์ตวั หน่ึงไปยงั รูปสัญลกั ษณ์อีกตวั หน่ึง เสมอ 6. คำอธิบำยภำยในรูปสญั ลกั ษณ์ ควรส้ันๆเขำ้ ใจง่ำย 7. ไม่ควรใชล้ กู ศรช้ีไปไกลมำกเกินไป หำกจำเป็นใหใ้ ชจ้ ุดเช่ือมแทน
กำรเขียนผงั งำน (Flowchart)\\ สำมำรถสรุปสญั ลกั ษณ์กำรทำงำนที่ควรทรำบ ได้ ดงั น้ี
ตวั อยำ่ งกำรเขียนผงั งำน (Flowchart)
ผู้จดั ทา นาย ปิ ยะกร ปันแดง เลขที่ 4 นาย จักรชัย มิง่ ขวญั เลขที่ 17 ช้ัน ม. 6/2
ผดิ พลำดประกำรได พวกกระผมตอ้ งขออภยั มำ ณ ที่น้ีดว้ ยครับ ขอบคุณครับ
Search
Read the Text Version
- 1 - 15
Pages: