Nội dung học tập môn Tin học lớp 11 trong Học kỳ II, Năm học 2019 - 2020. THPT Lê Hồng Phong - Phú Yên.
Gửi bởi: Nguyễn Trần Thành Đạt 6 tháng 2 2021 lúc 7:30:02 | Được cập nhật: 16 giờ trước (13:54:18) Kiểu file: PDF | Lượt xem: 729 | Lượt Download: 20 | File size: 0.41024 Mb
Nội dung tài liệu
Tải xuống
Link tài liệu:
Các tài liệu liên quan
- Một số bài toán Tin học trẻ hay ôn thi HSG
- Nội dung học tập môn Tin học lớp 11 trong Học kỳ II, Năm học 2019 - 2020. THPT Lê Hồng Phong - Phú Yên.
- Tin Học 11 Lý thuyết Xâu hàm.
- Bài tập trắc nghiệm Tin học 11
- Bài tập kiểu tệp Tin 11
- Đề và đáp án Tin 11 phần 1.
- ÔN TẬP KIỂU XÂU
- Tóm tắt chương trình pascal đơn giản
- Đề kiểm tra 1 tiết môn tin HỌC LỚP 11 CÓ ĐÁP ÁN
- Đáp án đề kiểm tra 15 phút môn tin học lớp 11 mã đề 134
Có thể bạn quan tâm
Thông tin tài liệu
NỘI DUNG HỌC TẬP MÔN TIN – LỚP 11
HỌC KỲ II, NĂM HỌC 2019 – 2020
(Soạn giảng theo hướng dẫn thực hiện điều chỉnh nội dung dạy học học kỳ II,
năm học 2019 – 2020 kèm theo công văn số 1113/BGDĐT-GDTrH, ngày 30/03/2020
của Bộ trưởng Bộ Giáo dục và Đào tạo)
CHƯƠNG IV. KIỂU DỮ LIỆU CÓ CẤU TRÚC
§ 11. KIỂU MẢNG
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
− Hiểu khái niệm mảng một chiều;
− Hiểu cách khai báo và truy cập đến các phần tử của mảng.
2. Về kỹ năng
− Cài đặt được thuật toán 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.
3. Về thái độ
Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.
II. NỘI DUNG
1. Kiếu mảng một chiều
- Khái niệm mảng một chiều
+ Mảng một chiều là dãy hữu hạn các phân tử cùng kiểu dữ liệ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 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ử.
- Các ngôn ngữ lập trình (NNLT) cho phép xác định:
+ Tên kiểu mảng một chiều;
+ Số lượng phần tử;
+ Kiểu dữ liệu các phần tử;
+ Cách khai báo biến mảng;
+ Cách tham chiếu đến phần tử.
a) Khai báo
Có hai cách khai báo.
Cách 1. Khai báo trực tiếp
Var : array[kiểu chỉ số] of ;
Cách 2. Khai báo gián tiếp
Type = array[kiểu chỉ số] of ;
Var :;
Ví dụ. Để khai báo mảng có tên A gồm có 100 số nguyên đi từ 1 đến 100.
Có các cách khai báo sau:
Cách 1. Khai báo trực tiếp
Var A : array[1..100] of integer;
Cách 2. Khai báo gián tiếp
1
Type MangInt = array[1..100] of integer;
Var A : MangInt;
Chú ý:
+ Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1..n2 (n1≤n2) (n1, n2 là
các hằng hoặc biểu thức).
+ Kiểu phần tử là kiểu dữ liệu các phần tử của mảng.
+ Tham chiếu đến phần tử thứ 20 của bảng Nhietdo thì ta sử dụng lệnh: Nhietdo[20];
b) Một số ví dụ
Ví dụ 1. Tìm phần tử lớn nhất của dãy số nguyên.
- Xác định bài toán
Input: Nhập N và dãy
; mỗi số đều không vượt quá 500.
Output: Chỉ số và giá trị của phần từ lớn nhất trong dãy số đã cho (nếu có nhiều phần tử lớn
nhất thì chỉ cần đưa ra một trong số chúng.
- Thuật toán để giải bài toán
Bước 1. Nhập N
và dãy
;
Bước 2. Max ← A1, i ← 2;
Bước 3. Nếu i > N thì đưa ra giá trị
Max rồi kết thúc;
Bước 4.
Bước 4.1. Nếu A1 > Max
thì Max ← A1;
Bước 4.2. i ← i + 1 rồi quay lại bước 3;
- Chương trình:
Program TimMax;
Uses crt ;
Const Nmax = 250;
Type ArrInt = array [1..Nmax] of integer;
Var N, i, Max, csmax : integer; A : ArrInt;
Begin
clrscr;
write(‘Nhap so luong phan tu cua day so, N = ’) ; readln(N);
for i:=1 to N do
begin
write(‘ Phan tu thu ‘ , i , ‘ = ‘); readln(A[i]);
end;
Max := A[1] ; csmax := 1;
for i:= 2 to N do if A[i] > Max then
begin
Max := A[i]; csmax := i ;
end;
writeln(‘Gia tri cua phan tu Max: ‘, Max ) ;
writeln(‘Chi so cua phan tu Max: ‘, csmax ) ;
readln
End.
Ví dụ 2. Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
(học sinh đọc thêm trong sách giáo khoa trang 57, 58)
Ví dụ 3. Tìm kiếm nhị phân.
(Không học – giảm tải)
2. Kiểu mảng hai chiều
(Không học – giảm tải)
2
III. BÀI TẬP
1. Những khai báo nào là đúng?
Type Arrayr = array[1..200] Of integer; Arrayr = array[byte] of real;
Arrayb = array[-100..100] of boolean;
Var a : arrayr;
B : arrayb;
2. Biến a trong khai báo trên chiếm dung lượng bộ nhớ là bao nhiêu?
IV. HƯỚNG DẪN TỰ HỌC
1. Quan sát trên ví dụ 1, tìm xem đoạn lệnh nào thực hiện các công việc sau:
- Khai báo mảng một chiều;
- Nhập số phần tử của mảng;
- Nhập các phần tử của mảng.
2. Viết chương trình nhập n phần tử là các số nguyên cho mảng 1 chiều và thực hiện các
công việc sau:
a) Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ.
b) Đếm xem có bao nhiêu số nguyên dương, số nguyên âm.
BÀI TẬP VÀ THỰC HÀNH 4
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
− Biết nhận xét, phân tích, đề xuất thuật toán giải bài toán sao cho chương trình chạy
nhanh hơn.
− Làm quen với dữ liệu có cấu trúc và bài toán sắp xếp.
2. Về kỹ năng
− Rèn luyện kĩ năng sử dụng kiểu dữ liệu có cấu trúc, kĩ năng diễn đạt thuật toán bằng
chương trình sử dụng dữ liệu kiểu mảng.
− Rèn luyện kĩ năng nhận xét, phân tích và đề xuất cách giải bài toán sao cho chương
trình chạy nhanh hơn.
3. Về thái độ
Rèn luyện tư duy lập trình, tác phong của người lập trình. Tự giác, chủ động trong khi
thực hành.
II. NỘI DUNG
Bài 1.
a) Hãy tìm hiểu và chạy thử chương trình 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 về thời gian chạy chương trình.
program sapxep;
uses crt;
const Nmax=250;
var
N,i,j,t: integer;
A : array[1..Nmax] of integer;
begin
clrscr;
randomize;
write('nhap so luong phan tu cua day N='); readln(N);
3
for i:=1 to N do
A[i]:=random(300) - random(300);
for i:=1 to N do write(A[i]:5);
writeln;
for j:=N downto 2 do
for i:=1 to j-1 do
if A[i]>A[i+1] then
begin
t:=A[i]; A[i]:=A[i+1]; A[i+1]:=t; end;
writeln('day da duoc sap xep la ');
for i:=1 to N do write(A[i]:4);
readln;
end.
b) (không thực hành)
Bài 2. (không thực hành)
III. BÀI TẬP
1. Những khai báo nào là đúng?
Type Arrayr = array[1..200] Of integer; Arrayr = array[byte] of real;
Arrayb = array[-100..100] of boolean;
Var a : arrayr;
B : arrayb;
2. Biến a trong khai báo trên chiếm dung lượng bộ nhớ là bao nhiêu?
IV. HƯỚNG DẪN TỰ HỌC
1. Học sinh thực hiện soạn thảo và chạy thử chương trình. Cho các giá trị của n khác nhau
để quan sát thời gian chương trình thực hiện và nhận xét.
2. Đoạn chương trình tạo ra dãy số tự động? Đoạn chương trình in mảng ra màn hình?
3. Viết chương trình nhập n phần tử là các số nguyên cho mảng 1 chiều và thực hiện các
công việc sau: Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ. In các số chẵn, in các số lẻ
ra màn hình.
§ 12. KIỂU XÂU
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
− 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.
− Biết một số thủ tục, hàm thông dụng về xâu.
2. Về kỹ năng
− Khai báo được biến kiểu xâu trong ngôn ngữ lập trình Pascal.
− Sử dụng biến xâu và các phép toán trên xâu để giải quyết một bài toán đơn giản.
3. Về thái độ
Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.
II. NỘI DUNG
Khái niệm kiểu dữ liệu xâu
- Xâu là dãy các kí tự trong bộ 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 một 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.
4
- Ví dụ: ‘Le Hong Phong’
- Lưu ý:
+ Xâu được đặt trong 2 dấu nháy đơn;
+ Các kí tự của xâu được đánh số thứ tự thường bắt đầu từ 1;
+ Tham chiếu đến các phần tử của xâu tương tự mảng một chiều:
Tên biến xâu[chỉ số];
Ví dụ: xâu A: ‘Le Hong Phong’
A[1]=’L’,
A[2]=’e’,
A[3]=’ ’
1. Khai báo
- Để khai báo dữ liệu kiểu xâu ta sử dụng tên dành riêng string, tiếp theo là dộ dài lớn nhất
của xâu (không vượt quá 255 kí tự đặt trong dấu ngoặc [ và ] )
- Cú pháp: Var:string[độ dài lớn nhất của xâu];
hoặc
Var :string;
- Ví dụ:
Var ten : string[26];
Var chuthich : string; (xâu có độ dài tối đa là 255 kí tự.
2. Các thao tác xử lí xâu
a) Phép ghép xâu, kí hiệu là dấu (+), được sử dụng để ghép nhiều xâu thành một. Có thể
thực hiện ghép xâu đối với hằng và biến xâu.
Ví dụ: 'Tin hoc'+ '11' sẽ cho xâu có kết quả là 'Tin hoc 11'.
b) Các phép so sánh như bằng (=), khác (), nhỏ hơn (<), … có độ ưu tiên thực hiện thấp
hơn ghép xâu.Việc so sánh 2 xâu sẽ thực hiện theo nguyên tắc sau:
- Xâu A 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 độ dài hai xâu khác nhau thì coi như thêm các kí tự đặc biệt (nhỏ hơn tất cả các kí tự
trong bảng ASCII).
Ví dụ: 'Ab' sẽ nhỏ hơn 'a'. Vì A có mã ASCII là 65 nhỏ hơn a là 97. 'a' sẽ nhỏ hơn 'aB'. Khi
2 xâu độ dài không bằng nhau ta thêm kí tự đặc biệt nhỏ hơn mọi kí tự trong bảng ASCII (dĩ
nhiên sẽ nhỏ hơn B ).
c) Các thủ tục khác
+ delete(st, vt, n) xóa n kí tự của xâu st từ vị trí vt.
Ví dụ: delete(‘Nam Bac’, 3, 5) → ‘Na’.
+ insert(st, s2, vt) chèn xâu s1 vào s2 bắt đầu ở vị trí vt.
Ví dụ: insert(‘HOC’, ‘TIN’, 1) → ‘HOCTIN’
+ copy(S, vt, N); Tạo xâu gồm N kí tự liên tiếp bắt đầu từ vị trí vt của xâu S.
Ví dụ: copy(‘CHUNG HO’, 3, 6) → ‘UNG HO’
+ length(s) cho giá trị là độ dài xâu s.
Ví dụ: length(‘Bac Nam sum hop’) → 15.
+ pos(s1, s2) cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2.
Ví dụ: pos(‘a’, ‘Bac Nam’) → 2.
+ upcase(ch) cho chữ cái in hoa ứng với chữ cái trong ch.
Ví dụ: upcase(‘Bac’) → ‘BAC’
3. Một số ví dụ
Ví dụ 1
Chương trình dưới đây nhập họ tên của hai người vào hai biến xâu và đưa ra màn hình xâu
dài hơn nếu bằng nhau thì đưa ra xâu nhập vào sau.
program vd1;
uses crt;
var
a,b:string;
begin
5
clrscr;
write('nhap ho ten thu nhat:'); readln(a);
write('nhap ho ten thu hai :'); readln(b);
if length(a)>length(b) then write(a)
else write(b);
readln;
end.
Ví dụ 4
Viết chương trình nhập vào từ bàn phím và đưa ra màn hình xâu thu được từ nó sau khi loại
bỏ hết các dấu cách.
program vd4;
uses crt;
var a,b:string; i:integer;
begin
clrscr;
write('nhap xau:'); readln(a);
b:='';
for i:=1 to length(a) do
if a[i] ' ' then b:=b+a[i];
write('xau sau khi bo dau cach la ', b);
readln;
end.
III. BÀI TẬP
Câu 1. Chọn khai báo xâu đúng:
A. VAR St:STRING;
B. VAR St:STRING[266];
C. VAR St=STRING[200];
D. VAR St=STRING;
Câu 2. Cho biết giá trị của biến xâu St sau khi thực hiện xong câu lệnh St:= ‘Khoa’+‘Hoc’;
A. St = ‘KhoaHoc’;
B. St = ‘Khoa Hoc’;
C. St = ‘Khoahoc’;
D. St = ‘khoa hoc’;
Câu 3. Phép so sánh xâu nào cho giá trị TRUE
A. ‘Quoc_gia’ > ‘Quoc_Su’
B. ‘Quoc_gia’ > ‘Quoc_su’
C. ‘Quoc_Gia’ > ‘Quoc_Su’
D. ‘Quoc_Gia’ > ‘Quoc_su’
Câu 4. Kết quả của thủ tục Delete(‘AbcdeF’,3,3); là:
A. Lỗi cú pháp
B. ‘AdeF’
C. ‘adef’
D. ‘ADEF’
Câu 5. Cho biến xâu S. Chương trình sau thực hiện công việc gì?
WHILE S[1]= ‘a’ DO delete(S,1,1);
A. Xóa các ký tự ‘a’ ở đầu xâu S
B. Xóa 1 ký tự ‘a’ ở đầu xâu S
C. Xóa các ký tự ‘a’ và ‘A’ ở đầu xâu S D. Xóa các ký tự trắng ở đầu xâu S
IV. HƯỚNG DẪN TỰ HỌC
1. Nhớ cách khai báo biến: VAR tên_biến : STRING[độ dài lớn nhất của xâu];
2. Nhập xuất giá trị cho biến xâu: read/readln(): write/writeln();
3. Tham chiếu đến từng ký tự trong xâu: tên_biến[chỉ_số].
4. 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.
5. Các phép so sánh: =, , >, <, <=, >=: thực hiện việc so sánh hai xâu.
6
BÀI TẬP VÀ THỰC HÀNH 5
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
Làm quen với việc tìm kiếm, thay thế và biến đổi xâu.
2. Về kỹ năng
Rèn luyện kĩ năng sử dụng kiểu dữ liệu có cấu trúc, kĩ năng diễn đạt thuật toán bằng
chương trình sử dụng dữ liệu kiểu xâu.
3. Về thái độ
Rèn luyện tư duy lập trình, tác phong của người lập trình. Tự giác, chủ động trong khi
thực hành.
II. NỘI DUNG
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 hay không. Xâu
đối xứng có tính chất: đọc nó từ phải sang trái cũng thu được kết quả giống như đọc từ trái
sang phải (còn được gọi là xâu palindrome).
a) Hãy chạy thử chương trình sau:
program vd2;
uses crt;
var
i,x:byte;
a,p:string;
begin
clrscr;
write('nhap xau:'); readln(a);
x:=length(a);
p:='';
for i:=x downto 1 do
p:=p+a[i];
if a=p then
write('xau la palindrome')
else
write('xau khong phai la palindrome');
readln;
end.
b) Hãy viết lại chương trình tên, trong đó không dùng biến xâu p (không thực hành)
Bài 2.
Viết chương tì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 Anh trong S (không phân biệt chữ hoa hay chữ thường).
7
program vd2;
uses crt;
var
a:string;
gt:array[0..26] of integer;
i:integer;
begin
clrscr;
write('nhap xau:');
readln(a);
for i:=0 to 25 do
gt[i]:=0;
for i:=1 to length(a) do
begin
gt[ord(upcase(a[i]))-ord('A')]:=gt[ord(upcase(a[i]))-ord('A')]+1;
end;
for i:=0 to 25 do
if gt[i]>0 then
writeln(chr(ord('A')+i),':',gt[i]);
readkey;
end.
Bài 3. (không thực hành)
III. BÀI TẬP
1. Những khai báo nào là đúng?
Type Arrayr = array[1..200] Of integer; Arrayr = array[byte] of real;
Arrayb = array[-100..100] of boolean;
Var a : arrayr;
B : arrayb;
2. Biến a trong khai báo trên chiếm dung lượng bộ nhớ là bao nhiêu?
IV. HƯỚNG DẪN TỰ HỌC
1. Học sinh nắm kỹ các nội dung:
- Cách khai báo biến xâu.
- Cách nhập một xâu từ bàn phím.
- Các phép toán, thủ tục và hàm dùng để xử lý xâu.
- Thủ tục Delete(st,vt,n); Insert(st1,st2,vt);
- Hàm Copy(st,vt,n); Length(st); Pos(st1,st2); UpCase(ch)
2. Hãy viết chương trình nhập vào một xâu bất kỳ (có cả ký tự và ký tự số) và đưa ra màn
hình có bao nhiêu ký tự là số? Ví dụ: S=’08bC156546C3D’ → Dem = 9
Var S:String;
i, Dem:Byte;
Begin
Write(‘Nhap xau ’);Readln(S);
Dem:=0;
For i:=1 To length(S) Do
If (S[i]>=’0’) and (S[i] <=’9’) Then Dem:=Dem+1;
Write(‘Tong so ky tu la so’,Dem);
Readln;
End.
8
ÔN TẬP
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
Củng cố các kiến thức về:
- Các quy tắc kiểu dữ liệu có cấu trúc để thực hiện dữ liệu thực tế.
- Kiểu dữ liệu có cấu trúc được xây dựng từ những kiểu dữ liệu cơ sở theo một số cách
thức tạo kiểu do ngôn ngữ lập trình Pascal quy định.
- Mỗi kiểu dữ liệu có cấu trúc thường hữu ích trong việc giải quyết một số bài tập.
- Trong ngôn ngữ Pascal dùng mô tả kiểu dữ liệu mới với từ khoá Type.
2. Về kỹ năng
Rèn luyện kĩ năng sử dụng kiểu dữ liệu có cấu trúc, kĩ năng diễn đạt thuật toán bằng
chương trình sử dụng dữ liệu kiểu mảng, kiểu xâu.
3. Về thái độ
Rèn luyện tư duy lập trình, tác phong của người lập trình. Tự giác, chủ động trong khi
thực hành.
II. NỘI DUNG
1. Kiểu dữ liệu mảng
Khai báo
Khai báo trực tiếp
Var : array[kiểu chỉ số] of ;
Khai báo gián tiếp
Type = array[kiểu chỉ số] of ;
Var :;
Nhập số phần tử N của mảng A
write(‘Nhap so luong phan tu cua day so, N = ’) ; readln(N);
Nhập các phần tử của mảng A
for i:=1 to N do
begin
write(‘ Phan tu thu ‘ , i , ‘ = ‘);
readln(A[i]);
end;
In mảng B có N phần tử ra màn hình
for i:=1 to N do write(B[i]:4);
2. Kiểu dữ liệu xâu
Khai báo
Var a : string[N]; hoặc Var a : string; (độ dài tối đa 255)
Xử lí xâu
- Phép ghép xâu (+);
- Các phép so sánh như bằng (=), khác (), nhỏ hơn (<), …
- Các hàm và thủ tục khác:
+ delete(st, vt, n)
+ insert(st, s2, vt)
+ copy(S, vt, N
+ length(s)
+ pos(s1, s2).
+ upcase(ch)
III. BÀI TẬP
9
Bài 1. Viết chương trình nhập vào n số nguyên dương rồi tính trung bình cộng và trung bình
nhân của nó.
Bài 2.
Viết chương trình nhập vào một xâu. In ra màn hình xâu đó sau khi đã đổi tất cả chữ in
thường thành in hoa.
IV. HƯỚNG DẪN TỰ HỌC
1. Học sinh nắm kỹ các nội dung:
- Cách khai báo biến mảng, biến xâu.
- Cách nhập một mảng, một xâu từ bàn phím.
- Các phép toán, thủ tục và hàm dùng để xử lý xâu.
- Thủ tục Delete(st,vt,n); Insert(st1,st2,vt);
- Hàm Copy(st,vt,n); Length(st); Pos(st1,st2); UpCase(ch)
2. Hướng dẫn:
Bài 1.
- Khai báo biến n,i kiểu số nguyên. Biến mảng m kiểu số nguyên để chứa dãy số nhập vào.
Các biến tbc,tbn kiểu số thực để chứa kết quả.
- Sử dụng lệnh for tính tổng, tích của n số nguyên dương đó từ đó tính trung bình cộng và
trung bình nhân.
Bài 2. Nhập xâu. Sử dụng hàm dổi chữ thường thành chữ in hoa. In ra màn hình xâu đã đổi.
KIỂM TRA MỘT TIẾT
I. MỤC ĐÍCH, YÊU CẦU
Đánh giá mức độ tiếp thu của học sinh:
1. Về kiến thức
- Các quy tắc kiểu dữ liệu có cấu trúc để thực hiện dữ liệu thực tế.
- Kiểu dữ liệu có cấu trúc được xây dựng từ những kiểu dữ liệu cơ sở theo một số cách
thức tạo kiểu do ngôn ngữ lập trình Pascal quy định.
- Mỗi kiểu dữ liệu có cấu trúc thường hữu ích trong việc giải quyết một số bài tập.
- Trong ngôn ngữ Pascal dùng mô tả kiểu dữ liệu mới với từ khoá Type.
2. Về kỹ năng
Kĩ năng sử dụng kiểu dữ liệu có cấu trúc, kĩ năng diễn đạt thuật toán bằng chương trình
sử dụng dữ liệu kiểu mảng, kiểu xâu.
3. Về thái độ
Nghiêm túc, tự lực cánh sinh.
II. NỘI DUNG
1. Kiểu dữ liệu mảng
2. Kiểu dữ liệu xâu
III. ĐỀ KIỂM TRA
Giáo viên chuẩn bị đề kiểm tra trên giấy:
- Phần trắc nghiệm 7 điểm.
- Phần tự luận 3 điểm.
IV. HƯỚNG DẪN TỰ HỌC
1. Học sinh ôn tập các nội dung trong tiết ôn tập.
2. Viết các chương trình đơn giản về kiểu mảng, kiểu xâu.
10
CHƯƠNG V. TỆP VÀ THAO TÁC VỚI TỆP
§14. KIỂU DỮ LIỆU TỆP - §15. THAO TÁC VỚI TỆP
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
− Biết khái niệm về kiểu dữ liệu tệp.
− Biết khái niệm tệp có cấu trúc và tệp văn bản.
− Biết lệnh khai báo tệp văn bản.
− Biết các bước làm việc với tệp: gán tên cho biến tệp, mở tệp, đọc/ghi tệp, đóng tệp.
− Biết một số hàm và thủ tục chuẩn làm việc với tệp.
2. Về kỹ năng
− Khai báo đúng tệp văn bản.
− Sử dụng được một số hàm và thủ tục chuẩn làm việc với tệp
3. Về thái độ
Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.
II. NỘI DUNG
1. Vai trò của kiểu tệp
Dữ liệu kiểu tệp có những đặc điểm sau:
+ Được lưu trữ lâu dài ở bộ nhớ ngoài (đĩa từ, CD, . . .) và không bị mất khi tắt nguồn điện
vào máy
+ Lượng thông tin lưu trữ trên tệp có thể rất lớn và chỉ phụ thuộc vào dung lượng đĩa.
Khái niệm kiểu dữ liệu xâu
2. Phân loại tệp và thao tác với tệp
(học sinh tự đọc thêm).
§15. Thao tác với tệp
1. Khai báo tệp văn bản
VAR : TEXT;
Ví dụ: Var f : text;
2. Thao tác với tệp
a) Gán tên tệp
ASSIGN(< Tên biến tệp>,);
Trong đó Tên tệp là biến xâu hoặc hằng xâu.
Ví dụ 1. MYFILE := 'DULIEU.DAT';
ASSIGN(F2,MYFILE);
hoặc ASSIGN(F2,'DULIEU.DAT');
Ví dụ 2. MYFILE := 'C:\INP.DAT';
ASSIGN(F3,MYFILE);
b) Mở tệp
Để đọc: RESET();
Để ghi: REWRITE();
Ví dụ 3. TF := 'C:\KQ.DAT';
ASSIGN(F3,TF);
REWRITE(F3);
Ví dụ 4. Để đọc dữ liệu từ tệp DL.INP ta có thể mở tệp bằng:
ASSIGN(F1, 'DL.INP');
RESET(F1);
c). Đọc/ghi tệp
11
Đọc: READ(,);
Ghi: WRITE(, );
Ví dụ 5. Lệnh ghi giá trị biến A vào tệp gắn với biến tệp F3:
WRITE(F3,A);
Ví dụ 6. Lệnh đọc giá trị từ tệp gắn với biến tệp F1 và gán cho biến C: READ(F1,C);
d) Đóng tệp
Sau khi làm việc xong phải đóng tệp bằng câu lệnh:
CLOSE();
Ví dụ 7. CLOSE(F1);
CLOSE(F3);
Một số hàm và thủ tục chuẩn thường dùng trong thao tác tệp
Hàm EOF(): Cho giá trị True nếu con trỏ tệp đang chỉ tới cuối tệp.
Hàm EOFLN(): Cho giá trị True nếu con trỏ tệp đang chỉ tới cuối dòng.
III. BÀI TẬP
Câu hỏi trắc nghiệm (10 câu):
Câu 1. Trong NNLT Pascal, cú pháp để khai báo biến tệp văn bản là:
A. var < tên tệp > : txt;
B. var < tên biến tệp > : txt;
C. var < tên tệp > : text;
D. var < tên biến tệp > : text;
Câu 2. Để có thể thao tác với tệp dữ liệu trên đĩa thông qua biến tệp cho trước thì bước đầu
tiên chúng ta phải làm gì?
A. Gắn tên tệp cho biến tệp
B. Mở tệp để ghi dữ liệu vào tệp
C. Mở tệp để đọc dữ liệu từ tệp D. Đóng tệp.
Câu 3. Trong NNLT Pascal, cú pháp để gắn tên tệp cho biến tệp là:
A. < biến tệp > := < tên tệp >;
B. < tên tệp > := < biến tệp >;
C. assign ( < biến tệp > , < tên tệp > ); D. assign ( < tên tệp > , < biến tệp > );
Câu 4. Trong NNLT Pascal, cú pháp để mở tệp ở chế độ đọc dữ liệu từ tệp là:
A. repeat( < biến tệp >);
B. reset ( < biến tệp >);
C. restart ( < biến tệp >);
D. rewrite ( < biến tệp >);
Câu 5. Cú pháp của thủ tục đọc dữ liệu từ tệp văn bản là:
A. read ( < biến tệp >,< danh sách biến > );
B. readln (< biến tệp >, );
C. readln ( ,< danh sách biến> );
D. Cả đáp án A và B đều đúng.
IV. HƯỚNG DẪN TỰ HỌC
1. Nắm kỹ các nội dung:
- Đặc điểm của kiểu dữ liệu tệp;
- Các thao tác cơ bản khi làm việc với tệp;
- Sơ đồ làm việc với tệp; các thao tác với tệp được mô tả trong Hình16
- Ghi dữ liệu vào tệp; đọc dữ liệu từ tệp.
2. Tập viết chương trình đọc và hiển thị ra màn hình nội dung một tập tin dạng văn bản, với
tên tập tin được nhập từ bàn phím.
12
§16. VÍ DỤ LÀM VIỆC VỚI TỆP
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
Củng cố lại kiến thức đã học về tệp trong chương 5 thông qua ví dụ.
2. Về kỹ năng
Sử dụng được các hàm và thủ tục liên quan để giải quyết các bài tập.
3. Về thái độ
- Thấy được sự cần thiết và tiện lợi của kiểu dữ liệu tệp.
- Có ý thức lưu trữ dữ liệu một cách khoa học.
II. NỘI DUNG
Ví dụ 1.
Một trường trung học phổ thông tổ chức cho giáo viên và học sinh của trường đi cắm trại,
sinh hoạt ngoài trời ở vườn quốc gia Cúc Phương. Để lên lịch đến thăm khu trại các lớp,
thầy hiệu trưởng cần biết khoảng cách từ trại của mình (ở vị trí có tọa độ (0,0) )đến trại của
các giáo viên chủ nhiệm. Mỗi lớp có một khu trại, vị trí trại của mỗi giáo viên chủ nhiệm
đều có tọa độ nguyên (x,y) được ghi trong tệp văn bản TRAI.TXT (như vậy tệp TRAI.TXT
chứa liên tiếp các cặp số nguyên, các số cách nhau bởi dấu cách và không kết thúc bằng kí
tự xuống dòng).
program khoang_cach;
uses crt;
var
d:real;
f:text;
x,y:integer;
begin
clrscr;
assign(f,'TRAI.TXT');
reset(f);
while not eof(f) do
begin
read(f,x,y);
d:=sqrt(x*x+y*y);
writeln('Khoang cach :',d:10:2);
end;
close(f);
readln; end.
III. HƯỚNG DẪN TỰ HỌC
- Ta sử dụng hàm eof để kiểm tra xem đã đọc hết tệp hay chưa (Hàm này giới thiệu ở bài
trước).
- Sau đó lần lượt đọc 2 số nguyên ra rồi tính khoảng cách của điểm (x,y) đến điểm (0,0)
bằng công thức tính khoảng cách:
- Soạn thảo và thực hiện chương tình trong Pascal. Chuẩn bị tập tin có tên TRAI.TXT có
chứa các cặp số (x, y) là tọa độ các trại trong thư mục gốc của Pascal (nếu ở ổ đĩa khác thì
khai báo đường dẫn. Ví dụ ở ổ E:\ thì dòng lệnh assign(f,'TRAI.TXT'); phải sửa lại là
assign(f,'E:\TRAI.TXT');
13
BÀI TẬP
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
− Hiểu rõ hơn về cách khai báo và sử dụng tệp.
− Hình thành kỹ năng lập trình có cấu trúc.
2. Về kỹ năng
Học sinh có kỷ năng thao tác với kiểu dữ liệu tệp.
3. Về thái độ
Xây dựng lòng ham thích giải toán bằng lập trình trên máy tính
II. NỘI DUNG
- Kiểm tra 15 phút (tùy vào thực tế, có thể kiểm tra thực hành hoặc trên giấy).
- Bài toán. Viết chương trình đọc xâu S từ tệp có tên là XAU.TXT. Viết ra màn hình xâu
đảo ngược của xâu S.
III. HƯỚNG DẪN TỰ HỌC
- Viết và soạn thảo, thực hiện chương tình trong Pascal. Bài xâu đảo ngược đã thực hiện ở
tiết học trước.
- Ta sử dụng hàm eof để kiểm tra xem đã đọc hết tệp hay chưa.
- Chuẩn bị tệp có chứa xâu có tên XAU.TXT;
- chương trình tham khảo:
Program
bt1;
Uses
crt;
Var
S:string[100];
i:integer;
f: text;
begin
clrscr;
assign(f,’XAU.TXT);
reset(f);
while not eof(f) do
begin
read(f,S);
for i:= length(s) downto 1 do
write(S[i],’ ‘);
end;
close(f);
readln
end.
14
BÀI TẬP VÀ THỰC HÀNH
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
− Hiểu rõ hơn về cách khai báo và sử dụng tệp.
− Hình thành kỹ năng lập trình có cấu trúc.
2. Về kỹ năng
Học sinh có kỷ năng thao tác với kiểu dữ liệu tệp.
3. Về thái độ
Xây dựng lòng ham thích giải toán bằng lập trình trên máy tính tác phong của người lập
trình. Tự giác, chủ động trong khi thực hành.
II. NỘI DUNG
Bài 1.
Progam Khoang_cach;
Var d: real;
G, f :text;
x, y: integer;
Begin
Assign(f, ‘TRAI.TXT’);
Reset(f);
Assign(g, ‘KETQUA.TXT’);
Rewrite(g);
While not eof(f) do
Begin
Read(f,x,y);
D:= sqrt(x*x+y*y);
Write(‘Khoang cach: ‘,d:10:2);
Write(g,‘Khoang cach: ‘,d:10:2);
End;
Close(f); Close(g);
End.
III. HƯỚNG DẪN TỰ HỌC
- Soạn thảo chương trình trong Pascal;
- Chuẩn bị tệp dữ liệu có tên TRAI.TXT ra tọa độ x,y của trại giáo viên, tính khoảng cách từ
trại giáo viên đến trại hiệu trưởng và ghi khoảng cách vào tệp KETQUA.TXT.
- Chạy chương trình và mở trong thư mục gốc có chứa Pascal (bin) để xem kết quả trong tệp
KETQUA.TXT.
15
CHƯƠNG VI. CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CÓ CẤU TRÚC
§17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
− Biết vai trò của chương trình con trong lập trình.
− Biết sự phân loại chương trình con: Hàm và thủ tục.
2. Về kỹ năng
Rèn luyện kĩ năng tổ chức chương trình con trong lập trình, khả năng diễn đạt một số
thuật toán cơ bản, góp phần phát triển tư duy thuật toán.
3. Về thái độ
Rèn luyện các phẩm chất của người lập trình như tinh thần hợp tác, làm việc theo nhóm,
tuân thủ yêu cầu vì một công việc chung.
II. NỘI DUNG
1. Khái niệm chương trình con
a) Khái niệm
- Chương trình con: Là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực
hiện (được gọi ) từ nhiều vị trí trong chương trình.
- Giả sử ta có bài toán sau đây:
Hãy tính:
Nếu như với những kiến thức chúng ta đã học trước đây. Chúng ta có thể làm như sau: Sử
dụng các biến để lưu kết quả của
Hạn chế: Như vậy ta sẽ phải sử dụng 3 đoạn chương trình tương đồng với nhau. Nếu không
phải tính 3 lũy thừa mà là tính 1000 lũy thừa thì số lượng câu lệnh sẽ rất lớn và dễ gây rối
và nếu ta phát hiện có lỗi sai trong đoạn lệnh này ta sẽ phải sửa lần lượt tất cả các đoạn lệnh
này.
Cách khắc phục: Ta sẽ viết một chương trình con để tính lũy thừa. Với x là giá trị kiểu thực
còn k là thuộc kiểu nguyên.
Var j:integer;
Tich:=1.0;
For j:=1 to k do
Tich:=Tich*x;
Khi cần tính lũy thừa thì ta chỉ cần viết tên gọi chương trình con rồi thay thế (x, k) bằng các
giá trị cụ thể.
Những hàm mà chúng ta thường sử dụng trước đây như: sqrt(), upcase(), delete(),… đều là
những chương trình con.
b) Lợi ích của việc sử dụng chương trình con
- Tránh được việc phải viết lặp đi lặp lại cùng một dãy lệnh nào đó (sách giáo khoa).
- Hộ trợ việc thực hiện các chương trình lớn (sách giáo khoa).
- Phục vụ cho quá trình trừu tượng hóa (sách giáo khoa).
- Mở rộng khả năng ngôn ngữ.
- Thuận thiện cho phát triển, nâng cấp chương trình.
(hai lợi ích cuối các em không cần nghiên cứu thêm)
2. Phân loại và cấu trúc của chương trình con
16
a) Phân loại
Trong nhiều ngôn ngữ lập trình, chương trình con thường gồm hai loại:
- Hàm (function) là chương trình con thực hiện một số thoa tác nào đó và trả về một giá trị
qua tên của nó. Ví dụ hàm toán học hay hàm xử lí xâu:
Sin(x) nhận giá trị thực x và trả về giá trị sin(x);
Sqrt(x) nhận giá trị x và trả về giá trị căn bậc hai của x;
- Thủ tuc (procedure) là chưng trình con thực hiện thoa tác nhất định nhưng không trả về giá
trị nào qua tên của nó. Ví dụ các thủ tục vào /ra chuẩn hay thủ tục xử lý xâu:
Write, writeln, readln, read,…
b) Cấu trúc chương trình con
Chương trình con có cấu trúc tương tự chương trình, nhưng nhất thiết phải có tên và phần
đầu dùng để khai báo tên, nếu là hàm phải khai báo kiểu dữ liệu cho giá trị trả về của hàm:
[]
Phần khai báo
Phần khai báo có thể có khai báo biến cho dữ liệu vào và ra, các hằng và biến dùng trong
chương trình con.
Phần thân
Phần thân của chương trình con là dãy câu lệnh thực hiện để từ những dữ liệu vào ta nhận
được dữ liệu ra hay kết quả mong muốn.
Tham số hình thức:
Các biến được khai báo cho dữ liệu vào/ra được gọi là tham số hình thức của chương trình
con. Các biến được khai báo để dùng riêng trong chương trình con được gọi là biến cục bộ.
Ví dụ, trong chương trình con Luythua(x,k) ở phần 1 thì x, k là các tham số hình thức và j là
biến cục bộ.
Chương trình chính và các chương trình con khác không thể sử dụng được các biến cục bộ
của chương trình con, mọi chương trình con đều sử dụng được các biến của chương trình
chính.
c) Thực hiện chương trình con
Tham số thực sự
Để thực hiện một chương trình con, ta cần phải có lệnh gọi nó tương tự lệnh gọi hàm hay
thủ tục chuẩn, bao gồm tên chương trình con với tham số là các hằng và biến chứa dữ liệu
vào và ra tương ứng với các tham số hình thức đặt trong cặp ngoặc (và ). Các hằng và biến
này gọi là tham số thực sự.
Ví dụ: Sqr(225) thì sqr là tên chương trình con, 225 là tham số thực hiện.
Khi thực hiện chương trình con, các tham số hình thức dùng để nhập dữ liệu vào sẽ nhận giá
trị của tham số thực sự tương ứng, còn các tham số hình thức dùng để lưu trữ dữ liệu ra sẽ
trả giá trị đó cho tham số thực sự tương ứng.
III. HƯỚNG DẪN TỰ HỌC
- Khái niệm chương trình con và các lợi ích của việc sử dụng chương trình con.
- Phân loại và cấu trúc của chương trình con.
- Cấu trúc chương trình con.
- Tham số hình thức, tham số thực sự.
- Biến cụ bộ, biến toàn cục.
17
§18. VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
(1 tiết)
I. MỤC ĐÍCH, YÊU CẦU
Giúp học sinh:
1. Về kiến thức
− Cấu trúc chung của thủ tục trong chương trình.
− Phân biệt được tham số và tham trị.
− Các khái niệm về biến toàn cục và biến cục bộ.
2. Về kỹ năng
− Nhận biết được các thành phần trong đầu của thủ tục.
− Nhận biết được hai loại tham số hình thức trong đầu của hai thủ tục.
− Biết cách khai báo hai loại chương trình con cùng với tham số hình thức của chúng.
− Cách viết lời gọi chương trình con trong thân chương trình chính.
− Phân biệt được sự khác nhau cơ bản giữa hàm và thủ tục.
− Phân biệt và sử dụng đúng biến toàn cục và biến cục bộ.
3. Về thái độ
- Tiếp tục rèn luyện các phẩm chất của người lập trình như tinh thần hợp tác, sẵn sàng
làm việc theo nhóm, tuân thủ theo yêu cầu vì một việc chung.
- Có ý thức lưu trữ dữ liệu một cách khoa học.
II. NỘI DUNG
1. Cách viết và sử dụng thủ tục
a) Cấu trúc của thủ tục
procedure [(danh sách tham số)];
[]
Begin
[]
End;
- Phần đầu thủ tục: Gồm tên dành riêng procedure, tiếp theo là tên thủ tục. Danh sách tham
số có thể có hoặc không có.
- Phần khai báo: Dùng để xác định các hằng, kiểu, biến và cũng có thể xác định các chương
trình con khác được sử dụng trong thủ tục.
- Dãy câu lệnh: được viết giữa cặp tên dành riêng begin và end tạo thành thân của thủ tục.
Ví dụ 1: Viết thủ tục vẽ hình chữ nhật có dạng như sau
*******
*
*
*******
Chiều dài là 7 chiều rộng là 3.
Procedure Ve_Hcn;
Begin
Writeln(‘*******’);
Writeln(‘*
*’);
Writeln(‘*******’);
End;
b) Ví dụ về thủ tục (tham khảo để rõ, không cần học)
2. Cách viết và sử dụng hàm
Điểm khác nhau cơ bản giữa thủ tục và hàm là việc thực hiện luôn trả về giá trị kết quả
thuộc kiểu xác định và giá trị đó được gán cho tên hàm.
Hàm có cấu trúc tương tự như thủ tục, tuy nhiên chỉ khác nhau phần đầu.
Function []:;
18
Trong đó kiểu dữ liệu chỉ có thể là integer, real, char, Boolean, string.
Khác với thủ tục, trong thân hàm phải có lệnh gán giá trị cho tên hàm:
:=;
Ví dụ 1. Viết chương trình thực hiện việc rút gọn một phân số, trong đó có sử dụng hàm tính
ước chung lớn nhất của hai số nguyên.
program rutgon_phanso;
uses crt;
var
TuSo,MauSo,a:integer;
function UCLN(x,y:integer):integer;
var sodu:integer;
begin
while y0 do
begin
sodu:=x mod y;
x:=y;
y:=sodu;
end;
UCLN:=x;
end;
begin
clrscr;
write('Nhap vao tu so va mau so ');
readln(TuSo,MauSo);
a:=UCLN(TuSo,MauSo);
if a>1 then
begin
TuSo:=TuSo div a;
MauSo:=MauSo div a;
end;
writeln(TuSo:5,MauSo:5);
readln;
end.
Sử dụng hàm
- Việc sử dụng hàm tương tự với việc sử dụng các hàm chuẩn, khi viết lệnh gọi gồm tên
hàm và tham số thực sự tương ứng với các tham số hình thức.
- Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng và thậm chí là tham số của
lời gọi hàm, thủ tục khác.
Ví dụ. A:=6*UCLN(TuSo,MauSo)+1;
Ví dụ 2. Viết chương trình tìm giá trị nhỏ nhất trong ba số có sử dụng hàm tìm số nhỏ nhất
trong hai số.
Phân tích:
Do chỉ được sử dụng hàm tìm giá trị nhỏ nhất trong hai số. Nên ta sẽ làm như sau:
Đầu tiên sẽ tìm giá trị nhỏ nhất trong 2 số, sau đó dùng kết quả này làm tham số cho hàm
tìm giá trị nhỏ nhất với giá trị này và số còn lại.
program vdu3;
uses crt;
var a,b,c:real;
function Min(a,b:real):real;
begin
if a