Translate

วันพุธที่ 21 พฤษภาคม พ.ศ. 2557

บทที่5 เงื่อนไข(switch case)

เงื่อนไข(switch case)

          เงื่อนไข(switch case)เป็นเงื่อนไขเช่นเดียวกับ if-else แต่จะมีความเที่ยงตรงที่สูงกว่า และใช้ได้ค่อยข้างจำกัด โดยส่วนใหญ่แล้วจะใช้ในการควบคุมการแสดงผลทางเมาส์ และคีย์บอร์ด แต่ก็สามารถนำมาใช้เป็นเงื่อนไขเช่นเดียวกับ if-else ซึ่งการใช้นั้นจะต้องใช้ตามรูปแบบหรือ syntax ของมันครับ หากไม่ต้องกับรูปแบบแล้วเงื่อนไขก็จะใช้ไม่ได้หรือerror นั่นเองครับ การใช้ switch case นั้นนิยมใช้กับ main manu ครับ เพื่อที่จะได้เลือกใช้ฟังก์ชันย่อยๆต่อไป


รูปแบบการใช้งาน

switch ( ตัวแปร )
{
          case ' ตัวอักขระ ' :
                    สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นจริง
                    break;
          case ค่าคงที่  :
                    สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นจริง
                    break;
          default : 
                    สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นเท็จ
}

อธิบายโปรแกรม 
          จะเห็นว่าค่าตัวแปรที่ใช้ในการเงื่อนไข จะอยู่หลัง switch  และเงื่อนไขจะอยู่หลัง case  ส่วนสิ่งที่จะทำหากผลของเงื่อนไขเป็นจริง อยู่ใต้เครื่องหมาย : สิ่งที่สำคัญที่สุดคือคำสั่ง break เพราะหากไม่ใส่คำสั่งนี้โปรแกรมจะทำงานต่อไปโดยแสดงผลให้เราดูเพียงไม่กี่วินาที ซึ่งในความเป็นจริงเราดูไม่ทันหรอกครับ เพราะเฉพาะใส่ไปซะ break เนี่ย  ส่วนdefault คือนอกเหนือจาก case อื่นๆที่กล่าวมาครับ หมายหมายเหมือนกับ else ครับ  อีกสิ่งที่แตกต่างกันคือเงื่อนไขครับ หากเป็นตัวอักขระให้ใส่เครื่องหมาย '...'  แต่ถ้าเป็นค่าคงที่ไม่ต้องใส่ครับ

เปรียบเทียบกับ if-else
switch case
 switch ( A )
          case  1  :
                   printf("Yes");
                   break;
          case  2  :
                   printf("No");
                   break;
          default : 
                   printf("Error");
}

if-else
if ( A == 1)
{
         printf("Yes");
}
 else if ( A == 2)                   
{        
         printf("No");
}                 
 else         
{      
         printf("Error");
}

ซึ่่งทั้งสองโปรแกรมนี้มีการประมวลผล และแสดงผลเหมือนกัน

--------------------------------------------------------------

ตัวอย่างการใช้งาน

1.ตัวอย่างแรกง่ายๆก่อนนะครับ
#include <stdio.h>
main()
{
  int A;
  printf("i = ");
    scanf("%d",&A);
  switch ( A )
  { 
                  case 1 :
                          printf("Yes");
                          break;
                  case 2 :
                          printf("No");
                          break;
                  default : 
                          printf("Error");
         }
         getch();
}

จะเห็นว่าเมื่อรับข้อมูลค่าตัวแปรA แล้วจากนั้นจะตรวจสอบเงื่อนไข หากตัวแปรA มีค่าเท่ากับ 1 จะแสดงผลทางหน้าจอคือ Yes หากตัวแปรA มีค่าเท่ากับ 2 จะแสดงผลทางหน้าจอคือ No และถ้าไม่ต้องกับเงื่อนไขใดๆเลย จะแสดงผลทางหน้าจอคือ Error
--------------------------------------------------------------

