Trong tin học, hằng đại lượng? Biến đại
lượng?
1. Hằng gì? Biến là gì?
Trong lập trình hằng hay hằng số ( constant ) dùng đ lưu trữ dữ liệu, dữ liệu
của hằng luôn luôn cố định không thay đổi trong suốt chương trình.
Biến hay biến số ( varialbe ) ng để lưu trữ dữ liệu nhưng dữ liệu được lưu
trữ trong biến thể thay đổi khi chạy chương trình.
2. dụ về hằng biến
2.1. Ví dụ về hằng
Trong dụ sau đây ta định nghĩa một hằng tên là SITE _ DOMAIN:
Trong trường hợp này bạn thể sử dụng nhưng không thể thay đổi giá trị
của TEMP _ FOLDER.
Lưu ý: trong hầu hết c ngôn ngữ lập trình thì tên hằng được để in hoa tuy
nhiên điều này không bắt buộc bạn thể sử dụng chữ in thường.
Ngoài ra sử dụng pháp trên thì trong C để khai báo một hằng số bạn
thể sử dụng macro như sau:
2.2. dụ về biến
Trong dụ sau đây chúng ta định nghĩa một biến tên year được định
nghĩa với kiểu dữ liệu là int:
Trong trường hợp này giá trị của biến year thể thay đổi trong quá trình
chạy chương trình n bạn thể thấy trên.
3. Kiểu dữ liệu của biến
Dữ liệu trong lập trình được phân chia thành các kiểu khác nhau dụ như
kiểu số ( gồm các số nguyên ), kiểu chuỗi ( gồm chuỗi các tự ), kiểu float
gồm các số thực... Một số ngôn ngữ lập trình như C thì chúng ta cần định
nghĩa kiểu dữ liệu cho biến khi khai báo biến. Ví dụ biến year sau đây được
khai báo với kiểu dữ liệu integer.
Việc khai báo kiểu dữ liệu của biến giúp trình biên dịch compiler của C biết
được sẽ cần phải đăng bao nhiêu dung lượng của bộ nhớ RAM để lưu trữ
giá trị của biến, dụ với kiểu dữ liệu số sẽ cần tới 2 hoặc tối đa 4 bytes
dung lượng của RAM để lưu trữ.
Các ngôn ngữ yêu cầu định nghĩa kiểu dữ liệu của biến khi khai báo như trên
còn được gọi ngôn ngữ kiểu tĩnh hay static typing language.
Với một số ngôn ngữ lập trình khác như PHP hay Ruby thì lập trình viên
không cần phải khai báo kiểu dữ liệu cho biến trình biên soạn interpreter
sẽ tự động thực hiện việc gán d liệu bộ nhớ cho biến dựa trên giá trị
biến lưu trữ:
Các ngôn ngữ hỗ tr tính năng cho phép không cần định nghĩa kiểu dữ liệu
cho biến này còn được gọi ngôn ngữ kiểu động hay dymaic typing
language.
4. Ngôn ngữ kiểu động
Một ngôn ngữ lập trình được cho được động, hoặc chỉ "động" khi
phần lớn việc kiểm tra của được thực hiện vào thời gian trái ngược với
thời gian biên dịch. Trong kiểu động, c kiểu được liên kết với các giá trị
không phải biến. Các ngôn ngữ được nhập bao gồm Groovy, JavaScript,
Lisp, Lua, Objective - C ( liên quan đến các loại do người sử dụng xác định
nhưng không phải các loại tích hợp ). So với tĩnh, động thể linh
hoạt hơn dụ bằng cách cho phép các chương trình tạo các loại chức
năng dựa trên dữ liệu thời gian chạy , mặc chi phí ít hơn một đảm bảo tiên
nghiệm. Điều này do một ngôn ngữ động chấp nhận cố gắng thực thi
một số chương trình thể bị quy định không hợp lệ bởi chương trình kiểm
tra kiểu tĩnh.
động thể dẫn đến lỗi loại thời gian chạy, đó trong thời gian chạy một
giá trị thể loại không mong muốn một thao tác nghĩa đối với loại
đó được áp dụng. Hoạt động này thể xảy ra rất lâu sau khi xảy ra lỗi lập
trình, đó nơi loại dữ liệu sai được truyền vào một nơi không nên có.
Điều này làm cho lỗi khó xác định vị trí.
Các hệ thống ngôn ngữ được động, so với các anh em họ tĩnh của
chúng, thực hiện kiểm tra "thời gian dịch" ít hơn trên nguồn ( dụ sẽ
kiểm tra xem chương trình đúng về mặt pháp không ). Kiểm tra thời
gian thực khả năng phức tạp hơn chúng thể sử dụng thông tin động
cũng như bất kỳ thông tin nào trong quá trình dịch. Mặt khác, kiểm tra thời
gian chạy chỉ xác định rằng các điều kiện giữ trong một thực thi cụ thể của
chương trình kiểm tra này được lặp lại cho mỗi lần thực hiện chương trình.
Phát triển trong các ngôn ngữ động thường được hỗ trợ bởi các thực tiễn
lập trình như kiểm tra đơn vị. Kiểm thử là một thông lệ quan trọng trong phát
triển phần mềm chuyên nghiệp đặc biệt quan trọng trong các ngôn ngữ
được động. Trong thực tế, kiểm tra được thực hiện để đảm bảo hoạt động
chương trình chính xác thể phát hiện phạm vi lỗi rộng hơn nhiều so với
kiểm tra kiểu tĩnh, nhưng ngược lại không thể tìm kiếm toàn diện các lỗi
cả kiểm tra loại tĩnh đều thể phát hiện. Kiểm thử thể được tích hợp vào
chu trình y dựng phần mềm, trong trường thể được tích hợp vào chu
trình xây dựng phần mềm, trong trường hợp đó th được coi kiểm tra
"thời gian biên dịch", trong đó người dùng chương trình sẽ không phải chạy
thủ công các kiểm tra đó.
Ngược lại với kiểu động nh. Kiểu này được sử dụng khi kiểm tra
được thực hiện trong thời gian biên dịch trái ngược với thời gian chạy. Trong
kiểu tĩnh, các kiểu được liên kết với các biến không phải giá trị. Các
ngôn ngữ được nhập tĩnh bao gồm Ada, C, C++, C#,Java,... ( liên quan đến
việc phân biệt hướng, mảng, băm chương trình con ) Scala. tĩnh
một hình thức xác minh chương trình hạn chế ( xem loại an toàn ): theo đó
cho phép nhiều lỗi loại được phát hiện sớm trong chu kỳ phát triển. Trình
kiểm tra loại tĩnh chỉ đánh giá thông tin loại thể được c định tại thời điểm
biên dịch, nhưng thể xác minh rằng các điều kiện kiểm tra giữ cho tất cả
các lần thực hiện thể của chương trình, giúp loại bỏ sự cần thiết phải lặp
lại kiểm tra loại mỗi khi chương trình được thực thi. Việc thực hiện chương
trình cũng thể được thực hiện hiệu quả hơn ( tức nhanh hơn giảm bộ
nhớ ) bằng cách bỏ qua kiểm tra loại thời gian chạy cho phép tối ưu hóa
khác.
Bởi họ đánh giá thông tin loại trong quá trình biên dịch do đó thiếu thông
tin loại chỉ sẵn tại thời gian chạy, nên trình kiểm tra loại tĩnh bảo thủ. Họ
từ chối một số chương trình th hoạt động tốt trong thời gian chạy nhưng
điều đó không thể được xác định một cách tĩnh để được đánh máy tốt. dụ:
ngay khi một biểu thức luôn được đánh giá đúng trong thời gian chạy, một
chương trình chứa
sẽ bị từ chối khi nhập sai, phân tĩnh chẵn không thể xác định rằng nhánh
khác sẽ không được thực hiện. Hành vi bảo thủ của trình kiểm tra tĩnh
thuận lợi đánh giá sai không thương xuyên: trình kiểm tra loại tĩnh th phát
hiện lỗi loại trong các đường dẫn hiếm khi được sử dụng. Nếu không
kiểm tra kiểu tĩnh, ngay cả c kiểm tra phạm vi với độ bao phủ là
100 % thể không thể m thấy các lỗi loại đó. Các kiểm tra phạm vi mã
thể không phát hiện ra các lỗi loại như vậy bởi sự kết hợp của tất cả các vị trí
nơi các giá trị được tạo tất cả các vị trí sử dụng một giá trị nhất định phải
được tính đến.
Các ngôn ngữ tĩnh được sử dụng rỗng rãi nhất không phải loại chính
thức an toàn. Chúng "lỗ hổng" trong đặc tả ngôn ngữ lập trình cho phép
các lập trình viên viết phá vỡ xác minh được thực hiện bởi trình kiểm tra
kiểu tĩnh do đó giải quyết một loạt c vấn đề.

