Xem mẫu

  1. Tập bài giảng Lập trình cơ bản MỤC LỤC DANH MỤC CÁC BẢNG .............................................................................................iv DANH MỤC CÁC HÌNH ..............................................................................................vi LỜI NÓI ĐẦU .................................................................................................................x CHƢƠNG 1: TỔNG QUAN VỀ .NET VÀ C# ..............................................................1 1.1. Giới thiệu .NET ....................................................................................................1 1.1.1. Tổng quan về .NET Framework ....................................................................1 1.1.2. Giới thiệu Visual Studio .NET ......................................................................2 1.2. Ngôn ngữ C# ........................................................................................................3 1.2.1. Giới thiệu C# .................................................................................................3 1.2.2. Các bƣớc chuẩn bị cho chƣơng trình .............................................................5 1.2.3. Xây dựng chƣơng trình C# đơn giản .............................................................6 1.2.4. Chú thích trong chƣơng trình C# ...................................................................9 1.2.5. Namespace ...................................................................................................10 CHƢƠNG 2: CƠ SỞ LẬP TRÌNH TRONG C# ...........................................................11 2.1. Tên ......................................................................................................................11 2.2. Từ khóa ...............................................................................................................12 2.3. Hằng và Biến ......................................................................................................12 2.3.1. Các kiểu dữ liệu cơ sở .................................................................................12 2.3.2. Biến ..............................................................................................................14 2.3.3. Hằng ............................................................................................................16 2.4. Biểu thức.............................................................................................................17 2.4.1. Biểu thức......................................................................................................17 2.4.2. Lệnh gán và biểu thức .................................................................................17 2.4.3. Các phép toán số học ...................................................................................18 2.4.4. Các phép toán quan hệ và logic ...................................................................19 2.4.5. Phép toán tăng giảm ....................................................................................20 2.4.6. Thứ tựƣu tiên các phép toán ........................................................................22 2.4.7. Chuyển đổi kiểu giá trị ................................................................................24 2.4.8. Lớp Math .....................................................................................................26 2.5. Câu lệnh rẽ nhánh ...............................................................................................27 2.5.1. Câu lệnh if ...................................................................................................27 2.5.2. Câu lệnh switch ...........................................................................................31 2.6. Câu lệnh lặp ........................................................................................................34 i
  2. Tập bài giảng Lập trình cơ bản 2.6.1. Câu lệnh while .............................................................................................34 2.6.2. Câu lệnh do...while ......................................................................................35 2.6.3. Câu lệnh for .................................................................................................37 2.7. Câu lệnh nhảy .....................................................................................................39 2.7.1. Câu lệnh break và continue .........................................................................39 2.7.2. Câu lệnh goto ...............................................................................................40 2.7.3. Câu lệnh return ............................................................................................41 2.8. Xử lý ngoại lệ .....................................................................................................41 Bài tập ........................................................................................................................45 CHƢƠNG 3: MỘT SỐ CẤU TRÚC DỮ LIỆU ...........................................................50 3.1. Mảng ...................................................................................................................50 3.1.1. Mảng một chiều ...........................................................................................51 3.1.2. Mảng đa chiều .............................................................................................56 3.2. Xâu ký tự. ...........................................................................................................61 3.3. Xử lý tập tin ........................................................................................................71 3.4. Lớp ......................................................................................................................80 3.5. Cấu trúc.............................................................................................................100 Bài tập ......................................................................................................................103 CHƢƠNG 4: LẬP TRÌNH TRÊN FORM ..................................................................116 4.1. Giới thiệu về lập trình trên Form ......................................................................116 4.2. Làm việc với Form ...........................................................................................116 4.2.1. Một số khái niệm .......................................................................................116 4.2.2. Các loại Form ............................................................................................123 4.2.3. Thuộc tính của Form .................................................................................124 4.2.4. Sự kiện trên Form ......................................................................................125 4.2.5. Phƣơng thức của Form ..............................................................................125 4.3. Một số điều khiển thông dụng ..........................................................................128 4.3.1. Các thuộc tính và sự kiện chung................................................................128 4.3.2. Nhóm điều khiển Label .............................................................................129 4.3.3. Nhóm điều khiển TextBox ........................................................................131 4.3.4. Nhóm điều khiển ComboBox, ListBox .....................................................138 4.3.5. Nhóm điều khiển CheckBox, RadioButtom ..............................................146 4.3.6. Điều khiển Button......................................................................................154 4.4. Một số điều khiển đặc biệt................................................................................155 4.4.1 Nhóm điều khiển Menu ..............................................................................155 4.4.2. Điều khiển Container .................................................................................158 ii
  3. Tập bài giảng Lập trình cơ bản 4.4.3. Điều khiển Dialog......................................................................................160 Bài tập ..................................................................................................................167 TAI LIỆU THAM KHẢO ...........................................................................................197 iii
  4. Tập bài giảng Lập trình cơ bản DANH MỤC CÁC BẢNG Bảng 1.1: Từ khóa của ngôn ngữ C#. ..............................................................................5 Bảng 2.1: Mô tả các kiểu dữ liệu xây dựng sẵn ............................................................13 Bảng 2.2: Các kiểu ký tự đặc biệt..................................................................................14 Bảng 2.3: Các phép toán số học hai ngôi ......................................................................18 Bảng 2.4: Các toán tử so sánh (giả sử value1 = 100 và value2 = 50). ..........................20 Bảng 2.5: Các toán tử logic (giả sử x = 5, y = 7). .........................................................20 Bảng 2.6: Mô tả các phép toán tự gán. ..........................................................................20 Bảng 2.7: Một số các phép toán khác có trong C# ........................................................22 Bảng 2.8: Thứ tự ƣu tiên các phép toán. .......................................................................23 Bảng 2.9: Một số phƣơng thức của lớp Math. ...............................................................27 Bảng 2.10: Một số lớp ngoại lệ .....................................................................................44 Bảng 3.1: Các phƣơng thức và thuộc tính của System.Array. ......................................51 Bảng 3.2: Phƣơng thức và thuộc tính của lớp String ....................................................63 Bảng 3.3: Một số phƣơng thức mở tập tin.....................................................................73 Bảng 3.4: Giá trị của FileMode .....................................................................................77 Bảng 3.5: Các phƣơng thức đọc của BinaryReader. .....................................................80 Bảng 3.6: Thuộc tính truy cập. ......................................................................................83 Bảng 3.7: Giá trị mặc định của kiểu dữ liệu cơ bản. .....................................................85 Bảng 4.1: Một số thuộc tính của Form ........................................................................125 Bảng 4.2: Một số sự kiện của Form ............................................................................125 Bảng 4.3: Một số phƣơng thức của Form ....................................................................126 Bảng 4.4: Một số thuộc tính chung của các điều khiển ...............................................128 Bảng 4.5: Một số sự kiện chung của các điều khiển ...................................................129 Bảng 4.6: Một số thuộc tính của Label........................................................................129 Bảng 4.7: Các thuộc tính của LinkLabel .....................................................................130 Bảng 4.8: Các sự kiện của LinkLabel .........................................................................130 Bảng 4.9: Một số thuộc tính của TextBox ...................................................................131 Bảng 4.10: Một số sự kiện của TextBox .....................................................................132 Bảng 4.11: Một số thuộc tính của MaskedTextBox ....................................................136 Bảng 4.12: Một số sự kiện của MaskedTextBox ........................................................137 Bảng 4.13: Một số thuộc tính của ComboBox ............................................................139 Bảng 4.14: Một số sự kiện của ComboBox .................................................................139 Bảng 4.15: Một số thuộc tính của ListBox ..................................................................142 Bảng 4.16: Một số sự kiện của ListBox ......................................................................142 Bảng 4.17: Một số thuộc tính của CheckBox ..............................................................146 iv
  5. Tập bài giảng Lập trình cơ bản Bảng 4.18: Một số sự kiện của CheckBox ..................................................................146 Bảng 4.19: Một số thuộc tính của CheckedListBox ....................................................150 Bảng 4.20: Một số sự kiện của CheckedListBox ........................................................150 Bảng 4.21: Một số thuộc tính của RadioButton ..........................................................152 Bảng 4.22: Một số sự kiện của RadioButton ...............................................................152 Bảng 4.23: Một số thuộc tính của Button ....................................................................155 Bảng 4.24: Một số sự kiện của Button ........................................................................155 Bảng 4.25: Một số thuộc tính của MenuStrip .............................................................155 Bảng 4.26: Một số thuộc tính của ToolStripMenuItem...............................................156 Bảng 4.27: Một số sự kiện của ToolStripMenuItem ...................................................156 Bảng 4.28: Một số thuộc tính của GroupBox ..............................................................158 Bảng 4.29: Một số thuộc tính của TabControl ............................................................159 Bảng 4.30: Một số thuộc tính của điều khiển ColorDialog .........................................163 Bảng 4.31: Một số thuộc tính của điều khiển SaveFileDialog ....................................164 Bảng 4.32: Một số thuộc tính của điều khiển OpenFileDialog ...................................166 v
  6. Tập bài giảng Lập trình cơ bản DANH MỤC CÁC HÌNH Hình 1.1: Cấu trúc của .Net Framework..........................................................................2 Hình 1.2: Các bƣớc lựa chọn một Project mới Visual Studio 2010 ................................7 Hình 1.3: Tập tin Program.cs ..........................................................................................8 Hình 1.4: Kết quả chƣơng trình Vidu 1.1 ........................................................................8 Hình 1.5: Kết quả chƣơng trình ví dụ 1.2. .....................................................................10 Hình 2.1: Kết quả chƣơng trình ví dụ 2.3 ......................................................................15 Hình 2.2: Kết quả chƣơng trình ví dụ 2.6. .....................................................................17 Hình 2.3: Kết quả chƣơng trình ví dụ 2.7 ......................................................................19 Hình 2.4: Kết quả chƣơng trình ví dụ 2.8. .....................................................................22 Hình 2.5: Kết quả chƣơng trình ví dụ 2.9 ......................................................................24 Hình 2.6: Hoạt động của câu lệnh if không đầy đủ .......................................................27 Hình 2.7: Kết quả chƣơng trình ví dụ 2.10 ....................................................................28 Hình 2.8: Hoạt đông của câu lệnh if đầy đủ ..................................................................29 Hình 2.9: Kết quả chƣơng trình ví dụ 2.11 ....................................................................29 Hình 2.10: Kết quả chƣơng trình ví dụ 2.12. .................................................................31 Hình 2.11: Kết quả chƣơng trình ví dụ 2.13. .................................................................33 Hình 2.12: Hoạt động của vòng lặp while .....................................................................34 Hình 2.13: Kết quả chƣơng trình ví dụ 2.14. .................................................................35 Hình 2.14: Hoạt động của vòng lặp do … while. ..........................................................36 Hình 2.15: Kết quả chƣơng trình ví dụ 2.15. .................................................................37 Hình 2.16: Hoạt động của vòng lặp for. ........................................................................37 Hình 2.17: Kết quả chƣơng trình ví dụ 2.16 ..................................................................38 Hình 2.18: Kết quả chƣơng trình ví dụ 2.18. .................................................................39 Hình 2.19: Kết quả chƣơng trình 2.19 ...........................................................................41 Hình 2.20: Kết quả chƣơng trình ví dụ 2.20 ..................................................................43 Hình 2.21: Kết quả chƣơng trình ví dụ 2.21 ..................................................................45 Hình 2.22: Kết quả chƣơng trình bài 2.1. ......................................................................46 Hình 2.23: Kết quả chƣơng trình bài 2.5 .......................................................................48 Hình 3.1: Kết quả chƣơng trình ví dụ 3.1. .....................................................................54 Hình 3.2. Kết quả chƣơng trình ví dụ 3.2. .....................................................................56 Hình 3.3: Kết quả chƣơng trình ví dụ 3.3 ......................................................................58 Hình 3.4: Kết quả chƣơng trình ví dụ 3.4. .....................................................................61 Hình 3.5: Kết quả chƣơng trình ví dụ 5 .........................................................................65 Hình 3.6: Kết quả chƣơng trình ví dụ 3.6. .....................................................................70 Hình 3.7: Kết quả chƣơng trình ví dụ 3.7 ......................................................................71 vi
  7. Tập bài giảng Lập trình cơ bản Hình 3.8: Kết quả chƣơng trình ví dụ 3.8 ......................................................................74 Hình 3.9: Kết quả chƣơng trình ví dụ 3.9. .....................................................................75 Hình 3.10: Nội dung tập tin tapnhiphan.data đƣợc mở bằng WordPad. .......................76 Hình 3.11: Kết quả chƣơng trình ví dụ 3.11 ..................................................................78 Hình 3.12: Kết quả chƣơng trình ví dụ 3.12. .................................................................82 Hình 3.13: Kết quả chƣơng trình ví dụ 3.13 ..................................................................84 Hình 3.14: Kết quả chƣơng trình ví dụ 3.14 ..................................................................86 Hình 3.15: Kết quả chƣơng trình ví dụ 3.15. .................................................................89 Hình 3.16: Kết quả chƣơng trình ví dụ 3.16 ..................................................................91 Hình 3.17: Kết quả chƣơng trình ví dụ 3.17 ..................................................................94 Hình 3.18: Kết quả chƣơng trình ví dụ 3.18. .................................................................97 Hình 3.19: Kết quả chƣơng trình ví du 3.19. .................................................................99 Hình 3.20: Kết quả chƣơng trình ví dụ 3.20. ...............................................................103 Hình 3.21: Kết quả chƣơng trình bài 3.1 .....................................................................105 Hình 3.22: Kết quả chƣơng trình bài 3.3 .....................................................................107 Hình 3.23: Kết quả chƣơng trình bài 3.4 .....................................................................109 Hình 3.24: Kết quả chƣơng trình bài 3.7 .....................................................................112 Hình 3.25: Kết quả chƣơng trình bài 3.9 .....................................................................115 Hình 4.1: Giao diện ví dụ 4.1 ......................................................................................117 Hình 4.2: Các bƣớc tạo ứng dụng Windows Forms Application ................................118 Hình 4.3: Giao diện ứng dụng Windows Forms Application sau khi tạo. ..................118 Hình 4.4: Cửa sổ Toolbox. ..........................................................................................119 Hình 4.5: Cửa sổ Solution Explorer. ...........................................................................119 Hình 4.6: Cửa sổ Properties của Form1. .....................................................................120 Hình 4.7: Thêm điều khiển Label vào Form1. ............................................................120 Hình 4.8: Thay đổi thuộc tính Text của điều khiển label1. .........................................121 Hình 4.9: Kết quả sau khi thay đổi thuộc tính Text của điều khiển label1 .................121 Hình 4.10: Cửa sổ Font................................................................................................121 Hình 4.11: Thay đổi Font và màu chữ của điều khiển label1. ....................................122 Hình 4.12: Chọn sự kiện Click ....................................................................................123 Hình 4.13: Phƣơng thức btThoat_Click ......................................................................123 Hình 4.14: Màu nền của MDI Form. ...........................................................................123 Hình 4.15: Form sau khi thay đổi một số thuộc tính theo ví dụ 4.4. ...........................125 Hình 4.16: Giao diện Form ví dụ 4.5...........................................................................126 Hình 4.17: Sử dụng điều khiển Label. .........................................................................129 Hình 4.18: Ví dụ về điều khiển LinkLabel. .................................................................130 vii
  8. Tập bài giảng Lập trình cơ bản Hình 4.19: Hiển thị trang https://www.google.com.vn/ trên trình duyệt web.............130 Hình 4.20: Ví dụ về điều khiển TextBox ....................................................................132 Hình 4.21: Giao diện ví dụ 4.8. ...................................................................................134 Hình 4.22: Một số định dạng cho thuộc tính Mask .....................................................136 Hình 4.23: Ví dụ về điều khiển MaskedTextBox ........................................................137 Hình 4.24: Ví dụ về điều khiển ComboBox ................................................................139 Hình 4.25: Cửa sở String Collection Editor ................................................................140 Hình 4.26: Ví dụ về điều khiển ListBox......................................................................143 Hình 4.27: Ví dụ về điều khiển CheckBox..................................................................147 Hình 4.28: Ví dụ về điều khiển CheckedListBox .......................................................150 Hình 4.29: Ví dụ về điều khiển RadioButton ..............................................................153 Hình 4.30: Ví dụ về điều khiển MenuStrip .................................................................155 Hình 4.31: Giao diện ví dụ 4.15 ..................................................................................156 Hình 4.32: Ví dụ về điểu khiển GroupBox..................................................................159 Hình 4.33: Ví dụ về điều khiển TabControl ................................................................160 Hình 4.34: Hộp thoại MessageBox .............................................................................160 Hình 4.35: Hộp thoại MessageBox chỉ có nội dung....................................................160 Hình 4.36: Hộp thoại MessageBox có thêm tiều đề ....................................................161 Hình 4.37: Hộp thoại MessageBox có thêm tùy chỉnh nút bấm..................................161 Hình 4.38: Hộp thoại MessageBox có thêm tùy chỉnh biểu tƣợng .............................161 Hình 4.39: Hộp thoạiMessageBox ..............................................................................162 Hình 4.40: Xuất hiện hộp thoại MessageBox khi click chọn nút Yes. .......................162 Hình 4.41: Giao diện ví dụ 4.16 ..................................................................................163 Hình 4.42: Giao diện ví dụ 4.17 và tập tin songuyen.txt đƣợc tạo ra..........................165 Hình 4.43: Giao diện ví dụ 4.18 ..................................................................................166 Hình 4.44: Giải bất phƣơng trình ................................................................................167 Hình 4.45: Kết quả chạy chƣơng trình giải bất phƣơng trình .....................................169 HInh 4.46: Giao diện ví dụ bài tập 2 ...........................................................................170 Hình 4.47: Ứng dụng từ điển đơn giản ........................................................................170 HÌnh 4.48: Giao diện bài tập Xếp Ô ............................................................................170 Hình 4.49: Giao diện bài tập Bàn phím ký tự..............................................................171 Hình 4.50: Giao diện ví dụ Lucky Seven ....................................................................171 Hình 4.51: Bài tập mảng một chiều .............................................................................172 Hình 4.52: Kết quả thiết kế Form bài tập mảng một chiều .........................................176 Hình 4.53:Kết quả chạy chƣơng trình khi kích vào nút bổ sung .................................182 Hình 4.54: Kết quả chạy chƣơng trình khi kích vào nút loại bỏ .................................182 viii
  9. Tập bài giảng Lập trình cơ bản Hình 4.55: Kết quả chạy chƣơng trình khi kích vào nút tìm kiếm ..............................183 Hình 4.56: Bài tập về mảng hai chiều .........................................................................184 Hình 4.57: Kết quả thiết kế Form bài tập mẫu về mảng hai chiều ..............................186 Hình 4.58: Kết quả chạy chƣơng trình bài tập mẫu về mảng hai chiều ......................190 Hình 4.59: Chƣơng trình xử lý chuỗi ..........................................................................191 Hình 4.60: Kết quả thiết kế Form chƣơng trình xử lý xâu .........................................193 Hình 4.61: Kết quả chạy chƣơng trình xử lý xâu ........................................................196 Hình 4.62: Chuẩn hóa và đếm từ trong xâu.................................................................196 ix
  10. Tập bài giảng Lập trình cơ bản LỜI NÓI ĐẦU Ngôn ngữ C# là một ngôn ngữ đƣợc dẫn xuất từ C và C++, nhƣng đƣợc tạo từ nền tảng phát triển hơnvà thêm vào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụng hơn. Những đặc tính này có thể đƣợc tóm tắt nhƣ sau: C# là ngôn ngữ đơn giản, hiện đại, ngôn ngữ hƣớng đối tƣợng, ngôn ngữ mạnh mẽ và mềm dẻo, có ít từ khóa, hƣớng module. Ngay từ khi mới xuất hiện, C# đã có sức lôi cuốn, thu hút nhiều ngƣời và đƣợc sử dụng ở nhiều lĩnh vực khác nhau. Vì vậy, nhu cầu nghiên cứu, học tập môn học này ngày càng cao. Ở Việt Nam, mặc dù đã có một vài tài liệu hƣớng dẫn giảng dạy về C# nhƣng hầu nhƣ mới dừng lại ở mức độ lý thuyết trừu tƣợng, chƣa phù hợp với trình độ sinh viên trƣờng Đại học sự phạm Kỹ thuật Nam Định, vì vậy việc biên soạn tập bài giảng về ngôn ngữ C# và cụ thể tập bài giảng Lập trình cơ bản là một nhu cầu cấp thiết. Tập bài giảng đƣợc chia làm 4 chƣơng: Chƣơng 1: Tổng quan về .NET và C# Chƣơng 2: Cơ sở lập trình trong C# Chƣơng 3: Một số cấu trúc dữ liệu nâng cao Chƣơng 4: Lập trình trên Form Mỗi chƣơng trong tập bài giảng đều hệ thống hóa các kiến thức cơ bản, cần thiết. Tƣơng ứng với mỗi nội dung kiến thức đều có các ví dụ minh họa cụ thể, gắn với các ứng dụng thực tiễn. Đặc biệt, cuối tập bài giảng, tác giả đƣa ra một hệ thống các bài tập thực tế để sinh viên vận dụng củng cố lại kiến thức và kỹ năng. Với phần lý thuyết chi tiết, đầy đủ đƣợc trình bày một cách khoa học, logic và phần bài tập để củng cố kiến, hy vọng rằng tập bài giảng này sẽ mang lại cho sinh viên nhiều kiến thứchữu ích. Trong quá trình biên soạn, tập bài giảng không tránh khỏi những sai sót, rất mong đồng nghiệp và các em sinh viên góp ý kiến để tập bài giảng ngày càng đƣợc hoàn thiện hơn. Mọi sự đóng góp ý kiến xin gửi về Văn phòng Khoa Công nghệ thông tin-Trƣờng Đại học Sƣ phạm Kỹ thuật Nam Định-Phƣờng Lộc Hạ-Tp Nam Định. Nhóm biên soạn Nguyễn Thế Vinh – Nguyễn Thi ̣ Thu Thủy x
  11. Tập bài giảng Lập trình cơ bản CHƢƠNG 1: TỔNG QUAN VỀ .NET VÀ C# 1.1. Giới thiệu .NET 1.1.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. 1
  12. Tập bài giảng Lập trình cơ bản Hình 1.1: Cấu trúc của .Net Framework Các ngôn ngữ thuộc họ .Net Hiện tại các lập trình viên có thể sử dụng nhiều ngôn ngữ khác nhau để lập trình, có ngƣời thân thiện với ngôn ngữ này, có ngƣời thân thiện với ngôn ngữ khác. Có ngƣời làm việc rất tốt với ngôn ngữ Basic, trong khi đó, một số ngƣời khác thân thiện với ngôn ngữ Java. Những lập trình viên với khả năng thông thạo những ngôn ngữ khác nhau dƣờng nhƣ không thể cùng xây dựng một ứng dụng vì sự không tƣơng thích giữa các mã lệnh biên dịch. Để khắc phục tình trạng này, Microsoft đã đƣa ra giải pháp .Net Framework. Với .Net Framework, các lập trình viên có thể lập trình ở những ngôn ngữ khác nhau, sau khi biên dịch, kết quả thu đƣợc sẽ là các thƣ viện liên kết động .dll (dynamic linked library). Các thƣ viện này sẽ đƣợc các lập trình viên khác kế thừa và sử dụng lại. Visual Studio và Microsoft .Net Framework hỗ trợ các ngôn ngữ lập trình: Visual C++, Visual Basic .NET, Visual C#, Visual J#. Các ngôn ngữ lập trình trên đƣợc gọi chung là họ ngôn ngữ .NET. Các thƣ viện có sẵn của .Net Framework Thƣ viện lớp cơ sở của .NET là một tập hợp lớn các lớp đƣợc viết bởi Microsoft, những lớp này cho phép thao tác rất nhiều các tác vụ sẵn có trong Windows và có thể tạo các lớp của mình từ các lớp có sẵn trong thƣ viện lớp cơ sở của .NET dựa trên cơ chế thừa kế đơn. Thƣ viện lớp cơ sở của .NET rất trực quan và rất dễ sử dụng. 1.1.2. Giới thiệu Visual Studio .NET Microsoft Visual Studio là một môi trƣờng phát triển tích hợp (IDE) từ Microsoft. Nó đƣợc sử dụng để phát triển chƣơng trình máy tính cho Microsoft Windows, cũng nhƣ các trang web, các ứng dụng web và các dịch vụ web. Visual Studio sử dụng nền tảng phát triển phần mềm của Microsoft nhƣ Windows API, Windows Forms, Windows Presentation Foundation, Windows Store và Microsoft Silverlight. 2
  13. Tập bài giảng Lập trình cơ bản Visual Studio bao gồm một trình soạn thảo mã hỗ trợ IntelliSense cũng nhƣ cải tiến mã nguồn. Trình gỡ lỗi tích hợp hoạt động cả về trình gỡ lỗi mức độ mã nguồn và gỡ lỗi mức độ máy. Công cụ tích hợp khác bao gồm một mẫu thiết kế các hình thức xây dựng giao diện ứng dụng, thiết kế web, thiết kế lớp và thiết kế giản đồ cơ sở dữ liệu. Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên tập mã và gỡ lỗi hỗ trợ (mức độ khác nhau) hầu nhƣ mọi ngôn ngữ lập trình. Các ngôn ngữ tích hợp gồm có Visual C++, VB.NET (Visual Basic.NET), Visual C# và Visual F#. Ngoài ra Visual Studio còn hỗ trợ cho các ngôn ngữ khác nhƣ J++/J thăng, Python và Ruby thông qua dịch vụ cài đặt riêng rẽ. Nó cũng hỗ trợ XML/XSLT, HTML/XHTML, JavaScript và CSS. Hiện nay, một hệ thống thông tin thƣờng có những dạng ứng dụng sau: Ứng dụng Console phục vụ xử lý các vấn đề liên quan đến hệ thống và giao tiếp vào ra; Ứng dụng Desktop phục vụ xây dựng các phần mềm ứng dụng với giao diện thân thiện; Ứng dụng Internet phục vụ việc xây dựng các website; Đối với mỗi dạng ứng dụng khác nhau, Visual Studio cung cấp các dạng Project khác nhau. Các dạng Project đƣợc Visual Studio cung cấp gồm có: - Console Application: Cung cấp template cho ứng dụng Console - Windows Application: Cung cấp template cho ứng dụng Desktop - Class Library: Cung cấp template cho việc xây dựng thƣ viện liên kết động - ASP.NET Website: Cung cấp template cho việc xây dựng Website - ASP.NET Web Service: Cung cấp template cho việc xây dựng Web Service 1.2. Ngôn ngữ C# 1.2.1. Giới thiệu C# Ngôn ngữ C# đƣợc phát triển bởi đội ngũ kỹ sƣ của Microsoft, ngƣời đứng đầu là Anders Hejlsberg và Scott Wiltamuth. Trong đó Anders Hejlsberg đƣợc biết đến là tác giả của Turbo Pascal, một ngôn ngữ lập trình trên máy tính phổ biến. Và ông đứng đầu nhóm thiết kế Borland Delphi, một trong những thành công đầu tiên của việc xây dựng môi trƣờng phát triển tích hợp (IDE) cho lập trình client/server. Ngôn ngữ C# là một ngôn ngữ đƣợc dẫn xuất từ C và C++, nhƣng nó đƣợc tạo từ nền tảng phát triển hơn và thêm vào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụng hơn. Nhiều trong số những đặc tính này khá giống với những đặc tính có trong ngôn ngữ Java. Không dừng lại ở đó, Microsoft đƣa ra một số mục đích khi xây dựng ngôn ngữ này. Những mục đích này đƣợc đƣợc tóm tắt nhƣ sau: - C# là ngôn ngữ đơn giản - C# là ngôn ngữ hiện đại 3
  14. Tập bài giảng Lập trình cơ bản - C# là ngôn ngữ hƣớng đối tƣợng - C# là ngôn ngữ mạnh mẽ và mềm dẻo - C# là ngôn ngữ có ít từ khóa - C# là ngôn ngữ hƣớng module C# là ngôn ngữ đơn giản C# loại bỏ một số sự phức tạp của những ngôn ngữ nhƣ Java và C++, bao gồm việc loại bỏ những macro, những template, đa kế thừa và lớp cơ sở ảo (virtual base class). Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn đến những vấn đề cho các ngƣời phát triển C++. Nếu là ngƣời học ngôn ngữ C# đầu tiên thì chắc chắn là sẽ không trải qua thời gian tìm hiểu về những vấn đề trên. Nhƣng khi đó sẽ không biết đƣợc hiệu quả của ngôn ngữ C# khi loại bỏ những vấn đề đó. Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++. Nếu đãquen với C và C++ hoặc thậm chí là Java, sẽ thấy C# khá giống về diện mạo, cú pháp, biểu thức, toán tử và những chức năng khác đƣợc lấy trực tiếp từ ngôn ngữ C và C++, nhƣng nó đã đƣợc cải tiến để làm cho ngôn ngữ đơn giản hơn. Một vài trong các sự cải tiến là loại bỏ các dƣ thừa, hay là thêm vào những cú pháp thay đổi. Ví dụ nhƣ, trong C++ có ba toán tử làm việc với các thành viên là ::, . và ->. Để biết khi nào dùng ba toán tử này cũng phức tạp và dễ nhầm lẫn. Trong C#, chúng đƣợc thay thế với một toán tử duy nhất gọi là . (dot). Đối với ngƣời mới học thì điều này và những việc cải tiến khác làm bớt nhầm lẫn và đơn giản hơn. C# là ngôn ngữ hiện đại Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính nhƣ là xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng và bảo mật mã nguồn là những đặc tính đƣợc mong đợi trong một ngôn ngữ hiện đại. C# chứa tất cả những đặc tính trên. Nếu là ngƣời mới học lập trình có thể sẽ cảm thấy những đặc tính trên phức tạp và khó hiểu. Tuy nhiên, cũng đừng lo lắng sẽ dần dần đƣợc tìm hiểu những đặc tính qua các chƣơng trong tập bài giảng này. C# là ngôn ngữ hƣớng đối tƣợng Những đặc điểm chính của ngôn ngữ hƣớng đối tƣợng (Object-oriented language) là sự đóng gói (encapsulation), sự kế thừa (inheritance) và đa hình (polymorphism). C# hỗ trợ tất cả những đặc tính trên. C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo Nhƣ đã đề cập trƣớc, với ngôn ngữ C# chỉ bị giới hạn ở chính bởi bản thân hay là trí tƣởng tƣợng của lập trình viên. Ngôn ngữ này không đặt những ràng buộc lên những việc có thể làm. C# đƣợc sử dụng cho nhiều các dự án khác nhau nhƣ là tạo ra 4
  15. Tập bài giảng Lập trình cơ bản ứng dụng xử lý văn bản, ứng dụng đồ họa, bảng tính, hay thậm chí những trình biên dịch cho các ngôn ngữ khác. C# là ngôn ngữ ít từ khóa C# là ngôn ngữ sử dụng giới hạn những từ khóa. Nhiều ngƣời có thể nghĩ rằng một ngôn ngữ có nhiều từ khóa thì sẽ mạnh hơn. Điều này không phải sự thật, ít nhất là trong trƣờng hợp ngôn ngữ C#, có thể thấy rằng ngôn ngữ này có thể đƣợc sử dụng để xây dựng bất cứ ứng dụng nào. abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while Bảng 1.1: Từ khóa của ngôn ngữ C#. C# là ngôn ngữ hƣớng module Mã nguồn C# có thể đƣợc viết trong lớp, những lớp này chứa các phƣơng thức thành viên của nó. Lớp và những phƣơng thức có thể đƣợc sử dụng lại trong ứng dụng hay các chƣơng trình khác. Bằng cách truyền các mẫu thông tin đến lớp hay phƣơng thức có thể tạo ra những mã nguồn dùng lại có hiệu quả. 1.2.2. Các bƣớc chuẩn bị cho chƣơng trình Thông thƣờng, trong việc phát triển phần mềm, ngƣời phát triển phải tuân thủ theo quy trình phát triển phần mềm một cách nghiêm ngặt và quy trình này đã đƣợc chuẩn hóa. Tuy nhiên trong phạm vi là tìm hiểu một ngôn ngữ mới và viết những 5
  16. Tập bài giảng Lập trình cơ bản chƣơng trình nhỏ thì không đòi hỏi khắt khe việc thực hiện theo quy trình. Nhƣng để giải quyết đƣợc những vấn đề thì cũng cần phải thực hiện đúng theo các bƣớc sau: - Xác định mụctiêu của chƣơngtrình. - Xác định những phƣơng pháp giải quyếtvấn đề. - Tạo mộtchƣơngtrình để giảiquyếtvấn đề. - Thựcthi chƣơng trình để xemkết quả. Ví dụ để viết chƣơng trình xử lý văn bản đơn giản, mục tiêu chính là xây dựng chƣơng trình cho phép soạn thảo và lƣu trữ những chuỗi ký tự hay văn bản. Nếu không có mục tiêu thì không thể viết đƣợc chƣơng trình hiệu quả. Bƣớc thứ hai là quyết định đến phƣơng pháp để viết chƣơng trình. Bƣớc này xác định những thông tin nào cần thiết đƣợc sử dụng trong chƣơng trình, các hình thức nào đƣợc sử dụng. Từ những thông tin này rút ra đƣợc phƣơng pháp để giải quyết vấn đề. Bƣớc thứ ba là cài đặt, bƣớc này có thể dùng các ngôn ngữ khác nhau để cài đặt, Trong phạm vi của tập bài giảng này là dùng C#. Và bƣớc cuối cùng là phần thực thi chƣơng trình để xem kết quả. 1.2.3. Xây dựng chƣơng trình C# đơn giản Yêu cầu: Xây dựng ứng dụng Console thực hiện các công việc sau: - Hiển thị chuỗi thông báo ―Chao mung den voi C# 2010‖ ra màn hình; - Thực hiện nhập hai số thực từ bàn phím và hiển thị số lớn nhất trong hai số Hướng dẫn thực hiện - Bƣớc1: Khởi động Visual Studio 2010 Chọn Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010. - Bƣớc 2: Tạo một Project mới Chọn menu File | New | Project - Bƣớc 3: Thiết lập lựa chọn và thực hiện khai báo nhƣ hình 1.2 theo các bƣớc sau. Bƣớc 3.1: Chọn ngôn ngữ là Visual C# và kiểu Template là Windows. Bƣớc 3.2: Chọn kiểu ứng dụng Console Application. Bƣớc 3.3: Đặt tên cho Project Bƣớc 3.4: Đƣờng dẫn tới thƣ mục chứa Project Bƣớc 3.5: Kích chuột vào nút Ok để tạo Project mới 6
  17. Tập bài giảng Lập trình cơ bản 3.1 1 3.2 3.3 3.4 3.5 Hình 1.2: Các bước lựa chọn một Project mới Visual Studio 2010 Ghi chú: Nếu muốn tạo một Project sử dụng ngôn ngữ khác thì có thể chọn ngôn ngữ đó trong mục Other Languages. Như ở trên hình 1.2, có thể chọn Visual Basic hoặc Visual C++. - Bƣớc 4: Sau khi tạo xong Project mới, chọn tập tin Program.cs trong cửa sổ Solution Explorer nhƣ hình 1.3. Trong phƣơng thức Main, thêm đoạn mã lệnh sau: // Xuat ra man hinh chuoi thong bao 'Chao mung ban den voi C# 2010' Console.WriteLine("Chao mung ban den voi C# 2010"); // Nhập hai số thực a, b từ bàn phím //Thực hiện hai báo hai biến thực a, b float a, b; //Thực hiện nhập a Console.Write("Nhap a = "); a = float.Parse(Console.ReadLine()); //Thực hiện nhập a Console.Write("Nhap b = "); b = float.Parse(Console.ReadLine()); //Khai báo biến max và tìm số lớn nhất trong hai số a, b float max; max = a; if (max < b) max = b; Console.WriteLine("So lon nhat = {0}", max); System.Console.ReadLine(); 7
  18. Tập bài giảng Lập trình cơ bản Hình 1.3: Tập tin Program.cs - Bƣớc 5: Để chạy chƣơng trình, nhấn F5 hoặc ấn vào nút . Kết quả hình 1.4. Hình 1.4: Kết quả chương trình Vidu1.1 Ví dụ đơn giản trên đƣợc gọi là ứng dụng Console, ứng dụng này đƣợc giao tiếp thông qua bàn phím và không có giao diện ngƣời dùng (User Interface), nhƣ các ứng dụng thƣờng thấy trong Windows. Trong các chƣơng xây dựng các ứng dụng nâng cao trên Windows hay Web thì mới dùng các các giao diện đồ họa. Còn để tìm hiểu về ngôn ngữ C# thuần tuý thì cách tốt nhất là viết các ứng dụng Console. Trong ứng dụng đơn giản trên,có sử dụng phƣơng thức WriteLine() của lớp Console. Phƣơng thức này sẽ xuất ra màn hình chuỗi tham số đƣa vào, cụ thể là chuỗi ―Chao mung ban den voi C# 2010‖ và sau đó đƣa con trỏ màn hình xuống đầu dòng tiếp theo, ngoài ra có thể sử dụng phƣơng thức Write() để hiển thị chuỗi nhƣng không đƣa con trỏ xuống đầu dòng tiếp theo. Tiếp theo là thực hiện khai báo hai số thực là a, b và thực hiện nhập dữ liệu cho hai biến thức này. float a, b; //Thực hiện nhập a Console.Write("Nhap a = "); a = float.Parse(Console.ReadLine()); //Thực hiện nhập a 8
  19. Tập bài giảng Lập trình cơ bản Console.Write("Nhap b = "); b = float.Parse(Console.ReadLine()); Phƣơng thức ReadLine() trả về một chuỗi đƣợc nhập từ bàn phím và phƣơng thức phƣơng thức float.Parse() trả về một số thực tƣơng ứng với chuỗi nhập vào. Sau đó là đoạn mã đƣợc dùng để tìm số lớn nhất trong hai biến a, b và hiển thị kết quả ra màn hình. float max; max = a; if (max < b) max = b; Console.WriteLine("So lon nhat = {0}", max); Sau khi khai báo biến max và gán giá trị của biến a cho max, câu lệnh if sẽ thực hiện so sánh max với b, nếu max nhỏ hơn b thì giá trị của b cho max và hiển thị ra thông báo số lớn nhất. Câu lệnh cuối cùng Console.ReadLine() cuối chƣơng trình đƣợc dùng với mục đích đợi sau khi ấn phím Enter sẽ đóng lại chƣơng trình đang chạy. 1.2.4. Chú thích trong chƣơng trình C# Một chƣơng trình đƣợc viết tốt thì cần phải có chú thích các đoạn mã đƣợc viết. Các đoạn chú thích này sẽ không đƣợc biên dịch và cũng không tham gia vào chƣơng trình. Mục đích chính là làm cho đoạn mã nguồn rõ ràng và dễ hiểu. Trong ví dụ 1.1 có một dòng chú thích: // Xuat ra man hinh chuoi thong bao 'Chao mung ban den voi C# 2010' Một chuỗi chú thích trên một dòng thì bắt đầu bằng ký tự ―//‖. Khi trình biên dịch gặp hai ký tự này thì sẽ bỏ qua dòng đó. Ngoài ra C# còn cho phép kiểu chú thích cho một hay nhiều dòng và phải khai báo ―/*‖ ở phần đầu chú thích và kết thúc chú thích là ký tự ―*/‖. Ví dụ 1.2: Minh họa dùng chú thích trên nhiều dòng. namespace Vidu1_2 { class Program { static void Main(string[] args) { /* Xuat ra man hinh chuoi ‘chao mung’ Su dung ham WriteLine cua lop System.Console */ System.Console.WriteLine("Chao mung ban den voi C# 2010"); System.Console.ReadLine(); }}} Kết quả thực thi chƣơng trình: 9
  20. Tập bài giảng Lập trình cơ bản Hình 1.5: Kết quả chương trình ví dụ 1.2. 1.2.5. Namespace Mã nguồn bên trong Framework đƣợc tổ chức bên trong namespace. Có hàng trăm namespace bên trong Framework đƣợc sử dụng để tổ chức hàng ngàn lớp đối tƣợng và các kiểu dữ liệu khác.Một vài namespace thì đƣợc lƣu trữ bên trong namespace khác. Namespace là một gói những thực thể có thuộc tính và hành vi độc lập với bên ngoài. Những ƣu điểm của namespace đƣợc liệt kê nhƣ sau: - Tránh đƣợc sự trùng lặp tên giữa các lớp. - Cho phép tổ chức mã nguồn một cách có khoa học và hợp lý. Khai báo một Namespace namespace NamespaceName { // nơi chứa đựng tất cả các class } Trong đó, - namespace: là từ khóa khai báo một NameSpace - NamespaceName: là tên của một Namespace Ví dụ: namespace CSharpProgram { class Basic { } class Advanced { } } 10
nguon tai.lieu . vn