Làm thế nào bạn sẽ thiết lập một biến toàn cầu được gọi là giá trị?

Chúng ta đã thấy rằng một chương trình C nói chung về cơ bản là một tập hợp các hàm. Hơn nữa, các biến được sử dụng bởi các chức năng này là cục bộ trong phạm vi. tôi. e. , một biến được xác định trong một chức năng không được công nhận trong một chức năng khác. Phương thức chính để truyền dữ liệu từ hàm này sang hàm khác là thông qua danh sách đối số trong lời gọi hàm. Các đối số có thể được thông qua theo một trong hai cách khác nhau. Khi một đối số được truyền theo giá trị thì giá trị của một biến cục bộ (hoặc biểu thức) trong thủ tục gọi được sao chép vào một biến cục bộ trong hàm được gọi. Khi một đối số được truyền bằng tham chiếu thì một biến cục bộ trong thủ tục gọi sẽ chia sẻ cùng một vị trí bộ nhớ như một biến cục bộ trong hàm được gọi. do đó, một thay đổi trong một biến sẽ tự động được nhân đôi trong biến khác. Tuy nhiên, có một phương pháp thứ ba để chuyển thông tin từ chức năng này sang chức năng khác. Có thể định nghĩa các biến có phạm vi toàn cầu. các biến như vậy được nhận dạng bởi tất cả các hàm tạo nên chương trình và có cùng giá trị trong tất cả các hàm này

Trình biên dịch C nhận ra một biến là toàn cục, trái ngược với cục bộ, bởi vì khai báo của nó nằm ngoài phạm vi của bất kỳ hàm nào tạo nên chương trình. Tất nhiên, một biến toàn cục chỉ có thể được sử dụng trong một câu lệnh thực thi sau khi nó đã được khai báo. Do đó, vị trí tự nhiên để đặt các câu lệnh khai báo biến toàn cục là trước bất kỳ định nghĩa hàm nào. tôi. e. , ngay đầu chương trình. Các khai báo biến toàn cục có thể được sử dụng để khởi tạo các biến đó theo cách thông thường. Tuy nhiên, các giá trị ban đầu phải được biểu thị dưới dạng hằng số, thay vì biểu thức. Hơn nữa, các giá trị ban đầu chỉ được gán một lần, khi bắt đầu chương trình

Chương trình được liệt kê dưới đây là một phiên bản khác của printfact. c, trong đó giao tiếp giữa hai phần của chương trình diễn ra hoàn toàn thông qua các biến toàn cục

/* printfact4.c */
/*
  Program to print factorials of all integers
  between 0 and 20
*/

#include 
#include 

/* Prototype for function factorial() */
void factorial();
   
/* Global variable declarations */
int j;             
double fact;

