Rèn Luyện Sử Dụng Mod, Div Trong Pascal Và Scratch
--- Bài mới hơn ---
Mod, p là hai phép toán cho số nguyên được ứng dụng rất nhiều trong lập trình, trong bài viết này mình sẽ cùng học tập chia sẻ cách sử dụng Mod, Div trong Pascal và scratch qua một ví dụ cụ thể như sau:
Bài toán: Viết chương trình nhập vào một số nguyên dương n (n< 2 tỉ). Xuất ra số các chữ số của số nguyên đó và tổng các chữ số của số nguyên đó.
Ví dụ: Nếu người dùng nhập vào số: 123456 thì kết quả xuất ra: Số các chữ số là: 6. Tổng các chữ số cảu số nguyên vừa nhập là: 21
Gợi ý: Để giải quyết bài toán này ta cần tìm cách để tách ra các chữ số của số nguyên nhập vào sau đó đếm và cộng dồn để tính tổng các chữ số của số đó, vậy vấn đề quan trong nhất là làm sao để tách lấy được từng chữ số của số nguyên đó! ta hãy cũng tím hiểu
Giới thiệu hai phép toán Mod và Div
Mod: Là phép toán chia lấy phần dư.
Div: Là phép toán chia lấy phần nguyên.
Ví dụ: 13 p 5 = 2 và 13 mod 5 = 3 (vì 13 chia cho 5 được 2 dư 3)
Ứng dụng mod, p trong Pascal cho bài toán trên
Ý nghĩa của chương trình như sau:
Nếu n = 0 thì cho biến đếm là 1 còn nếu không thì cho biến đếm là 0 . Đây là đoạn mã để xử lý trường hợp đặc biệt n = 0, nếu trường hợp này xảy ra thì chương trình sẽ không thực hiện vòng lặp phía sau và kết luận ngay số có 1 chữ số và tổng các chữ số bằng 0. Tùy theo thuật toán mà thường xuất hiện các trường hợp đặc biệt, ta cần lập trình để xử lý riêng các trường hợp này
Vòng lặp While: Có nhiệm vụ lặp lại việc
- Tách từng chữ số của số nguyên ra (từ phải sang trái) – Dùng phép toán mod
- Sau khi tách được bỏ bớt chữ số đó – Dùng phép toán Div
Liệu trong Scratch có hai hàm Mod và Div không?
Mình tự đặt ra câu hỏi này ngay khi nghĩ đến bài toán, chúng ta thử lục tìm trong “Các phép toán” của Scratch xem nào.
Thấy rồi hàm Mod đây rồi:
Không thấy Div các bạn ơi, làm sao đây! Ta không thấy trong Scratch có phép toán Div nhưng đã là ngôn ngữ lập trình thì chắc chắn phải có cách xây dựng phép toán DIV mình suy nghĩ như vậy và cuối cùng tìm ra cách xây dựng phép toán này trong Scratch như sau:
Xây dựng Div trong Scratch
Không cần Mod và Div liệu có giải quyết được bài toán này?
Còn trong Scratch thì còn đơn giản hơn nữa vì biến trong Scratch chung cả số và chuỗi vì vậy chẳng cần chuyển gì nữa cứ vậy mà tách từng chữ số ra mà đếm và công dồn thôi.
Cách này có vẻ đơn giản hơn rất nhiều tuy nhiên mình không khuyến khích các bạn làm bằng cách này mà hãy làm bằng cách sử dụng Div và Mod nó “toán học” hơn phải không các bạn.
--- Bài cũ hơn ---