§ 16. Реализация алгоритмов работы с целочисленными данными

16.1. Целочисленный тип данных

Часто при решении задач нужно работать с целыми числами. Для этого в Pascal используется тип данных integer.

С помощью переменных этого типа можно задавать целые числа из диапазона от
–2147483648 до 2147483647. Для указанного типа данных определены следующие операции:

Математические операции

Запись в Pascal

+ (сложение)

+

(вычитание)

(умножение)

*

целочисленное деление

div

нахождение остатка

mod

Для целочисленных данных не определена операция деления, как для действительных чисел. При попытке использовать операцию деления будет выдана ошибка (пример 16.1).

Для организации вычислений c целыми числами определены операции div и mod. Эти операции имеют такой же приоритет, как и операции деления и умножения.

Пример 16.2. Даны два целых числа a и b. Напишем программу, которая находит целую часть от деления a на b и остаток от деления a на b.

Этапы выполнения задания:

1. Определение исходных данных: переменные a и b.

2. Определение результатов: переменные c (целочисленное частное) и d (остаток).

3. Алгоритм решения задачи:

3.1. Ввод исходных данных.

3.2. Целочисленное частное находим как результат операции: a div b, остаток — a mod b.

3.3. Вывод результата.

4. Описание переменных.

Все переменные, определенные для решения задачи, имеют тип integer.

Значение, которое выдает в качестве результата операция mod, может отличатся от математического определения остатка (в математике под остатком понимают неотрицательное число). Если остаток не равен нулю, то знак числа, которое является результатом операции mod, определяется знаком делимого.

16.2. Использование целочисленных данных для решения задач

Пример 16.3. Васин таймер показывает время только в секундах. Напишем для Васи программу, которая переведет время в минуты и секунды.

Этапы выполнения задания:

1. Определение исходных данных: переменная с (время в секундах).

2. Определение результатов: переменные m (полное количество минут) и s (остаток секунд).

3. Алгоритм решения задачи:

3.1. Ввод исходных данных.

3.2. Для нахождения полного числа минут нужно найти целую часть от деления исходного числа секунд на 60.

3.3. Оставшиеся секунды можно найти как остаток от деления исходного числа секунд на 60.

3.4. Вывод результата.

4. Описание переменных.

Все переменные, определенные для решения задачи, имеют тип integer.

Пример 16.4. Напишем программу для решения задачи.

Задано двузначное число. Необходимо поменять местами первую и вторую цифры числа.

Этапы выполнения задания:

1. Определение исходных данных: переменная а (исходное число).

2. Определение результатов: переменная b (преобразованное число).

3. Алгоритм решения задачи:

3.1. Ввод исходных данных.

3.2. Для преобразования числа необходимо выполнить следующие действия:

а) в переменной a1 сохраним вторую цифру числа. Для выделения цифры из числа нужно найти остаток от деления исходного числа на 10 (mod 10);

б) для выделения первой цифры (переменная a2) нужно найти целую часть от деления числа на 10;

в) искомое число b получим, если умножим a1 на десять и к полученному произведению прибавим значение переменной a2.

3.3. Вывод результата.

4. Описание переменных.

Все переменные, определенные для решения задачи, имеют тип integer.

Пример 16.5. В исторической книге, которую читала Таня, длина отреза ткани измерялась в локтях. Напишем для Тани программу, которая переведет локти в метры и сантиметры.

Этапы выполнения задания:

1. Определение исходных данных: переменная l (локти).

2. Определение результатов: переменные m (метры) и s (сантиметры).

3. Алгоритм решения задачи:

3.1. Ввод исходных данных.

3.2. Сначала переведем локти в сантиметры. Для этого количество локтей нужно умножить на 45 и сохранить значение в переменной x.

3.3. Для определения числа метров найдем целую часть от деления x на 100.

3.4. Оставшиеся сантиметры можно найти как остаток от деления x на 100.

3.5. Вывод результата.

4. Описание переменных:

Все переменные, определенные для решения задачи, имеют тип integer.

В PascalABC определены различные типы данных для работы с целыми числами, позволяющие выполнять действия над данными из разных числовых диапазонов. Чем больше диапазон, тем больше места в памяти компьютера отводится для хранения переменных.

Некоторые целочисленные типы данных:

 

Тип Диапазон значений
shortint –128..127
smallint –32768..32767
integer , longint –2147483648..2147483647
int64 –9223372036854775808..
9223372036854775807
byte 0..255
word 0..65535
longword , cardinal 0..4294967295
uint64 0..18446744073709551615

 

Пример 16.1. Ошибка использования операции деления для целочисленных типов данных:

Пример 16.2.

5. Программа:

6. Тестирование программы.

Запустите программу и введите значения a = 11 и b = 4.

Результат работы программы должен быть следующим:

Результат операций div и mod для разных чисел:

 

a b a div b a mod b
17 3 5 2
–17 3 –5 –2
17 –3 –5 2
–17 –3 5 –2

Если проанализировать данные из таблицы, то можно понять, что a mod b = a — ( a div b ) * b .

Пример 16.3.

5. Программа:

6. Тестирование программы .

Запустите программу и введите значения c = 137.

Результат работы программы должен быть следующим:

Пример 16. 4 .

5. Программа :

6. Тестирование программы .

Запустите программу и введите значения a = 25.

Результат работы программы должен быть следующим:

Издавна на Руси применялась система мер, отличная от современной Международной системы единиц (СИ).

Например: 1 аршин = 16 вершков, 1 вершок = 4 ногтя,
1 ноготь =  11 мм.

Пример 16.5.

5. Программа:

6. Тестирование программы.

Запустите программу и введите значение t l = 7.

Результат работы программы должен быть следующим:



1. Какой тип данных можно использовать в Pascal для работы с целочисленными данными?



2. Какое максимальное значение можно задать переменной типа integer?



3. Какие операции определены для целочисленных данных?



  1. Вася написал программу, которая переводит длину из метров в километры и метры. Но он не может решить, где нужно использовать div, а где mod. Помогите ему. Откройте файл и исправьте программу.

  2. Ответьте на вопросы для примера 16.3.
    1. При каких значениях переменной a значение переменной b будет таким же?
    2. Всегда ли в результате выполнения программы мы будем получать двузначное число? Почему?
    3. Попробуйте ввести трехзначное число (например, 125). Объясните получившийся результат.
  3. Напишите программы для решения задач. Используйте операции div и mod.
    1. Задано двузначное число. Найдите среднее арифметическое цифр числа.
    2. Задано двузначное число. Найдите разность между количеством десятков и единиц.
    3. Дана масса в граммах. Переведите ее в килограммы и граммы.
    4. Площадь участка измеряется в арах. Найдите количество полных км2.
  4. Для старорусской системы весов известны следующие соотношения:

    1 берковец = 10 пудов = 400 фунтов = 38 400 золотников.

    Напишите программу, которая переводит массу, заданную в золотниках, в фунты, пуды и берковцы.