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

write( ); กับตัวเลข
ตัวเลขมีหลายประเภท แต่ที่มักถูกนำมาใช้บ่อยๆ
มีดังนี้ครับ
ชนิดขอบเขต
shortint-128 ... +127
byte 0..255
integer -32768 .. +32767
word0 ... 65535
longint-2147483648 ... +2147483647
real 2.9 * 10-39  ...  1.7 * 1038

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

ก่อนที่จะไปต่อ เราต้องมารู้จักกับ โพรซีเจอร์ readln( ) ; กันเสียก่อน
เป็นโพรซีเจอร์ที่ ใช้เพื่อรอรับค่าที่เราป้อนทาง keyboard ไปเก็บไว้ในตัวแปร
var
        mystring : string ;

begin
        write('please insert a string = ');
        readln( mystring ) ;
        write( 'this is a string', mystring ) ;
end.
โปรแกรมจะรอให้เราพิมพ์
please insert a string =

เมื่อเราพิมพ์และกด enter
ตัวอักษรที่เราพิมพ์ก็จะถูกเก็บไว้ในในตัวแปร mystring


เช่น.. หากเราพิมพ์ว่า  superman

ก็จะได้ผลว่า

this is a string superman

มาต่อกันเรื่อง ตัวเลขแล้วนะ
ในปาสคาลเราสามารถคำนวณเลขได้ โดยเครื่องหมาย + - * / ( บวกลบคูณหาร )

ผมได้กล่าวไปว่า เรา ควรใช้ ชนิดของตัวแปร ชนิด byte กับตัวเลขไม่เกิน 255
มาดูตัวอย่างกัน ครับ
var
        age : byte ;        
begin

        write('please insert your Age = ');
        readln( age ) ;
        writeln( 'your age is', age ) ;

        age := age+1;
        writeln('Next year.. you will have', age , 'years old');

end.
please insert your Age =

หากคุณพิมพ์ว่า 30 จะได้ผลว่า
your age is 30
Next year.. you will have 31 years old

 
แบบด้านล่างนี้ก็ได้ผลเหมือนกันครับ
var
        age : byte ;        
begin

        write('please insert your Age = ');
        readln( age ) ;
        writeln( 'your age is', age ) ;

        writeln('Next year.. you will have', age+1 , 'years old');

end.
please insert your Age =

หากคุณพิมพ์ว่า 30 จะได้ผลว่า
your age is 30
Next year.. you will have 31 years old

ต่อไปเราจะพูดถึงตัวแปร integer กัน
ตัวแปร integer นันมีขอบเขตคือ  -32768  ถึง   +32767
ดังนั้น ระวังอย่าให้ ค่าของตัวแปรมากกว่า หรือน้อยกว่าขอบเขตนี้ นะครับ
var
        mymoney : integer ;
        bookprice : integer ;
begin

        write( 'please insert your Money = ' );
       readln( mymoney ) ;
       write( 'please insert book-price = ' );
       readln( bookprice );

        writeln( 'your money remain=', mymoney-bookprice ) ;

end.
please insert your Money =
หากคุณพิมพ์ว่า 500
please insert book-price =
และ คุณพิมพ์ว่า 300

จะได้ผลว่า

your money remain= 200

การเขียน ตัวแปรชนิด Real
การเขียน ตัวแปรชนิดนี้จะแตกต่างจาก ตัวแปรตัวเลขชนิดอื่น
เนื่องด้วยมันเป็น ตัวแปร ที่เก็บจำนวนที่มีจุดทศนิยม.. ได้
var
        realnumber1 : real ;
        realnumber2 : real ;
        realnumber3 : real ;
begin
        write( 'first-number=' ) ;  readln( realnumber1 ) ;
        write( 'second-number=' ) ;  readln( realnumber2 ) ;
        realnumber3 := realnumber1 / realnumber2 ;

        write(' First-number divide by Second-number =', realnumber3 );
        writeln;
end.
first-number =
หากคุณพิมพ์ว่า 1000
second-number =
และ คุณพิมพ์ว่า 3

จะได้ผลว่า

First-number divide by Second-number = 3.3333333333E+02
ให้สังเกตที่เครื่องหมาย / หมายถึง หาร ครับ
อาจจะใช้ div ในการหารก็ได้ แต่จะเป็นการหาร ตัดเศษทิ้ง

ส่วนคำตอบ สามารถ อธิบายได้ดังนี้
E+02 หมายถึง 102
ดังนั้น 3.3333333333E+02 จึงหมายถึง
3.3333333333 * 102 ซึ่งเท่ากับ 333.333~

หากเป็น
E-02 ก็หมายถึง 10-2 ( 1/102 หรือ 1/100 )
3.3333333333 *10-2 ก็จะเท่ากับ 0.0333~



เห็นได้ชัดเลยว่า อ่านเข้าใจยาก..  ดูไม่ค่อยรู้เรื่อง
ดังนั้น pascal จึงอนุญาตให้เราแสดงผลในแบบเข้าใจง่ายได้
ดังนี้ครับ
var
        realnumber1 : real ;
        realnumber2 : real ;
        realnumber3 : real ;
begin
        write( 'first-number=' ) ; readln( realnumber1 ) ;
        write( 'second-number=' ) ; readln( realnumber2 ) ;
        realnumber3 := realnumber1 / realnumber2 ;

        write(' First-number divide by Second-number =', realnumber3 : 7 : 2 );
        writeln;
end.
first-number =
หากคุณพิมพ์ว่า 1000
second-number =
และ คุณพิมพ์ว่า 3

จะได้ผลว่า

First-number divide by Second-number =  333.33
สังเกตที่ : 7 กับ : 2
อันแรก(7) กำหนดระยะของตำแหน่งนับจากทางขวาถึงตัวอักษรทางซ้าย
อันหลัง(2) กำหนดการแสดงตัวเลขหลังจุดทศนิยม


สังเกตเห็นว่า
อันแรกที่ผมได้กำหนด เป็น : 7
แต่ตัวเลขมีเพียง 6 ตัวอักษร
(เลขหน้าจุดทศนิยม 3 จุดทศนิยม 1 ท้ายจุดทศนิยม 2)
ส่วนที่เหลือทางซ้ายก็เลยกลายเป็น ช่องว่างไปช่องนึง


ต่อไปจะกล่าวถึงการบวกลบคูณหาร
ใครเคยเรียนคณิต ก็คงจะเข้าใจ ในเครื่องหมายวงเล็บดี

ตัวเลข ที่ถูกใส่ไว้ภายในวงเล็บจะถูกคำนวณก่อนเสมอ
จากในตัวอย่าง
   k จะเท่ากับ 5 คูณกับ 25 แล้วถึงจะมาบวกกับ 10 ในภายหลัง
var
        i, k : integer ;

begin
        write('please insert number = ');
        readln( i ) ;

        k := 10+( 5 * i ) ;
        write( 'anwser of 10+( 5 * ',  i , ' ) =', k ) ;
end.
insert number=
หากพิมพ์ว่า 25

anwser of 10 + ( 5 * 25 ) = 135

หากคุณงงงง ผมเอง พิมพ์เองก็ยังงงงง อยู่บ้าง
แต่ลองมอง ไปๆ มาๆ ก็คงจะเข้าใจได้นะครับ..



best view with ie 5.0++, screen 600x800