Tải bản đầy đủ (.doc) (23 trang)

Sử dụng hệ thống câu lệnh lặp để giải một số bài tập trong pascal hiệu quả

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 (220.56 KB, 23 trang )

PHÒNG GIÁO DỤC VÀ ĐÀO TẠO HUYỆN …………………..
TRƯỜNG THCS ……………
=====***=====

BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN

Tên sáng kiến:

Sử dụng hệ thống câu lệnh
lặp để giải một số bài tập
trong pascal hiệu quả
Tác giả sáng kiến: …………………
* Mã sáng kiến: 40

1


BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN
1. LỜI GIỚI THIỆU:
Ngày nay, sự bùng nổ CNTT đã tác động lớn đến công cuộc phát triển
kinh tế xã hội người. Đảng và Nhà nước đã xác định rõ ý nghĩa và tầm quan
trọng của tin học và CNTT, truyền thông cũng như những yêu cầu đẩy mạnh của
ứng dụng CNTT, đào tạo nguồn nhân lực đáp ứng yêu cầu CNH, HĐH, mở cửa
và hội nhập, hướng tới nền kinh tế tri thức của nước ta nói riêng - thế giới nói
chung.
Chính vì xác định được tầm quan trọng đó nên Nhà nước ta đã đưa môn
tin học vào trong nhà trường và ngay từ tiểu học học sinh được tiếp xúc với môn
tin học để làm quen dần với lĩnh vực CNTT, tạo nền móng cơ sở ban đầu để học
những phần nâng cao trong các cấp tiếp theo.


Môn tin học ở trường phổ thông nhằm mục đích trang bị cho học sinh
những hiểu biết ban đầu ở mức phổ thông về công nghệ thông tin và kĩ năng sử
dụng máy tính phục vụ học tập và cuộc sống. Tin học có ý nghĩa to lớn đối với
sự phát triển trí tuệ, tư duy thuật toán, góp phần làm tăng hiệu quả giáo dục.
Đổi mới phương pháp dạy học theo hướng phát huy tính tích cực, tự giác,
sáng tạo của học sinh là yêu cầu quan trọng trong việc thực hiện chương trình –
sách giáo khoa hiện nay; đẩy mạnh ứng dụng công nghệ thông tin là một trong
những biện pháp giúp thực hiện các mục tiêu trên khá chất lượng, hiệu quả. Hiện
nay, các phần mềm phục vụ việc dạy và học môn Tin khá phong phú; trong đó
PASCAL, nó là một phần mềm dùng để học trong chương trình trung học phổ
thông và rèn luyện tư duy thuật toán cũng như viết chương trình cực kỳ hữu
hiệu.
Trước hết cần khẳng định rằng Pascal là một ngôn ngữ lập trình tốt và đặc
biệt, được tạo ra với mục đích dùng cho giảng dạy vì các lý do: Có cú pháp rõ
ràng, dễ dạy dễ học; Pascal được viết theo lý thuyết chuẩn về lập trình cấu trúc
nên một mặt nó minh hoạ cho lý thuyết về ngôn ngữ lập trình, mặt khác nhiều
tài liệu khoa học máy tính cũng dùng Pascal để minh hoạ; Có thể sử dụng Pascal
để viết các ứng dụng chuyên sâu, can thiệp vào phần cứng của máy tính và các
thiết bị điện tử khác và cuối cùng là do trình biên dịch Pascal nhỏ gọn, có thể
chạy tốt trên các máy tính cấu hình yếu, rất phù hợp với khả năng đầu tư cho học
tập của học sinh, sinh viên.
Tuy nhiên ngày nay công nghệ thông tin đã có nhiều thay đổi. Một trong
những thay đổi cơ bản đó là môi trường hệ điều hành đã thay đổi từ DOS sang
2


Windows nên khó có thể sử dụng Pascal để viết các chương trình ứng dụng dưới
Windows. Để lập trình được dưới Windows với giao diện đồ hoạ, người lập
trình bắt buộc phải học thêm một ngôn ngữ khác chẳng hạn DELPHI, Visual
Basic, C, C++,… Dĩ nhiên nếu người lập trình nắm vững ngôn ngữ Pascal thì

việc học thêm các ngôn ngữ này là dễ dàng theo kiểu “21 ngày lập trình
được…”.
Để giúp học sinh dễ dàng hơn trong việc lập trình giải quyết các bài toán
mang tính lặp, trong nội dung của bài sáng kiến này tôi đưa ra những tóm lược
cơ bản nhất của các câu lệnh lặp và một số ví dụ mẫu vận dụng cấu trúc lặp để
giải quyết có hiệu quả.

2. TÊN SÁNG KIẾN:
“SỬ DỤNG HỆ THỐNG CÂU LỆNH LẶP ĐỂ GIẢI MỘT SỐ BÀI TẬP
TRONG PASCAL CÓ HIỆU QUẢ”.
3. TÁC GIẢ SÁNG KIẾN:
- Họ và tên:
- Địa chỉ tác giả sáng kiến:
- Số điện thoại:

4. CHỦ ĐẦU TƯ TẠO RA SÁNG KIẾN:
Chủ đầu tư tạo ra sáng kiến là cá nhân tác giả sáng kiến
5. LĨNH VỰC ÁP DỤNG SÁNG KIẾN:
Có thể áp dụng sáng kiến và vấn đề mà sáng kiến giải quyết đó là:
- Giáo dục.
- Lĩnh vực công nghệ thông tin và truyền thông.
6. NGÀY SÁNG KIẾN ĐƯỢC ÁP DỤNG LẦN ĐẦU HOẶC ÁP DỤNG
THỬ: 20/08/2014.

3


7. MÔ TẢ BẢN CHẤT CỦA SÁNG KIẾN:
7.1- VỀ NỘI DUNG CỦA SÁNG KIẾN:
7.1.1. CƠ SỞ LÝ LUẬN:

* Cơ sở lý luận về lý thuyết:
- Muốn học tập đạt kết quả tốt, ngoài việc bản thân HS tích cực học tập,
không thể thiếu vai trò hướng dẫn dìu dắt của người thầy.
- Để giúp học sinh dễ dàng hơn trong việc lập trình giải quyết các bài toán
mang tính lặp ở bộ môn Tin học vừa đúng với nguyên tắc dạy học ở trường Phổ
Thông, vừa đúng theo tinh thần đổi mới phương pháp dạy học hiện nay, nhằm
hình thành cho học sinh tính tích cực, độc lập, sáng tạo, nâng cao năng lực phát
triển và giải quyết vấn đề, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn,
tác động đến tình cảm, đem lại niềm tin và thích thú học tập cho HS. Hiện nay,
không ít học sinh lười, học tập thụ động và có không ít phụ huynh thiếu sự quan
tâm đến việc học của con em mình. Vì vậy, việc hệ thống các kiến thức về câu
lệnh lặp để giải một số bài tập của giáo viên phải được chú ý đúng mức.
* Cơ sở lý luận về thực tiễn:
Trong quá trình giảng dạy, tôi nhận thấy Pascal là môn học khó đối với
các em học sinh Khối 8,9, vì có một số thuật toán các em chưa được học ở bộ
môn Toán, thêm vào đó là các em chỉ sử dụng các câu lệnh bằng Tiếng Anh để
thể hiện khi lập trình. Do đó việc học tập của học sinh vẫn còn mang tính mơ hồ,
như bị ép buộc, có nhiều học sinh rất sợ môn Tin học 8,9 vì tính chất khô khan,
khó hiểu trong khi học.
Từ thực tế đó tôi không ngừng học hỏi để tìm ra biện pháp khắc phục.
Bằng kinh nghiệm khiêm tốn trong những năm qua, tôi đã đưa ra những tóm
lược cơ bản nhất của các câu lệnh lặp và một số ví dụ mẫu vận dụng cấu trúc lặp
để giải quyết có hiệu quả là nhằm giúp học sinh tiếp thu bài nhanh, nhớ kiến
thức lâu hơn và cảm thấy thích thú trong học tập.
7.1.2. THỰC TRẠNG:
*Thuận lợi:
- Xã hội ngày càng phát triển, công nghệ thông tin ngày càng được ứng
dụng rộng rãi

4



