chuong 4 tin 11

49
Tiết 21 Kiểu mảng Ngày soạn:...../......; Ngày giảng:..../...... 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ố ? Có thể sử dụng ví dụ trong SGK để học sinh dễ theo dõi, Chuong IV Kiểu dữ liệu có cấu trúc Page 1

Upload: sunkute

Post on 19-Jun-2015

2.084 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Chuong 4 tin 11

Tiết 21 Kiểu mảngNgày soạn:...../......; Ngày giảng:..../......

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

người ?- Lưu trữ và xử lý bảng kết quả thi tốt

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ừ

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ể sử dụng cho các phần tiếp theo .

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 1

Page 2: Chuong 4 tin 11

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 số kiểu dữ liệu trong ngôn ngữ Pascal để trả lời 3 câu hỏi trên .

GV : Đưa ra ví dụ, cần lập lập trình xử lý 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 ?

Bằng cách nào để lưu trữ được thông tin dưới dạng bảng khi lập trình ?

HS : Đưa ra ý kiến .

GV : Đánh giá ý kiến của học sinh, sau đó đưa ra mục đích của việc sử dụng cấu trúc mảng trong chương trình .

GV : Đưa ra khái niệm mảng một chiều và một số yếu tố liên quan trong lập trình nói chung .

GV : Đi sâu phân tích hai chương trình để cho học sinh nhận thấy sự tiện lợi khi sử dụng mảng .

HS : Trong khi giáo viên phân tích hai 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 chương trình, học sinh sẽ đưa ra ý kiến

Trong lập trình thường có 2 loại mảng :- Mảng một chiều .- Mảng hai chiều .

1. Kiểu mảng một chiều - 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à mỗi phần tử mang một chỉ số. Để mô tả 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ử .

Với mảng một chiều ta quan tâm đến :- Tên mảng một chiều .- Số lượng phần tử trong mảng .- Kiểu dữ liệu của phần tử .- Cách khai báo biến mảng một chiều .- Cách truy cập vào từng phần tử của

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 bình này .

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 một chiều .

a> Khai báo mảng một chiều Trong ngôn ngữ Pascal, mảng một chiều

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 2

Page 3: Chuong 4 tin 11

nhận xét về 2 chương trình.

GV : Đưa ra cách khai báo mảng một chiều trong ngôn ngữ Pascal, giải thích ý nghĩa của các từ khóa mới .

GV : Khai báo bằng cách nào tiện lợi hơn ?

HS : Thường thì học sinh trả lời cách 1 tiện lợi hơn ?

GV : Tùy trường hợp cụ thể mà ta dùng cách 1 hay cách 2 nhưng thông thường ta sử dụng cách 1 .

GV : Sử dụng một sồ hình ảnh trực quan minh họa cho học sinh cấu trúc mảng và chỉ số của phần tử

Chỉ số

1 2 3 4 5 6 7 8

Giá trị

53

81 62 18 26 41 24 53

Đưa ra một số khai báo mảng trong Pascal .

đượ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ỉ số>] of <kiểu phần tử> ;Var <Tên mảng> : <tên kiểu mảng> ;

Trong đó :- 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

liên tục có n1..n2, với n1 là chỉ số đầu 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 .

- Để truy cập vào phần tử mảng ta viết :- <Tên biến mảng>[Chỉ số]

Ví dụ :A[20] Truy cập phần tử mang chỉ số 20 trong mảng A .

Ví dụ : Khai báo biến mảng thông qua kiểu mảng :TypeArrayInteger=Array[1..100] of Integer;ArrayReal=Array[1.50] of Real;Var A : Array[1..50]; B : Array[1..50] of Real;

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

Page 4: Chuong 4 tin 11

Tiết 22 Kiểu mảng (T)Ngày soạn:...../......; Ngày 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: 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

GV : Đưa ra ví dụ .

HS : Xây dựng thuật toán để giải bài toán (thuật toán đã học ở lớp 10) .

GV soạn sẵn chương trình và cho học sinh quan sát chương trình .

Nếu có nhiều 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ể dễ dàng nhận ra các thao tác cần phải thực hiện khi viết chương trình .

b> Một số ví dụ : Ví dụ 1 : Tìm phần tử lớn nhất của một dãy số nguyên .- Input : Số nguyên dương N và dãy số

A1, A2, ….., AN- Output : Chỉ số và giá trị của số lớn

nhất trong dãy - Ý tưởng :

+ Đặt số A1 là số lớn nhất (max)+ Cho i lặp từ 2 đến N, nếu A[i]> thì đổi

max = A[i] vả lưu lại vị trí i .

Chương trình như sau :

Program timmax ;Uses crt ;var a : array[1..250] of integer ; n,i,max,csmax : Integer ;Begin clrscr ; Write('Nhap n = ') ; Readln(n) ;

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 4

Page 5: Chuong 4 tin 11

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

GV: soạn sẵn chương trình và cho học sinh quan sát chương trình .

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ể dễ dàng nhận ra việc chuyển đổi ngôn ngữ từ ngôn ngữ thuật toán sang ngôn ngữ lập trình .

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 .- Input : Số nguyên dương N và dãy số

A1, A2, …, AN- Output : Dãy A được sắp xếp theo thứ

tự không giảm .

- Ý tưởng :+ Đổi để đưa số lớn nhất về vị trí cuối

cùng . + Làm tương tự đối với những số còn

lại .

Chương trình như sau :

Program sapxep ;Uses crt ;var A : Array[1..250] of integer ; n,i,j,tg : Integer ;

Begin

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 5

Page 6: Chuong 4 tin 11

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

Page 7: Chuong 4 tin 11

Tiết 23 Kiểu mảng (T)Ngày soạn:...../......; Ngày 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: 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ụ, 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) .

GV soạn sẵn chương trình và cho học sinh quan sát chương trình .

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ể dễ dàng nhận ra việc chuyển đổi ngôn ngữ từ ngôn ngữ thuật toán sang ngôn ngữ lập trình .

Ví dụ 3 : Tìm kiếm nhị phân .

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

- Ý tưởng : 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 :

Program sapxep ;Uses crt ;var A : Array[1..250] of integer ; 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

Page 8: Chuong 4 tin 11

GV : Quay lại ví dụ về lưu trữ dữ liệu dạng bảng để các em nhận ra nhu cầu phải sử dụng mảng 2 chiều trong lập trình .

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 :

- Mảng hai chiều là một bảng các phần tử cùng kiểu .

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

Page 9: Chuong 4 tin 11

GV : Khai báo cách nào tiện lợi hơn (tương tự mảng 1 chiều) ?

HS : Thường thì học sinh vẫn chọn cách 1 .

GV : Tùy theo trường hợp cụ thể nhưng thường thì cách 1 hay được dùng hơn .

GV : Khi khai báo mảng 2 chiều cần chú ý điều gì ?

HS : Tìm câu trả lời, GV gợi ý để các em chỉ ra được chỉ số của mảng, số dòng, số cột và kiểu của mỗi phần tử trong mảng .

GV : Gọi một số học sinh lên khai báo một số biến mảng một chiều theo yêu cầu của

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 :

Cách 1 : Khai báo trực tiếp

Var : <Tên mảng> : Array[kiểu chỉ số dòng, kiểu chỉ số cột] of < kiểu phần tử> ;

Cách 2 : Khai báo gián tiếp thông qua khai 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 :

TypeArrayInteger = Array[1..10,1..15] of Integer ;ArrayReal=Array[1..50,1..100] of Real ;

Var A : ArrayInteger ;B : ArrayReal ;

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 chiều :

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 9

Page 10: Chuong 4 tin 11

giáo viên .

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 .

<Tên mảng>[chỉ số dòng, chỉ số cột]

Ví dụ : A[1,3], B[23,66],……

IV. Củng cố: V. Dặn dò:

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 10

Page 11: Chuong 4 tin 11

Tiết 24 Kiểu mảng (T)Ngày soạn:...../......; Ngày 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: 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 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 .

GV nên soạn sẵn chương trình và cho các em quan sát chương trình, và chạy thử chương trình trên máy để các em tiện theo dõi .

Program Timkiem;Uses crt;var A : Array[1..100,1..100] of Integer; i,j,n,m : Byte ; k,d : integer ;

