Danh mục

Lý thuyết mảng

Số trang: 18      Loại file: doc      Dung lượng: 144.00 KB      Lượt xem: 3      Lượt tải: 0    
Thư Viện Số

Hỗ trợ phí lưu trữ khi tải xuống: 7,000 VND Tải xuống file đầy đủ (18 trang) 0

Báo xấu

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Mảng là một tập gồm nhiều phần tử có cùng chung một kiểu dữ liệu. Mỗi phần tử của mảng có một đại lượng xác định vị trí tương đối dữ liệu. Mỗi phần tử của mảng gồm một đại lượng xác định vị trí tương đối của phần tử ...
Nội dung trích xuất từ tài liệu:
Lý thuyết mảng 10.1. MẢNG MỘT CHIỀU 10.1.1. Mảng và cách khai báo mảng : Khái niệm : Mảng là một tập gồm nhiều phần tử có cùng chung một kiểu dữ liệu. Mỗiphần tử của mảng có một đại lượng xác định vị trí tương đối của phần tử đóso với các phần tử khác trong mảng, gọi là chỉ so? Các yếu tố để xác định mộtmảng gồm có: Tên mảng Kiểu dữ liệu chung của các phần tử trong mảng Kiểu dữ liệu của chỉ số và phạm vi của chỉ số. Kiểu dữ liệu của các phần tử mảng là mọi kiểu dữ liệu mà một biến cóthể có. Tuy nhiên, kiểu dữ liệu của chỉ số thì không được là kiểu thực haykiểu chuỗi, nó chỉ có thể là kiểu đếm được : nguyên, ký tự, lôgic, liệt kê hayđoạn con. Khai báo mảng một chiều : Mảng một chiều, còn gọi là dãy, hay đơn giản là mảng, có thể khai báo theomột trong hai cách : Cách 1: Khai báo trực tiếp theo cách sau : VAR Tênmảng : Array[m1 . . m2] of Tênkiểudữliệu ; Ở đây m1, m2 là hai hằ?g xác định phạm vi của chỉ số, chúng có chung mộtkiểu dữ liệu,?và m1? m2. Ví dụ: Cho khai báo dưới đây: Var A : Array[0..10] of Real; Hten: Array[1..5] of String[18]; B: Array[‘a’..’d’] of Integer; Theo khai báo trên, ta có ba mảng: Mảng thứ nhất tên là A, gồm 11 phần tử cùng kiểu Real, ứng vớicác chỉ số 0, 1, 2, ..., 10, đó là: A[0], A[1], A[2], ..., A[10] Mảng thứ hai tên là HTen gồm 5 phần tử cùng kiểu dữ liệu làString[18] ứng với các chỉ số từ 1 đến 5:Hten[1], Hten[2], Hten[3], Hten[4], Hten[5] Mảng thứ ba tên là B, gồm 4 phần tử cùng kiểu Integer ứng với các chỉsố ‘a’, ‘b’, ‘c’, ‘d’: B[‘a’], B[‘b’], B[‘c’], B[‘d’] Ðể có một hình ảnh về mảng, đối với mảng A, ta hình dung có một dãy nhàmột tầng, tên gọi là dãy A, gồm 11 phòng liên tiếp giống hệt nhau được đánhsố thứ tự từ 0,1, 2, ..., đến 10 : A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 Tương tự, mảng B cũng giống như dãy nhà B một tầng có 4 phòng đượcđánh số thứ tự là các chữ a, b, c, d : Ba Bb Bc Bd Cách 2 : Khai báo qua một kiểu dữ liệu mới, gồm hai bước: Bước 1: Ðịnh nghĩa kiểu dữ liệu mảng : TYPE Tênkiểumảng = Array[m1 . . m2] of Tênkiểudữliệu; Bước 2: Khai báo biến có kiểu dữ liệu là kiểu mảng: VAR Tênmảng : Tênkiểumảng ; Ví dụ, đối với các mảng A, B và Hten ở trên ta có thể khai báo theo cách 2,như sau: Type Mang1 = array[0..10] of Real; Mang2 = array[1..5] of String[18]; Mang3 = array[‘a’..’d’] of Integer; Var A : Mang1; Hten: Mang2; B: Mang3; Khai báo mảng có gán trị ban đầu: Pascal cho phép vừa khai báo mảng vừa gán gía trị ban đầu cho các phần tửmảng, chẳng hạn như dưới đây: Const X : array[1..5] of Integer = (12, 14, 16, 18, 20) ; Khi đó X là một mảng gồm 5 phần tử cùng kiểu nguyên và có giá trịX[1]=12, X[2]=14, X[3]=16, X?4]=18, X[5]=20. Mặc dù từ khóa ở đây là Const song X lại được dùng như là một biếnmảng, tức là các phần tử của X có thể thay đổi gía trị được. Ví dụ, trongchương trình ta có thể gán: X[1]:= 2; X[2]:=5+20; 10.1.2. Truy xuất các phần tử mảng: Các xử lý trên mảng được quy về xử lý từng phần tử mảng. Ðể xác địnhmột phần tử của mảng, ta dùng cách viết : Tênmảng[ chỉ số của phầ? tử ] Ví du : có thể gán : A[0]:= 15.8; A[1]:= 2*A[0]; Hten[3]:= ‘Nguyen Thi Loan’; B[‘a’]:=100; Chỉ số của một phần tử có thể là một biến, một hằng, hay một biểu thức.Ví dụ, cho i là biến kiểu nguyên, khi đó ta có thể dùng các lệnh: i:=6; A[i]:=100.25; Hai lệnh trên tương đương với một lệnh: A[6]:=100.25; Nếu biến i có giá trị là 6 thì lệnh : A[ i div 2 +1] := 4.5; tương đương với lệnh: A[4]:=4.5; vì biểu thức i div 2 +1 có gía trị là 4. Khi nhập dữ liệu cho các phần tử của một mảng , ta có thể dùng câu lệnhFor, While hay Repeat. Ví dụ, nhập dữ liệu cho các phần tử của mảng A: For i:=0 to 10 do begin Write(‘Nhập phần tử thứ ‘ , i , ‘: ‘); Readln(A[i]); end; hoặc (dùng While) : i:=0; While i For ch:=‘a’ to ‘d’ do Write(B[ch]); Chú ý : Turbo Pascal cho phép gán một mảng này cho một mảng khác. Nếu X, Y là hai biến mảng cùng một kiểu mảng thì lệnh: X := Y;có nghĩa là lấy gía trị của từng phần tử của mảng Y gán cho phần tử tươngứng trong mảng X. Ví dụ, cho khai báo: Var X, Y : Array[1..10] of Real; Khi đó, lệnh: X := Y; tương đương với lệnh : For i:=1 to 10 do X[i] :=Y[i]; 10.1.3. Các bài toán cơ bản về mảng : Ví dụ 10.1: Ðếm số lần xuất hiện của gía trị x trong dãy A1, A2, ..., An . Ví dụ gía trị x=6 xuất hiện 3 lần trong dãy 6 7 1 2 6 0 6 1. Ta dùng biến Dem kiểu nguyên để đếm số lần xuất hiện của x. Ðầu tiên tagán Dem:=0, sau đó duyệt từng phần tử A1, A2, ..., An, mỗi khi có một phầntử bằng x thì tăng biến Dem lên một đơn vị. Kết qủa là biến Dem có gía trịđúng bằng số phần tử bằng x. Hai lệnh chính của thuật toán là: Dem:=0; For i:=1 to N do If A[i]=x then Dem:=Dem+1; Ví dụ, đếm trong dãy số A có bao nhiêu số 0, ta viết: Dem:=0; For i:=1 to N do if A[i]=0 then Dem:=Dem+1; Writeln(‘ Có ‘, Dem , ‘ số không ‘); Nhận xét: Ðẳng thức A[i]=x ( hay A[i]=0 ) là điều kiện để biến Dem đượctăng thêm 1, vậy bài toán trên có thể mở rộng là: hãy đếm số phần tử củamảng A thỏa mãn một điều kiện cho trước. Trong lệnh For ở trên, khi thayđẳng thức A[i]=x bằng A[i] thỏa điều kiện , ta được thuật toán tổng quáthơn : Dem:=0; For i:=1 to N do If A[i] thỏa điều kiện then Dem:=Dem+1; Chương trình sau nhập một mảng A có N phần tử, in mảng A lên màn hình,và đếm xem mảng A có bao nhiêu số dương : PROGRAM VIDU101; { Ðếm số dương trong mảng} Type Kmang = Array[1..20] of Real; Var A: Kmang; i, N, Dem : Integer; Begin ...

Tài liệu được xem nhiều: