Tin tức mới

Chương 2 – Biến, kiểu dữ liệu và toán tử

Biến, kiểu dữ liệu toán tử

Thực hiện các phép tính toán

1. Mục tiêu

  • Mô tả được khái niệm biến
  • Khai báo và sử dụng được biến
  • Mô tả được các kiểu dữ liệu thông dụng
  • Sử dụng được đúng kiểu dữ liệu phù hợp
  • Sử dụng được các toán tử số học
  • Sử dụng được các toán tử logic
  • Sử dụng được các toán tử so sánh

2. Giới thiệu

Ta đã biết từ chương trước, mọi chương trình máy tính đều thực hiện 4 công việc: nhận dữ liệu, lưu trữ, xử lý, xuất thông tin. Chẳng hạn, trong một ứng dụng bán hàng trực tuyến, người dùng sẽ nhập vào số lượng sản phẩm muốn mua, hệ thống sẽ dựa vào đó để tính được tổng số tiền mà người mua phải trả và hiển thị thông tin đó cho người dùng.

Chương này sẽ giúp chúng ta lựa chọn đúng kiểu dữ liệu phù hợp với từng tình huống. Chẳng hạn, để lưu trữ tên của người dùng thì chọn kiểu dữ liệu gì? Để lưu tuổi của người dùng thì chọn kiểu dữ liệu gì? Để lưu giới tính của người dùng thì chọn kiểu dữ liệu gì?…

Đối với các giá trị của từng kiểu dữ liệu, chúng ta có thể thực hiện được các phép toán khác nhau. Chẳng hạn, chúng ta có thể thực hiện các phép tính Cộng, Trừ, Nhân, Chia giữa các giá trị số. Chúng ta có thể thực hiện phép so sánh giữa các giá trị có kiểu ký tự…

Hoàn thành chương này, chúng ta có thể tạo được các ứng dụng trong đó thực hiện được các phép tính toán căn cứ vào dữ liệu mà mình nhập vào.

3. Biến

Khái niệm biến

Trong địa lý, nếu chúng ta được yêu cầu chỉ vị trí của vùng nằm ở toạ độ 16oB và 112oĐ ở trên quả địa cầu, phần lớn chúng ta sẽ mất khá nhiều thời gian để suy nghĩ, tìm kiếm và sau đó mới xác định được đúng toạ độ của vùng đó.

Tuy nhiên, nếu chúng ta được yêu cầu chỉ vị trí của Quần đảo Hoàng sa, phần lớn chúng ta đều dễ dàng xác định được dễ dàng và nhanh chóng.

Tương tự như vậy, thật khó để có thể nhớ được toạ độ của các thành phố thủ đô của các nước, nhưng chúng ta lại khá dễ dàng để xác định được vị trí của thành phố thông qua tên của chúng, chẳng hạn như Paris, Berlin, Bangkok, v.v.

Điều gì làm nên sự khác biệt trong việc sử dụng các toạ độ và sử dụng các tên gọi? Rõ ràng, ai cũng biết là việc sử dụng các tên gọi sẽ giúp dễ nhớ hơn, còn toạ độ thường được dùng trong các tính toán khoa học. Việc sử dụng tên gọi đại diện cho một vùng nào đó trên bản đồ sẽ giúp cho chúng ta dễ dàng hơn khi làm việc với nó.

Trong thế giới máy tính cũng vậy. Dữ liệu được lưu trong bộ nhớ. Bộ nhớ bao gồm nhiều ô nhớ. Mỗi ô nhớ có một địa chỉ riêng của nó để xác định ô nhớ đó. Cũng giống như toạ độ để xác định một vùng đất vậy. Tệ hơn, địa chỉ của các ô nhớ còn nhiều, dài dòng và khó nhớ hơn gấp nhiều lần so với kinh độ và vĩ độ trên trái đất. Có hàng triệu, thậm chí là hàng tỷ ô nhớ trong mỗi máy tính.

Giả sử, chúng ta cần thực hiện phép tính cộng 2 số. Như vậy chúng ta bắt đầu nhập vào số thứ nhất, lưu nó vào trong một ô nhớ ngẫu nhiên trong bộ nhớ, chúng ta phải ghi nhớ địa chỉ của ô này. Sau đó, chúng ta nhập số thứ 2 và lại lưu vào trong bộ nhớ, lại phải ghi nhớ địa chỉ ô nhớ này. Khi thực hiện phép cộng, chúng ta phải sử dụng các địa chỉ ô nhớ này để lấy các giá trị ra, rồi lại phải ghi kết quả của phép tính vào một ô nhớ khác, lại phải nhớ địa chỉ của ô nhớ mới.

Hình: Minh hoạ sử dụng địa chỉ ô nhớ để

Ở hình trên, các giá trị 5, 4 và 9 đều được lưu trữ ở trong bộ nhớ máy tính ở các vùng khác nhau được gọi là các ô nhớ. Mỗi ô nhớ đều được xác định bởi một địa chỉ khá dài và khó nhớ.

Cứ như vậy, điều gì sẽ xảy ra nếu chúng ta thực hiện một phép tính với sự tham gia của hàng chục giá trị khác nhau? Khả năng của lập trình viên khó có thể nhớ được địa chỉ của từng ấy ô nhớ. Đây là lúc chúng ta cần đặt tên cho các ô nhớ.

