Tải bản đầy đủ (.ppt) (42 trang)

Ngôn ngữ lập trình c# chương 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.41 MB, 42 trang )





CHƯƠNG 1
CHƯƠNG 1
TỔNG QUAN VỀ MICROSOFT .NET
TỔNG QUAN VỀ MICROSOFT .NET
VÀ NGÔN NGỮ C#
VÀ NGÔN NGỮ C#


Giảng viên: ThS.Trịnh Thị Ngọc Linh
Giảng viên: ThS.Trịnh Thị Ngọc Linh
Email:
Email:
2
NỘI DUNG
NỘI DUNG

Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET

Ngôn ngữ C#
Ngôn ngữ C#



Phát triển chương trình minh họa
Phát triển chương trình minh họa




Câu hỏi, bài tập và bài thực hành
Câu hỏi, bài tập và bài thực hành


3
Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET

Microsoft .NET là nền tảng xây dựng và
Microsoft .NET là nền tảng xây dựng và
thực thi các ứng dụng:
thực thi các ứng dụng:

Phân tán
Phân tán

Từ client đến server
Từ client đến server

Các ứng dụng khác
Các ứng dụng khác

Cung cấp giao diện lập trình ứng dụng đồ
Cung cấp giao diện lập trình ứng dụng đồ
họa
họa

Gồm 2 phần chính:

Gồm 2 phần chính:

Framework: cốt lõi của môi trường .net
Framework: cốt lõi của môi trường .net

Integrated Development Environment (IDE):
Integrated Development Environment (IDE):
c
c
ông cụ phát triển
ông cụ phát triển


4

Kiến trúc .NET Framework
Kiến trúc .NET Framework

.NET Framework là bộ khung của môi trường
.NET Framework là bộ khung của môi trường
lập trình .NET
lập trình .NET

Nằm bên trên hệ điều hành
Nằm bên trên hệ điều hành

Hiện nay, .NET Framework gồm có các thành
Hiện nay, .NET Framework gồm có các thành
phần sau:
phần sau:


Bốn ngôn ngữ: C#, VB.NET, Managed C++ và
Bốn ngôn ngữ: C#, VB.NET, Managed C++ và
JScript .NET.
JScript .NET.

Common Language Runtime (CLR)
Common Language Runtime (CLR)

Framework Class Library (FCL)
Framework Class Library (FCL)
Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET
5

Mô hình kiến trúc của .NET Framework
Mô hình kiến trúc của .NET Framework


Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET
Windows Platform
Common Language Runtime
Framework Base Classes
Data and XML classes
Web Services Web Forms Windows Forms
Hình 1.1: Mô tả các thành phần trong .NET Framework
.NET Framework
Framework
Class

Library
(FCL).
6

Common Language Runtime
Common Language Runtime
(CLR):
(CLR):

Thành phần quan trọng nhất
Thành phần quan trọng nhất

Có nhiệm vụ:
Có nhiệm vụ:

Cung cấp môi trường để các chương trình ứng
Cung cấp môi trường để các chương trình ứng
dụng thực thi
dụng thực thi

Nó được xem như là máy ảo tương tự như máy ảo
Nó được xem như là máy ảo tương tự như máy ảo
java
java

CLR kích hoạt các đối tượng, kiểm tra bảo mật, bố
CLR kích hoạt các đối tượng, kiểm tra bảo mật, bố
trí chúng trong bộ nhớ và thi hành chúng
trí chúng trong bộ nhớ và thi hành chúng
Tổng quan về MicroSoft .NET

Tổng quan về MicroSoft .NET
7

Framework Class Library
Framework Class Library
(FCL)
(FCL)

Các lớp cơ sở (framework base classes)
Các lớp cơ sở (framework base classes)

Các lớp dữ liệu và XML (Data and XML
Các lớp dữ liệu và XML (Data and XML
classes)
classes)

Các lớp dịch vụ Web (Web Services)
Các lớp dịch vụ Web (Web Services)

Web Forms
Web Forms

Windows Forms
Windows Forms

FCL gọi là thư viện lớp Framework
FCL gọi là thư viện lớp Framework


Tổng quan về MicroSoft .NET

