วันเสาร์ที่ 10 มกราคม พ.ศ. 2558

การแปลงชนิดข้อมูลของภาษา C

การแปลงชนิดข้อมูลของภาษา  C  (C  type  conversion)

            เมื่อเราเขียนโปรแกรมมักจะพบว่า  ใช้ตัวดำเนินการกับตัวแปรของชนิดข้อมูลแตกต่างกัน  เพื่ออำนวยความสะดวกในการเขียนโปรแกรมภาษา C  จึงได้กำหนดกฎเกณฑ์ดังนี้  ถ้าค่าตัวแปร  หรือค่าคงที่ต่างชนิดกัน  ให้ทำการเปลี่ยนชนิดของข้อมูลที่มีขนาดเล็กให้เป็นชนิดของข้อมูลที่ใหญ่ขึ้นโดยให้ศึกษารายละเอียดในตารางแสดงลำดับการทำงานของตัวดำเนินการในภาษา  C  ต่อไปนี้พอสังเขป

ตารางแสดงลำดับการทำงานของตัวดำเนินการในภาษา  C


แสดงการเปลี่ยนแปลงชนิดของข้อมูล

ในตารางแสดงลำดับการทำงานของตัวดำเนินการในภาษา  C แถวที่  1  จะเห็นว่า  x  เป็นตัวแปรชนิดข้อมูลแบบ  int  และ y  เป็นตัวแปรข้อมูลแบบ  long  เมื่อนำ  x  และ  y  มา  บวก  ลบ  คูณ  และหารกัน  ผลลัพธ์ที่ได้จะเป็นชนิดข้อมูลแบบ  long  (เพราะ  long  มีพิสัยในการเก็บข้อมูลกว้างกว่า  int)  เช่น
      int  x = 7;
float y = 2;
-         ถ้า  x/2  จะได้ผลลัพธ์เป็น  3  (ชนิดข้อมูลแบบ  int)
-         ถ้า  x/y  จะได้ผลลัพธ์เป็น  3.500000  (ชนิดข้อมูลแบบ  float)

ข้อสังเกต  ภาษา  C  เป็นภาษาที่ดีมาก  ที่อำนวยความสะดวกในการแปลงชนิดข้อมูลของตัวแปรให้ใหญ่ขึ้น  ทำให้ไม่มีปัญหาในการเก็บข้อมูลและเราไม่ต้องกังวลผลที่ได้จากการดำเนินการของตัวแปรในนิพจน์ต่าง ๆ  นอกจากนี้ภาษา  C  ยังอนุญาตให้เราแปลงชนิดข้อมูลได้ชั่วคราวด้วยตัวผู้เขียนโปรแกรมเอง  โดยให้ศึกษาโปรแกรมตัวอย่างที่  2.4  และโปรแกรมตัวอย่างที่  2.5  โดยโปรแกรมตัวอย่างที่  2.4  แสดงการคำนวณค่าจ้างที่ผิด  ส่วนโปรแกรมตัวอย่างที่  2.5  แสดงการคำนวณค่าจ้างที่ถูกโดยการเปลี่ยนแปลงชนิดข้อมูลชั่วคราว

            โปรแกรมตัวอย่าง แสดงโปรแกรมการคำนวณค่าจ้างที่ผิด
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
               จากโปรแกรมตัวอย่าง สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้
              บรรทัดที่  1   เป็นการประกาศตัวแปร  profits  และ  employees  ให้เป็นชนิด  int
              บรรทัดที่  2   เป็นคำสั่งให้ลบจอภาพ
              บรรทัดที่  3  และ  4  กำหนดค่าให้กับตัวแปร  โดย  profits  มีค่า  9  และ  employees  มีค่า  2
              บรรทัดที่  5  ให้พิมพ์ข้อความ  Each employee gets  4  ออกแสดงที่จอภาพ  โดยตัวเลข  4  ได้จากการคำนวณ  9/2  คือค่าของ  ตัวแปร  porfits/ employees

            จากโปรแกรมตัวอย่างนี้ เราคงเห็นแล้วว่าผลหารที่ได้จะเป็นจำนวนเต็ม  ส่วนที่เป็นเลขทศนิยมจะตัดทิ้งไป  เมื่อภาษา  C  ทำงานกับข้อมูลชนิดจำนวนเต็ม  เพื่อแก้ปัญหาที่เกิดการผิดพลาด  ในกรณีนี้เราสามารถเปลี่ยนชนิดข้อมูลได้ชั่วคราว  คือ  เปลี่ยนตัวแปร  profits  จากชนิดข้อมูลแบบ  int ไปเป็น  float  ชั่วคราว  ดังตัวอย่างโปรแกรมแสดงโปรแกรมการเปลี่ยนแปลงชนิดข้อมูลชั่วคราว ต่อไปนี้

