З кожним роком зростає затребуваність професії програміста. На даний момент для написання кодів активно використовуються близько десятка мов різного рівня. Для того щоб зробити процес навчання комп'ютерного програмування більш ефективним, студентів старших класів і студентів 1-2 курсу вчать створювати перші власні програми на мові «Паскаль». Операцій div та mod і іншим розрахункам в його середовищі присвячена дана стаття.
Кілька слів про мову Pascal
«Паскаль» був створений в 1968-1969 роках відомим вченим Никлаусом Віртом, який згодом був нагороджений премією Тюринга та медаллю «Піонер комп'ютерної техніки». Останній незадовго до цього брав участь в розробці стандарту мови "Алгол-68". У статті, опублікованій в 1970-му році, головною метою своєї роботи Вірт назвав створення ефективного інструменту, що використовує структурний програмування і дані.
Згодом мову «Паскаль» зробив величезний вплив на сфери інформаційних технологій, ставши одним із базових. І донині в багатьох провідних вузах світу саме на його основі ведеться навчання професійному програмування.
Що таке цілочисельне ділення
У математиці під такою назвою розуміють операцію над двома цілими числами. В результаті цілочисельного ділення одного з них на іншого, є ціла частина приватного. Іншими словами, якщо: 24:6=4; 100:3=33 55:6=9; і пр. Цілочисельне ділення називають також знаходженням неповного приватного. Зверніть увагу, що за такої операції, у разі, якщо ділене менше дільника, результат дорівнює нулю. Позначимо результат цілочисельного ділення a на b, q. Тоді
тобто здійснюється розподіл в звичайному сенсі з наступним округленням результату до найближчого цілого в меншу сторону.
Операція div у «Паскаль»
У розглянутому нами мовою для цілочисельного ділення передбачений спеціальний оператор — div. В Pascal вираз, формула якого представлена вище, буде мати вигляд:
q:= a div b. Якщо мова йде про константах, наприклад, a=50 а b=9 то будемо мати q:= 50 div 9. В результаті q буде дорівнювати 5.
Обчислення залишку
Операція div у «Паскаль» зазвичай вивчається разом з mod. Перш ніж з'ясовувати, що означає ця запис, розберемося, як можна знайти залишок числа. Очевидно, що його можна знайти, використовуючи величину, отриману в результаті цілочисельного ділення, тобто r = a – b x q.
Операція mod в «Паскаль»
В Pascal знайти залишок можна дуже просто. Для цих цілей передбачено бінарна операція mod. Вона записується наступним чином: r = a mod b. Якщо, наприклад, a=50 а b=9 то матимемо r:= 50 mod 9. В результаті r буде 4.
Практичне застосування
Знаходження залишку від ділення (r) використовується в комп'ютерній техніці і в сфері телекомунікацій. За допомогою такої операції генеруються контрольні і випадкові чисел в обмеженому діапазоні. Оператор mod використовують і для визначення кратності чисел, тобто подільності одного числа на інше з цілочисельним результатом. Очевидно, що це ті пари чисел, для яких результат застосування оператора mod дає 0.
У "Паскаль" умова кратності можна записати так: if a mod b = 0 then write (a, 'кратно', b). Наприклад, при запуску коду з умовою, записаних вище, при значеннях a=4 b=2 на екрані висвітиться напис «4 кратно 2». Крім того, оператор mod можна використовувати для виведення останньої цифри числа в десятковій запису. Для цього слід використовувати конструкцію r = a mod 10. Наприклад, команда r = 37 mod 10 видасть результат 7.
Оператор trunc
Є ще один оператор, за допомогою якого можна отримати такий же результат, як від div у "Паскаль". Мова йде про trunc, який застосовується не тільки до цілих чисел. Він видає результат у вигляді цілої частини дрібного аргументу. Разом з оператором «звичайного» ділення виходить один і той же результат. Розглянемо сказане на прикладі. Нехай a=51 а b=9. Тоді в результаті виконання команди q:= 51 div 9 отримаємо q:= 5 що вийшло в результаті округлення. Якщо ж застосувати до тих же числах оператор trunc, то q:= trunc (51/9) дасть q:= 5 тобто маємо той же результат.
Приклад 1
Розглянемо, як можна використовувати div і mod в "Паскаль" для вирішення практичних завдань. Нехай потрібно знайти суму цифр двозначного числа. Хід міркувань повинен бути наступний: як вже було показано вище, останню з цифр у записі числа можна отримати, застосувавши до нього і до числа 10 оператор mod; що стосується першого числа, то воно вийде, якщо замінити mod на команду div у "Паскаль". Запишемо код на мові «Паскаль». Він буде виглядати наступним чином: program Sum_2; (назва програми) var Number,Number1Number2Sum: integer; (перерахування змінних та визначення їх типу, як цілочисельного) begin (початок тіла програми) write('Input Two-digit number'); (висновок на екран фрази "Input Two-digit number") read(Number); (введення вихідного числа) Number1 := Number div 10; (обчислення першої цифри) Number2 := Number mod 10; (обчислення другій цифри) sum := Number1 + Number2; (обчислення суми цифр) write(Sum); (виведення результату на екран) end. Для числа 25 результат використання цієї програми буде 7 а, наприклад, для 37 — 9.
Приклад 2
Напишемо код для програми для обчислення суму цифр 3-значного числа. Як знайти останню цифру — зрозуміло. Не представляє складності і обчислення 1-й. Вона вийде в результаті застосування оператора div у "Паскаль" до цього числа до 100. Залишилося з'ясувати, як знайти другу цифру. Для цього можна використовувати більш складну конструкцію, яка вийде, якщо до числа і до 10 застосувати оператор div, а потім до результату і до 10 оператор mod.
Код програми для обчислення суми цифр тризначного числа буде виглядати наступним чином: program Sum_3; (назва програми) var Number3Sum: integer; (перерахування змінних та визначення їх типу, як цілочисельного) begin (початок тіла програми) write (' Input Tree-digit number '); (висновок на екран фрази «Input Tree-digit number») read (Number3); (введення вихідного числа) Sum := Number3 div 100 + Number3 mod 10 + Number3 div 10 mod 10; (обчислення суми) write (', Sum); (виведення результату на екран) end.
Деякі зауваження
Зверніть увагу, що операція звичайного ділення при застосуванні до цілочисельним аргументів виходить за межі їхнього класу. Це корінним чином відрізняє від операції div у "Паскаль", а також від оператора mod, які видають результат, що також є цілим числом. Порядок виконання операцій бінарного типу (тобто выполняющимися над 2-ма операндами) у складному виразі визначається їх пріоритетом і круглими дужками. Іншими словами, при наявності дужок спочатку обчислюються знаходяться в них вирази в порядку зліва направо. При цьому операції *, /, mod div є більш пріоритетними, ніж + і –. Якщо дужки немає, то спершу зліва направо слід виконати дії з великим пріоритетом, а потім — + та –. Тепер ви знаєте, для чого використовується функція div у "Паскаль". Вам також відомі можливості, які дає застосування оператора mod, що, напевно, допоможе вам при створенні власних програм.