Open top menu
#htmlcaption1 ยินดีต้อนรับ วิชาการเขียนโปรแกรมเบื้องต้นด้วยภาษา C โดยใช้โปรแกรม Devc++
วันพุธที่ 2 กันยายน พ.ศ. 2558
 สอบกลางภาคเรียน

สอบกลางภาค ภาคเรียนที่1
รายวิชา ง32101 เทคโนโลยีสารสนเทศ
ชั้นมัธยมศึกษาปีที่ 5 ปีการศึกษา 2558
คำชี้แจง แบบทดสอบแบ่งเป็น 2 ตอน
ตอนที่1 แบบปรนัยจำนวน 10 ข้อ (10 คะแนน)
ตอนที่2 แบบอัตนัยจำนวน 5 ข้อ (10 คะแนน)
จำนวน 15 ข้อ เวลา 1 ชั่วโมง 20 คะแนน

อ่านต่อ>>
    ตัวดำเนินการ (Operator)

                             

                                ตัวดำเนินการ (Operator)



 ตัวดำเนินการ (Operator)

               ตัวดำเนินการ(Operator) ในการเขียนโปรแกรมภาษาซี มีอยู่ 3 ประเภทใหญ่ ๆ ดังนี้
                1)  ตัวคำนวณทางคณิตศาสตร์ (arithmetic operators)
                2)  ตัวดำเนินการทางตรรกะ (logical operator)
                3)  ตัวดำเนินการเปรียบเทียบ (relational operator)
                ซึ่งการดำเนินการแต่ละประเภทจะมีเครื่องหมายที่ต้องใช้เพื่อเขียนคำสั่ง สำหรับการดำเนินการประเภทนั้น ๆ ดังรายละเอียด
               ตัวคำนวณทางคณิตศาสตร์ (arithmetic operators)
                   เป็นตัวดำเนินการทางคณิตศาสตร์ ได้แก่ เครื่องหมายที่ใช้ในการบวก ลบ คูร หาร ตัวเลข และอื่น ๆ ดังตาราง
ตัวดำเนินการ
ความหมาย
ตัวอย่าง
+
การบวก
X + Y
-
การลบ
X - Y
*
การคูณ
X * Y
/
การหาร
X / Y
%
การหารจะเอาเฉพาะเศษไว้
11%3=3 เศษ 2 ดังนั้น 2 เป็นผลลัพธ์
- -
การลดค่าลงครั้งละ 1
X-- หรือ --X เหมือนกับ X=X-1
++
การเพิ่มค่าครั้งละ 1
X++ หรือ ++X เหมือนกับ X=X+1
ตารางแสดงตัวดำเนินการของภาษาซี

                   ขั้นตอนการทำงานของตัวดำเนินการในซี
                     ในบางครั้งนิพจน์ประกอบด้วยตัวดำเนินการมากมาย ทำให้เกิดความยุ่งยากในการพิจารณาขั้นตอนการทำงานของตัวดำเนินการ จึงได้ตั้งกฎเกี่ยวกับลำดับการทำงานก่อนหลังของตัวดำเนินการ (Operator) ดังตาราง
ตัวดำเนินการ
ตัวอย่าง
( )
1 (สูงสุด)
++   --   unary
2
*    /    %
3
+   -
4
+=     -=     *=     =     /=     %=
5 (ต่ำสุด)
ตารางแสดงลำดับการทำงานของตัวดำเนินการ

                       ตัวดำเนินการที่มีความสำคัญอยู่ในระดับเดียวกัน ให้ทำงานตามขั้นตอนจากซ้ายไปขวาเป็นหลัก  ดังตัวอย่างในตาราง
     ตัวอย่าง
     5 + 6 * 2
     ตัวดำเนินการ  *  อยู่ลำดับสูงกว่า  +  จึงต้องคูณเลข
      ก่อนแล้วบวก 5 ภายหลัง
     2  *  3  -  14/7  +  5
     ตัวดำเนินการ  *  และ  /  อยู่ลำดับเดียวกัน ให้ทำจาก
      ซ้ายไปขวา คือ คูณเลข แล้วหารเลข

     ตัวดำเนินการ  -  และ  +  อยู่ลำดับเดียวกัน ทำจาก
      ซ้ายมือก่อน คือ ลบเลข แล้วจึงบวกเลขในภายหลัง
