Taid liệu bồi dưỡng giáo viên chuyên môn Tin học THPT

Có thể tạm liệt kê bốn tiêu chí sau đây như bốn phẩm chất cho con người - thành viên năng động của xã hội hiện đại:

 Biết xác định mục tiêu hành động,

 Biết vạch kế hoạch hành động và lôi cuốn, tổ chức mọi người cùng tham gia thực hiện kế hoạch đề ra,

 Có xu thế mời chào mọi người dùng sản phẩm lao động do mình làm ra,

 Quan tâm đến những vấn đề cấp thiết của xã hội.

Những phẩm chất trên gắn bó với nhau, hỗ trợ nhau, góp phần tạo ra con người phát triển toàn diện. Do đặc thù của mình, môn Tin học có thể tạo ra nhiều thuận lợi trong việc hình thành và phát triển các phẩm chất nói trên cho học sinh phổ thông.

 

doc109 trang | Chia sẻ: lethuong715 | Lượt xem: 591 | Lượt tải: 1download
Bạn đang xem trước 20 trang mẫu tài liệu Taid liệu bồi dưỡng giáo viên chuyên môn Tin học THPT, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
-------------------------*)
var a, b, x, y, r: longint;
BEGIN
 writeln(' Chao ban !');
 writeln(' Ban dang lam viec voi Turbo Pascal.');
 writeln(' Tim uoc chung lon nhat cua 2 so nguyen (a,b) ');
 writeln; write(' Nap a va b: '); readln(a,b);
 x := a; y := b;
 while y 0 do
 begin
 r := x mod y;
 x := y;
 y := r;
 end;
 writeln; write(' (', a, ' , ', b, ') = ', x);
 writeln; write(' Tam biet !!'); readln;
END.
6. Ước chung lớn nhất của nhiều số
(* ------------------------------------------------
 Uoc chung lon nhat
 cua nhieu so
 -------------------------------------------------*)
var d, i, x, y, r: integer;
BEGIN
 writeln(' Chao ban !');
 writeln(' Ban dang lam viec voi Turbo Pascal.');
 writeln(' Tim uoc chung lon nhat cua day so ');
 writeln; i := 0; d := 0;
 while true do
 begin
 i := i + 1;
 write(' Nap so thu ', i, ' (nap 0 de ket thuc day): '); readln(y);
 if y = 0 then break;
 x := d;
 while y 0 do
 begin
 r := x mod y;
 x := y;
 y := r;
 end;
 d := x;
 end;
 writeln; writeln(' Ket qua: ',d);
 writeln(' Tam biet !!');
 readln;
END.
--------------------------------------
Phiếu học tập N1
Kiểu nguyên mở rộng
Nhiệm vụ: Xây dựng các mẫu thiết kế kiểu nguyên mở rộng có 19-20 chữ số thập phân. Ứng dụng để giải các bài toán xử lý số nguyên lớn.
Nhiệm vụ 1.
Điền bảng sau
Dung lượng
(số byte) 
Trị nhỏ nhất
Trị lớn nhất
byte
shortint
integer
longint
word
Gợi ý
G1. Mỗi byte gồm 8 bit mã số từ phải qua trái từ bit 0 đến bit 7. 
G2. Nếu sử dụng n bit để biểu diễn đối tượng thì có thể tạo ra 2n đối tượng khác nhau.
G3. Nếu sử dụng n bit để biểu diễn số tự nhiên thì có thể tạo ra 2n số, số nhỏ nhất là 0, số lớn nhất là 2n - 1.
G4. Nếu sử dụng n bit để biểu diễn số nguyên thì có thể tạo ra 2n số, số nhỏ nhất là -2n-1, số lớn nhất là 2n - 1. Vì sao?
Ta có 2n số, trong đó có số 0 nằm giữa trục số, còn lại 2n-1 số cần bố trí cân đối vào hai nửa âm và dương. Vì 2n-1 là số lẻ nên phép chia đôi sẽ lệch 1 đơn vị. Phần dương gồm (2n-1) div 2 = 2n-1 số. Còn lại, phần âm gồm (2n-1) - (2n-1- 1)=2.2n-1-1-2n-1+1= 2n-1 số.
Thí dụ 1. Sử dụng 2 byte để biểu diễn các số tự nhiên ta thu được 216 = 65536 số từ 0 đến 65535. 
Thí dụ 2. Sử dụng 2 byte để biểu diễn các số nguyên ta thu được 216 = 65536 số nhỏ nhất là 215 = -32768, số lớn nhất là 215-1 = 32767.
 từ 0 đến 65535. 
