วันอาทิตย์ที่ 9 เมษายน พ.ศ. 2560

เริ่มต้นกับภาษาซี


เริ่มต้นกับภาษาซี
ภาษา ซีเป็นภาษาคอมพิวเตอร์ระดับสูง ที่ใช้สำหรับเขียนโปรแกรมประยุกต์ต่างๆ เช่นเดียวกับ ภาษาปาสคาล ภาษาเบสิก และภาษาฟอร์แทรน เป็นต้น นอกจากนี้ภาษาซียังใช้สำหรับเขียนดปรแกรมระบบ และโปรแกรมสำหรับควบคุมฮาร์ดแวร์บางส่วนที่ภาษาโปรแกรมระดับสูงหลายภาษาไม่ สามารถทำได้ ภาษาซีจึงจัดเป็นภาษาระดับกลางด้วย
ก่อนที่โปรแกรมภาษาซีจะถูกรัน(run) จะต้องถูกแปลงให้อยู่ในรูปของอ็อบเจกต์โค้ด(object code) โดยการคอมไพล์ (compile) โปรแกรมภาษาซีที่เขียนโดยใช้คำสั่งตามมาตรฐานของ ANSI C สามารถนำไปคอมไพล์ และรันที่เครื่องคอมพิวเตอร์ต่างระบบกันได้
1.1   การคอมไพล์และรันโปรแกรม
โปรแกรมที่เขียนขึ้นโดยใช้ภาษาโปรแกรมต่างๆ นั้น เราเรียกว่า รหัสต้นฉบับ (source code) ซึ่ง อยู่ในรูปของข้อความตามหลักการเขียนโปรแกรมของภาษาโปรแกรมที่สามารถอ่าน และทำความเข้าใจได้โดยมนุษย์เท่านั้น ดังนั้นเพื่อให้เครื่องคอมพิวเตอร์สามารถเข้าใจโปรแกรมและปฏิบัติได้ จึงต้องนำรหัสต้นฉบับมาผ่านกระบวนการแปลงให้อยู่ในรูปของอ็อบเจกต์โค้ดที่ ประกอบด้วยรหัสตัวเลข 0 และ 1 เราเรียกกระบวนการแปลงดังกล่าวว่า การคอมไพล์โปรแกรม
1.2   โครงสร้างพื้นฐานของโปรแกรมภาษาซี
โครงสร้างพื้นฐานของโปรแกรมภาษาซีจะต้องประกอบด้วยโปรแกรมย่อย หรือเรียกว่า ฟังก์ชัน (function) อย่างน้อย 1 ฟังก์ชัน คือ ฟังก์ชัน main() ซึ่งมีรูปแบบดังนี้
void main() {                                                     // ส่วนหัวของฟังก์ชันการประกาศตัวแปรท้องถิ่น;                             // ส่วนการประกาศตัวแปรคำสั่งต่างๆ;                                                 // ส่วนคำสั่ง
}
รูปที่ 1.1 แสดงโครงสร้างพื้นฐานของโปรแกรม
          ฟังก์ชัน main() ประกอบด้วย 3 ส่วนหลัก คือ
