Lúc này ta chỉ cần viết: Var S: String; -Để khai báo báo kiểu dữ liệuxâu, TP sử dụng tên dànhriêng STRING tiếp theo độdài lớn nhất không vượt quá255 được ghi trong cặpngoặc [ ].. - Nắm
Trang 2Tiết 39 KIỂU XÂU
I Mục đích – Yíu cầu
1 Mục đích:
Đưa ra khâi niệm về kiểu dữ liệu xđu
HS lăm quen với kiểu dữ liệu xđu
Giới thiệu một số thủ tục thao tâc trín xđu
2.Yíu cầu:
HS nắm được thế năo lă xđu ký tự, câch khai bâo
Nắm được câc thủ tục thao tâc trín xđu
II Phương phâp giảng dạy
Sử dụng phương phâp đặt vấn đề, gợi ý, đăm thoại, hướng dẫn
III Câc bước lín lớp
Ổn định lớp:
Nắm sĩ số vă tình hình của lớp
Kiểm tra băi cũ:
Nội dung băi mới:
Đặt vấn đề: Chúng ta thường sử dụng câc cđu chữ để diển đạt ý của mình lín giấy, có
thể viết bằng tay, có thể dùng mây vi tính để soạn thảo Như vậy mây tính cho phĩp chúng
ta viết câc từ, câc cđu như câch chúng ta viết lín giấy Thế mây tính đê lăm như thể năo để
có được chức năng như vậy Để tìm hiểu về vấn đề năy chúng ta sẽ bắt đầu tìm hiểu về kiểu
DL xđu, đó lă một kiểu dữ liệu có cấu trúc cũng tương tự như kiểu DL mảng một chiều
Tg Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
1 Khai bâo kiểu DL xđu.
Khâi niệm kiểu DL xđu.
- Xđu lă một dêy câc ký trong bảng
mê ASCII, liín hệ với nhau qua tín
xđu
- Ví dụ: S: = ‘Phu loc’;
Độ dăi xđu.
- Độ dăi xđu lă số ký tự của xđu
Ví dụ: Độ dăi xđu S ở ví dụ trín lă
Trang 3Khai báo biến kiểu xâu:
- Cú pháp:
VAR <tên biến>: STRING [độ dài
lớn nhất của xâu];
Ví dụ: Var S: String[25];
- Chú ý: Nếu muốn khai báo một
xâu có độ dài 255 thì có thể không
cần khai báo độ dài lớn nhất của
xấu Lúc này ta chỉ cần viết:
Var S: String;
-Để khai báo báo kiểu dữ liệuxâu, TP sử dụng tên dànhriêng STRING tiếp theo độdài lớn nhất (không vượt quá255) được ghi trong cặpngoặc [ ]
- Các em cho hãy biết muốnkhai báo một xâu có độ dài
read hoặc readln
Ví dụ: read (S) hoặc readln (S)
- Nhập xâu, sử dụng lệnh:
Ví dụ: write hoặc writeln
Ví dụ: write(S) hoặc writeln(S)
Tham chiều đến phần tử trong
- Dựa vào khái niệm xâu đãhọc các em cho biết phần tửcủa xâu có kiểu gì?
- Nhận xét, và bổ sung chocâu trả lời (nếu cần)
- Kiểu ký tự
- Bây giờ chúng ta sẽ tìmhiểu các thao tác xử lý trênxâu
2 Các thao tác xử lý xâu.
a Phép ghép xâu.
- Sử dụng toán tử ‘+’: S1+S2+…
+Sn trong đó S1, S2,…, Sn là một
biến xâu, một hằng xâu
-Ý nghĩa: Ghép nhiều xâu thành
một xâu
Trang 4- Hai xâu có độ dài bằng nhau nếu
chúng giống nhau hoàn toàn Ví
- delete(st,1,4);KQ: ‘ef’
Trang 5Tiết 24
Tim
e
§2 KIỂU DỮ LIỆU XÂU
6 Hàm Copy:
- Cú pháp: Copy(st, pos, num)
- Công dụng: Hàm cho kết quả là một
xâu gồm num kí tự được lấy bắt đầu từ
vị trí pos trong xâu st
ví dụ 1: st := ‘Tin hoc van phong’;
write(Copy(st, 5, 7); → ‘hoc van’
- Công dụng: Hàm cho kết quả là một
số nguyên dương là vị trí xuất hiện đầu
tiên của xâu st1 trong xâu st2
‘ABCBA’ → xâu Palindrom
‘ABCCA’ → không phải là xâu
Palindrom
HD: Dùng 2 biến chạy i, j để so sánh
các kí tự nằm đối xứng nhau trong xâu
cho đề khi i = j
Trang 6Ví dụ 3: Viết chương trình nhập vào
một xâu, in ra màn hình mỗi từ trên mỗi
dòng (Các từ cách nhau bởi khoảng
Trang 7BAÌI THÆÛC HAÌNH 3 (tiết 27, 28)
I Mục đích – Yêu cầu.
1 Mục đích.
- Giúp HS thành thạo trong sử dụng kiểu dữ liệu xâu
- Khi đã sử dụng thành thạo kiểu dữ liệu xâu HS nắm vững hơn về kiểu dữ liệu mảngmột chiều nói riêng và kiểu dữ liệu có cấu trúc nói chung
- Thông qua những ví dụ, bài tập được sửa, HS có thể nắm được phương pháp giảiquyết các bài toán thực tế như: Tìm số lượng các từ thỏa mãn điều kiện nào đó
2 Yêu cầu.
- Nắm được cách khai báo một biến xâu, sử dụng được các thủ tục và hàm xử lý xâu
- HS tự làm bài tập hoặc tham gia làm bài tập về nhà
II Phương pháp giảng dạy.
- Chủ yếu sử dụng phương pháp đàm thoại, gợi mở để HS tìm ra phương pháp giải bàitập (giải thuật), hướng dẫn HS cài đặt chương trình, hiệu chỉnh chương trình
III Các bước lên lớp (10’)
3 Ổn định lớp.
- Nắm sĩ số và tình hình của lớp
4 Kiểm tra bài cũ.
- Cho biết cú pháp khai báo một biến kiểu xâu Giải thích các thành phần trong câulệnh, cho hai ví dụ về khai báo biến xâu
+ Đáp án: Var <tên biến>:String[độ dài tối đa của xâu];
Ví dụ: var hoten:string[30];
diachi:string[40];
+ Thang điểm: Phần khai báo đúng được 5 điểm, mỗi ví dụ đúng được 2 điểm
- Cho biết cách truy xuất (làm việc) đến từng phần tử của xâu? Giả sử có xâu:
St:= ‘Lop 11A’; viết lệnh in ra màn hình ký tự thứ 2 và ký tự cuối của xâu st
+ Đáp án: <tên biến>[chỉ số]
write(st[2]); write(st[7]);
Câu hỏi phụ: Có thể viết cách khác tổng quát để in ký tự cuối không?
+ Thang điểm: Cách truy xuất 4 điểm, hai câu lệnh in 6 điểm
- Nhận xét, cho điểm
5 Nội dung bài mới.
TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò 15’ Bài 1: Xâu Palindrom.
Đề: Hãy nhập từ bàn phím một
xâu, đưa ra màn hình xâu đó có
phải là xâu Palindrom hay
- Nhận xét câu trả lời của
HS, sau đó ghi lên bảngintput và output
- Bây giờ chúng ta hãy
HS trả lới:
- In: Một xâu ký tự
- Out: True/False
Trang 8TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
54321
654321
đó không?
- Câu hỏi mở: Các em thấy
gì về sự tương quan giữaphần tử đầu và phần tử cuốicủa xâu, phần tử thứ hai và
kế cuối?
- Như vậy xâu Palindrom làxâu có phần tử đầu giốngphần tử cuối, phần tử thứhai giống phần tử kế cuối,v.v…
- Đưa thêm hai ví dụ để họcsinh nhận dạng
- Hai xâu trên bảng xâu nào
là xâu Palindrom?
- Như vậy xâu Palindrom làxâu đối xứng Để thấy rõhơn chúng ta xét ví dụ trênbảng
- Xâu trên có mấy kí tự?
- Ký tự 1 và ký tự 5 như thếnào?
- Để lấy số lượng phần tửcủa một xâu bất kỳ ta dùnghàm gì?
- Phần tử đầu là ký tựgì,phần tử cuối là ký tự gì?
- Ký tự ‘A’ ở cuối nằm ở vịtrí thứ mấy trong xâu?
Length(s) bằng bào nhiêu?
- Kí tự đầu trùng ký
tự cuối, ký tự thứ haitrùng ký tự kế cuối,v.v…
- Kí tự đầu trùng ký
tự cuối, ký tự thứ haitrùng ký tự kế cuối
Trang 9TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
- Xâu Palindrom là xâugồm các cặp ký tự đốixứng Như vậy để kiểm tramột xâu Palindrom thì cầnkiểm tra cái gì?
- Xâu ‘ABCBA’ có baonhiêu ký tự? Cần kiểm tramấy cặp?
- Xâu ‘AbCCbA’ có baonhiêu ký tự? Cần kiểm tramấy cặp?
- Các em có nhận xét gì về
độ dài xâu và số cặp ký tựcần kiểm tra?
- Cần mấy lần kiểm tra mộtxâu Palindorm bất kỳ?
- length(s)
- length(s) - 1
- length(s) - 2
- length(s)-(i-1) =length(s)-i+1
- Kiểm tra các cặp kí
tự đối xứng, bắt đầu
tử cặp (1,n)
- Có 5 ký tự, cầnkiểm tra 2 cặp
- Có 6 ký tự, cầnkiểm tra 3 cặp
- Tới cặp thứ ký tựthứ: (n div 2) hoặcgặp cặp ký tự khácnhau
Trang 10TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
- Nếu một xâu không là xâuPalindrom thì việc kiểm trakết thúc trước khi i đến (ndiv 2)
- Như vậy kiểm tra một xâubất kỳ là xâu Palindrom thìviệc kiểm tra các cặp đốixứng đến khi nào thìngừng?
- Số lần kiểm tra không biếttrước, nên dùng vòng lặpkiểu nào?
- Gọi HS làm đoạn CTkiểm tra
- HS viết bẳng, GV đặt câuhỏi cho cả lớp:
+ Bắt đầu kiểm tra từ cặpthứ mấy?
+ Khi nào thì thực hiệnkiểm tra cắp tiếp theo?
+ Khi ngừng kiểm tra, chỉ
số i ở vị trí nào trong xâuđối với xâu ‘AbCCbA’,
‘aBBCa’
- Nhận xét, hiệu chỉnh, kếthợp với phần khai báo vànhập của HS trước viếtthành chương trình hoàn
- Vòng lặp với số lầnkhông biết trước.(while,repeat)
- HS ghi bảng
Sử dụng whilei:=1;
while (i<=n div2)and
(S[i]=S[n-i+1])
do i:=i+1;
if i>(n div 2) thenwrite(S,‘ la xauPalindrom)
else write(S,‘khong la xauPalindrom);
Sử dụng Repeat untili:=0;
repeat i:=i+1;
until (i>n div 2)or (S[i]<>S[n-i+1]);
if i>length(s)div 2then write(S,‘ la xauPalindrom)
else write(S,‘khong la xauPalindrom);
Var s:string;
begin write(‘Nhap xau:
’);
readln(s);
Trang 11TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
dữ liệu cho một xâu
- Các em đã học về ký tự sốchưa? Hãy liệt kê các ký tự
số trong bảng mã ASCII?
- Ta đã học các phép toánquan hệ gì?
- Để kiểm tra một số a làmột chữ số thập phân ta
- In: xâu ký tự S có
độ dài tối đa là 100
- Out: Số chữ số thậpphân xuất hiện trongxâu S
Trang 12TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
for i:=1 to length(st) do
if (‘0’<=st[i]) and (st[i]<= ‘9’)
then
dem:=dem+1;
dem:=0;
for i:=length(st) downto 1 do
if (‘0’<=st[i]) and (st[i]<= ‘9’)
- Trong bảng mả ASCII thì
ký thứ ‘0’ < ‘9’ Có nhậnxét gi khi so sánh giữa ‘0’
với ‘9’
- Ký tự ‘1’ như thế nào với
‘0’,‘9’
- Ký tự số bất kỳ ch nhưthế nào với ‘0’,‘9’
- Viết biểu thức kiểm tramột ký tự là ký tự số?
- Nếu thay ch bằng st[i]
được hay không? Tại sao?
- Như vậy điều kiện kiểmtra phần tử thứ i trong xâu
st có là ký tự số như sau
- Cần phải duyệt hết các ký
tự, với mỗi ký tự của xâu st
ta kiểm tra điều kiện trên,nếu thỏa mãn thì đếm thêmmột ký tự số
- Cần kiểm tra hết các phần
tử trong xâu do đó chúng tanên sử dụng vòng lặp kiểunào?
- Em nào có thể lên bảngviết đoạn lệnh đếm số ký tự
số được không?
- Nếu không có HS lênbảng có thể chia HS thànhtừng nhóm cùng thảo luận,lấy 10 nhóm nộp đầu tiên,đúng được cộng điểm tốt
- (‘0’<=ch) and(ch<= ‘9’)
- Được, vì st[i] cũng
là một ký tự
- Vòng lặp với số lầnbiết trước (for)
Dem:=0;
for i:=1 to length(st)do
if (‘0’<=st[i]) and(st[i]<= ‘9’) then dem:=dem+1;
dem:=0;
for i:=length(st)downto 1 do
if (‘0’<=st[i]) and(st[i]<= ‘9’) then dem:=dem+1;
Trang 13TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
for i:=1 to length(st) do
if (‘0’<=st[i]) and (st[i]<=
for i:=length(st) downto 1 do
if (‘0’<=st[i]) and (st[i]<=
Có khác gì so với cách giảibài 2 hay không?
- Giả sử dữ liệu vào đãđúng theo yêu cầu của bài
Bây giờ chúng ta tìm cáchđếm các chữ cái khác nhautrên nó
- Nếu không tính điều kiện
“khác nhau” thì số các chữcái của xâu là bao nhiêu,chú ý xâu S chỉ gồm cácchữ cái thường?
- Nếu có thêm điểu kiệnkhác nhau thì kết quả bài
- Cách giải tương tự,chỉ khác ở chỗ là tìm
số chữ cái
- Length(s)
- 6, 3
Trang 14TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
- Với xâu S = ‘aabca’ ta có:
acbaa
54321
xuất hiện trong S nên gán
dd[s[1]]:=true;
- S[2] = ‘a’ tức là ký tự ‘a’ có
xuất hiện trong S nên gán
dd[s[5]] đều có giá trị là true
toán sẽ như thế nào, các emxem một số ví dụ sau
- Với hai ví dụ trên kết quả
ra màn hình là bao nhiêu?
- Để tìm số các chữ cái cónhiều cách khác nhau, bâygiờ chúng ta sẽ cùng xétmột cách đó Cách này sửdụng thêm một mảng đánhdấu các chữ cái nào xuấthiện, cuối cùng chỉ cầnđếm số các chữ cái đượcđánh dấu Để rõ hơn chúng
ta cùng xét ví dụ sau đây
- Ta có thể khai báo mộtmảng có các chỉ số là ký tựchữ cái được không?
- Từ kết quả bên các emcho thầy biết giá trị củadd[s[i]] với s[i] là ký tự thứ
i của xâu S?
- Điều này có nghĩa là các
ký tự của một xâu sẽ xuấthiện ít nhất một lần trong
- Được
- True
Trang 15TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
- dd[s[i]]:=true; với i = 1,2,3,
…,length(s)
xâu đó
- Tạo mảng dd chính duyệthết các phần tử của xâu S,với mỗi phần tử s[i] thì gándd[s[i]]:= true; tức là
- Sau khi tạo được mảng
dd, để có số chữ cái thườngkhác nhau chỉ cần đếm sốphần tử của dd có giá trịtrue
- Từ cách giải trên các em
về nhà có thể viết lại thànhchương trình hoàn chỉnhchuẩn bị cho buổi thựchành sắp tới
IV Củng cố (2’)
Yêu cầu học sinh:
- Viết lại chương trình các bài đã học lên máy và chạy thử
- Chuẩn bị cho buổi thực hành sắp tới
BAÌI THÆÛC HAÌNH 4 (29,30)
II MỤC ĐÍCH – YÊU CẦU.
1 Mục đích.
- Giúp HS thành thạo trong sử dụng kiểu dữ liệu xâu
- Giúp HS có thể viết được chương trình Pascal giải các bài tập về kiểu dữ liệu xâu lênmáy
- Biết cách khắc phục những lỗi thường gặp
2 Yêu cầu.
- HS nắm được giải thuật của các bài tập về kiểu dữ liệu xâu đã học trong tiết chữa bàitập
III PHƯƠNG PHÁP GIẢNG DẠY.
- Hướng dẫn HS xác định lỗi, sửa lỗi không sửa lỗi thay cho HS
- Khuyến khích một số HS làm xong sớm giúp đỡ những bạn chưa làm được bài
IV CÁC BƯỚC LÊN LỚP (5’)
- Nắm sĩ số và tình hình của lớp
- Ổn định lớp, nhắc nhở HS trước khi vào phòng máy thực hành
- Ra một 2 bài về kiểu dữ liệu xâu để HS thực hành
- Cho HS vào phòng máy, ổn định chỗ ngồi
- Cho HS khởi động máy vào Pascal để thực hành
V NỘI DUNG.
1 Các bài cần thực hành: Bài xâu Palindrom, Bài 11 SGK trang 85.
Trang 162 Dự đoán các chương trình HS có thể viết:
Bài xâu Palindrom:
a Chương trình 1:
Var s,s1:string;
i,n:byte;
begin
write(‘Nhap xau: ‘);readln(s);
for i:=1 to length(s) do s1:=s1+s[i];
if s1 = s then write(S,‘ la xau Palindrom’)
else write(S,‘ khong la xau Palindrom’); readln;
while (i<=n) and (S[i]=S[length(s) -i+1]) do i:=i+1;
if i>n then write(S,‘ la xau Palindrom’)
else write(S,‘ khong la xau Palindrom’);
until (i>n) or (S[i]<>S[length(s) -i+1]);
if i>n then write(S,‘ la xau Palindrom’)
else write(S,‘ khong la xau Palindrom’); readln;
Trang 17if (‘0’<=st[i]) and (st[i]<= ‘9’)then dem:=dem+1; write(‘So luong chu so thap phan: ’,dem);
for i:=length(st) downto 1 do
if (‘0’<=st[i]) and (st[i]<= ‘9’) then dem:=dem+1; write(‘So luong chu so thap phan: ’,dem);
báo lỗi có từ nào có thể là từ khóa nhưngkhông hiện màu trắng
dòng có vệt sáng câu lệnh không có dấu ‘;’,thêm dâu ; vào cuối câu lệnh đó
- Thiếu ngoặc ( ),[ ] - Mã lỗi 89 hoặc 93, số ngoặc đóng phải
bằng số ngoặc mở
b Sai giải thuật:
- Xác định sai điều kiện lặp - Kiểm tra lại điều kiện lặp, while: điều kiện
được thỏa mãn thì làm; repeat: điều kiệnđược thỏa mãn thì ngừng; for: xác định rõ sốlần lắp, mốc đầu tiên vào mốc cuối cùng
- Lặp vô hạn do điều kiện lặp không thay đổi
qua mỗi bước - Có thể do không tăng biến điều kiển vònglặp
Trang 18KIỂU BẢN GHI (tiết 25)
1 Mục đích.
- Giới thiệu về kiểu bản ghi
- Giúp HS biết câch khai bâo kiểu bản ghi vă câch truy xuất biến bản ghi
- Giúp HS hiểu được ý nghĩa của kiểu bản ghi
2 Yíu cầu.
- HS đê biết câc kiểu dữ liệu đơn giản, câch khai bâo vă sử dụng chúng
- Vận dụng để khai bâo một số kiểu bản ghi đơn giản
- Tạo tình huống có vấn đề khi sử dụng câc kiểu dữ liệu đê học từ đó giúp HS hình dung ramột kiểu dữ liệu mới
- Sử dụng phương phâp thuyết trình, gợi mở để giới thiệu cho HS nội dung băi mới
1 Ổn định lớp.
- Nắm sĩ số vă tình hình của lớp
2 Kiểm tra băi cũ (Khuyến khích xung phong, lấy điểm tốt)
- Hêy liệt kí câc kiểu dữ liệu chuẩn (kiểu dữ liệu đơn giản)?
- Đê học câc kiểu dữ liệu có cấu trúc năo?
3 Nội dung băi mới
Đặt vấn đề: Để lưu tín của tất cả câc bạn trong lớp câc em thường dùng biến kiểu gì? Để
lưu tuổi của câc bạn trong lớp em lăm thế năo? Để lưu tín vă tuổi ta thường sử dụng kiểu string văkiểu số Có thể gộp kiểu string vă kiểu số thănh một kiểu được không Tất nhiín lă được, vậy câchgộp thế năo, sử dụng nó ra sao chúng ta sẽ biết ngay qua băi “Kiểu bản ghi” hôm nay
- Để mô tả hăng loạt câc đối tượng Mỗi
đối tượng được mô tả bằng một bản ghi
Mỗi thuộc tính của đối tượng tưng ứng với
một trường trong bản ghi
Trang 19TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
END;
Khai báo biến:
VAR <tên biến>: <Tên kiểu bản ghi>;
Trong đó TYPE, RECORD, END, VAR là
các từ khóa
Ví dụ 1: Để quản lý một thí sinh thi nghề
người ta thường quản lý: SBD, họ tên,
ngày sinh, giới tính, điểm lý thuyết, điểm
- Độ dài tối đa là baonhiêu?
- Ngày sinh có kiểu gì?
* Lưu ý: Các trường cùng kiểu có thể viết
tên các trường rồi đến khai báo kiểu của
các trường đó, tên các trường được phân
- Địa chỉ: Số nhà và tên đường
- Độ dài tối đa là baonhiêu?
- Giới tính thường cókiểu gì?
- Điểm lý thuyết, điểmthực hành có kiểu gì?
- Em hãy cho biết cácđặc tính cơ bản củamột xe máy đã đăng ký
sử dụng?
- Biển số xe thường cókiểu gì? Có thể xem nónhư số SBD của thísinh
- Số khung số máy cókiểu gì?
- Các loại xe máythường thấy trên thịtrường là gì?
- Màu xe có kiểu gi?
- Để quản lý chủ của
xe máy có thể quản lýcác mục như bên
- Trong địa chỉ cầnphân biệt số nhà và tênđường, vậy cần khai
- 10
- Kiểu boolean
- Kiểu real
- Tên chủ xe, Biển số,
số khung, số máy, loại
xe, màu xe
- HS lên bảng khai báokiểu bản ghi
Đáp án:
VAR xemay = RECORD Hoten:string[30];
Bienso:string[6];
Sokhung,somay: byte;
Loai: string; Mauxe:string;
END;
- Kiểu bản ghi
Đáp án:
TYPE diachi =
Trang 20TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
báo kiểu dữ liệu gì đểlưu địa chỉ?
- Kiểu dữ liệu để lưuchủ của xe máy nhưthế nào?
tendung:string[30];
END;
- Đáp án:
TYPE chuxe =RECORD
hoten:string[30]];
ns:string[10]; cmnd:string[10];
- HS ghi phần khai báolên bảng:
Đáp án:
VAR ts:RECORD SBD:string[6];
hoten:string[30];
ns:string[10];
gt:boolean;
DLT,DTH: real;
END;
RECORD Bienso:string[6];
Sokhung,somay: byte;
Loai: string; Mauxe:string;
END;
Trang 21TG Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
TYPE chuxe : RECORD
hoten:string[30]];
ns:string[10]; cmnd:string[10];
* Nhận xét: <tên biến bản ghi>.<tên
trường> là một biến, nên có thể làm việc
với các trường của bản ghi nhưng cách làm
việc với các biến mà trước đây đã học
- Để nhập họ tên củamột HS ta làm thế nào?
- Câu hỏi phụ:
Nếu viết varhoten:string[30]; thìhoten được xem là gì?
- Nhập dữ liệu cho biếnhoten thì làm thế nào?
- hoten là một trườngcủa biến hs nên phảilàm việc với nó có gìkhác?
- Gọi một HS viết lệnhnhập họ tên cho biến
hs
- hs.hoten có phải làmột biến hay không?
Biến kiểu gì?
- write(‘Nhap ho ten’); readln(hoten);
- Thêm ts vào phíatrước hoten
- write(‘ nhap ho ten’); readln(ts.hoten);
- Phải, kiểu string[30]
- Xem lại phần khai báo một biến bản ghi gồm khai báo gián tiếp và khai báo trực tiếp
- Làm việc với một biến bản ghi như nhập dữ liệu,… ta phải làm việc với các trường, tức là phải truy xuất đến các trường của nó
- Lớp chúng ta có 46 em đi thi nghề, để quản lý các em đó thì dùng dữ liệu gì
- Nhập tên của một HS bất kỳ, in ra màn hình ký tự đầu của tên HS đó
Trang 22KIỂU BẢN GHI (tiết 26)
I MỤC ĐÍCH – YÍU CẦU.
1 Mục đích.
- Giúp HS thănh thạo trong việc khai bâo kiểu dữ liệu bản ghi.
- Giúp HS nắm chắc câch truy xuất đến câc trường của bản ghi, biết câch sử dụngcđu lệnh WITH
2 Yíu cầu.
- Học sinh cần nắm được câc câch khai bâo biến kiểu bản ghi
- Biết cú phâp truy xuất đến câc trường của biến bản ghi
II PHƯƠNG PHÂP GIẢNG DẠY.
Thuyết trình gợi mở vấn đề, từ đó tạo cho học sinh nhu cầu tìm kiểu dữ liệu mới đểgiải quyết vấn đề
III CÂC BƯỚC LÍN LỚP.
1 Ổn định lớp.
- Nắm sĩ số vă tình hình của lớp
2 Kiểm tra băi cũ.
- Cđu 1: Có mấy câch khai bâo biến kiểu bản ghi? Viết cú phâp khai bâo của mỗi câch
TYPE <tín kiểu bản ghi> = RECORD
<tín trường 1>:<tín kiểu dữ liệu T1>;
… …
<tín trường n>:<tín kiểu dữ liệu Tn>;
END;
VAR <tín biến>: <Tín kiểu bản ghi>;
VAR <tín biến bản ghi> : RECORD
<tín trường 1>:<tín kiểu dữ liệu T1>;
TYPE THISINH = RECORD
Trang 23DLT, DTH, DTB: real;
END;
VAR lop:array[1 46]of THISINH;
- Câu 3: Cách truy xuất đến các trường của một biến bản ghi? Viết lệnh nhập SBD từ bàn phím cho thí sinh thứ 1 của mảng LOP
<tên biến bản ghi>.<tên trường>
Write(‘ Nhap so bao danh: ’);readln(LOP[1].SBD);
3 Dẫn dắt vào bài mới.
Buổi trước chúng ta đã biết thế nào là kiểu bản ghi, cách khai báo một kiểu bản ghi,truy xuất đến các trường của bản ghi Cách làm việc với kiểu DL bản ghi như thế nào,
có gì giống và khác với cách làm việc với các kiểu DL khác, để hiểu rõ chúng ta sẽ tiếptục tìm hiểu về kiểu bản ghi trong bài học hôm nay
TG Nội dung ghi bảng Hoạt động của
thầy
Hoạt động của trò
4 Gán giá trị cho biến bản ghi:
Có hai cách gán giá trị cho biến
- Có thể gán giátrị A cho Bkhông?
độ là mấy?
- B có tung độ vàhoành độ là mấy?
- Giả sử SBD là
số thứ tự của cácthí sinh, lúc nàytrường SBD cókiểu gì?
- Câu hỏi phụ: sttthường có kiểugì?
Trang 24TG Nội dung ghi bảng Hoạt động của
- Với i bằng 1 thìcác lệnh trênmang ý nghĩa gì?
- Với i bằng 2?
- Với i bằng n?
- Thêm nhữnglệnh gì để cáclệnh trên trở
chương trìnhnhập dữ liệu cho
n thí sinh
- Câu hỏi phụ:
+ Viết các lệnhnhập số thí sinh
từ bàn phím?
+ Để nhập nphần tử cho mộtmảng phải duyệtmảng như thếnào? Dùng câulệnh lặp gì?
- Gọi HS lên bảngviết câu lệnh
write(‘nhap gioi tinh’);
- Nhập thông tin thí sinh thứ 1
- Nhập thông tin thí sinh thứ 2
- Nhập thông tin thí sinh thứ n
Trang 25TG Nội dung ghi bảng Hoạt động của
chương trìnhnhập thông tin nthí sinh
- Điểm trung bìnhđược tính thức
(DTH*2+DLT)/3;
- Có điểm thựchành có điểm lýthuyết hãy viếtlệnh tính điểmtrung bình cho thísinh thứ i?
- Nên đặt câulệnh tính giá trịcho điểm TB ởđâu?
- Dùng lệnh gì để
in một giá trị mộtbiến ra màn hình?
- Khi làm việcvới các trường taphải truy xuất đên
nó, khi truy xuấtphải viết tên biếnbản ghi, chươngtrình trên ta phảiviết lại rất nhiềulop[i] Vậy cócách nào khắcphục được trườnghợp này không?
Để biết rõ chúng
ta tìm hiểu câulệnh WITH
- Duyệt mảng lop, in giá trị củatrường họ tên và điểm trung bình
- HS ghi bảng:
For i:=1 to n do write(lop[i].hoten,‘,’,lop[i].DTB)
;
- write(‘Ho ten DTB’);
- write(lop[i].hoten, lop[i].DTB:5:1);
- HS ghi bảng:
write(‘Ho ten DTB’);For i:=1 to n do
write(lop[i].hoten, lop[i].DTB:5:1);
Trang 26TG Nội dung ghi bảng Hoạt động của
Trong BEGIN, END nếu có truy
xuất đến trường của biến bản ghi
được nhắc đến ở câu lệnh WITH
thì chỉ cần ghi trên trường
Ví dụ: Viết lại đoạn chương trình
For i:=1 to n do With Lop[i] do Begin