trong nhiều ngành then chốt, đặc biệt là ngành Giáo dục và Đào tạo. Chính nhờ
điều đó thầy cô giáo và các em học sinh có rất nhiều thuận lợi trong việc thu
thập tài liệu học tập và tham khảo nói chung, môn tin học nói riêng.
- Tin học là môn khoa học tự nhiên, nó là cơ sở, là nền tảng của nhiều
lĩnh vực khoa học. Nhu cầu học tập, nâng cao kiến thức và say mê khám phá
khoa học của học sinh ngày càng nâng cao. Vì vậy, môn tin học ngày càng được
nhiều em học sinh quan tâm, lựa chọn là môn học ưa thích và cần thiết cho
mình.
- Được sự quan tâm của các cấp lãnh đạo huyện, cũng như sự quan tâm
của từng địa phương nên đời sống của nhân dân trong huyện, thị trấn ngày càng
nâng cao. Đa số các gia đình đã có điều kiện để đầu tư cho con em mình học tập
tốt hơn.
-Lãnh đạo Phòng Giáo dục và Đào tạo, ban giám hiệu trường luôn quan
tâm đến chất lượng giáo dục và đặc biệt quan tâm, chú trọng đến môn tin học.
* Những việc đã làm được:
- Tôi đã áp dụng công nghệ thông tin để soạn giảng các bài lý thuyết và
thực hành nhằm hướng dẫn học sinh dễ hiểu bài và ghi nhớ kiến thức cơ bản ở
bộ môn Tin học 8, 9.
- Ở những giờ thực hành tôi đều tổ chức học tập theo nhóm và có sự
nhận xét đánh giá kết quả của từng nhóm.
-Tôi đã hình thành nề nếp cho học sinh ngay từ đầu năm học.
* Hạn chế:
- Đời sống của người dân trong nhiều thôn, buôn còn nhiều khó khăn, nên
việc đầu tư cho con em mình trong học tập còn hạn chế.
- Môn Tin học là môn học tự chọn nên vẫn còn có học sinh chưa thật sự
đam mê môn học, một số em còn thụ động trong quá trình tiếp thu kiến thức.
- Phương tiện dạy và học, đặc biệt là phòng máy ở trường còn thiếu, bị hư
hỏng nhiều.

- Đa số học sinh bị hổng kiến thức Toán từ lớp dưới nên ý thức tìm tòi và
nghiên cứu của các em còn hạn chế. Có không ít học sinh chưa cố gắng trong
học tập, không chịu khó động não, nên ảnh hưởng không nhỏ đến việc học.
- Đa số các em HS nhà chưa có máy tính để thực hành nên kỹ năng sử
dụng máy còn nhiều hạn chế và làm giảm chất lượng học tập của các em.
* Đối tượng nghiên cứu:
Học sinh lớp 8,9.
* Phương pháp nghiên cứu:
5


- Phương pháp điều tra.
- Phương pháp phân tích.
- Phương pháp tổng hợp kinh nghiệm trong giảng dạy.
- Phương pháp trò chuyện trao đổi.
- Phương pháp đọc sách và tổng hợp tư liệu.

7.1.3. ĐỀ XUẤT GIẢI PHÁP:
7.1.3.1. Xây dựng KHGD ngay từ đầu năm học:
- Ngay từ đầu năm học, GV phải hướng dẫn phương pháp học tập và nề
nếp học ở phòng máy cho học sinh.
- GV chia nhóm học tập cho từng HS, phân nhóm trưởng, hướng dẫn cách
hoạt động nhóm và trang bị sổ tay ghi chép cá nhân của HS.
- GV soạn bài trước thực dạy 2 tiết nhằm giúp việc nghiên cứu kiến thức
sâu hơn và chủ động hơn trong việc soạn các bài kiểm tra.
- GV cần đầu tư nghiên cứu, mỗi năm cập nhật những cách hay của đồng
nghiệp để tích luỹ cho việc giảng dạy.
- GV cần dành một thời lượng thích hợp cho việc mấu chốt và hướng dẫn
HS cách nhớ kiến thức cơ bản vừa học ở các tiết học lý thuyết. Cũng như cách
tìm hiểu ý nghĩa của mỗi lệnh trong các bài thực hành.

- HS phải chuẩn bị những gì mà GV đã dặn ở tiết trước.
7.1.3.2. MỘT SỐ GIẢI PHÁP THỰC HIỆN:
* Rèn luyện tư duy thuật toán cho học sinh THCS khi viết chương trình
Pascal.
CHƯƠNG TRÌNH= THUẬT TOÁN +CẤU TRÚC DỮ LIỆU
Như vậy thuật toán là phần quan trong bậc nhất để tạo nên một chương
trình. 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.
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. Khi dạy tin học chú ý dành nhiều thời gian
dạy thuật toán.
6


* Xây dựng phong cách lập trình tốt cho HS
Thứ nhất phải tuân theo các quy chuẩn và các quy ước.
Cơ sở cho việc viết một chương trình hiệu quả là: 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.
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.
+ Tiết kiệm thời gian sửa lỗi.
+ Tăng khả năng làm việc theo nhóm.
* Phong cách viết chương trình.
+ Quy tắc 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ô _ đun), mỗi đơn thể thực

hiện một công việc, càng độc lập với nhau càng tốt (chương trình con). Điều này
sẽ giúp cho chương trình dễ cải tiến và khi đọc chương trình ta sẽ dễ hình dung
được vấn đề đang được thực hiện.
- 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
vì như vậy sẽ làm mất đi tính độc lập giữa các chương trình con và rất khó khăn
khi kiểm soát giá trị của chúng khi chương trình con thi hành.
- Cách trình bày chương trình càng nhất quán càng dễ đọc, dễ hiểu.
- Chương trình nên giữ được tính đơn giản, rõ ràng.
- Chương trình nên thực hiện như một dòng chảy từ trên xuống:
+ Sau đó đến 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ự của việc thực hiện
chương trình.
+ 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ý.
- Các biến không nên sử dụng lại với nhiều ý nghĩa khác nhau trong cùng một
hàm để tránh sự nhầm lẫn.
7


- Viết chú thích cho chương trình: Biến, hàm khi định nghĩa nên viết chú thích
ý nghĩa và chức năng rõ ràng. Đôi khi các đoạn lệnh thực thi cũng cần giải thích
nếu chúng quá phức tạp. Nên viết chú thích ngắn gọn nhưng đầy đủ và dễ hiểu.
Tuy nhiên không phải bất cứ lệnh nào cũng chú thích, việc chú thích tràn lan
ngay cả với câu lệnh đơn giản không có ý nghĩa gì mà còn làm chương trình khó
nhìn hơn.

- Nên viết biểu thức điều kiện mang tính tự nhiên: Biểu thức nên viết dưới
dạng khẳng định, việc viết dưới dạng phủ định sẽ làm khó hiểu.
+ Qui tắc khai báo tên tệp dữ liệu dùng trong chương trình.
Dùng tệp nên khai báo tên têp trước trong phần khai báo hằng:
Ví du:
Const fi=’BAI3.INP’;
Fo=’BAI3.OUT’ ;
* Tối ưu sự thực thi mã nguồn
Mục đích của việc tối ưu mã nguồn là nâng cao tốc độ xử lý và hạn chế
không gian bộ nhớ mà chương trình chiếm dụng. Thông thường có thể mâu
thuẫn giữa tốc độ và không gian lưu trữ, do đó tùy theo điều kiện cụ thể mà
người lập trình có sự lựa chọn thích hợp. Một số thủ thuật sau có thể giúp người
lập trình hình thành nên phong cách lập trình tốt.
- Lưu tạm giá trị thường sử dụng: Nếu một biểu thức tính toán được dùng
nhiều lần thì nên tính kết quả một lần rồi lưu vào một biến và dùng lại.
- Thay thế một biểu thức bằng một biểu thức tương đương nhưng lợi về thực
thi
- Dùng số nguyên thay cho số thực: Do việc xử lý số thực chậm hơn xử lý số
nguyên nên ta có thể dùng số nguyên thay cho số thực có phần lẻ nhỏ.
Vì dụ: Điểm trung bình của học sinh là số thực ta có thể thay bằng số nguyên:
DTB là 7.85 thì lưu số nguyên là 785, khi xuất ra thì chia cho 100.
- Thoát khỏi vòng lặp khi sớm nhất: Một số trường hợp không cần thiết phải
lặp hết toàn bộ mà đã đạt được mục đích thì có thể thoát khỏi vòng lặp.
- Hạn chế sử dụng câu lệnh rẽ nhánh: Lệnh rẽ nhánh làm chậm chương trình do
ngắt luồng thực thi.
- Tránh lãng phí bộ nhớ: Bằng cách sử dụng kiểu dữ liệu nhỏ nhất đủ để lưu
trữ. Việc sử dụng tài nguyên nhiều hơn mức đòi hỏi của chương trình là một thói
quen xấu mà người lập trình hay mắc phải. Hơn nữa tốc độ chương trình sẽ
nhanh hơn khi sử dụng kiểu dữ liệu nhỏ hơn.
8



- Khai báo biến cục bộ trong phạm vi gần nhất: Khai báo biến cục bộ gần với
điểm sử dụng nhất. Việc khai báo ở phạm vi rộng hơn chỉ làm lãng phí và khó
kiểm soát.
- Giảm số lượng tham số truyền vào hàm: Việc sử dụng hàm có quá nhiều
tham số được truyền vào có thể làm ảnh hưởng đến ngăn xếp dành cho việc gọi
hàm. Nhất là trường hợp tham số là kiểu dữ liệu có cấu trúc. Sử dụng con trỏ
hay tham chiếu trong trường hợp này để đơn giản hóa.
* Kiểm nghiệm chương trình với các bộ test đầy đủ nhất.
- Test đầu bài,
- Các test đơn giản
- Test các trường hợp đặc biệt.
- Test lớn
- Xem lại đề để không bỏ sót trường hợp.

