1. Trang chủ
  2. » Giáo án - Bài giảng

chương 5 và 6

20 373 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kiểu xâu
Người hướng dẫn Hồ Thị Mỹ Dung
Trường học Trường THPT Cao Bá Quát
Chuyên ngành Tin học
Thể loại Giáo án
Thành phố Hà Nội
Định dạng
Số trang 20
Dung lượng 212,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Kiểm tra bài cũ Câu hỏi: Nêu cách khai báo một xâu và tham chiếu đến một phần tử thứ i của xâu?. Bài m i ới GV soạn sẵn các ví dụ để chiếu và chạy thử cho học sinh tiện theo dõi và không

Trang 1

Tiết 30

Bài 12 KIỂU XÂU

I Mục đích, yêu cầu

- Biết xâu là một dãy kí tự (có thể coi xâu là 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

- Nhận biết và bước đầu sử dụng được một số thủ tục, hàm thông dụng về xâu

II Phương tiện dạy học

- Máy chiếu Projector

- Nếu không có máy, GV có thể chuẩn bị các ví dụ minh họa trên khổ giấy lớn

III Hoạt động dạy – học

1 Ổn định lớp

2 Kiểm tra bài cũ: Không kiểm tra bài cũ

3 Tiến trình tiết dạy:

- Đặt vấn đề:

+ Trình chiếu Slide1: em hãy cho biết kết quả sau khi thực

hiện chương trình dưới đây:

var ht:char;

begin

write('nhap ho va ten:');readln(ht);

write(ht);

readln;

end

+ Rõ ràng, không thể in ra được họ tên nếu ta khai báo

biến ht:char Vậy có cách nào không?

+ Phân tích các câu trả lời của HS (nếu có)

+ Quay lại với CT: nếu ta sửa kiểu char thành string  có

in ra được họ tên không? Chạy thử cho HS thấy? Vậy kiểu

string là gì? Thì hôm nay các em sẽ học 1 kiểu dữ liệu mới

nữa đó là kiểu xâu, là kiểu dữ liệu có cấu trúc

- Ghi đầu bài

- H: Kiểu dữ liệu xâu là kiểu như thế nào?

- Nhấn mạnh khái niệm xâu và ghi bảng 1 số ý chính:

+ dãy các kí tự

- HS lên bảng làm, HS khác theo dõi, nhận xét.(có thể coi như đây là phần kiểm tra bài cũ)

 kết quả:

nhap ho va ten:Nguyen Vu

N

- TL

- Quan sát trên màn hình

- TL

- Nghe giảng, trả lời câu hỏi, ghi vở

Trang 2

VD: ‘Bach Khoa’; ‘A’, ‘’

H: Trong CT, khi viết 1 xâu, ta viết trong ‘’, nhưng khi

nhập từ bàn phím giá trị một xâu, có cần ‘’ không?

+ Độ dài xâu

VD: ‘Nguyen Vu’  L = ? (9, kể cả kí tự rỗng)

Nếu L = 0 thì gọi là xâu gì? (xâu rỗng)

+ 1 mảng một chiều mà mỗi phần tử là 1 kí tự

+ Tham chiếu tới phần tử của xâu: tên biến [chỉ số]

VD: Để tham chiếu đến ptử thứ 6 của xâu trên ta viết thế

nào? (ht[6]  ‘n’)

- Kiểu xâu được khai báo thế nào, ta vào phần 1

1 Khai báo

- Chiếu lại Slide 1

- Ghi và giảng phần khai báo, cho ví dụ

var <tên biến> : string [độ dài lớn nhất của xâu]

VD:

var ht: string [25];

Có thể bỏ qua phần khai báo độ dài được không?

var ht: string;

 H: Phân tích sự khác nhau giữa 2 cách khai báo trên?

(GV gọi bất kỳ 1 HS trong nhóm trả lời)

* Nhấn mạnh:

để tránh lãng phí bộ nhớ

2 Các thao tác xử lý xâu:

những ý chính

- TL

- TL

- TL

- TL

- Quan sát cách khai báo trong chương trình trên

- TL

- HS có thể thảo luận với nhau trong vòng 1 phút

- Nghe, tự ghi

Trang 3

- Lần lượt giảng 8 thao tác xử lý xâu, nhất là ý nghĩa các

hàm và thủ tục chuẩn trên xâu

- Các ví dụ được trình chếu bằng Slide

a) Phép ghép xâu

