Networks Business Online Việt Nam & International VH2

Tin học 11 Bài 11: Kiểu mảng | Hay nhất Giải bài tập Tin học 11

Đăng ngày 26 June, 2022 bởi admin

Tin học 11 Bài 11: Kiểu mảng

Tin học 11 Bài 11: Kiểu mảng

Để học tốt Tin học lớp 11, nội dung bài học kinh nghiệm là vấn đáp thắc mắc, giải bài tập Tin học 11 Bài 11 : Kiểu mảng hay nhất, ngắn gọn. Bên cạnh đó là tóm tắt kim chỉ nan ngắn gọn và bộ câu hỏi trắc nghiệm Tin 11 Bài 11 có đáp án .
Chúng ta chỉ xét hai kiểu mảng thông dụng với nhiều ngôn từ lập trình là kiểu mảng một chiều và kiểu mảng hai chiều .

1. Kiểu mảng một chiều

Quảng cáo

– Mảng một chiều là một dãy hữu hạn những thành phần có cùng kiểu. Mảng được đặt tên và mỗi thành phần mang một chỉ số. Để miêu tả mảng một chiều cần xác lập kiểu của những thành phần và cách đánh chỉ số những thành phần .
– Với mảng một chiều ta chăm sóc đến :
+ Tên kiểu mảng một chiều .
+ Số lượng thành phần trong mảng .
+ Kiểu tài liệu của thành phần .

Quảng cáo

+ Cách khai báo biến mảng .
+ Cách tham chiếu đến thành phần .

Tại sao ta lại phải sử dụng mảng?

Giả sử ta muốn đo nhiệt độ trung bình trong 1 tháng và đưa ra những ngày nào cao hơn nhiệt độ trung bình. Nếu chỉ sử dụng kỹ năng và kiến thức ta biết từ đầu chương trình đến giờ. Ta sẽ phải khai báo 30 biến để lưu giữ giá trị nhiệt độ những ngày trong tháng. Sau đó phải gõ lại rất nhiều lệnh if gây ra sự nhàm chán .

a) Khai báo.

Cách 1: Khai báo trực tiếp biến mảng một chiều

Quảng cáo

Var :array[kiểu chỉ số] of ;

Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều

	Type=array[kiểu chỉ số] of ;
	Var:;

Trong đó :
+ Kiểu chỉ số thường là đoạn số nguyên liên tục có dạng n1 .. n2, với n1 là chỉ số đầu và n2 là chỉ số cuối ( n1 ≤ n2 ) .
+ Kiểu thành phần là kiểu tài liệu của những thành phần mảng .
+ Tham chiếu đến thành phần mảng ta viết :

	[chỉ số];

Ví dụ:

	Var nhietdo:array[1..30] of integer;

Muốn tham chiếu tới thành phần thứ 20 ta sẽ viết là nhietdo [ 20 ] .

b) Một số ví dụ

Ví dụ 1. Tìm phần tử lớn nhất của dãy số nguyên

Input: Số nguyên dương N (N<=250) và dãy N số nguyên dương A1,A2,..,An,mỗi số đều không vượt quá 500.

