Tải bản đầy đủ (.doc) (100 trang)

BÀI SOẠN TIN HỌC 11 HỌC KỲ 2 CÔNG VĂN 4040

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 (988.39 KB, 100 trang )

Ngày dạy:
Ngày dạy:
Ngày dạy:
Ngày dạy:

/
/
/
/

/2020 tại lớp 11B6
/2020 tại lớp 11B7
/2020 tại lớp 11B8
/2020 tại lớp 11B9

PPCT: 19

BÀI TẬP THỰC HÀNH 2
I. MỤC TIÊU

1. Kiến thức:
- Xây dựng chương trình có sử dụng cấu trúc rẽ nhánh
- Làm quen với việc hiệu chỉnh chương trình
2. Kỹ năng:
- Thực hiện được cỏc bi tp trong sỏch giỏo khoa.
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm
4. Phát triển năng lực
Giúp học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng lực
trình bày về vịng lặp For trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS.



1. Chuẩn bị của GV: - Giáo án, phấn, bảng, phòng thực hành
2. Chuẩn bị của HS: - Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động
Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
cấu trúc lặp trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng những bài tập về
vòng lặp For.
Tiến hành:
- Hướng dẫn về viết cấu trúc lặp trong Pascal.
- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ1.(40')Giáo viên nêu nội dung các I. NỘI DUNG:
bài tập có sử dụng cấu trúc rẽ nhánh
Bài tốn: Bộ số Pitago
GV: Nêu yêu cầu của bài:
a) Gõ chương trình kiểm tra bộ số PiBài toán: Cho bộ ba số nguyên a, b, c ta-go
được gọi là bộ số Pi-ta-go nếu tổng các Program Pi_ta_go;
bình phương của hai số bằng bình Var a, b, c :Integer;
phương của số cịn lại. Viết chương
a2, b2, c2: Longint;
trình nhập từ bàn phím ba số nguyên a,
Begin
b, c và kiểm tra xem chúng xem chúng
Write(‘ a, b, c ‘); Readln(a, b, c);

có là bộ số Pi-ta-go không?
a2:=a; b2:=b; c2:=c;
- ý tưởng: Kiểm tra đẳng thức sau đây
a2:=a2*a; b2:=b2*b; c2:=c2*c;
1


có xảy ra hay khơng:
a2 = b2 + c2
b2 = a2 + c2
c2 = a2 + b2
GV: Hướng dẫn học sinh thực hiện
nhập chương trình, lưư chương trình
với tên là PITAGO và thực hiện với các
bộ số trong sách giáo khoa.
HS: Nhập chương trình
GV: Hướng dẫn học sinh cách lưu
chương trình?
HS: Thực hiện theo hướng dẫn của GV

If (a2=b2+c2) or (b2=a2+c2) or
(c2=a2+b2) then
Writeln(‘ Day la bo so Pi-ta-go’)
Else Writeln(‘ Day khong phai bo so
Pi-ta-go’);
Readln
End.
b) Lưu chương trình với tên Pitago lên
đĩa
Muốn lưu tên chương trình được thì sau

khi gõ xong chương trình ta nhấn phím
F2 hoặc chọn vào File-> Saves hiển thị
hộp thoại ta gõ tên chương trình
là:Pitago rồi chọn OK.
c) Nhấn phím F7 để thực hiện từng câu
lệnh chương trình, nhập các giá trị
a =3, b=4 , c=5.

d)Vào bảng chọn Debug để hiệu chỉnh
GV: Hướng dẫn hs nhấn phím F7 để các giá trị a2, b2, c2
thực hiện các câu lệnh.
Muốn thực hiện được ta chọn vào
Debug ở trên thanh bảng chọn
HS: Thực hiện theo hướng dẫn của GV
e)Nhấn phím F7 để thực hiện từng câu
GV: Yêu cầu hs về nhà tự làm các ý lệnh chương trình, nhập các giá trị
còn lại
a =9, b=16 , c=25.

3. Củng cố, luyện tập(3’)
- Nhắc nhở lại kiến thức cơ bản của bài học về cấu trúc rẽ nhánh, lăp, cấu
trúc chương trình và các thành phần của chương trình.
Luyện tập:
Hãy Nhấn phím F7 để thực hiện từng câu lệnh chương trình, nhập các giá trị
a =6, b=15 , c=2.
4. Vận dụng mở rộng (2’)
- Về nhà học bài và làm tiếp các bài tập còn lại

2



Ngày dạy:
Ngày dạy:
Ngày dạy:
Ngày dạy:

/
/
/
/

/2020 tại lớp 11B6
/2020 tại lớp 11B7
/2020 tại lớp 11B8
/2020 tại lớp 11B9

PPCT: 20

BÀI TẬP THỰC HÀNH 2 <Tiếp>
I. MỤC TIÊU

1. Kiến thức:
- Xây dựng chương trình có sử dụng cấu trúc rẽ nhánh
- Làm quen với việc hiệu chỉnh chương trình
2. Kỹ năng:
- Thực hiện c cỏc bi tp trong sỏch giỏo khoa.
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm
4. Phát triển năng lực
Giúp học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng lực

trình bày về vịng lặp For trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS.