ตารางแสดงลำดับการทำงานของตัวดำเนินการ

               ตัวคำนวณทางตรรกะ (logical operators)
                   เครื่องหมายรรกะ มีจุดประสงค์ใช้ในการเปรียบเทียบเพื่อตัดสินใจ   
                   เครื่องหมายตรรกะที่ใช้ในภาษาซี  มีดังนี้
เครื่องหมาย
ความหมาย
ตัวอย่าง
&&
และ
 x < 60 && x > 50  กำหนดให้  x  มีค่าในช่วง 50 ถึง 60
||
หรือ
 x = = 10 || x = = 15 กำหนดให้ x มีค่าเท่ากับตัวเลข 2 ค่า
 คือ  10  หรือ  15
!
ไม่
 x = 10  !x  กำหนดให้  x  ไม่เท่ากับ  10

                 ตัวคำนวณเปรียบเทียบ (relational operators)
                   ใช้เปรียบเทียบค่า 2 ค่า เพื่อแสดงการเลือก ซึ่งโปรแกรมโดยทั่วไปใช้ในการทดสอบ
เงื่อนไขตามที่กำหนด การเปรียบเทียบโดยการเท่ากันของ 2 ค่า จะใช้เครื่องหมาย ==
เครื่องหมาย
ความหมาย
ตัวอย่าง
>
มากกว่า
  a > b      a  มากกว่า  b
>==
มากกว่า หรือ เท่ากับ
  a >= b    a  มากกว่าหรือเท่ากับ  b
<
น้อยกว่า
  a < b      a  น้อยกว่า  b
<==
น้อยกว่า หรือ เท่ากับ
  a <= b    a  น้อยกว่าหรือเท่ากับ  b
==
เท่ากับ
  a == b      a  เท่ากับ  b
!=
ไม่เท่ากับ
  a != b      a  ไม่เท่ากับ  b

  นิพจน์ (Expression)
               นิพจน์(Expression) คือ  การนำตัวแปร ค่าคงที่ และตัวดำเนินการมาเขียนประกอบกัน โดยใช้เครื่องหมายอย่างใดอย่างหนึ่งเป็นตัวเชื่อม และเพื่อให้ตัวแปรภาษาสามารถเข้าใจและคำนวณหาผลลัพธ์ได้ตามที่เราต้องการ โดยมีกฎเกณฑ์ทั่ว ๆ ไปในการเขียนนิพจน์ของภาษาซี มีดังนี้
               1)  เขียนตัวอักษรหลายตัวติดกันได้โดยไม่มีเครื่องหมายคั่น เช่น  XY ถือเป็น 1 ตัวแปร
               2)  กรณีนิพจน์มีค่าของตัวแปรหรือค่าคงที่ต่างชนิดกันในนิพจน์เดียวกัน กลไกของภาษาซี จะเปลี่ยนชนิดของข้อมูลที่มีขนาดเล็กให้เป็นชนิดของข้อมูลที่ใหญ่ขึ้น ดังนั้นจึงควรระวังในการตั้งตัวแปรเพื่อเก็บผลลัพธ์ที่ได้จากการดำเนินการของนิพจน์มีค่าของตัวแปรหรือค่าคงที่ต่างชนิดกัน ซึ่งตัวแปรที่ตั้งขึ้น ควรเป็นชนิดของข้อมูลที่ใหญ่ที่สุดในนิพจน์นั้น ดังตัวอย่าง
                   หากนิพจน์มี  int  กับ  long  กลไกของภาษาซีจะเปลี่ยนชนิดของข้อมูลเป็น  long
                   หากนิพจน์มี  int  กับ  double กลไกของภาษาซีจะเปลี่ยนชนิดของข้อมูลเป็น  double
         ตัวอย่างนิพจน์
นิพจน์ทางคณิตศาสตร์ตามปกติ
นิพจน์ทางคณิตศาสตร์ในภาษาซี
x + y - z
x + y - z
2xy + 4z
2 * x * y + 4 * z
x2 + 2x + 1
x * x + 2 * x + 1
2r
2 * r
(a - b) / (c - d)
b - 4ac
b * b - 4 * a * c
x * x / (x * y + 2)