2.ตัวอย่างที่สองเริ่มยากขึ้นมานะครบนะครับ
#include <stdio.h>
main()
{
  char A;
  printf("Your grad : ");
  A=getchar();
  switch ( A )
  { 
           case 'a' :
                    printf("Excellent!");
                    break;
           case 'b' :
                    printf("Well!");
                    break;
          case 'c' :
                    printf("Good!");
                    break;
           case 'd' :
                    printf("So-so!");
                    break;
           case 'e' :
                    printf("Badly!");
                    break;
           case 'f' :
                    printf("Oh god!");
                    break;
           default : 
                    printf("Error");
}
       getch();
}
จะเห็นว่าเมื่อรับข้อมูลค่าตัวแปรA ที่เป็นตัวอักขระ แล้วจากนั้นจะตรวจสอบเงื่อนไข หากตัวแปรA มีค่าเท่ากับ a จะแสดงผลทางหน้าจอคือ Excellent! หากตัวแปรA มีค่าเท่ากับ b จะแสดงผลทางหน้าจอคือ Well! หากตัวแปรA มีค่าเท่ากับ c จะแสดงผลทางหน้าจอคือ Good!หากตัวแปรA มีค่าเท่ากับ d จะแสดงผลทางหน้าจอคือ So-so! หากตัวแปรA มีค่าเท่ากับ e จะแสดงผลทางหน้าจอคือ Badly! หากตัวแปรA มีค่าเท่ากับ f จะแสดงผลทางหน้าจอคือ Oh god! และถ้าไม่ต้องกับเงื่อนไขใดๆเลย จะแสดงผลทางหน้าจอคือ Error
--------------------------------------------------------------

แบบฝึกหัด (Exercise)


1. เขียนโปรแกรมที่ใช้รับค่าจากคีย์บอร์ด จำนวน1ครั้ง แล้วตรวจสอบเงื่อนไข ถ้าจำนวนนั้น เท่ากับ 7 ให้แสดงคำว่า Yes นอกจากนั้นให้แสดงคำว่า No

2. เขียนโปรแกรมที่ใช้รับค่าจากคีย์บอร์ด จำนวน1ครั้ง และ กำหนดให้ตัวแปรA=1 และB=2 แล้วตรวจสอบเงื่อนไข ถ้าอักขระนั้น คือ a ให้ทำการ A+B 
ถ้าอักขระนั้น คือ b ให้ทำการ A-B ถ้าอักขระนั้น คือ c ให้ทำการ A*B ถ้าอักขระนั้น คือ d ให้ทำการ A/B ถ้าอักขระนั้น คือ e ให้ทำการ A%B แล้วแสดงผลลัพธ์ออกจากทางหน้าจอ   

----------------------------------------------------------------


เฉลย

1.ข้อแรกนะครับ
#include <stdio.h>
main()
{
         int A;
         printf("input : ");
         scanf("%d",&A);
         switch (A)
         { 
                     case 7 :
                              printf("Yes");
                                break;
                     default : 
                                printf("No");
           }
            getch();
}

2.ข้อสองยากขึ้นมานิดหน่อยครับ

#include <stdio.h>

main()

{

  int A=1,B=2,C;
  char S;
  printf("input : ");
  S=getchar();
  switch (S)
  { 
                    case 'a' :
                             C=A+B;
                                break;
                    case 'b' :
                                C=A-B;
                                break;
                   case 'c' :
                                C=A*B;
                                break;
                    case 'd' :
                                C=A/B;
                                break;
                    case 'e' :
                                C=A%B;
                                break;
         }
        printf("%d",C);
         getch();
}

---------------------------------------------------------------------------

บทที่4 เงื่อนไข(if-else)

เงื่อนไข หรือ if-else

          เงื่อนไข(if-else)ในภาษาC++ นั้ัน ใช้ตรวจสอบค่าของตัวแปรก่อนแล้วจึงไปในส่วนอื่นๆของโปรแกรมต่อไปครับ จากบทที่3 จะเห็นว่ามีการตรวจสอบเงื่อนไข แล้วจึงทำตามผลที่เกิดขึ้น ไม่ว่าจะผ่านเงื่อนไข หรือ ไม่ผ่านเงื่อนไงก็ตาม เพื่อสะดวกต่อการเขียนโปรแกรมครับ ในส่วนนี้ผมคิดว่าสำคัญครับ เพราะได้ใช้บ่อยมาก เรามาเริ่มดูรูปแบบการใช้งานกันก่อนครับ


รูปแบบการใช้งาน

1.    if( เงื่อนไขที่ต้องการ )
      {
                สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นจริง
      }
      else
      {
                สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นเท็จ
      }

