Kiến thức - Kiểu mảng là một kiểu dữ liệu có cấu trúc; rất cần thiết và hữu ích trong nhiều CT; - Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu; - Các NNLT thông dụng cho phép
Trang 1Ngày soạn: 7/ 1/ 2008
Ngày giảng: / / 2008…
Tiết 19 Bài tập và 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 rẽ nhánh - Làm quen với các công cụ phục vụ hiệu chỉnh chơng trình 2 Kỹ năng - Biết sử dụng cấu trúc rẽ nhánh trong việc lập trình giải một số bài toán cụ thể - Làm quen với các công cụ phục vụ và hiệu chỉnh chơng trình 3 Thái độ - Có ý thức chăm lo đến giao diện khi xây dựng chơng trình II Ph ơng tiện dạy và học 1 Chuẩn bị của GV - Bài soạn, SGK, Phòng máy tính 2 Chuẩn bị của HS - Đồ dùng học tập III Tiến trình bài giảng 1 ổ n định tổ chức / /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
2 Kiểm tra bài cũ
- Không kiểm tra
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
GV: Hớng dẫn hs mở tệp lu bài tập
chơng trình Py- ta- go (chọn FILE
chọn OPEN, chọn tệp cần mở)
HS: Thực hành theo hớng dẫn của
giáo viên, mở chơng trình,
Bài thực hành:
Program Pi_ta_go;
Uses crt;
Var a, b, c: integer;
a2,b2,c2: longint;
Begin Clrscr;
Write(‘Nhap a, b, c =’);
Readln(a,b,c);
Trang 2- GV: Hớng dãn thực hiện việc theo
dõi các lệnh của CT bằng cách nhấn
phím F7 và theo dõi các giá trị của
biến trên cửa sổ Watches, để hiện cửa
sổ Watches nhấn Ctrl+F7 để hiện cửa
sổ Add watch, sau đó nhập tên biến
(ví dụ a2 là biến đang cần theo dõi giá
trị) và nhấn phím Enter sẽ có tên biến
a2 cùng giá trị của nó
- HS: Quan sát và thực hiện theo
- GV: Yêu cầu tiếp tục nhấn F7 để
quan sát quá trình rẽ nhánh
- GV để HS nhập giá trị mới a=700,
b=1000, c=800 và tự làm các thao tác
nh trên trong thời gian này hớng dẫn
một số học sinh thực hiện các thao tác
trong bài thực hành
- HS: Quan sát và thực hiện theo nội
dung yêu cầu
writeln(‘Ba so da nhap la bo so ta-go’)
else writeln(‘Ba so da nhap khong la bo
so Pi – ta – go’);
readln
End.
d) Vào bảng Debug mở cửa sổ hiệu chỉnh
để xem giá trị a2, b2, c2;
e Nhấn phím F7 để thực hiện các câu lệnh tính những giá trị nói trên, so sánh với kết quả a=9, b=16, c=25;
+ Nhấn phím F7 đẻ thực hiện từng câu lệnh chơng trình;
+ Chọn Debug để mở cửa sổ hiệu chỉnh hoặc nhấn tổ hợp phím Cltr + F7
5 Bài tập về nhà
- Làm bài tập 5, 6, 7, 8 SGK – T51 giờ sau chữa bài tập và thực hành
Trang 3Ngày soạn: 7 / 1/ 2008
Ngày giảng: / / 2008…
Tiết 20 Bài tập và thực hành 2 (tiếp) III Tiến trình bài giảng 1 ổ n định tổ chức / /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
2 Kiểm tra bài cũ
- Kiểm tra kết hợp trong nội dung thực hành
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 1( Hớng dẫn và giải đáp
các thắc mắc của HS về một số bài tập
ở nhà)
- GV: Gọi HS lên bảng giải bài tập 4
SGK- T51
- HS: Lên bảng
- GV: Nhận xét, bổ sung
- GV: Yêu cầu cả lớp cùng giải bài
tập 5 SGK- T51 trên máy tính
- GV gợi ý chơng trình, yêu cầu HS
thực hành theo nội dung BT
- HS: Quan sát, nghe giảng, thực hành
Bài 4 SGK- T51
a
if (sqr(x)+ sqr(y))<=1 then z:= sqr(x) + sqr(y) else
if y>= x then z := x+y else z := 0.5;
b
if (sqr(x-a) + sqr(y-b) <= sqr(r) then z:= abs(x) + abs(y)
else z:=x+y;
Bài 5 SGK- T51
a Y=1/2+2/3+3/4+ +50/51…
Var Y: real;
N: byte;
Begin
Y: = 0;
For N:=1 to 50 do
Y:=Y+N/(N+1);
Writeln(‘Tong Y la:’,Y);
Readln End.
b e(N) = 1 + 1/1! + 1/2! + 1/3! + 1/4! + + …
1/n! + cho đến khi 1/n! <2*10… -6
Trang 4Bài 6 SGK- T51 Var ga, cho: byte;
Readln End.
4 Củng cố
- Mọi quá trình tính toán đều có thể mô tả và thực hiện dựa trên ba cấu trúc cơ bản
là cấu trúc tuần tự, cấu trúc rẽ nhánh và cầu trúc lặp
5 Bài tập về nhà
- Đọc trớc bài 11 của chơng IV, giờ sau học lý thuyết
Trang 5Ngày soạn: 15/ 1/ 2008
Ngày giảng: / / 2008…
Tiết 21 Chơng Iv Kiểu dữ liệu có cấu trúc Đ11 Kiểu mảng I Mục tiêu 1 Kiến thức - Kiểu mảng là một kiểu dữ liệu có cấu trúc; rất cần thiết và hữu ích trong nhiều CT; - Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu; - Các NNLT thông dụng cho phép ngời lập trình xây dựng kiểu dữ liệu mảng một chiều; - Để mô tả mảng một chiều cần khai báo kiểu của các phần tử và cách đánh số các phần tử của nó; - Có thể tham chiếu phần tử của mảng bằng tên của mảng và chỉ số tơng ứng của phần tử này 2 Kỹ năng - Nhận biết đợc các thành phần trong khai báo kiểu mảng một chiều; - Nhận biết các định danh của phần tử kiểu mảng một chiều xuất hiện trong một CT; - Biết cách khai bào kiểu mảng đơn giản với chỉ số kiểu miền con của kiểu nguyên - Tạo đợc kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình Pascal để giải quyết một số bài toán cụ thể đơn giản 3 Thái độ - Có ý thức tự giác học tập và có tinh thần tập thể tham gia hoạt động nhóm II Ph ơng tiện dạy và học 1 Chuẩn bị của GV - Bài soạn, SGK, bảng phụ 2 Chuẩn bị của HS - Đồ dùng học tập, bảng phụ III Tiến trình bài giảng 1 ổ n định tổ chức / /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
2 Kiểm tra bài cũ
- Không kiểm tra
3 Bài mới
Trang 6Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 1 (Tìm hiểu câu lệnh
kiểu mảng một chiều)
- GV: Yêu cầu HS tự đọc phần đầu của
mục 1 SGK –T53
- HS: Đọc SGK
- GV: Hãy cho biết khái niệm về mảng
một chiều? Tại sao cần dùng đến
- GV: Qua hai ví dụ trên ta thấy đợc
rằng, khi cần giải bài toán lên đến N
ngày thì cách làm nh CT
Nhietdo_tuan không những đòi hỏi
một khối lợng khai báo khá lớn mà CT
tính toán cũng khá dài Vì vậy cần sử
dụng đến mảng để giải quyết những
bài toán nh vậy
GV: Các em hãy quan sát hai ví dụ
trên; đó là các cách khai báo mảng
một chiều Qua các ví dụ trên, em hãy
chỉ ra cách khai báo mảng một chiều
- Khi xây dựng và sử dụng kiểu mảng một chiều, các NNLT có quy tắc, cách thức cho phép xác định:
+ Tên kiểu mảng một chiều;
+ Số lợng phần tử;
+ Kiểu dữ liệu của phần tử;
+ Cách khai báo biến mảng;
+ Cách tham chiếu đến phần tử
a Khai báo
- Ví dụ 1 Var LOP : array[40 100] of integer;
TO : array[1 7] of integer;
- Ví dụ 2TypeMyArray = array[1 max] of real;
Var N: MyArray;
* Tổng quát, khai báo mảng một chiều có hai dạng
- Cách 1: khai báo trực tiếp.
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.
Type <tên kiểu mảng> = array[kiểu chỉ số]
Trang 7đầu và chỉ số cuối (n1 ≤ n2);
+ Kiểu phần tử là kiểu của phần tử mảng
- GV: Chia nhóm lần 1, chia lớp thành
3 nhóm
- HS: Thảo luận theo nhóm, hoàn
thành kết quả vào bảng phụ
- GV: Yêu cầu các nhóm báo cáo và
4 Củng cố
- Cách tạo kiểu mảng một chiều và cách khai báo biến:
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>;
- Tham chiếu đến từng 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 viết trong cặp dấu ngoặc [ ]
5 Bài tập về nhà
- Học bài theo câu hỏi SGK, Lấy ví dụ đúng và khai báo mảng một chiều ở hai dạng
Trang 8Ngày soạn: 25/ 1/ 2008
Ngày giảng: / / 2008…
Tiết 22 Đ11 Kiểu mảng (tiếp) III Tiến trình bài giảng 1 ổ n định tổ chức / /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
2 Kiểm tra bài cũ
- Viết ví dụ khai báo biến mảng một chiều bằng hai cách đã học và giải thích các thành phần có trong cú pháp?
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 2 (Tìm hiểu một số chơng
trình có sử dụng kiểu mảng một chiều)
- GV: Yêu cầu HS đọc đề bài, hãy cho
biết Input và Output?
- HS: trả lời
- GV: Yêu cầu HS nhắc lại thuật toán
tìm Max (đã đợc học ở lớp 10)?
- HS: trả lời
- GV: Trình bày và giải thích chơng
trình Tìm giá trị Max (Dùng bảng phụ)
- HS: Quan sát, nghe giảng, ghi bài
- GV: Gọi HS đứng tại chỗ giải thích ý
nghĩa từng câu lệnh
1 Kiểu mảng một chiều
b Một số ví dụ
- Ví dụ 1: tìm phần tử lớn nhất của dãy số
nguyên.
Xác định bài toán
+ Input: Số nguyên dơng N và dãy gồm N sô nguyên dơng a1, a2, , a… n
+ Output: Max(a1, a2, , a… n)
Thuật toán:
B1: Nhập N, và dãy a1, a2, , a… n B2: Max ← a1; i ← 2;
B3: Nếu i > N thì đa ra Max, rồi kết thúc; B4:
+ Nếu a1 > Max thì Max ← ai; + i ← i + 1 rồi quay lại B3
Chơng trình:
Program Tim_max;
Const Nmax = 250;
Type ArrInt = Array[1 Nmax] of integer; Var
N, i, Max csmax: integer;
A: arrInt;
Begin Write(‘Nhap so phan tu cua day so, N=’);
Trang 9- HS: Trả lời
- GV: Hãy xác định Input và Output?
- HS: trả lời
- GV: Nhắc lại thuật toán sắp xếp bằng
tráo đổi (dùng bảng phụ)
- HS: Quan sát, nghe giảng, ghi bài
- GV: Trình bày và giải thích chơng
trình sắp xếp bằng tráo đổi (Dùng bảng
phụ)
- HS: Quan sát, nghe giảng, ghi bài
- GV: Gọi HS đứng tại chỗ giải thích ý
nghĩa từng câu lệnh
- HS: Trả lời
Readln(N);
For i:=1 to N do Begin
Write(‘Phan tu thu ‘,i, ‘ =’);
End
Ví dụ 2: sắp xếp dãy số nguyên bằng thuật
toán tráo đổi.
+ Input: Số nguyên dơng N và dãy A gồm N
số nguyên dơng a1, a2, , a… n.+ Output: dãy A đựơc sắp xếp thành dãy không giảm
Thuật toán:
B1: Nhập N và dãy a1, a2, , a… n.B2: M ← N;
B3: Nếu M < 2 thì đa ra dãy A đã đợc SX rồi kết thúc;
B4: M ← M – 1; i ← 0;
B5 i ← i + 1;
B6: Nếu i > M thì quay lại B3;
B7: Nếu ai > ai+ 1thì tráo đổi ai và ai+ 1 cho nhau;
Trang 10Write(‘Nhap so phan tu cua day so, N=’);Readln(N);
For i:=1 to N do Begin
Write(‘Phan tu thu ‘,i, ‘ =’);
Readln(A[i]);
End;
For j:=N downto 2 do For i:=1 to j – 2 do
If A[i] > A[i+1] then Begin
TG:=A[i];
A[i]:=A[i+1];
A[i+1]:=TG;
End;
Writeln(‘Day so duoc sap xep la:’);
For i:=1 to N do writeln(A[i]):4);
ReadlnEnd
- GV: Chia lớp thành 3 nhóm, yêu cầu
các nhóm thảo luận theo nội dung yêu
cầu Hoàn thành kết quả vào bảng phụ
- GV: Yêu cầu các nhóm báo cáo và
nhận xét nhóm chéo nhóm của mình
H1.
- Nhóm 1: Hãy viết khai báo mảng một chiều trong chơng trình VD 1 theo cách khác đã học ?
- Nhóm 2: Hãy viết khai báo mảng một chiều trong chơng trình VD 2 theo cách khác đã học ?
- Nhóm 3: Hãy tét thử chơng trình bằng một dãy số gồm 5 phần tử với các giá trị khác nhau Đa gia giá trị Max và csmax?
4 Củng cố
- Củng cố cho HS nắm chắc hai cách khai báo 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ử>;
Hoặc
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>;
5 Bài tập về nhà
- Học bài theo câu hỏi SGK, làm bài tập trong SBT, đọc trớc ví dụ 3 SGK- T58
Trang 11Ngày soạn: 25/ 1/ 2008
Ngày giảng: / / 2008…
Tiết 23 Đ11 Kiểu mảng (tiếp) III Tiến trình bài giảng 1 ổ n định tổ chức / /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
2 Kiểm tra bài cũ
- Viết cấu trúc khai báo kiểu mảng một chiều cho bài tập 5 và 6 SGK- T79?
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 3 (Tìm hiểu một số
chơng trình có sử dụng kiểu mảng
một chiều)
- GV: Yêu cầu HS đọc đề bài, hãy
cho biết Input và Output?
- HS: trả lời
- GV: Yêu cầu HS đứng tại chỗ
đọc thuật toán Hình 12 SGK-
T58
- HS: Đọc SGK
- GV: Hãy cho biết bài toán nhận
đợc kết quả ở bớc nào?
- HS: Trả lời
- GV: Trình bày và giải thích
ch-1 Kiểu mảng một chiều
b Một số ví dụ
- Ví dụ 3: Tìm kiếm nhị phân
Xác định bài toán
+ Input: Dãy a là dãy tăng gồm N (N<=250) số nguyên dơng A1, A2, , A… N và số nguyên k;
+ Output: Chỉ số i mà Ai = 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ằng k
Thuật toán
Bớc 1: Nhập N, các số hạng a1, a2, , aN …
và giá trị khoá k;
Bớc 2: Đầu ơ 1, Cuối ơ N;
Bớc 3: Giữa ơ [(Đầu + Cuối)/2];
Bớc 4: Nếu aGiữa = k thì thông báo chỉ số Giữa rồi
kết thúc;
Bớc 5: Nếu aGiữa > k thì đặt
Cuối = Giữa – 1 rồi chuyển sang bớc 7;
Bớc 6: Đầu ơ Giữa + 1;
Bớc 7: Nếu Đầu ≤ Cuối 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
PROGRAM TK_NHIPHAN;
CONST Nmax = 250;
TYPE
Trang 12¬ng tr×nh T×m kiÕm nhÞ ph©n
(dïng m¸y chiÕu hoÆc b¶ng phô)
- HS: Quan s¸t, nghe gi¶ng, ghi
READLN(N);
WRITELN('Nhap cac phan tu cua day so tang: ');
FOR i:= 1 TO N DO BEGIN
WRITE('Phan tu thu ',i,' = ');
BEGIN Giua:=(Dau + Cuoi) Div 2;
IF A[Giua] = k THEN Tim_thay:= True ELSE
IF A[Giua] > k THEN Cuoi:= Giua - 1 ELSE
Dau:= Giua + 1; END;
Trang 14- Cách khai báo biến mảng 2 chiều;
- Có thể hình dung kiểu mảng hai chiều nh một bảng có các dòng và các cột Các dòng
và các cột đều đợc đnáh số nguyên liên tiếp Hai đoạn số nguyên dùng để đánh số cho các dòng và các cột có thể khác nhau Mỗi phần tử của mảng hai chiều đợc hình dung nh một ô trong bảng, mỗi ô có chỉ số dòng và chỉ số cột;
2 Kỹ năng
- Nhận biết đợc các thành phần trong khai báo kiểu mảng hai chiều;
- Nhận biết đợc các định danh của một phần tử mảng hai chiều xuất hiện trong một CT;
- Viết đợc khai báo kiểu mảng hai chiều với các chỉ số thuộc kiểu nguyên
3 Thái độ
- Có ý thức tự giác học tập và có tinh thần tập thể tham gia hoạt động nhóm
II Ph ơng tiện dạy và học
2 Kiểm tra bài cũ
- Viết cú pháp khai báo biến mảng một chiều cho bài tập 7 SGK- T79?
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 4 (Tìm hiểu câu lệnh
kiểu mảng hai chiều)
- GV: Yêu cầu HS đọc phần đầu của
gồm các giá trị cùng kiểu Có thể biểu
2 Kiểu mảng hai chiều
- Có thể hình dung một mảng hai chiều chmột bảng có các dòng và các cột
Trang 15diễn bảng nhân bằng kiểu dữ kiệu
mảng hai chiều
- GV: Các ngôn ngữ lập trình có qui
tắc và cách thức cho phép xác định đối
với mảng hai chiều nh thế nào?
- HS: Trả lời câu hỏi
- GV: Qua ví dụ trên, yêu cầu HS lên
bảng viết khai báo một số biến mảng
trình (Dùng máy chiếu hoặc bảng phụ)
- HS: quan sát, nghe giảng, ghi bài
- Kiểu mảng hai chiều là mảng một chiều mà mỗi phần tử của nó lại là mảng một chiều
* Với kiểu mảng hai chiều, các NNLT cho phép xác định:
- Tên kiểu mảng hai chiều;
- Số lợng phần tử của mỗi chiều;
- Kiểu dữ liệu của phần tử;
- Cách khai báo biến;
- Cách tham chiếu đến phần tử
Ví dụ: biến mảng hai chiều B lu trữ bảng nhân
có thể đợc khai báo trong Pascal nh sau:
Var B: array[1 9] of array[1 10] of integer;Hay
Var B: array[1 9,1 10] of integer;
a Khai báo
Tổng quát, khai báo biến mảng hai chiều:
- Cách 1: khai báo trực tiếp biến mảng hai chiều:
Var <tên biến mảng> = Array[kiểu chỉ số
VAR B:array [1 5, 1 7] of Integer;
d, i, j, k: Integer;
BEGIN WRITELN('Nhap cac phan tu cua mang theo dong:');
FOR i:= 1 TO 5 DO
Trang 16BEGIN FOR j:= 1 TO 7 DO READ(B[i,j]);
IF B[i,j]< k THEN BEGIN
WRITE(B[i,j], ' '); d:= d+ 1;
END;
IF d= 0 THEN WRITELN ('Khong co phan tu nao nho hon', k);
READLN END.
- GV: Chia nhãm lÇn 1, chia líp thµnh
3 nhãm
- HS: Th¶o luËn theo nhãm, hoµn
thµnh kÕt qu¶ vµo b¶ng phô
- GV: Yªu cÇu c¸c nhãm b¸o c¸o vµ
2) Type Mang 1 : array[1 5, 1 6] of real; Var A= Mang1;
3) Var B : array[1 5, 1 9] of real;
4 Cñng cè
- Nh¾c l¹i c¸ch khai b¸o biÕn m¶ng mét chiÒu vµ khai b¸o biÕn m¶ng hai chiÒu:
+ M¶ng mét chiÒu
Var <tªn biÕn m¶ng> : array[kiÓu chØ sè] of <kiÓu phÇn tö>;
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>;
+ M¶ng hai chiÒu
Trang 17 Var <tªn biÕn m¶ng> = Array[kiÓu chØ sè hµng, kiÓu chØ sè cét] of <kiÓu
Trang 18- Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng;
- Cung cấp cho HS ba thuật toán cơ bản và đơn giản thờng gặp với dữ liệu kiểu mảng: Tính tổng các phần tử thoả mãn điều kiện nào đó; Đếm số các phần tử thoả mãn điều kiện nào đó; Tìm phần tử lớn nhất hay nhỏ nhất cùng vị trí của nó trong mảng;
- Giới thiệu hàm ramdom;
2 Kỹ năng
- HS có đợc các kỹ năng cơ bản làm việc với kiểu mảng (một chiều) trong lập trình, cụ thể là: Khai báo kiểu dữ liệu mảng; nhập dữ liệu cho mảng, đa ra màn hình chỉ số và giá trị các phần tử của mảng; Duyệt qua các phần tử của mảng để xử lý từng phần tử;
- Biết chạy chơng trình với một số chơng trình có sẵn và biết giải một số bài toán tính toán, tìm kiếm đơn giản
3 Thái độ
- Góp phần hình thành và rèn luyện t duy lập trình, tác phong của ngời lập trình
II Ph ơng tiện dạy và học
2 Kiểm tra bài cũ
- GV: Thủ tục ramdomize khởi tạo lấy
số ngẫu nhiên trớc khi dùng lênh
Bài 1:
Tạo mảng A gồm n (n<=100) số nguyên, mỗi
số có giá trị tuyệt đối không lớn hơn 300 Tính tổng các phần tử của mảnglà bội số của một số nguyên dơng k cho trớc
Trang 19ramdom(n) để lấy số ngẫu nhiên trong
- HS: Thực hành theo yêu cầu
- GV: Yâu cầu HS thực hành theo yêu
cầu của ý b
- HS: Thực hành theo yêu cầu
- GV: Chi biết biến Posi và biến neg
Write(‘Nhap n=’);
Readln(n);
For i:=1 to n do A[i]:=ramdom(300) – ramdom(300); For i:=1 to n do write(a[i]:5);
Writeln;
Write(‘Nhap k =’); readln(k);
S:=0;
For i:=1 to n do
If a[i] mod k = 0 then s:=s+A[i];
Writeln(‘Tong can tinh la:’,s:8:4);
ReadlnEnd
b Đa các câu lệnh sau đây vào các vị trí cần thiết nhằm sửa đổi CT trong câu a) để
* Hoạt động 2 (Sửa đổi chơng trình)
- GV: Yêu cầu các nhóm thực hiện
theo yêu cầu
- HS: các nhóm thực hiện theo yêu
Trang 204 Củng cố
- Nhắc lại cách xây dựng và sử dụng biến mảng một chiều
- Thủ tục ramdomize khởi tạo lấy số ngẫu nhiên trớc khi dùng lênh ramdom(n) để lấy số ngẫu nhiên trong phạm vi từ 0 đến (n-1)
5 Bài tập về nhà
- Làm Bài tâp 4.1 đến 4.8 SBT – 31+32
- Đọc trớc bài 2 SGK- T 64 (bài thực hành 3)
Trang 21Ngày soạn: 15/ 2/ 2008
Ngày giảng: / / 2008…
Tiết 26 Bài tập và thực hành 3 (tiếp) III Tiến trình bài giảng 1 ổ n định tổ chức / /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
/ /2008 ./ /2008 / /2008 … … …
2 Kiểm tra bài cũ
- Kiểm tra kết hợp nội dung học thực hành
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 3 (Tìm hiểu và soạn
thảo chơng trình Bài 2 SGK- 64)
-GV: Yêu cầu HS thực hành theo nội
dung hớng dẫn:
+ Hãy soạn thảo chơng trình (ý a) Bài
2 SKG- 64
+ Hãy lu tệp với tên mình_ lớp …
+ Kiểm tra lỗi và chạy chơng trình
- HS: Thực hành soạn thảo nội dung
chơng trình (ý a) Bài 2 SGK- 64, Lu
tệp, hiệu chỉnh, chạy chơng trình với
nhiều bộ Input khác nhau
Bài 2 SGK- 64 Viết chơng trình tìm phần tử
có giá trị lớn nhất của mảng và đa ra màn hình chỉ số và giá trị của phần tử tìm đợc Nếu có nhiều phần tử có cùng giá trị lớn nhất thì đa ra phần tử với chỉ số nhỏ nhất
a Hãy gõ, tìm hiểu chơng trình sau đây:
PROGRAM Bai2SGK_T64;
CONST Nmax=100;
VAR A: Array [1 Nmax] of Integer;
n, i, j: Integer;
BEGIN WRITELN('Nhap so luong phan tu cua day so, N =');
READLN(N);
FOR i:= 1 TO N DO BEGIN
WRITELN ('Phan tu thu ', i, '= ');
READLN(A[i]);
END;
j:=1;
FOR i:= 2 TO N DO
IF A[i]< A[j] THEN j:=i;
WRITELN ('Chi so: ', j, ' Gia tri: ', A[j]: 4);
Trang 22* Hoạt động 4 (Kiểm tra đánh giá
cuối bài- chia lớp thành 10 nhóm)
-GV: Hãy soạn lại chơng trình trên
để đa ra các chỉ số của các phần tử có
cùng giá trị lớn nhất
- HS: Thực hành theo nhóm và thực
hiện các yêu cầu của GV
- Kiểm tra kết quả, đánh giá
READLN END.
b Viết lại chơng trình trên để đáp ứng yêu cầu sau: Đa ra các chỉ số của các phần tử có cùng giá trị lớn nhất.
Trang 23- Củng cố cho HS những kiến thức và kỹ năng khi lập trình với kiểu dữ liệu mảng;
- Củng cố cho HS một số thuật toán sắp xếp các phần tử của một dãy (bằng tráo đổi) và biết vận dụng để diễn đạt thuật toán này bằng CT sử dụng dữ liệu kiểu mảng trên máy tính
2 Kỹ năng
- HS có đợc các kỹ năng cơ bản làm việc với kiểu mảng (một chiều) trong lập trình,
- Biết chạy chơng trình với một số chơng trình có sẵn và thay đổi những câu lệnh cần thiết;
- Rèn luyện kỹ năng nhận xét, phân tích và đề xuất cách giải bài toán sao cho chơng trình chạy nhanh hơn
3 Thái độ
- Rèn luyện HS một ý thức cần có của ngời lập trình là viết CT với khối lợng tính toán
ít nhất có thể đợc;
- Góp phần hình thành và rèn luyện t duy lập trình, tác phong của ngời lập trình
II Ph ơng tiện dạy và học
2 Kiểm tra bài cũ
- Kiểm tra kết hợp trong quá trình thực hành
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 1 (Tìm hiểu chơng trình
bài 1)
- GV: Yêu cầu đọc đề đầu bài, nhắc
lại thuật toán sắp xếp bằng tráo đổi?
- HS: Trả lời
- GV: Yêu cầu HS soạn thảo chơng
Bài 1 SGK- 65 a) Hãy tìm hiểu và chạy thử CT thực hiện thuật toán sắp xếp dãy số nguyên bằng thuật toán tráo đổi với các giá trị khác nhau của n dới đây.
Const Nmax = 250;
Trang 24Readln(‘Nhap n=’);
Readln(n);
For i:=1 to n do A[i]:=random(300)-ramdom(300);
For i:=1 to n do write(A[i]:5);
Writeln;
For j:=n downto 2 do For i:=1 to j-1 do
If A[i]>A[i+1] then Begin
WritelnEnd
* Hoạt động 2 (Sửa đổi chơng trình)
- Để đáp ứng yêu cầu ở câu b) GV có
thể dùng một số câu hỏi gợi ý nh:
- GV: Đoạn nào (gồm những câu lệnh
nào) thể hiện một lần tráo đổi giá trị
của hai phần tử liện kề của mảng?
+ Phải đặt câu lệnh tăng biến Dem ở
đâu?
+ Khai báo biến đếm nh thế nào?
+Khởi tạo biến Dem nh thế nào?
- GV: Lu chơng trình với tên mình_
bài 1_Yb_T65
b) Khai báo thêm biến nguyên Dem và bổ
sung vào CT những câu lệnh cần thiết để
biến Dem tính số lần thực hiện tráo đổi
trong thuật toán Đa kết quả tìm đợc ra màn hình.
4 Củng cố
- Nhắc lại thuật toán sắp xếp đơn giản.;
- Mỗi bài toán có thể có nhiều cách viết thành một chơng trình vì vậy cần chọn cách
có số phép tính ít nhất
Trang 255 Bài tập về nhà
- Xem lại Bài 1 đã học, đọc trớc Bài 2 SGK- T66 giờ sau thực hành
Trang 262 Kiểm tra bài cũ
- Kiểm tra kết hợp nội dung học thực hành
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 3 (Tìm hiểu và soạn
thảo chơng trình Bài 2 SGK- 66)
- GV: Hãy đọc và tìm hiểu những
phân tích để viết CT giải bài toán
+ Yêu cầu HS đọc đề bài;
+ Yêu cầu HS soạn thảo CT (có sẵn)
- HS: Gõ và chạy thử CT;
- GV: Yêu cầu HS sửa đổi CT bằng
cách: chọn Save As rồi mới sửa
- GV: hớng dẫn, chỉ rõ cho HS tại sao
lại có đợc B[i] = B[i-1] + A[i];
Bài 2 SGK- T66.
Cho mảng A gồm n phần tử Hãy viết CT tạo mảng B[1 n] trong đó B[i] là tổng của i phần tử đầu tiên của A.
B[i]:=0;
For j:=1 to i do B[i]:=B[i]+A[j];
Trang 27* Hoạt động 4 (Kiểm tra đánh giá
cuối bài- chia lớp thành nhóm ngồi
{Ket thuc tao B}
For i:=1 to n do write(B[i]:5);
ReadlnEnd
Trang 28- Biết một xâu là một dãy các kí tự, có thể coi xâu nh một mảng một chiều;
- Biết kiểu xâu với một số hàm thủ tục chuẩn;
- Hiểu cách khai báo kiểu dữ liệu xâu
- Biết vận dụng khai báo kiểu xâu vào bài tập và chơng trình trên máy tính
2 Kỹ năng
- Biết khai báo kiểu dữ liệu xâu;
- Biết so sánh hai xâu;
- Nhận biết và bớc đầu sử dụng đợc các hàm, các thủ tục chuẩn
3 Thái độ
- Có ý thức tự giác học tập và có tinh thần tập thể tham gia hoạt động nhóm
- Tiếp tục xây dựng lòng ham thích giải bài toán bằng lập trình trên MTĐT
II Ph ơng tiện dạy và học
2 Kiểm tra bài cũ
- Không kiểm tra
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 1 (Tìm hiểu khái niệm, quy
tắc và cách thức cho phép xác định đối
với kiểu xâu)
- GV: Đa ra VD về xâu đơn giản (trình
chiếu) Hãy cho biết khái niệm Xâu?
Trang 29quy tắc và cách thức cho phép xác định
(Yêu cầu HS học SGK- T68)
- HS: Nghe giảng, học SGK
- GV: Có thể hình dung xâu nh mảng
một chiều Tham chiếu tới phần tử của
xâu đợc xác định bởi tên biến xâu và chỉ
số đặt trong cặp ngoặc [chỉ số]
+ Khi viết một xâu kí tự, ta phải viết xâu
kí tự đó giữa hai dấu nháy đơn
- HS: Nghe giảng, ghi nhớ
* Các NNLT có quy tắc và cách thức cho phép xác định:
- SGK- T68
- VD: Biến A lu trữ giá trị hằng xâu
Huyen Ham Yen
A[3] cho ta kí tự ‘y’
* Hoạt động 2 (Tìm hiểu cú pháp khai
báo kiểu dữ liệu xâu)
- GV: Để khai báo kiểu dữ liệu xâu ta sử
dụng tên dành riêng STRING, tiếp theo là
độ dai không quá 255 đợc ghi trong cặp
ngoặc [255]
- HS: Nghe giảng, ghi nhớ
- GV: Trình bày cú pháp khai báo kiểu dữ
liệu xâu (viết bảng)
- GV: Khi trong khai báo không có phần
khai báo độ dài thì biến đó có giá trị
ngầm định là 255
- GV: Lấy ví dụ khai báo xâu?
- HS: lên bảng viết ví dụ
1 Khai báo kiểu dữ liệu xâu
VAR <Tên biến> : STRING [Độ dài lớn nhất của xâu];
- VD:
VAR Ten : String [20];
VAR Ghichu: String;
* Hoạt động 3 (Tìm hiểu các thao tác xử
u tiên thấp hơn phép ghép xâu
+ Xâu A là lớn hơn xâu B nếu nh kí tự
đầu tiên khác nhau giữa chúng kể từ trái
sang trong xâu A có mã ASCII lớn hơn
+ Xâu A là đoạn đầu của xâu B thì A nhỏ
- VD: ‘abc’ + ‘ks’, Cho kết quả là ‘abcks’
b Các phép so sánh =, <>, <, >, <=, >=
- Ví dụ: ‘TIN’ + ‘HOC’ < ‘TIN HOC 10’
* Để xử lí các xâu, có thể sử dụng các thủ tục và hàm chuẩn sau:
c Thủ tục chuẩn DELETE (St, vt, n) thực
hịên việc xoá n kí tự của xâu St bắt đầu từ vị trí vt
d Thủ tục INSERT(S1, S2, vt) chèn xâu S1
vào xâu S2, bắt đầu từ vị trí vt
Trang 30- HS: Quan sát nghe giảng, ghi bài.
- GV: Để xử lí các xâu, TP sử dụng các
thủ tục và hàm chuẩn (trình bày giải thích
chi tiết từng thủ tục và hàm chuẩn- dùng
bảng phụ hoặc máy chiếu)
- GV: Lấy ví dụ cụ thể cho các hàm và
- HS: Quan sát, nghe giảng, ghi bài
e Hàm COPY(S., vt, N) Tạo xâu gồm N kí
tự liên tiếp bắt đầu từ vị trí vt của sâu S
f Hàm LENGTH(S) Cho giá trị là độ dài
xâu S
g Hàm POS(S1, S2) cho vị trí xuất hiện
đầu tiên của xâu S1, trong xâu S2
h Hàm UPCASE(ch) cho chữ cái viết hoa
ứng với chữ cái trong ch
- Ví dụ chơng trình đơn giản
* Hoạt động 4 (GV: Chia lớp thành 3
nhóm, yêu cầu các nhóm làm việc)
- HS: Thảo luận theo nhóm, hoàn thành
kết quả vào bảng phụ
- GV: Yêu cầu các nhóm báo cáo và nhận
Giá trị st: ‘Mon Tin Hoc 10’;
Thao tác: DELETE(st, 4, 6 ); KQ?
- Nhóm 3:
+ Hãy cho biết kết quả:
a Giá trị S1: ‘ Lam Van’; S2: ‘Sach Tap lop 10’
- Học bài, làm bài tập 4.18 đến 4.21 trong SBT- t36;
- Đọc trớc mục 3 của bài 12 SGK - T71
Trang 31Ngày soạn: 01/ 3/ 2008
Ngày giảng: / / 2008…
Tiết 30
Đ12 Kiểu xâu (tiếp)
III Tiến trình bài giảng
1 ổ n định tổ chức
/ /2008 ./ /2008 / /2008 … … … / /2008 ./ /2008 / /2008 … … … / /2008 ./ /2008 / /2008 … … …
2 Kiểm tra 15 phút
Đề bài
Câu 1 (0,5 điểm) Hãy khoanh vào chữ Đ và S
A Mảng hai chiều là một dãy hữu hạn các phần tử cùng kiểu Đ S
B Xâu là dãy các kí tự trong bộ mã ASCII gồm 255 kí tự Đ S
Câu 2 (0,5 điểm) Khai báo nào trong các khai báo sau là đúng
A VAR B= array[1 20] Of Integer;
B VAR B: array[1 20] Of Integer;
C VAR B:= array[1 20] Of Integer;
D VAR B: array[1 20] Of Integer;…
Câu 3 (0,5 điểm) Khai báo nào trong các khai báo sau là đúng
A VAR C: array[1 10, 15 1 ] Of Integer;
B VAR C: array[1 10, 1 15] Of Integer;… …
C VAR C: array[1 10, 1 15] Of Integer;
D VAR C:= array[1 10, 1 15 ] Of Integer;
Câu 4 (0,5 điểm) Khai báo nào trong các khai báo sau là đúng
A: String[266]; A= String[255];
A: =String[255]; A: String;
Câu 5 (6 điểm) Hãy cho biết kết quả các phép toán, thao tác và biểu thức sau:
a ‘TRUONG’ + ‘ THPT ’ + ‘THAI HOA’; KQ?
b Giá trị st: ‘Mon Tin Hoc 10’; Thao tác: DELETE(st, 6, 3 ); KQ?
c Giá trị s1: ‘Van 10’; Giá trị s2: ‘ Hoc ’;
Thao tác INSERT(s1, s2, 4); KQ?
d Giá trị s: ‘Huyen Ham Yen’; Biểu thức: COPY(s, 8, 6); KQ?
e Giá trị s: ‘Huyen Ham Yen’; Biểu thức: LENGTH(s); KQ?
f Giá trị ch: ‘tinh tuyen quang’; Biểu thức: UPCASE(ch); KQ?
Đáp án và biểu điểm
Trang 32Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 1 (tìm hiểu ví dụ 1 về
a, b: string;
Begin Write('Nhap ho ten thu nhat: '); Readln (a);
Write('Nhap ho ten thu hai: '); Readln (b);
x:= length(b);
{Xac dinh do dai xau b de biet vi tri cua ki tu cuoi cung}
If a[1] = b[x] Then Write('Trung nhau') Else Write('Khac nhau');
Readln End.
* Hoạt động 3 (tìm hiểu ví dụ 3 )
Readln (a);
K:= length(a);{Xac dinh do dai xau} For i:= k Downto 1 Do Write(a[i]); Readln
End.
* Hoạt động 4 (tìm hiểu ví dụ 4 ) Ví dụ 4
Trang 33Write(' Ket qua: ', b);
Readln End.
* Hoạt động 5 (tìm hiểu ví dụ 5 )
- GV: Trình bày chơng trình
- HS: Quan sát, nghe giảng, ghi bài
- GV: Hãy cho biết ý nghĩa một số câu
i: Byte;
Begin Write('Nhap vao xau s1: ');
Readln (s1);
s2:= '';
{Khoi tao xau S2 rong}
For i:= 1 to length(s1) Do
If ('0'<s1[i]) and (s1[i]<='9') then s2:= s2+s1[i];
Write('Ket qua: ', s2);
Readln End.
Trang 34- Biết một xâu là một dãy các kí tự, có thể coi xâu nh một mảng một chiều;
- Biết kiểu xâu với một số hàm thủ tục chuẩn;
- Hiểu cách khai báo kiểu dữ liệu xâu
- Làm quen với việc tìm kiếm, thay thế và biến đổi xâu
- Biết áp dụng các hàm, các thủ tục chuẩn vào bài tập cụ thể
2 Kỹ năng
- Biết khai báo kiểu dữ liệu xâu;
- Biết sử dụng các thủ tục và hàm chuẩn để xử lý xâu
- Soạn thảo và chạy thử đợc chơng trình trong bài thực hành và một số yêu cầu khác
3 Thái độ
- Có ý thức bảo vệ tài sản phòng máy;
- Góp phần hình thành và rèn luyện t duy lập trình, tác phong của ngời lập trình
II Ph ơng tiện dạy và học
2 Kiểm tra bài cũ
- Kiểm tra kết hợp nội dung thực hành
3 Bài mới
Hoạt động của thầy và trò Nội dung bài giảng
* Hoạt động 1 (Tìm hiểu chơng trình Bài
1 SGK- T73)
- GV: Yêu cầu HS khởi động TP sau đó
soạn thảo chơng trình, soát lỗi, chạy