Begin Clrscr ; Write(' Nhap so dong, so cot cua mang : ') ;

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;Uses crt ;var A : Array[1..9,1..9] of Integer ; i, j : Byte ;

Begin Clrscr ; Writeln('Bang cuu chuong 1 -> 9 : '); Writeln ; For i := 1 to 9 do For j := 1 to 9 do A[i,j] := i*j ; For i := 1 to 9 do Begin 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

Page 12: Chuong 4 tin 11

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

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 .

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

Page 13: Chuong 4 tin 11

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

Page 14: Chuong 4 tin 11

Tiết 25 Bài tập và thực hành 3Ngày soạn:...../......; Ngày giảng:..../......

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 sẵn ở câu a) và thấy được kết quả chạy chương trình này, trên cơ sở đó tìm ra cách giải quyết vấn đề đặt ra ở câu b.GV: cần cho HS thấy được điểm khác nhau

Bài 1: Tạo mảng A gồm n (n<=100) số nguyên, mỗi số có trị tuyệt đối không vượt quá 300. Tính tổng các phần tử của mảng là bối số của một số nguyên dương k cho trước.

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 14

Page 15: Chuong 4 tin 11

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ì?……….

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);

IV. Củng cố: V. Dặn dò:

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 15

Page 16: Chuong 4 tin 11

Tiết 26 Bài tập và thực hành 3(T)Ngày soạn:...../......; Ngày 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: 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: 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.

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.

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; n, i, j:integer;BeginWrite(‘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

Page 17: Chuong 4 tin 11

Nếu còn thời gian thì HS hoàn thành phần b) dưới sự hướng dẫn của GV.

readlnend. b) Chỉnh sửa chương trình trên để đưa ra chỉ 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,2V. Dặn dò:

Tiết 27 Bài tập và thực hành 4Ngày soạn:...../......; Ngày giảng:..../......

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 toán sắp xếp (bằng tráo đổi) và kĩ năng cài đặt bằng ngôn ngữ lập trình.

HS: Tích cực tìm hiểu bài toán, thực hiện

Bài 1:a) Hãy tìm hiểu và chạy thử chương 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 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

Page 18: Chuong 4 tin 11

bài toán trên máy tính, sửa lỗi chạy chương trình.

GV: Yêu cầu HS sửa lại một chỗ để có chương trình sắp xếp các phần tử theo thứ tự không tăng.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.

gian chạy của chương trình.(chương trình SGK – t65)b) Khai báo thêm biến Dem và bổ xung vào chương trình những câu lệnh cần thiết để biến Dem tính số lần thực hiện tráo đổi trong thuật toán. Đưa kết quả ra màn hình.

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:...../......; Ngày 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: 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: 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.

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];

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 18

Page 19: Chuong 4 tin 11

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

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.

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

Page 20: Chuong 4 tin 11

Tiết 29 Kiểu xâuNgày soạn:...../......; Ngày giảng:..../......

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 người, các kiểu dữ liệu đã học có đáp ứng được ?

HS : Đưa ra một số phương án .

GV : Phân tích các phương án của học sinh, từ đó đưa ra yêu cầu cần sử dụng một kiểu mới : Kiểu xâu .

GV : Giới thiệu một số khái niệm và thao tác thường dùng khi làm việc với xâu ký tự trong lập trình nói chung .

Một số khái niệm- Xâu là một dãy kí tự trong bảng mã

ASCII .- 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à độ

dài của xâu .- Xâu có độ dài bằng 0 gọi là xâu rỗng.- Tham chiếu tới phần tử trong xâu được

xác định thông qua chỉ số của phần tử 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 phần tử thường được viết :

<Tên biến xâu>[chỉ số]

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

Page 21: Chuong 4 tin 11

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ữ đó .

Độ 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 .

Xét ví dụ như sau : Có xâu kí tự :‘ nGuyen vaN A ’

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 Van A’)

HS : Đưa ra ý kiến của mình .

GV : Phân tích ý kiến và gợi ý để các em 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à

ngược lại .

ngữ Pascal :

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 ;

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

+ .

Ví dụ : ‘Ha’ + ‘Noi’ cho kết quả là ‘Ha Noi’

