Giáo án Tin Học lớp 11: BÀI TẬP VÀ THỰC HÀNH MẢNG

Chia sẻ: Abcdef_34 Abcdef_34 | Ngày: | Loại File: PDF | Số trang:13

1
686
lượt xem
71
download

Giáo án Tin Học lớp 11: BÀI TẬP VÀ THỰC HÀNH MẢNG

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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...

Chủ đề:
Lưu

Nội dung Text: Giáo án Tin Học lớp 11: BÀI TẬP VÀ THỰC HÀNH MẢNG

  1. 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
  2. chương trình trong SGK trang 77-78 vào máy. 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 GV: Myarray là tên kiểu dữ liệu vượt quá 300. Tính tổng các phần tử hay tên biến. của mảng là bội số của một số HS: Trả lời nguyên dương k cho trước. GV: Vai trò của nmax và n? Có a) Gõ nội dung chương trình: thể thay nmax bằng n trong khai Program sum1; báo kiểu mảng được không? Vì Uses crt; sao? Const nmax = 100; HS:... Type MyArray = Array[1..nmax] Of Integer; Var A : MyArray; s,n,i,k: integer; Begin GV: Nhập số phần tử của mảng? Clrscr; Randomize;
  3. HS: Nhập n Write('Nhap n = '); Readln(n); GV: Những dòng lệnh nào nhằm {Tạo ngẫu nhiên mảng gồm n số tạo ra mảng A? nguyên} GV:Lệnh A[i]:= Random(301)- For i:=1 To n Do A[i]:= Random(301); dùng để làm gì? Random(301)-Random(301); {Duyệt qua từng phần tử của mảng: GV: Câu lệnh FOR-DO cuối xuất chỉ số và giá trị} cùng thực hiện nhiệm vụ gì? Giải For i:=1 To n Do Writeln(' A[',i,'] = thích? ',A[i]:5); Write('NHap k :'); Readlk(k); GV: Câu lệnh s:=s+A[i]; được s:=0; thực hiện bao nhiêu lần? For i:=1 to n Do If A[i] Mod k = 0 Then s:=s+A[i];
  4. Writeln('Tong can tinh la : ',s); Readln End. Nên cho học sinh lưu lại chương b) Hãy thay các câu lệnh sau vào vị trình này. Sau đó dùng Save as để trí cần thiết để sửa đổi chương trình lưa lại với tên khác để dùng cho trên nhằm để tính và đưa ra số lượng số dương và số âm trong mảng. câu b. 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:
  5. 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:
  6. 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
  7. 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 HS: Dùng một mảng hai chiều để Bảng Cộng lưu Bảng cộng Program Bangcong; Uses Crt;
  8. GV: Khai báo? VAR B: Array[1..9,1..9] OF Integer; HS: Khai báo. i, j : Integer; Begin GV: Gọi i là chỉ số dòng, j là chỉ Clrscr; số cột thì miền giá trị của i, j như For i:=1 to 9 Do {Tính giá trị thế nào? cho từng phần tử} For j:=1 to 9 Do HS: Trả lời. B[i,j]:= i+j; {Xuất ra màn hình} GV: Nhận xét gì về phần tử B[i,j] For i:=1 to 9 Do của bảng cộng? Begin HS: B[i,j]=i+j For j:=1 to 9 Do GV: Yêu cầu học sinh viết đọan Write(B[i,j]:3); chương trình tính B[i,j]. Writeln; GV: Viết kết quả ra màn hình? End; HS: lên bảng thực hiện Readln
  9. 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; GV: Chương trình trên chỉ đưa ra Uses crt; max với chỉ số lớn nhất. Do đó Const nmax = 100; muốn đưa ra max với chỉ số nhỏ Type MyArray = Array[1..nmax] Of nhất nên gợi cho hs: Integer; - Vai trò của biến j: thông qua kết Var A : MyArray; quả. Lệnh gán khởi trị biến j sau n,i,j: integer; khi duyệt qua từng phần tử, câu Begin lệnh IF - THEN dùng để kiểm tra Clrscr; Randomize; phần tử thứ i có lớn nhất không, Write('Nhap n = ');
  10. nếu có lưu giữ vào biến j. Readln(n); - Nếu dùng bộ dữ liệu lớn thì làm {Tạo ngẫu nhiên mảng gồm n số như chương trình của SGK. nguyên} Trong trường hợp nếu muốn nhập For i:=1 To n Do A[i]:= thì hướng dẫn hs viết đoạn Random(300)-Random(300); chương trình sau: {Duyệt qua từng phần tử của mảng: FOR i:=1 to n Do xuất chỉ số và giá trị} Begin Write('A[',i'] ='); For i:=1 To n Do Writeln(' A[',i,'] = Readln(A[i]); ',A[i]:5); End; j:=1; GV: Mô phỏng với 10 phần tử. For i:=1 to n Do GV:Vòng lặp FOR khi duyệt qua If A[i] > A[j] Then j:=i; từng phần tử để tìm số lớn nhất ở Writeln('Chỉ số : ',j, ' Gia tri : trên có thể đảo để chạy ngược lại ',A[j]:5; được không (Downto) Readln GV: Hãy thử cho vòng FOR trên End.
  11. 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 sau: GV: Chương trình trên có cần lưu giữ đoạn chương trình tìm phần
  12. 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
Đồng bộ tài khoản