Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
561,5 KB
Nội dung
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 5 Mảng- NgọaiLệ Nội dung Khai báo mảng 1 chiều Mảng nhiều chiều Mảng răng cưa Mảng • Ưu điểm - Tổ chức quản lý tốt - Cùng 1 kiểu (!!!) - Thể hiện cấu trúc dữ liệu Danh sách đặc : duyệt, thêm, chèn, xóa tìm, sắp xếp nối ghép danh sách trộn Nên sử dụng các CTDL do .NET cung cấp Cú pháp khai báo mảng Khai báo mảng 1 chiều <kiểu dữ liệu> [ ] <tên mảng> ; Lưu ý - Cú pháp khác so với C/C++ - Chỉ là khai báo, chứ chưa cấp phát vùng nhớ (chưa khởi tạo) Khởi tạo mảng Nhắc lại -Có 2 trường hợp khai báo biến +Khai báo trong phương thức +Khai báo bên ngòai phương thức (nhưng nằm trong 1 lớp) -Trong C# : khai báo và khởi tạo biến ???? -Cho phép sử dụng giá trị biểu thức để mô tả kích thước mảng static int M=10; int [] xxx= new int [2*M]; Khai báo bên trong 1 ph/thức Cú pháp khởi tạo <tên mảng> = new <tên kiểu dữ liệu>[sốpt]; Có thể kết hợp khai báo lẫn khởi tạo Ví dụ float [ ] f_array = new float[10]; int [] i = new int[]{2,4,6,8}; Khai báo riêng và sẽ khởi tạo trước khi sử dụng sring[] list; ……………… list = new string[3]; Khai báo bên ngòai ph.thức Do khai báo bên ngòai ph/thức nhưng nằm bên trong 1 lớp xem như thành phần 1 lớp class ABC { string [ ] ds ; …………. } Do vậy Khai báo bên ngòai và việc khởi tạo có thể trực tiếp hay thực hiện trong 1 phương thức nào đó Ví dụ public class Class1 { int[] x_arr; float[] fx = new float[3] {2.3F, 56.2F, 6.78F } ; public Class1() { float [] f_arr= new float[10]; int [] i_arr = new int[]{2,4,6,8}; string[] list; list = new string[3]; x_arr = new int[10]; for (int i=0;i<x_arr.Length;i++) x_arr[i]=i*4; } } Xử lý mảng Thường sử dụng vòng lặp để xứ lý mảng do while while … for và foreach Bài tập Cho khai báo sau const int N=100; int [ ] array = new int [N]; …………………. Yêu cầu : 1- In ra các phần tử trong mảng array 2- In ra các phần tử ở vị trí chẵn trong mảng array 3- Có bao nhiêu phần tử trong mảng array có giá trị lớn hơn hay bằng X (X là 1 số kiểu int) Mảng nhiều chiều Cho phép tạo mảng nhiều chiều Cú pháp <kiểu dữ liệu> [ , … ] <tên mảng> ; Ví dụ float [ , ] this year; int [ , , ] vacumm; [...]... khi sử dụng mảng- Sử dụng thuộc tính Length của mảng thay vì phải nắm số phần tử trong mảng- Cấu trúc lặp foreach hữu hiệu hơn là dùng for - Lấy số chiều 1 mảng : sử dụng thuộc tính rank Lớp Array, ArrayList Làm quen với cấu trúcdữ liệu - Lớp trừu tượng Array - Lớp ArrayList : mô phỏng danh sách đặc và dsliên kết - Lớp Queue : mô phỏng hàng đợi - Lớp Stack : mô phỏng ngăn xếp (chồng) - Lớp Hashtable... trong mảng thisyear thỏa điều kiện chứa 1 số lẻ ??? (Dùng foreach) Tam giác Pascal 1 1 1 1 1 1 2 3 4 5 1 3 6 10 1 4 10 1 5 1 1- Viết chương trình in ra hàng thứ N của tgiác Pascal Mảng răng cưa (jagged array) Mảng răng cưa : là mảng mà số phần tử trong mỗi chiều có thể khác nhau Ví dụ khai báo mảng răng cưa có 2 chiều [ ] [ ] ; Nhận xét : là 1 mảng, mỗi phần tử trong mảng. ..Yêu cầu - Thử khai báo và khởi tạo mảng thisyear chứa số thực có chiều thứ nhất là 12 phần tử, chiều thứ 2 có 31 phần tử - Thử khai báo mảng soluong chứa các số thực, mảng có 3 chiều, chiều thứ nhất có 4 phần tử, chiều thứ 2 có 10 phần tử và chiều thứ 3 có 6 phần tử Yêu cầu - Đếm và in ra số phần tử trong mảng soluong chứa giá trị là 1 số chẵn ??? (Dùng for, while hay do ) - In ra vị trí và... lại là 1 mảng khác Mảng có 2 chiều, chiều thứ nhất có 2 phần tử Phần tử thứ 1 chiều thứ nhất có 2 phần tử Phần tử thứ 2 chiều thứ nhất có 5 phần tử Yêu cầu : Thứ khai báo và khởi tạo int [ ] [ ] list ; ……… list = new int[ 2][ ] ; list[0] = new int [2] ; list [1] = new int [5] ; Yêu cầu Thực hiện khai báo,khởi tạo và gán dữ liệu là các số nguyên theo như hình vẽ vào các phần tử trong mảng (tên mảng là... "integer array:" ); PrintValues( myIntArray ); Console.Write( "Object array: " );PrintValues( myObjArray ); Array.Copy( myObjArray, myObjArray.GetUpperBound(0) 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 ); Console.WriteLine( "\nAfter copying the last two elements of the Object array to the integer array," ); Console.Write( "integer array:" ); PrintValues( myIntArray ); Console.Write( "Object array:... void PrintValues( int[] myArr ) { foreach ( int i in myArr ) Console.Write( "\t{0}", i ); Console.WriteLine(); } Ví dụ: SamplesArray2.cs public static void Main() { // Creates and initializes a new three-dimensional Array of type Int32 Array myArr = Array.CreateInstance( typeof(Int32), 2, 3, 4 ); for (int i=myArr.GetLowerBound(0);i