1. Chuẩn bị của GV: - Giáo án, phấn, bảng, phòng thực hành
2. Chuẩn bị của HS: - Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động
Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
cấu trúc lặp trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng những bài tập về
vòng lặp For.
Tiến hành:
- Hướng dẫn về viết cấu trúc lặp trong Pascal.
- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ2. (40') Giáo viên nêu nội dung bài 2. Thực hiện các bài tập trong sách giáo
tập có sử dụng cấu trúc rẽ nhánh
khoa
GV: Yêu cầu hs làm bài tập 4a SGK-51 a) bài tập 4a:
Program baitap4a;
Var x, y :Integer; z: Real;
Begin
Write(‘ Nhap vao so x: ’);
Readln(x);
GV:Với bài này có sử dụng các lệnh rẽ
Write(‘ Nhap vao so y: ’);

nhánh dạng thiếu được không?
Readln(y);
GV:Giáo viên hướng dẫn học sinh nhập
chương trình
HS: Làm theo hướng dẫn của GV

3


HS: Trả lời ta không sử dụng được

If (x*x+y*y) <=1 then z:=
x*x+y*y
Else
If y>=x then z:=x+y
Else z:=0.5;
Writeln(‘Gia tri cua z la: ’,z:8:2);
Readln;
End.

GV: Nêu đầu bài SGK trang 51.
b) Bài tập 5a
HS: Theo dõi và đọc yêu cầu của bài
tập
Program baitap5a;
Var n :Integer;
GV: Gọi mộ hs trả lời với bài tập này
S :Real;
cần khai báo những biến gì ?
Begin

S:=0;
HS: Trả lời
For n:=1 to 50 do
S:=S+n/(n+1);
GV:Ta dùng vòng lặp nào để thực hiện?
Writeln(‘Tong day so la: S= ’,S:8:2);
HS: Ta dùng vòng lặp For để thực hiện
Readln;
End.
GV:Nêu yêu cầu bài tập 5b SGK
trang 51

c) Bài tập 5b:
Program baitap5a;
Var n, tg :Integer;
HS: Theo dõi bài tập
S :Real;
Begin
GV:Nếu ta sử dụng vòng lặp While do
S:=1; tg:=1; n:=0;
thì bài tốn thực hiện như thế nào?
While (1/tg>0.000002) do
Begin
HS: Trả lời câu hỏi
N:=n+1;
Tg:=tg*n
S:=S+1/tg;
GV:Ta có cần một biến trung gian để
End;
tính các giai thừa của bài tốn?

Writeln(‘Tong day so la: S= ’,S:8:2);
HS: Quan sát chương trình đã viết và
Readln;
trả lời
End.
3. Củng cố , luyện tập (3’)
- Nhắc lại kiến thức cơ bản của bài học về cấu trúc rẽ nhánh, lăp, cấu trúc
chương trình và các thành phần của chương trình.
4. Vận dụng mở rộng (2’)
- Về nhà học bài và làm bài tập ở nhà.
Ngày dạy: / /2020 tại lớp 11B6

4


Ngày dạy: / /2020 tại lớp 11B7
Ngày dạy: / /2020 tại lớp 11B8
Ngày dạy: / /2020 tại lớp 11B9

PPCT: 21
Chương IV: DỮ LIỆU CÓ CẤU TRÚC
Bài 11:
KIỂU MẢNG
I. MỤC TIÊU

1. Kiến thức:
- Hiểu khái niệm mảng một chiều
- Hiểu cách khai báo và truy cập đến phần tử của mảng một chiều
2. Kỹ năng
- Cái đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu

mảng một chiều
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm
4. Phát triển năng lực
Giúp học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng lực
trình bày về vịng lặp For trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS.

1. Chuẩn bị của GV: - Giáo án, phấn, bảng, phòng thực hành
2. Chuẩn bị của HS: - Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động
Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
mảng trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng những bài tập về
mảng.
Tiến hành:
- Hướng dẫn viết về cấu trúc mảng trong Pascal.
- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ1: Học sinh hiểu khái niệm 1. Kiểu mảng một chiều
mảng một chiều và cách khai
báo mảng một chiều
Hình thức: Cả lớp
Bài toán đặt vấn đề: Xét bài toán nhập vào nhiệt
Thời gian: 40’

độ (trung bình) của mỗi ngày trong tuần, tính và
Bước 1: Giáo viênhướng dẫn đưa ra màn hình nhiệt độ trung bình của tuần
bài toán đặt vấn đề
và số lượng ngày trong tuần có nhiệt độ cao hơn
- Yêu cầu học sinh xác định nhiệt độ trung bình của tuần.
bài toán
*) Xác định bài toán
- GV Chạy chương trình trên Dữ liệu đã biết(Input): t1,t2,t3,t4,t5,t6,t7
Dữ liệu cần tính và in ra(Output) : tb, dem
màn hình và giải thích
- Nếu muốn tính nhiƯt ®é
5


trung bình của N ngày trong
năm (VD: N=365) thì sẽ gặp
khó khăn gì ?
- Th no l mng 1 chiu?
- Có mấy cách khai báo mảng
1 chiều?

Ví dụ

A
Trong đó:
- Tên mảng là A
- Số phần tử là 7
- Kiểu dữ liệu của các phần
tử : là kiểu nguyên
- Khi tham chiếu tới phần tử

