Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

  • Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào
    Tải app VietJack. Xem lời giải nhanh hơn!

Với 10 câu hỏi trắc nghiệm Tin học 11 Bài 11: Kiểu mảng có đáp án chi tiết đầy đủ các mức độ giúp học sinh ôn luyện trắc nghiệm Tin 11 đạt kết quả cao.

Quảng cáo

Câu 1: Phát biểu nào dưới đây về kiểu mảng một chiều là phù hợp?

A. Là một tập hợp các số nguyên

B. Độ dài tối đa của mảng là 255

C. Là một dãy hữu hạn các phần tử cùng kiểu

D. Mảng không thể chứa kí tự

Hiển thị đáp án

Trả lời: Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu. Mảng được đặt tên và mỗi phần tử của nó có một chỉ số. Để mô tả ta cần xác định kiểu của các phần tử và cách đánh số các phần tử của nó.

Đáp án: C

Câu 2: Để khai báo số phần tử của mảng trong PASCAL, người lập trình cần:

A. khai báo một hằng số là số phần tử của mảng

B. khai báo chỉ số bắt đầu và kết thúc của mảng

C. khai báo chỉ số kết thúc của mảng

D. không cần khai báo gì, hệ thống sẽ tự xác định

Hiển thị đáp án

Trả lời: Để khai báo số phần tử của mảng trong PASCAL ( kiểu chỉ số), người lập trình cần khai báo chỉ số bắt đầu và kết thúc của mảng. Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1..n2 với n1, n2 là các hằng hoặc biểu thức nguyên xác định chỉ số đầu và cuối (n1 ≤ n2).

Đáp án:  B 

Quảng cáo

Câu 3: Phát biểu nào dưới đây về chỉ số của mảng là phù hợp nhất?

A. Dùng để truy cập đến một phần tử bất kì trong mảng

B. Dùng để quản lí kích thước của mảng

C. Dùng trong vòng lặp với mảng

D. Dùng trong vòng lặp với mảng để quản lí kích thước của mảng

Hiển thị đáp án

Trả lời: Chỉ số của mảng dùng để tham chiếu (truy cập) đến một phần tử bất kì trong mảng. Cú pháp: <Tên mảng>[chỉ số];

Đáp án: A

Câu 4: Phát biểu nào sau đây về mảng là không chính xác?

A. Chỉ số của mảng không nhất thiết bắt đầu từ 1

B. Có thể xây dựng mảng nhiều chiều

C. Xâu kí tự cũng có thể xem như là một loại mảng

D. Độ dài tối đa của mảng là 255

Hiển thị đáp án

Trả lời: Chỉ số của mảng không nhất thiết bắt đầu từ 1 tùy theo người lập trình. Xâu kí tự cũng có thể xem như mảng một chiều, mỗi phần tử là một kí tự. Trong lập trình có thể xây dựng mảng nhiều chiều. Và không có giới hạn cụ thể về độ dài của mảng.

Đáp án: D

Câu 5: Thế nào là khai báo biến mảng gián tiếp?

A. Khai báo mảng của các bản ghi

B. Khai báo mảng xâu kí tự

C. Khai báo mảng hai chiều

D. Khai báo thông qua kiểu mảng đã có

Hiển thị đáp án

Trả lời: Khai báo biến mảng gián tiếp là khai báo thông qua kiểu mảng đã có. Cấu trúc khai báo mảng gián tiếp:

Type < tên kiểu mảng> = array [kiểu chỉ số] of <kiểu phần tử>;

Var <tên biến mảng> : < tên kiểu mảng>;

Đáp án:D

Quảng cáo

Câu 6: Phương án nào dưới đây là khai báo mảng hợp lệ?

A. Var mang : ARRAY[0..10] OF INTEGER; 

B. Var mang : ARRAY[0..10] : INTEGER;

C. Var mang : INTEGER OF ARRAY[0..10];

