Bài giảng môn Kỹ thuật lập trình - Chương 1: Tổng quan lập trình C#

Dữ liệu Dữ liệu đầu vào Dữ liệu đầu ra Dữ liệu trong quá trình xử lý Ví dụ  Chương trình giải PT bậc 2  Chương trình tính số tiền nhận được khi gửi tiết kiệm  Chương trình tính tiền điện Kiểu dữ liệu Kiểu số Kiểu ký tự Kiểu chuỗi Kiểu ngày tháng Kiểu hình ảnh 

pdf58 trang | Chia sẻ: thanhle95 | Lượt xem: 434 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng môn Kỹ thuật lập trình - Chương 1: Tổng quan lập trình C#, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Chương 1 Tổng quan lập trình C# Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Nội dung Biến và khai báo biến Các phép toán Các hàm có sẵn của C# Phát biểu điều kiện Phát biểu lặp Hàm Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Dữ liệu Dữ liệu đầu vào Dữ liệu đầu ra Dữ liệu trong quá trình xử lý Ví dụ  Chương trình giải PT bậc 2  Chương trình tính số tiền nhận được khi gửi tiết kiệm  Chương trình tính tiền điện Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Kiểu dữ liệu Kiểu số Kiểu ký tự Kiểu chuỗi Kiểu ngày tháng Kiểu hình ảnh  Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Biến Biến  Là tên gọi cho một vùng nhớ (bên trong bộ nhớ máy tính khi chương trình được chạy) có khả năng chứa được một giá trị = một dữ liệu  Được khai báo và sử dụng để chứa dữ liệu của chương trình Khai báo biến  kiểu_biến tên_biến [= giá_trị];  Ví dụ • int age; • string chuoi = “xin chao”; Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đặt tên biến Tên biến phân biệt chữ hoa và chữ thường  tenBien khác với TenBien và Tenbien Không bắt đầu bằng số Không chứa các ký tự đặt biệt như ~ ! @ # $ % ^ & * ( ) Không đặt tên biến trùng với từ khoá  string, int, private  tên không hợp lệ Quy tắc camel Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Kiểu biến Kiểu biến Mô tả bool {true, false}. Giá trị mặc định : false char [0, 65535] Số nguyên không dấu 16 bit, thường dùng để lưu trữ mã ASCII, Unicode của các ký tự. Giá trị mặc định : 0 DateTime [ – 12:00:00 AM, – 11:59:59.9999999 PM] 64 bit, lưu trữ các thông tin về ngày tháng và thời gian. Giá trị mặc định : 1/1//0001 – 0:00:00 decimal Số thực có dấu 128 bit (96 bit phần nguyên và 32 bit phần thập phân). Giá trị mặc định : 0 double Số thực có dấu 64 bit Giá trị mặc định : 0 int Số nguyên có dấu 32 bit [-231, 231) Giá trị mặc định: 0 string Mảng các ký tự thuộc kiểu Char. Giá trị mặc định : Nothing (không phải chuỗi rỗng) Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Một số vấn đề nâng cao Kiểu sơ cấp (đơn trị) & Kiểu đối tượng (đa trị) Tham chiếu Kiểu biến do người lập trình tự định nghĩa Khái niệm Cấu trúc dữ liệu của chương trình Kiểu mảng Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các phép toán Phép gán = += -= Phép toán toán học cơ bản + - * / % ^ Phép toán so sánh == > = <= Phép toán logic ! && || Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phép toán nâng cao Phép gán kết hợp : += -= *= /= Phép toán trên bit ! & | Vấn đề về phù hợp kiểu trong phép gán  Ép kiểu (Type-casting/Type converting)  Implicit convert & Explicit convert Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Một số hàm có sẵn Hàm nhập/xuất  Console.ReadLine  Console.Write/Console.WriteLine Hàm chuyển đổi kiểu Hàm toán học cơ bản Hàm xử lý trên kiểu dữ liệu chuỗi Hàm xử lý trên kiểu dữ liệu ngày tháng Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu điều kiện if ( ) { ; } else { ; } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu điều kiện Ví dụ 1 if (i % 2 == 0) Console.WriteLine("i la so chan"); else Console.WriteLine("i la so le"); Ví dụ 2 if ((y % 4 == 0 &&y%100!=0) || y%400==0) Console.WriteLine("y la năm nhuận"); else Console.WriteLine("y không là năm nhuận"); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu điều kiện Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Toán tử 3 ngôi Có dạng: ? : Nếu đúng thì thực hiện, ngược lại thực hiện Là dạng rút gọn của ifelse Ví dụ  string a = (i % 2 == 0) ? “so chan” : “so le” Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu lựa chọn switch () { case : ; break; case : ; break; default: ; break; } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu lựa chọn Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu lựa chọn Ví dụ switch (i) { case 1: Console.WriteLine("so 1"); break; case 2: Console.WriteLine("so 2"); break; default: Console.WriteLine("default"); break; } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu dowhile Cú pháp: do { statement; }while(expression); ●Ý nghĩa: −B1:Statement được thực hiện −B2:Expression được định trị. −Nếu expression là true thì quay lại bước 1 −Nếu expression là false thì thoát khỏi vòng lặp. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu dowhile Để thoát vòng lặp: dùng break Để kết thúc sớm 1 vòng lặp: dùng continue Nhận xét:  Vòng lặp được chạy ít nhất 1 lần Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu dowhile Ví dụ n = 1; i = 1; do { n *= i; i++; } while (i<=5); Console.WriteLine("5! = {0}", n); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu while Cú pháp: while(expression) statement; ●Ý nghĩa: ●B1: Expression được định trị ●B2: Nếu kết quả là true thì statement thực thi và quay lại B1 ●B3: Nếu kết quả là false thì thoát khỏi vòng lặp while.  Để thoát vòng lặp: dùng break  Để kết thúc sớm 1 vòng lặp: dùng continue  Lệnh trong while có thể không được thực hiện lần nào Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu while Ví dụ n = 1; i = 1; while (i <= 5) { n *= i; i++; } Console.WriteLine("5 giai thua la : {0}", n); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu for • Cú pháp: for (Exp1; Exp2; Exp3) statement; • Ý nghĩa: − Exp1: là biểu thức khởi tạo được thực hiện. − Exp2: là biểu thức điều kiện − Exp3: biểu thức điều khiển lặp  Để thoát vòng lặp: dùng break  Để kết thúc sớm 1 vòng lặp: dùng continue Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu for Ví dụ int i; int n = 1; for(i=1; i<=5; i++) { n *= i; } Console.WriteLine("5 giai thừa là : {0}", n); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu foreach foreach( in ) { ; } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu foreach Ví dụ string str = "abcde"; string newCh = ""; string ch = ""; foreach(char c in str) { ch = char.ToUpper(c).ToString(); newCh += ch; } Console.WriteLine(newCh); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Phát biểu lặp  do while: phù hợp với suy nghĩ tự nhiên khi thiết kế thuật toán.  while: khắc phục một số trường hợp lỗi của phát biểu do while  for: cách viết ngắn gọn của phát biểu while, sử dụng khi điều kiện lặp phụ thuộc vào biến lặp và số lần lặp có thể biết trước  foreach: duyệt đối tượng trong tập danh sách Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Hàm  Hàm là một khối lệnh thực hiện một công việc hoàn chỉnh (module), được đặt tên và được gọi thực thi nhiều lần tại nhiều vị trí trong chương trình.  Hàm còn gọi là chương trình con ,phương thức, hành vi Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Hàm  Hàm có thể được gọi từ chương trình chính (hàm main) hoặc từ 1 hàm khác.  Hàm có giá trị trả về hoặc không. Nếu hàm không có giá trị trả về gọi là thủ tục (procedure)  Mục đích cuối cùng của hàm là??? Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Hàm Khai báo hàm ( , ) { Nội dung hàm; [return ]; } Đặt tên hàm  Tương tự cách đặt tên biến  Dùng động từ Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Hàm Ví dụ private int TinhGiaiThua(int n) { int giaiThua = 1; for (int i = 1; i <= n; i++) { giaiThua *= i; } return giaiThua; } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tham số hình thức & tham số thực Khi hàm cần nhận đối số (arguments) để thực thi thì khi khai báo hàm cần khai báo danh sách các tham số để nhận giá trị từ chương trình gọi. Các tham số này được gọi là tham số hình thức. • Ví dụ: int min(int a, int b) { if(a<b) return a; else return b; } Tham số hình thức Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tham số hình thức & tham số thực • Khi gọi hàm, ta cung cấp các giá trị thật, các giá trị này sẽ được sao chép vào các tham số hình thức và các giá trị thật được gọi là tham số thực. Ví dụ: Để tìm giá trị nhỏ nhất của 2 số 5 và 6 ta gọi hàm min(5, 6) min(int a, int b) Tham số thực Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Truyền tham trị và tham chiếu trong hàm Hàm nào đó Đổi N = 8 N=5 N=5 Truyền tham trị: Sau khi thoát khỏi hàm nó vẫn giữ giá trị gốc (N vẫn =5) Hàm nào đó Đổi N = 8 N=5 N=8 Truyền tham biến: Sau khi thoát khỏi hàm, nó sẽ lấy giá trị bị thay đổi trong hàm (N bị đổi thành 8) Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Truyền tham trị và tham chiếu trong hàm • Truyền tham trị (call by value) –Sao chép giá trị của đối số vào tham số hình thức của hàm. –Những thay đổi của tham số không ảnh hưởng đến giá trị của đối số. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Truyền tham trị và tham chiếu trong hàm • Truyền tham chiếu (call by reference) –Sao chép địa chỉ của đối số vào tham số hình thức. Do đó, những thay đổi đối với tham số sẽ có tác dụng trên đối số. • Sử dụng từ khoá ref hoặc out • Tham số kiểu đa trị (mảng, đối tượng) mặc định là truyền theo tham chiếu (tức là không cần dùng từ khóa ref hoặc out) Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Truyền tham trị và tham chiếu trong hàm Ví dụ private int TangSo(out int i) { i = i + 1; return i; } int a = 10; int b = TangSo(out a); Kết quả  a = 11  b = 11 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Hàm đệ qui Thuật toán đệ qui  Giải bài toán bằng cách rút gọn liên tiếp bài toán ban đầu thành bài toán cũng tương tự nhưng có dữ liệu đầu vào nhỏ hơn  Ví dụ • n! có thể được định nghĩa bằng cách qui nạp như sau: • 0! = 1, • n! = n*(n-1)!, với mọi n > 0. • Bài toán tính N! bây giờ thành tính N*(N-1)! Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Hàm đệ quy  Phân loại đệ qui *Đệ qui tuyen tı́nh. *Đệ qui nhị phân. *Đệ qui phi tuyen. *Đệ qui ho tương. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui tuyến tính Trong thân hàm có duy nhất một lời gọi hàm gọi lại chính nó một cách tường minh: TenHam () { if (điều kiện dừng) { ... //Trả về giá trị hay kết thúc công việc } //Thực hiện một số công việc (nếu có) . . . TenHam (); //Thực hiện một số công việc (nếu có) } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui tuyến tính Ví dụ: Tı́nh S (n) = 1 + 2 + 3 + L + n - Điều kiện dừng: S(0) = 0. - Qui tắc (công thức) tính: S(n) = S(n-1) + n. long TongS (int n) { if(n==0) return 0; return ( TongS(n-1) + n ); } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui nhị phân Trong thân của hàm có hai lời gọi hàm gọi lại chı́nh nó một cách tường minh: TenHam () { if (đieu kiện dừng) { ... //Trả ve giá trị hay ke t thúc công việc } //Thực hiện một so công việc (neu có) . . .TenHam (); //Giải quye t van đe nhỏ hơn //Thực hiện một so công việc (neu có) . . . TenHam (); //Giải quye t van đe còn lại //Thực hiện một so công việc (neu có) } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui nhị phân Vı́ dụ: Tı́nh so hạng thứ n của dãy Fibonaci được định nghı̃a như sau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; Điều kiện dừng: f(0) = f(1) = 1. long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2); } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui phi tuyến Trong thân của hàm có lời gọi hàm gọi lại chıńh nó được đặt bên trong vòng lặp: TenHam () { for (int i = 1; i<=n; i++) { //Thực hiện một so công việc (neu có) if (đieu kiện dừng) { ... //Trả ve giá trị hay ket thúc công việc } else { //Thực hiện một so công việc (neu có) TenHam (); } } } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui phi tuyến Vı́ dụ: Tı́nh so hạng thứ n của dãy {Xn} được điṇh nghı̃a như sau: X0 =1 ; Xn = n2X0 + (n-1) 2X1 + + 1 2Xn-1 ; Điều kiện dừng:X(0) = 1. long TinhXn (int n) { if(n==0) return 1; long s = 0; for (int i=1; i<=n; i++) s = s + i * i * TinhXn(n-i); return s; } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui tương hỗ Trong thân của hàm này có lời gọi hàm đen hàm kia và trong thân của hàm kia có lời gọi hàm tới hàm này. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui tương hỗ TenHam2 (); TenHam1 () { //Thực hiện một so công việc (neu có) TenHam2 (); //Thực hiện một so công việc (neu có) } TenHam2 () { //Thực hiện một so công việc (neu có) TenHam1 (); //Thực hiện một so công việc (neu có) } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đệ qui tương hỗ Vı́ dụ: Tı́nh so hạng thứ n của hai dãy {Xn}, {Yn} được định nghıã như sau: X0 =Y0 =1 ; Xn = Xn-1 + Yn-1; (n>0) Yn = n 2Xn-1 + Yn-1; (n>0) - Điều kiện dừng:X(0) = Y(0) = 1. long TinhXn (int n) { if(n==0) return 1; return TinhXn(n-1) + TinhYn(n-1); } long TinhYn (int n) { if(n==0) return 1; return n*n*TinhXn(n-1) + TinhYn(n-1); } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Cơ chế hoạt động của Đệ qui  Hoạt động theo cơ chế LIFO (LAST IN FIRST OUT)  Dùng stack để lưu vết dữ liệu và chỉ thị lệnh Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Cơ chế hoạt động của Đệ qui  Minh họa Đệ qui giai thừa Ví dụ tính n! với n=3 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Cơ chế hoạt động của Đệ qui  Minh họa Đệ qui chuyển cơ số 10 sang cơ số 2 void H10toH2(int n) { if (n <= 0) return; int t = n % 2; H10toH2(n / 2); Console.Write(t); } H10toH2(11); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Cơ chế hoạt động của Đệ qui  Minh họa Đệ qui Fibonacci long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2); } 5 4 3 3 2 2 1 2 1 1 01 0 1 0 1 1 1 1 1 1 1 1 Kết quả =8 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Cơ chế hoạt động của Đệ qui  Minh họa Đệ qui Tháp Hà Nội Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Cơ chế hoạt động của Đệ qui  Minh họa Đệ qui Tháp Hà Nội Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khử đệ qui  Những giải thuật có thể cài đặt được bằng các vòng lặp thay thế cho đệ qui thì nên dùng vòng lặp, vì đệ qui rất tốn bộ nhớ, xử lý chậm.  Hãy khử đệ qui tính giai thừa  Hãy khử đệ qui tính số fibonacci Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Viết hàm và viết chương trình Về đối tượng phục vụ :  Đối tượng phục vụ của chương trình = người sử dụng  Đối tượng phục vụ của hàm = lập trình viên Về cấu trúc (các giai đoạn trong thiết kế) :  Chương trình: Nhập dữ liệu từ người sử dụng  Xử lý Xuất kết quả ra màn hình  Hàm: Qui định cú pháp (khai báo) hàmXử lý Trả về giá trị kết quả Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật END