Tải bản đầy đủ (.docx) (13 trang)

SKKN Tin - Một số kinh nghiệm chuyển bài toán lập trình Pascal sang lập trình Scratch

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (382 KB, 13 trang )

I. LÝ DO CHỌN ĐỀ TÀI
Lập trình Pascal là một mơn học có thể tạo cho học sinh tính tư duy sáng tạo
và tinh thần làm việc độc lập cao. Tuy nhiên với cách lập trình bằng cách viết câu
lệnh quá phức tạp và giao diện đồ họa giản đơn như hiện nay đã làm cho Pascal trở
nên khó khăn và xa lạ đối với người sử dụng nhất là học sinh.
Bên cạnh đó ngơn ngữ lập trình Scratch là một mơi trường lập trình ứng
dụng đặc biệt, trong đó việc “viết” lệnh sẽ được thực hiện bằng thao tác “kéo thả”.
Thực tế đã chứng minh tính hấp dẫn của mơi trường lập trình kéo thả như Scratch,
sự đam mê lập trình của trẻ nhỏ. Scratch vơ cùng thích hợp cho cấp Tiểu học,
Trung học cơ sở của Việt Nam. Chính vì vậy trong Chương trình đổi mới giáo dục
của Việt Nam sau năm 2018, Bộ Giáo dục & Đào tạo đã quyết định đưa nội dung
kiến thức Khoa học máy tính trong mơn Tin học vào ngay từ cấp Tiểu học, và
những ngơn ngữ lập trình kéo thả như Scratch sẻ là một lựa chọn tốt cho nhà
trường và học sinh. Những năm gần đây lập trình Scratch được chọn để tổ chức các
kỳ thi Tin học trẻ không chun cấp Quốc gia.
Để giải được bài tốn với ngơn ngữ lập trình Scratch thì chúng ta cần trang
bị cho mình những kiến thức cơ bản về Scratch, chuyển những kiến thức lập trình
đã học sang lập trình Scratch. Vì vậy tôi chọn đề tài: “ Một số kinh nghiệm
chuyển bài tốn lập trình Pascal sang lập trình Scratch”.
1. Nhiệm vụ của cá nhân
Trong đề tài này đầu tiên tôi tìm hiểu xem lập trình Scratch là gì, cách sử
dụng như thế nào. Kế đó tơi nghiên cứu các kiến thức cơ bản để giải bài toán đơn
giản bằng lập trình Scratch. Cuối cùng là chuyển các bài tốn từ lập trình Pascal đã
có sang lập trình Scratch.
2. Thực trạng trong phạm vi cơng việc
Trong q trình giảng dạy lập trình Pascal trong nhà trường tơi thấy rằng
Pascal khó sử dụng, học sinh viết câu lệnh sai cú pháp, chưa u thích mơn học.
Trong khi đó lập trình Scratch là một mơi trường lập trình trực quan, sinh
động, dễ sử dụng, ít sai lỗi cú pháp và tạo được niềm đam mê nghiên cứu cho
người học.
Sratch rất thích hợp để tạo ra các ứng dụng đồ hoạ, hiệu ứng, bài học, bài


giảng, mơ phỏng kiến thức, trình diễn, sách điện tử, trò chơi,... rất phù hợp với nhà
trường, giáo viên và học sinh.
II. NHỮNG GIẢI PHÁP ĐÃ THỰC HIỆN
1. Kiến thức để lập trình với Scratch:
Nhằm giúp cho người học có đủ khả năng chuyển bài tốn lập trình Pascal
sang lập trình Scratch thì người học phải trang bị cho mình một số kiến thức cơ
bản về lập trình Scratch. Trong nội dung này tôi chỉ đề cập đến những kiến thức về
xử lý số, xử lý xâu kí tự và các lệnh lệnh cơ bản trong lập trình Scratch.


PASCAL

SCRATCH

Ý NGHĨA

File -> Save

File -> Save

Lưu bài

File -> Open

File -> Open

Mở bài

Ctrl + F9


Chạy chương trình

Write(‘Chào các bạn’);

In thơng tin ra màn hình

Write(‘Nhập n=’);
Readln(n);

Nhập giá trị từ bàn phím cho
biến n

Var n:Integer;

Khai báo biến n kiểu số nguyên

Var a:Array[1..10] of integer;

Khai báo mảng a gồm 10 phần tử
số nguyên

+

Phép cộng

-

Phép trừ

*