Tổng quan về MicroSoft .NET
8

Biên dịch và MSIL
Biên dịch và MSIL

Chương trình được biên dịch vào các tập tin
Chương trình được biên dịch vào các tập tin
trung gian gọi là Microsoft Intermediate
trung gian gọi là Microsoft Intermediate
Language (MSIL).
Language (MSIL).

Tập tin MSIL được tạo ra từ C# cũng tương
Tập tin MSIL được tạo ra từ C# cũng tương
tự như các tập tin MSIL được tạo ra từ ngôn
tự như các tập tin MSIL được tạo ra từ ngôn
ngữ khác của .NET.
ngữ khác của .NET.

Mã MSIL này được lưu vào trong một tập tin
Mã MSIL này được lưu vào trong một tập tin
trên đĩa.
trên đĩa.
Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET
9
Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET


Biên dịch và MSIL
Biên dịch và MSIL

Khi chạy chương trình, MSIL được biên dịch
Khi chạy chương trình, MSIL được biên dịch
một lần nữa, bằng việc sử dụng trình biên
một lần nữa, bằng việc sử dụng trình biên
dịch Just-In-Time (JIT).
dịch Just-In-Time (JIT).

Khi một phương thức của chương trình được
Khi một phương thức của chương trình được
gọi, trình biên dịch JIT phân tích và kiểm tra
gọi, trình biên dịch JIT phân tích và kiểm tra
MSIL đã dịch chưa.
MSIL đã dịch chưa.

Nếu đã dịch rồi thì JIT sẽ bỏ qua.
Nếu đã dịch rồi thì JIT sẽ bỏ qua.

Tức là chỉ biên dịch mã MSIL khi chưa biên
Tức là chỉ biên dịch mã MSIL khi chưa biên
dịch ra mã máy.
dịch ra mã máy.

Điều này làm cho chương trình chạy nhanh
Điều này làm cho chương trình chạy nhanh
hơn.
hơn.
10

Mã nguồn
(Visual Basic.net,
C#. . .)
Compiler
Mã MSIL
Assembly
(EXE hoặc DLL)
Metadata
Các tài nguyên
(ảnh,chuỗi, . . .)
Assembly
metadata
(references to
other assemblies,
etc.)
Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET
Quá trình biên dịch và MSIL
Quá trình biên dịch và MSIL
11
Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET
Quá trình thực thi
Quá trình thực thi
JIT compiler
Assembly
(EXE hoặc DLL)
MSIL
Required
assemblies

(DLL)
Mã máy có thể
thực thi
12

Biên dịch và MSIL
Biên dịch và MSIL

Tất cả các ngôn ngữ .NET Framework cùng
Tất cả các ngôn ngữ .NET Framework cùng
tạo ra sản phẩm MSIL giống nhau
tạo ra sản phẩm MSIL giống nhau

Một đối tượng được tạo ra từ một ngôn ngữ
Một đối tượng được tạo ra từ một ngôn ngữ
nào đó trong .NET thì có thể được truy cập
nào đó trong .NET thì có thể được truy cập
hay được dẫn xuất từ:
hay được dẫn xuất từ:

Microsoft .NET
Microsoft .NET

Hoặc từ một đối tượng của ngôn ngữ khác
Hoặc từ một đối tượng của ngôn ngữ khác
trong .NET.
trong .NET.
Tổng quan về MicroSoft .NET
Tổng quan về MicroSoft .NET
13

Ngôn ngữ C#
Ngôn ngữ C#



Khái quát về ngôn ngữ C#
Khái quát về ngôn ngữ C#



Ngôn ngữ C# được phát triển bởi đội ngũ kỹ
Ngôn ngữ C# được phát triển bởi đội ngũ kỹ
sư của Microsoft, trong đó người dẫn đầu là
sư của Microsoft, trong đó người dẫn đầu là
Anders Hejlsberg và Scott Wiltamuth
Anders Hejlsberg và Scott Wiltamuth

Khoảng 80 từ khóa
Khoảng 80 từ khóa

Hơn mười mấy kiểu dữ liệu được xây dựng
Hơn mười mấy kiểu dữ liệu được xây dựng
sẵn (built-in)
sẵn (built-in)

Nó có khả năng hỗ trợ cho các kiểu lập trình
Nó có khả năng hỗ trợ cho các kiểu lập trình
như:
như:


Lập trình cấu trúc (structured)
Lập trình cấu trúc (structured)

Lập trình dựa trên thành phần (component-based)
Lập trình dựa trên thành phần (component-based)

Lập trình hướng đối tượng (object-oriented).
Lập trình hướng đối tượng (object-oriented).
14

Một số đặc tính cơ bản của C#
Một số đặc tính cơ bản của C#



C# là ngôn ngữ đơn giản: loại bỏ những macro,
C# là ngôn ngữ đơn giản: loại bỏ những macro,
template, đa kế thừa và lớp cơ sở ảo
template, đa kế thừa và lớp cơ sở ảo

C# là ngôn ngữ hiện đại: có các đặc tính xử lý
C# là ngôn ngữ hiện đại: có các đặc tính xử lý
ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ
ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ
liệu mở rộng và bảo mật mã nguồn
liệu mở rộng và bảo mật mã nguồn

C# là ngôn ngữ hướng đối tượng: gồm sự đóng
C# là ngôn ngữ hướng đối tượng: gồm sự đóng
gói, sự kế thừa và đa hình

gói, sự kế thừa và đa hình

C# là ngôn ngữ mạnh mẽ và mềm dẻo
C# là ngôn ngữ mạnh mẽ và mềm dẻo

C# là ngôn ngữ ít từ khóa
C# là ngôn ngữ ít từ khóa

C# là ngôn ngữ hướng module
C# là ngôn ngữ hướng module
Ngôn ngữ C#
Ngôn ngữ C#


15

Một số đặc tính cơ bản của C# (tt)
Một số đặc tính cơ bản của C# (tt)



C# sẽ là một ngôn ngữ phổ biến
C# sẽ là một ngôn ngữ phổ biến

Ngôn ngữ C# và những ngôn ngữ khác (Visual
Ngôn ngữ C# và những ngôn ngữ khác (Visual
Basic, C++ và Java )
Basic, C++ và Java )