thứ i ta viết A[i].
Ví dụ: A[5] = 19.
- Lấy ví dụ cách khai báo
mảng:
+) Khai báo trực tiếp
VD1: Var
nhietdo :
array[1..365] of integer;
VD2: Var B : array[1..100] of
real;
+) Khai báo gián tiếp
TYPE nhietdo = array[1..365]
of integer;
Var
A: nhietdo;

- Vậy quay trở lại với bài tốn
tính nhiệt độ trên. Khi cần tính
nhiệt độ của N ngày chúng ta
sử dụng kiểu mảng 1 chiều.

=> Mảng một chiều là dãy hữu hạn các phần tử
cùng kiểu.
- Mảng được đặt tên và mỗi phần tử của nó có một
chỉ số. Để mơ tả mảng một chiều cần xác định kiểu
của các phần tử và cách đánh số các phần tử của
mảng
- Để có thể lập trình và sử dụng kiểu mảng một
chiều các ngơn ngữ lập trình có quy tắc và cách
thức cho phép xác định.

+ Tên kiểu mảng một chiều;
+ Số lượng các phần tử;
+ Kiểu dữ liệu của phần tử;
+ Cách khai báo biến mảng mảng;
+ Cách tham chiếu đến phần tử;
a) Khai báo
Cách khai báo mảng một chiều có dạng:
- Cách 1: Khai báo trực tiếp biến mảng một
chiều
Var <tên biến mảng>:array[kiểu chỉ số] of
<kiểu phần tử>;
- Cách 2: Khai báo gián tiếp biến mảng qua mảng
một chiều;
Type <tên kiểu mảng>=array[kiểu chỉ số] of phần tử>;
Var <tên biến mảng>:<tên kiểu mảng>;
Trong đó:
- Kiểu chỉ số thường là một đoạn số nguyên liên tục
có dạng n1..n2 là các hằng biểu thức nguyên xác
định chỉ số đầu và chỉ số cuối (n1<=n2)
- Kiểu phần tử là kiểu của các phần tử mảng
*) Tham chiếu tới phần tử của mảng một chiều
được xác định bởi tên mảng cùng với chỉ số, được
6


- Chiếu chương trình và giải viết trong cặp ngoặc [và].
thích
VD: Tham chiếu tới phần tử thứ 3 của mảng A ta
viết A[3]

Bước 2: Học sinh hoạt động Chương trình giải bài toán tổng quát với N ngày
và trả lời
được viết như sau:
Bước 3: Giáo viên bổ xung và
chuẩn kiên thức

3. Củng cố, luyện tập (3’)
+) Củng cố
- Nhắc nhở lại kiến thức cơ bản của bài học về khai báo mảng một chiều
+) Luyện tập
Câu 1: Cách khai báo mảng 1 chiều nào sau đây là đúng?
A. Var <tên biến mảng>:array[kiểu chỉ số] of <kiểu phần tử>;
B. Var <kiểu mảng>:array[kiểu chỉ số] of <kiểu phần tử>;
C. Var <tên chỉ số>:array[kiểu chỉ số] of <kiểu phần tử>;
D. Var <tên biến mảng>=array[kiểu chỉ số] of <kiểu phần tử>;
Câu 2: Cách khai báo nào sau đây là đúng?
A. Var A: Array[1..100] of Integer:
B. Var A: Array[1..100] of Integer;
C. Var A: Array[1...100] of Integer:
D. Var A=Array[1..100] of Integer:
Câu 3: Cho mảng A gồm những phần tử sau cách tham chiếu nào sau đây
là đúng?
14
17
12
1
2
3
A. B[5] = 12 B. B[5] = 19
C. B[5] = 20

B

19
4

20
5
D. B[5] = 17

4. Vận dụng mở rộng (2’)
- Về nhà học bài và làm bài tập ở nhà.
- Xem tiếp các một số ví dụ
7


Lớp

Ngày dạy

Sĩ số

B8

…../…../ 2020

.../…

B9

…../…../ 2020


.../…

Tiết 22

Học sinh vắng

KIỂU MẢNG
<Tiếp>

I. MỤC TIÊU

1. Kiến thức:
- Hiểu cách khai báo và truy cập đến phần tử của mảng
2. Kỹ năng
- Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng một chiều
- Thực hiện được khai báo mảng, truy cập, tính tốn các phần tử của mảng
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm
4. Phát triển năng lực
Giúp học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng lực
trình bày về vịng lặp For trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS.

1. Chuẩn bị của GV: - Giáo án, phấn, bảng, phòng thực hành
2. Chuẩn bị của HS: - Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động

Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
mảng trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng những bài tập về
mảng.
Tiến hành:
- Hướng dẫn viết về cấu trúc mảng trong Pascal.
- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ1:HS áp dụng khai báo mảng một b) Một số ví dụ
chiều thực hiện viết chương trình các Ví dụ 1:
bài toán
Input: Số nguyên dương N(N<=250) và
Hình thức: Cả lớp
dãy N số nguyên dương A1,A2…,An,
Thời gian: 20’
mỗi số đều không vượt q 500.
Bước 1: GV Chiếu thuật tốn tìm giá Output: Chỉ số và giá trị của phần tử
trị lớn nhất của dãy số nguyên lên máy lớn nhất trong dãy số đã cho.
chiếu và giải thích.
Ví dụ 1: Tìm phần tử lớn nhất của
dãy số ngun
Ta có thuật tốn tim giá trị lớn nhất của
dãy số nguyên như sau:
8


