write( ); กับตัวเลข
- ตัวเลขมีหลายประเภท แต่ที่มักถูกนำมาใช้บ่อยๆ
- มีดังนี้ครับ
ชนิด | ขอบเขต |
shortint | -128 ... +127 |
byte | 0..255 |
integer | -32768 .. +32767 |
word | 0 ... 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
|
หากคุณงงงง ผมเอง พิมพ์เองก็ยังงงงง อยู่บ้าง
แต่ลองมอง ไปๆ มาๆ ก็คงจะเข้าใจได้นะครับ..
|
|