C# mang đến sức mạnh của ngôn ngữ C++ với sự dễ

C# mang đến sức mạnh của ngôn ngữ C++ với sự dễ
dàng của ngôn ngữ Visual Basic
dàng của ngôn ngữ Visual Basic

C# loại bỏ một vài đặc tính của C++, nhưng tránh
C# loại bỏ một vài đặc tính của C++, nhưng tránh
được những lỗi thường gặp trong ngôn ngữ C++
được những lỗi thường gặp trong ngôn ngữ C++

C# cũng từ bỏ ý tưởng đa kế thừa như trong C++
C# cũng từ bỏ ý tưởng đa kế thừa như trong C++

Điểm giống nhau C# và Java là cả hai cùng biên dịch
Điểm giống nhau C# và Java là cả hai cùng biên dịch
ra mã trung gian
ra mã trung gian
Ngôn ngữ C#
Ngôn ngữ C#


16

Một số hạn chế của ngôn ngữ C#
Một số hạn chế của ngôn ngữ C#

Máy tính phải cài đặt .NET Framework
Máy tính phải cài đặt .NET Framework




Các sản phẩm phần mềm dựa trên ngôn ngữ
Các sản phẩm phần mềm dựa trên ngôn ngữ
C# đòi hỏi quá trình phân tích và thiết kế hệ
C# đòi hỏi quá trình phân tích và thiết kế hệ
thống phải đảm bảo các tiêu chuẩn đáp ứng
thống phải đảm bảo các tiêu chuẩn đáp ứng
của ngôn ngữ
của ngôn ngữ
Ngôn ngữ C#
Ngôn ngữ C#


17

Phát triển một chương trình C#
Phát triển một chương trình C#
Ngôn ngữ C#
Ngôn ngữ C#


class ChaoMung
class ChaoMung


{
{


static void Main( )
static void Main( )



{
{


// Xuất ra màn hình console chuỗi Chao Mung
// Xuất ra màn hình console chuỗi Chao Mung


System.Console.WriteLine(“Chao Mung”);
System.Console.WriteLine(“Chao Mung”);


}
}


}
}
Sau khi viết xong lưu dưới dạng tập tin có phần mở rộng *.cs
18

