Bài giảng Lập trình C# 1 - Chương 4: Array giới thiệu tới các bạn những nội dung về mảng, câu lệnh lặp foreach, mảng đa chiều và một số câu hỏi. Đây là tài liệu hữu ích với các bạn chuyên ngành Công nghệ thông tin và những ngành có liên quan.
Trang 1Ch ng 4
Array
i dung
1 M ng
2 Câu l nh l p foreach
3 M ng a chi u
4 Câu h i
1 M ng
• Khai báo m ng
• Giá tr m c nh
• Truy c p các thành ph n trong m ng
• Kh i t o thành ph n trong m ng
• d ng t khóa params
• Ph ng th c và thu c tính c b n
ng là gì?
• ng là m t t p h p có th t c a nh ng i t ng
• t c các i t ng này cùng m t ki u
• Ngôn ng C# cung c p cú pháp chu n cho vi c khai báo nh ng i t ng ng
Tuy nhiên, cái th t s c t o ra là i t ng a
ki u System.Array
Trang 2Mô d ng m t m ng
• Khai báo
• o th hi n (xác nh s ph n t )
• Gán giá tr (giá tr m c nh; Giá tr c th )
1 Khai báo
2 T o th hi n + Gán giá tr m c nh
3 Gán giá tr c th
Khai báo + Gán giá
tr c th
Khai báo + T o
th hi n + Gán giá
tr c th
d ng m t m ng
int[] myIntArray;
myIntArray = new int[6];
// Ch ng trình
1 Khai báo
2 T o th hi n + Gán giá tr m c nh
3 Gán giá tr c th
d ng m t m ng
Khai báo + Gán giá
tr c th
Trang 3d ng m t m ng
int[] myIntArray = new int[5] { 2, 4, 6, 8, 10};
Khai báo + T o
th hi n + Gán giá
tr c th
Truy p các ph n
namespace mang_1 {
class Program {
static void Main(string[] args) {
int[] mangso1;
mangso1 = new int[5] {2, 5, 7, 9, 1};
for (int i = 1; i < 6; i++) {
System.Console.WriteLine(mangso1[i]);
} System.Console.ReadLine();
}
Tìm ki m ph n t
namespace mang_timpt {
class Program { static void Main(string[] args) {
int gt, vitri, sotim;
sotim = 5;
vitri = 0;
int[] mang = new int[5] { 3, 5, 6, 5, 8};
bool kq = false;
for (int i = 0; i < 5; i++) {
gt = mang[i];
if (gt==sotim) { kq = true;
vitri = i; } }
if ( kq==true ) { System.Console.WriteLine("Co phan tu " + sotim + " trong mang");
System.Console.WriteLine("Vi tri "+ sotim+ " trong mang la "+vitri); } else
{ System.Console.WriteLine("Khong co phan tu " + sotim + " trong mang"); } System.Console.ReadLine();
Trang 4Ví d
o m ng ch a m c a sinh viên v i các yêu c u:
• ph n t do ng i nh p quy t nh
• m ng v i m i ph n t do ng i nh p
• p x p m ng theo m t nh n l n
• Xu t ra k t qu
1 4 5 7 8 9 8
1 4 5 7 8 9 8
1 T o m t ph ng th c :
mà không c n thi t ph i t o m t m ng
2 T i Main() :
Ví d
namespace mang_params {
class Program {
public void DisplayVals(params int[] intVals) {
foreach (int i in intVals) {
Console.WriteLine("Hi n th {0}", i);
} Console.ReadLine();
}
static void Main(string[] args) {
Program m = new Program();
m.DisplayVals(6, 7, 8, 9);
} }
int[] mang2=new int[5]{3, 4, 6, 2, 8};
m.DisplayVals(mang2);
Trang 5Ph ng th c và thu c tính
Array.Clear(mang, n, m);
Array.Copy(mang, mang1, n);
Array.IndexOf(mang, "12");
Array.LastIndexOf(mang,
"12");
Array.Sort(mang);
Array.Reverse(mang);
mang Length;
mang Rank;
• <tên m ng>.<Sum()/Max()/Min()/Average()>;
• <tên m ng>.Clear();
• <tên m ng>.Count();
• <tên m ng>.First();
• <tên m ng>.Last();
namespace mangnc {
public class Tester {
public static void PrintArray(object[] mArray) {
foreach( object obj in mArray) {
Console.WriteLine("Hien thi "+ obj);
} Console.WriteLine('\n');
} static void Main() {
string[] m1Array = {"Ban", "la", "Nam", "Nu"};
PrintArray( m1Array );
Array.Reverse( m1Array );
PrintArray( m1Array );
string[] m2Array = {"Chung", "toi", "la", "nhung", "nguoi", "lap", "trinh", "may", "tinh"};
PrintArray( m2Array );
Array.Sort( m2Array );
PrintArray( m2Array );
Console.ReadLine();
Trang 62 Câu l nh l p foreach
• Câu l nh l p foreach cho phép chúng ta l p qua t t c các m c trong m t m ng hay trong m t t p h p
foreach (<ki ud li uthànhph n> <têntruyc p> in <m ng/t ph p>)
{ // th c hi n thông qua <tên truy c p> t ng ng v i // t ng m c trong m ng hay t p h p
}
int[] mang = new int[3] {3, 5, 7};
foreach (intiin mang) {
System.Console.WriteLine("Xuat phan tu mang {0}", i.ToString(),'\t');
}
i.ToString() : Chuy n s qua chu i
‘\t’ : tab ngang
3 M ng a chi u
• ng m t chi u trong ó các thành ph n c a nó ch
n gi n là các i t ng ki u giá tr hay i t ng tham chi u
• ng hai chi u c t ch c thành các dòngvà t
• ng a chi u:
– Là m ng có t ch c r t ph c t p
C# h tr hai ki u
• ng a chi u cùng kích th c:
i nhau
• ng a chi u không cùng kích th c:
Trang 7ng a chi u cùng kích th c
• Còn g i là m ng hình ch nh t:
• Khai báo :
<ki u d li u>[,] <tên m ng>;
o m ng
const int rows= 4;
const int columns = 3;
int [,] mangso1 = new int[rows, columns];
int[] mangso2 = new int[rows];
int[] mangso3 = new int[columns];
kh i t o các thành ph n trong m ng
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
mangso[i,j] = i+j;
} }
xu t n i dung ra màn hình
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
Console.WriteLine(“mangso[{0},{1}] = {2}”,i, j, mangso[i, j]);
} }
Trang 8ng a chi u có kích khác nhau
• Hình d ng không ph i hình ch nh t vì các chi u c a chúng không u nhau
• Khai báo :
– Sau ó chúng ta kh i t o giá tr các thành ph n trong nh ng
ng bên trong
Khai báo
const int rows = 4; // khai báo m ng t i a b n dòng int[][] mArray = new int[rows][];
mArray[0] = new int[5]; // dòng u tiên có 5 ph n t mArray[1] = new int[2]; // dòng th hai có 2 ph n t mArray[2] = new int[3]; // dòng th ba có 3 ph n t mArray[3] = new int[5]; // dòng cu i cùng có 5 ph n t
Kh i t o m t vài giá tr
mArray[0][3] = 15;
mArray[1][1] = 12;
mArray[2][1] = 9;
mArray[2][2] = 99;
mArray[3][0] = 10;
mArray[3][1] = 11;
mArray[3][2] = 12;
mArray[3][3] = 13;
mArray[3][4] = 14;
Xu t k t qu
for(int i = 0; i < 5; i++) {
Console.WriteLine(“mArray[0][{0}] = {1}”, i, m[0][i]);
} for(int i = 0; i < 2; i++) {
Console.WriteLine(“mArray[1][{0}] = {1}”, i, mArray[1][i]);
}
Trang 94 Câu h i
• u phân bi t gi a m ng và các thành ph n bên trong m t m ng?
• khoá params c s d ng làm gì?
• Ý ngh a c a l nh l p foreach? L nh này c s d ng
i ki u d li u nào?
• Hãy cho bi t s khác nhau gi a hai cách g i Arr[i][j]
và Arr[i, j]?
• Làm th nào bi t kích th c c a m t m ng?