Chuong 4 tin 11

3,429 views
3,185 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,429
On SlideShare
0
From Embeds
0
Number of Embeds
163
Actions
Shares
0
Downloads
37
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Chuong 4 tin 11

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×