Tải bản đầy đủ (.pdf) (32 trang)

LẬP TRÌNH CẤU TRÚC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.72 MB, 32 trang )

LẬP TRÌNH CẤU TRÚC
Nội dung
 Lập trình khơng có cấu trúc
 Lập trình cấu trúc
 Phương pháp thiết kế top-down

1


Lập trình khơng có cấu trúc
 Để viết chương trình, người ta đặt ra vấn đề
và đưa ra thuật toán bằng cách liệt kê các
hành động trong đó sử dụng lệnh goto một
cách thường xuyên để chuyển điều khiển.
 Phương pháp lập trình này có một số nhược
điểm:
 Khó kiểm sốt và theo dõi tính đúng.
 Tìm và sửa lỗi rất khó khăn.
 Khó khăn trong việc thiết kế các chương trình với
xử lý đa dạng, phức tạp.
 Khả năng dùng lại, phát triển hầu như không
thực hiện được.
2


Lập trình cấu trúc
 Để khắc phục các nhược điểm của phương pháp
lập trình trước, người ta đưa ra các khái niệm mới
và xây dựng phương pháp lập trình mới và vẫn
còn sử dụng tới bây giờ: Phương pháp lập trình
cấu trúc (Structured Programming).


 Lập trình cấu trúc biến đổi các sơ đồ khối phức
tạp thành những cấu trúc chuẩn:
 Tuần tự.
 Lặp.
 Lồng nhau.

 Sử dụng các cấu trúc điều khiển chuẩn:
 Chọn lựa: if…else, switch…case.
 Lặp: do…while, while, for.
3


Lập trình cấu trúc
 Lập trình cấu trúc là kỹ thuật lập trình theo cách
xây dựng các chương trình con (module chương
trình) và liên kết các module thành một chương
trình.
 C++ cung cấp cách xây dựng và sử dụng hàm
như các chương trình con. Các hàm đều có
điểm bắt đầu, điểm kết thúc (tính đóng gói) và
liên kết với nhau thơng qua lời gọi hàm.
 Ưu điểm của lập trình cấu trúc:
 Chương trình chính rõ ràng, dễ hiểu.
 Dễ sửa lỗi.
 Dễ bổ sung, nâng cấp.
 Có thể sử dụng lại.
 Giảm thời gian cài đặt, tiết kiệm nhân lực.

4



Phương pháp thiết kế top-down
 Phương pháp thiết kế top-down tiếp cận bài toán theo
hướng từ trên xuống, từ tổng quát đến chi tiết.
Các bước thực hiện:
1. Xây dựng sơ đồ khối ở mức đầu tiên bao gồm các
module lớn.
2. Phân rã thuật toán thành các thuật toán con (module).
3. Xác định chức năng của từng module.
4. Xác định thứ tự thực hiện các module.
5. Xác định dữ liệu vào, ra cho từng module.
6. Xác định cấu trúc của mỗi module.
7. Cài đặt module (viết mã cho chương trình con).
8. Liên kết các module (viết mã cho chương trình chính).
5


Phương pháp thiết kế top-down
 Một bài toán được chia thành các bài toán con nhỏ
hơn. Mỗi bài toán con lại được chia nhỏ tiếp, nếu có
thể, thành các bài tốn con nhỏ hơn nữa. Q trình
này cịn được gọi là quá trình làm mịn dần. Quá
trình này sẽ dừng lại khi các bài tốn con khơng cần
chia nhỏ thêm nữa.
Start

Menu chọn

A


B

C

End
6


Ví dụ
Xây dựng chương trình thực hiện các tính tốn trên mảng
gồm các chức năng:
1) Sắp xếp mảng tăng dần.
2) Xuất các số nguyên tố có trong mảng.
3) Xóa các phần tử trùng nhau.
Yêu cầu trình bày quá trình xây dựng chương trình theo
tiến trình sau:
1. Vẽ sơ đồ hoạt động của chương trình và sự làm mịn
dần nếu có thể.
2. Tổ chức dữ liệu và định nghĩa kiểu dữ liệu.
3. Khai báo biến toàn cục.
4. Khai báo các hàm.
5. Viết hàm main()
6. Viết một số hàm xử lý quan trọng.
7


