Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 11: Mảng (GV. Nguyễn Nhật Nam)

60 3 0
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 11: Mảng (GV. Nguyễn Nhật Nam)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 11: Mảng (GV. Nguyễn Nhật Nam). Bài giảng có nội dung trình bày về khái niệm; khai báo mảng; khởi động trị của mảng; mảng là đối số của hàm mảng là biến toàn cục; các ứng dụng;... Mời các bạn cùng tham khảo!

CHƯƠNG 11 MẢNG CHƯƠNG 11 MẢNG 11.1 Khái niệm 11.2 Khai báo mảng 11.3 Khởi động trị mảng 11.4 Mảng đối số hàm mảng biến toàn cục 11.5 Các ứng dụng Bài tập cuối chương CHƯƠNG 11 MẢNG 11.1 KHÁI NIỆM Mảng biến cấu trúc có nhiều phần tử kiểu, phần tử biến thành phần mảng Mỗi biến thành phần biến bình thường có cước số (subscript) để phân biệt phần tử phần tử Như vậy, để truy xuất phần tử mảng, ta cần biết cước số Trong nhớ, phần tử mảng cấp phát ô nhớ có địa liên tiếp CHƯƠNG 11 MẢNG 11.1 KHÁI NIỆM C cho phép lập trình viên khai báo làm việc mảng chiều (singledimensional array) mảng nhiều chiều (multidimensional array) Số phần tử chiều gọi kích thước chiều CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Cú pháp khai báo mảng chiều sau: kiểu tên_mảng [kích_thước]; Với kích_thước số nguyên cụ thể, cho biết số phần tử chiều xét Trong C, cước số phần tử mảng từ trở đi, nên mảng chiều có n phần tử cước số phần tử mảng 0, , n-1 CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Ví dụ: Cho khai báo sau: int a[10], x; Như mảng a có 10 phần tử int, phần tử a[0], a[1], …, a[9] Các phần tử cấp phát vị trí nhớ hình 12.1 sau CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Lệnh a[5] = a[3] + 1; có mã LC-3 sau: ADD R0, R5, #-9 LDR R1, R0, #3 ADD R1, R1, #1 STR R1, R0, #5 ; R0 = &a[0]: địa a[0] ; R1 = a[3] ; tăng ; a[5] = R1, tức a[5] = a[3] + CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Lệnh a[5] = 7; có mã LC-3 sau: AND R0, R0, #0 ADD R0, R0, #7 ; R0 = ADD R1, R5, #-9 ; R1 = &a[0]: địa phần tử a[0] STR R0, R1, #5 ; a[5] = R0 CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Cịn lệnh a[x+1] = a[x] + 2; với x biến chứa trị số cần làm việc, có mã LC-3 sau: LDR R0, R5, #-10 ; R0 = x ADD R1, R5, #-9 ; R1 = &a[0] ADD R1, R0, R1 ; R1 = &a[x] LDR R2, R1, #0 ; R2 = a[x] ADD R2, R2, #2 ; cộng thêm CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều LDR ADD ADD ADD STR R0, R5, #-10 ; R0 = x R0, R0, #1 ; R0 = x+1 R1, R5, #-9 ; R1 = &a[0] R1, R0, R1 ; R1 = &a[x+1] R2, R1, #0 ; a[x+1] = R2 CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Ví dụ : Viết chương trình nhập dãy số nguyên, tìm số lớn dãy số #include #include main() { int i, n, max, vtmax; int a[100]; clrscr(); CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.1 Sắp xếp mảng 2- Quick sort Giá trị tầm tính trung bình cộng hai phần tử sau phần mảng xếp Giải thuật chuyển tất phần tử có giá trị nhỏ giá trị tầm sang phần có số thấp mảng, chuyển tất phần tử có giá trị lớn giá trị tầm sang phần có số cao mảng CHƯƠNG 11 MẢNG 86 Trị tầm 10 23 12 67 Vị trí maûng 59 47 31 24 Bước 1: 55 86 10 23 12 67 59 47 31 24 Bước 2: 35 24 10 23 12 31 47 59 67 86 Bước 3: 27 24 10 23 12 31 47 59 67 86 Bước 4: 18 24 10 23 12 31 47 59 67 86 Bước 5: 11 12 10 23 24 31 47 59 67 86 Bước 6: 10 12 23 24 31 47 59 67 86 Bước 7: 23 10 12 23 24 31 47 59 67 86 Bước 8: 72 10 12 23 24 31 47 59 67 86 Bước 9: 63 10 12 23 24 31 47 59 67 86 Bước 10: 63 10 12 23 24 31 47 59 67 86 CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.1 Sắp xếp mảng 3- Select sort Giải thuật tìm giá trị lớn đưa vị trí có cước số thấp nhất, sau tìm giá trị lớn thứ nhì đưa vị trí có cước số thấp nhì, trình diễn tương tự hết Ví dụ 8.14 (SGT) CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.2 Stack Stack (tạm dịch ngăn xếp) kiểu cấu trúc liệu lập trình viên tự lập ra, cần, lập trình viên thêm phần tử vào stack, xóa phần tử khỏi stack Đặc điểm cấu trúc liệu liệu ghi vào lấy khỏi stack theo trật tự vào trước sau (last-in first-out) CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.2 Stack Các thao tác cần có để làm việc stack: - Khởi động stack, tương ứng với hàm init_stack() cần thiết kế - Các hàm để xem stack rỗng, đầy, hay xem trị đỉnh stack - Đẩy phần tử vào stack, tương ứng hàm push() cần thiết kế - Lấy phần tử từ đỉnh stack ra, tương ứng với hàm pop() cần thiết kế CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.2 Stack Ví dụ: CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.2 Stack Chương trình ứng dụng stack (SGT) CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.3 Queue Queue cấu trúc liệu, việc thêm liệu vào thực đầu, việc lấy phần tử khỏi queue thực đầu Dữ liệu vào queue theo trật tự vào (first-in first-out) CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.3 Queue Cũng tương tự stack, thao tác cần có để làm việc queue: - Khởi động queue, tương ứng với hàm init_queue() cần thiết kế - Các hàm để xem queue rỗng, đầy - Thêm phần tử vào queue, tương ứng hàm addqueue() cần thiết kế - Lấy phần tử khỏi queue, tương ứng với hàm deletequeue() cần thiết kế CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.3 Queue Ví dụ: CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.3 Queue Ví du (SGT) CHƯƠNG 11 MẢNG BÀI TẬP CUỐI CHƯƠNG Nhập ma trận n x n bất kỳ, xếp lại ma trận cho trị lớn hàng, nằm đường chéo ma trận Viết chương trình tạo in hình ma trận có daïng sau: a b c d b c d a c d a b n : tham số nhập d a b c n CHƯƠNG 11 MẢNG BÀI TẬP CUỐI CHƯƠNG Nhập chuỗi từ bàn phím, xóa tất ký tự khoảng trắng thừa chuỗi in hình chuỗi Nhập dãy số từ bàn phím Viết hai hàm để in hình biểu đồ ngang biểu đồ dọc dấu * tương ứng với số nhập dãy số Ví dụ: Nhập 3; *** ** *** **** ** *** * CHƯƠNG 11 MẢNG BÀI TẬP CUỐI CHƯƠNG Viết chương trình tạo in hình tam giác PASCAL cấp n, với n nhập từ bàn phím Viết chương trình tạo ma trận nghịch đảo n x n Viết chương trình giải hệ phương trình tuyến tính phương pháp Gauss CHƯƠNG 11 MẢNG BÀI TẬP CUỐI CHƯƠNG Nhập ma trận vuông bất kỳ, tính tổng hàng, cột, đường chéo Nhập ma trận In hình trị vị trí số nguyên tố có mảng 10 Viết hàm đổi từ số sang chuỗi, từ chuỗi sang số ... (last-in first-out) CHƯƠNG 11 MẢNG 11.5 C? ?C ỨNG DỤNG 11.5.2 Stack C? ?c thao t? ?c cần c? ? để làm vi? ?c stack: - Khởi động stack, tương ứng với hàm init_stack() c? ??n thiết kế - C? ?c hàm để xem stack rỗng,... CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 2- Mảng nhiều chiều C phân biệt biến chuỗi mảng ký tự C? ?? hai trường hợp khai báo char tên [chiều_dài]; Điểm kh? ?c biệt? CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 2- Mảng. .. kích_thư? ?c số nguyên c? ?? thể, cho biết số phần tử chiều xét Trong C, c? ?? ?c số phần tử mảng từ trở đi, nên mảng chiều c? ? n phần tử c? ?? ?c số phần tử mảng 0, , n-1 CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG

Ngày đăng: 05/07/2022, 13:52

Tài liệu cùng người dùng

Tài liệu liên quan