โปรแกรมตัวอย่าง แสดงโปรแกรมการเปลี่ยนแปลงชนิดข้อมูลชั่วคราว
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
            โปรแกรมข้างต้นจะเหมือนกับโปรแกรมแสดงโปรแกรมการคำนวณค่าจ้างที่ผิด ทุกประการยกเว้น  บรรทัดที่  1  ในการคำนวณ  (float)  profits / employees  เป็นการเปลี่ยนตัวแปร  profits  จากชนิดข้อมูล  int  ให้เป็น  float  ชั่วคราว  ดังนั้นผลลัพธ์ที่ได้จากโปรแกรมจึงเป็น  4.500000  และใช้  %f  ในการควบคุมการแสดงผล
            จากโปรแกรมตัวอย่างแสดงโปรแกรมการเปลี่ยนแปลงชนิดข้อมูลชั่วคราวข้างต้นได้ใช้ฟังก์ชัน  printf( )  เพื่อแสดงให้อยู่ในรูปแบบที่ต้องการ  โดยใช้รหัสรูปแบบ  %f  (format   code)  %f  เป็นรหัสรูปแบบการพิมพ์ข้อมูลชนิด  float    ได้สรุปรหัสรูปแบบการพิมพ์ข้อมูลทั้งหมดที่ใช้กับฟังก์ชัน  printf( )  ผู้เขียนโปรแกรมควรจำให้ได้ทั้งหมด   เพื่อความสะดวกและรวดเร็วในการใช้เขียนโปรแกรมในโอกาสต่อไป


ที่มา : http://varried.blogspot.com/

นิพจน์


นิพจน์  (expression)

            นิพจน์ คือ การนำค่าคงที่ ตัวแปร  และตัวดำเนินการมาเขียนประกอบกัน  เพื่อให้ตัวแปรภาษาสามารถเข้าใจและคำนวณหาผลลัพธ์ได้ตามที่เราต้องการ
       

ตัวอย่าง  ถ้าต้องการหาค่าจากสูตร  a2+2ab+b2  เมื่อ  a=2, b=3  เราจะต้องเขียนสูตรดังกล่าวให้เป็นนิพจน์ดังนี้
a*a+2 *a *b+b*b  ……………………..……………………………  แบบที่  1
หรือ       pow(a,2)  +  2 *a *b  +  pow(b,2)  ………………………………  แบบที่  2
            สำหรับฟังก์ชัน  pow(x,y)  เป็นฟังก์ชันที่ใช้หาค่าตัวเลขที่อยู่ในรูปเลขยกกำลัง
โดยที่       x     เป็นเลขฐานซึ่งจะต้องมีค่าเป็นเลขจำนวนเต็มบวกหรือศูนย์ก็ได้
              y     เป็นเลขยกกำลังซึ่งอาจจะเป็นเลขจำนวนเต็มบวกหรือลบก็ได้
ดังนั้น  pow(x,y) หมายถึง  xy ส่วน pow(a,2)   หมายถึง a2  และ pow(b,2)  หมายถึง  b2

