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ả.

 

Giáo trình Mô đun C#1 - Lập trình máy tính trang 1

Trang 1

Giáo trình Mô đun C#1 - Lập trình máy tính trang 2

Trang 2

Giáo trình Mô đun C#1 - Lập trình máy tính trang 3

Trang 3

Giáo trình Mô đun C#1 - Lập trình máy tính trang 4

Trang 4

Giáo trình Mô đun C#1 - Lập trình máy tính trang 5

Trang 5

Giáo trình Mô đun C#1 - Lập trình máy tính trang 6

Trang 6

Giáo trình Mô đun C#1 - Lập trình máy tính trang 7

Trang 7

Giáo trình Mô đun C#1 - Lập trình máy tính trang 8

Trang 8

Giáo trình Mô đun C#1 - Lập trình máy tính trang 9

Trang 9

Giáo trình Mô đun C#1 - Lập trình máy tính trang 10

Trang 10

Tải về để xem bản đầy đủ

doc 124 trang duykhanh 9420
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Mô đun C#1 - Lập trình máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

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

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:

  • docgiao_trinh_mo_dun_c1_lap_trinh_may_tinh.doc