Tải bản đầy đủ (.pdf) (13 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (166.32 KB, 13 trang )

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.
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 để
đưa ra các chỉ số các phần tử có
cùng giá trị lớn nhất.
Gợi để học sinh viết được đoạn
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










b. FOR i:=1 to n Do IF A[i]=A[j]
Then
Writeln('Chỉ số : ',i, ' Gia tri :
',A[i]:5)


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

×