G5. Các em nên thuộc lòng các giá trị 2n với n = 0..16. 
Các em thử viết các giá trị trên
Các em thử đố nhau: một bạn nói số n, bạn kia nói giá trị 2n.
G6. Làm thế nào lập trình tính nhanh số 2n?
Rất dễ. 2n = 1 shl n.
Chú ý, nên khai báo 1 là hằng longint vì với số nhỏ thì khi dịch trái quá nhiều vị trí, bit 1 sẽ tràn ra ngoài. Vậy ta nên viết longin(1) shl n; 
Bài tập 1
1. Tính n! với n đạt đến mức tối đa.
2. Tính số Fibonacci thứ n với n đạt đến mức tối đa.
3. Viết hàm
	IsPrime(p) 
cho giá trị true nếu p là số nguyên tố; ngoài ra, hàm cho giá trị false. 
4. Viết hàm
	NextPrime(x) 
cho ra số nguyên tố sát sau số x.
Thí dụ, 
	NextPrime(-3) = 2; 
	NextPrime(1) = NextPrime(0) = 2; 
	NextPrime(2) = 3; 
Nhiệm vụ 2.
Trong TP, kiểu Extended là kiểu số thực mở rộng có dung lượng 10 byte và có thể biểu diễn các số thực lớn đến 19-20 chữ số thập phân.
Ta sử dụng kiểu này để biểu diễn các số nguyên với các chú ý sau đây:
C1. Khai báo kiểu Bigint (big integer)
type Bigint = extended;
C2. Đặt lên đầu chương trình chỉ thị dịch {$N+} để yêu cầu chương trình dịch sử dụng chế độ đồng xử lý.
C3. Khi thao tác cần chú ý sử dụng hàm
function int(x: real): real; 
để lấy phần nguyên của các giá trị.
C4. Viết các hàm tiện ích phục vụ cho bigint sau đây,
	function fdiv(a,b: Bigint): Bigint;
	Cho thương nguyên x/y.
	function fmod(a,b: Bigint): Bigint;
	Cho dư (nguyên) x/y.
	function fsqrt(x: Bigint): Bigint;
	Cho căn (bậc 2) nguyên của x.
C5. Giá trị Bigint x thường được hiển thị dưới dạng khoa học nên khó đọc. Ta cần cần viết
	 write(x:m:n);
trong đó, m là độ rộng (số kí tự) dành cho miền hiển thị x, n là độ rộng dành cho phần thập phân của x. Nếu m và n bằng 0 thì x được hiển thị vừa đủ. Do đó, tốt nhất là nên viết 
	write(x:0:0);
C6. Không dùng biến Bigint làm biến điềh khiển vòng for. Thí dụ, nếu em đã khai báo
var i: Bigint;
thì câu lệnh sau sẽ sinh lỗi,
for i := 1 to 10 do...
Bài tập 2 Các em giải lại Bài tập 1 để tấy sự khác biệt
1. Tính n! với n đạt đến mức tối đa.
2. Tính số Fibonacci thứ n với n đạt đến mức tối đa.
3. Viết hàm
	IsPrime(p) 
cho giá trị true nếu p là số nguyên tố; ngoài ra, hàm cho giá trị false. 
4. Viết hàm
	NextPrime(x) 
cho ra số nguyên tố sát sau số x.
Thí dụ, 
	NextPrime(-3) = 2; 
	NextPrime(1) = NextPrime(0) = 2; 
	NextPrime(2) = 3; 
Nhận xét sự khác nhau giữa các lời giải bài tập 1 và 2.
Tài liệu tham khảo
1. Hồ Sĩ Đàm (chủ biên), Tin học 11, NXB Giáo dục, 2006.
2. Hồ Sĩ Đàm (chủ biên), Tài liệu giáo khoa chuyên tin, Quyển 1, NXB GD, 2009.
3.  (a)
view the problems (b)
Các em vào trang web (a) sau đó chọn mục (b) trong văn bản của trang web (a). Các em chọn 1-2 bài tùy ý trong phạm vi 10 bài đầu tiên để thử giải. 
------------------------------------
Phiếu học tập D1
Dự án Arithmetic
Nhiệm vụ của em
Thiết kế và cài đặt đơn thể arith cung cấp cho người sử dụng một số thủ tục và hàm tiện ích trong lĩnh vực số học.
 Gợi ý:
Min(a,b), Max(a,b): cho giá trị min, max của 2 số nguyên a và b.
Isqrt(a): cho căn bậc 2 nguyên của số nguyên a.
Ucln(a,b): cho ước chung lớn nhất của 2 số nguyên a và b.
Bcnn(a,b): cho bội chung nhỏ nhất của 2 số nguyên a và b.
...
 Xử lý các mảng nguyên
RandomArray(a,d,c,v): Khởi trị ngẫu nhiên từ phần tử a[d] đến phần tử a[c] (đoạn a[d..c]) của mảng nguyên a theo giới hạn 0..v-1.
PrintAray(a,d,c): Hiển thị đoạn a[d..c] của mảng nguyên a.
BubbleSort(a,n): Sắp tăng mảng nguyên a[1..n] theo thuật toán nổi bọt.
QuickSort(a,d..c): Sắp tăng đoạn a[d..c] của mảng nguyên a theo thuật toán Quick Sort.
Rev(a,d,c): Lật đoạn a[d..c] của mảng nguyên a.
... 
Các nhóm hãy thi đua đặt ra các tiện ích phong phú và hấp dẫn!
TPU là gì?
TPU là tên tắt của Turbo Pascal Unit.
Unit là gì?
Unit là một đơn thể cung cấp một thư viện các hàm và thủ tục tiện ích cho người sử dụng. Thí dụ, CRT là một đơn thể cung cấp các thủ tục vào/ra cho hai thiết bị ngoại vi chủ yếu là bàn phím và màn hình. Graph là một đơn thể khác trợ giúp cho chúng ta làm đồ họa.
Em có thể tự xây dựng một unit được không ?
Em CÓ THỂ và NÊN tự xây dựng các unit để tiện dùng và chia sẽ cho bạn bè cùng dùng.
Các bước tạo lập một file TPU?
B1. Thiết kế
1.1 Đặt tên cho unit
1.2 Em lựa chọn các thủ tục và hàm theo một chủ đề định trước, xác định cú pháp tiện lợi và tổng quát, linh hoạt nhất cho người sử dụng theo mẫu gợi ý sau :
Tên hàm, thủ tục
Chức năng
Vào/ra
Thí dụ
1.3 Em xác định thuật toán thể hiện các thủ tục và hàm đã chọn. 
B2. Cài đặt
Unit được tổ chức gần giống với chương trình.
Dòng đầu tiên là từ khóa unit tiếp đến là tên unit ;
unit ...;
Tiếp đến là phần khai báo giao diện bắt đầu bằng từ khóa 
INTERFACE
Trong phần này em khai báo các hằng, biến, kiểu dữ liệu, thủ tục và hàm sẽ cung cấp cho người sử dụng.
Tiếp đến là phần cài đặt bắt đầu bằng từ khóa 
IMPLEMENTATION
Trong phần này em mô tả chi tiết (lập trình) các thủ tục và hàm.
 Cuối cùng là thân chương trình đặt giữa hai từ khóa
