Как составить integer 4 в паскале

integer1-10

Совсем недавно мы закончили разбор первого раздела сборника «1000 задач по программированию» — раздела Begin. Но на этом мы не останавливаемся, и прямо сейчас начинаем разбирать новый раздел — раздел Integer. (Думаю, вы уже догадались, что все переменные, представленные в следующих задач Integer1-10 — целые числа.)

В  Integer  основной упор будет сделан на div и mod.

Integer1. Дано расстояние L в сантиметрах. Используя операцию деления нацело, найти количество полных метров в нем (1 метр = 100 см).

Program Integer_1;

var l, k: integer;

begin
  write ('Введите значение L:');
  readln (l);
  k := l div 100;
  write ('Количество полных метров: ', k,'.');
end.

Integer2. Дана масса M в килограммах. Используя операцию деления нацело, найти количество полных тонн в ней (1 тонна = 1000 кг).

Program Integer_2;

var M, k: integer;

begin
  write ('Введите значение M: ');
  readln (M);
  k := M div 1000;
  write ('Количество полных тонн: ', k,'.');
end.

Integer3°. Дан размер файла в байтах. Используя операцию деления нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта).

Program Integer_3;

var a, k: integer;

begin
  write ('Введите размер файла: ');
  readln (a);
  k := a div 1024;
  write ('Количество полных килобайтов: ', k,'.');
end.

Integer4. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию деления нацело, найти количество отрезков B, размещенных на отрезке A.

Program Integer_4;

var a, b, k: integer;

begin
  write ('Введите a и b: ');
  readln (a, b);
  k := a div b;
  write ('Количество отрезков B, размещенных на отрезке A: ', k);
end.

Integer5. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию взятия остатка от деления нацело, найти длину незанятой части отрезка A.

Program Integer_5;

var a, b, k: integer;

begin
  write ('Введите a и b: ');
  readln (a, b);
  k := a mod b;
  write ('Длина незанятой части отрезка: ', k);
end.

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

Integer6. Дано двузначное число. Вывести вначале его левую цифру (десятки), а затем — его правую цифру (единицы). Для нахождения десятков использовать операцию деления нацело, для нахождения единиц — операцию взятия остатка от деления.

Program Integer_6;

var chislo, desyatki, edinizi: integer;

begin
  write ('Введите число: ');
  readln (chislo);
  desyatki := chislo div 10;
  writeln (desyatki);
  edinizi := chislo mod 10;
  writeln (edinizi);
end.

Integer7. Дано двузначное число. Найти сумму и произведение его цифр.

Program Integer_7;

var chislo, desyatki, edinizi, summa, proizv: integer;

begin
  write ('Введите число: ');
  readln (chislo);
  desyatki := chislo div 10;
  edinizi := chislo mod 10;
  summa := desyatki + edinizi;
  proizv := desyatki * edinizi;
  writeln ('Сумма цифр числа: ', summa);
  writeln('Произведение цифр числа: ', proizv);
end.

Integer8°. Дано двузначное число. Вывести число, полученное при перестановке цифр исходного числа.

Program Integer_8;

var chislo, desyatki, edinizi: integer;

begin
  write ('Введите число: ');
  readln (chislo);
  desyatki := chislo div 10;
  edinizi := chislo mod 10;
  chislo := edinizi * 10 + desyatki;
  writeln ('Полученное число: ', chislo);
end.

Integer9. Дано трехзначное число. Используя одну операцию деления нацело, вывести первую цифру данного числа (сотни).

Program Integer_9;

var chislo, sotni: integer;

begin
  write ('Введите число: ');
  readln (chislo);
  sotni := chislo div 100;
  writeln (sotni);
end.

Integer10. Дано трехзначное число. Вывести вначале его последнюю цифру (единицы), а затем — его среднюю цифру (десятки).

Program Integer_10;

var chislo, desyatki, edinizi: integer;

begin
write ('Введите число: ');
readln (chislo);
edinizi := chislo mod 10;
writeln (edinizi);
desyatki := chislo mod 100 div 10;
writeln (desyatki);
end.