cradit:http://www.krujintana.com
อ่านต่อ>>
คำสั่ง if else if



คำสั่ง if else if

ในการเขียนโปรแกรมคอมพิวเตอร์บางกรณีอาจจะต้องมีการตรวจสอบเงื่อนไขมากกว่า 1 ชั้น ดังนั้นในการตรจสอบเงื่อนไขในชั้นที่ 2 หรือชั้นต่อ ๆ ไป จึงมีการนำประโยคคำสั่ง if มาซ้อนลงในประโยคคำสั่ง if เดิมอีกครั้งหนึ่ง ซึ่งการซ้อนประโยคคำสั่ง if นี้ สามารถซ้อนลงไปหลังเงื่อนไข (Condition) หรือ ซ้อนลงไปหลัง else ก็ได้ ขึ้นอยู่กับวัตถุประสงค์และลักษณะของการตัดสินใจเพื่อเลือกที่จะทำงาน ดังภาพด้านล่างนี้
              ข้อสังเกต ในการใช้คำสั่ง if ซ้อนกันนั้น ถ้าต้องการทราบว่าจะต้องใช้คำสั่ง if ซ้อนกันกี่ตัวหรือกี่ชั้น ให้พิจารณาว่า ทางเลือกที่เกิดขึ้นทั้งหมดมีกี่ทางเลือก แล้วให้เอาจำนวนทางเลือก - 1 ก็จะเป็นจำนวนชั้นของการซ้อนคำสั่ง if ดังตาราง
ตารางแสดงจำนวนชั้นของการใช้คำสั่ง if เมื่อมีทางเลือกมากกว่า 1 ทางเลือก
จำนวนทางเลือกทั้งหมด
(n)
จำนวนทางเลือกทั้งหมด - 1
(n-1)
จำนวนคำสั่ง if ที่ใช้
2
2-1
1
3
3-1
2
4
4-1
3
5
5-1
4

               ตัวอย่างที่ 3  
ปรแกรมการใช้งาน  nested - if  หรือ   if - else - if 
                     โจทย์ :  จงเขียนโปรแกรมตัดเกรด กำหนดให้รับค่าคะแนนผ่านทางแป้นพิมพ์ และแสดงผลเกรดผ่านทางจอภาพ  กำหนดเงื่อนไขการตัดเกรด ดังนี้
                      คะแนนระหว่าง  80  ถึง  100  ได้เกรด  4
                      คะแนนระหว่าง  60  ถึง    79  ได้เกรด  3
                      คะแนนระหว่าง  50  ถึง    59  ได้เกรด  2
                      คะแนนระหว่าง  40  ถึง    49  ได้เกรด  1
                      คะแนนระหว่าง    0  ถึง    39  ได้เกรด  0
                      จากโจทย์สามารถเขียนผังงาน (Flow chart) ได้ดังนี้
                  จากผังงานนำมาเขียนโปรแกรมได้ดังนี้
 


Source code
คำอธิบายโปรแกรม
1
2
3
4
5

6

7

8

#include <stdio.h> 
#include <conio.h> 
 main()
{
      float score;


      printf("Enter your score: ");
     

     scanf("%f", &score);




//
ประกาศตัวแปร score
   
เป็นชนิดจำนวนตัวเลขทศนิยม


// แสดงข้อความ Enter your score:


// รอรับคะแนนจากแป้นพิมพ์มาเก็บ
   
ที่ตัวแปร score
9

10
11

12
13

14
      if(score < 0 || score > 100){
        printf("Enter score 0 - 100 \n");
    }
else if(score >= 80){
          printf("Score = %.2f , grade: 4 \n", score);
    }

else if(score >= 60){
          printf("Score = %.2f , grade: 3 \n", score);
     }
      
else if(score >= 50){
          printf("Score = %.2f ,grade: 2 \n", score);
    }
// ตรวจสอบว่า score อยู่ระหว่าง 0-100   ใช่หรือไม่ ถ้าไม่ใช่แสดง Enter score 0 - 100

// ตรวจสอบว่า score >= 80
   
ใช่หรือไม่? ถ้าใช่แสดงผลเกรด 4 (%.2f =ทศนิยม2 ตำแหน่ง)

//
ตรวจสอบว่า score >= 60
   
ใช่หรือไม่? ถ้าใช่แสดงผลเกรด 3(%.2f =ทศนิยม2 ตำแหน่ง)

//
ตรวจสอบว่า score >= 50
   
ใช่หรือไม่? ถ้าใช่แสดงผลเกรด 2(%.2f =ทศนิยม2 ตำแหน่ง)
15
16

17
18
19
      else if(score >= 40){
          printf("Score = %.2f ,grade: 1 \n", score);
    }
else{
          printf("Score = %.2f ,grade: 0 \n", score);
    }
      getch();
 
}
// ตรวจสอบว่า score >= 40
   