Bước 1: Nhập giá trị N và dãy A1, A2,…, AN

Bước 2: Max←A1; i←2;
Bước 3: Nếu i > N thì đưa ra giá trị Max rồi
kết thúc
Bước 4:
Bước 4.1: Nếu Ai >Max thì Max←Ai;
Bước 4.2: i←i+1 rồi quay lại bước 3;

- Lấy ví dụ cụ thể 1 dãy số và thực hiện
VD: N=3, a1=13; a2= 15; a3=11
B1: Nhập N= 3;
B2: Max =a1= 13, i←2;
B3: i←2B4.1: ai=a2=15> Max=a1=13→Max=a2=15;
B4.2: i←i+1=3;

B3: i=3=N=3;
B4.1:
ai=a3=11B4.2: i←i+1=4;
B3: i=4>N=3→Max=a2=15;
- Hướng dẫn học sinh viết chương trình
cụ thể và giải thích ý nghĩa các câu
lệnh.
Bước 2: HS chú ý\
Bước 3: GV chuẩn lại kiến thưc

Chương trình dưới đâythực hiện việc
duyệt tuần tự các phần tử trong dãy để tìm
ra phần tử lớn nhất.
Program TimMax;

Const Nmax=250;
Type Mang1=Array[1..Max] of Integer;
Var N, i, csmax,:Integer;
A:Mang1 ;
Begin
Write(‘Nhap so luong phan tu cua day so
N= ‘); readln(N);
For i:=1 to N do
Begin
Write(‘Phan tu thu ’,i,’ = ‘);
Readln(A[i]);
End;
Max:=A[1]; csmax:=1;
For i:=1 to N do
If A[i]>Max then
Begin
Max:=A[i];
Csmax:=i;
End;
Writeln(‘Gia tri lon nhat cua day la: ’
,Max);
Writeln(‘Nam tai vi tri ’,csmax);
Readln;
9


HĐ2: HS áp dụng bài tập hướng dẫn
ở trên tìm phần tử nhỏ nhất trong
dãy:
Hình thức: Làm theo nhóm

Thời gian: 10’
Bước 1: GV chia lớp thành 4 nhóm và
yêu cầu
Nhóm 1, 2 viết phần khai báo và phần
nhập mảng
Nhóm 3,4 viết đoạn chương trình tìm
giá trị nhỏ nhất và viết kết quả ra màn
hình
- Cách nhập phần tử trong mảng làm
tương tự như tìm phần tử lớn nhất
- Ta giả sử số lớn nhất trong dãy là số
đầu tiên, lần lượt so sánh số đó với các
số tiếp theo, nếu Ai < Min thì Min gán
bằng Ai
-Quá trình kiểm tra khi kết thúc dãy số
Bước 2: HS các nhóm thực hiện theo
hướng dẫn
Bước 3: GV Hướng dẫn học sinh hoàn
thiện chương trình

End.
*) Ví dụ áp dụng: Tìm giá trị nhỏ nhất
trong dãy
Min:=A[1]; csmin:=1;
For i:=1 to N do
If A[i]Begin
Min:=A[i];
Csmin:=i;
End;

Writeln(‘Gia tri nho nhat cua day la:’ ,Max);

3. Củng cố, luyện tập(3’)
- Cách khai báo mảng 1 chiều
- Cách tham chiếu tới phần tử mảng
- Cách duyệt phần tử mảng
4. Vận dụng mở rộng(2')
*) Bài tập: Nhập vào dãy số, đếm các số chăn, số lẻ.
Gợi ý:
- Các thao tác khai báo giống các bài tập đã chữa
- Đếm tra và tính tổng số chẵn: Duyệt từ đầu dãy đến cuối dãy,
nếu là số chắn thì tăng biến đếm
For i:=1 to N do
If A[i] mod 2 = 0 then d:=d+1;
- Đếm và tính tổng số lẻ số lẻ:
For i:=1 to N do
If A[i] mod 2 <> 0 then d:=d+1;

10


Lớp

Ngày dạy

Sĩ số

B8

…../…../ 2020


.../…

B9

…../…../ 2020

.../…

Tiết 23

Học sinh vắng

KIỂU MẢNG
<Tiếp>

I. MỤC TIÊU

1. Kiến thức:
- Hiểu cách khai báo và truy cập đến phần tử của mảng
2. Kỹ năng
- Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng một chiều
- Thực hiện được khai báo mảng, truy cập, tính tốn các phần tử của mảng
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm
4. Phát triển năng lực
Học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng lực
trình bày về mảng trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS.


1. Chuẩn bị của GV:
Giáo án, phấn, bảng
2. Chuẩn bị của HS:
Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động
Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
mảng trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng những bài tập về
mảng.
Tiến hành:
- Hướng dẫn viết về cấu trúc mảng trong Pascal.
- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ1: HS áp dụng khai báo mảng b) Một số ví dụ
một chiều thực hiện viết chương Ví dụ 2: Sắp xếp dãy số nguyên theo chiều
trình các bài toán
tăng dần
Hình thức: Cả lớp
Chương trình sắp xếp dãy số:
Thời gian: 30’
Program Sapxep;
Bước 1: GV nêu yêu cầu của bài toán
Const Nmax=250;
- Input: Số nguyên dương N và dãy số Type ArrInt=Array[ 1..Nmax] of Integer;