D. Var mang : ARRAY(0..10) : INTEGER;

Hiển thị đáp án

Trả lời:

Cấu trúc khai báo mảng trực tiếp:

Var <tên biến mảng> : array [kiểu chỉ số] of <kiểu phần tử>;

Trong đó:

+  Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1..n2 với n1, n2 là các hằng hoặc biểu thức nguyên xác định chỉ số đầu và cuối (n1 ≤ n2).

+ Kiểu phần tử là kiểu của các phần tử trong mảng.

Đáp án: A

Câu 7: Cho khai báo mảng và đoạn chương trình như sau:

Var a : array[0..50] of real ;

k := 0 ;

for i := 1 to 50 do

if a[i] > a[k] then k := i ;

Đoạn chương trình trên thực hiện công việc gì dưới đây?

A. Tìm phần tử nhỏ nhất trong mảng;

B. Tìm phần tử lớn nhất trong mảng;

C. Tìm chỉ số của phần tử lớn nhất trong mảng

D. Tìm chỉ số của phần tử nhỏ nhất trong mảng

Hiển thị đáp án

Trả lời: ý nghĩa của câu lệnh

Var a : array[0..50] of real ; {khai báo mảng a}

k := 0 ; {gán chỉ số 0 cho k}

for i := 1 to 50 do { vòng lặp chạy từ 1 đến 50}

if a[i] > a[k] then k := i ; { kiểm tra từ phần tử thứ 2 đến phần tử 50 so sánh với phần tử đầu và đưa ra chỉ số lớn nhât}

Đáp án:C

Câu 8: Cho khai báo mảng như sau: Var a : array[0..10] of integer ;

Phương án nào dưới đây chỉ phần tử thứ 10 của mảng?

A. a[10];

B. a(10);

C. a[9];

D. a(9);

Hiển thị đáp án

Trả lời: Tham chiếu (truy cập) đến một phần tử bất kì trong mảng.

Cú pháp: Tên mảng[chỉ số];

Đáp án: A

Quảng cáo

Câu 9: Khai báo mảng hai chiều nào sau đây là sai?

A. var m : array[1..10] of array[0..9] of  integer;

B. var m : array[1..20,1..40] of real;

C. var m : array[1..9;1..9] of  integer;

D. var m : array[0..10,0..10] of char;

Hiển thị đáp án

Trả lời: Khai báo mảng hai chiều:

+ Cách 1: trực tiếp

Var <tên biến mảng> : array [kiểu chỉ số hàng, kiểu chỉ số cột] of < kiểu phần tử>;

+ Cách 2: gián tiếp

Type <tên kiểu mảng> : array [kiểu chỉ số hàng, kiểu chỉ số cột] of < kiểu phần tử>;

Var <tên biến mảng>: < tên kiểu mảng>;

Đáp án: B

Câu 10: Mảng là kiểu dữ liệu biểu diễn một dãy các phần tử thuận tiện cho:

A. chèn thêm phần tử

B. truy cập đến phần tử bất kì

C. xóa một phần tử

D. chèn thêm phần tử và xóa phần tử

Hiển thị đáp án

Trả lời: Mảng là kiểu dữ liệu biểu diễn một dãy các phần tử thuận tiện cho truy cập đến phần tử bất kì. Theo cú pháp Tên mảng[chỉ số];

Đáp án: B

Xem thêm các bài Câu hỏi trắc nghiệm Tin học 11 chọn lọc, có đáp án khác:

Giới thiệu kênh Youtube VietJack

  • Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào
    Hỏi bài tập trên ứng dụng, thầy cô VietJack trả lời miễn phí!

Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

