Bài 12. Kiểu xâu
Chia sẻ bởi Nguyễn Thành Sơn |
Ngày 10/05/2019 |
99
Chia sẻ tài liệu: Bài 12. Kiểu xâu thuộc Tin học 11
Nội dung tài liệu:
Trường THPT Quang Trung - Đức Linh - Bình Thuận
Trang bìa
Trang bìa:
GIÁO ÁN ĐIỆN TỬ TIN HỌC 11 CHƯƠNG IV Người biên soạn: Đỗ Đại Phú CĐSP Sơn La Kiểu Xâu
BT đặt vấn đề: BÀI TOÁN ĐẶT VẤN ĐỀ
Bài toán: Viết chương trình nhập họ tên của 30 học sinh trong lớp. ? Ta sẽ chọn kiểu dữ liệu như thế nào? Khai báo biến như thế nào? + Kiểu mảng một chiều gồm 30 kí tự. ? Hãy viết đoạn lệnh để nhập và xuất dữ liệu cho từng phần tử ? + Khai báo một biến mảng A để lưu họ tên của một học sinh. Readln(A[1]);Readln(A[2]); Readln(A[3]);Readln(A[4]);... ? Có những khó khăn gì gặp phải ? + Chương trình được viết dài dòng. Khi nhập dữ liệu, phải thực hiện gõ nhiều phím. Như vậy ta cần có một kiểu dữ liệu mới cho phép ta nhập/xuất dữ liệu cho xâu bằng một lệnh. 1. Khái niệm: 1. KHÁI NIỆM
1. Khái niệm: Xâu là dãy các kí tự trong bộ mã ASCII Ví Dụ: A 1 2 3 4 5 6 7 Trong đó: + Tên xâu: A + Mỗi kí tự là một phần tử của xâu. + Độ dài của xâu (số kí tự trong xâu): 7 + Khi viết kí tự tham chiếu đến kí tự thứ i của xâu ta viết A[i]. Ví dụ: A[6]=`O` 2. Khai báo: 2. kHAI BÁO KIỂU DỮ LIỆU XÂU (TRONG PASCAL)
2. Khai báo biến: Ví dụ: Var hoten: String[26]; ? Ý nghĩa của từ String,[n] ? + String là tên kiểu xâu. + [n] là giá trị quy định số lượng kí tự tối đa mà biến xâu có thể chứa. ? Khi khai báo không có [n] thì số lượng kí tự tối đa là bao nhiêu ? + Số kí tự tối đa là 255. VD: `Ha Noi` ? Xâu trên có bao nhiêu kí tự ? + Xâu này có 6 kí tự, dấu cách là một kí tự. 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. : 2. kHAI BÁO KIỂU DỮ LIỆU XÂU TRONG PASCAL (TIẾP 1)
? Xâu chỉ gồm một kí tự trống được viết như thế nào ? số lượng kí tự bao nhiêu? + Kí kiệu của xâu gồm một kí tự trống là ` `. Xâu này có độ dài là 1. ? Xâu rỗng được viết như thế nào ? số lượng kí tự bao nhiêu ? + Kí hiệu của xâu rỗng là ` `. Xâu có độ dài là 0. a, Nhập/xuất dữ liệu cho biến xâu trong ngôn ngữ Pascal VD: Readln(hoten); Write(`Ho ten`,hoten); ? Khi viết lệnh nhập /xuất dữ liệu cho biến xâu, có gì khác so với biến mảng các kí tự ? + Viết một lệnh nhập nguyên cho cả xâu. Viết lệnh gọn hơn, chương trình gọn. Ta có thể sử dụng lệnh gán để nhập giá trị cho biến xâu. Cấu trúc chung: Tên_biến_xâu:= hằng xâu; VD: St:=`Ha Noi`; : 2. kHAI BÁO KIỂU DỮ LIỆU XÂU TRONG PASCAL (TIẾP 2)
b, Tham chiếu đến từng kí tự của xâu. Cấu trúc chung: Tên_biến[chỉ số] ? Có gì giống và khác nhau so với cách tham chiếu đến từng phần tử của mảng + Giống cấu trúc chung khi tham chiếu tên biến[chỉ số]. VD: st[2] 3. Thao tác xử lí: 3. CÁC THAO TÁC XỬ LÍ XÂU
? Hãy nhắc lại các phép toán đã học trên kiểu dữ liệu chuẩn. + Phép toán số học. + Phép toán so sánh. + Phép toán logic. a, Phép ghép xâu: ? VD: Cho biết kết quả của chương trình in ra màn hình. Var st:String; Begin st:=`Ha` + `Noi`; Write(st); Readln; End. + Kết quả cho ta: st=`HaNoi` 3. Các thao tác xử lí trên xâu: : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 1)
VD: st:=`Ha Noi` + `Co Ho Guom` kết quả: st=`Ha NoiCo Ho Guom` ? Chức năng của phép cộng ? + Là phép toán nối xâu thứ hai vào cuối xâu thứ nhất. b,Phép so sánh xâu: Cho biết kết quả in ra màn hình của chương trình sau: Var bo:Boolean; Begin bo:=`AB` < `AC`; Write(bo); Readln End; + Kết quả là: True. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 2)
? Còn các phép so sánh nào nữa ? + Có các phép <, <=, >=, <>, = ? Cho biết kết quả các phép so sánh sau: `AB` < `ABC` `AC` < `ABC` `Tin Hoc` = `Tin Hoc` Kết quả: True Kết quả: Flase Kết quả: True Lưu ý: Một xâu có độ dài nhỏ hơn có thể lớn hơn (>) xâu có độ dài lớn hơn. + Xâu A là lớn hơn xâu B nếu như kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn. + Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A là nhỏ hơn B + Hai xâu được coi là bằng nhau nếu như chúng giống nhau hoàn toàn. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 3)
c, Hàm Length(st): Cấu trúc chung: Length(st) ? Ý nghĩa của Length và của st ? + Length: là tên hàm, có nghĩa là độ dài, st: là một biểu thức xâu kí tự. ? Cho biết kết quả in ra màn hình của chương trình sau: Var st: String; Begin st:=`Ha Noi`; Writeln(Length(st)); Readln End. + Kết quả là 6 ? Chức năng của hàm Length() là gì ? + Hàm cho số lượng kí tự của xâu st. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 4)
d, Hàm Upcase(ch): Cấu trúc chung: Upcase(ch); ? Cho biết kết quả chương trình in ra màn hình: Var ch:Char; Begin ch:=`h`; Write(Upcase(ch); Readln End. + Kết quả là: H ? Chức năng của hàm Upcase() ? + Cho giá trị là chữ cái in hoa của ch. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 5)
e, Hàm Pos(s1,s2): Cấu trúc chung: Post(s1,s2); ? Cho biết kết quả in ra màn hình của chương trình sau: Var vt:Byte; Begin vt:=Pos(`cd`,`abcdefcd`); Write(vt); Readln End. + Kết quả là: 3 ? Chức năng của hàm Pos()? + Hàm cho giá trị là một số nguyên là vị trí của xâu st1 trong xâu st2. ? Thay tham số của hàm Pos trong Chương trình trên Pos(`k`,`a,b,c`). Hỏi kết quả của hàm bằng bao nhiêu ? + Bằng Không 0. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 6)
f, Hàm Copy(st,vt,n): ? Cho biết kết quả in ra màn hình của chương trình sau: Var st:String; Begin st:= Copy(`bai tap`,3,4); Write(st); Readln; End. + Kết quả là: `i ta` ? Chức năng của hàm Copy() ? + Hàm cho giá trị là một xâu kí tự được lấy trong xâu, gồm n kí tự bắt đầu tại vị trí vt. ? Thay tham số của hàm copy trong chương trình trên,cho biết kết quả? VD: Copy(`abc`,1,5) Copy(`abc`,5,2) Copy(`abc`,1,0) Cho giá trị là: `abc` Cho giá trị là xâu rỗng Cho giá trị là xâu rỗng : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 7)
g, Thủ tục Delete(st,vt,n); ? Cho biết kết quả in ra màn hình của chương trình. Var st:String; Begin st:=`HaNoi`; delete(st,3,2); Write(st); Readln End. + Kết quả là: st=`Hai` ? Chức năng của thủ tục Delete(); + Thủ tục thực hiện việc xoá đi trong biến xâu st gồm n kí tự, bắt đầu từ vị trí vt. ? Cho biết kết quả in ra màn hình, khi thay st và thủ tục Delete() st:=`abc`; Delete(st,1,5); st:=`abc`; Delete(st,5,2); st:=` `; xâu rỗng st:=`abc` : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 8)
h, Thủ tục Insert(st1,st2,vt); ? Cho biết kết quả in ra màn hình của chương trình sau: Var st1,st2:String; Begin st2:=`HaNoi`; st1:=` `; Insert(st1,st2,3); Write(st2); Readln; End. + Kết quả là st2:=`Ha Noi` ? Chức năng của thủ tục Insert. + Thủ tục thực hiện việc chèn xâu st1 vào trong biến xâu st2 bắt đầu tại vị trí vt. ? Cho biết kết quả in ra màn hình, khi thay st2 và thủ tục Insert() st2:=`ef`; Insert(`abc`,st2,5); st2:=`ef`; Insert(`abc`,st2,0); st2=`efabc` st2=`abcef`; Ví Dụ 1: VÍ DỤ 1
1. Khai báo xâu Var a,b: string; 2. Nhập xâu BEGIN Write(‘ Nhap xau ho ten thu nhat :’); Readln(a); Write(‘Nhap xau ho ten thu hai :’); Readln(b); 3. Xử lí xâu IF Length(a)>Length(b) Then write(a) else write(b) Readln; END. Ví Dụ 2: VÍ DỤ 2
Các bước thực hiện: 1. Khai báo xâu : A,B 2. Nhập xâu 3. Xử lí xâu, trong đó: Kí tự đầu tiên của xâu A: A[i] Kí tự cuối cùng của xâu B: B[n] trong đó n là độ dài của sâu B. Dựa vào các bước bên, hãy hoàn thiện chương trình? : VÍ DỤ 2 (TIẾP 1)
Ví Dụ 3: VÍ DỤ 3
Ví Dụ: - Xâu ban đầu : ‘Mon Tin hoc’ - Kết quả ra màn hình : ‘MonTinhoc’ Thuật toán: B1. Khởi tạo xâu rỗng; B2. Lần lượt duyệt qua tất cả các phần tử của xâu vừa nhập, nếu phần tử được duyệt khác dấu cách thì bổ sung vào xâu rỗng. Hãy viết chương trình dựa theo thuật toán bên ? : VÍ DỤ 3 (TIẾP 1)
Ghi Nhớ: NỘI DUNG CẦN GHI NHỚ QUA BÀI HỌC
Hãy Ghi Nhớ + Xâu là dãy các kí tự trong bộ mã ASCII. + Khai báo biến: VAR tên_biến: STRING[độ dài lớn nhất của xâu]; + Nhập xuất giá trị cho biến xâu: read/readln(); write/writeln(); + Tham chiếu đến từng kí tự trong xau: tên_biến[chỉ_số]. + Phép ghép xâu: kí hiệu là +, được sử dụng để ghép nhiều xâu thành một xâu. + Các phép so sánh: =, <>, <, >, <=, >=; thực hiện việc so sánh hai xâu. + Những hàm và thủ tục liên quan đến xâu: Delete(st,vt,n); Insert(st1,st2,vt); Copy(st,vt,n); Length(st); Post(st1,st2); UpCase(ch);... : VD phép ghép xâu
: VD Phép so sánh xâu
: VD hàm Length(st)
: Ví Dụ hàm Upcase()
: VD Hàm Post()
: Ví Dụ Hàm Copy()
: VD Thủ tục Delete
: VD Thủ tục Insert()
BT Và Thực Hành
1. Bài 1: 1. Bài 1
Xem Chương trình và trả lời câu hỏi ? : 1. Bài 1 (Tiếp 1)
Chương trình ở bài 1 có chức năng làm gì ? Kết quả in ra màn hình như thế nào ? + Kiểm tra một xâu có phải Palindorm hay không? + In ra: ‘Xau la palindrom’ ‘Xau khong la palindorm’ b, Cải tiến chương trình,mà không sử dụng biến trung gian P. ? Nhận xét về các cặp ở vị trí đối xứng nhau trong một xâu palindrom? + Các kí tự ở vị trí này giống nhau. + Kí tự thứ i đối xứng với kí tự vị trí nào ? + Kí tự thứ i đối xứng với kí tự thứ length()-I+1. + Cần phải so sánh bao nhiêu cặp kí tự trong xâu để biết được xâu đó là palindorm ? + So sánh tối đa length() div 2. + Dùng cấu trúc lặp nào để so sánh + Có thể dùng For hoặc While. : 1. Bài 1 (Tiếp 2)
Viết lại chương trình Bài 1, Không dùng biến xâu P 2. Bài 2: 2. Bài 2
Bài 2: Viết chương trình nhập từ bàn phím một xâu kí tự S và thông báo ra màn hình số lần xuất hiện của mỗi chữ cái tiếng A trong S (không phân biệt chữ hoa hay chữ thường). Để giải được bài này hãy trả lời câu hỏi sau: + Dữ liệu vào, dữ liệu ra của bài toán ? + Vào: Một xâu S Ra: Dãy các số ứng với sự xuất hiện của mỗi loại kí tự trong xâu. + Nêu các nhiệm vụ chính cần thực hiện khi giải quyết bài toán ? + Duyệt từ trái sang phải, thêm một đơn vị cho kí tự đọc được. + Cấu trúc dữ liệu phải sử dụng như thế nào ? + Cấu trúc dữ liệu: Dem[‘A’..’Z’] + Ta phải sử dụng hàm nào ? + Dùng hàm Upcase(). : 2. Bài 2 (Tiếp 1)
: 2. Bài 2 (Tiếp 2)
3. Bài 3: 3. Bài 3
Bài 3: Nhập vào từ bàn phím một xâu. Thay thế tất cả các cụm kí tự `anh` bằng cụm kí tự `em`. Điền Khuyết 1: BÀI ĐIỀM VÀO CHỖ KHUYẾT (1)
Điền vào chỗ trống (...) trong bảng sau:
Giá trị s1: `cua Me` Giá trị s2: `Em se la mua xuan` Thao tác: Insert (||s1||,s2,||18||); Kết quả: `Em se la mua xuan cua Me` Điền Khuyết 2: BÀI ĐIỀM VÀO CHỖ KHUYẾT (2)
Điền vào chỗ trống (...) trong bảng sau:
Giá trị s1: `||CDE||` Giá trị s2: `ABGHI` Thao tác: Insert(||s1||,s2,||3||); Kết quả: `ABCDEGHI` Điền Khuyết 3: BÀI ĐIỀM VÀO CHỖ KHUYẾT (3)
Điền vào chỗ trống (...) trong bảng sau:
Giá trị của st: `abcdef` Thao tác: delete(st,||3||,||2||); Kết quả: `abef` Giá trị của st: `Xuan da ve tren cao nguyen` Thao tác: delete(st,5,5) Kết quả: `||Xuane tren cao nguyen||` Điền Khuyết 4: BÀI ĐIỀM VÀO CHỖ KHUYẾT (4)
Điền vào chỗ (...) trống:
Giá trị st: `Co 123 em` Biểu thức: length(st); Kết quả: ||9|| Giá trị st: `Tong so 123 em` Biểu thức: pos(`123`,st); Kết quả: ||9|| Giá trị st: `Tong so 123 em` Biểu thức: copy(st,||9||,||3||); Kết quả: `123` Kiểu Bản Ghi
BT đặt vấn đề: BÀI TOÁN ĐẶT VẤN ĐỀ
? Trên bảng có những thông tin gì ? + Họ tên, ngày sinh, giới tính, điểm của các môn thi. ? Bảng chứa thông tin của bao nhiêu đối tượng ? + Bảng chứa thông tin của 3 đối tượng. ? Tìm thêm một ví dụ tương tự ? + Để mô tả một người trong danh bạ điện thoại cần có các thông tin: Họ tên, địa chỉ và số điện thoại. 1. Khái niệm: 1. KHÁI NIỆM VÀ KHAI BÁO KIỂU BẢN GHI
1. Khái niệm: Dữ liệu kiểu bản ghi: Mỗi thông tin của đối tượng được gọi là một thuộc tính hay một trường. Mỗi đối tượng được mô tả bằng nhiều thông tin trên một hàng được gọi là một bản ghi. Để mô ta các đối tượng như vậy, ngô ngữ lập trình cho phép ta xác định kiểu bản ghi. Mỗi đối tượng được mô tả bằng một bản ghi. 2. Khai báo kiểu bản ghi: Type < tên kiểu bản ghi> = record : kiểu trường 1; < tên trường 2> : kiểu trường 2; end; Var : ; : ARRAY[1..Max] of < tên kiểu bản ghi>; : 1. KHÁI NIỆM VÀ KHAI BÁO KIỂU BẢN GHI (TIẾP 1)
? Tìm một ví dụ để minh hoạ về khai báo kiểu bản ghi? Type kieu_nguoi=record hoten:string; diachi: string; sdt:longint; End; Var nguoi:kieu_nguoi; ? Để giải quyết bài toán đặt vấn đề ta phải khai báo một mảng các bản ghi. Hãy tạo kiểu mảng đó ? Type kieu_hs=record Hoten,ngaysinh:String; Toan,van:byte; dtb:real; End; Kieu_mbg=array[1...50] of kieu_hs; 2. Thao tác xử lí: 2. CÁC THAO TÁC XỬ LÍ TRÊN BẢN GHI
2. Thao Tác Xử Lí + Cấu trúc chung để tham chiếu đến từng trường của biến bản ghi. Tên_biến_bg. Tên trường Ví Dụ nguoi.hoten nguoi.diachi nguoi.sdt + Có 2 cách gán giá trị cho biến bản ghi. - Gán nguyên cả biến bản ghi (1) A:=B; - Gán lần lượt từng trường (2) A.ht:=B.ht; A.dtb=B.dtb Hai biến A,B phải được khai báo cùng một kiểu bản ghi. + Nhập/ xuất giá trị: Phải viết lệnh nhập xuất lần lượt với từng trường. Readln(nguoi.hoten); Readln(nguoi.dia chi); Readln(nguoi.sdt); Writeln(nguoi.hoten); Ví Dụ: VÍ DỤ
Đề Bài: Một lớp gồm N (N ≤ 60) học sinh. Cần quản lí học sinh với các thuộc tính như họ và tên, ngày sinh, địa chỉ, điểm toán, điểm văn, xếp loại. Giả sử việc xếp loại được xác định như sau: + Nếu tổng điểm toán và văn lớn hơn hoặc bằng 18 thì xếp loại A. + Nếu tổng điểm toán và văn lớn hơn bằng 14 và nhỏ hơn 18 thì xếp loại B. + Nếu tổng điểm toán và 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à văn nhỏ hơn 10 thì xếp loại D. Để giải quyết được bài toàn cần phải trả lời được các câu hỏi sau: ? Sử dụng kiểu dữ liệu như thế nào để giải quyết bài toán ? + Một mảng các bảng ghi. Ví Dụ (T): VÍ DỤ (TIẾP 1)
? Mô tả thông tin về một học sinh bằng kiểu bản ghi. Tạo mảng các bản ghi đó? Type Hocsinh = Record SBD: Integer; Hoten: String[30]; Toan,Van,Tong:Real; Ketqua: String[10]; end; Var Lop: Array[1..100] of Hocsinh; ? Nêu các bước để giải quyết bài toán này? Bước 1: Tạo kiểu dữ liệu, khai báo biến. Bước 2: 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 Vi Dụ (T): VÍ DỤ (TIẾP 2)
Ghi Nhớ: NỘI DUNG CẦN GHI NHỚ QUA BÀI HỌC
Hãy Ghi Nhớ + Cách tạo kiểu bản ghi, khai báo kiểu bản ghi. Type Hocsinh = record SBD : integer; Hovaten : string[30]; Toan,Van,Tong:real; Ketqua :string[10]; end; Var LOP: ARRAY[1..50] of hocsinh; + Tham chiếu đến từng trường của biến bản ghi. Tên biến bản ghi.tên trường + Nhập/ xuất giá trị cho biến bản ghi. + Gán giá trị cho từng trường của bản ghi hoặc giữa hai biến cùng kiểu. Lop[i].SBD Trắc Nghiệm
Câu 1: Câu 1
Câu 1 : Hãy chọn phương án ghép đúng. Cho xâu S là ‘Hanoi-Vietnam’. Kết quả của hàm Length(S) là
12
13
14
15
Câu 2:
Câu 2 : Hãy chọn phương án ghép đúng. Cho xâu S là ‘Hanoi-Vietnam’. Kết quả của hàm Pos(‘Vietnam’,S) la:
5
6
7
8
Câu 3:
Câu 3 : Cho khai báo sau : Var hoten:String; Phát biểu nào dưới đây là đúng ?
Câu lệnh sai vì thiếu độ dài tối đa của xâu;
Xâu có độ dài lớn nhất là 0;
Xâu có độ dài lớn nhất là 255;
Cần phải khai báo kích thước của xâu sau đó
Câu 4:
Câu 4 : Hãy chọn phương án ghép đúng nhất. Thủ tục chuẩn Insert(S1,S2,vt) thực hiện
A. chèn xâu S1 vào S2 bắt đầu từ vị trí vt ;
B. chèn xâu S2 vào S1 bắt đầu từ vị trí vt ;
C. nối xâu S2 vào S1;
D. sao chép vào cuối S1 một phần của S2 từ vị trí vt ;
Câu 5:
Câu 5 : Đoạn chương trình sau in ra kết quả nào ? Program Welcome ; Var a : string[10]; Begin a := ‘tinhoc ’; writeln(length(a)); End.
6
7
10
Chương trình có lỗi
Câu 6:
Câu 6 : Cho str là một xâu kí tự, đoạn chương trình sau thực hiện công việc gì ? for i := length(str) downto 1 do write(str[i]) ;
A. In xâu ra màn hình;
B. In từng kí tự xâu ra màn hình;
C. In từng kí tự ra màn hình theo thứ tự ngược, trừ kí tự đầu tiên;
D. In từng kí tự ra màn hình theo thứ tự ngược;
Câu 7:
Câu 7 : Cho str là một xâu kí tự, đoạn chương trình sau thực hiện công việc gì for i := 1 to length(str) – 1 do str[i+1] := str[i] ;
A. Dịch chuyển các kí tự của xâu về sau 1 vị trí;
B. Dịch chuyển các kí tự của sâu lên trước một vị trí;
C. Khởi tạo lại mọi kí tự của xâu bằng kí tự đầu tiên;
D. Khởi tạo lại mọi kí tự của xâu bằng kí tự cuối cùng;
Câu 8:
Câu 8 : Phát biểu nào sau đây về chức năng của kiểu bản ghi là phù hợp nhất ?
A. Để mô tả đối tượng chứa nhiều loại thông tin khác nhau;
B. Để mô tả nhiều dữ liệu;
C. Để mô tả dữ liệu gồm cả số và xâu kí tự;
D. Để tạo mảng nhiều chiều;
Câu 9:
Câu 9 : Phát biểu nào sau đây về bản ghi là không phù hợp ?
A. Bản ghi là dữ liệu có cấu trúc;
B. Bản ghi thường có nhiều trường dữ liệu;
C. Trường dữ liệu của bản ghi có thể là một kiểu bản ghi khác;
D. Bản ghi thường được dùng để thay thế mảng;
Câu 10:
Câu 10 : Cho bản ghi sinh_vien gồm các trường ho_ten, ngay_sinh . Biểu thức nào truy cập đến trường ho_ten của bản ghi này ?
A. ho_ten;
B. sinh_vien->ho_ten;
C. sinh_vien.(ho_ten,ngay_sinh);
D. sinh_vien.ho_ten;
Câu 11:
Câu 11 : Biểu thức quan hệ nào dưới đây cho giá trị TRUE ?
A. “MOOR” < “LOOK”;
B. “MATHEMATIC” < “LOOK”;
C. “AB123CD” < “ ”;
D. “MOOR” < “MOORK”;
Câu 12:
Câu 12 : Phát biểu nào dưới đây là sai ?
A. Xâu là một dãy các kí tự trong bảng mã ASCII. Kiểu xâu là một kiểu dữ liệu có cấu trúc.
B. Có thể xem mỗi xâu có cấu trúc giống như một mảng một chiều mà mỗi phần tử của mảng là một kí tự trong bảng mã ASCII, được đánh chỉ số từ 1.
C. Số lượng kí tự trong một xâu chính là độ dài của xâu.
D. Các phép toán thao tác với xâu tương tự như các phép toán thao tác với mảng.
Câu 13:
Câu 13 : Phát biểu nào dưới đây là đúng ?
A. Kiểu bản ghi là một kiểu dữ liệu có cấu trúc.
B. Mỗi bản ghi mô tả một đối tượng, mỗi bản ghi có thể gồm một số thành phần gọi là trường, mỗi trường mô tả một thuộc tính của đối tượng. Giống như kiểu mảng, các thành phần tạo thành một bản ghi phải thuộc cùng một kiểu dữ liệu khác nhau.
C. Có thể so sánh các bản ghi bất kì với nhau bằng các quan hệ <, >, =, <> .
D. Trên các biến bản ghi, ta có thể sử dụng các phép toán số học +, – , *, /.
Câu 14:
Câu 14 : Phát biểu nào dưới đây là sai ?
A. Có thể so sánh các bản ghi bất kì với nhau bằng các quan hệ <, >, =, <> .
B. Kiểu bản ghi là một kiểu dữ liệu có cấu trúc.
C. Với A, B là hai biến bản ghi thì ta chỉ có thể dùng lệnh gán A := B trong trường hợp A và B là cùng kiểu.
D. Kiểu bản ghi cho chúng ta một phương thức xây dựng các kiểu dữ liệu mới một cách linh hoạt và phong phú. Kiểu bản ghi thường được dùng để mô tả các đối tượng trong các bài toán quản lí.
Bài Tập
Bài 5: BÀI 5
Bài 5 Viết chương trình nhập từ bàn phím số nguyên dương N (N≤100) và dãy A gồm N số nguyên A1,A2,....,An có giá trị tuyệt đối không lớn hơn 1000. Hãy cho biết dãy A có phải là một cấp số cộng hay không và thông báo kết quả ra màn hình. : BÀI 5 (TIẾP 1)
Bài 6: BÀI 6 (SGK/79)
Bài 6 (SGK/79): Viết chương trình nhập từ bàn phím số nguyên dươngN(N ≤ 100) và dãy A gồm N số nguyện A1, A2...., An có trị tuyệt đối không lớn hơn 1000. Hãy đưa ra những thông tin sau: a) Số lượng số chẵn và số lẻ trong dãy. b) Số lượng số nguyên tố trong dãy. : BÀI 6 (TIẾP 1)
Bài 7: BÀI 7 (SGK/79)
Bài 7: Dãy F là dãy phi - bô - na - xi nếu: F0=0; F1=1; Fn=Fn-1 + Fn+2 với N ≥ 2. Viết chương trình nhập từ bàn phím số nguyên dương N và đưa ra màn hình số hạng thứ N của dãy Phi - bô - na - xi. Chương trình của bạn thực hiện được với giá trị lớn nhất của N là bao nhiêu ? : BÀI 7 (TIẾP 1)
Bài 8: BÀI 8 (SGK/79)
Chương trình sau đây thực hiện những gì ? : BÀI 8 (TIẾP 1)
Trả lời Bài tập 8: Chương trình ở Bài tập 8 thực hiện việc hoán đổi vị trí dòng thứ i với dòng thứ N-i+1, nghĩa là hoán đổi vị trí dòng đầu tiên với dòng cuối cùng của mảng hai chiều, dòng thứ hai từ trên xuống với dòng thứ hai từ dưới lên,.... Việc hoán đổi vị trí dòng thứ i với dòng đối xứng với nó được thực hiện khi i nhận giá trị từ 1 đến N làm cho mỗi dòng được hoán đổi vị trí hai lần, vì vậy cuối cùng mảng A không thay đổi so với ban đầu. Bài 9: BÀI 9 (SGK/80)
Bài 9: Cho mảng hai chiều kích thước nxn với các phần tử là những số nguyên. Tìm trong mỗi cột phần tử lớn nhất rồi đổi chỗ nó với phần tử có chỉ số cột bằng chỉ số hàng? : BÀI 9 (TIẾP 1)
Bài 10: BÀI 10 (SGK/80)
Bài 10: Việt chương trình nhập từ bàn phím xâu kí tự S có độ dài không quá 100. Hãy cho biết có bao nhiêu chữ số xuất hiện trong xâu S. Thông báo kết quả ra màn hình. Bài 11: BÀI 11 (SGK/80)
Bài 11: Hãy bổ sung thêm vào chương trình Xep_loai (ở tiết 13) những lệnh cần thiết để chương trình đưa ra danh sách học sinh xếp loại A. Giải: Cần đưa thêm đoạn chương trình sau vào cuối chương trình Xep_loại: Writeln(`Danh sach hoc sinh xep loai A trong lop: `); For i:=1 To N Do If Lop[i].Xeploai = `A` Then Writeln(Lop[i].Hoten:30); : BÀI 11 (TIẾP 1)
Trang bìa
Trang bìa:
GIÁO ÁN ĐIỆN TỬ TIN HỌC 11 CHƯƠNG IV Người biên soạn: Đỗ Đại Phú CĐSP Sơn La Kiểu Xâu
BT đặt vấn đề: BÀI TOÁN ĐẶT VẤN ĐỀ
Bài toán: Viết chương trình nhập họ tên của 30 học sinh trong lớp. ? Ta sẽ chọn kiểu dữ liệu như thế nào? Khai báo biến như thế nào? + Kiểu mảng một chiều gồm 30 kí tự. ? Hãy viết đoạn lệnh để nhập và xuất dữ liệu cho từng phần tử ? + Khai báo một biến mảng A để lưu họ tên của một học sinh. Readln(A[1]);Readln(A[2]); Readln(A[3]);Readln(A[4]);... ? Có những khó khăn gì gặp phải ? + Chương trình được viết dài dòng. Khi nhập dữ liệu, phải thực hiện gõ nhiều phím. Như vậy ta cần có một kiểu dữ liệu mới cho phép ta nhập/xuất dữ liệu cho xâu bằng một lệnh. 1. Khái niệm: 1. KHÁI NIỆM
1. Khái niệm: Xâu là dãy các kí tự trong bộ mã ASCII Ví Dụ: A 1 2 3 4 5 6 7 Trong đó: + Tên xâu: A + Mỗi kí tự là một phần tử của xâu. + Độ dài của xâu (số kí tự trong xâu): 7 + Khi viết kí tự tham chiếu đến kí tự thứ i của xâu ta viết A[i]. Ví dụ: A[6]=`O` 2. Khai báo: 2. kHAI BÁO KIỂU DỮ LIỆU XÂU (TRONG PASCAL)
2. Khai báo biến: Ví dụ: Var hoten: String[26]; ? Ý nghĩa của từ String,[n] ? + String là tên kiểu xâu. + [n] là giá trị quy định số lượng kí tự tối đa mà biến xâu có thể chứa. ? Khi khai báo không có [n] thì số lượng kí tự tối đa là bao nhiêu ? + Số kí tự tối đa là 255. VD: `Ha Noi` ? Xâu trên có bao nhiêu kí tự ? + Xâu này có 6 kí tự, dấu cách là một kí tự. 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. : 2. kHAI BÁO KIỂU DỮ LIỆU XÂU TRONG PASCAL (TIẾP 1)
? Xâu chỉ gồm một kí tự trống được viết như thế nào ? số lượng kí tự bao nhiêu? + Kí kiệu của xâu gồm một kí tự trống là ` `. Xâu này có độ dài là 1. ? Xâu rỗng được viết như thế nào ? số lượng kí tự bao nhiêu ? + Kí hiệu của xâu rỗng là ` `. Xâu có độ dài là 0. a, Nhập/xuất dữ liệu cho biến xâu trong ngôn ngữ Pascal VD: Readln(hoten); Write(`Ho ten`,hoten); ? Khi viết lệnh nhập /xuất dữ liệu cho biến xâu, có gì khác so với biến mảng các kí tự ? + Viết một lệnh nhập nguyên cho cả xâu. Viết lệnh gọn hơn, chương trình gọn. Ta có thể sử dụng lệnh gán để nhập giá trị cho biến xâu. Cấu trúc chung: Tên_biến_xâu:= hằng xâu; VD: St:=`Ha Noi`; : 2. kHAI BÁO KIỂU DỮ LIỆU XÂU TRONG PASCAL (TIẾP 2)
b, Tham chiếu đến từng kí tự của xâu. Cấu trúc chung: Tên_biến[chỉ số] ? Có gì giống và khác nhau so với cách tham chiếu đến từng phần tử của mảng + Giống cấu trúc chung khi tham chiếu tên biến[chỉ số]. VD: st[2] 3. Thao tác xử lí: 3. CÁC THAO TÁC XỬ LÍ XÂU
? Hãy nhắc lại các phép toán đã học trên kiểu dữ liệu chuẩn. + Phép toán số học. + Phép toán so sánh. + Phép toán logic. a, Phép ghép xâu: ? VD: Cho biết kết quả của chương trình in ra màn hình. Var st:String; Begin st:=`Ha` + `Noi`; Write(st); Readln; End. + Kết quả cho ta: st=`HaNoi` 3. Các thao tác xử lí trên xâu: : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 1)
VD: st:=`Ha Noi` + `Co Ho Guom` kết quả: st=`Ha NoiCo Ho Guom` ? Chức năng của phép cộng ? + Là phép toán nối xâu thứ hai vào cuối xâu thứ nhất. b,Phép so sánh xâu: Cho biết kết quả in ra màn hình của chương trình sau: Var bo:Boolean; Begin bo:=`AB` < `AC`; Write(bo); Readln End; + Kết quả là: True. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 2)
? Còn các phép so sánh nào nữa ? + Có các phép <, <=, >=, <>, = ? Cho biết kết quả các phép so sánh sau: `AB` < `ABC` `AC` < `ABC` `Tin Hoc` = `Tin Hoc` Kết quả: True Kết quả: Flase Kết quả: True Lưu ý: Một xâu có độ dài nhỏ hơn có thể lớn hơn (>) xâu có độ dài lớn hơn. + Xâu A là lớn hơn xâu B nếu như kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn. + Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A là nhỏ hơn B + Hai xâu được coi là bằng nhau nếu như chúng giống nhau hoàn toàn. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 3)
c, Hàm Length(st): Cấu trúc chung: Length(st) ? Ý nghĩa của Length và của st ? + Length: là tên hàm, có nghĩa là độ dài, st: là một biểu thức xâu kí tự. ? Cho biết kết quả in ra màn hình của chương trình sau: Var st: String; Begin st:=`Ha Noi`; Writeln(Length(st)); Readln End. + Kết quả là 6 ? Chức năng của hàm Length() là gì ? + Hàm cho số lượng kí tự của xâu st. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 4)
d, Hàm Upcase(ch): Cấu trúc chung: Upcase(ch); ? Cho biết kết quả chương trình in ra màn hình: Var ch:Char; Begin ch:=`h`; Write(Upcase(ch); Readln End. + Kết quả là: H ? Chức năng của hàm Upcase() ? + Cho giá trị là chữ cái in hoa của ch. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 5)
e, Hàm Pos(s1,s2): Cấu trúc chung: Post(s1,s2); ? Cho biết kết quả in ra màn hình của chương trình sau: Var vt:Byte; Begin vt:=Pos(`cd`,`abcdefcd`); Write(vt); Readln End. + Kết quả là: 3 ? Chức năng của hàm Pos()? + Hàm cho giá trị là một số nguyên là vị trí của xâu st1 trong xâu st2. ? Thay tham số của hàm Pos trong Chương trình trên Pos(`k`,`a,b,c`). Hỏi kết quả của hàm bằng bao nhiêu ? + Bằng Không 0. : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 6)
f, Hàm Copy(st,vt,n): ? Cho biết kết quả in ra màn hình của chương trình sau: Var st:String; Begin st:= Copy(`bai tap`,3,4); Write(st); Readln; End. + Kết quả là: `i ta` ? Chức năng của hàm Copy() ? + Hàm cho giá trị là một xâu kí tự được lấy trong xâu, gồm n kí tự bắt đầu tại vị trí vt. ? Thay tham số của hàm copy trong chương trình trên,cho biết kết quả? VD: Copy(`abc`,1,5) Copy(`abc`,5,2) Copy(`abc`,1,0) Cho giá trị là: `abc` Cho giá trị là xâu rỗng Cho giá trị là xâu rỗng : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 7)
g, Thủ tục Delete(st,vt,n); ? Cho biết kết quả in ra màn hình của chương trình. Var st:String; Begin st:=`HaNoi`; delete(st,3,2); Write(st); Readln End. + Kết quả là: st=`Hai` ? Chức năng của thủ tục Delete(); + Thủ tục thực hiện việc xoá đi trong biến xâu st gồm n kí tự, bắt đầu từ vị trí vt. ? Cho biết kết quả in ra màn hình, khi thay st và thủ tục Delete() st:=`abc`; Delete(st,1,5); st:=`abc`; Delete(st,5,2); st:=` `; xâu rỗng st:=`abc` : 3. CÁC THAO TÁC XỬ LÍ XÂU (TIẾP 8)
h, Thủ tục Insert(st1,st2,vt); ? Cho biết kết quả in ra màn hình của chương trình sau: Var st1,st2:String; Begin st2:=`HaNoi`; st1:=` `; Insert(st1,st2,3); Write(st2); Readln; End. + Kết quả là st2:=`Ha Noi` ? Chức năng của thủ tục Insert. + Thủ tục thực hiện việc chèn xâu st1 vào trong biến xâu st2 bắt đầu tại vị trí vt. ? Cho biết kết quả in ra màn hình, khi thay st2 và thủ tục Insert() st2:=`ef`; Insert(`abc`,st2,5); st2:=`ef`; Insert(`abc`,st2,0); st2=`efabc` st2=`abcef`; Ví Dụ 1: VÍ DỤ 1
1. Khai báo xâu Var a,b: string; 2. Nhập xâu BEGIN Write(‘ Nhap xau ho ten thu nhat :’); Readln(a); Write(‘Nhap xau ho ten thu hai :’); Readln(b); 3. Xử lí xâu IF Length(a)>Length(b) Then write(a) else write(b) Readln; END. Ví Dụ 2: VÍ DỤ 2
Các bước thực hiện: 1. Khai báo xâu : A,B 2. Nhập xâu 3. Xử lí xâu, trong đó: Kí tự đầu tiên của xâu A: A[i] Kí tự cuối cùng của xâu B: B[n] trong đó n là độ dài của sâu B. Dựa vào các bước bên, hãy hoàn thiện chương trình? : VÍ DỤ 2 (TIẾP 1)
Ví Dụ 3: VÍ DỤ 3
Ví Dụ: - Xâu ban đầu : ‘Mon Tin hoc’ - Kết quả ra màn hình : ‘MonTinhoc’ Thuật toán: B1. Khởi tạo xâu rỗng; B2. Lần lượt duyệt qua tất cả các phần tử của xâu vừa nhập, nếu phần tử được duyệt khác dấu cách thì bổ sung vào xâu rỗng. Hãy viết chương trình dựa theo thuật toán bên ? : VÍ DỤ 3 (TIẾP 1)
Ghi Nhớ: NỘI DUNG CẦN GHI NHỚ QUA BÀI HỌC
Hãy Ghi Nhớ + Xâu là dãy các kí tự trong bộ mã ASCII. + Khai báo biến: VAR tên_biến: STRING[độ dài lớn nhất của xâu]; + Nhập xuất giá trị cho biến xâu: read/readln(); write/writeln(); + Tham chiếu đến từng kí tự trong xau: tên_biến[chỉ_số]. + Phép ghép xâu: kí hiệu là +, được sử dụng để ghép nhiều xâu thành một xâu. + Các phép so sánh: =, <>, <, >, <=, >=; thực hiện việc so sánh hai xâu. + Những hàm và thủ tục liên quan đến xâu: Delete(st,vt,n); Insert(st1,st2,vt); Copy(st,vt,n); Length(st); Post(st1,st2); UpCase(ch);... : VD phép ghép xâu
: VD Phép so sánh xâu
: VD hàm Length(st)
: Ví Dụ hàm Upcase()
: VD Hàm Post()
: Ví Dụ Hàm Copy()
: VD Thủ tục Delete
: VD Thủ tục Insert()
BT Và Thực Hành
1. Bài 1: 1. Bài 1
Xem Chương trình và trả lời câu hỏi ? : 1. Bài 1 (Tiếp 1)
Chương trình ở bài 1 có chức năng làm gì ? Kết quả in ra màn hình như thế nào ? + Kiểm tra một xâu có phải Palindorm hay không? + In ra: ‘Xau la palindrom’ ‘Xau khong la palindorm’ b, Cải tiến chương trình,mà không sử dụng biến trung gian P. ? Nhận xét về các cặp ở vị trí đối xứng nhau trong một xâu palindrom? + Các kí tự ở vị trí này giống nhau. + Kí tự thứ i đối xứng với kí tự vị trí nào ? + Kí tự thứ i đối xứng với kí tự thứ length()-I+1. + Cần phải so sánh bao nhiêu cặp kí tự trong xâu để biết được xâu đó là palindorm ? + So sánh tối đa length() div 2. + Dùng cấu trúc lặp nào để so sánh + Có thể dùng For hoặc While. : 1. Bài 1 (Tiếp 2)
Viết lại chương trình Bài 1, Không dùng biến xâu P 2. Bài 2: 2. Bài 2
Bài 2: Viết chương trình nhập từ bàn phím một xâu kí tự S và thông báo ra màn hình số lần xuất hiện của mỗi chữ cái tiếng A trong S (không phân biệt chữ hoa hay chữ thường). Để giải được bài này hãy trả lời câu hỏi sau: + Dữ liệu vào, dữ liệu ra của bài toán ? + Vào: Một xâu S Ra: Dãy các số ứng với sự xuất hiện của mỗi loại kí tự trong xâu. + Nêu các nhiệm vụ chính cần thực hiện khi giải quyết bài toán ? + Duyệt từ trái sang phải, thêm một đơn vị cho kí tự đọc được. + Cấu trúc dữ liệu phải sử dụng như thế nào ? + Cấu trúc dữ liệu: Dem[‘A’..’Z’] + Ta phải sử dụng hàm nào ? + Dùng hàm Upcase(). : 2. Bài 2 (Tiếp 1)
: 2. Bài 2 (Tiếp 2)
3. Bài 3: 3. Bài 3
Bài 3: Nhập vào từ bàn phím một xâu. Thay thế tất cả các cụm kí tự `anh` bằng cụm kí tự `em`. Điền Khuyết 1: BÀI ĐIỀM VÀO CHỖ KHUYẾT (1)
Điền vào chỗ trống (...) trong bảng sau:
Giá trị s1: `cua Me` Giá trị s2: `Em se la mua xuan` Thao tác: Insert (||s1||,s2,||18||); Kết quả: `Em se la mua xuan cua Me` Điền Khuyết 2: BÀI ĐIỀM VÀO CHỖ KHUYẾT (2)
Điền vào chỗ trống (...) trong bảng sau:
Giá trị s1: `||CDE||` Giá trị s2: `ABGHI` Thao tác: Insert(||s1||,s2,||3||); Kết quả: `ABCDEGHI` Điền Khuyết 3: BÀI ĐIỀM VÀO CHỖ KHUYẾT (3)
Điền vào chỗ trống (...) trong bảng sau:
Giá trị của st: `abcdef` Thao tác: delete(st,||3||,||2||); Kết quả: `abef` Giá trị của st: `Xuan da ve tren cao nguyen` Thao tác: delete(st,5,5) Kết quả: `||Xuane tren cao nguyen||` Điền Khuyết 4: BÀI ĐIỀM VÀO CHỖ KHUYẾT (4)
Điền vào chỗ (...) trống:
Giá trị st: `Co 123 em` Biểu thức: length(st); Kết quả: ||9|| Giá trị st: `Tong so 123 em` Biểu thức: pos(`123`,st); Kết quả: ||9|| Giá trị st: `Tong so 123 em` Biểu thức: copy(st,||9||,||3||); Kết quả: `123` Kiểu Bản Ghi
BT đặt vấn đề: BÀI TOÁN ĐẶT VẤN ĐỀ
? Trên bảng có những thông tin gì ? + Họ tên, ngày sinh, giới tính, điểm của các môn thi. ? Bảng chứa thông tin của bao nhiêu đối tượng ? + Bảng chứa thông tin của 3 đối tượng. ? Tìm thêm một ví dụ tương tự ? + Để mô tả một người trong danh bạ điện thoại cần có các thông tin: Họ tên, địa chỉ và số điện thoại. 1. Khái niệm: 1. KHÁI NIỆM VÀ KHAI BÁO KIỂU BẢN GHI
1. Khái niệm: Dữ liệu kiểu bản ghi: Mỗi thông tin của đối tượng được gọi là một thuộc tính hay một trường. Mỗi đối tượng được mô tả bằng nhiều thông tin trên một hàng được gọi là một bản ghi. Để mô ta các đối tượng như vậy, ngô ngữ lập trình cho phép ta xác định kiểu bản ghi. Mỗi đối tượng được mô tả bằng một bản ghi. 2. Khai báo kiểu bản ghi: Type < tên kiểu bản ghi> = record
? Tìm một ví dụ để minh hoạ về khai báo kiểu bản ghi? Type kieu_nguoi=record hoten:string; diachi: string; sdt:longint; End; Var nguoi:kieu_nguoi; ? Để giải quyết bài toán đặt vấn đề ta phải khai báo một mảng các bản ghi. Hãy tạo kiểu mảng đó ? Type kieu_hs=record Hoten,ngaysinh:String; Toan,van:byte; dtb:real; End; Kieu_mbg=array[1...50] of kieu_hs; 2. Thao tác xử lí: 2. CÁC THAO TÁC XỬ LÍ TRÊN BẢN GHI
2. Thao Tác Xử Lí + Cấu trúc chung để tham chiếu đến từng trường của biến bản ghi. Tên_biến_bg. Tên trường Ví Dụ nguoi.hoten nguoi.diachi nguoi.sdt + Có 2 cách gán giá trị cho biến bản ghi. - Gán nguyên cả biến bản ghi (1) A:=B; - Gán lần lượt từng trường (2) A.ht:=B.ht; A.dtb=B.dtb Hai biến A,B phải được khai báo cùng một kiểu bản ghi. + Nhập/ xuất giá trị: Phải viết lệnh nhập xuất lần lượt với từng trường. Readln(nguoi.hoten); Readln(nguoi.dia chi); Readln(nguoi.sdt); Writeln(nguoi.hoten); Ví Dụ: VÍ DỤ
Đề Bài: Một lớp gồm N (N ≤ 60) học sinh. Cần quản lí học sinh với các thuộc tính như họ và tên, ngày sinh, địa chỉ, điểm toán, điểm văn, xếp loại. Giả sử việc xếp loại được xác định như sau: + Nếu tổng điểm toán và văn lớn hơn hoặc bằng 18 thì xếp loại A. + Nếu tổng điểm toán và văn lớn hơn bằng 14 và nhỏ hơn 18 thì xếp loại B. + Nếu tổng điểm toán và 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à văn nhỏ hơn 10 thì xếp loại D. Để giải quyết được bài toàn cần phải trả lời được các câu hỏi sau: ? Sử dụng kiểu dữ liệu như thế nào để giải quyết bài toán ? + Một mảng các bảng ghi. Ví Dụ (T): VÍ DỤ (TIẾP 1)
? Mô tả thông tin về một học sinh bằng kiểu bản ghi. Tạo mảng các bản ghi đó? Type Hocsinh = Record SBD: Integer; Hoten: String[30]; Toan,Van,Tong:Real; Ketqua: String[10]; end; Var Lop: Array[1..100] of Hocsinh; ? Nêu các bước để giải quyết bài toán này? Bước 1: Tạo kiểu dữ liệu, khai báo biến. Bước 2: 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 Vi Dụ (T): VÍ DỤ (TIẾP 2)
Ghi Nhớ: NỘI DUNG CẦN GHI NHỚ QUA BÀI HỌC
Hãy Ghi Nhớ + Cách tạo kiểu bản ghi, khai báo kiểu bản ghi. Type Hocsinh = record SBD : integer; Hovaten : string[30]; Toan,Van,Tong:real; Ketqua :string[10]; end; Var LOP: ARRAY[1..50] of hocsinh; + Tham chiếu đến từng trường của biến bản ghi. Tên biến bản ghi.tên trường + Nhập/ xuất giá trị cho biến bản ghi. + Gán giá trị cho từng trường của bản ghi hoặc giữa hai biến cùng kiểu. Lop[i].SBD Trắc Nghiệm
Câu 1: Câu 1
Câu 1 : Hãy chọn phương án ghép đúng. Cho xâu S là ‘Hanoi-Vietnam’. Kết quả của hàm Length(S) là
12
13
14
15
Câu 2:
Câu 2 : Hãy chọn phương án ghép đúng. Cho xâu S là ‘Hanoi-Vietnam’. Kết quả của hàm Pos(‘Vietnam’,S) la:
5
6
7
8
Câu 3:
Câu 3 : Cho khai báo sau : Var hoten:String; Phát biểu nào dưới đây là đúng ?
Câu lệnh sai vì thiếu độ dài tối đa của xâu;
Xâu có độ dài lớn nhất là 0;
Xâu có độ dài lớn nhất là 255;
Cần phải khai báo kích thước của xâu sau đó
Câu 4:
Câu 4 : Hãy chọn phương án ghép đúng nhất. Thủ tục chuẩn Insert(S1,S2,vt) thực hiện
A. chèn xâu S1 vào S2 bắt đầu từ vị trí vt ;
B. chèn xâu S2 vào S1 bắt đầu từ vị trí vt ;
C. nối xâu S2 vào S1;
D. sao chép vào cuối S1 một phần của S2 từ vị trí vt ;
Câu 5:
Câu 5 : Đoạn chương trình sau in ra kết quả nào ? Program Welcome ; Var a : string[10]; Begin a := ‘tinhoc ’; writeln(length(a)); End.
6
7
10
Chương trình có lỗi
Câu 6:
Câu 6 : Cho str là một xâu kí tự, đoạn chương trình sau thực hiện công việc gì ? for i := length(str) downto 1 do write(str[i]) ;
A. In xâu ra màn hình;
B. In từng kí tự xâu ra màn hình;
C. In từng kí tự ra màn hình theo thứ tự ngược, trừ kí tự đầu tiên;
D. In từng kí tự ra màn hình theo thứ tự ngược;
Câu 7:
Câu 7 : Cho str là một xâu kí tự, đoạn chương trình sau thực hiện công việc gì for i := 1 to length(str) – 1 do str[i+1] := str[i] ;
A. Dịch chuyển các kí tự của xâu về sau 1 vị trí;
B. Dịch chuyển các kí tự của sâu lên trước một vị trí;
C. Khởi tạo lại mọi kí tự của xâu bằng kí tự đầu tiên;
D. Khởi tạo lại mọi kí tự của xâu bằng kí tự cuối cùng;
Câu 8:
Câu 8 : Phát biểu nào sau đây về chức năng của kiểu bản ghi là phù hợp nhất ?
A. Để mô tả đối tượng chứa nhiều loại thông tin khác nhau;
B. Để mô tả nhiều dữ liệu;
C. Để mô tả dữ liệu gồm cả số và xâu kí tự;
D. Để tạo mảng nhiều chiều;
Câu 9:
Câu 9 : Phát biểu nào sau đây về bản ghi là không phù hợp ?
A. Bản ghi là dữ liệu có cấu trúc;
B. Bản ghi thường có nhiều trường dữ liệu;
C. Trường dữ liệu của bản ghi có thể là một kiểu bản ghi khác;
D. Bản ghi thường được dùng để thay thế mảng;
Câu 10:
Câu 10 : Cho bản ghi sinh_vien gồm các trường ho_ten, ngay_sinh . Biểu thức nào truy cập đến trường ho_ten của bản ghi này ?
A. ho_ten;
B. sinh_vien->ho_ten;
C. sinh_vien.(ho_ten,ngay_sinh);
D. sinh_vien.ho_ten;
Câu 11:
Câu 11 : Biểu thức quan hệ nào dưới đây cho giá trị TRUE ?
A. “MOOR” < “LOOK”;
B. “MATHEMATIC” < “LOOK”;
C. “AB123CD” < “ ”;
D. “MOOR” < “MOORK”;
Câu 12:
Câu 12 : Phát biểu nào dưới đây là sai ?
A. Xâu là một dãy các kí tự trong bảng mã ASCII. Kiểu xâu là một kiểu dữ liệu có cấu trúc.
B. Có thể xem mỗi xâu có cấu trúc giống như một mảng một chiều mà mỗi phần tử của mảng là một kí tự trong bảng mã ASCII, được đánh chỉ số từ 1.
C. Số lượng kí tự trong một xâu chính là độ dài của xâu.
D. Các phép toán thao tác với xâu tương tự như các phép toán thao tác với mảng.
Câu 13:
Câu 13 : Phát biểu nào dưới đây là đúng ?
A. Kiểu bản ghi là một kiểu dữ liệu có cấu trúc.
B. Mỗi bản ghi mô tả một đối tượng, mỗi bản ghi có thể gồm một số thành phần gọi là trường, mỗi trường mô tả một thuộc tính của đối tượng. Giống như kiểu mảng, các thành phần tạo thành một bản ghi phải thuộc cùng một kiểu dữ liệu khác nhau.
C. Có thể so sánh các bản ghi bất kì với nhau bằng các quan hệ <, >, =, <> .
D. Trên các biến bản ghi, ta có thể sử dụng các phép toán số học +, – , *, /.
Câu 14:
Câu 14 : Phát biểu nào dưới đây là sai ?
A. Có thể so sánh các bản ghi bất kì với nhau bằng các quan hệ <, >, =, <> .
B. Kiểu bản ghi là một kiểu dữ liệu có cấu trúc.
C. Với A, B là hai biến bản ghi thì ta chỉ có thể dùng lệnh gán A := B trong trường hợp A và B là cùng kiểu.
D. Kiểu bản ghi cho chúng ta một phương thức xây dựng các kiểu dữ liệu mới một cách linh hoạt và phong phú. Kiểu bản ghi thường được dùng để mô tả các đối tượng trong các bài toán quản lí.
Bài Tập
Bài 5: BÀI 5
Bài 5 Viết chương trình nhập từ bàn phím số nguyên dương N (N≤100) và dãy A gồm N số nguyên A1,A2,....,An có giá trị tuyệt đối không lớn hơn 1000. Hãy cho biết dãy A có phải là một cấp số cộng hay không và thông báo kết quả ra màn hình. : BÀI 5 (TIẾP 1)
Bài 6: BÀI 6 (SGK/79)
Bài 6 (SGK/79): Viết chương trình nhập từ bàn phím số nguyên dươngN(N ≤ 100) và dãy A gồm N số nguyện A1, A2...., An có trị tuyệt đối không lớn hơn 1000. Hãy đưa ra những thông tin sau: a) Số lượng số chẵn và số lẻ trong dãy. b) Số lượng số nguyên tố trong dãy. : BÀI 6 (TIẾP 1)
Bài 7: BÀI 7 (SGK/79)
Bài 7: Dãy F là dãy phi - bô - na - xi nếu: F0=0; F1=1; Fn=Fn-1 + Fn+2 với N ≥ 2. Viết chương trình nhập từ bàn phím số nguyên dương N và đưa ra màn hình số hạng thứ N của dãy Phi - bô - na - xi. Chương trình của bạn thực hiện được với giá trị lớn nhất của N là bao nhiêu ? : BÀI 7 (TIẾP 1)
Bài 8: BÀI 8 (SGK/79)
Chương trình sau đây thực hiện những gì ? : BÀI 8 (TIẾP 1)
Trả lời Bài tập 8: Chương trình ở Bài tập 8 thực hiện việc hoán đổi vị trí dòng thứ i với dòng thứ N-i+1, nghĩa là hoán đổi vị trí dòng đầu tiên với dòng cuối cùng của mảng hai chiều, dòng thứ hai từ trên xuống với dòng thứ hai từ dưới lên,.... Việc hoán đổi vị trí dòng thứ i với dòng đối xứng với nó được thực hiện khi i nhận giá trị từ 1 đến N làm cho mỗi dòng được hoán đổi vị trí hai lần, vì vậy cuối cùng mảng A không thay đổi so với ban đầu. Bài 9: BÀI 9 (SGK/80)
Bài 9: Cho mảng hai chiều kích thước nxn với các phần tử là những số nguyên. Tìm trong mỗi cột phần tử lớn nhất rồi đổi chỗ nó với phần tử có chỉ số cột bằng chỉ số hàng? : BÀI 9 (TIẾP 1)
Bài 10: BÀI 10 (SGK/80)
Bài 10: Việt chương trình nhập từ bàn phím xâu kí tự S có độ dài không quá 100. Hãy cho biết có bao nhiêu chữ số xuất hiện trong xâu S. Thông báo kết quả ra màn hình. Bài 11: BÀI 11 (SGK/80)
Bài 11: Hãy bổ sung thêm vào chương trình Xep_loai (ở tiết 13) những lệnh cần thiết để chương trình đưa ra danh sách học sinh xếp loại A. Giải: Cần đưa thêm đoạn chương trình sau vào cuối chương trình Xep_loại: Writeln(`Danh sach hoc sinh xep loai A trong lop: `); For i:=1 To N Do If Lop[i].Xeploai = `A` Then Writeln(Lop[i].Hoten:30); : BÀI 11 (TIẾP 1)
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Thành Sơn
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)