nguyên dương y A1, A2,…, AN
Var N, i, j,t :Integer;
- Output: Dãy số được sắp xếp không
A: ArrInt;
giảm
Begin
11


Write(‘Nhap so luong phan tu cua day
N= ‘); Readln(N);
For i:=1 to N do
Begin
- Hướng dẫn từng hs cách nhập dữ liệu
Write(‘Phan tu thu ‘,i,’ = ‘);
cho từng phần tử?
Readln(A[i]);
Bước 2: HS Làm theo hướng dẫn của
End;
GV
For j:=N dowto 2 do
For i:=1 to j-1 do
If A[i]>A[i+1] Then
Begin
t:=A[i]; A[i+1]:=A[i];
A[i+1]:=t;
End;
Writeln(‘Day da duoc sap xep la: ‘);
For i:=1 to N do
Write(A[i]:4);

Readln;
End.
HĐ2: HS áp dụng sắp xếp dãy theo *) Ví dụ áp dụng: sắp xếp dãy giảm dần
chiều giảm dần
Hình thức: Cả lớp
For j:=N dowto 2 do
Thời gian: 5’
For i:=1 to j-1 do
Bước 1: GV hướng dẫn học sinh cách
If A[i]sắp xếp dãy theo chiều giảm đần
Begin
- Cách nhập phần tử trong mảng làm
t:=A[i]; A[i+1]:=A[i];
tương tự như tìm phần tử lớn nhất
A[i+1]:=t;
- Ta so sánh lần lượt các cặp số liền kề
End;
trong dãy, nếu số sau lớn hơn số trước
ta đổi chỗ chúng cho nhau
Q trình đổi chỗ khi khơng cịn cặp số
nào cần đổi chỗ
Bước 2: HS thực hiện theo hướng dẫn
Bước 3: GV chuẩn lại kiến thức
3. Củng cố, luyện tập(3’)
- Nhắc nhở lại kiến thức cơ bản của bài học về cách sử dụng mảng một
chiều trong chương trình thể hiện thuật tốn cơ bản tìm kiếm và sắp xếp
Luyện tập:
Câu 1: Với bài tập thực hành trên cách khai báo nào sau đây đúng
A. Var A:Array[ 1..250] of Integer

B. Var A:Array[ 1..250] of Integer;
C. Var A:Array[ 1..250] of Integer.
D. Var A:Array[ 1...250] of Integer;
Câu 2: Đoạn chương trình sau dùng để làm gì?
12


Begin
Write(‘Nhap so luong phan tu cua day
N= ‘); Readln(N);
For i:=1 to N do
Begin
Write(‘Phan tu thu ‘,i,’ = ‘);
Readln(A[i]);
End;
A. Nhập mảng
B. In mảng vửa nhập
C. Đưa kết quả ra màn hình
D. Sắp xếp
Câu 3. Đoạn chương trình sau dùng để làm gì?
For j:=N dowto 2 do
For i:=1 to j-1 do
If A[i]>A[i+1] Then
Begin
t:=A[i]; A[i+1]:=A[i];
A[i+1]:=t;
A. Sắp xếp dãy giảm dần
B. Sắp xếp dãy giảm dần
C. Tính tổng
D. Tất cả đều sai

4. Vận dụng, mở rộng (2’)
*) Bài tập về nhà: Làm bài tập 6 trang 79
- Về nhà học bài và làm bài tập ở nhà.

13


Lớp

Ngày dạy

Sĩ số

B8

…../…../ 2020

.../…

B9

…../…../ 2020

.../…

Tiết 24

Học sinh vắng

BÀI TẬP


1. MỤC TIÊU

1. Kiến thức:
- Hiểu cách khai báo và truy cập đến phần tử của mảng
2. Kỹ năng
- Cái đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng một chiều
- Thực hiện được khai báo mảng, truy cập, tính tốn các phần tử của mảng
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm
4. Phát triển năng lực
Giúp học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng
lực trình bày về mảng trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS.

1. Chuẩn bị của GV:
Giáo án, phấn, bảng
2. Chuẩn bị của HS:
Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động
Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
mảng trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng những bài tập về
mảng.
Tiến hành:
- Hướng dẫn viết về cấu trúc mảng trong Pascal.

- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ1: HS biết cách cài đặt bài tốn về *) Ví dụ 1
mảng một chiều
Nhập vào mảng 1 chiểu, tính tổng các số
Hình thức: làm theo nhóm
chẵn, lẻ, dương, âm trong mảng
Thời gian: 25’
Chương trình:
Bước 1: GV nêu yêu cầu của bài toán
Program Tong_PT_Mang;
Const Max=100;
Var A: Array[1..Max] of Integer;
i,s,s1,s2,s3, n: Integer;
- Cách khai báo các phần tử mảng
Begin
14


Write('Nhap so phan tu cua mang: ');
Readln(n);
For i:=1 to n do
- Cách nhập các phần tử mảng như thế
Begin
nào
Write('A[',i,']= ');
Readln(A[i]);
End;

