Урок из цикла: «Язык программирования Паскаль«
В предыдущем уроке были описаны операторы цикла с условием While и Repeat, которые используются для организации циклов с заранее неизвестным числом повторений.
В этом уроке будут описаны стандартные приемы, которые используются при решении задач целочисленной арифметики, показано решение нескольких учебных задач с применением циклов.
Целочисленная арифметика языка Паскаль основана на использовании пяти стандартных целых типов: Byte, Word, ShortInt, Integer, LongInt.
Cо всеми целыми типами связан набор из пяти основных арифметических операций:
+, -, *, div, mod.
Первые три операции имеют обычный смысл сложения, вычитания и умножения. Последние две определяются так: A div B — частное от деления нацело, A mod B — остаток от деления нацело двух целых чисел A и B.
При этом, для неотрицательных А и В (В‡0), частное A div B показывает, сколько раз делитель — число B, содержится в делимом — числе A; в то же время, остаток A mod B показывает, сколько останется, если из делимого — числа А, вычесть все вхождения в него делителя — числа В.
Например.
15 div 6 = 2 (Здесь 2 — частное. Оно показывает, сколько раз делитель — число 6, содержится в делимом — числе 15).
15 mod 6 = 3 (Здесь 3 — остаток. Он показывает, сколько останется, если из числа 15, вычесть все вхождения в него числа 6).
Для целых, неотрицательных A и B, операции div и mod связаны простым соотношением:
A mod B = A — (A div B)*B.
Большая часть учебных задач целочисленной арифметики построена на свойствах делимости и решается именно с применением операций div и mod.
При этом, обычно, используется несколько стандартных приёмов, которые для успешного решения таких задач, необходимо твёрдо усвоить.
А mod B = 0 | — условие делимости целого A на целое B. |
A mod 2 = 0 | — условие чётности целого A. |
A mod 10 | — значение последней цифры в десятичной записи целого А (например, 1234 mod 10 = 4). |
A div 10 | число, десятичная запись которого получится отбрасыванием последней цифры в десятичной записи целого числа А (например, 1234 div 10 =123). |
A mod p | — значение последней цифры в p-ичной записи целого А (например, при p=2, A mod 2 — последняя цифра записи А в двоичной системе счисления); |
A div p | — число, p-ичная запись которого получится отбрасыванием последней цифры в p-ичной записи целого числа А (например, 510=1012; 510 div 2 =210=102; т.е. из 1012 получили 102); |
Рассмотрим примеры решения типовых задач целочисленной арифметики с использованием циклов.
Пример1. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n(0<n<=18).
Решение
Обозначим:
k— это просматриваемое число;
p1 — это первая цифра числа k;
p2 — это вторая цифра числа k;
s — это сумма цифр данного числа k.
Число k будем выводить на экран только в том случае, когда сумма p1 и p2 будет равна n.
Program Primer_1; Var k,n,p1,p2,s : Integer; Begin Writeln('Введите целое число n (0<n<=18):'); Readln(n); For k:= 10 To 99 Do {перебор всех двузначных чисел} Begin p1 := k Div 10; {выделяем первую цифру} p2 := k Mod 10; {выделяем вторую цифру} s := p1+p2; {находим сумму цифр} If s = n Then Writeln(k); {если сумма равна n, то выводим k} end; end. |
Пример 2. Дано натуральное число n (n<=9999). Определить, является ли оно палиндромом (»перевертышем»), с учетом четырёх цифр. Например, палиндромами является числа: 2222, 6116, 0440.
Решение
Обозначим:
n — вводимое число;
m — дубликат числа n;
a — перевертыш числа n;
i — переменная цикла для создания перевертыша.
Program Primer_2; Var n,m,a,i : Integer; Begin Writeln('введите целое число, не большее 9999'); Readln(n); m:=n;{создаем дубликат числа} a:=0;{перевертыш} {создание перевертыша} For i=1 To 4 Do {так как число четырехзначное} Begin a := a * 10 + m Mod 10; m := m Div 10; end; if a = n then writeln('Да!') else writeln('Нет.'); {Если перевертыш равен данному числу, то выводим "Да", иначе - "Нет"} End.
В этом уроке мы рассмотрели задачи на целочисленную арифметику с использованием операторов цикла.
В следующем уроке будет описано использование операторов цикла для обработки числовых последовательностей.
Следующий урок: Циклы и числовые последовательности