Так как в воскресенье на сайте открывается новая рубрика — решение задач, мы с вами должны по-быстрому изучить основную часть математических операций, функций и процедур.
Давайте разберемся, что такое функция и процедура. Это подпрограмма — часть программы, выполняющая определенный алгоритм и допускающая обращение к ней из различных частей общей программы. В чем же разница между процедурой и функцией?
Процедуры — мини-программы.
Процедуры используются в случаях, когда в подпрограмме необходимо получить несколько результатов. Из картинки, расположенной ниже вы видите, как работает процедура. Входных данных может не быть вовсе, а может быть сто.
Например, программист хочет в своем суперкоде между блоками выходящих значений прописывать 20 амперсандов. Чтобы облегчить себе задачу, он напишет простую подпрограмму.
program superpuper; var очень много буковок; procedure ampersand; begin write('&&&&&&&&&&&&&&&&&&&&'); end; begin суперсложный код; ampersand; суперсложный код; ampersand; суперсложный код; ampersand; суперсложный код; ampersand; end.
Функции в Паскале — мега переменные.
Функции отличается от процедуры тем, что после выполнения функции на ее месте в коде ставится одно число, буква, строка и т.д. Набор встроенных функций в языке Паскаль достаточно широк. Например, для того, чтобы подсчитать квадрат числа можно воспользоваться стандартной функцией sqr(x). Как вы, наверное, уже поняли sqr(x) требует лишь один фактический параметр — число.
Пример: a:=sqr(4).
Обратите внимание! Функции необходимо присваивать! Просто написав их в тексте программы, как процедуры, вы ничего не добьетесь!
Структура функции представлена на картинке ниже.
Если в программу необходимо включить новую уникальную функцию, ее надо описать также, как процедуру. Более подробно о том, как делать собственные процедуры и функции, мы поговорим через 10 уроков. Ниже вы видите таблицу основных стандартных функций и процедур в Паскаль.
Математические функции | |||
Имя | Тип аргумента | Результат вычисления | Пример |
Abs(x) | Целый или Вещ. | Модуль х | Abs(-6) = 6 |
Sqrt(x) | Вещественный | Корень из х | Sqrt(25)=5 |
Sqr(x) | Целый и Вещ. | Квадрат х | Sqr(5)=25 |
Power(x, a) | Вещественный | Значение ха | Power(5,3)=125 |
Frac(x) | Вещественный | Дробная часть х | Frac(5.67)=0.67 |
Sin(x) | Вещественный | Синус х | Sin(45)=0.8509 |
Cos(x) | Вещественный | Косинус х | Cos(45)=0.5253 |
Arctan(x) | Вещественный | Арктангенс х | Arctan(5)=1.3734 |
Int(x) | Вещественный | Целая часть х | Int(5.67)=5.0 |
Random(x) | Целый | Случайное число (0..х-1) | Random(5)=4 |
Succ(x) | Порядковый | Следующий | Succ(10)=11 |
Pred(x) | Порядковый | Предыдущий | Pred(‘Z’)=’Y’ |
Математические процедуры | |||
Inc(x, a) | Целый | X:=X+A | Inc(5)=6 |
Dec(x, a) | Целый | X:=X-A | Dec(25,20)=5 |
Преобразование типов | |||
Trunc(x) | Вещественный | Целая часть х | Trunc(5.67)=5 |
Round(x) | Вещественный | Округление х до целого | Round(5.67)=6 |
Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!? |

Операции div и mod.
Иногда нам требуется найти частное либо же остаток от деления. В такие моменты на помощь нам приходят такие операции, как div и mod. Заметим, что эти операции выполняются только над целыми числами.
Div
Для того, чтобы найти частное от деления, мы используем операцию div.
Примеры:
- 25 div 20 = 1;
- 20 div 25 = 0;
- 39 div 5 = 7;
- 158 div 3 = 52.
Mod
Для того, чтобы найти остаток от деления, мы используем операцию mod.
Примеры:
- 25 mod 20 = 5;
- 20 mod 25 = 0;
- 39 mod 5 = 4;
- 158 mod 3 = 2.
Чтобы окончательно понять, с чем мы имеем дело, решим следующую задачу:
Задача 1. Найти сумму цифр двухзначного числа.
Так как эта задача очень простая, мы с вами обойдемся блок-схемой и программой.

program Sumoftwo; var Number, Num1, Num2, Sum: integer; begin write('Введите двухзначное число: '); read(Number); { Возьмем число 25 } Num1 := Number div 10; { 25 div 10 = 2 } Num2 := Number mod 10; { 25 mod 10 = 5 } Sum := Num1 + Num2; { 2 + 5 = 7 } write('Сумма двух чисел -- ', Sum); end.
Задача 2. Найти сумму цифр трехзначного числа.
Чуть усложненная версия предыдущей задачи. Самая большая сложность — вторая цифра.

