Câu lệnh • Các câu lệnh được viết trong thân của phương thức ở đây là phương thức Main • Thực hiện một công việc nào đó • Kết thúc bởi dấu chấm phẩy ; namespace HelloWorld { class Pro
Trang 2Ngôn ngữ lập trình C#
• Là sự kết hợp C++ và Java
• Hướng đối tượng
• Hỗ trợ kiểm soát và xử lý ngoại lệ (exception) tốt
• Các loại ứng dụng: Console, Windows Forms, Web Forms, Windows Services, Web Services
Hello.exe hoặc Hello.dll
CLR trên Windows
CLR trên Linux
CLR trên MacOS MSIL
Trang 3Giới thiệu Net Framework
• Có các ngôn ngữ lập trình cơ bản: C#, VB.Net, C++
• Tất cả các chương trình phát triển trên NET sẽ được chuyển về mã trung gian - Microsoft Intermediate Language (MSIL)
– Bước 1: Dịch mã nguồn MSIL
– Bước 2: MSIL mã CLR thực thi
• CLR: Common Language Runtime
• FCL: Framework Class Library
Trang 4Tạo ứng dụng Console
Trang 5Cấu trúc chương trình C#
• Phần chú thích (option)
• Phần khai báo dùng namespace (option)
• Phần định nghĩa namespace, lớp và các phương thức
// Ch ương trình C# đầu tiên
static void Main(string[] args){ {
Console Write( "Hello World!" );
Console ReadLine();
}
}
}
Trang 6• Namespace System chứa nhiều lớp giao tiếp với hệ thống
• Từ khóa using dùng để khai báo namespace
VD: using System.Data.OleDb;
Trang 7Câu lệnh
• Các câu lệnh được viết trong thân của phương thức (ở đây là phương
thức Main)
• Thực hiện một công việc nào đó
• Kết thúc bởi dấu chấm phẩy (;)
namespace HelloWorld {
class Program {
static void Main( string [] args) {
Console.Write( "Hello World!" );
Console.ReadLine();
} } }
Các câu lệnh
Phương thức Main
Trang 8Chú thích
• Chú thích (comment) được dùng để giải thích về chương trình và các câu lệnh
• Giúp cho chương trình dễ hiểu hơn
• Được bỏ qua khi biên dịch
• Không ảnh hưởng tới kết quả thực thi của chương trình
• Gõ phần chú thích sau cặp ký tự //
• Gõ phần chú thích giữa cặp ký tự /* và */
/* Ch ương trình C# đầu tiên
In ra câu chào "Hello World" */
using System;
namespace HelloWorld {
class Program {
static void Main(string[] args) {
Console.Write("Hello World!"); // Xuất ra câu chào
Console.ReadLine(); // Chờ nhấn Enter }
} }
Trang 9Kiểu dữ liệu số nguyên
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)
int System.Int32 32-bit signed integer
2,147,483,648:2,147,483,6
-47 (-231:231-1)
long System.Int64 64-bit signed integer
9,223,372,036,854,775,808
-: 9,223,372,036,854,775,807
(-263:263-1) 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) ulong System.UInt64 64-bit signed integer 0:18,446,744,073,709,551,
615(0:264-1)
Trang 10Kiểu dữ liệu số thập phân
Name Common Type System Description Range (approximate)
float System.Single 32-bit ±1.5 × 10-45 to ±3.4 × 1038
double System.Double 64-bit ±5.0 × 10-324 to ±1.7 × 10308
decimal System.Decimal 128-bit ±1.0 × 10-28 to ±7.9 × 1028
Kiểu Boolean
Kiểu Ký tự, Chuỗi
char System.Char 16-bit (Unicode) character
string System.String Unicode character string
Kiểu đối tượng
object System.Object The root type, from which all other
types in the CTS derive
Trang 12Chuyển đổi kiểu dữ liệu
Trang 13Khai báo biến, hằng
• Cú pháp khai báo biến: < kiểu dữ liệu> tên_biến;
Trang 14Câu lệnh điều kiện
Trang 16• Lệnh break: dùng câu lệnh break khi muốn thoát khỏi vòng lặp
for (int i = 0; i < 10; i++)
Trang 17Các lệnh điều khiển
• Lệnh continue: được dùng trong vòng lặp khi muốn thi hành tiếp vòng lặp nhưng không thi hành các lệnh còn lại trong vòng lặp, các lệnh sau lệnh continue
for (int i = 0; i < 10; i++)
• Lệnh return: dùng để thoát khỏi một hàm, nếu hàm có một kiểu dữ liệu trả
về thì return phải trả về một kiểu dữ liệu này
Trang 18Một số hàm thông dụng
• Thông qua lớp Math
– Lấy giá trị tuyệt đối
int x = Math.Abs(-10); // kết quả x = 10
Trang 19Một số hàm thông dụng (tt)
• Lớp ký tự - char
– bool char.IsDigit(char c) : có phải là ký số
– bool char.IsLetter(char c) : có phải là ký tự
– bool char.IsLetterOrDigit(char c) : có phải là ký tự hoặc ký số
– bool char.IsLower(char c) : có phải là ký tự thường
– bool char.IsUpper(char c) : có phải là ký tự hoa
– char char.ToUpper(char c) : trả về ký tự hoa
– char char.ToLower(char c) : trả về ký tự thường
Trang 21Một số hàm thông dụng (tt)
• Lớp chuỗi – string
– Length : Chiều dài chuỗi (số ký tự)
– IndexOf(): Vị trí xuất hiện đầu tiên của một chuỗi con trong chuỗi
– LastIndexOf(): Vị trí xuất hiện cuối cùng của một chuỗi con trong
chuỗi
– ToUpper(): Trả về chuỗi chữ hoa
– ToLower(): Trả về chuỗi chữ thường
– Replace(): Thay thế chuỗi con trong chuỗi bằng một chuỗi con khác
– Split(): Cắt một chuỗi thành nhiều chuỗi con
– SubString(): Lấy một chuỗi con
Trang 22str2 = str1.Replace(“w”, “W”); // str2=”Hello World”
str2 = str1.ToLower(); // str2 = “hello world”
str2 = str1.ToUpper(); // str2 = “HELLO WORLD”
Trang 23Một số hàm thông dụng (tt)
• Ví dụ 2:
int a = 1, b = 2, tong = a+b;
string str = "Tong " + a.ToString() + " va " + b.ToString() + " la " + tong.ToString();
string[] arrStr = str.Split(',') ;
for (int i=0; i<arrStr.Length;i++)
{
sum += Convert.ToInt32(arrStr[i]);
}
Trang 24Một số hàm thông dụng (tt)
• Ví dụ 3: Hàm kiểm tra MSSV có phải là 7 ký tự số không?
private bool KiemTraMSSV(string mssv) {
// Kiem tra mssv chi co 7 ky tu
if (mssv.Length != 7) return false;
// Kiem tra cac ky tu phai la chu so
for (int i = 0; i < mssv.Length; i++)
Trang 25Bài tập – dữ liệu kiểu chuỗi
• Viết hàm tách tên Tham số truyền vào là họ và tên, hàm sẽ trả về tên
• Viết hàm tách họ Tham số truyền vào là họ và tên, hàm sẽ trả về họ và chữ lót
• Viết hàm chuẩn hóa chuỗi họ tên:
– Không có khoảng trắng trước và sau tên
– Không có hơn 1 ký tự khoảng trắng giữa các ký tự
– Ký tự đầu của các từ phải viết hoa
– Ví dụ: “Nguyen Y Van” là hợp lệ
• Viết hàm đếm số từ trong chuỗi
– Ví dụ: “Truong Dai hoc Dong Thap” 5
• Viết hàm chuyển đổi số thành chữ
– Ví dụ: 12345 Mười hai nghìn ba trăm bốn mươi lăm
Trang 26Mảng 1 chiều
• Cú pháp:
type [ ] array_name;
• Ví dụ:
int [ ] arrInt; // mảng kiểu số nguyên
arrInt = new int[20]; // tạo mảng có 20 phần tử
int [ ] arrInt = new int[20];
arrInt[0] = 30; // phần tử đầu tiên có giá trị 30
string[] arrStr = {"Hồng", "Lan", "Cúc"};
int Ien = arrStr.Length; // len = 3
Trang 27Array.Reverse (mang); // sắp xếp giảm dần
Console.WriteLine (“Sap xep giam dan: “);
hienthi(mang);
Console.ReadLine();
}
static void hienthi(int [] a) {
for (int i = 0; i < a.Length; i++)
Console.Write (“ “ + a[i]);
}
}
Trang 29Mảng 2 chiều
• Cú pháp:
type [ , ] array_name;
• Ví dụ:
int[,] m = new int[2,3]; // mảng m có 2 dòng, 3 cột
int[,] m = new int[,] { {1,2}, {3,4}, {5,6}, {7,8} };
Một loại thứ 2 của mảng nhiều chiều trong C# là Jagged array
Jagged là một mảng mà mỗi phần tử là một mảng với kích thước khác nhau Những mảng con này phải đuợc khai báo từng mảng con một
int[][] a = new int[3][];
a[0] = new int[4];
a[1] = new int[3];
a[2] = new int[1];
Trang 30Mảng ArrayList
• Một số thao tác
– Add(): Thêm phần tử vào cuối mảng
– Toán tử []: Lấy phần tử trong mảng
Trang 31Kiểm tra dữ liệu nhập
int so1, so2, tong;
if (int.TryParse(txtSo1.Text, out so1) == false) {
MessageBox.Show("So 1 khong hop le", "Thong bao");
txtSo1.Focus();
} else if (int.TryParse(txtSo2.Text, out so2) == false) {
MessageBox.Show("So 2 khong hop le", "Thong bao");
txtSo2.Focus();
} else {
tong = so1 + so2;
txtTong.Text = tong.ToString();
}
// Hãy viết bằng cách tách ra từng lệnh if riêng
Trang 32Kiểm tra dữ liệu nhập (tt)
if (KiemTraMSSV(txtMSSV.Text) == false) {
MessageBox.Show("MSSV khong hop le", "Thong bao");
txtMSSV.Focus();
} else if (KiemTraHoTen(txtHoTen.Text) == false) {
MessageBox.Show("Ho ten khong hop le", "Thong bao");
Trang 33Kiểm tra dữ liệu nhập (tt)
private bool KiemTraMSSV(string mssv)
{
// Kiem tra mssv chi co 7 ky tu
if (mssv.Length != 7) return false;
// Kiem tra cac ky tu phai la chu so
for (int i = 0; i < mssv.Length; i++)
Trang 35Tạo ứng dụng Windows Form
Tạo project: Windows App
Trang 36Windows control - Form
• Tất cả các thành phần trên form đều là đối tượng
Trang 37Giao diện làm việc – Windows Form
Windows App do Visual Studio khởi tạo
Trang 38Windows control - Form
Lớp Form cơ sở
Control kiểu Label
Chạy ứng dụng với Form1 làm form chính
Thiết kế form & control Add control vào form
Form1.cs
Trang 39Windows control - Form
this.BackgroundImage = new Bitmap("background.jpg");
– Text (Tiêu đề của Form)
this.Text = “Quan ly Hoc sinh”;
• Phương thức: Close, Hide, Show
• Sự kiện: Load (xảy ra trước khi hiển thị)
Trang 40Thuộc tính của Form
Trang 41Cửa sổ viết code
• Phần xử lý của Form1 khi button click
– Lấy giá trị của 2 textbox, cộng kết quả và xuất ra MeesageBox
Trang 42Label control
• Cung cấp thông tin chỉ dẫn (nhãn), chỉ đọc
Label1 Text = “Nhập họ tên: ”;
Thuộc tính thường dùng
Trang 43TextBox control
Thuộc tính thường dùng
AcceptsReturn Nếu true: nhấn enter tạo thành dòng mới trong chế độ multiline
Multiline Nếu true: textbox ở chế độ nhiều dòng, mặc định là false
PasswordChar Chỉ hiển thị ký tự đại diện cho text
ReadOnly Nếu true: textbox hiển thị nền xám, và không cho phép nhập dữ
liệu, mặc định là false ScrollBars Thanh cuộn cho chế độ multiline
Event thường dùng
TextChanged Kích hoạt khi text bị thay đổi, trình xử lý được khởi tạo mặc định khi
kích đúp vào textbox trong màn hình design view
Trang 44TextBox control
• Demo TextBox
Chuyển thành chữ hoa
Double click vào
textbox để tạo event
handler cho event
TextChanged
Trang 46Text Chuỗi hiển thị trên bề mặt button
Image Chèn hình vào button
button1 Image = Image FromFile("D:\\hinh.jpg");
ImageAlign Vị trí hình hiển thị trong nút lệnh
button1 ImageAlign = ContentAlignment.MiddleLeft ; Event thường dùng
Click Kích hoạt khi user kích vào button, khai báo mặc định khi người lập
trình kích đúp vào button trong màn hình Design View của Form.
Trang 47ListBox control
• Cung cấp một danh sách các item cho phép người dùng chọn
• Hiển thị thanh scroll nếu các item vượt quá vùng thể hiện của ListBox
Thuộc tính thường dùng
Items Thêm một Item vào ListBox
listBox1.Items.Add (" Chủ nhật");
Multicomlumn Nếu thiết lập true thì ListBox hiển thị nhiều cột
SelectedItem Trả về đối tượng item đã chọn
Sorted true: sắp xếp tăng dần
Text Lấy giá trị của một item đã chọn trong ListBox
string txt; txt = listBox1.Text;
Method & Event
ClearSelected Bỏ chọn các item
Trang 49ListBox control
Hiển thị nhiều cột
Trang 50ListBox control
Kiểm tra xem chuỗi nhập có trong list box?
- Nếu có: select item đó
- Ngược lại: thêm chuỗi mới vào list box
Trang 52Checked ListBox control
• Thêm các đối tượng dùng phương thức AddRange
Dim days As String() = {"Sunday", "Monday", "Tuesday"};
checkedListBox1.Items.AddRange(days);
• Thiết lập các tùy chọn của các đối tượng
checkedListBox1.Items.Add (“Sunday", CheckState Checked);
checkedListBox1.Items.Add (“Monday", CheckState Unchecked);
checkedListBox1.Items.Add ("Tuesday", CheckState.Indeterminate);
Trang 53ComboBox control
• Cho phép người dùng chọn item trong danh sách DropDown
• Thêm item vào ComboBox
comboBox1.Items.Add("Sunday");
• Xóa item trong ComboBox
comboBox1.Items.RemoveAt (1); //xóa item tại vị trí chỉ định
comboBox1.Items.Remove ("Thứ sáu"); //xóa item theo tên
• Kiểu hiển thị item dùng thuộc tính DropDownStyle
Trang 54ComboBox control
Bổ sung item trong màn hình design view
Trang 57CheckBox control
• Cho phép chọn nhiều tùy chọn (option)
• Chọn giá trị: Checked = true, ngược lại là không chọn
• Chú thích thông tin của checkbox
checkBox1.Text = “Sunday";
Trang 58RadioButton control
• Cho phép user chọn một option trong số nhóm option
• Các radio button chứa trong 1 container (form, GroupBox, Panel, TabControl) thuộc một nhóm
• Chọn giá trị: Checked = true
Trang 60DateTimePicker control
• Cho phép hiển thị và lấy ngày giờ của hệ thống
• Thiết lập giá trị của dateTimePicker là ngày giờ hiện tại của hệ thống
dateTimePicker1 Value = DateTime.Today ;
• Lấy giá trị của dateTimePicker
DateTime Idate;
Idate = dateTimePicker1 Value ;
• Các định dạng hiển thị: Long, Short, Time, hoặc Tùy chọn (Custom)
dateTimePicker1 Format = DateTimePickerFormat.Short ;
Trang 61ListView control
private void Form1_Load(object sender, EventArgs e) {
//Add items in the listview
string[] arr = new string[4];
string price = null;
string quantity = null;
Trang 62Lập trình ADO.Net
• Xem demo minh họa
Trang 63Lập trình kết xuất báo cáo
• Crystal Report
• Microsoft Office Excel
Xem demo minh họa