Bài giảng Công nghệ .NET - Chương III: Căn bản về lập trình C#
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ .NET - Chương III: Căn bản về lập trình C#", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_cong_nghe_net_chuong_iii_can_ban_ve_lap_trinh_c.ppt
Nội dung text: Bài giảng Công nghệ .NET - Chương III: Căn bản về lập trình C#
- Bài giảng CÔNG NGHỆ . NET Thời lượng : 60 LT + 30 TH GV : ĐẶNG VĂN ĐÀNG 1
- Chương III CĂN BẢN VỀ LẬP TRÌNH C# - Biến và phạm vi hoạt động của biến - Kiểu dữ liệu - Các lệnh và vòng lặp - Lớp, phương thức - Mảng - Toán tử - Namespace - Console I/O - Chú thích, các định danh và từ khóa 2
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động 1.1 Biến: Một biến dùng để lưu trữ giá trị mang một kiểu dữ liệu nào đó. Cú pháp để khai báo một biến : [ modifier ] datatype identifer ; Trong đó: - modifier : public, private, protected, . . - datatype: là các kiểu dữ liệu int , long , float. . . - identifer là tên biến 3
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động Ví dụ : public int v ; Ta có thể gán cho biến một giá trị bằng toán tử "=". v = 25 ; Ta cũng có thể khai báo biến và khởi tạo cho biến một giá trị như sau : int v = 35 ; 4
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động Nếu ta khai báo nhiều biến có cùng kiểu dữ liệu sẽ có dạng như sau: int x = 17; y = 56; int x = 17; bool y = true ; // khai báo đúng int x = 10 , y = true; // khai báo có lỗi 5
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động 1.2 Phạm vi hoạt động(Scope) của biến: Scope của biến là vùng đoạn mã mà biến có thể được truy xuất. Trong một scope, không thể có hai biến cùng mang một tên trùng nhau. Ví dụ : { int x = 20; int x = 30; } 6
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động Ví dụ 1: using System; Namespace Basics { public class ScopeTest { public static int Main() { for (int i = 0; i = 0; i ) { Console.WriteLine(i); } // biến i ra khỏi phạm vi ở đây return 0; } } 7 }
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động Ví dụ 2: public static int Main() { không thể thực thi vì j vẫn còn trong phạm vi int j = 20; for (int i = 0; i < 10; i++) { int j = 30; Console.WriteLine(j + i); } return 0; } 8
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động Ví dụ 3: class ScopeTest3 { Đáp án: 70 static int j = 20; public static void Main() { int j = 30; Console.WriteLine(j+40); return; } } 9
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động 1.3. Hằng (constant) : Một constant là một biến nhưng giá trị không thể thay đổi được suốt thời gian thi hành chương trình. Ví dụ: const int a = 100; // giá trị này không thể bị thay đổi 10
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động Hằng có những đặc điểm sau : - Hằng bắt buộc phải được gán giá trị lúc khai báo. Khi đã được khởi gán thì không thể viết đè chồng lên. - Trị của hằng phải có thể được tính toán vào lúc biên dịch. - Hằng bao giờ cũng static, tuy nhiên ta không thể đưa từ khoá static vào khi khai báo hằng. 11
- Chương III .Căn bản về LT C# 1. Biến và phạm vi hoạt động Hằng có những thuận lợi sau : - Hằng làm cho chương trình đọc dễ dàng hơn, bằng cách thay thế những con số vô cảm bởi những tên mang đầy ý nghĩa hơn. - Hằng làm cho dễ sữa chương trình hơn. - Hằng làm cho việc tránh lỗi dễ dàng hơn, nếu bạn gán một trị khác cho một hằng thì trình biên dịch sẽ thông báo lỗi. 12
- Chương III .Căn bản về LT C# 2. Kiểu dữ liệu: Kiểu dữ liệu bẩm sinh như integer và floating- point numbers, character, và Boolean types. Kiểu nguyên: Name CTS Type Description Range (min:max) sbyte System.SByte 8-bit signed integer -128:127 (-27:27-1) short System.Int16 16-bit signed integer -32,768:32,767 (-215:215-1) -2,147,483,648:2,147,483,647 (- int System.Int32 32-bit signed integer 231:231-1) -9,223,372,036,854,775,808: long System.Int64 64-bit signed integer 9,223,372,036,854,775,807 (-263:263- 1) 13
- Chương III .Căn bản về LT C# 2. Kiểu dữ liệu: Kiểu nguyên: Name CTS Type Description Range (min:max) byte System.Byte 8-bit signed integer 0:255 (0:28-1) ushort System.UInt16 16-bit signed integer 0:65,535 (0:216-1) uint System.UInt32 32-bit signed integer 0:4,294,967,295 (0:232-1) 0:18,446,744,073,709,551,61 ulong System.UInt64 64-bit signed integer 5(0:264-1) 14
- Chương III .Căn bản về LT C# 2. Kiểu dữ liệu: Kiểu số chấm động: Name CTS Type Description Range (approximate) 32-bit single-precision ±1.5 × 10-45 to ±3.4 × Float System.Single floating- point 1038 64-bit double-precision ±5.0 × 10-324 to ±1.7 × Double System.Double floating- point 10308 15
- Chương III .Căn bản về LT C# 2. Kiểu dữ liệu: Kiểu số thập phân: Range Name CTS Type Description (approximate) 128-bit high precision ±1.0 × 10-28 to decimal System.Decimal decimal notation ±7.9 × 1028 16
- Chương III .Căn bản về LT C# 2. Kiểu dữ liệu: Kiểu Boolean : Name CTS Type Value Bool System.Boolean true or false Kiểu Character Type: Name CTS Type Value Represents a single 16-bit (Unicode) char System.Char character 17
- Chương III .Căn bản về LT C# 2. Kiểu dữ liệu: Kiểu tham khảo tiền định nghĩa: C# hỗ trợ hai kiểu dữ liệu được định nghĩa trước: Name CTS Type Description object System.Object The root type, from which all other types in the CTS derive (including value types) string System.String Unicode character string 18
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp 3.1 Cấu trúc điều kiện - Câu lệnh điều kiện if : Cú pháp như sau: if (condition) statement(s) [else statement(s)] 19
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp 3.1 Cấu trúc điều kiện Ví dụ 1: bool isZero; Int i=1; if (i == 0){ isZero = true; Console.WriteLine("i is Zero"); } else{ isZero = false; Console.WriteLine("i is Non-zero"); } 20
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp Ví dụ 2: static void Main(string[] args) { Console.WriteLine(“nhập vào 1 chuỗi"); string input=“CONN.NET”; //input = Console.ReadLine(); lấy chuỗi từ bàn phím vào if (input == "") Console.WriteLine(“ empty"); else if (input.Length 5&&< 10"); Console.WriteLine(“st-" + input); 21 }
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp 3.1 Cấu trúc điều kiện - Câu lệnh điều kiện switch : Cú pháp như sau: switch (biểu thức){ case biểu thức ràng buộc 1: câu lệnh case biểu thức ràng buộc 2: câu lệnh [default: câu lệnh mặc định] } 22
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp Ví dụ 3: Int i=102%2; switch (i) { case 1: Console.WriteLine(“i =1"); break; case 2: Console.WriteLine(“i =2"); break; case 3: Console.WriteLine(“i =3"); break; default: Console.WriteLine(“not 1,2,3"); break; 23 }
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp 3.2 Cấu trúc vòng lặp C# cung cấp cho chúng ta 4 vòng lặp khác nhau (for, while, do while, và foreach) cho phép chúng ta thực hiện một đoạn mã lặp lại đến khi đúng điều kiện lặp. 24
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp Vòng lặp For Cú pháp: for (initializer; condition; iterator){ statement(s) } Ví dụ: for (int i = 0; i < 100; i ++) { Console.WriteLine(i); } 25
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp Vòng lặp While Cú pháp: while(condition){ statement(s); } Ví dụ: Int i = 0; while (i!=45) { i++ ; } 26
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp Vòng lặp do While Cú pháp: do{ statement(s); }while(condition); Ví dụ: Int i = 0; Do{ i++; }while (i!=45); 27
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp Vòng lặp foreach: Cho phép bạn rảo qua tất cả các phần tử bản dãy hoặc các tập hợp khác, và tuần tự xem xét từng phần tử một. Cú pháp: foreach (type identifier in expression){ statement } 28
- Chương III .Căn bản về LT C# 3. Các lệnh và vòng lặp Ví dụ: foreach (string temp in Hoa){ Console.WriteLine(temp); } foreach (int temp in SoIn) { temp++; Console.WriteLine(temp); } 29
- Chương III .Căn bản về LT C# 4. Lớp, phương thức: 4.1 Lớp 4.2. Phương thức 30
- Chương III .Căn bản về LT C# 4.1. Lớp(Class): - Các class tạo nên một chương trình lớn trong C# - Lớp là một khuôn mẫu thiết yếu mà chúng ta cần tạo ra đối tượng. - Mỗi đối tượng chứa dữ liệu và các phương thức chế tác truy cập dữ liệu. - Lớp định nghĩa cái mà dữ liệu và hàm của mỗi đối tượng riêng biệt (được gọi là thể hiện) của lớp có thể chứa. 31
- Chương III .Căn bản về LT C# 4.1. Lớp(Class): Ví dụ: Lớp miêu tả một khách hàng (Customer) - CustomerID, - FirstName, - LastName, - Address, giữ thông tin cụ thể khách hàng. 32
- Chương III .Căn bản về LT C# 4.1. Lớp(Class): Ví dụ: Lớp miêu tả một khách hàng (Customer) class Customer { public int CustomerID; public string FirstName; public string LastName; } 33
- Chương III .Căn bản về LT C# 4.1. Lớp(Class): Function Members Modifier Description new Phương thức ẩn một phương thức kế thừa với cùng kí hiệu public Phương thức có thể được truy cập bất kỳ protected Phương thức có thể bị truy xuất không từ lớp nó thuộc hoặc từ lớp dẫn xuất; internal Phương thức có thể được truy cập không cùng assembly private Phương thức có thể được truy cập từ bên trong lớp nó phụ thuộc 34
- Chương III .Căn bản về LT C# 4.1. Lớp(Class): Function Members Modifier Description static Phương thức có thể không được tính trên trên một lớp thể hiển cụ thể virtual Phương thức bị ghi đè bởi một lớp dẫn xúât abstract Phương thức trừu tượng override Phương thức ghi đè một phương thức ảo kế thừa hoặc trừu tượng. sealed Phương thức ghi đè một phương thức ảo kế thừa, nhưng không thể bị ghi đè từ lớp kế thừa này extern Phương thức được thực thi theo bên ngoài từ một ngôn ngữ khác 35
- Chương III .Căn bản về LT C# 4.2. Phương thức(Methods): - Cú pháp khai báo trong C# gần như giống với cách khai báo trong C++ và Java. - Các phuơng thức kèm theo các từ khoá dùng bỗ nghĩa cho phương thức., kiểu giá trị trả về, các tham số nhập vào và phần thân nằm trong dấu ngoặc kép. - Cú pháp: [modifiers] return_type MethodName([parameters]) { // Thân phương thức } 36
- Chương III .Căn bản về LT C# 4.2. Phương thức(Methods): - Mỗi tham số có tên của kiểu của tham số và tên mà nó được kham khảo trong thân phương thức, và cả giá trị trả về nếu có. - Ví dụ : public bool IsPositive(int value) { if (value < 0) return false; return true; } - Gọi phương thức giống như c++. 37
- Chương III .Căn bản về LT C# 5. Mảng(Array): - Array là một cấu trúc dữ liệu cấu tạo bởi một số biến được gọi là những phần tử mảng. - Tất cả các phần tử này đều thuộc một kiểu dữ liệu. - Có thể truy xuất phần tử thông qua chỉ số (index), chỉ số bắt đầu bằng zero. - Có nhiều loại mảng (array): mảng một chiều, mảng nhiều chiều. 38
- Chương III .Căn bản về LT C# 5. Mảng(Array): - Mảng một chiều Cú pháp : type[ ] array_name; Ví dụ: int[] myIntegers; // mảng kiểu số nguyên string[] myString ; // mảng kiểu chuổi chữ 39
- Chương III .Căn bản về LT C# 5. Mảng(Array): - Khai báo mảng có chiều dài xác định với từ khoá new như sau: int[] myIntegers = new int[32]; integers[0] = 35;// phần tử đầu tiên có giá trị 35 integers[31] = 432;// phần tử 32 có giá trị 432 - Ta cũng có thể khai báo như sau: int[] integers; integers = new int[32]; string[] myArray = {"first", "second", "third"}; 40
- Chương III .Căn bản về LT C# 5. Mảng(Array): - Ta có thể tìm được chiều dài của mảng sau nhờ vào thuộc tính Length : int arrayLength = integers.Length - Nếu các thành phần của mảng là kiểu định nghĩa trước, ta có thể sắp xếp tăng dần vào phương thức static Array.Sort(): Array.Sort(myArray); - Chúng ta có thể đảo ngược mảng đã có nhờ vào static Reverse() : Array.Reverse(myArray); 41
- Chương III .Căn bản về LT C# 5. Mảng(Array): - Ví dụ: string[] artists = {"Leo", "Mon", "Van", "Klee"}; Array.Sort(artists); Array.Reverse(artists); foreach (string name in artists) { Console.WriteLine(name); } 42
- Chương III .Căn bản về LT C# 5. Mảng(Array): - Mảng nhiều chiều Cú pháp : type[, ] array_name; Ví dụ: int[,] myArray = new int[2,3]; int[,] myArray = new int[,]{ {1,2},{3,4},{5,6},{7,8}}; string[,] Music = { {"Lennon","John"}, {"McCartney","Paul"}, {"Harrison","George"}, {"Starkey","Richard"} }; 43
- Chương III .Căn bản về LT C# 6. Toán tử(Operators): Operators Decription ‘+’ , ‘-’ , ‘*’ , ‘/’ , ‘%’ Phép toán số học ‘&’ , ‘|’ , ‘^’ , ‘~’ , ‘&&’ , ‘||’ , ‘!’ Phép toán Logic ‘=‘ ,‘+=‘, ‘-=‘, ‘*=‘, ‘/=‘, ‘%=‘, Phép toán gán ‘&=‘, ‘|=‘, ‘^=‘ ,‘ >=‘ ‘==‘ ,‘!=‘, ‘ ’, ‘ =‘ Phép toán so sánh ‘++’ ,‘ ’ Tăng, giảm 1 đơn vị 44
- Chương III .Căn bản về LT C# 6. Toán tử(Operators): Operator Tương đương x++, ++x x = x + 1 x , x x = x - 1 x += y x = x + y x -= y x = x – y x *= y x = x * y x /= y x = x / y x %= y x = x % y x >>= y x = x >> y x <<= y x = x << y x &= y x = x & y x |= y x = x | y 45 x ^= y x = x ^ y
- Chương III .Căn bản về LT C# 7. Không gian tên(Namespace): Namespace cung cấp cho ta cách mà chúng ta tổ chức quan hệ giữa các lớp và các kiểu khác. Namespace là cách mà .NET tránh né việc các tên lớp, tên biến, tên hàm. . đụng độ vì trùng tên giữa các lớp. 46
- Chương III .Căn bản về LT C# 7. Không gian tên(Namespace): - Ta có thể khai báo nhiều namespace như sau: namespace Cong { namespace Nghe { namespace Net { class NamespaceExample { // Code for the class here } } } 47 }
- Chương III .Căn bản về LT C# 7. Không gian tên(Namespace): - Nên đoạn code có thể víêt như sau : namespace Cong.Nghe.Net { class NamespaceExample { // Code for the class here } } 48
- Chương III .Căn bản về LT C# 7. Không gian tên(Namespace): Câu lệnh using Từ khoá using giúp ta giảm thiểu việc phải gõ những namespace trước các hàm hành sự hoặc thuộc tính. Ví dụ: using Cong.Nghe; class Test { public static int Main() { Net.NamespaceExample Fun = new Net.NamespaceExample(); return 0; } } 49
- Chương III .Căn bản về LT C# 7. Không gian tên(Namespace): - Một cách sử dụng khác từ khoá using là gán những bí danh cho các lớp và namespace. - Thường được sử dụng cho những namespace có tên quá dài. Cú pháp : using alias = NamespaceName; 50
- Chương III .Căn bản về LT C# 7. Không gian tên(Namespace): Ví dụ: using System; using Intr = Cong.Nghe.Net; class Test { public static int Main() { Intr.NamespaceExample NSEx = new Intr.NamespaceExample(); Console.WriteLine(NSEx.GetNamespace()); return 0; } } 51
- Chương III .Căn bản về LT C# 8. Console I/O: - Console.Read() : Đọc một ký tự văn bản từ của sổ console, giá trị trả về sẽ là kiểu int, string tuỳ ý . - Console.Write() : Viết một giá trị ra của sổ window - Console.WriteLine(): Tương tự trên nhưng sẽ tự động xuống hàng khi kết thúc lệnh. 52
- Chương III .Căn bản về LT C# 9. Chú thích, các định danh 9.1 Chú thích: - Chú thích 1 dòng: //nội dung chú thích - Chú thích khối : /* Khối cần chú thích*/ 53
- Chương III .Căn bản về LT C# 9. Chú thích, các định danh 9.2 Các định danh: - Từ định danh là tên chúng ta đặt cho biến, để định nghĩa kiểu sử dụng như các lớp , cấu trúc, và các thành phần của kiểu này. - C# có một số quy tắc để định rõ các từ định danh như sau: Chúng phải bắt đầu bằng ký tự không bị gạch dưới Chúng ta không được sử dụng từ khoá làm từ định danh 54
- Chương III .Căn bản về LT C# 9. Chú thích, các định danh 9.3 Các từ khóa: C# có khoảng hơn 70 từ khóa abstract do implicit params switch as double in private this base else int protected throw bool enum interface public true break event internal readonly try byte explicit is ref typeof case extern lock return uint catch false long sbyte ulong char finally namespace sealed unchecked checked fixed new short unsafe class float null sizeof ushort const for object stackalloc using continue foreach operator static virtual decimal goto out string volatile default if override struct void 55 delegate while