Cộng đồng chia sẻ tri thức Lib24.vn

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.

e51963d11e854da07bc228d513c07753
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: hôm qua lúc 11:12:21 Kiểu file: PDF | Lượt xem: 717 | 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:
Tải xuống

Các tài liệu liên quan


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

Khoa Công Nghệ Thông Tin - Trường CĐ Cơ Điện Hà Nội © 2016 - 2024 | DMCA.com Protection Status