Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT...

55
Tài liệu BỒI DƯỠNG HỌC SINH GIỎI MÔN TIN HỌC (THPT) (Tài liệu lưu hành nội bộ)

Transcript of Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT...

Page 1: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệuBỒI DƯỠNG HỌC SINH GIỎI

MÔN TIN HỌC (THPT)(Tài liệu lưu hành nội bộ)

Page 2: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 1

Phần 1 : LÝ THUYẾTChương I : MỘT SỐ VẤN ĐỀ TOÁN HỌC

I. HỆ ĐẾM :1. Hệ đếm thập phân (Decimal): Gồm 10 chữ số biểu diễn (0,1,2,3,4,5, 6,7,8,9)

Dạng tổng quát : a1a2…an = a1.10n-1+ a2.10n-2+… +an.100

VD : 35710 = 3.102+5.101+7.100

(Lưu ý : Thường khi viết số ở hệ đếm thập phân người ta không ghi cơ số)2. Hệ đếm nhị phân (Binary) : Gồm 2 chữ số biểu diễn (0,1)

a) Dạng tổng quát : a1a2…an = a1.2n-1 + a2.2n-2 + … + an.20

VD : 10102 = 1.23 + 0.22 + 1.21 + 0.20 = 10(Lưu ý : Đây chính là cách quy đổi từ hệ nhị phân sang hệ thập phân)

b) Cách quy đổi từ thập phân sang nhị phân :- B ư ớc 1 : Chia liên tiếp số cần đổi cho 2 đến khi thương bằng 0.- B ư ớc 2 : Viết ngược lại số dư, ta được số mới trong hệ nhị phân.VD : Đổi số 6 từ hệ thập phân sang hệ nhị phân, ta làm như sau :

6 20

3 2

1 1 2

1 0Kết quả : 6 = 1102

3. Hệ đếm thập lục phân (Hexa) : Gồm 16 chữ số biểu diễn (0,1,2,3,4,5, 6,7,8,9,A,B,C,D,E,F)

a) Dạng tổng quát :a1a2…an = a1.16n-1 + a2.16n-2 + … + an.160

VD : 37Dh = 3.162 + 7.161 + 13.160 = 893(Lưu ý : Đây chính là cách quy đổi từ hệ Hexa sang hệ thập phân)

b) Cách quy đổi từ TP sang Hexa :- B ư ớc 1 : Chia liên tiếp số cần đổi cho 16 đến khi thương bằng 0.- B ư ớc 2 : Viết ngược lại số dư, ta được số mới trong hệ Hexa.

(Lưu ý : Nếu số dư lớn hơn 9 ta quy đổi thành A, B, C, D, E, F)c) Cách quy đổi nhanh từ hệ Hexa sang hệ nhị phân và ngược lại : Nhận xét : Số lớn nhất trong hệ Hexa có thể đổi ra 4 chữ số trong hệ nhị

phân (1111=F). Do đó muốn đổi từ hệ Hexa ra hệ nhị phân, ta đổi từng con số Haxa ra nhóm 4 số nhị phân (nếu chưa đủ 4 chữ số nhị phân ta phải thêm các chữ

Ngừng chia

Page 3: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 2

số 0 vào phía trước). Ngược lại, muốn đổi từ hệ nhị phân sang Hexa, ta nhóm từ phải sang trái, mỗi nhóm 4 số rồi quy đổi từng nhóm sang hệ Hexa.

II. TẬP HỢP : 1. Phép hợp (Union) : A B = {x | x A hoặc x B} 2. Phép giao (Intersection) : A B = {x | x A và x B}

(Lưu ý : Khi A B = ta nói rằng A và B là hai tập phân biệt)3. Phép trừ (Difference) : A \ B = {x | x A và x B} 4. Phép nhân (Multiplication) : A B = {(a,b) | a A và b B} 5. Phép phân hoạch (Partition) :

Cho X là một tập hợp (X ).Tập X được chia ra thành các tập con Ai (Ai ), họ các tập con Ai này được

gọi là 1 phân hoạch (hay chia lớp) của tập X khi nó giao nhau từng đôi một bằng rỗng và hợp lại bằng tập lớn X. Tức là : A B = , i j và Ai = X.6. Hiệu đối xứng (Symmetric difference) : A B = (A \ B) (B \ A)

III. SỐ NGUYÊN TỐ :- Khái niệm : Số nguyên tố là số tự nhiên lớn hơn 1, chỉ có 2 ước là 1 và chính nó.- Định lí : Mọi hợp số n đều có ít nhất một ước nguyên tố không vuợt quá .

IV. ƯỚC SỐ CHUNG LỚN NHẤT - BỘI SỐ CHUNG NHỎ NHẤT :- Thuật toán Euclid : Để tìm ƯCLN(a,b), ta có thể làm bằng cách trừ liên tiếp số lớn cho số nhỏ tới khi 2 số bằng nhau (hoặc chia liên tiếp tới khi số dư bằng 0), giá trị cuối cùng của a hoặc b chính là ƯCLN(a,b).- Bổ đề : ƯCLN(a,0) = |a|, a ≠ 0.- UCLN(a,b)·BCNN(a, b)=a·bBCNN(a,b)= UCLN(a,b)=

V. PHƯƠNG TRÌNH - BẤT PHƯƠNG TRÌNH :1. Phương trình bậc nhất : ax + b = 0 (1)

Nếu a = 0 thì (1) b = 0. Khi đó : b ≠ 0 thì phương trình vô nghiệm;b = 0 thì PT có vô số nghiệm.

Nếu a ≠ 0 thì phương trình có nghiệm là x = - 2. Phương trình bậc hai : ax2 + bx + c = 0 (a ≠ 0). Ta tính = b2 – 4ac

Nếu < 0 thì phương trình vô nghiệm.Nếu = 0 thì phương trình có 1 nghiệm x = -

Nếu > 0 thì phương trình có 2 nghiệm phân biệt : x1= ;x2 =

3. Bất phương trình bậc nhất : ax + b > 0 (2)Nếu a = 0 thì (2) b > 0. Khi đó : b ≤ 0 thì bất PT vô nghiệm;

b > 0 thì bất PT có vô số nghiệm.Nếu a > 0 thì bất phương trình có nghiệm là x > -

Nếu a < 0 thì bất phương trình có nghiệm là x < -

Page 4: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 3

4. Hệ phương trình bậc nhất 2 ẩn số (Giải bằng định thức) :

Nếu D = 0 thì : + Nếu Dx ≠ 0 hoặc Dy ≠ 0 thì hệ PT vô nghiệm;

+ Nếu Dx = Dy = 0 thì hệ PT có vô số nghiệm.

Nếu D ≠ 0 thì hệ PT có nghiệm duy nhất : và

VI. SỐ GẦN ĐÚNG – SAI SỐ :- Sai số là hiệu số giữa trị số đúng và trị số gần đúng.- Nếu a là số gần đúng của số đúng thì được gọi là sai số tuyệt đối của số gần đúng a. - Nếu thì hay , ta nói a là số gần đúng của với độ chính xác d, và qui ước viết gọn là 

VII. GIẢI TÍCH TỔ HỢP :1. Hoán vị :- Cho tập hợp A có n phần tử (n >0). Khi sắp xếp n phần tử này theo một thứ tự, ta được 1 hoán vị các phần tử của tập A.- Số các hoán vị của một tập hợp có n phần tử là : Pn = 1.2.3…...(n-1).n2. Chỉnh hợp :- Cho tập hợp A gồm n phần tử. Mỗi cách sắp k phần tử của tập hợp A (1kn) theo một thứ tự nhất định gọi là một chỉnh hợp chập k của n phần tử của tập A.- Số các chỉnh hợp chập k của một tập hợp có n phần tử ( ) là:

3. Tổ hợp :- Cho tập hợp A gồm n phần tử. Mỗi cách sắp k phần tử của tập hợp A (1kn) (không quan tâm thứ tự) gọi là một tổ hợp chập k của n phần tử của tập A.- Số các tổ hợp chập k của một tập hợp có n phần tử ( ) là:                                                  

VIII. HÌNH HỌC :1. Đ ịnh lí Py-ta-go : ABC vuông tại A BC2 = AB2 + AC2.

2. Hệ thức lượng trong vuông : b2=ab’(c2=ac’); h2=b’c’;

Page 5: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 4

Chương II : MỘT SỐ VẤN ĐỀ CƠ BẢN TRONG PASCAL I. GIẢI THUẬT :