รูปแบบที่1จะง่ายต่อการเข้าใจที่สุดครับ หากผลของเงื่อนไขเป็นจริง โปรแกรมจะเข้าไปในส่วนของ
สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นจริง } ครับ แต่ถ้าผลของเงื่อนไขเป็นเท็จ โปรแกรมจะเข้าไปในส่วนของ{ สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นเท็จ } ครับ  ในการกำหนดเงื่อนไขนั้นจะใช้ตัวดำเนินการ( บทที่2 ) ทางตรรกะเป็นตัวเปรียบเทียบ ตัวอย่างเช่น if( i ==1 ) คือ ถ้า i มีค่าเท่ากับ 1 เป็นเงื่อนไขในการเปรียบเทียบ

ตัวอย่างของรูปแบบที่1
#include <stdio.h>
main()
{
       int i=1;
       if( i==1)
       {
             printf("Hello World!");
       }
      else
      {
             printf("Byebye");
      }
getch();
}

อธิบายโปรแกรม
          จากโค้ดของโปรแกรมจะเห็นว่า ให้ i มีค่าเท่ากับ1  เงื่อนไขคือถ้า i เท่ากับ 1 ผลจะเป็นจริง  เมื่อตรวจสอบค่าของตัวแปร i จะพบว่า ผลของเงื่อนไขเป็นจริง โปรแกรมจะแสดงผลHello World!
----------------------------------------------------------------


2.    if( เงื่อนไขที่ต้องการ )
      {
                สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นจริง
      }
      else if
      {
                สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นจริง
      }
      else
      {
                สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นเท็จ
      }

รูปแบบที่2 ยากขึ้นมาหน่อยนะครับ เริ่มด้วย if และจบด้วย else เหมือนรูปแบบแรกครับ แต่ที่เพิ่มเข้ามาคือ else if ครับ มันคืออะไร อย่าเพิ่งงงครับ else if คือเงื่อนไงเหมือนกับ if ครับ แต่จะทำงานเป็นเงื่อนไขที่อยู่หลังจาก if ครับ มาดูตัวอย่างเพื่อเพิ่มความเข้าใจกันครับ

ตัวอย่างของรูปแบบที่1
#include <stdio.h>
main()
{
       int i;
       scanf("%d",&i);
       if( i==1)
       {
             printf("Equal 1");
       }
      else if(i>1)
      {
             printf("More than 1");
      }
      else
      {
             printf("Less than 1");
      }
       getch();
}
อธิบายโปรแกรม
          จากโค้ดของโปรแกรมจะเห็นว่า ให้รับค่าตัวแปร i เงื่อนไขคือถ้า i เท่ากับ 1 เมื่อตรวจสอบค่าของตัวแปร i แล้วพบว่า ผลของเงื่อนไขเป็นจริง โปรแกรมจะแสดงผลEqual 1 หากผลเป็นเท็จ โปรแกรมจะไปในส่วนของบรรทัดถัดไปคือ else if ครับ เงื่อนไขมีอยู่ว่า ถ้า i มากกว่า 1  เมื่อตรวจสอบค่าของตัวแปร i แล้วพบว่า ผลของเงื่อนไขเป็นจริง โปรแกรมจะแสดงผลMore than 1 หากผลเป็นเท็จ โปรแกรมก็จะไปบรรทัดต่อไปคือ else เพื่อแสดงผล Less than 1 ครับ ไม่ยากเลยใช่มั้ยครับ
----------------------------------------------------------------


ตัวดำเนินการที่ใช้กับเงื่อนไข


  1. ==     เท่ากับ
  2. !=     ไม่เท่ากับ
  3. >       มากกว่า
  4. <       น้อยกว่า
  5. >=     มากกว่าเท่ากับ
  6. <=     น้อยกว่าเท่ากับ

ตัวดำเนินการเชื่อมเงื่อนไข

  1. ||        หรือ(หากเป็นจริง1กรณีก็จะทำตามเงื่อนไข)
  2. &&     และ(ต้องเป็นจริงทุกกรณี จึงจะทำตามเงื่อนไข)

----------------------------------------------------------------


แบบฝึกหัด (Exercise)

