Sáng kiến kinh nghiệm Một số kinh nghiệm chuyển bài toán lập trình Pascal sang lập trình Scratch
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 chuyên cấp Quốc gia.
Để giải được bài toá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 toán lập trình Pascal sang lập trình Scratch”.
Tóm tắt nội dung tài liệu: Sáng kiến kinh nghiệm Một số kinh nghiệm chuyển bài toán lập trình Pascal sang lập trình Scratch

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 chuyên cấp Quốc gia. Để giải được bài toá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 toá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 toá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 quá 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 yê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 toá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 AND OR NOT Và Hoặc Phủ định 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ự Xoá 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 If Then ; Câu lệnh điều kiện dạng thiếu If Then Else ; Câu lệnh điều kiện dạng đủ If Then Else If Then Else ; Câu lệnh điều kiện dạng lồng For..To..Do Câu lệnh lặp với số lần biết trước (lặp n lần) For i:=1 to n do For j:=1 to m do Câu lệnh lặp lồng 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 Cách chuyển bài toá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ố nguyên 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 toá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 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<b 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 a<b thì thông bá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 a<b Then Write(a,'Nho hon',b) Else 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. 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ố nguyên 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 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 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 toán: Bước 1: Nhập giá trị n. 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 n0 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 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ố nguyên 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 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 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. 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)<min then Begin min:= abs(a[i]+a[j]-t); tong:=a[i]+a[j]; End; Write(tong); End. 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 toá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 toá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. 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 độ chuyên môn./. Nhị Bình, ngày 06 tháng 03 năm 2018 Người viết Trần Quốc Nhịn
File đính kèm:
sang_kien_kinh_nghiem_mot_so_kinh_nghiem_chuyen_bai_toan_lap.docx