1. Khái niệm : - Giải thuật (còn gọi là thuật toán) là một tập hữu hạn các thao tác (các công việc, các phép toán…) có thể đặt tên được và chúng được thực hiện theo một trình tự thích hợp đối với một số đối tượng nào đó để đạt được điều mong muốn.2. Biểu diễn giải thuật : Thông thường, người ta sử dụng một trong 4 cách sau để biểu diễn giải thuật :- Liệt kê : Là hình thức liệt kê từng bước bằng ngôn ngữ tự nhiên.- Lưu đồ : Là hình thức biểu diễn giải thuật dưới dạng sơ đồ.- Dùng ngôn ngữ lập trình.- Dùng ngôn ngữ mã giả.

II. CÁC PHÉP TOÁN CƠ BẢN - LỆNH GÁN :1. Các phép tính : + ; - ; * ; / (chia cho thương là số thực); DIV (chia lấy phần

nguyên); MOD (Chia lấy phần dư).2. Các phép so sánh : > ; < ; = ; <> ; >= ; <=3. Các phép Logic : AND (và); OR (hoặc); XOR (hoặc triệt tiêu); NOT (phủ định)

A B A and B A or B A xor B not ATrue True True True False FalseTrue False False True True FalseFalse True False True True TrueFalse False False False False True

4. Phép gán (Lệnh gán) : V := E; {V là 1 biến, E là biểu thức. VD : X := -b/a; }III. CÁC KHAI BÁO : (Thường theo thứ tự như sau)

1. Khai báo tên chương trình : PROGRAM <Tên chương trình>; 2. Khai báo sử dụng đơn vị chương trình : USES <DS đơn vị chương trình>;3. Khai báo nhãn : LABEL <Tên nhãn>;4. Khai báo hằng : CONST <tên hằng> = <Giá trị>; VD : Const Pi=3.14;5. Khai báo kiểu dữ liệu mới : TYPE <Tên kiểu DL mới>=Định nghĩa kiểu;6. Khai báo biến : VAR <DS biến 1> : <Kiểu DL 1>; <DS biến 2> : <Kiểu DL 2>;7. Khai báo thủ tục (một dạng chương trình con) :

PROCEDURE <Tên thủ tục> (Các tham số nếu cần);8. Khai báo hàm (một dạng chương trình con) :

FUNCTION <Tên hàm> (Các tham số nếu cần) : <Kiểu DL của hàm>;IV. CÁC KIỂU DỮ LIỆU ĐƠN GIẢN :

Integer, Real, Char, String, Boolean, String, String [k], đoạn con, liệt kê...

Page 6: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 5

Mở rộng kiểu số nguyên : Từ khai báo Phạm vi biểu diễn Kích thước (Byte)

BYTE 0 .. 255 1SHORTINT -128 .. +128 1INTEGER -32768 .. 32767 2

WORD 0 .. 65535 2LONGINT -2147483648 .. 2147483647 4

Mở rộng kiểu số thực : Từ khai báo Phạm vi biểu diễn Chữ số có nghĩa Kích thước (Byte)

REAL 2.9E-39 .. 1.7E+38 11-12 6SINGLE 1.5E- 45 .. 3.4E+38 7-8 4DOUBLE 5.0E-324 .. 1.7E+308 15-16 8

EXTENDED 3.4E- 4951 .. 1.1E+4932 19-20 10(Thông thường chỉ dùng kiểu Real. Muốn sử dụng các kiểu thực khác thì phải dùng hướng dẫn dịch {N+} ở đầu chương trình)

V. CÁC THỦ TỤC CƠ BẢN CỦA TP :1. Thủ tục nhập : READ

- Read (DS biến); hoặc Readln (DS biến); {Nhập vào biến giá trị từ bàn phím}- Read (F, DS biến); hoặc Readln (F, DS biến); {Đọc từ tệp F vào DS biến}- Readln; {Chờ nhấn phím Enter} Thủ tục nhập đặc biệt: Readkey; {Cho kí tự khi gõ phím mà không cần nhấn Enter}

Hàm KeyPressed cho giá trị True nếu bàn phím có kí tự gõ, ngược lại có giá trị False.2. Thủ tục xuất : WRITE

- Write (DS dữ liệu xuất); hoặc Writeln (DS dữ liệu xuất); {Xuất ra màn hình}- Write (n:d); hoặc Writeln (n:d); {Dành d vị trí để xuất biến nguyên}- Write (x:d:d1); hoặc Writeln (x:d:d1);

