MỤC TIÊU: 1.Về kiến thức: Học sinh sau tiết học sẽ: Xây dựng chương trình có cấu trúc rẽ nhánh Làm quen với các công cụ hiệu chỉnh chương trình 2.Về kỹ năng: Rèn luyện cho học s
Trang 1Tuần: 7, 8 - Tiết PPCT: 14, 15 Ngày dạy:
I MỤC TIÊU:
1.Về kiến thức:
Học sinh sau tiết học sẽ:
Xây dựng chương trình có cấu trúc rẽ nhánh
Làm quen với các công cụ hiệu chỉnh chương trình
2.Về kỹ năng:
Rèn luyện cho học sinh các bước cơ bản nhất của lập trình nói chung và
kĩ năng tổ chức chương trình có sử dụng cấu trúc rẽ nhánh nói riêng
2 Kiểm tra bài cũ: trong quá trình giảng bài
3 Giảng bài mới:
BÀI TẬP VÀ THỰC HÀNH 2
Trang 2nào có thể nhắc lại Câu
lệnh if-then được không?
HS: Trả lời theo câu hỏi
của giáo viên
GV: Nhắc lại đầy đủ cấu
trúc của lệnh IF
GV: Yêu cầu các em nhìn
vào chương trinh trong
sách và gõ vào máy
GV: Sau khi đánh xong
yêu cầu các em lưu
chương trình với tên
viên hướng dẫn học sinh
cách nhập liên tiếp ba giá
Điều kiện Đúng Câu lệnh
Sai Đúng
Trang 3HS: Thực hành và quan
sát cấu trúc rẽ nhánh
GV: Sau khi đã quan sát
quá trình rẽ nhánh in ra
kết quả trên màn hình, vậy
để sao biết giá trị a2, b2,
c2 bây giờ?
GV: Chúng ta chọn thẻ
Debug để chọn mục
Watch, sau khi cửa sổ
Watch xuất hiện ta ấn
phím Crtl+ F7 hoặc chon
add watch… trong
Debug để add các giá trị
a2, b2, c2 vào để xem kết
quả Vừa giảng vừa thực
hành mẫu cho các em xem
kích thước cửa sổ hiện
thời chứa con trỏ màn
hình hay phím F6 để
chuyển cửa sổ hiện thời để
các cửa sổ hiện ra phần
thông tin cần theo dõi
không bị cửa sổ khác che
lấp
GV: Yêu cầu học sinh
nhập dữ liệu mới a= 700,
b= 1000, c= 800 và tự làm
các thao tác nhu trên
HS: Làm theo yêu cầu của
a) Lưu chương trình với tên PITAGO lên đĩa.
b) Nhấn phím F7 để thực hiện từng câu lệnh chương
o “Ba so da nhap khong la bo so Pi-ta-go”
Bước 4: Kết thúc quá trình giải
Trang 4giáo viên để nắm rõ các
thao tác
trình, nhập các giá trị a=3,b=4,c= 5
c) Vào bảng chọn Debug mở cửa sổ hiệu chỉnh để
xem giá trị của a2, b2, c2
d) Nhấn phím F7 để thực hiện những câu lệnh tính
các giá trị nói trên, so sánh với kết quả a2=9, b2=16, c2=25
e) Quan sát quá trình rẽ nhánh
Lặp lại các bước trên với bộ dữ liệu: a= 700, b=1000, c=800
4 Củng cố và luyện tập:
Nhắc lại các kiến thức quan trọng cần nắm
5 Hướng dẫn học sinh chuẩn bị bài ở nhà:
Yêu cầu các em về thực hành bài này khi thay dãy lệnh
a2:= a; b2:= b; c2:= c;
a2:= a2* a; b2:= b2* b; c2:= c2* c;
bằng dãy lệnh:
a2:= a* a; b2:= b* b; c2:= c* c;
Xem kết quả có gì thay đổi với bộ dữ liệu a = 3, b = 4, c = 5 và a = 700, b =
1000, c = 800 không? Và tìm ra lời giải thích
V RÚT KINH NGHIỆM:
+ Giáo viên:
+ Học sinh:
+ Chương trình SGK:
+ Thiết bị dạy học:
Trang 5Tuần: 8 - Tiết PPCT: 16 Ngày dạy:
toán đơn giản áp dụng các cấu trúc rẽ nhánh If Then, cấu trúc lặp
Phương pháp hỏi đáp, nêu và giải quyết vấn đề.
IV TIẾN TRÌNH DẠY HỌC:
1 Ổn định tổ chức: kiểm diện
2 Kiểm tra bài cũ:
Câu hỏi: Viết chương trình cho phép xuất ra màn hình 50 lần “lop 11CB” ở
Trang 6Hoạt động của thầy, trò Nội dung
1 Cho học sinh ôn lại những kiến
thức đã học.
+ chương I, II, III.
2 Nhắc lại kiến thức cơ bản ở
- Nêu cú pháp và hoạt động của cấu
trúc if – then, if – then – else ?
- Nêu cú pháp và hoạt động của cấu
b, Sau khi thực hiện đoạn chương
trình thi biến d có giá trị là bao
nhiêu?
Bài 1: Cho biết giá trị của x, y, z sau khi thực hiện đoạn chương trình sau:
Begin X:= 10; y:=50; z:=5;
If x>y then z:=x-y Else z:=y-x;
Write(z);
End.
Bài 2: Lập trình tính a)s 1.2.3 100
Program Tich;
Uses crt;
Var Tich, i: integer;
Begin Clrscr;
Bài 4: Viết chương trình tính tổng sau:
s
Trang 7D:=0;
For i:=1 to 5 do
For j:=1 to 6 do
D:=D+1;
Giải thích cho học sinh.
Hướng dẫn học sinh làm các bài tập
Program tongS;
Uses crt;
Var i,S: integer;
Begin Clrscr;
S:=0;
For i:=1 to 99 do
If I mod 2 <>0 then
S:=S+i*i;
Writeln(‘tong S=’,S);
End.
4.Củng cố và luyện tập:
5.Hướng dẫn học sinh chuẩn bị bài ở nhà:
a) s 1 2 3 100
b) s 1 2 2 4 2 100 2 V RÚT KINH NGHIỆM: + Giáo viên:
+ Học sinh:
+ Chương trình SGK:
+ Thiết bị dạy học:
Trang 8Tuần: 9 - Tiết PPCT: 17 Ngày dạy:
2 Phần kiểm tra: 4 đề, mỗi đề 25 câu, mỗi câu 0.4đ.
Câu 1: Giá trị của gt sau đoạn chương trình
Trang 9Câu 3: Giá trị của i sau khi thực hiện chương trình là:
i:=10;
while i>0 do i:=i-1;
Câu 4: Kết quả của s sau khi thực hiện đoạn chương trình sau:
S:=1; For i:=1 To 10 Do If (i mod 2 = 0) then s:=s+i;
Câu 5: Với cấu trúc rẽ nhánh IF <điều kiện> THEN <câu lệnh1> ELSE <câu lệnh 2>, câu lệnh 2 được thực hiện khi
C Biểu thức điều kiện đúng D Biểu thức điều kiện sai
Câu 6: Cho biến a có giá trị 5, sau lệnh gán a: ((10 a*4) a a a)* 5*2 3 ?
Câu 10: Muốn dùng biến min lưu giá trị nhỏ nhất trong các giá trị của 2 biến
A, B Hãy chọn phương án sai
Trang 10A Min := B; if A<B then min := A else min := B; B If A < B then min:= A else min := B;
C Min:=B; if A < B then min := A; D If A < B then min = A;
Câu 11: Lệnh read(x) mang ý nghĩa gì?
A Gán giá trị của x bằng 0 B Hiện ký tự "x"
Câu 12: Câu lệnh nào sau đây là câu lệnh gán:
Câu 13: Trong Pascal, Cho đoạn chương trình:
C Tính tổng các phần tử là số chẵn D In ra màn hình những phần tử có giátrị chia hết cho 3
Câu 15: Câu lệnh nào sau đây là câu lệnh gán:
A Var a := Integer; B a := 100; C Const a= 5; D m = n+50;
Câu 16: Cho đoạn chương trình:
N:=3; M:=5; F:=0;
For i:=N to M do F:=F+I;
Sau khi thực hiện đoạn chương trình trên S có giá trị là:
F=12
Câu 17: Cho A:=19.5; B:=45.93; câu lệnh Write(‘Gia tri la:’, A:6:2, B:8:3);sẽ hiển thị ra màn hình là:
A Gia tri la:19.545.93; B Gia tri la:19.5045.930;
C Gia tri la: 19.5045.930; D Gia tri la: _19.50_ _45.930;
Trang 11Câu 18: Để khai báo hai hằng số MAX có giá trị 5000 và MIN có giá trị 100 ta dùng lệnh:
Câu 19: Cho biết giá trị của biến T sau khi thực hiện đoạn chương trình sau: T:=0; i:=1;
Trang 12IF I mod 2 =0 THEN T:= T+I ELSE S:= S+I;
Sau khi thực hiện đoạn chương trình trên, máy cho kết quả:
Câu 24: Bộ nhớ cần cấp phát bao nhiêu byte để lưu trữ: VAR X, Y: Boolean; D: Integer; A, B: Longint;
Câu 25: Cho đoạn chương trình sau:
Đề 234
1D 2A 3A 4A 5D 6D 7B 8 9C 10 11B 12A 13A 14C 15C 16D 17C 18A 19B 20C 21B 22C 23D 24D 25D
Đề 321
1A 2A 3C 4B 5B 6D 7A 8C 9D 10D 11D 12 13B 14C 15B 16B 17C 18B 19A 20 21D 22A 23B 24C 25A
Đề 432
1B 2D 3D 4 5D 6A 7B 8A 9B 10D 11 12A 13A 14B 15C 16C 17A 18D 19B 20B 21D 22D 23D 24C 25C
V RÚT KINH NGHIỆM:
+ Giáo viên: + Học sinh: + Phương tiện phục vụ kiểm tra:
Trang 13Tuần: 9 - Tiết PPCT: 18 Ngày dạy:
CHƯƠNG IV KIỂU DỮ LIỆU CÓ CẤU TRÚC
I MỤC TIÊU:
1 Về kiến thức:
Học sinh sau tiết học sẽ:
Nắm được khái niệm mảng 1 chiều
Hiểu cách khai báo và truy cập đến các phần tử của mảng
Phương pháp thuyết trình, kết hợp tạo tình huống có vấn đề
IV TIẾN TRÌNH DẠY HỌC:
1 Ổn định tổ chức: kiểm diện
2 Kiểm tra bài cũ: thông qua
3 Giảng bài mới:
Hoạt động của thầy,
Đặt vấn đề:
Xét các ví dụ sau:
Để lưu trữ nhiệt độ các ngày
trong một tuần, với các kiểu dữ
liệu đã học ta có thể khai báo
1 Giới thiệu về kiểu mảng một 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
Bài 11 KIỂU MẢNG
Trang 14biến như sau:
Cùng với hai ví dụ trên nếu
muốn lưu trữ dữ liệu trong một
Suy nghĩ và trả lời:ta phải
dùng nhiều biến (30 biến)
GV:
Đưa ra ví dụ 1 trang 53 sách
giáo khoa : nhập vào nhiệt độ
trung bình của mỗi ngày trong
1 tuần, tính và in ra nhiệt độ
trung bình của tuần và số
lượng ngày trong tuần có nhiệt
độ cao hơn nhiệt độ trung bình
của tuần
Đi vào phân tích 2 chương
trình để so sánh cách sử dụng
kiểu dữ liệu mảng một chiều
tiện lợi hơn
Quan sát, theo dõi, ghi chép
Như vậy qua chương trình trên
writeln(‘nhap vao nhiet do cua 7 ngay);
Khi sử dụng kiểu dữ liệu kiểu mảng một chiều
để mô tả dữ liệu chương trình được viết lại như sau với N ngày:
program Nhietdo_Nngay;
const Max = 366; (gia thiet N lon nhat la 366)
type Kmang1 = array [1 Max] of real;
var Nhietdo: Kmang1;
dem,i,N:byte;
Tong, trung_binh: real;
begin writeln(‘nhap vao so ngay: ‘);
readln(N);
Tong:=0;
for i:=1 to N do begin write (‘nhap nhiet do ngay
Trang 15Cách khai báo biến mảng
một chiều: var Nhietdo:
báo biến mảng một chiều sau:
Cách khai báo nào tiện hơn?
Tùy theo bài mà chúng ta sẽ
chọn một cách khai báo nhưng
để giảm thiểu phức tap cho học
1a.Khai báo:
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ố]
số cuối(n1<= n2);
Kiểu phần tử: là kiểu của các phầ tử mảng
Type: là từ khóa để khai báo biến, array là
từ khóa để khai báo mảng
Để truy cập vào phần tử mảng ta viết :
<tên biến mảng>[chỉ số]
Ví dụ khai báo mảng một chiều:
var ten_mang_1 : array [1 50] of real;
hay:
type mang_so_thuc = array [1 50] of real;
Trang 16B[3] = 61
Đưa ra một số ví dụ mảng một
chiều và cách khai báo
var ten_mang_1 : mang_so_thuc ;
4 Củng cố và luyện tập:
- Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu.
- Khai báo mảng một chiều:
* Trực tiếp:
Var <tên biến mảng> : array [kiểu chỉ số] of
<kiểu phần tử>;
* 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>;
- Khi khai báo kiểu mảng cần xác định kích thước của mảng.
5 Hướng dẫn học sinh chuẩn bị bài ở nhà:
- Học bài cũ
- Xem tiếp các ví dụ về mảng 1 chiều
V RÚT KINH NGHIỆM:
+ Giáo viên:
+ Học sinh:
+ Chương trình SGK:
+ Thiết bị dạy học:
Trang 17Tuần:10 - Tiết PPCT: 19 Ngày dạy:
I MỤC TIÊU:
1 Về kiến thức:
Học sinh sau tiết học sẽ :
Hiểu đúng khái niệm mảng một chiều
Hiểu cách khai báo và truy cập đến các phần tử của mảng
Phương pháp thuyết trình, vấn đáp, kết hợp tạo tình huống có vấn đề
IV TIẾN TRÌNH DẠY HỌC:
1 Ổn định tổ chức: kiểm diện
2 Kiểm tra bài cũ:
Trình bày cách khai báo trực tiếp kiểu dữ liệu mảng một chiều trong Turbo Pascal.(4đ)
Chọn khai báo kiểu dữ liệu mảng một chiều hợp lệ trong Turbo Pascal: (4đ)
a) var dayso: array[-1 20.5] of real;
b) var mang: array[0 255] of byte;
c) type A: array[-11 20] of integer;
var mang: A;
Bài 11 KIỂU MẢNG (tt)
Trang 183 Giảng bài mới:
Input và Output của bài
toán Và yêu cầu HS
theo dõi thuật toán trong
SGK
HS: Quan sát và nghe
giảng
GV: Diễn giảng thuật
toán để giải bài toán
trên Đặt câu hỏi để HS
HS: Nghe giảng, trả lời
câu hỏi và ghi bài
Ví dụ 1 : Tìm phần tử lớn nhất của một dãy số nguyên
- Input : Số nguyên dương N và dãy số A1, A2, … ,
AN
- Output : Chỉ số và giá trị của số lớn nhất trong dãy
- Ý tưởng :
+ Đặt số A1 là số lớn nhất (max)+ Cho i lặp từ 2 đến N, nếu A[i]> thì đổi max =A[i] vả lưu lại vị trí i
Chương trình như sau :
Program timmax ;Uses crt ;
var a : array[1 250] of integer ; n,i,max,csmax : Integer ;Begin
clrscr ; Write('Nhap n = ') ; Readln(n) ;
For i := 1 to n do Begin
Write('a[',i,'] = ') ; readln(a[i]) ; End ;
max := a[i] ; csmax := 1 ; For i := 2 to n do
If a[i] > max then Begin
max := a[i] ; csmax :=i ; End ;
Writeln('Gia tri lon nhat : ',max) ; Writeln('chi so ptu lon nhat : ',csmax) ; Readln ;
End
Ví dụ 2 : Sắp xếp dãy số nguyên theo bằng thuật toán
Trang 19HS: Nghe giảng, trả lời
câu hỏi và ghi bài
Output của bài toán Cho
HS xem thuật toán được
2/ Trong thuật toán cần
duyệt qua bao nhiêu lần?
3/ Mỗi lượt thực hiện
trên đoạn nào của dãy
số?4/ Câu lệnh nào trong
chương trình thể hiện hai
yêu cầu trên?
5/ Mỗi lượt duyệt thực
var A : Array[1 250] of integer ; n,i,j,tg : Integer ;
Begin clrscr ; Write('Nhap so phan tu mang n = ') ; Readln(n) ;
For i := 1 to n do Begin
Write('A[',i,'] = ') ; readln(A[i]) ; End ;
For j := n downto 2 do Begin
For i := 1 to j-1 do
If A[i] > A[i+1] then Begin
tg := A[i] ; A[i] := A[i+1] ; A[i+1] := tg ; End ;
End ; Writeln('day sau khi sap xep : ') ; For i := 1 to n do
write(a[i]:8) ; readln ;
End Writeln('chi so ptu lon nhat : ',csmax);
readln ;
End
Trang 20HS: Nghe giảng, trả lời
và ghi bài
GV: Nhận xét và bổ
sung
4.Củng cố và luyện tập:
- Thuật toán tráo đổi giá trị của hai phần tử, sử dụng biến trung gian để lưu giá trị
tạm thời
5.Hướng dẫn học sinh chuẩn bị bài ở nhà:
V RÚT KINH NGHIỆM:
+ Giáo viên:
+ Học sinh:
+ Chương trình SGK:
+ Thiết bị dạy học:
Trang 21Tuần: 10 - Tiết PPCT: 20 Ngày dạy:
I MỤC TIÊU:
1 Về kiến thức:
Học sinh sau tiết học sẽ:
Nắm được khái niệm mảng 1 chiều
Hiểu cách khai báo và truy cập đến các phần tử của mảng
Phương pháp thuyết trình, vấn đáp, kết hợp tạo tình huống có vấn đề
IV TIẾN TRÌNH DẠY HỌC:
1 Ổn định tổ chức: kiểm diện
2 Kiểm tra bài cũ:
Trình bày cách khai báo gián tiếp kiểu dữ liệu mảng một chiều trong Turbo Pascal.(4đ)
Có khai báo sau, cho biết tên của kiểu dữ liệu mới, kiểu mảng đó có bao nhiêuphần tử, mỗi phần tử của mảng thuộc kiểu gì, và tên của các mảng sẽ dùng trongchương trình là gì? (4đ)
Type diem = array[1 15] of byte;
Var A, mang: diem;
Bài 11 KIỂU MẢNG (tt)
Trang 223 Giảng bài mới:
Yêu cầu HS quan sát
thuật toán trong SGK
Giảng giải thuật toán
chưa tìm thấy hoặc
không gian tìm kiếm
chưa rỗng bằng biểu
thức logic nào?
c> Một số ví dụ :
Ví dụ 3 : Tìm kiếm nhị phân Input: Dãy A là dãy tăng gồm N số nguyên dương A1,
A2, …, AN, số nguyên k.
Output: Chỉ số i mà A i = k hoặc thông báo “Khong tim
thay” nếu không có số hạng nào của dãy A có giá trị
Bước 6: Dau Giua + 1;
Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có
số hạng có giá trị bằng k, rồi kết thúc;
Bước 8: Quay lại bước 3.
Chương trình như sau : Program sapxep ;
Uses crt ;var A : Array[1 250] of integer ; n,i,k : Integer ;
dau,cuoi,giua : Integer ;
TK : boolean ;Begin
clrscr ; Write('Nhap so ptu mang n = ') ; Readln(n) ;
For i := 1 to n do Begin
Write('A[',i,'] = ') ;
Trang 23Write('nhap so can tim k : ') ; Readln(k);
dau := 1 ; cuoi := n ;
TK := false ; while (dau <= cuoi) and Not TK Do Begin
giua := (dau+cuoi) div 2 ;
If A[giua] = k then TK := true Else
If a[giua]>k then cuoi := giua - 1 Else dau := giua + 1 ;
- Đối với thuật toán tìm kiếm nhị phân, mảng phải được sắp xếp có thứ tự (dãy
tăng hoặc dãy giảm)
5 Hướng dẫn học sinh chuẩn bị bài ở nhà:
V RÚT KINH NGHIỆM:
+ Giáo viên: + Học sinh: + Chương trình SGK: + Thiết bị dạy học:
Trang 24Tuần: 11 - Tiết PPCT: 21 Ngày dạy:
I MỤC TIÊU:
1 Về kiến thức:
Học sinh sau tiết học sẽ:
Củng cố lại các kiến thức cơ bản về kiểu dữ liệu mảng
2 Về kỹ năng:
Nâng cao kĩ năng sử dụng một số lệnh kiểu dữ liệu mảng một chiều:
Khai báo kiểu dữ liệu mảng một chiều
III PHƯƠNG PHÁP:
Phương pháp giảng dạy: nêu vấn đề và giải quyết vấn đề
Vấn đáp, gợi mở để học sinh tham gia tích cực vào bài học
IV TIẾN TRÌNH DẠY HỌC:
1 Ổn định tổ chức: kiểm diện
2 Kiểm tra bài cũ:
+ Trình bày thao tác nhập, xuất mảng 1 chiều (8đ)Write (‘nhap so luong phan tu n=’); Readln (n);
For i:=1 to n doBegin
Write(‘A[‘, i, ‘]=’); Readln (A[i]);
End;
For i:=1 to n do write(A[i]:4);
BÀI TẬP VÀ THỰC HÀNH 3