Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
394,93 KB
Nội dung
17/11/2015 CƠ SỞ KỸ THUẬT LẬP TRÌNH: Mảng một chiều VOER CƠ SỞ KỸ THUẬT LẬP TRÌNH GIÁO TRÌNH SCIENCE AND TECHNOLOGY Mảng một chiều Tác giả: Khoa CNTT ĐHSP KT Hưng n Thích Chia sẻ Tweet 0 Chúng ta có thể khai báo mảng một chiều trong C# với cú pháp theo sau: [] ; Ví dụ ta có khai báo như sau: int [] a; float [] b; Cặp dấu ngoặc vng ([]) báo cho trình biên dịch biết rằng chúng ta đang khai báo một mảng. Kiểu dữ liệu là kiểu của các thành phần chứa bên trong mảng. Trong ví dụ bên trên a được khai báo là mảng số ngun, b là mảng các số thực Chúng ta tạo thể hiện của mảng bằng cách sử dụng từ khóa new như sau: a = new int[6]; b=new double[20]; Khai báo này máy sẽ thiết lập bên trong bộ nhớ cho mảng a một dãy sáu vùng nhớ liên tiếp, mỗi vùng nhớ chứa được một số ngun kiểu int tức là mỗi vùng nhớ gồm 4 byte liên tiếp, vậy tổng máy cấp phát cho mảng a là 24 byte liên tiếp . Mảng b máy sẽ cấp phát một dãy 20 vùng nhớ liên tiếp, mỗi vùng nhớ chứa được một số thực kiểu double tức là mỗi vùng nhớ gồm 8 byte liên tiếp, vậy tổng máy cấp phát cho mảng b là 120 byte liên tiếp Ở đây chúng ta cần phân biệt giữa hai thành phần bản thân mảng và các thành phần trong mảng. Như chúng ta đã biết trong C# mảng là một kiểu dữ liệu tham chiếu nên bản thân mảng trong ví dụ trên là a và các thành phần trong mảng là sáu số ngun, thế thì bản thân mảng a được cấp phát trong stack cịn các thành phần của mảng được cấp phát trong heap, bản thân mảng a chỉ chứa địa chỉ của vùng nhớ cấp cho các thành phần của mảng trong heap mà thơi. Ta có thể minh hoạ như sau: http://voer.edu.vn/c/mangmotchieu/79497160/1c990718 1/17 17/11/2015 CƠ SỞ KỸ THUẬT LẬP TRÌNH: Mảng một chiều VOER Ta có thể vừa khai báo mảng và vừa cấp phát bộ nhớ cho các phần tử của mảng như sau: [] =new [kích thước]; Ví dụ: int []a=new int[40]; double []b=new double[10]; Ta có thể khai báo mảng và đồng thời khởi tạo cho các phần tử của mảng như sau: Chúng ta có thể khởi tạo nội dung của một mảng ngay lúc tạo thể hiện của mảng bằng cách đặt những giá trị bên trong dấu ngoặc ({}). C# cung cấp hai cú pháp để khởi tạo các thành phần của mảng, một cú pháp dài và một cú pháp ngắn: int[] myIntArray1 = new int[5] { 2, 4, 6, 8, 10}; int[] myIntArray2 = { 2, 4, 6, 8, 10}; Khơng có sự khác biệt giữa hai cú pháp trên, và hầu hết các chương trình đều sử dụng cú pháp ngắn hơn do sự tự nhiên và lười đánh nhiều lệnh của người lập trình Khi khai báo mảng nếu ta khơng khởi đầu giá trị cho chúng thì các phần tử của mảng tự động được khởi tạo một giá trị ngầm định theo bảng thống kê sau: http://voer.edu.vn/c/mangmotchieu/79497160/1c990718 2/17 17/11/2015 CƠ SỞ KỸ THUẬT LẬP TRÌNH: Mảng một chiều VOER Ví dụ: Khi ta khia báo mảng int []a=new int[5]; Ta sẽ thu được mảng a gồm 5 phần tử và mỗi phần tử của mảng được khởi đầu giá trị là 0 Mảng trong ngơn ngữ C# có một vài sự khác biệt so với mảng trong ngơn ngữ C++ và một số ngơn ngữ khác, bởi vì chúng là những đối tượng. Điều này sẽ cung cấp cho mảng sử dụng các phương thức và những thuộc tính Ngơn ngữ C# cung cấp cú pháp chuẩn cho việc khai báo những đối tượng Array. Tuy nhiên, cái thật sự được tạo ra là đối tượng của kiểu System.Array. Mảng trong ngơn ngữ C# kết hợp cú pháp khai báo mảng theo kiểu ngơn ngữ C và kết hợp với định nghĩa lớp do đó thể hiện của mảng có thể truy cập những phương thức thuộc tính của System.Array Một số các thuộc tính và phương thức của lớp System.Array http://voer.edu.vn/c/mangmotchieu/79497160/1c990718 3/17 17/11/2015 http://voer.edu.vn/c/mangmotchieu/79497160/1c990718 CƠ SỞ KỸ THUẬT LẬP TRÌNH: Mảng một chiều VOER 4/17 17/11/2015 CƠ SỞ KỸ THUẬT LẬP TRÌNH: Mảng một chiều VOER Truy nhập vào các phần tử của mảng: Để truy nhập vào các phần tử của mảng chúng ta truy nhập thơng qua tên mảng và chỉ số tương ứng. Đặc biệt trong C# phần tử đầu tien của mảng có chỉ số la 0. Phần tử cuối cùng của mảng có chỉ số là Tên_Mảng.Length1. Nhớ rằng chỉ số của mảng phải ở trong giới hạn cho phép. Ta có thể truy nhập vào các phần tử của mảng thơng qua cơng thức tổng qt sau: Tên_Mảng[chỉ số] Ví dụ: int []=new int[5]; a[0] // Truy nhập vào phần tử đầu tiên của mảng a[i] // Truy nhập vào phần tử thứ i của mảng i ∈[0, Tên_Mảng.Length1] Một số ví dụ áp dụng Ví dụ 1: Nhập vào một dãy số ngun sau đó thực hiện các u cầu sau: a) Tính tổng các phần tử của mảng chia hết cho 3 b) Tìm giá trị lớn nhất trong số các phần tử của mảng c) Nhập vào từ bàn phím một số ngun x và cho biết số ngun này xuất hiên trong mảng bao nhiêu lần d) Rút gọn mảng(nghĩa là mỗi phần tử chỉ đcượ xuất hiện một lần) using System; class VD { static int[] a; static int n; static void Nhap() { int i; Console.Write("Nhap so phan tu cua mang n="); n = int.Parse(Console.ReadLine()); a = new int[n]; Console.WriteLine("Hay nhap cac phan tu cho mang"); for (i = 0; i