Bài 11. Kiểu mảng
Chia sẻ bởi Hataka Kakashi |
Ngày 10/05/2019 |
53
Chia sẻ tài liệu: Bài 11. Kiểu mảng thuộc Tin học 11
Nội dung tài liệu:
Trang bìa
Trang bìa:
CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC Bài 11: KIỂU MẢNG Đặt vấn đề
Ví dụ 1: Xét ví dụ sau
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần . Tính và in ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. Khi N (số ngày) lớn thì chương trình trên có những hạn chế như thế nào? Phải khai báo quá nhiều biến. Chương trình phải viết rất dài. Để khắc phục những hạn chế trên--->Kiểu dữ liệu có cấu trúc (Kiểu mảng 1chiều) ví dụ 2: Xét ví dụ sau
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần . Tính và in ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. Áp dụng cách khai báo biến mảng 1 chiều, hạn chế được biến khai báo và chương trình ngắn gọn hơn. Nội dung
1. Khái niệm mảng một chiều: Bài 11: KIỂU MẢNG
- Mảng một chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu. Các phần tử trong mảng có cùng chung một tên và phân biệt nhau bởi chỉ số. - Để mô tả mảng một chiều cần xác định được kiểu của các phần tử và cách đánh số các phần tử của nó. - Để người lập trình có thể xây dựng và sử dụng kiểu mảng một chiều, các ngôn ngữ lập trình đều có quy tắc, cách thức cho phép xác định: Tên kiểu mảng một chiều. Số lượng phần tử. Kiểu dữ liệu của từng phần tử. Cách khai báo một biến mảng. Cách tham chiếu đến từng phần tử của từng mảng. 2. Khai báo: Bài 11: KIỂU MẢNG
Tổng quát, khai báo biến mảng một chiều có dạng: - Cách 1: Khai báo trực tiếp biến mảng một chiều: Var: array[kiểu chỉ số] of ; - Cách 2: Khai báo gián tiếp biến mảng một chiều: Type = array[kiểu chỉ số] of ; var :; Trong đó: Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1..n2 với n1, n2 là các hằng hoặc biểu thức nguyên xác định chỉ số đầu và chỉ số cuối (n1<= n2). Kiểu phần tử là kiểu của các phần tử mảng. Chú ý: Cách đặt tên kiểu dữ liệu và tên biến, tránh nhầm lẫn. 3. Cách tham chiếu đến từng phần tử: Bài 11: KIỂU MẢNG
Tham chiếu tới phần tử của mảng một chiều được xác định bởi tên mảng cùng với chỉ số, được viết trong cặp ngoặc [ và ]. Ví dụ: Tham chiếu tới phần tử thứ 6 của mảng, mảng có tên là Nhietdo, được viết là: Nhietdo[6] 4. Giải quyết bài toán: Bài 11: KIỂU MẢNG
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần . Tính và in ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. Chú ý: Sử dụng mảng 1 chiều để giải quyết bài toán. ? Xác định input, output của bài toán ? Các bước giải quyết bài toán - input: 7 số là giá trị nhiệt độ của 7 ngày trong tuần. - output: Số ntb là nhiệt độ trung bình trong tuần và số nch là số ngày có nhiệt độ cao hơn nhiệt độ trung bình. - Các bước giải quyết bài toán: Khai báo: Var tuan: array[1..7] of real; Nhập giá trị cho mảng. Tính trung bình cộng giá trị của mảng. Đếm số phần tử có giá trị lớn hơn trung bình cộng tính được. Chương trình:
var tuan: array[1..7] of real; dem, i, N: byte; Tong, Trung_binh: Real; Begin Write(`Nhap so ngay:`); readln(N); tong:=0; for i:= 1 to N do Begin Write(`Nhap nhiet do ngay:` ,i,`:`); readln(tuan[i]); Tong:= tong tuan[i]; end; dem:=0; Trung_binh:=Tong/N; for i:= 1 to N do if tuan[i]> Trung_binh then dem:=dem 1; writeln(`nhiet do trung binh`, N,` ngay:`,Trung_binh:8:3); writeln(`so ngay nhiet do lon hon trung binh`, dem); readln end. Bài tập
Bài 1:
Tìm số lớn nhất trong mảng A gồm N số nguyên cho trước. Ví dụ: Cho dãy A gồm: 5 4 -2 12 -1 9 15 4 thì giá trị lớn nhất của dãy là 15. ? Xác định input, output của bài toán. ? Ý tưởng để giải quyết bài toán. - input: Mảng A gồm N số nguyên. - output: Đưa ra số lớn nhất. - Ý tưởng: Giả sử gọi Max là giá trị lớn nhất của dãy số Khởi tạo Max=A[1]. Sau đó so sánh max với các số A[i] (1max thì gán lại max=A[i]. Chương trình bài 1:
* Chương trình hoàn chỉnh: var A: array[1..100] of integer; i, max, n: integer; Begin Write(‘Nhap so luong phan tu cua day:’); readln(N); for i:= 1 to N do Begin Write(‘Nhap phan tu thu: ‘,i,’:’); readln(A[i]); end; Max:=A[1]; For i:=2 to N do If A[i]>Max then Max:=A[i]; Writeln(‘Gia tri lon nhat day A la:’,Max); Readln End. Bài 2:
Tìm vị trí phần tử đầu tiên của dãy A có giá trị bằng một số nguyên K cho trước. Chú ý: Dãy A có thể tồn tại phần tử có giá trị bằng K, tuy nhiên cũng có thể không tồn tại phần tử nào có giá trị bằng K. Vì vậy output của bài toán có thể là một trong hai trường hợp trên. ? Xác định input, output của bài toán. ? Ý tưởng - input: Mảng A gồm N số nguyên. - output: Đưa ra vị trí phần tử đầu tiên của dãy A có giá trị bằng số nguyên K, nếu không có thì thông báo không có phần tử nào có giá trị bằng K. - Ý tưởng: Lần lượt xét các phần tử thứ i của dãy A bắt đầu từ phần tử đầu tiên. Ta tiến hành kiểm tra phần tử đó có giá trị bằng K không. Nếu A[i] bằng K thì ta kết thúc việc tìm kiếm và đưa ra vị trí i, ngược lại, ta tiếp tục kiểm tra phần tử tiếp theo cho đến hết dãy nếu không có A[i] nào bằng K. Chương trình bài 2:
* Chương trình hoàn chỉnh: var A: array[1..100] of integer; i,k, n: integer; Begin Write(‘Nhap so luong phan tu cua day:’); readln(N); for i:= 1 to N do Begin Write(‘Nhap phan tu thu: ‘,i,’:’); readln(A[i]); end; write(‘Nhap vao phan tu K =’); Readln(k); i:=1; while (A[i]<>K) and (i<=N) do i:=i 1; if A[i]=K then writeln(‘Vi tri phan tu co gia tri bang ‘,K, ‘ la:’,i) else writeln(‘Khong co phan tu nao trong day co gia tri bang ‘, K); readln end. Bài 3:
Mở rộng: Tìm số nguyên âm đầu tiên của dãy A gồm N số nguyên. Tương tự như bài 2. * Đoạn chương trình xử lý: i:=1; while (A[i]>=0) and (i<=N) do i:=i 1; if A[i]<0 then writeln(‘vi tri phan tu am dau tien cua day la:’,i) else writeln(‘day a khong co gia am’); bài 4:
Tìm phần tử âm nhỏ nhất trong dãy A gồm N số nguyên (đây là bài toán kết hợp 2 bài toán tìm phần tử nhỏ nhất và bài toán tìm kiếm). ? Xác định input, output của bài toán. ? Ý tưởng. - input: Mảng A gồm N số nguyên. - output: Đưa ra phần tử âm nhỏ nhất. - Ý tưởng: Tìm phần tử âm đầu tiên; gán phần tử âm nhỏ nhất là phần tử âm đầu tiên. Xét các phần tử tiếp theo, nếu phần tử đó nhỏ hơn phần tử âm vừa tìm được thì gán lại phần tử âm nhỏ nhất là nó. Chương trình bài 4: Chương trình hoàn chỉnh
var A: array[1..100] of integer; i, j, N, Nmin: integer; Begin Write(‘Nhap so luong phan tu cua day:’); readln(N); for i:= 1 to N do Begin Write(‘Nhap phan tu thu: ‘,i,’:’); readln(A[i]); end; i:=1; while (A[i]>=0) and (i<=N) do i:=i 1; If A[i]<0 then nmin:=A[i]; for j:=i 1 to n do if a[j] Câu 1:
Mảng một chiều là….
A. dãy hữu hạn các phần tử cùng kiểu.
B. dãy hữu hạn các phần tử mà mỗi phần tử có thể là một kiểu dữ liệu khác nhau.
C. dãy hữu hạn các số nguyên.
D. dãy các phần tử cùng kiểu.
Câu 2:
Cú pháp khai báo trực tiếp mảng một chiều là:
A. Var : Array [Kiểu chỉ số] of ;
B. Var : Array [Kiểu phần tử] of ;
C. Var : Array [Kiểu chỉ số]: ;
D. Type : Array [Kiểu chỉ số] of ;
Câu 3:
Cách tham chiếu đến phần tử trong mảng một chiều
A. Tên kiểu mảng, tiếp theo là chỉ số viết trong cặp ngoặc [ và ]
B. Tên biến mảng, tiếp theo là chỉ số viết trong cặp ngoặc ( và )
C. Tên kiểu mảng, tiếp theo là chỉ số viết trong cặp ngoặc ( và )
D. Tên biến mảng, tiếp theo là chỉ số viết trong cặp ngoặc [ và ]
Câu 4:
Trong Pascal, để xuất các phần tử của mảng 1 chiều ta dùng mấy vòng For?
A. 1
B. 2
C. 3
D. n vòng
Câu 5:
Trong ngôn ngữ lập trình Pascal, đoạn chương trình dùng để làm gì? Var a: array[1..10] of integer; i, d: integer; Begin d:=0; for i:= 1 to n do If a[i] mod 2 = 0 then d:= d 1; End.
A. Đếm số phần tử trong mảng a là số chẵn.
B. Đếm số phần tử trong mảng a là số lẻ.
C. Tính tổng các phần tử trong mảng a.
D. Đếm các phần tử có trong mảng a.
Trang bìa:
CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC Bài 11: KIỂU MẢNG Đặt vấn đề
Ví dụ 1: Xét ví dụ sau
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần . Tính và in ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. Khi N (số ngày) lớn thì chương trình trên có những hạn chế như thế nào? Phải khai báo quá nhiều biến. Chương trình phải viết rất dài. Để khắc phục những hạn chế trên--->Kiểu dữ liệu có cấu trúc (Kiểu mảng 1chiều) ví dụ 2: Xét ví dụ sau
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần . Tính và in ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. Áp dụng cách khai báo biến mảng 1 chiều, hạn chế được biến khai báo và chương trình ngắn gọn hơn. Nội dung
1. Khái niệm mảng một chiều: Bài 11: KIỂU MẢNG
- Mảng một chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu. Các phần tử trong mảng có cùng chung một tên và phân biệt nhau bởi chỉ số. - Để mô tả mảng một chiều cần xác định được kiểu của các phần tử và cách đánh số các phần tử của nó. - Để người lập trình có thể xây dựng và sử dụng kiểu mảng một chiều, các ngôn ngữ lập trình đều có quy tắc, cách thức cho phép xác định: Tên kiểu mảng một chiều. Số lượng phần tử. Kiểu dữ liệu của từng phần tử. Cách khai báo một biến mảng. Cách tham chiếu đến từng phần tử của từng mảng. 2. Khai báo: Bài 11: KIỂU MẢNG
Tổng quát, khai báo biến mảng một chiều có dạng: - Cách 1: Khai báo trực tiếp biến mảng một chiều: Var
Tham chiếu tới phần tử của mảng một chiều được xác định bởi tên mảng cùng với chỉ số, được viết trong cặp ngoặc [ và ]. Ví dụ: Tham chiếu tới phần tử thứ 6 của mảng, mảng có tên là Nhietdo, được viết là: Nhietdo[6] 4. Giải quyết bài toán: Bài 11: KIỂU MẢNG
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần . Tính và in ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. Chú ý: Sử dụng mảng 1 chiều để giải quyết bài toán. ? Xác định input, output của bài toán ? Các bước giải quyết bài toán - input: 7 số là giá trị nhiệt độ của 7 ngày trong tuần. - output: Số ntb là nhiệt độ trung bình trong tuần và số nch là số ngày có nhiệt độ cao hơn nhiệt độ trung bình. - Các bước giải quyết bài toán: Khai báo: Var tuan: array[1..7] of real; Nhập giá trị cho mảng. Tính trung bình cộng giá trị của mảng. Đếm số phần tử có giá trị lớn hơn trung bình cộng tính được. Chương trình:
var tuan: array[1..7] of real; dem, i, N: byte; Tong, Trung_binh: Real; Begin Write(`Nhap so ngay:`); readln(N); tong:=0; for i:= 1 to N do Begin Write(`Nhap nhiet do ngay:` ,i,`:`); readln(tuan[i]); Tong:= tong tuan[i]; end; dem:=0; Trung_binh:=Tong/N; for i:= 1 to N do if tuan[i]> Trung_binh then dem:=dem 1; writeln(`nhiet do trung binh`, N,` ngay:`,Trung_binh:8:3); writeln(`so ngay nhiet do lon hon trung binh`, dem); readln end. Bài tập
Bài 1:
Tìm số lớn nhất trong mảng A gồm N số nguyên cho trước. Ví dụ: Cho dãy A gồm: 5 4 -2 12 -1 9 15 4 thì giá trị lớn nhất của dãy là 15. ? Xác định input, output của bài toán. ? Ý tưởng để giải quyết bài toán. - input: Mảng A gồm N số nguyên. - output: Đưa ra số lớn nhất. - Ý tưởng: Giả sử gọi Max là giá trị lớn nhất của dãy số Khởi tạo Max=A[1]. Sau đó so sánh max với các số A[i] (1max thì gán lại max=A[i]. Chương trình bài 1:
* Chương trình hoàn chỉnh: var A: array[1..100] of integer; i, max, n: integer; Begin Write(‘Nhap so luong phan tu cua day:’); readln(N); for i:= 1 to N do Begin Write(‘Nhap phan tu thu: ‘,i,’:’); readln(A[i]); end; Max:=A[1]; For i:=2 to N do If A[i]>Max then Max:=A[i]; Writeln(‘Gia tri lon nhat day A la:’,Max); Readln End. Bài 2:
Tìm vị trí phần tử đầu tiên của dãy A có giá trị bằng một số nguyên K cho trước. Chú ý: Dãy A có thể tồn tại phần tử có giá trị bằng K, tuy nhiên cũng có thể không tồn tại phần tử nào có giá trị bằng K. Vì vậy output của bài toán có thể là một trong hai trường hợp trên. ? Xác định input, output của bài toán. ? Ý tưởng - input: Mảng A gồm N số nguyên. - output: Đưa ra vị trí phần tử đầu tiên của dãy A có giá trị bằng số nguyên K, nếu không có thì thông báo không có phần tử nào có giá trị bằng K. - Ý tưởng: Lần lượt xét các phần tử thứ i của dãy A bắt đầu từ phần tử đầu tiên. Ta tiến hành kiểm tra phần tử đó có giá trị bằng K không. Nếu A[i] bằng K thì ta kết thúc việc tìm kiếm và đưa ra vị trí i, ngược lại, ta tiếp tục kiểm tra phần tử tiếp theo cho đến hết dãy nếu không có A[i] nào bằng K. Chương trình bài 2:
* Chương trình hoàn chỉnh: var A: array[1..100] of integer; i,k, n: integer; Begin Write(‘Nhap so luong phan tu cua day:’); readln(N); for i:= 1 to N do Begin Write(‘Nhap phan tu thu: ‘,i,’:’); readln(A[i]); end; write(‘Nhap vao phan tu K =’); Readln(k); i:=1; while (A[i]<>K) and (i<=N) do i:=i 1; if A[i]=K then writeln(‘Vi tri phan tu co gia tri bang ‘,K, ‘ la:’,i) else writeln(‘Khong co phan tu nao trong day co gia tri bang ‘, K); readln end. Bài 3:
Mở rộng: Tìm số nguyên âm đầu tiên của dãy A gồm N số nguyên. Tương tự như bài 2. * Đoạn chương trình xử lý: i:=1; while (A[i]>=0) and (i<=N) do i:=i 1; if A[i]<0 then writeln(‘vi tri phan tu am dau tien cua day la:’,i) else writeln(‘day a khong co gia am’); bài 4:
Tìm phần tử âm nhỏ nhất trong dãy A gồm N số nguyên (đây là bài toán kết hợp 2 bài toán tìm phần tử nhỏ nhất và bài toán tìm kiếm). ? Xác định input, output của bài toán. ? Ý tưởng. - input: Mảng A gồm N số nguyên. - output: Đưa ra phần tử âm nhỏ nhất. - Ý tưởng: Tìm phần tử âm đầu tiên; gán phần tử âm nhỏ nhất là phần tử âm đầu tiên. Xét các phần tử tiếp theo, nếu phần tử đó nhỏ hơn phần tử âm vừa tìm được thì gán lại phần tử âm nhỏ nhất là nó. Chương trình bài 4: Chương trình hoàn chỉnh
var A: array[1..100] of integer; i, j, N, Nmin: integer; Begin Write(‘Nhap so luong phan tu cua day:’); readln(N); for i:= 1 to N do Begin Write(‘Nhap phan tu thu: ‘,i,’:’); readln(A[i]); end; i:=1; while (A[i]>=0) and (i<=N) do i:=i 1; If A[i]<0 then nmin:=A[i]; for j:=i 1 to n do if a[j]
Mảng một chiều là….
A. dãy hữu hạn các phần tử cùng kiểu.
B. dãy hữu hạn các phần tử mà mỗi phần tử có thể là một kiểu dữ liệu khác nhau.
C. dãy hữu hạn các số nguyên.
D. dãy các phần tử cùng kiểu.
Câu 2:
Cú pháp khai báo trực tiếp mảng một chiều là:
A. Var
B. Var
C. Var
D. Type
Câu 3:
Cách tham chiếu đến phần tử trong mảng một chiều
A. Tên kiểu mảng, tiếp theo là chỉ số viết trong cặp ngoặc [ và ]
B. Tên biến mảng, tiếp theo là chỉ số viết trong cặp ngoặc ( và )
C. Tên kiểu mảng, tiếp theo là chỉ số viết trong cặp ngoặc ( và )
D. Tên biến mảng, tiếp theo là chỉ số viết trong cặp ngoặc [ và ]
Câu 4:
Trong Pascal, để xuất các phần tử của mảng 1 chiều ta dùng mấy vòng For?
A. 1
B. 2
C. 3
D. n vòng
Câu 5:
Trong ngôn ngữ lập trình Pascal, đoạn chương trình dùng để làm gì? Var a: array[1..10] of integer; i, d: integer; Begin d:=0; for i:= 1 to n do If a[i] mod 2 = 0 then d:= d 1; End.
A. Đếm số phần tử trong mảng a là số chẵn.
B. Đếm số phần tử trong mảng a là số lẻ.
C. Tính tổng các phần tử trong mảng a.
D. Đếm các phần tử có trong mảng a.
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Hataka Kakashi
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)