วันจันทร์ที่ 8 กรกฎาคม พ.ศ. 2556

โครงสร้างของภาษาซี

ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน


1. ส่วนของเฮดเดอร์ไฟล์ (Header File or Processing Directive) ส่วนนี้จะมีจุดสังเกตที่สำคัญคือจะขึ้นต้นด้วยเครื่องหมาย # เสมอ การทำงานของคอมไพเลอร์จะทำงานในส่วนนี้เป็นส่วนแรก ในส่วนนี้เป็นส่วนที่เก็บไลบรารีมาตรฐานของภาษา C ซึ่งจะถูกดึงเข้ามารวมกับโปรแกรมในขณะแปลภาษาโปรแกรม (Compile) โดยใช้คำสั่ง
# include ซึ่งสามารถเขียนได้ 2 รูปแบบ คือ


รูปแบบที่ 1 : #include<HeaderName>
รูปแบบที่ 2 : #include “HeaderName”

โดยที่ HeaderName เป็นชื่อของ header file

ทั้งสองแบบนี้มีความแตกต่างกันคือ แบบ <…..> คอมไพเลอร์จะค้นหาเฮดเดอร์ไฟล์จากไลบรารีของภาษา C เพียงที่เดียวเท่านั้น ส่วนที่ใช้เครื่องหมาย “……” คอมไพเลอร์จะค้นหาเฮดเดอร์ไฟล์จากไลบรารีที่เก็บ Source Code ของเราก่อน ถ้าหากไม่เจอจะไปค้นหาที่ไลบรารีของภาษา C เฮดเดอร์ไฟล์จะมีนามสกุลเป็น .h เท่านั้น เฮดเดอร์ไฟล์ที่สำคัญที่ขาดไม่ได้คือ stdio.h

2. ส่วนของตัวแปร Global เป็นส่วนประกาศตัวแปรที่สามารถใช้ได้ทั้งโปรแกรม ส่วนนี้จะมีหรือไม่มีก็ได้

3. ส่วนของฟังก์ชัน (Function) เป็นส่วนการทำงานของโปรแกรม ในโครงสร้างภาษา C จะบังคับให้มีอย่างน้อย 1 ฟังก์ชันคือ ฟังก์ชัน main() ซึ่งเป็นฟังก์ชันเริ่มการทำงานของโปรแกรม (คอมไพเลอร์จะประมวลผลที่ฟังก์ชัน main() เป็นฟังก์ชันแรก) โดยในขอบเขตของฟังก์ชันจะเริ่มต้นด้วยเครื่องหมาย { และสิ้นสุดด้วยเครื่องหมาย }

4. ส่วนของตัวแปร Local เป็นส่วนประกาศตัวแปรที่สามารถใช้ได้เฉพาะภายในฟังก์ชันของตนเองเท่านั้น ส่วนนี้จะมีหรือไม่มีก็ได้

5. ส่วนของตัวโปรแกรม เป็นส่วนคำสั่งการทำงานของโปรแกรม โดยที่คำสั่งแต่ละคำสั่งจะต้องจบด้วยเครื่องหมาย ; เสมอ

6. ส่วนของตัวส่งค่ากลับ เป็นส่วนของการส่งค่าข้อมูลกลับเมื่อฟังก์ชันจบการทำงาน โดยค่าที่ส่งกลับจะต้องเป็นค่าที่มีชนิดของข้อมูลตรงกับชนิดของข้อมูลที่ฟังก์ชันคืนค่ากลับ (Return Type) ในกรณีไม่ต้องการให้มีการส่งค่ากลับ สามารถกำหนดได้โดยใช้คีย์เวิร์ด void

ตัวอย่าง

#include<stdio.h>

#include<conio.h>

Void main(void)

{

printf(“Welcome to C Programming”);

getch();

}

อธิบายโปรแกรม

#include<stdio.h> // เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ เกี่ยวกับการจัดการอินพุตและเอาต์พุต

#include<conio.h> // เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ เกี่ยวกับการจัดการเกี่ยวกับหน้าจอทั้งหมด

Void main(void) //ส่วนของฟังก์ชัน main() โดยประกาศชนิดข้อมูลที่คืนค่ากลับเป็น void และค่าที่รับเข้ามาในฟังก์ชันเป็น void หมายถึง ฟังก์ชันนี้จะไม่มีการคืนค่าใดๆ กลับออกไป และไม่มีการรับค่าใด ๆ เข้ามาในฟังก์ชัน