Согласитесь, что это были не очень сложные задачи, поэтому никаких объяснений и блок-схем не требуется. Если же у вас возникли какие-либо проблемы, то не стесняйтесь и пишите все свои вопросы в комментарии под этой статьей. Ну, а если вам просто понравилась эта статья, то обязательно кликайте по кнопочкам, которые расположены ниже.  🙂







Deutsch (de)
English (en)



suomi (fi)
français (fr)


italiano (it)







русский (ru)









The data type integer is a built-in data type of the programming language Pascal.
It can store a subset of ℤ, the set of whole numbers.

integer literal

basics

An integer is specified as a non-empty series of consecutive Western-Arabic digits.

The value of 1234 is [math]displaystyle{ 1 times 10^3 + 2 times 10^2 + 3 times 10^1 + 4 times 10^0 }[/math].
The integer may be preceded by a sign, + or , even if mathematically speaking the value is signless (this concerns the value zero).

+0   { ✔ syntactically correct }

If no sign is specified, a positive sign is presumed.

In Free Pascal, you can use the underscore to group digits if {$modeSwitch underscoreIsSeparator+} (as of 2022 only available in trunk).

varying base

To change the base in Extended Pascal you prefix the integer literal with a base specification:

This represents the value [math]displaystyle{ 1 times 8^3 + 2 times 8^2 + 3 times 8^1 + 4 times 8^0 }[/math].
The base can be any value between 2 and 36 (inclusive) and can only be specified to a decimal base.
A base specification possibly extends or restricts the set of allowed digits to those in the set of 0 to base  1 from below table:

integer digits in Extended Pascal

digit (case-insensitive) 0 1 2 3 4 5 6 7 8 9 A B
value (decimal) [math]displaystyle{ 0 }[/math] [math]displaystyle{ 1 }[/math] [math]displaystyle{ 2 }[/math] [math]displaystyle{ 3 }[/math] [math]displaystyle{ 4 }[/math] [math]displaystyle{ 5 }[/math] [math]displaystyle{ 6 }[/math] [math]displaystyle{ 7 }[/math] [math]displaystyle{ 8 }[/math] [math]displaystyle{ 9 }[/math] [math]displaystyle{ 10 }[/math] [math]displaystyle{ 11 }[/math]
digit (case-insensitive) C D E F G H I J K L M N
value (decimal) [math]displaystyle{ 12 }[/math] [math]displaystyle{ 13 }[/math] [math]displaystyle{ 14 }[/math] [math]displaystyle{ 15 }[/math] [math]displaystyle{ 16 }[/math] [math]displaystyle{ 17 }[/math] [math]displaystyle{ 18 }[/math] [math]displaystyle{ 19 }[/math] [math]displaystyle{ 20 }[/math] [math]displaystyle{ 21 }[/math] [math]displaystyle{ 22 }[/math] [math]displaystyle{ 23 }[/math]
digit (case-insensitive) O P Q R S T U V W X Y Z
value (decimal) [math]displaystyle{ 24 }[/math] [math]displaystyle{ 25 }[/math] [math]displaystyle{ 26 }[/math] [math]displaystyle{ 27 }[/math] [math]displaystyle{ 28 }[/math] [math]displaystyle{ 29 }[/math] [math]displaystyle{ 30 }[/math] [math]displaystyle{ 31 }[/math] [math]displaystyle{ 32 }[/math] [math]displaystyle{ 33 }[/math] [math]displaystyle{ 34 }[/math] [math]displaystyle{ 35 }[/math]

As of version 3.2.0, the FPC intends to ({$mode extendedPascal}), but does not yet support a generic base-specification format.
Instead only the following bases are recognized:

integer base specifications in FPC 3.2.0

