1
1
Chuyên đề
Chuyên đề
:
:
RÈN LUYỆN KỸ NĂNG LẬP TRÌNH
RÈN LUYỆN KỸ NĂNG LẬP TRÌNH
Cho HSG tin THCS
Cho HSG tin THCS
GV: Võ Văn Sửu.
Nội dung chuyên đề
Nội dung chuyên đề
I. Rèn luyện PP tìm tòi thuật toán
II. Rèn luyện phong cách lập trình.
III. Các dạng toán bồi dưỡng HSG THCS
2
2
I
I
.
.
Rèn luyện PP tìm tòi thuật toán
Rèn luyện PP tìm tòi thuật toán
1. Tại sao phải rèn luyện cho hs
khả năng tìm tòi thuật toán.
4
4
Chương trình=Thuật toán+CTDL
5
5
•
Thuật toán là phần quan trong bậc nhất để tạo nên một
chương trình.
•
Ở tiểu học, học sinh chưa được làm quen với khái niệm
thuật toán. Do vậy khi học lập trình cái khó khăn ban đầu
của học sinh chính là tìm thuật toán để giải bài toán đã cho.
•
Một học sinh muốn tiến sâu, tiến xa trong tương lai phải có
tư duy thuật toán tốt.
6
6
•
Làm quen và rèn luyện tư duy thuật toán cho
học sinh mới bắt đầu học lập trình là một yêu
cầu thiết yếu.
•
Không nên vội vàng cho học sinh làm việc
trên máy tính luôn khi mới bắt đầu học.
7
7
2. Xác định bài toán
•
Xác định INPUT và OUTPUT của bài toán.
•
Đặc tả mô hình toán học của bài toán.
3. Tìm thuật toán
3. Tìm thuật toán
8
8
•
Ở THCS nên sử dụng cách trình bày
thuật toán bằng SĐK.
•
Khai thác ví dụ, hiểu ví dụ đã có và tìm
các ví dụ khác.
•
Trình bày thuật toán từ tổng thể đến chi
tiết
( phương pháp min dần)
Ví dụ: Kiểm tra số n có nguyên t
Ví dụ: Kiểm tra số n có nguyên t
ố?
ố?
Phương án thô:
9
9
Nhập n
Có ước
Thực sự
n
N không
NT
N là sô
NT
+
-
BĐ
KT
•
Phương án mịn bước 1.
•
Đếm số ước của n
10
10
i:=0; d:=0
i:=i+1
n mod i=0
d:=d+1
I >=n D=2
N khgntN nt
Nhập n
-
+
+
-
+
-
•
Phương án mịn 2:
•
Duyệt nếu có ước trong khoảng từ
•
2 đến căn n thì n không phải NT
•
P:=Trunc(Sqrt(n))
•
OK: Biến Boolean;
11
11
N
Ok:=N>1
i:=1
i:=i+1
N modi=o
Ok:=False
I > p
Ok=true
N NTN kg NT
+
-
+
-
+
4. Giải một bài, gợi ý nhiều
4. Giải một bài, gợi ý nhiều
bài
bài
.
.
•
Có nhiều bài toán tuy phát biểu khác nhau nhưng cùng
thuật toán, cùng cách giải.
•
Khi ra và hướng dẫn HSG giải một bài tập, phải chỉ cho họ
biết nhiều bài toán khác có các giải hoàn toàn tương tự
12
12
•
Ví dụ:
•
Cho dãy các phần tử a1, a2,…, an
•
Yêu cầu tìm số lớn nhất.
TT: +max:=a1;
+ For i:=1 to n do
if max< ai then max:=ai
Nhận xét TT bài này có dạng:
+ Khởi tạo giá trị ban đầu
+ Duyệt, lưu lại giá trị tối ưu hơn.
13
13
Cho học sinh đề xuất các bài toán tương tự và cách giải: Cho
dãy số nguyên ai
+ Tìm ai mà tổng chữ số của nó là lớn nhất.
+ Tìm số nguyên tố lớn nhất trong dãy.
+ Tìm số ai có nhiều chữ số nhất
+ Tìm 3 số liên tiếp có tổng lớn nhất…
+ Tìm 2 chỉ số i≠ j để ai+aj max
+ Tìm đoạn nhiều nhất các số liên tiếp bằng nhau
+ Tìm đoạn các số liên tiếp mà tổng max
+ Tìm số ai có tổng chữ số đầu và cuối max
…
14
14
II. Rèn luyện phong cách lập trình.
.
CHƯƠNG TRÌNH=TT+CTDL+NTLT
15
15
•
Tuân theo các quy chuẩn, các quy ước.
•
Cách trình bày rõ ràng, sáng sủa nổi bật được cấu trúc logic
của chương trình.
•
Người dùng dễ đọc, dễ hiểu nó.
16
16
Lợi ích của việc trình bày cẩn thận:
•
Thể hiện tốt cấu trúc lôgic của mã lệnh
•
Cải thiện khả năng đọc
•
Bảo đảm sự chính xác trong các thay đổi
•
Các lợi ích hệ quả của các lợi ích trên
+ Chương trình ít mắc lỗi và dễ sửa
chữa khi mắc lỗi.
+ Tăng khả năng làm việc theo nhóm,
17
17
1. Quy ước về cách đặt tên cho các
định danh.
a) Đặt tên cho biến.
•
Tên biến nên thể hiện được ý nghĩa: thông thường các biến
nguyên như i, j, k, n dùng làm biến lặp; x, y dùng làm biến
tọa độ…
•
Biến lưu trữ nên đặt tên gợi nhớ.
18
18
19
19
b) Đặt tên hằng: Tất cả các ký tự nên viết hoa.
Ví dụ: Const MAXN= 10000;
INPUT = ‘Baitap.inp’;
OUTPUT = ‘Baitap.out’;
c) Đặt tên cho chương trình con:
Tên chương trình con thường bắt đầu bằng chữ hoa. Vì chương
trình con thường thực hiện một chức năng nào đó nên tên hay
bắt đầu bằng động từ.
•
Ví dụ: TimMax( ); GetNum( );
2. Phong cách viết mã nguồn
2. Phong cách viết mã nguồn
a) Trình bày tổng thể chương trình:
•
Chương trình nên tách thành nhiều đơn thể, mỗi đơn thể
thực hiện một công việc, (chương trình con).
•
Nên sử dụng các tham số khi truyền thông tin cho các
chương trình con. Tránh sử dụng các biến toàn cục để
truyền thông tin giữa các chương trình con.
20
20
•
Cách trình bày chương trình phải nhất quán dễ đọc, dễ hiểu.
•
Tính đơn giản, rõ ràng.
•
Văn bản chương trình không trườn ra khỏi màn hình
•
Thứ tự: khai báo đơn vị, khai báo
hằng, khai báo kiểu, khai báo biến toàn
cục, khai báo chương trình con.
•
Không nên sử dụng Goto vì sẽ phá vỡ tính tuần tự khi thực
hiện chương trình.
21
21
•
b) Quy tắc trình bày dòng lệnh
•
Mỗi câu lệnh nên được đặt riêng trên một dòng để
chương trình dễ đọc và dễ quan sát cách thực hiên khi dùng
watch để tìm lỗi.
•
Sử dụng tab để canh lề chương trình (các lệnh ngang cấp
thì phải tab vào như nhau): Điều này sẽ giúp chương trình
rõ ràng và dễ quản lý.
22
22
Ví dụ:
Ví dụ:
•
Không nên
•
For i := 1 to n do Begin
Lệnh1;
•
Lệnh2;
•
End;
•
Nên
•
For i := 1 to n do
•
Begin
•
Lệnh1;
•
Lệnh2;
•
End;
23
23
c) Sử dụng khoảng trắng:
c) Sử dụng khoảng trắng:
•
Khó đọc
•
If (a<c)and(c mod
2=0)then d:=a+c;
•
a:=b*c
•
TimMax(a,b,c);
•
Dễ đọc
•
If ( a < c ) and ( c mod 2
= 0 ) then d := a + c;
•
a := b * c;
•
TimMax(a, b, c);
24
24
d) Nên định nghĩa hằng:
d) Nên định nghĩa hằng:
•
Không nên
•
……………
•
For i := 1 to 100 do A[i]
:= Random(100);
•
While i<=100 do…
•
Nên
•
Const MAXN = 100;
•
……
•
For i :=1 to MAXN do
•
A[i] :=Random(MAXN)
•
While i <= MAXN do …
25
25