Hình: Minh hoạ việc sử dụng tên để đại diện cho các ô nhớ

Bây giờ, thay vì phải ghi nhớ địa chỉ của từng ô nhớ, chúng ta sẽ sử dụng các tên để đại diện cho ô nhớ mà mình mong muốn.

Ví dụ, khi nhập vào số thứ nhất, chúng ta đặt tên cho ô nhớ đó là firstNumber. Khi nhập vào số thứ hai, chúng ta đặt tên cho ô nhớ đó là secondNumber. Khi lưu trữ giá trị của phép tính, chúng ta đặt tên cho ô nhớ mới là result.

Chúng ta dễ dàng nhận thấy, cách làm này tốt hơn rất nhiều so với trước đây. Với cách làm này, chúng ta vừa tìm hiểu một khái niệm rất quan trọng trong lập trình, được gọi là biến.

Khai báo Biến

Khai báo biến là thao tác đặt tên cho một ô nhớ trong bộ nhớ. Sau khi khai báo biến thì chúng ta có thể sử dụng biến đó để thao tác với ô nhớ mà nó đại diện.

Trong Javascript, chúng ta khai báo một biến bằng cách sử dụng từ khoá let. Ví dụ sau đây khai báo lần lượt 3 biến là radius, areadiameter:

1.	let radius;
2.	let area;
3.	let diameter;

Lưu ý: Tại các phiên bản JavaScript cũ hơn so với phiên bản phổ biến hiện nay, chúng ta khai báo biến bằng từ khoá var.

Gán giá trị cho biến

Để gán giá trị cho một biến, chúng ta sử dụng toán tử gán (=).

Ví dụ:

1.	radius = 2.5;
2.	area = 19.6;
3.	diameter = 15.7; 

Nói rằng “=” là một toán tử là bởi vì ngoài việc làm cho biến thay đổi giá trị, bản thân phép gán cũng trả về giá trị được gán giống như là kết quả của một phép tính. Vậy nên mặc dù câu lệnh sau trông rối và ít được dùng trong thực tế thì vẫn là câu lệnh đúng:

1.	radius1 = radius2 = 2.5;

Phép gán radius2 làm cho radius2 có giá trị là 2.5, đồng thời “phép tính” này cho kết quả là 2.5, kết quả này được gán vào cho biến radius1 .

Khai báo và khởi tạo giá trị cho biến

Hành động tạo giá trị cho biến lần đầu tiên (nhớ rằng sau đó giá trị của biến có thể được thay đổi bằng cách thực hiện lại phép gán) được gọi là khởi tạo giá trị cho biến. Chúng ta có thể khai báo một biến đồng thời với việc khởi tạo:

1.	let radius = 2.5;
2.	let area = 19.6;
3.	let diameter = 15.7;

Lưu ý:  Một biến có thể được cấp lại giá trị, không giới hạn bao nhiêu lần. Trái lại, tại cùng một phạm vi mã (scope), bạn không thể khai báo một biến nhiều lần, chúng ta sẽ học về phạm vi mã sau, nhưng tại thời điểm này bạn có thể hiểu rằng chỉ dẫn sau sẽ gây lỗi bởi vì biến radius được khai báo hai lần:

1.	let radius = 2.5;
2.	let radius = 3; // Uncaught SyntaxError: Identifier 'radius' has already been declared

Quy tắc đặt tên cho biến

Vì một số lý do, trong hầu hết các ngôn ngữ lập trình, chúng ta chỉ có thể sử dụng các chữ cái tiếng Anh và  ký tự số để đặt tên cho biến. Tên biến sẽ không có các khoảng trắng (bao gồm cả dấu tab lẫn dấu xuống dòng), ký tự đặc biệt, hay chữ cái có dấu. Chữ cái đầu tiên của biến không được phép là ký tự số.

Riêng với ngôn ngữ JavaScript, ngoài hai quy tắc trên, chúng ta được phép sử dụng hai ký tự là $ và _ (dấu gạch ngang dưới) như là chữ cái.

Chúng ta có thể kể ra một số tên biến hợp lệ và không hợp lệ như sau:

1.	let money; // Hợp lệ
2.	let 1000dolar; // Không hợp lệ
3.	let my money; // Không hợp lệ
4.	let _radius; // Hợp lệ
5.	let $username; // Hợp lệ

Lưu ý:  Các ràng buộc được nhắc tới ở đây là Quy tắc (rules), có nghĩa là nếu bạn không tuân thủ, trình phiên dịch và thực thi JavaScript sẽ báo lỗi. Bạn phân biệt Quy tắc với các Quy ước (convention) – là những ràng buộc mà nếu tuân thủ thì sẽ rất tốt chứ không phải là bắt buộc. Chúng ta có thể vi phạm các Quy ước mà không ảnh hưởng trực tiếp tới kết quả thực thi của chương trình.

Xem tiếp >> Chương 2 Kieu du lieu

Có thể bạn quan tâm >> Cam nang lap trinh can ban danh cho ngươi moi bat dau


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

One thought on “Chương 2 – Biến, kiểu dữ liệu và toán tử”

Leave a Reply

Your email address will not be published. Required fields are marked *