* GIẢI PHÁP VIẾT CHƯƠNG TRÌNH VỚI CẤU TRÚC LẶP
FOR...TO...DO:
- ĐVĐ: trong lập trình chúng ta gặp trường hợp phải lặp đi lặp lại một
công việc một số lần xác định nào đó. Ví dụ: viết ra màn hình các số từ 0 đến 24
mỗi số chiếm một dòng. Nếu như chỉ dùng các lệnh viết ra màn hình thì chúng
ta phải dùng 25 lệnh Writeln. Cách viết này rõ ràng là không thể chấp nhận
được, do vậy PASCAL cung cấp một cấu trúc lặp dựa vào số bước lặp xác định
FOR...TO...DO
- Tác dụng: Dùng để xây dựng chu trình với số lần lặp xác định dựa vào
sự biến thiên của một biến đếm.
- Cú pháp:
Dạng tiến:
For <Biến đếm > := <giá trị đầu> to <giá trị cuối> do <Câu lệnh> ;
Dạng lùi:

For <biến đếm> := <giá trị cuối> Downto <giá trị đầu> do <Câu lệnh> ;
Trong đó:
+ for, to, do là các từ khóa.
+ Biến đếm có kiểu nguyên.
9


+ Giá trị đầu và giá trị cuối là các biểu thức có cùng kiểu với biến đếm và
giá trị cuối phải lớn hơn hoặc bằng giá trị đầu.
+ Câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.
Nguyên lý hoạt động cấu trúc For dạng tiến:
1, Biến đếm nhận giá trị của giá trị đầu.
2, Máy kiểm tra xem giá trị của biến đếm còn nhỏ hơn giá trị của biểu thức giá
trị cuối hay không (biến đếm ≤ giá trị cuối).
3. Nếu việc kiểm tra:
- Cho giá trị sai câu lệnh sẽ bị bỏ qua.
- Cho giá trị đúng:
+Máy sẽ thực hiện câu lệnh sau từ khóa do.
+ Tăng giá trị của biến đếm lên giá trị đứng liền sau của nó (biến
đếm:=succ(b))
- Quay trở lại bước 2
- Ta có thể minh hoạ vòng lặp for bằng sơ đồ khối sau
Begin

Biến đếm := giá trị đầu

Biến đếm > giá trị cuối

Đúng


Sai
Công Việc

End

Trong cấu trúc For
dạng
câu lệnh được
Biến
đếmtiến,
:= Succ(Biến
đếm)thực hiện lặp đi lặp lại cho
đến khi giá trị của biến đếm lớn hơn giá trị cuối. Mỗi lần thực hiện xong câu
lệnh, giá trị của biến đếm được tăng lên đến giá trị liền sau của nó.
* Nguyên lý hoạt động cấu trúc For dạng lùi:
10


1. Biến đếm nhận giá trị cuối.
2. Máy kiểm tra xem giá trị của biến đếm còn lớn hơn giá trị đầu không?
3. Nếu việc kiểm tra:
- Cho giá trị sai: máy bỏ qua câu lệnh.
- Cho giá trị đúng:
+ Máy sẽ thực hiện câu lệnh.
+ Giảm giá trị của biến đếm b đến giá trị đứng liền trước của nó (biến
đếm:=pred(b))
- Quay trở lại bước 2
- Ta có thể minh hoạ vòng lặp for bằng sơ đồ khối sau

Begin


Biến đếm := giá trị đầu

Biến đếm < giá trị cuối

Đúng

Sai
Công Việc

End

Biến đếm := Pred(Biến đếm)

Trong cấu trúc For dạng lùi, câu lệnh được thực hiện lặp đi lặp lại cho đến
khi giá trị của biến đếm nhỏ hơn giá trị của giá trị đầu. Mỗi lần thực hiện xong
câu lệnh, giá trị của biến đếm được giảm đi đến giá trị liền trước của nó.
* GIẢI PHÁP VỚI CẤU TRÚC LẶP WHILE...DO:
11


• Tác dụng: Dùng để xây dựng chu trình với số lần lặp chưa xác định
trước.
• Cú pháp: While <Biểu thức Boolean> do <câu lệnh>;
Câu lệnh là thân chu trình và có thể là câu lệnh đơn hoặc câu lệnh ghép.

Begin

Sai
Biểu thức

Boolean
Đúng
Công việc

End