1) ส่วนหัวของฟังก์ชัน ประกอบด้วย ชนิดข้อมูล void ชื่อฟังก์ชัน main ตามด้วยเครื่องหมาย ( และ ) ตามลำดับ
2) ส่วนการประกาศตัวแปร ใช้สำหรับประกาศตัวแปรชนิดต่างๆ เพื่อเก็บข้อมูลระหว่างการประมวลผล
3) ส่วนคำสั่ง ประกอบด้วยคำสั่งที่เกี่ยวข้องกับการรับเข้าและการแสดงผลข้อมูล และคำสั่งประมวลผลอื่นๆ
ส่วนประกาศตัวแปรและส่วนคำสั่งจะต้องเขียนอยู่ระหว่างเครื่องหมาย { และ } เสมอ ทั้งสองส่วนนี้ใช้สำหรับนิยามการทำงานของฟังก์ชัน main() หรือในที่นี้เป็นการนิยามการทำงานของโปรแกรมนั่นเอง และคำสั่งทุกคำสั่งในภาษาซีจะต้องเปิดท้ายด้วยเครื่องหมาย ; เสมอ
1.3   โปรแกรมภาษาซีอย่างง่าย
โปรแกรมในตัวอย่างที่ 1.1 เป็นโปรแกรมภาษาซีที่สั้นที่สุด ที่สามารถคอมไพล์ และรับได้โดยคอมไพเลอร์ตามมาตรฐานของ ANSI C
ตัวอย่างที่ 1.1 โปรแกรมภาษาซีที่สั้นที่สุด
  // Program: First.c// แสดงการใช้ฟังก์ชัน main() ในโปรแกรมvoid main() {
}
ในตัวอย่างนี้จะเห็นได้ว่า โปรแกรมภาษาซีมีชื่อว่า First และมีส่วนขยายเป็น .c นอกจากนี้ภายในฟังก์ชัน main() ได้ละทั้งส่วนการประกาศตัวแปรและส่วนคำสั่ง หรือกล่าวได้ว่าฟังก์ชัน main() ของโปรแกรม First.c เป็นฟังก์ชันว่าง เมื่อรันโปรแกรมจึงไม่ปรากฏผลใดๆ
อย่างไรก็ตามแม้ว่าภายในฟังก์ชันได้ละส่วนการประกาศตัวแปร และส่วนคำสั่ง แต่ยังต้องมีเครื่องหมาย { และ } เพื่อบอกขอบเขตของฟังก์ชัน main()
1.4   การแสดงผลลัพธ์เบื้องต้น
ตัวอย่างที่ 1.2 โปรแกรมพิมพ์ข้อความออกทางจอภาพ
/* 1 */ // Program: Output1.c/* 2 *//* 3 */  #include <stdio.h>
/* 4 */
/* 5 */ void main() {
/* 6 */   printf(“The first output form C.\n”);
/* 7 */}
ผลลัพธ์ คือ
The first output form C.
ชุด อักขระ /* ซึ่งใช้คู่กับ */ ที่ปรากฏในโปรแกรม ใช้บอกจุดเริ่มต้น และจุดสิ้นสุดของการเขียนคำอธิบายกำกับส่วนต่างๆ ของโปรแกรม ข้อความที่เขียนอยู่ระหว่างชุดอักขระดังกล่าวสามารถมีความยาวต่อเนื่องกัน ได้หลายบรรทัด และเป็นส่วนที่ไม่ถูกประมวลผล
บรรทัด ที่ 1 และ 2 ใช้ชุดอักขระ // ด้านหน้าคำอธิบายกำกับส่วนต่างๆ ของโปรแกรมที่สิ้นสุดภายในบรรทัด ในที่นี้ใช้แสดงชื่อโปรแกรม และคำอธิบายการทำงานของโปรแกรม
บรรทัดที่ 3 และ 5 เป็นบรรทัดว่าง นักเขียนโปรแกรมสามารถใช้บรรทัดว่าง เพื่อเว้นช่วงระหว่างบรรทัด หรือใช้อักขระต่างๆ เช่น ช่องว่าง(blank) หรือแท็บ(tab) เพื่อสร้างระยะเยื้องในการจัดรูปแบบของโปรแกรมให้ง่ายต่อการอ่าน และมีรูปแบบเป็นของตนเอง
บรรทัดที่ 4 เป็นการใช้คำสั่งของตัวประมวลผลก่อนซีที่มีชื่อว่า include ซึ่งขึ้นต้นด้วยอักขระ # ในที่นี้คำสั่ง #include จะมีผลทำให้แฟ้มชื่อ stdio.h ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรม Outpuc1.c
บรรทัดที่ 7 เรียกใช้คำสั่ง printf() ซึ่งเป็นเพียงคำสั่งเดียวของโปรแกรม Output1.c การทำงานของคำสั่ง printf() อาร์กิวเมนต์ของคำสั่ง printf() ซึ่งเขียนอยู่ระหว่างเครื่องหมาย ( และ ) ได้แก่ข้อความที่เขียนอยู่ระหว่างเครื่องหมาย “ และ ” ซึ่งเรียกว่าสายอักขระ(string) ในที่นี้สายอักขระ “The first output from C.\n” เป็นอาร์กิวเมนต์ค่าเดียวของคำสั่ง printf() จะมีผลทำให้คำสั่ง printf() แสดงข้อความของสายอักขระออกทางจอภาพ
จะเห็นได้ว่าชุดอักขระ \n ที่ปรากฏเป็นส่วนหนึ่งของสายอักขระในบรรทัดที่ 7 ไม่ได้ถูกแสดงผลออกทางจอภาพ เหตุที่เป็นเช่นนั้นเนื่องจากว่าอักขระ \ ซึ่งเรียกว่า อักขระหลีก (escape character) มีผลทำให้อักขระ 1 ตัวที่ตามมา ในที่นี้คืออักขระ n มีความหมายเปลี่ยนไปจากความหมายปกติ สำหรับชุดอักขระ \n คอมไพลเลอร์ภาษาซีได้กำหนดให้มีความหมายเป็น ขึ้นบรรทัดใหม่ และนอกจาก \n แล้วยังมีชุดอักขระของอักขระหลีกอื่นที่มีความหมายที่แตกต่างกันออกไป เช่น
          \t       หมายถึง   อักขระ แท็บ
