Как в Pascal обозначаются натуральные числа? Как описать переменную в программе, если указано, что это должно быть именно натуральное число? Это ведь не integer, и не real, и не word
Натуральные числа в математике определяются как целые положительные, получающиеся при счете. Т.е. это числа 1, 2, 3, ...
В языке Паскаль (собственно, как и в большинстве других языков программирования) нет специального типа данных для натуральных чисел. Поэтому натуральные числа отображаются на целочисленные типы. Указание на то, что Вы имеете дело с натуральным числом, дается с тем, чтобы учесть это при разработке алгоритма. Например, если сказано что n - натуральное число, можно не беспокоиться, что при делении на него будет ошибка деления на ноль. Можно не озабочиваться тем, что оно попадет под квадратный корень и даст ошибку из-за появления код корнем отрицательного числа. И так далее.
Подходящим типом данных в Паскале может быть тот целочисленный, в котором разместятся любые натуральные числа, которые заданы или могут образоваться в процессе вычислений, даже как промежуточные данные. Например, если Вы возьмете тип integer, современные версии Паскаль позволят разместить в нем значение, не превышающее 2 147 483 647, т.е. примерно 2.1 миллиарда. Пусть дано n = 2 000 000 000 и надо найти остаток от деления n² на 97.
Если написать Sqr(n) mod 97, получим забавный результат -41, хотя ответ тут 65. Это потому, что 2 миллиарда в квадрате нельзя разместить в переменной типа integer (но можно в int64) и часть разрядов числа будет молча утеряна. Это одна из неприятностей неграмотной работы с целыми числами. Одна - потому что есть и другие)).
Answers & Comments
Натуральные числа в математике определяются как целые положительные, получающиеся при счете. Т.е. это числа 1, 2, 3, ...
В языке Паскаль (собственно, как и в большинстве других языков программирования) нет специального типа данных для натуральных чисел. Поэтому натуральные числа отображаются на целочисленные типы. Указание на то, что Вы имеете дело с натуральным числом, дается с тем, чтобы учесть это при разработке алгоритма. Например, если сказано что n - натуральное число, можно не беспокоиться, что при делении на него будет ошибка деления на ноль. Можно не озабочиваться тем, что оно попадет под квадратный корень и даст ошибку из-за появления код корнем отрицательного числа. И так далее.
Подходящим типом данных в Паскале может быть тот целочисленный, в котором разместятся любые натуральные числа, которые заданы или могут образоваться в процессе вычислений, даже как промежуточные данные. Например, если Вы возьмете тип integer, современные версии Паскаль позволят разместить в нем значение, не превышающее 2 147 483 647, т.е. примерно 2.1 миллиарда. Пусть дано n = 2 000 000 000 и надо найти остаток от деления n² на 97.
Если написать Sqr(n) mod 97, получим забавный результат -41, хотя ответ тут 65. Это потому, что 2 миллиарда в квадрате нельзя разместить в переменной типа integer (но можно в int64) и часть разрядов числа будет молча утеряна. Это одна из неприятностей неграмотной работы с целыми числами. Одна - потому что есть и другие)).