Giáo trình Mô đun C#1 - Lập trình máy tính
Microsoft .NET
Microsoft .NET gồm 2 phần chính : Framework và Integrated Development Environment (IDE).
Framework cung cấp những gì cần thiết và căn bản, chữ Framework có nghĩa là khung hay khung cảnh trong đó ta dùng những hạ tầng cơ sở theo một qui ước nhất định để công việc được trôi chảy.
IDE thì cung cấp một môi trường giúp chúng ta triển khai dễ dàng, và nhanh chóng các ứng dụng dựa trên nền tảng .NET. Nếu không có IDE chúng ta cũng có thể dùng một trình soạn thảo ví như Notepad hay bất cứ trình soạn thảo văn bản nào và sử dụng command line để biên dịch và thực thi, tuy nhiên việc này mất nhiều thời gian. Tốt nhất là chúng ta dùng IDE phát triển các ứng dụng, và cũng là cách dễ sử dụng nhất.
Tính năng của Micosoft.NET
Một mô hình lập trình cho phép nhà phát triển xây dựng các ứng dụng dịch vụ web và ứng dụng client với Extensible Markup Language (XML).
Tập hợp dịch vụ XML Web, như Microsoft .NET My Services cho phép nhà phát triển đơn giản và tích hợp người dùng kinh nghiệm.
Cung cấp các server phục vụ bao gồm: Windows 2000, SQL Server, và BizTalk Server, tất cả điều tích hợp, hoạt động, và quản lý các dịch vụ XML Web và các ứng dụng.
Các phần mềm client như Windows XP và Windows CE giúp người phát triển phân phối sâu và thuyết phục người dùng kinh nghiệm thông qua các dòng thiết bị.
Nhiều công cụ hỗ trợ như Visual Studio .NET, để phát triển các dịch vụ Web XML, ứng dụng trên nền Windows hay nền web một cách dể dàng và hiệu quả.
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 Mô đun C#1 - Lập trình máy tính
n true; } Ví dụ: Tạo lớp ListBox hỗ trợ enumerator. namespace Programming_CSharp { using System; using System.Collections; // tạo một control đơn giản public class ListBoxTest: IEnumerable { // lớp thực thi riêng ListBoxEnumerator private class ListBoxEnumerator : IEnumerator { public ListBoxEnumerator(ListBoxTest lbt) { this.lbt = lbt; index = -1; } // gia tăng index và đảm bảo giá trị này hợp lệ public bool MoveNext() { index++; if (index >= lbt.strings.Length) return false; else return true; } public void Reset() { index = -1; } public object Current { get { return( lbt[index]); } } private ListBoxTest lbt; private int index; } // trả về Enumerator public IEnumerator GetEnumerator() { return (IEnumerator) new ListBoxEnumerator(this); } // khởi tạo listbox với chuỗi public ListBoxTest (params string[] initStr) { strings = new String[10]; // copy từ mảng chuỗi tham số foreach (string s in initStr) { strings[ctr++] = s; } } public void Add(string theString) { strings[ctr] = theString; ctr++; } // cho phép truy cập giống như mảng public string this[int index] { get { if ( index = strings.Length) { // xử lý index sai } return strings[index]; } set { strings[index] = value; } } // số chuỗi nắm giữ public int GetNumEntries() { return ctr; } private string[] strings; private int ctr = 0; } } Giao diện ICollection ICollection cung cấp bốn thuộc tính: Count, IsReadOnly, IsSynchronized, và SyncRoot. Ngoài ra ICollection cũng cung cấp một phương thức CopyTo(). Thuộc tính thường được sử dụng là Count, thuộc tính này trả về số thành phần trong tập hợp: for(int i = 0; i < myIntArray.Count; i++) { //... } Giao diện IComparer Giao diện IComparer cung cấp phương thức Compare(), để so sánh hai phần tử trong một tập hợp có thứ tự. Phương thức Compare() thường được thực thi bằng cách gọi phương thức CompareTo() của một trong những đối tượng. CompareTo () là phương thức có trong tất cả đối tượng thực thi IComparable Trình tự thực hiện - Chuột phải vào tên project\Add\Class Gõ tên lớp ListBoxTest vào mục Name\Chọn Add - Viết code lớp ListBoxTest namespace Programming_CSharp { using System; using System.Collections; // tạo một control đơn giản public class ListBoxTest: IEnumerable { // lớp thực thi riêng ListBoxEnumerator private class ListBoxEnumerator : IEnumerator { public ListBoxEnumerator(ListBoxTest lbt) { this.lbt = lbt; index = -1; } // gia tăng index và đảm bảo giá trị này hợp lệ public bool MoveNext() { index++; if (index >= lbt.strings.Length) return false; else return true; } public void Reset() { index = -1; } public object Current { get { return( lbt[index]); } } private ListBoxTest lbt; private int index; } // trả về Enumerator public IEnumerator GetEnumerator() { return (IEnumerator) new ListBoxEnumerator(this); } // khởi tạo listbox với chuỗi public ListBoxTest (params string[] initStr) { strings = new String[10]; // copy từ mảng chuỗi tham số foreach (string s in initStr) { strings[ctr++] = s; } } public void Add(string theString) { strings[ctr] = theString; ctr++; } // cho phép truy cập giống như mảng public string this[int index] { get { if ( index = strings.Length) { // xử lý index sai } return strings[index]; } set { strings[index] = value; } } // số chuỗi nắm giữ public int GetNumEntries() { return ctr; } private string[] strings; private int ctr = 0; } } - Viết code hàm Main static void Main() { ListBoxTest lbt = new ListBoxTest(“Hello”, “World”); lbt.Add(“What”); lbt.Add(“Is”); lbt.Add(“The”); lbt.Add(“C”); lbt.Add(“Sharp”); string subst = “Universe”; lbt[1] = subst; // truy cập tất cả các chuỗi int count =1; foreach (string s in lbt) { Console.WriteLine(“Value {0}: {1}”,count, s); count++; } } } - Biên dịch chương trình: Nhấn F6 - Chạy chương trình: Nhấn F5 Sai hỏng thường gặp, nguyên nhân và biện pháp phòng tránh/ khắc phục - Sai hỏng thường gặp Nguyên nhân: Khi khai báo chỉ mục thiếu phạm vi truy xuất là public Biện pháp khắc phục Thêm từ khoá public vào trược khai báo chỉ mục 4. Bài tập Nhập vào một dãy n số nguyên A[1],A[2],...,A[n] . Đọc ra màn hình các thông tin sau : Tổng các phần tử của dãy. Số lượng các số hạng dương và tổng của các số hạng dương. Số lượng các số hạng âm và tổng của các số hạng âm. Trung bình cộng của cả dãy. Trung bình cộng các phần tử dương của mảng. Trung bình cộng các phần tử âm của mảng. Chỉ số của số hạng dương đầu tiên của dãy. Chỉ số của số hạng âm đầu tiên của dãy. Chỉ số của số hạng dương cuối cùng của dãy. Chỉ số của số hạng âm cuối cùng của dãy. Số hạng lớn nhất của dãy và chỉ số của nó. Số hạng nhỏ nhất của dãy và chỉ số của nó. Số hạng âm lớn nhất của dãy và chỉ số của nó. Số hạng dương nhỏ nhất của dãy và chỉ số của nó. BÀI 8. XỬ LÝ CHUỖI Mã bài: MĐ20_B08 Giới thiệu: Trong bài này chúng ta sẽ nghiên cứu về chuỗi trong C#. Mục tiêu: Trình bày được cú pháp khai báo chuỗi trong C#; Biết cách xử lý chuỗi trong các chương trình; Đảm bảo an toàn cho người và thiết bị. 1. Tạo một chuỗi Lớp đối tượng String C# xem những chuỗi như là những kiểu dữ liệu cơ bản tức là các lớp này rất linh hoạt, mạnh mẽ, và nhất là dễ sử dụng. Mỗi đối tượng chuỗi là một dãy cố định các ký tự Unicode Khi chúng ta khai báo một chuỗi C# bằng cách dùng từ khóa string, là chúng ta đã khai báo một đối tượng của lớp System.String Khai báo một đối tượng thuộc lớp string: string [= “chuỗi_gán”]; - Ví dụ: string hoten; string ngaysinh; string quequan; Chuỗi nguyên văn: các ký tự trong chuỗi được giữ nguyên không thay đổi. Để gán chuỗi nguyên văn ta thêm @ vào trước chuỗi gán cho biến kiểu string như sau: string verbatim1 = @”\\MyDocs\CSharp\ProgrammingC#.cs”; Nếu bình thường không có @ ta sẽ khai báo và gán như sau: string verbatim1 = ”\\\\MyDocs\\CSharp\\ProgrammingC#.cs”; Vì muốn thể hiện các ký tự đặc biệt ta phải thêm \ đằng trước ký tự đó. \n: là ký tự xuống hàng Trình tự thực hiện - Chuột phải vào tên project\Add\Class Gõ tên lớp clsTime vào mục Name\Chọn Add - Viết code lớp clsSinhvien Viết code cho hàm Main Biên dịch chương trình: Nhấn F6 Chạy chương trình: Nhấn F5\ Nhập thông tin sinh viên Sai hỏng thường gặp, nguyên nhân và biện pháp phòng tránh/ khắc phục - Sai hỏng thường gặp - Nguyên nhân: Sử dụng ký tự (‘’) để gán cho biên chuỗi - Biện pháp khắc phục Sử dụng ký tự (“”) để gán cho chuỗi. 2. Tạo chuỗi dùng phương thức ToString - Để tạo một chuỗi ta sử dụng phương thức ToString() của một đối tượng và gán kết quả đến một biến chuỗi. - Ví dụ: int a = 1900; string str = a.ToString(); Trình tự thực hiện - Tạo Project mới - Viết code hàm Main - Biên dịch: Nhấn F6 - Chạy chương trình: Nhấn F5 Sai hỏng thường gặp, nguyên nhân và biện pháp phòng tránh/ khắc phục - Lỗi - Nguyên nhân: Viết sai tên phương thức Tostring () - Biện pháp khắc phục: Sửa lại thành ToString () 3. Thao tác trên chuỗi Mục tiêu: - Trình bày được các phương thức cơ bản cơ lớp String; - Vận dụng được các phương thức để làm bài tập. - Lớp string cung cấp rất nhiều số lượng các phương thức để so sánh, tìm kiếm và thao tác trên chuỗi. Phương thức và thuộc tính của lớp String System.String Phương thức/ Trường Ý nghĩa Empty Trường public static thể hiện một chuỗi rỗng. Compare() Phương thức public static để so sánh hai chuỗi. CompareOrdinal() Phương thức public static để so sánh hai chuỗi không quan tâm đến thứ tự. Concat() Phương thức public static để tạo chuỗi mới từ một hay nhiều chuỗi. Copy() Phương thức public static tạo ra một chuỗi mới bằng sao từ chuỗi khác. Equal() Phương thức public static kiểm tra xem hai chuỗi có cùng giá trị hay không. Format() Phương thức public static định dạng một chuỗi dùng ký tự lệnh định dạng xác định. Intern() Phương thức public static trả về tham chiếu đến thể hiện của chuỗi. IsInterned() Phương thức public static trả về tham chiếu của chuỗi Join() Phương thức public static kết nối các chuỗi xác định giữa mỗi thành phần của mảng chuỗi. Chars() Indexer của chuỗi. Length() Chiều dài của chuỗi. Clone() Trả về chuỗi. CompareTo() So sánh hai chuỗi. CopyTo() Sao chép một số các ký tự xác định đến một mảng ký tự Unicode. EndsWidth() Chỉ ra vị trí của chuỗi xác định phù hợp với chuỗi đưa ra. Insert() Trả về chuỗi mới đã được chèn một chuỗi xác định. LastIndexOf() Chỉ ra vị trí xuất hiện cuối cùng của một chuỗi xác định trong chuỗi. PadLeft() Canh lề phải những ký tự trong chuỗi, chèn vào bên trái khoảng trắng hay các ký tự xác định. PadRight() Canh lề trái những ký tự trong chuỗi, chèn vào bên phải khoảng trắng hay các ký tự xác định. Remove() Xóa đi một số ký tự xác định. Split() Trả về chuỗi được phân định bởi những ký tự xác định trong chuỗi. StartWidth() Xem chuỗi có bắt đầu bằng một số ký tự xác định hay không. SubString() Lấy một chuỗi con. ToCharArray() Sao chép những ký tự từ một chuỗi đến mảng ký tự. ToLower() Trả về bản sao của chuỗi ở kiểu chữ thường. ToUpper() Trả về bản sao của chuỗi ở kiểu chữ hoa. Trim() Xóa bỏ tất cả sự xuất hiện của tập hợp ký tự xác định từ vị trí đầu tiên đến vị trí cuối cùng trong chuỗi. TrimEnd() Xóa như nhưng ở vị trí cuối. TrimStart() Xóa như Trim nhưng ở vị trí đầu. - Ví dụ: string s1 = "abcd"; string s2 = "ABCD"; // So sánh hai chuỗi với nhau có phân biệt chữ thường và chữ hoa result = string. Compare(s1, s2, flase); //hoặc string. Compare(s1, s2) mặc định tham số thứ 3 là false //So sánh không phân biệt chữ thường hay chữ hoa // Tham số thứ ba là true sẽ bỏ qua kiểm tra ký tự thường – hoa result = string. Compare(s1, s2, true); // phương thức nối các chuỗi string s4 = string.Concat(s1, s2); // sử dụng nạp chồng toán tử + string s5 = s1 + s2; // Sử dụng phương thức copy chuỗi string s6 = string.Copy(s5); Trình tự thực hiện - Tạo Project mới - Viết code hàm Main class Program { static void Main(string[] args) { // khởi tạo một số chuỗi để thao tác string s1 = "abcd"; string s2 = "ABCD"; string s3 = "Trung Tam Dao Tao CNTT Truong cao dang co gioi Ninh Binh"; int result; // So sánh hai chuỗi với nhau có phân biệt chữ thường và chữ hoa result = string.Compare( s1 ,s2); Console.WriteLine("So sanh hai chuoi S1: {0} và S2: {1} ket qua: {2} \n", s1 ,s2 ,result); // Sử dụng tiếp phương thức Compare() nhưng trường hợp này không biệt // chữ thường hay chữ hoa // Tham số thứ ba là true sẽ bỏ qua kiểm tra ký tự thường – hoa result = string. Compare(s1, s2, true); Console.WriteLine("Khong phan biet chu thuong va hoa\n"); Console.WriteLine("S1: {0} , S2: {1}, ket qua : {2}\n", s1, s2, result); // phương thức nối các chuỗi string s4 = string.Concat(s1, s2); Console.WriteLine("Chuoi S4 noi tu chuoi S1 va S2: {0}", s4); // sử dụng nạp chồng toán tử + string s5 = s1 + s2; Console.WriteLine("Chuoi S5 duoc noi tu chuoi S1 va S2: {0}", s5); // Sử dụng phương thức copy chuỗi string s6 = string.Copy(s5); Console.WriteLine("S6 duoc sao chep tu S5: {0}", s6); // Sử dụng nạp chồng toán tử = string s7 = s6; Console.WriteLine("S7 = S6: {0}", s7); // Sử dụng ba cách so sánh hai chuỗi // Cách 1 sử dụng một chuỗi để so sánh với chuỗi còn lại Console.WriteLine("S6.Equals(S7) ?: {0}", s6.Equals(s7)); // Cách 2 dùng hàm của lớp string so sánh hai chuỗi Console.WriteLine("Equals(S6, s7) ?: {0}", string.Equals(s6, s7)); // Cách 3 dùng toán tử so sánh Console.WriteLine("S6 == S7 ?: {0}", s6 == s7); // Sử dụng hai thuộc tính hay dùng là chỉ mục và chiều dài của chuỗi Console.WriteLine("\nChuoi S7 co chieu dai la : {0}", s7.Length); Console.WriteLine("Ky tu thu 3 cua chuoi S7 la : {0}", s7[2] ); // Kiểm tra xem một chuỗi có kết thúc với một nhóm ký // tự xác định hay không Console.WriteLine("S3: {0}\n ket thuc voi chu CNTT ? : {1}\n", s3, s3.EndsWith("CNTT")); Console.WriteLine("S3: {0}\n ket thuc voi chu Nam ? : {1}\n", s3, s3.EndsWith("Nam")); // Trả về chỉ mục của một chuỗi con Console.WriteLine("\nTim vi tri xuat hien dau tien cua chu CNTT "); Console.WriteLine("trong chuoi S3 là {0}\n", s3.IndexOf("CNTT")); // Chèn từ nhân lực vào trước CNTT trong chuỗi S3 string s8 = s3.Insert(18, "nhan luc "); Console.WriteLine(" S8 : {0}\n", s8); // Ngoài ra ta có thể kết hợp như sau string s9 = s3.Insert( s3.IndexOf( "CNTT" ) , "nhan luc "); Console.WriteLine(" S9 : {0}\n", s9); Console.ReadKey(); } } Sai hỏng thường gặp, nguyên nhân và biện pháp phòng tránh/ khắc phục - Sai hỏng thường gặp - Nguyên nhân Viết sai tên phương thức - Biện pháp khắc phục: Sửa cho đúng tên phương thức 4. Tìm một chuỗi con Để trích chuỗi con của một chuỗi ta sử dụng phương thức Substring() theo cú pháp sau: - Trích chuỗi con từ vị trí Startindex đến cuối cùng. String_name.Substring(int Start index) Ví dụ: string s1 = "Trung Tam Dao Tao CNTT Truong cao dang co gioi Ninh Binh"; string s2 = s1.Substring(23); Kết quả: Truong cao dang co gioi Ninh Binh - Trích chuỗi con từ vị trí Startindex và có độ dài length String_name.Substring(int Start index, int length) Ví dụ: string s1 = "Trung Tam Dao Tao CNTT Truong cao dang co gioi Ninh Binh"; string s3 = s1.Substring(18,4); Kết quả: CNTT Trình tự thực hiện - Tạo Project mới - Viết code hàm Main - Biên dịch chương trình: Nhấn F6 - Chạy chương trình: Nhấn F5 Sai hỏng thường gặp, nguyên nhân và biện pháp phòng tránh/ khắc phục - Sai hỏng thường gặp - Nguyên nhân Viết sai tên phương thức - Biện pháp khắc phục: Sửa cho đúng tên phương thức 5. Chia chuỗi Để phân tích từ một chuỗi ra thành các chuỗi con ta dùng phương thức Split theo cú pháp sau: String_name.Split(char[] strarray_name) - strarray_name là mảng các ký tự. - Chuỗi String_name sẽ được tách thành các chuỗi con khi gặp ký tự thuộc mảng strarray. Kết quả trả về là một mảng các chuỗi được tách ra. Ví dụ: Tách các từ trong chuỗi: string s1 = "Trung Tam Dao Tao CNTT Truong cao dang co gioi Ninh Binh"; char[] strarray = new char[]{' ',','}; string strout=""; int ctr=1; foreach ( string subString in s1.Split(delimiters) ) { strout += ctr++; strout += ": "; strout += subString; strout += "\n"; } Kết quả là Trình tự thực hiện - Tạo Project - Viết code hàm Main - Biên dịch chương trình: Nhấn F6 - Chạy chương trình: Nhấn F5 Sai hỏng thường gặp, nguyên nhân và biện pháp phòng tránh/ khắc phục - Sai hỏng thường gặp - Nguyên nhân Viết sai tên phương thức - Biện pháp khắc phục: Sửa cho đúng tên phương thức Bài tập Viết lớp hocsinh bao gồm các thuộc tính và phương thức sau: Masv Hoten Diemtoan Diemly Diemhoa Hàm tạo không đối, hàm tạo có đối Phương thức nhập, hiển thị thông tin Viết lớp dssv bao gồm các thuộc tính và phương thức sau: Mảng ds kiểu hocsinh Số học sinh Phương thức nhập Phương thức hiển thị Phương thức tìm kiếm thông tin học sinh theo tên
File đính kèm:
- giao_trinh_mo_dun_c1_lap_trinh_may_tinh.doc