หมายถึง   อักขระ NULL
\’       หมายถึง   อักขระ ‘
\”       หมายถึง   อักขระ ”
\\       หมายถึง   อักขระ \
ตัวอย่างที่ 1.โปรแกรมพิมพ์หัวรายงาน
/* 1 */ // Program: Output2.c/* 2 */ // พิมพ์หัวรายงาน/* 3 */
/* 4 */ #include <stdio.h>
/* 5 */
/* 6 */ void main() {
/* 7 */      printf(“\n—< Paroll Report >—”);
/* 8 */      printf(“\n               24/05/2555\n”);
/* 9 */}
ผลลัพธ์ คือ
—< Paroll Report >—24/05/2555
ตัวอย่างที่ 1.4 โปรแกรมพิมพ์จำนวนเต็ม
/* 1 */ // Program: Output3.c/* 2 */ // พิมพ์จำนวนเต็ม/* 3 */
/* 4 */ #include <stdio.h>
/* 5 */
/* 6 */ void main() {
/* 7 */     printf(“\nFirst value is %d. ”,5);
/* 8 */     printf(“\nSecond value is %d. ”,7);
/* 9 */ }
ผลลัพธ์ คือ
First value is 5.Second value is 7.

ตัวอย่างที่ 1.5 โปรแกรมพิมพ์จำนวนเต็มหลายค่าในบรรทัดเดียว
/* 1 */ //Program: Output4.c/* 2 */ // พิมพ์จำนวนเต็มหลายค่าในบรรทัดเดียว/* 3 */
/* 4 */ #include <stdio.h>
/* 5 */
/* 6 */ void main() {
/* 7 */       printf(“\nSum of %d and %d is %d. ”, 9, 4, 9+4);
/* 8 */       printf(“\nDifference of %d and %d is %d. ”, 9, 4, 9-4);
/* 9 */       printf(“\Multiplication of  %d and %d is %d. ”, 9, 4, 9*4);
/* 10 */     printf(“\nDivision of %d and %d is %d. \n”, 9, 4, 9/4);
/* 11 */}
ผลลัพธ์ คือ
Sum of 9 and 4 is 13.Difference of 9 and 4 is 5.Multiplication of 9 and 4 is 36.
Division of 9 and 4 is 2.

3 ความคิดเห็น:

แนะนำภาษาซี

หน่วยที่  1 แนะนำภาษา C 1. ความเป็นมาของภาษาซี ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำถูกพัฒนาโดยเดนนิส ริดชี (De...