Phép nhân

/

Phép chia

Mod

Phép chia lấy phần dư

Div
15 Div 3
<
=
>

Phép chia lấy phần nguyên
Bé hơn
Bằng
Lớn hơn
2


AND
OR
NOT




a:=10;

Gán giá trị 10 cho biến a

s1+s2

Kết xâu hoặc kí tự s1 với s2

s[2]

Lấy phần tử thứ 2 của xâu s

Length(s)

Lấy chiều dài xâu s

Abs(a)

Lấy giá trị tuyệt đối biến a

a có n phần tử
a[n+1]:=10;

Thêm vào cuối mảng a giá trị 10

Delete(a,1,1);
Thực hiện trên xâu kí tự

Xố phần tử thứ 1 của mảng a


Insert(‘10’,a,2);
Thực hiện trên xâu kí tự

Thêm giá trị 10 vào vị trí 2 của
mảng a

a[1]

Lấy phần tử thứ 1 của mảng a

a[i]:=n;

Gán biến n cho phần tử thứ i

Length(a)
Thực hiện trên xâu kí tự

Số phần tử của mảng a

Hoặc
Phủ định

If <Điều kiện> Then
<Câu lệnh>;

Câu lệnh điều kiện dạng thiếu

If <Điều kiện> Then
<Câu lệnh 1>


Câu lệnh điều kiện dạng đủ

Else <Câu lệnh 2>;

3


If <Điều kiện1> Then
<Câu lệnh 1>
Else If <Điều kiện 2> Then

Câu lệnh điều kiện dạng lồng

<Câu lệnh 2>
Else <Câu lệnh 3>;
Câu lệnh lặp với số lần biết trước
(lặp n lần)

For..To..Do

For i:=1 to n do
Câu lệnh lặp lồng

For j:=1 to m do

Repeat .. Until

Câu lệnh lặp với số lần chưa biết
trước


Break

Thoát khỏi vòng lặp gần nhất khi
thoả điều kiện
2. Cách chuyển bài tốn Pascal sang Scratch:
2.1. Bài 1: Tính tổng

Viết chương trình nhập vào hai số ngun a, b. Tính tổng của hai số a,b và in
kết quả tổng ra màn hình.
* Thuật tốn:
Bước 1 : Nhập giá trị a.
Bước 2 : Nhập giá trị b.
Bước 3 : Tính tổng hai số a, b.
Bước 4 : In tổng ra màn hình và kết thúc.
PASCAL

SCRATCH

4


Var a,b,tong:Integer;
Begin
Write('Nhap a='); Readln(a);
Write('Nhap b='); Readln(b);
tong:=a+b;
Write('Tong=',tong);
End.
2.2. Bài 2: So sánh
Viết chương trình nhập vào hai số a, b bất kì. So sánh hai số a, b. Nếu a

thì in ra màn hình “a nhỏ hơn b”. Nếu a lớn hơn b thì in ra màn hình “a lớn hơn b”.
Nếu a=b thì in ra màn hình “a bằng b”.
* Thuật toán:
Bước 1: Nhập giá trị a.
Bước 2: Nhập giá trị b.
Bước 3: Nếu a>b thì thơng báo “a lớn hơn b” và kết thúc. Nếu abáo “a nhỏ hơn b” và kết thúc. Ngược lại thông báo “a bằng b” và kết thúc.
PASCAL

SCRATCH

Var a,b:Real;
Begin
Write('Nhap a='); Readln(a);
Write('Nhap b='); Readln(b);
If a>b Then Write(a,'Lon hon',b)
Else If aElse Write(a,'Bang',b);
End.

2.3. Bài 3: Xâu đảo ngược
Viết chương trình nhập vào xâu s. In ra màn hình xâu đảo ngược của xâu s.
* Thuật toán:
Bước 1: Nhập giá trị xâu s.
5


Bước 2: Gán giá trị i bằng chiều dài của xâu s (i=Length(s)).
Bước 3: Lặp i lần, tại mỗi vòng lặp in s[i], giảm i 1 đơn vị và kết thúc.
PASCAL


SCRATCH