Lớp, đối tượng và kiểu dữ liệu
Lớp, đối tượng và kiểu dữ liệu

Kiểu được định nghĩa:
Kiểu được định nghĩa:

Thuộc tính (properties)

Thuộc tính (properties)

Hành vi ứng xử (behavior).
Hành vi ứng xử (behavior).

Lớp: là một kiểu dữ liệu có cấu trúc
Lớp: là một kiểu dữ liệu có cấu trúc

Đối tượng: thể hiện của một lớp
Đối tượng: thể hiện của một lớp

Ví dụ:
Ví dụ:

Windows gọi là lớp
Windows gọi là lớp

Các nút lệnh OK, Cancel, Help gọi là đối tượng của
Các nút lệnh OK, Cancel, Help gọi là đối tượng của
lớp Windows
lớp Windows

Windows, các nút lệnh được gọi là kiểu vì nó có
Windows, các nút lệnh được gọi là kiểu vì nó có
thuộc tính và hành vi
thuộc tính và hành vi
Ngôn ngữ C#
Ngôn ngữ C#



19

Định nghĩa lớp
Định nghĩa lớp
Ngôn ngữ C#
Ngôn ngữ C#


class
class


ChaoMung
ChaoMung


{
{


static void Main( )
static void Main( )


{
{


// Xuất ra màn hình console chuỗi Chao Mung
// Xuất ra màn hình console chuỗi Chao Mung



System.Console.WriteLine(“Chao Mung”);
System.Console.WriteLine(“Chao Mung”);


}
}


}
}
-


Dùng từ khoá
Dùng từ khoá
class
class
cùng với
cùng với
tên của lớp
tên của lớp
-


Xây dựng các thuộc tính và hành vi của lớp
Xây dựng các thuộc tính và hành vi của lớp
-



Thuộc tính và hành vi được đặt trong cặp dấu
Thuộc tính và hành vi được đặt trong cặp dấu
ngoặc nhọn
ngoặc nhọn
{}
{}


20

Phương thức
Phương thức

Là các thành phần được định nghĩa bên trong lớp
Là các thành phần được định nghĩa bên trong lớp






Phương thức gọi là hàm thành viên trong một lớp
Phương thức gọi là hàm thành viên trong một lớp

Khai báo phương thức:
Khai báo phương thức:

Kiểu trả về + tên phương thức + tham số (có hoặc không)
Kiểu trả về + tên phương thức + tham số (có hoặc không)



Ngôn ngữ C#
Ngôn ngữ C#


class ChaoMung
class ChaoMung


