Tổng hợp bài giảng môn Kỹ thuật lập trình | Trường Đại học Bách Khoa Hà Nội
Nội dung: – Lý thuyết + thực hành các kỹ thuật lập trình làm việc với biến, dữ liệu và các cấu trúc lập trình; – Lý thuyết + thực hành các kỹ thuật xây dựng và sử dụng hàm/thủ tục; – Lý thuyết + thực hành các kỹ thuật bẫy lỗi và lập trình phòng ngừa
Preview text:
KỸ THUẬT LẬP TRÌNH IT3040/IT3104 TS. Vũ Thị Hƣơng Giang
Bộ môn Công nghệ Phần mềm
Viện Công nghệ Thông tin và Truyền thông
Trƣờng ĐH Bách Khoa Hà Nội vthgiang@gmail.com, giangvth@soict.hut.edu.vn 1 Mục tiêu
• Sinh viên có đƣợc các kiến thức cơ bản của kỹ thuật lập trình
• Sinh viên có khả năng phân tích, xây dựng chƣơng trình
• Sinh viên làm chủ các kỹ thuật:
– Viết mã nguồn hiệu quả – Kiểm thử – Gỡ rối – Tối ƣu mã
– Nâng cao hiệu năng của chƣơng trình
– Viết tài liệu chƣơng trình Cấu trúc môn học • Khối lƣợng: – Lý thuyết: 30 giờ – Bài tập: 15 giờ • Nội dung: Tuần Chủ đề
Tài liệu tham khảo 1-2
NHỮNG KHÁI NIỆM CƠ BẢN TRONG KỸ THUẬT LẬP TRÌNH (5 LT) 3-4
NÂNG CAO VỀ GIẢI THUẬT VÀ CẤU TRÚC DỮ PP: Chapter 2
LIỆU, NGÔN NGỮ LẬP TRÌNH C / C++ PPPUC: Chapter 21 (5 LT + 3BT) 5-10
CÁC KỸ THUẬT XÂY DỰNG CHƢƠNG TRÌNH PHẦN PP: Chapter 1 MÊM PPPUC: Chapter 3,8 (10 LT + 6 BT)
CCPHSC: Chapter 8,11,23 11-15
KIỂM THỬ, GỠ RỐI, TINH CHỈNH MÃ NGUỒN VÀ PP: Chapter 5, 7
VÀ XÂY DỰNG TÀI LIỆU CHƢƠNG TRÌNH PPPUC: Chapter 5 (10 LT + 6 BT)
CCPHSC: Chapter 25, 26, 32 Bài tập
• Trên lớp: cá nhân hoặc nhóm • Về nhà: nhóm 4 - 5 SV • Nội dung:
– Lý thuyết + thực hành các kỹ thuật lập trình làm việc với
biến, dữ liệu và các cấu trúc lập trình
– Lý thuyết + thực hành các kỹ thuật xây dựng và sử dụng hàm/thủ tục
– Lý thuyết + thực hành các kỹ thuật bẫy lỗi và lập trình phòng ngừa
– Lý thuyết + thực hành các kỹ thuật kiểm thử
– Lý thuyết + thực hành các kỹ thuật gỡ rối, lập tài liệu cho chƣơng trình
Đánh giá kết quả học tập
• Điểm quá trình: trọng số 0,4
– Bài tập: làm bài, chữa bài, bảo vệ – Kiểm tra giữa kỳ
• Thi cuối kỳ (trắc nghiệm và tự luận): trọng số 0,6
• Điểm thưởng/phạt:
– Dự lớp theo quy chế
– Mức độ hoàn thành bài tập
– Phát biểu/Thảo luận/Chữa bài trên lớp Tài liệu học tập • Bài giảng trên lớp • Sách tham khảo
– PP: Brian W. Kernighan, Rob Pike. The Practice of
Programming. Textbook Paperback, 1999, ISBN: 020161586X
– PPPUC: Bjarne Stroustrup. Programming: Principles
and Practice Using C++ Addison-Wesley Professional, 2008. ISBN: 9780321543721
– CCPHSC: McConnell, Steve. Code Complete: A Practical
Handbook of Software Construction, 2d Ed. Redmond,
Wa.: Microsoft Press, ~950 pages, 2004. ISBN: 07356- 1967-0 Những việc cần làm Công việc Người Người
Kết quả cần đạt Hạn chót tham phụ gia trách Bầu lớp trƣởng
Tất cả SV Tất cả SV Có lớp trƣởng Join vào hộp thƣ nhóm Tất cả SV Lớp
Tất cả các SV đăng ký tham gia đều 7/2/2012 vthgiang-it3104- trƣởng
phải join vào hộp thƣ nhóm k55@googlegroups.com
Chốt danh sách sinh viên Tất cả SV Lớp Danh sách phân nhóm gồm: 7/2/2012 và phân nhóm BTL: trƣởng mã nhóm (PE01 – PExx), (4-5 ngƣời)
họ tên SV, số hiệu SV, lớp, email, nhóm trƣởng (t/f).
Làm bài tập /bài tập lớn
Tất cả SV Tất cả SV Báo cáo, mã nguồn / tài liệu CT Theo yêu cầu / Nhóm của giáo viên trƣởng
Chữa bài tập /bài tập lớn
Tất cả SV Tất cả SV Báo cáo, mã nguồn / tài liệu CT Theo yêu cầu / Nhóm của giáo viên trƣởng Bảo vệ bài tập lớn
Tất cả SV Tất cả SV Slide, thuyết trình, demo CT (max 3 Theo yêu cầu min/person) của giáo viên 8 QUESTION ???? 9 2/6/2012 CHƢƠNG I.
NHỮNG KHÁI NIỆM CƠ BẢN
TRONG KỸ THUẬT LẬP TRÌNH
I. Tổng quan về lập trình
II. Chu trình phát triển chương trình
III. Các mô thức lập trình
I. TỔNG QUAN VỀ LẬP TRÌNH
I. Tổng quan về lập trình
• Với mỗi bài toán, làm thế nào để:
– Thiết kế giải thuật nhằm giải quyết bài toán đó
– Cài đặt giải thuật bằng một chương trình máy tính 1 2/6/2012
I. Tổng quan về lập trình
• Chương trình máy tính (computer program): Tập
hợp các lệnh chỉ dẫn cho máy tính thực hiện nhiệm vụ
• Ngôn ngữ lập trình (programming language):
Dùng để viết các lệnh, chỉ thị
I. TỔNG QUAN VỀ LẬP TRÌNH
1. Hoạt động của chương trình máy tính 2. Ngôn ngữ lập trình
1. Hoạt động của chương trình máy tính
• Chương trình máy tính được nạp vào bộ
nhớ chính (primary memory) như là một
tập các lệnh viết bằng ngôn ngữ mà
máy tính hiểu được, tức là một dãy tuần
tự các số nhị phân (binary digits).
• Tại bất cứ một thời điểm nào, máy tính
sẽ ở một trạng thái (state) nào đó.
• Đặc điểm cơ bản của trạng thái là con
trỏ lệnh (instruction pointer) trỏ tới lệnh
tiếp theo để thực hiện.
• Thứ tự thực hiện các nhóm lệnh được gọi
là luồng điều khiển (flow of control). 2 2/6/2012
1. Hoạt động của chương trình máy tính
• Bắt đầu mỗi chu trình lệnh, CPU nhận lệnh từ bộ nhớ chính.
– PC (Program Counter): thanh ghi giữ địa chỉ của lệnh sẽ được nhận
– Lệnh được nạp vào thanh ghi lệnh IR (Instruction Register)
• Sau khi lệnh được nhận vào, nội dung PC tự động tăng để trỏ sang lệnh kế tiếp
2. Ngôn ngữ lập trình (NNLT)
• Một NNLT là 1 hệ thống các ký hiệu dùng để liên lạc,
trao đổi với máy tính nhằm thực thi một nhiệm vụ tính toán.
• Các thành phần căn bản của 1 NNLT:
– Cú pháp (syntax): luật dùng để ghép các ký hiệu thành câu
lệnh, thành chương trình hợp lệ về mặt cấu trúc
– Ngữ nghĩa (semantic): luật dùng để ghép các ký hiệu thành
câu lệnh, thành chương trình có ý nghĩa
• Có rất nhiều NNLT, khoảng 1000 ngôn ngữ ( 60’s đã
có hơn 700) – phần lớn là các ngôn ngữ hàn lâm, có
mục đích riêng hay phạm vi ứng dụng hạn chế – Ngôn ngữ máy – Ngôn ngữ assembly – Các ngôn ngữ khác 2.1. Ngôn ngữ máy
• Máy tính chỉ nhận các tín hiệu điện tử - có, không có -
tương ứng với các dòng bits.
• Một chương trình ở dạng đó gọi là mã máy (machine code).
• Ban đầu chúng ta phải dùng machine code để viết chương trình:
Quá phức tạp, giải quyết các bài toán lớn là không tưởng 23fc 0000 0001 0000 0040 0cb9 0000 000a 0000 0040 6e0c 06b9 0000 0001 0000 0040 60e8 3 2/6/2012 2.2. Ngôn ngữ ASSEMBLY
• Là bước đầu tiên của movl #0x1,n việc xây dựng cơ chế viết chương trình tiện compare:
lợi hơn – thông qua các
ký hiệu, từ khóa và cả cmpl #oxa,n mã máy. cgt end_of_loop
• Tất nhiên, để chạy được các chương trình acddl #0x1,n này thì phải chuyển bra compare thành thành machine code. end_of_loop:
• Vẫn còn phức tạp, cải thiện không đáng kể
2.3. Phân loại ngôn ngữ lập trình - Theo thời gian • 1940s: Ngôn ngữ máy tính •
1980s: Giảm sự phức tạp hiểu được
– Object-oriented, functional – Machine code programming: Java •
1950s: Khai thác sức mạnh •
1990s: Khai thác triệt để các của máy tính tài nguyên
– Assembler code, Fortran v.1
– Parallel, distributed computing: occam •
1960s: Tăng khả năng tính toán •
2000s: Phát triển các mô hình tính toán mới
– Cobol, Lisp, Algol 60, Basic, PL/1 – genetic programming languages, DNA computing, •
1970s: Giảm sự phụ thuộc bio-computing, service-based
vào máy, tăng tính đúng đắn computing của CT • …. – Structured Programming, Modular Programming: Pascal, Algol 68 and C.
2.3. Phân loại ngôn ngữ lập trình
- Theo mức độ trừu tượng Low-level High-level language language Machine-dependent Machine-independent
Phụ thuộc phần cứng, chỉ chạy
Thường không phụ thuộc phần trên một loại máy tính
cứng, có thể chạy trên nhiều loại máy tính khác nhau Ví dụ ??? Ví dụ ????
High(er) level languages gần
với ngôn ngữ con người hơn:
Machine và assembly languages là
Algol, Fortran, Pascal, Basic, ngôn ngữ bậc thấp Ada, C, … 4 2/6/2012
2.3. Phân loại ngôn ngữ lập trình
- Theo mức độ trừu tượng Level Instructions Memory handling Low level Dạng bits – giống Truy cập và cấp languages các lệnh machine phát trực tiếp bộ nhớ High level
Dùng các biểu thức Truy cập và cấp languages và các dòng điều phát bộ nhớ qua khiển xác định các lệnh, toán tử - operators Very high level Hoàn toàn trừu Che dấu hoàn toàn languages
tượng, độc lập phần việc truy cập và tự cứng động cấp phát bộ nhớ
2.3. Phân loại ngôn ngữ lập trình
- Theo mục đích sử dụng
• Các ngôn ngữ lập trình cấp cao hơn ngôn ngữ
assembly và mã máy có thể được phân thành 2 nhóm:
– Declarative languages: ngôn ngữ lập trình dạng tường thuật
• Trả lời câu hỏi: Cần làm gì / Cần lưu trữ cái gì
• Còn gọi là functional languages, logic languages
– Non-declarative langues: ngôn ngữ lập trình dạng phi tường thuật
• Trả lời câu hỏi: Làm như thế nào / Lưu trữ như thế nào
• Còn gọi là imperative languages, procedural languages
2.4. Ngôn ngữ lập trình dạng mệnh lệnh
Lập trình viên viết các Sử dụng hàng loạt các
chỉ thị hƣớng dẫn cho từ giống tiếng anh để
máy tính cai gì cần
viết các chỉ thị -
làm và làm nhƣ thế instructions nào
Các ngôn ngữ thông Còn gọi là third-
dụng là BASIC, COBOL, generation language PASCAL, C,C++ và (3GL) JAVA 5 2/6/2012
2.4. Ngôn ngữ lập trình dạng mệnh lệnh • Trình dịch (Compiler): chương trình thực hiện biên dịch toàn bộ chương trình nguồn thành mã máy trước khi thực hiện
2.4. Ngôn ngữ lập trình dạng mệnh lệnh • Trình thông dịch (Interpreter):
– là chương trình dịch và thực hiện từng dòng lệnh của chương trình cùng lúc
– Dịch từ ngôn ngữ này sang ngôn ngữ khác, không tạo ra chương trình dạng mã máy hay assembly
2.4. Ngôn ngữ lập trình dạng mệnh lệnh • BASIC
– Được thiết kế để cho những người mới học, giúp họ tiếp
cận một cách đơn giản NNLT
– Beginner’s All-purpose Symbolic Instruction Code 6 2/6/2012
2.4. Ngôn ngữ lập trình dạng mệnh lệnh • COBOL
– Dùng cho các ứng dụng kinh doanh, thương mại
– Các lệnh giống tiếng Anh làm cho code dễ đọc, viết và chỉnh sửa
– Common Business-Oriented Language
2.4. Ngôn ngữ lập trình dạng mệnh lệnh • C
– Là NNLT rất mạnh, ban đầu được thiết kế để lập trình phần mềm hệ thống
– Yêu cầu những kỹ năng lập trình chuyên nghiệp
2.5. Ngôn ngữ lập trình hướng đối tượng
Dùng để hỗ trợ thiết
Lợi ích cơ bản là Event-driven— C++ và Java kế HĐT khả năng tái sử Hướng sự kiện
là các NN hoàn toàn
(object-oriented dụng
Kiểm tra để trả lời HĐT design) một tập các sự (reuse existing kiện object-oriented objects) languages Object là phần tử Event là hành chứa đựng động cả mà dữ liệu và chương các trình thao tác cần trên đáp ứng dữ liệu 7 2/6/2012
2.5. Ngôn ngữ lập trình hướng đối tượng • C++ – Chứa đựng các thành phần của C, loại bỏ những nhược điểm và thêm vào những tính năng mới để làm việc với object-oriented concepts
– Được dùng để phát triển các Database và các ứng dụng Web
2.5. Ngôn ngữ lập trình hướng đối tượng • Java – Phát triển bởi Sun Microsystems – Giống C++ nhưng dùng trình dịch just-in-time (JIT) để chuyển source code thành machine code
2.5. Ngôn ngữ lập trình hướng đối tượng
• Visual programming language Visual programming Cung cấp giao diện trực environment (VPE) Cho phép developers kéo và
quan hoặc đồ họa để tạo thả các objects để xd source code programs Đôi khi được gọi là fourth-generation language LTV viết và phát triển chương trình trong các segments
Thường được dùng trong môi trường RAD (rapid application development) 8 2/6/2012
2.5. Ngôn ngữ lập trình hướng đối tượng •
Visual Studio .NET 2003, 2005 –
Bước phát triển của visual programming languages và RAD tools –
.NET là tập hợp các công nghệ cho phép program chạy trên Internet –
Visual Basic .NET 2003-5 dùng để xây dưng các chương trình hướng đối tượng phức tạp Step 1. Step 2. LTV gán các LTV thiết kế thuộc tính cho mỗi giao diện object trên form. người dùng - user interface. Step 3. LTV viết code để xác định các action cần thực hiện đối với các sự kiện cần thiết. Step 4. LTV kiểm tra application.
2.5. Ngôn ngữ lập trình hướng đối tượng • Delphi
– Là 1 công cụ lập trình trực quan mạnh
– Hợp với những ứng dụng chuyên nghiệp và Web lớn
2.5. Ngôn ngữ lập trình hướng đối tượng • PowerBuilder
– Một công cụ lập trình trực quan mạnh khác
– Phù hợp với các ứng dụng Web-based hay các ứng dụng
lớn HĐT - object-oriented applications 9 2/6/2012
2.6. Ngôn ngữ lập trình dạng tường thuật Nonprocedural Language Program Development Tools
LTV viết các lệnh giống
Các chương trình thân thiện
tiếng anh hoac tương tác
với người sử dụng được
với môi trường trực quan
thiết kế để trợ giúp cả LTV
để nhận được các dữ liệu
lẫn người sử dụng trong
từ files hay database việc tạo chương trình
2.6. Ngôn ngữ lập trình dạng tường thuật
• RPG (Report Program Generator)
– Các ngôn ngữ LT phi thủ tục được dùng để tạo các báo
cáo, thiết lập các thao tác tính toán và cập nhật files
2.6. Ngôn ngữ lập trình dạng tường thuật
• NN thế hệ IV fourth-generation language (4GL)
– Là các ngôn ngữ phi thủ tục cho phép truy cập dữ liệu trong csdl
– NNLT 4GL thông dụng là SQL,Access, là các ngôn ngữ truy vấn .
Cho phép users quản trị dữ liệu trong csdl quan hệ relational DBMS 10 2/6/2012
2.6. Ngôn ngữ lập trình dạng tường thuật • Application generator
– Là chương trình tạo source code hoặc machine code từ các specification
– Bao gồm các chương trình tạo Report và tạo Form nhập dữ liệu
2.6. Ngôn ngữ lập trình dạng tường thuật
• Visual Basic for Applications (VBA) – Ma cro programming language
• Macro—Dãy các lệnh dùng để tự động hóa các công việc
2.6. Ngôn ngữ lập trình dạng tường thuật
– HTML (Hypertext Markup Language)
– Dùng để tạo các trang Web 11 2/6/2012
2.6. Ngôn ngữ lập trình dạng tường thuật - Tạo các trang web
• Các hiệu ứng đặc biệt và các phần tử tương tác
được thêm vào trang Web như thế nào ? Script Applet Servlet ActiveX Thông dịch thường chạy applet chạy control chương trình trên client, trên Là chương server chạy trên client nhưng được trình nhỏ chạy biên dịch trên client Counter Image map Processing duyệt số Hình ảnh form người thăm đồ họa trỏ Thu thập số Web site tới URL liệu từ visitors
2.6. Ngôn ngữ lập trình dạng tường thuật - Tạo các trang web •
Common gateway interface (CGI): Chuẩn giao tiếp xác định cách thức
Web server giao tiếp với các nguồn tài nguyên bên ngoài
CGI script /program – chương trình quản trị việc gửi và nhân dữ liệu qua CGI Step 1. LTV lưu
Step 2. Webmaster tạo 1 liên kết các CGI program
giữa CGI program và Web page. Khi trong 1 thư mục đặc
1 user hiện trang Web, CGI program biệt trên Web server sẽ tự động chạy. ví dụ /cgi-bin. Step 4. CGI
Step 3. Khi user khẳng định Database program nhận thông
submits 1 yêu cầu, nó sẽ được gửi cho tin từ database, két
CGI program. CGI program kết nối hợp chúng dưới
với database và lấy các ttin cho user. dạng HTML, và gửi
Ví dụ user yêu cầu xem phim The cho trình duyệt Web Wizard of Oz. của User.
2.6. Ngôn ngữ lập trình dạng tường thuật - Tạo các trang web • Scripting language? Rất dễ học và dễ sử dụng JavaScript—thêm các nội dung động và các phần tử tương tác vào Web page VBScript (Visual Basic, Scripting Edition)— Thêm tính thông minh và tương tác vào Web page Perl (Practical Extraction and Report Language)— Có khả năng xử lý văn bản rất mạnh 12