* Nguyên lý hoạt động:
1. Máy tính xác định giá trị của <Biểu thức Boolean>.
2. Tuỳ thuộc vào giá trị của <Biểu thức Boolean>:
- Nếu <Biểu thức Boolean> có giá trị đúng (TRUE), máy tính sẽ thực hiện
câu lệnh sau đó quay lại bước 1.
- Nếu <Biểu thức Boolean>có giá trị sai (FALSE), câu lệnh sẽ bị bỏ qua
và việc thực hiện lệnh lặp kết thúc.
• Nhận xét:
- Câu lệnh được thực hiện lặp đi lặp lại cho đến khi <Biểu thức Boolean>
nhận giá trị sai (FALSE). Câu lệnh sẽ không được thực hiện lần nào nếu thức Boolean> nhận giá trị sai (FALSE) ngay từ khi bắt đầu vào chu trình.
- Trong thân chu trình phải có câu lệnh làm thay đổi giá trị của Boolean> để tránh xảy ra vòng lặp vô tận dẫn đến hiện tượng cheo máy.
* GIẢI PHÁP VỚI VÒNG LẶP REPEAT...UNTIL

12


Câu lệnh REPEAT .. UNTIL dùng trong các trường hợp khi biến điều
khiển không có kiểu rời rạc và đặc biệt trong các trường hợp số lần lặp không
biết trước.
- Vòng lặp REPEAT…UNTIL… có dạng sau
REPEAT <công viêc> UNTIL <Biểu thức Boolean>
- Nếu <Biểu thức Boolean> là Sai (False) thì lặp lại lệnh cho đến khi

thức Boolean> có giá trị đúng (TRUE) thì mới thoát ra khỏi cấu trúc
REPEAT .. UNTIL.
- Nếu có nhiều câu lệnh thì mỗi lệnh ngăn cách nhau bằng dấu chấm phẩy (;)
Công việc của REPEAT và UNTIL không nhất thiết phải dùng lệnh ghép để
nhóm từ 2 lệnh đơn trở lên thành công việc.
- Vòng lặp Repeat … until… được biểu diễn bằng sơ đồ khối như sau:

Begin

Công việc

sai
Biểu thức
Boolean
đúng
End

7.2- VỀ KHẢ NĂNG ÁP DỤNG CỦA SÁNG KIẾN:
* Áp dụng 1: Áp dụng với vòng lặp For...to...do

13


Ví dụ 1: Tính tổng S = 1 + 1/2 + 1/3 + .... + 1/n
Nhận xét:
- Trong biểu thức trên, số hạng thứ i của tổng có thể tính được theo công thức
S(i) = 1/i (i=1,2,...,n)
- Trường hợp này có thể sử dụng được một trong hai dạng cấu trúc của FOR
Chương trình:
Phương án 1: Sử dụng cấu trúc For dạng tiến.

Var i, n : Integer; S:Real;
Begin
Write('Hay nhap vao so nguyen n=');
Readln(n);
S:=0;
For i:=1 to n do
S:= S + 1 / i;
Writeln( ' Tong S =', S : 6 : 2 );
Readln;
End.
Kết quả của tổng S với n bằng 8, 5, 3 như bên dưới khi ta chạy chương trình:

Phương án 2: Sử dụng cấu trúc For dạng lùi.
Var i, n : Integer; S:Real;
Begin
Write('Hay nhap vao so nguyen n=');
Readln(n);
S:=0;
For i:=n downto 1 do
S:= S + 1 / i;
Writeln( ' Tong S =', S : 6 : 2 );
Readln;
End.
Kết quả của tổng S với n bằng 8, 5, 3 như bên dưới khi ta chạy chương trình cho
kết quả tương tự:
14


2. Ví dụ 2:
In ra màn hình hai dòng chữ. Dòng trên gồm các chữ cái in hoa từ A..Z. Dòng

dưới gồm các chữ cái thường theo thứ tự ngược lại từ z đến a
Nhận xét:
Ta có thể giải quyết được bài toán bằng cách sử dụng cấu trúc FOR dạng tiến và
dạng lùi với biến điều khiển dạng ký tự nhận các giá trị trong khoảng từ A đến Z
Chương trình
Program in_dong;
Var
ch: char;
Begin
Writeln;
For ch := 'A' to 'Z' do Write(ch:2);
Writeln;
For ch := 'z' downto 'a' do Write(ch:2);
Writeln;
Readln;
End.
Kết quả của việc chạy chương trình là:

3. Ví dụ 3: Đọc vào n số thực, tìm Max của chúng
* Thuật toán tìm Max trong một dãy số:
- Cho Max là số thứ nhất
- Duyệt toàn bộ dãy số từ số thứ hai trở đi, nếu thấy số nào lớn hơn Max
thì lấy số đó làm Max. Sau khi duyệt xong dãy số, ta sẽ có Max là số lớn nhất.
Nhận xét:
- Dãy số có một số lượng hữu hạn các số. Ta có thể biết được số lượng từ
khi bắt đầu thực hiện thuật toán.
- Thích hợp cho việc sử dụng cấu trúc FOR dạng tiến để thực hiện.
15



