Đề cương chi tiết môn Kỹ thuật lập trình (Hệ Đại học)
Mục lục
Chương I. tổng quan về C++ 2
I. Quy trình làm việc trong C++ 2
I.1. Các bước để lập một trương trình bằng C++ 2
I.2. Cấu trúc một chương trình đơn giản trong C++ 3
II. Biến, biểu thức, các lệnh nhập xuất 5
II.1. Biến 5
II.2. Biểu thức 5
II.3. Các lệnh nhập-xuất 8
a. Các lệnh nhập xuất trong IOStream.h 8
b. Các lệnh nhập xuất trong Stdio.h 10
c. Các lệnh nhập xuất trong Conio.h 11
Chương II. Các cấu trúc điều khiển trong C++ 13
I. Cấu trúc rẽ nhánh và cấu trúc chọn 13
I.1. Cấu trúc rẽ nhánh 13
I.2. Cấu trúc chọn 16
II. Cấu trúc lặp 18
II.1. Vòng lặp với số lần lặp xác định 18
II.2. Vòng lặp với số lần lặp không xác định 22
a. Lặp kiểm tra điều kiện trước: 22
b. Lặp kiểm tra điều kiện sau: 24
II.3. Các ví dụ minh hoạ sử dụng vòng lặp 26
Chương III. Kỹ thuật lập trình đơn thể 28
I. Đơn thể và lập trình đơn thể 28
I.1. Khái niệm và phân loại đơn thể 28
I.2. Định nghĩa và sử dụng hàm 29
I.3. Tổ chức các hàm 32
I. 4. Phạm vi hoạt động của biến 36
II. Kỹ thuật đệ quy 37
II.1. Khái niệm về đệ quy 37
II.2. Thiết kế hàm đệ quy 39
II.3. Đệ quy và các dãy truy hồi 41
II.4. Một số ví dụ về đệ quy 42
III. Kỹ thuật truyền tham số 43
III.1. Khái niệm và phân loại tham số 43
III.2. Truyền tham số 44
Chương IV. Kỹ thuật lập trình dùng mảng 47
I. Mảng một chiều 47
I.1. Khai niệm và cách khai báo 47
I.2. Các thao tác cơ bản trên mảng một chiều 48
I.3. Các bài toán cơ bản 48
a. Bài toán sắp xếp mảng 48
b. Bài toán tìm kiếm 54
II. Mảng hai chiều 58
II.1. Các thao tác cơ bản trên mảng hai chiều 58
II.2. Các bài toán cơ bản trên mảng 2 chiều 60
III. Xâu ký tự – mảng các ký tự 62
III.1. Một số lưu ý khi sử dụng xâu ký tự 62
III.2. Một số bài toán đặc thù trên xâu 65
Chương V. Kỹ thuật lập trình dùng con trỏ 68
I. Tổng quan về con trỏ 68
I.1. Khái niệm và cách khai báo 68
I.2. Một số thao tác cơ bản trên con trỏ 68
II. Con trỏ - mảng và hàm 69
II.1. Con trỏ và mảng 69
II.2. Con trỏ và hàm 70
III. Cấp phát và giải phóng bộ nhớ cho con trỏ 73
III.1. Cấp phát bộ nhớ động cho con trỏ 73
III.2. Cấp phát lại hoặc giải phóng bộ nhớ cho con trỏ 75
Một số Bài tập thực hành 78
a[i] < a[i+1] với mọi i; Dãy gọi là được sắp giảm ngặt nếu a[i] > a[i+1] với mọi i; Viết chương trình nhập một dãy n số thực, kiểm tra xem dãy đã được sắp hay chưa. Nếu đã được sắp thì sắp theo trật tự nào (tăng, tăng ngặt, giảm, giảm ngặt?). Nếu chưa thì sắp xếp dãy theo chiều tăng dần. In các kết quả lên màn hình. Cho hai vector x(x1, x2xn) và y(y1, y2yn). Viết chương trình in ra Tích vô hướng của hai vector trên. Cho hai mảng a và b có các phần tử đều đã được sắp tăng. Lập chương trình trộn hai mảng trên để thu được một mảng thứ 3 cũng sắp theo thứ tự tăng (bằng 2 cách). Hãy đưa ra phương án cải tiến 2 cách trên? Cho một mảng a gồm n phần tử nguyên sao cho a[i] thuộc [1, n] và không có giá trị nào xuất hiện quá 1 lần trong mảng. Chỉ bằng 1 vòng lặp (For(int i=0; i<n; i++) hãy sắp mảng a theo chiều tăng dần (hoặc giảm dần). Có nhận xét gì về bài tập này? Nhập một xâu ký tự vào biến S. Một đường đi trong xâu là dãy liên tiếp các ký tự giống nhau trong S (không phân biệt chữ hoa và chữ thường), độ dài của đường đi là số ký tự có trong đường đi. Hãy cho biết độ dài của đường đi dài nhất trong S? Cho một biểu thức gồm toàn các dấu mở/ đóng ngoặc ‘(‘ và ‘)’. Một biểu thức được gọi là hợp lệ nếu các dấu mở/ đóng ngoặc được đặt phù hợp như khi nó đặt trong biểu thức toán học. Ví dụ biểu thức: (( )( )) hoặc ((( )))( ) là hợp lệ, biểu thức )( )) hoặc ((( ))là không hợp lệ. Hãy cho biết biểu thức vừa nhập có hợp lệ không? Một mảng a gồm n phần tử nguyên được gọi là hợp lệ nếu tất cả các phần tử có chỉ số lẻ đều nguyên tố. Hãy kiểm tra tính hợp lệ của mảng a? Nhập vào một mảng a chỉ gồm các phần tử 0 hoặc 1. Một đường đi trên a là một dãy liên tiếp các phần tử 1. Độ dài của đường đi là số phần tử trên đường đi đó. Hãy cho biết: Mảng vừa nhập có bao nhiêu đường đi? Mảng vừa nhập có đường đi dài nhất xuất phát từ vị trí nào? Độ dài của đường đi dài nhất trong mảng? Độ dài trung bình của các đường đi trong mảng? 12. Viết chương trình nhập vào một ma trận m x n số nguyên. Tìm các phần tử lớn nhất và bé nhất trên các dòng (tương tự các cột) của ma trận. (sử dụng for sau đó dùng while, do/ while). Viết chương trình tìm phần tử âm đầu tiên trong ma trận (theo chiều từ trái qua phải, từ trên xuống dưới). Viết chương trình nhập vào một ma trận m x n số nguyên. Tìm phần tử lớn nhất (tương tự tìm phần tử nhỏ nhất) của ma trận vừa nhập. In kết quả ra màn hình. Viết chương trình nhập vào hai ma trận A, B có n hàng, m cột. Tính ma trận C = A + B và in kết quả ra màn hình. Viết chương trình nhập vào hai ma trận A, B, tính và in ra màn hình tích của hai ma trận đó. Viết chương trình nhập vào một ma trận A có n dòng, m cột. In ra màn hình ma trận chuyển vị của A. (A’ được gọi là ma trận chuyển vị của A nếu A’[i, j] = A[j, i] với mọi i, j). Ma trận A được gọi là đối xứng qua đường chéo chính nếu A[i, j] = A[j, i] với mọi i khác j. Viết chương trình nhập vào một ma trận A, kiểm tra xem A có đối xứng qua đường chéo chính không. In kết luận lên màn hình. Một ma trận số, vuông a được gọi là hợp lệ nếu tất cả các phần tử nằm trên đường chéo chính bằng 1, tất cả các phần tử nằm phía trên đường chép chính đều dương, tất cả các phần tử nằm phía dưới đường chéo chính đều âm. Hãy kiểm tra xem a có hợp lệ không? Chương V: Kỹ thuật lập trình dùng con trỏ Viết chương trình nhập vào một mảng a gồm n phần tử nguyên. Sắp xếp mảng theo chiều giảm dần (lưu ý sử dụng tên mảng như con trỏ và sử dụng con trỏ). Hãy dùng một vòng for để nhập vào một ma trận vuông cấp n với các phần tử thực và tìm phần tử Max của ma trận này. Viết hàm hoán vị hai biến thực a, b bằng cách sử dụng con trỏ (đối vào là hai con trỏ). Viết chương trình chính nhập hai số thực a, b. Sử dụng hàm trên để đổi chỗ a và b. Viết hàm giải hệ phương trình bậc nhất với sáu đối vào là a, b, c, d, e, f và 2 đối ra là x và y. Viết hàm tính giá trị đa thức: f(x) = a0xn + + an-1x + an. với đối vào là biến nguyên n và mảng thực a. Viết hàm cộng hai ma trận vuông a và b cấp n (sử dụng con trỏ). Viết hàm trả về đồng thời 3 giá trị là tổng chắn, tổng lẻ và tổng các số chia hết cho 3 có trong mảng a gồm n phần tử nguyên. Sử dụng hàm trên trong chương trình chính. Viết chương trình tính tích phân của f(x) trên đoạn [a, b] bằng công thức hình thang. Theo đó, tích phân của f(x) trên [a, b] bằng: h * s. Trong đó: h là độ dài khoảng phân hoạch đoạn [a, b] thành n khoảng. s là tổng tất cả các f(a+i*h) với i từ 1 tới n. Sử dụng hàm trên để tính tích phân trong đoạn [-1, 4] của: f(x) = (ex-2sin(x2))/ (1+x4). (nghiên cứu cách đưa con trỏ vào giải quyết bài toán). Một số câu hỏi về mảng Đề 1. Nhập vào một mảng a gồm n phần tử nguyên. In ra màn hình phần tử âm đầu tiên trong dãy (tính từ trái qua phải) và vị trí của phần tử âm đó (nếu có). Nếu mảng không có phần tử âm nào, hãy tính trung bình cộng các phần tử dương trong mảng và in kết quả ra màn hình. Đề 2. Viết chương trình nhập vào một dãy số nguyên. Tính tổng của các số nguyên tố trong dãy và in kết quả ra màn hình. Nếu mảng không có số nguyên tố nào, hãy sắp mảng tăng dần bằng phương pháp nổi bọt. Đề 3. Viết chương trình nhập vào một dãy số nguyên và một số nguyên c. Đếm số lần xuất hiện và vị trí xuất hiện của c trong dãy. In các kết quả ra màn hình. Nếu c không xuất hiện trong mảng, hãy chèn c vào giữa mảng. Đề 4. Nhập một ma trận vuông n x n phần tử thực. Gọi P[i] là trung bình cộng của các phần tử trong dòng thứ i của ma trận và K là trung bình cộng của tất cả các phần tử trong ma trận. Hãy tính và in ra P[i] và K. Đề 5. Nhập một ma trận vuông n x n phần tử nguyên. Kiểm tra xem ma trận vừa nhập có đối xứng không? nếu đối xứng, hãy in ra các phần tử trên đường chéo chính của ma trận ra màn hình đồng thời tính và in ra tổng các phần tử nằm phía trên đường chéo chính. Đề 6. Nhập một mảng a gồm n phần tử nguyên, hãy đảo ngược mảng a và in mảng đã đảo ngược ra màn hình. Sắp sếp lại mảng a theo chiều tăng dần và in ra phần tử lớn nhất trong mảng a. Đề 7. Nhập một mảng a gồm n phần tử nguyên. hãy sắp xếp mảng a sao cho: các phần tử lớn nhất ở đầu mảng, các phần tử bé nhất ở cuối mảng, các phần tử còn lại sắp tăng dần. In mảng đã sắp ra màn hình. Đề 8. Nhập một mảng a gồm n phần tử nguyên. Mảng a được gọi là hợp lệ nếu tồn tại 3 phần tử liên tiếp đều là các phần tử lẻ. Hãy kiểm tra xem a có hợp lệ không? nếu không hợp lệ hãy dồn tất cả các phần tử lẻ của a lên đầu mảng. Đề 9. Nhập một mảng a gồm n phần tử nguyên. Sắp a theo chiều tăng dần bằng phương pháp chọn. Xoá mọi phần tử lẻ trong mảng a và in mảng kết quả lên màn hình. Đề 10. Nhập một mảng a gồm n phần tử nguyên. Mảng a được gọi là hợp lệ nếu nó chứa đúng 3 phần tử dương và 3 phần tử âm. Hãy cho biết a có hợp lệ không? nếu a không hợp lệ hãy sắp a theo chiều tăng dần bằng phương pháp chèn. Đề 11. Nhập một ma trận a gồm n dòng, m cột. Hãy tính tổng các phần tử dương trên ma trận và in kết quả ra màn hình. Hãy tính tổng của các phần tử xung quanh ma trận đồng thời in ma trận vừa nhập ra màn hình. Đề 12. Nhập một ma trận vuông n x n phần tử nguyên. Ma trận được gọi là hợp lệ nếu tổng các phần tử trên mỗi dòng của tất cả các dòng đều bằng nhau. Hãy kiểm tra xem ma trận vừa nhập có hợp lệ không? In mảng vừa nhập ra màn hình. Đề 13. Nhập một mảng a gồm n phần tử nguyên. Hãy tách các phần tử chẵn trong a ra một mảng b, tách các phần tử lẻ trong a ra một mảng c. In cả 3 mảng ra màn hình. Đề 14. Nhập một mảng a gồm n phần tử nguyên. Hãy sắp xếp mảng a sao cho các phần tử lớn nhất về cuối dãy, các phần tử còn lại được sắp giảm dần. In kết quả ra màn hình. Cho biết mảng vừa sắp có bao nhiêu phần tử nhỏ nhất? Đề 15. Nhập một ma trận vuông a gồm n x n phần tử nguyên. Ma trận được gọi là hợp lệ nếu tất cả các dòng của nó, mỗi dòng chỉ chứa đứng 1 phần tử âm. Hãy kiểm tra xem ma trận vừa nhập có hợp lệ không? in mảng vừa nhập ra màn hình. Mục lục Chương I. tổng quan về C++ 2 I. Quy trình làm việc trong C++ 2 I.1. Các bước để lập một trương trình bằng C++ 2 I.2. Cấu trúc một chương trình đơn giản trong C++ 3 II. Biến, biểu thức, các lệnh nhập xuất 5 II.1. Biến 5 II.2. Biểu thức 5 II.3. Các lệnh nhập-xuất 8 a. Các lệnh nhập xuất trong IOStream.h 8 b. Các lệnh nhập xuất trong Stdio.h 10 c. Các lệnh nhập xuất trong Conio.h 11 Chương II. Các cấu trúc điều khiển trong C++ 13 I. Cấu trúc rẽ nhánh và cấu trúc chọn 13 I.1. Cấu trúc rẽ nhánh 13 I.2. Cấu trúc chọn 16 II. Cấu trúc lặp 18 II.1. Vòng lặp với số lần lặp xác định 18 II.2. Vòng lặp với số lần lặp không xác định 22 a. Lặp kiểm tra điều kiện trước: 22 b. Lặp kiểm tra điều kiện sau: 24 II.3. Các ví dụ minh hoạ sử dụng vòng lặp 26 Chương III. Kỹ thuật lập trình đơn thể 28 I. Đơn thể và lập trình đơn thể 28 I.1. Khái niệm và phân loại đơn thể 28 I.2. Định nghĩa và sử dụng hàm 29 I.3. Tổ chức các hàm 32 I. 4. Phạm vi hoạt động của biến 36 II. Kỹ thuật đệ quy 37 II.1. Khái niệm về đệ quy 37 II.2. Thiết kế hàm đệ quy 39 II.3. Đệ quy và các dãy truy hồi 41 II.4. Một số ví dụ về đệ quy 42 III. Kỹ thuật truyền tham số 43 III.1. Khái niệm và phân loại tham số 43 III.2. Truyền tham số 44 Chương IV. Kỹ thuật lập trình dùng mảng 47 I. Mảng một chiều 47 I.1. Khai niệm và cách khai báo 47 I.2. Các thao tác cơ bản trên mảng một chiều 48 I.3. Các bài toán cơ bản 48 a. Bài toán sắp xếp mảng 48 b. Bài toán tìm kiếm 54 II. Mảng hai chiều 58 II.1. Các thao tác cơ bản trên mảng hai chiều 58 II.2. Các bài toán cơ bản trên mảng 2 chiều 60 III. Xâu ký tự – mảng các ký tự 62 III.1. Một số lưu ý khi sử dụng xâu ký tự 62 III.2. Một số bài toán đặc thù trên xâu 65 Chương V. Kỹ thuật lập trình dùng con trỏ 68 I. Tổng quan về con trỏ 68 I.1. Khái niệm và cách khai báo 68 I.2. Một số thao tác cơ bản trên con trỏ 68 II. Con trỏ - mảng và hàm 69 II.1. Con trỏ và mảng 69 II.2. Con trỏ và hàm 70 III. Cấp phát và giải phóng bộ nhớ cho con trỏ 73 III.1. Cấp phát bộ nhớ động cho con trỏ 73 III.2. Cấp phát lại hoặc giải phóng bộ nhớ cho con trỏ 75 Một số Bài tập thực hành 78
File đính kèm:
- de_cuong_chi_tiet_mon_ky_thuat_lap_trinh_he_dai_hoc.doc