1. Chuyên đề biên soạn2. Lí thuyết và bài tập ngôn ngữ lập trình pascal3. Sáng tạo trong lập trình – tập 14. Tuyển chọn các bài toán tin học dành cho học sinh giỏi THPT5. Tuyển tập đề thi Olympic các năm6. Sách chuyên tin 1, 2, 3 + Sách bài tập7. 100 bài toán tin học nhà trường (file)8. Các chuyên đề tin học của Lê Minh Hoàng (file).
Tài liệu bồi dưỡng HSG – GV: MỘT SỐ KIỂU DỮ LIỆU LỚN TRONG FREE PASCAL Tên Giá trị Giải thích Kiểu nguyên Int64 -2^63 2^63-1 Dùng 64 bít để biểu diễn, độ dài khoảng 10^18 Qword 2^64-1 Không chứa số âm Kiểu ký tự widestring 2^32 ansistring Giới hạn phụ thuộc vào liệu dùng CÁCH ĐO NHỊP THỰC HIỆN TRONG FREE Khai báo unit: USES SYSUTILS; Khai báo biến: Start,Stop:Ttimestamp; Sử dụng: start:=Datetimetotimestamp(now); {Thực thi công việc} stop:=datetimetotimestamp(now); writeln ('So nhip: ' stop.time-start.time); TÀI LIỆU THAM KHẢO Chuyên đề biên soạn Lí thuyết tập ngơn ngữ lập trình pascal Sáng tạo lập trình – tập Tuyển chọn toán tin học dành cho học sinh giỏi THPT Tuyển tập đề thi Olympic năm Sách chuyên tin 1, 2, + Sách tập 100 toán tin học nhà trường (file) Các chuyên đề tin học Lê Minh Hoàng (file) Tài liệu bồi dưỡng HSG – GV: CHUYÊN ĐỀ 2: ĐỆ QUY A ĐỆ QUY Khái niệm: Trong chương trình, CTC gọi CTC khác vào làm việc Nếu CTC gọi lại gọi đệ qui Phương pháp thiết kế giải thuật đệ qui Tham số hóa tốn Tìm trường hợp suy biến Phân tích trường hợp chung (đưa tốn loại nhỏ hơn) Ví dụ: Viết hàm đệ qui để tính n! = 1.2 n Tham số hóa: n! = gt(n); Gt(0) = (trường hợp suy biến) Gtl(n) = n*Gt(n-1) (trường hợp chung) Hàm sau: Function Gt(N: Byte) : LongInt; Begin If N=0 then gt := Else gt := N*gt(N-1); End; Lưu ý: + Trong thủ tục hàm đệ qui cần chứa lệnh thể tính dừng đệ qui Nghĩa thủ tục , hàm đệ qui gọi tới số hữu hạn lần gặp điều kiện ( để khơng gọi tới ) Trong hàm Gt, điều kiện dừng 0! = 1, lần gọi tới hàm Gt N giảm đơn vị nên dẫn tới trường hợp N=0 + Thủ tục hàm đệ qui phải thể tính đệ qui: Nó gọi tới VD: Gt := N*gt(N-1); Ưu, khuyết điểm đệ quy: - Chương trình sử dụng pp đệ quy thường gọn, dễ hiểu, diễn tả ý tưởng quy nạp hay hạ bậc toán học tức đưa vấn đề phức tạp vấn đề đơn giản - Chương trình sử dụng thuật toán đệ quy phải thực tập lớn thao tác trùng lặp, tốn nhiều nhớ, khuyết điểm khắc phục cách phá vỡ đệ quy dùng mảng để tính tốn giá trị bước - Thuật toán đệ quy thuật toán thơng dụng, có nhiều tốn khơng thể giải khơng dùng thuật tốn đệ quy toán tháp hà nội III BÀI TẬP: Bài 1: Lập trình tốn : Tính số cách chia M vật thành N phần theo qui luật : Tài liệu bồi dưỡng HSG – GV: N Si M S1 S2 SN-1 SN 0 ( Si số vật phần thứ i ) i 1 (10} If N=0 then Chia := Else {N>0} If M0 then Exit; End; 105 Tài liệu bồi dưỡng HSG – GV: Chapnhan := True; End; Procedure Dat(x,y,hg : Byte); Var i : Byte; Begin Case hg of : For i:=1 to M[x,y+i-1] := T[q,4]; : For i:=1 to M[x+i-1,y] := T[q,4]; End; End; Function Duongcheo(B : Banco): LongInt; Var dc: LongInt; i : Byte; Begin dc := 0; For i:=1 to If (B[i,i]= 0) then dc := dc*10 Else dc := dc*10+B[i,i]; Duongcheo := dc; End; Procedure Xoa(x,y,hg : Byte); Var i : Byte; Begin Case hg of : For i:=1 to M[x,y+i-1] := 0; : For i:=1 to M[x+i-1,y] := 0; End; End; Procedure GhiLB; Var i,j : Byte; Begin For i:=1 to Begin For j:=1 to Write(F,LB[i,j]:3); Writeln(F); End; End; Procedure GhiLM; Var i,j : Byte; Begin For i:=1 to Begin For j:=1 to Write(F,LM[i,j]:3); Writeln(F); End; Writeln(F); End; 106 Tài liệu bồi dưỡng HSG – GV: Procedure Ghitoiuu; Var i : Byte; p : LongInt; Begin FillChar(D,Sizeof(D),False); FillChar(B,Sizeof(B),0); For i:=1 to Doi(i); p := duongcheo(B); If p>Ldcheo then Begin Ldcheo := p; LB := B; LM := M; End; End; Procedure Vet(x,y : Byte); Var hg,i,j : Byte; Begin Tim(x,y); For hg := to If chapnhan(x,y,hg) then Begin Inc(q); Dat(x,y,hg); If q=21 then Ghitoiuu Else Vet(x,y); Dec(q); Xoa(x,y,hg); End; End; Procedure Datnot; Var i,j,k,dem : Byte; Begin FillChar(D,Sizeof(D),False); For i:=1 to D[LM[i,i]]:= True; For k:=1 to 21 If Not D[k] then Begin dem := 0; For i:=1 to For j:=1 to If LM[i,j]=k then Begin Inc(dem); LB[i,j]:= T[k,dem]; End; End; 107 Tài liệu bồi dưỡng HSG – GV: End; BEGIN Clrscr;{ TaoF;} DocF; Assign(F,Fo); ReWrite(F); Ldcheo := 0; Writeln('Please wait '); For x:=1 to For y:=1 to Begin FillChar(M,Sizeof(M),0); FillChar(B,Sizeof(B),0); q := 0; M[x,y] := 22; Vet(1,1); End; Datnot; GhiLM; GhiLB; Close(F); Writeln('Da xong '); Readln; END Bài làm theo sơ đồ sau : - Cho ô trống tuỳ ý bàn cờ , coi Triminô ( nghĩa không để ý tới số chúng ) , đặt 21 quân Triminô lên bàn cờ , đựơc kết : ô trống vào vị trí (3,3) ; (3,6) ; (6,3) ; (6,6) đặt Tất có 1424 cách đặt theo kiểu (tạm gọi cách cấu hình bàn cờ ) - Với cách đặt , xếp Triminô vào vị trí đường chéo từ góc trên_trái góc dưới_phải , cho vị trí tốt : + Xem (i,i) xét vị trí thứ Triminơ Ti chứa (i,i) cấu hình xét (gọi vị trí vt ) + Duyệt Triminơ chưa dùng 21 Triminơ , tìm có số lớn vị trị vt Nếu vt=1 phải tìm số lớn vị trí Gọi tìm Tx + Trên bàn cờ thay tương ứng Ti Tx , xoá Tx sử dụng - Tính đường chéo , thấy tốt lưu lại bàn cờ cấu hình tương ứng - Đặt nốt Triminơ chưa dùng vào bàn cờ theo lưu cấu hình ( cần cách đặt nốt ) 108 ... DIDAO.OUT 2345 -5 -4 -3 4 -1 -3 23465 235 2435 245 2465 24675 Tong so duong di: Duong di toi uu: 235 18 Tài liệu bồi dưỡng HSG – GV: Bài 1: Đường thành phố P Q program duong_ di_P_Q;... bàn cờ ) C11-B-02 Điền số từ đến N*N vào hình vng N*N (N