1. เขียนโปรแกรมที่ใช้รับค่าจากคีย์บอร์ด จำนวน1ครั้ง แล้วตรวจสอบเงื่อนไข ถ้าจำนวนนั้น มากกว่า 5 ให้แสดงคำว่า Yes นอกจากนั้นให้แสดงคำว่า No

2. เขียนโปรแกรมที่ใช้รับค่าจากคีย์บอร์ด จำนวน2ครั้ง แล้วตรวจสอบเงื่อนไข ถ้าจำนวนแรกเท่ากับ 5 และ จำนวนที่2 เท่ากับ 5 ให้แสดงคำว่า Equal 5  ถ้าจำนวนแรก มากกว่า 5 และ จำนวนที่สองมากกว่า5 ให้แสดงคำว่า Yes หากจำนวนแรกน้อยกว่า5  หรือ จำนวนที่สองน้อยกว่า5 ให้แสดงคำว่า No



----------------------------------------------------------------


เฉลย

1.ข้อแรกนะครับ
#include <stdio.h>
main()
{
  int i;
       scanf("%d",&i);
       if( i>5)
       {
             printf("Yes");
       }
      else
      {
             printf("No");
      }

       getch();

}

2.ข้อสองนะครับ
#include <stdio.h>
main()
{
  int i,j;
  printf("i = ");
       scanf("%d",&i);
  printf("j = ");
  scanf("%d",&j);
       if( i==5 && j==5)
       {
             printf("Equal 5");
       }
      else if( i>5 && j>5)
      {
             printf("Yes");
      }
      else if( i<5 || j<5)
      {
             printf("No");
      }

       getch();
}

แล้วเจอกันใหม่ในบทต่อไปครับ


วันอังคารที่ 20 พฤษภาคม พ.ศ. 2557

บทที่3 Flowchart หรือ แผนผังโปรแกรม

Flowchart หรือ แผนผังโปรแกรม

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

ตารางสัญลักษณ์ที่ใช้ในFlowchart


จะเห็นว่ามีไม่กี่เครื่องหมายเองครับ
ผลของแนะนำทีละตัวนะครับ

 เอาไว้เชื่อม/บอกทิศทางของโปรแกรม เจ้าเส้นเชื่อมนี้ใช้มากที่สุดในโปรแกรม มองดูแล้วเหมือนไม่มีความสำคัญ แต่ที่จริงแล้วมันสามรถทำให้เราเข้าใจว่าโปรแกรมไปในทิศทางไหน มาจากส่นไหน ไปส่วนใน พูแล้วต้องไปดูกัยเลยครับ

ตัวอย่าง

แสดงให้เห็นว่าทิศทางโปรแกรมคือ เริ่มจาก start ไปหา stop
-------------------------------------------------------------------------------------

 เอาไว้บอกให้รู้ว่าจะเริ่มโปรแกรมแล้วนะ หรือ โปรแกรมสิ้นสุดแล้วนะ ตัวนี้ในเพียงสองส่วนของโปรแกรมครับ ต้องเจอมันแน่ๆตรงหัวโปรแกรม และเจออีกครั้งที่ท้ายโปรแกรมครับหากไปเจอมันแสดงว่าFlowchart นั้นยังมีต่อครับยังไม่หมด

ตัวอย่าง

แสดงให้ผู้อื่นรู้ว่าโปรแกรมเริ่มตรงstart แล้วก็มาจบตรงstop
-------------------------------------------------------------------------------------

 เมื่อเห็นตัวนี้ให้นึกถึงinput หรือ output เอาไว้เลย แต่จะเป็นอะไรนั้นต้องไปดูที่แผนผัง อีกทีครับ  จะเจอมากหากโปรแกรมของตัวมีการรับข้อมูล หรือ แสดงข้อมูลอยู่บ่อยครั้ง แต่เราสามารถเขียนรวบไว้ในอันเดียวได้ถ้าหากการรับข้อมูล หรือแสดงผลนั้นๆอยู่ติดกัน แต่ถ้าไม่ได้อยู่ติดกันก็ไม่สามารถเขียนรวบไว้ในอันเดียวได้นะครับ
ตัวอย่าง


จะเห็นว่าตัวแรกคือการรับค่าตัวแปรAจะคีย์บอร์ด และตัวที่สองคือการแสดงผลค่าตัวแปรA
-------------------------------------------------------------------------------------

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

ตัวอย่าง