ใช่หรือไม่? ถ้าใช่แสดงผลเกรด 1(%.2f =ทศนิยม2 ตำแหน่ง)


//
ถ้าไม่ใช่แสดงผลเกรด
0

      ผลที่ได้จากการ Run
                 ถ้าป้อนคะแนนอยู่ระหว่าง 80 - 100  จะได้เกรด 4 เช่น ถ้าป้อน  89


                 ถ้าป้อนคะแนนอยู่ระหว่าง  0 - 39  จะได้เกรด 0 เช่น ถ้าป้อน  35

แบบทดสอบ
คำสั่ง if else if
 โจทย์ :  จงเขียนโปรแกรมตัดเกรด กำหนดให้รับค่าคะแนนผ่านทางแป้นพิมพ์ และแสดงผลเกรดผ่านทางจอภาพ  กำหนดเงื่อนไขการตัดเกรด ดังนี้

                      คะแนนระหว่าง  80  ถึง  100  ได้เกรด  A

                      คะแนนระหว่าง  75  ถึง    79  ได้เกรด  B+


                      คะแนนระหว่าง  70 ถึง    74 ได้เกรด    B


                      คะแนนระหว่าง  65  ถึง    69  ได้เกรด  C+


                      คะแนนระหว่าง    60  ถึง    64  ได้เกรด  C


                          คะแนนระหว่าง    55 ถึง    59  ได้เกรด  D+

                     คะแนนระหว่าง    50 ถึง    54  ได้เกรด  D


                      คะแนนระหว่าง    0 ถึง    49  ได้เกรด   E



อ่านต่อ>>
คำสั่ง if - else

คำสั่ง if - else

เป็นคำสั่งที่ต่างจากคำสั่ง if แบบง่ายที่ผ่านมาตรงที่คำสั่ง if แบบง่ายนั้น มีทางเลือกที่จะให้ทำอยู่เพียงทางเลือกเดียว คือ ถ้าเป็นจริงก็ทำทางเลือกนั้น แต่ถ้าเป็นเท็จก็ไม่ทำ แต่คำสั่ง if - else นี้มีทางเลือกที่ให้ทำอยู่สองทางเลือกหรือสองกรณี คือ
             กรณีที่ 1 ถ้าเงื่อนไขเป็นจริง ให้ทำกับสายงานหนึ่ง คือ ทำตามชุดคำสั่งที่ตามหลังเงื่อนไข (Condition) ที่ใช้ตรวจสอบ
             กรณีที่ 2 ถ้าเงื่อนไขเป็นเท็จ ก็ให้ทำกับอีกสายงานหนึ่ง คือ ทำตามชุดคำสั่งที่ตามหลังคำสงวน else
                  รูปแบบคำสั่ง  if  - else  2  ทางเลือก

if (เงื่อนไข)
{
           คำสั่งชุด  A ;
}
else
{
           คำสั่งชุด  B ;
}
ภาพผังงานแสดงการเลือกกระทำของประโยค   if - else 
                 จากภาพ แสดงให้เห็นว่า เป็นการเลือกทำชุดคำสั่ง A หรือชุดคำสั่ง B ดังนี้

                 1. ถ้าเงื่อนไขการตรวจสอบเป็น "จริง" จะไปทำสายงานในชุดประโยคคำสั่ง A
แล้วไปทำชุดประโยคคำสั่ง C ต่อไป
                 2. ถ้าเงื่อนไขการตรวจสอบเป็น "เท็จ" จะไปทำสายงานในชุดประโยคคำสั่ง B
