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
58 trang |
Chia sẻ: thanhle95 | Lượt xem: 565 | Lượt tải: 1
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 tuye n tı́nh.
*Đệ qui nhị phân.
*Đệ qui phi tuye n.
*Đệ 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 (đie u 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 (ne u có)
. . .TenHam (); //Giải quye t va n đe nhỏ hơn
//Thực hiện một so công việc (ne u có)
. . . TenHam (); //Giải quye t va n đe còn lại
//Thực hiện một so công việc (ne 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 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 (ne u có)
if (đie u kiện dừng)
{ ...
//Trả ve giá trị hay ke t thúc công việc
}
else
{ //Thực hiện một so công việc (ne u 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 đe n 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 (ne u có)
TenHam2 ();
//Thực hiện một so công việc (ne u có)
}
TenHam2 ()
{
//Thực hiện một so công việc (ne u có)
TenHam1 ();
//Thực hiện một so công việc (ne 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 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àmXử 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