Chương trình
Program tim_max;
Var
n, i: integer;
max, x: real;
Begin
Write(‘n = ‘); Readln(n);
For i := 1 to n do
Begin
Write(‘Cho so thu ’, i);Readln(X);
if Max < X then Max := X;
End;
Writeln(‘Max = ‘, Max:8:2);
Readln;
End.
Kết quả khi chạy chương trình trên là:

* Áp dụng 2: While ...do
Ví dụ 1:
Tính tổng

S=

1 2 3
n
+ + + ... +
2 5 10
1 + n2

, Sao cho S >= 10


Nhận xét:
- Trong biểu thức trên, số hạng thứ i của tổng có thể tính được theo công
thức S(i) = i/ 1 + i2 (i=1,2,...,n).
- Điều kiện để dừng vòng lặp là tổng S phải nhỏ hơn 10.
"Trường hợp này sử dụng dạng cấu trúc While...do như sau:
Chương trình
Var i : Integer; S:Real;
Begin
S:=0; i:=0;
While S < 10 do
Begin
i := i + 1;
S := S + i / (1+SQR( i ) );
16


End;
Writeln( ' Tong S =', S : 6 : 2 );
Writeln( ‘So lan lap la:’, i );
Readln;
End.
- Kết quả cua việc chạy chương trình trên là:

Ví dụ 2: Tìm bội số chung nhỏ nhất của hai số nguyên dương
*Thuật toán:
Lấy một trong hai số lần lượt nhân với 1, 2, 3,... cho đến khi nào tích số chia hết
cho số thứ hai thì tích số chính là BSCNN
*Nhận xét:
- Thuật toán cho thấy là trong quá trình tính toán, không thể biết trước

được quá trình nhân phải thực hiện lặp lại bao nhiêu lần. Trường hợp này phải
sử dụng cấu trúc lặp với số lần lặp không xác định.
- Điều kiện để dừng là tích số chia hết cho số thứ hai
*Chương trình
Program Boisochungnhonhat;
Var
Bscnn, n, m, k: Integer;
Begin
Write(‘m= ‘); Readln(m);
Write(‘n= ‘); Readln(n);
bscnn := m; k := 2;
While (BSCNN mod n <> 0) do
Begin
BSCNN := k*m;
k:= k + 1;
End;
Writeln(‘BSCNN = ‘, BSCNN);
Readln;
End.
- Kết quả khi chay chương trên là:

17


Ví dụ 3: Tìm Ước số chung lớn nhất của hai số nguyên dương m, n.
• Thuật toán:
Nếu m>n thì lấy m = m – n
Nếu m vẫn lớn hơn n thì tiếp tục lấy m = m - n
Nếu m< n thì lấy n = n - m
Nếu n vẫn lớn hơn m thì tiếp tục lấy n = n – m

Lặp lại thuật toán trên cho đến khi m = n. Lúc đó m = n là ƯSCLN
• Nhận xét:
Thuật toán cho thấy không thể xác đinh trước được phép trừ phải thực
hiện lặp lại bao nhiêu lần. Trường hợp này phải sử dụng cấu trúc lặp với số
lần lặp không xác định.
Điều kiện để dừng là hai số bằng nhau.
• Chương trình
Program USCLN;
Var x, y: Integer;
Begin
Write(‘x = ‘);Readln(x);
Write(y = ‘);Readln(y);
While x <> y do
If x>y then x := x – y
else y := y – x;
Writeln(‘USCLN la: ‘, x)
Readln;
End.
- Kết qua khi chay chương trình la:

18


* Áp dụng 3:
Ví dụ: Viết chương trình tìm ƯSCLN của N số được nhập từ bàn phím .
Program UCLN;
Uses crt ;
Var a : Array [1..100] Of Integer ;
n , i : Byte ;
d : integer ;

BEGIN
Clrscr ;
Writeln (' Tim USCLN cua N so :') ;
Write (' Nhap so N : ') ; Readln(n) ;
Writeln ('Nhap ', N ,' so : ') ;
For i := 1 To n Do
Begin
Write(' So thu ', i ,' = ') ; Readln( a[i] ) ;
End ;
For i := 1 To n-1 Do
Repeat
d := a[i] ;
a[i] := a[ i+1 ] mod a[i] ;
a[i+1] := d ;
Until a[i] = 0 ;
Writeln (' USCLN cua ', N ,' so la : ', a[n] ) ;
Readln ;
END .
- Kết quả khi ta chay chương trình trên là:

19


8. NHỮNG THÔNG TIN CẤN ĐƯỢC BẢO MẬT:
Sáng kiến có thể được phổ biến và nhân rộng cho tất cả mọi đối tượng; có thể
dùng để giảng dạy và có thể áp dụng để tham khảo.
9. CÁC ĐIỀU KIỆN CẦN THIẾT ĐỂ ÁP DỤNG SÁNG KIẾN:
+ Đối với giáo viên: Cần tạo mọi điều kiện về thời gian ở trên lớp để hướng dẫn
cho học sinh những kỹ năng cần thiết trong quá trình lập trình trên Pascal
+ Đối với học sinh: Cần chú ý tiếp thu ở trên lớp đồng thời tham khảo thêm các

tài liệu.
+ Đối với phòng Giáo dục và Đào tạo Vĩnh Tường.
Nên thường xuyên tổ chức hội nghị, hội thảo, chuyên đề về công tác dạy và học
để giáo viên có thêm cơ hội học hỏi kinh nghiệm lẫn nhau.
+ Đối với nhà trường:
- Tạo điều kiện mua sắm trang thiết bị phục vụ bộ môn được tốt hơn: mua
thêm máy tính có cấu hình cao, máy chiếu, nối mạng tốc độ cao và mua bản
quyền phần mềm cho máy tính.
- Quán triệt hơn nữa tinh thần học tập của học sinh.
+ Đối phụ huynh học sinh: Gia đình phải chú trọng quan tâm đến việc học hành
của con cái nhiều hơn. Cần dành nhiều thời gian giám sát việc học ở nhà của
con em.
10. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng
kiến theo ý kiến của tác giả và theo ý kiến của tổ chức, cá nhân đã tham gia
áp dụng sáng kiến lần đầu, kể cả áp dụng thử (nếu có) theo các nội dung
sau:

20


10.1. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng
sáng kiến theo ý kiến của tác giả:
* Kết quả đạt được:
Qua thực tế 2 học kì vừa qua (năm học 2015-2016), tôi vận dụng chuyên
đề trong giảng dạy. Đã thu thập được kết quả khả quan.
Từ những kết quả trên, tôi nhận thấy tỉ lệ học sinh yếu –kém của học sinh
mà tôi phụ trách giảng dạy, đã giảm dần. Đó là sự phấn khởi mà bản thân tôi khi
vận dụng sáng kiến trên.
* Bài học kinh nghiệm:
+ Ưu điểm:

- Kích thích động cơ học tập của học sinh.
- Nâng cao chất lượng dạy và học.
+ Nhược điểm:
Một số học sinh yếu kém mất kiến thức căn bản ở môn Toán, thêm vào đó
có một số thuật toán các em chưa được học trong chương trình, nên giáo viên
phải kiên trì, nhẫn nại, thậm chí mất nhiều thời gian trong việc hướng dẫn các
thuật toán cho học sinh.
10.2. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp
dụng sáng kiến theo ý kiến của tổ chức, cá nhân:
- Tăng tính sáng tạo, khả năng tự nghiên cứu.
- Tăng cường tính tự học, tự chủ trong việc học của các em học sinh.
11. Danh sách những tổ chức/cá nhân đã tham gia áp dụng thử hoặc áp
dụng sáng kiến lần đầu (nếu có):
Số Tên tổ chức/cá
TT
nhân
1

Địa chỉ

Phạm vi/Lĩnh vực
áp dụng sáng kiến
Giáo dục

21


PHẦN KẾT LUẬN:
Trên đây là tóm lược nội dung cú pháp, cách thực hiện các câu lệnh thuộc
cấu trúc lặp và phân tích trên ngôn ngữ lập trình Pascal, một số ví dụ của các bài

toán điển hình cho từng dạng lặp cụ thể mà bản thân đã đúc kết được trong quá
trình giảng dạy môn tin học ở trường. Qua đó giúp học sinh và đồng nghiệp có
thể làm tài liệu tham khảo trong quá trình học tập và giảng dạy của mình có hiệu
quả.
Trong phạm vi là một sáng kiến kinh nghiệm có thể việc phân tích về nội
dung câu lệnh và ví dụ về các dạng lệnh có thể chưa thật chi tiết và phong phú
rất mong nhận được sự góp ý chân thành từ quý đồng nghiệp, học sinh để đề tài
được hoàn thiện hơn.

............., ngày

tháng

năm 2016

Thủ trưởng đơn vị/
Chính quyền địa phương
(Ký tên, đóng dấu)

Vĩnh Tường, ngày 02 tháng 10 năm
2016
Tác giả sáng kiến
(Ký, ghi rõ họ tên)

22


TÀI LIỆU THAM KHẢO
1. Sách giao khoa Tin học 8,9 (Quyển 3,4) – Nhà xuất bản Giáo dục.
2. Tham khảo các tài liệu Pascal trên mạng internet.


23



×