{Tong so chan}
-Cách tính tổng số chẵn như thế nào
s:=0;
Bước 2: Học sinh trả lời và thực hiện
For i:=1 to n do
cài đặt chương trình
If (A[i] mod 2 = 0) then
s:=s+A[i];
Writeln('Tong cac so chan trong mang:
',s:3);
{Tong so le}
s1:=0;
For i:=1 to n do
If (A[i] mod 2 <> 0) then
s1:=s1+A[i];
Writeln('Tong cac so le trong mang:
',s1:3);
Bước 3: Giáo viên kiểm tra vầ chuẩnlại {Tong so duong}
kiến thức
s2:=0;
For i:=1 to n do
If A[i]>0 then
s2:=s2+A[i];
Writeln('Tong cac so duong trong mang:
',s2:3);
{Tong so am}
s3:=0;
For i:=1 to n do
If A[i]<0 then
s3:=s3+A[i];

Writeln('Tong cac so am mang: ',s3:3);
Readln;
End.
HĐ2: HS biết cách cài đặt thuật toán
đếm số lẻ và số chẵn
Hình thức: Làm theo nhóm
Thời gian: 10’
Bước 1: GV hướng dẫn học sinh kiểm
tra số lẻ, số chẵn sau đó cộng và biến
đếm
Bước 2: Học sinh thực hiện cài đặt

*) Ví dụ 2: Nhập vào mảng 1 chiều, đếm
các số chẵn, số lẻ trong mảng
Hướng dẫn: Ta sử dụng hai biến d1 và d2
để đếm các số chẵn và số lẻ. Ta duyết các
phần tử trong mảng, kiểm tra nếu sô lẻ thì
d1 tăng, nếu số chẵn thì d2 tăng.
d1:=0; d2:=0;
For i:=1 to n do
15


chương trình thuật tốn theo sự hướng
dẫn
Bước 3: GV chuẩn lại kiến thức

If (A[i] mod 2 <> 0) then
d1:= d1+1
Else

d2:=d2+1;
- Sau đó viết giá trị d1 và d2 ra màn hình

3. Củng cố, luyện tập(4’)
- Nhắc nhở lại kiến thức cơ bản của bài học về cách sử dụng mảng một
chiều trong chương trình thể hiện thuật tốn cơ bản tìm kiếm và sắp xếp
Luyện tập:
Cho các đoạn chương trình sau: Đoạn nào kiểm tra đếm số lẻ, số chẵn, số
dương, số âm?
For i:=1 to n do
If A[i]>0 then d:=d+1;
- Đoạn chương trình trên kiểm tra số dương
For i:=1 to n do
If A[i] mod 2 =0 then d:=d+1;
- Đoạn chương trình trên kiểm tra số chẵn
For i:=1 to n do
If A[i] mod 2 <> 0 then d:=d+1;
- Đoạn chương trình trên kiểm tra số lẻ
For i:=1 to n do
If A[i] < 0 then d:=d+1;
- Đoạn chương trình trên kiểm tra số âm
4. Vận dụng mở rộng (1’)
- Về nhà xem trước bài thực hành số 3
- Đọc trước bài thực hành

16


Lớp


Ngày dạy

Sĩ số

B8

…../…../ 2020

.../…

B9

…../…../ 2020

.../…

Tiết 25

Học sinh vắng

BÀI TẬP THỰC HÀNH 3

I. MỤC TIÊU

1. Kiến thức:
- Hiểu khái niệm mảng một chiều
- Hiểu cách khai báo và truy cập đến phần tử của mảng
2. Kỹ năng
- Cái đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng một chiều

- Thực hiện được khai báo mảng, truy cập, tính tốn các phần tử của mảng
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm
4. Phát triển năng lực
Giúp học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng
lực trình bày về mảng trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS:

1. Chuẩn bị của GV:
Giáo án, phấn, bảng, phòng máy
2. Chuẩn bị của HS:
Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động
Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
mảng trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng những bài tập về
mảng.
Tiến hành:
- Hướng dẫn viết về cấu trúc mảng trong Pascal.
- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ1: HS hiểu chương trình tạo Bài 1: Tạo mảng A gồm n số ( n<=100 )
mảng và tính tổng các phần tử là bội số nguyên, Tính tổng các phần tử là bội
của k
của số nguyên k

Hình thức: Làm theo nhóm
a) Hãy tìm hiểu và chạy thử chương
Thời gian: 10
trình sau dây?
Bước 1: Đưa ra yêu cầu của bài
program tinhtong;
- Với đầu bài toán cho điều kiện Uses Crt;
(n<=100) có ý nghĩa gì
var a:array [1..100]of integer;
17


s,n,i,k:integer;
begin
Clrscr;
writeln('nhan N'); readln(N);
for i:=1 to n do
- Nhập dữ liệu cho từng phần tử của begin
mảng như thế nào
writeln('nhap vao phan tu thu',i,'=');
readln(a[i]);
end;
Lệnh S:=S+A[i]; dùng để làm gì
writeln('nhap vao k');
Bước 2: Học sinh trả lời và dựa vào đó readln(k);
cài đặt thuật toán
s:=0;
Bước 3: GV chuẩn lại kiến thức
for i:=1 to n do
HĐ2: HS hiểu bài toán và đưa các

lệnh cần thiết vào chương trình
if a[i] mod k =0 then s:=s+a[i];
Hình thức: Làm theo nhóm
Writeln('tong can tinh la',s);
Thời gian: 20’
readln
Bước 1: GV đưa ra yêu cầu của bài
end.
b)Hãy đưa những câu lệnh sau đây vào
những vị trí cần thiết….
- Dựa vào yêu cầu của bài hs hãy đưa program SoamSoduong;
các câu lệnh sau vào đúng vị trí nhằm Uses Crt;
sửa đổi chương trình
var a:array [1..100]of integer;
n,i,k,soam,soduong:integer;
begin
Clrscr;
- Nhập dữ liệu cho từng phần tử của writeln('nhan N'); readln(N);
mảng như thế nào
for i:=1 to n do
begin
writeln('nhap vao phan tu thu',i,'=');
readln(a[i]);
- Lệnh Soduong:=Soduong+1 Có ý nghĩa end;