ข้อควรระวัง  ก่อนที่เราจะใช้ฟังก์ชัน  pow(x,y)  นี้จะต้องใช้คำสั่ง  #include<math.h>  อยู่บนส่วนต้นของโปรแกรม  เพื่อนำแฟ้ม  math.h  เข้ามาไว้ในโปรแกรมภาษา  C  ก่อน  มิฉะนั้นอาจเกิดข้อผิดพลาดในการแปลโปรแกรมได้เพราะไม่สามารถหาฟังก์ชัน  pow(x,y)  ได้

ตัวอย่าง  แสดงนิพจน์ตัวอย่าง  ซึ่งมีอยู่หลายชนิดตังต่อไปนี้
1)  a+b*10+(3*c)*8        /* นิพจน์ทางคณิตศาสตร์*/
2)  (m>=n)&&(x<y)     /* นิพจน์เชิงตรรกะและนิพจน์เชิงเปรียบเทียบความสัมพันธ์*/
3)  !(k==25)              /* นิพจน์เชิงตรรกะและนิพจน์เชิงเปรียบเทียบความสัมพันธ์*/
4)  !(p)                      /* นิพจน์เชิงตรรกะ*/
5)  (i>10)||(j<5)        /* นิพจน์เชิงตรรกะและนิพจน์เชิงเปรียบเทียบ*/
6)  if  (y==z)          /* นิพจน์เงื่อนไข*/

            ตัวอย่าง แสดงการหาค่าผลลัพธ์จากนิพจน์ในภาษา  C
กำหนดให้    int   x=5, y=8, z=9;
1)  x+(y*z)             ผลลัพธ์คือ  77
2)  x+y*z+x*3        ผลลัพธ์คือ  92


ที่มา : http://varried.blogspot.com/

ลำดับการทำงานของตัวดำเนินการ


ลำดับการทำงานของตัวดำเนินการ (precedence  and  associativity  of  operators)

แสดงลำดับการทำงานของตัวดำเนินการในภาษา  C  มีดังนี้

ตัวดำเนินการที่มีลำดับการทำงานอันดับที่  1  จะทำงานก่อนอันดับที่  2  โดยทำงานไปเรื่อย ๆ  จนกระทั่งหมดตัวดำเนินการ  ส่วนลักษณะการทำงานของตัวดำเนินการแต่ละอันดับนั้นแตกต่างกันไป  ซึ่งจะเป็นการทำงานจากซ้ายไปขวา  (left to rigth)  หรือขวาไปซ้าย  (rigth  to  left)  ก็ได้
      
             ตัวอย่างที่  2.5  แสดงขั้นตอนการทำงานของตัวดำเนินการ

8 + 5 * 3
4 +15
19      ตัวดำเนินการ   *   อยู่ลำดับสูงกว่าตัวดำเนินการ  +  จึงต้องคูณเลขก่อนแล้วทำการบวกเลขทีหลัง

10 / 2 + 5 – 3
5 + 5 – 3
10 - 3
7        ตัวดำเนินการ  /  อยู่ลำดับสูงกว่าตัวดำเนินการ  +  และ  -  ส่วนตัวดำเนินการ  +  และ  -  อยู่ลำดับเดียวกัน  แต่ให้ทำจากซ้ายไปขวา  จึงทำบวกก่อนแล้วจึงทำลบ

9 * 3 - 20 / 5 + 6
27 -  4  + 6
23 + 629      ตัวดำเนินการ  *  และ  /  อยู่ลำดับเดียวกันให้ทำจากซ้ายไปขวา  คือ  คูณเลขก่อน  แล้วหารเลข  ส่วนตัวดำเนินการ  -  และ  +  อยู่ลำดับเดียวกันให้ทำจากซ้ายไปขวา  คือ  ลบเลขก่อนแล้วจึงบวกทีหลัง


ที่มา : http://varried.blogspot.com/

รหัสควบคุม


รหัสควบคุม

     สำหรับรูปแบบของรหัสควบคุมนั้น จะเริ่มต้นด้วยตัวอักษร back slash(\) จากนั้นก็ตามด้วยตัวอักษรพิเศษ รหัสควบคุมที่นิยมใช้กันทั่วไปมีดังนี้คือ