Ví dụ
1. Sơ đồ hoạt động của chương trình:
Start


Menu
1. Xử lý sắp
xếp mảng

2. Xử lý xuất
số nguyên tố

3. Xử lý xóa
phần tử trùng

End

8


Ví dụ
 Làm mịn hơn thiết kế khối (2):
 Bước 1: Nhập mảng A
 Bước 2: Duyệt qua mảng A, kiểm tra nếu
phần tử thứ i là số nguyên tố, xuất A[i].

 Làm mịn hơn thiết kế khối (3):
 Bước 1: Nhập mảng A
 Bước 2: Duyệt qua mảng A
• Kiểm tra phần tử A[i] với các phần tử khác trong
mảng.
• Nếu có phần tử trùng với A[i], xóa A[i].
9



Ví dụ
2. Tổ chức và định nghĩa kiểu dữ liệu: Giả
sử mảng có tối đa 100 phần tử, định nghĩa
kiểu ARRAY như sau:
struct ARRAY
{
int n;
int e[MAX];
};
10


Ví dụ
3. Chương trình khơng cần phải khai báo biến tồn cục vì
mỗi chức năng khơng cần có dữ liệu chung.
4. Các hàm và khai báo hàm.
Ngoài hàm main, dựa vào sơ đồ thiết kế cấu trúc trên, ta
cần viết các hàm với khai báo sau:
1) Xuất menu và cho chọn: int menu();
2) Hàm thực hiện chức năng 1: void xulysapxep();
3) Hàm thực hiện chức năng 2: void xulysnt();
4) Hàm thực hiện chức năng 3: void xulyxoatrung();
5) Hàm nhập mảng: void nhap (ARRAY &a);
6) Hàm xuất mảng: void xuat (ARRAY &a);
7) Hàm sắp xếp: void sapxep(ARRAY &a);
8) Hàm xóa 1 phần tử: void del (ARRAY &a, int k)
9) Hàm kiểm tra số nguyên tố: int ktsnt (int n);
11



Ví dụ
5. Hàm main
int main()
{
int chon;
while((chon=menu())!=0)
{
switch(chon)
{
case 1: xulysapxep(); break;
case 2: xulysnt(); break;
case 3: xulyxoatrung(); break;
}
getch();
}
12
}


Ví dụ
6. Viết một số hàm:
 Hàm menu
int menu()
{
int ch;
clrscr();
cout<<"=====MENU=====";
cout<<"\n1. Xu ly sap xep mang";
cout<<"\n2. Xu ly xuat so nguyen to";
cout<<"\n3. Xu ly xoa cac phan tu trung";

cout<<"\n0. Thoat";
cout<<"\nBan chon chuc nang: ";
cin>>ch;
return ch;
13
}


Ví dụ
 Hàm xử lý xuất số nguyên tố
