Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
166,32 KB
Nội dung
BÀI TẬP VÀ THỰC HÀNH MẢNG I. Mục đích yêu cầu: * Học sinh hiểu được: - Kiểu dữ liệu mảng và cách khai báo mảng: một chiều và hai chiều. * Học sinh nắm được: - Cách khai báo (hay định nghĩa) kiểu dữ liệu mảng một chiều và hai chiều. - Nhập dữ liệu mảng. Đưa ra màn hình chỉ số và giá trị của mảng. - Duyệt qua từng phần tử của mảng. II. Chuẩn bị của giáo viên và học sinh: 1. Giáo viên: SGK, SGV, giáo án, giáo án điện tử, đèn chiếu, phòng máy, một số chương trình mẫu khổ lớn. 2. Học sinh: Xem kỹ bài thực hành trong SGK. Tìm hiểu kỹ từng dòng lệnh. III. Nội dung: Hoạt động của thầy và trò Nội dung bài giảng GV: Các em hãy đọc đề và gõ Bài thực hành 3 chương trình trong SGK trang 77-78 vào máy. GV: Myarray là tên kiểu dữ liệu hay tên biến. HS: Trả lời GV: Vai trò của nmax và n? Có thể thay nmax bằng n trong khai báo kiểu mảng được không? Vì sao? HS: GV: Nhập số phần tử của mảng? 1) Bài 1 Cho mảng A gồm n số nguyên (n ≤ 100), mỗi số theo trị tuyệt đối không vượt quá 300. Tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước. a) Gõ nội dung chương trình: Program sum1; Uses crt; Const nmax = 100; Type MyArray = Array[1 nmax] Of Integer; Var A : MyArray; s,n,i,k: integer; Begin Clrscr; Randomize; HS: Nhập n GV: Những dòng lệnh nào nhằm tạo ra mảng A? GV:Lệnh A[i]:= Random(301)- Random(301); dùng để làm gì? GV: Câu lệnh FOR-DO cuối cùng thực hiện nhiệm vụ gì? Giải thích? GV: Câu lệnh s:=s+A[i]; được thực hiện bao nhiêu lần? Write('Nhap n = '); Readln(n); {Tạo ngẫu nhiên mảng gồm n số nguyên} For i:=1 To n Do A[i]:= Random(301)-Random(301); {Duyệt qua từng phần tử của mảng: xuất chỉ số và giá trị} For i:=1 To n Do Writeln(' A[',i,'] = ',A[i]:5); Write('NHap k :'); Readlk(k); s:=0; For i:=1 to n Do If A[i] Mod k = 0 Then s:=s+A[i]; Nên cho học sinh lưu lại chương trình này. Sau đó dùng Save as để lưa lại với tên khác để dùng cho câu b. Writeln('Tong can tinh la : ',s); Readln End. b) Hãy thay các câu lệnh sau vào vị trí cần thiết để sửa đổi chương trình trên nhằm để tính và đưa ra số lượng số dương và số âm trong mảng. posi,neg: integer; posi:=0; neg:=0; If A[i] > 0 Then Posi:=posi+1 Else If A[i] < 0 Then Neg:=neg+1; Writeln(posi:4, neg:4); Chương trình trên được viết lại như sau: Program sum1; Uses crt; Const nmax = 100; Type MyArray = Array[1 nmax] Of Integer; Var A : MyArray; s,n,i,k,posi,neg: integer; Begin Clrscr; Randomize; Write('Nhap n = '); Readln(n); {Tạo ngẫu nhiên mảng gồm n số nguyên} For i:=1 To n Do A[i]:= Random(301)-Random(301); {Duyệt qua từng phần tử của mảng: xuất chỉ số và giá trị} For i:=1 To n Do Writeln(' A[',i,'] = ',A[i]:5); Write('NHap k :'); Readlk(k); {s:=0;} posi:=0; neg:=0; For i:=1 to n Do If A[i] > 0 Then Posi:=posi+1 Else If A[i] < 0 Then Neg:=neg+1; Writeln(posi:4, neg:4); {If A[i] Mod k = 0 Then s:=s+A[i]; Writeln('Tong can tinh la : ',s);} Readln HS: Dùng một mảng hai chiều để lưu Bảng cộng End. Bài 2 Chương trình tính và đưa ra màn hình bảng cộng 1 2 3 4 5 6 7 8 9 2 4 5 6 7 8 9 10 11 3 5 6 7 8 9 10 11 12 4 6 7 8 9 10 11 12 13 5 7 8 9 10 11 12 13 14 6 8 9 10 11 12 13 14 15 7 9 10 11 12 13 14 15 16 8 10 11 12 13 14 15 16 17 9 11 12 13 14 15 16 17 18 Bảng Cộng Program Bangcong; Uses Crt; GV: Khai báo? HS: Khai báo. GV: Gọi i là chỉ số dòng, j là chỉ số cột thì miền giá trị của i, j như thế nào? HS: Trả lời. GV: Nhận xét gì về phần tử B[i,j] của bảng cộng? HS: B[i,j]=i+j GV: Yêu cầu học sinh viết đọan chương trình tính B[i,j]. GV: Viết kết quả ra màn hình? HS: lên bảng thực hiện VAR B: Array[1 9,1 9] OF Integer; i, j : Integer; Begin Clrscr; For i:=1 to 9 Do {Tính giá trị cho từng phần tử} For j:=1 to 9 Do B[i,j]:= i+j; {Xuất ra màn hình} For i:=1 to 9 Do Begin For j:=1 to 9 Do Write(B[i,j]:3); Writeln; End; Readln GV: Chương trình trên chỉ đưa ra max với chỉ số lớn nhất. Do đó muốn đưa ra max với chỉ số nhỏ nhất nên gợi cho hs: - Vai trò của biến j: thông qua kết quả. Lệnh gán khởi trị biến j sau khi duyệt qua từng phần tử, câu lệnh IF - THEN dùng để kiểm tra phần tử thứ i có lớn nhất không, End. Bài 2:Viết chương trình tìm phần tử lớn nhất của mảng và đưa ra màn hình chỉ số và giá trị của phần tử tìm được. Nếu có nhiều phần tử cùng giá trị lớn nhất thì đưa ra phần tử có chỉ số nhỏ nhất. Program MaxElement; Uses crt; Const nmax = 100; Type MyArray = Array[1 nmax] Of Integer; Var A : MyArray; n,i,j: integer; Begin Clrscr; Randomize; Write('Nhap n = '); nếu có lưu giữ vào biến j. - Nếu dùng bộ dữ liệu lớn thì làm như chương trình của SGK. Trong trường hợp nếu muốn nhập thì hướng dẫn hs viết đoạn chương trình sau: FOR i:=1 to n Do Begin Write('A[',i'] ='); Readln(A[i]); End; GV: Mô phỏng với 10 phần tử. GV:Vòng lặp FOR khi duyệt qua từng phần tử để tìm số lớn nhất ở trên có thể đảo để chạy ngược lại được không (Downto) GV: Hãy thử cho vòng FOR trên Readln(n); {Tạo ngẫu nhiên mảng gồm n số nguyên} For i:=1 To n Do A[i]:= Random(300)-Random(300); {Duyệt qua từng phần tử của mảng: xuất chỉ số và giá trị} For i:=1 To n Do Writeln(' A[',i,'] = ',A[i]:5); j:=1; For i:=1 to n Do If A[i] > A[j] Then j:=i; Writeln('Chỉ số : ',j, ' Gia tri : ',A[j]:5; Readln End. [...]... ',A[i]:5) chương trình sau: GV: Chương trình trên có cần lưu giữ đoạn chương trình tìm phần tử lớn nhất? GV: Để đưa ra chỉ số và phần tử đạt giá trị lớn nhất có cần duyệt qua tất cả các phần tử của mảng không? IV Củng cố, dặn dò: Nhắc lại các lỗi học sinh thường gặp Chuẩn bị bài thực hành tiết sau ...chạy từ n đến 1, lúc đó j:=n và xem kết quả GV:Dựa vào chương trình trên để tìm phần tử bé nhất For i:=1 to n Do If A[i] > A[j] Then j:=i; Viết lại If A[i] < A[j] Then j:=i; b) Chương trình được viết lại để b FOR i:=1 to n Do IF A[i]=A[j] đưa ra các chỉ số các phần tử có Then cùng giá trị lớn nhất Writeln('Chỉ số : ',i, ' Gia tri : Gợi để học sinh viết được đoạn ',A[i]:5) chương trình . BÀI TẬP VÀ THỰC HÀNH MẢNG I. Mục đích yêu cầu: * Học sinh hiểu được: - Kiểu dữ liệu mảng và cách khai báo mảng: một chiều và hai chiều. * Học sinh nắm được: - Cách. dữ liệu mảng một chiều và hai chiều. - Nhập dữ liệu mảng. Đưa ra màn hình chỉ số và giá trị của mảng. - Duyệt qua từng phần tử của mảng. II. Chuẩn bị của giáo viên và học sinh: 1. Giáo viên:. viên và học sinh: 1. Giáo viên: SGK, SGV, giáo án, giáo án điện tử, đèn chiếu, phòng máy, một số chương trình mẫu khổ lớn. 2. Học sinh: Xem kỹ bài thực hành trong SGK. Tìm hiểu kỹ từng dòng lệnh.