lập trình C căn bản

Bài 4 : Variable scope, data type, Constants trong lập trình C cơ bản

Chào các bạn đây là bài số 4, trong bài viết này mình sẽ chia sẻ cho các bạn về Variable scope, data type, Constants trong lập trình C cơ bản.

lập trình c cơ bản

Ở bài số 3, chúng ta tìm hiểu variable, comment, input, output trong C. và chúng ta cũng hiểu cơ bản biến là gì? cú pháp nó như thế nào? Nếu các bạn chưa xem bài 3 thì xem lại tại đây nhé

Ở bài này chúng ta cũng tìm hiểu về biến nhưng là phạm vi của biến

Nào let go….

Variable scope trong lập trình C cơ bản.

Variable scope (nghĩa là phạm vi biến) chúng ta đọc từ “phạm vi” thì chắc cũng hiểu nghĩa của nó là gì rồi đúng không nào.

Khi ta định nghĩa 1 biến (variable) trong chương trình C, tùy thuộc vào chúng ta khai báo nó ở đâu thì phạm vi (hay còn gọi scope) của nó sẽ khác nhau.

Có 2 loại variables :

  • global variables.
  • local variables.

Local variable là gì ?

Local variable là 1 variable được khai báo bên trong của 1 function (hay còn gọi là hàm). Nó giống như thế này

Local variable chỉ có thể truy cập từ bên trong hàm.

Lấy ví dụ trên để giải thích, biến age với type là kiểu int có giá trị age = 37 nằm trong hàm main().

Nghĩa là age = 37 chỉ có trong hàm main(), khi hàm main() kết thúc thì biến age cũng không còn tồn tại.

Global variables là gì ?

Global variable là 1 variable được khai báo bên ngoài 1 function (hay còn gọi là hàm). Nó giống như thế này.

Global variable nó có thể truy cập được từ bất kỳ hàm nào.

Giải thích ví dụ bên trên

Biến age với type là kiểu int có giá trị age = 37 nằm ngoài hàm main(), và nằm trong 1 chương trình.

Hàm nào cũng có thể gọi và sử dụng biến age = 37, đến khi chương trình kết thúc thì biến age nó mới không còn tồn tại.

Static variables.

“Static” dịch sang tiếng việt là “tĩnh”.

Vậy static variables là gi ?

Static variables nghĩa là, trong 1 hàm bạn có thể khởi tạo 1 biến gọi là static variable bằng cách sử dụng từ khóa static (static keyword)

Ở đây mình nói là trong 1 hàm là vì sao ? bởi vì global variables mặc định của nó cũng là biến static, vì vậy nó không cần phải add thêm từ khóa static (static keyword).

Ta xem ví dụ bên dưới:

int incrementAge() {
  int age = 0;
  age++;
  return age;
}

Giải thích ví dụ bên trên để hiểu hơn nhé.

Nếu chúng ta gọi hàm incrementAge() lần thứ 1 thì chúng ta sẽ có giá trị trả về là 1 , Nếu chúng ta gọi hàm incrementAge() lần thứ 2, thì chúng ta vẫn sẽ có giá trị trả về là 1. Bởi vì biến age là 1 biến local và nó sẽ khởi tạo lại bằng 0 cho mỗi lần chúng ta gọi.

Kết quả :

Bây giờ chúng ta thay đổi hàm một chút nhé :

int incrementAge() {
  static int age = 0;
  age++;
  return age;
}

Các bạn có thấy gì khác không?

Bây giờ mỗi lần chúng ta gọi hàm incrementAge() thì biến age nó sẽ tăng lên 1 giá trị.

Và kết quả sẽ là ……

Biến static khi bạn khởi tạo mà không gán cho nó giá trị là 0 thì nó cũng tự gán giá trị bằng 0.

Data type (kiểu dữ liệu) trong lập trình C cơ bản

Trong phần này chúng ta sẽ tìm hiểu về các data types (hay còn gọi là kiểu dữ liệu) cơ bản trong chương trình C như : int, float, char,..vâng…vâng…và…mây…mây

Trong lập trình C mỗi khi chúng ta khai báo 1 biến thì chúng ta cũng phải chỉ định luôn biến đó là kiểu dữ liệu là gì. Ở bài 3 , Hưng có chia sẻ cách khai báo biến thì cú pháp nó như thế nào, nếu các bạn chưa xem thì xem lại tại đây nhé

Và khi chúng ta muốn lấy giá trị của nó để hiển thị ra màn hình thì chúng ta phải sử dụng format specifier bên trong hàm printf().

Bây giờ chúng ta có 1 ví dụ :

int main() {
    // Khởi tạo biến
    int myIntegerNum = 5; // Integer (số nguyên)
    float myFloatNum = 5.99; // Floating point number
    char myCharacterLetter = 'A'; // Character (ký tự)

    // Print variables (xuất biến ra màn hình)
    printf("%d\n", myIntegerNum);
    printf("%f\n", myFloatNum);
    printf("%c\n", myCharacterLetter);
    return 0;
}

Kết quả :

Basic Data Types (Kiểu dữ liệu cơ bản) trong lập trình C cơ bản

Khi chúng ta khai báo kiểu dữ liệu thì kiểu dữ liệu đó sẽ chỉ định kích thước và thông tin mà biến đó sẽ lưu trữ.