{
{


static void Main()
static void Main()


{
{


// Xuất ra màn hình console chuỗi Chao Mung
// Xuất ra màn hình console chuỗi Chao Mung


System.Console.WriteLine(“Chao Mung”);
System.Console.WriteLine(“Chao Mung”);



}
}


}
}
ValueType NameMethod(ParameterList
ValueType NameMethod(ParameterList);
21

Ví dụ khai báo phương thức
Ví dụ khai báo phương thức

Khai báo phương thức:
Khai báo phương thức:

Kiểu trả về + tên phương thức + tham số (có hoặc không)
Kiểu trả về + tên phương thức + tham số (có hoặc không)

Phương thức không có giá trị trả về, gọi là trả về kiểu
Phương thức không có giá trị trả về, gọi là trả về kiểu
void. Lúc đó sử dụng từ khoá void
void. Lúc đó sử dụng từ khoá void


void myVoidMethod( );
void myVoidMethod( );

Hàm (phương thức) Main() được viết ký tự hoa đầu,
Hàm (phương thức) Main() được viết ký tự hoa đầu,

và có thể trả về giá trị void hay int
và có thể trả về giá trị void hay int

Khi chương trình thực thi, CLR gọi hàm Main() trước
Khi chương trình thực thi, CLR gọi hàm Main() trước

Mỗi chương trình ít nhất phải có một hàm Main()
Mỗi chương trình ít nhất phải có một hàm Main()

Nếu chương trình có nhiều hàm Main() thì xác định
Nếu chương trình có nhiều hàm Main() thì xác định
các chỉ dẫn biên dịch để CLR biết đâu là hàm Main()
các chỉ dẫn biên dịch để CLR biết đâu là hàm Main()
đầu vào duy nhất trong chương trình
đầu vào duy nhất trong chương trình
Ngôn ngữ C#
Ngôn ngữ C#


ValueType NameMethod(ParameterList
ValueType NameMethod(ParameterList);
int myMethod(int size);
22

Thành phần chú thích
Thành phần chú thích



Chú thích là các đoạn văn bản không được biên dịch

Chú thích là các đoạn văn bản không được biên dịch
và cũng không tham gia vào chương trình
và cũng không tham gia vào chương trình

Làm cho đoạn mã nguồn rõ ràng và dễ hiểu
Làm cho đoạn mã nguồn rõ ràng và dễ hiểu

Chú thích trên một dòng bắt đầu bằng ký tự “//”
Chú thích trên một dòng bắt đầu bằng ký tự “//”

Chú thích cho một hay nhiều dòng, sử dụng ký tự “/*”
Chú thích cho một hay nhiều dòng, sử dụng ký tự “/*”
ở phần đầu chú thích và kết thúc ký tự “*/”
ở phần đầu chú thích và kết thúc ký tự “*/”


Ngôn ngữ C#
Ngôn ngữ C#


23

Ví dụ thành phần chú thích
Ví dụ thành phần chú thích


Ngôn ngữ C#
Ngôn ngữ C#



class ChaoMung
class ChaoMung


{
{


static void Main()
static void Main()


{
{


// Xuất ra màn hình console chuỗi Chao Mung
// Xuất ra màn hình console chuỗi Chao Mung


System.Console.WriteLine(“Chao Mung”);
System.Console.WriteLine(“Chao Mung”);


}
}


}
}

class ChaoMung
class ChaoMung
{
{


static void Main()
static void Main()


{
{


/* Xuất ra màn hình console chuỗi Chao Mung
/* Xuất ra màn hình console chuỗi Chao Mung


Sử dụng hàm WriteLine cua lop System.Console*/
Sử dụng hàm WriteLine cua lop System.Console*/


System.Console.WriteLine(“Chao Mung”);
System.Console.WriteLine(“Chao Mung”);


}
}
}
}

C# còn hỗ trợ thêm
kiểu chú thích khác
nữa, kiểu này chứa
các định dạng XML
nhằm xuất ra tập tin
XML khi biên dịch để
tạo sưu liệu
(documentation) cho
mã nguồn. Đó là
những dữ liệu nhằm
giải thích cách thức
hoạt động của mã
nguồn
24

Ứng dụng kiểu Console
Ứng dụng kiểu Console



Ứng dụng giao tiếp với người dùng thông qua
Ứng dụng giao tiếp với người dùng thông qua
bàn phím
bàn phím

Không có giao diện đồ họa người dùng
Không có giao diện đồ họa người dùng
Ngôn ngữ C#
Ngôn ngữ C#



class ChaoMung
class ChaoMung


{
{


static void Main()
static void Main()


{
{


// Xuất ra màn hình console chuỗi Chao Mung
// Xuất ra màn hình console chuỗi Chao Mung


System.Console.WriteLine(“Chao Mung”);
System.Console.WriteLine(“Chao Mung”);


}
}


}

}
25

Không gian tên
Không gian tên

.NET cung cấp một thư viện các lớp có tên là
.NET cung cấp một thư viện các lớp có tên là
FCL
FCL

Người lập trình không thể nào nhớ hết được tên
Người lập trình không thể nào nhớ hết được tên
của các lớp trong .NET Framework
của các lớp trong .NET Framework

Không gian tên sẽ hạn chế phạm vi của một tên
Không gian tên sẽ hạn chế phạm vi của một tên

Tên này chỉ có ý nghĩa trong vùng đã định nghĩa
Tên này chỉ có ý nghĩa trong vùng đã định nghĩa



Ví dụ: System.Console.WriteLine();
Ví dụ: System.Console.WriteLine();
Ngôn ngữ C#
Ngôn ngữ C#



Không gian tên Lớp Phương thức

×