{Dành d vị trí để xuất biến thực với d1 kí số thập phân}- Write (F, DSDL xuất); hoặc Writeln (F, DSDL xuất);{Ghi dữ liệu vào tệp F}- Write (LST, DSDL xuất); hoặc Writeln (LST, DSDL xuất);{Xuất ra máy in}- Writeln; {Xuống dòng}- Write(#7); hoặc Write(Chr(7)); {Phát ra một tiếng chuông ở loa của máy}3. Các thủ tục điều khiển màn hình :

ClrScr; {Xóa mành hình}ClrEol; {Xóa từ vị trí con trỏ tới cuốn dòng}DelLine; {Xóa toàn bộ dòng chứa con trỏ, sau đó dồn các dòng dưới lên}InsLine; {Xen một dòng trắng vào màn hình từ vị trí con trỏ}Gotoxy (Cột, dòng); {Chuyển tới tọa độ cột, dòng}Hàm WhreX cho giá trị cột hiện thời. Hàm WhreY cho giá trị dòng hiện thời.Textbackground (color) hoặc Textbackground (0 tới 15); {định màu nền}TextColor (color) hoặc TextColor (số từ 0 tới 15); {định màu chữ}

4. Một số thủ tục khác :Goto Nhãn; {Nhảy vô điều kiện tới Nhãn trong chương trình}Exit; {Ngừng thủ tục (thoát khỏi thủ tục)}

Page 7: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 6

Halt; {Ngừng chương trình}VI. MỘT SỐ CẤU TRÚC ĐIỀU KHIỂN :

1. Câu lệnh điều kiện IF : Dạng 1 : IF <Điều kiện> THEN <Câu lệnh>; Dạng 2 : IF <Điều kiện> THEN <Câu lệnh 1> ELSE <Câu lệnh 2>;

(Lưu ý : Trước ELSE của lệnh IF không được viết dấu chấm phẩy)2. Câu lệnh lựa chọn CASE :

Dạng 1 Dạng 2CASE <Biểu thức> OF CASE <Biểu thức> OF<Giá trị 1> : <Câu lệnh 1>; <Giá trị 1> : <Câu lệnh 1>;<Giá trị 2> : <Câu lệnh 2>; <Giá trị 2> : <Câu lệnh 2>;. . . . . . . . . . . . . . . . . . . . . . . . <Giá trị n> : <Câu lệnh n>; <Giá trị n> : <Câu lệnh n>;END; ELSE <Câu lệnh n+1>;

END;(Lưu ý : CASE kết thúc bằng END; Trước ELSE của CASE được chấm phẩy )

3. Điều khiển lặp FOR…TO/ FOR…DOWNTO : Dạng 1 : FOR <Biến đếm> := <Trị đầu> TO <Trị cuối> DO <Câu lệnh>; Dạng 2 : FOR <Biến đếm> := <Trị đầu> DOWNTO <Trị cuối> DO <Câu lệnh>;

4. Điều khiển lặp REPEAT…UNTIL : Ngừng lặp khi <Điều kiện> ĐÚNG.REPEAT <Câu lệnh 1>; <Câu lệnh 2>; <Câu lệnh 3>;

… <Câu lệnh n>;UNTIL <Điều kiện>;

5. Điều khiển lặp WHILE…DO : Ngừng lặp khi <Điều kiện> SAI.WHILE Điều kiện DO Câu lệnh;

(Sau DO chỉ có 1 câu lệnh, do đó muốn lặp nhiều phát biểu ta phải dùng phát biểu ghép)

6. Lệnh ghép : Ở những chỗ ta chỉ được sử dụng 1 câu lệnh, nhưng ta lại muốn sử dụng nhiều hơn 1 câu lệnh thì phải sử dụng lệnh ghép. Lệnh ghép có dạng :BEGIN <Câu lệnh 1>; <Câu lệnh 2>; <Câu lệnh 3>;

… <Câu lệnh n>;END;

VII. CÁCH ĐẶT TÊN TRONG PASCAL - TỪ KHÓA:1. Cách đặt tên trong Pascal (chương trình, biến, hằng, nhãn, thủ tục, hàm… ) :

Page 8: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 7

Tên có thể được đặt bằng một dãy bao gồm chữ cái, chữ số, dấu “_” (gạch nối dưới) nhưng bắt đầu của tên bắt buộc phải là một chữ cái. Tên không được có khoảng trắng và tên không được trùng với từ khóa.2. Từ khóa trong Pascal (Phải học thuộc lòng) :

And, Array, Begin, Case, Const, Div, Do, Downto, Else, End, File, For, Function, Goto, If, In, Label, Mod, Nil, Not, Of, Or, Packed, Procedure, Program, Record, Repeat, Set, String, Then, To, Type, Until, Uses, Var, While, With.

VIII. MỘT SỐ THỦ TỤC VÀ HÀM :1. Hàm xử lý số :ABS (x) : .SQR (x) : x2.SQRT (x) : .SUCC (n) : n+1.PRED (n) : n-1.TRUNC (x) : Lấy phần nguyên của x (bỏ phần thập phân).ROUND (x) : Làm tròn x.COS (x) : Cos x.SIN (x) : Sin x.ARTAN (x) : Arctg x.EXP (b*LN(A)) : Ab.INC(i) : i:=i+1;DEC(i) : i:=i-1;ORD (ch) : Cho thứ tự của kí tự ch trong bảng ASCII (VD : ORD (‘A’)=65, ORD (‘a’)=97).CHR (i) : Cho kí tự có thứ tự là i trong bảng ASCII (VD : CHR (65) = ‘A’).ODD (n) : Cho giá trị True nếu n là số lẻ.SOUND(F) : tạo âm thanh tần số F tính theo Hz cho đến khi gặp lệnh OSOUND.NOSOUND; : Ngừng thực hiện hàm SOUND.DELAY (T) : tạo thời gian trể T tính theo đơn vị Mili giây (T là số nguyên).READKEY; : Nhận một kí tự từ bàn phím không đưa ra màn hình và không cần

gõ phím Enter. (VD : Ch := Readkey;)WHEREX : Cho giá trị cột hiện thời của con trỏ.WHEREY : Cho giá trị dòng hiện thời của con trỏ.LENGTH (Chuỗi) : Cho độ dài thật của chuỗi.<Chuỗi>[k] : cho kí tự thứ k trong chuỗi. Đặc biệt : Chuỗi [0]=Length(chuỗi). VD : For i:=1 to length(st) do

If ord(st[i]) >= 97 then st[i] := chr(ord(st)-32); {Duyệt chuỗi st để đổi chuỗi st bất kỳ thành chuỗi gồm toàn chữ in hoa}LENGTH (S,P,N) : xóa trong chuỗi S đi N ký tự kể từ vị trí P.POS (S1,S) : Tìm kiếm chuỗi S1 trong chuỗi S. (Hàm cho giá trị là vị trí đầu tiên)

Page 9: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 8

Chương III : CHƯƠNG TRÌNH CON : THỦ TỤC VÀ HÀM I. THỦ TỤC (PROCEDURE) VÀ HÀM (FUNCTION) :

1. Xét ví dụ sau đây : Chương trình tính tổ hợp chập k của n phần tử.

Program Tinh_To_Hop_Chap_K_Cua_N_Phan_Tu;Uses Crt;Var n,k: Byte; Tohop : Real;

Procedure Nhap; {Thu tuc nhap du lieu}Begin Clrscr; Write ('Nhap n : '); Readln (n); Write ('Nhap k : '); Readln (k);End;

Function GT (x : Byte) : Longint; {Ham tinh giai thua}Var i : Byte; k : Longint;Begin i:=0; k:=1; While i<x do Begin i:=i+1; k:=k*i; End; GT:=k;End;

Begin {Main Program}Nhap; {Goi thu tuc nhap}Tohop := GT(n)/(GT(k)*GT(n-k)); {Dung ham GT(n) nhieu lan de tinh to hop chap k cua n phan tu}Write('To hop chap ',k,' cua ',n,' phan tu la : ',Tohop:0:0);Readln;End. {Main Program}

- Ta nhận thấy trong chương trình có 2 chương trình con là : Thủ tục Nhap và hàm GT. Các chương trình con này có thể gọi nhiều lần trong chương trình chính. Nếu không có hàm GT thì chương trình chính sẽ rất rườm rà vì phải viết 3 lần đoạn chương trình tính giai thừa rồi mới gán giá trị cho biến Tohop.2. Cách viết thủ tục và hàm :

Page 10: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ..............................Trang 9

- Cách viết các chương trình con cũng gần giống như chương trình chính, cũng có thể có các phần khai báo (biến, hằng,…), thân thủ tục cũng trong cặp từ khóa Begin … End nhưng kết thúc bằng dấu chấm phẩy.3. Sự khác nhau giữa thủ tục và hàm :

- Sự khác nhau cơ bản giũa thủ tục và hàm là ở chỗ : Hàm cho ta kết quả là một giá trị thông qua tên của nó, còn thủ tục thì chỉ thực hiện một khối thao tác mà không cho kết quả qua tên thủ tục.

II. TRUYỀN THAM SỐ CHO CHƯƠNG TRÌNH CON :

III. BIẾN TOÀN CỤC VÀ BIẾN ĐỊA PHƯƠNG :

IV. TÍNH ĐỆ QUY CỦA CHƯƠNG TRÌNH CON :

Page 11: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 10

Chương IV : KIỂU DỮ LIỆU CÓ CẤU TRÚC I. KIỂU MẢNG :

1. Khai báo : - Cách 1 : TYPE <Kiểu mảng> = ARRAY [Chỉ số đầu .. Chỉ số cuối] OF <Kiểu phần tử>;

VAR <Biến mảng> : <Kiểu mảng>;VD : TYPE mangnguyen = ARRAY [1..10] OF Integer;

VAR A,B,C : mangnguyen;- Cách 2 : VAR <Biến mảng> : ARRAY [Kiểu chỉ dẫn] OF <Kiểu phần tử>;

VD : VAR A,B,C : ARRAY [1..10] OF Integer;2. Truy nhập vào phần tử mảng :

<Tên mảng> [Chỉ số] {VD: Viết A[5] là truy nhập vào phần tử thứ 5 của mảng A;3. Duyệt mảng :

Dùng lệnh FOR duyệt qua từng phần tử của mảng để thao tác với phần tử.VD : For i:=1 to 10 do {Nhập dữ liệu vào mảng A}

BeginWriteln (‘A[‘,i,’]=’);Readln (A[i]);

End; For i:=1 to 10 do Writeln {‘A[‘,i,’]=’,A[i]); {Viết mảng A ra màn hình} For i:=1 to 10 do C[i]:=A[i]+B[i]; {Gán giá trị cho mảng C}

4. Mảng nhiều chiều (còn gọi là ma trận) : - Mảng 2 chiều : Var X,Y,Z : Array [1..3,1..5] Of Integer; {Mảng X,Y,Z gồm 3 hàng, 5 cột}- Duyệt để truy nhập vào phần tử mảng 2 chiều : Dùng 2 vòng FOR lồng nhau.

For i:=1 to 3 do For j:=1 to 5 do

Z[I,J]:=X[I,J]+Y[I,J];- Căn cứ vào cách khai báo và sử dụng mảng 1 chiều, mảng 2 chiếu, chúng ta có thể xây dựng mảng n chiều.

II. KIỂU TẬP HỢP :1. Khai báo :

III. KIỂU BẢN GHI :1. Khai báo :

IV. KIỂU TỆP (FILE) :1. Khai báo :

Page 12: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 11

Chương V : MỘT SỐ GIẢI THUẬT THÔNG DỤNG I. GIẢI THUẬT XỬ LÝ SỐ :

1. Kiểm tra số nguyên tố : Function SNT (x: Word) : Boolean; {Ham kiem tra so nguyen to theo dinh ly}Var p: Integer; f : Boolean;Begin

If x < 2 then Begin SNT := False; Exit; End;

p:=2; f:= True; While (p <= Sqrt(x)) and f do If x mod p = 0 then f := false Else p := p+1; If f then SNT:=True Else SNT:=False;End;

2. Sàng số nguyên tố : Procedure SSNT (n: Byte); {Thu tuc sang so nguyen to}Var TapNT,Sang : Set of Byte; p,i : Byte;Begin TapNT := []; {Tap chua so nguyen to. Khoi tao bang rong} Sang := [2..n]; {Cai sang} p := 2; Repeat While not(p in Sang) do p := p + 1; TapNT := TapNT + [p]; i := p; While i <= n do Begin Sang := Sang -[i]; i := i + p; End; Until Sang = []; For i:=1 to n do If i in TapNT then Write(i:5);End;

3. Tìm ƯCLN(a,b) :

Page 13: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 12

Function UCLN (a,b : Integer) : Integer; {Thu tuc tim UCLN}Begin

If (a=0) and (b<>0) then Begin UCLN:=b; Exit; End; If (a<>0) and (b=0) then Begin UCLN:=a; Exit; End;

While a<>b do If a>b then a:=a-b Else b:=b-a; UCLN:=a;End;

Function UCLN (a,b : Integer) : Integer; {Tim UCLN bang chia lay phan du}Var r : Integer;Begin While b<>0 do Begin r:=a mod b; a:=b; b:=r; End; UCLN:=a;End;

Function UCLN (a,b : Integer) : Integer; {Tim UCLN bang de quy}Begin If b=0 then UCLN:=a Else UCLN:=UCLN(b,a mod b);End;

Lưu ý : Tính BCNN(a,b) theo công thức : BCNN(a,b) = a*b div UCLN(a,b))Function UCLN (a,b : Integer) : Integer; {Thu tuc tim UCLN bang de quy}Begin

If b=0 then UCLN:=a

Else UCLN:=UCLN(b,a mod b);End;

4. Đổi từ cơ số thập phân sang cơ số khác : …………

Page 14: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 13

5. Đổi từ cơ số khác sang cơ thập phân : …………

6. Tính lũy thừa Xn :…………

7. Tính giai thừa :…………

II. GIẢI THUẬT XỬ LÝ CHUỖI :1. Đổi chuỗi kí tự thường sang kí tự in hoa :

………… 2. Đổi chuỗi kí tự in hoa sang kí tự thường :

………… 3. Cắt các khoảng trắng bên trái chuỗi :

………… 4. Cắt các khoảng trắng bên phải chuỗi :

………… 5. Cắt các khoảng trắng bên phải chuỗi :

………… 6. Cắt các khoảng trắng ở cả hai bên chuỗi :

………… 7. Trích một số kí tự từ bên trái chuỗi :

………… 8. Trích một số kí tự từ bên phải chuỗi :

………… 9. Đổi chuỗi thành dạng tên riêng:

………… III. GIẢI THUẬT XỬ LÝ TRÊN DÃY :

1. Tìm phần tử lớn nhất của 1 dãy :…………

2. Sắp xếp :…………

3. Tìm kiếm :…………

IV. MỘT SỐ PHƯƠNG PHÁP KHÁC :1. Phương pháp Thử sai :

Phương pháp thử sai là phương pháp từng bước xem tính chất của đối tượng, nếu đúng thì lưu lại và tiếp tục, nếu sai thì bỏ qua và lùi lại một bước trước đó.

Ví dụ : Lập chương trình xây dựng một dãy gồm N chữ số (N là số nguyên nhập từ bàn phím) từ 3 chữ số cho trước 1, 2, 3 sao cho không có hai dãy con chữ

Page 15: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 14

số liên tiếp nào giống nhau. Chẳng hạn, với N=10, ta có dãy 1213123132 là chấp nhận được, còn dãy 1213 121312 là không chấp nhận được; với N=20, ta có dãy 12131231321231213123 là chấp nhận được, còn dãy 121312313 12131231312 là không chấp nhận được.

Để giải quyết bài toán này, ta dùng một biến chuỗi S lưu trữ dãy đang xây dựng. Ta từng bước kiểm tra xem trong chuỗi S có 2 chuỗi con liên tiếp nào giống nhau hay không. Giả sử độ dài chuỗi S (đến thời điểm hiện tại đang kiểm tra) là m=Length(S) thì 2 chuỗi con liên tiếp cần kiểm tra có độ dài không vượt quá L=m div 2. Hàm Copy :

Cú pháp : Copy (S : String, P : Integer, N : Integer)Ý nghĩa : Hàm cho giá trị là xâu ký tự con có N ký tự được lấy ra từ xâu

ký tự S bắt đầu từ vị trí thứ P.Ta tăng L từ 1 đến m div 2 để tách các chuỗi con có 1, 2, 3, …, L ký tự từ

chuỗi S và so sánh bằng biểu thức :Copy(S,m-2*L+1,L)<>Copy(S,m-L+1,L)

Nếu chuỗi S tốt (Good) thì ta cho kéo đỗ dài chuỗi S bằng thủ tục Extend, nếu chuỗi S là không tốt (có 2 chuỗi con liên tiếp giống nhau) thì ta thay đổi chuỗi S bằng thủ tục change. Chương trình hoàn chỉnh như sau :

Program Taobangkyhieu;Uses Crt;Var S:String; N:Integer; Good:Boolean;Procedure Extend; Begin S:=S+'1'; End;Procedure Change; Begin While S[Length(S)]='3' do S:= Copy(S,1,Length(S)-1); S[Length(S)]:= Succ(S[Length(S)]); End;Procedure Check; Var L,m:Integer; Begin Good:=True; L:=0; m:=Length(S); While Good and (L < m div 2) do Begin L:=L+1; Good:= Good and (Copy(S,m-2*L+1,L)<>Copy(S,m-L+1,L)); End; End;

Page 16: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 15

Begin {Main program} Clrscr; Repeat Write('Nhap N : '); Readln(N); Until N>1; S:='1'; Good:=True; Repeat If Good then Extend Else Change; Check; Until (Good and (Length(S)=N)) or (S=''); If Good then Writeln('S=',S) else Writeln('Vo nghiem'); Readln;End.

2. Phương pháp Vét cạn :Phương pháp vét cạn là phương pháp duyệt qua tất cả mọi trường hợp

có thể xảy ra và chọn lựa xem trường hợp đang xét có thỏa mãn yêu cầu của đề bài hay không.

Ví dụ : Lập chương trình tìm tất cả các số có 3 chữ số abc sao cho tổng các lập phương của các chử số thì bằng chính số đó. Có nghĩa là : abc = a3+b3+c3.

Trong trường hợp này, ta sẽ cho máy tính quét hết các khả năng các số có 3 chữ số và thử. Đó chính là “Vét cạn”.

Cách 1 : ta dùng 3 vòng lặpProgram Vetcan1;Uses Crt;Var a,b,c:Integer;Begin Clrscr; For a:=1 to 9 do For b:=0 to 9 do For c:=0 to 9 do If a*a*a+b*b*b+c*c*c = 100*a+10*b+c then Writeln(a,b,c); Readln;End.Cách 2 : ta dùng 1 vòng lặpProgram Vetcan2;Uses Crt;Var a,b,c,i:Integer;Begin Clrscr; For i:=100 to 999 do Begin a:= i div 100; b:= (i div 10) mod 10; c:= i mod 10; If a*a*a+b*b*b+c*c*c = 100*a+10*b+c then

Page 17: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 16

Writeln(a,b,c); End; Readln;End.

BÀI TẬPBài 1 : Lập chương trình tìm tất cả các cách thay thế các dấu chấm hỏi (?)

bởi các dấu phép tính +, -, *, / trong biểu thức dưới dây :(((((a1 ? a2) ? a3) ? a4) ? a5) ? a6) = a7

Trong đó a1, a2, a3, a4, a5, a6, a7 là số thực nhập từ bàn phím.Bài 2 : Lập chương trình tìm cách điền 9 chữ số khác nhau 1, 2, 3, 4, 5, 6,

7, 8, 9 vào bảng vuông 3x3 sao cho a’b’c’=2a”b”c”=3abc (như hình vẽ dưới).a b ca’ b’ c’a” b” c”

V. KỸ THUẬT DUYỆT ĐỆ QUY QUAY LUI (BACKTRACKING) :Kỹ thuật quay lui (Backtracking) như tên gọi của nó, là một quá trình phân

tích đi xuống. Tại mỗi bước phân tích chúng ta chưa giải quyết được vấn đề do còn thiếu cứ liệu nên cứ phải phân tích cho tới các điểm dừng, nơi chúng ta xác định được lời giải của chúng hoặc là xác định được là không thể (hoặc không nên) tiếp tục theo hướng này. Từ các điểm dừng này chúng ta quay ngược trở lại theo con đường mà chúng ta đã đi qua để giải quyết các vấn đề còn tồn đọng và cuối cùng ta sẽ giải quyết được vấn đề ban đầu.

Người ta thường sử dụng 3 kỹ thuật quay lui: “vét cạn” là kỹ thuật phải đi tới tất cả các điểm dừng rồi mới quay lui. “Cắt tỉa Alpha-Beta” và “Nhánh-Cận” là hai kỹ thuật cho phép chúng ta không cần thiết phải đi tới tất cả các điểm dừng, mà chỉ cần đi đến một số điểm nào đó và dựa vào một số suy luận để có thể quay lui sớm.

Về mặt lý luận, chúng ta có thể phân tích kỹ thuật Quay lui như sau :Giả thiết một cấu hình cần tìm được mô tả bởi một bộ phận gồm n thành

phần a1, a2,... an. Giả sử tìm được i - 1 thành phần a1, a2, ai-1, ta tìm thành phần thứ i bằng cách duyệt tất cả các khả năng có thể của ai. Với mỗi khả năng j kiểm tra xem nó có chấp nhận được không. Xảy rahai trường hợp :

Nhận được thì xác định ai theo j và kiểm tra xem i = n chưa, nếu i = n thì ta ghi nhận một cấu hình, còn nếu i < ta gọi tiến hành xác định ai+1.

Nếu thử tất cả các khả năng mà không có khả năng nào chấp nhận được thì quay lại bước trước xác định lại ai-1

Nội dung của thuật toán này rất phù hợp với việc gọi đệ quy. Ta có thủ tục đệ quy sau đây:Procedure Try(i: Integer);Begin  for {mọi giá trị có thể gán cho xi} do    begin      <Thử cho xi := V>;      if (xi là phần tử cuối cùng trong cấu hình) then

Page 18: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 17

        <Thông báo cấu hình tìm được>      Else        Begin          <Ghi nhận việc cho xi nhận giá trị V (Nếu cần)>;          Try(i + 1); {Gọi đệ qui để chọn tiếp xi + 1}          <Nếu cần, bỏ ghi nhận việc thử xi := V, để thử giá trị khác>;       end;    end;end;

Ví dụ : chương trình xếp n quân hậu trên bàn cờ có n*n ô sao cho không quân nào ăn được quân nào. Chẳng hạn, với bàn cờ 8x8=64 ô, ta có một trong 92 cách xếp như sau :

Giả sử bàn cờ 4x4, ta làm như sau :

Page 19: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 18

Giải: Ta xếp n con hậu trên n dòng, theo nguyên lý nhân ta có nn cách sắp. Để làm điều đó ta dùng thủ tục đệ quy mô tả ở trên để giải. Ta đánh ghi số cột và dòng của bàn cờ từ 1 đến n, mỗi cách sắp xếp ứng với 1 bộ gồm a1,a2,.....,an với ai

= j (j=1,2,...,n) có nghĩa là con hậu thứ i đặt vào cột j. Giả sử ta chọn được i-1 con hậu bằng cách duyệt tất cả các khả năng của nó.

Quan trọng nhất là ta tìm điều kiện chấp nhận j, một con hậu đứng ở một ô trong bàn cờ nó có nhiều nhất bốn hướng đi(đường dọc, đường ngang và hai đường chéo).

Vậy điều kiện chấp nhận thứ i thoả mãn không nằm trên đường đi của tất cả i-1 con hậu đã xếp. Bởi vì n con hậu xếp ở hàng nên đường đi ngang của chúng là không chiến nhau, do đó khi chọn con hậu thư i chỉ cần kiểm tra xem trên 2 đường chéo và đường dọc của chúng có chiếu vào những con hậu đã xếp không? Để kiểm tra điều này mỗi đường ta dùng một biến trạng thái.

* Đường dọc kiểm soát bằng biến b[j],(j=1,2,...,n).* Một đường chéo kiểm soát bằng biến c[i+j],i+j={2,....,2n}.* Còn đường chéo kia kiểm soát bằng biến d[i-j],i-j={1-n,....,n-1}.Các biến trạng thái này khởi gán giá trị True trong thủ tục Init. Như vậy

con hậu thứ i được chấp nhận xếp vào cột j nếu nó thoả mãn cả ba biến b[j],c[i+j],d[i-j] đều có giá trị true. Các biến này gán giá trị False khi xếp xong con hậu thứ i, và trả lại giá trị true sau khi gọi Result hay Try(i+1). Ta có chương trình Pascal sau :Program Xep8hau;Uses Crt;Const Max=15;Var x : Array [1..Max] of Integer; a : Array [1..Max] of Boolean; b : Array [1..Max*2] of Boolean; c : Array [-Max..Max] of Boolean; n,i,dem : Integer;

Procedure Print;Var j : Integer;Begin Dem:=Dem+1; Write(dem,')'); For j:= 1 to n do Write(x[j]:3); Writeln;End;

Procedure Try (i : Integer);Var j: Integer;Begin If i > n then

Page 20: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 19

Print Else For j:=1 to n do If Not(a[j]) and Not(b[i+j]) and Not(c[i-j]) then Begin x[i]:=j; a[j]:=True; b[i+j]:=True; c[i-j]:=True; Try(i+1); a[j]:=False; b[i+j]:=False; c[i-j]:=False; End;End;

Procedure Init;Var j : Integer;Begin Fillchar (a,sizeof(a),False); Fillchar (b,sizeof(b),False); Fillchar (c,sizeof(c),False);End;

Begin {Main Program} Clrscr; Repeat Write('Nhap n (n<=',Max,') : '); Readln(n); Until n<=Max; Dem:=0; Writeln('Cac cach xep :'); Init; Try(1); Readln;End. {Main Program}

Ta có thể dùng mảng 2 chiều để nhớ trạng thái bàn cờ, và cải tiến chương trình như sau :Program Xephau;Uses Crt;Label Xettiep;Const Max = 8;Var Songhiem : Integer; Banco : Array [1..Max,1..Max] of Boolean;

Page 21: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 20

Daxet : Array [1..Max] of Integer; n,i,j,h,c : Integer; Hang, Dangxet : Integer;{****************************************}Procedure HienKetqua; {Dung de hien mot ket qua}Var h,c : Integer;Begin Songhiem := Songhiem + 1; writeln('Nghiem thu : ',Songhiem); For h:=1 to n do Begin For i:=1 to n*2 do Write('Ä'); Writeln; For c:=1 to n do if Banco[c,h] then Write('³x') else Write('³ '); Writeln('³'); End; For i:=1 to n*2 do write('Ä');End;{****************************************}Function Deduoc(h,c: Integer) : Boolean; {Kiem tra xem co de duoc con hau o vi tri h,c ? }Begin Deduoc := False; {Kiem tra xem hang h da co con hau nao chua ?} for i:= 1 to c do if banco[h,i] then exit; { Kiem tra xem duong cheo tu tren trai xuong duoi phai } { xuyen qua vi tri h,c da co con hau nao chua ?} i:= h-1; j:= c-1; While (i>0) and (j>0) do Begin If banco[i,j] then exit; i:=i-1; j:=j-1; End; { Kiem tra xem duong cheo tu tren phai xuong duoi trai } { xuyen qua vi tri h,c da co con hau nao chua ?} i:= h+1; j:= c-1; While (i<=n) and (j>0) do Begin If banco[i,j] then exit; i:=i+1; j:=j-1; End; Deduoc := TrueEnd;{****************************************}

Page 22: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 21

Begin {Main Program}clrscr;Write('Nhap n : ');Readln(n);{Xoa ban co}for h:=1 to n do for c:=1 to n do banco[h,c]:= False;Songhiem := 0;Dangxet := 0;{Lap tim nghiem theo ky thuat backtracking}Xettiep: {Dat nhan xet tiep}Dangxet := Dangxet+1;Hang:=1;Repeat While Hang <= n do Begin If Deduoc(Hang,Dangxet) then Begin Banco[Hang,Dangxet] := True; If Dangxet = n then Begin {tim duoc nghiem} Hienketqua; Readln; Banco[hang,dangxet] := False; End Else Begin Daxet[Dangxet] := Hang; {giu lai hang da xet} goto Xettiep; End; End; Hang := Hang+1; End;Dangxet := Dangxet - 1; {Lui lai con hau truoc}if Dangxet = 0 then Exit; { da thu het cac kha nang }Hang := Daxet[Dangxet]; {Lay lai hang da xet}Banco[Hang,Dangxet] := False;Hang := Hang + 1; {Tiep tuc xet tiep}Until False;End.

Page 23: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 22

3. Phương pháp Hướng đích :…………

4. Phương pháp Quy hoạch động :…………

5. Phương pháp Tham lam :Giải thuật tham lam (Greedy algorithm) là một thuật toán giải quyết một

bài toán theo kiểu metaheuristic để tìm kiếm lựa chọn tối ưu địa phương ở mỗi bước đi với hy vọng tìm được tối ưu toàn cục. Chẳng hạn áp dụng giải thuật tham lam với bài toán hành trình của người bán hàng ta có giải thuật sau: "Ở mỗi bước hãy đi đến thành phố gần thành phố hiện tại nhất".

Nói chung, giải thuật tham lam có năm thành phần:Một tập hợp các ứng viên (candidate), để từ đó tạo ra lời giải Một hàm lựa chọn, để theo đó lựa chọn ứng viên tốt nhất để bổ sung vào

lời giải Một hàm khả thi (feasibility), dùng để quyết định nếu một ứng viên có thể

được dùng để xây dựng lời giải Một hàm mục tiêu, ấn định giá trị của lời giải hoặc một lời giải chưa hoàn

chỉnh Một hàm đánh giá, chỉ ra khi nào ta tìm ra một lời giải hoàn chỉnh. Có hai thành phần quyết định nhất tới quyết định tham lam:Tính chất lựa chọn tham lam Chúng ta có thể lựa chọn giải pháp nào được cho là tốt nhất ở thời điểm

hiện tại và sau đó giải bài toán con nảy sinh từ việc thực hiện lựa chọn vừa rồi. Lựa chọn của thuật toán tham lam có thể phụ thuộc vào các lựa chọn trước đó. Nhưng nó không thể phụ thuộc vào một lựa chọn nào trong tương lai hay phụ thuộc vào lời giải của các bài toán con. Thuật toán tiến triển theo kiểu thực hiện các chọn lựa theo một vòng lặp, cùng lúc đó thu nhỏ bài toán đã cho về một bài toán con nhỏ hơn. Đấy là khác biệt giữa thuật toán này và giải thuật quy hoạch động. Giải thuật quy hoạch động duyệt hết và luôn đảm bảo tìm thấy lời giải. Tại mỗi bước của thuật toán, quy hoạch động đưa ra quyết định dựa trên các quyết định của bước trước, và có thể xét lại đường đi của bước trước hướng tới lời giải. Giải thuật tham lam quyết định sớm và thay đổi đường đi thuật toán theo quyết định đó, và không bao giờ xét lại các quyết định cũ. Đối với một số bài toán, đây có thể là một thuật toán không chính xác.

Cấu trúc con tối ưu Một bài toán được gọi là "có cấu trúc tối ưu", nếu một lời giải tối ưu của

bài toán con chứa lời giải tối ưu của bài toán lớn hơn.Đối với nhiều bài toán, giải thuật tham lam hầu như không cho ra lời giải

tối ưu toàn cục (nhưng không phải luôn như vậy), vì chúng thường không chạy trên tất cả các trường hợp. Chúng có thể bám chặt lấy một số lựa chọn nhất định một cách quá sớm, điều này dẫn đến hậu quả là trong giai đoạn sau, các thuật toán này không thể tìm ra các lời giải toàn cục tốt nhất. Ví dụ, đối với bài toán tô màu đồ thị và tất cả các bài toán NP-đầy đủ khác, không một thuật toán tham lam

Page 24: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 23

đã được biết nào đảm bảo tìm thấy các lời giải tối ưu. Tuy nhiên, các thuật toán này vẫn hữu ích vì chúng dễ thiết kế và cho ra các ước lượng tốt về lời giải tối ưu.

Nếu có thể chứng minh rằng một thuật toán tham lam cho ra kết quả tối ưu toàn cục cho một lớp bài toán nào đó, thì thuật toán thường sẽ trở thành phương pháp được chọn lựa, vì nó chạy nhanh hơn các phương pháp tối ưu hóa khác như quy hoạch động. Các ví dụ cho giải thuật loại này là thuật toán Kruskal và thuật toán Prim dành cho bài toán cây bao trùm nhỏ nhất, thuật toán Dijkstra dành cho bài toán đường đi ngắn nhất nguồn đơn, và thuật toán tìm cây Huffman tối ưu.

Chương trình giải bài toán người bán hàng bằng phương pháp tham lam (viết bằng ngôn ngữ c ++)với ma trận trọng số của đồ thị như sau:0 15 30 50 20

15 0 10 35 32

30 10 0 15 40

50 35 15 0 43

20 32 40 43 0

chương trình :#include "iostream"#include "fstream" using namespace std;int n,a[25][25],b[25],k;int NhapFile(char TenFile[], int &n){

ifstream iFile;iFile.open(TenFile);if (!iFile.is_open())

return 0;while(iFile >> n)

{for (int i = 0; i < n; i++){

for(int j = 0; j < n; j++){

iFile >> a[i][j]; }

} }

iFile.close();return 1;

} int check(int x, int y[], int s){ for(int i=0;i<s;i++) { if(x==y[i]) return 0; } return 1;} char ToChar(int n)

Page 25: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 24{ return 'A' + n;} int run(int n,int id){ int min; int b[100]; int count = 0; int temp; int s=0; b[0] = k; while(count < n) { min=10000; for(int i = 0;i < n; i++) if(a[id][i] < min && a[id][i] > 0 && check (i,b,n) == 1) { min = a[id][i]; temp = i; } if(count<n-1) s=s+min; b[count + 1] = temp; id = temp; count ++; } s=s+a[id][k]; b[n] = k; cout << "Duong di ngan nhat: "; for(int i = 0; i < n; i++) cout << ToChar(b[i]) << " -> "; cout<<ToChar(b[n]); cout<<"\n\n"; cout<<"quang duong ngan nhat nguoi giao hang phai di la: "<<s; cout<<"\n\n"; return 0;} int main(){ char c; NhapFile("data.inp",n); cout << "Ma tran ke:" << endl; for(int i = 0; i < n; i++) { cout << ToChar(i) << ":\t"; for(int j = 0; j < n; j++) cout<<" "<<a[i][j]; cout<<"\n\n"; } cout<<"nhap thanh pho hien tai cua nguoi giao hang: "; cin>>c; if(c<='Z') k=c-65; else k=c-97; cout<<"\n"; run(n,k); system("PAUSE"); return 0;}

Page 26: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 25

Phần 2 : BÀI TẬP THEO CHỦ ĐỀChủ đề 1 : BÀI TẬP VỀ SỐ HỌC

1. Lập chương trình tính xem kim giờ và kim phút đồng hồ gặp nhao bao nhiêu lần từ 0 giờ đến 24 giờ trong 1 ngày ?.

2. Viết chương trình hiển thị tất cả các số gồm 3 chữ số sao cho tổng tất cả các chữ số bằng tích của chúng ?

3. Bộ ba số nguyên dương a, b, c được gọi là bộ số Py-ta-go nếu tổng các bình phương của hai số bằng bình phương của số còn lại. Viết chương trình nhập từ bàn phím ba số nguyên dương a, b, c và kiểm tra xem chúng có là bộ ba số Py-ta-go hay không ?

4. Số tự nhiên n gọi là Amstrong nếu nó bằng tổng lập phương các chữ số của nó. Ví dụ 153 = 13+53+33. Viết chương trình tìm tất cả các số Amstrong có 3 chữ số.

5. Viết chương trình đổi từ năm dương lịch sang năm âm lịch. Năm dương lịch được biểu diễn bằng một số nguyên dương, năm âm lịch được biểu diễn bằng 2 từ theo thứ tực Can và Chi. Can và Chi được lấy lần lượt vòng tròn, năm xuất phát là năm Tân Dậu (ứng với dương lịch là năm 1).

Có 10 Can được lấy theo thứ tự như sau : Quý, Giáp, Ất, Bính, Đinh, Mậu, Kỷ, Canh, Tân, Nhâm.

Có 12 Chi được lấy theo thứ tự như sau : Dần, Mão, Thìn, Tỵ, Ngọ, Mùi, Thân, Dậu, Tuất, Hợi, Tí, Sửu. (Lưu ý : Viết Tí, Tỵ để khỏi nhần khi không có dấu thanh tiếng Việt)

6. Nhập hai số nguyên a, b. Sau đó tính UCLN (a,b) và BCNN (a,b) ?7. Nhập n, k nguyên đảm bảo phải dương và k<= n. Tính :

- Chỉnh hợp chập k của n phần tử theo công thức :

- Tổ hợp chập k của n phần tử theo công thức :

8. Cho dãy số Fibonaci được định nghĩa như sau :

F(n) = 1 (Nếu n=1 hoặc n=2)

F(n-1) + F(n-2) (Nếu n>2)Hãy viết chương trình in ra màn hình dãy 20 số Fibonaci đầu tiên.

Yêu cầu : Trong chương trình có xây dựng hàm tính F(n) theo kiểu đệ quy.9. Tuổi cha hiện nay là B và tuổi con là C (0<C<B; B và C là số nguyên và theo

luật hôn nhân gia đình B – C >19).Viết chương trình kiểm tra xem tuổi cha có gấp đôi tuổi con không ? Nếu

đúng thì đưa ra màn hình thông báo “Tuổi cha gấp đôi tuổi con”. Trong trường hợp ngược lại, hãy tính số năm mà trước đó (hoặc sau đó) tuổi cha gấp đôi tuổi con và đưa ra thông báo dạng “n năm trước đây tuổi cha gấp đôi tuổi con” hoặc “sau n năm nua tuổi cha sẽ gấp đôi tuổi con”.

Page 27: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 26

Ví dụ : Với B=59, C=29 thì thông báo sẽ đưa ra là :“Sau 1 năm nữa tuổi cha sẽ gấp đôi tuổi con”

10.Nhập vào một số tự nhiên N với (0<N65535).Hãy cho biết chữ số lớn nhất của số tự nhiên vừa nhập.Hãy in đảo ngược số N.Ví dụ : N=6548

Chữ số lớn nhất là : 8 Số in ngược là : 8456

Page 28: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 27

Chủ đề 2 : BÀI TẬP VỀ DÃY SỐ 11.Nhập số nguyên dương n. Tính :

S = + + +…+12.Nhập số nguyên dương n. Tính :

S = 1+ + + …+ 13.Nhập số nguyên dương n. Tính :

S = + + +…+14.Nhập số nguyên dương n. Tính :

S = + + + …+

15.Nhập số nguyên dương n. Tính :S = . . .…

16.Nhập số nguyên dương n. Tính :S = 1.2.3 + 2.3.4 + 3.4.5 + …+ n(n+1)(n+2)

17.Nhập số nguyên dương n. Tính :

n!! = 1.3.5...n (Nếu n lẻ)

2.4.6...n (Nếu n chẵn)18.Nhập số nguyên dương n. Tính :

S =

19.Nhập số nguyên dương n. Tính :S =

20. Nhập số nguyên dương n. Tính :

Page 29: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 28

Chủ đề 3 : ĐIỀU KHIỂN MÀN HÌNH21.Lập chương trình in bảng cửu chương (từ 2 tới 9) ra màn hình ?22.Nhập n số nguyên (0< n <= 20). In ra màn hình tam giác cân có chiều cao n :

****

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

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

Yêu cầu : Tam giác có đỉnh nằm tại dòng 2 và tam giác nằm ở giữa màn hình theo chiều ngang.

23.Bạn hãy lập chương trình nhập 2 số nguyên dương a và b. Sau đó thực hiện phép nhân (a x b) như cách nhân bằng tay thông thường. Ví dụ:

24. 25. 26. 27. 28. 29. 30.

n

Page 30: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 29

Chủ đề 4 : PHƯƠNG TRÌNH - BẤT PHƯƠNG TRÌNH31. Giải phương trình bậc nhất ax + b = 0 với a,b là số thực nhập từ bàn phím ?32. Giải và biện luận phương trình bậc hai ax2 + bx + c = 0 :33. Giải và biện luận hệ phương trình bậc nhất hai ẩn : 34. Giải và biện luận bất phương trình bậc nhất ax + b > 0 :35.Viết chương trình để giải bài toán sau:

Trăm trâu ăn trăm bó cỏTrâu đứng ăn nămTrâu nằm ăn baLụ khụ trâu giàBa con một bóHỏi có bao nhiêu con trâu mỗi loại ?.

36.Viết chương trình in tất cả các nghiệm nguyên dương của phương trình: x2 + y2 = n với n (n>0) nhập từ bàn phím.37.Viết chương trình nhập một số nguyên từ bàn phím và kiểm tra xem có phải là

lập phương của một số hay không (tức là có dạng z3 với z là số nguyên)38.Tìm tất cả các số nguyên dương x,y,z thỏa mãn phương trình ax+by+cz=n;

trong đó a,b,c,n là các số nguyên dương (a,b,c 65535; n 2.147.483.647)Yêu cầu kỹ thuật :1) Kiểm tra việc nhập dữ liệu thỏa mãn yêu cầu của đề bài. Nếu người sử

dụng nhập sai thì thông báo nhập sai và hỏi người dùng có muốn nhập lại hay không, nếu không thì kết thúc chương trình.

2) Không được dùng quá 2 vòng lặp lồng nhau và điều kiện dừng của mỗi vòng lặp không được vượt quá ngưỡng mà từ đó ta biết chắc chắn phương trình không có nghiệm.

3) Nếu phương trình có nghiệm thì liệt kê có thứ tự các bộ nghiệm của phương trình theo dạng sau :

Giả sử phương trình có dạng 15x+28y+24z=454, in ra màn hình như sau:STT x y z

1 2 4 132 2 10 63 6 1 144 6 7 75 10 4 86 10 10 17 14 1 98 14 7 29 18 4 3

10 22 1 4Ngược lại thì thông báo phương trình không có nghiệm.39.40.

Page 31: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 30

Chủ đề 5 : TÍNH GẦN ĐÚNG VỚI ĐỘ CHÍNH XÁC CHO TRƯỚC

41.Hãy tính giá trị của biểu thức: + + …+ với n là một số nguyên dương chưa biết trước và chương trình dừng lại khi 1/n nhỏ hơn một số đã cho trước là 0,001.

42.Nhập số x thực và số n nguyên 1, tính gần đúng ex theo công thức :

                      43.Nhập số thực A đảm bảo 0<A< 2, tìm số n nhỏ nhất thỏa mãn :

                     

44. Nhập x và n, tính gần đúng Sinx theo công thức:

          

45.Nhập x thực, n nguyên > 0 , tính gần đúng cosx :

46.Tính gần đúng giá trị của Ln(x) , 0 < x 2 , với sai số ss = 0.01, bằng cách bỏ đi các số hạng có trị tuyệt đối < ss :

47.48.49.50.

Page 32: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 31

Chủ đề 6 : MỘT SỐ BÀI TOÁN VỀ HÌNH HỌC51.Lập chương trình nhập 3 số thực a, b, c rồi cho biết 3 số a, b, c vừa nhập có

phải là 3 cạnh của 1 tam giác hay không ? Nếu 3 số a, b, c vừa nhập là 3 cạnh của tam giác thì tính diện tích tam giác đó theo công thức HêRông :

Trong đó :

52. 53. 54.55. BÀI 1 : BÀI TOÁN DIỆN TÍCH TAM GIÁC

Cho một hình chữ nhật ABCD, cạnh AB=a, cạnh BC=b. a,b là các số nguyên dương trong khoảng [1, 100]

Một điểm M chạy trong đoạn BC với BM=x . x là số nguyên duơng trong khoảng [0, b], một điểm N chạy trong đoạn CD với CN=x

Tính giá trị lớn nhất và giá trị nhỏ nhất của diện tích tam giác AMN khi M, N lưu động.

 Dữ liệu vào: Được cho trong tập tin CHUNHAT.inp, gồm một dòng ghi hai số nguyên dương lần lượt là a, b. Hai số cách nhau một khoảng trắngDữ liệu ra : Yêu cầu xuất ra tập tin CHUNHAT.out, gồm bốn dòng:

+ Dòng đầu là giá trị lớn nhất của diện tích tam giác AMN (một chữ số thập phân)+ Dòng thứ hai là một giá trị của x để diện tích tam giác AMN đạt giá trị lớn nhất + Dòng thứ ba là giá trị nhỏ nhất của diện tích tam giác AMN (một chữ số thập phân)+ Dòng thứ tư là một giá trị của x để diện tích tam giác AMN đạt giá trị nhỏ nhấtVí dụ: CHUNHAT.inp

10 6CHUNHAT.out

30.0 017.5 5

Yêu cầu kỹ thuật :+ Có kiểm tra dữ liệu nhập+ Bài làm của thí sinh lưu trên tập tin Bailam1.pas56. 57. 58. 59. 60.

Page 33: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 32

Chủ đề 7 : MỘT SỐ BÀI TOÁN TỔ HỢP (Giải bằng phương pháp BackTracking)

61.Viết chương trình in ra tất cả những hoán vị của dãy số tự nhiên (1,2,3,…,n) với n nhập từ bàn phím ?

62.Viết chương trình in ra tất cả các chỉnh hợp n chập r của n số tự nhiên đầu tiên với n, r nhận từ bàn phím ?