Var s:String;
i:Integer;
Begin
Write('Nhap s='); Readln(s);
For i:=Length(s) Downto 1 Do
Write(s[i]); End.
2.4. Bài 4: Tính tổng các số chẳn từ 1 đến n
Viết chương trình nhập vào số ngun dương n tính tổng các số chẳn từ 1
đến n. In giá trị tổng ra màn hình.
* Thuật tốn:
Bước 1: Nhập giá trị n.
Bước 2: Lặp n lần, tại mỗi vòng lặp kiểm tra giá trị biến i. Nếu i chia hết cho
2 thì cộng i vào biến tổng. Tăng giá trị i lên 1 đơn vị.
Bước 3: In tổng ra màn hình và kết thúc.
PASCAL

SCRATCH

Var i,n,tong:Integer;
Begin
Write('Nhap n=');
Readln(n);
For i:=1 To n Do
If i Mod 2=0 Then
tong:=tong+i;
write('Tong=',tong);
End.

2.5. Bài 5: Tính tổng các chữ số của số nguyên n
Viết chương trình nhập vào số nguyên n. Tính tổng các chữ số của n
* Thuật tốn:
Bước 1: Nhập giá trị n.
6


Bước 2: Trong khi n≠0 thì lặp, du=n Mod 10, nguyen=n Div 10,
tong=tong+du, n=nguyen.
Bước 3: In tổng ra màn hình và kết thúc.
PASCAL

SCRATCH

While n<>0 Do
Begin
du:=n Mod 10 ;
tong:=tong+du ;
nguyen:=n Div 10 ;
n:=nguyen ;
End ;

2.6. Bài 6: Chuyển đổi thời gian (Bài 2 đề thi học sinh giỏi cấp huyện 2017 - 2018 )
Viết chương trình chuyển đổi thời gian định dạng 12 giờ (AM/PM ) thành
thời gian định dạng 24 giờ.
* Thuật toán:
Bước 1: Nhập giá trị xâu s chứa thời gian hh:mm:ssAM hoặc hh:mm:ssPM.
Bước 2: Nếu s=12:00:00AM thì in ra thơng báo 00:00:00 và kết thúc. Nếu
s=12:00:00PM thì in ra thông báo 12:00:00 và kết thúc. Nếu s[9]=P và s[10]=M thì
hh=s[1]+s[2], chuyển hh thành số và cộng 12. Kết hh với s từ vị trí 3 đến 8, in s và

kết thúc. Ngược lại in s từ vị trí 1 đến 8 và kết thúc.
SCRATCH

7


2.7. Bài 7: Tổng các ước (Bài 3 đề thi học sinh giỏi cấp huyện 2017 - 2018 )
Viết chương trình tính tổng các ước của các ước số ngun n.
* Thuật toán:
Bước 1: Nhập giá trị n.
Bước 2: Lặp n lần tại mỗi vòng lặp thứ i, nếu n chia hết cho i thì lặp i lần tại
mỗi vịng lặp thứ j, nếu i chia hết cho j thì tong=tong+j
Bước 3: In tổng ra màn hình và kết thúc.
PASCAL

SCRATCH

8


Var n,i,j,tong:Longint;
Begin
Write('Nhap n=');
readln(n);
For i:=1 To n Do
If n Mod i=0 Then
For j:=1 To i Do
If i Mod j=0 then
tong:=tong+j;
write(tong);

End.

2.8. Bài 8: Công tắc đèn (Bài 4 đề thi học sinh giỏi cấp huyện 2017 - 2018 )
Viết chương trình xác định xem đèn có được bật sáng hay khơng. Đèn được
bật sáng khi có ít nhất hai cơng tắc được bật và không nằm cạnh nhau. Dấu “+” là
bật, dấu “-“ là “tắt”.
* Thuật toán:
Bước 1: Nhập giá trị xâu s.
Bước 2: Lặp Length(s) lần. Tại mỗi vòng lặp nếu s[i]=+ thì bat=bat+1. Nếu
s[i]=+ và s[i+1]=+ thì tat=1.
Bước 3: Nếu bat>1 and tat=0 thì in ra màn hình thơng báo On. Ngược lại in
ra màn hình thơng báo Off.
Bước 4: Kết thúc.

PASCAL

SCRATCH

9


Var s:String;
bat,tat,i:Integer;
Begin
Write('Nhap s=');
readln(s);
For i:=1 To Length(s) Do
Begin
If s[i]='+' Then
bat:=bat+1;

If(s[i]='+')And(s[i+1]='+')
Then

tat:=1;
End;
If(bat>1)And(tat=0) Then
Write('On')
Else Write('Off');
End.

2.9. Bài 9: Tổng gần nhất (Bài 5 đề thi học sinh giỏi cấp huyện 2017 - 2018 )
Cho tập hợp A chứa n số nguyên dương phân biệt và số nguyên T.Viết
chương trình tìm trong A hai số nguyên phân biệt có tổng gần với số T nhất.
* Thuật toán:
Bước 1: Nhập giá trị n, t.
Bước 2: Nhập giá trị cho n phần tử mảng a.
Bước 3: min=|(a[1]+a[2])-t|, tong=a[1]+a[2].
Bước 4: Lặp n-1 lần.
Bước 4.1: Tại mỗi vòng lặp thứ i, j=i+1.
Bước4.2: Lặp n-i lần, tại mỗi vòng lặp thứ j nếu min>|(a[i]+a[j])-t| thì min=|
a[i]+a[j]-t| và tong=a[i]+a[j]
Bước 5: In tổng ra màn hình và kết thúc.

10


PASCAL

SCRATCH


Var n,t,i,j,min,tong:integer;
a:array[1..1000] of integer;
Begin
Write('Nhap n=');
readln(n);
Write('Nhap t=');
Readln(t);
For i:= 1 to n do
Begin
Write('Nhap pt thu',i);
Readln(a[i]);
End;
min:=abs(a[1]+a[2]-t);
tong:=a[1]+a[2];
For i := 1 To n-1 Do
For j:=i+1 To n Do
If abs(a[i]+a[j]-t)Begin
min:= abs(a[i]+a[j]-t);
tong:=a[i]+a[j];
End;
Write(tong);
End.

11


III. HIỆU QUẢ ĐẠT ĐƯỢC
Đối với giáo viên đổi mới cách lập trình truyền thống viết câu lệnh sang lập
trình kéo thả. Trang bị một số kiến thức cơ bản về cách sử dụng, cách giải bài tốn

bằng ngơn ngữ lập trình kéo thả. Giúp giáo viên đáp ứng được chương trình đổi
mới giáo dục sau năm 2018 của mơn Tin học.
Đồi với học sinh Scratch rất dễ sử dụng, mơi trường lập trình trực quan sinh
động, giao diện đẹp, khi lập trình khơng bị lỗi cú pháp. Từ đó khơi dậy sự đam mê
nghiên cứu lập trình của các em học sinh
IV. BÀI HỌC KINH NGHIỆM
Để áp dụng đề tài này vào việc giảng dạy mơn Tin học có hiệu quả nhất thì
bản thân giáo viên phải trang bị cho mình các kiến thức cơ bản về cách sử dụng,
cách lập trình giải bài tốn bằng ngơn ngữ lập trình Scratch.
V. KẾT LUẬN
1. Kết luận
Ngày nay, việc ứng dụng Tin học vào tất cả các lĩnh vực là một điều tất yếu.
Trong lĩnh vực Giáo dục, môn Tin học đã được đưa vào giảng dạy từ bậc Tiểu học
đến Trung học phổ thơng. Tuy nhiên với chương trình học lập trình hiện nay thì
việc tiếp thu và tự nghiên cứu của học sinh về mơn học này cịn hạn chế. Nhằm
khơi dậy sự đam mê, hứng thú, yêu thích, tự nghiên cứu mơn Tin học thì chúng ta
cần phải thay đổi mơi trường lập trình “viết” câu lệnh sang mơi trường lập trình
“kéo thả”. Ngơn ngữ lập trình Scratch hoàn toàn đáp ứng được các yêu cầu trên.
12


Bên cạnh đó Scratch đã được các nước có nền giáo dục phát triển như Anh,
Mỹ đưa vào giảng dạy mơn Tin học. Chương trình đổi mới giáo dục của Việt Nam
sau năm 2018, Bộ Giáo dục & Đào tạo đã quyết định đưa nội dung kiến thức Khoa
học máy tính trong mơn Tin học vào ngay từ cấp Tiểu học, và những ngơn ngữ lập
trình kéo thả như Scratch sẻ là sự lựa chọn tốt nhất.
2. Đề xuất
Tôi mong rằng trong tương lai, tổ chuyên môn Tin học của huyện cần tổ
chức nhiều chuyên đề hoặc tập huấn về lập trình Scratch, để tất cả giáo viên có cơ
hội trao đỏi, học hỏi kinh nghiệm, nâng cao trình độ chun mơn./.

Nhị Bình, ngày 06 tháng 03 năm 2018
Người viết

Trần Quốc Nhịn

13