Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
207,85 KB
Nội dung
Giáo án tin học 9 BÀI KIỂU DỮ LIỆU CÓ CẤU TRÚC: ARRAY (kiểu mảng) KIẾN THỨC YÊU CẦU: Biết xác định vấn đề nào có sử dụng đến cấu trúc mảng. Biết cách khai báo và sử dụng. KIẾN THỨC ĐẠT ĐƯỢC Biết các khái niệm về dữ liệu cấu trúc mảng. Biết cách khai báo mảng một chiều và hai chiều. Biết nhập và xuất dữ liệu trong mảng. Biết cách tìm kiếm một phần tử bất kỳ trong mảng. Biết cách sắp xếp các phần tử trong mảng theo phương pháp chọn và phương pháp Bubble sort. I/ Dữ liệu có cấu trúc mảng 1. Khái niệm về dữ liệu cấu trúc mảng Một dữ liệu kiểu mảng là một mảng gồm nhiều phần tử cùng kiểu. Các phần tử (element) của một mảng phải cùng kiểu, các phần tử trong mảng có chỉ số, kiểu của chỉ số phải có kiểu rời rạc. 2. Cách khai báo dữ liệu cấu trúc mảng a. Mảng một chiều Bạn có thể khai báo theo những cách như sau: Var Mang : Array [ 1 100 ] of integer; Với khai báo như trên, chúng ta có thể thay đổi lại là: Const N = 100; Var Mang : Array [ 1 N ] of integer; Hoặc Type Khaibao = Array [ 1 100 ] of integer; Var Mang : Khaibao; Mang là một mảng gồm 100 số nguyên. Kiểu của chỉ số là kiểu miền con của integer. integer là kiểu cơ sở của mảng. Mang[1], Mang[2], …, Mang[100] là các phần tử của mảng Mang. b. Mảng hai chiều Bạn có thể khai báo mảng hai chiều như sau: Type Khaibao = Array [ 1 20 ] of Array [ 1 50 ] of Real; Var Mang : Khaibao; Mảng hai chiều còn có thể việt dưới dạng Type Khaibao = Array [ 1 20, 1 50 ] of Real; Var Mang : Khaibao; Hoặc Var Mang : Array [1 20, 1 50 ] of Real; Mang: Là một mảng hai chiều. Mang có 20 phần tử Mang[1], Mang[2], , Mang[20] mà mỗi phần tử Mang[i] là một dãy có 50 phần tử Real. Mang[1] là mảng có các phần tử Mang[1][1], …, Mang[1][50]. ……… Mang[20] là mảng có các phần tử Mang[20][1], …, Mang[20][50]. II/ Sử dụng dữ liệu cấu trúc mảng 1. Nhập dữ liệu cho cấu trúc mảng. Vì chỉ số của mảng được xác định nên người ta dùng vòng lặp For để nhập dữ liệu cho cấu trúc mảng. Ví dụ 1: Program Mang_mot_chieu; Var i : integer; So : Array[1 5] of integer; Begin (* Nhập các phần tử vào mảng So*) For i:= 1 to 5 do Begin Write(‘Ban nhap phan tu So[‘, i, ‘] = ‘); Readln(So[i]); End; Readln; End. Ví dụ 2: Program Mang_hai_chieu; Var i, j : integer; So : Array[1 5, 1 5] of integer; Begin (* Nhập các phần tử vào mảng So*) For i:= 1 to 5 do For j := 1 to 5 do Begin Write(‘Ban nhap phan tu So[‘, i, ‘,’, j, ‘] = ‘); Readln(So[i,j]); End; Readln; End. Ghi chú: Nếu là mảng hai chiều, chúng ta dùng hai vòng lặp For lồng nhau để nhập, nó sẽ thực hiện nhập tuần tự như sau: So[1,1], So[1,2], …, So[1,5], So[2,1], So[2,2],…, So[5,1], So[5,2], …, So[5,5]. 2. Xuất dữ liệu cấu trúc mảng Muốn xuất dữ liệu trong mảng, ta cũng dùng vòng lặp For cho mảng một chiều. For i:= 1 to 5 do Writeln(So[i], ‘ ‘); Dùng hai vòng lặp For lồng nhau cho mảng hai chiều. For i:=1 to 5 do For j:= 1 to 5 do Write(So[i,j], ‘ ‘); Bạn xem chương trình nhập và xuất mảng một chiều và hai chiều như sau: Ví dụ 1: Program Mang_mot_chieu; Var i : integer; So : Array[1 5] of integer; Begin (* Nhập các phần tử vào mảng So*) For i:= 1 to 5 do Begin Write(‘Ban nhap phan tu So[‘, i, ‘] = ‘); Readln(So[i]); End; (* Xuất dữ liệu ra màn hình) For i:= 1 to 5 do Writeln(So[i]); Readln; End. Ví dụ 2: Program Mang_hai_chieu; Var i, j : integer; So : Array[1 5, 1 5] of integer; Begin (* Nhập các phần tử vào mảng So*) For i:= 1 to 5 do For j := 1 to 5 do Begin Write(‘Ban nhap phan tu So[‘, i, ‘,’, j, ‘] = ‘); Readln(So[i,j]); End; (* Xuất các phần tử của mảng So ra màn hình*) For i:= 1 to 5 do For j := 1 to 5 do Writeln(So[i,j]); [...]... nhập dữ liệu String theo cấu trúc mảng một chiều Bạn khai báo một mảng một chiều với một số phần tử từ 1 n, mảng này có kiểu String Bạn cũng dùng vòng lặp For để nhập và xuất dữ liệu ra màn hình Ví dụ sau cho biết việc nhập dữ liệu kiểu String vào mảng một chiều và cách xuất các dữ liệu kiểu String ra màn hình Ví dụ: Program String; Var Chuoi :Array[ 1 10] of String; i: integer; Begin (*Nhập dữ liệu. .. toán Bubble sort*) For i:= N downto 1 do For j:=2 to i do if Mang[j-1] < Mang[j] then Begin tam:= Mang[j-1]; Mang[j-1]:=Mang[j]; Mang[j]:=tam; End; (*Xuất ra các phần tử của mảng sau khi đã sắp xếp) For i:= 1 to N do Write(Mang[i], ‘ Readln; End TÓM LƯỢC ‘); Mảng chứa nhiều phần tử có cùng kiểu với nhau, các phần tử có chỉ số và có kiểu rời rạc Khai báo biến một chiều Var Mang : Array[ 1 n] of kiểu; ... in phần tử có rồi) Ví dụ: nhập dãy 1 5 3 4 4 5 in ra 1 5 3 4 8 Tương tự như trên nhưng là số thực 9 Cho mảng A[1 9] với các phần tử là số nguyên a Tính tổng các số lẻ có trong mảng b Tính tổng các số chẵn có trong mảng c Tính tổng các số có trong mảng d Tính tổng các số dương có trong mảng 10 Nhập vào một mảng có 10 số nguyên, tìm một số bất kỳ nhập vào từ bàn phím, nếu tìm thấy sẽ báo có, ngược lại... không cần đến một hoán vị nào khác ở một bước nào đó thì tập tin được sắp xong Bạn xem thuật toán sau: Var i,j,tam : integer; Begin For i:= N Downto 1 do For j:=2 to i do if a[j-1] > a[j] then Begin Tam:= a[j-1]; A[j-1]:= a[j]; A[j]:= tam; End; End Bạn xem chương trình hoàn chỉnh như sau: Program SapxepBubblesort; Const N=10; Var Mang : Array[ 1 N] of integer; i,j,tam : integer; Begin (*Nhập các phần... Readln(Chuoi[i]); End; (*Xuất dữ liệu String của mảng ra màn hình*) For i:=1 to 10 do Writeln(Chuoi[i]); Readln; End Chạy thử chương trình, giả sử bạn nhập cho 10 phần tử là: Chuoi[1] = Chaomung Chuoi[2] = SEAGAMES22 Chuoi[3] = Duoc Chuoi[4] = Tochuc Chuoi[5] = Tai Chuoi[6] = VietNam Chuoi[7] = Thantinh Chuoi[8] = Doanket Chuoi [9] = Huunghi Chuoi[10]= ViHanhphucnhanloai Bạn sẽ có kết quả Chaomung SEAGAMES22... tam để chứa thông tin tạm Nhập N phần tử của mảng, dùng thuật toán sắp xếp chọn để sắp xếp lại các phần tử trong mảng từ nhỏ đến lớn Xuất ra màn hình các giá trị đã sắp xếp Chạy thử chương trình, nhập vào 10 số nguyên, bạn sẽ thấy kết quả 2 Dùng phương pháp đổi chỗ (Bubble sort) Đây là phương pháp cơ bản thường dùng, hoán vị các phần tử kề nhau, nếu cần, khi không cần đến một hoán vị nào khác ở... Tochuc Tai VietNam Thantinh Doanket Huunghi ViHanhphucnhanloai III/ Tìm kiếm phần tử trong mảng 1 Tìm kiếmtuần tự (Sequential search) Phương pháp đơn giản nhất để tìm kiếm là lưu trữ các thông tin trong một mảng, kế đó là duyệt qua toàn bộ mảng một cách tuần tự để tìm Bạn xem ví dụ sau: Program Timkiemtuantu; Var Mang : Array[ 1 10] of integer; i, x, Dem : integer; Begin (*Nhập thông tin cho mảng*) For... Readln(Mang[i]); End; (*Tìm kiếm tuần tự thông tin trong mảng*) Write(‘Ban nhap phan tu can tim: ’); Readln(x); Dem:=0; For i:= 1 to 10 do if Mang(i) = x then Begin Writeln(‘Phan tu can tim: ‘, x, ‘ o vi tri thu ‘,i ,’ cua mang’); Dem:= Dem+1; End; if Dem=0 then Writeln(‘Khong tim thay phan tu nay !!! ’); Readln; End Trong chương trình trên, khai báo mảng có 10 phần tử có kiểu nguyên biến i dùng cho vòng lặp... kiểu rời rạc Khai báo biến một chiều Var Mang : Array[ 1 n] of kiểu; Khai báo biến hai chiều Var Mang : Array[ 1 n 1 m] of kiểu; Dùng một vòng lặp For để nhập các phần tử của mảng một chiều, dùng hai vòng lặp For lồng nhau để nhập các phần tử cho mảng hai chiều Tương tự như vậy khi cần xuất dữ liệu của mảng ra màn hình Để tìm kiếm một phần tử trong mảng, ta cũng dùng vòng lặp để duyệt tìm tuần tự... ‘); Readln(Mang[i]); End; (*Dùng thuật toán chọn*) For i:= 1 to N-1 do Begin min := i; For j:= i+1 to N do if Mang[j] < Mang[min] then min:=j; tam:= Mang[min]; Mang[min]:=Mang[i]; Mang[i]:=tam; End; (*Xuất ra các phần tử của mảng sau khi đã sắp xếp) For i:= 1 to N do Write(Mang[i], ‘ ‘); Readln; End Đầu tiên khai báo hằng số N=10, khai báo mảng có N phần tử kiểu nguyên Biến i và j dùng cho vòng lặp . Giáo án tin học 9 BÀI KIỂU DỮ LIỆU CÓ CẤU TRÚC: ARRAY (kiểu mảng) KIẾN THỨC YÊU CẦU: Biết xác định vấn đề nào có sử dụng đến cấu trúc mảng. Biết cách. sort. I/ Dữ liệu có cấu trúc mảng 1. Khái niệm về dữ liệu cấu trúc mảng Một dữ liệu kiểu mảng là một mảng gồm nhiều phần tử cùng kiểu. Các phần tử (element) của một mảng phải cùng kiểu, các. trong mảng có chỉ số, kiểu của chỉ số phải có kiểu rời rạc. 2. Cách khai báo dữ liệu cấu trúc mảng a. Mảng một chiều Bạn có thể khai báo theo những cách như sau: Var Mang : Array [ 1