BFramework (CLR, CTS, CLS, MSIL…, garbage collection, namespace), tổng quan ngôn ngữ C. Mời các bạn cùng tham khảo nội dung chi tiết. TỔNG QUAN .NET NGÔN NGỮ C Nội dung 1. Giới thiệu .NET Framework 1. CLR, CTS, CLS, MSIL… 2. Garbage collection 3. Namespace 2. Tổng quan ngôn ngữ C 1. Đặc điểm ngôn ngữ 2. Quá trình biên dịch CT C 3. Các loại CT C 4. Cấu trúc chương trình C ài giảng Lập trình Windows Tổng quan .Net , ngôn ngữ C trình bày các nội dung: Giới thiệu .NET 5. Chương trình C đơn
Trang 1T NG QUAN .NET Ổ
Trang 3IDE thì cung cấp một môi trường
giúp chúng ta triển khai dễ dàng,
và nhanh chóng các ứng dụng
dựa trên nền tảng NET.
Chương trình nền tảng cho công
nghệ NET
Cung cấp tập hợp class library
Base Framework Classes Data and XML Classes Custom Classes
C# VB.NET J# C++ …
XML Web Service
Web Forms
Windows Forms ASP.NET
Trang 4ng d ng c a .NET Framework
Một mô hình lập trình cho phép nhà phát triển xây dựng các ứng dụng dịch vụ web và ứng dụng client với Extensible Markup Language (XML).
Tập hợp dịch vụ XML Web, như Microsoft NET My Services cho phép nhà phát triển đơn giản và tích hợp người dùng kinh nghiệm.
Cung cấp các server phục vụ bao gồm: Windows 2000, SQL Server, và BizTalk Server, tất cả điều tích hợp, hoạt động, và quản lý các dịch vụ XML Web và các ứng dụng.
Các phần mềm client như Windows XP và Windows CE giúp người phát triển phân phối sâu và thuyết phục người dùng kinh nghiệm thông qua các dòng thiết bị.
Nhiều công cụ hỗ trợ như Visual Studio NET, để phát triển các dịch vụ Web XML, ứng dụng trên nền Windows hay nền web
Trang 5.NET 1.1 (Apr2003)
VS .NET 2003 Default: Server 2003
.NET 3.5 (Nov2007) VS.NET 2008
Default: Windows 7
.NET 3.0 (Nov2006) Default: Windows Vista, Server 2008
.NET 2.0 (Nov2005) VS.NET 2005
Trang 6Đ c đi m c a ng d ng .NET ặ ể ủ ứ ụ
Language)
CLR (Common Language RunTime)
(dotnetfx.exe) để chạy ứng dụng NET trên máy client
Trang 7Đ c đi m c a ng d ng .NET ặ ể ủ ứ ụ
CT C#.NET
CT VB.NET
CT J#.NET
VB NET Compiler
1011010 1011010 1011010
Programmer
Trang 8 NET Framework có hai thành phần chính: Common Language Runtime (CLR) và thư viện lớp NET Framework CLR là nền tảng của NET Framework.
Language (CIL)
provide a language-neutral platform for application development and execution
Trang 9 Theo quan điểm của người lập trình, NET có thể hiểu như môi trường thực thi mới và thư viện lớp cơ sở cải tiến
management, security check
tượng của các kiểu dữ liệu được dùng lại, nó cho phép chúng ta có thể phát triển những ứng dụng từ những ứng dụng truyền thống command-line hay những ứng dụng có giao diện đồ họa (GUI) đến những ứng dụng mới nhất
Trang 10 Common Type System (CTS):
CTS đảm bảo rằng những mã nguồn được quản lý thì được
tự mô tả (selfdescribing).
Mã nguồn được quản lý có thể sử dụng những kiểu được quản lý khác và những thể hiện, trong khi thúc đẩy nghiêm ngặt việc sử dụng kiểu dữ liệu chính xác và an toàn.
Mục đích hỗ trợ thực thi chéo ngôn ngữ
Định nghĩa kiểu dữ liệu tiền định và có sẵn trong IL:
Tất cả ngôn ngữ NET sẽ được sinh ra mã cuối trên cơ sở kiểu
dữ liệu này
… Integer
…
… Integer
…
… Int32
…
… Int32
…
… int
…
… int
…
Trang 11 Tất cả compiler hướng NET đều phải tuân thủ theo CLS
thi chéo
IL phân biệt loại ký tự, VB.NET ko phân biệt, CLS báo rằng ko cho phép 2 định danh chỉ khác nhau về kiểu ký tự, do đó VB.NET có thể hoạt động trong CLS
Trang 13 Trong NET Framework, chương trình không được biên dịch vào các tập tin thực thi mà thay vào đó chúng được biên dịch vào những tập tin trung gian gọi là Microsoft Intermediate
Language (MSIL).
IL
mã máy nhanh hơn
JIT compiling
Trang 14• Mã nguồn C# được biên dịch vào MSIL khi chúng ta build
project Mã MSIL này được lưu vào trong một tập tin trên đĩa.
• Khi chúng ta chạy chương trình, thì MSIL được biên dịch một
lần nữa, sử dụng trình biên dịch Just-In-Time (JIT) Kết quả là
mã máy được thực thi bởi bộ xử lý của máy.
Trang 15thư viện động
các kiểu và phương thức được định nghĩa trong mă
tương ứng
phép kiểm tra phiên bản và tính trạng của assembly
T A ss
em bly
Trang 16Tiến trình thực thi bởi một chương trình C#:
các Assembly manifest và quyền hạn chạy của chương trinh trên hệ thống
chạy, chương trình sẽ không chạy
Bit đầu tiên của code được nạp vào bộ nhớ và được biên dịch thành mã nhị phân từ IL bởi JIT
bộ nhớ
Trang 17.NET Framework
(CLR)
Windows (OS khác)
Legacy Software (unmanaged code)
Legacy Software (unmanaged code)
Common Language Runtime Managed Executable
Trang 18 Thời gian chạy NET hoàn toàn phụ thuộc vào garbage collector instead
GC là một chương trình hỗ trợ việc thu dọn bộ nhớ
Thỉnh thoảng NET sẽ kiểm tra xem vùng heap đầy chưa để
nó tiến hành thu dọn, và nó gọi đây là tiến trình thu dọn rác.
Trình thu dọn rác sẽ kiểm tra các tham chiếu từ mã của bạn,
ví dụ các tham chiếu từ mã của bạn đến các đối tượng được lưu trên heap được nhận dạng, nó có nghĩa là đối tượng đó vẫn còn tham chiếu, các đối tượng không còn tham chiếu nữa
sẽ bị huỷ.
Một điều đặc biệt quản trọng là tính không định trước của trình thu gom rác Bạn không thể bảo đảm được khi nào trình thu dọn rác sẽ được gọi; nó sẽ được gọi khi CLR cảm thấy cần (nếu bạn không thực hiện lời gọi tường minh).
Trang 20 GC xuất hiện (không định trước) khi ko đủ bộ nhớ để cung cấp cho ứng dụng
managed heap, xoá nếu ko còn tham chiếu tới
Trang 21ngữ là tên namespace
Namespace CS1
Class A Class B Class C
Class A Class B Class C
Namespace CS2
Class A Class B Class C
Class A Class B Class C
CS1.A…
CS2.A…
Trang 22namespace System
trong 1 namespace
Customer Personel
CompanyName
Tên lớp Tên
namespace
Trang 23Các l p .NET Framework ớ
Khá đa dạng & đầy đủ:
Trang 24Các l p .NET Framework ớ
Đặc tính lõi: IL, kiểu dữ liệu trong CTS
NET attributes and reflection
Trang 25Namespace Description
System Ch a l p toán h c, chuy n đ i d li u ứ ớ ọ ể ổ ữ ệ System.IO Các l p cho thao tác Input và Output ớ System.Net Các l p liên quan đ n network protocol ớ ế System.Collections Ch c các l p liên quan đ n x lý t p h p ứ ớ ế ử ậ ợ System.Data Các l p c a ADO.NET ớ ủ
System.Drawing Các l p th c thi ch c năng GUI ớ ự ứ System.Threading Các l p l p trình MultiThread ớ ậ System.Web Các l p liên quan đ n HTTP protocol ớ ế System.Xml Các l p liên quan XML ớ
Trang 26.NET Framework X.Y
.NET App
.NET App
.NET App
.NET App .NET .NET App App
Trang 27Tóm t t ắ
Tất cả các chương trình viết bằng ngôn ngữ khác nhau (trên NET) sẽ được chuyển về mã thống nhất MSIL
Trang 30Ngôn ng C# ữ
Trang 31 Bổ sung khái niệm "property" cho các lớp
Khái niệm delegate & event
Trang 32C# m nh m & b n v ng ạ ẽ ề ữ
Trang 33 Việc cài đặt App C# như là tái phân phối các thành phần NET
n-tier
Kết nối ADO.NET cho phép truy cập nhanh chóng & dễ dàng với SQL Server, Oracle…
Trang 35Quá trình d ch CT C# ị
MSIL: tập tin exe hoặc dll
Dùng kỹ thuật JIT (just-in-time) để tăng tốc độ
Trang 36Quá trình d ch CT C# ị
Hello.cs C# Compiler
Hello.exe hoặc Hello.dll
Hello.exe hoặc Hello.dll
CLR trên Windows
CLR trên Windows
Thực thi trên Windows
Thực thi trên Windows
CLR trên Linux
CLR trên Linux trên LinuxThực thi
Thực thi trên Linux
Thực thi trên MacOS
CLR trên MacOS MSIL
Trang 37Các lo i ng d ng C# ạ ứ ụ
(underlying code)
Trang 38ng d ng Console
Trang 39UD WinForm và Web Form
Trang 40T o ng D ng Console ạ Ứ ụ
Trang 41static void Main( string [] args)
{
Console Write( "Hello World!" );
Console ReadLine();
} }
}
Trang 42static void Main( string [] args){ {
Console Write( "Hello World!" );
Console ReadLine();
}
}
}
Trang 43Câu l nh ệ
đây là phương thức Main)
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 44static void Main( string [] args)
{
Console Write( "Hello World!" );
Console ReadLine();
} }
Trang 45trình và các câu lệnh
chú thích XML
Trang 46Hai cách t o chú thích c b n ạ ơ ả
/* Chương trình C# đầu tiên
In ra câu chào "Hello World" */
Trang 47 Chú thích XML bắt đầu với triple slash (“///”) và các tag của XML
Trang 48mment
Trang 49/// <summary>
/// Class temperature provides functions which convert
/// among various temperature scales
/// <param name="degreesCelsius"> Degrees Celsius </param>
/// <returns> Returns degrees Fahrenheit </returns>
public static int CelsiusToFahrenheit( int degreesCelsius)
Trang 50/// <param name="degreesCelsius"> Degrees Celsius </param>
/// <returns> Returns degrees Fahrenheit </returns>
public static int CelsiusToFahrenheit( int degreesCelsius) {
return (( int )((9/5)*degreesCelsius) + 32);
}
/// <summary>
/// Converts degrees Fahrenheit to degrees Celsius
/// </summary>
/// <param name="degressFahrenheit"> Degrees Fahrenheit </param>
/// <returns> Returns degrees Celsius </returns>
public static int FahrenheitToCelsius( int degressFahrenheit) {
return (( int )((5/9)*(degressFahrenheit - 32)));
C# Code with XML Comm
ent C# Code with XML Comm
ent
Trang 52T o WinForm App ạ
T o project: Windows Appạ
Trang 54T o WinForm App ạ
Các thành phần của một project: (cửa sổ Solution)
thư mục lưu trữ như sau:
Trang 55T o WinForm App ạ
Các kiểu file của các thành phần trong project
Các file lưu trữ chính
*.cs: tập tin lưu code của form viết bằng C#
*.Designer.cs: tập tin lưu phần thiết kế của form
*.resx: tập tin lưu tài nguyên của form
*.csproj: tập tin quản lý ứng dụng (file dùng để
mở project)
*.sln: tập tin quản lý đồ án (khi cần phối hợp
nhiều project trong ứng dụng)
Trang 57Giao di n thi t k form ệ ế ế
Giao di n thi t k form ệ ế ế
Form chính c a ng d ngủ ứ ụ
Ch a có ư
control
Trang 60Thêm control v à o form
Trang 61Code c a ph n design ủ ầ
Code c a ph n design ủ ầ
Khai báo các đ i ố
tượng control trên Form1
Ch a code kh i t o ứ ở ạ
control Form1.Designer.cs
Trang 62Code c a ph n design ủ ầ
Code c a ph n design ủ ầ
T o đ i tạ ố ượng
L n lầ ượt khai báo các thu c tính ộ
cho các control InitializeComponent
Trang 63Code c a ph n design ủ ầ
Code c a ph n design ủ ầ
InitializeComponent
Đ a các control vào danh ư
sách control c a Form1ủ
Trang 64S a thu c t ử ộ
S a thu c t ử ộ í nh c a control nh c a control ủ ủ
Đ i tên ổ
thành txtNum1
Thay đ i các giá tr qua c a ổ ị ử
s properties > VS t c p ổ ự ậ
nh t codeậ
Trang 65Ph n x lý ầ ử
Ph n x lý ầ ử
Khi click vào Add -> cộng 2 giá trị và xuất kết quả
Button Add cung cấp sự kiện click
Form sẽ được cảnh báo khi Add được click
Form sẽ lấy dữ liệu từ 2 textbox và cộng -> kết quả
Button đưa ra sự kiện click: đối tượng publish
Form quan tâm đến sự kiện click của button, Form có sẽ
phần xử lý ngay khi button click.
Phần xử lý của form gọi là Event Handler
Form đóng vai trò là lớp subscribe
Trang 66Khai b á o event handler
tạo event handler cho sự kiện này.
DClick
C a s qu n lý ử ổ ả
event c a BtnAddủ
event
Trang 67Khai b á o event handler
Event handler cho button Add
Trang 69Vi t ph n x lý ế ầ ử
Vi t ph n x lý ế ầ ử
Lấy giá trị của 2 textbox, cộng kết quả và xuất ra MeesageBox
Trang 70Tóm t t ắ
Trang 71Câu h i và bài t p ỏ ậ
Câu hỏi 1: Một chương trình C# có thể chạy trên bất cứ máy
nào?
Trả lời 1:
có Common Language Runtime (CLR) được cài đặt
máy không có CLR thì chúng ta sẽ nhận được một lỗi
chúng ta sẽ được bảo rằng thiếu tập tin DLL
Trang 72Câu h i và bài t p ỏ ậ
Câu hỏi 2: Nếu muốn đưa chương trình mà ta viết cho một
người bạn thì tập tin nào mà chúng ta cần đưa?
Trả lời 2:
Thường cách tốt nhất là đưa chương trình đã biên dịch Điều này có nghĩa rằng sau khi mã nguồn được biên dịch, chúng ta sẽ có một chương trình thực thi (tập tin có phần
mở rộng *.exe )
Và những người bạn của chúng ta không cần thiết phải
có trình biên dịch C# Họ chỉ cần có C# runtime trên máy tính (như CLR của Microsoft) là có thể chạy được chương trình của chúng ta
Trang 73Câu h i và bài t p ỏ ậ
Câu hỏi 3: Sau khi tạo ra được tập tin thực thi exe Có cần
thiết giữ lại tập tin nguồn không?
Trả lời 3:
Nếu chúng ta từ bỏ tập tin mã nguồn thì sau này sẽ rất khó khăn cho việc mở rộng hay thay đổi chương trình, do
đó cần thiết phải giữ lại các tập tin nguồn
tập tin thực thi
phải giữ các tập tin khác như là các tài nguyên bên ngoài các icon, image, form Chúng ta sẽ lưu giữ những tập tin
Trang 74Câu h i và bài t p ỏ ậ
Câu hỏi 4: Nếu trình biên dịch C# đưa ra một trình soạn
thảo, có phải nhất thiết phải sử dụng nó?
Trả lời 4:
cứ trình soạn thảo văn bản nào và lưu mã nguồn dưới dạng tập tin văn bản Nếu trình biên dịch đưa ra một trình soạn thảo thì chúng ta nên sử dụng nó
ta có thể sử dụng nó Một số các tiện ích soạn thảo mã nguồn có thể giúp cho ta dễ dàng tìm các lỗi cú pháp, giúp tạo một số mã nguồn tự động đơn giản
Trang 75 Nói chung cách tốt nhất là chúng ta nên xem tất cả những cảnh báo để sửa chữa chúng, một chương trình tạm gọi là đạt yêu
Trang 76Câu h i và bài t p ỏ ậ
Câu hỏi thêm
lập trình tốt?
chương trình?
biên dịch mã nguồn cs và lệnh này gọi chương trình
nào?
mã nguồn C#?
Trang 77Câu h i và bài t p ỏ ậ
Câu hỏi thêm
mã nguồn C# hợp lệ hay không? Có thể biên dịch được hay không?
tin exe thì tập tin này là ngôn ngữ gì?
thực hiện đúng như mong đợi của chúng ta, thì điều gì chúng ta cần phải làm?
Trang 78Câu h i và bài t p ỏ ậ
Câu hỏi thêm
thể tồn tại bên ngoài lớp như C/C++?
Java, hay bất cứ ngôn ngữ cấp cao nào mà bạn đã biết?
có thì nó được quản lý như thế nào?
xảy ra nếu như ngôn ngữ lập trình không hỗ trợ namespace?
Trang 79Bài t p ậ
chương trình thực hiện điều gì?
double circum, area;
area = PI * radius* radius;
circum = 2 * PI * radius;
// in kết quả Console.WriteLine(“Ban kinh = {0}, PI = {1}”, radius, PI);
Console.WriteLine(“Dien tich {0}”, area);
Console.WriteLine(“Chu vi {0}”, circum);
Trang 80Bài t p ậ
chương trình thực hiện điều gì?
}
}
Trang 81Bài t p ậ
Bài tập 3: Sửa lỗi và biên dịch chương trình sau
class Test
Trang 82Bài t p ậ
Bài tập 4: Sửa lỗi và biên dịch chương trình sau
class Test
Trang 83Bài t p ậ
Bài tập 5: Viết chương trình xuất ra bài thơ:
Rằm Tháng Giêng
Rằm xuân lồng lộng trăng soi,
Sông xuân nước lẫn màu trời thêm xuân
Giữa dòng bàn bạc việc quân
Khuya về bát ngát trăng ngân đầy thuyền
Hồ Chí Minh
Trang 84Tài li u tham kh o ệ ả
Apress, 2000
2001
Wiltamuth, Microsoft Corp