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
25 trang |
Chia sẻ: lylyngoc | Lượt xem: 1634 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Chương 1 Tổng quan về lập trình cho MTĐT, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
4/10/2012
1
Chương 1
Tổng quan về lập trình cho MTĐT
Giảng viên: ThS. Phạm Thanh An
Khoa công nghệ thông tin
Đại học Ngân hàng TP. Hồ Chí Minh
Nội dung trình bày
Khái niệm về chương trình, ngôn ngữ lập
trình, giải thuật
Giới thiệu về Top down Design
Mô hình phát triển phần mềm
Các cách tiếp cận trong lập trình
Tổng quan về lập trình hướng đối tượng
Kiến trúc .NET Framework và C#
Viết các chương trình đơn giản
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
4/10/2012
2
Giải thuật - Algorithm
Giải thuật (Thuật toán - Thuật giải)
Là dãy các câu lệnh (chĩ dẫn) chặt chẽ và
rõ ràng, xác định một trình tự các thao tác
trên một số đối tượng nào đó sao cho sau
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 2Program 1
Commands Commands Commands
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.
4/10/2012
3
Các lớp Ngôn ngữ lập trình
MACHINE CODE
ASSEMBLER LANGUAGES
HIGH-LEVEL
LANGUAGES
ForTran, COBOL, C, C++,
LISP, Pascal, Java, ...
4GLs ORACLE, SEQUEL, INGRES, ...
5GLs Artificial intelligence
Hợp ngữ - Assembler
Nguyên lý Von Neumann
Bao gồm 3 bước: Input –Process -Output
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
4/10/2012
4
Mô 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
Ra: Nghiệm phương trình ax + b =0
1. Nhập 2 số thực a và b
2. Nếu a =0 thì
2.1. Nếu b = 0,
2.1.1. Phương trinh vô số nghiệm
2.1.2. Kết thúc giải thuật
2.2. Ngược lại
2.2.1. Phương trình vô nghiệm
2.2.2. Kết thúc giải thuật
3. Ngược lại
3.1. Phương trình có nghiệm
3.2. Giá trị nghiệm đó là x = -b/a
3.3. Kết thúc giải thuật
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
4/10/2012
5
Ví dụ: Cộng hai số
Ví dụ:
S T A R T
IN P U T n u m
r = n u m M O D 2
r = 0
D IS P L A Y "N u m b e r i s E ve n "
S T O P
Ví dụ:
S TA RT
INP UT num
r = num MO D 2
r = 0
DISP LAY "Number is E ven"
S TOP
DIS PLA Y " Number is O dd"
Yes No
4/10/2012
6
Bằng mã giả
Input: Vào a, b thuộc tập R
Ra: Nghiệm phương trình ax + b =0
If a = 0 then
Begin
If b = 0 then
Xuất “Phương trình vô số nghiệm”
Else
Xuất “Phương trình vô nghiệm”
End
Else
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
Lựa chọn: chọn 1 trong 2 hay nhiều thao tác
để thực hiện
Lặp: Một hay nhiều thao tác được lặp lại 1
hay nhiều lần.
Top-down Design
Top-Down Design là kỹ thuật trong chiến lược
chia để trị
Các vấn đề phức tạp có thể được giải quyết
bằng kỹ thuật top-down design hay stepwise
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
4/10/2012
7
Các phase phát triển phần mềm
Tìm hiểu và phân tích yêu cầu
Thiết kế
Cài đặt
Kiểm thử
Triển khai và Bảo trì hệ thống
Mô hình WaterFall
Mô hình WaterFall (tt)
Ưu điểm:
Thích hợp cho những dự án lớn.
Quản lý dự án sẽ dễ dàng và thuận tiện.
Nhược điểm:
Thiếu sự trao đổi giữa người sử dụng và
nhóm phát triển.
Không cho phép thay đổi nhiều theo các
đặc tả yêu cầu của hệ thống.
4/10/2012
8
Mô hình xoắn ốc
Mô hình xoắn ốc (tt)
Phát triển hệ thống nhanh, sửa lỗi đến khi hoàn thiện.
Ưu điểm:
Linh hoạt trong việc thay đổi yêu cầu.
Nhược điểm:
Các pha bị 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:
Linh hoạt trong việc thay đổi yêu cầu.
Rút ngắn thời gian phát triển.
Nhược điểm:
Không thích hợp trong dự án lớn.
4/10/2012
9
Các phương pháp lập trình
Lập trình tuần tự: Assembler (hợp ngữ)
Chương trình quá dài, khó nhớ
Khó kiểm soát lỗi
Lập trình cấu trúc (thủ tục/hướng chức năng)
Chương trình chính được chia nhỏ thành các
chương trình con
Mỗi chương trình con thực hiện một công việc xác
định
Lập trình hướng đối tượng
Lập trình cấu trúc
Hàm_1 Hàm_2 Hàm_3
Hàm_4 Hàm_5 Hàm_6
Hàm_7 Hàm_8 Hàm_9
Chương trình chính
main()
So sánh HĐT và hướng chức năng
Cách tiếp cận hướng đối tượng
Hệ thống được xem là một tập hợp các đối
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)
Hệ thống được xem là một tập hợp các thủ
tục tương tác với dữ liệu
Dữ liệu tách rời các thủ tục
4/10/2012
10
So 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
Methods
Trừu tượng hóa dữ liệu
Bao gói và che dấu thông tin
Kế thừa
Đa hình
Đối tượng
Đối tượng = Dữ liệu + Hành vi
Hành vi
- Tăng giây
- Tăng phút
- Tăng giờ
Dữ liệu
- Giây
- Phút
- Giờ
4/10/2012
11
Đối tượng (tt)
Thuộc tính
•Nhãn hiệu xe
•Màu xe
•Công suất
•Giá
Hành vi
•Khởi động
•Chạy xe
•Dừng xe
•Tắt máy
Trừ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
Thu thập và phân tích các đối tượng liên quan, nắm
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
DonHang
int MaDH
int MaKH
Tinh_gia();
public:
TaoDH( )
CapnhatDH( )
GiatriDH( )
Các phương
thức chung của
đơn hàng
Lớp đối tượng Bên ngoài
4/10/2012
12
Kế thừa
Nhân viên
Người
Sinh viên Bác sĩ
Đa hình
Môi trường phần mềm trước đây
Đối với người phát triển ứng dụng
Luôn quan tâm tới hệ điều hành
Luôn quan tâm tới công cụ, ngôn 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
Không tích hợp được các ngôn ngữ khác
nhau
Khó khăn khi phát triển các ứng dụng phân
tán
4/10/2012
13
Môi trường phần mềm trước đây (tt)
Đối với người sử dụng
Bất lợi khi phải cài ứng dụng trên máy đơn
Các trang web không tương tác với nhau
.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
mới
Sử dụng mã trung gian
Độc lập với hệ điều hành
Đa ngôn ngữ
Hướng đến ứng dụng Internet
Hỗ trợ WebService
Tốc độ phát triển ứng dụng nhanh
Ứ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
NET common language runtime (CLR)
.NET framework class library (FCL)
4/10/2012
14
Kiế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
VB C++ C# J# …
Visual Studio .N
ET
Common Language Runtime - CLR
CLR (Common Language Runtime) là nền tảng
của .NET Framework.
Là công cụ thực thi mã trung gian (tựa JVM)
Biên dịch (Just-in-time compiler)
Thực thi mã nguồn
Quản lý bộ nhớ
Thưc thi luồng (Thread execution)
Xử lý lỗi (Error-handling)
Xác nhận mã nguồn an toàn và các hình thức
khác của việc chính xác mã nguồn (managed
code),
Framework Class Libraries - FCL
Thư viện lớp.NET Framework
Là một tập hợp hướng đối tượng của các
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
Được sử dụng bởi bất kỳ ngôn ngữ của
.NET
Hầu hết các lớp được gom vào một không
gian tên gọi là System
4/10/2012
15
.NET framework
là tập hợp của nhiều ý tưởng
.NET
OOP JVM
GUI
Web
component-based
design n-tier design
.Net là đa ngôn ngữ
code.vb code.cs code.cpp ...
Development Tools
app.exe
FCL
.NET là đa ngôn ngữ (tt)
.Net không chỉ hỗ trợ một ngôn ngữ độc
lập, có thể là sự tích hợp ngôn ngữ trong
một ứng dụng
Có nghĩa là chúng ta có thể xây dựng
một lớp kế thừa code từ các ngôn ngữ
hỗ trợ .NET khác nhau
4/10/2012
16
.Net là độc lập về hệ điều hành
Các ứng dụng trong Net chạy được trên
bất kỳ các nền tảng hỗ trợ
APP.exe
?
Win64 Win32
(XP,2K,98)
WinCE
Net là độc lập về hệ điều hành
VB C++ C# …
Intermedia
Languge
CLR 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
Thực thi ứng dụng độc lập về hệ điều hành
(Cross-platform) được hiểu theo 2 cách sau:
Các ứng dụng được viết dựa trên Framework Class
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)
4/10/2012
17
Biên dịch trong .NET
Code in VB.NET Code in C#
Code in another
.NET Language
VB.NET compiler C# compiler
Appropriate
Compiler
IL(Intermediate
Language) code
CLR (Common Language Runtime)
just-in-time compilation
Biên dịch trong .NET (tt)
Các chương trình được viết bởi ngôn lập trình
đượ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)
Các mã trung gian là như nhau, dù được viết bởi
ngôn ngữ lập trình nào trong Net.
Sản phẩm IL giống nhau, nên kết quả là một đối
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.
4/10/2012
18
Biê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 lập về ngôn ngữ
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
app)
Tất cả source code được biên dịch vào 1
file .exe
Không phải là quy tắc trong windows
APP.exe
Thiết kế ứng dụng trong .Net (tt)
Ứng dụng dựa trên thành phần
(Component-based)
Component-based app: .EXE + 1 hay nhiều hơn
.DLLs
Đây là chuẩn thực tiễn trên windows
compute.dll
data.dll
GUI.exe
4/10/2012
19
Tạ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
dụng sau
Ứng dụng Console
Ứng dụng giao diện GUI trên Windows
(Windows Forms)
Ứng dụng web (ASP.NET)
Dịch vụ web service (XML web)
Ứng dụng trên Mobile
Các phiên bản của .Net
.Net framework 1.0 – 2002
.Net framework 1.1 – 2003
.Net framework 2.0 – 2005
Net framework 3.5 – 2008
4/10/2012
20
Assemblies
Cá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()
.Dll mô tả gói gồm các lớp
Assemblies
Development Tools
assembly
code.vbcode.vb
code.cs
.EXE / .DLL
Cấu trúc chương trình C#
4/10/2012
21
Thực thi ứng dụng .Net
Client cần CLR & FCL để thực thi ứng
dụng .NET
Cài đặt Redistributable .NET Framework
20MB
Chạy trên nền 98 và trở lên, NT (sp6a) trở lên
Thực thi ứng dụng .Net
Apps.EXE
other FCL
assemblies
CLR
JIT Compiler
obj code
OS Process
Underlying OS and HW
Core FCL
assembly
.DLL.DLL.DLL
obj code
obj code
obj code
Giới thiệu về C#
C# được xây dựng trên nền tảng C++ và Java
Đơn giản hơn 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
C# phân biệt chữ hoa chữ thường
Giới thiệu vào 7/2000
4/10/2012
22
C# 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
tương ứng
Phiên bản VB.NET ~ C#
Phát triển chương trình minh họa
using System;
class Hello {
static void Main( )
{
// Console from the System namespace
Console.WriteLine("Hello World");
}
}
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:
Sử dụng môi trường phát triển tích hợp
(IDE) Visual Studio .NET
Sử dụng chương trình soạn thảo văn bản
bất kỳ như Notepad rồi dùng biên dịch dòng
lệnh.
4/10/2012
23
Biê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.exe từ 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.exe từ file nguồn array1.cs
tham chiếu đến assembly có tên array2.dll:
4/10/2012
24
Biên dịch và chạy chương trình trình
Sử dụng trinh soạn thảo notepad và DOS
prompt
Step 1 – gõ code trong Notepad
Step 2 – lưu file với phần mở rộng là .cs
Step 3 – Chuyển qua dấu nhắc DOS prompt
và gõ lệnh sau
csc .cs
Để chạy file C#, gõ tên file không phần mở rộng
Sử dụng IDE VS .NET
Sử dụng IDE VS .NET
Tạo một ứng dụng console
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():
System.Console.WriteLine("Hello World");
Dịch chương trình : Build-> Build
Solution
Chạy chương trình : Ctrl+F5 hoặc vào
debug -> start
4/10/2012
25
Tóm tắt
.Net là một nền tảng phát triển phần mềm
Đa ngôn ngữ
Độc lập với hệ điều hành
Sử dụng ngôn ngũ trung gian IL
Hướng đến các ứng dụng phân tán
Phát triển ứng dụng nhanh
Triển khai ứng dụng dễ dàng
An toàn
Hướng đối tượng
Dựa trên nền tảng component
CLR, FCL là nền tảng
Q&A