base indicator sample (decimal value)
binary ([math]displaystyle{ 2 }[/math]) % %1010 ([math]displaystyle{ 10 }[/math])
octal ([math]displaystyle{ 8 }[/math]) & &644 ([math]displaystyle{ 420 }[/math])
decimal ([math]displaystyle{ 10 }[/math]) none 1337 ([math]displaystyle{ 1337 }[/math])
hexadecimal ([math]displaystyle{ 16 }[/math]) $ $2A ([math]displaystyle{ 42 }[/math])

characteristics

It is guaranteed that all arithmetic operations in the range maxInt..+maxInt work accurately.
An integer variable may possibly store values beyond this range, but once you leave this range it is not guaranteed anymore that arithmetic operations work correctly.
Textbook example:

program lordOverflowStrikesAgain(output);
	{$overflowChecks on}
	var
		x: integer;
	begin
		x := -maxInt;
		x := pred(x); { If this doesn’t cause an error, `-maxInt - 1` storable. }
		writeLn(abs(x));
	end.

Depending on the processor used, this may print:

A quite unexpected result since abs should in principle return a non-negative value, yet expectable since pred(maxInt) is evidently not in the maxInt..+maxInt range.

application

Integer is the data of choice if arithmetic results have to be precise.
The data type real may provide “reasonable approximations”, but operations on integer have to be exact (only guaranteed as long as it is in the maxInt..+maxInt range).
Generally speaking integer operations are also faster than if done in the domain of real.

The operators div and mod only work on integer values (the math unit provides the fMod function and overloads mod).

Free Pascal deviations

The FPC does not have a data type integer but a host of integer data types.
An integer literal such as 123 possesses the data type of closest fitting range from the following table.

integer data types in FPC version 3.2.0

name (aliases) smallest storable value largest storable value sizeOf
shortInt (int8) -128 ([math]displaystyle{ -2^7 }[/math]) 127 ([math]displaystyle{ 2^7-1 }[/math]) 1
byte (uInt8) 0 ([math]displaystyle{ 0 }[/math]) 255 ([math]displaystyle{ 2^8-1 }[/math]) 1
smallInt (int16) -32768 ([math]displaystyle{ -2^{15} }[/math]) 32767 ([math]displaystyle{ 2^{15}-1 }[/math]) 2
word (uInt16) 0 ([math]displaystyle{ 0 }[/math]) 65535 ([math]displaystyle{ 2^{16}-1 }[/math]) 2
longInt (int32) -2147483648 ([math]displaystyle{ -2^{31} }[/math]) 2147483647 ([math]displaystyle{ 2^{31}-1 }[/math]) 4
longWord (cardinal, dWord) 0 ([math]displaystyle{ 0 }[/math]) 4294967295 ([math]displaystyle{ 2^{32}-1 }[/math]) 4
int64 -9223372036854775808 ([math]displaystyle{ -2^{63} }[/math]) 9223372036854775807 ([math]displaystyle{ 2^{63}-1 }[/math]) 8
qWord (uInt64) 0 ([math]displaystyle{ 0 }[/math]) 18446744073709551615 ([math]displaystyle{ 2^{64}-1 }[/math]) 8

The signed ranges are preferred (i. e. as in the top/down order in the table), thus 123 possesses the data type shortInt even though it could be a byte, too.

As of version 3.2.0, the data type integer is simply an alias depending on the currently selected compiler compatibility mode.
It does not depend on the CPU type, therefore it is quite possible that the CPU could in fact deal with integers having an even larger magnitude than integer provides.

the data type integer in FPC version 3.2.0

mode integer is an alias for value of maxInt
{$mode FPC}, {$mode macPas} and {$mode TP} smallInt 32767
all other available modes longInt 2147483647

Warning-icon.png

Warning: Undocumented feature: General programming advice, do not use what has not been documented. Unlikely as it may be, the following feature may be removed at any time.

Depending on the platform’s arithmetic logic unit’s word size (ALU) following aliases are available.

type
	{$ifDef CPU16} ALUSInt = smallInt; ALUUInt = word;  {$endIf}
	{$ifDef CPU32} ALUSInt = longInt;  ALUUInt = dWord; {$endIf}
	{$ifDef CPU64} ALUSInt = int64;    ALUUInt = qWord; {$endIf}

