1. Tiết 21
Kiểu mảng
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức:
- Hiểu khái niệm mảng một chiều và hai chiều .
- Hiểu cách khai báo và truy cập đến các phần tử của mảng .
2. Kỹ năng:
- Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng một chiều .
- Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của
mảng .
II. Chuẩn bị của GV và HS:
1. Giáo viên:
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
Trước khi vào bài, giáo viên đưa ra một số
vấn đề cần giải quyết như sau :
Với những kiểu dữ liệu như đã biết, làm thế
nào để :
- Lưu trữ và xử lý một dãy số ?
- Lưu trữ và xử lý Họ và tên của một Có thể sử dụng ví dụ trong SGK để học sinh
dễ theo dõi, gõ trước chương trình để có thể
người ?
- Lưu trữ và xử lý bảng kết quả thi tốt sử dụng cho các phần tiếp theo .
nghiệp ?
HS : Đưa ra các phương án để trả lời cho 3
câu hỏi trên .
GV : Các ngôn ngữ lập trình thường cung
cấp một số kiểu dữ liệu được xây dựng từ
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 1
2. những kiểu dữ liệu chuẩn gọi là kiểu dữ
liệu có cấu trúc .
Chương này chúng ta sẽ tìm hiểu một Trong lập trình thường có 2 loại mảng :
số kiểu dữ liệu trong ngôn ngữ Pascal để trả
- Mảng một chiều .
lời 3 câu hỏi trên .
- Mảng hai chiều .
GV : Đưa ra ví dụ, cần lập lập trình xử lý 1. Kiểu mảng một chiều
một dãy số nguyên, hãy tìm cách lưu trữ
một dãy số nguyên trong khi lập trình ?
- Mảng một chiều là một dãy hữu hạn các
phần tử có cùng kiểu, mảng được đặt tên và
Bằng cách nào để lưu trữ được thông tin mỗi phần tử mang một chỉ số. Để mô tả
dưới dạng bảng khi lập trình ?
mảng một chiều ta cần xác định kiểu của
các phần tử và cách đánh chỉ số các phần tử
HS : Đưa ra ý kiến .
.
GV : Đánh giá ý kiến của học sinh, sau đó Với mảng một chiều ta quan tâm đến :
đưa ra mục đích của việc sử dụng cấu trúc
- Tên mảng một chiều .
mảng trong chương trình .
- Số lượng phần tử trong mảng .
- Kiểu dữ liệu của phần tử .
GV : Đưa ra khái niệm mảng một chiều và
- Cách khai báo biến mảng một chiều .
một số yếu tố liên quan trong lập trình nói
- Cách truy cập vào từng phần tử của
chung .
mảng .
Xét ví dụ : Nhập vào nhiệt độ trung bình
mỗi ngày trong tuần . Tính và đưa ra màn
hình nhiệt độ trung bình của cả tuần và đếm
số ngày có nhiệt độ lớn hơn nhiệt độ trung
GV : Đi sâu phân tích hai chương trình để bình này .
cho học sinh nhận thấy sự tiện lợi khi sử
dụng mảng .
Quan sát hai chương trình viết bằng ngôn
ngữ Pascal cùng để giải bài toán trên .
- Chương trình 1 : Không sử dụng kiểu
mảng .
- Chương trình 2 : Sử dụng kiểu mảng
HS : Trong khi giáo viên phân tích hai
một chiều .
chương trình, học sinh sẽ đưa ra ý kiến
nhận xét về 2 chương trình.
HS : Trong khi giáo viên phân tích hai a> Khai báo mảng một chiều
Trong ngôn ngữ Pascal, mảng một chiều
chương trình, học sinh sẽ đưa ra ý kiến
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 2
3. nhận xét về 2 chương trình.
được khai báo bằng hai cách như sau :
Cách 1 :
Var <Tên mảng> : Array[kiểu chỉ số] of
<kiểu phần tử> ;
Cách 2 :
Type <Tên kiểu mảng> = Array [<kiểu chỉ
GV : Đưa ra cách khai báo mảng một chiều số>] of <kiểu phần tử> ;
trong ngôn ngữ Pascal, giải thích ý nghĩa Var <Tên mảng> : <tên kiểu mảng> ;
của các từ khóa mới .
Trong đó :
GV : Khai báo bằng cách nào tiện lợi hơn ? - Type là từ khóa dùng để khai báo biến,
Array là từ khóa để khai báo mảng .
- Kiểu chỉ số thường là đoạn số nguyên
HS : Thường thì học sinh trả lời cách 1 tiện
liên tục có n1..n2, với n1 là chỉ số đầu
lợi hơn ?
và n2 là chỉ số cuối.
- Kiểu thành phần là kiểu dữ liệu của
phần tử mảng .
GV : Tùy trường hợp cụ thể mà ta dùng - Để truy cập vào phần tử mảng ta viết :
cách 1 hay cách 2 nhưng thông thường ta - <Tên biến mảng>[Chỉ số]
sử dụng cách 1 .
Ví dụ :
A[20] Truy cập phần tử mang chỉ số 20
trong mảng A .
GV : Sử dụng một sồ hình ảnh trực quan Ví dụ :
minh họa cho học sinh cấu trúc mảng và Khai báo biến mảng thông qua kiểu
chỉ số của phần tử
mảng :
Type
ArrayInteger=Array[1..100] of Integer;
Chỉ
1 2 3 4 5 6 7 8
ArrayReal=Array[1.50] of Real;
số
Var A : Array[1..50];
Giá 5
81 62 18 26 41 24 53
B : Array[1..50] of Real;
trị 3
Đưa ra một số khai báo mảng trong Pascal . Khai báo mảng trực tiếp :
Var A : Array[1..100] of Integer ;
B : Arrat[1..50] of Real ;
IV. Củng cố:
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 3
4. Tiết 22
Kiểu mảng (T)
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên:
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ: Cho biết cách khai báo mảng một chiều?
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
b> Một số ví dụ :
Ví dụ 1 : Tìm phần tử lớn nhất của một dãy
GV : Đưa ra ví dụ .
số nguyên .
HS : Xây dựng thuật toán để giải bài toán - Input : Số nguyên dương N và dãy số
A1, A2, ….., AN
(thuật toán đã học ở lớp 10) .
- Output : Chỉ số và giá trị của số lớn
nhất trong dãy
GV soạn sẵn chương trình và cho học sinh - Ý tưởng :
quan sát chương trình .
+ Đặ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 .
Nếu có nhiều thời gian, giáo viên sẽ tiến Chương trình như sau :
hành soạn chương trình từ đầu để học sinh
có thể dễ dàng nhận ra các thao tác cần phải Program timmax ;
thực hiện khi viết chương trình .
Uses crt ;
var a : array[1..250] of integer ;
n,i,max,csmax : Integer ;
Begin
clrscr ;
Write('Nhap n = ') ;
Readln(n) ;
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 4
5. 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 tráo đổi .
GV : Đưa ra ví dụ, nhắc lại ý tưởng của - Input : Số nguyên dương N và dãy số
thuật toán .
A1, A2, …, AN
- Output : Dãy A được sắp xếp theo thứ
tự không giảm .
HS : Xây dựng thuật toán để giải bài toán
(thuật toán đã học ở lớp 10) .
- Ý tưởng :
+ Đổi để đưa số lớn nhất về vị trí cuối
cùng .
GV: soạn sẵn chương trình và cho học sinh
+ Làm tương tự đối với những số còn
quan sát chương trình .
lại .
Chương trình như sau :
Nếu có thời gian, giáo viên sẽ tiến hành
soạn chương trình từ đầu để học sinh có thể Program sapxep ;
dễ dàng nhận ra việc chuyển đổi ngôn ngữ Uses crt ;
từ ngôn ngữ thuật toán sang ngôn ngữ lập var A : Array[1..250] of integer ;
trình .
n,i,j,tg : Integer ;
Begin
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 5
6. 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 .
IV. Củng cố:
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 6
7. Tiết 23
Kiểu mảng (T)
Ngày
soạn:...../......;
giảng:..../......
I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên:
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C5:
11C6:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
11C3:
11C7:
Ngày
11C4:
Nội dung
Ví dụ 3 : Tìm kiếm nhị phân .
GV : Đưa ra ví dụ, nhắc lại ý tưởng của
thuật toán .
HS : Xây dựng thuật toán để giải bài toán
(thuật toán đã học ở lớp 10) .
- Input : Dãy số A1, A2,………, AN đã
được sắp xếp tăng dần .
- Output : Có hay không chỉ số i mà
A[i] = k hoặc thông báo không tìm
thấy .
GV soạn sẵn chương trình và cho học sinh
- Ý tưởng :
quan sát chương trình .
Xem lại thuật toán tìm kiếm nhị phân
trong SGK lớp 10 .
Chương trình như sau :
Nếu có thời gian, giáo viên sẽ tiến hành
soạn chương trình từ đầu để học sinh có thể Program sapxep ;
dễ dàng nhận ra việc chuyển đổi ngôn ngữ Uses crt ;
từ ngôn ngữ thuật toán sang ngôn ngữ lập var A : Array[1..250] of integer ;
trình .
n,i,k : Integer ;
dau,cuoi,giua : Integer ;
TK : boolean ;
Begin
clrscr ;
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 7
8. Write('Nhap so ptu mang n = ') ;
Readln(n) ;
For i := 1 to n do
Begin
Write('A[',i,'] = ') ;
readln(A[i]) ;
End ;
Write('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 ;
End ;
If TK then write('Chi so la : ',giua)
else write(' Khong tim thay ');
readln ;
End .
2. Kiểu mảng 2 chiều :
GV : Quay lại ví dụ về lưu trữ dữ liệu dạng - Mảng hai chiều là một bảng các phần tử
bảng để các em nhận ra nhu cầu phải sử cùng kiểu .
dụng mảng 2 chiều trong lập trình .
Với mảng hai chiều ta quan tâm đến :
- Tên kiểu mảng hai chiều .
- Số lượng phần tử của mỗi chiều trong
mảng .
- Kiểu dữ liệu của phần tử .
- Cách khai báo biến mảng hai chiều .
- Cách truy cập vào từng phần tử của
mảng .
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 8
9. a> Khai báo mảng hai chiều
- Trong ngôn ngữ Pascal, mảnh hai chiều
được khai báo như sau :
GV : Khai báo cách nào tiện lợi hơn (tương
tự mảng 1 chiều) ?
Cách 1 : Khai báo trực tiếp
Var : <Tên mảng> : Array[kiểu chỉ số dòng,
HS : Thường thì học sinh vẫn chọn cách 1 . kiểu chỉ số cột] of < kiểu phần tử> ;
GV : Tùy theo trường hợp cụ thể nhưng Cách 2 : Khai báo gián tiếp thông qua khai
thường thì cách 1 hay được dùng hơn .
báo kiểu mảng
Type <Tên kiểu mảng> = Array[kiểu chỉ số
dòng, kiểu chỉ số cột] of <kiểu phần tử> ;
Var <Tên mảng> : <Tên kiểu mảng> ;
Ví dụ :
Khai báo biến mảng thông qua kiểu
mảng :
Type
ArrayInteger = Array[1..10,1..15] of Integer
GV : Khi khai báo mảng 2 chiều cần chú ý ;
điều gì ?
ArrayReal=Array[1..50,1..100] of Real ;
HS : Tìm câu trả lời, GV gợi ý để các em Var A : ArrayInteger ;
chỉ ra được chỉ số của mảng, số dòng, số B : ArrayReal ;
cột và kiểu của mỗi phần tử trong mảng .
Khai báo mảng trực tiếp :
Var A : Array[1..10,1..15] og Integer ;
B : Aarray[1..50,1..100] og Real ;
Cách truy cập vào phần tử của mảng hai
GV : Gọi một số học sinh lên khai báo một chiều :
số biến mảng một chiều theo yêu cầu của
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 9
10. giáo viên .
<Tên mảng>[chỉ số dòng, chỉ số cột]
Ví dụ : A[1,3], B[23,66],……
Minh họa bằng hình ảnh mảng 2 chiều và
chỉ số các phần tử mảng hai chiều cũng như
cách viết truy cập phần tử mảng .
IV. Củng cố:
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 10
11. Tiết 24
Kiểu mảng (T)
Ngày
soạn:...../......;
giảng:..../......
I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên:
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C5:
11C6:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
GV cho học sinh quan sát chương trình và
giải thích các lệnh trong chương trình, chú
ý đi sâu vào các lệnh lặp để các em nhận ra
thường thì ta sử dụng vòng lặp for - do để
duyệt qua các phần tử mảng .
11C3:
11C7:
Ngày
11C4:
Nội dung
b> Một số ví dụ :
Ví dụ 1 :
Chương trình sau đưa ra màn hình bảng cửu
chương .
Program cuuchuong;
GV nên soạn sẵn chương trình và cho các Uses crt ;
em quan sát chương trình, và chạy thử var A : Array[1..9,1..9] of Integer ;
chương trình trên máy để các em tiện theo i, j : Byte ;
dõi .
Begin
Clrscr ;
Program Timkiem;
Uses crt;
Writeln('Bang cuu chuong 1 -> 9 : ');
var A : Array[1..100,1..100] of Integer;
Writeln ;
i,j,n,m : Byte ;
For i := 1 to 9 do
k,d : integer ;
For j := 1 to 9 do
A[i,j] := i*j ;
Begin
For i := 1 to 9 do
Clrscr ;
Begin
Write(' Nhap so dong, so cot cua mang : ')
For j := 1 to 9 do Write(a[i,j]:4);
;
Writeln ;
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 11
12. Readln(m,n);
For i := 1 to m do
For j := 1 to n do
Begin
Write(' A[',i,',',j,'] = ');
Readln(A[i,j]);
End ;
Writeln(' Mang vua nhap vao la : ');
Writeln;
For i := 1 to m do
Begin
For j := 1 to n do
Write(a[i,j]:4) ;
Writeln;
Writeln;
End;
Writeln ;
End ;
Readln ;
End .
Ví dụ 2 :
Chương trình sau nhập vào một mảng 2
chiều và số nguyên k, sau đó in ra các phần
tử có giá trị nhỏ hơn k của mảng .
Write(' Nhap gia tri k : ');
Readln(k) ;
d := 0 ;
For i := 1 to m do
For j := 1 to n do
If a[i,j] < k then
Begin
write('So nho hon ',k,' la ');
write(a[i,j]:8);
d := d+1 ;
End ;
If d = 0 then
Write('Khong co ptu nao nho hon ',k);
readln;
End .
IV. Củng cố:
Nhắc lại một số khái niệm mới .
Nhắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 phần đồng thời gọi 4
học sinh lên bảng viết lại các cách khai báo, truy xuất, và hiển thị để nhập dữ
liệu .
Ra bài tập về nhà .
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 12
13. V. Dặn dò: Đọc lại các kiến thức đã học trong bài 11. Chuẩn bị các chương
trình để chạy trong giờ thực hành sau.
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 13
14. Tiết 25
Bài tập và thực hành 3
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng;
2. Kỹ năng:
+ Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu
thông qua việc tìm hiểu, chạy thử các chương trình có sẵn;
+ Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính.
+ Tổ chức những hoạt động trong phòng máy để HS có được kĩ năng
cơ bản trong 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 tất cả các phần tử của mảng để sử lí từng phần tử.
+ Cung cấp cho HS 3 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ử thỏa mãn điều kiện nào đó;
- Đếm số phần tử thỏa mãn điều kiện nào đó;
- Tìm phần tử lớn nhất (hay nhỏ nhất) của mảng cùng với vị
trí của nó trong mảng.
+ 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. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
HS: phải hiểu được chương trình đã viết Bài 1: Tạo mảng A gồm n (n<=100) số
sẵn ở câu a) và thấy được kết quả chạy nguyên, mỗi số có trị tuyệt đối không vượt
chương trình này, trên cơ sở đó tìm ra cách quá 300. Tính tổng các phần tử của mảng là
giải quyết vấn đề đặt ra ở câu b.
bối số của một số nguyên dương k cho
GV: cần cho HS thấy được điểm khác nhau trước.
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 14
15. cơ bản của các chương trình ở câu a và câu
b.
Thủ tục randomize khởi tạo bộ lấy số ngẫu
nhiên trước khi dùng lệnh random(n) để lấy
một số nguyên ngẫu nhiên trong phạm vi từ
0 đến n-1.
GV: đưa ra một số câu hỏi (phù hợp với
trình độ HS ở mỗi lớp), hướng dẫn HS tìm
hiểu chương trình:
- MyArray là tên một kiểu dữ liệu hay
tên một biến?
- Vai trò của nmax và n khác nhau
ntn?
- Những dòng lệnh nào nhằm tạo ra
mảng A?
- Lệnh
gán:
A[i]:=random(300)random(300);
có ý nghĩa gì?
……….
IV. Củng cố:
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
a) Hãy tìm hiểu và chạy thử chương trình
sau đây:
Program Sum1;
(tr 63 SGK)
b) Hãy đưa các câu lệnh sau đây vào những
vị trí cần thiết nhằm sửa đổi chương trình
trong câu a) để có được chương trình đưa ra
số các số dương và số các số âm trong
mảng.
posi, neg : integer;
posi:= 0; neg:= 0;
if A[i] > 0 then posi:= posi + 1
else if A[i] < 0 then neg:=neg+1;
writeln(posi:4,neg:4);
Page 15
16. Tiết 26
Bài tập và thực hành 3(T)
Ngày
soạn:...../......;
giảng:..../......
I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C5:
11C6:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
GV: Nêu gợi ý cho HS thấy được chương
trình 2a thể hiên thuật toán tìm phần tử lớn
nhất.
GV: Hướng dẫn HS tìm hiểu vai trò của
biến j qua các câu lệnh của bài toán.
GV: Có thể cho HS một ví dụ bộ dữ liệu
input nhỏ và yêu cầu HS mô phỏng việc
chạy chương trình thể hiện thuật toán trên
giấy nháp.
11C3:
11C7:
Ngày
11C4:
Nội dung
Bài 2: 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ử có chỉ số nhỏ nhất.
a) Tìm hiểu chương trình sau đây:
Program max;
Const nmax=100;
Type myarray=array[1..nmax] of interger;
Var a:myarray;
HS: Tích cực tìm hiểu bài toán, thực hiện
n, i, j:integer;
bài toán trên máy tính, sửa lỗi chạy chương Begin
trình.
Write(‘Nhap so luong phan tu day, n=’);
Readln(n);
For i:= 1 to n do
Begin
Write(‘ phan tu thu ‘,i,’ =’);
1
readln(a[i]);
2
end;
j:=1;
for i:=2 to n do if a[i]>a[j] then j:=i;
write(‘ chi so:’,j,’ Gia tri:’,a[j]:4);
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 16
17. readln
end.
Nếu còn thời gian thì HS hoàn thành phần b) Chỉnh sửa chương trình trên để đưa ra chỉ
b) dưới sự hướng dẫn của GV.
số các phần tử có cùng giá trị lớn nhất.
IV. Củng cố: Có thể thay thế câu lệnh a[i]:=random(300)-random(300) cho hai
lệnh 1,2
V. Dặn dò:
Tiết 27
Bài tập và thực hành 4
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức:
- Củng cố cho HS những kiến thức cơ bản đã có khi lập trình với kiểu
dl mảng;
- Củng cố cho HS một thuật toán sắp xếp các phần tử của một dãy
(bằng tráo đổi);
2. Kỹ năng:
- Rèn luyện kĩ năng diễn đạt thuật toán sắp xếp bằng chương trình sử
dụng dữ liệu kiểu mảng;
- Rèn luyện cho HS một ý thức cần có của người lập trình là viết
chương trình với khối lượng tính toán ít nhất có thể;
- 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. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Bài này giúp chúng ta củng cố thuật Bài 1:
toán sắp xếp (bằng tráo đổi) và kĩ năng cài a) Hãy tìm hiểu và chạy thử chương trình
đặt bằng ngôn ngữ lập trình.
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
HS: Tích cực tìm hiểu bài toán, thực hiện nhau của n dưới đây. Qua đó, nhận xét thời
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 17
18. bài toán trên máy tính, sửa lỗi chạy chương gian chạy của chương trình.
trình.
(chương trình SGK – t65)
b) Khai báo thêm biến Dem và bổ xung vào
GV: Yêu cầu HS sửa lại một chỗ để có chương trình những câu lệnh cần thiết để
chương trình sắp xếp các phần tử theo thứ biến Dem tính số lần thực hiện tráo đổi
tự không tăng.
trong thuật toán. Đưa kết quả ra màn hình.
HS: Chạy thử để kt kết quả.
GV: Để đáp ứng yêu cầu ở câu b, đưa ra
một số câu hỏi để gợi ý.
HS: Trả lời các câu hỏi của GV và thực
hiện theo yêu cầu ở câu b.
IV. Củng cố:
V. Dặn dò:
Tiết 28
Bài tập và thực hành 4 (T)
Ngày
soạn:...../......;
giảng:..../......
I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C5:
11C6:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
HS: Tích cực tìm hiểu bài toán, thực hiện
bài toán trên máy tính, sửa lỗi chạy chương
trình.
GV: Sửa lỗi cho HS trong quá trình gõ và
chạy chương trình. Giải thích những thắc
mắc về bài toán mà HS đưa ra.
Chuong IV Kiể u dữ liệ u có cấu trúc
11C3:
11C7:
Ngày
11C4:
Nội dung
Bài 2: Hãy đọc và tìm hiểu những phân tích
để viết chương trình giải bài toán: Cho
mảng A gồm n phần tử. Hãy viết chương
trình tạo mảng B[1..n], trong đó B[i] là tổng
i phần tử đầu tiên của A.
Chương trình: SGK-t66.
Để ý rằng ta có các hệ thức sau:
B[1] = A[1]
B[i] = B[i-1] + A[i];
Page 18
19. Do đó, ta thay đoạn chương trình bởi hai
lệnh sau:
B[1] = A[1];
For i:= 2 to n do B[i]:= B[i-1]+A[i];
Với hai lệnh này máy chỉ phải thực hiện n-1
phép cộng, trong khi với đoạn chương trình
trong SGK máy phải thực hiện n(n+1)/2
phép cộng.
GV: Nhờ việc phân tích như trên ta tiết
kiệm được một lượng tính toán đáng kể.
IV. Củng cố: Tuy tốc độ tính toán của máy tính nhanh nhưng có giới hạn. Do đó,
khi viết chương trình ta nên tìm cách viết sao cho chương trình thực hiện càng ít
phép toán càng tốt.
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 19
20. Tiết 29
Kiểu xâu
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức:
- Biết xâu là một dãy ký tự (có thể coi xâu là một mảng một chiều) .
- Biết cách khai báo xâu, truy cập phần tử của xâu .
2. Kỹ năng:
- Sử dụng được một số thủ tục, hà thông dụng về xâu .
- Cài đặt được một số chương trình đơn giản có sử dụng xâu .
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV : Để lưu trữ và xử lý Họ tên của một Một số khái niệm
người, các kiểu dữ liệu đã học có đáp ứng - Xâu là một dãy kí tự trong bảng mã
ASCII .
được ?
- Mỗi kí tự được gọi là một phần tử của
xâu .
- Số lượng kí tự trong xâu được gọi là độ
HS : Đưa ra một số phương án .
dài của xâu .
- Xâu có độ dài bằng 0 gọi là xâu rỗng.
GV : Phân tích các phương án của học - Tham chiếu tới phần tử trong xâu được
sinh, từ đó đưa ra yêu cầu cần sử dụng một
xác định thông qua chỉ số của phần tử
kiểu mới : Kiểu xâu .
trong xâu .
- Chỉ số phần tử trong xâu thường được
đánh số là 1 .
- Trong ngôn ngữ Pacal, tham chiếu tới
GV : Giới thiệu một số khái niệm và thao
phần tử thường được viết :
tác thường dùng khi làm việc với xâu ký tự
<Tên biến xâu>[chỉ số]
trong lập trình nói chung .
Cách khai báo và xử lí xâu trong ngôn
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 20
21. ngữ Pascal :
GV : Đây là cách khai báo trong ngôn ngữ
Pascal, trong các ngôn ngữ khác nhau có
thể có cách khai báo khác nhau . Do đó khi
viết chương trình bằng ngôn ngữ nào cần
tìm hiểu rõ các đối tượng của ngôn ngữ đó .
Khai báo biến xâu :
Pascal sử dụng từ khóa STRING để khai
báo xâu . Độ dài tối đa của xâu được viết
trong [ ] sau từ khóa STRING . Khai báo
như sau :
Var <tên biến> : String[độ dài lớn nhất
của xâu] ;
Ví dụ :
Var Ten : String[10] ;
Ho_dem : String[50] ;
Que : String ;
Độ dài tối đa của xâu phụ thuộc vào ngôn
ngữ lập trình, thường là 255 ký tự .
Cách viết hằng xâu trong các ngôn ngữ
khác nhau cũng có sự khác nhau .
Chú ý :
- Nếu không khai báo độ dài tối đa cho
biến xâu kí tự thì độ dài ngầm định của
xâu là 255 .
- Độ dài lớn nhất của xâu là 255 ký tự .
- Hằng xâu kí tự được đặt trong cặp nháy
đơn ‘ ’ .
Các thao tác xử lí xâu
Xét ví dụ như sau : Có xâu kí tự :
‘ nGuyen vaN A ’
- Với các xâu kí tự có các phép phép xâu
và phép so sánh hai xâu kí tự .
- Phép ghép xâu : Kí hiệu bằng dấu cộng
+ .
Hỏi cần có các thao tác gì để chỉnh sửa xâu
kí tự này ? (cần đưa xâu về dạng ‘Nguyen
Ví dụ : ‘Ha’ + ‘Noi’ cho kết quả là ‘Ha
Van A’)
Noi’
HS : Đưa ra ý kiến của mình .
Phép so sánh : <, <=, >, >=, = , <>, Pascal
GV : Phân tích ý kiến và gợi ý để các em tự động so sánh lần lượt từ kí tự từ trái sang
phải .
nhận ra cần :
- Xóa bớt một số dấu cách .
- Chuyển chữ hoa về chữ thường và Ví dụ : ‘AB’ < ‘AC’, ‘ABC’ > ‘ABB’,
‘ABC’ <’ABCD’
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 21
22. ngược lại .
GV : Đưa ra một số câu hỏi :
- Làm sao biết một ký tự là dấu cách ?
- Làm sao để xóa đi một vài kí tự ?
- Làm sao để thêm vào một xâu một
vài kí tự ?
- Làm sao để có được chữ in hoa
tương ứng với chữ thường.
- Làm sao có được chữ cái thường
tương ứng với chữ hoa ?
- Làm sao biết xâu hiện có bao nhiêu
kí tự ?
Một số thủ tục chuẩn dùng để xử lí xâu :
Từ đó đưa ra các thủ tục chuẩn và hàm
chuẩn của Pascal thường dùng để xử lí
xâu .
Ứng với mỗi thủ tục hoặc hàm, giáo viên
lấy ví dụ trong một chương trình Pascal cụ
thể để các em hiểu được ý nghĩa các thủ tục
và hàm này .
- Delete(St,vt,n) xóa n kí tự của xâu St
bắt đầu từ vị trí vt .
- Insert(S1,S1,vt) chèn sâu S1 vào S2
bắt đầu từ vị trí vt của S2
- Val(St,x,m) Đổi giá trị xâu St thành
số ghi giá trị vào biến X, nếu không
đổi được thì vị trí gây lỗi ghi trong m,
nếu đổi thành công thì m = 0
- Str(X,St) chuyển số X thành xâu kí
tự lưu trong St .
Trong môi trường soạn thảo của Pascal,
giáo viên chỉ cần làm một chương trình đơn
giản có sử dụng một trong các thủ tục hoặc
Một số hàm chuẩn :
hàm này để các em theo dõi .
- Copy(St,vt,n) sao chép từ xâu St n kí
tự từ vị trí vt .
- Pos(S1,S2) tìm vị trí xuất hiện đầu
tiên của S1 trong S2 .
- Length(St) : cho độ dài xâu St .
- Upcase(ch) : cho chữ cái viết hoa
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 22
23. tương ứng với chữ thường trong ch .
- CHR(X) : cho kí tự có mã X trong
bảng mã ASCII .
- Ord(ch) : cho mã của kí tự ch trong
bảng mã .
IV. Củng cố:
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 23
24. Tiết 30
Kiểu xâu (T)
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
Giáo viên soạn sẵn các ví dụ này để tiện
Một số ví dụ :
cho học sinh theo dõi trên màn hình cũng
như việc chạy thử và không làm mất thời
gian ngồi viết chương trình .
VD 1 :
Program vd1 ;
Uses crt ;
Với mỗi ví dụ, giáo viên đi sâu vào câu Var s1,s2 : String ;
lệnh trực tiếp đáp ứng yêu cầu của ví dụ,
như vậy các em sẽ tiếp thu nhanh hơn .
Begin
Clrscr ;
Write('Nhap xau thu 1 : ') ;
Ví dụ 1 : Nhập 1 xâu, viết ra màn hình xâu
Readln(s1) ;
dài hơn .
Write('Nhap xau thu 2 : ') ;
Readln(s2) ;
If length(s1) > Length(s2) then
Write(s1)
else
Write(s2);
Readln ;
Ví dụ 2 : Nhập 1 xâu, kiểm tra xem ký tự End .
đầu tiên của xâu S1 có trùng với ký tự cuối
cùng của xâu S2 hay không ?
VD 2 :
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 24
25. Program vd2 ;
Uses crt ;
Var s1,s2 : String ;
x : Byte ;
Begin
Clrscr ;
Write('Nhap xau thu 1 : ');
Readln(s1) ;
Write('Nhap xau thu 2 : ');
Readln(s2) ;
x := length(s2) ;
If s1[1] = s2[x] then
Write('Trung nha')
else
Write('Khac nhau');
Readln ;
Ví dụ 3 : Nhập 1 xâu, viết ra màn hình xâu End .
đó theo thứ tự ngược lại của các ký tự trong
xâu .
VD 3 :
Program vd3 ;
Uses crt ;
Var i,k : Byte ;
a : String ;
Begin
Clrscr ;
Write('Nhap xau : ') ;
Readln(a) ;
k := length(a) ;
For i := k downto 1 do
Write(a[i]) ;
Readln ;
End .
Ví dụ 4 : Nhập 1 xâu, viết ra màn hình xâu
đó nhưng đã được bỏ tất cả các ký tự là dấu VD 4 :
cách .
Program vd4 ;
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 25
26. Uses crt ;
Var i,k : Byte ;
a,b : String ;
Begin
Clrscr ;
Write('Nhap xau : ') ;
Readln(a) ;
k := length(a) ;
b :='' ;
For i := 1 to k do
if a[i] <> '' then
b := b+a[i] ;
Write(b) ;
Readln ;
End .
Ví dụ 5 : Nhập 1 xâu, viết ra màn hình xâu VD 5 :
gồm các ký tự số của xâu đó .
Program Xulixau ;
Uses crt ;
Var s1,s2 : String ;
i : Byte ;
Begin
Clrscr ;
Write('Nhap xau s1 : ') ;
Readln(s1) ;
s2 := '' ;
For i := 1 to length(s1) do
If ('0'<s1[i]) and (s1[i]<='9') then
s2 := s2 + s1[i] ;
Write(s2);
Readln ;
End .
IV. Củng cố:
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 26
27. Tiết 31
Bài tập và thực hành 5
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu xâu.
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Đưa ra ví dụ hoặc yêu cầu HS cho ví
dụ về xâu đối xứng và xâu không đối xứng. Bài 1: Nhập vào từ bàn phím một xâu.
HS: Tích cực tìm hiểu bài toán, thực hiện Kiểm tra xâu đó có phải là xâu đối xứng
bài toán trên máy tính, sửa lỗi chạy chương không.
trình.
a) Chạy thử chương trình sau:
var x,i : byte;
a,p: string;
GV: Sửa lỗi cho HS trong quá trình gõ và begin
chạy chương trình. Giải thích những thắc write(‘ Nhap vao xau:’);
mắc về bài toán mà HS đưa ra.
readln(a);
x:=length(a);
p:=’’;
for i:=x downto 1 do
p:=p+a[i];
if a=p then
write(‘ Xau doi xung’)
else write(‘Xau khong doi xung’);
readln
end.
b) Hay viết lại chương trình trên, trong đó
GV: Không cần thiết phải tạo một xâu mới không dùng biến xâu p.
để so sánh hai xâu mà chỉ so sánh các cặp
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 27
28. kí tự ở vị trí đối xứng nhau để kết luận xâu
đó có đối xứng không
IV. Củng cố:
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 28
29. Tiết 32
Bài tập và thực hành 5 (T)
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu xâu.
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
Bài 2: Cho xâu s. Viết chương trình đếm số
từ có trong xâu s này?
Program Demtu;
Var s:string;
GV: Để giải quyết được bài toán này thì
d, x, i:byte;
trước hết ta phải cộng thêm một kí tự trống Begin
vào đầu xâu s.
Write(‘ Nhap xau:’);readln(s);
s:= ‘ ‘+s;
x:=length(s);
GV: Khi đó điều kiện để xác định xem đâu for i:=1 to x do
là một từ là gì?
if (s[i]=’ ‘ ) and (s[i+1]<>’ ‘) then d:=d+1;
write(‘ So tu co trong xau la:’,d);
HS: Trả lời câu hỏi.
readln
end.
GV: Kết luận và đưa ra hướng giải quyết
bài toán.
Khi đó để kiểm tra xem đâu là một từ thì ta
phải xét điều kiện: xâu s tại vị trí thứ i là kí
tự trống, đồng thời tại vị trí thứ i+1 phải là
kí tự khác trống.
HS: suy nghĩ và đưa ra phương hướng giải Sử dụng phương pháp chuẩn hóa xâu s. Từ
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 29
30. quyết vấn đề này.
đó có thể tìm ra số từ có trong xâu s này?
IV. Củng cố:
V. Dặn dò: Chuẩn bị trước bài tập trong SBT.
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 30
31. Tiết 33
Bài tập
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức: Củng cố cho HS những hiểu biết cơ bản nhất về kiểu dữ liệu
có cấu trúc.
2. Kỹ năng:
- Rèn luyện kĩ năng giải một bài toán với dữ liệu kiểu mảng và dữ liệu
kiểu xâu.
- Dần hình thành tư duy trong việc giải toán bằng ngôn ngữ TP với
những kiểu dữ liệu có cấu trúc.
II. Chuẩn bị của GV và HS:
1. Giáo viên: Giáo án, SGK, SBT .
2. Học sinh: Vở BT, SBT
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Qua quá trình chuẩn bị bài tập trong
SBT từ nhà, có ai có thắc mắc về bài tập
nào không?
HS: Đưa ra những vướng mắc cần giải đáp.
GV: Giải đáp các thắc mắc của HS.
Chữa bài tập trong SBT
GV: Gọi một số HS lên chữa một số bài tập
tiêu biểu (cả bài tập phần mảng và phần
xâu).
HS: Lên bảng chữa bài.
HS khác nhận xét bài làm của bạn.
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 31
32. GV: nhận xét và chỉnh sửa lại bài tập một
cách hoàn chỉnh.
IV. Củng cố:
V. Dặn dò: chuẩn bị trước bài 13.
Tiết 34
Kiểu bản ghi
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức:
- Biết khái niệm kiểu bản ghi .
- Biết cách khai báo bản ghi, truy cập trường của bản ghi .
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
Một số khái niệm
Xét ví dụ sau :
Viết chương trình dùng để quản lí các - Kiểu bản ghi được dùng để mô tả cho
thí sinh của một kỳ thi tuyển sinh .
các đối tượng có cùng một số thuộc tính
Chương trình của chúng ta cần quản lí
mà các thuộc tính có thể có các kiểu dữ
được :
liệu khác nhau .
+ SBD của thí sinh,
- Bản ghi thường được gọi là Record, mỗi
+ Họ tên thí sinh,
Record sẽ lưu trữ dữ liệu về một đối
+ Giới tính,
tượng cần quản lí .
+ Điểm của các môn …
- Mỗi thuộc tính của đối tượng tương ứng
với một trường của bản ghi . Các trường
GV : Đưa ra một số câu hỏi sau :
khác nhau có thể có dữ liệu khác nhau .
- Làm thế nào để quản lý toàn bộ - Các ngôn ngữ lập trình thường cho cách
thông tin trên của học sinh ?
để xác định :
- Mỗi thông tin trên có kiểu dữ liệu là
+ Tên kiểu bản ghi .
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 32
33. gì ?
HS : Có thể quản lý mỗi dữ kiện trên là
một mảng một chiều
+
+
+
+
Tên các trường .
Kiểu dữ liệu của trường .
Cách khai báo biến .
Cách tham chiếu đến trường .
Cách khai báo và sử dụng kiểu bản ghi
Ngôn ngữ lập trình bậc cao có cách tốt hơn trong ngôn ngữ Pascal
để quản lý dữ liệu trên -> Bản ghi .
1. Khai báo
GV lấy một bảng điểm của học sinh rồi chỉ
rõ : Mỗi hàng ta gọi là một bản ghi, mỗi cột Để khai báo biến bản ghi, thường khai báo
là một trường .
một kiểu bản ghi sau đó khai báo biến bản
ghi .
GV : Mỗi ngôn ngữ có một cách khai báo Cách khai báo kiểu :
kiểu bản ghi khác nhau .
Type <Tên kiểu bản ghi>=Record
<Tên trường 1> : <Kiểu trường 1> ;
………
………
Ngôn ngữ Pascal không cho bạn khai báo
<Tên trường n> : <Kiểu trường n> ;
biến bản ghi trực tiếp mà phải khai báo biến End ;
bản ghi thông qua khai báo kiểu bản ghi .
Trước hết phải khai báo kiểu bản ghi sau đó
biến bản ghi được khai báo thông qua kiểu Cách khai báo biến :
bản ghi này .
GV : Làm thế nào để có thể khai báo được Var <Tên biến> : <Tên kiểu bản ghi> ;
nhiều biến bản ghi có cùng một kiểu ?
Var <Tên mảng> : Array[1..n] Of <Tên
HS : GV sẽ gợi ý để học sinh đưa ra đó là kiểu bản ghi> ;
sử dụng kiểu mảng trong đó phần tử mảng
sẽ có kiểu bản ghi .
Type Hocsinh = Record
Hoten : String[30] ;
Ngaysinh : String[10] ;
Ví dụ về khai báo bản ghi .
Khai báo một kiểu bản ghi để xử lý
NamNu :Boolean ;
bảng kết quả thi của các học sinh .
Toan,Ly, Hoa, Van, Su, Dia : Real ;
Mỗi bản ghi sẽ bao gồm : Họ và tên của End ;
học sinh (Hoten), ngày tháng năm
sinh(Ngaysinh), Giới tính (NamNu), và Var A, B : Hocsinh ;
điểm thi các môn của mỗi học sinh (Toan, Lop : Array[1..100] Of Hocsinh ;
Ly, Hoa, Van, Su, Dia,Tin) .
Để truy cập vào từng trường của bản ghi, ta
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 33
34. Hãy xác định kiểu dữ liệu cho các trường viết :
trên (Mỗi nội dung trên là một trường của <Tên biến bản ghi> . <Tên trường>
bản ghi)
GV : Khi có nhu cầu thay đổi thông tin Ví dụ :
trong từng trường, làm thế nào để truy cập A.Hoten
thông tin vào từng trường của bản ghi ?
B.Ngaysinh
Lop[i].Toan
Mỗi ngôn ngữ có một cách truy cập khác Lop[i].Ly
nhau nhưng thường được viết là :
……… với i là chỉ số nào đó của mảng
<Tên biến bản ghi>.<tên trường>
Lop
GV: Đưa ra một số ví dụ .
IV. Củng cố:
V. Dặn dò:
Tiết 35
Kiểu bản ghi (T)
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức:
- Biết khái niệm kiểu bản ghi .
- Biết cách khai báo bản ghi, truy cập trường của bản ghi .
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Vì bản ghi có nhiều trường nên việc 2. Gán giá trị
gán giá trị cho bản ghi phức tạp hơn các
biến khác .
Có 2 cách để gán giá trị cho bản ghi .
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 34
35. Khi nhập thông tin vào từ bàn phím, ta
thường phải nhập cho từng trường .
Ví dụ :
CHương trình sau được viết trong ngôn ngữ
Pascal dùng kiểu bản ghi để xử lý bảng kết
quả thi bao gồm 2 môn Toán, Văn của học
sinh , Sau khi nhập xong danh sách sẽ đưa
ra bảng kết quả học tập và xếp loại (xem kỹ
đầu bài trong SGK) .
Chuong IV Kiể u dữ liệ u có cấu trúc
- Dùng lệnh gán trực tiếp : Nếu A, B là hai
bản ghi cùng kiểu ta có thể gán giá trị
của A cho B bằng câu lệnh gán :
Vd : B := A ; hoặc A := B ;
- Gán giá trị cho từng trường . Dùng câu
lệnh gán gán giá trị cho các trường hoặc
nhập từ bàn phím .
A.Hoten := ‘Nguyen Van Tuan’ ;
Readln(a.Ngaysinh);
Chương trình xử lý bảng kết quả thi.
Page 35
36. Ví dụ : Chương trình sau được viết trong ngôn ngữ Pascal dùng kiểu bản ghi để
xử lý bảng kết quả thi bao gồm 2 môn Toán, Văn của học sinh , Sau khi nhập xong
danh sách sẽ đưa ra bảng kết quả học tập và xếp loại (xem kỹ đầu bài trong SGK) .
(* Kieu ban ghi xu ly bang ket qua thi 2 mon : Toan, Van *)
Program Xeploai ;
uses crt ;
Type Hocsinh = Record
Ten : String[30] ;
Ngaysinh : String[10] ;
Diachi : String[50] ;
toan, van : real ;
Xeploai : Char ;
End ;
Var
Lop : array[1..100] of Hocsinh ;
i, n : Byte ;
Tg : Real ;
Begin
Clrscr ;
Write(' Cho biet so hoc sinh : ') ;
Readln(n) ;
For i := 1 to n do
Begin
Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ;
Write (' Ho ten : ') ;
readln(Lop[i].ten) ;
Write(' Ngay sinh : ') ;
readln(Lop[i].Ngaysinh) ;
Write(' Dia chi : ') ;
readln(Lop[i].Diachi) ;
Write(' Diem Toan : ') ;
readln(Lop[i].toan) ;
Write(' Diem Van ') ;
readln(Lop[i].van) ;
Tg := Lop[i].toan + Lop[i].van ;
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 36
37. if Tg >= 18 then Lop[i].Xeploai := 'A'
Else if Tg >= 14 then Lop[i].Xeploai := 'B'
Else if Tg >= 10 then Lop[i].Xeploai := 'C'
Else Lop[i].Xeploai := 'D'
End ;
Readln ;
For i := 1 to n do
Writeln(i : 4, Lop[i].ten : 30 , ' --- Loai : ', Lop[i].Xeploai);
Readln ;
End.
IV. Củng cố:
Nhắc lại một số khái niệm mới .
Nhắc lại cấu trúc câu lệnh về việc khai báo, truy cập đến các thành phần của
bản ghi .
Ra bài tập về nhà .
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 37
38. Tiết 36
Bài tập
Ngày
soạn:...../......;
giảng:..../......
Ngày
I. Mục tiêu
1. Kiến thức:
Củng cố cho HS những hiểu biết cơ bản nhất về kiểu dữ liệu có cấu
trúc.
2. Kỹ năng:
- Rèn luyện kĩ năng giải một bài toán với dữ liệu kiểu bản ghi.
- Dần hình thành tư duy trong việc giải toán bằng ngôn ngữ TP với
những kiểu dữ liệu có cấu trúc.
II. Chuẩn bị của GV và HS:
1. Giáo viên: Giáo án, SGK, SBT .
2. Học sinh: Vở BT, SBT
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Qua quá trình chuẩn bị bài tập trong
SBT từ nhà, có ai có thắc mắc về bài tập
nào không?
HS: Đưa ra những vướng mắc cần giải đáp.
GV: Giải đáp các thắc mắc của HS.
Chữa bài tập trong SBT
GV: Gọi một số HS lên chữa một số bài tập
tiêu biểu.
GV: Chú ý cho HS cách truy nhập vào
trường của bản ghi.
HS: Lên bảng chữa bài.
HS khác nhận xét bài làm của bạn.
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 38
39. GV: nhận xét và chỉnh sửa lại bài tập một
cách hoàn chỉnh.
IV. Củng cố:
V. Dặn dò: chuẩn bị trước bài 14.
Chuong IV Kiể u dữ liệ u có cấu trúc
Page 39