Output: Chỉ số và giá trị của phần từ lớn nhất trong dãy số đã cho (nếu có nhiều phần tử lớn nhất thì chỉ cần đưa ra một trong số chúng.

program vidu1;
uses crt;
var arrayint:array[1..250] of integer;
	n,i,mi:integer;
begin
	clrscr;
	writeln('nhap vao so phan tu ');
	readln(n);
	for i:=1 to n do
	begin
	writeln('phan tu thu ',i,'=');
	readln(arrayint[i]);
	end;
	mi:=1;
	for i:=2 to n do
	begin
	if arrayint[i]>arrayint[mi]
	then
	mi:=i;
	end;
	writeln('gia tri lon nhat la ',arrayint[mi],' chi so la ',mi);
	readln;
end.

Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.

program sapxep;
uses crt;
const Nmax=250;
var
	N,i,j,t:integer;
	A:array[1..Nmax] of integer;
begin
	clrscr;
	write('nhap so luong phan tu cua day N=');
	readln(N);
	for i:=1 to N do
	begin
	write('phan tu thu ',i,'=');
	readln(A[i]);
	end;
	for j:=N downto 2 do
		for i:=1 to j-1 do
			if A[i]>A[i+1] then
			begin
			t:=A[i];
			A[i]:=A[i+1];
			A[i+1]:=t;
			end;
	writeln('day da duoc sap xep la ');
	for i:=1 to N do write(A[i]:4);
	readln;
end.

Kết quả:

Giải bài tập Tin học 11 | Để học tốt Tin học 11

Ví dụ 3: Tìm kiếm nhị phân.

Bước 1: Nhập N, các số hạng a1, a2… aN và khóa k.

Bước 2: Dau <— 1, Cuoi <-N;

Bước 3: Giua <—[ Dau + Cuoi]/2

Bước 4: Nếu Agiữa = k thì thông báo chỉ số Giua rồi kết thúc;

Bước 5: Nếu Agiữa> k thì đặt Cuối= Giữa-1 rồi chuyển đến bước 7;

Bước 6: Nếu Nếu Agiữa ≤ k Dau;

Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trị bằng k rồi kết thúc;

Bước 8: Ọuay lại bước 3.

Từ thuật toán của bài toán, tất cả chúng ta rút ra được một số ít điều cơ bản cần phải chú ý quan tâm, đó là :
– Mảng đã dược sắp xếp tăng dần .
– Trong thuật toán, việc tìm kiếm thực ra là lặp 1 số ít lần ( chưa xác lập được trước ) những thao tác sau : chọn số hạng ở ” giữa ” dãy, so sánh số hạng đó với k, địa thế căn cứ vào hiệu quả so sánh này để hoặc Kết luận đã tìm thấy ( trường hợp xảy ra bằng ) hoặc thu hẹp khoanh vùng phạm vi tìm kiếm ( trường hợp không bằng ) .
– Khi nào quy trình lặp nói trên dừng lại ? Quá trình lặp đó cần dừng lại với một trong hai sự kiện sau xảy ra gồm đã tìm thấy hoặc khoảng trống tìm kiếm đã trở nên bằng rỗng ( nghĩa là không còn đoạn nào của dãy cho ta kỳ vọng chứa phân tử cần tìm ) .
– Phạm vi tìm kiếm trên dãy là một đoạn được xác lập bởi những biến nguyên Dau và Cuoi, tương ứng cho biết khởi đầu từ thành phần có chỉ số Dau của dãy cho đến thành phần có chỉ số Cuoi của dãy. Từ đó, ta đưa ra được công thức xác lập phân tử ở ” giữa ” khoanh vùng phạm vi tìm kiếm và công thức xác lập lại giá trị cho biến Dau hay Cuoi trong mỗi trường hợp thu hẹp khoanh vùng phạm vi tìm kiếm .
Giải bài tập Tin học 11 | Để học tốt Tin học 11

2. Kiểu mảng hai chiều

Mảng hai chiều : Là bảng những thành phần cùng kiểu .
Ta hoàn toàn có thể coi mảng hai chiều là mảng một chiều mà mỗi thành phần của mảng một chiều lại là một mảng khác .

Ví dụ:

	Var b:array[1..9] of array[1..10] of integer;

Khai báo b là một mảng một chiều gồm 9 thành phần. Mỗi thành phần của mảng b là một mảng một chiều gồm 10 thành phần .Cách khai báo :Ngoài khai báo theo cách trên. Ta có thêm 2 cách nữa để khai báo mảng 2 chiều .

Cách 1:

	Var:array[kiểu chỉ số hang,kiểu chỉ số cột] of ;

Cách 2:

	Type=array[kiểu chỉ số hang,kiểu chỉ số cột] of ;
	Var:;

Ví dụ:

	Var b:array[1..9,1..10] of integer;

Hoặc

	Type mang2chieu=array[1..9,1..10] of integer;
	Var
		B:mang2chieu;

HoặcMuốn tham chiếu đến thành phần trong mảng 2 chiều ta sử dụng 2 chỉ số là chỉ số hàng và chỉ số cột .

Ví dụ:

	Mang2chieu[5,6]

b) Một số ví dụ:

Ví dụ 1: Tính và in ra bảng nhân.

program bangnhan;
uses crt;
var bnhan: array[1..9,1..9] of integer;
    i,j:integer;
begin
	clrscr;
	for i:=1 to 9 do
		for j:=1 to 9 do
		bnhan[i,j]:=i*j;
	for i:=1 to 9 do
		begin
		for j:=1 to 9 do
		write(bnhan[i,j]:4);
		writeln();
		end;
	readln
end.

Kết quả:

Giải bài tập Tin học 11 | Để học tốt Tin học 11

Ví dụ 2. Chương trình sau nhập vào từ bàn phím các phần tử của mảng hai chiều B gồm 5 hàng, 7 cột với các phần tử là các số nguyên và một số nguyên k. Sau đó, đưa ra màn hình các phần tử có giá trị nhỏ hơn k.

program vidu2;
uses crt;
var arr: array[1..5,1..7] of integer;
    i,j,k:integer;
begin
	clrscr;
	for i:=1 to 5 do
		for j:=1 to 7 do
		begin
		write('a[',i,']','[',j,']=');
		readln(arr[i,j]);
		end;
	write('k=');
	readln(k);
	write('cac phan tu nho hon k la:');
	for i:=1 to 5 do
		for j:=1 to 7 do
		if arr[i,j]
Lưu ý : Ngoài mảng một chiều và hai chiều ta hoàn toàn có thể có những mảng nhiều chiều .

Xem thêm các bài giải bài tập Tin học lớp 11 hay, chi tiết khác:

Giới thiệu kênh Youtube VietJack

Ngân hàng trắc nghiệm lớp 11 tại khoahoc.vietjack.com

Đã có app VietJack trên điện thoại cảm ứng, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi trực tuyến, Bài giảng .... không tính tiền. Tải ngay ứng dụng trên Android và iOS .

Nhóm học tập facebook miễn phí cho teen 2k5: fb.com/groups/hoctap2k5/

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube: Theo dõi chúng tôi không tính tiền trên mạng xã hội facebook và youtube :

Nếu thấy hay, hãy động viên và chia sẻ nhé! Các bình luận không phù hợp với nội quy bình luận trang web sẽ bị cấm bình luận vĩnh viễn.

Source: https://vh2.com.vn
Category: Tin Học