VD: ‘pas’+’cal’ = ‘pascal’

b) Phép so sánh xâu (=, <>, <, >, <=, >=)

Chú ý 2 qui tắc so sánh xâu

c) Thủ tục delete(st, vt, n)

d) Thủ tục insert(s1, s2, vt)

e) Hàm copy(S, vt, N)

f) Hàm length(s)

g) Hàm pos(s1,s2)

h) Hàm upcase(ch)

Lưu ý:

* Các hàm trên kiểu xâu cho kết quả trả về là 1 giá trị (số, kí

tự hay xâu)

* Các thủ tục trên kiểu xâu sẽ làm thay đổi, biến đổi xâu

- Nghe, ghi những gì cần thiết, không cần ghi nhiều, SGK đã trình bày rất rõ

4 Củng cố bài:

- Giá trị của X là ‘Mon tin hoc’, sau thao tác delete (X, 4, 4) giá trị của X là gì?

- Giá trị của X là ‘Em yeu truong em’, hãy viết thao tác để thêm tên trường (em đang học) vào sau chữ truong trong xâu X?

- Cho biết giá trị của pos(‘xinh’,’Cai xac xinh xinh’)

5 Bài tập về nhà:

- Xem trước phần 3 Một số ví dụ

*******************************

A MỤC ĐÍCH, YÊU CẦU:

- Sử dụng được một số thủ tục, hàm 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

B PHƯƠNG PHÁP:

- Phương pháp: Vấn đáp

- Phương tiện: máy chiếu, bảng đen

C NỘI DUNG BÀI GIẢNG

I Ổn định lớp

II Kiểm tra bài cũ

Câu hỏi: Nêu cách khai báo một xâu và tham chiếu đến một phần tử thứ i của xâu?

Đáp án: Khai báo : Var <tên biến>: string[độ dài lớn nhất của xâu];

Trang 4

Tham chiếu đến ptử thứ i: tên xâu[i]

III Bài m i ới

GV soạn sẵn các ví dụ để chiếu và chạy thử

cho học sinh tiện theo dõi và không làm mất thời gian

viết chương trình

VD1: Nhập vào hai xâu và in ra xâu dài hơn,

nếu bằng nhau thì in ra xâu nhập sau

HS: Nêu ý tưởng, thuật toán

B1: Nhập vào 2 xâu bất kì

B2: So sánh độ dài 2 xâu với nhau

B3: In kết quả

GV: Yêu cầu HS nêu cách so sánh?

HS: Dùng hàm Length() để lấy độ dài từng

xâu và dùng phép so sánh

GV: Chiếu hoặc viết lên bảng chương trình

theo ý tưởng trên, chạy thử minh hoạ

VD2: Nhập vào một xâu và đưa ra màn hình

xâu đó nhưng được viết theo thứ tự ngược lại

GV: Cho vdụ một xâu và in ra theo thứ tự đảo

ngược

Vd: ‘hoten’ -> ‘netoh’

HS: Từ ví dụ, nêu thuật toán

B1: Nhập vào xâu bất kì

B2: Duyệt phần tử cuối đến ptử đầu

B3: In kết quả

GV: Cho học sinh giải thích cách duyệt phần

tử cuối đến phần tử đầu Phần tử cuối là phần tử nào?

HS: Ptử cuối có vị trí bằng độ dài xâu

Để duyệt từng phần tử từ cuối đến đầu, ta

dùng vòng lặp For…downto

HS: Lên viết chương trình

GV+HS: Sửa lỗi chương trình cùng các HS