Phép so sánh : <, <=, >, >=, = , <>, Pascal tự động so sánh lần lượt từ kí tự từ trái sang phải .

Ví dụ : ‘AB’ < ‘AC’, ‘ABC’ > ‘ABB’, ‘ABC’ <’ABCD’

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 21

Page 22: Chuong 4 tin 11

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ự ?

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 .

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 hàm này để các em theo dõi .

Một số thủ tục chuẩn dùng để xử lí xâu :

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

Một số hàm chuẩn :

- 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

Page 23: Chuong 4 tin 11

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

Page 24: Chuong 4 tin 11

Tiết 30 Kiểu xâu (T)Ngày soạn:...../......; Ngày 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: 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 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 .

Với mỗi ví dụ, giáo viên đi sâu vào câu 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 .

Ví dụ 1 : Nhập 1 xâu, viết ra màn hình xâu dài hơn .

Ví dụ 2 : Nhập 1 xâu, kiểm tra xem ký tự đầ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 ?

Một số ví dụ :

VD 1 : Program vd1 ;Uses crt ;Var s1,s2 : String ;

Begin Clrscr ; Write('Nhap xau thu 1 : ') ; Readln(s1) ; Write('Nhap xau thu 2 : ') ; Readln(s2) ; If length(s1) > Length(s2) then Write(s1) else Write(s2); Readln ;End .

VD 2 :

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 24

Page 25: Chuong 4 tin 11

Ví dụ 3 : Nhập 1 xâu, viết ra màn hình xâu đó theo thứ tự ngược lại của các ký tự trong xâu .

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 cách .

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 ;End .

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 .

VD 4 :Program vd4 ;

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 25

Page 26: Chuong 4 tin 11

Ví dụ 5 : Nhập 1 xâu, viết ra màn hình xâu gồm các ký tự số của xâu đó .

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 .

VD 5 :

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

Page 27: Chuong 4 tin 11

Tiết 31 Bài tập và thực hành 5Ngày soạn:...../......; Ngày giảng:..../......

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

GV: Không cần thiết phải tạo một xâu mới để so sánh hai xâu mà chỉ so sánh các cặp

Bài 1: Nhập vào từ bàn phím một xâu. Kiểm tra xâu đó có phải là xâu đối xứng không. a) Chạy thử chương trình sau:var x,i : byte; a,p: string;beginwrite(‘ Nhap vao xau:’);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’);readlnend.b) Hay viết lại chương trình trên, trong đó không dùng biến xâu p.

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 27

Page 28: Chuong 4 tin 11

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

Page 29: Chuong 4 tin 11

Tiết 32 Bài tập và thực hành 5 (T)Ngày soạn:...../......; Ngày giảng:..../......

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: Để giải quyết được bài toán này thì trước hết ta phải cộng thêm một kí tự trống vào đầu xâu s.

GV: Khi đó điều kiện để xác định xem đâu là một từ là gì?

HS: Trả lời câu hỏi.

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

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; d, x, i:byte;Begin Write(‘ Nhap xau:’);readln(s);s:= ‘ ‘+s; x:=length(s);for i:=1 to x doif (s[i]=’ ‘ ) and (s[i+1]<>’ ‘) then d:=d+1;write(‘ So tu co trong xau la:’,d);readlnend.

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

Page 30: Chuong 4 tin 11

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

Page 31: Chuong 4 tin 11

Tiết 33 Bài tậpNgày soạn:...../......; Ngày giảng:..../......

I. Mục tiêu1. 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.

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.

Chữa bài tập trong SBT

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 31

Page 32: Chuong 4 tin 11

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 ghiNgày soạn:...../......; Ngày giảng:..../......

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 dungXét ví dụ sau :Viết chương trình dùng để quản lí các thí sinh của một kỳ thi tuyển sinh .Chương trình của chúng ta cần quản lí được :

+ SBD của thí sinh,+ Họ tên thí sinh,+ Giới tính,+ Điểm của các môn …

GV : Đưa ra một số câu hỏi sau : - Làm thế nào để quản lý toàn bộ

thông tin trên của học sinh ?- Mỗi thông tin trên có kiểu dữ liệu là