Although it is frequently the case that the ALU’s word size also coincides with the size of a pointer, it is not guaranteed (e. g. the x32-ABI uses 64‑bit ALU, but only 32‑bit pointers).
Therefore if an integer value is meant to be typecasted to a pointer, it recommended to use ptrUInt.
Note, the data type nativeInt is in fact an alias for ptrInt and not related to ALUSInt.

see also

  • real, the data type used to store/process (a subset of) rational numbers
  • GNU Multiple Precision Arithmetic Library, precise mathematical operations on arbitrarily large values [if 8-Byte int64/qWord are not enough]
navigation bar: data types

simple data types

boolean
byte
cardinal
char
currency
double
dword
extended
int8
int16
int32
int64
integer
longint
real
shortint
single
smallint
pointer
qword
word

complex data types

array
class
object
record
set
string
shortstring

Integer4. Даны целые положительные числа $$A$$ и $$B$$ $$(A > B)$$. На отрезке длины $$A$$ размещено максимально возможное количество отрезков длины $$B$$ (без наложений). Используя операцию деления нацело, найти количество отрезков $$B$$, размещенных на отрезке $$A$$.

Решение:

program Integer5;

var

  A, B, Res: Integer;

begin

  Write(‘Введите длину отрезка A: ‘);

  Readln(A);

  Write(‘Введите длину отрезка B: ‘);

  Readln(B);

  Res:=A div B;

  Writeln(‘В отрезке A содержится ‘,Res,‘ полных отрезков B.’);

end.

Другие задачи из раздела Integer можно посмотреть здесь.

На занятии рассматриваются основные стандартные типы данных в Паскаль, понятие переменной и константы; объясняется, как работать с арифметическими операциями

Содержание:

  • Типы данных в Паскале
    • Целочисленные типы данных в Паскаль
    • Комментарии в Паскале
    • Вещественные типы данных в Паскаль
  • Приведение типов
  • Константы в Паскале
    • «Красивый» вывод целых и вещественных чисел
  • Арифметические операции в Паскале
    • Порядок выполнения операций
  • Стандартные арифметические процедуры и функции Pascal

Типы данных в Паскале

Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.

Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.

Рассмотрим наиболее распространенные в Pascal типы данных.

Целочисленные типы данных в Паскаль

Тип Диапазон Требуемая память (байт)
byte 0..255 1
shortint -128..127 1
integer -32768.. 32767 2
word 0..65535 2
longint -2147483648..2147483647 4

Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).

Примеры того, как описываются (объявляются) переменные в Паскале:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
program a1;
var x,y:integer; {целочисленный тип}
    myname:string; {строковый тип}
begin
x:=1; y:=x+16;
myname:='Петр';
writeln ('имя: ',myname, ', возраст: ', y)
end.
1
2
3
4
5
6
7
8
program a1;
begin
  var x, y: integer; {целочисленный тип}
  var myname: string; {строковый тип}
  x := 1; y := x + 16;
  myname := 'Петр';
  print($'имя: {myname}, возраст: {y}')
end.
Результат: 
имя: Петр, возраст: 17

При использовании PascalABC.NET наиболее часто используются следующие целочисленные типы:

Тип Длина, байт Диапазон допустимых значений
integer 4 -2 147 483 648 .. 2 147 483 647
int64 8 -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807
BigInteger переменная неограниченный

Комментарии в Паскале

Обратите внимание на то, как используются комментарии в Паскале. В примере комментарии, т.е. служебный текст, который «не видим» для компилятора, заключаются в фигурные скобки {}. Обычно комментарии делаются программистами с целью пояснения фрагментов кода. Для однострочных комментариев можно использовать два слэша //:

{Очень простая программа
для вывода слова "Привет"}
begin
// вывод 
write('Привет');
end.

Задача 5. Население Москвы равняется а=9000000 жителей. Население Нью-Васюков равняется b=1000 жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины.