khác Chiếu chương trình mẫu, chạy thử

VD3: Nhập vào một xâu và in ra màn hình

xâu đã được loại bỏ các dấu cách nếu có

GV: Cho biết dấu cách biểu diễn là kí tự nào?

HS: Kí tự rỗng

GV: Hướng dẫn cho HS

+ Cách tạo xâu rỗng

+ Duyệt từ đầu đến cuối xâu:

Kiểm tra nếu kí tự nào khác với dấu cách (rỗng)

thì đưa nó vào xâu rỗng vừa tạo

HS: Lên viết thuật toán

HS: Lên viết chương trình, chạy thử

GV+HS: Sửa bài HS và chạy thử kết quả

GV: Như vậy, qua các ví dụ trên các em đã

nắm rõ cách cài đặt một chương trình có dùng kiểu

xâu.Bây giờ, các em lấy giấy ra làm bài tập này trong

VD1:

Var a, b: string;

Begin

Write(‘Nhap xau thu nhat:’);

Readln(a);

Write(‘Nhap xau thu hai:’);

Readln(b);

If length(a)>length(b) then Writeln(a) Else writeln(b);

Readln End

VD2:

Var s:String;

i,k:byte;

Begin

Write(‘Nhap xau :’);

Readln(s);

K:=length(s) ; For i:=k downto 1 do write(s[i]) ;

Readln End

VD3:

Var s,st:String;

i,k:byte;

Begin

Write(‘Nhap xau :’);

Readln(s);

K:=length(s) ; St:= ‘ ‘;

For i:=1 to k do

If s[i] <> ‘ ‘ then st:=st+s[i];

writeln(‘ket qua:’,st);

Readln

Trang 5

5 phút Em nào làm nhanh nhất có thể lên bảng nêu ý

tưởng và viết chương trình

VD4: Nhập vào 1 xâu, in ra màn hình xâu

gồm các kí tự là số của xâu đó

HS: Nêu ý tưởng, viết chương trình, chạy trên

máy

GV: Cho HS trong lớp nhận xét, sửa lỗi

End

VD4:

Var s,st:String;

i,k:byte;

Begin Write(‘Nhap xau :’);

Readln(s);

St:= ‘ ‘;

For i:=1 to k do

If (‘0’<=s[i])and(s[i]<=’9’) then st:=st+s[i];

writeln(‘ket qua:’,st);

Readln End

IV Củng cố:

Cho biết để duyệt tất cả các kí tự của một xâu, ta thường dùng câu lệnh nào?

TL: Ta dùng vòng lặp For, như khi duyệt các phần tử trong mảng một chiều

V Dặn dò :

Về nhà xem lại bài, làm trước các bài tập thực hành 5

Bài 13: KIỂU BẢN GHI

*********************************

A Mục đích, yêu cầu:

- 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

B.Phương pháp:

- Giáo viên: thuyết giảng cho học sinh hiểu

- Học sinh : đọc bài trước ở nhà

B Nội dung bài giảng:

I Ổn định lớp:

II Kiểm tra bài cũ:

III N i dung bài gi ng: ội dung bài giảng: ảng:

Nội dung Hoạt động của thầy Hoạt động của trò

* Giới thiệu kiểu bản ghi:

- Bản ghi là kiểu dữ liệu có cấu trúc

- Mỗi đối tượng được mô tả bằng

một bản ghi

- Mỗi bản ghi có nhiều trường

- Nêu ví dụ về việc lưu giữ thông tin của một học sinh: họ tên, ngày sinh, giới tính, điểm các môn thi…

- Phân tích cho hs thấy sự khác

- HS lắng nghe

Trang 6

1/Khai báo:

* Kiểu bản ghi được định nghĩa như

sau:

Type <tên kiểu bản ghi> = record

<tên trường1> : <kiểu

trường1>;

……….

<tên trường2> : <kiểu

trường 2>;

End;

* Biến kiểu bản ghi được khaibáo

như sau:

Var

