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ả

23 2.9K 0
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ả

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệ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 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ả.

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 số tập pascal hiệu Tác giả sáng kiến: ………………… * Mã sáng kiến: 40 BÁO CÁO KẾT QUẢ NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN LỜI GIỚI THIỆU: Ngày nay, bùng nổ CNTT tác động lớn đến công phát triển kinh tế xã hội người Đảng Nhà nước xác định rõ ý nghĩa tầm quan trọng tin học CNTT, truyền thông yêu cầu đẩy mạnh ứ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 hội nhập, hướng tới kinh tế tri thức nước ta nói riêng - giới nói chung Chính xác định tầm quan trọng nên Nhà nước ta đưa môn tin học vào nhà trường từ tiểu học học sinh 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 móng sở ban đầu để học phần nâng cao cấp Môn tin học trường phổ thông nhằm mục đích trang bị cho học sinh hiểu biết ban đầu mức phổ thông công nghệ thông tin kĩ sử dụng máy tính phục vụ học tập sống Tin học có ý nghĩa to lớn phát triển trí tuệ, tư thuật toán, góp phần làm tăng hiệu giáo dục Đổ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 học sinh yêu cầu quan trọng việc thực chương trình – sách giáo khoa nay; đẩy mạnh ứng dụng công nghệ thông tin biện pháp giúp thực mục tiêu chất lượng, hiệu Hiện nay, phần mềm phục vụ việc dạy học môn Tin phong phú; PASCAL, phần mềm dùng để học chương trình trung học phổ thông rèn luyện tư thuật toán viết chương trình hữu hiệu Trước hết cần khẳng định Pascal ngôn ngữ lập trình tốt đặc biệt, tạo với mục đích dùng cho giảng dạy lý do: Có cú pháp rõ ràng, dễ dạy dễ học; Pascal viết theo lý thuyết chuẩn lập trình cấu trúc nên mặt minh hoạ cho lý thuyết ngôn ngữ lập trình, mặt khác nhiều tài liệu khoa học máy tính dùng Pascal để minh hoạ; Có thể sử dụng Pascal để viết ứng dụng chuyên sâu, can thiệp vào phần cứng máy tính thiết bị điện tử khác cuối trình biên dịch Pascal nhỏ gọn, chạy tốt máy tính cấu hình yếu, phù hợp với khả đầu tư cho học tập học sinh, sinh viên Tuy nhiên ngày công nghệ thông tin có nhiều thay đổi Một thay đổi môi trường hệ điều hành thay đổi từ DOS sang Windows nên khó sử dụng Pascal để viết chương trình ứng dụng Windows Để lập trình Windows với giao diện đồ hoạ, người lập trình bắt buộc phải học thêm ngôn ngữ khác chẳng hạn DELPHI, Visual Basic, C, C++,… Dĩ nhiên người lập trình nắm vững ngôn ngữ Pascal việc học thêm ngôn ngữ dễ dàng theo kiểu “21 ngày lập trình được…” Để giúp học sinh dễ dàng việc lập trình giải toán mang tính lặp, nội dung sáng kiến đưa tóm lược câu lệnh lặp số ví dụ mẫu vận dụng cấu trúc lặp để giải có hiệu 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Ả” TÁC GIẢ SÁNG KIẾN: - Họ tên: - Địa tác giả sáng kiến: - Số điện thoại: CHỦ ĐẦU TƯ TẠO RA SÁNG KIẾN: Chủ đầu tư tạo sáng kiến cá nhân tác giả sáng kiến LĨNH VỰC ÁP DỤNG SÁNG KIẾN: Có thể áp dụng sáng kiến vấn đề mà sáng kiến giải là: - Giáo dục - Lĩnh vực công nghệ thông tin truyền thông NGÀY SÁNG KIẾN ĐƯỢC ÁP DỤNG LẦN ĐẦU HOẶC ÁP DỤNG THỬ: 20/08/2014 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 lý thuyết: - Muốn học tập đạt kết tốt, việc thân HS tích cực học tập, thiếu vai trò hướng dẫn dìu dắt người thầy - Để giúp học sinh dễ dàng việc lập trình giải toán mang tính lặp môn Tin học vừa với nguyên tắc dạy học trường Phổ Thông, vừa theo tinh thần đổi phương pháp dạy học 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 lực phát triển giải vấn đề, rèn luyện kỹ 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 thích thú học tập cho HS Hiện nay, không học sinh lười, học tập thụ động có không phụ huynh thiếu quan tâm đến việc học em Vì vậy, việc hệ thống kiến thức câu lệnh lặp để giải số tập giáo viên phải ý mức * Cơ sở lý luận thực tiễn: Trong trình giảng dạy, nhận thấy Pascal môn học khó em học sinh Khối 8,9, có số thuật toán em chưa học môn Toán, thêm vào em sử dụng câu lệnh Tiếng Anh để thể lập trình Do việc học tập học sinh mang tính mơ hồ, bị ép buộc, có nhiều học sinh sợ môn Tin học 8,9 tính chất khô khan, khó hiểu học Từ thực tế không ngừng học hỏi để tìm biện pháp khắc phục Bằng kinh nghiệm khiêm tốn năm qua, đưa tóm lược câu lệnh lặp số ví dụ mẫu vận dụng cấu trúc lặp để giải có hiệu nhằm giúp học sinh tiếp thu nhanh, nhớ kiến thức lâu cảm thấy thích thú học tập 7.1.2 THỰC TRẠNG: *Thuận lợi: - Xã hội ngày phát triển, công nghệ thông tin ngày ứng dụng rộng rãi nhiều ngành then chốt, đặc biệt ngành Giáo dục Đào tạo Chính nhờ điều thầy cô giáo em học sinh có nhiều thuận lợi việc thu thập tài liệu học tập tham khảo nói chung, môn tin học nói riêng - Tin học môn khoa học tự nhiên, sở, tảng nhiều lĩnh vực khoa học Nhu cầu học tập, nâng cao kiến thức say mê khám phá khoa học học sinh ngày nâng cao Vì vậy, môn tin học ngày nhiều em học sinh quan tâm, lựa chọn môn học ưa thích cần thiết cho - Được quan tâm cấp lãnh đạo huyện, quan tâm địa phương nên đời sống nhân dân huyện, thị trấn ngày nâng cao Đa số gia đình có điều kiện để đầu tư cho em học tập tốt -Lãnh đạo Phòng Giáo dục Đào tạo, ban giám hiệu trường quan tâm đến chất lượng giáo dục đặc biệt quan tâm, 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 lý thuyết thực hành nhằm hướng dẫn học sinh dễ hiểu ghi nhớ kiến thức môn Tin học 8, - Ở thực hành tổ chức học tập theo nhóm có nhận xét đánh giá kết nhóm -Tôi hình thành nề nếp cho học sinh từ đầu năm học * Hạn chế: - Đời sống người dân nhiều thôn, buôn nhiều khó khăn, nên việc đầu tư cho em học tập hạn chế - Môn Tin học môn học tự chọn nên có học sinh chưa thật đam mê môn học, số em thụ động trình tiếp thu kiến thức - Phương tiện dạy học, đặc biệt phòng máy trường 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 nên ý thức tìm tòi nghiên cứu em hạn chế Có không học sinh chưa cố gắng 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ố em HS nhà chưa có máy tính để thực hành nên kỹ sử dụng máy nhiều hạn chế làm giảm chất lượng học tập em * Đối tượng nghiên cứu: Học sinh lớp 8,9 * Phương pháp nghiên cứu: - 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 giảng dạy - Phương pháp trò chuyện trao đổi - Phương pháp đọc sách 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 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 nề nếp học phòng máy cho học sinh - GV chia nhóm học tập cho HS, phân nhóm trưởng, hướng dẫn cách hoạt động nhóm trang bị sổ tay ghi chép cá nhân HS - GV soạn trước thực dạy tiết nhằm giúp việc nghiên cứu kiến thức sâu chủ động việc soạn kiểm tra - GV cần đầu tư nghiên cứu, năm cập nhật cách hay đồng nghiệp để tích luỹ cho việc giảng dạy - GV cần dành thời lượng thích hợp cho việc mấu chốt hướng dẫn HS cách nhớ kiến thức vừa học tiết học lý thuyết Cũng cách tìm hiểu ý nghĩa lệnh thực hành - HS phải chuẩn bị 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ư thuật toán cho học sinh THCS viết chương trình Pascal CHƯƠNG TRÌNH= THUẬT TOÁN +CẤU TRÚC DỮ LIỆU Như thuật toán phần quan bậc để tạo nên chương trình Một học sinh muốn tiến sâu, tiến xa tương lai phải có tư thuật toán tốt Làm quen rèn luyện tư thuật toán cho học sinh bắt đầu học lập trình yêu cầu thiết yếu Không nên vội vàng cho học sinh làm việc máy tính bắt đầu học Khi dạy tin học ý dành nhiều thời gian dạy thuật toán * Xây dựng phong cách lập trình tốt cho HS Thứ phải tuân theo quy chuẩn quy ước Cơ sở cho việc viết chương trình hiệu là: Cách trình bày rõ ràng, sáng sủa bật cấu trúc logic chương trình Lợi ích việc trình bày cẩn thận: - Thể tốt cấu trúc lôgic mã lệnh - Cải thiện khả đọc - Bảo đảm xác thay đổi - Các lợi ích hệ lợi ích + Chương trình mắc lỗi dễ sửa chữa mắc lỗi + Tiết kiệm thời gian sửa lỗi + Tăng khả 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), đơn thể thực công việc, độc lập với tốt (chương trình con) Điều giúp cho chương trình dễ cải tiến đọc chương trình ta dễ hình dung vấn đề thực - Nên sử dụng tham số truyền thông tin cho chương trình Tránh sử dụng biến toàn cục để truyền thông tin chương trình làm tính độc lập chương trình khó khăn kiểm soát giá trị chúng chương trình thi hành - Cách trình bày chương trình quán dễ đọc, dễ hiểu - Chương trình nên giữ tính đơn giản, rõ ràng - Chương trình nên thực dòng chảy từ 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 + Không nên sử dụng Goto phá vỡ tính việc thực chương trình + Quy tắc trình bày dòng lệnh - Mỗi câu lênh nên đặt riêng dòng để chương trình dễ đọc dễ quan sát cách thực hiên dùng watch để tìm lỗi - Sử dụng tab để canh lề chương trình (các lệnh ngang cấp phải tab vào nhau): Điều giúp chương trình rõ ràng 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 hàm để tránh nhầm lẫn - Viết thích cho chương trình: Biến, hàm định nghĩa nên viết thích ý nghĩa chức rõ ràng Đôi đoạn lệnh thực thi cần giải thích chúng phức tạp Nên viết thích ngắn gọn đầy đủ dễ hiểu Tuy nhiên lệnh thích, việc thích tràn lan với câu lệnh đơn giản ý nghĩa mà làm chương trình khó nhì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ạng khẳng định, việc viết dạng phủ định làm khó hiểu + Qui tắc khai báo tên tệp liệu dùng chương trình Dùng tệp nên khai báo tên têp trước phần khai báo hằng: Ví du: Const fi=’BAI3.INP’; Fo=’BAI3.OUT’ ; * Tối ưu thực thi mã nguồn Mục đích việc tối ưu mã nguồn nâng cao tốc độ xử lý hạn chế không gian nhớ mà chương trình chiếm dụng Thông thường mâu thuẫn tốc độ không gian lưu trữ, tùy theo điều kiện cụ thể mà người lập trình có lựa chọn thích hợp Một số thủ thuật sau 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 biểu thức tính toán dùng nhiều lần nên tính kết lần lưu vào biến dùng lại - Thay biểu thức biểu thức tương đương lợi thực thi - Dùng số nguyên thay cho số thực: Do việc xử lý số thực chậm xử lý số nguyên nên ta dùng số nguyên thay cho số thực có phần lẻ nhỏ Vì dụ: Điểm trung bình học sinh số thực ta thay số nguyên: DTB 7.85 lưu số nguyên 785, xuất chia cho 100 - Thoát khỏi vòng lặp 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 mà đạt mục đích 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 ngắt luồng thực thi - Tránh lãng phí nhớ: Bằng cách sử dụng kiểu liệu nhỏ đủ để lưu trữ Việc sử dụng tài nguyên nhiều mức đòi hỏi chương trình thói quen xấu mà người lập trình hay mắc phải Hơn tốc độ chương trình nhanh sử dụng kiểu liệu nhỏ - Khai báo biến cục phạm vi gần nhất: Khai báo biến cục gần với điểm sử dụng Việc khai báo phạm vi rộng làm lãng phí 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ó nhiều tham số truyền vào làm ảnh hưởng đến ngăn xếp dành cho việc gọi hàm Nhất trường hợp tham số kiểu liệu có cấu trúc Sử dụng trỏ hay tham chiếu trường hợp để đơn giản hóa * Kiểm nghiệm chương trình với test đầy đủ - Test đầu bài, - Các test đơn giản - Test 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Đ: lập trình gặp trường hợp phải lặp lặp lại công việc số lần xác định Ví dụ: viết hình số từ đến 24 số chiếm dòng Nếu dùng lệnh viết hình phải dùng 25 lệnh Writeln Cách viết rõ ràng chấp nhận được, PASCAL cung cấp 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 biến thiên biến đếm - Cú pháp: Dạng tiến: For := to ; Dạng lùi: For := Downto ; Trong đó: + for, to, từ khóa + Biến đếm có kiểu nguyên + Giá trị đầu giá trị cuối biểu thức có kiểu với biến đếm giá trị cuối phải lớn giá trị đầu + Câu lệnh 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ị giá trị đầu 2, Máy kiểm tra xem giá trị biến đếm nhỏ giá trị biểu thức giá trị cuối hay không (biến đếm ≤ giá trị cuối) Nếu việc kiểm tra: - Cho giá trị sai câu lệnh bị bỏ qua - Cho giá trị đúng: +Máy thực câu lệnh sau từ khóa + Tăng giá trị biến đếm lên giá trị đứng liền sau (biến đếm:=succ(b)) - Quay trở lại bước - Ta minh hoạ vòng lặp for 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 Biến đếmtiến, := Succ(Biến đếm)thực lặp lặp lại giá trị biến đếm lớn giá trị cuối Mỗi lần thực xong câu lệnh, giá trị biến đếm tăng lên đến giá trị liền sau * Nguyên lý hoạt động cấu trúc For dạng lùi: 10 Biến đếm nhận giá trị cuối Máy kiểm tra xem giá trị biến đếm lớn giá trị đầu không? 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 thực câu lệnh + Giảm giá trị biến đếm b đến giá trị đứng liền trước (biến đếm:=pred(b)) - Quay trở lại bước - Ta minh hoạ vòng lặp for 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 thực lặp lặp lại giá trị biến đếm nhỏ giá trị giá trị đầu Mỗi lần thực xong câu lệnh, giá trị biến đếm giảm đến giá trị liền trước * 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 ; Câu lệnh thân chu trình câu lệnh đơn 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: Máy tính xác định giá trị Tuỳ thuộc vào giá trị : - Nếu có giá trị (TRUE), máy tính thực câu lệnh sau quay lại bước - Nếu có giá trị sai (FALSE), câu lệnh bị bỏ qua việc thực lệnh lặp kết thúc • Nhận xét: - Câu lệnh thực lặp lặp lại nhận giá trị sai (FALSE) Câu lệnh không thực lần nhận giá trị sai (FALSE) từ 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ị để tránh xảy vòng lặp vô tận dẫn đế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 trường hợp biến điều khiển kiểu rời rạc đặc biệt trường hợp số lần lặp trước - Vòng lặp REPEAT…UNTIL… có dạng sau REPEAT UNTIL - Nếu Sai (False) lặp lại lệnh có giá trị (TRUE) thoát khỏi cấu trúc REPEAT UNTIL - Nếu có nhiều câu lệnh lệnh ngăn cách dấu chấm phẩy (;) Công việc REPEAT UNTIL không thiết phải dùng lệnh ghép để nhóm từ lệnh đơn trở lên thành công việc - Vòng lặp Repeat … until… biểu diễn sơ đồ khối sau: Begin Công việc sai Biểu thức Boolean 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 13 Ví dụ 1: Tính tổng S = + 1/2 + 1/3 + + 1/n Nhận xét: - Trong biểu thức trên, số hạng thứ i tổng tính theo công thức S(i) = 1/i (i=1,2, ,n) - Trường hợp sử dụng hai dạng cấu trúc 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 S:= S + / i; Writeln( ' Tong S =', S : : ); Readln; End Kết tổng S với n 8, 5, bên 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 S:= S + / i; Writeln( ' Tong S =', S : : ); Readln; End Kết tổng S với n 8, 5, bên ta chạy chương trình cho kết tương tự: 14 Ví dụ 2: In hình hai dòng chữ Dòng gồm chữ in hoa từ A Z Dòng gồm chữ thường theo thứ tự ngược lại từ z đến a Nhận xét: Ta giải toán cách sử dụng cấu trúc FOR dạng tiến dạng lùi với biến điều khiển dạng ký tự nhận giá trị khoảng từ A đến Z Chương trình Program in_dong; Var ch: char; Begin Writeln; For ch := 'A' to 'Z' Write(ch:2); Writeln; For ch := 'z' downto 'a' Write(ch:2); Writeln; Readln; End Kết việc chạy chương trình là: Ví dụ 3: Đọc vào n số thực, tìm Max chúng * Thuật toán tìm Max dãy số: - Cho Max số thứ - Duyệt toàn dãy số từ số thứ hai trở đi, thấy số lớn Max lấy số làm Max Sau duyệt xong dãy số, ta có Max số lớn Nhận xét: - Dãy số có số lượng hữu hạn số Ta biết số lượng từ bắt đầu thực 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 15 Chương trình Program tim_max; Var n, i: integer; max, x: real; Begin Write(‘n = ‘); Readln(n); For i := to n Begin Write(‘Cho so thu ’, i);Readln(X); if Max < X then Max := X; End; Writeln(‘Max = ‘, Max:8:2); Readln; End Kết chạy chương trình là: * Áp dụng 2: While Ví dụ 1: Tính tổng S= n + + + + 10 + n2 , Sao cho S >= 10 Nhận xét: - Trong biểu thức trên, số hạng thứ i tổng tính theo công thức S(i) = i/ + i2 (i=1,2, ,n) - Điều kiện để dừng vòng lặp tổng S phải nhỏ 10 "Trường hợp sử dụng dạng cấu trúc While sau: Chương trình Var i : Integer; S:Real; Begin S:=0; i:=0; While S < 10 Begin i := i + 1; S := S + i / (1+SQR( i ) ); 16 End; Writeln( ' Tong S =', S : : ); Writeln( ‘So lan lap la:’, i ); Readln; End - Kết cua việc chạy chương trình là: Ví dụ 2: Tìm bội số chung nhỏ hai số nguyên dương *Thuật toán: Lấy hai số nhân với 1, 2, 3, tích số chia hết cho số thứ hai tích số BSCNN *Nhận xét: - Thuật toán cho thấy trình tính toán, biết trước trình nhân phải thực lặp lại lần Trường hợp 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 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) Begin BSCNN := k*m; k:= k + 1; End; Writeln(‘BSCNN = ‘, BSCNN); Readln; End - Kết chay chương là: 17 Ví dụ 3: Tìm Ước số chung lớn hai số nguyên dương m, n • Thuật toán: Nếu m>n lấy m = m – n Nếu m lớn n tiếp tục lấy m = m - n Nếu m< n lấy n = n - m Nếu n lớn m tiếp tục lấy n = n – m Lặp lại thuật toán m = n Lúc m = n ƯSCLN • Nhận xét: Thuật toán cho thấy xác đinh trước phép trừ phải thực lặp lại lần Trường hợp 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 hai số • Chương trình Program USCLN; Var x, y: Integer; Begin Write(‘x = ‘);Readln(x); Write(y = ‘);Readln(y); While x y If x>y then x := x – y else y := y – x; Writeln(‘USCLN la: ‘, x) Readln; End - Kết qua chay chương trình la: 18 * Áp dụng 3: Ví dụ: Viết chương trình tìm ƯSCLN N số 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 := To n Do Begin Write(' So thu ', i ,' = ') ; Readln( a[i] ) ; End ; For i := To n-1 Do Repeat d := a[i] ; a[i] := a[ i+1 ] mod a[i] ; a[i+1] := d ; Until a[i] = ; Writeln (' USCLN cua ', N ,' so la : ', a[n] ) ; Readln ; END - Kết ta chay chương trình là: 19 NHỮNG THÔNG TIN CẤN ĐƯỢC BẢO MẬT: Sáng kiến phổ biến nhân rộng cho tất đối tượng; dùng để giảng dạy áp dụng để tham khảo 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 điều kiện thời gian lớp để hướng dẫn cho học sinh kỹ cần thiết trình lập trình Pascal + Đối với học sinh: Cần ý tiếp thu lớp đồng thời tham khảo thêm tài liệu + Đối với phòng Giáo dục Đà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 đề công tác dạy học để giáo viên có thêm hội học hỏi kinh nghiệm lẫn + Đối với nhà trường: - Tạo điều kiện mua sắm trang thiết bị phục vụ môn 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 mua quyền phần mềm cho máy tính - Quán triệt tinh thần học tập học sinh + Đối phụ huynh học sinh: Gia đình phải trọng quan tâm đến việc học hành nhiều Cần dành nhiều thời gian giám sát việc học nhà em 10 Đánh giá lợi ích thu dự kiến thu áp dụng sáng kiến theo ý kiến tác giả theo ý kiến tổ chức, cá nhân tham gia áp dụng sáng kiến lần đầu, kể áp dụng thử (nếu có) theo nội dung sau: 20 10.1 Đánh giá lợi ích thu dự kiến thu áp dụng sáng kiến theo ý kiến tác giả: * Kết đạt được: Qua thực tế học kì vừa qua (năm học 2015-2016), vận dụng chuyên đề giảng dạy Đã thu thập kết khả quan Từ kết trên, nhận thấy tỉ lệ học sinh yếu –kém học sinh mà phụ trách giảng dạy, giảm dần Đó phấn khởi mà thân vận dụng sáng kiến * Bài học kinh nghiệm: + Ưu điểm: - Kích thích động học tập học sinh - Nâng cao chất lượng dạy học + Nhược điểm: Một số học sinh yếu kiến thức môn Toán, thêm vào có số thuật toán em chưa học chương trình, nên giáo viên phải kiên trì, nhẫn nại, chí nhiều thời gian việc hướng dẫn thuật toán cho học sinh 10.2 Đánh giá lợi ích thu dự kiến thu áp dụng sáng kiến theo ý kiến tổ chức, cá nhân: - Tăng tính sáng tạo, khả tự nghiên cứu - Tăng cường tính tự học, tự chủ việc học em học sinh 11 Danh sách tổ chức/cá nhân tham gia áp dụng thử áp dụng sáng kiến lần đầu (nếu có): Số Tên tổ chức/cá TT nhân Địa 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 tóm lược nội dung cú pháp, cách thực câu lệnh thuộc cấu trúc lặp phân tích ngôn ngữ lập trình Pascal, số ví dụ toán điển hình cho dạng lặp cụ thể mà thân đúc kết trình giảng dạy môn tin học trường Qua giúp học sinh đồng nghiệp làm tài liệu tham khảo trình học tập giảng dạy có hiệu Trong phạm vi sáng kiến kinh nghiệm việc phân tích nội dung câu lệnh ví dụ dạng lệnh chưa thật chi tiết phong phú mong nhận góp ý chân thành từ quý đồng nghiệp, học sinh để đề tài hoàn thiệ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 Sách giao khoa Tin học 8,9 (Quyển 3,4) – Nhà xuất Giáo dục Tham khảo tài liệu Pascal mạng internet 23 [...]... * 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... 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 do ; 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... 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 để 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 ... sẽ thực hiện câu lệnh sau đó quay lại bước 1 - Nếu 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 nhận giá trị sai (FALSE) Câu lệnh sẽ không được thực hiện lần nào nếu nhận giá trị sai (FALSE) ngay từ khi bắt đầu vào chu trình - Trong thân chu... 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. .. đã 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... 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... 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... đó 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... đượ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

Ngày đăng: 29/10/2016, 20:07

Từ khóa liên quan

Mục lục

  • 7.1.1. CƠ SỞ LÝ LUẬN:

  • * Cơ sở lý luận về lý thuyết:

  • * Cơ sở lý luận về thực tiễn:

  • 7.1.2. THỰC TRẠNG:

  • * Hạn chế:

  • 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:

  • 7.1.3.2. MỘT SỐ GIẢI PHÁP THỰC HIỆN:

  • * GIẢI PHÁP VIẾT CHƯƠNG TRÌNH VỚI CẤU TRÚC LẶP FOR...TO...DO:

  • 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> ;

  • * Áp dụng 1: Áp dụng với vòng lặp For...to...do

Tài liệu cùng người dùng

Tài liệu liên quan