int main() 
{
  /* Print factorials of all integers between 0 and 20 */
  for (j = 0; j <= 20; ++j) 
   {
    factorial();
    printf("j = %3d    factorial(j) = %12.3e\n", j, fact);
   }
  return 0;
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

void factorial() 
{
  /* 
     Function to evaluate factorial (in floating-point form)
     of non-negative integer j. Result stored in variable fact.
  */

  int count;

  /* Abort if j is negative integer */
  if (j < 0) 
   {
    printf("\nError: factorial of negative integer not defined\n");
    exit(1);
   }

  /* Calculate factorial */
  for (count = j, fact = 1.; count > 0; --count) fact *= (double) count;

  return;      
}
Đầu ra của chương trình trên giống với đầu ra của printfact. c. Quan sát rằng biến toàn cục j được sử dụng để chuyển giá trị nguyên có giai thừa được tính từ phần chính của chương trình sang hàm giai thừa(), trong khi biến toàn cục fact được sử dụng để chuyển giai thừa đã tính trở lại phần chính . Ngẫu nhiên, lưu ý việc sử dụng nhiều câu lệnh khởi tạo (được phân tách bằng dấu phẩy) trong câu lệnh for xuất hiện trong giai thừa()

Các biến toàn cầu nên được sử dụng một cách tiết kiệm trong các chương trình khoa học (hoặc bất kỳ loại chương trình nào khác), vì có những nguy hiểm cố hữu trong việc sử dụng chúng. Sự thay đổi giá trị của một biến toàn cục trong một hàm nhất định được chuyển sang tất cả các phần khác của chương trình. Thật không may, một sự thay đổi như vậy đôi khi có thể vô tình xảy ra, do tác dụng phụ của một số hành động khác. Do đó, có khả năng giá trị của một biến toàn cục thay đổi bất ngờ, dẫn đến một lỗi lập trình tinh vi có thể cực kỳ khó theo dõi, vì dòng vi phạm có thể nằm ở bất kỳ đâu trong chương trình. Các lỗi tương tự liên quan đến các biến cục bộ dễ gỡ lỗi hơn nhiều, vì phạm vi của các biến cục bộ bị hạn chế hơn nhiều so với các biến toàn cục

Ngoài các hằng số, bạn có thể tạo các biến—được gọi là biến toàn cục—để sử dụng xuyên suốt ứng dụng. Bạn có thể sử dụng biến theo bất kỳ cách nào sau đây

• Trong biểu thức gán giá trị trên khung Append

• Trong một biểu thức để xác định giới hạn truy vấn trên khung Duyệt hoặc Cập nhật

• Là một phần của tham số được truyền giữa các khung

• Là một biến cục bộ trên một khung

Ghi chú. Biến toàn cục có thể được sử dụng bất cứ nơi nào biến cục bộ được sử dụng. Tuy nhiên, không thay thế tất cả các biến cục bộ bằng các biến toàn cục; . Bạn phải sử dụng biến cục bộ thay vì biến toàn cục bất cứ khi nào có thể. Không sử dụng biến toàn cục trừ khi biến đó được sử dụng trong một số khung và bạn không muốn chuyển nó dưới dạng tham số

Ví dụ: tạo một biến toàn cục có tên "user_id" để lưu trữ mật khẩu của người dùng. Viết mã thoát để nhắc người dùng nhập mật khẩu khi họ khởi động ứng dụng và kiểm tra giá trị của "user_id" đối với bảng người dùng được ủy quyền trước khi cho phép truy cập vào ứng dụng

Xác định một biến toàn cầu

Để xác định một biến toàn cục

1. Chọn Chỉnh sửa từ menu trong cửa sổ Trình chỉnh sửa sơ đồ dòng ứng dụng hoặc Trình chỉnh sửa truy vấn trực quan

Vì định nghĩa biến áp dụng cho toàn bộ ứng dụng nên bạn có thể chọn bất kỳ khung hình nào làm khung hình hiện tại

2. Chọn Các thành phần toàn cầu từ danh sách các tùy chọn

3. Chọn Biến từ danh sách các thành phần toàn cầu

Vision hiển thị cửa sổ Chỉnh sửa biến toàn cầu như minh họa trong hình dưới đây

Làm thế nào bạn sẽ thiết lập một biến toàn cầu được gọi là giá trị?

4. Chọn Tạo từ menu

Vision hiển thị cửa sổ bật lên Tạo biến toàn cầu như minh họa trong hình dưới đây

Làm thế nào bạn sẽ thiết lập một biến toàn cầu được gọi là giá trị?

5. Nhập tên cho biến

7. Nhập một Nhận xét ngắn mô tả tùy chọn

Nhận xét này xuất hiện trong cửa sổ Chỉnh sửa biến toàn cầu. Nó cũng xuất hiện dưới dạng chú thích trong mã 4GL được tạo cho biến

9. Chỉ định kiểu dữ liệu theo một trong hai cách sau

• Nhập loại dữ liệu Ingres hợp lệ hoặc tên của loại bản ghi mà bạn đã tạo trước đó cho ứng dụng này. Nếu loại yêu cầu độ dài, hãy nhập độ dài trong ngoặc đơn

• Sử dụng thao tác ListChoices

Vision hiển thị danh sách các loại dữ liệu Ingres hợp lệ. Nếu loại bạn chọn yêu cầu độ dài, Vision sẽ nhắc bạn về độ dài. Nhập độ dài không có dấu ngoặc đơn trong trường bật lên. Vision đặt loại dữ liệu trong trường Loại với độ dài, nếu được yêu cầu, trong ngoặc đơn

Ví dụ: để biểu thị kiểu dữ liệu char(20), hãy chọn "char", sau đó nhập "20" trong cửa sổ bật lên độ dài. Vision hiển thị loại là char(20)

Lưu ý rằng bạn không thể sử dụng ListChoices cho loại bản ghi

Đảm bảo kiểu dữ liệu phù hợp với chức năng của hằng số. Ví dụ: nếu giá trị của biến là tỷ lệ phần trăm, hãy sử dụng kiểu dữ liệu float

10. Nhấn Tab để di chuyển con trỏ đến trường tiếp theo

Nếu bạn đã chỉ định loại bản ghi trong trường Loại, trường Mảng sẽ được hiển thị. Nhập có để cho biết biến là một mảng hoặc không để cho biết biến là một bản ghi

Nếu bạn đã chỉ định loại dữ liệu Ingres trong trường Loại, trường Nullable sẽ được hiển thị. Giá trị mặc định của yes chỉ ra rằng biến có thể chấp nhận giá trị null. Nhập không để làm cho biến không thể rỗng

Vision hiển thị định nghĩa biến toàn cục của bạn trong cửa sổ Chỉnh sửa biến toàn cục

12. Chọn Kết thúc để quay lại cửa sổ mà bạn đang làm việc

Gán giá trị ban đầu cho biến toàn cục

Theo mặc định, Vision đặt giá trị ban đầu của các biến toàn cục thành chuỗi trống đối với kiểu dữ liệu ký tự và 0 đối với kiểu dữ liệu số

Để gán một giá trị ban đầu khác cho một biến toàn cục

1. Viết câu lệnh gán 4GL

Bằng cách này, Vision biên dịch mã khi bắt đầu ứng dụng. Đảm bảo bao gồm khung này khi bạn chạy ứng dụng. Mặt khác, Vision không nhìn thấy câu lệnh gán và thay vào đó sử dụng các giá trị mặc định (chuỗi trống hoặc số 0)

Chỉnh sửa định nghĩa biến toàn cục

Để chỉnh sửa định nghĩa của một biến toàn cục để thay đổi kiểu dữ liệu hoặc tính vô hiệu của nó

1. Thực hiện theo các bước từ 1 đến 3 được mô tả ở trên để xác định biến toàn cục

Vision hiển thị cửa sổ Chỉnh sửa biến toàn cầu

2. Đặt con trỏ vào tên của biến bạn muốn thay đổi

Vision hiển thị cửa sổ Edit a Global Variable Definition. Cửa sổ này chứa thông tin bạn đã nhập khi tạo biến (hoặc lần cuối cùng bạn chỉnh sửa nó)

4. Để thay đổi kiểu dữ liệu, hãy nhập kiểu dữ liệu mới trên giá trị hiện tại và nhấn Tab

5. Để thay đổi trường Nullable hoặc Array, nhập yes hoặc no thích hợp trên giá trị hiện tại và nhấn Tab

6. Chỉnh sửa Nhận xét ngắn mang tính mô tả

Vision hiển thị định nghĩa mới trong cửa sổ Edit Global Variables

8. Chọn Kết thúc một lần nữa để quay lại cửa sổ mà bạn đang làm việc

Khi thay đổi tên của biến toàn cục mà bạn đã xác định, hãy đảm bảo thay đổi tên tại mỗi vị trí bạn sử dụng biến đó trong toàn bộ ứng dụng, bao gồm mọi câu lệnh gán 4GL hoặc mã thoát khác

Để đổi tên một biến toàn cục

1. Thực hiện theo các bước từ 1 đến 3 như được mô tả ở trên để xác định biến toàn cục

Vision hiển thị cửa sổ Chỉnh sửa biến toàn cầu

2. Đặt con trỏ vào tên biến muốn đổi tên

3. Chọn Đổi tên từ menu

Vision nhắc bạn về tên mới

4. Nhập tên mới cho biến

Tên mới của biến xuất hiện trong cửa sổ Edit Global Variables

Phá hủy một biến toàn cầu

Khi hủy một biến mà bạn không còn sử dụng trong một ứng dụng, hãy đảm bảo xóa tất cả các tham chiếu đến biến đó trong ứng dụng, bao gồm mọi mã thoát, nếu không Vision không thể biên dịch và chạy ứng dụng của bạn

Bạn có thể gán giá trị cho biến toàn cục trong python không?

Do đó, các biến toàn cục không thể được gán giá trị trực tiếp trong một hàm (trừ khi được đặt tên trong câu lệnh toàn cục), mặc dù chúng có thể được tham chiếu.

Bạn có thể thay đổi giá trị của biến toàn cục không?

Các giá trị biến toàn cục mà bạn có thể thay đổi xuất hiện trong dấu ngoặc đơn trên bảng GLOBALS . Nếu một giá trị không được đặt trong dấu ngoặc đơn, thì đó là giá trị chỉ đọc.

Làm cách nào để thay đổi giá trị của biến toàn cục trong C?

Biến toàn cục chỉ có thể được định nghĩa trước hàm main(). Chúng ta không thể xác định lại giá trị của một biến toàn cục trong phạm vi toàn cầu tuy nhiên, chúng ta có thể truy cập vào một biến toàn cầu trong phạm vi toàn cầu. Nếu một biến cục bộ và một biến toàn cục có cùng tên, chúng ta có thể truy cập biến toàn cục bằng cách sử dụng từ khóa extern.