Bài giảng Lập trình trên môi trường Window - Chương 2: Ngôn ngữ lập trình C cung cấp cho người học các kiến thức: Tổng quan về ngôn ngữ lập trình C, các cấu trúc điều khiển, phương thức, mảng, chuỗi. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Chương 2 NGÔN NGỮ LẬP TRÌNH C#
Giảng Viên: ThS Dương Thành Phết
Email: phetcm@gmail.com – YahooID: phetcm
LẬP TRÌNH TRÊN MÔI TRƯỜNG WINDOWS
Trang 31 TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C#
Là ngôn ngữ lập trình được xây dựng trên nền tảng ngôn ngữ C/C++/Java nhưng hoạt động trên Net Framework
Đặc điểm :
Hoạt động trên NET Framework
Dựa trên phương pháp thiết kế hướng đối tượng
Dùng cho cả 3 loại ứng dụng: Console, Winform, Webform
1.1 Giới thiệu ngôn ngữ lập trình C#
Trang 41.2 Từ khoá – Keywords
abstract add* 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 get* goto if implicit in int interface internal is lock long namespace new null object operator out override params partial* private protected public readonly ref remove return sbyte sealed set* short sizeof stackalloc static string struct switch this throw true
Là từ dành riêng sử dụng để giúp trình biên dịch xác định cấu trúc và tổ chức của mã nguồn
1 TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C#
Trang 61.4 Định danh (Identifier)
Định danh là việc xác định tên cho các thành phần trong mã nguồn như : tên biến, hàm, hằng, function…
Quy ước định danh trong C# :
Phân biệt chữ hoa thường
Quy ước đặt tên :
• Sử dụng 26 chữ cái (thường & hoa), 10 chữ số
• Dấu nối ( _ )
• Không dùng chữ số ở đầu
1 TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C#
Trang 71.5 Biến & khai báo biến
Biến là đối tượng lưu trữ các giá trị, dữ liệu trong một
chương trình
Khai báo : <kiểu dữ liệu> <tên_biến>;
Ví dụ : int x;
float a,b;
1 TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C#
Trang 81.6 Kiểu dữ liệu (Data Types)
Kiểu dữ liệu là các loại dữ liệu và phạm vi giá trị của
chúng trong bộ nhớ sử dụng để lưu trữ
Có 2 loại : kiểu dữ liệu dựng sẵn & kiểu dữ liệu tự
định nghĩa Một số kiểu dựng sẵn : int (int16, int32, int64), float, bool, string, char, double, long, decimal, short…
1 TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C#
Trang 9 Kiểu số nguyên(Integer)
Kiểu
C#
Kích thước (byte)
Kiểu .NET
Miền giá trị Mô tả
sbyte 1 Sbyte [-128 127] Nguyên có dấu
bool 1 Boolean true hoặc false Giá trị logic
short 2 Int16 [0 65.535] Nguyên không dấu int 4 Int32 Từ -2.147.483.647
đến 2.147.483.646
Nguyên có dấu
uint 4 Uint32 Từ 0 đến 4.294.967.295 Nguyên không dấu
1 TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C#
Trang 10 Kiểu dấu chấm động
Kiểu C#
Kích thước (byte)
Kiểu .NET
Miền giá trị Mô tả
float 4 Singgle Từ 3,4E-38
đến 3,4E+38
Kiểu dấu chấm động, với
7 chữ số có nghĩa double 8 Double Từ 1,7E308
đến 1,7E+308
Kiểu dấu chấm động có
độ chính xác gấp đôi, với 15 chữ số có nghĩa decimal 8 Decimal Có độ chính xác đến 28
con số, phải có hậu tố
“m” hoặc “M” theo sau gi
Trang 11 Kiểu chuỗi (String)
C# định nghĩa kiểu string như một kiểu dữ liệu cơ bản (khác với C, C++)
Kiểu string có thể chứa nội dung không giới hạn, vì đây là kiểu dữ liệu đối tượng được chứa ở bộ nhớ heap
Khai báo : string s = “Nguyen van a”;
1 TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C#
Trang 12<Kiểu dữ liệu> [ ] <Tên mảng> =
new <Kiểu dữ liệu> [Số phần tử];
Mảng hai chiều
<Kiểu dữ liệu> [ , ] <Tên mảng> =
new <Kiểu dữ liệu> [Số dòng, số cột];
1 TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C#
Trang 152 CẤU TRÚC ĐIỀU KHIỂN
Gồm các cấu trúc :
1 Rẽ nhánh: if…else
2 Lựa chọn: switch…case
3 Lặp: for, while, do…while, foreach
4 Các cấu trúc khác: break, continue
Trang 162.1 Cấu trúc rẽ nhánh
2 CẤU TRÚC ĐIỀU KHIỂN
Cấu trúc rẽ nhánh cho phép thực hiện một khối lệnh dựa vào kết quả của biểu thức điều kiện có 2 dạng:
if (biểu thức điều kiện) {
Trang 17Ví dụ: Giải và biện luận phương trình: ax+b=0
2 CẤU TRÚC ĐIỀU KHIỂN
Yêu cầu:
Nút Giải: Giải và biện luận phương trình bậc 1, ô kết quả
(txtketqua) cho biết phương trình có nghiệm, vô nghiệm hay
vô số nghiệm Trong trường hợp có nghiệm thì ô txtnghiem
sẽ hiện kết quả nghiệm
Trang 18switch (biểu thức)
case n1:
các câu lệnh ; break ;
case n2:
các câu lệnh ; break ;
………
case nk: <các câu lệnh> ;
break ; [default: các câu lệnh]
Phải là kiểu nguyên
2 CẤU TRÚC ĐIỀU KHIỂN
2.2 Cấu trúc lựa chọn
Trang 19Ví dụ:
2 CẤU TRÚC ĐIỀU KHIỂN
String thu="" ; switch (DataTime.Today.Day()) {
Trang 20for (<biểu thức khởi gán>; <bt điều kiện>; <bt tăng/giảm>) {
<khối lệnh>;
}
2 CẤU TRÚC ĐIỀU KHIỂN
2.3 Cấu trúc lặp For
Bước 1: Khởi gán cho biểu thức 1
Bước 2: Kiểm tra điều kiện của biểu thức 2
- Nếu biểu thức 2 đúng thì thực hiện các lệnh của vòng lặp, thực hiện biểu thức 3 Quay trở lại bước 2
- Ngược lại thoát khỏi lặp
Ví dụ: Tạo Project tính tổng giá trị dãy số từ n đến m (n<m)
Trang 21while (<biểu thức điều kiện>)
VD: Tạo Project tính tìm số đảo của 1 số nguyên n
Trong khi điều kiện lặp còn đúng, các câu lệnh trong thân
vòng lặp còn được thực hiện tiếp
Trang 22do { < khối lệnh> ; } while (biểu thức điều kiện);
2 CẤU TRÚC ĐIỀU KHIỂN
2.4 Cấu trúc lặp Do While
Thực hiện khối lệnh cho đến khi biểu thức điều kiện SAI
Trang 242 CẤU TRÚC ĐIỀU KHIỂN
2.6 Lệnh break:
Thoát khỏi các cấu trúc switch, while, for, do…while
chứa nó gần nhất
Tại thời điểm break không cần kiểm tra kết quả của
biểu thức điều kiện
Tuy nhiên, cần phân biệt với lệnh return là lệnh trả về
từ hàm, nghĩa là thoát khỏi hàm đang thi hành, nên cũng giúp thoát luôn khỏi tất cả các vòng lặp
Trang 252 CẤU TRÚC ĐIỀU KHIỂN
2.7 Lệnh continue:
Được sử dụng trong các vòng lặp while, for,
do…while
Khi lệnh continue được gọi thì chương trình sẽ quay
trở về đầu vòng lặp để bắt đầu lần lặp mới (có kiểm tra điều kiện lặp để xác định có lặp tiếp hay không)
Nếu có các lệnh còn lại (cùng trong vòng lặp) đặt sau
continue sẽ không được thực hiện
Trang 263 PHƯƠNG THỨC
Phương thức/Hàm con là một đoạn chương trình độc lập thực hiện trọn vẹn một công việc nhất định và trả về giá trị cho chương trình gọi nó
Trang 273.2 Cú pháp khai báo
<phạm vi> <Kiểu dữ liệu> TênPhươngThức([ds các tham số]);
Trong đó:
Kiểu dữ liệu của phương thức (đầu ra), gồm 2 loại
void: Không trả về giá trị (các phương thức Nhập/Xuất)
float / int / long / string / kiểu cấu trúc / … : Trả về 1 giá trị kết quả có kiểu dữ liệu tương ứng
Phạm vi
Xác định phạm vi hay cách phương thức được gọi
3 PHƯƠNG THỨC
Trang 28TênPhươngThức(danh sách tên các đối số);
Những phương thức loại này thường rơi vào những nhóm chức năng: Nhập/xuất dữ liệu , thống kê, sắp xếp, liệt kê
Trang 293 PHƯƠNG THỨC
VD: Viết chương trình liệt kê các số nguyên tố nhỏ hơn n
Trang 30Cài đặt phương thức:
static <Kiểu dữ liệu trả về> TênPhươngThức([ds các tham số]) {
<Kiểu dữ liệu trả về> kq;
Khai báo các biến cục bộ
Các câu lệnh / khối lệnh hay lời gọi đến phương thức khác
Trang 31VD: Viết chương trình nhập số nguyên dương n và tính tổng
Phân tích bài toán:
Input: n
Kiểu dữ liệu: số nguyên dương (uint)
Giá trị n không bị thay đổi trong quá trình tính tổng Output: Tổng S
Trả về giá trị của S
S là tổng các số nguyên dương Kiểu trả về của hàm là uint
0
; 3
Trang 32static ulong TongS(uint n) {
2
Trang 333.5.Truyền tham số
Tham số làm kết quả đầu ra: out
Tham số vừa làm đầu vào và đầu ra: ref
Dùng từ khóa ref hoặc out trước kiểu dữ liệu của khai báo tham số khi cài đặt phương thức và trước tên đối
số khi gọi phương thức
Lưu ý khi dùng ref hoặc out:
Nếu sử dụng từ khóa ref thì gọi phương thức cũng dùng ref (hoặc ngược lại cho từ khóa out)
3 PHƯƠNG THỨC
Trang 343.6 Lấy số ngẫu nhiên
Sử dụng lớp Random
Các phương thức :
Next () Trả về số ngẫu nhiên từ 0 đến 2,147,483,646
Next (giá trị tối đa) Trả về số ngẫu nhiên từ 0 đến giá trị tối đa -1
Next (giá trị tối
thiểu, giá trị tối đa)
Trả về số ngẫu nhiên từ giá trị tối thiểu đến giá trị tối đa -1
NextDouble () Trả về số thực (double) từ 0.0 đến nhỏ hơn 1.0
3 PHƯƠNG THỨC
Trang 363.7 Lấy ngày giờ hệ thống
int intNg = d.Day; intNg chứa giá trị ngày
int intTh = d.Month; intTh chứa giá trị tháng
int intNm = d.Year; intNm chứa giá trị năm
int intGio = d.Hour; intGio chứa giá trị giờ
int intPhut = d.Minute; intPhut chứa giá trị phút
int intGiay = d.Second; intGiay chứa giá trị giây
3 PHƯƠNG THỨC
Trang 374.1 Khai báo Mảng
Mảng là một tập hợp các phần tử có cùng kiểu, được xác định vị trí trong tập hợp bằng chỉ mục
<Kiểu DL> [] tên_mảng = new <kiểu dữ liệu>[kích thước];
Ví dụ: Khai báo mảng số nguyên a kích thước 10
int[] a = new int [10];
4 MẢNG
Trang 40 Khai báo chuỗi : string s;
Ghép chuỗi: +
string a = "Xin"; string b = "chào";
string c = a + " " + b; c = "Xin chào“
Hoặc
string.Concat(a, “ “, b); a = “Xin Chào”
Lấy chuỗi con: Substring()
string s="Lay chuoi con".Substring(4);
Lấy chuỗi con từ vị trí thứ 4 về sau: s = "chuoi con“
string s = "Lay chuoi con".Substring(4, 5);
5 CHUỖI
Trang 41Thay thế chuỗi con
Replace(chuỗi cần thay, chuỗi thay thế);
string s= "thay the chuoi.".Replace('t', 'T');
s = "Thay The chuoi"
s = "thay the chuoi.".Replace("th", "TH");
s = "THay THe chuoi"
5 CHUỖI
Trang 425 CHUỖI
Định dạng chuỗi
Format (định dạng, đối số cần định dạng);
Trang 43 Chiều dài chuỗi: Thuộc tính Length
string s = "Xin chào";
int n = s.Length; // n = 8
Tách chuỗi con theo ký hiệu phân cách cho trước
Ví dụ: In ra màn hình các từ trên từng dòng, mỗi từ cách
nhau bằng dấu phẩy (,) hoặc khoảng trắng string s = "Hom nay, ngay 02 thang 03 nam 2010";
foreach (string tu in s.Split(' ', ','))
5 CHUỖI
Trang 44Ví dụ: In ra từ có độ dài dài nhất trong chuỗi cho trước
(các từ cách nhau khoảng trắng hoặc dấu chấm câu)
string s = "Hom nay, ngay 02 thang 03 nam 2010";
string tumax = "";
foreach (string tu in s.Split(' ', ',', '.', '!', '?', ';'))
if (tu != "" && tu.Length > tumax.Length) tumax = tu;
txtKetqua.Text= "Tu dai nhat: " + tumax;
5 CHUỖI