ที่มา : http://www.lks.ac.th/anchalee/c_control.htm

ตัวดำเนินการ


ตัวดำเนินการ  (operators)   
ตัวดำเนินการบางครั้งเรียกว่า  “เครื่องหมาย”  จะเข้าใจง่ายกว่า ในภาษา C สามารถแบ่งตัวดำเนินการได้หลายประเภทดังนี้


ตัวดำเนินการคณิตศาสตร์  (mathematical operators)
         ผลลัพธ์ที่ได้จากการคำนวณทางคณิตศาสตร์จะอยู่ในรูปของตัวเลข

ตัวดำเนินการความสัมพันธ์  (relational  operators)
         ผลลัพธ์ที่ได้จากตัวดำเนินการความสัมพันธ์  จะได้ค่าจริง  (1)  หรือค่าเท็จ  (0)  เท่านั้น

ตัวดำเนินการเชิงตรรกะ  (logical  operators)
         ผลลัพธ์ที่ได้จากตัวดำเนินการเชิงตรรกะ  จะได้ค่าจริง  (1)  หรือค่าเท็จ  (0)  เท่านั้น

ตัวดำเนินการเพิ่มค่าและลดค่า (increment and decrement operators)
         ผลลัพธ์ที่ได้จากการเพิ่มค่าและลดค่าจะอยู่ในรูปของค่าตัวเลข

ตัวดำเนินการบิตไวส์  (bitwise operators)

ตัวดำเนินการกำหนดค่า  (compound  assignment operators)

ตัวดำเนินการแบบเงื่อนไข  (conditional operators)
           ผลลัพธ์ที่ได้จากตัวดำเนินการแบบเงื่อนไขจะให้ค่าใดค่าหนึ่งขึ้นอยู่กับเงื่อนไขที่กำหนดจากตัวอย่างหมายความว่า ถ้าเงื่อนไข  a>b  เป็นจริงได้ค่า  max=a; ถ้าเงื่อนไข  a>b  เป็นเท็จได้ค่า  max=b;



ที่มา : http://varried.blogspot.com/




ตัวอักขระ

ตัวอักขระ  (charactors)
           ตัวอักขระในภาษา  C  สามารถจำแนกออกเป็น  3  ประเภท  คือ
           1) ตัวเลข  (digits)  คือ  ตัวเลข  0, 1, 2, …., 9  และตัวเลขฐานสิบหก  A, B, C, D, E  และ  F
           2) ตัวอักษร  (letters)  สามารถใช้ตัวอักษรพิมพ์ใหญ่  (uppercase  letter)  คือ A, B, C, …, Z  และ
                ตัวอักษรพิมพ์เล็ก  (lowercase  letter)  คือ  a, b, c, …., z  รวมทั้งสิ้น  52  ตัวอักษร
           3) ตัวอักขระพิเศษ  (special  character)  ซึ่งได้แก่

                         !               *              +             “              <
                        #              (               =             |               >
                         %            )               ~             ;               /      
                         ^             -               [               :               , (comma)
                        ?              &             _              ]               ‘
                      .(dot)                      b (blank  หรือ  space)

             ยกเว้นเครื่องหมาย _ (underscore)  เพียงตัวเดียวที่ภาษา  C  จัดเป็นตัวอักษรตัวหนึ่ง โดยที่ตัวอักขระชนิดต่าง ๆ  นี้จะถูกนำไปใช้เป็นค่าคงที่  ตัวแปร  ตัวดำเนินการ  หรือนิพจน์    ที่ใช้ในภาษา  C  ต่อไป

ที่มา : http://varried.blogspot.com/


ขั้นตอนการทำงานของโปรแกรม


ตัวอย่างผังงานที่มีโครงสร้างแบบเป็นลำดับ
           จากตัวอย่างผังงานการคำนวณดอกเบี้ย สามารถอธิบายเป็นขั้นตอนได้ดังนี้
                1.เริ่มต้นการทำงาน
                2.รับค่าเงินต้น และอัตราดอกเบี้ยเพื่อใช้ในการคำนวณหาดอกเบี้ย
                3.คำนวณหาดอกเบี้ยโดยใช้สมการต่อไปนี้
                        ดอกเบี้ย = เงินต้น * อัตราดอกเบี้ย
                4.แสดงค่าของดอกเบี้ยซึ่งคำนวณได้
                5.จบการทำงาน

ตัวอย่างผังงานที่มีโครงสร้างแบบมีการเลือก
        ผังงานการคำนวณดอกเบี้ยซึ่งมีอัตราดอกเบี้ย 2 อัตรา คือถ้าเงินต้นน้อยกว่า 1 ล้านบาท จะคิดดอกเบี้ยด้วยอัตราร้อยละ 4 แต่ถ้ามีเงินต้นมากกว่า 1 ล้านบาท จะคิดดอกเบี้ยด้วยอัตราร้อยละ 5

          จากผังงานสามารถอธิบายเป็นขั้นตอนได้ดังนี้
                1.เริ่มต้นการทำงาน
                2.รับค่าเงินต้น
                3.พิจารณาเงินต้นที่รับค่าเข้ามามากกว่า 1 ล้านบาทหรือไม่
                        - ถ้าใช่ ให้คำนวณดอกเบี้ยในอัตราร้อยละ 5
                        ดังนั้น ดอกเบี้ย = เงินต้น * 0.05
                        - ถ้าไม่ใช่ ให้คำนวณดอกเบี้ยในอัตราร้อยละ 5
                        ดังนั้น ดอกเบี้ย = เงินต้น * 0.04
                4.แสดงค่าดอกเบี้ยที่คำนวณได้
                5.จบการทำงาน

ตัวอย่างผังงานที่มีโครงสร้างแบบทำซ้ำ
        ผังงานการคำนวณยอดบัญชี (เงินต้นทบดอกเบี้ย)

        จากตัวอย่างผังงานสามารถอธิบายเป็นขั้นตอนได้ดังนี้
                1.เริ่มต้นการทำงาน
                2.รับค่าเงินต้น อัตราดอกเบี้ย และจำนวนปีที่ฝากเงิน ซึ่งเป็นข้อมูลที่จำเป็นในการคำนวณยอดบัญชี (เงินต้นทบดอกเบี้ยตามจำนวนปี ที่ฝากเงิน)
                3.กำหนดให้ n มีค่าเท่ากับ 0 ในผังงานนี้ n คือจำนวนรอบของการคิดดอกเบี้ย
                4.กำหนดยอดบัญชีเริ่มต้นให้เท่ากับเงินต้นที่รับค่าเข้ามา
                5.เปรียบเทียบว่า n น้อยกว่าจำนวนปีที่ฝากเงินหรือไม่
                        5.1 ถ้าใช่ให้ทำตามขั้นตอนต่อไปนี้
                                - คำนวณยอดบัญชีใหม่โดยทบดอกเบี้ยเพิ่มเข้าไปจากยอดบัญชีเดิม
                        โดยใช้สมการต่อไปนี้
                               ยอดบัญชี = ยอดบัญชี + (ยอดบัญชี * อัตราดอกเบี้ย)
                               - เพิ่มค่า n ไปอีก 1
                               - กลับไปเปรียบเทียบเงื่อนไขในข้อ 5
                        5.2 ถ้าไม่ใช่ แสดงว่าคิดดอกเบี้ยทบต้นครบตามจำนวนปีที่ฝากเงินซึ่งรับค่าเข้ามาแล้วให้ทำตามขั้นตอนต่อไปนี้
                                - แสดงค่ายอดบัญชีสุดท้ายที่คำนวณได้
                                - จบการทำงาน


ที่มา : http://www.tice.ac.th/Online/Online2-2549/bussiness/sirichai/lesson6.htm