Common Intermediate Language
• Cho phép xây dựng ứng dụng với ngôn ngữ bạn quen thuộc
• Một ngôn ngữ chung cho nhiều hệ điều hành khác nhau
55 trang |
Chia sẻ: huyhoang44 | Lượt xem: 696 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Kĩ thuật lập trình - Tổng quan Lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
v 1.0 - 09/2012
Tổng quan Lập trình
1
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Nội dung
2
1. Lập trình là gì ?
2. C# và .NET
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Lập trình là gì ?
3
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Máy tính là...
4
tập hợp các dây dẫn và vi mạch được tổ chức sao cho có thể thực
hiện nhanh chóng các phép toán đơn giản...
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Vì sao máy tính lại có khả năng lớn như
hiện nay ?
5
Điều gì giúp một hộp linh kiện điện tử thành
một công cụ mạnh mẽ như vậy ?
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Lập trình
6
câu trả lời là nhờ có
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Lập trình là...
7
Chat với máy tính
Sai khiến máy tính thực hiện
những thao tác mong muốn
Cần hiểu/nắm vững ngôn ngữ của máy tính
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
8
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
9
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
turn right
turn left
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
10
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
turn right
turn left
step forward
turn right
step forward
turn left
step forward
turn left
step forward
turn right
step forward
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
11
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
turn right
turn left
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
12
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
turn right
turn left
step forward
step forward
step forward
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
13
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
Phải giải quyết bài toán với tất cả các trường hợp có thể (trường
hợp tổng quát)
Phải tìm ra thuật toán của bài toán
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
14
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
turn right
turn left
facing a wall ?
outside the maze ?
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
15
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
turn right
turn left
facing a wall ?
outside the maze ?
Làm thế nào để khái quát hoá chương trình ?
Chia nhỏ chương trình thành những thành phần cơ sở / trường hợp riêng
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
16
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
turn right
turn left
facing a wall ?
outside the maze ?
Luôn để chuột đi sát bên
phải các bức tường của
mê cung
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
17
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
turn right
turn left
facing a wall ?
outside the maze ?
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
18
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
đi sát bên phải bức tường
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
19
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
đi sát bên phải bức tường
turn right
if facing a wall then
turn left and if facing a wall then
turn left and if facing a wall then
...
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
20
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
đi sát bên phải bức tường
turn right
while (facing a wall?) {
turn left
}
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
21
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
đi sát bên phải bức tường
turn right
while (facing a wall?) {
turn left
}
đối diện không phải là bức tường, có thể bước tới
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
22
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung turn right
while (facing a wall?) {
turn left
}
step forward
if (not outside the maze?){
turn right
while (facing a wall?) {
turn left
}
step forward
if (not outside the maze?){
...
}
}
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
23
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
while (not outside the maze?){
turn right
while (facing a wall?) {
turn left
}
step forward
}
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
24
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
step forward
while (not outside the maze?){
turn right
while (facing a wall?) {
turn left
}
step forward
}
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chú chuột trong mê cung
25
Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một
mê cung
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Máy tính và ngôn ngữ lập trình
• Máy tính chỉ hiểu được và hành động hay trả lời đối với một số
lượng giới hạn các lệnh được dự đoán trước - gọi là tập lệnh
• Viết chương trình nghĩa là thể hiện việc giải quyết bài toán dưới
dạng thuật toán bằng các lệnh có trong tập lệnh
• Kết hợp một cách thông minh các lệnh đơn giản đó thì có thể thực hiện
được các công việc rất khó khăn và phức tạp
• Quá trình viết một chương trình :
• Phải biết các lệnh có sẵn
• Hiểu bài toán để lập một thuật toán giải
• Thể hiện thuật toán dưới dạng các lệnh máy
• Sử dụng ngôn ngữ lập trình bậc cao - máy tính sẽ chuyển ngôn ngữ
bậc cao thành các lệnh máy để chương trình có thể chạy được
26
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Ngôn ngữ lập trình
27
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Luôn có những đánh đổi
Ngôn ngữ cấp cao
gần với bài toán
phụ thuộc vào hệ thống
Ngôn ngữ cấp thấp
gần với hệ thống
không ánh xạ đến bài toán
Java, C#, Objective C
Fortran, COBOL, C++
C/C++
Assembler
Machine
28
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Các ngôn ngữ lập trình
29
FORTRAN ALGOL(58) ALGOL(60) CPL BCPL B
C
Objective C
C++ Java C#
Tham khảo Lịch sử ngôn ngữ lập trình,
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Phương pháp lập trình
30
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
• Tập trung vào cách giải quyết vấn đề (ví dụ : thuật toán)
• Chia một bài toán lớn ra làm nhiều bài toán nhỏ
• Các thủ tục hoặc chương trình con
• Ghép nối các đoạn chương trình xử lý các bài toán nhỏ thành
một chương trình
• Hai kiểu dữ liệu (dữ liệu được định nghĩa hai vùng khác nhau)
• Dữ liệu địa phương được định nghĩa ở bên trong và chỉ có thể truy xuất bên
trong một thủ tục
• Dữ liệu toàn cục được định nghĩa bên ngoài và có thể truy xuất ở bất kỳ đâu
trong chương trình
• Dữ liệu toàn cục dẫn đến hiện tượng ghép nối thủ tục
31
Hướng thủ tục
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
• Cố gắng đầu tiên để cải tiến mô hình hướng thủ tục
• Luồng dữ liệu
• Nối dữ liệu đầu vào với dữ liệu đầu ra
• Thiết kế cấu trúc dữ liệu trước
• Thiết kế tiến trình / hàm sau
• Che dấu dữ liệu
• Đóng gói dữ liệu và các thủ tục xử lý dữ liệu cùng trong một
module
• Dữ liệu vẫn trong miền toàn cục nhưng chỉ cho phép truy xuất
thông qua các hàm của module
• Abstract Data Type (ADT)
• Người lập trình tạo ra kiểu dữ liệu
• struct trong ngôn ngữ C#
32
Hướng dữ liệu
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
• “Object-oriented modeling and design is a new way
of thinking about problems using models organized
around real-world concepts. The fundamental
construct is the object, which combines both data
structure and behavior in a single entity.” James
Rumbaugh, Object-Oriented Modeling and Design
• Các đặc tính của mô hình thủ tục và dữ liệu
• Sự tổ chức tự nhiên cho dữ liệu và chức năng
• Các đối tượng đóng gói dữ liệu và chức năng với nhau
• Hỗ trợ ADT : nhiều đối tượng của một kiểu có thể được tạo ra
(class là một kiểu đặc biệt hay ADT)
• Hỗ trợ che dấu dữ liệu : truy xuất dữ liệu được kiểm soát thông
qua các từ khóa
33
Hướng đối tượng
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Chương trình và thuật toán
• Chương trình là một dãy các lệnh mà máy tính điện tử cần thực
hiện theo một thứ tự xác định để giải một bài toán nào đó
• Thuật toán là một tập hữu hạn các bước công việc cần được
thực hiện theo một trật tự nhất định để giải bài toán đó
• Để viết chương trình, chúng ta cần nắm :
• Ngữ pháp của một ngôn ngữ lập trình (C#)
• Phải thông thạo các quy tắc về ngữ pháp
• Cách trình bày chương trình
• Tổ chức chương trình sáng sủa
• Thiết kế và cài đặt một thuật toán
• Khó khăn nhất và hấp dẫn nhất
• Phải học, nhớ nhiều kỹ thuật và biết kết hợp các phương án thực hiện công việc
34
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Các bước trong lập trình
35
Trình soạn thảo
Trình biên dịch
Nạp và chạy
Các lỗi
biên dịch
và cảnh
báo
Lỗi
thi
hành
Đầu
ra
không
chính
xác
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Nền tảng .NET
36
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Trước khi có .NET
37
• C/C++
• C cung cấp khả năng điều khiển xâu vào hệ thống
• C++ cung cấp những lợi thế của lập trình hướng đối tượng
• tự quản lý bộ nhớ, cú pháp không chặt chẽ, phép tính con trỏ dễ nhầm lẫn
• Visual Basic 6.0
• cho phép dễ dàng xây dựng các giao diện phức tạp, truy xuất cơ sở dữ liệu
mà không đòi hỏi nhiều công sức
• không hoàn toàn hướng đối tượng, không hỗ trợ đa luồng
• Java
• độc lập nền tảng, cung cấp đầy đủ các kiểu dữ liệu và hàm chức năng cho
tất cả các loại ứng dụng
• ngôn ngữ thừa kế từ C++, những đã loại bỏ những cú pháp dễ gây nhập
nhằng
• không hỗ trợ khả năng liên thông ngôn ngữ
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Giải pháp .NET
• Một nền tảng phần mềm cho desktop và web
• Tương tác ngược với các công nghệ trước đây
• Hỗ trợ nhiều ngôn ngữ lập trình - C#, Visual Basic, F#, J#,...
• Một động cơ thi hành chung (common runtime engine) được
chia sẻ cho tất cả các ngôn ngữ chấp nhận .NET (.NET-aware
languages)
• Tích hợp (integration) hoàn toàn và với tất cả các ngôn ngữ
• Một thư viện lớp cơ sở (base class library) đầy đủ
• Lập trình đơn giản cho các trang web động
• Mô hình phát triển đơn giản hoá
• Không còn phải đăng ký chương trình với hệ thống registry
• Cho phép nhiều phiên bản của một dll tồn tại trong 1 máy
38
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Kiến trúc nền tảng .NET
39
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Common Language Runtime
40
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
.NET assembly
• Là đơn vị nhỏ nhất (.exe, .dll) để phân phối, đánh phiên bản
(versioning), tải tự động
• Bao gồm : manifest, metadata, mã IL/CIL
• Metadata được sử dụng để : tải tự động, đánh phiên bản và
phản chiếu (reflection)
41
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Common Intermediate Language
• Cho phép xây dựng ứng dụng với ngôn ngữ bạn quen thuộc
• Một ngôn ngữ chung cho nhiều hệ điều hành khác nhau
42
.assembly Hello {}
.method public static void Main() cil managed
{
.entrypoint
.maxstack 1
ldstr "Hello, world!"
call void [mscorlib]System.Console::WriteLine(string)
ret
}
C:\>ildasm Hello.exe
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình43
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn
• Môi trường thực thi .NET cung cấp một trình biên dịch JIT cho
nền tảng bên dưới
• Tại mỗi thời điểm, JIT sẽ biên dịch phần được triệu gọi của mã
nguồn và lưu mã máy đã được biên dịch vào lại assembly thay
cho mã CIL
Tổng quan lập trình
JIT/Jitter (Just-in-time) Compiler
44
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Diễn dịch & biên dịch
• Diễn dịch (Interpreter) là quá trình đọc mã nguồn và trả ra
kết quả của việc thực thi mã nguồn đó
• Phân tích lặp lại ở một số câu lệnh (vòng lặp, hàm)
• PERL, Python, HTML, Javascript,...
• Biên dịch (Compiler) là quá trình dịch một chương trình từ
ngôn ngữ nguồn sang ngôn ngữ đích
• Thời lượng biên dịch ảnh hưởng đến hiệu năng thực thi
• Cần nhiều tối ưu
• C, C++, Java, COBOL,...
45
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Hướng tiếp cận lai
Ví dụ nổi tiếng là Java
• Biên dịch mã nguồn Java sang byte codes - Java virtual
machine language (tập tin .class)
• Thực thi
• Diễn dịch trực tiếp byte codes, hoặc
• Biên dịch một số hoặc tất cả ra mã máy (native code)
• Just-in-time compiler (JIT)
46
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
.NET Base Class Library
• .NET cung cấp một thư viện lớp đầy đủ
• 200 namespace với 4500 kiểu dữ liệu
• Hỗ trợ những công nghệ quan trọng
• XML
• mã hoá (cryptography)
• phản chiếu (reflection)
• đa luồng (multi-threading)
• ...
• Cơ bản thống nhất cho các ngôn ngữ lập trình khác nhau
47
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
.NET Base Class Library
48
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Common Type System
• Đặc tả hình thức các kiểu phải được định nghĩa để được sử
dụng trên CLR
• Tập các kiểu dữ liệu chung :
• Bất kỳ ngôn ngữ nào chạy trên CLR đều nên cài đặt
• Không có cú pháp xác định
• Các ngôn ngữ thường định nghĩa các kiểu thay thế
49
CTS C#
System.Int32 int
System.Int64 long
System.String string
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Common Language Specification
• Một tập các đặc tả mà các trình biên dịch phải thoả mãn, nếu
chúng muốn sản phẩm của chúng là hoạt động tốt trong thế
giới .NET
50
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
C#
51
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Các ngôn ngữ .NET
52
• Hơn 20 ngôn ngữ chấp nhận .NET
• Hầu hết được cung cấp bởi bên thứ ba (3rd parties)
• Các ngôn ngữ .NET được cung cấp bởi Microsoft
• C++
• Visual Basic
• C#
Danh sách các ngôn ngữ lập trình .NET,
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
C#
• C# là ngôn ngữ hướng đối tượng đơn giản, trong sáng, chỉ gồm
~80 từ khoá và hơn 10 kiểu dữ liệu cơ sở
• Khá giống Java
• 70% Java, 10% C++, 5% Visual Basic, 15% new
53
Giống Java
• Object-orientation (single inheritance)
• Interfaces
• Generics
• Exceptions
• Threads
• Namespaces
• Strong typing
• Garbage collections
• Reflection
• Dynamic loading of code
• ...
Giống C++
• Struct types
• Operator oveloading
• Pointer arithmetic in unsafe
• Some syntactic details
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình
Các đặc điểm của C#
• Không yêu cầu con trỏ
• Quản lý bộ nhớ tự động thông qua trình gom rác (Garbage
Collector)
• Cấu trúc cú pháp hình thức cho kiểu dữ liệu liệt kê
(enumeration), cấu trúc (structure) và thuộc tính lớp (class
properties)
• Cho phép chồng hàm cho các kiểu dữ liệu tự tạo
• Sử dụng cú pháp tương tự khuôn mẫu trong C++ để lập trình
các generic
• Hỗ trợ hoàn toàn cho các kỹ thuật lập trình dựa trên giao diện
54
Thursday, September 5, 13
Lê Viết Mẫn - lvman@hce.edu.vn
Cảm ơn sự chú ý
Câu hỏi ?
Tổng quan lập trình55
Thursday, September 5, 13
Các file đính kèm theo tài liệu này:
- 01_tong_quan_lap_trinh_3228.pdf