Giáo trình Lập trình cơ bản (Phần 1)
Tổng quan về .NET Framework
Microsoft .NET Framework là một thành phần có thể được cài thêm hoặc đã có
sẵn trong các hệ điều hành Windows. Nó cung cấp những giải pháp đã được lập trình
sẵn cho những yêu cầu thông thường của chương trình quản lý việc thực thi các
chương trình viết trên framework, cần phải cài framework để có thể chạy các chương
trình được phát triển bằng các ngôn ngữ trong họ .NET. .NET Framework do
Microsoft đưa ra và được sử dụng trong hầu hết các ứng dụng viết trên nền Windows.
Những giải pháp được lập trình sẵn hình thành nên một thư viện các lớp của
Framework, được sử dụng trong nhiều lĩnh vực của lập trình như: giao diện người
dùng, truy cập dữ liệu, kết nối cơ sở dữ liệu, mã hoá, phát triển những ứng dụng
website, các giải thuật số học và giao tiếp mạng. Thư viện lớp của Framework được
lập trình viên sử dụng, kết hợp với chương trình của chính mình để tạo nên các ứng
dụng.
Kiến trúc của .NET Framework
Microsoft tổ chức .NET Framework thành nhiều tầng, quá trình biên dịch và
thực thi một chương trình viết trên nền .NET Framework được thực hiện từng bước từ
phần mã nguồn đến phần mã máy. Mã nguồn của chương trình sau khi biên dịch sẽ
thành ngôn ngữ trung gian (Common Intermediate Language - CIL). Ngôn ngữ này
biên dịch phần lớn các thư viện được viết trên nền .NET thành các thư viện liên kết
động (Dynamic Linked Library - DLL). Với giải pháp này, các ngôn ngữ được .NET
Framework hỗ trợ sẽ dễ dàng sử dụng lại lẫn nhau. Một chương trình được viết bằng
ngôn ngữ C# có thể sử dụng các lớp, các thuộc tính đã được viết trước đó bằng ngôn
ngữ VB.NET hoặc J#. Tầng dưới cùng của cấu trúc phân tầng của .NET Framework là
Common Language Runtime – còn được gọi là CLR. Đây là thành phần quan trọng
nhất của .NET Framework. Tầng này thực hiện biên dịch mã của CIL thành mã máy
và thực thi.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Lập trình cơ bản (Phần 1)
uble min = Khoangcach(a[0],diem); for (i = 1; i < n; i++) if(min>Khoangcach(a[i],diem))min = Khoangcach(a[i],diem); Console.Write("Cac diem gan diem (1,2) la: "); 102 Tập bài giảng Lập trình cơ bản for(i = 0; i < n; i++) if(min==Khoangcach(a[i],diem))Console.Write(a[i].ToString()); Console.ReadLine(); } } } Kết quả chƣơng trình: Hình 3.20: Kết quả chương trình ví dụ 3.20. Tạo một thể hiện của cấu trúc bằng cách sử dụng từ khóa new trong câu lệnh gán, nhƣ khi tạo một đối tƣợng của lớp. Nhƣ trong ví dụ 3.20, lớp Program tạo một thể hiện của Diem nhƣ sau: Diemdiem = new Diem(1, 2); Ở đây một thể hiện mới tên là diem và nó đƣợc truyền hai giá trị là 1 và 2. Các thức truy nhập vào thuộc tính hay phƣơng thức cũng tƣơng tự nhƣ với lớp. Bài tập Bài 3.1 Lập chƣơng trình thực hiện các công việc sau: 1. Nhập và hiển thị mảng số thực gồm n phần tử (n nguyên dƣơng nhập từ bàn phím) 2. Hiển thị mảng theo thứ tự đã sắp xếp tăng dần. 3. Nhập số nguyên x từ bàn phím. Kiểm tra xem trong mảng có phần tử nào bằng x không? 4. Tìm phần tử có giá trị nhỏ nhất trong mảng. 5. Tính trung bình cộng các phần tử dƣơng trong mảng. Hƣớng dẫn thực hiện Bƣớc 1: Tạo ứng dung Console và đặt tên là Bai3_1 Bƣớc 2: Viết hàm nhập và hiển thị mảng static void Nhapmang(ref float[] a, ref int n) { bool kt; 103 Tập bài giảng Lập trình cơ bản do { Console.Write("Nhap kich thuoc mang n = "); kt = int.TryParse(Console.ReadLine(), out n); if (!kt || n <= 0) Console.WriteLine("Nhap n nguyen duong!"); } while (!kt || n <= 0); a = new float[n]; // Nhập mảng Console.WriteLine("Nhap gia tri cac phan tu trong mang:"); for (int i = 0; i < n; i++) { Console.Write("a[{0}] = ", i); a[i] = float.Parse(Console.ReadLine()); } } static void Hienthi(float[] a, int n) { for (int i = 0; i < a.Length; i++) { Console.Write("{0} ", a[i]); } } Bƣớc 3: Viết hàm tìm min và tính trung bình cộng static float Timmin(float[] a, int n) { float min = a[0]; for (int i = 1; i < a.Length; i++) if (a[i] < min) min = a[i]; return min; } static float Trungbinhcongduong(float[] a, int n) { float td =0; int d = 0; for (int i = 0; i < a.Length; i++) if (a[i] > 0) { td += a[i]; d++;} if (d == 0) return 0; else return td / d; } Bƣớc 4: Mã lệnh trong hàm Main() static void Main(string[] args) { float[] a = null; int n = 0; 104 Tập bài giảng Lập trình cơ bản Nhapmang(ref a, ref n); Console.Write("Day sau khi sap xep: "); Hienthi(a, n); Console.WriteLine(); Array.Sort(a); Console.Write("Day sau khi sap xep: "); Hienthi(a, n); Console.WriteLine(); Console.Write("x = "); float x = float.Parse(Console.ReadLine()); if (a.Contains(x)) Console.WriteLine("co x trong day"); else Console.WriteLine("khong co x trong day"); Console.WriteLine("Phan tư nho nhat trong day: {0} ", Timmin(a,n)); //Console.WriteLine("Phan tư nho nhat trong day: {0} ", a.Min()); Console.Write("Trung binh cong cac phan tu duong trong day: {0} ", Trungbinhcongduong(a, n)); Console.ReadLine(); } Kết quả chƣơng trình: Hình 3.21: Kết quả chương trình bài 3.1 Bài 3.2 Lập chƣơng trình thực hiện các công việc sau: 1. Nhập, hiển thị dãy A gồm n số nguyên (n nguyên dƣơng bất kỳ nhập vào từ bàn phím); 2. Tính trung bình cộng các số lẻ trong dãy; 3. Đƣa ra chỉ số của các phần tử có giá trị nhỏ nhất của dãy A. 4. Tính tổng các số dƣơng có trong dãy. 5. Cho biết dãy A có bao nhiêu số nguyên tố. 6. Xóa phần tử có giá trị dƣơng cuối cùng trong dãy nếu có, nếu không có thì thông báo. 7. Nhập số nguyên dƣơng k và số thực x, thực hiện bổ sung phần tử mới có giá trị là x vào vị trí thứ k trong dãy nếu có, nếu không có thì thông báo. 105 Tập bài giảng Lập trình cơ bản 8. Bổ sung số nguyên x vào vị trí thứ k trong mảng (với x, k là các số nguyên nhập từ bàn phím) 9. Cho biết dãy A có tạo thành một cấp số cộng hay không? Bài 3.3 Lập chƣơng trình thực hiện các công việc sau: 1. Nhập và hiển thị ma trận số nguyên gồm n hàng, m cột (n, m nguyên dƣơng nhập từ bàn phím) 2. Tìm phần tử lớn nhất trên mỗi hàng của ma trận 3. Đếm số phần tử lẻ trong ma trận Hƣớng dẫn thực hiện: Bƣớc 1: Tạo ứng dụng Console và đặt tên là Bai3_3 Bƣớc 2: Viết các hàm nhập và hiển thị ma trận static void Nhapmatran(ref int[,] a, ref int n, ref int m) { Console.WriteLine("Nhap kich thuoc mang"); Console.Write("n = "); n = int.Parse(Console.ReadLine()); Console.Write("m = "); m = int.Parse(Console.ReadLine()); a = new int[n, m]; int i, j; for (i = 0; i < n; i++) for (j = 0; j < m; j++) { Console.Write("a[{0}{1}] = ", i, j); a[i, j] = int.Parse(Console.ReadLine()); } } static void Hienthimatran(int[,] a, int n, int m) { int i, j; for (i = 0; i < n; i++) { Console.WriteLine("\n"); for (j = 0; j < m; j++) Console.Write("{0} ", a[i, j]); } Console.WriteLine("\n"); } Bƣớc 3: Viết các hàm tìm số lớn nhất trên hàng và đếm số phần tử lẻ trong ma trận. static void Phantulonnhattrenhang(int[,] a, int n, int m) { for (int i = 0; i < n; i++) 106 Tập bài giảng Lập trình cơ bản { int min = a[i, 0]; for (int j = 1; j < m; j++) if (a[i, j] < min) min = a[i, j]; Console.WriteLine("Phan tu nho nhat tren hang {0} la: {1} ", i, min); } } static int Demle(int[,] a, int n, int m) { int d = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (a[i, j] % 2 != 0) { d++; } return d; } Bƣớc 4: Viết mã lệnh trong hàm Main(). static void Main(string[] args) { int n = 0, m = 0; int[,] a = null; Nhapmatran(ref a, ref n, ref m); Console.WriteLine("Ma tran: "); Hienthimatran(a, n, m); Phantulonnhattrenhang(a, n, m); Console.WriteLine("So phan tu le trong ma tran la: {0} ", Demle(a,n,m)); Console.ReadLine(); } Kết quả chƣơng trình Hình 3.22: Kết quả chương trình bài 3.3 Bài 3.4 107 Tập bài giảng Lập trình cơ bản Lập chƣơng trình thực hiện các công việc sau: 1. Nhập và hiển thị ma trận vuông cấp n các phần tử là số nguyên (n nguyên dƣơng nhập từ bàn phím) 2. Hiển thị các phần tử chẵn trên đƣờng chéo chính của ma trận. 3. Tính tổng các phần tử dƣơng trong ma trận. Hƣớng dẫn thực hiện: Bƣớc 1: Tạo ứng dụng Console và đặt tên là Bai3_4 Bƣớc 2: Viết các hàm nhập và hiển thị ma trận static void Nhapmatran(ref int[,] a, ref int n) { Console.WriteLine("Nhap kich thuoc mang"); Console.Write("n = "); n = int.Parse(Console.ReadLine()); a = new int[n, n]; int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) { Console.Write("a[{0}{1}] = ", i, j); a[i, j] = int.Parse(Console.ReadLine()); } } static void Hienthimatran(int[,] a, int n) { int i, j; for (i = 0; i < n; i++) { Console.WriteLine("\n"); for (j = 0; j < n; j++) Console.Write("{0} ", a[i, j]); } Console.WriteLine("\n"); } Bƣớc 3: Viết các hàm hiển thị phần tử trên đƣờng chéo chính và tính tổng các phần tử dƣơng trong ma trận static void Phantuchantrencheochinh(int[,] a, int n) { Console.Write("Phan tu chan tren cheo chinh: "); int d = 0; for (int i = 0; i < n; i++) { if (a[i, i] % 2 == 0) { d++; Console.Write("{0} ", a[i, i]); } } 108 Tập bài giảng Lập trình cơ bản if (d == 0) Console.WriteLine("khong co phan tu nao"); } static int Tongduong(int[,] a, int n) { int t = 0; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (a[i, j] > 0) { t += a[i, j]; } return t; } Bƣớc 4: Viết hàm Main() static void Main(string[] args) { int n = 0, m = 0; int[,] a = null; Nhapmatran(ref a, ref n); Console.WriteLine("Ma tran: "); Hienthimatran(a, n); Phantuchantrencheochinh(a, n); Console.WriteLine("\nTong cac phan tu duong trong ma tran la: {0} ", Tongduong(a, n)); Console.ReadLine(); } Kết quả chƣơng trình: Hình 3.23: Kết quả chương trình bài 3.4 Bài 3.5 Lập chƣơng trình thực hiện các công việc sau: 1. Nhập một ma trận số thực gồm n hàng, m cột (với n và m là hai số nguyên dƣơng). 2. Hiển thị ma trận. 3. Tìm số âm lớn nhất của ma trận. 109 Tập bài giảng Lập trình cơ bản 4. Sắp xếp từng hàng của ma trận theo thứ tự tăng dần. 5. Nhập số nguyên dƣơng k, xóa hàng thứ k của ma trận nếu có. 6. Tính trung bình cộng các phần tử có giá trị âm trong ma trận Bài 3.6 Tạo một ứng dụng Windows Form thực hiện các công việc sau: 1. Nhập một ma trận số thực vuông cấp n (với n là số nguyên dƣơng). 2. Hiển thị ma trận. 3. Tính tổng các phần tử nằm trên đƣờng chéo phụ của ma trận. 4. Tìm số dƣơng nhỏ nhất trên đƣờng chéo chính của ma trận 5. Đếm các phần tử của ma trận có giá trị chia hết cho 3 và 7. Bài 3.7 Lập chƣơng trình thực hiện các công việc sau: 1. Khai báo kiểu cấu trúc Diem có hai thuộc tính là hoành độ và tung độ của một điểm trong không gian hai chiều, các hàm getter, setter và hàm tạo. 2. Nhập một mảng cấu trúc Diem gồm n phần tử (với n là số nguyên dƣơng nhập từ bàn phím). 3. Sắp xếp danh sách các điểm theo thứ tự hoành độ tăng dần. Hƣớng dẫn thực hiện: Bƣớc 1: Tạo ứng dụng Console và đặt tên là Bai3_7 Bƣớc 2: Tạo cấu trúc diem struct diem { private int _x; private int _y; public int X { get { return _x; } set { _x = value; } } public int Y { get { return _y; } set { _y = value; } } public diem(int hd, int td) { _x = hd; _y = td; } } 110 Tập bài giảng Lập trình cơ bản Bƣớc 3: Viết các hàm nhập mảng điểm, hiển thị mảng điểm và sắp xếp mảng điểm tăng dần theo hoành độ các điểm static void Nhapmang(ref diem[] a, ref int n) { bool kt; do { Console.Write("Nhap kich thuoc mang n = "); kt = int.TryParse(Console.ReadLine(), out n); if (!kt || n <= 0) Console.WriteLine("Nhap n nguyen duong!"); } while (!kt || n <= 0); a = new diem[n]; // Nhập mảng Console.WriteLine("Nhap gia tri cac phan tu trong mang:"); for (int i = 0; i < n; i++) { Console.WriteLine("Nhap điêm thu {0} ", i); Console.Write("Nhap hoanh do: "); a[i].X = int.Parse(Console.ReadLine()); Console.Write("Nhap tung do: "); a[i].Y = int.Parse(Console.ReadLine()); } } static void Hienthi(diem[] a, int n) { for (int i = 0; i < a.Length; i++) { Console.WriteLine("({0}, {1})", a[i].X,a[i].Y); } } static void Sapxeptheohoanhdo(ref diem[] a, int n) { diem tg; for(int i =0;i<a.Length-1;i++) for (int j = i + 1; j < a.Length; j++) if(a[i].X>a[j].X) { tg = a[i]; a[i] = a[j]; a[j] = tg; } } Bƣớc 4: Viết hàm Main() static void Main(string[] args) 111 Tập bài giảng Lập trình cơ bản { diem[] a = null; int n = 0; Nhapmang(ref a, ref n); Console.Write("Day diem: \n"); Hienthi(a, n); Console.WriteLine(); Sapxeptheohoanhdo(ref a, n); Console.Write("Day sau khi sap xep: \n"); Hienthi(a, n); Console.ReadLine(); } Kết quả chƣơng trình: Hình 3.24: Kết quả chương trình bài 3.7 Bài 3.8 Giả sử với mỗi thí sinh cần lƣu trữ các thông tin: Số báo danh, họ và tên, hộ khẩu thƣờng trú, điểm toán, điểm lý, điểm hóa. Lập chƣơng trình cho phép thực hiện các công việc sau: 1. Tạo danh sách thí sinh 2. Hiển thị danh sách thí sinh ra màn hình 3. Sửa thông tin của một thí sinh. 4. Xóa thông tin về một thí sinh khỏi danh sách. 5. Hiển thị thông tin về thí sinh khi biết số báo danh của thí sinh đó. 112 Tập bài giảng Lập trình cơ bản 6. Sắp xếp danh thí sinh theo tổng 3 môn tăng dần. Hiển thị lên màn hình danh sách vừa sắp xếp 7. Nhập vào điểm chuẩn, đƣa ra những thí sinh trƣợt (những thí sinh có tổng 3 môn nhỏ hơn điểm chuẩn). Bài 3.9 Lập chƣơng trình thực hiện các công việc sau: 1. Nhập một xâu ký tự dƣới dạng họ tên của một ngƣời 2. Chuẩn hóa xâu vừa nhập. 3. Hiển thị ra màn hình tên, họ, đệm vừa nhập. 4. Hiển thị lại họ tên vừa nhập ra màn hình sao cho các ký tự đầu của mỗi từ đều viết hoa (ví dụ: nhập vào nguyễn văn an thì in ra Nguyễn Văn An) 5. Đếm số từ trong xâu. 6. Đếm trong xâu có bao nhiêu ký tự ‗n‘. Hƣớng dẫn thực hiện: Bƣớc 1: Tạo ứng dụng Console và đặt tên là Bai3_9 Bƣớc 2: Viết các hàm chuẩn hóa, hiển thị tên, họ đệm static void Chuanhoaxau(ref string st) { st = st.Trim();//loại bỏ khoảng cách ở đầu và cuối xâu int i = 1, j; while (i < st.Length) { if (st[i] == ' ')//Hai ký tự gần nhau đều là khoảng trắng thì sẽ xóa đi 1 { j = i + 1; while (j < st.Length && st[j] == ' ') st = st.Remove(j, 1); i = j + 1; } else i++; } } static void Hienthitenhodem(string hoten) { // trích tên string ten = hoten.Remove(0, hoten.LastIndexOf(' ') + 1); Console.WriteLine("\n Chao ban: " + ten); // trích họ đệm string ho = hoten.Substring(0, hoten.LastIndexOf(' ')); Console.WriteLine("\n Ho cua ban la: " + ho); } 113 Tập bài giảng Lập trình cơ bản Bƣớc 3: Viết các hàm đếm từ, đếm ký tự ‗n‘, chuyển hoa các ký tự đầu từ. static void Chuyenchuhoadautu(ref string hoten) { char[] s = hoten.ToCharArray(); s[0] = char.ToUpper(s[0]); hoten = s[0].ToString(); for (int i = 1; i < s.Length; i++) { if (s[i] == ' ') s[i + 1] = char.ToUpper(s[i + 1]); hoten+=s[i]; } } static int demtu(string hoten) { int d = 0; for (int i = 0; i < hoten.Length; i++) if (hoten[i] == ' ') d++; return d + 1; } static int demkytu(string hoten) { int d = 0; for (int i = 0; i < hoten.Length; i++) if (hoten[i] == 'n') d++; return d; } Bƣớc 4: Viết hàm Main() static void Main(string[] args) { string hoten; Console.Write("Nhap ho ten: "); hoten = Console.ReadLine(); Chuanhoaxau(ref hoten); Console.WriteLine("Xau sau khi chuan hoa {0}", hoten); Hienthitenhodem(hoten); Chuyenchuhoadautu(ref hoten); Console.WriteLine("Xau sau khi chuyen thanh hoa {0}", hoten); Console.WriteLine("So tu trong xau {0}", demtu(hoten)); Console.WriteLine("So ky tu n trong xau {0}", demkytu(hoten)); Console.ReadLine(); } Kết quả chƣơng trình: 114 Tập bài giảng Lập trình cơ bản Hình 3.25: Kết quả chương trình bài 3.9 Bài 3.10 Lập chƣơng trình thực hiện các công việc sau: 1. Nhập một xâu ký tự 2. Đếm xem trong xâu có bao nhiêu ký tự là chữ số 3. Kiểm tra xâu vừa nhập có phải là xâu đối xứng hay không (xâu ―abcdcba‖ là xâu đối xứng) 4. Thay các ký tự ‗a‘ có trong xâu bằng ký tự ‗b‘. 5. Đƣa ra từ có độ dài lớn nhất trong xâu. 115
File đính kèm:
- giao_trinh_lap_trinh_co_ban_phan_1.pdf