วันพุธที่ 7 สิงหาคม พ.ศ. 2556

โปรแกรมภาษาซี

 การโปรแกรมด้วยภาษาซี  
     
          ในบทนี้จะได้แนะนำให้รู้จักกับภาษาซี ซึ่งเป็นภาษาที่เขียนเป็นแบบโครงสร้าง และเป็นภาษาที่ใช้เป็นพื้นฐานในการเรียนรู้การเขียนโปรแกรมเชิงกระบวนความได้เป็นอย่างดี

   1.โครงสร้างของภาษาซี
โครงสร้างพื้นฐานของโปรแกรมภาษาซีจะต้องประกอบด้วยฟังก์ชันอย่างน้อย 1 ฟังก์ชัน คือฟังก์ชัน main( )  ซึ่งมีรูปแบบดังรูปที่ 7.8
01 int main ( ) {  <ส่วยหัวของฟังก์ชัน02      การประกาศตัวแปรตัวแปรท้องถิ่น ;03      คำสั่งต่างๆ ;04 }



 
     2 องค์ประกอบของภาษาซี  
 ในที่นี้จะได้อธิบายองค์ประกอบพื้นฐานของภาษาซีจากตัวอย่างของโปรแกรมในรูปที่ 7.10 ซึ่งเป็นโปรแกรมที่พัฒนามาจากผังงานในตัวอย่างที่ 6.9  โดยเพิ่มการนับจำนวนครั้งของการทายทั้งหมดด้วย( รูปที่ 7.9 แสดงผังงานที่สอดคล้องกับโปรแกรมในรูปที่ 7.10 )




- การประกาศรวมแฟ้มส่วนหรือ ( header files )
1 #include <stdio.h>
1 #include <stdiob.h>

การประกาศรวมแฟ้มส่วนหัวดังแสดงในบรรทัดที่ 1 และ 2 เป็นการรวมเอาฟังก์ชันมาตรฐานของภาษาซีเข้ามาร่วมใช้งานกับโปรแกรมที่เขียนขึ้น ทำให้นักเขียนโปรแกรมสามารถเรียกใช้ฟังก์ชันมาตรฐานที่ภาษาซีเตรียมไว้ให้ได้ เช่น ฟังก์ชัน printf( ) และ scanf( ) เป็นต้น

- การประกาศตัวแปร ( variable declaration )
6  int target ;
7  int number ;
8. int no_of_guesses = 1 ;

ในบรรทัดที่ 6 ถึง 8 เป็นการประกาศตัวแปร ซึ่งเป็นข้อกำหนดของภาษาซีที่ต้องมีการประกาศตัวแปรไว้ที่ตอนต้นของฟังก์ชัน ก่อนที่จะสามารถใช้งานตัวแปรเหล่านั้นได้ ในที่นี้มีการประกาศตัวแปรtarget, number และ no_of_guesses เป็นชนิดจำนวนเต็ม ( int ) สังเกตว่ารูปแบบของการประกาศตัวแปร คือ data_type identification_name ซึ่ง data_type เป็นชนิดของข้อมูล และ identification_name เป็นชื่อตัวแปรที่กำหนดขึ้นให้มีชนิดตามที่ระบุนอกจากนี้ยังสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรที่เพิ่งจะประกาศขึ้นได้เลย ดังเช่นที่กำหนดค่า 1ให้กับตัวแปร no_of_guesses ในบรรทัดที่ 8

 -การรับข้อมูลเข้า
10  scanf (“%”, &target) ;
12  scanf (“%”, &number) ;
13  scanf (“%”, &number) ;

ในบรรทัดที่ 10.12 และ 20 เป็นการเรียกฟังก์ชัน scanf ( ) ในการรับข้อมูลเข้า โดยต้องมีการระบุพารามิเตอร์ คือ ตัวแรกเป็นสายอักขระของการกำหนดรูปแบบของข้อมูลเข้าที่ต้องการรับ ในที่นี้คือ”%d” หมายถึงว่าต้องการรับข้อมูลเข้าที่อยู่ในรูปแบบจำนวนเต็ม และตัวที่สองเป็นตำแหน่งในหน่วยความจำของตัวแปรที่ต้องการใช้เก็บค่าที่รับเข้า สังเกตุว่าภาษาซีใช้เครื่องหมาย & นำหน้าชื่อตัวแปร เป็นการอ้างถึงตำแหน่งในหน่วยความจำของตัวแปรนั้น

-การพิมพ์ผลลัพธ์
11 printf (“Enter the number you guess “) ;
16 printf (“Too high\n”) ;
17 printf (“Too low\n”) ;
19 printf (“Enter the number you guess “) ;

ในบรรทัดที่ 11. 16. 18 และ 19 เป็นการเรียกใช้ฟังก์ชัน printf ( ) เพื่อพิมพ์ข้อความออกทางจอภาพซึ่งเราสามารถกำหนดข้อความอยู่ภายในเครื่องหมายอัญประกาศให้เป็นพารามิเตอร์ของฟังก์ชัน printf ( ) ได้เลย