program Sumoftree; var Number, Sum: integer; begin write('Введите трехзначное число: '); read(Number); { Возьмем число 255 } Sum := Number div 100 + Number mod 10 + Number div 10 mod 10; { 255 div 100 + 255 mod 10 + 255 div 10 mod 10 = 12 } write('Сумма трёх чисел -- ', Sum); end.
Вот и всё. На следующем уроке мы с вами начнём изучать особенности PascalABC.Net.
Здравствуйте!Очень интересно и доходчиво!Спасибо!Но в таблице есть ошибка: вместо Inc(5)=6 должно быть Inc(5,1)=6
Если нам нужно прибавлять 1, то можно его не писать , а если уже прибавляем больше 1 , то обязательно писать сколько прибавляешь.
Здравствуйте.
Существует две процедуры:
1) inc(a) — увеличивает a на 1;
2) inc(a, x) — увеличивает а на х.
Так что ошибки нет 🙂
В вашей таблице дано ИМЯ — inc(a, x) , а пример к нему Inc(5)=6
Это процедура значит: увеличить ‘x’ на ‘a’, т.е inc(6, 2)=8, а если ‘a’ не указана, то увеличение идёт на единицу(по умолчанию)
Здравствуйте, все очень хорошо расписано, спасибо 🙂
Но, скажите, пожалуйста, чему будет равно выражение «255 div 10 mod 10».
255 div 10 = 25
25 mod 10 = 5
Следовательно,
255 div 10 mod 10 = 5
Результаты cos, sin, tan — просто числа, безразмерные величины, а никак не радианы. Не вводите новичков в заблуждение, это грубая математическая ошибка.
Имеется в виду аргумент, выраженный в радианах, а уж никак не функция.
Это мне понятно, но тогда это должно быть упомянуто в колонке «входные параметры», а не в выходных.
В блок-схемах опечатки: NUmber вместо Number.
Насколько я знаю то в Паскаль регистр не важен, тобиж А и а это одно и тоже
Это не означает, что опечаток быть не должно. Программирование точная вещь, и не надо путать такими вещами новичков. А то потом появляются «программисты», у которых такой стиль типа «какая разница, если компилятору пофиг», а потом их код поддерживать…
вот как я решил ваше последнее задание
PROGRAM summ;
var a,num1,num2,num3,num4,sum:INTEGER;
begin
WRITE(‘vvedite trexznacnoye cislo: ‘);
read (a);
num1:=a div 100;
num2:=a mod 100;
num3:=num2 div 10;
num4:=num2 mod 10 ;
sum:=num1+num3+num4;
write(‘summa trex cisel ‘, sum);
readln;
end.
Слишком длинный код получился, займет больше памяти из-за кучи num.
У меня с четырехзначным числом получилось div 1000 + mod 10 + div 100 mod 10 + div 10 mod 10;
тогда нужно бес пробелов писать, для экономии памяти
Ну и евреи тут собрались хд
ААА мне уже на этом уроке становится непонятно((
Стоит лишь по шагам разобрать действия, как и нужно делать в «хорошем стиле» и все получиться!
Я верю в вас)
Почему в примере с поиском суммы 2 чисел присутствуют num1, num2, а в примере с поиском суммы 3 чисел не добавляется num3. Это просто варианты решений или есть какое-то правило?
Это одно и то же. Разница лишь в том, что во втором примере мы решили не записывать значения выделенных цифр в отдельные переменные, а находить их непосредственно в получении суммы. По сути, оба варианта допустимы, но за счет того, что первая программа занимает две дополнительные переменные, вторая получается выигрышнее
У вас в тексте: 20 mod 25 = 0;
На самом деле: 20 mod 25 = 20;
«Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!?» — Чётное число округляется в меньшую сторону
Ребят, в паскале не важен регистр, но если речь идёт о переменных то это правило продолжает действовать или нет.
как видно на скриншоте, не важно)
https://uploads.disquscdn.com/images/c72294a3798a989e4afe87bda5a40c1cd054637baf28888c8122bee50cf27d24.png
У меня вот что получилось, программа для нахождения суммы чисел у четырехзначного числа
program a1;
uses
crt;
var
number, b, c, d, f, e: Integer;
begin
write(‘Введите любое четырёхзначное число>>’);
read(number);
b := number div 1000;
c := number div 100 mod 10;
d := number mod 100 div 10;
f := number mod 10;
e := b + c + d + f;
write(e);
readkey;
end.
«Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!? Очень странная ошибка» — дело в том, что функция Round имеет малоизвестную особенность — «половинки» округляет до ближайшего чётного числа
«Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!? Очень странная ошибка» — дело в том, что функция Round имеет малоизвестную особенность — «половинки» округляет до ближайшего чётного числа
Извините, кажется, что есть опечатка. Разве можно функцию random использовать с вещественным типом переменной?
20mod25=0 не правильно, вроде должно быть 20
здравствуйте! все доступно написано. помогите пожалуйста сделать 2 задания :1) Дано четырёхзначное число Х. Найди произведение всех цифр. 2) Дано трёхзначное число В. Вывести на экран среднюю цифру.
Добрый вечер!
При решении задач используйте приведенный в примере способ
А функции scr,scrt,cos,sin и тд. пишутся в var?
да
помогите решить пожалуйста!!! с клавиатуры вводятся два числа а и b вычислить с=а-b если а>b c=b-a+1если a<=b