[Название файла: L1task5.pas]

Вещественные типы данных в Паскаль

Вещественные числа в Паскале и вообще в программировании — это название дробных чисел.

Тип Диапазон Требуемая память (байт)
real 2.9 * 10E-39 .. 1.7 * 10E38 6
single 1.5 * 10 E-45 .. 3.4 * 10E38 4
double 5 * 10E-324 .. 1.7 * 10E308 8
extended 1.9 * 10E-4951 .. 1.1 * 10E4932 10

Тип real в Паскале — наиболее часто используемый из вещественных типов.

Выше были представлены простые типы данных в Паскаль, к которым относятся:

  • Порядковые
  • Целые
  • Логические
  • Символьные
  • Перечисляемые
  • Интервальные
  • Вещественные

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

  • в формате используется либо одно число, означающее число позиций, отводимых на это число в экспоненциальной форме;
  • p:=1234.6789;
    Writeln(p:12);  {_1.2346E+004}
  • либо два числа, первое из которых обозначает общий размер поля, отведенного под это число, второе — число знаков после запятой, т.е. точность.
  • p:=1234.6789;
    Writeln(p:6:2); {1234.68}

    Наряду с простыми типами в языке еще используются структурированные типы данных и указатели, которым будут посвящены последующие уроки по Паскалю.

    Приведение типов

    В pascalABC.Net в некоторых случаях можно значения одного типа присваивать переменным другого типа.

    Значения типов данных, которые занимают меньше памяти, можно присвоить переменным типа данных с бОльшей емкостью. Так, возможны следующие приведения:

    integer → int64
    int64  → real
    integer → BigInteger

    Пример использования операции приведения типов:

    var a := 10; // integer
    var b := 123456789012345; // int64
    var c := -3bi; // BigInteger
     
    var i := int64(a); // приведение integer → int64
    var x := real(b); // приведение int64  → real
    var p := BigInteger(a); // приведение integer → BigInteger

    Обратное приведение с помощью функций

    Обратное приведение, т.е. чтобы присвоить значение большей ёмкости переменной типа данных меньшей емкости, следует использовать функции округления. Например:

    real → integer

    Пример:

    ##
    var x := Sqrt(3); // корень квадратный из 3, тип real
    var a := Trunc(x); // приведение к integer с отсечением дробной части. рез-т 1
    var b := Round(x); // приведение к integer с округлением до ближайшего целого. рез-т 2

    Константы в Паскале

    Зачастую в программе заранее известно, что переменная будет принимать какое-то конкретное значение и не менять его на протяжении выполнения всей программы. В таком случае необходимо использовать константу.

    Объявление константы в Паскале происходит до объявления переменных (до служебного слова var) и выглядит следующим образом:

    Пример описания константы в Паскале:

    Pascal PascalABC.NET
    1
    2
    3
    4
    5
    6
    
    const x=17;
    var myname:string;
    begin
    myname:='Петр';
    writeln ('имя: ',myname, ', возраст: ', х)
    end.
    1
    2
    3
    4
    5
    
    const x = 17;
    begin
      var myname := 'Петр';
      print($'имя: {myname}, возраст: {x}')
    end.

    «Красивый» вывод целых и вещественных чисел

    Для того чтобы после вывода значений переменных оставались отступы, чтобы значения не «сливались» друг с другом, принято через двоеточие указывать какое количество символов нужно предусмотреть для вывода значения:

    Вывод целых чисел

    Вывод целых чисел

    Вывод вещественных чисел

    Вывод вещественных чисел

    Арифметические операции в Паскале

    ДЕЙСТВИЕ РЕЗУЛЬТАТ СМЫСЛ
    2 + 3 5 плюс
    4 — 1 3 минус
    2 * 3 6 умножить
    10 / 5 2 разделить
    10 ** 2 100 возведение в степень с результатом типа real
    17 div 5 3 целочисленное деление
    17 mod 5 2 остаток от целочисленного деления

    арифметические операции в паскале

    Порядок выполнения операций

    1. вычисление выражений в скобках;
    2. умножение, деление, div, mod слева направо;
    3. сложение и вычитание слева направо.

    порядок выполнения операций


    Канонический способ:

    var 
      a: integer;
      b: real;
     
    begin
      a := 1;
      writeln('a := 1; a = ',a);
      a += 2; // Увеличение на 2
      writeln('a += 2; a = ',a);
      a *= 3; // Умножение на 3
      writeln('a *= 3; a = ',a);
      writeln;
      b := 6;
      writeln('b := 6; b = ',b);
      r /= 2;
      writeln('b /= 2; b = ',b);
    end.

    Стандартные арифметические процедуры и функции Pascal

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

    • Операция inc в Паскале, произносимая как инкремент, это стандартная процедура pascal, которая обозначает увеличение на единицу.
    • Пример операции inc:

      1
      2
      3
      
      x:=1;
      inc(x); {Увеличивает x на 1, т.е. x=2}
      writeln (х)

      Более сложное использование процедуры inc:
      Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.

    • Аналогично работает процедура Dec в Паскале: Dec(x) — уменьшает x на 1 (декремент) или Dec(x,n) — уменьшает x на n.
    • Оператор abs представляет собой модуль числа. Работает следующим образом:
    • a:=-9;
      b:=abs(a); { b = 9}
    • Оператор div в паскале является часто используемым, так как целый ряд задач связан с действием деление нацело.
    • Остаток от деления или оператор mod в pascal тоже незаменим при решении ряда задач.
    • Заслуживающей внимания является стандартная функция odd Паскаля, которая определяет, является ли целое число нечетным. Т. е. возвращает true (истина) для нечетных чисел, false (ложь) для четных чисел.
    • Пример использования функции odd:

      1
      2
      3
      4
      
      begin
          WriteLn(Odd(5)); {True}
          WriteLn(Odd(4)); {False}
      end.
    • Функция exp в паскале возвращает экспоненту параметра. Записывается как exp(x), где x типа real.
    • Квадрат числа в Паскале вычисляется при помощи процедуры sqr.
    • Пример использования процедуры sqr в Pascal:

      1
      2
      3
      4
      5
      
      var x:integer;
      begin
      x:=3;
      writeln(sqr(x)); {ответ 9}
      end.
    • Операция возведение в степень в Паскале отсутствует как таковая. Но для того чтобы возвести в степень число можно использовать функцию exp.
    • Формула такая: exp(ln(a)*n), где а — число, n — степень (а>0).

      Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:

       WriteLn(Power(2,3)); {ответ 8}
    • Извлечь квадратный корень в Паскале можно при помощи процедуры sqrt.
    • Пример использования процедуры sqrt в Pascal:

      1
      2
      3
      4
      5
      
      var x:integer;
      begin
      x:=9;
      writeln(sqrt(x)); {ответ 3}
      end.

    Задача 6. Известны размеры спичечной коробки: высота — 12.41 см., ширина — 8 см., толщина — 5 см. Вычислить площадь основания коробки и ее объем

    (S=ширина * толщина, V=площадь*высота)

    [Название файла: L1task6.pas]

    Задача 7. В зоопарке три слона и довольно много кроликов, причем количество кроликов часто меняется. Слону положено съедать в сутки сто морковок, а кролику — две. Каждое утро служитель зоопарка сообщает компьютеру количество кроликов. Компьютер в ответ на это должен сообщить служителю общее количество морковок, которые сегодня нужно скормить кроликам и слонам.

    [Название файла: L1task7.pas]

    Задача 8. Известно, что x кг конфет стоит a рублей. Определите, сколько стоит y кг этих конфет, а также, сколько килограмм конфет можно купить на k рублей. Все значения вводит пользователь.

    [Название файла: L1task8.pas]

      

    В приведенных ниже примерах все функции имеют аргументы. Аргументы
    m и n имеют целочисленный тип,
    a и b – тип real,
    x и y – любой из этих типов.

    Abs(x) – возвращает абсолютное значение аргумента x;
    Ceil(x) - возвращает ближайшее целое, не меньшее, чем х;
    Floor(x) - возвращает ближайшее целое, не превышающее х;
    Frac(x) - возвращает дробную часть аргумента x;
    Max(x, y, …) – возвращает максимальное из значений x, y, …;
    Min(x, y, …) – возвращает минимальное из значений x, y, … ;
    Random(m) – возвращает случайное число из интервала [0 ; m-1];
    Random(a) – возвращает случайное число из интервала [0 ; a);
    Random(m, n) – возвращает случайное число из интервала [m ; n];
    Random(a, b) – возвращает случайное число из интервала [a ; b);
    Random2(m) – возвращает кортеж из двух случайных чисел в интервале [0 ; m-1];
    Random2(a) – возвращает кортеж из двух случайных чисел в интервале [0 ; a);
    Random2(m, n) – возвращает кортеж из двух случайных чисел в интервале [m ; n];
    Random2(a, b) – возвращает кортеж из двух случайных чисел в интервале [a ; b);
    Random3(m) – возвращает кортеж из трех случайных чисел в интервале [0 ; m-1];
    Random3(a, b) – возвращает кортеж из трех случайных чисел в интервале [a ; b);
    Round(x) - возвращает округленное до целых по правилам арифметики значение типа integer;
    Round(x, n) - возвращает значение х, округленное до n знаков в дробной части;
    Sign(x) – возвращает -1 при x < 0, 0 при x = 0 и 1 при x > 0;
    Sin(x) – возвращает sin(x) типа real;
    Sqr(a) – возвращает a2;
    Sqr(m) – возвращает m2 типа int64;
    Sqrt(x) – возвращает √x типа real;
    Trunc(a) – возвращает целую часть значения a того же типа
    

    Тип INTEGER (целый). Этот тип представляет множество целых чисел диапазона от -32768 до 32767. В памяти ЭВМ  под целое число отводится два байта (16 бит).

    Наибольшему значению целого числа 32767 соответствует стандартный идентификатор MAXINT, а наименьшему – выpaжeниe NOT(MAXINT)=-(MAXINT+1), или число -32768. Операции, проводимые над целыми числами: «+» сложение, «-» вычитание, «*» умножение, DIV – целочисленное деление, MOD – остаток от целочисленного деления, AND – арифметическое ‘И’, OR – арифметическое ‘ИЛИ’, NOT – арифметическое отрицание, XOR – исключающая дизъюнкция. Примеры использования этих операций приведены в таблице1.

    integer

    Любая из этих операций выполнима над двумя целыми числами, если абсолютная величина результата не превышает MAXINT (для умножения). В противном случае возникает прерывание программы, связанное с переполнением.
    Например: требуется вычислить выражение 1000 * 4000 div 2000. Поскольку операции умножения и деления имеют один приоритет и выполняются слева направо в порядке записи арифметического выражения, то при умножении произойдет прерывание, связанное с переполнением. Выход из этой ситуации возможен при изменении порядка выполнения операций умножения и деления, для чего используются круглые скобки ==> 1000 * (4000 div 2000).
    Предусмотрено представление целых чисел в шестнадцатеричной системе счисления. Форма записи таких чисел $Х, где X – целая константа, а символ $ – признак. Примеры: $57, $1FF. Напомним, что в шестнадцатеричной системе счисления цифры 10, 11, 12, 13, 14 и 15 заменяются латинскими буквами А, В, С, D, Е и F соответственно.
    Кроме типа INTEGER в языке Pascal предусмотрены и другие целые типы данных BYTE, SHORTINT, WORD и LONGINT (таблица 2). Все эти типы определены на множестве целых чисел, характеризуются одним набором арифметических операций и отличаются диапазоном значений и объемом занимаемой памяти.

    integer.


    Предыдущая статья: Алфавит языка Pascal.
    Оглавление: Лекции по Pascal.
    Следующая статья: Тип данных Real.


    Добавить комментарий