Preview text:

Trong tin học, hằng là đại lượng? Biến là đại lượng?
1. Hằng là gì? Biến là gì?
Trong lập trình hằng hay hằng số ( constant ) dùng để lưu trữ dữ liệu, dữ liệu
của hằng luôn luôn cố định và không thay đổi trong suốt chương trình.
Biến hay biến số ( varialbe ) dùng để lưu trữ dữ liệu nhưng dữ liệu được lưu
trữ trong biến có thể thay đổi khi chạy chương trình.
2. Ví dụ về hằng và biến 2.1. Ví dụ về hằng
Trong ví dụ sau đây ta định nghĩa một hằng có tên là SITE _ DOMAIN:
Trong trường hợp này bạn có thể sử dụng nhưng không thể thay đổi giá trị của TEMP _ FOLDER.
Lưu ý: trong hầu hết các ngôn ngữ lập trình thì tên hằng được để in hoa tuy
nhiên điều này là không bắt buộc và bạn có thể sử dụng chữ in thường.
Ngoài ra sử dụng cú pháp ở trên thì trong C để khai báo một hằng số bạn có
thể sử dụng macro như sau:
2.2. Ví dụ về biến
Trong ví dụ sau đây chúng ta định nghĩa một biến có tên là year được định
nghĩa với kiểu dữ liệu là int:
Trong trường hợp này giá trị của biến year có thể thay đổi trong quá trình
chạy chương trình như bạn có thể thấy ở trên.
3. Kiểu dữ liệu của biến
Dữ liệu trong lập trình được phân chia thành các kiểu khác nhau ví dụ như
kiểu số ( gồm các số nguyên ), kiểu chuỗi ( gồm chuỗi các ký tự ), kiểu float
gồm các số thực... Một số ngôn ngữ lập trình như C thì chúng ta cần định
nghĩa kiểu dữ liệu cho biến khi khai báo biến. Ví dụ biến year sau đây được
khai báo với kiểu dữ liệu integer.
Việc khai báo kiểu dữ liệu của biến giúp trình biên dịch compiler của C biết
được sẽ cần phải đăng ký bao nhiêu dung lượng của bộ nhớ RAM để lưu trữ
giá trị của biến, Ví dụ với kiểu dữ liệu số sẽ cần tới 2 hoặc tối đa là 4 bytes
dung lượng của RAM để lưu trữ.
Các ngôn ngữ yêu cầu định nghĩa kiểu dữ liệu của biến khi khai báo như trên
còn được gọi là ngôn ngữ kiểu tĩnh hay static typing language.
Với một số ngôn ngữ lập trình khác như PHP hay Ruby thì lập trình viên
không cần phải khai báo kiểu dữ liệu cho biến và trình biên soạn interpreter
sẽ tự động thực hiện việc gán dữ liệu bộ nhớ cho biến dựa trên giá trị mà biến lưu trữ:
Các ngôn ngữ hỗ trợ tính năng cho phép không cần định nghĩa kiểu dữ liệu
cho biến này còn được gọi là ngôn ngữ kiểu động hay dymaic typing language.
4. Ngôn ngữ kiểu động
Một ngôn ngữ lập trình được cho là được gõ động, hoặc chỉ là "động" khi
phần lớn việc kiểm tra của nó được thực hiện vào thời gian trái ngược với
thời gian biên dịch. Trong kiểu gõ động, các kiểu được liên kết với các giá trị
không phải là biến. Các ngôn ngữ được nhập bao gồm Groovy, JavaScript,
Lisp, Lua, Objective - C ( liên quan đến các loại do người sử dụng xác định
nhưng không phải là các loại tích hợp ). So với gõ tĩnh, gõ động có thể linh
hoạt hơn ví dụ bằng cách cho phép các chương trình tạo các loại và chức
năng dựa trên dữ liệu thời gian chạy , mặc dù chi phí ít hơn một đảm bảo tiên
nghiệm. Điều này là do một ngôn ngữ gõ động chấp nhận và cố gắng thực thi
một số chương trình có thể bị quy định là không hợp lệ bởi chương trình kiểm tra kiểu tĩnh.
Gõ động có thể dẫn đến lỗi loại thời gian chạy, đó là trong thời gian chạy một
giá trị có thể có loại không mong muốn và một thao tác vô nghĩa đối với loại
đó được áp dụng. Hoạt động này có thể xảy ra rất lâu sau khi xảy ra lỗi lập
trình, đó là nơi mà loại dữ liệu sai được truyền vào một nơi không nên có.
Điều này làm cho lỗi khó xác định vị trí.
Các hệ thống ngôn ngữ được gõ động, so với các anh em họ gõ tĩnh của
chúng, thực hiện kiểm tra "thời gian dịch" ít hơn trên mã nguồn ( ví dụ sẽ
kiểm tra xem chương trình có đúng về mặt cú pháp không ). Kiểm tra thời
gian thực có khả năng phức tạp hơn vì chúng có thể sử dụng thông tin động
cũng như bất kỳ thông tin nào có trong quá trình dịch. Mặt khác, kiểm tra thời
gian chạy chỉ xác định rằng các điều kiện giữ trong một thực thi cụ thể của
chương trình và kiểm tra này được lặp lại cho mỗi lần thực hiện chương trình.
Phát triển trong các ngôn ngữ gõ động thường được hỗ trợ bởi các thực tiễn
lập trình như kiểm tra đơn vị. Kiểm thử là một thông lệ quan trọng trong phát
triển phần mềm chuyên nghiệp và đặc biệt quan trọng trong các ngôn ngữ
được gõ động. Trong thực tế, kiểm tra được thực hiện để đảm bảo hoạt động
chương trình chính xác có thể phát hiện phạm vi lỗi rộng hơn nhiều so với
kiểm tra kiểu tĩnh, nhưng ngược lại không thể tìm kiếm toàn diện các lỗi mà
cả kiểm tra loại tĩnh đều có thể phát hiện. Kiểm thử có thể được tích hợp vào
chu trình xây dựng phần mềm, trong trường có thể được tích hợp vào chu
trình xây dựng phần mềm, trong trường hợp đó có thể được coi là kiểm tra
"thời gian biên dịch", trong đó người dùng chương trình sẽ không phải chạy
thủ công các kiểm tra đó.
Ngược lại với kiểu gõ động là gõ tính. Kiểu gõ này được sử dụng khi kiểm tra
được thực hiện trong thời gian biên dịch trái ngược với thời gian chạy. Trong
kiểu gõ tĩnh, các kiểu được liên kết với các biến không phải là giá trị. Các
ngôn ngữ được nhập tĩnh bao gồm Ada, C, C++, C#,Java,... ( liên quan đến
việc phân biệt vô hướng, mảng, băm và chương trình con ) và Scala. Gõ tĩnh
là một hình thức xác minh chương trình hạn chế ( xem loại an toàn ): theo đó
nó cho phép nhiều lỗi loại được phát hiện sớm trong chu kỳ phát triển. Trình
kiểm tra loại tĩnh chỉ đánh giá thông tin loại có thể được xác định tại thời điểm
biên dịch, nhưng có thể xác minh rằng các điều kiện kiểm tra giữ cho tất cả
các lần thực hiện có thể của chương trình, giúp loại bỏ sự cần thiết phải lặp
lại kiểm tra loại mỗi khi chương trình được thực thi. Việc thực hiện chương
trình cũng có thể được thực hiện hiệu quả hơn ( tức là nhanh hơn và giảm bộ
nhớ ) bằng cách bỏ qua kiểm tra loại thời gian chạy và cho phép tối ưu hóa khác.
Bởi vì họ đánh giá thông tin loại trong quá trình biên dịch và do đó thiếu thông
tin loại chỉ có sẵn tại thời gian chạy, nên trình kiểm tra loại tĩnh là bảo thủ. Họ
từ chối một số chương trình có thể hoạt động tốt trong thời gian chạy nhưng
điều đó không thể được xác định một cách tĩnh để được đánh máy tốt. Ví dụ:
ngay khi một biểu thức luôn được đánh giá là đúng trong thời gian chạy, một chương trình có chứa mã
sẽ bị từ chối khi nhập sai, vì phân tĩnh chẵn không thể xác định rằng nhánh
khác sẽ không được thực hiện. Hành vi bảo thủ của trình kiểm tra tĩnh là
thuận lợi đánh giá sai không thương xuyên: trình kiểm tra loại tĩnh có thể phát
hiện lỗi loại trong các đường dẫn mã hiếm khi được sử dụng. Nếu không
kiểm tra kiểu tĩnh, ngay cả các kiểm tra phạm vi mã với độ bao phủ mã là
100 % có thể không thể tìm thấy các lỗi loại đó. Các kiểm tra phạm vi mã có
thể không phát hiện ra các lỗi loại như vậy bởi sự kết hợp của tất cả các vị trí
nơi các giá trị được tạo và tất cả các vị trí sử dụng một giá trị nhất định phải được tính đến.
Các ngôn ngữ gõ tĩnh được sử dụng rỗng rãi nhất không phải là loại chính
thức an toàn. Chúng có "lỗ hổng" trong đặc tả ngôn ngữ lập trình cho phép
các lập trình viên viết mã phá vỡ xác minh được thực hiện bởi trình kiểm tra
kiểu tĩnh và do đó giải quyết một loạt các vấn đề.
Document Outline

  • Trong tin học, hằng là đại lượng? Biến là đại lượn
    • 1. Hằng là gì? Biến là gì?
    • 2. Ví dụ về hằng và biến
      • 2.1. Ví dụ về hằng
      • 2.2. Ví dụ về biến
    • 3. Kiểu dữ liệu của biến
    • 4. Ngôn ngữ kiểu động