void xulysnt()
{
ARRAY a;
cout<<"Nhap mang:\n";
nhap(a);
cout<<"Cac so nguyen to co trong mang: ";
for(int i=0;iif(ktsnt(a.e[i]))
cout<}

14


Ví dụ
 Hàm xóa 1 phần tử tại vị trí k
void del (ARRAY &a, int k)
{
if (k>=0 && k{

for (int i=k; ia.e[i] = a.e[i+1];
a.n--;
}
}
15


Ví dụ
 Hàm xử lý xóa các phần tử trùng nhau
void xulyxoatrung()
{
ARRAY a;
cout<<"Nhap mang:\n";
nhap(a);
for(int i=0;ifor(int j=i+1;jif(a.e[i]==a.e[j])
del(a,j);
else
j++;
cout<<"Mang sau khi xoa phan tu trung : ";
xuat(a);
16
}


Bài tập
1. Viết lại chương trình hồn chỉnh cho bài ví dụ.
2. Xây dựng chương trình thực hiện các tính tốn trên

ma trận gồm các chức năng:
i.
Tính tổng 2 ma trận
ii. Tính tích 2 ma trận
iii. Xuất các số nguyên tố trong ma trận

3. Một sinh viên có các thơng tin: mã số sinh viên, họ
tên, năm sinh, điểm trung bình. Xây dựng chương
trình thực hiện các thao tác trên danh sách sinh viên:
i. Lưu danh sách sinh viên vào file.
ii. Đọc danh sách sinh viên từ file.
iii. Xuất danh sách sinh viên có điểm >=5.
iv. Sắp xếp danh sách sinh viên giảm dần theo điểm.

17


CÁC CHỈ THỊ TIỀN XỬ LÝ TỔ CHỨC CHƯƠNG TRÌNH GỒM
NHIỀU FILE


Chỉ thị tiền xử lý
 Trước khi chạy chương trình, C/C++ sẽ dịch
chương trình thành file dạng mã máy. Dịch
chương trình gồm có 2 thao tác: xử lý sơ bộ
chương trình và biên dịch. Phần xử lý sơ bộ
được gọi là tiền xử lý.
 Các khai báo tiền xử lý phổ biến:







#include <file_name>
#include “file_name”
#define name giá_trị
#define macro biểu_thức

19


Chỉ thị #include
 #include <file_name>
 Cho phép đưa tập tin file_name tại thư mục
được chỉ định bởi trình biên dịch vào chương
trình.
 #include “file_name”
 Đưa tập tin file_name tại thư mục hiện hành
vào chương trình.
 #include “đường_dẫn\file_name”
 Đưa tập tin file_name tại đường dẫn vào
chương trình.
20


Chỉ thị #include
 Chỉ thị #include thường được dùng để tạo
chương trình viết trên nhiều file. Các khai
báo về hàm của chương trình được để

trong một tập tin .h, các định nghĩa về các
hàm đã khai báo được để trong tập tin
.cpp.
 Tại file chứa hàm main(), để sử dụng
được các hàm đã định nghĩa, thực hiện
include các file nói trên:
#include <file.h>
21


Chỉ thị #define và #undefine
 #define tên_macro biểu_thức
 Biểu_thức có thể là chuỗi ký tự, một giá trị
hoặc một biểu thức.
 Trước khi dịch, bộ tiền xử lý sẽ tìm trong
chương trình và thay thế tên_macro bởi
biểu_thức.
 Ví dụ:
#define MAX 100
#define sai "Nhap sai. Nhap lai: "
#define max(x,y) ((x) < (y) ? (y) : (x))
#undefine MAX
22


Chỉ thị #if, #else, #endif
 Các chỉ thị này giống như câu lệnh if, mục đích
nhằm báo cho chương trình biết đoạn lệnh giữa
#if và #endif chỉ được dịch nếu điều kiện đúng.
 #if expression

process1
#endif
 #if expression
process1
#else
process2
#endif
23


Chỉ thị #ifdef, #ifndef, #else, #endif
 Chỉ thị #ifdef và #ifndef báo cho chương trình
dịch biết đoạn lệnh có được dịch hay không
khi một tên gọi đã được định nghĩa hoặc
chưa.
 #ifdef được hiểu là nếu tên đã được định
nghĩa thì dịch.
 #ifndef được hiểu là nếu tên chưa được định
nghĩa thì dịch.
• #ifdef macro
 #ifndef macro
process1
process1
#else
#endif
process2
#endif

24



Cách xây dựng một chương trình
nhiều module
 Thực hiện lệnh File / New / Project, đặt tên
cho project.
 Để thêm file vào project, vào Project / New
file.
 Để xóa file khỏi project, vào Project /
Remove from Project.
 Đóng project: File / Close project.
 Chú ý: Trong các file chỉ duy nhất một file
chứa hàm main.
25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×