Professional Documents
Culture Documents
b. Phân loại:
Có 2 loại
- Thông dịch: lần lượt dịch
và thực hiện từng câu lệnh.
ĐVĐ sang bài mới: Để có thể sử dụng một - Biên dịch: dịch toàn bộ
ng2 lập trình nào đó thì trước hết chta phải chtrình rồi mới thực hiện và
biết các thành phần cơ bản có trong nó là được lưu trữ để sử dụng lại
gì? lần sau.
Có ba thành phần cơ bản của ng2 lập trình: CÁC THÀNH PHẦN CỦA
bảng chữ cái, cú pháp, ngữ nghĩa. NGÔN NGỮ LẬP TRÌNH
Trước hết chta tìm hiểu bảng chữ cái. Treo
bảng chữ cái 1. Các thành phần cơ bản
* So sánh bảng chữ cái của ng2 lập trình với
bảng chữ cái của ng2 tự nhiên
Về cú pháp: - Bảng chữ cái
Về ngữ nghĩa:
Trong từng ngữ cảnh khác nhau, ngữ nghĩa
của 1 tổ hợp kí tự là khác nhau
Ví dụ: Sgk Cách1: - Cú pháp: bộ qui tắc để viết
* Tóm lại If a2+b2>1 then chtrình
+ Phân biệt giữa cú pháp và ngữ nghĩa if a>b then s=a+b Else s
+ Lỗi cú pháp =1;
+ Lỗi ngữ nghĩa (* a2+b2<1 thì s =? *)
a + b neu a 2 + b 2 > 1 va a > b - Ngữ nghĩa
Ví dụ: S = Cách2:
1 nguoc lai If a2+b2>1 then
Xem thử 3 cách mô tả cách nào đúng. begin
if a>b then s=a+b
end
Else s =1;
(* a<b thì s =? *)
H: Lỗi ngữ nghĩa thường được phát hiện
khi nào? Cách 3:
If a2+b2>1 and a>b then
s=a+b
Else s=1
Tl: Khi thực hiện kiểm thử
chtrình.
3. Củng cố:
Ba lớp của ng2 lập trình và các mức của nó.
Vai trò của chtrình dịch
Khái niệm biên dịch và thông dịch
Lỗi cú pháp, lỗi ngữ nghĩa
4. Về nhà:
Đọc Bài đọc thêm 1 để tìm hiểu sơ về 1 số ng2 lập trình
Soạn trước phần còn lại của bài 2. Trong đó chú ý các khái niệm mới: tên, hằng, biến. Cách sử dụng nó
trong lập trình
và trình bày về một loại tên và cho ví dụ. người trình bày. + Tên do người dùng đặt
+ Tên dành riêng
Treo tranh chứa 1 số tên trong NNLT Pascal + Tên chuẩn
đã được chuẩn bị sẵn: + Tên do người dùng đặt
Type Const Integer Dem
Function Byte Inc
Mang string Quan sát và ghi lên bảng con. Ví dụ:
HS xác định tên theo từng loại tên? + Từ khóa: Type, Const,
function
Treo bảng con của 3 nhóm cho nhóm khác + Tên chuẩn: Integer, byte,
nhận xét, bổ sung string, inc
+ Tên tự đặt: dem, mang
Tổng kết vấn đề này Quan sát kết quả cnhóm khác,
nhận xét và bổ sung
3. Hoạt động 3: (15 phút) Tìm hiểu hằng, biến, chú thích
a. Mục tiêu: Hs biết được khái niệm về hằng, biến và chú thích. Phân biệt được hằng và biến. Thấy được ý nghĩa của
chú thích.
b. Nội dung:
* Hằng là đại lượng có giá trị không đổi trong quá trình thực hiện chtrình. Có 3 loại hằng
+ Hằng số học: số nguyên, só thực, có dấu và không dấu
+ Hằng xâu: chuổi kí tự bất kì, được đặt trong dấu nháy đơn
+ Hằng logic: có 2 giá trị True hoặc False
* Biến: là đại lượng đặt tên để lưu giá trị và giá trị này có thể thay đổi trong quá trình thực hiện chtrình,
biến dùng trong chtrình đều phải được khai báo.
* Chú thích : giải thích cho chtrình rõ ràng, dể hiểu. Được đặt trong cặp dấu { }
hoặc (* *)
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. Y/cầu Hs cho 1 số ví dụ về hằng số, hằng 1. Suy nghĩ và trả lời 2. Hằng và biến
xâu, hằng logic + Hằng số: 55 73.05 a. Hằng
+ Hằng xâu: ‘211’ ‘AB’ + Hằng số
+ Hằng logic: False True + Hằng xâu
Trình bày k/niệm về các loại hằng. Xem k/niệm hằng ở Sgk + Hằng logic
2. Ghi bảng: Xác định hằng số và hằng xâu: 2. Quan sát và trả lời
56 -3785 ‘485’ + Hằng số: 56; -3785; 1.5E+2
‘THPT’ 1.5E+2 45,7 + Hằng xâu: ‘485’ ‘THPT’
4. Y/cầu Hs n/cứu Sgk và cho biết chức năng Ví dụ: Tong, dtoan, …
của chú thích trong chtrình.
4. Cá nhân n/cứu Sgk vá trả lời
Chú thích được đặt giữa cặp c. Chú thích
Cho 1 số ví dụ khác về chú thích dấu { } và (* *) dùng để giải Ví dụ:
thích chtrình rõ ràng dễ hiểu. {thu tuc nhap du lieu}
H: Tên biến và tên hằng thuộc loại tên nào?
Tl: Tên do người lập trình đặt.
H: Các lệnh được viết trong cặp { } có được
TP thực hiện ko? Vì sao? Tl: Không, vì đó là dòng chú
thích.
IV. ĐÁNH GIÁ CUỐI BÀI
Bài tập kiểm tra trắc nghiệm cuối chương: (15 phút)
Câu 1:Chương trình viết bằng hợp ngữ không có đặc điểm nào trong các đặc điểm sau:
A. Ngắn gọn hơn so với chương trình được viết bằng ngôn ngữ bậc cao.
B. Tốc độ thực hiện nhanh hơn so với chương trình được viết bằng ngôn ngữ bậc cao.
C. Diễn đạt gần với ngôn ngữ tự nhiên.
D. Sử dụng trọn vẹn các khả năng của máy tính
Câu 2: Chương trình viết bằng ngôn ngữ bậc cao không có đặc điểm nào trong các đặc điểm sau:
A. Không phụ thuộc vào loại máy, chương trình có thể thực hiện trên nhiều loại máy.
B. Ngắn gọn, dễ hiểu, dễ hiệu chỉnh và nâng cấp.
C. Kiểu dữ liệu cà cách tổ chức dữ liệu đa dạng, thuận tiện cho mô tả thuật toán.
D. Máy tính có thể hiểu và thực hiện trực tiếp chương trình này.
Câu 3: Chương trình dịch không có khả năng nào trong các khả năng sau?
A. Phát hiện được lỗi ngữ nghĩa. C. Phát hiện được lỗi cú pháp.
B. Thông báo lỗi cú pháp. D. Tạo được chương trình dịch.
Câu 4: Nhận biết đúng/sai trong Pascal?
Câu 5: Ghép mỗi câu ở cột 1 với một câu thích hợp ở cột 2 trong bảng sau:
Cột 1 Cột 2
(1) Biên dịch (A) là các đại lượng có giá trị không đổi trong quá trình thực hiện chương
trình.
(2) Thông dịch (B) dịch và thực hiện từng câu lệnh, nếu còn câu lệnh tiếp theo thì quá trình
này còn tiếp tục.
(3) Chương trình viết trên ngôn ngữ (C) là những đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể
lập trình bậc cao. được thay đổi trong quá trình thực hiện chương trình.
(4) Biến (d) dịch toàn bộ chương trình nguồn thành một chương trình đích có thể
thực hiện trên máy và có thể lưu trữ để sử dụng lại khi cần thiết.
(5) Hằng (E) phải được chuyển đổi thành chương trình trên ngôn ngữ máy mới có thể
thực hiện được.
Begin
Dãy các câu lệnh; b. Phần thân
End.
4. Hoạt động 4: (15 phút) Xét một vài ví dụ về những chtrình đơn giản
a. Mục tiêu: Hs nhận biết được từng phần của một chtrình đơn giản.
b. Nội dung: Một vài chtrình đơn giản.
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. Chiếu lên bảng một chtrình đơn giản. 1. Quan sát và trả lời
Program vidu;
Uses crt;
Var x, y: byte; z:word;
Begin
z:= x+y;
writeln(z);
readln;
End. - Phần khai báo (gồm 3 dòng
H1: Phần khai báo của chtrình? đầu): khai báo tên CT, khai báo
thư viện, khai báo biến.
- Còn lại là phần thân.
+ lệnh gán (: =)
H2: Phần thân của chtrình, + lệnh đưa thông tin ra màn
+ lệnh z:=x+y có ý nghĩa gì? hình.
+ lệnh writeln có chức năng gì? 2. Suy nghĩ, thảo luận và trả lời.
Dòng khai báo tên
2. Có thể bỏ bớt các phần nào trong chtrình Dòng khai báo thư viện.
trên, nhưng kết quả chtrình không thay đổi? 3. Thảo luận và trả lời
Trình bày trên bìa trắng
3. Chia lớp thành 4 nhóm
Y/cầu:
+ 2 nhóm lấy một ví dụ về chtrình Pascal
chỉ có phần thân.
+ 2 nhóm còn lại chtrình không có phần
khai báo biến
* Đính bìa các nhóm lên bảng, cho các
nhóm nhận xét và đánh giá chéo.
IV. ĐÁNH GIÁ CUỐI BÀI (5phút)
1. Nội dung đã học
Một chtrình gồm có 2 phần: phần khai báo và phần thân.
2. Câu hỏi, bài tập về nhà
Xem trước bài: Một số kiểu dữ liệu chuẩn. Khai báo biến. (trang 21-23 sgk)
Xem trước nội dung phụ lục B phần 3: Một số kiểu dữ liệu chuẩn. (trang 129 Sgk)
số có nghĩa? 4. Suy nghĩ và trả lời - Bảng tổng hợp giới hạn biểu
4. Ứng dụng: Muốn tính toán các giá trị: 5, 8, Kiểu thực (Real) diễn một số kiểu dữ liệu
9.05 ta phải sử dụng kiểu dữ liệu nào? thường dùng
4. Hoạt động 4: (10 phút) Tìm hiểu cách khai báo biến
a. Mục tiêu:
- Hs biết được rằng mọi biến trong chtrình đều phải được khai báo tên và kiểu dữ liệu.
- Hs biết được cấu trúc chung của khai báo biến trong NNLT Pascal, khai báo được biến khi lập trình.
b. Nội dung: Cấu trúc chung của khai báo biến trong lập trình bằng Pascal:
Var tên_biến_1: kiểu_dữ_liệu_1;
tên_biến_2: kiểu_dữ_liệu_2;
...................
tên_biến_N: kiểu_dữ_liệu_N;
biếnA, biếnB, ...., biến F: kiểu_dữ_liệu;
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. Yêu cầu học sinh nghiên cứu sách GK và 1. Đọc sách.
cho biết vì sao phải khai báo biến ? Mọi biến dùng trong chtrình đều
phải được khai báo tên biến và 2. Khai báo biến
kiểu dữ liệu của biến. Tên biến
dùng để xác lập quan hệ giữa
biến với địa chỉ bộ nhớ nơi lưu
giữ giá trị của biến.
Cấu trúc chung của khai báo biến bằng Var <danh sách biến>: <kiểu dữ
Pascal: liệu>;
Cho ví dụ: Cần một biến kiểu nguyên, và một Var a: integer;
biến kiểu logic. B: boolean;
2. Treo bảng có chứa một số khai báo và yêu 2.Quan sát và chọn khai báo
cầu Hs chọn khai báo đúng trong Pascal? đúng Chọn khai báo đúng
Var x, y, z: word; Var x, y, z: word;
I: byte; n m: real;
X: longint;
3. Treo bảng có chứa một số khai báo trong I: byte;
Pascal. a: inte gr;
Hỏi: Có tất cả bao nhiêu biến, bộ nhớ phải true: boolean;
cấp phát là bao nhiêu?
- Có 5 biến
- Tổng bộ nhớ cần cấp phát: x Var x, y: word;
(2byte), y (2byte), n(6byte), n : real;
i(1byte), c(1byte) i: byte;
2+2+6+1+1=12byte c: char;
H2: Phép Mod, Div được sử dụng cho kiểu Tl: kiểu nguyên.
dữ liệu nào?
H3: Kết quả của phép toán quan hệ thuộc Tl: kiểu logic
kiểu dữ liệu nào?
3. Hoạt động 3: (20phút) Tìm hiểu về biểu thức
a. Mục tiêu: Hs biết khái niệm về biểu thức số học, quan hệ, lôgic. biết cách xây dựng các biểu thức đó.
Biết được một số hàm số học chuẩn trong lập trình
b. Nội dung:
- Biểu thức số học nhận được từ hằng số, biến số và hàm số liên kết.
- Nắm bắt được tuần tự các bước khi thực hiện biểu thức số học.
- Biểu thức logic được cấu thành từ các biểu thức quan hệ.
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. ĐVĐ: Trong toán học ta đã làm quen với 1. Suy nghĩ, trả lời
khái niệm biểu thức. Hãy cho biết các yếu tổ - Gồm 2 phần: toán hạng, toán tử 2. Biểu thức số học
cơ bản xây dựng nên biểu thức?
Nếu trong một bài toán mà toán hạng là hằng Toán hạng: hằng, biến, hàm
số, biến, hoặc hàm số và toán tử là các phép số.
toán số học thì biểu thức có tên gọi là gì? - Biểu thức số học Toán tử: +, -, *, /, mod, div.
2. Treo bảng có chứa các biểu thức toán học, * Thứ tự thực hiện: Sgk
yêu cầu: sử dụng phép toán số học để biễu 2. Quan sát bảng và lên bảng trả * Chú ý:
diễn biểu thức toán học đó thành biểu thức lời. + Nên dùng biến trung gian để
trong NNLT. tránh việc tính 1 biểu thức
nhiều lần.
1 + Biểu thức có chứa hằng hoặc
a. 4x - 2y b. x + a. 4*x-2*y
x− y biến kiểu thực, thì giá trị của
b. x+1/(x-y) biểu thức cũng thuộc kiểu thực
a+b+c
b2 − c
c. 2a - c. ((a+b+c)/((2*a /b)+c)) - (b*b-
+c ac
b c)/(a*c)
- Từ việc xây dựng các biểu thức trên, hãy
nêu thứ tự thực hiện các phép toán. N/cứu sgk và trả lời
- Thực hiện trong ngoặc trước;
ngoài ngoặc sau. Nhân, chia,
chia lấy nguyên, chia lấy dư
trước; cộng trừ sau.
3. Nêu vấn đề:Trong toán học ta đã làm quen 3. Nhớ lại và trả lời 3. Hàm số học chuẩn
với một số hàm số học, hãy kể tên? Hàm trị tuyệt đối, hàm căn bậc
- Muốn tính ax2 + 1 ta viết thế nào? 2, hàm sin ...
- Muốn tính x , x , sinx ... ta làm thế - HS trả lời: 2*x*x+1
nào?
Tính các giá trị đó một cách đơn giản người - HS chưa trả lời được
ta đã xây dựng sẵn một số đơn vị chương
trình trong các thư viện chương trình giúp Cách viết cho một số hàm số
người lập trình tính toán nhanh hơn. học chuẩn :
- Treo tranh chứa bảng một số hàm chuẩn. Tên hàm (đối số)
Yêu cầu: Học sinh điền thêm một số thông
tin với các chức năng của hàm.
Nghiên cứu SGK - 26 và quan + Đối số là một hay nhiều biểu
x − 2x + 1 sát tranh vẽ, lên bảng điền tranh thức số học đặt trong dấu
- Cho biểu thức
x2 −1 ngoặc ( ) sau tên hàm .
Hãy biểu diễn biểu thức toán trong biểu thức VD: (SGK - 26).
trong NNLT.
- Suy nghĩ và trả lời:
4. Nêu vấn đề: Trong lập trình ta phải so sánh (abs(x) - sqrt(2*x+1)) /
2 giá trị nào đó trước khi thực hiện lệnh bằng
cách sử dụng biểu thức quan hệ . Biểu thức (sqr(x)-1) 4. Biểu thức quan hệ:
quan hệ còn gọi là biểu thức so sánh được 4. Lắng nghe, suy nghĩ. Cấu trúc chung:
dùng để so sánh 2 giá trị đúng hoặc sai. <BT1> < phép toán quan hệ >
- Cho một ví dụ về biểu thức quan hệ. <BT2>
+ trong đó BT1 và BT2 phải
- Thứ tự thực hiện của biểu thức quan hệ? cùng kiểu.
- Kết quả mà phép toán quan hệ thuộc kiểu + Kết quả của biểu thức quan
dữ liệu nào? - Trả lời: x + y < 2* x*y hệ là TRUE hoặc FALSE.
5. Biểu thức logic là biểu thức quan hệ được VD: - 5 > 2
liên kết với nhau bởi phép toán logic + Tính gtrị của các bthức
- Hãy quan sát biểu thức trong toán học sau: + Thực hiện phép toán qhệ
2< x ≤ 8 và biễu diễn bthức này trong NNLT
Pascal. - Kiểu logic
5. Biểu thức logic.
- Thứ tự thực hiện của bthức lôgic?
5. Lắng nghe, theo dõi sự sự dẫn - Biểu thức logic đơn giản là
dắt của Gv để trả lời hằng hoặc biến logic.
- Kết quả mà bthức lôgic thuộc kiểu dữ liệu - Dùng để liên kết nhiều biểu
nào? - Kết hợp SGK, trả lời: thức quan hệ lại với nhau.
Treo tranh có chứa bảng chân trị của A và B, (x > 2)and(x <= 8)
y/cầu hs điền giá trị cho A and B, A or B, not
B + Thực hiện các bthức qhệ Ví dụ: Cho 3 số a, b, c. Viết
+ Thực hiện p/toán lôgic điều kiện xác định a, b, c là độ
dài 3 cạnh của 1 tam giác.
- Kiểu logic (a+b>c) and (b+c>a)
and (a+c>b)
Suy nghĩ và trả lời bằng cách
điền vào bảng
A A
Not
A B and or
A
B B
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0
4. Hoạt động 4: (8 phút) Câu lệnh gán(:=)
a. Mục tiêu: HS biết được chức năng cấu trúc chung của lệnh gán trong NN Pascal, viết lệnh đúng khi lập trình.
b. Nội dung:
- Lệnh gán dùng để tính giá trị một biểu thức và chuyển nó vào một biến.
- Cấu trúc: Tên biến:= biểu thức;
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
- Mỗi NNLT có cách viết lệnh gán khác nhau, - Quan sát ví dụ và suy nghĩ để 6. Câu lệnh gán.
chẳng hạn như trong Pascal có lệnh gán sau: trả lời. - Lệnh gán là cấu trúc cơ bản
i:=8+3 của mọi NNLT, thường dùng
- Giải thích: Lấy 8 cộng với 3, đem kết quả để gán giá trị cho biến.
đặt vào i , ta được i = 11.
Hỏi: Hãy cho biết chức năng của lệnh gán? + Tính gtrị của bthức
+ Gán gtrị tính được vào tên
- Y/cầu hs Sgk cho biết cấu trúc chung của biến. Cấu trúc:
lệnh gán trong NNLT Pascal < tên _biến>:= <b_thức>;
Cho một số ví dụ về lệnh gán <tên biến> := <biểu thức>; VD:
x:= (b*b-4* a*c);
Cần chú ý gì khi viết lệnh gán? i:= i+1;
Phân tích câu trả lời của học sinh sau đó j:= j-1;
tổng hợp lại Thảo luận và đưa ra ý kiến.
- Gọi 2 Hs lên bảng độc lập trả lời Đ/a: ((M mod 2 = 0) and (N mod 2 = 0)) Or ((M mod
- Gọi Hs khác nhận xét (Đúng, Sai) 2 =1) and (N mod 2 = 1))
Nhận xét đánh giá, cho điểm
2. Hoạt động 2: (10 phút)Tìm hiểu thủ tục nhập dữ liệu vào từ bàn phím.
a. Nội dung:
Dùng để đưa nhiều bộ dữ liệu khác nhau cho cùng một chtrình xữ lí.
Cấu trúc: Read/Readln(<biến 1>, <biến 2>, ...., <biến N>);
b. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. Nêu vđ: Khi giải quyết một bài toán, ta
phải đưa dữ liệu vào máy tính xữ lí, việc đưa
dữ liệu bằng lệnh gán sẽ làm cho chtrình chỉ
có tác dụng với một dữ liệu cố định. Để 1.
chtrình giải quyết được nhiều bài toán hơn, ta
phải sử dụng thủ tục nhập dữ liệu. 1. Nhập dữ liệu từ bản
- Y/cầu Hs n/cứu Sgk cho biết cấu trúc chung phím
của thủ tục nhập dữ liệu trong NNLT Pascal: - N/cứu Sgk và trả lời:
- Ghi bảng Read(<biến1>,…,<biếnN>);
Ví dụ: khi viết chtrình giải ptrình: Ax2 + Bx Readln(<biến1>,…,<biếnN>); Read(<biến1>,…,
+ C = 0, ta phải nhập vào các đại lượng nào? <biếnN>);
viết lệnh nhập? Suy nghĩ, trả lời: Readln(<biến1>,…,
- phải nhập giá trị vào 3 biến A, <biếnN>);
2. Treo bảng chứa chtrình Pascal đơn giản có B, C Ví dụ
lệnh nhập giá trị cho 3 biến. -Lệnhnhập:Readln(A,B,C);
- Mô phỏng kết quả chtrình cho hs quan sát.
Hỏi: Khi nhập giá trị cho nhiều biến, ta phải 2. Quan sát chtrình và kết quả.
thực hiện như thế nào?
- Các giá trị phải được cách nhau
ít nhất một dấu cách (Space) - Các giá trị phải được cách
Ví dụ: để nhập các giá trị 2, -1.5, 7 cho các hoặc kí tự xuống dòng (Enter). nhau ít nhất một dấu cách
biến A, B, C ta có thể gõ: - Quan sát ví dụ của gv hoặc kí tự xuống dòng.
Cách1: 2 1.5 7 Enter
Cách2: 2 1.5 Enter
7 Enter
Hỏi: Lệnh Read và Readln khác nhau như thế
nào? - Suy nghĩ, trả lời
Read: ……
Readln: ……
3. Hoạt động 3:(15 phút)Tìm hiểu thủ tục đưa dữ liệu ra màn hình.
a. Nội dung:
- Dùng để đưa kết quả sau khi xữ kí ra màn hình để người sử dụng thấy.
- Write/Writeln(<thamsố1>,...,<thamsốN>);
b. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. Nêu vđ: Sau khi xữ lí xong, kết quả CT 1. 2. Đưa dữ liệu ra màn hình
được lưu trong bộ nhớ, để nhìn thấy được kết
quả ta phải dùng thủ tục xuất dữ liệu. Write(<thamsố1>,...,
- Y/cầu hs n/cứu Sgk cho biết cấu trúc chung <tham sốN>);
của thủ tục xuất dữ liệu trong NNLT Pascal - N/cứu Sgk và trả lời. Writeln(<thamsố1>,...,
Ví dụ: Khi viết CT giải pt: ax+b=0, ta phải <tham sốN>);
đưa ra màn hình gtrị nghiệm
-b/a, ta phải viết lệnh như thế nào?
2. Để nhập giá trị cho 1 biến từ bàn phím, ta - Writeln(-b/a);
thường đưa thêm câu dẫn dắt sau đó mới đến
câu lệnh nhập. Bằng cách dùng cặp thủ tục 2. Chú ý lắng nghe và ghi nhớ.
write và read.
Ví dụ: Cần nhập 1 số ngdương N (N<=100)
từ bàn phím ta viết câu lệnh như sau:
Write(‘Nhap so nguyen duong
N<=100: ’); Readln(N);
Nhap vao hai so: 3. Quan sát kết quả chtrình và trả Program vd;
5-6 lời một số câu hỏi: Var x, y, z:integer;
-----5-----6----11 Begin
Writeln(‘Nhap vao hai
Hỏi: chức năng câu lệnh writeln(); so: ’);
Readln(x, y);
Hỏi: ý nghĩa của :6 trong câu lệnh write(...); Z:= x+y;
Write(x:6, y:6, z:6);
4. Khi các tham số trong lệnh write() thuộc Viết ra màn hình dòng chữ và Readln
kiểu Char hoặc Real thì qui định vị trí như đưa con trỏ xuống dòng. End.
thế nào? - Dành 6 vị trí trên màn hình để
Vd1: với c = ‘E’ và x = 145 viết số x, 6 vị trí tiếp để viết số
y, …
---------E---145 - Khi tham số có kiểu nguyên
hoặc kiểu kí tự việc qui định
vị trí là giống nhau
Vd2: n = 54 và r = 24.7 <tham số>: <độ rộng>
Vd1: write(c:10, x:6);
---54--24.700 - Khi tham số có kiểu thực
7983.000 phải qui định 2 loại vị trí: vị
trí cho toàn bộ số thực và vị
5. <<Có thể cho hs tìm hiểu ở nhà>> trí cho phần thập phân
Thủ tục Readln và Writeln không có tham số <tham số>: <độ rộng>: <số
có chức năng là gì? chữ số thập phân>
Vd2: writeln(N:5, r:8:3);
Write(7983:8:3)
Vd: Đoạn CT cho kết quả thế nào? 5. N/cứu sgk, suy nghĩ vatr lời:
Writeln(‘DAY THON VI DA’); - Readln đặt cuối chtrình để
Writeln; tạm dừng chtrình cho người
Writeln(‘<Han Mac Tu>’:20); dùng thấy kết quả của chtrình
đưa ra màn hình.
- Writeln để đưa con trỏ
xuống đầu dòng dưới.
DAY THON VI DA
--------------------------------
- - - - - - - - <Han Mac Tu>
_
* Xem phụ lục B sgk: Trang 122: Môi trường Turbo Pascal
Trang 136: Một số thông báo lỗi
Tự làm
3. Hoạt động 3: (15 phút)Bài 9/sgk/36
a. Mục tiêu: Củng cố lại các bước khi xây dựng chương trình, sử dụng các dạng câu lệnh vào ra đã học.
b. Nội dung:Bài 9/sgk/36
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
- Y/cầu hs đọc đề - Đọc đề
Định hướng để hs phân tích bài toán
- Dữ liệu vào: - Dữ liệu vào: a =R
- Dữ liệu ra: - Dữ liệu ra: dtích phần gạch
- Cách tính: chéo (1/2 dtích hình tròn)
- Cách tính: a*a*pi/2
Hs độc lập viết chương trình
Y/cầu hs tự viết chương trình - 1 hs lên bảng
- Nhận xét
- Chỉ định 1 hs lên bảng trình bày
- Y/cầu hs khác nhận xét bài làm trên bảng So sánh, nhận xét
(lỗi cú pháp, thuật toán,…) Program dt;
- Treo bảng có sẵn chtrình đúng để hs so Var a: real;
sánh. Begin
(Pi là hằng có sẵn trong Pascal có giá trị Write(‘nhap gia tri a (a>0) ‘);
3.1415926536) readln(a);
Writeln(‘Dien tich can tim la: ‘,
Chạy thử chtrình a*a*pi/2 :20:3);
Nếu a=2 thì kquả: 6.2832 Readln;
End.
IV. ĐÁNH GIÁ CUỐI BÀI (5phút)
1. Nội dung đã học
2. Câu hỏi, bài tập về nhà
Xem trước bài: Cấu trúc rẽ nhánh, sgk trang 38
IF
S
IF
III. PHƯƠNG PHÁP: Giảng giải + hoạt động của học sinh.
IV. HOẠT ĐỘNG DẠY HỌC
1. Hoạt động 1: (5 phút) Kiểm tra bài cũ
Hđ của GV Hđ của HS
Cho 2 số nguyên a, b; tìm Max(a,b). 2 hs lên bảng trả lời độc lập.
Yêu cầu: viết phần tên, phần khai báo, và câu lệnh nhập
a, b bằng Pascal. Nêu thuật toán tìm Max(a,b). Hs khác nhận xét
Gọi 2 hs lên bảng
Nhận xét, đánh giá, cho điểm
Đ/án:
Program baitap;
Var a, b, max : integer;
Begin
readln(a,b);
end.
2. Hoạt động 2: (5 phút) Tìm hiểu cấu trúc rẽ nhánh thiếu và đủ
Hoạt động của GV Hoạt động của HS Nội dung
- Với bài toán trên làm thế nào để tìm Max(a, - So sánh: 1. Rẽ nhánh:
b)? + Nếu a>b thì max = a. * Một số mệnh đề có dạng
+ Nếu a<b thì max = b. điều kiện:
- Hãy mô tả thuật toán bằng NNLT Pascal? - Chưa làm được + Dạng thiếu: Nếu…thì…
- Hãy cho biết câu: Nếu …thì … là loại câu + Dạng đủ: Nếu … thì …
gì? - Câu điều kiện. nếu không thì …
+ Tính delta
+ Nếu delta<0 thì pt vô nghiệm
+ Nếu delta >=0 thì kết luận pt
có nghiệm: Program ptbac2;
x1=(-b+sqrt(delta))/(2*a) Var a, b, c, d, x1, x2: real;
- Ta cần bao nhiêu lệnh rẽ nhánh để mô tả các x2=(-b-sqrt(delta))/(2*a) Begin
bước trên? - Hai câu lệnh rẽ nhánh dạng Write(‘nhap a, b, c ‘);
khuyết hoặc 1 lệnh rẽ nhánh Read(a,b,c);
- Y/cầu hs viết chtrình hoàn thiện (1hs trình dạng đầy đủ. D:=b*b-4*a*c;
bày trên bảng) - 1 hs lên bảng viết chtrình If d<0 then write(‘pt vo
Gọi hs khác nhận xét, đánh gía nghiem’)
- Chuẩn hóa lại chtrình cho cả lớp bằng việc Lấy ý kiến của 2-3hs else
treo bảng chtrình mẫu của gv đã chuẩn bị. begin
x1=(-b+sqrt(delta))/(2*a);
x2=-b/a-x1;
write(‘x1= ’,x1:6:2,’ x2= ’,
x2:6:2)
end;
readln;
End.
IV. ĐÁNH GIÁ CUỐI BÀI (5phút)
1. Nội dung đã học
Cấu trúc chung và sơ đồ thực hiện của cấu trúc rẽ nhánh IF
2. Câu hỏi, bài tập về nhà
Xem trước bài: Cấu trúc lặp, sgk, trang 42
- Trả lời câu hỏi 1, 2, 4 sgk trang 50, 51
- Viết chtrình nhập vào 3 số a, b, c và in ra màn hình giá trị lớn nhất trong 3 số đó.
- Viết chtrình giải pt: ax4 + bx2 + c = 0.
a. Mục tiêu: Hs thấy được sự cần thiết của cấu trúc lặp trong lập trình.
b. Nội dung:
1 1 1 1
- Bài toán 1: Viết CT tính tổng S= + + + ... +
a a +1 a + 2 a + 100
- Bài toán 2: Ông An có số tiền là S, ông gửi tiết kiệm ngân hàng với lãi suất 1,5%/tháng. Hỏi sau 12 tháng (không
rút tiền lãi hàng tháng) ông ta được số tiền là bao nhiêu?
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. Nêu bài toán 1 đặt vấn đề 1. Chú ý quan sát bài toán đặt Bài toán 1:
vấn đề. Viết CT tính tổng
- Hãy xác định công thức toán học để tính - Rất khó xác định S= +
1 1
+
1
+ ... +
1
tổng a a +1 a + 2 a + 100
Gợi ý phương pháp: Ta xem S là một cái xô,
các số hạng là những cái ca có dung tích khác
nhau, khi đó việc tính tổng trên tương tự như Theo dõi gợi ý.
việc đổ các ca nước vào xô S.
- Có bao nhiêu lần đổ nước như vậy?
- Mỗi lần đổ 1 lượng là bao nhiêu? - Thực hiện 100 lần
1
- Phải viết bao nhiêu lệnh để thể hiện việc - Mỗi lần đổ
a+i
này? - Viết 100 lệnh.
2. Nêu bài toán 2 để đặt vấn đề tiếp tục.(treo Bài toán 2: Ông An có số
bảng chứa nội dung bài toán) tiền là S, ông gửi tiết kiệm
2. Chú ý quan sát và trả lời các
- Em hiểu như thế nào về cách tính tiền gửi ngân hàng với lãi suất
câu hỏi.
tiết kiệm trong bài toán 2. 1,5%/tháng. Hỏi sau 12 tháng
- Với số tiền S sau mỗi tháng sẽ
(không rút tiền lãi hàng
có số tiền lãi 0.015*S.
tháng) ông ta được số tiền là
Số tiền lãi sẽ được cộng vào số
bao nhiêu?
tiền ban đầu để tính lãi cho tháng
tiếp theo:
- Số tiền thu được sau tháng thứ nhất là bao
nhiêu? - S := S + 0.015*S
- Theo y/cầu của bài toán ta cần thực hiện
tính bao nhiêu lần như vậy? - Thực hiện 12 lần.
Dẫn dắt: Chương trình được viết như vậy sẽ - Tập trung theo dõi gv trình bày.
rất dài, khó đọc, dễ sai sót. cần có một cấu
trúc điều khiển việc lặp lại thực hiện các
công việc ở trên.
- Trong tất cả mọi NNLT đều có một cấu trúc
điều khiển việc thực hiện lặp lại với số lần đã
định trước. 3. Thảo luận theo nhóm để viết
3. Chia lớp thành 4 nhóm: 2 nhóm viết t/toán thuật toán:
btoán1, 2 nhóm viết t/toán btoán 2. Btoán 1:
B1: N←0; S←1/a;
B2: N←N+1;
B3: Nếu N>100 thì chuyển sang
B5
B4: S←S+1/(a+N), quay lại B2;
B5: Đưa ra S, rồi kết thúc.
Btoán 2:
B1: Nhập S; I←0;
- Thu kết quả các nhóm, treo lên bảng, gọi hs B2: I ←I + 1;
nhóm khác nhận xét, đánh giá. B3: Nếu I >12 thì chuyển sang
- Chuẩn hóa lại thuật toán cho hs. B5;
B4: S←S + 0.015*S, quay lại B2
Cấu trúc chung của câu lệnh lặp For. Sơ đồ thực hiện của lệnh lặp For
2. Câu hỏi, bài tập về nhà
- Sử dụng câu lệnh For hoàn thành chương trình bài toán 1 và 2 đã nêu ở đầu tiết.
- Giải bài tập 5a, 6 sgk/51
- Xem trước phần ví dụ của nội dung cấu trúc lặp có số lần biết trước.
(chỉnh sửa lại chtrình của hs) * Ghi nhớ những phần sửa begin
chữa của gviên. A := A + 0.015*A;
2. Nêu nội dung ví dụ 2 T := T + 1;
Phân tích để xác định <điều kiện> và <lệnh 2. Tập trung theo dõi để thấy end;
cần lặp>. công việc cần thực hiện Writeln(‘Phai cho ’,T,’ thang’);
Minh họa khi tìm ucln của 2 số Readln
15 và 25 End.
M 15 15 5 5
N 25 10 10 5
Trả lời: ucln (15, 25) = 5
Hỏi:
- Điều kiện để tiếp tục lặp là gì? - Điều kiện: M<>N
- Các lệnh cần lặp là gì? - M := M – N; hoặc
N := N – M;
- Y/cầu hs nêu thuật toán tìm ucln của 2 số - T/toán:
đó. B1: Nếu m=n thì ucln=m,
dừng;
B2: Nếu m>n thì m:=m-n
- Y/cầu hs viết chương trình hoàn thiện bài ngược lại n:=n-m, qlại B1.
toán ở nhà.
Củng cố: Hãy nêu 2 câu hỏi cần đặt ra khi Suy nghĩ và trả lời:
gặp bài toán dạng này? + Điều kiện nào để lặp lại
+ Những lệnh nào cần lặp lại
IV. ĐÁNH GIÁ CUỐI BÀI (5phút)
1. Nội dung đã học
- Cấu trúc chung của lệnh lặp While
- Sơ đồ thực hiện của lệnh While và sự thực hiện của máy.
2. Câu hỏi, bài tập về nhà
- Giải bài tập 5b, 7, 8 sgk trang 51.
- Đọc lại bài lệnh rẽ nhánh IF và làm các bài tập liên quan chuẩn bị cho tiết sau thực hành.
- Xem trước nội dung bài thực hành số 2: sgk trang 49-50
- Xem thêm nội dung phụ lục B, sgk trang 131: Lệnh rẽ nhánh và lặp (Case ... of Và Repeat ...
Until)
I. Mục tiêu:
1. Kiến thức: Củng cố cho học sinh kiến thức về cấu trúc rẽ nhánh và cấu trúc lặp.
2. Kỹ năng:
Rèn luyện kỹ năng vận dụng và linh hoạt trong việc lựa chọn cấu trúc rẽ nhánh và cấu trúc lặp để giải
quyết bài toán đặt ra.
3. Tư duy, thái độ:
Rèn luyện ý thức tự giác học tập tích cực, ham thích tìm hiểu, chủ động trong giải quyết các bài tập.Rèn
luyện tư duy khoa học, tư duy logic.
II. Chuẩn bị của giáo viên và học sinh:
GV: - Soạn giáo án.
HS: - Học bài cũ và chuẩn bị bài tập.
III. Phương pháp dạy học: Gợi mở và thuyết trình.
IV. Tiến trình bài dạy:
1. Hoạt động 1: (7phút) Kiểm tra bài cũ
Câu hỏi 1(H1): Trình bày cấu trúc câu lệnh rẽ nhánh và cấu trúc lặp ?
- 1 HS lên bảng trả lời. - GV gọi 1 HS lên trả lời H1. -Rẽ nhánh
If <btđk > then <lệnh 1> else
<lệnh 2>;
7’ If <btđk > then <lệnh 1>;
- Lặp For
For <biến đếm>:= <giá trị đầu>
To <giá trị cuối> Do <lệnh>;
For <biến đếm>:= <giá trị đầu>
Downto <giá trị cuối> Do
<lệnh>;
- Cả lớp theo dõi và nhận - Lặp While
xét bổ sung (nếu có). - GV yêu cầu cả lớp nhận xét câu trả While<điềukiện>Do<lệnh>;
lời của bạn.
- GV nhận xét và đánh giá.
ghép chung 7 biến trên thành một dãy và đặt 3. Lắng nghe
cho nó chung 1 tên và đánh cho mỗi phần tử
một chỉ số.
- GV giới thiệu bài mới: Kiểu mảng. ξ11. KIỂU MẢNG
Chúng ta chỉ xét hai kiểu mảng thông dụng: 4. N/cứu sgk và trả lời:
Kiểu mảng một chiều và kiếu mảng hai Mảng một chiều là dãy hữu 1.Kiếu mảng một chiều
chiều. hạn các phận tử cùng kiểu dữ
4. Y/cầu hs tham khảo sgk và hỏi: Em hiểu liệu. Các ptử trong mảng a. K/n mảng một chiều
như thế nào về mãng một chiều? cùngtên và phân biệt nhau (sgk)
bởi chỉ số.
- Trả lời:
+ Kiểu của các p/tử.
+ Cách đánh số các p/tử.
Hỏi: Để mô tả mảng một chiều, ta cần xác
định những yếu tố nào?
2. Hoạt động 2: (20 phút)Tạo kiểu mảng một chiều và khai báo biến mảng
Hđ của GV Hđ của HS Nd ghi bảng
1. Y/cầu hs tìm hiểu phần khai báo một lời
giải khác cho bài toán trên trong trường hợp
tổng quát (N ngày), có sử dụng mảng 1 chiều.
Hỏi: Chỉ ra phần khai báo mảng trong phần
khi báo của chtrình? - Trả lời
* Ghi lại phần khai báo lên bảng Type
- Ý nghĩa của các khai báo trên là gì? Trả lời: Kmang1=array [1..Max] of real;
Dòng 1: Kbáo kiểu Var Nhietdo: Kmang1;
mảng một chiều
gồm Max số thực.
Dòng 2 : Kbáo biến
2. Giới thiệu cú pháp khai báo kiểu mảng một mảng Nhietdo qua b. Khai báo (Có hai cách)
chiều. kiểu mảng + Kbáo gián tiếp: (sgk)
-Khái quát hoá, ta có cú pháp khái báo biến + Kbáo trực tiếp: (sgk)
mảng một chiều
* Lưu ý về cách chọn <Kiểu chỉ số> Lắng nghe và ghi
3. Y/cầu cho ví dụ khai báo mảng? chép
Gọi hs khác: Ý nghĩa của khai báo bạn vừa Ví dụ 1:
viết? Var Nhietdo: array [1..Max] Of real;
3. Suy nghĩ và trả
* Lưu ý hs tránh nhầm lẫn giữa tên kiểu dữ lời
liệu mảng và biến kiểu mảng. Var Dhs2: array Ví dụ 2: Khai báo mảng tối đa 100 số
[1..100] of real; nguyên (chỉ số đầu tiên là 1)
-Hỏi: (Treo bảng) Trong ba cách khai báo ở - Kbáo trực tiếp Ta có các cách sau:
ví dụ 2, thì cách nào tốt hơn? mảng có tên Dhs2 Cách 1:
gồm 100 p/tử có Var a: Array[1..100] Of Integer;
kiều thực. Cách 2:
Trả lời: Const Nmax = 100;
- Hỏi: Dựa vào ví dụ trang 55 SGK, cho biết: Cách 2 & 3, vì ta dễ Var a: Array[1..Nmax] Of integer;
+ Tên kiểu mảng? dàng điều chỉnh Cách 3:
+ Số phần tử của mảng? kích thước của Const Nmax = 100;
+ Mỗi phần tử của mảng thuộc kiểu gì? mảng Type MyArray = Array [1..Nmax] Of
4. Cách tham chiếu đến từng phần tử của Integer;
mảng: Var a:MyArray;
Y/cầu hs lấy ví dụ(sử dụng các khbáo ở trên)
.ArrayReal
.301 phần tử
.Real
1. Nêu đề bài toán (ghi bảng) 1. Đọc đề bài toán và trả lời: Bài 1: Viết CT tạo mảng A gồm N
In: mảng A, số k (N≤100) số nguyên. Tính tổng các
Y/cầu hs xác định In/Output của bài toán. Out: Tổng (S) các p/tử trong phần tử của mảng là bội của một số
mảng A là bội của k. nguyên dương k cho trước.
2. Ở lớp 10 ta đã xây dựng t/toán cho bài
toán này rồi. Y/cầu hs nhắc lại t/toán. 2. 1-2 hs nhắc lại t/toán
3. Y/cầu hs cho biết các việc chính cần
thực hiện trong chtrình là gì?
3. Trả lời
+ Cho biết số ptử của mảng
A.
+ Nhập giá trị cho các ptử
4. Y/cầu hs cho biết các biến chính cần của mảng A
sử dụng là gì? + Tính tổng.
4. suy nghĩ và trả lời Var S, n, k, i : integer;
- Y/cầu hs khác lên viết phần khai báo các - mảng A A: array[1..100] of integer;
biến đó? biến đơn: N, k, S. Begin
- Lên bảng trình bày Write(‘Nhap n = ’); readln(n);
5. Tiếp tục y/cầu hs lên viết phần chtrình Var S, N, k: integer; {tao mang}
tạo giá trị cho các ptử của mảng A. (lưu ý A: array[1..100] of integer; For i:=1 To n Do
nhập số lượng ptử của mảng trước) 5. Thực hiện tương tự các CT begin
Gọi hs khác nhận xét trước (Lên bảng trình bày) write(‘phan tu thu ’,i,’ =’);
* Chỉnh sửa đoạn chtrình hs vừa hoàn readln(A[i]);
thành. Đứng tại chổ n/xét, (bổ sung end;
6. Để viết tiếp đoạn chtrình còn lại (tính nếu sai sót) write(‘Nhap k = ’); readln(k);
tổng) theo thuật toán ta phải kiểm tra lần S := 0; {khoi tao S ban dau}
lượt tất cả các ptử của mảng từ A[1] đến 6. Chú ý sự dẫn dắt vấn đề {tinh tong}
A[n]. vậy ta sử dụng câu lệnh gì ở đây? của gv, suy nghĩ và trả lời: For i:=1 To n Do
- Hỏi: trước khi tính tổng, ngoài mảng A Sử dụng cấu trúc lặp For. If A[i] mod k = 0 Then
trong CT cần có thêm gì không? (GV bổ S := S + A[i];
sung) -Giá trị k và Biến S := 0 Writeln(‘Tong can tinh la ’, S);
- Y/cầu hs khác lên viết đoạn chtrình còn End.
lại?
** Chuẩn hoá lại chtrình. - Lên bảng trình bày
3. Hoạt động 3: (15 phút) Mở rộng bài toán có vận dụng mảng một chiều
a. Nội dung:
Cho một số câu lệnh:
(1) ...... am, duong : integer;
(2) ...... am := 0; duong := 0;
(3) ...... If A[i] >0 Then duong := duong + 1 Else if A[i]<0 Then am := am + 1;
(4) ...... Writeln(duong: 4, am:4);
Hãy đưa các câu lệnh đó vào những vị trí thích hợp trong chtrình bài 1, để có được chtrình đưa ra số các số
dương và số các số âm trong mảng.
2. Hoạt động 2:(15 phút) Phân tích bài toán trước khi viết chương trình
a. Nội dung: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
b. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. Nêu bài toán, y/cầu hs xác định In/Output 1. Đọc đề và xác định bài toán. Số nguyên dương N (N≤250)
của bài toán. In: N (N≤250), dãy A và dãy A gồm N số nguyên
(A[i]<500). dương, mỗi số đều không vượt
Out: dãy A không giảm quá 500. Hãy sắp xếp dãy A
2. Y/cầu hs trình bày lại thuật toán sắp xếp 2.Thuật toán thành dãy không giảm.
tráo đổi. (Đã học ở lớp 10) B1: Nhập N, dãy A ;
B2: jN;
B3: nếu j<2 thì đưa ra dãy đã
được sắp xếp, KT;
B4: jj-1; i1;
B5: Nếu i>j thì Qlại B3;
B6: Nếu A[i]>A[i+1] thì tráo
đổi A[i] và A[i+1];
3. Y/cầu cả lớp n/cứu lại t/toán và trả lời các B7: Quay lại B5.
câu hỏi:
- Biến j sẽ nhận các giá trị trong phạm vi
nào? Tương tự với biến i? Trả lời:
- Có nhận xét gì về 2 biến i,j? + 2 ≤ j ≤ N, 1 ≤ i ≤ j-1
(với mỗi giá trị j, i lần lượt nhận các giá trị từ + i phụ thuộc theo j
1 đến j-1)
3. Hoạt động 3:(15phút)Vận dụng kiểu dữ liệu mảng một chiều để mô tả t/toán trên trong Pascal
Hđ của GV Hđ của HS Nd ghi bảng
1. Y/cầu hs xác định những nội dung 1. Suy nghĩ và trả lời:
chính cần viết trong chtrình. +Khai báo biến
+Tạo mảng A
* Chốt lại các nội dung chính cần viết. +Sắp xếp mảng A tăng dần
2. Yêu cầu từng hs lên bảng viết từng nội +Đưa mảng A đã sắp xếp ra
dung của chương trình. màn hình
- Khai báo những biến gì? 2. Lên bảng trình bày từng nội Var A: array[1..300] of integer;
dung. N, i, j :integer;
- Tạo mảng là làm những gì? - mảng A, biến đơn N, i, j Begin
- Nhập sl p/tử của mảng và {tao mang}
nhập giá trị cho các p/tử trong Write(‘Nhap n = ’); readln(n);
mảng For i:=1 To n Do
begin
- Sắp xếp mảng write(‘phan tu thu ’,i,’ =’);
Hỏi: Làm thế nào để tráo đổi giá trị 2 biến readln(A[i]);
cho nhau (a[i] và a[i+1])? end;
Tl: sử dụng thêm biến trung {sap xep mang}
gian t: For j := N Downto 1 Do
t:=a[i]; for i:=1 to j - 1 do
- Đưa mảng ra màn hình a[i]:=a[i+1]; If a[i] > a[i+1] then
a[i+1] :=t begin
t:=a[i]; a[i]:=a[i+1];
a[i+1] :=t
end;
Viết lại chương trình vào vở. {dua ra mang da sap xep}
Writeln (‘Mang da duoc sap
xep ’);
For i :=1 To N Do write (a[i]:4);
Readln
End.
?7: Lệnh s:=s+A[i]; được thực hiện bao nhiêu lần? HS7: Trả lời.
GV: Nhận xét.
GV: Cho HS chạy thử chương trình để thấy kết quả. HS: Chạy thử chương trình trên máy của
mình.
GV: Nhắc nhở HS lưu chương trình đã chạy tốt ở câu a. HS: Lưu chương trình.
GV: Trình chiếu các câu lệnh của câu 1b. HS: Xem.
?8: Đưa biến Posi và Neg vào vị trí nào trong câu 1a? HS8: Trả lời
GV: Nhận xét.
?9: Nhiệm vụ của câu lệnh: HS9: Trả lời.
If A[i]:>0 then Posi:=Posi+1 else If A[i]<0 then Neg:=Neg+1; ?
GV: Nhận xét.
GV: Yêu cầu HS đưa câu lệnh trên vào chương trình ở câu 1a. HS: Thực hiện.
GV: Yêu cầu HS chạy chương trình và báo cáo kết quả. HS: Lưu và chạy chương trình, báo cáo
KQ.
4. Củng cố:
Yêu cầu HS sửa lại chương trình trên để có thể nhập một mảng có 10 phần tử từ bàn phím.
5. Dặn dò:
- HS về nhà làm bài tập 4.15 trong sách bài tập.
- Chuẩn bị chương trình bài 2 bài thực hành 3 chương IV trong SGK.
1. Hoạt động 1: Ôn lại kiến thức để chuẩn bị làm bài tập và thực hành
Hoạt động GV Hoạt động HS Ghi bảng
Cách khai báo mảng trực tiếp ? gián - Cách khai báo trực tiếp:
tiếp ? var <tên biến mảng>: array[kiểu chỉ số] of
<kiểu phần tử>;
- Cách khai báo gián tiếp:
type<tên kiểu mảng> = array[kiểu chỉ số] of
<kiểu phần tử>;
var <tên biến mảng> : <tên kiểu mảng>
2. Hoạt động 2: Đọc đề và tìm hiểu yêu cầu bài tập 2 SGK
Hoạt động GV Hoạt động HS Ghi bảng
Yêu cầu HS đọc đề BT2 SGK Đọc đề và tìm hiểu yêu cầu - Tìm phần tử có giá trị lớn nhất
Yêu cầu của bài toán là gì? của đề trong mảng
Trả lời câu hỏi - In ra màn hình chỉ số nhỏ nhất của
phần từ có giá trị lớn nhất
3. Hoạt động 3: Đọc chương trình và chạy chương trình trên giấy để hiểu thuật toán của chương trình
Hoạt động GV Hoạt động HS Ghi bảng
- Việc tạo mảng dữ liệu được thể hiện ở Thể hiện ở câu lệnh for thứ
phần nào trong chương trình ? nhất của chương trình. Treo bảng phụ chương trình của bài
- Tìm giá trị lớn nhất và đưa ra màn toán.
hình chỉ số nhỏ nhất của phần từ có giá - Từ j:=1 đến cuối chương
trị lớn nhất được thể hiện ở phần nào ? trình B1: j=1, i=2, A[i]=2, A[j]=4
- Vai trò của biến j trong chương trình A[i]< A[j]
nhằm mục đích gì ? B2: j=1, i=3, A[i] = 5, A[j] =4
- Thực hiện chương trình với giá trị của - Giữ lại chỉ số của phần tử có A[i]>A[j] , j=3
mảng nhập vào cụ thể như sau: giá trị lớn nhất. B3: j=3, i=4, A[i]=7, A[j]=5
4 2 5 7 6 7 - A[i]>A[j] j=4
Hãy dựa vào phần tìm giá trị lớn nhất - Thực hiện yêu cầu của GV. B4: j=4, i=5, A[i]=6, A[j]=7
và chạy chương trình trên giấy nháp và A[i]<A[j]
cho kết quả ? B5: j=4, i=6, A[i]=7, A[j]=5
- Gọi HS lên bảng chạy lại chương kết quả chỉ số: 4
trình A[4] = 7
4. Hoạt động 4: Chỉnh sửa chương trình để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất
Hoạt động GV Hoạt động HS Ghi bảng
- Có cần giữ lại đoạn chương trình tìm - Có
giá trị lớn nhất không ?
- Để đưa ra màn hình tất các chỉ số của
các phần tử đạt giá trị lớn nhất có cần - Có
duyệt lại các phân tử của mảng không ?
- Cần thêm lệnh nào có thê in được tất
cả các chỉ số của các phần tử có giá trị
lớn nhất ?
- Đưa câu lệnh đó vào vị trí nào của - Trả lời câu hỏi. For i:=1 to n do
chương trình ? - Đưa vào cuối chương trình If A[i] = A[j] then write (i);
5. Hoạt động 5: HS chạy chương trình trên máy tính và cho kết quả:
1. Giáo viên: Bảng phụ chứa chương trình tạo và in mảng hai chiều gồm 5 hàng, 7 cột. Tính và in ra màn hình
tổng các phần tử trong mảng.
2. Học sinh: SGK, vở soạn.
III. PHƯƠNG PHÁP: Thuyết trình, nêu vấn đề, hỏi đáp.
IV. HOẠT ĐỘNG DẠY HỌC
1. Hoạt động 1: (8 phút) Kiểm tra bài cũ
Hđ của GV Hđ của HS
Viết CT tạo và in ra màn hình mảng A gồm n phần tử 10
phần tử. Mỗi phần tử là một số nguyên. Cho biết có bao
nhiêu phần tử trong mảng có giá trị bằng số nguyên k.
2. Hoạt động 2: (7 phút)Tìm hiểu ý nghĩa của mảng hai chiều.
Đặt vấn đề: Ở tiết trước, chúng ta đã tìm hiểu cách khai báo mảng, cách tạo mảng và truy cập đến một phần tử trong
mảng một chiều. Hôm nay, chúng ta sẽ tìm hiểu các vấn đề đó đối với mảng hai chiều.
Hđ của GV Hđ của HS Nd ghi bảng
- GV yêu cầu HS xem bảng nhân ở SGK. - Xem bảng nhân ở SGK trang §11. KIỂU MẢNG (tt)
- Với kiến thức về mảng một chiều đã học, 59.. 2. Kiểu mảng hai chiều:
em hãy đưa ra cách sử dụng kiểu mảng đó để - Sử dụng 9 mảng một chiều, a. Xét bài toán: Bảng nhân
lưu trữ bảng nhân? mỗi mảng lưu một hàng của (SGK).
- Với cách lưu trữ như vậy, ta phải khai báo bảng.
bao nhiêu biến mảng?
- Khai báo như vậy có những hạn chế nào? - TL: Khai báo 9 biến mảng
- Để khắc phục những hạn chế này, ta có thể một chiều.
mô tả dữ liệu của bảng nhân là kiểu mảng
một chiều gồm 9 phần tử, mỗi phần tử là - TL: Phải khai báo nhiều biến,
mảng một chiều có 10 phần tử. Như vậy, ta chương trình phải viết nhiều
có thể biểu diễn bảng nhân bằng kiểu dữ liệu lệnh để tạo và in giá trị của
mảng hai chiều. mảng.
- Yêu cầu HS nhận xét về mảng hai chiều?
- Chú ý lắng nghe.
- Nêu khái niệm mảng hai chiều. - TL: Nếu coi mỗi hàng của
- Để mô tả kiểu mảng hai chiều, cần xác định mảng hai chiều là một phần tử
những yếu tố nào? thì ta có thể coi mảng hai chiều
là mảng một chiều mà mỗi
phần tử của nó là mảng một
chiều.
- HS trả lời.
* Khái niệm mảng hai chiều:
- Tham khảo SGK và trả lời. (SGK).
* Các yếu tố cần xác định để
mô tả kiểu mảng hai chiều.
(SGK)
3. Hoạt động 3:(10’)Tìm hiểu cách khai báo biến mảng hai chiều và cách tạo/in mảng hai chiều.
Hđ của GV Hđ của HS Nd ghi bảng
b. Khai báo:
♦ C1: Trực tiếp:
- GV đưa ra hai cách khai báo biến mảng - HS chú ý theo dõi. Var <tênbiếnmảng>:array [kiểu
hai chiều. chỉ số hàng, kiểu chỉ số cột] of
<kiểu phần tử>;
♦ C2: Gián tiếp:
- GV giải thích các thành phần trong khai - Chú ý lắng nghe. Type <tên kiểu mảng> =
báo. array[kiểu chỉ số hàng, kiểu chỉ số
cột] of <kiểu ptử>;
4. Hoạt động 4: (17 phút)Tìm hiểu cách viết chương trình đơn giản.
Hđ của GV Hđ của HS Nd ghi bảng
d. Các ví dụ:
Ví dụ 1: Viết chương trình tạo và in
mảng hai chiều gồm m hàng, n cột.
program Tao_in_mang;
- GV hướng dẫn HS cách tạo mảng hai - HS chú ý theo dõi. var i, j, m, n: integer;
chiều có m hàng, n cột. A: array [1..100,1..100] of
integer;
begin
write ('Nhap so hang m = '); readln
(m);
write ('Nhap so cot n = ');
readln (n);
{Tạo mảng}
for i := 1 to m do
for j := 1 to n do
begin
write('Nhap A[',i, ',' ,j,']=');
readln (A[i , j]);
- GV hướng dẫn HS cách in mảng hai end;
chiều vừa tạo. - Chú ý lắng nghe và theo dõi. {In mảng}
for i:= 1 to m do
begin
for j := 1 to n do
write (A[i , j]:4);
writeln;
- Gọi HS lên bảng sửa lại phần khai báo - HS lên bảng làm. end;
và các câu lệnh nhập cho phù hợp với + Không khai báo m,n. readln
bài này. + Khai báo thêm biến T. end.
+ Viết hai vòng for của lệnh tạo Ví dụ 2: Tạo và in mảng hai chiều
và in mảng là: gồm 5 hàng, 7 cột. Tính và in ra
for i := 1 to 5 do màn hình tổng các phần tử trong
for j := 1 to 7 do mảng.
- GV hướng dẫn HS cách tính tổng. - HS chú ý theo dõi.
- GV treo bảng phụ viết sẵn chương
trình cho HS tham khảo. - Theo dõi chương trình trên T:= 0;
- Chiếu thuật toán đã được liệt kê các bước. - Quan sát, đối chiếu thuật toán liệt kê CT( SGK/65)
4. Tìm hiểu chương trình với CT (SGK).
4. Xem CT và tìm hiểu một số biến,
- Vai trò của biến i, j trong CT? lệnh.
- Đoạn lệnh nào thực hiện tráo đổi giá trị 2 - TL: Dùng làm biến chỉ số.
phần tử liền kề của mảng? - TL:3 lệnh: tg := a[i];
- Treo bảng CT chuẩn bị sẵn. a[i]:= a[i+1];
Giải thích một số lệnh của CT. a[i+1]:= tg;
- Chú ý, lắng nghe, quan sát và ghi
nhớ.
3. Hoạt động 3: Chạy CT câu a.
TG Hđ của GV Hđ của HS Ghi bảng
- Yêu cầu hs tự nhập dữ liệu với CT có sẵn. - Chạy CT, nhập dữ liệu, xm kết quả.
- Giúp hs phát hiện và sữa lỗi. - Chỉnh sữa CT thông qua các thông
báo lỗi.
- Thuật toán trên tiến hành đưa số lớn thứ j - Chú ý hiểu rõ thêm về CT.
về đến vị trí j sau mỗi vòng lặp:
For i:= 1 to j-1 do
I. Mục tiêu
1. Kiến thức
Tiếp tục củng cố kiến thức khi lập trình với dữ liệu kiểu mảng.
2. Kĩ năng
Nhận xét, phân tích và đề xuất các cách giải bài toán sao cho chương trình chạy nhanh hơn.
3. Thái độ
Tự giác, chủ động trong khi lập trình.
II.Chuẩn bị
Gv:Bảng phụ viết sẵn chương trình, phòng máy, project.
Hs: Sgk, CT đã được viết sẵn
III. Phương pháp
IV. Tiến hành dạy học
1. Hoạt động 1:(3') Ôn lại kiến thức chuẩn bị thực hành
Hđ của GV Hđ của Hs
Hỏi 1: cách khai báo kiểu mảng 1 chiều. Tl: có 2 cách
+ gián tiếp:
+ trực tiếp:
Hỏi 2: (tuỳ từng lớp)
2. Hoạt động 2:(13') Nêu đề bài toán và tìm hiểu
Hđ của GV Hđ của HS Ghi bảng
1. Ghi đề bài lên bảng. 1. Quan sát đề và lắng nghe câu hỏi Đề: Cho mảng A gồm n
của gv. phần tử. Viết CT tạo ra
2. Tìm hiểu đề 2. Trả lời câu hỏi. mảng B[1..n], trong đó B[i]
Y/cầu hs xác định dữ liệu vào/ra của bài - Vào: là tổng của i phần tử đầu
toán? - Ra: tiên của mảng A.
3. Gv lấy ví dụ minh hoạ 3. Theo dõi ví dụ minh hoạ
A 4 5 1 2 3 7
1 2 3 4 5 6
B
1 2 3 4 5 6 Ban
đầu: mọi B[i] = 0
Hỏi: mỗi B[i] được tạo mới bằng bao
nhiêu? Tl: (2-3hs)
Tóm lại: B[i] = A[1] + …+ A[i]
i
=
A[j ]
j=1
Giải thích từng phần của CT tương ứng với 5. Chú ý, lắng nghe, quan sát và ghi
phần trả lời được ghi bảng của hs. nhớ.
3. Hoạt động 3: (5')Tối ưu chương trình
Hđ của GV Hđ của HS Ghi bảng
1. Dựa vào phần phân tích ví dụ thuật toán ở trên.
Gv hỏi: So sánh giá trị B[i] và B[i-1]?
Đặc biệt: B[1]=? Tl: B[i]:=B[i-1]+A[i]
2. Chta luôn hướng tới thuật toán tối ưu. Đối với bài Tl: B[1]=A[1]
toán này theo phân tích ở trên ta đã tận dụng được 2. Chú ý theo dõi
kết quả của việc tính tổng i -1 phần tử có sẵn ở bước
trước.
- Do vậy ta có được:
+ Số lượng phép toán '+' ít hơn
+Chỉ dùng 1 vòng lặp for
-> chỉ sd 1 biến chỉ số i cho cả 2 mảng A, B.
3. Cải tiến lại chtrình.
Gv treo bảng chtrình được cải tiến. {tùy đối tượng hs}
2. Hoạt động 2: (15 phút)Tìm hiểu ý nghĩa của các hàm xử lí trên xâu
a. Nội dung: Các hàm length(), copy(), pos(), upcase()
b. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
d) các hàm
+ Nêu ý nghĩa hàm length() Chú ý lắng nghe Length(s)
Length(st) = ?? Vd: + length(‘11A2’)=4
Length(‘’) =?? Tl: 9 + St:=’xuan xanh’
+Nêu ý nghĩa hàm copy() Tl: 0 Length(st)=9
+Nêu ý nghĩa hàm pos()
Pos(‘51’,s) = ?? Copy(S, vt, N)
+ Nêu ý nghĩa hàm Upcase() Vd: Copy(st, 1, 4) = ‘xuan’
Pos(s1,s2)
Treo bảng Tl: 8 Vd: S=’Lop co 51 hs’
* Y/cầu hs n/cứu và điền vào Pos(‘51’,s) = 8
chổ trống trong bảng Upcase(ch) , ch là 1 kí tự
Suy nghĩ và lên bảng điền kết quả và nội Vd: upcase(s[5])
dung còn thiếu vào bảng s=’Lop Co 51 hs’
BẢNG 3
Ví dụ 1 Ví dụ 2 Ví dụ 3 Ví dụ 4
Xâu st ‘Co 25 nu’ ‘Tong so 51 hs’ ‘Tong so 51 hs’ ’51 hs’
Thao tác length(st) pos(‘51’,st) Copy(st,…,…) Upcase(st[4])
kết quả … … ’51 h’ …
3. Hoạt động3: (20 phút)Vận dụng dữ liệu kiểu xâu để viết chtrình giải 1 số bài toán đơn giản
Hđ của GV Hđ của HS Nd ghi bảng
1. 4. Mộtsố ví dụ
Nêu bài toán ví dụ 1 (ghi bảng) Ghi lại đề bài, suy nghĩa và trả Vd1: Viết CT nhập vào họ
- Bài toán trên cần sử dụng kiểu dữ liệu gì để lời: tên đầy đủ của 2 người và
nhận giá trị là họ tên? - Kiểu xâu đưa ra màn hình xâu họ tên
- Cần sử dụng mấy biến xâu? - 2 biến lớn hơn.
Y/cầu hs viết khai báo các xâu? Lên bảng viết khai báo
Var a,b:string;
Y/cầu hs viết tiếp lệnh nhập giá trị cho xâu a, Lên bảng Var a,b:string;
b Readln(a); Readln(b); Begin
Chỉnh sửa lại phần nội dung hs viết được. Write(‘nhap ten ng 1’);
- Làm thế nào để xác định xâu lớn hơn? Viết Readln(a);
lệnh gì để đưa dữ liệu xâu ra màn hình? So sánh 2 xâu a và b Write(‘nhap ten ng 2’);
Tiểu kết: để nhập/xuất dữ liệu kiểu xâu vẫn Dùng lệnh write() Readln(b);
sử dụng lệnh read/write như kiểu dữ liệu If a>b then write(a)
chuẩn Else write(b);
2. Nêu bài toán ví dụ 2 End.
Y/cầu hs khai báo xâu S.
Ycầu hs viết lệnh nhậo giá trị cho xâu 2. Ghi lại đề bài toán
Var S:string; Vd2: Viết CT nhập vào xâu S
Begin bất kì, cho biết trong xâu sử
Làm thế nào để biết số kí tự ‘A’ có trong xâu? Write(‘nhap xau ’); readln(s); dụng bao nhiêu kí tự ‘A’?
Tl: duyệt qua tất cả các kí tự
Xâu S được nhập vào có bao nhiêu kí tự? trong xâu nếu kí tự nào =’A’ thì Var S:string; i,d:byte;
Tiểu kết: để duyệt qua tất cả các ptử trong đếm được 1 kí tự Begin
xâu ta vẫn dùng lệnh for Tl: Length(s) kí tự Write(‘nhap xau ’);
readln(s);d:=0;
For i:=1 to length(s) do
If s[i]=’A’ then inc(d);
Write(d:4);
End.
IV. ĐÁNH GIÁ CUỐI BÀI (5phút)
1. Nội dung đã học
Các hàm xữ lí trên xâu, vận dụng kiểu xâu trong các bài toán đơn giản
2. Câu hỏi, bài tập về nhà
Xem trước bài: Bài thực hành sô5
Viết CT nhập vào xâu S bất kì. thực hiện xoá bỏ tất cả các kí tự trắng thừa có trong xâu.(Xâu sau khi loại
bỏ không còn 2 kí tự trắng liền kề nhau, đầu và cuối xâu không phải là kí tự trắng)
1. Hoạt động 1: (45 phút) Tìm hiểu chương trình, đề xuất phương án cải tiến
a. Mục tiêu: Hiểu được chtrình, tính được kết quả. Biết đề xuất phương án cải tiến.
b. Nội dung: Nhập một xâu, kiểm tra xem xâu đó có phải là một Palidrom hay không?
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
1. Tìm hiểu đề bài 1. Quan sát đọc kĩ đề
- Giới thiệu đề bài lên bảng
Giải thích: Xâu Palidrom
-Y/cầu hs cho 2 ví dụ về xâu Palidrom và 1 ví dụ Phải: aabcbaa, 45654
không phải? Không phải: abccda
2. Tìm hiểu chtrình gợi ý 2. Quan sát chtrình suy nghĩ để hiểu
- Treo chtrình lên bảng chtrình.
- Kiểm tra xâu có phải là Palidrom
-Hỏi: Chtrình sau đây có chức năng làm gì? Kết hay không?
quả in ra màn hìnhn hư thế nào? Kq: ‘xau la palidrom’ hoặc ‘xau
khong la palidrom’
Chạy thử chtrình để hs kiểm nghiệm suy nghĩ -Quan sát gv thực hiện chtrình, nhập
của mình dữ liệu và kquả của chtrình.
3. Chú ý theo dõi y/cầu của gv, trả lời
3. Cải tiến chtrình một số cau hỏi dẫn dắt
- Nêu y/cầu mới: viết lại chtrình không sử dụng
biến trung p? - Kí tự thứ i đối xứng với kí tự thứ
Hỏi: kí tự thứ i đối xứng với kí tự vị trí nào? length(s) –i +1
Hỏi: cần so sánh bao nhiêu cặp kí tự trong xâu - Tối đa length(s) div 2
để biết xau đó là palidrom?
+ Ta phải sử dụng hàm gì? 2. Độc lập soạn chtrình vào máy
Bổ sung và sửa sai cho hs.
2. Y/cầu hs được lập viết chương trình hoàn - Tìm test
chỉnh theo thuật toán phát hiện ở trên - Nhập dữ liệu của gv thực hiện
- Y/cầu các em lập trình xong trước tìm một số chtrình và xem kết quả
bộ test - Thông báo kết quả
- Y/cầu hs nhập dữ liệu vào theo test của gv và
thông báo kết quả.
Xác nhận kết quả đúng của hs và sửa sai cho các
em có kết quả sai.
IV. ĐÁNH GIÁ CUỐI BÀI (5phút)
1. Nội dung đã học: Một số thuật toán cơ bản liên quan đến xâu kí tự
2. Câu hỏi, bài tập về nhà
Xem trước bài: Kiểu bản ghi
2. Hoạt động 2:
a. Mục tiêu:
b. Nội dung:
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
3. Hoạt động 3:
a. Mục tiêu:
b. Nội dung:
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
4. Hoạt động 4:
a. Mục tiêu:
b. Nội dung:
c. Các bước tiến hành:
Hđ của GV Hđ của HS Nd ghi bảng
Begin
Writeln(‘Chuc cac em thi tot!’); A. Sai, vì CT này không có phần khai báo
Write(‘Dat ket qua cao’); B. Đúng, vì CT này không cần khai báo
Readln C. Sai, vì CT này thiếu phần nhập giá trị
End. D. Sai, vì CT này thiếu phần tính toán
5. Chương trình dịch Pascal cấp phát bao nhiêu Byte bộ nhớ cho các biến trong khai báo sau:
Var A: array[1..10] of integer; A. 28 B. 36
I, N: real; q, b: word; C.5 D. 18
6. Giá trị của các biểu thức boolean sau đây là gì với N = 300, p = - 0.001,
q = 0.001, c = ‘5’
(1) 2*N <=500
(2) (abs(p) = q) and (c < ‘4’)
(3) Not (c > ‘7’)
A. False – False – True B. False – True – False
C. False – True – True D. False – False – False
7. Sau khi thực hiện đoạn chương trình sau thu được kết quả xâu S là gì?
begin
S := ‘GBCDEFA’;
T := S[1];
S[1] := S[length(S)];
S[length(S)] := T; A. ‘GBCDEFA’ B. ‘ABCDEFG’
end; C. ‘AGBCDEF’ D. ‘BCDEFAG’
8. Trong NNLT Pascal, hai xâu kí tự được so sánh dựa trên?
A. Độ dài tối đa của hai xâu
B. Mã của từng kí tự trong các xâu lần lượt từ trái sang phải
C. Độ dài thực sự cảu hai xâu
D. Số lượng các kí tự khác nhau trong xâu
Hãy đọc kỹ đoạn chương trình sau:
Program timkiem;
Var m: array[1..100] of integer;
i, n, k: integer;
Begin Write('Ban can nhap bao nhieu so:'); Readln (n);
For i:=1 to n do
Begin
Write('Nhap so thu ',i,':'); Readln(m[i]);
End;
Write('Nhap so can tim:'); Readln(k);
i:=1;
While (m[i]<>k)and (i<=n)Do i:=i+1;
If i>n then Writeln ('Trong day ban da nhap khong co so nguyen nao bang
',k)
else Writeln('Trong day ban da nhap co so bang',k);
Readln;
End.
Và hãy trả lời các câu hỏi 9 và 10:
9. Trong chương trình trên có đoạn lệnh có sử dụng vòng lặp While …Do, chương trình trên thoát khỏi
vòng lặp khi:
A. m[ i ]=k B. (m[ i ]=k) hoặc( i>n) C. i>n D. (m[ i ]=k) và (i>n)
10. Giả sử khi chạy chương trình, ta tạo dữ liệu cho mảng m gồm các phần tử lần lượt là: 7, 5, 19, 54 và 20.
Và gán cho biến k mang giá trị 54. Vậy sau khi thực hiện xong chương trình, trên màn hình sẽ có dòng
thông báo:
A. Trong dãy bạn đã nhập có số bằng k B. Trong dãy bạn đã nhập có số bằng 54
C. Trong day ban da nhap co so bang k D. Trong day ban da nhap co so bang 54
II. TỰ LUẬN
1. Cho chương trình
Var i: byte;
Begin
For i:=1 to 35 do
If i mod 3 = 0 then write (i:4);
Readln
End.
a. Hãy viết lại chương trình bằng cách thay đổi cấu trúc FOR bằng cấu trúc WHILE.
b. Cho biết chương trình trên thực hiện công việc gì?
2. Viết CT tạo mảng A có N (N≤200) phần tử là số nguyên. In ra màn hình mảng vừa tạo. Tính và đưa ra màn hình
giá trị trung bình của các số nguyên dương lẻ có trong mảng A.