23 printf (“Correct – You try %d time . \n” , no_of_guesses ) ;
สำหรับในบรรทัดที่ 23 จะมีการพิมพ์ค่าของตัวแปรชนิดจำนวนเต็ม no_of_guesses ด้วย โดยจะต้องระบุรูปแบบข้อมูลของตัวแปลที่ต้องการให้พิมพ์ภายในข้อความที่เป็นพารามิเตอร์ตัวแรกด้วย ในที่นี้ตัวแปร no_of_guesses เป็นชนิด int ซึ่งจะใช้รูปแบบกำหนดการพิมพ์คือ “%d” ในลักษณะเดียวกันกับฟังก์ชัน scanf ( ) นั่นเอง

 - คำสั่งควบคุมการทำงานแบบวนซ้ำ


คำสั่ง while เป็นคำสั่งเพื่อควบคุมว่าชุดคำสั่งภายใต้คำสั่ง while ( คือ ตั้งแต่บรรทัดที่ 14 ถึง 22)จะถูกวนทำซ้ำอีกหรือไม่ โดยเมื่อโปรแกรมทำงานมาถึงบรรทัดที่ 13 จะตรวจสอบก่อนว่าเงื่อนไขเป็นจริงหรือไม่ ในที่นี้คือตรวจสอบว่าค่าของตัวแปร number ไม่เท่ากันกับค่าของตัวแปร target หรือไม่ถ้าเป็นจริง ก็จะไปทำงานตามคำสั่งภายในบรรทัดดังกล่าวหนึ่งรอบ ก่อนที่จะย้อนกลับไปตรวจสอบเงื่อนไขอีกครั้ง ถ้าเงื่อนไขเป็นเท็จ ก็จะไปทำงานในบรรทัดที่ 23 ต่อไป

- คำสั่งกำหนดค่าแปรให้กับตัวแปร
21 no_of_guesses = no_of_guesses  + 1 ;
   ในบรรทัดที่ 21 เป็นการกำหนดค่าใหม่ให้กับตัวแปร no_of_guesses โดยใช้เครื่องหมายกำหนดค่า ( = ) ซึ่งเป็นการกำหนดให้ตัวแปรที่อยู่ทางซ้ายของเครื่องหมายกำหนดค่า มีค่าเท่ากับค่าของนิพจน์ทางขวาของเครื่องหมายกำหนดค่า ซึ่งในที่นี้เป็นการเพิ่มค่าของตัวแปร no_of_guesses ขึ้นอีก 1 นั่นเอง

ภาษาซีใช้นิพจน์ทางคณิตศาสตร์เพื่อคำนวนและเปรียบเทียบ นิพจน์ประกอบด้วยตัวถูกดำเนินการ( operand ) และตัวดำเนินการ ( operator ) ที่สามารถถุกลดรูปหรือถูกประเมินให้เป็นค่าทางคณิตศาสตร์เพียงค่าเดียวได้ เช่น 2 * 5 เป็นนิพจน์ เนื่องจากสามารถหาค่าได้เป็น 10 ตัวดำเนินการในภาษาซีมีหลายประเภท

- คำสั่งควบคุมการทำงานแบบมีทางเลือก
15 if (number > target)
16   printf (“Too high\n”) ;
17 else
18   printf (“Too low\n”) ;

คำสั่ง if-else ในบรรทัดที่ 15 ถึง 18 เป็นการเลือกว่าจะทำงานตามคำสั่งภายใต้ if หรือภายใต้ elseแล้วแต่เงื่อนไขที่อยู่หลัง if ในบรรทัดที่ 15 โดยถ้าเงื่อนไขเป็นจริง จะทำงานภายใต้ if นั่นคือคำสั่งในบรรทัดที่ 16 เท่านั้น แล้วจะข้ามไปทำงานในบรรทัดที่ 19 เลย แต่ถ้าเงื่อนไขในบรรทัดที่ 15 เป็นเท็จก็จะข้ามคำสั่งภายใต้ if ไปทำงานที่คำสั่งภายใต้ else ในบรรทัดที่ 18 เท่านั้น ก่อนที่จะทำงานในบรรทัดที่ 19 ต่อไป
-คำสั่ง return
25 return 0;

ในบรรทัดที่ 25 คำสั่ง return เป็นการจบการทำงานของฟังก์ชัน แล้วส่งค่าที่ระบุ ( คือค่า 0 ) กลับไปให้กับฟังก์ชันที่เรียกมา สำหรับโปรแกรมภาษาซีที่ถูกเรียกให้ทำงานจากระบบปฏิบัติการนั้น เนื่องจากระบบปฏิบัติการเป็นผู้เรียกให้ฟังก์ชันmain ( ) ในโปรแกรมทำงาน ดังนั้นเมื่อโปรแกรมทำงานเสร็จสิ้นลง ฟังก์ชัน main ( ) จึงส่งค่า 0 ไปให้กับระบบปฏิบัติการ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น