Trang bị cho sinh viên những kiến thức về lập trình, thuật toán, phương pháp Top Down Design Ngôn ngữ lập trình C# và nền tảng phát triển phần mềm trên Net Framework Phương pháp lậ
Trang 1 Trang bị cho sinh viên những kiến thức về lập trình,
thuật toán, phương pháp Top Down Design
Ngôn ngữ lập trình C# và nền tảng phát triển phần
mềm trên Net Framework
Phương pháp lập trình hướng đối tượng
Lập trình trên Winform
Phương pháp phát triển ứng dụng trên kiến trúc
component, kiến trúc n-tier
Rèn luyện cho sinh viên kỹ năng vận dụng kiến thức
để xây dựng một ứng dụng thực tế
Tài liệu học tập
Programming Csharp, 4th edition, Oreilly 2005
Lập trình hướng đối tượng với C#.
Beginning C# Objects: From Concepts to Code, Jacquie
Barker and Grant Palmer , Apress 2004
Microsoft Visual C# 2005 step by step, Microsoft Press
Developing Windows-Based Applications with Microsoft
Visual Basic NET and Microsoft Visual C# NET, 2002
2003
Trang 2Tiêu chuẩn đánh giá sinh viên
Kết quả học tập của sinh viên được
Thang điểm đánh giá : 10
Chương 1 Tổng quan về lập trình cho
MTĐT và C#
Trang 3Chương 3 Xây dựng lớp – Đối tượng
Trang 4 Giới thiệu các biểu mẫu windows
Làm việc với các điều khiển
Xử lý sự kiện
Bàn phím và chuột
Chương 8 Thao tác tệp tin
Khái niệm tập tin.
Giới thiệu namespace System.IO
Các bước xử lý tệp tin
Các phương thức xử lý tệp tin.
Tạo lập và xử lý tệp tin văn bản
Tạo lập và xử lý tệp tin nhị phân
Trang 5Chương 1 Tổng quan về lập trình cho MTĐT
Đại học Ngân hàng TP Hồ Chí Minh
Nội dung trình bày
trình, giải thuật
Chương trình
Computer program - Là tập hợp các câu
lệnh (chỉ dẫn) được liệt kê theo một trình
tự nhất định nhằm giải quyết một vấn đề.
Chương trình máy tính được viết trên
một ngôn ngữ lập trình.
Theo Niklaus Wirth
Chương trình = Cấu trúc dữ liệu + Giải thuật
Trang 6Giải thuật - Algorithm
Giải thuật (Thuật toán - Thuật giải)
một số hữu hạn bước thực hiện ta đạt được
kết quả mong muốn
Câu lệnh, chương trình, phần mềm
Software
Program 2 Program 1
Ngôn ngữ lập trình
Programming language - Ngôn ngữ lập
trình là ngôn ngữ để viết chương trình.
Ngôn ngữ lập trình bao gồm hệ thống
các ký hiệu, các qui ước về ngữ pháp và
ngữ nghĩa, dùng để xây dựng thành các
chương trình cho máy tính.
Có nhiều loại ngôn ngữ lập trình.
Trang 74GLs ORACLE, SEQUEL, INGRES,
5GLs Artificial intelligence
Hợp ngữ - Assembler
Các bước lập trình
Xác định yêu cầu
bài toán
Phân tích bài toán
Thiết kế Giải thuật
Cài đặt Kiểm thử Bảo trì và Cập nhật
Trang 8Mô tả giải thuật
Ngôn ngữ tự nhiên
Sơ đồ khối (flow chart)
Mã giả (Pseudocode)
Mô tả bằng ngôn ngữ tự nhiên
Input: Vào a, b thuộc tập R
Bằng Sơ đồ khối (Flow Chart)
Condition expression: Lựa chọn, kiểm tra điều
kiện
Process : Xử lý
Data input/ out put : Vào ra dữ liệu
Flow line: Luồng xử lý
Begin, End : Bắt đầu, kết thúc
Trang 10Bằng mã giả
Input: Vào a, b thuộc tập R
Xuất “Phương trình có nghiệm x = -b/a”
3 cấu trúc điều khiển cơ bản
Trong lập trình có 3 cấu trúc cơ bản
Tuần tự: các bước thực hiện tuần tự, từ
trên xuống, mỗi bước thực hiện đúng 1 lần
refinement , với qui tắc
Chia bai toán lớn thành các bài toán con
Tiếp tục chia các bài toán con đó thành các bài
toán con nhỏ
Tiếp tục quá trình trên khi các bài toán con có thể
giải quyết dễ dàng
Trang 11đặc tả yêu cầu của hệ thống
Trang 12Các phabị lặp lại quá nhiều lần
T ạo nguyên mẫu (prototype)
Tạo các nguyên mẫu cho người sử dụng dùng rồi tạo ra
hoàn thiện hệ thống
Ưu điểm:
Linhhoạt trong việc thay đổi yêu cầu
Rútngắn thời gian phát triển
Nhược điểm:
Trang 13Các phương pháp lập trình
Lập trình tuần tự: Assembler (hợp ngữ)
Khó kiểm soát lỗi
Chương trình chính được chia nhỏ thành các
So sánh HĐT và hướng chức năng
Cách tiếp cận hướng đối tượng
tượng cùng làm việc với nhau để
Các đối tượng thực hiện hành động khi được
yêu cầu
Mỗi đối tượng duy trì dữ liệu riêng của nó
Tiếp cận thủ tục (Procedural approach)
tục tương tác với dữ liệu
Dữ liệu tách rời các thủ tục
Trang 14So sánh HĐT và hướng chức năng
Tiếp cận hướng chức năng và tiếp cận hướng đối tượng
Khái niệm về hướng đối tượng
Lớp (Classes)
Đối tượng (Objects)
Attributes
Trừu tượng hóa dữ liệu
Bao gói và che dấu thông tin
Trang 15Trừu tượng hóa dữ liệu
Môtả bài toán với những khía cạnh quan trọng nhất
bắt các đặc trưng cơ bản nhất của chúng và xác định
rõmối quan hệ giữa các đối tượng với nhau
Bao gói và che dấu thống tin
TaoDH CapnhatDH GiatriDH
Trang 16Môi trường phần mềm trước đây
Đối với người phát triển ứng dụng
Bất lợi của DLL và đăng ký vào registry
Phải xác định thiết bị truy cập
nhau
tán
Trang 17Môi trường phần mềm trước đây (tt)
Đối với người sử dụng
.NET framework
Tích hợp một số công nghệ đã có của Microsoft và
một số công nghệ mới nhằm tạo ra giao diện lập trình
Ứng dụng độc lập với thiết bị client
Tháng 7/2000, Microsoft giới thiệu Net
Kiến trúc của Net framework
Gồm hai thành phần chính
Trang 18Kiến trúc Net framework
Operate System
Common Language Runtime
Base Class Library
ADO NET: Data and XML
ASP NET
Web Forms Web Services
ASP.NET Mobile Controls
Windows Forms
Common Language Specification
Common Language Runtime - CLR
của NET Framework
Biên dịch (Just-in-time compiler)
Framework Class Libraries - FCL
Thư viện lớp.NET Framework
kiểu dữ liệu được dùng lại (các thư viên lớp
được đóng gói trước cho việc dùng lại),
khoảng 4000 lớp
.NET
gian tên gọi là System
Trang 19design n-tier design
.Net là đa ngôn ngữ
Development Tools
app.exe
FCL
.NET là đa ngôn ngữ (tt)
.Net không chỉ hỗ trợ một ngôn ngữ độc
Trang 20CLR for
Linux
CLR for Windows
CLR for Unix
.NET Compiler
Linux Native
code
Windows Native code
Unix Native code
.Net là độc lập về hệ điều hành
(Cross-platform) được hiểu theo 2 cách sau:
Library(FCL), không dựa trên OS
Trình biên dịch phát sinh ra ngôn ngữ chung được
thực thi bởi Common Language Runtime (CLR)
Trang 21Biên dịch trong NET
Code in VB.NET Code in C# Code in another .NET Language
VB.NET compiler C# compiler AppropriateCompiler
IL(IntermediateLanguage) codeCLR (Common Language Runtime)
just-in-time compilation
Biên dịch trong NET (tt)
được biên dịch vào ngôn ngữ trung gian
(IL-Intermediate Language), không phải là mã
máy (code machine)
CLR biên dịch lại các mã trung gian (IL code)
vào mã máy tức thời khi thực thi chương
trình, just-in-time (JIT): khi hàm đuợc gọi
Mã JIT tồn tại trong bộ nhớ cho các lần gọi
sau (nếu bộ nhớ cho phép)
Biên dịch trong NET (tt)
ngôn ngữ lập trình nào trong Net
tượng được tạo ra từ ngôn ngữ này có thể được
truy cập hay được dẫn xuất từ một đối tượng
của ngôn ngữ khác trong NET
Ví dụ, người phát triển có thể tạo một lớp cơ sở trong
VB.NET và sau đó dẫn xuất nó trong C# một cách dễ
dàng
Trang 22Biên dịch trong NET (tt)
Tại sao phải có 2 lần biên dịch
Độc lập với hệ điều hành
NET framewwork có thể cài đặt trên nhiều platform
Các chương trình NET được thực hiện mà không có thay
đổi code nào (viết 1 lần, chạy mọi nơi)
Các chương trình Net không bị trói buộc vào một ngôn
ngữ cụ thể nào cả
Các chương trình trong Net có thể được viết bới các
ngôn ngữ trong Net
Thiết kế ứng dụng trong Net
Các ứng dụng nguyên khối (Monolithic
Trang 23Tại sao phải Component-based
Lập trình nhóm (team programming)
Phát triển ứng dụng đa ngôn ngữ (tôi dùng
C#, bạn dùng C++, cô ấy dùng VB.Net)
Sử dụng lại mã nguồn (code reuse)
Nâng cấp độc lập (nâng cấp thành phần X)
Các loại ứng dụng trong NET
Sử dụng Net để xây dựng các loại ứng
Trang 24Các ứng dụng Net được đóng gói vào
các phần gọi là assembly
1 assembly = 1 hay nhiều lớp được biên
dịch, gồm một hay nhiều file nguồn
.exe mô tả gói gồm các lớp với Main()
.EXE / DLL
Cấu trúc chương trình C#
Trang 25.DLL DLL
obj code
Giới thiệu về C#
Trình biên dịch C# là hiệu quả nhất trong họ ngôn ngữ
.NET
Là ngôn ngữ lập trình hướng đối tượng, đơn giản, an
toàn, ít từ khóa (80 từ khóa)
C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành
phần component
Giới thiệu vào 7/2000
Trang 26C# và các ngôn ngữ khác
C# mang sức mạnh của C++ với sự dễ
dàng của ngôn ngữ Visual Basic
C# và các ngôn ngữ họ Net biên dịch ra
IL còn Java biên dịch ra bytecode (mã
trung gian), sau đó chúng được thực
hiện bằng cách thông dịch hoặc biên
dịch just-in-time trong từng máy ảo
Phát triển chương trình minh họa
Có tối thiểu là hai cách để soạn thảo,
biên dịch và thực thi chương trình:
(IDE) Visual Studio NET
bất kỳ như Notepad rồi dùng biên dịch dòng
lệnh
Trang 27Biên dịch thành Assemblies
Tạo một assembly từ một hay nhiều file nguồn
Ví dụ : tạo một có tên assembly
“array.dll” từ file array1.cs:
Tạo file thực thi (Executables)
Tạo flie thực thi sử dụng chỉ dẫn /target:exe
:
Ví dụ: tạo ra file array.exetừ file array1.cs
Tham chiếu một Assembly
Để tham chiếu một assembly, thêm /reference
khi biên dịch file thực thi:
Ví dụ: tạo ra array.exetừ file nguồn array1.cs
tham chiếu đến assembly có tên array2.dll:
Trang 28Biên dịch và chạy chương trình trình
prompt
Step 2 –lưu file với phần mở rộng là cs
Xóa đối số (string[] args) trong phương thức
Main( ) Sau đó gõ dòng lệnh sau đây vao
thân của Main():
Trang 29Q&A
Trang 30Chương 2
Nền tảng ngôn ngữ C#
Giảng viên: ThS Phạm Thanh An
Đại học Ngân hàng Tp Hồ Chí Minh
Nội dung trình bày
Kiểu dữ liệu cơ bản.
Mô tả kiểu dữ liệu trong C#
St r i ng Ar r ay Va l ueType Ex cept i on De l egat e Cl ass1
Mul t i cast
De l egat e Cl ass2
Cl ass3 Obj ect
Enum1
St r uct ur e1 Enum
Trang 31Kiểu dữ liệu
Phải khai báo kiểu của mỗi biến, đối tượng khi
sử dụng
integer, float, string, byte, buttons, v.v
C# chia thành hai tập hợp kiểu dữ liệu chính:
Kiểu xây dựng sẵn (built- in)
Kiểu được người dùng định nghĩa (user-defined)
do người lập trình tạo ra (lớp, struct, v.v)
Kiểu dữ liệu tham chiếu (reference type):
classes, interfaces, arrays và strings
Kiểu dữ liệu xây dựng sẵn
object Kiểu dữ liệu cơ sở cho tất cả các kiểu
dữ liệu khác object o = null;
string Lưu trữ giá trị chuỗi string s =
“hello”;
short 2 Int16 Số nguyên có dấu giá trị từ -32768
đến 32767.
ushort 2 Uint16 Số nguyên không dấu 0 – 65.535
int 4 Int32 Số nguyên có dấu –2.147.483.647 và
2.147.483.647
int val = 12;
uint 4 Uint32 Số nguyên không dấu 0 –
Trang 32Kiểu dữ liệu xây dựng sẵn (tt)
sbyte 1 Sbyte Số nguyên có dấu ( từ -128 đến 127)
byte 1 Số nguyên không dấu từ 0 - 255
long 8 Int64 Kiểu số nguyên có dấu có giá trị trong
khoảng : -9.223.370.036.854.775.808 đến 9.223.372.036.854.775.807 ulong 8 Uint64 Số nguyên không dấu từ 0 đến
float 4 Single Kiểu dấu chấm động, giá trị xấp xỉ từ
3,4E-38 đến 3,4E+38, với 7 chữ số
có nghĩa Có thêm hậu tố F sau giá trị
float val = 1.23F;
double 8 Double Kiểu dấu chấm động có độ chính xác
gấp đôi, giá trị xấp xỉ 1.7E308 1.7E+308, với 15,16 chữ số có nghĩa decimal 8 Decimal Chính xác đến 28 con số và giá trị
-thập phân, được dùng trong tính toán tài chính, đòi hỏi hầu tố “m” hay “M”
theo sau giá trị
Kiểu dữ liệu xây dựng sẵn (tt)
bool 1 Boolean Giá trị logic true/ false bool val1 = true;
bool val2 = false;
char 2 Char Ký tự Unicdoe char val = 'h';
Trang 33Kiểu dữ liệu xây dựng sẵn (tt)
Kiểu giá trị logic chỉ có thể nhận được giá trị là true hay
false
Khác với C/C++, một giá trị nguyên không thể gán vào
một biến kiểu logic trong C# và không có bất cứ chuyển
đổi ngầm định nào
Biên dịch: xuất hiện lỗi
Error CS0029 : Cannot implicitly convert type 'int' to 'bool'
Kiểu dữ liệu xây dựng sẵn (tt)
Kiểu dữ liệu ký tự thể hiện các ký tự Unicode
Kýtự thoát là những ký tự đặc biệt bao gồm hai ký tự
liêntiếp trong đó ký tự dầu tiên là dấu chéo ‘\’ Ví dụ,
Trang 34Chuyển đổi kiểu dữ liệu
động đảm bảo là không mất thông tin
Từ kiểu nhỏ sang kiểu lớn
short x = 10;
int y = x; // chuyển đổi ngầm định
short x;
int y = 100;
x = y;// Không biên dịch, lỗi !!!
Trang 35Chuyển đổi kiểu dữ liệu (tt)
short x;
int y = 500;
x = (short) y; // Ép kiểu tường minh, trình biên dịch không báo lỗi
Để chuyển đổi một ký tự sang mã ASCII
sbyte short, int, long, float, double, decimal
byte short, ushort, int, uint, long, ulong, float, double, decimal
short int, long, float, double, decimal
ushort int, uint, long, ulong, float, double, decimal
int long, float, double, decimal
uint long, ulong, float, double, decimal
long, ulong float, double, decimal
float double
char ushort, int, uint, long, ulong, float, double, decimal
Chuyển đổi tường mình
Do lập trình viên chỉ định
Xảy ra khi
Ép từ kiểu lớn qua kiểu nhỏ: có thể mất giá trị
Trang 36Console.WriteLine (“Result is {0} when 100
is multiplied by number {1}”, result, number);
Chuyển đổi tường minh
Chuyển đổi tường minh
Trang 37Input / Output trong C#
trong không gian tên System
Console.ReadLine()
Console.WriteLine()
Định danh
Là tên mà người lập trình chỉ định cho các kiểu dữ
liệu, các phương thức, tên biến, hằng, lớp hay đối
tượng
Định danh phải bắt đầu với một ký tự chữ cái hay dấu
gạch dưới,
các ký tự còn lại phải là ký tự chữ cái, chữ số, dấu gạch dưới.
Ví dụ:
Định danh đúng: result , _score, footballTeam, plan9
Định danh sai: result%, footballTeam$, 9plan
Các từ khóa của C#
abstract const extern in operator sbyte throw virtual
as continue false int out sealed true void
base decimal finally interface override set try volatile
bool default fixed internal params short typeof where
break delegate float is partial sizeof uint while
byte do for lock private stackalloc ulong yield
case double foreach long protected static unchecked
catch else get namespace public string unsafe
char enum goto new readonly struct ushort
checked event if null ref switch using
class explicit implicit object return this value
Các từ khóa trong C#
Trang 38Biến là nơi lưu dữ liệu của chương trình
Dữ liệu của biến
Có thể thay đổi giá trị
Phải khai báo trước khi dùng
Kiểu dữ liệu: dạng lưu trữ dữ liệu của biến
Biến (tt)
chobiến
phải thêm @ trước từ khóa
<Kiểu> tên biến ;
int tuoi;
tuoi = 21 ; Console.WriteLine(tuoi);
Ví dụ
Trang 39Ví dụ: về khai báo biến
Output: Khởi đầu, myInt: 7 sau khi gán, myInt: 5
Ví dụ: sử dụng từ khóa làm tên biến
<const> <type> <tên hằng> = <giá trị>;
const int DoSoi = 100; // Độ C
const int DoDong = 0; // Độ C
System.Console.WriteLine( “Do dong cua nuoc {0}”, DoDong );
System.Console.WriteLine( “Do soi cua nuoc {0}”, DoSoi );
Trang 41continue, return, throw
Phân nhánh có điều kiện
{ static void Main( )
{ Console.WriteLine(“Trong Main! Gọi hàm SomeMethod( ) ");
SomeMethod( );
Console.WriteLine(“Quay về Main( ).");
}
static void SomeMethod( )
{ Console.WriteLine(“Xin chao tu SomeMethod!");
}
}
}
Trang 43if ( i < 10 ) goto lap; // nhãy về nhãn lap return 0;
} }
Trang 44 Thực hiện câu lệnh trong khi điều kiện vẫn còn đúng
Câu lệnh breaksẽ thoát ngay khỏi vòng lặp
Câu lệnh continuesẽ bỏ qua lần lặp hiện tại và thực
hiện lần lặp tiếp theo
{0}”,i);
i++;
} while ( i < 10 ) return 0;
} }
Trang 45Console.WriteLine(“{0} ”,i);
} else { Console.Write(“{0} ”,i);
Trang 46khi chia hai số nguyên : 17/4 = 4
Chia cho số thực có kiểu như float, double, hay
decimal thì kết quả chia được trả về là một số
thực
Trang 47var1 = ++var2; // var1 = 11, var2 = 11
var1 = var2++; //var1 = 10 , var2 = 11
Trang 48Toán tử quan hệ
Toán tử logic
Độ ưu tiên toán tử
Một ngôi
Trang 49Độ ưu tiên toán tử
việc sử dụng các thư viện khác nhau từ các
nhà cung cấp
cho ứng dụng khác
dụng namespace trong chương trình:
Trang 50class WalkMan { }
}
namespace Sony
{ class Television { }
class Walkman { }
} class T21inches {
} }
Trang 52public T21inches() {
Console.WriteLine ("A
21 inches Television");
} } }// end of namespace Television
}//end of namespace Sony
T14inches Television = new T14inches();
T21inches Television2 = new T21inches();