{ // ส่วนเริ่มต้นของฟังก์ชัน main()

printf(“Welcome to C Programming”); //เป็นคำสั่งแสดงผลทางจอภาพ

getch(); //เป็นคำสั่งรับอักขระจากแป้นพิมพ์ เพื่อกำหนดไม่ให้โปรแกรมปิดหน้าต่างผลลัพธ์ เมื่อโปรแกรมจบการทำงาน

} // ส่วนสิ้นสุดของฟังก์ชัน main()

ให้นักเรียนค้นหาข้อมูลในหัวข้อต่อไปนี้ แล้วเขียนลงในกระดาษขนาด A4

กำหนดส่งในคาบเรียนครั้งถัดไป…. !!!

- ตัวแปรและชนิดของข้อมูลในภาษา C

- กฎการตั้งชื่อตัวแปรในภาษา C

วันอาทิตย์ที่ 16 ตุลาคม พ.ศ. 2554

ขั้นตอนการชิ้นงาน

ขั้นตอนที่ 1 เขียนโปรแกรม (source code)
         ใช้ editor เขียนโปรแกรมภาษาซีและทำการบันทึกไฟล์ต้นฉบับให้มีนามสกุลเป็น .C จากนั้นให้คอมไพล์โปรแกรมก็จะได้ไฟล์ออบเจ็กต์โค้ดที่มีนามสกุลเป็น .OBJ เมื่อทำการเชื่อมโยงไฟล์เข้ากับไลบรารีคำสั่งด้วย Link ก็จะได้ไฟล์ที่มีนามสกุลเป็น .EXE ที่พร้อมทำงานได้บนเครื่องคอมพิวเตอร์
          editor คือ โปรแกรมที่ใช้สำหรับการเขียนโปรแกรม โดยตัวอย่างของ editor ที่นิยมนำมาใช้ในการเขียนโปรแกรมได้แก่ Notepad, Edit ของ Dos ,Text Pad และ Edit Plus เป็นต้น ผู้เขียนโปรแกรมสามารถเลือกใช้โปรแกรมใดในการเรียนโปรแกรมก็ได้ แล้วแต่ความถนัดของแต่ละบุคคล
ขั้นตอนที่ 2 คอมไพล์โปรแกรม (compile)
          นำ source code จากขั้นตอนที่ 1 มาทำการคอมไพล์ เพื่อแปลจากภาษาซีที่มนุษย์เข้าใจไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจได้ ในขั้นตอนนี้คอมไพเลอร์จะทำการตรวจสอบ source code ว่าเกิดข้อผิดพลาดหรือไม่
•  หากเกิดข้อผิดพลาด จะแจ้งให้ผู้เขียนโปรแกรมทราบ ผู้เขียนโปรแกรมจะต้องกลับไปแก้ไขโปรแกรม และทำการคอมไพล์โปรแกรมใหม่อีกครั้ง
•  หากไม่พบข้อผิดพลาด คอมไพเลอร์จะแปลไฟล์ source code จากภาษาซีไปเป็นภาษาเครื่อง ( ไฟล์นามสกุล .obj) เช่นถ้าไฟล์ source code ชื่อ work.c ก็จะถูกแปลไปเป็นไฟล์ work.obj ซึ่งเก็บภาษาเครื่องไว้เป็นต้น
          compile เป็นตัวแปล ภาษารูปแบบหนึ่ง มีหน้าที่หลักคือการแปลภาษาโปรแกรมที่มนุษย์เขียนขึ้นไปเป็นภาษาเครื่อง โดยคอมไพเลอร์ของภาษาซี คือ C Compiler ซึ่งหลักการที่คอมไพเลอร์ใช้ เรียกว่า คอมไพล์ (compile) โดยจะทำการอ่านโปรแกรมภาษาซีทั้งหมดตั้งแต่ต้นจนจบ แล้วทำการ แปลผลทีเดียว