จะเห็นว่าในมีการประมวลผลคือกำหนดให้ค่าตัวแปรA=1
-------------------------------------------------------------------------------------

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

ตัวอย่าง

จะเห็นว่าเงื่อนไขคือAต้องมากกว่า1 ซึ่งในกรณีนี้จะได้ผลจากการตรวจสอบว่าผลเป็นNo
-------------------------------------------------------------------------------------

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


ตัวอย่าง


จะเห็นว่าใช้เชื่อมโปรแกรมที่มาจากคนละส่วนให้มาบรรจบกัน
-------------------------------------------------------------------------------------

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

ตัวอย่าง
หน้า1

หน้า2

จะเห็นว่าเห็นการเชื่่อมโปรแกรมที่อยู่คนละหน้าให้เชื่อมต่อกัน
-------------------------------------------------------------------------------------

 ใช้เมื่อมีการเรียกใช้ฟังก์ชันย่อย เจ้านี่ผมว่าสำคัญครับ เพราะโปรแกรมที่เป็นส่วนหลัก จะประกอบไปด้วยฟังก์ชันย่อยๆมากมายเลย ถ้าเราดูเจ้านี่ไม่เป็นแย่เลยครับ แต่การที่เจอมันก็แสดงว่ามีโปรแกรมส่วนย่อยอื่นอีกครับ

ตัวอย่าง

จะเห็นว่าเห็นการเรียกใช้ฟังก์ชันย่อย คือฟังก์ชันAdd นั่นเองครับ
-------------------------------------------------------------------------------------

Example           

           เมื่อจบการแนะนำสัญลักษณ์แล้ว ต่อไปมาดูตัวอย่างกันครับ ขอเริ่มจากง่ายไปยากนะครับ

1.ตัวอย่างแรกประกอบด้วย 
  1. เริ่มต้น/สิ้นสุดโปรแกรม
  2. รับข้อมูล/แสดงผลข้อมูล
  3. ส่วนประมวลผล
  4. เส้นเชื่อมโปรแกรม



อธิบายFlowchart
  1. เรื่มต้นโปรแกรม 
  2. รับข้อมูลจากคีย์บอร์ด แล้วเก็บไว้ที่ตัวแปรA
  3. กำหนดค่าให้ตัวแปรAมีค่าเท่ากับ 1
  4. แสดงผลค่าของตัวแปรA ทางหน้าจอ
  5. สิ้นสุดโปรแกรม
-------------------------------------------------------------------------------------

2.ตัวอย่างที่สองประกอบด้วย
  1. เริ่มต้น/สิ้นสุดโปรแกรม
  2. รับข้อมูล/แสดงผลข้อมูล
  3. ส่วนเงื่อนไข
  4. ส่วนเชื่อมโปรแกรมให้มาบรรจบกัน
  5. เส้นเชื่อมโปรแกรม


อธิบายFlowchart
  1. เรื่มต้นโปรแกรม 
  2. รับข้อมูลจากคีย์บอร์ด แล้วเก็บไว้ที่ตัวแปรA
  3. ตรวจสอบเงื่อนไขAต้องมากกว่า1 ผลที่ได้คือNo เพราะAไม่มากกว่า1
  4. สิ้นสุดโปรแกรม
            *กรณีที่Aมีค่ามากกว่า1 ผลที่ได้คือYes โปรแกรมจะไปยังส่วนแสดงผล แล้วแสดงผลตัวแปรAทางหน้าจอ
-------------------------------------------------------------------------------------

3.ตัวอย่างที่สามประกอบด้วย
  1. เริ่มต้น/สิ้นสุดโปรแกรม
  2. รับข้อมูล/แสดงผลข้อมูล
  3. ส่วนประมวลผล
  4. ส่วนเงื่อนไข
  5. ส่วนเชื่อมโปรแกรมให้มาบรรจบกัน
  6. เส้นเชื่อมโปรแกรม

อธิบายFlowchart
  1. เรื่มต้นโปรแกรม 
  2. รับข้อมูลจากคีย์บอร์ด แล้วเก็บไว้ที่ตัวแปรA และ B
  3. กำหนดให้ค่าตัวแปร C = A+B
  4. ตรวจสอบเงื่อนไขCต้องน้อยกว่า10 ถ้าผลที่ได้คือYes จะแสดงผลเป็นค่าตัวแปรCทางหน้าจอ แต่ถ้าผลที่ได้คือNo จะไม่มีอะไรเกิดขึ้น
  5. สิ้นสุดโปรแกรม