แล้วไปทำชุดประโยคคำสั่ง C ต่อไป
               ตัวอย่างที่ 2  ปรแกรมการใช้งาน  if - else  2  ทางเลือก
                     โจทย์ :  ร้านขายผลไม้แห่งหนึ่ง ขายมะม่วง โดยมีอัตราการขายดังนี้ ถ้าซื้อมะม่วงมากกว่าหรือเท่ากับ 10 ลูกขึ้นไป มีอัตราการแถมอยู่ที่ 10 ต่อ 2 ลูก ซึ่งถ้าซื้อมะม่วง 10 ลูก จะได้แถม 2 ลูก, ถ้าซื้อ 20 ลูก จะได้แถม 4 ลูก เป็นต้น  แต่ถ้าซื้อไม่ถึง 10 ลูก จะไม่แถม
                                    จากโจทย์ จงเขียนโปรแกรมเพื่อรับค่าจำนวนมะม่วงที่ซื้อ และคำนวณหาจำนวนมะม่วงที่ลูกค้าจะได้
                   จากโจทย์  ขียนผังงาน (Flowchart)  ได้ดังนี้
ผังงาน (Flowchart) แสดงทิศทางการแก้ปัญหาโจทย์ตัวอย่างที่ 2
                  จากผังงานนำมาเขียนโปรแกรมได้ดังนี้
 
Source code
คำอธิบายโปรแกรม
1
2
3
4
5

6

7
#include <stdio.h>
#include<conio.h> 
 main() 

      int 
net,number

      printf("
Input Number of Mango : ");  

      scanf("
%d",&number); 




// ประกาศตัวแปร net, number 
    เป็นชนิดจำนวนเต็ม
// แสดงข้อความ Input Number of
   Mango :
// รอรับคะแนนจากแป้นพิมพ์มาเก็บ
   ที่ตัวแปร number
8


9
10
11
12
13
14
15
16

17
18
19
      if (number>=10) 

      { 
         
 net=number+(number*2)/10;
      }
      
else
      {
          
net=number;
      }
      printf("
Output Number of Mango :
                   %d
",net); 
      getch(); 
      
}
// ตรวจสอบว่า number >= 10 
   ใช่หรือไม่? ถ้าใช่เริ่มการทำงาน
   ใน block

// คำนวณหาจำนวนมะม่วงที่ลูกค้าจะได้





// แสดงข้อความ 
Output Number of
   Mango
 : จำนวนมะม่วงที่ลูกค้าจะได้

      ผลที่ได้จากการ Run
                 ถ้าป้อนจำนวนมะม่วงมากกว่าหรือเท่ากับ 10 ลูก เช่น ถ้าป้อนเท่ากับ 30 ลูก
                  จะได้ผลลัพธ์
                 ถ้าป้อนจำนวนมะม่วงน้อยกว่า 10 ลูก เช่น ถ้าป้อนเท่ากับ 4 ลูก
                  จะได้ผลลัพธ์
                หมายเหตุ  จากสูตร  net=number+(number*2)/10  ยกตัวอย่างเช่น ถ้า number มีค่าเท่ากับ 30 จะสามารถแทนสูตรได้ดังนี้  net=30+(30*2)/10 คือ net=30+6  จึงมีค่าเป็น 36 ซึ่งก็คือ 10 ต่อ 2 ลูก นั่นเอง
แบบทดสอบ
โปรแกรมการใช้งาน  if - else  2  ทางเลือก
จงเขียนโค๊ตจากโจทย์ลงในสมุด
                     โจทย์ :  ร้านขายผลไม้แห่งหนึ่ง ขายมะม่วง โดยมีอัตราการขายดังนี้ ถ้าซื้อมะม่วงมากกว่า 5 ลูกขึ้นไป มีอัตราการแถมอยู่ที่ 6 ต่อ 2 ลูก ซึ่งถ้าซื้อมะม่วง 10 ลูก จะได้แถม 4 ลูก, ถ้าซื้อ 20 ลูก จะได้แถม 8 ลูก เป็นต้น  แต่ถ้าซื้อไม่ถึง จำนวนที่กำหนดไว้  จะไม่แถม

ตัวแปรมี2ตัว ให้เปลี่ยนเป็น a กับ b



อ่านต่อ>>