soam:=0; soduong:=0;
Bước 2: HS thực hiện theo hướng dẫn for i:=1 to n do
của GV
Begin
Bước 3: GV chuẩn lại kiến thức

if a[i]>0 then soduong:=soduong+1
else
if a[i]<0 then soam:=soam+1;
End;
writeln('so am la',soam);
writeln('sodungla',soduong);
readln
end.
3. Củng cố, luyện tập(3’)
18


- Nhắc nhở lại kiến thức cơ bản của bài học về khai báo mảng một chiều,
mảng hai chiều và cách tham chiếu đến các phần tử của mảng một chiều
Luyện tập:
Từ ý a của bài 1 hãy viết lại cách khai báo mảng một chiều theo cách khai
báo trực tiếp?
4. Vận dụng mở rộng (2’)
- Về nhà học bài và làm bài tập ở nhà.
- Xem tiếp bài tập còn lại.

19


Lớp

Ngày dạy

Sĩ số


B8

…../…../ 2020

.../…

B9

…../…../ 2020

.../…

Tiết 26

Học sinh vắng

BÀI TẬP THỰC HÀNH 3

I. MỤC TIÊU

1. Kiến thức:
- Hiểu cách khai báo và truy cập đến phần tử của mảng
2. Kỹ năng
- Cái đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng một chiều
- Thực hiện được khai báo mảng, truy cập, tính tốn các phần tử của mảng
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm
4. Phát triển năng lực
Giúp học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng

lực trình bày về dãy số trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS:

1. Chuẩn bị của GV:
Giáo án, phấn, bảng, phòng máy
2. Chuẩn bị của HS:
Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động
Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
mảng trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng những bài tập về
mảng.
Tiến hành:
- Hướng dẫn viết về cấu trúc mảng trong Pascal.
- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ1: Giáo viên nêu yêu cầu của bài Bài 2: Viết chương trình tìm phần tử có
tập
giá trị lớn nhất của mảng và đưa ra màn
Hình thức: Làm bài theo nhóm
hình chỉ số và giá trị tìm được. Nếu có
Thời gian: 20’
nhiều phần tử có cùng giá trị lớn nhất
Bước 1: GV yêu cầu hs dựa vào bài tập thì đưa ra phần tử có chỉ số nhỏ nhất?
2a các em hãy

a) Hãy tìm hiểu chương trình sau đây?
- Tìm hiểu chương trình và chỉnh sửa Program MaxEliment;
chương trình trên để đưa ra chỉ số của Const Nmax =100;
Type MyArray=array[1..Nmax] of Integer;
phần tử có cùng giá trị lớn nhất
Var A:MyArray;
20


Bước 2: HS thực hiện theo hướng dẫn
Bước 3: GV chuẩn lại kiến thức

N,i,j:integer;
Begin
Write(‘Nhap so luong phan tu cua day
so,N=’);
Readln(N);
For i:=1 to n do
Begin
Write(‘Phan tu thu ,’i,’=’); Readln(A[i]);

End;

HĐ2: GV yêu cầu hs chỉnh sửa
chương trình để tìm giá trị lớn nhất
Hình thức: Làm bài theo nhóm
Thời gian: 20’
Bước 1: GV đưa ra yêu cầu:
- Bài tập này cần khai báo những biến
nào

- Thao tác nhập dữ liệu cho các phần
tử?
Biến Csmax dùng để làm gì
Bước 2: HS trả lời và thực hiện theo
hướng dẫn
Bước 3: GV chuẩn lại kiến thức

J:=1;
For i:=2 to n do
If A[i]>A[j] then j:=I;
Write(‘chi so:’,j.’Gia tri:’,A[j]:4);
Readln
End.
b) Chỉnh sửa chương trình trên để đưa
ra chỉ số của phần tử có cùng giá trị lớn
nhất?
Program TimMax;
Var A: Array[1..100] of Integer;
Csmax, n, i, Max: Integer;
Begin
Writeln(‘ Nhap so phan tu cua mang’);
Readln(n);
For i:=1 to n do
Begin
Write(‘A[‘,i,’]= ‘);
Readln(A[i]);
End;
Max:=A[1];
For i:=1 to n do
If Max < A[i] then

Begin
Max:= A[i];
Csmax:=i;
End;
Writeln(‘ So lon nhat trong mang la: ‘,Max);

Writeln(‘ Tai vi tri: ‘,Csmax);
Readln;
End.
3. Củng cố, luyện tập: (3’)
- Nhắc nhở lại kiến thức cơ bản của bài học về khai báo mảng một chiều,
mảng hai chiều và cách tham chiếu đến các phần tử của mảng một chiều và
mảng 2 chiều
21