-------------------------------------------------------------------------------------

4.ตัวอย่างที่สี่ประกอบด้วย
  1. เริ่มต้น/สิ้นสุดโปรแกรม
  2. รับข้อมูล/แสดงผลข้อมูล
  3. ส่วนประมวลผล
  4. ส่วนเงื่อนไข
  5. ส่วนเชื่อมโปรแกรมให้มาบรรจบกัน
  6. เส้นเชื่อมโปรแกรม

อธิบายFlowchart
  1. เรื่มต้นโปรแกรม 
  2. รับข้อมูลจากคีย์บอร์ด แล้วเก็บไว้ที่ตัวแปรA และ B
  3. กำหนดให้ค่าตัวแปร C = A+B
  4. ตรวจสอบเงื่อนไขCต้องน้อยกว่า10 ถ้าผลที่ได้คือYes จะไปในส่วนการเรียกใช้ฟังก์ชั่นย่อย แต่ถ้าผลที่ได้คือNo จะแสดงผลเป็นค่าตัวแปรCทางหน้าจอ
  5. สิ้นสุดโปรแกรม
-------------------------------------------------------------------------------------

พรุ่งนี้จะมาเพิ่มแบบฝึกหัดให้นะครับ

วันจันทร์ที่ 19 พฤษภาคม พ.ศ. 2557

บทที่2 ตัวดำเนินการในภาษาC หรือ C++

ตัวดำเนินการในภาษาซี หรือ C++

(C++ operator)


ตัวดำเนินการในภาษาc++ นี้มีอยู่หลายตัวด้วยกันครับ ในความคิดเห็นส่วนตัวผมแล้วคิดว่าส่วนที่ใช้มากที่สุดก็คือตัวดำเนินการจำพวก บวก ลบ คูณ หาร ตามคณิตศาสตร์ทั่วไปครับ จะได้ใช้บ่อยมาก และส่วนที่ใช้บ่อยรองลงมาก็คือตัวดำเนินส่วนที่ใช้เปรียบเทียบครับเช่น มากกว่า น้อยกว่า เท่ากับ ไม่เท่ากับ มากกว่าเท่ากับ น้อยกว่าเท่ากับ พวกนี้ใช้บ่อยครับ ที่สำคัญพวกที่ลืมไม่ไดเลยครับพวกตัวดำเนินการที่ใช้เชื่อมครับ เช่น &&(และ)  ||(หรือ) ซึ่งส่วนที่เหลือก็มีความสำคัญนะครับไม่ใช่ว่าเข้าใจแต่ส่วนที่ผมบอกว่าสำคัญ ผมคิดว่าควรจะเข้าใจทั้งหมดครับ แต่เลือกจำเฉพาะส่วนที่ใช่บ่อยหรือสำคัญ ซึ่งตัวดำเนินการใบภาษาC++โดยส่วนใหญ่จะแบ่งกันเป็นประเภทใหญ่ๆ5กลุ่มครับ ตามลักษณะการใช้งาน ดังนี้

  • Arithmetic Operators(ตัวดำเนินการคณิตศาสตร์)
  • Relational Operators(ตัวดำเนินการความสัมพันธ์)
  • Logical Operators(ตัวดำเนินการเชิงตรรกะ)
  • Bitwise Operators(ตัวดำเนินการบิตไวส์)
  • Assignment Operators(ตัวดำเนินการกำหนดค่า) 



ตัวดำเนินการคณิตศาสตร์  (Arithmetic Operators)


เป็นตัวดำเนินการจำพวกใช้คำนวนครับ พวกนี้เข้าใจง่าย และจำได้ตั้งแต่เด็กครับจะมีบางส่วนที่เพิ่มเข้ามาใหม่ครับ ส่วนที่เข้ามาใหม่นั้นส่วนใหญ่จะเป็นการเขียนรูปแบบเพื่อการประหยดเวลาในการเขียนโปรแกรมครับ ตอนนี้คงยังไม่ได้ใช้กันครับ แต่ถ้าคุณมีความรู้พื้นฐานอยู่แล้วผมแนะนำให้นำไปใช้ครับ เพราะมันจะช่วยให้คุณประหยัดเวลาได้มากเลย
กำหนดให้ตัวแปร A มีค่าเท่ากับ 30 (A=30) และตัวแปร B มีค่าเท่ากับ 20 (B=20)

