Upload
vankhuong
View
261
Download
0
Embed Size (px)
Citation preview
1
Chƣơng 1
TỔNG QUAN VỀ LẬP TRÌNH
KỸ THUẬT LẬP TRÌNH C/C++
TRƢỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
Giảng Viên: ThS. Dƣơng Thành Phết
Email: [email protected]
Website: http://www.thayphet.net
Tel: 0918158670 – facebook.com/duongthanhphet
http://www.thayphet.net
2
NỘI DUNG
2
1. Lập trình và Ngôn ngữ lập trình
2. Biên dịch và Thông dịch
3. Các phương pháp lập trình
4. Giới thiệu ngôn ngữ lập trình C
5. Chương trình C đầu tiên
http://www.thayphet.net
3
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
3
1.1. Lập trình là gì?
Máy tính?
- Làm theo “lệnh” của con người.
- Điểm mạnh là tính toán với tốc độ cao .
Làm thế nào để “ra lệnh” cho máy tính?
- Lập ra những chương trình cho máy tính
Chương trình?
- Chương trình (Phần mềm) là ra lệnh cho máy tính
biết phải làm gì, như thế nào,…
http://www.thayphet.net
4
4
Muốn “ra lệnh” cho máy tính:
- Sử dụng một “ngôn ngữ” chung ngôn ngữ lập
trình (programming language)
Ngôn ngữ lập trình(programming language )
- Là một hệ thống được ký hiệu hóa để miêu tả
những tính toán (qua máy tính) mà cả con người
và máy đều có thể đọc và hiểu được.
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
Tóm lại:
Lập trình (programming) là dùng ngôn ngữ lập trình lập
nên chương trình hoạt động cho máy tính.
http://www.thayphet.net
5
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
5
1.2. Ngôn ngữ lập trình
Là ngôn ngữ dùng để viết chương trình cho máy tính
hoạt động gồm:
Ngôn ngữ máy: Các chỉ thị dưới dạng nhị phân (0/1)
can thiệp trực tiếp vào các mạch điện tử.
Hợp ngữ: Các câu lệnh và quy tắc viết các câu lệnh
thực hiện mã lệnh là các phép toán trên địa chỉ
chứa các toán hạng và dùng trình dịch assembler
để dịch sang ngôn ngữ máy
Ngôn ngữ lập trình cấp cao: Gần với ngôn ngữ con
người nghỉ và làm (passcal, C/C++/C#, VB, . .) dùng
trình biên dịch để dịch chương trình nguồn sang
ngôn ngữ máy và thực thi
http://www.thayphet.net
6
1.3. Một số ngôn ngữ lập trình phổ biến hiện nay
Bảng xếp hạng của TIOBE Index cho tháng 7 năm 2013
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
http://www.thayphet.net
7
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
7
1.4. Từ bài toán đến chƣơng trình?
Để giải được phương trình bậc 2: AX2+BX+C=0,
Việc đầu tiên phải biết cách giải bằng lời giải của
người làm toán.
Để giải bài toán bằng máy tính (lập trình cho máy
tính giải) cần thức hiện qua các bước:
Phân tích bài toán xác định dữ liệu đầu vào, đầu
ra.
Mô tả các bước giải (Ngôn ngữ tự nhiên/Vẽ lưu
đồ / biểu diễn bằng ngôn ngữ giả)
Viết chương trình bằng ngôn ngữ lập trình
Thực thi chương trình nhập liệu và xem kết quả
http://www.thayphet.net
8
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
8
1.4. Lập trình viên
Bonus: "Lập trình là một nghệ thuật, và lập trình viên là một nghệ sĩ". Nữ bá
tước Ada Lovelace được xem như là lập trình viên đầu tiên trong lịch sử.
Là người viết ra các chương trình máy tính. Còn được
gọi là người phát triển phần mềm (software
developer).
http://www.thayphet.net
9
Khả năng suy nghĩ một cách Logic
Khả năng làm việc nhóm và một mình trong một
khoảng thời gian
Tính kiên nhẫn
Khả năng tự học cao
Các nhân tố cần thiết cho lập trình viên:
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
1.4. Lập trình viên
http://www.thayphet.net
10
Thu nhập cao
Niềm vui trong công việc
Tự mình quyết định
Các mặt tốt của nghề lập trình:
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
1.4. Lập trình viên
http://www.thayphet.net
11
Dễ lâm vào cảm giác chán nản, dễ bị áp lực
Làm thêm giờ là việc thường xuyên
Lập trình không phải là một việc dễ dàng
Các khó khăn của nghề lập trình:
1. LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
1.4. Lập trình viên
http://www.thayphet.net
12
2. BIÊN DỊCH VÀ THÔNG DỊCH
Mọi chương trình được viết bằng các ngôn ngữ
không phải là ngôn ngữ máy cuối cùng đều phải
được chuyển đổi sang ngôn ngữ máy trước khi được
thi hành.
Chương trình ngôn ngữ cấp cao được dịch sang
ngôn ngữ máy bằng một trong hai cách :
Trình biên dịch (compiler)
Trình thông dịch (interpreter).
http://www.thayphet.net
13
2. BIÊN DỊCH VÀ THÔNG DỊCH
2.1. TRÌNH BIÊN DỊCH (COMPILER)
Sẽ chuyển đổi toàn bộ chương trình sang mã máy, kết
quả được đưa vào đĩa để có thể thi hành về sau.
Chương trình được chuyển đổi gọi là chương trình
nguồn (source program) và chương trình được tạo ra
được gọi là chương trình đối tượng (object program)
hoặc mã đối tượng (object code).
http://www.thayphet.net
14
2. BIÊN DỊCH VÀ THÔNG DỊCH
2.1. TRÌNH BIÊN DỊCH (COMPILER)
Khi người dùng muốn chạy chương trình, chương trình
đối tượng sẽ được nạp lên bộ nhớ chính của CPU và
các chỉ thị của chương trình sẽ được thi hành.
Khi được hướng dẫn bởi các chỉ thị của chương trình,
CPU sẽ truy xuất dữ liệu và tạo ra các kết quả.
Trình biên dịch sẽ kiểm tra cú pháp chương trình
http://www.thayphet.net
15
2. BIÊN DỊCH VÀ THÔNG DỊCH
2.1. TRÌNH BIÊN DỊCH (COMPILER)
Thực hiện các phép kiểm tra logic và đảm bảo các dữ
liệu sắp được sử dụng trong các phép so sánh, tính
toán đã được định nghĩa một cách hợp lý.
Trình biên dịch tạo ra một danh sách lỗi của tất cả
mệnh đề trong chương trình vi phạm cú pháp của ngôn
ngữ, giúp lập trình viên dễ dàng sửa đổi chương trình.
Do ngôn ngữ máy phụ thuộc vào bộ vi xử lý nên các
máy tính khác nhau sẽ cần có các trình biên dịch khác
nhau để biên dịch chương trình nguồn sang mã máy
của từng loại máy này.
http://www.thayphet.net
16
2. BIÊN DỊCH VÀ THÔNG DỊCH
2.2. TRÌNH THÔNG DỊCH (INTERPRETER)
Thay vì chuyển đổi toàn bộ chương trình nguồn như
trình biên dịch, trình thông dịch chỉ chuyển đổi một
mệnh đề của chương trình và thực hiện đoạn mã kết
quả ngay.
Sau đó nó tiếp tục chuyển đổi mệnh đề thứ 2 rồi thi
hành đoạn mã kết quả thứ 2 và cứ thế.
Khi sử dụng trình thông dịch, mỗi lần chạy chương
trình là mỗi lần chương trình nguồn được thông dịch
sang ngôn ngữ máy. Không có chương trình đối
tượng nào được tạo ra.
http://www.thayphet.net
17
2. BIÊN DỊCH VÀ THÔNG DỊCH
2.2. TRÌNH THÔNG DỊCH (INTERPRETER)
Các trình thông dịch thường được dùng trên các máy
tính cá nhân không có đủ bộ nhớ hoặc sức mạnh
tính toán cần thiết để dùng trình biên dịch.
Lợi điểm của trình thông dịch là lập trình viên vẫn có
thể chạy một chương trình vẫn còn lỗi cú pháp.
Chỉ đến khi gặp câu lệnh có lỗi cú pháp, chương
trình mới bị ngừng và trình thông dịch sẽ thông báo
lỗi.
Ðiểm bất lợi là các chương trình thông dịch chạy
không nhanh bằng các chương trình được biên dịch
vì quá trình chuyển đổi sang ngôn ngữ máy được
thực hiện cùng với quá trình thi hành chương trình.
http://www.thayphet.net
18
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
Học lập trình không chỉ học ngôn ngữ lập trình, mà
phương pháp lập trình cũng vô cùng quan trọng.
Có một số ngôn ngữ hỗ trợ nhiều phương pháp lập
trình, như: C++, PHP, . . .
Có ngôn ngữ tối ưu cho chỉ một phương pháp lập
trình như: C#, Java hỗ trợ thuần hướng đối tượng.
Ngôn ngữ lập trinh thì có rất nhiều, còn phương pháp
lập trình thì chúng ta bắt buộc phải nắm vững.
http://www.thayphet.net
19
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.1. Phƣơng pháp lập trình tuần tự
(Sequential Programming)
Một chương trình sẽ là một tập hợp các câu lệnh có
thứ tự chạy nối tiếp nhau.
Chương trình sẽ chạy từ câu lệnh đầu tiên, và kết
thúc ở câu lệnh cuối cùng.
Phương pháp lập trình này dễ viết, dễ hiểu nhưng
khi xử lý các bài toán lớn sẽ khó khăn, chương trình
chỉ viết theo một cấu trúc duy nhất là tuần tự.
http://www.thayphet.net
20
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.2. Phƣơng pháp lập trình cấu trúc
(Structured Programming)
Đây là một phần của phương pháp lập trình thủ tục
Ngoài cấu trúc tuần tự, có thể viết chương trình theo
các cấu trúc rẽ nhánh, cấu trúc vòng lặp và kết hợp
của các cấu trúc đó với nhau.
Ở phương pháp lập trình này xuất hiện khái niệm về
cấu trúc điều khiển (control structure) như if-
else, switch case.. để khiển rẽ nhánh, hay for,
while để điều khiển vòng lặp.
http://www.thayphet.net
21
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.2. Phƣơng pháp lập trình cấu trúc
(Structured Programming)
Phương pháp này đã khiến việc lập trình trở lên
linh hoạt hơn rất nhiều, nhưng nó vẫn thực sự hạn
chế khi lập trình các hệ thống lớn.
Hiện nay nó không còn là phương pháp lập trình
thông dụng. Nhưng nó vẫn tồn tại như là một phần
không thể thiếu trong các phương pháp lập trình
hiện đại hơn.
http://www.thayphet.net
22
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.3. Phƣơng pháp lập trình thủ tục
(Procedural Programming)
Phương pháp lập trình thủ tục hay còn gọi là hướng
chức năng.
Phương pháp này sẽ chia một chương trình thành các
khối thủ tục nhỏ, mỗi thủ tục sẽ có dữ liệu và logic
riêng.
Các thủ tục làm việc độc lập với nhau, dữ liệu sẽ
được trao đổi qua các đối số (arguments) và giá trị trả
về (returned value).
Việc chia thủ tục sẽ có nhiều lợi thế như: việc sử dụng
lại mã (reuse code), dễ dàng chia công việc cho nhiều
người..v.v.
http://www.thayphet.net
23
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.3. Phƣơng pháp lập trình thủ tục (tt)
(Procedural Programming)
Lập trình thủ tục đi liền với các khái niệm:
hàm (function), thủ tục (procedure), tham
số(paramenter), đối số (argument), trả về (return)...
Một số ngôn ngữ lập trình như C, C++ không phân
biệt hàm với thủ tục
Một số ngôn ngữ khác như pascal, visual basic
thì hàm sẽ có giá trị trả về và sử dụng từ khóa
function, còn thủ tục không có giá trị trả về và sử
dụng từ khóa procedure.
http://www.thayphet.net
24
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.3. Phƣơng pháp lập trình thủ tục (tt)
(Procedural Programming) Cách lập trình này đã trừu tượng công việc lập trình
hơn rất nhiều. Người lập trình có thể quan sát tổng
thể một chương trình qua các chức năng của nó mà
không cần quan tâm tới chi tiết.
Hiểu được đặc điểm này sẽ giúp giải quyết các bài
toán lớn một cách dễ dàng và chính xác hơn.
Phương pháp lập trình thủ tục là phương pháp lập
trình quan trọng. Nắm được phương pháp này bạn sẽ
dễ dàng tiếp cận được với những phương pháp lập
trình cao hơn
Các ngôn ngữ hỗ trợ lập trình hướng thủ tục thông
dụng như: C, C++, Pascal, PHP…
http://www.thayphet.net
25
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.4. Phƣơng pháp lập trình hƣớng đối tƣợng
(Object-Oriented Programming)
Lập trình hướng đối tượng - OOP (Object-Oriented
Programming)
Phương pháp lập trình hiện đại và phổ biến nhất hiện
nay.
Giúp cho công việc lập trình càng được trừu tượng
hóa và trở lên “gần với con người” hơn.
http://www.thayphet.net
26
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.4. Phƣơng pháp lập trình hƣớng đối tƣợng(tt)
(Object-Oriented Programming)
Việc lập trình không còn dừng ở việc thiết kế các thủ
tục khô khan
Phương pháp lập trình hướng đối tượng xây dựng
trên mô hình thế giới thực, khi mà mọi thứ đều là các
đối tượng.
Các đối tượng sẽ chứa đựng trong nó các thuộc tính,
các hành động của riêng nó.
Ví dụ như mỗi người có các thuộc tính: tên, tuổi, giới
tính và có các hành động, đi, chạy nhảy..
Phương pháp lập trình hướng đối tượng gắn liền với
các thuật ngữ Lớp (class), Đối tượng (object), Thuộc
tính (attribute), Phương thức (method)
http://www.thayphet.net
27
3. CÁC PHƢƠNG PHÁP LẬP TRÌNH
3.4. Phƣơng pháp lập trình hƣớng đối tƣợng(tt)
(Object-Oriented Programming)
Liên quan đến lập trình hướng đối tượng là:
Phần mềm hướng đối tượng (object-oriented
software): Là phần mềm sử dụng phương pháp
lập trình hướng đối tượng.
Hệ điều hành hướng đối tượng (object-oriented
operating system: Là hệ điều hành được thiết kế
đặc biệt để chạy các ứng dụng hướng đối tượng.
Có ngôn ngữ tối ưu dùng cho phương pháp lập trình
hướng đối tượng như: C++, C#, Java...
http://www.thayphet.net
28
4. NGÔN NGỮ LẬP TRÌNH C
28
C là ngôn ngữ lập trình rất mạnh và được sử dụng
rộng rãi khắp thế giới.
Ngôn ngữ C (Tiền thân là ngôn ngữ B) được được
phát triển từ đầu thập niên 1970 bởi Ken Thompson
và Dennis Ritchie tại phòng thí nghiệm Beel
Telephone (Mỹ) vào năm 1972.
Nhưng sau đó nhiều nhà lập trình tung ra rất nhiều
phiên bản C. cuối cùng viện định chuẩn quốc gia Mỹ đã
họp và định ra chuẩn cho ngôn ngữ C gọi là AnSi C.
C là ngôn ngữ lập trình cô động chỉ chứa các từ khóa.
4.1. Lịch sử ra đời
http://www.thayphet.net
29
4.2. Chu trình triển khai chƣơng trình C
29
Bƣớc 1: Tạo tập tin .C hoặc .CPP
Bƣớc 2: Tạo tập tin .OBJ
Bƣớc 3: Tạo tập tin .EXE
Bƣớc 4 : Chạy chương trình
4. NGÔN NGỮ LẬP TRÌNH C
http://www.thayphet.net
30
4.3. Đặc điểm ngôn ngữ lập trình C
Bộ lệnh phù hợp với phương pháp lập trình cấu trúc.
Kiểu dữ liệu phong phú, cho phép định nghĩa kiểu dữ
liệu mới.
Gồm một hoặc nhiều hàm rời nhau.
Linh động về cú pháp.
30
4. NGÔN NGỮ LẬP TRÌNH C
http://www.thayphet.net
31
31
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
Bộ cài đặt gồm:
Microsoft Visual Studio 2005/2008/2010/2012/2013
5.1. CÀI ĐẶT VISUAL STUDIO
http://www.thayphet.net
32
5.2. Tạo mới Project
Bước 1: Khởi động Microsoft Visual Studio 2010
Bước 2: Chọn menu File/New…
1
2
3
32
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
33
Chọn ngôn ngữ C++
Chọn loại project Win32 Console Aplication
Name: Nhập tên của dự án (Ví dụ Baitap01)
Location: Vị trí lưu dự án (Ví dụ: C:\
1
2
3
33
VC++ sẽ tạo một thư mục với tên là tên Project tại vị trí
đã chỉ định. Bên trong thư mục này sẽ chứa toàn bộ các
file liên quan đến Project. Nếu muốn sao chép Project thì
chỉ việc chép thư mục này.
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
34
Bước 3: Chọn OK
Bước 4: Next
Bước 5: Chọn Empty Project, sau đó chọn Finish
34
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
35
Bước 5: Chọn OK, kết thúc việc tạo Project
35
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
36
Cửa sổ Solution Explorer: View/ Solution Explorer
2. Chọn để xem bên trong
36
Source Files (*.cpp): Chứa các file cài đặt các hàm
Header Files (*.h): Chứa các file khai báo (hàm, biến
toàn cục, kiểu cấu trúc, …)
Resource Files: Chứa các tài nguyên (icon, bitmap,
dialog, …). Đối với lập trình ứng dụng Console thì không
dùng đến.
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
37
5.3. Tạo mới File
Click phải thư mục Source File/ Add/ New Item . .
37 Để đơn giản khi bắt đầu tìm hiểu ngôn ngữ C, ta chỉ cần tạo một file
cài đặt (Baitap01.cpp) trong thư mục Source File
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
38
38
Nhập tên file
Nhập Baitap01.cpp vào ô File name, chọn OK, sau đó
chọn Add(Không thay đổi đường dẫn mặc định)
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
39
Sau khi tạo xong file Baitap01, cửa sổ Solution sẽ có dạng
sau (kiểm tra lại vị trí của file):
39
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
40
5.4. Viết lệnh
Double click vào file Baitap01.cpp trong thư mục Source File
40
#include <file chứa thư viện hàm>
using namespace std;
Khai báo hằng, biến toàn cục (nếu có)
void main(){
Các lệnh;
}
Cấu trúc file Chƣơng trình
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
41
5.5. Dịch, sửa lỗi và chạy chƣơng trình.
Chạy chương trình không debug lỗi: Ctrl + F5
Chạy chương trình có lỗi: F5
41
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
42
42
Cửa sổ báo lỗi Lỗi do thiếu dấu ; cuối
dòng lệnh
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
Kết quả thực thi thành công
http://www.thayphet.net
43
5.6. Mở Project có sẳn
Cách 1: Mở từ menu VC
- Khởi động VC
- Vào menu File/ Open Project
- Chọn thư mục chứa Project, chọn tên Project, sau
đó chọn Open
43
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
44
Double click vào file có đánh dấu mũi tên
(Lưu ý: Khi chép Project có thể xóa thư mục Debug, vì
thư mục này sẽ được tạo khi chạy chương trình) 44
Cách 2: Mở trực tiếp từ Explore
Mở thư mục chứa Project
5. CHƢƠNG TRÌNH C ĐẦU TIÊN
http://www.thayphet.net
45
BÀI TẬP
1. Lập trình là gì?
2. Ngôn ngữ lập trình là gì?
3. Ngôn ngữ lập trình được chia thành những loại
nào?
4. Phân biệt sự giống và khác nhau giữa trình biên
dịch và trình thông dịch.
5. Trình bày các phương pháp lập trình
6. Viết và thực thi môt chương trình C dùng công cụ
MS Visual studio.
7. Bằng ngôn ngữ tự nhiên hoặc vẽ lưu đồ mô tả giải
thuật giải các bài toán:
Giải và biện luận phương trình bậc 2: AX2+BX+C=0
Tính tổng : S= 12 + 22 + . . n2 45
46
The End.