<tên biến bản ghi>:<tên kiểu

bản ghi>;

VD:

Const Max=60;

Type

Danhsach = record

Hoten: string[30];

Ngaysinh: string[10];

Gioitinh: Boolean;

Tin,Toan,Li,Hoa,Van,Su,Đia:re

al;

End;

Var A, B: Danhsach;

Hocsinh: array[1 max] of

Danhsach;

CÝ: Có thể tham chiếu đến từng

thành phần của bản ghi:

A.Ngaysinh

Hocsinh[2].Giơitinh

2.Gán giá trị:

biệt khi khai báo đối tượng hs này bằng mảng và bằng bản ghi Từ đó rút ra kết luận việc khai báo đối tượng này bằng bản ghi sẽ thuận tiện hơn

- Yêu cầu hs nêu quy tắc, cách thức xác định kiểu bản ghi

- Giới thiệu cho hs các thông tin cần khai báo trong kiểu bản ghi là: tên kiểu bản ghi, tên các thuộc tính, kiểu dữ liệu của mỗi thuộc tính

- Yêu cầu HS định nghĩa kiểu bản ghi

- Từ việc định nghĩa kiểu bản ghi đưa ra cách khai báo kiểu bản ghi

- Yêu cầu HS đọc ví dụ trong SGK

- Qua ví dụ thì HS nhận thấy

sự khác biệt cơ bản nào giữa kiểu bản ghi và kiểu mảng

- Trong ví dụ đã nêu, A và B

có cùng kiểu không?

Hocsinh[2] và A có cùng kiểu không?

- GV chuẩn lại ý HS đã trả lời

- GV chú ý cho HS : có thể tham chiếu trên từng thành phần của bản ghi, mỗi trường được xác định bởi tên biến và tên trường

- Yêu cầu HS viết tham chiếu đến trường Ngaysinh của biến bản ghi A, tham chiếu đến trường giới tính của biến mảng Hocsinh[2]

- Nếu ta gán giá trị của Hocsinh cho A (Hocsinh:=A)

có được không? tại sao?

-GV chuẩn lại ý HS đã trả lời

- HS tham khảo trong SGK để trả lời câu hỏi

- HS tham khảo SGK để lên bảng định nghĩa kiểu bản ghi

- HS đọc ví dụ

- Khi dùng kiểu bản ghi thì các thuộc tính của đối tượng có thể được khai báo bằng các kiểu

dữ liệu khác nhau

- HS suy nghĩ và trả lời câu hỏi

- HS lắng nghe

- HS lên bảng viết tham chiếu

- HS trả lời câu hỏi

Trang 7

Có 2 cách để gán giá trị cho biến

bản ghi:

- Dùng lệnh gán trực tiếp

- Gán gía trị cho từng trường

Ví dụ: tham khảo ví dụ trong SGK

- Phân tích cho HS hiểu giá trị của mỗi thành phần của bản ghi cũng được xuất, nhập xử lí như mỗi biến cùng kiểu nó chỉ khác là nó được xác định bởi tên kiểu bản ghi và tên trường

- Yêu cầu HS đọc ví dụ trong SGK

- Yêu cầu đặt ra của bài toán là gì?

- Nêu các thao tác cần thiết để thực hiện bài toán?

- GV chuẩn lại ý HS trả lời

- GV phân tích và giải thích cho HS hiểu tại sao lại dùng vòng lặp for…do và việc tính toán giá trị trường xếp loại thông qua câu lệnh if…then

- HS đọc ví dụ

- HS suy nghĩ và trả lời câu hỏi

- HS nghe, hiểu và trình bày lại ví dụ lên bảng

2 Hoạt động 2: Tìm hiểu về cách sử dụng kiểu bản ghi trong ngôn ngữ Pascal.

- Giới thiệu cấu trúc chung để tham chiếu

đến trường của biến bản ghi

- Yêu cầu: Tìm ví dụ về tham chiếu đến

từng trường của biến bản ghi đã được khai

báo ở trên