Luyện tập:Cho mảng A gồm N phần tử Hãy khai báo mảng A theo cách trực
tiếp và gián tiếp?
4. Vận dụng mở rộng: (2’)
- Về nhà học bài và làm bài tập ở nhà.
- Đọc trước bài thực hành 4

22


Lớp

Ngày dạy

Sĩ số


B8

…../…../ 2020

.../…

B9

…../…../ 2020

.../…

Tiết 27

Học sinh vắng

BÀI TẬP THỰC HÀNH 4

I. MỤC TIÊU

1. Kiến thức:
- Hiểu khái niệm mảng một chiều
- Hiểu cách khai báo và truy cập đến phần tử của mảng
2. Kỹ năng
- Cái đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng một chiều
- Thực hiện được khai báo mảng, truy cập, tính tốn các phần tử của mảng
3. Thái độ
- Ham thích mơn học, có tính kỉ luật cao và tinh thần làm việc theo nhóm

4. Phát triển năng lực
Giúp học sinh khám phá, tự học, năng lực hợp tác trong thực hành, năng
lực trình bày về dãy số trong lập trình.
II. CHUẨN BỊ CỦA GV VÀ HS:

1. Chuẩn bị của GV: Giáo án, phấn, bảng, phòng thực hành
2. Chuẩn bị của HS: Sách giáo khoa, vở ghi
III. HOẠT ĐỘNG DẠY HỌC

1. Hoạt động khởi động
Mục tiêu:
- Giúp học sinh huy động kiến thức và kĩ năng để tổng hợp các kiến thức về
mảng trong lập trình.
- Giáo viên quan sát học sinh, hướng dẫn học sinh vận dụng bài tập tạo mảng,
sắp xếp tăng dần về mảng.
Tiến hành:
- Hướng dẫn viết về cấu trúc mảng trong Pascal.
- Giáo viên kết luận về hoạt động của học sinh và vào bài mới.
2. Bài mới:
Hoạt động của GV và HS
Nội dung chính
HĐ1: HS tìm hiểu bài tốn: Tạo Bài 1: Tạo mảng A gồm n số ( n<=100 )
mảng, săp xếp mảng theo chiều tăng số nguyên, sắp xếp lại dãy theo chiều
dần
tăng dần
Hình thức: Làm theo nhóm
Program Sapxeptang;
Thời gian: 20’
Var A: Array[1..100] of Integer;
Bước 1: GV đưa ra yêu cầu

n, i, tg: Integer;
- Cần khái báo những biến nào
Begin
Writeln(‘ Nhap so PT mang’); Readln(n);

- Cách nhập dữ liệu cho từng phần tử
của mảng hai chiều

For i:=1 to n do
Begin
23


- Cách tráo đổi các phần tử trong mảng
một chiều
- Cách viết giá trị các phần tử của
mảng một chiều
Bước 2: HS trả lời và thực hiện
Bước 3: GV chuẩn lại kiến thức

HĐ2: HS tìm hiểu cách đếm số lần
thực hiện tráo đổi trong trương trình
Hình thức: Làm bài theo nhóm
Thời gian: 20’
Bước 1: GV đưa ra yêu cầu
- Ta sử dụng biến đếm để làm gì?

- Lệnh nhập vào mảng một chiều?

Bước 2: HS trả lời và thực hiện

Bước 3: GV chuẩn lại kiến thức

Write(‘A[‘,i,’]= ‘);Readln(A[i]);
End;
For i:=1 to n do
For j:=i+1 to n do
If A[i] >A[j] then
Begin
Tg:=A[i]; A[i]:=A[j]; A[j]:=tg;
End;
Writeln(‘Mang da duoc sap xep la:’);
For i:=1 to n do
Write(A[i],’ ‘);
Readln;
End.
b) Khai báo biến Đếm để đếm số lần thực
hiện tráo đổi trong thuật tốn. đưa kết
quả ra màn hình?
Program Sapxeptang;
Var A: Array[1..100] of Integer;
n, i, tg, Dem: Integer;
Begin
Writeln(‘ Nhap so phan tu cua mang’);
Readln(n);
For i:=1 to n do
Begin
Write(‘A[‘,i,’]= ‘); Readln(A[i]);
End;
Dem:=0;
For i:=1 to n do

For j:=i+1 to n do
If A[i] >A[j] then
Begin
Tg:=A[i];
A[i]:=A[j];
A[j]:=tg;
Dem:=Dem +1;
End;
Writeln(‘Mang da duoc sap xep la:’);
For i:=1 to n do
Write(A[i],’ ‘);
Writeln(‘ Số lần hoán đổi trong thuật toán
là:’,Dem);
Readln;
End.

3. Củng cố, luyện tập: (3’)
24


- Nhắc nhở lại kiến thức cơ bản của bài học về khai báo mảng một chiêu,
mảng hai chiều và cách tham chiếu đến các phần tử của mảng một chiều và
hai chiều
Luyện tập: Cho mản A gồm n phần tử hãy khai báo mảng trên ?
4. Vận dụng mở rộng (2’)
- Về nhà học bài và làm bài tập ở nhà.
- Xem trước bài mới

25



×