Nhóm học tập facebook miễn phí cho teen 2k5: fb.com/groups/hoctap2k5/

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Nếu thấy hay, hãy động viên và chia sẻ nhé! Các bình luận không phù hợp với nội quy bình luận trang web sẽ bị cấm bình luận vĩnh viễn.

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG. Hôm nay chúng ta sẽ cùng tìm hiểu về Class trong C#.

Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Class trong C# là gì?
  • Khai báo, khởi tạo và sử dụng class trong C#.
  • Phương thức khởi tạo, phương thức huỷ bỏ.
  • So sánh giữa Struct Class.

Class trong C# là gì?

Class trong C# chính là cách thể hiện khái niệm về lớp trong lập trình hướng đối tượng.

Một class trong C# có các thành phần như:

  • Thuộc tính: là các thành phần dữ liệu hay còn gọi là các biến.
  • Phương thức: là các hàm thành phần thể hiện các hành vi của một đối tượng thuộc lớp.
  • Phương thức khởi tạo.
  • Phương thức huỷ bỏ.

Class trong C# thực chất là một kiểu dữ liệu mới do người dùng tự định nghĩa.

Khai báo, khởi tạo và sử dụng class trong C#

Cú pháp:

class <tên lớp>

{

             <Phạm vi truy cập> <Các thành phần của lớp>;

}

Trong đó:

  •  <tên lớp> là tên do người dùng đặt và tuân theo quy tắc đặt tên đã trình bày trong bài BIẾN TRONG C#.
  •  <Phạm vi truy cập> bao gồm các từ khoá như public, protected, private, static, . . . sẽ được trình bày trong bài CÁC LOẠI PHẠM VI TRUY CẬP TRONG C#.
  •  <Các thành phần của lớp> bao gồm các biến, phương thức của lớp.
    • Các biến được khai báo như khai báo biến đã học trong bài BIẾN TRONG C#.
    • Các phương thức (hàm) được khai báo như khai báo hàm đã học trong bài HÀM TRONG C#.

Ví dụ:

