Bài giảng Nhập môn tin học - Chương 3 - Ngô Quang Thạch
Bà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];
22 trang |
Chia sẻ: thucuc2301 | Lượt xem: 678 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Nhập môn tin học - Chương 3 - Ngô Quang Thạch, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
11/27/2020ngoquangthach@yahoo.comNGÔ QUANG THẠCHNHẬP MÔN TIN HỌCChương 3NỘI DUNGKhái niệm cấu trúc dữ liệuKiểu mảng (ARRAY)Khái niệmKhai báo mảngTruy nhập vào mảngThao tác trên mảngSắp xếp mảngTìm kiếm trong mảng11/27/2020Khái niệm cấu trúc dữ liệuCác kiểu dữ liệu CƠ BẢN: Integer, Real, Char, Boolean,..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 giá trị này được đặt trong ngoặc đơn ( )11/27/2020CÁCH KHAI BÁOCách khai báo TYPE = () ; Ví dụ:TYPE Days = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; Colors =(Red, Yellow, Green, White, Blue, Black) ; 11/27/2020VÍ 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'); Mon: 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. 11/27/2020KIỂU MẢNGMộ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. 11/27/2020KHAI BÁO MẢNGCú 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; VAR A: Mangnguyen;hoặc: VAR A: Array[1..100] of Integer;11/27/2020Truy xuất các phần tử của mảngMỗ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 A11/27/2020A[1]A[2]A[3]A[4]A[5]A[6]A[7]A[8]A[9]A[10]Khai báo mảngVAR 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]);11/27/2020Ví 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 ); Readln(a[i]); end;END.11/27/2020Ví 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.11/27/2020SẮP XẾP MẢNGThuật toán chọn trực tiếpCoi 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ấtLặp lại thuật toán lần lượt với các phần tử thứ 2, thứ 3 vv...11/27/2020For i := 1 to n - 1 doFor j := i +1 to n doif A[ i ] >A[ j ] then BeginTam := A[i];A[i] := A[j];A[j] := Tam; End;Sắp xếp Mảng ALần 1: i:=111/27/2020768956789557896J=2, so sánh A[i] với A[j] 7>6 => hoán đổi 2 số J=3, so sánh A[i] với A[j] 65 => hoán đổi 2 sốKết quả sau lần 1: 5, 7, 8, 9, 6 Sắp xếp Mảng ALần 2: i:=211/27/20205789656897J=3, so sánh A[i] với A[j] 76 => hoán đổi 2 sốKết quả sau lần 2: 5, 6, 8, 9, 7 Sắp xếp Mảng ALần 3: i:=311/27/20205689756798J=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,8Sắp xếp Mảng ALần 3: i:=4 (cuối)11/27/20205679856789J=5, so sánh A[i] với A[j] 9>8 => Hoán đổi 2 sốKết quả sau lần 4: 5, 6, 7, 8, 9Tì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ìmDừng lặp (gọi lện Break)11/27/2020Ví 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’);END.11/27/2020Bà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]; 11/27/2020Uses 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; {Tìm phần tử lớn nhất} Max:=A[1]; For i:=2 To N Do If Max<A[i] Then Max:=A[i]; {In kết quả ra màn hình} Writeln(‘Phan tu lon nhat cua mang: ’, Max); Readln; End. 11/27/2020Bà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 11/27/202011/27/2020Thank You !
Các file đính kèm theo tài liệu này:
- nmth_baigiang_c3_5601_2054394.pptx