Bài giảng Nhập môn Tin học: Chương 3 do Ngô Quang Thạch biên soạn nhằm mục đích phục vụ cho việc giảng dạy. Nội dung bài giảng gồm: Khái niệm cấu trúc dữ liệu, kiểu mảng (ARRAY), sắp xếp mảng, tìm kiếm trong mảng. Mời các bạn cùng tham khảo bài giảng.
Trang 1NGÔ QUANG THẠCH
NHẬP MÔN TIN HỌC
Chương 3
Trang 3Khái niệm cấu trúc dữ liệu
Real, Char, Boolean,
Trang 5Mon: writeln('Ngày thứ hai');
Tue: writeln('Ngày thứ ba');
Wed: writeln('Ngày thứ tư');
Thu: writeln('Ngày thứ năm');
Fri: writeln('Ngày thứ sáu');
Sat: writeln('Ngày thứ bảy');
Else writeln('Nhập sai');
end;
Readln;
END
Trang 6KIỂU MẢNG
Một MẢNG dữ liệu là một tập hợp số hữu hạn phần tử, giống như các biến có cùng kiểu
MẢNG được tổ chức theo một trật tự xác
định Số phần tử của mảng được khai báo ngay
từ khi định nghĩa ra mảng
Trang 7KHAI BÁO MẢNG
Cú pháp:
TYPE <Tên mảng> = ARRAY [chỉ số] OF <Kiểu dữ liệu>;
VAR <Biến mảng>:<Tên mảng>;
Hoặc khai báo trực tiếp:
VAR <Biến mảng> : ARRAY [chỉ số] OF <Kiểu dữ liệu>;
Trang 8Truy xuất các phần tử của mảng
Mỗi phần tử của mảng được truy xuất thông qua Tên Biến Mảng cùng với chỉ số của mảng trong dấu ngoặc vuông [ ]
VAR A : ARRAY [1 10] OF integer;
Ví dụ tên biến mảng là A, khi viết A[7], ta
hiểu nó là phần tử thứ 7 của mảng A
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
Trang 9 Khai báo mảng
VAR A : ARRAY [1 10] OF integer;
Gán giá trị cho mảng:
A[1]:= 10; {gán giá trị 10 cho phần tử thứ 1}
A[2]:= 15; {gán giá trị 15 cho phần tử thứ 2}
….
A[10]:=100; {gán giá trị 100 cho phần tử thứ 10}
Đọc một giá trị vào phần tử
Readln(A[1]);
Trang 10 Ví dụ: Viết chương trình nhập vào giá trị nguyên cho một mảng 10 phần tử:
VAR a: array [1 10] of Integer;{khai báo mảng}
Trang 11Ví dụ: Viết chương trình xuất ra giá trị của
Trang 12SẮP XẾP MẢNG
Coi phần tử đầu tiên là số nhỏ nhất
Đem phần tử đầu tiên đó so sánh lần
lượt với các số còn lại trong dãy số Nếu
có phần tử thứ i nào đó nhỏ hơn nó thì
đổi chỗ của phần tử ấy cho nó Như vậy
sau khi duyệt xong dãy số, phần tử đầu
tiên là phần tử nhỏ nhất
Lặp lại thuật toán lần lượt với các phần
tử thứ 2, thứ 3 vv
For i := 1 to n - 1 do For j := i +1 to n do
if A[ i ] >A[ j ] then Begin
Tam := A[i]; A[i] := A[j];
A[j] := Tam; End;
Trang 136<8 nên không làm gì J=4, so sánh A[i] với A[j]
6<9 nên không làm gì J=5, so sánh A[i] với A[j]
6>5 => hoán đổi 2 số
Kết quả sau lần 1: 5, 7, 8, 9, 6
Trang 147<9 nên không làm gì J=5, so sánh A[i] với A[j]
7>6 => hoán đổi 2 số
Kết quả sau lần 2: 5, 6, 8, 9, 7
Trang 158>7 => Hoán đổi 2 số
Kết quả sau lần 3: 5, 6, 7, 9,8
Trang 18Ví dụ tìm kiếm:
Var A:Array[1 10] of integer;
X, n,i,ViTri: Integer;
BEGIN
Writeln(‘Nhap N=’); Readln(n); {Nhập giá trị vào mảng}
Writeln(‘Nhap Gia tri can tim:’); Readln(X);
If (ViTri >0) then Write(X, ‘Vi tri thu’, ViTri )
Else Write(X,‘Khong co trong mang’);
Trang 19Bài tập
Viết chương trình nhập vào một mảng, tìm giá trị lớn nhất của một mảng chứa các số nguyên gồm N phần tử
Ý tưởng:
- Cho số lớn nhất là số đầu tiên: Max:=a[1]
- Duyệt qua các phần tử a[i], với i chạy từ 2 tới N: Nếu a[i]>Max thì thay Max:=a[i];
Trang 21Bài tập
Viết chương trình nhập vào một mảng, tính giá trị trung bình của một mảng chứa các số nguyên gồm N phần tử
Ý tưởng:
-Tính tổng các giá trị a[i], với i chạy từ 1 tới N
- Giá trị trung binh = tổng / N
Trang 22Thank You !