class Animal     {         public double Weight;         public double Height;         public void Run()         {             Console.WriteLine(" Animal is running. . .");         }     }
  • Với khai báo trên ta đã có 1 kiểu dữ liệu mới tên là Animal. Và ta hoàn toàn có thể khai báo biến và sử dụng nó.
  • Từ khoá public là chỉ phạm vi truy cập của các thành phần bên trong class (sẽ được trình bày chi tiết trong bài CÁC LOẠI PHẠM VI TRUY CẬP TRONG C#). Hiện tại bạn chỉ cần hiểu ghi public là để khi sử dụng ta có thể truy cập các thành phần này.
  • Lớp Animal có 2 thuộc tính là Weight, Height và 1 phương thức là Run. Như vậy mọi đối tượng thuộc lớp này đều có 3 thành phần trên.
  • Nếu để ý các bạn sẽ nhận ra rằng mọi phương thức có sẵn trong C# đều được nằm trong lớp nào đó (khác hoàn toàn với phong cách lập trình hướng thủ tục – phương thức độc lập với dữ liệu). Điều này có thể giải thích là do C# là ngôn ngữ thuần hướng đối tượng nên mọi thứ bên trong nó đều theo phong cách lập trình hương đối tượng.

Khởi tạo:

Bạn có thể khởi tạo 1 đối tượng thuộc lớp thông qua toán tử new.

 Ví dụ:

Animal Dog = new Animal();

Class là kiểu dữ liệu tham chiếu vì thế đối tượng dữ liệu thực sự được lưu trên heap.

Sử dụng:

Về cơ bản thì class được sử dụng tương tự như struct. Các bạn có thể tham khảo ví dụ ở bài STRUCT TRONG C#.

Để gọi đến các thuộc tính bên trong lớp:

<tên đối tượng>. <tên thuộc tính>;

Để gọi đến các phương thức bên trong lớp:

<tên đối tượng> . <tên phương thức> (<danh sách tham số nếu có>);

Ở đây mình muốn tập trung vào cách bạn khai báo và sử dụng phương thức bên trong lớp như thế nào. Xét bài toán đơn giản sau: Khởi tạo các đối tượng thuộc lớp Animal lần lượt gọi phương thức in ra chiều cao và cân nặng của các loài động vật.

class Animal     {         public double Weight;         public double Height;         public void Info()         {             /*                 Các phương thức bên trong lớp có thể gọi đến các thành phần khác (bao gồm thuộc tính và phương thức) trong lớp đó.                 Giá trị của các thuộc tính này có thể được khởi tạo đâu đó trong lớp hoặc từ bên ngoài truyền vào.              */             Console.WriteLine(" Height: " + Height + " Weight: " + Weight);         }     }

Trong hàm main:

/*                Khởi tạo 2 đối tượng thuộc lớp Animal là:                 + Dog có chiều cao 50cm và cân nặng 2kg.                 + Cat có chiều cao 30cm và cân nặng 1kg. */             Animal Dog = new Animal();             Dog.Weight = 2; // gán giá trị cho các thuộc tính của đối tượng             Dog.Height = 50;             Animal Cat = new Animal();             Cat.Weight = 1;             Cat.Height = 30;             Dog.Info(); // gọi phương thức của đối tượng             Cat.Info();

Kết quả khi chạy đoạn code trên:

Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

  • Bạn có thể thấy tuỳ vào giá trị của từng đối tượng mà phương thức Info in ra đúng giá trị tương ứng của đối tượng đó.

Phương thức khởi tạo, phương thức huỷ bỏ

Trong thế giới thực khi 1 sự vật nào đó được sinh ra thì nó sẽ mang sẵn trong mình những đặc điểm nhất định và mọi sự vật cùng loài với nó đều như vậy.

Vì lập trình hướng đối tượng là phương pháp giúp ánh xạ thế giới thực vào thế giới lập trình một cách dễ dàng nên từ đó đã xuất hiện 2 khái niệm phương thức khởi tạophương thức huỷ bỏ để thể hiện ý trên.

Phương thức khởi tạo

Phương thức khởi tạo (Constructor) là những phương thức đặc biệt được gọi đến ngay khi khởi tạo 1 đối tượng nào đó.

Đặc điểm

  • Có tên trùng với tên lớp.
  • Không có kiểu trả về.
  • Được tự động gọi khi 1 đối tượng thuộc lớp được khởi tạo.
  • Nếu như bạn không khai báo bất kỳ phương thức khởi tạo nào thì hệ thống sẽ tự tạo ra phương thức khởi tạo mặc định không đối số và không có nội dung gì.
  • Có thể có nhiều constructor bên trong 1 lớp.

Có 2 loại phương thức khởi tạo:

  • Phương thức khởi tạo không đối số:
    • Là phương thức khởi tạo không có bất kỳ tham số truyền vào nào.
    • Thường dùng để khởi tạo các giá trị mặc định cho các thuộc tính bên trong class khi khởi tạo đối tượng (giá trị mặc định này do người lập trình quyết định).
  • Phương thức khởi tạo có đối số:
    • Là phương thức khởi tạo có tham số truyền vào. Và khi khởi tạo đối tượng để phương thức này được gọi ta cần truyền đầy đủ các tham số.
    • Thường dùng để khởi tạo các giá trị cho các thuộc thuộc tính bên trong class khi khởi tạo đối tượng (các giá trị này do người khởi tạo đối tượng truyền vào).

Ví dụ

Ta có khai báo lớp như sau:

class Cat     {         public double Weight;         public double Height;         /*             Constructor không có tham số          */         public Cat()         {             Weight = 800;             Height = 10;         }         /*             Constructor có tham số          */         public Cat(int w, int h)         {             Weight = w;             Height = h;         }         public void Info()         {             Console.WriteLine(" Height: " + Height + " Weight: " + Weight);         }     }

Trong hàm main:

/*                 Để ý khi bạn new Cat bạn không truyền tham số vào thì constructor mặc định (constructor không tham số)              sẽ tự động được gọi để khởi tạo các giá trị mặc định cho các thuộc tính của đối tượng BlackCat. */             Cat BlackCat = new Cat();             BlackCat.Info(); // In ra thông tin Weight, Height có thực sự được khởi tạo giá trị chưa.             /*                 Lần này ta khởi tạo đối tượng và có truyền 2 tham số như vậy constructor có tham số sẽ được gọi.                 Như vậy các thuộc tính Weight, Height sẽ không mang giá trị mặc định nữa mà sẽ được gán theo giá trị mà người dùng              truyền vào.              */             Cat WhiteCat = new Cat(1200, 30);             WhiteCat.Info(); // In ra thông tin Weight, Height để xem có theo mong muốn chưa.

Kết quả khi chạy đoạn code trên:

Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

Lưu ý

Khi 1 đối tượng được khởi tạo chỉ có 1 constructor phù hợp nhất được gọi cho dù trong lớp có nhiều constructor.

Qua ví dụ bạn có thể thấy cách ta truyền tham số khi khởi tạo đối tượng sẽ gian tiếp ám chỉ constructor nào được gọi vì thế bạn cần truyền đúngtruyền đủ các tham số để C# có thể gọi đúng constructor như ý muốn.

Các tham số của constructor thường sẽ mang các giá trị tương ứng cho các thuộc tính bên trong lớp vì thế bạn nên:

  •  Khai báo chúng có cùng kiểu dữ liệu với thuộc tính tương ứng.
  •  Đặt tên chúng gợi nhớ đến thuộc tính tương ứng để tránh nhầm lẫn.
  •  Không nên khai báo dư tham số sẽ dẫn đến khó hiểu cho người dùng.

Phương thức huỷ bỏ

Phương thức huỷ bỏ (destructor) là phương thức đặc biệt được gọi đến trước khi 1 đối tượng bị thu hồi.

Đặc điểm

  • Có tên trùng với tên lớp nhưng để phân biệt với constructor thì ta thêm dấu “~” vào trước tên lớp.
  • Không có kiểu trả về.
  • Được tự động gọi khi 1 đối tượng thuộc lớp kết thúc “vòng đời” của nó thông qua bộ thu dọn rác tự động GC (Garbage Collection).
  • Nếu bạn không khai báo destructor thì C# sẽ tự động tạo ra 1 destructor mặc định và không có nội dung gì.
  • Chỉ có 1 destructor duy nhất trong 1 lớp.

Vì bộ GC của C# có cơ chế tự động phát hiện đối tượng không còn được sử dụng nữa và thực hiện thu hồi vùng nhớ của nó nên bạn không cần phải viết tường minh việc huỷ vùng nhớ của nó. Việc bạn có thể làm viết những thứ bạn muốn làm khi đối tượng bị huỷ vào đây thôi!

So sánh giữa Struct và Class

Nhìn chung struct class có khá nhiều điểm chung nhưng class có phần mạnh hơn. Hãy còn xem tại sao class lại mạnh hơn và mạnh hơn ở điểm nào nhé!

Khai báo biến mảng Class để quản lý 50 học sinh cho chương trình như thế nào

Ngoài ra nếu 1 class là tham số truyền vào thì mọi thay đổi bên trong hàm sẽ tự động cập nhật ra bên ngoài cho dù không có từ khoá out hoặc ref (xem lại bài TỪ KHÓA REF VÀ OUT) còn struct thì không.

Kết luận

Nội dung bài này giúp các bạn nắm được:

  • Class trong C# là gì?
  • Khai báo, khởi tạo và sử dụng class trong C#.
  • Phương thức khởi tạo, phương thức huỷ bỏ.
  • So sánh giữa Struct Class.

Bài sau chúng ta sẽ tìm hiểu về CÁC LOẠI PHẠM VI TRUY CẬP TRONG C#.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.