Кіріспе

Есептеуден кейін қалған сома. Математикада, қалдық – есептеу жасағаннан кейін "қалған" шама. Арифметикада, қалдық – бір бүтін санды екіншісіне бөлгенде толық бөлінетін бөлігінен кейін "қалған" бүтін сан. Көпшелер алгебрасында, қалдық – бір көпшеді екіншісіне бөлгеннен кейін "қалған" көпше. Модульдік амал – бөлшекті және бөлгішті бергенде осындай қалдықты шығаратын амал. Сондай-ақ, бір санды екіншісінен шегергеннен кейін "қалған" сан, бірақ бұл дәлірек айырма деп аталады. Мұндай қолданыс кейбір бастауыш оқулықтарда кездеседі; күнделікті тілде ол "қалғаны" деген сөзбен ауыстырылады, мысалы: "Маған екі доллар қайтарып беріңіз, қалғанын өзіңізде қалдырыңыз". Дегенмен, "қалдық" термині осы мағынада қолданылады, егер функция тізбектік кеңею арқылы жуықталған болса, онда қателік мөлшері ("қалғаны") қалдық мүшесі деп аталады.

Жылжымалы нүктелі сандар үшін

a және d – нақты сандар болса, және d нөлге тең болмаса, a санын d-ге қалдықсыз бөлуге болады, онда бөлінді де нақты сан болады. Егер бөлінді бүтін санмен шектелсе, онда қалдық түсінігі қажет болады. a = qd + r, мұндағы 0 ≤ r < |d| болатын, бірегей бүтін сан q және бірегей нақты қалдық r бар екені дәлелденеді. Жоғарыда сипатталғандай, нақты сандар үшін қалдық анықтамасын кеңейту математикада теориялық маңызға ие емес; алайда, көптеген бағдарламалау тілдері осы анықтаманы қолданады (модульдік операцияны қараңыз).

Бағдарламалау тілдерінде

Анықтамаларда ешқандай қиындықтар болмаса да, теріс сандарды қалдық есептеуге қолданғанда іске асыру мәселелері туындайды. Әртүрлі бағдарламалау тілдері әртүрлі келісімдерді қабылдады. Мысалы: Pascal mod операциясының нәтижесін оң деп таңдайды, бірақ d теріс немесе нөл болуына рұқсат етпейді (сондықтан 1 = a = (a div d) × d + a mod d әрқашан дұрыс болмайды). C99 дивиденд a-ның таңбасымен бірдей таңбаға ие қалдықты таңдайды. (C99-дан бұрын C тілі басқа таңдауларға да мүмкіндік берді.) Perl, Python (тек қазіргі нұсқалары) бөлгіш d сияқты таңбаға ие қалдықты таңдайды. Scheme қалдық және модуль есімді екі функцияны ұсынады – Ada және PL/I mod және rem, ал Fortran mod және modulo-ны ұсынады; әр жағдайда, біріншісі дивиденд таңбасымен, екіншісі бөлгіш таңбасымен сәйкес келеді. Common Lisp және Haskell-те де mod және rem бар, бірақ mod бөлгіштің таңбасын пайдаланады, ал rem дивидендтің таңбасын пайдаланады.