intTypePromotion=1
ADSENSE

Bài giảng Nhập môn Tin học: Chương 3 - Ngô Quang Thạch

Chia sẻ: Phong Phong | Ngày: | Loại File: PPTX | Số trang:22

23
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Nhập môn Tin học: Chương 3 - Ngô Quang Thạch

  1. Chương 3 NHẬP MÔN TIN HỌC NGÔ QUANG THẠCH ngoquangthach@yahoo. com 1 7/5/18
  2. NỘI DUNG v Khái niệm cấu trúc dữ liệu v Kiểu mảng (ARRAY) § Khái niệm § Khai báo mảng § Truy nhập vào mảng § Thao tác trên mảng v Sắp xếp mảng v Tìm kiếm trong mảng 7/5/18 2
  3. Khái niệm cấu trúc dữ liệu v Các kiểu dữ liệu CƠ BẢN: Integer, Real, Char, Boolean,.. v Ngoài các kiểu đơn, Pascal cho phép người lập trình có thể tự đặt ra các kiểu vô hướng mới bằng cách tự liệt kê các giá trị của kiểu vô hướng mới và phải khai báo định nghĩa kiểu. Danh sách các 7/5/18 giá trị này được đặt trong ngoặc 3
  4. CÁCH KHAI BÁO v Cách khai báo TYPE = () ; v Ví dụ: TYPE Days = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; Colors =(Red, Yellow, Green, White, Blue, Black) ; 7/5/18 4
  5. VÍ DỤ: TYPE Days = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; VAR i : Integer ; BEGIN Write('Nhập số từ 0 . .6 tương ứng cho ngày:'); Readln(i) ; Case Days(i) of Sun: writeln('Ngày Chủ nhật'); 7/5/18 Mon: 5 writeln('Ngày thứ hai');
  6. KIỂU MẢNG v 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. v 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. 7/5/18 6
  7. KHAI BÁO MẢNG Cú pháp: TYPE = ARRAY [chỉ số] OF ; VAR :; Hoặc khai báo trực tiếp: VAR : ARRAY [chỉ số] OF ; Ví dụ: TYPE Mangnguyen = Array[1..100] of Integer; 7/5/18 7
  8. Truy xuất các phần tử của v Mỗi phần tửmảng 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 [ ]. v VAR A : ARRAY [1..10] OF integer; A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] v 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 7/5/18 8
  9. v Khai báo mảng VAR A : ARRAY [1..10] OF integer; v 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} v Đọc một giá trị vào phần tử 7/5/18 § 9
  10. v 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} i: Integer; {biến lặp} BEGIN FOR i:=1 to 10 do begin Writeln(‘Phần tử thứ ’,i ); 7/5/18 Readln(a[i]); 10
  11. v Ví dụ: Viết chương trình xuất ra giá trị của một mảng 10 phần tử: VAR a: array [1..10] of Integer;{khai báo mảng} i: Integer; {biến lặp} BEGIN FOR i:=1 to 10 do Writeln(‘Phần tử thứ a[’, i,’]=’, a[i] ); END. 7/5/18 11
  12. SẮP XẾP MẢNG v Thuật toán chọn trực tiếp § Coi phần tử đầu tiên là số nhỏ For i := 1 to n - 1 do nhất For j := i +1 to n do if A[ i ] >A[ j ] then Begin § Đem phần tử đầu tiên đó so sánh lần lượt với các số còn lại Tam := A[i]; trong dãy số. Nếu có phần tử A[i] := A[j]; thứ i nào đó nhỏ hơn nó thì đổi A[j] := Tam; chỗ của phần tử ấy cho nó. Như vậy sau khi duyệt xong End; dãy số, phần tử đầu tiên là 7/5/18 phần tử nhỏ nhất 12
  13. v Sắp xếp Mảng A 7 6 8 9 5 v Lần 1: i:=1 J=2, so sánh A[i] với A[j] 6 7 8 9 5 7>6 => hoán đổi 2 số J=3, so sánh A[i] với A[j] 6 hoán đổi 2 số 5 7 8 9 6 Kết quả sau lần 1: 5, 7, 8, 9, 6 7/5/18 13
  14. v Sắp xếp Mảng A 5 7 8 9 6 v Lần 2: i:=2 J=3, so sánh A[i] với A[j] 7 hoán đổi 2 số Kết quả sau lần 2: 5, 6, 8, 9, 7 7/5/18 14
  15. v Sắp xếp Mảng A 5 6 8 9 7 v Lần 3: i:=3 J=4, so sánh A[i] với A[j] 87 => Hoán đổi 2 số Kết quả sau lần 3: 5, 6, 7, 9,8 7/5/18 15
  16. v Sắp xếp Mảng A 5 6 7 9 8 v Lần 3: i:=4 (cuối) J=5, so sánh A[i] với A[j] 9>8 => Hoán đổi 2 số 5 6 7 8 9 Kết quả sau lần 4: 5, 6, 7, 8, 9 7/5/18 16
  17. Tìm kiếm trên mảng Ý tưởng: - Duyệt qua các phần tử a[i], với i chạy từ 1 tới N: Nếu a[i]=Số cần tìm - Gán vị trí thứ i là vị trí cần tìm - Dừng lặp (gọi lện Break) 7/5/18 17
  18. Ví 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); For i:=1 To n Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; ViTri := 0; For i := 1 To n Do If (A[i] = X) then Begin ViTri := i; Break; End; If (ViTri >0) then Write(X, ‘Vi tri thu’, ViTri ) Else Write(X,‘Khong co trong mang’);18 7/5/18
  19. Bài tập v 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ử. v Ý 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]; 7/5/18 19
  20. Uses Crt; Var A: ARRAY[1..50] Of Integer; N,i,Max:Integer; Begin {Nhập giá trị vào mảng} Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; 7/5/18 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2