Daily Archives: 17/05/2020

Haskell – Các toán tử cơ bản

Chúng ta sẽ tìm hiểu các toán tử cơ bản của Haskell, đa phần là giống với các ngôn ngữ lập trình thông thường.

Comment

Là phần không được biên dịch, chỉ để ghi chú cho coder dễ hiểu. Để comment một dòng nào đó thì chúng ta đặt 2 dấu - phía trước.

n :: Int
n = 3
-- n = 5 

Và để comment nhiều dòng thì chúng ta đặt trong cặp dấu {- -}

{-
main :: IO()
main = return()
-}

Các phép toán đại số

Ví dụ:

-- Phép cộng
p1 = 2 + 5    -- KQ = 7

-- Phép trừ
p2 = 10 - 6   -- KQ = 4

-- Phép nhân
p3 = 10 * 10  -- KQ = 100

-- Phép chia
p4 = 10 / 2   -- KQ = 2.0. Lưu ý là kết quả là kiểu số thực.

-- Phép chia lấy phần dư
p5 = 10 `rem` 2 -- KQ = 0. 10 chia 2 được 5 và dư 0

-- Phép lũy thừa
p6 = 10 ^ 10  -- KQ = 100
p7 = 2 ^ 3    -- KQ = 8.0. Kết quả là kiểu số thực
p8 = 6 ** 6   -- KQ = 46656.0. Kết quả là kiểu số thực  

Các phép toán thao tác bit

Trước khi thực hiện các phép toán này chúng ta phải dùng đến module Data.Bits bằng cách đặt câu lệnh import Data.Bits trước, chúng ta sẽ tìm hiểu thêm về module sau. Ví dụ:

import Data.Bits

-- AND
255 .&. 170    -- KQ = 170
-- OR
255 .|. 170    -- KQ = 255
-- XOR
255 `xor` 170  -- KQ = 85
-- Ngịch đảo tất cả các bit
complement 255 -- KQ = -256
-- Dịch bit trái 
shiftL 6 2     -- KQ = 24, dịch các bit của số 6 sang trái 2 bit
-- Dịch bit phải
shiftR 6 1     -- KQ = 3, dịch các bit của số 6 sang phải 1 bit

Các phép so sánh

Ví dụ:

-- Lớn hơn
2 > 3   -- False
-- Lớn hơn hoặc bằng
2 >= 3  -- False
-- Bé hơn
2 < 3   -- True
-- Bé hơn hoặc bằng
2 <= 3  -- True
-- Bằng nhau
2 == 3  -- False
-- Khác nhau
2 /= 3  -- True