BEGIN
END.
Phần này thường là để trống hoặc nếu cần thì có thể viết các khởi trị ban đầu cần thiết, thí dụ, sinh trước một dãy số nguyên tố và lưu sẵn vào một mảng hoặc một file để dùng sau này.
 B3 Dịch unit trong TP
3.1 Chọn compile/destination rồi bấm enter hoặc phím trái chuột để đoan chắc rằng unit sau khi dịch sẽ được ghi trên đĩa cứng.
3.2 Bấm F9. Nếu không gặp lỗi cú pháp thì đơn thể của em sẽ được dịch và được ghi vào một file có tên trùng với tên unit và phần mở rộng là TPU. 
B4 Thử nghiệm unit
Sau khi thu được unit em cần viết một chương trình demo để kiểm tra lại. Đầu chương trình em cần đặt uses 
Minh họa
Giả sử chúng ta cần cài đặt unit arith với các thủ tục và hàm sau đây:
B1. Thiết kế
 1.1 Tên unit: arith
 1.2
Tên hàm, thủ tục
Min(a,b)
Chức năng
Cho giá trị nhỏ nhất trong 2 số nguyên a, b
Vào/ra
a,b : integer ;
Thí dụ
xác định số nhỏ nhất x trong 3 số nguyên a, b, c ;
x := Min(a,b) ;
x := Min(x,c) ;
Tên hàm, thủ tục
procedure RandomArray(var a; d,c,v: integer);
Chức năng
Khởi trị ngẫu nhiên từ phần tử a[d] đến phần tử a[c] (đoạn a[d..c]) của mảng nguyên a theo giới hạn 0..v-1.
Vào/ra
a: array[] of integer ;
d,c,v : integer;
Thí dụ
Khởi trị ngẫu nhiên 20 phần tử đầu tiên của mảng nguyên a với giới hạn 0..99.
RandomArray(a, 1,20,100);
Tên hàm, thủ tục
PrintArray(a, d, c)
Chức năng
Hiển thị đoạn a[d..c] của mảng nguyên a
Vào/ra
a: array[] of integer ;
d,c : integer;
Thí dụ
Hiển thị 20 phần tử đầu tiên của mảng nguyên a.
PrintArray(a, 1,20) ;
Tên hàm, thủ tục
BubbleSort(a, n)
Chức năng
Sắp tăng mảng nguyên a[1..n] theo thuật toán nổi bọt.
Vào/ra
a: array[] of integer ;
n : integer;
Thí dụ
Sắp tăng 20 phần tử đầu tiên của mảng nguyên a.
BubbleSort(a, 20);
1.3 Thuật toán
	function Min(a,b: longint): longint;
	begin
 	if a < b then Min := a else Min := b;
	end;
	procedure RandomArray(var a; d,c,v: integer);
var b: array[1..1] of integer absolute a;
i: integer;
begin
 randomize;
 for i := d to c do b[i] := random(v);
end;
	procedure PrintArray(var a; d,c: integer);
	var b: array[1..1] of integer absolute a;
 	i: integer;
	begin
 	for i := d to c do write(b[i],' ');
	end;
procedure BubbleSort(var a; n: integer);
 var b: array[1..1] of integer absolute a;
 i,j: integer;
 t: integer;
begin
 {$R-}
 for i := 1 to n-1 do
 for j := n downto i+1 do
 if b[j] < b[j-1] then
 begin
 t := b[j]; b[j] := b[j-1]; b[j-1] := t;
 end;
 {$R+}
end;
Chú ý Đặt chế độ dịch {$R-} để hệ thống không kiểm tra giới hạn truy nhập mảng. Sau đó đặt lại {$R+}. 
 Có cách nào tổ chức thủ tục xử lý mảng nguyên với giới hạn tùy ý trong TP?
Có cách đơn giản sau đây:
Khai b

File đính kèm:

  • docTAI LIEU BOI DUONG GV CHUYEN.doc
Giáo án liên quan