ตารางตัวดำเนินการคณิตศาสตร์ และตัวอย่างการใช้
ตัวดำเนินการ
อธิบาย
ตัวอย่าง
+
การบวก
A + B = 40
-
การลบ
A - B =20
*
การคูณ
A * B = 300
/
การหาร
A / B = 3
%
การModulus หรือ การหารเอาเศษ
A % B = 0
++
การบวกเพิ่มค่าตัวแปรนั้นๆจากเดิมอีก1
A++ = 31
--
การลบค่าตัวแปรนั้นๆจากเดิมลงไป1
A-- = 29

จะเห็นว่าไม่ยากเลยใช่มั้ยครับเพื่อนๆ ตัวดำเนินการคณิตศาสตร์นั้น ก็เหมือนกันเครื่องหมายคณิตศาสตร์ที่เราใช้ในชีวิตประจำวัน จะมีบางตัวเท่านั้นที่ควรดูเป็นพิเศษครับ
ตัวที่1 คือ ++ เจ้าตัวนี้จะทำให้ค่าของตัวแปรบวกเพิ่มไปอีก1ครับ เช่น A=1;A++; ดังนั้นจะได้ว่าA มีค่าเท่ากับ2ครับ หรือมองง่ายๆ A++เท่ากับA=A+1 นั่นเองครับ
ตัวที่2 คือ -- เจ้าตัวนี้จะทำให้ค่าของตัวแปรลดลงไป1ครับ เช่น B=1;B--; ดังนั้นจะได้ว่าB มีค่าเท่ากับ0ครับ หรือมองง่ายๆ B—เท่ากับB=B-1 นั่นเองครับ
ตัวที่3 คือ % เจ้าตัวนี้คือการmodครับ รู้จักกันมั้ยเอ่ย? มันคือการหารเอาเศษครับ เช่น5%2=1 เพราะ5/2 ได้2เศษ1 ตัวนี้สำคัญครับได้ใช้บ่อยมาก
-----------------------------------------------------

ตัวดำเนินการความสัมพันธ์  (Relational Operators)

           
           เป็นตัวดำเนินการจำพวกใช้เปรียบเทียบครับ ตัวดำเนินการพวกนี้จะใช้มากในส่วนของเงื่อนไข และลูปครับ ซึ่งจะอธิบายในบทต่อไป หมายความของตัวดำเนินการก็เข้าใจง่ายครับ ไม่ยากเลย เราได้เรียนกันมากนานแล้วครับ จะมีบางตัวเท่านั้นก็แปรกตากว่าชาวบ้าน นั่นคือ !=  เครื่องหมายตัวแรก ! แสดงถึงการปฏิเสธครับ ส่วนเครื่องหมายตัวที่สอง = ก็คือ เท่ากับครับ รวมเป็น ไม่เท่ากับ ส่วนตัวดำเนินการอื่นเชิญศึกษาได้ตามตารางครับ
           กำหนดให้ตัวแปร A มีค่าเท่ากับ 30 (A=30) และตัวแปร B มีค่าเท่ากับ 20 (B=20)

ตารางตัวดำเนินการความสัมพันธ์และตัวอย่างการใช้
ตัวดำเนินการ
อธิบาย
ตัวอย่าง
==
ตรวจสอบว่าตัวทั้งสองมีค่าเท่ากันหรือไม่
(A == B) เป็นเท็จ
!=
ตรวจสอบว่าตัวทั้งสองมีค่าไม่เท่ากันหรือไม่
(A != B) เป็นจริง
> 
ตรวจสอบว่าตัวแปรที่1มีค่ามากกว่าตัวแปรที่2หรือไม่
(A > B) เป็นจริง
< 
ตรวจสอบว่าตัวแปรที่1มีค่าน้อยกว่าตัวแปรที่2หรือไม่
(A < B) เป็นเท็จ
>=
ตรวจสอบว่าตัวแปรที่1มีค่ามากกว่า หรือเท่ากับตัวแปรที่2หรือไม่
(A >= B) เป็นจริง
<=
ตรวจสอบว่าตัวแปรที่1มีค่าน้อยกว่า หรือเท่ากับตัวแปรที่2หรือไม่
(A <= B) เป็นเท็จ
สิ่งทีควรจำก็คือ>= และ<= โดยต้องจำไว้ว่าเครื่องหมาย<และเครื่องหมาย> จะต้องอยู่ข้างหน้าเครื่องหมาย=
-----------------------------------------------------

