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 วิชาภาษาซี

วิชาภาษาซี

Published by T.ratchanok2524, 2020-11-02 04:31:50

Description: นาย ปิยะกร ปันแดง เลขที่ 4
นาย จักรชัย มิ่งขวัญ เลขที่ 17
ชั้น 6/2

Search

Read the Text Version

ความรู้เกย่ี วกบั ภาษาซี ประกอบการเรียนวิชา ว30268 ภาษาซี ครูผ้สู อน ครู รัชชนก วงเขียว

คานา หนงั สืออิเลก็ ทรอนิกส์เล่มน้ีจดั ทาข้ึนเพื่อเป็นส่วนหน่ึงของวิชา ภาษาซี ช้นั ม.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

ผดิ พลาดประการใด พวกผมตอ้ งขออภยั มา ณ ที่น้ีดว้ ยครับ ขอบคุณครับ


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