- Giới thiệu hai cách gán giá trị cho biến

bản ghi

+ Gán nguyên cả biến bản ghi

+ Gán lần lượt từng trường

- Yêu cầu: Lấy ví dụ minh hoạ cho từng

trường hợp?

- Hỏi: Trường hợp 1 thực hiện được trong

điều kiện nào?

- Quan sát, ghi bài

- Gọi 3 học sinh cho ví dụ:

HS.hoten HS.Gioitinh HS.toan

- Quan sát, nghe giảng

A:=B;

A.hoten:=B.hoten;

A.van:=B.van;

- Hai biến A và B phải được khai báo cùng một kiểu bản ghi

Chú ý: Tham chiếu đến từng trường bằng cách:

Tên_biến_bản_ghi.tên_trường

2 Gán giá trị:

Có 2 cách:

- Dùng lệnh gán trực tiếp: Nếu A và B

là 2 biến bản ghi cùng kiểu thì có thể gán bằng câu lệnh: A:=B;

- Gán giá trị cho từng trường: có thể bằng lênh gán hoặc nhập từ bàn phím

3 Hoạt động 3: Hướng dẫn học sinh giải ví dụ:

Viết chương trình giải quyết bài toán sau:

Có một lớp gồm N học sinh (1<=N<=60) Với mỗi học sinh cần quản lí các thuộc tính: họ và tên, điểm toán, điểm văn và xếp loại.Xếp loại được xác định theo quy tắc sau:

+ Nếu tổng điểm toán và điểm văn nhỏ hơn 10 thì xếp loại D

+ Nếu tổng điểm toán và điểm văn lớn hơn hoặc bằng 10 và nhỏ hơn 14 thì xếp loại C

+ Nếu tổng điểm toán và điểm văn lớn hơn hoặc bằng 14 và nhỏ hơn 18 thì xếp loại B

Trang 8

+ Nếu tổng điểm toán và điểm văn lớn hơn hoặc bằng 18 thì xêp loại A.

- Chiếu nội dung đề bài

- Hỏi: Sử dụng kiểu dữ liệu

như thế nào để giải quyết

bài toán?

- Yêu cầu: Mô tả thông tin

về một học sinh bằng kiểu

bản ghi, sau đó tạo mảng các

bản ghi đó

- Nêu các bước để giải quyết

bài toán này? Nhập dữ liệu

cho những trường nào?

- Nhập dữ liệu cho từng

trường của từng bản ghi như

thế nào?

- Tổ chức học sinh thảo luận

theo nhóm, viết chương

trình Gọi đại diện nhóm lên

trình bày, tổ chức cho các

nhóm khác nhận xét, bổ

sung

- Chiếu chương trình mẫu để

chính xác hoá lại cho học

sinh

- Quan sát, hiểu dề để trả lời câu hỏi

- Khai báo một mảng các bản ghi

- Một học sinh lên bản viết khai báo

+ Tạo kiểu dữ liệu, khai báo biến

+ Nhập dữ liệu cho mảng các bản ghi

+ Tính tổng điểm toán và điểm văn

+ Dựa vào tổng điểm để xếp loại

Readln(lop[i].hoten);

Readln(lop[i].ngayinh);

- Tâp trung thảo luận theo nhóm để hoàn thành chương trình

- Thông báo kết quả

- Nhận xét, đánh giá và bổ sung nhữnh sai sót của nhóm khác

- Quan sát và ghi nhớ

3 Ví dụ:

Program xep_loai;

Uses crt;

Const max = 60;

Type HS = record Hoten : string[30];

Ngaysinh : string[10];

Diachi : string[50];

Toan, van: real;

Xl: char;

End;

Var lop : array[1 max] of HS;

N, i: byte;

Begin Clrscr;

Write( ‘So luong hs trong lop:’);

Readln(N):

For i:=1 to N do Begin

Writeln(‘Nhap du lieu cho hs thu’,i,’:’); Write(‘Ho va ten:’);

Readln(lop[i].hoten);

