Bài giảng Nhập môn Lập trình: Phần 4 - Mảng - Array
lượt xem 10
download
Bài giảng Nhập môn Lập trình: Phần 4 - Mảng - Array sau đây sẽ trang bị cho các bạn một số kiến thức về tính chất mảng - Array; khai báo mảng trong C; truy xuất các thành phần; truyền tham số kiểu mảng cho hàm; một số thao tác cơ sở; mảng nhiều chiều.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Nhập môn Lập trình: Phần 4 - Mảng - Array
- Mảng Array
- Mảng – Array Một số tính chất Khai báo mảng trong C Truy xuất các thành phần Truyền tham số kiểu mảng cho hàm Một số thao tác cơ sở Mảng nhiều chiều
- Mảng – Một số tính chất Mảng là một kiểu dữ liệu có cấu trúc do người lập trình định nghĩa Dùng biểu diễn các đối tượng dữ liệu ở dạng một dãy các thành phần có cùng kiểu với nhau – kiểu cơ sở NNLT C luôn chỉ định một khối nhớ liên tục cho một biến kiểu mảng Kích thước của mảng được xác định ngay khi khai báo và không bao giờ thay đổi
- Mảng – Khai báo trong C typedef kiểucơsở Tênkiểu[Sốthànhphần]; kiểu của mỗi thành phần hằng số, số thành phần tối đa của mảng do lập trình viên đặt tên typedef int AINT[100]; //AINT là kiểu mảng biểu diễn dãy gồm 100 thành phần int AINT a; //a: biến kiểu AINT
- Mảng – Ví dụ #define #define SIZE SIZE 10 10 int int a[5]; a[5]; // // aa dãy dãy gồm gồm 55 số số nguyên nguyên long long int int big[100]; big[100];// // big: big: chiếm chiếm 400 400 bytes! bytes! double double d[100]; d[100]; // // d: d: chiếm chiếm 800 800 bytes! bytes! long long double double v[SIZE];// v[SIZE];// v:10 v:10 long long doubles doubles
- Mảng – Ví dụ khởi trị cho 5 thành phần int int a[5] a[5] == {{ 10, 10, 20, 20, 30, 30, 40, 40, 50}; 50}; double double d[100] d[100] == {{ 1.5, 1.5, 2.7}; 2.7}; short short primes[] primes[] == {{ 1, 1, 2, 2, 3, 3, 5, 5, 7, 7, 11, 11, 13}; 13}; long long b[50] b[50] == {{ 00 }; }; 2 thành phần đầu tiên được compiler xác định khởi trị, phần kích thước gồm 7 còn lại: 0 thành phần cách nhanh nhất để khởi trị tất cả các int int ii == 7; 7; thành phần bằng 0 const const int int cc == 5;5; int int a[i]; a[i]; double double d[c]; d[c]; short short primes[]; primes[];
- Mảng – Truy xuất các phần tử Các thành phần của mảng được truy xuất thông qua chỉ số của chúng 0..size1 Thao tác truy xuất không kiểm tra giới hạn của chỉ số int int main() main() a {{ 0 int int a[6]; a[6]; int 1 int ii == 7; 7; a[0] a[0] == 59; 59; 2 a[5] a[5] == -10; -10; 3 a[i/2] a[i/2] == 2;2; 4 a[6] a[6] == 0; 0; a[-1] 5 a[-1] == 5; 5; return return 0;0; }}
- Truyền tham số Mảng cho hàm Tham số kiểu mảng được truyền cho hàm chính là địa chỉ của phần tử đầu tiên trên mảng Số thành phần trong tham số mảng có thể để trống. Số thành phần thực sự được sử dụng phải truyền qua một tham số khác (vd: size) int int add_elements(int add_elements(int a[], a[], int int size) size) {{ int int add_elements(int add_elements(int *p, *p, int int size) size) {{
- Ví dụ primes #include #include 1 void voidsum(long sum(long [], [], int); int); 2 int int main(void) main(void) {{ long 3 long primes[6] primes[6] == {{ 1,1, 2, 2, 3, 3, 5, 5, 7, 7, 11 11 }; }; 5 sum(primes, sum(primes, 6); 6); 7 printf("%li\n", printf("%li\n", primes[0]); primes[0]); 11 return return 0; 0; }} a void voidsum(long sum(long a[], a[], int int sz) sz) {{ sz 6 int int i; i; long long total total == 0; 0; dùng để kiểm tra for(i for(i == 0; 0; ii
- Một số thao tác cơ sở Nhập Xuất Thêm một thành phần dữ liệu Loại bỏ một thành phần dữ liệu Tìm kiếm Sắp xếp
- Mảng – Nhập dữ liệu void void ReadData(int ReadData(int a[], a[], int int size) size) {{ duyệt qua tất cả các int int i; i; phần tử for(i for(i == 0; 0; ii
- Mảng – Xuất dữ liệu ra màn hình void void WriteData(int WriteData(int a[], a[], int int size) size) {{ int int i; i; for(i for(i == 0; 0; ii
- Mảng – Nhập xuất dữ liệu #include #include void void ReadData(int ReadData(int [], [], int int ); ); void void WriteData(int WriteData(int [], [], int int ); ); void void main() main() {{ int int a[100], a[100], n; n; clrscr(); clrscr(); printf(“Nhap printf(“Nhap so so thanh thanh phan phan cua cua day: day: “); “); scanf(“%d”, scanf(“%d”, &n); &n); printf(“Nhap printf(“Nhap cac cac thanh thanh phan phan cua cua day: day: “); “); ReadData(a, ReadData(a, n); n); printf(“Day printf(“Day vua vua nhap: nhap: \n“); \n“); WriteData(a, WriteData(a, n); n); }}
- Mảng – Tìm vị trí X trong dãy Bài toán: Tìm vị trí X trên mảng a đang có N thành phần. Giải pháp: Tìm tuần tự //input: //input: dãy dãy (a, (a, N), N), XX //output: //output: Vị Vị trí trí của của X, X, -1 -1 nếu nếu không không có có int int Search(int Search(int a[], a[], int int N, N, int int X) X) {{ for for (int (int ii == 0; 0; ii
- Mảng – Thêm một thành phần dữ liệu Bài toán: cần thêm thành phần dữ liệu X vào mảng a đang có N thành phần. Hai trường hợp cần xem xét: Dãy chưa có thứ tự Thêm X vào cuối a. Dãy đã có thứ tự Tìm vị trí thích hợp, chèn X vào
- Mảng – Thêm X vào cuối dãy Thêm 15 vào (a, 7) 0 1 2 3 4 5 6 7 12 2 8 5 1 6 4 N=7 8 a[N] a[N] == X; X; NX 15 N ++; ++;
- Mảng – Chèn X vào dãy tăng dần Chèn 6 vào (a, 7) pos 0 1 2 3 4 5 6 7 1 2 4 5 8 12 15 N=7 8 X 6 Vị trí thích hợp: 4
- Mảng – Chèn X vào dãy tăng dần //input: //input: dãy dãy (a, (a, N) N) tăng tăng dần, dần, XX //output: //output: dãy dãy (a, (a, N) N) đã đã có có XX ởở đúng đúng vị vị trí trí void void Insert(int Insert(int a[], a[], int int &N, &N, int int X) X) {{ int int pos; pos; for for (pos (pos == N; N; (pos>0)&&(a[pos-1]>X); (pos>0)&&(a[pos-1]>X); pos pos --) --) a[pos] a[pos] == a[pos a[pos –– 1]; 1]; a[pos] a[pos] == X; X; NN ++; ++; }}
- Mảng – Loại bỏ một thành phần dữ liệu Bài toán: loại bỏ thành phần dữ liệu X ra khỏi mảng a đang có N thành phần. Hướng giải quyết: xác định vị trí của X, nếu tìm thấy thì dồn các phần tử ở phía sau lên để lấp vào chỗ trống. 2 trường hợp: Dãy không có thứ tự: lấp phần tử cuối lên Dãy đã thứ tự: dời tất cả các phần tử ở sau ví trí của X lên trước 1 vị trí.
- Mảng – Loại bỏ X ra khỏi dãy tăng Loại 5 khỏi (a, 8) pos 0 1 2 3 4 5 6 7 12 2 8 5 1 6 4 15 N=7 8 STOP X 5 Ok, found Tìm vị trí của 5 Dồn các vị trí 4, 5, 6, 7 lên
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Nhập môn Lập trình: Phần 1
43 p | 132 | 21
-
Bài giảng Nhập môn lập trình: Phần 2 - Cấu trúc điều khiển
23 p | 112 | 15
-
Bài giảng Nhập môn lập trình C: Chương 3 - Trần Thị Kim Chi
76 p | 105 | 11
-
Bài giảng Nhập môn lập trình Java: Bài 4 - Võ Tấn Dũng
74 p | 68 | 8
-
Bài giảng Nhập môn lập trình Java: Bài 10 - Võ Tấn Dũng
46 p | 66 | 8
-
Bài giảng Nhập môn lập trình: Chương 2 - Trần Minh Thái
86 p | 106 | 8
-
Bài giảng Nhập môn lập trình: Chương 1 - Trần Minh Thái
58 p | 102 | 7
-
Bài giảng Nhập môn lập trình: Bài 5 - Cấu trúc lặp
58 p | 62 | 6
-
Bài giảng Nhập môn lập trình khoa học dữ liệu: Bài 2 - Trương Xuân Nam
26 p | 45 | 6
-
Bài giảng Nhập môn lập trình: Mở đầu - Trần Phước Tuấn
22 p | 91 | 6
-
Bài giảng Nhập môn lập trình: Chương 3 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM
79 p | 17 | 6
-
Bài giảng Nhập môn lập trình: Bài 1 - Trần Duy Thanh
70 p | 188 | 5
-
Bài giảng Nhập môn lập trình - Bài 2: Giới thiệu ngôn ngữ lập trình C
18 p | 108 | 5
-
Bài giảng Nhập môn lập trình - Bài 5: Câu lệnh lặp
49 p | 100 | 4
-
Bài giảng Nhập môn lập trình - Bài 1: Các khái niệm cơ bản về lập trình
21 p | 127 | 4
-
Bài giảng Nhập môn lập trình: Bài 1 - TS. Ngô Hữu Dũng
47 p | 79 | 3
-
Bài giảng Nhập môn lập trình: Bài 2 - TS. Ngô Hữu Dũng
53 p | 63 | 3
-
Bài giảng Nhập môn lập trình: Bài 3 - Trần Duy Thanh
16 p | 94 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn