Hiện nay hầu hết các trường THCS đã dạy môn Tin học và cơ sở vật chất phục vụ cho việc dạy học môn học này đã được trang bị ngày càng tốt hơn. Rất nhiều học sinh, phụ huynh học sinh, lãnh đạo ngành, các trường rất mong muốn con mình, bản thân mình, học sinh mình tham gia các kỳ thi học sinh giỏi môn Tin học
Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 BÀI THAM LUẬN VỀ CHUN ĐỀ TIN HỌC “ĐỊNH HƯỚNG CHƯƠNG TRÌNH BỒI DƯỠNG HỌC SINH GIỎI MÔN TIN HỌC CẤP THCS” A ĐẶT VẤN ĐỀ: I Cơ sở lý luận thực tiễn: Hiện hầu hết trường THCS dạy môn Tin học sở vật chất phục vụ cho việc dạy học môn học trang bị ngày tốt Rất nhiều học sinh, phụ huynh học sinh, lãnh đạo ngành, trường mong muốn mình, thân mình, học sinh tham gia kỳ thi học sinh giỏi môn Tin học (Kỳ thi tin học trẻ, Kỳ thi học sinh giỏi lớp ) tính mẻ, hấp dẫn, thiết thực môn Mặc khác nhìn vào phịng trào Tin học ngành giáo dục Tuy phước so với Huyện khác Tỉnh cịn yếu thua xa huyện bạn Đó khơng phải học sinh huyện Tuy Phước khơng thích học Tin học, hay đội ngũ giáo viên Tin học Huyện chưa thật quan tâm đến phong trào mũi nhọn Mà ngành giáo dục Huyện thiếu phong trào, sân chơi Tin học dành cho em có niềm đam mê thật với môn Tin học Với tâm huyết cộng với đam mê mình, phần học sinh mặt Tin học ngành giáo dục Tuy Phước, đồng nghiệp đưa chuyên đề “Định hướng nội dung bồi dưỡng học sinh giỏi môn Tin học cấp THCS” để trường thành lập đội tuyển bồi dưỡng đến tháng hàng năm chọn học sinh xuất sắc Tin học trường tham gia dự thi học sinh giỏi Tin học ngành giáo dục Tuy phước tổ chức Từ thành lập đội tuyển cấp Huyện xa học sinh tham dự thi Tin học khác Tin học trẻ, học sinh giỏi Tin học lớp 9…) Qua tạo cho em có sân chơi Tin học lành mạnh, khoa học, phong trào hấp dẫn thường niên có tiếng vang cho khối học sinh Tơi tin tưởng với cách làm phong trào Tin học ngành giáo dục Tuy Phước mạnh lên qua năm! II Thực trạng dạy học sinh giỏi môn Tin học nhà trường: a) Về phía học sinh: Một phận học sinh đam mê lĩnh vực Tin học Đa số em có kiến thức tốt mơn Tốn Các em mong muốn có phong trào để em thể niềm đam mê b) Về phía giáo viên: - Đa số giáo viên trẻ, nhiệt tình cơng tác - Vì chưa có phịng trào nên đa số giáo viên Tin học chưa thật đầu tư nghiên cứu lĩnh vực học sinh giỏi Tin học c) Về phía nhà trường: - Lãnh đạo nhà trường chưa thật quan tâm đến đội ngũ học sinh giỏi Tin học Do cần có phong trào thường niên để thay đổi cách nhìn phong trào B GIẢI QUYẾT VẤN ĐỀ: Tập tài liệu biên soạn với nội dung bồi dưỡng chia làm phần - Phần 1: Lý thuyết tập theo chương NNLT Pascal - Phần 2: Phần tập theo chủ đề - Phần 3: Các dạng đề thi HSG Tin học Tin học trẻ tham khảo Mỗi chương gồm tóm tắt lý thuyết tập xoay quanh nội dung chương Mỗi tập trình bày theo cấu trúc: a Đề b Hướng dẫn, thuật tốn c Mã chương trình d Nhận xét: Nhấn mạnh nội dung mới, quan trọng cần nắm sau thực tập, giải toán theo thuật toán khác, điểm chưa thuật tốn GV: Lê Văn Lại Trang Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 Nội dung tập chương lựa chọn theo hướng kế thừa, tăng dần độ khó Nhiều tốn cần giải thực tế đưa vào tập nhằm tăng hướng thú học tập Hầu hết tập có độ khó vừa phải, phù hợp với nội dung bồi dưỡng cấp trường Nội dung liên quan với mơn tốn mơn khác cấp THCS Nội dung bồi dưỡng chia thành chương sau: Phần 1: Lý thuyết tập theo chương NNLT Pascal CHƯƠNG 1: MỘT SỐ VẤN ĐỀ TOÁN HỌC I HỆ ĐẾM: Hệ đếm thập phân (Decimal): Có 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 viết số hệ đếm thập phân người ta không ghi số) Hệ đếm nhị phân (Binary): Có 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 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 thương - Bước 2: Viết ngược lại số dư, ta số hệ nhị phân VD: Đổi số từ hệ thập phân sang hệ nhị phân, ta làm sau: Ngừng chia 1 Kết quả: = 1102 Hệ đếm thập lục phân (Hexa): Có 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 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 thương - Bước 2: Viết ngược lại số dư, ta số hệ Hexa (Lưu ý: Nếu số dư lớn 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 ngược lại: Nhận xét: Số lớn hệ Hexa đổi chữ số hệ nhị phân (1111=F) Do muốn đổi từ hệ Hexa hệ nhị phân, ta đổi số Haxa nhóm số nhị phân (nếu chưa đủ chữ số nhị phân ta phải thêm chữ số 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, nhóm số quy đổi nhóm sang hệ Hexa Tổng quát: -Muốn đổi a1a2…an từ hệ X sang hệ thập phân, ta tính giá trị đa thức: a1.Xn-1+ a2.Xn-2+… +an.X0 -Muốn đổi số từ hệ thập phân sang hệ X, ta chia liên tiếp số cho X thương Viết ngược lại số dư ta số hệ X -Muốn đổi số từ hệ X sang hệ Y, ta đổi số từ hệ X sang hệ thập phân, sau đổi kết từ hệ thập phân sang hệ Y II TẬP HỢP: Phép hợp (Union): A ∪B = {x | x ∈ A x ∈ B} GV: Lê Văn Lại Trang Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 Phép giao (Intersection): A ∩B = {x | x ∈ A x ∈ B} (Lưu ý: Khi A ∩B = φ ta nói A B hai tập phân biệt) Phép trừ (Difference): A \ B = {x | x ∈ A x ∉ B} Phép nhân (Multiplication): A × B = { (a,b) | a ∈ A b ∈ B} Phép phân hoạch (Partition): Cho X tập hợp (X ≠ φ) Tập X chia thành tập A i (Ai ≠ φ), họ tập Ai gọi phân hoạch (hay chia lớp) tập X giao đơi rỗng hợp lại tập lớn X Tức là: A ∩B = φ, ∀ i ≠ j i Ai = X Hiệu đối xứng (Symmetric difference): A ∆ B = (A \ B) ∪(B \ A) Các ký hiệu tập hợp số thường dùng: N (số tự nhiên), N* (số tự nhiên khác không), Z (số nguyên) , Q (số hữu tỉ), I (số vô tỉ), R (số thực), P (số nguyên tố) III SỐ NGUYÊN TỐ - ƯỚC SỐ CHUNG LỚN NHẤT - BỘI SỐ CHUNG NHỎ NHẤT: Số nguyên tố: Khái niệm: Số nguyên tố số tự nhiên lớn 1, có ước Định lí: Mọi hợp số n có ước nguyên tố không vuợt n Ước số chung lớn – Bội số chung nhỏ nhất: - Thuật tốn Euclid: Để tìm ƯCLN (a,b), ta làm cách trừ liên tiếp số lớn cho số nhỏ tới số nhau, giá trị cuối a b ƯCLN (a,b) - Bổ đề: ƯCLN (a,0) = |a|, ∀ a ≠ a.b - UCLN (a,b)·BCNN (a,b)=a·b⇔BCNN (a,b)= UCLN(a, b) ⇔UCLN (a,b)= a.b BCNN(a,b) Số nguyên tố nhau: Hai số có UCLN gọi hai số nguyên tố IV PHÂN SỐ: Phân số nhau: a c = ⇔ ad = bc b d Phân số tối giản: - Khi chia tử mẫu phân số cho UCLN phân số tối giản V PHƯƠNG TRÌNH - BẤT PHƯƠNG TRÌNH: Phương trình bậc nhất: ax + b = (a ≠ 0) b Phương trình có nghiệm x = a Lưu ý: Nếu a = ax + b = ⇔ b = Khi đó: b ≠ phương trình vơ nghiệm; b = PT có vơ số nghiệm 2 Phương trình bậc hai: ax + bx + c = (a ≠ 0) a) Dạng khuyết c (c=0): ax2 + bx = x = x = ⇔ ax + bx = ⇔ x (ax + b) = ⇔ x = − b ax + b = a b) Dạng khuyết b (b=0): ax2 + c = + Nếu a c dấu: phương trình vơ nghiệm + Nếu a c khác dấu: ax2 + c = ⇔ ax c) Dạng đầy đủ: ax2 + bx + c = GV: Lê Văn Lại c x = − c a =−c ⇔ x = − ⇔ a c x = − − a Trang Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 + Ta tính ∆ = b2 – 4ac + Nếu ∆ < 0: phương trình vơ nghiệm b + Nếu ∆ = 0: phương trình có nghiệm x = – 2a −b + ∆ −b − ∆ + Nếu ∆ > 0: phương trình có nghiệm phân biệt: x1= ; x2= 2a 2a Lưu ý: - Nếu khuyết a (a = 0) phương trình ax + bx + c = trở thành phương trình bậc ax + b = - Trong tốn học ta cịn tìm nghiệm phương trình bậc cách tính ∆’ (nếu b chẵn) tính nhẩm nghiệm trường hợp a+b+c=0, a-b+c=0 Tuy nhiên cách dùng lập trình Phương trình trùng phương: ax4 + bx2 + c = (a ≠ 0) (*) Cách giải: Ta đặt t = x2, phương trình (*) trở thành at2 + bt + c = (**) Giải (**) theo ẩn t Nếu (**) có nghiệm t >= (*) có nghiệm ± t , ngược lại (*) vơ nghiệm Bất phương trình bậc nhất: ax + b > (a ≠ 0) b Nếu a > bất phương trình có nghiệm x > a b Nếu a < bất phương trình có nghiệm x < a Lưu ý: - Nếu khuyết a (a = 0) ax + b > ⇔ b > Khi đó:b ≤ BPT vơ nghiệm; b > BPT có vơ số nghiệm - Các dạng khác bất phương trình bậc nhất: ax + b ≥ 0, ax + b < 0, ax + b ≤ 0) a x + b y = c Hệ phương trình bậc ẩn số (Giải định thức): a ' x + b ' y = c ' a b c b a c Dy = Dx = D= = cb' - c'b = ab' - a'b = ac' - a'c a' c' c' b' a' b' Nếu D = thì: + Nếu Dx ≠ Dy ≠ hệ PT vơ nghiệm; + Nếu Dx = Dy = hệ PT có vơ số nghiệm Dy D Nếu D ≠ hệ PT có nghiệm nhất: x = x y = D D Lưu ý: Trong tốn học ta giải hệ phương trình bậc ẩn phương pháp phương pháp cộng đại số Tuy nhiên cách dùng lập trình VI HÀM SỐ - ĐỒ THỊ: Hàm số bậc nhất: y = ax + b (a ≠ 0) - Tập xác định: ∀x∈ R - Tính chất biến thiên: đồng biến R a>0; nghịch biến R a0 hàm số đồng biến x>0 nghịch biến x c; a + c > b; b + c > a + Ta tính diện tích tam giác theo công thức Hê-rông: S= c' b' B Trong tam giác với cạnh a, b, c: b h C Cạnh huyề n B α a c β A b C 180 rad rad = Đổi độ sang Radian ngược lại: = ÷ 180 π Một số cơng thức tính chu vi, diện tích: - Chu vi hình vng: C = 4a (với a cạnh hình vng) - Diện tích hình vng: S = a (với a cạnh hình vng) - Chu vi hình chữ nhật: C = 2(a + b) (với a chiều dài, b chiều rộng) - Diện tích hình chữ nhật: S = ab (với a chiều dài, b chiều rộng) - Diện tích hình tam giác: S = ah (với a cạnh đáy, h đường cao thuộc cạnh đáy) GV: Lê Văn Lại Trang Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 - Diện tích hình thang: S = ( a +b)h (với a đáy lớn, b đáy nhỏ, h đường cao) - Chu vi đường trịn: C = 2πR (với R bán kính) - Diện tích hình trịn: S = πR2 (với R bán kính) CHƯƠNG 2: CÁC THÀNH PHẦN CƠ BẢN CỦA NGƠN NGỮ LẬP TRÌNH PASCAL Pascal ngơn ngữ lập trình bậc cao Niklaus Wirth, giáo sư điện tốn trường Đại học kỹ thuật Zurich (Thụy Sĩ) đề xuất năm 1970 Ông lấy tên Pascal để kỷ niệm nhà toán học nhà triết học người Pháp tiếng Blaise Pascal Các tập tin cần thiết lập trình với Turbo Pascal Để lập trình với Turbo Pascal, tối thiểu cần file sau: • TURBO.EXE: Dùng để soạn thảo dịch chương trình • TURBO.TPL: Thư viện chứa đơn vị chuẩn để chạy với TURBO.EXE Ngồi ra, muốn lập trình đồ hoạ phải cần thêm tập tin: • GRAPH.TPU: Thư viện đồ hoạ • *.BGI: Các file điều khiển loại hình tương ứng dùng đồ hoạ • *.CHR: Các file chứa font chữ đồ họa Các bước lập chương trình Pascal Bước 1: Soạn thảo chương trình Bước 2: Dịch chương trình (nhấn phím F9), có lỗi phải sửa lỗi Bước 3: Chạy chương trình (nhấn phím Ctrl + F9) Cấu trúc chung chương trình Pascal Program ; Uses Crt; {Khai báo thư viện hàm} Const = ; {Khai báo hằng} Var , : ; {Khai báo biến} Begin Clrscr; { Lệnh xóa hình kết } Write(‘’); Readln(); { Nếu cần} {Xử lĩ kết quả} Writeln(‘’,); { Nếu cần} Readln; {Giữ hình kết quả} End Giải thích cấu trúc khai báo trên: Nếu có phần khai báo cần cho chương trình phải tn theo thứ tự trên, ví dụ: phần khai báo thư viện (USES) đặt sau phần khai báo số (CONST) sau (VAR) sau phần khai báo phải có dấu ‘;’ - Program: Từ khoá dùng để khai báo tên chương trình Tên chương trình phải tuân theo quy tắc: + Khơng có ký tự trống xen + Khơng đặt số ký tự + Trong phần tên không chứa ký tự đặt biệt như: ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’, ‘&’, ‘* ’, ‘(‘, ‘)’, ‘-‘, ‘+’, ‘/’, ‘\’, ‘.’, ’,’,.v.v + Kết thúc phải có dấu ‘;’ + Phần khơng có - Uses: Từ khoá dùng để khai báo việc sử dụng Unit (thư viện) cho chương trình GV: Lê Văn Lại Trang Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 - Const: Từ khoá dùng để khai báo số sử dụng chương trình, báo số việc cố định vài giá trị chương trình thơng qua tên hằng, ví dụ cách khai báo hằng: - Var: Từ khoá dùng để khai báo biến số sử dụng chương trình Biến số giá trị thay đổi suốt trình chạy chương trình Khái niệm biến số quan trọng việc lập trình (khái niệm trình bày kỹ 3) Một ví dụ cách khai báo biến: Var HoDem, Ten : String; N : Integer; Ghi chú: - Thứ tự khai báo điều bắt buộc, ta phải nắm thứ tự cho dù số khái niệm ta chưa biết Trong chương trình Pascal, để tạo lời thích, ta sử dụng cặp dấu { } (* *) lồng câu thích vào bên - Trên dịng viết nhiều câu lệnh Các lệnh cách dấu chầm phẩy Ví dụ : Program GioiThieu; Begin Writeln ( ‘Truong THCS Luong Tam‘ ); Write ( ‘Ap – Luong Tam – Long My – Hau Giang‘ ); End Các thao tác soạn thảo chương trình - F2: Lưu chương trình soạn thảo - F3: Tạo file mở file cũ - F9: Dịch thử chương trình để kiểm tra lỗi - Ctrl - F9: Chạy chương trình - Alt - F5: Xem kết chạy chương trình - Alt - X: Thốt khỏi hình soạn thảo chương trình Pascal • Insert: Chuyển qua lại chế độ đè chế độ chèn • • • • • • • • • Home: Đưa trỏ đầu dòng End: Đưa trỏ cuối dòng Page Up: Đưa trỏ lên trang hình Page Down: Đưa trỏ xuống trang hình Del: Xố ký tự vị trí trỏ Back Space (): Xóa ký tự bên trái trỏ Ctrl-PgUp: Đưa trỏ đầu văn Ctrl-PgDn: Đưa trỏ cuối văn Ctrl-Y: Xóa dịng vị trí trỏ Các thành phần phần khai báo chương trình a Từ khóa Các từ khố từ dùng để khai báo, đặt tên cho đối tượng Pascal, ta đặt tên cho đối tượng đó, khơng đặt trùng tên với từ khố Bảng từ khố ngơn ngữ Pascal gồm: and, array, begin, case, const, div, do, downto, else, end, file, for, function, goto, if, in, label, mod, nil, not, object, of, or, procedure, program, record, repeat, set, string, then, to, type, unit, until, uses, var, while, with Turbo Pascal khơng phân biệt ký tự thường hoa Ví dụ, cách viết sau có ý nghĩa nhau: Begin, BEGIN, begin, beGIN, bEGIN, b Tên (định danh) GV: Lê Văn Lại Trang Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 Tên (định danh) dãy ký tự dùng để đặt tên cho hằng, biến, kiểu, tên chương trình Khi đặt tên, ta phải ý số điểm sau: Không đặt trùng tên với từ khố Ký tự tên khơng bắt đầu ký tự đặc biệt chữ số Không đặt tên với ký tự space, ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’,‘&’, ‘* ’, ‘(‘, ‘)’, ‘-‘, ‘+’, ‘/’, ‘\’, ‘.’, ’,’,.v.v c Hằng - Hằng đại lượng có giá trị khơng thay đổi suốt chương trình - Cú pháp khai báo: CONST = ; Ví dụ: CONST Max = 100; Name = 'Tran Van Hung'; Continue = FALSE; d Biến - Biến đại lượng mà giá trị thay đổi q trình thực chương trình - Cú pháp khai báo:VAR ,, : ; Ví dụ: VAR x, y: Real; {Khai báo hai biến x, y có kiểu Real} a, b: Integer; {Khai báo hai biến a, b có kiểu integer} Các thành phần phần thân chương trình a Biểu thức: Biểu thức (expression) cơng thức tính tốn mà bao gồm phép toán, hằng, biến, hàm dấu ngoặc đơn Ví dụ: (x +sin(y))/(5-2*x) biểu thức số học (x+4)*2 = (8+y) biểu thức logic Trong biểu thức, thứ tự ưu tiên phép tốn liệt kê theo thứ tự sau: • Dấu ngoặc ( ) • Phép tốn ngơi (NOT, -) • Phép toán *, /, DIV, MOD, AND • Phép tốn +, -, OR, XOR • Phép tốn so sánh =, , =, , IN Chú ý: Một hăng, biến, hàm xem biểu thức, biểu thức đơn giản b Câu lệnh Câu lệnh đơn giản - Câu lệnh gán (:=): :=; - Các lệnh xuất nhập liệu: READ/READLN, WRITE/WRITELN Câu lệnh có cấu trúc - Câu lệnh ghép: BEGIN END; - Các cấu trúc điều khiển: IF , CASE , FOR , REPEAT , WHILE Lệnh xuất liệu: Để xuất liệu hình, ta sử dụng ba dạng sau: (1) WRITE( [, , ]); (2) WRITELN( [, , ]); (3) WRITELN; Các thủ tục có chức sau: (1) Sau xuất giá trị tham số hình trỏ khơng xuống dịng (2) Sau xuất giá trị tham số hình trỏ xuống đầu dịng (3) Xuất hình dịng trống Các tham số hằng, biến, biểu thức Nếu có nhiều tham số câu lệnh tham số phải phân cách dấu phẩy GV: Lê Văn Lại Trang 10 Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 1.3.5 n (Nếu n lẻ) n!! = 2.4.6 n (Nếu n chẵn) 7.Nhập số nguyên dương n Tính : S= 8.Nhập số nguyên dương n Tính : S= * + * + * + * + + + n(n + 1) + + + + + + n 12 + 2 + 32 + + n Nhập số nguyên dương n Tính : Chủ đề 7: PHƯƠNG TRÌNH - BẤT PHƯƠNG TRÌNH Giải phương trình bậc ax + b = với a,b số thực nhập từ bàn phím ? 2.Giải biện luận phương trình bậc hai ax2 + bx + c = : ax + b = c dx + e = f Giải biện luận hệ phương trình bậc hai ẩn : Giải biện luận bất phương trình bậc ax + b > : 5.Viết chương trình để giải tốn sau: Trăm trâu ăn trăm bó cỏ Trâu đứng ăn năm Trâu nằm ăn ba Lụ khụ trâu già Ba bó Hỏi có trâu loại ? 6.Viết chương trình in tất nghiệm nguyên dương phương trình: x2 + y2 = n với n (n>0) nhập từ bàn phím 7.Viết chương trình nhập số ngun từ bàn phím kiểm tra xem có phải lập phương số hay khơng (tức có dạng z3 với z số nguyên) 8.Tìm tất số nguyên dương x,y,z thỏa mãn phương trình ax+by+cz=n; a,b,c,n 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 liệu thỏa mãn yêu cầu đề Nếu người sử dụng nhập sai thơng báo nhập sai hỏi người dùng có muốn nhập lại hay khơng, khơng kết thúc chương trình 2) Khơng dùng vòng lặp lồng điều kiện dừng vịng lặp khơng vượt q ngưỡng mà từ ta biết chắn phương trình khơng có nghiệm 3) Nếu phương trình có nghiệm liệt kê có thứ tự nghiệm phương trình theo dạng sau : Giả sử phương trình có dạng 15x+28y+24z=454, in sau: STT x y z 13 2 10 6 14 7 10 10 10 14 14 18 10 22 Ngược lại thơng báo phương trình khơng có nghiệm GV: Lê Văn Lại Trang 48 Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 Chủ đề : TÍNH GẦN ĐÚNG VỚI ĐỘ CHÍNH XÁC CHO TRƯỚC 1 1 + + …+ với n số nguyên dương chưa biết trước n chương trình dừng lại 1/n nhỏ số cho trước 0,001 2.ập số x thực số n nguyên 1, tính gần ex theo cơng thức : 1.Hãy tính giá trị biểu thức: 3.Lập số thực A đảm bảo 0 , tính gần cosx : 6.Tính gần giá trị Ln(x) , < x , với sai số ss = 0.01, cách bỏ số hạng có trị tuyệt đối < ss : Chủ đề 9: MỘT SỐ BÀI TỐN VỀ HÌNH HỌC 1.Lập chương trình nhập số thực a, b, c cho biết số a, b, c vừa nhập có phải cạnh tam giác hay không ? Nếu số a, b, c vừa nhập cạnh tam giác tính diện tích tam giác theo cơng thức HêRơng : S= p ( p − a )( p − b)( p − c ) Trong : p= a+b+c 2 : BÀI TỐN DIỆN TÍCH TAM GIÁC Cho hình chữ nhật ABCD, cạnh AB=a, cạnh BC=b a,b số nguyên dương khoảng [1, 100] Một điểm M chạy đoạn BC với BM=x x số nguyên duơng khoảng [0, b], điểm N chạy đoạn CD với CN=x Tính giá trị lớn giá trị nhỏ diện tích tam giác AMN M, N lưu động Dữ liệu vào: Được cho tập tin CHUNHAT.inp, gồm dòng ghi hai số nguyên dương a, b Hai số cách khoảng trắng GV: Lê Văn Lại Trang 49 Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 Dữ liệu : Yêu cầu xuất tập tin CHUNHAT.out, gồm bốn dòng: + Dòng đầu giá trị lớn diện tích tam giác AMN (một chữ số thập phân) + Dòng thứ hai giá trị x để diện tích tam giác AMN đạt giá trị lớn + Dòng thứ ba giá trị nhỏ diện tích tam giác AMN (một chữ số thập phân) + Dòng thứ tư giá trị x để diện tích tam giác AMN đạt giá trị nhỏ Ví dụ: GV: Lê Văn Lại Trang 50 Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 Chủ đề 10: MỘT SỐ BÀI TOÁN TỔ HỢP (Giải phương pháp BackTracking) 1.Viết chương trình in tất hốn vị dãy số tự nhiên (1,2,3,…,n) với n nhập từ bàn phím ? 2.Viết chương trình in tất chỉnh hợp n chập r n số tự nhiên với n, r nhận từ bàn phím ? 3.Viết chương trình in tất tổ hợp n chập r n số tự nhiên với n, r nhận từ bàn phím ? Bài tốn hậu : Viết chương trình xếp n qn hậu bàn cờ vua có n*n cho không quân ăn quân ? Bài toán “Mã tuần” : Một quân mã đặt vị trí bàn cờ Hãy đường cho quân mã hết bàn cờ trở lại ô ban đầu với điều kiện không lại ô qua Chuyên đề 11: MỘT SỐ PHƯƠNG PHÁP THÔNG DỤNG I KỸ THUẬT DUYỆT ĐỆ QUY QUAY LUI (BACKTRACKING): Khái niệm: Kỹ thuật quay lui (Backtracking) phương pháp tìm lời giải cho tốn khơng theo luật tính tốn cố định mà phương pháp “thử - sai”: tìm lời giải cách “làm thử”, lựa chọn chấp nhận ghi nhớ lựa chọn tiến hành bước thử tiếp theo, ngược lại lựa chọn thích hợp làm lại bước trước hành động gọi “quay lui” (Back tracking) Thông thường ta phải duyệt bước giải cách gọi thủ tục đệ quy nên phương pháp gọi duyệt đệ quy quay lui Có phương pháp thường dùng duyệt đệ quy quay lui là: vét cạn, cắt tỉa nhánh cận Cách cài đặt: Procedure Try (i: Integer); Var j : Integer; Begin If i>n then ; {Exit cần nghiệm} Else If then Begin ; Try (i + 1); {Gọi đệ quy để chọn tiếp i + 1} ; End; End; Lưu ý: Thủ tục đệ quy quay lui thường gọi với lệnh gọi : Try(1); Ví dụ: Chương trình xếp n quân hậu bàn cờ có n*n cho khơng qn ăn quân Chẳng hạn, với bàn cờ 8x8=64 ô, ta có cách xếp sau: Ta có chương trình Pascal sau: Program Xep8hau; Uses Crt; Const Max=8; Var x: Array [1 Max] of Integer; a: Array [1 Max] of Boolean; b: Array [2 Max*2] of Boolean; c: Array [-Max+1 Max-1] of Boolean; n,i,dem: Integer; Procedure Print; Var j: Integer; Begin Dem:=Dem+1; Write (dem,')'); For j:= to n Write (x[j]:3); GV: Lê Văn Lại Writeln; End; Procedure Try (i: Integer); Var j: Integer; Begin If i > n then Print Else For j:=1 to n If Not (a[j]) and Not (b[i+j]) and Not (c[ij]) then Begin x[i]:=j; a[j]:=True; b[i+j]:=True; Trang 51 Chuyên đề Bồi dưỡng học sinh giỏi môn Tin học Năm học 20172018 c[i-j]:=True; End; Try (i+1); Begin {Main Program} a[j]:=False; Clrscr; b[i+j]:=False; Repeat c[i-j]:=False; Write ('Nhap n (n