Write(‘Ngay sinh:’);

Readln(lop[i].ngaysinh);

Write(‘Dia chi:’);

readln(lop[i].diachi);

Write(‘Diem toan:’); readln(toan);

Write(‘Diem van:’); readln(van);

If lop[i].toan+lop[i].van >= 18 then lop[i].xl:= ‘A’;

If (lop[i].toan + lop[i].van >= 14) and (lop[i].toan + lop[i].van < 18) then lop[i].xl:=’B’;

If (lop[i].toan + lop[i].van >= 10) and (lop[i].toan + lop[i].van < 14) then lop[i].xl:=’C’;

If lop[i].toan + lop[i].van < 10 then lop[i].xl := ’D’;

End;

Write(‘Danh sach xep loai hoc sinh trong lop:’);

For i:=1 to N do Writeln(lop[i].hoten:30,’Xep loai: ’, lop[i].xl);

Readln End

Trang 9

IV Củng cố:

- Câu hỏi: Phân biệt sự giống nhau và khác nhau giữa kiểu bản ghi và kiểu mảng một chiều?

- Xem thêm: nội dung phụ lục B, sách giáo khoa, trang 134: Câu lệnh WITH

Trang 10

Bài 14 + 15 KIỂU DỮ LIỆU TỆP VÀ CÁC THAO TÁC VỚI TỆP

********************************************************************

I-Mục đích và yêu cầu:

Hs cần biết:

-Khái niệm và vai trò của kiểu tệp

-Biết phân loại kiểu tệp

-Hiểu biết bản chất của tệp văn bản

-Biết các bước làm việc với tệp

-Biết các thao tác cơ bản về tệp

II-Phương tiện dạy học:Bảng phụ (hoặc máy chiếu)

III-Nội dung tiết dạy:

1.Tổ chức lớp: ổn định và kiểm tra sĩ số.

2.Kiểm tra bài cũ:

3.Tiến trình bài dạy: Cho thực hiện chương sau:

GV: Sau khi nhập dữ liệu xong và thoát khỏi

Dữ liệu nhập vào nó sẽ như thế nào?

HS: Trả lời: nó sẽ bị mất Vì nó mới lưu trữ trên bộ Ram

 Để dữ liệu không bị mất ta phải làm sao Dữ liệu kiểu tệp hôm nay các em tìm hiểu sẽ giải quyết vấn đề đó

Bài 14: KIỂU DỮ LIỆU TỆP

Hoạt động 1:

1-Vai trò của kiểu tệp:

?Cho biết vai trò của kiểu tệp

Lưu trữ dữ liệu lâu dài ở bộ nhớ ngoài

?Hãy cho biết sự khác biệt của kiểu tệp với

các kiểu khác

Hình thành khái niệm: Có cấu trúc gồm

nhiều phần tử, được lưu trữ lâu dài trên bộ

nhớ ngoài

Trả lời:Lưu trữ dữ liệu lâu dài ở bộ nhớ ngoài

Trả lời:

-Kiểu tệp:Lưu trữ dữ liệu lâu dài ở bộ nhớ ngoài

-Các kiểu khác: Không lưu trữ dữ liệu được

ở bộ nhớ ngoài

Hoạt động 2:

2-Phân loại

Tệp văn bản Xét theo tổ chức dữ liệu

Tệp truy cập tuần tự Xét theo cách thức truy cập

Tệp truy cập trực tiếp GV: Hãy cho biết bản chất của từng loại tệp? ( trả lời SGK)

GV: Để làm việc với kiểu tệp ta phải thực hiện những thao tác nào? Có thể hoán đổi được không? vì sao?

Var i:Byte; hoten: String[20];

Begin

For i:=1 to 5 do

Readln(hoten);

readln;

end

Nguyen Anh Tran Binh

Le Hien Nguyen Hanh

Le Khanh

Ngày đăng: 27/07/2013, 01:25

Xem thêm

TỪ KHÓA LIÊN QUAN

w