ตัวดำเนินการเชิงตรรกะ  (Logical Operators)


           เป็นตัวดำเนินการจำพวกใช้เชื่อมครับ ตัวดำเนินการพวกนี้จะใช้มากในส่วนของเงื่อนไข และลูปครับ ซึ่งจะอธิบายในบทต่อไป บางคนอาจจำได้เพราะเคยเรียนมาตอนม.ปลายแล้วครับ วิชาคณิตศาสตร์ ในบทตรรกะศาสตร์ไงครับ มีความหมายตามนั้นเลยครับ
กำหนดให้ตัวแปร A มีค่าเท่ากับ 1 (A=1) และตัวแปร B มีค่าเท่ากับ 0 (B=0)

ตารางตัวดำเนินการเชิงตรรกะ และตัวอย่างการใช้
ตัวดำเนินการ
อธิบาย
ตัวอย่าง
&&
เครื่องหมายและในทางตรรกะ หรือเครื่องหมายandในทางดิจิตัล
(A && B) เป็นเท็จ
||
เครื่องหมายหรือในทางตรรกะ หรือเครื่องหมายorในทางดิจิตัล
(A || B) เป็นจริง
!
เครื่องหมายnotในทางตรรกะ และ ในทางดิจิตัล
!(A&&B) เป็นจริง

-----------------------------------------------------

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

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


ตารางทางบิตไวส์ เหมือนกับในทางดิจิตัลครับ
p
q
p & q
p | q
p ^ q
0
0
0
0
0
0
1
0
1
1
1
1
1
1
0
1
0
0
1
1
กำหนดให้ ถ้า A = 60; และ B = 13; จะได้ค่าเป็นเลขฐานสองคือ :
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A  = 1100 0011
กำหนดให้ตัวแปร A มีค่าเท่ากับ 60 และ ตัวแปร B มีค่าเท่ากับ 13
ตารางตัวดำเนินการบิตไวส์
ตัวดำเนินการ
อธิบาย
ตัวอย่าง
&
Binary AND Operator
(A & B) will give 12, which is 0000 1100
|
Binary OR Operator
(A | B) will give 61, which is 0011 1101
^
Binary XOR Operator
(A ^ B) will give 49, which is 0011 0001
~
Binary Ones Complement Operator
(~A ) will give -61, which is 1100 0011 in 2's complement form.
<< 
Binary Left Shift Operator
A << 2 will give 240 which is 1111 0000
>> 
Binary Right Shift Operator
A >> 2 will give 15 which is 0000 1111
http://www.tutorialspoint.com/cprogramming/c_operators.htm

-----------------------------------------------------


ตัวดำเนินการกำหนดค่า (Assignment Operators)


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

ตารางตัวดำเนินการกำหนดค่า และตัวอย่างการใช้
ตัวดำเนินการ
อธิบาย
ตัวอย่าง
=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับการดำเนินการด้านขวา
C = A + B
+=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายบวกตัวดำเนินการ
C += A หรือ C = C + A
-=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายลบตัวดำเนินการ
C -= A หรือ C = C - A
*=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายคูณตัวดำเนินการ
C *= A หรือ C = C * A
/=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายหารตัวดำเนินการ
C /= A หรือ C = C / A
%=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายหารเอาเศษตัวดำเนินการ
C %= A หรือ C = C % A
<<=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายshift ซ้ายตัวดำเนินการ
C <<= 2 หรือ C = C << 2
>>=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายshift ขวาตัวดำเนินการ
C >>= 2 หรือ C = C >> 2
&=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายandตัวดำเนินการ
C &= 2 หรือ C = C & 2
^=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้ายorตัวดำเนินการ
C ^= 2 หรือ C = C ^ 2
|=
ให้ตัวแปรด้านซ้ายมีค่าเท่ากับตัวแปรด้านซ้าย inclusive OR ตัวดำเนินการ
C |= 2 หรือ C = C | 2

อ้างอิงจาก