Rèn luyện sử dụng Mod, Div trong Pascal và scratch – Ôn Thi HSG

Các bạn đã biết div là phép toán gì và đặc biệt hơn div là phép toán gì trong pascal chưa vậy hôm nay hãy theo dõi onthihsg để biết thêm chi tiết bên dưới nhé.

Div là phép toán gì

Mod, div 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 đó.

Rèn luyện sử dụng Mod, Div trong Pascal và scratch

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 đó đếmcộ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 mod là gì trong pascal dưới đây ngay nhé.

Video hướng dẫn Div, Mod là gì

Giới thiệu hai phép toán Mod và Div

Mod: Là phép toán chia lấy phần dư hay phép chia lấy phần dư trong pascal là Mod

Div: Là phép toán chia lấy phần nguyên.

Ví dụ: 13 div 5 = 2 và 13 mod 5 = 3 (vì 13 chia cho 5 được 2 dư 3)

Ủa nó có liên quan gì đâu đến việc lấy ra các chữ số của một số nguyên nhỉ! Có đấy các bạn, các bạn xem thử nhé: 123456 mod 10 = 6, lấy được số 6 cuối cùng rồi, 123456 div 10 = 12345 bỏ đi chữ số cuối cùng rồi, 12345 mod 10 = 5 lại lấy được chữ số 5 ra rồi nhé, …vậy là bạn đã hiểu cách dùng hai phép toán Mod, Div để tách lấy được các chữ số của một số nguyên chưa nào. Ta chỉ cần lập trình để đếm và cộng dồn các chữ số đó là OK phải không nào. Vậy ta đã biết được mod là phép toán gì và div là phép toán gì rồi chứ.

Ứng dụng mod, div trong Pascal cho bài toán trên

Ta hãy cùng code bài toán trên bằng Pascal theo cách sử dụng mod, div nhé.

Dữ liệu vào file: Dem _CS.inp Dữ liệu ra file: Dem_CS.out Chứa số n

VD: 12456

– Dòng 1: ghi số các chữ số

– Dòng 2: Ghi tổng các chữ số

5

18

Ý 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: Mod

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 Div

Tôi lần tìm thì phát hiện ra phép toán “Làm tròn xuống” và nghĩ ngay phép toán này có thể giúp xây dựng được phép toán Div giống như Pascal. OK như vậy là ta đã có đủ hai phép tính vật lý rồi nhé.

Việc còn lại các bạn chỉ cần lập trình Scratch bằng cách kéo thả theo thuật toán như trong Pascal mà thôi. Các bạn tự code nhé.

Ngoài ra sau khi học xong về Scratch bạn có thể lập trình được phần mềm nhỏ tăng độ nét cho video online được nha các bạn !

Không cần Mod và Div liệu có giải quyết được bài toán này?

Câu trả lời là được nhé, mình có ý tưởng thế này trong Pascal ta hãy chuyển số nhập vào sang dạng chuỗi sau đó can thiệp vào từng phần tử của chuỗi vậy là OK rồi.

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.

Xin chào các bạn, hẹn gặp lại trong bài tiếp theo, Các bạn nhớ xem phần 3: 50 bài tập scratch nhé, có rất nhiều bài toán hay đó.

Một vài câu hỏi liên quan tới Div và Mod

Trong Pascal, phép toán MOD với số nguyên có tác dụng gì ?

A. Chia lấy phần nguyên

B. Chia lấy phần dư

C. Làm tròn số

D. Thực hiện phép chia

Câu trả lời : Trong Pascal, phép toán MOD với số nguyên có tác dụng chia lấy phần dư còn phép toán DIV với số nguyên có tác dụng chia lấy phần nguyên.

Phép toán mod dùng để thực hiện phép tính nào sau đây ?

A. Phép toán số học với số thực

B. Phép toán quan hệ

C. Phép toán số học với số nguyên

D. Phép toán Logic

Câu trả lời : C.Phép toán số học với số nguyên