นอกจากคอมไพเลอร์แล้ว ยังมีตัวแปลภาษาอีกรูปแบบหนึ่งที่เรียกว่า อินเตอร์พรีเตอร์ การอ่านและ แปลโปรแกรมทีละบรรทัด เมื่อ แปลผลบรรทัดหนึ่งเสร็จก็จะทำงานตามคำสั่งในบรรทัดนั้น แล้วจึงทำการแปลผลตามคำสั่งในบรรทัดถัดไป หลักการที่อินเตอร์พรีเตอร์ใช้เรียกว่า อินเตอร์เพรต (interpret

ข้อดีและข้อเสียของตัวแปลภาษาทั้งสองแบบมีดังนี้

 
ข้อดี
ข้อเสีย
คอมไพเลอร์ •  ทำงานได้เร็ว เนื่องจากทำการแปลผลทีเดียว แล้วจึงทำงานตามคำสั่งของโปรแกรมในภายหลัง
•  เมื่อทำการแปลผลแล้ว ในครั้งต่อไปไม่จำเป็นต้องทำการแปลผลใหม่อีก เนื่องจากภาษาเครื่องที่แปลได้จะถูกเก็บไว้ที่หน่วยความจำ สามารถเรียกใช้งานได้ทันที
•  เมื่อเกิดข้อผิดพลาดขึ้นกับโปรแกรมจะตรวจสอบหาข้อผิดพลาดได้ยาก เพราะทำการแปลผลทีเดียวทั้งโปรแกรม
อินเตอร์พรีเตอร์ •  หาข้อผิดพลาดของโปรแกรมได้ง่าย เนื่องจากทำการแปลผลทีละบรรทัด
•  เนื่องจากทำงานทีละบรรทัดดังนั้นจึงสั่งให้โปรแกรมทำงานตามคำสั่งเฉพาะจุดที่ต้องการได้
•  ไม่เสียเวลารอการแปลโปรแกรมเป็นเวลานาน
•  ช้า เนื่องจากที่ทำงานทีละบรรทัด
ขั้นตอนที่ 3 เชื่อมโยงโปรแกรม (link)
          การเขียนโปรแกรมภาษาซีนั้นผู้เขียนโปรแกรมไม่จำเป็นต้องเขียนคำสั่งต่าง ๆ ขึ้นใช้งานเอง เนื่องจากภาษาซีมีฟังก์ชั่นมาตรฐานให้ผู้เขียนโปรแกรมสามารถเรียกใช้งานได้ เช่น การเขียนโปรแกรมแสดงข้อความ “Lampangkanlayanee” ออกทางหน้าจอ ผู้เขียนโปรแกรมสามารถเรียกใช้ฟังก์ชั่น printf() ซึ่งเป็นฟังก์ชั่นมาตรฐานของภาษาซีมาใช้งานได้ โดยส่วนการประกาศ (declaration) ของฟังก์ชั่นมาตรฐานต่าง ๆ จะถูกจัดเก็บอยู่ในเฮดเดอร์ไฟล์แต่ละตัว แตกต่างกันไปตามลักษณะการใช้งาน
          ด้วยเหตุนี้ภาษาเครื่องที่ได้จากขั้นตอนที่ 2 จึงยังไม่สามารถนำไปใช้งานได้ แต่ต้องนำมาเชื่อมโยงเข้ากับ library ก่อน ซึ่งผลจากการเชื่อมโยงจะทำให้ได้ executable program ( ไฟล์นามสกุล .exe เช่น work.exe) ที่สามารถนำไปใช้งานได้
 
ขั้นตอนที่ 4 ประมวลผล (run)
เมื่อนำ executable program จากขั้นตอนที่ 3 มาประมวลผลก็จะได้ผลลัพธ์ (output) ของโปรแกรมออกมา ( ถ้ามี ) 



ความหมายของภาษาซี

ภาษาซี คือ ภาษาคอมพิวเตอร์ใช้สำหรับพัฒนาโปรแกรมทั่วไป ถูกพัฒนาโดยเดนนิส ริสชี่ (Dennis Ritchie) เมื่อประมาณต้นปีค.ศ. 1970 เพื่อใช้งานบนระบบปฏิบัติการยูนิกส์ ต่อมาถูกนำไปใช้ในระบบปฏิบัติการต่าง ๆ จนถูกใช้เป็นภาษาพื้นฐานสำหรับภาษาอื่น เช่น ภาษาจาวา (Java) ภาษาพีเอชพี (PHP) ภาษาซีชาร์ป (C#) ภาษาซีพลัสพลัส (C++) ภาษาเพิร์ล (Perl) ภาษาไพทอล (Python) หรือภาษารูบี้ (Ruby)

ประวัติความเป็นมาของภาษาซี

ภาษาซีเป็นภาษาระดับสูง( High-Level-Language) และภาษาโปรแกรมที่โปรแกรมเมอร์นิยมใช้กันมาก เนื่องจากเป็นภาษาที่มีความเร็วในการทำงานสูงใกล้เคียงกับภาษาเครื่อง มีโครงสร้างที่ชัดเจน เข้าใจง่าย สามารถเขียนโปรแกรมเพื่อติดต่อกับฮาร์ดแวร์ของเครื่องคอมพิวเตอร์ได้อย่างดี ภาษาซีเกิดขึ้นในปี ค . ศ .1972 ผู้คิดค้นคือนายเดนนีส ริทชี (Dennis Ritchi) การศึกษาภาษาซีถือว่าเป็นพื้นฐานในการศึกษาภาษาใหม่ ๆ ได้