Trong bài này thì chúng ta chỉ tập chung vào những kiểu dữ liệu cơ bản và thường hay dùng nhất thôi nhé

Dưới đây là bảng kiểu dữ liệu mà chúng ta hay dùng

Data TypeSizeDescription
int2 or 4 bytesLưu trữ số nguyên, không có số thập phân
float4 bytesLưu trữ 1 hoặc nhiều số thập phân, nó có thể lưu trữ 7 số thập phân
double8 bytesLưu trữ 1 hoặc nhiều số thập phân, nó có thể lưu trữ 15 số thập phân
char1 byteLưu trữ 1 ký tự / chữ cái hoặc các giá trị ASCII

Basic Format Specifiers

Có các định dạng (format specifiers) khác nhau cho mỗi kiểu dữ liệu để chúng ta có thể xuất giá trị ra màn hình.

Format SpecifierData TypeDescription
%d or %iintDùng cho số nguyên, không có số thập phân
%ffloatDùng cho số thập phân
%lfdoubleDùng cho số thập phân
%ccharDùng cho các ký tự
%sstringDùng cho chuỗi (phần chuỗi này chúng ta sẽ tìm hiểu sau nhé)

int

Integer là số nguyên có thể có cả giá trị 0, dương và âm nhưng không có giá trị thập phân. Ví dụ : 0, -5, 10

Chúng ta có thể sử dụng int để khai báo biến Integer.

int id;

Ở đây, id là biến của kiểu dữ liệu Integer.

Ngoài ra, bạn cũng có thể khai báo nhiều biến trong chương trình C:

int id, age;

size of int thường sử dụng là 4 bytes (32 bits), nó nằm trong khoảng -2147483648 to 2147483647.

Float và double.

Float và double thường được sử dụng để lưu trữu các số thực.

float salary;
double price;

Ở đây chúng ta có một câu hỏi là “Kiểu float và double nó khác nhau như thế nào?”.

Chúng ta hiểu như thế này, kiểu float nó có kích thước (size of) là 4 bytes, còn kiểu double nó có kích thước (size of) là 8 bytes.

char

Từ khóa (hay còn gọi là keyword) là được dùng để khai báo 1 biến có kiểu dữ liệu là ký tự.

char test = 'a';

size of của biến ký tự này là 1 byte.

Constants trong lập trình C cơ bản

Khi bạn không muốn người khác ghi đè hay thay đổi giá trị biến mà bạn tạo ra, thì chúng ta sử dụng từ khóa const.

Từ khóa const sẽ khai báo biến là một “hằng số” , có nghĩa là không thể thay đổi được, chỉ có thể đọc.

int main() {
   // Khởi tạo biến
   const int myIntegerNum = 5; // myIntegerNum luôn luôn là 5
   myIntegerNum = 10; // error: biến myIntegerNum chỉ đọc, không được gán (nghĩa là không được thay đổi)
   // Print variables (xuất biến ra màn hình)
   printf("%d\n", myIntegerNum);
   return 0;
}

Trương chình bên trên sẽ xảy ra lỗi ở dòng số 4

Kết quả :

Thường thì chúng ta khai báo một biến constants cho những trường hợp như sau (mình nói thường thôi nhé chứ không phải là chỉ sử dụng bấy nhiêu đâu nha):

Giờ, phút, giây thì có giá trị như giờ thì có 24 giờ trong ngày, phút thì có 60 phút, giây thì có 60 giây, PI thì có giá trị 3.14.

Những giá trị như thế này thì mình gọi là những giá trị hiển nhiên, một ngày có hơn 24 giờ không? không có. 1 giờ có hơn 60 phút không? không có. 1 Phút có hơn 60 giấy không? cũng không có.

int main() {
   // Khoi tao bien
   const int gio = 24;
   const int phut = 60;
   const int giay = 60;
   const float PI = 3.14;
   // Print variables (xuất biến ra màn hình)
   printf("Gio = %d\n", gio);
   printf("Phut = %d\n", phut);
   printf("Giay = %d\n", giay);
   printf("PI = %f\n", PI);
   return 0;
}

Tổng kết

Qua bài viết này chúng ta cũng đã tìm hiểu Variable scope, data type, Constants trong lập trình C cơ bản. Trong bài này thì mình cũng tham khảo từ nhiều nguồn trên Internet.

Về những cái data types hay kích cỡ của kiểu dữ liệu đó là bao nhiêu thì mình nghĩ các bạn làm nhiều thì sẽ quen và nhớ thôi, chắc cũng không cần thuộc làm gì, khi nào mình không nhớ thì quay trở lại bài này xem lại. Chỉ cần mình hiểu là được rồi.

Các bạn có cái nào chưa hiểu thì xem video để hiểu hơn nhé hay muốn đóng góp cho bài viết thì vui lòng comment bên dưới nhé.

Chúc các bạn thực hành thành công.

Xem video và làm theo ví dụ để hiểu hơn tại đây nhé:

Nguồn tham khảo :

  1. https://www.freecodecamp.org/news/the-c-beginners-handbook/#variables-scope
  2. https://www.w3schools.com/c/c_data_types.php
  3. https://www.w3schools.com/c/c_constants.php
  4. https://www.programiz.com/c-programming/c-data-types

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *