พื้นฐานปาสคาลพื้นฐาน rapidqเว็บภาษาไทยเว็บภาษาอังกฤษ

if - then - else

อันนี้เป็นโครงสร้างของโปรแกรมชนิดหนึ่ง
ซึ่งหากเงื่อนไข เป็นจริง
โปรแกรมจึงจะทำงาน

มารู้จักเครื่องหมายที่ใช้เปรียบเทียบกันก่อน   ได้แก่

=
เท่ากับ
<>
ไม่เท่ากับ
>
มากกว่า
>=
มากกว่าหรือเท่ากับ
<
น้อยกว่า
<=
น้อยกว่าหรือเท่ากับ


ตัวอย่างการใช้ if - then
uses crt ;
var
      i : integer ;      

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;

      if  i>10 then
          write(' i more than 10 ' ) ;

          readln ;
end.
insert i=
หากใส่ ตัวเลขที่น้อยกว่า 10 หรือใส่ 10
คำสั่งที่อยู่ด้านหลัง then จะไม่ทำงาน
หากใส่ตัวเลขที่มากกว่า 10 โปรแกรมจะทำงานดังนี้


i more than 10



หากเราต้องการให้ทำงานมากกว่า 1 คำสั่ง ต้องกั้นหน้าหลัง ด้วย begin - end ;
สังเกตที่ end นะครับว่า เป็น ; (semi-colon) ไม่ใช่ . (dot)
uses crt ;
var
      i : integer ;      

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;

      if  i>10 then
       begin
         writeln('condition is true') ;
         write(' i more than 10 ' ) ;
       end;
          

          readln ;
end.
insert i=
หากใส่ ตัวเลขที่น้อยกว่า 10 หรือใส่ 10
คำสั่งที่อยู่ด้านหลัง then จะไม่ทำงาน
หากใส่ตัวเลขที่มากกว่า 10 โปรแกรมจะทำงานดังนี้


condition is true
i more than 10




Else

หากต้องการให้ทำคำสั่งหนึ่งเมื่อเงื่อนไขเป็นจริง
และให้ทำอีกคำสั่งหนึ่งเมื่อเงื่อนไขเป็นเท็จ
ต้องใช้ else ครับ
uses crt ;
var
      i : integer ;      

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;

      if  i>10 then
         write(' i more than 10 ' )
      else
         write( 'i less than or equal 10' ) ;
          

          readln ;
end.
insert i=
หากใส่ตัวเลขที่มากกว่า 10 โปรแกรมจะทำงานดังนี้

i more than 10
หากใส่ ตัวเลขที่น้อยกว่า 10 หรือใส่ 10 จะเป็นดังนี้

i less than or equal 10
ให้สังเกตที่ คำสั่ง writeln() ; ก่อน else นะครับว่า จะเว้นไม่ใส่ ; (semi-colon)
เป็นรูปแบบที่ใช้สำหรับ else โดยเฉพาะครับ



ในตัวอย่างด้านล่างนี้ก็เป็น การกำหนดว่า
หากเงื่อนไขเป็นจริง ให้เขียนคำตอบ สีฟ้า
และหากเงื่อนไขเป็นเท็จ ให้เขียนคำตอบ สีเขียว

ให้สังเกตที่ end ข้างหน้า else ว่าจะไม่ใส่ semi-colon ครับ
uses crt ;
var
      i : integer ;      

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;

      if  i>10 then
        begin
            textcolor(11);
            write(' i more than 10');
            textcolor(7);
        end
      else
        begin
             textcolor(10);
             write(' i less than 10 or equal 10');
             textcolor(7);
         end;
          
          readln ;
end.
insert i=
หากใส่ตัวเลขที่มากกว่า 10 โปรแกรมจะแสดงผล
i more than 10
หากใส่ ตัวเลขที่น้อยกว่า 10 หรือใส่ 10 โปรแกรมจะแสดงผล
i less than 10 or equal 10



Logical Operators

มีไว้เชื่อมเงื่อนไข เข้าด้วยกัน

ที่ผมใช้เป็นหรือเคยได้ใช้ ได้แก่
AND
OR
XOR
NOT
ตัวอย่างการใช้ AND(1)
uses crt ;
var
      i : integer ;      

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;

      if  ( i > 10 ) and ( i < 50 ) then
           write( ' i more than 10 AND i less than 50' ) ;
          
          readln ;
end.
โปรแกรมจะ รอรับค่า i
insert i =

ถ้า i มากกว่า 10  และ i น้อยกว่า 50
โปรแกรมจะ แสดง
i more than 10 AND i less than 50


แต่ถ้า ไม่เป็นไปตามเงื่อนไข
คือ i ไม่ได้อยู่ระหว่าง 10 ถึง 50

โปรแกรมจะ ไม่แสดงข้อความ


ตัวอย่างการใช้ AND(2)
uses crt ;
var
      i : integer ;      
     k : integer ;

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;
    write( 'insert k=' ) ; readln( k ) ;

      if  ( i > 10 ) and ( i > k ) then
           i := i - k ;
          
          write( 'i=', i ) ;
          readln ;
end.
โปรแกรมจะ รอรับค่า i และค่า k ตามลำดับ
insert i =
insert k =

ถ้า i มากกว่า 10  และ i มากกว่า k
โปรแกรมจะ นำค่า i ไปลบค่า k
และเก็บผลลัพธ์ที่ได้ ไว้ที่ตัวแปร i



แต่ถ้า ไม่เป็นไปตามเงื่อนไข
คือ i ไม่มากกว่า 10 หรือ i ไม่มากกว่า k
อย่างใดอย่างหนึ่ง หรือไม่ตรงกับเงื่อนไขทั้งสองกรณี

i ก็ยังคงมีค่าเท่ากับตอนที่เราป้อนค่า ทางคีร์บอร์ด

หลังจากตรวจสอบเงื่อนไขแล้ว โปรแกรมจะแสดง

i = ผลลัพธ์


ผมคิดว่านะครับ.. คำอธิบายของผม อาจจะยังไม่เคลียร์เท่าไร
แต่โปรแกรมตัวอย่างนี้ เป็นโปรแกรมที่ไม่ซับซ้อนอะไร
หากคุณได้ลองไปพิมพ์ และทดสอบ Run ดู ก็จะเข้าใจได้เร็วขึ้นครับ

แต่หากว่า คุณเพียงอ่านคำอธิบายก็เข้าใจแล้ว
นั่นแสดงว่าคุณค่อนข้าง เก่งเรื่องตรรกวิทยา พอสมควรทีเดียว

ตัวอย่างการใช้ AND(3)
uses crt ;
var
      i : integer ;      
     k : integer ;

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;
    write( 'insert k=' ) ; readln( k ) ;

      if  ( i > 10 ) and ( i > k ) then
        begin
                 i := i - k ;		
                 write( ' i - k = ', i ) ;
        end
      else
        begin
                  i := i + k ;
                  write( ' i + k= ', i ) ;
         end;
          
          readln ;
end.
โปรแกรมจะ รอรับค่า i และค่า k ตามลำดับ
insert i =
insert k =

ถ้า i มากกว่า 10  และ i มากกว่า k

โปรแกรมจะ นำค่า i ไปลบค่า k
และเก็บผลลัพธ์ที่ได้ ไว้ที่ตัวแปร i

และจะแสดง
i - k = ผลลัพธ์

แต่ถ้า ไม่เป็นไปตามเงื่อนไข
คือ i ไม่มากกว่า 10 หรือ i ไม่มากกว่า k
อย่างใดอย่างหนึ่ง หรือไม่ตรงกับเงื่อนไขทั้งสองกรณี


โปรแกรมจะทำตาม คำสั่งข้างหลัง ELSE คือ
นำ i ไปบวก k แล้วเก็บค่าไว้ในตัวแปร i

และจะแสดง
i + k = ผลลัพธ์





    ตัวอย่างการใช้ OR(1)
uses crt ;
var
      i : integer ;      
     k : integer ;

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;
    write( 'insert k=' ) ; readln( k ) ;

      if  ( i = 10 ) or ( k = 10 ) then          
          write( 'i or k or both = 10' ) ;

          readln ;
end.
โปรแกรมจะ รอรับค่า i และค่า k ตามลำดับ
insert i =
insert k =

ถ้า i เท่ากับ 10  หรือ k เท่ากับสิบ
หรือตรงตามเงื่อนไข ทั้งสองกรณี


โปรแกรมจะ แสดง

i or k or both = 10

(both แปลว่า ทั้งคู่ครับ)
แต่ถ้า ไม่เป็นไปตามเงื่อนไข
คือ i ไม่เท่ากับ 10 และ k ไม่เท่ากับ 10
( ไม่ตรงกับเงื่อนไขทั้งสองกรณี )


ก็จะไม่มีการแสดงข้อความใดๆ



    ตัวอย่างการใช้ OR(2)
uses crt ;
var
      i : integer ;      
     k : integer ;

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;
    write( 'insert k=' ) ; readln( k ) ;

      if  ( i > 10 ) or ( i > k ) then
        begin
                 i := i - k ;
                 write( ' i - k = ', i ) ;
        end
      else
        begin
                  i := i + k ;
                  write( ' i + k= ', i ) ;
         end;
          
          readln ;
