Xem mẫu
- BỘ CÔNG NGHIỆP
TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP HÀ NỘI
--- ---
ĐỀ CƯƠNG CHI TIẾT
MÔN HỌC
KỸ THUẬT LẬP TRÌNH
(Tài liệu giảng dạy)
Biên soạn: ThS. Nguyễn Mạnh Cường
(lưu hành nội bộ)
HÀ NỘI – 8/2004
Đ Ề CƯƠNG CHI TIẾT
MÔN HỌC: KỸ THUẬT LẬP TRÌNH
Tài liệu tham khảo
1. Ngôn ngữ lập trình C++ - GS. TS. Phạm Văn Ất.
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
2. C++ và lập trình Hướng đối tượng - GS. TS. Phạm Văn Ất.
3. Kỹ thuật lập trình - Nguyễn Tiến Huy – Trần Hạnh Nhi.
4. Ngôn ngữ lập trình C++ - Ngô Trung Việt.
….
CHƯƠNG I. GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH C++
1. Môi trường lập trình C++
Ngôn ngữ lập trình C++ là một sự mở rộng của ngôn ngữ lập trình C,
trong đó, chủ yếu đưa thêm vào ngôn ngữ C khả năng lập trình hướng đối
tượng và loại bỏ những phức tạp không cần thiết của ngôn ngữ .
Để vào môi trường soạn thảo chương trình của C++ ta thực hiện:
+ Cài đặt chương trình soạn thảo mã lệnh C++ vào máy tính.
+ Vào thư m ục TC30\ BIN, chọn TC.Exe.
Khi đó, môi trường soạn thảo C++ đ ã sẵn sàng.
- Các thao tác khi soạn thảo chương trình:
[1]. Mở một file mới: Chọn File\ N ew hoặc bấm phấm F3 sau đó gõ tên file
vào.
[2]. Lưu file: Chọn File\ Save ho ặc bấm phím F2. Nếu file chưa được đặt tên
bởi người lập trình hãy đ ặt tên.
[3]. Mở một file có sẵn: Chọn File\ Open ho ặc bấm phím F3. Chọn file cần mở
và b ấm Enter.
[4]. Soạn thảo chương trình: Chương trình được soạn thảo trong cửa sổ soạn
thảo. Nói chung, khi soạn thảo thường thực hiện những thao tác sau:
- D i chuyển con trỏ: dùng các phím m ũi tên, phím Page Up, Page Down.
phím Home đưa con trỏ về đầu dòng, phím End đưa con trỏ về cuối dòng.
- Sao chép:
G iữ Shift và phím mũi tên để bôi đen đoạn cần sao chép.
Đ ưa con trỏ tới nơi đặt đoạn sao chép và bấm tổ hợp phím Ctrl + K + C để
dán.
- D i chuyển khối: Nếu bấm tổ hợp phím Ctrl + K + V sẽ cho phép di chuyển
đo ạn mã được bôi đen.
1
Biªn so¹n: NguyÔn M¹nh Cêng Trang
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
- Bỏ bôi đen khối: Đưa con trỏ lên trên đo ạn bôi đen và bấm tổ hợp phím Ctrl
+ K + K để bỏ bôi đen
Chú ý: Khác với ngôn ngữ Pascal, ngôn ngữ C++ có phân biệt chữ hoa
và chữ th ường.
Để ghi các dòng chú thích, sử dụng dấu // tại đầu dòng hoặc đặt đoạn
chú thích như sau: /* đoạn chú thích */
[5]. Dịch chương trình: Bấm phím F9 để dịch chương trình. Nếu chương trình
có lỗi, chương trình d ịch sẽ báo lỗi. Chương trình chỉ thực thi đ ược nếu không
có lỗi.
[6]. Thực thi chương trình: Bấm tổ hợp phím Ctrl + F9 để thực thi chương
trình.
[7]. Đặt đường dẫn tới các thư viện: Trong một chương trình viết bằng ngôn
ngữ C++ thường sử dụng các hàm trong các thư viện khác nhau. Thông thường,
các thư viện đặt trong các thư mục TC\INCLUDE hoặc TC\ LIB. Môi trường
lập trình C++ tự thiết đặt đường dẫn tới các thư viện này. Tuy nhiên, trong
trường hợp đường dẫn bị thay đổi, ta cần phải thiết đặt lại.
B1: Trong Menu chính, chọn Option\ Directories.
B2: Trong Include, đặt đường dẫn tới các th ư viện có đuôi .h. Trong
Libraries, đặt đường dẫn tới các thư viện đuôi .lib.
2. Các kiểu dữ liệu cơ bản trong C++
Trong C++ có sử dụng một số kiểu dữ liệu cơ bản sau:
a. Kiểu số: bao gồm
+ Số nguyên ng ắn int: là kiểu dữ liệu có độ d ài 2 byte, dùng để khai báo
các biến nguyên có giá trị trong khoảng –32768 -> 32767
+ Số nguyên ngắn không dấu: unsign int: độ dài 2 byte, khai báo các biến
nguyên có giá trị từ 0 tới 65535.
+ Số nguyên dài long: là kiểu dữ liệu có độ dài 4 byte, dùng khai báo các
biến nguyên có giá trị trong khoảng – 2.147.483.648 -> 2.147.483.647.
+ Số nguyên dài không dấu: unsign long: độ dài 4 byte, khai báo các biến
có giá trị từ 0 tới 4.294.967.295.
2
Biªn so¹n: NguyÔn M¹nh Cêng Trang
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
+ Số thực (dấu phảy động) float: kích thước 4 byte khai báo các biến thực
từ 3.4*10-38 -> 3.4*1038.
+ S ố thực double: kích thước 8 byte, có phạm vi từ 1.7*10-308 - >
1.7*10308
+ Số thực (dấu phảy động, độ chính xác kép) d ài: long double: kích thước
10 byte, khai báo các biến từ 3.4 * 10-4932 tới 1.1 * 104932.
b. Kiểu ký tự: bao gồm
+ Kiểu ký tự char: khai báo biến chứa một ký tự.
+ Kiểu con trỏ ký tự char *: tương đương với chuỗi ký tự.
3. B iến và cách khai báo biến
Để khai báo biến trong C++ ta dùng cú pháp sau:
Trong đó:
- : có thể là m ột trong các kiểu dữ liệu chuẩn, có thể là các
kiểu tự định nghĩa.
- : được đặt tuân theo quy tắc đặt tên biến trong ngôn ngữ lập
trình Pascal.
- Các biến cách nhau bởi dấu phảy, các khai báo cách nhau bởi dấu chấm
phảy.
VD: int a, b, c;
long so;
char * s;
Chú ý: có thể khai báo biến tại bất kỳ đâu trong chương trình và trước
khi sử dụng.
4. Cấu trúc một chương trình đơn giản
Một chương trình đơn giản trong C++ thường có cấu trúc như sau:
//Khai báo các thư viện sử dụng trong chương trình.
#include
….
main() //tên hàm chính
{
// Nhập dữ liệu
// Tính toán
3
Biªn so¹n: NguyÔn M¹nh Cêng Trang
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
// In các kết quả
}
VD1. xét đoạn trình sau:
#include
#include
#include
main()
{
clrscr();
int a, b; //khai báo hai biến nguyên a, b
couta;
coutb;
int c;
c = a+b;
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
# include
# include
# include
main()
{
clrscr();
int a, b; //khai báo hai biến nguyên a, b
couta;
coutb;
int T, H, TI, TH;
T = a +b;
H = a-b;
TI = a*b;
TH= a/b;
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
Các lệnh cout, cin chỉ thích hợp cho việc nhập xuất các biến kiểu số. Với
các biến kiểu xâu ký tự thì xâu nhập, xuất phải không chứa dấu cách.
Định dạng dữ liệu trước khi xuất:
Ta có thể sử dụng một trong 2 cách sau:
Cách 1: sử dụng toán tử định dạng
cout.width(int n): chỉ định số vị trí tối thiểu dành cho giá trị xuất là n vị
trí.
+ Nếu giá trị x uất chiếm ít hơn n vị trí thì m ặc định là các ký tự trống sẽ
chèn vào phía trước.
+ Nếu giá trị xuất chiếm nhiều hơn n vị trí, số vị trí dành cho giá trị xuất
đó sẽ đ ược tăng lên sao vừa đủ thể hiện giá trị xuất.
cout.fill(char ch): Chỉ định ký tự ch sẽ được điền vào những vị trí trống
(nếu có).
cout.precision(int n): chỉ định độ chính xác của giá trị số khi xuất là n ký
tự sau dấu phảy.
VD:
float a = 123.4523.
nếu muốn xuất a ra màn hình dưới dạng: |000123.45| ta có thể định dạng
như sau:
cout.width(9);
cout.fill(‘0’);
cout.precision(2);
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
- Lệnh nhập: Cú pháp
cin >> ;
Trong đó:
>>: được gọi là toán tử nhập.
Dòng cin dùng để nhập các giá trị (thông thường là) từ bàn phím vào các
biến.
VD: couta;
Chú ý: có thể dùng liên tiếp nhiều toán tử nhập trên một dòng cin để
nhập giá trị cho nhiều biến.
cin>>a>>b>>c;
Bài tập ví dụ: Viết chương trình nhập vào một số thực x, in ra màn hình
giá trị của F(x) = sin2(x) + cos(x) với độ chính xác 2 chữ số sau dấu phảy.
# include
# include
# include
void main()
{
clrscr();
float x, F;
coutx
cout.precision(2);
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
…
- Mỗi biến cần đưa ra màn hình cần có một đặc tả tương ứng tại vị trí muốn
đưa ra.
VD: Cần đưa ra các giá trị của các biến a, b, c kiểu nguyên, ta viết:
printf (“ Giá trị của a b c la %d %d %d, a, b, c);
Lệnh nhập: scanf.
Cú pháp: scanf(“chuỗi các đặc tả”, , …);
Tro ng đó, mỗi biến cần phải có một đặc tả tương ứng. Lệnh scanf nhập
giá trị vào các biến thông qua địa chỉ của biến.
c. Các lệnh nhập xuất trong Conio.h
Lệnh xuất: puts.
Cú pháp: puts(p);
Trong đó p là một con trỏ, trỏ tới một ký tự hoặc hằng xâu ký tự. Nếu p
là biến chứa 1 ký tự thì p phải có kiểu char *, nếu p là kiểu char thì phải là một
mảng kiểu char.
Lệnh puts sẽ đưa các ký tự được con trỏ p trỏ tới lên màn hình.
VD:
char * p = “a”;
puts(p);// đưa ký tự a ra màn hình
char q[100] = “Ha Noi”;
puts(q);// đưa Ha Noi ra màn hình.
Lệnh nhập: gets().
Cú pháp: gets(p);
Trong đó, p là biến con trỏ ký tự, như vậy, p phải có kiểu char * . Nếu p
là biến kiểu char thì phải là một biến mảng kiểu char. (char * p hoặc char p[])
Các lệnh gets, puts thích hợp cho việc nhập xuất các biến kiểu xâu ký tự.
6. B iểu thức trong C++
Một biểu thức thông thường được cấu thành từ hai thành phần: các toán
tử và các toán hạng.
a. Các toán tử: được tạm chia làm 3 loại
Các toán tử số học
8
Biªn so¹n: NguyÔn M¹nh Cêng Trang
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
Trong C++ sử dụng các toán tử số học cho trong bảng sau:
Stt Toán tử Ngôn ngữ Pascal Ngôn ngữ C++
Cộng
1 + +
Trừ
2 - -
3 Nhân * *
4 Chia / /
Đồng dư
5 mod %
Tăng 1 đơn vị
6 +1 ++
Giảm 1 đơn vị
7 -1 --
8 Gán := =
VD:
int a, b;
int T, H, TI, TH, D;
a=8;
b=3;
T = a+b;
H = a-b;
TI = a*b;
TH = a/b;
D = a%b;
a++;
b--;
Các toán tử Logic
Trong C++ sử dụng các toán tử Logic cho trong bảng sau:
Stt Toán tử Ngôn ngữ Pascal Ngôn ngữ C++
1 Và And &&
Hoặc
2 Or ||
Phủ định
3 Not !
Các toán tử so sánh
Trong C++ sử dụng các toán tử So sánh cho trong bảng sau:
Stt Toán tử Pascal Ngôn ngữ C++
Lớn hơn
1 > >
Nhỏ hơn
2 < <
Lớn hơn hoặc bằng
3 >= >=
Nhỏ hơn hoặc bằng
4
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
Không bằng
6 !=
b. Các toán hạng: có thể là hằng, biến hoặc hàm.
VD: Trong biểu thức 3*X+2+sin(x), các toán tử + và * được sử dụng.
Toán hạng bao gồm: Hằng (3 và 2), biến (X) và hàm (sin(x)).
c. Thứ tự ưu tiên các phép toán
Trong một biểu thức có sử dụng nhiều toán tử, thứ tự ưu tiên các toán tử
như sau (theo chiều từ trái qua phải, từ trên xuống dưới):
! ++ -- * / % + -
< >= == != && ||
VD: V iết biểu thức toán học sau bằng ngôn ngữ C++ (nếu cần) và cho
biết thứ tự thực hiện các phép toán.
5x 6 +2/7 + (6 mod 3)
i + j ++
(i+j)++
10
Biªn so¹n: NguyÔn M¹nh Cêng Trang
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
CHƯƠNG II. CÁC CẤU TRÚC ĐIỀU KHIỂN TRONG C++
1. Giới thiệu chung
Một phần rất quan trọng trong một ngôn ngữ lập trình là các cấu trúc
điều khiển.
Trong Pascal ta đã làm quen với 3 loại cấu trúc điều khiển: Chọn, Rẽ
nhánh, Lặp. Ta sẽ lần lượt xem xét các loại cấu trúc điều khiển đó trong ngôn
ngữ C++. Ta tạm thời chia các cấu trúc điều khiển trong C++ theo cây thứ bậc
sau:
Cấu trúc điều khiển
Cấu trúc Cấu trúc Cấu trúc
chọn rẽ nhánh lặp
Cấu trúc Cấu trúc lặp
lặp với số với số lần
lần lặp xác lặp không
định xác định
Cấu trúc lặp Cấu trúc lặp
k iểm tra kiểm tra
điều kiện điều kiện
trước sau
2. Cấu trúc rẽ nhánh
Trong thực tế, khi giải quyết một công việc thường ta phải lựa chọn
nhiều phương án giải quyết khác nhau. Người ta thường biểu diễn vấn đề này
bằng mệnh đề:
- [1]. Nếu … thì …;
- [2]. Nếu … thì … ngược lại thì…
Để mô phỏng hai mệnh đề đó, trong ngôn ngữ lập trình C++ đ ưa ra cấu
trúc rẽ nhánh.
Cấu trúc rẽ nhánh có hai dạng như trong sơ đồ khối dưới đây.
11
Biªn so¹n: NguyÔn M¹nh Cêng Trang
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
BTĐK đúng? BTĐK đúng?
Thực hiện lệnh
Thực hiện
N
Y N2
lệnh1
Th ực hiện lệnh
Y
a). Mô tả mệnh đề [1] b) Mô tả mệnh để [2]
Cú pháp:
(mô phỏng mệnh đề 1)
if ()
;
(Mô phỏng mệnh đề 2)
if ()
;
else
;
Ý nghĩa:
[1]. nếu nhận giá trị đúng, sẽ thực hiện ,
ngược lại, bỏ qua lệnh if.
[2]. nếu nhận giá trị đúng, sẽ thực hiện ,
ngược lại, nếu nhận giá trị sai sẽ thực hiện .
Chú ý:
- Biểu thức điều kiện được đặt giữa hai dấu ngoặc đơn “(“ “)”.
- Câu lệnh trước else có dấu “;”.
- và có thể là một khối lệnh. Các khối lệnh được
đặt trong hai dấu { }.
12
Biªn so¹n: NguyÔn M¹nh Cêng Trang
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
VD: Lập chương trình nhập vào một số nguyên. Kiểm tra tính chẵn lẻ
của số đó và thông báo ra màn hình.
# include
# include
# include
main()
{
clrscr(); int a;
cout>a;
if (a%2 = = 0)
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
km = 0;
cout=9.0 && hk = = “T”)
T += 100000;
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
# include
main()
{
clrscr();
float tk;
char * hk;
long T;
couttk;
couthk;
T=0;
if (tk >= 7.0)
T = 30000;
if (tk>=9.0 && hk = = “T”)
T += 100000;
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
Ý nghĩa:
Nếu nhận giá trị GT1, thực hiện
Nếu nhận giá trị GT2, thực hiện …
Nếu nhận giá trị GTn, thực hiện
Nếu có thành phần [default:], thực hiện khi biến
nguyên không nhận giá trị nào trong các giá trị trên.
- Sơ đồ khối:
Biến = GT1 Lệnh 1
Biến = GT2 Lệnh 2
…
Biến = GTn Lệnh n
L ệnh mặc định
Chú ý:
- Lệnh switch chỉ thực hiện trên biến nguyên.
- Mỗi từ khoá case chỉ lựa chọn 1 trường hợp.
- Các câu lệnh , … có thể là một khối lệnh. Sau đó
bắt buộc phải có từ khóa .
- Thành phần [deffault:] là không bắt buộc. Nếu có thành phần này,
sẽ được được thực hiện sau khi tất cả các trường
hợp case đều không thỏa mãn.
16
Biªn so¹n: NguyÔn M¹nh Cêng Trang
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
VD1: Viết chương trình nhập vào một tháng của một năm nào đó. In số
ngày của tháng đó ra màn hình.
# include
# include
# include
main()
{
clrscr();
int T, N;
coutT;
coutN;
switch (T)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
Mã =3: Thạc sỹ.
Mã =4: Tiến sỹ.
Các mã khác: Không xếp loại học vị.
# include
# include
# include
main()
{
clrscr();
int M;
coutM;
switch (M)
{
case 1:
cout
- §Ò c¬ng chi tiÕt Kü thuËt lËp tr×nh
4. Cấu trúc lặp
a. Vòng lặp với số lần lặp xác định
Là vòng lặp mà người lập trình luôn biết trước số lần lặp của lệnh lặp.
Trong quá trình lặp, ta thường sử dụng một biến để kiểm soát số lần lặp
gọi là “Biến chạy”.
Biến chạy thường nhận các giá trị từ cận dưới (n1) tới cận trên (n2) và số
lần lặp bằng n2 – n1.
Cú pháp:
for (;;)
;
Trong đó:
: thông thường có có dạng: = .
: thông thường có dạng:
.
: thông thường là một biểu thức để tang hoặc giảm biến
chạy.
Trong C++, vòng lặp có số lần lặp xác định cũng có nguyên lý hoạt động
tương tự trong Pascal.
Ý nghĩa:
B1: Thực hiện
B2: Kiểm tra . Nếu sai, thoát khỏi vòng for. Ngược
lại, sang B3.
B3: Thực hiện .
B4: Thực hiện . Quay lại B2.
Sơ đồ khối:
Xác định BT1
Kiểm tra BT2
Thực hiện lệnh
thân vòng for
19
Biªn so¹n: NguyÔn M¹nh Cêng tra BT3 Trang
Kiểm
nguon tai.lieu . vn