63.Viết chương trình in ra tất cả các tổ hợp n chập r của n số tự nhiên đầu tiên với n, r nhận từ bàn phím ?

64. Bài toán 8 hậu : Viết chương trình xếp n quân hậu trên bàn cờ vua có n*n ô sao cho không quân nào ăn được quân nào ?

65. Bài toán “Mã đi tuần” : Một quân mã đặt tại vị trí bất kỳ trên bàn cờ. Hãy chỉ ra đường sao cho quân mã đi hết bàn cờ và trở lại ô ban đầu với điều kiện không được đi lại ô đã đi qua.

66. 67. 68. 69. 70.

Page 34: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 33

Chủ đề 8 : MỘT SỐ DẠNG BÀI TẬP KHÁC71.Lập chương trình in ra màn hình tất cả các số nguyên tố có 3 chữ số ? (Dùng

giải thuật Sàng)72.Nhập vào một số tự nhiên N với (0<N65535), phân tích số vừa nhập thành

các thừa số nguyên tố, nếu số vừa nhập là số nguyên tố thì chỉ thông báo ra màn hình đây là số nguyên tố.Ví dụ : - Nếu số vừa nhập là 300 thì in ra màn hình : 300=2.2.3.5.5- Nếu số vừa nhập là 307 thì in ra màn hình : 307 là số nguyên tố.

73.Số nguyên tố tương đương :Hai số tự nhiên được gọi là nguyên tố tương đương nếu chúng có chung

các ước số nguyên tố. Ví dụ các số 75 và 15 là nguyên tố tương đương vì cùng có các ước nguyên tố là 3 và 5. Cho trước hai số tự nhiên N, M. Hãy viết chương trình kiểm tra xem các số này có là nguyên tố tương đương với nhau hay không.

74.Số siêu nguyên tố :Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên

phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố.Ví dụ : 317 là số siêu nguyên tố có 3 chữ số vì 31, 3 cũng là các số

nguyên tố.Yêu cầu : Hãy viết chương trình nhập dữ liệu vào là một số nguyên N

(3 N 9) và đưa ra kết quả là một số siêu nguyên tố có N chữ số cùng số lượng của chúng.

Ví dụ khi chạy chương trình :Nhap so N: 4Cac so sieu nguyen to có 4 chu so la: 2333 2339 2393 2399 2939 3119

3137 3733 3739 3793 3797 5939 7193 7331 7333 7393Tat ca co 16 so_

75.Cũng định nghĩa số Siêu nguyên tố như bài 9, nhưng với yêu cầu như sau :Yêu cầu : Lập trình bằng ngôn ngữ Pascal, dựa vào các siêu nguyên tố có

2 chữ số để tìm các siêu nguyên tố có 3 chữ số, dựa vào các siêu nguyên tố có n-1 chữ số để tìm các siêu nguyên tố có n chữ số (3 N 9). Kết quả ghi vào file “Sngto.txt” theo quy định như sau :

Dòng thứ i ghi các thông tin về số siêu nguyên tố có i chữ số : trong đó số nguyên đầu tiên ghi số lượng các siêu nguyên tố có i chữ số, các số tiếp theo là các siêu nguyên tố có i chữ số từ nhỏ đến lớn.

Ví dụ cho 2 dòng đầu tiên :4 2 3 5 79 23 29 31 37 53 59 71 73 79……

76.Số phản nguyên tố :

Page 35: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 34

Một số n gọi là số phản nguyên tố nếu số ước số của nó là nhiều nhất trong n số tự nhiên đầu tiên. Cho số K (K <= 2 tỷ). Hãy ghi ra số phản nguyên tố lớn nhất nhỏ hơn hoặc bằng K.

Dữ liệu vào trong file PNT.INP nội dung gồm:- Dòng đầu tiên là số M (1 < M <= 100) - số các số cần tìm số phản

nguyên tố lớn nhất của nó;- M dòng tiếp theo lần lượt là các số K1, K2, K3, ..., Km;Dữ liệu ra trong file PNT.OUT gồm M dòng: dòng thứ i là số phản

nguyên tố lớn nhất nhỏ hơn hoặc bằng Ki.Ví dụ:PNT.INP11000PNT.OUT840

77.Nhập vào một một dãy số bất kỳ từ bàn phím. Viết chương trình in ra dãy con liên tục đơn điệu tăng có độ dài lớn nhất ?(Ví dụ : Nhập dãy 9,3,1,2,4,6,0,3. In ra dãy con : 1,2,4,6)

Page 36: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 35

Chủ đề 9 : MỘT SỐ ĐỀ THI HỌC SINH GIỎI TIN HỌC

Page 37: Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 · Web viewTitle Baøi 1 : GIÔÙI THIEÄU MICROSOFT WORD 97 Author Le Dac Uoc Last modified by Phuong Tong Viet Created Date 1/8/2016

Tài liệu bồi dưỡng học sinh giỏi tin học bậc THPT ............................Trang 36

MUÏC LUÏCNỘI DUNG TRANG

Lời mở đầu.......................................................................................................................1

Bài 1 : NHẬP MÔN TIN HỌC......................................................................................2I. CÔNG NGHỆ THÔNG TIN..............................................................................2II. SƠ LƯỢC VỀ CẤU TẠO MÁY VI TÍNH........................................................3III. MỘT SỐ THAO TÁC CƠ BẢN.......................................................................7

Bài đọc thêm : LỊCH SỬ MÁY VI TÍNH...................................................................11

Bài 2 : HỆ ĐIỀU HÀNH WIN DOWS XP..................................................................13I. PHẦN MỀM TRÊN MÁY TÍNH....................................................................13II. HỆ ĐIỀU HÀNH WINDOWS XP...................................................................13III. TẬP TIN – NGĂN HỒ SƠ - LỐI TẮT...........................................................15IV. CÁC THAO TÁC CHÍNH VỚI NGĂN HỒ SƠ, TẬP TIN, LỐI TẮT..........17

Bài đọc thêm : TRUY CẬP CHƯƠNG TRÌNH TRONG Ổ ĐĨA.............................23

Bài 3 : QUẢN LÝ HỆ THỐNG – ÔN TẬP................................................................24I. QUẢN LÝ HỆ THỐNG...................................................................................24II. MỘT SỐ CÁCH THỰC HIỆN LỆNH TRONG WINDOWS.........................27III. ÔN TẬP VỀ WINDOWS...............................................................................27

Bài đọc thêm: THAY ĐỔI CỬA SỔ-THIẾT LẬP DESKTOP-CONTROL PANEL......30

Bài 4 : TRÌNH VẼ MICOROSOFT PAINT-TRÌNH VIẾT NHẠC ENCORE 4.5............33I. TRÌNH VẼ MICROSOFT PAINT...................................................................33II. TRÌNH VIẾT NHẠC ENCORE 4.5...............................................................36III. CÁCH GÕ DẤU TIẾNG VIỆT TRONG WINDOWS..................................39

Bài đọc thêm : ĐỀ THI TIN HỌC KHÔNG CHUYÊN (TIỂU HỌC)....................42

Bài 5 : GIỚI THIỆU TRÌNH SOẠN THẢO MICROSOFT WORD.......................43

Bài đọc thêm : ĐỀ THI TIN HỌC KHÔNG CHUYÊN (THCS).............................49

Bài 6 : MỘT SỐ PHẦN MỀM TOÁN HỌC - XỬ LÝ ÂM THANH.......................52I. MỘT SỐ PHẦN MỀM TOÁN HỌC...............................................................52II. GIỚI THIỆU MỘT SỐ PHẦN MỀM XỬ LÝ ÂM THANH..........................57

Bài đọc thêm : AN TOÀN DỮ LIỆU VÀ CHƯƠNG TRÌNH..................................62

Bài 7 : VIRUS TIN HỌC – ÔN TẬP...........................................................................66I. GIỚI THIỆU VIRUS TIN HỌC – CÁCH PHÒNG CHỐNG..........................66II. ÔN TẬP TIN HỌC CƠ BẢN..........................................................................67

Bài đọc thêm : ĐỀ THI TIN HỌC KHÔNG CHUYÊN (THPT).............................71

Bài 8 : KIỂM TRA CUỐI KHÓA...............................................................................74

Phụ lục A : HỆ ĐIỀU HÀNH MS-DOS......................................................................75

Phụ lục B : TRÌNH TIỆN ÍCH NORTON COMMANDER.....................................79

MỤC LỤC.....................................................................................................83

Nút đóngKý hiệu ổ đĩa mềm