end.
โปรแกรมจะ รอรับค่า i และค่า k ตามลำดับ
insert i =
insert k =

ถ้า i มากกว่า 10  หรือ i มากกว่า k
หรือตรงตามเงื่อนไขทั้งสองกรณี


โปรแกรมจะ นำค่า i ไปลบค่า k
และเก็บผลลัพธ์ที่ได้ ไว้ที่ตัวแปร i

และจะแสดง
i - k = ผลลัพธ์

แต่ถ้า ไม่เป็นไปตามเงื่อนไข
คือ i ไม่มากกว่า 10 และ i ไม่มากกว่า k
( ไม่ตรงกับเงื่อนไขทั้งสองกรณี )


โปรแกรมจะทำตาม คำสั่งข้างหลัง ELSE คือ
นำ i ไปบวก k แล้วเก็บค่าไว้ในตัวแปร i

และจะแสดง
i + k = ผลลัพธ์


    ตัวอย่างการใช้ XOR
uses crt ;
var
      i : integer ;      
     k : integer ;

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;
    write( 'insert k=' ) ; readln( k ) ;

      if  ( i > 10 ) xor ( i > k ) then
           i := i - k ;
          
          write( 'i=', i ) ;
          readln ;
end.
โปรแกรมจะ รอรับค่า i และค่า k ตามลำดับ
insert i =
insert k =

ถ้า i มากกว่า 10  หรือ i มากกว่า k
แต่เงื่อนไขทั้งสองกรณี ไม่ได้เป็นจริงพร้อมกัน

โปรแกรมจะ นำค่า i ไปลบค่า k
และเก็บผลลัพธ์ที่ได้ ไว้ที่ตัวแปร i

แต่ถ้า ไม่เป็นไปตามเงื่อนไข คือ
i ไม่มากกว่า 10 และ i ไม่มากกว่า k
( ไม่ตรงกับเงื่อนไขทั้งสองกรณี )

หรือ เงื่อนไขเป็นจริงทั้งสองกรณี

i ก็ยังคงมีค่าเท่ากับตอนที่เราป้อนค่า ทางคีร์บอร์ด

หลังจากตรวจสอบเงื่อนไขแล้ว โปรแกรมจะแสดง

i = ผลลัพธ์

ข้อแตกต่างระหว่าง OR กับ XOR คือ

เงื่อนไข XOR จะเป็นจริงต่อเมื่อ
มีเพียงกรณีเดียวที่เป็นจริง
หากทั้งสองกรณีเป็นจริง เงื่อนไข XOR จะเป็นเท็จ
และหากทั้งสองกรณีเป็นเท็จ เงื่อนไข XOR ก็จะเป็นเท็จ

ส่วนเงื่อนไข OR จะเป็นเท็จ เมื่อทั้งสองกรณีเป็นเท็จ เท่านั้น
หากกรณีใดกรณีหนึ่งเป็นจริง.. OR ก็จะเป็นจริง
หากทั้งสองกรณีเป็นจริง OR ก็จะเป็นจริง





สัญลักษณ์ " NOT "

ตัวอย่างการใช้ NOT(1)
uses crt ;
var
      i : integer ;      

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;

      if  not ( i=25 ) then
           write( ' i is not 25' );
         
          readln ;
end.
โปรแกรมจะ รอรับค่า i
insert i =
align=absmiddle>

หากว่า i ไม่เท่ากับ 25 โปรแกรมจะแสดง
i is not 25

ตัวอย่างการใช้ NOT(2)
uses crt ;
var
      i : integer ;      

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;

      if  ( i > 10 ) and not ( i=25 ) then
           write( 'i more than 10 AND i is not 25' );
         
          readln ;
end.
โปรแกรมจะ รอรับค่า i
insert i =
align=absmiddle>

หากว่า i มากกว่า 10   และ  i ไม่เท่ากับ 25 โปรแกรมจะแสดง
i more than 10 AND i is not 25


ความจริงใช้เครื่องหมายไม่เท่ากับ (<>) แทน NOT ก็ได้ครับ
uses crt ;
var
      i : integer ;      

begin
    clrscr ;
    write( 'insert i=' ) ; readln( i ) ;

      if  ( i > 10 ) and ( i <> 25 ) then
           write( 'i more than 10 AND i is not 25' );
         
          readln ;
end.
โปรแกรมจะ รอรับค่า i
insert i =
align=absmiddle>

หากว่า i มากกว่า 10   และ  i ไม่เท่ากับ 25 โปรแกรมจะแสดง
i more than 10 AND i is not 25

best view with ie 5.0++, screen 600x800