Một số khái niệm- Kiểu bản ghi được dùng để mô tả cho

các đối tượng có cùng một số thuộc tính mà các thuộc tính có thể có các kiểu dữ liệu khác nhau .

- Bản ghi thường được gọi là Record, mỗi Record sẽ lưu trữ dữ liệu về một đối tượng cần quản lí .

- 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 khác nhau có thể có dữ liệu khác nhau .

- Các ngôn ngữ lập trình thường cho cách để xác định : + Tên kiểu bản ghi .

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 32

Page 33: Chuong 4 tin 11

gì ?

HS : Có thể quản lý mỗi dữ kiện trên là một mảng một chiều

Ngôn ngữ lập trình bậc cao có cách tốt hơn để quản lý dữ liệu trên -> Bản ghi .

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 là một trường .

GV : Mỗi ngôn ngữ có một cách khai báo kiểu bản ghi khác nhau .

Ngôn ngữ Pascal không cho bạn khai báo biến bản ghi trực tiếp mà phải khai báo biến 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 bản ghi này .GV : Làm thế nào để có thể khai báo được nhiều biến bản ghi có cùng một kiểu ?HS : GV sẽ gợi ý để học sinh đưa ra đó là sử dụng kiểu mảng trong đó phần tử mảng sẽ có kiểu bản ghi .

Ví dụ về khai báo bản ghi . Khai báo một kiểu bản ghi để xử lý bảng kết quả thi của các học sinh . Mỗi bản ghi sẽ bao gồm : Họ và tên của học sinh (Hoten), ngày tháng năm sinh(Ngaysinh), Giới tính (NamNu), và điểm thi các môn của mỗi học sinh (Toan, Ly, Hoa, Van, Su, Dia,Tin) .

+ 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 trong ngôn ngữ Pascal

1. Khai báo

Để khai báo biến bản ghi, thường khai báo một kiểu bản ghi sau đó khai báo biến bản ghi .

Cách khai báo kiểu :

Type <Tên kiểu bản ghi>=Record <Tên trường 1> : <Kiểu trường 1> ; ……… ……… <Tên trường n> : <Kiểu trường n> ;End ;

Cách khai báo biến :

Var <Tên biến> : <Tên kiểu bản ghi> ;Var <Tên mảng> : Array[1..n] Of <Tên kiểu bản ghi> ;

Type Hocsinh = Record Hoten : String[30] ; Ngaysinh : String[10] ; NamNu :Boolean ; Toan,Ly, Hoa, Van, Su, Dia : Real ;End ;

Var A, B : Hocsinh ;Lop : Array[1..100] Of Hocsinh ;

Để 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

Page 34: Chuong 4 tin 11

Hãy xác định kiểu dữ liệu cho các trường trên (Mỗi nội dung trên là một trường của bản ghi)

GV : Khi có nhu cầu thay đổi thông tin trong từng trường, làm thế nào để truy cập thông tin vào từng trường của bản ghi ?

Mỗi ngôn ngữ có một cách truy cập khác nhau nhưng thường được viết là : <Tên biến bản ghi>.<tên trường>

GV: Đưa ra một số ví dụ .

viết : <Tên biến bản ghi> . <Tên trường>

Ví dụ : A.HotenB.NgaysinhLop[i].ToanLop[i].Ly……… với i là chỉ số nào đó của mảng Lop

IV. Củng cố:V. Dặn dò:

Tiết 35 Kiểu bản ghi (T)Ngày soạn:...../......; Ngày giảng:..../......

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 gán giá trị cho bản ghi phức tạp hơn các

2. Gán giá trị

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 34

Page 35: Chuong 4 tin 11

biến khác .

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

Có 2 cách để gán giá trị cho bản ghi .

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

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 35

Page 36: Chuong 4 tin 11

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

Page 37: Chuong 4 tin 11

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

Page 38: Chuong 4 tin 11

Tiết 36 Bài tậpNgày soạn:...../......; Ngày giảng:..../......

I. Mục tiêu1. 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.

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.

Chữa bài tập trong SBT

Chuong IV Ki u d li u có c u trúcể ữ ệ ấ Page 38

Page 39: Chuong 4 tin 11

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