Bài giảng Cơ sở lập trình - Chương 1: Tổng quan về lập trình cho MTĐT với các kiến thức 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; viết các chương trình đơn giản...
Trang 1Chương 1
Tổng quan về lập trình cho MTĐT
Giảng viên:ThS Phạm Thanh An
Khoa côngnghệ 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
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 2Giải thuật - Algorithm
Giải thuật (Thuật toán - Thuật giải)
Là dãy các câulệ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ênmộ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 2 Program 1
Ngôn ngữ lập trình
trình là ngôn ngữ để viết chương trình.
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 35GLs Artificial intelligence
Hợp ngữ - Assembler
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
Trang 4Mô tả giải thuật
Sơ đồ khối (flow chart)
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
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 6Bằng mã giả
Input: Vào a, b thuộc tập R
Ra: Nghiệm phương trình ax + b =0
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
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
Trang 7Không cho phép thay đổi nhiều theo các
đặc tả yêu cầu của hệ thống
Trang 8Cá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:
Không thíchhợp trong dự án lớn
Trang 9Cá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
So sánh HĐT và hướng chức nă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
Trang 10So 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
Bao gói và che dấu thông tin
Trang 11Trừ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
Thuthậ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
Trang 12Mô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
Trang 13Mô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
Ứ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
NET common language runtime (CLR)
.NET framework class library (FCL)
Trang 14Kiế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
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)
Framework Class Libraries - FCL
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
Trang 15design 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
Trang 16CLR 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)
Trang 17Biê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á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
Trang 18Biê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
Trang 19Tạ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 20cá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 21.DLL DLL
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
Trang 22C# và các ngôn ngữ khác
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:
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
Trang 23Biê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 24Biê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
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 25Hướng đối tượng
Dựa trên nền tảng component
CLR, FCL là nền tảng
Q&A