Стандартные математические функции паскаль. Pascal. Стандартные функции и выражения. Write("Площадь круга = ",S,"кв.см")
Окончание табл. 2
TRUNC(X) ROUND(X) | Выделение целой части числа Округление Х до ближайшего целого | вещественный | целый |
PRED(X) SUCC(X) | Нахождение предшествующего значения (в его типе) Нахождение последующего элемента (значения, следующего за Х в его порядковом типе) | целый, логический или символьный | |
ORD(X) | Определение порядкового номера символа Х в наборе символов или его перечислимом типе | символьный | целый |
CHR(X) | Определение значения символа по его порядковому номеру | целый | символьный |
ODD(X) | Логическая функция проверки нечетности | целый | логический |
Frac(X) Int(X) | Дробная часть числа Целая часть числа | вещественный | вещественный |
Целые типы в Pascal ABC
В Pascal ABC имеется три стандартных типа целых чисел: Byte, Integer и Word. Диапазон их возможных значений зависит от внутреннего представления числа, которое может занимать один, два или четыре байта. В таблице 3 приведены характеристики этих целых типов.
Таблица 3
Классификация целых типов
Компилятор языка Pascal ABC определяет максимальное значение MAXINT для данных типа INTEGER. При этом справедливо будет соотношение:
MAXINT <= K <= MAXINT
Описание переменных целых типов производится в разделе описаний VAR:
Var <имя переменной> : <целый тип>;
где <целый тип > может быть определен как Byte, Integer или Word.
Например:
VAR K: INTEGER;
I, J: BYTE;
Для целых типов определены следующие операции: сложение, вычитание (имеют более низкий приоритет), умножение и деление - DIV, MOD. К целым типам применимы функции из таблицы 4. Функции TRUNC(X) и ROUND(X) с вещественным аргументом также дают целый результат (см. табл. 2). Стандартные математические функции в случае задания целого аргумента всегда возвращают вещественные значения (см. табл. 2).
При использовании процедур и функций с целочисленными параметрами следует руководствоваться правилом «вложенности» типов, т.е. везде, где в качестве аргумента используется тип WORD, можно применять тип BYTE. Для арифметических операций, если операнды относятся к разным целым типам, тип результата имеет максимальную мощность диапазона, т.е. для типов операндов Byte и Word в выражении тип результата будет Word.
Таблица 4
Встроенные процедуры и функции для целых типов
Вещественные типы
В отличие от целых типов значения вещественных типов определяют число с десятичной точкой лишь с некоторой точностью, зависящей от внутреннего представления числа. Вещественное число в памяти ПК хранится в формате, состоящем из знака, мантиссы и порядка числа. Десятичная точка подразумевается стоящей перед левым (старшим) разрядом мантиссы (такая мантисса называется нормализованной). При выполнении операций десятичная точка сдвигается путем выполнения умножения мантиссы наE (символ экспоненты) с порядком.
Например, запись числа в виде: <знак> <мантисса> Е <порядок> соответствует представлению числа <знак> <мантисса>*10 < порядок > .
В Pascal ABC используются только два вещественных типа – REAL и COMPLEX , характеристики которых приведены в таблице 5.
Таблица 5
Вещественные типы
Объявление переменных вещественных типов производится в разделе описаний переменных VAR аналогично переменным целых типов в виде:
Var <переменная> : <вещественный тип>;
где <вещественный тип > может быть задан только Real или Complex .
Для работы с вещественными типами определены стандартные функции: sin, cos, arctаn, ln, exp, sqr, abs, sqrt (табл. 2), а также функции вещественного типа (табл. 6).
Таблица 6
Встроенные функции вещественного типа
При этом операции +, -, *, / в арифметическом выражении дают вещественный результат, если хотя бы один из операндов вещественный.
Например: 11 div 5 = 2 10 div 3 = 3 2 div 3 = div 4 = div -5 = div 5 = div -5 = 3 10 mod 5 = 0 11 mod 5 = 1 10 mod 3 = 1 14 mod 5 = 4 17 mod - 5 = mod 5 = mod -5 = -2
0 и b>0 справедливо: A mod b = a – (a div b)*b (a div b)*b + (a mod b) = a Обратите внимание операцию mod можно использовать, чтобы узнать, кратно ли целое а целом" title="Взаимосвязь между операциями div и mod Аргументы операций div и mod целые числа. Для а>0 и b>0 справедливо: A mod b = a – (a div b)*b (a div b)*b + (a mod b) = a Обратите внимание операцию mod можно использовать, чтобы узнать, кратно ли целое а целом" class="link_thumb"> 6 Взаимосвязь между операциями div и mod Аргументы операций div и mod целые числа. Для а>0 и b>0 справедливо: A mod b = a – (a div b)*b (a div b)*b + (a mod b) = a Обратите внимание операцию mod можно использовать, чтобы узнать, кратно ли целое а целому b. А именно, а кратно b тогда и только тогда, когда а mod b = 0 0 и b>0 справедливо: A mod b = a – (a div b)*b (a div b)*b + (a mod b) = a Обратите внимание операцию mod можно использовать, чтобы узнать, кратно ли целое а целом"> 0 и b>0 справедливо: A mod b = a – (a div b)*b (a div b)*b + (a mod b) = a Обратите внимание операцию mod можно использовать, чтобы узнать, кратно ли целое а целому b. А именно, а кратно b тогда и только тогда, когда а mod b = 0"> 0 и b>0 справедливо: A mod b = a – (a div b)*b (a div b)*b + (a mod b) = a Обратите внимание операцию mod можно использовать, чтобы узнать, кратно ли целое а целом" title="Взаимосвязь между операциями div и mod Аргументы операций div и mod целые числа. Для а>0 и b>0 справедливо: A mod b = a – (a div b)*b (a div b)*b + (a mod b) = a Обратите внимание операцию mod можно использовать, чтобы узнать, кратно ли целое а целом"> title="Взаимосвязь между операциями div и mod Аргументы операций div и mod целые числа. Для а>0 и b>0 справедливо: A mod b = a – (a div b)*b (a div b)*b + (a mod b) = a Обратите внимание операцию mod можно использовать, чтобы узнать, кратно ли целое а целом">
Определить кол-во оставшихся слив, если их делили на 5 человек write (Кол-во слив = "); readln (a); b:= a mod 5; writeln(Осталось,b, слив);
Операции отношения Не равно Меньше = Равно Больше = Меньше или равно Больше или равно = Меньше или равно Больше или равно"> = Меньше или равно Больше или равно"> = Меньше или равно Больше или равно" title="Операции отношения Не равно Меньше = Равно Больше = Меньше или равно Больше или равно"> title="Операции отношения Не равно Меньше = Равно Больше = Меньше или равно Больше или равно">
Вычислить гипотенузу прямоугольного треугольника (длина катетов - a и b) write ("a="); readln (a); write ("b="); readln (b); c:= sqrt (sqr(a) + sqr(b)); writeln ("c=", с:5:2);
Вычислить модуль разности чисел a и b write ("a="); readln (a); write ("b="); readln (b); c:= abs (a - b); writeln ("модуль=", с);
Экспонента и логарифм Exp (x) ln x (натуральный логарифм) Ln (x) e x (экспонента числа, e) Exp (b*Ln (a)) ab ab
Примеры использования DIV и MOD: Операции DIV и MOD часто используются для анализа чисел, например, для получения цифр, из которых состоит число. Задача: Ввести с клавиатуры какое-нибудь трехзначное число. Определить сумму его цифр и вывести эти цифры в обратном порядке.
Пусть переменная а содержит значение заданного числа. Цифры числа а обозначим так: i - количество сотен; j – количество десятков; k - количество единиц; s – сумма этих цифр. Program MyNamber; Uses Crt; Var a, i, j, k, s: integer; Begin clrscr; Writeln (Задайте 3-х значное число); Readln (a); i:=a div 100; {количество сотен} j:=a div 10 mod 10; {десятков} k:=a mod 10; {количество единиц} s:=i+j+k; Writeln (Сумма цифр числа,a,=,s); Writeln (k, j, i); Readln; End.
Стандартные функции Функция ПаскаляМатематическая запись Название Abs(x)|Х||Х| Абсолютная величина числа Х (модуль) Sqr(x)Х2Х2 Возведение числа в квадрат Exp(x)exex Экспонента Sqrt (x) x Вычисление квадратного корня Exp(b*ln(a)) abab Возведение числа в степень Round (x) Округляет до ближайшего целого числа Trunc (x) Отсекает дробную часть Sin(x)sinx Вычисление синуса Cos(x)сosx Вычисление косинуса
Ответы 1.1,68 4.2,06 5.1,10 6.2,16 7.3,05 8.0,10
2.Дано трёхзначное число. В нём зачеркнули первую слева цифру и приписали её справа. Вывести полученное число.(Например,) 3.Дано трёхзначное число. Вывести число, полученное при перестановке цифр десятков и единиц исходного числа. (Например,)
Стандартными функциями языка программирования Pascal приведены в табл. 1
Таблица 1:
Имя функции | Выполняемая операция | |
ABS(X) | Вычисляет модуль аргумента х, тип х – вещественный или целый, тип результата совпадает с типом аргумента | |
SQR(X) | Вычисляет квадрат аргумента (х 2), тип х – вещественный или целый, результат совпадает с типом аргумента | |
SQRT(X) | Вычисляет корень квадратный из аргумента х (х>0); тип х – вещественный или целый, тип результата вещественный | |
SIN(X) | Вычисляет синус аргумента х (х – в радианах); тип х – вещественный или целый, тип результата вещественный | |
COS(X) | Вычисляет косинус аргумента х (х – в радианах); тип х – вещественный или целый, тип результата вещественный | |
ARCTG(X) | Вычисляет арктангенс аргумента х (х – в радианах); тип х – вещественный или целый, тип результата вещественный | |
EXP(X) | Возведение числа е=2,71828 в степень х (е х), тип х – вещественный или целый, тип результата вещественный |
Эти функции содержатся в памяти среды программирования Pascal и являются подпрограммами вычисления наиболее используемых функций итерационными методами.
Примеры составления линейной программы
Пример 1 Найти среднее арифметическое трёх чисел - двух целых (X и Y) и одного вещественного (Z) и квадрат среднего арифметического.
Программа :
Program Midding;
X, Y: Integer;
Z, Midd, SqrMidd: Real;
WriteLn("Введите два целых числа X и Y:");
ReadLn(X,Y);
WriteLn("Введите вещественное число Z:");
ReadLn(Z);
Midd:=(X+Y+Z)/3;
SqrMidd:=SQR(Midd)
Writeln("Среднее арифметическое = ",Midd);
Write("Квадрат среднего арифметического = ",SqrMidd);
Описание программы
В заголовке указано имя программы - Midding (среднее), затем словом var открывается раздел описания переменных: X и Y – целые, Z – вещественная. Слово begin открывает основной блок программы, в котором:
▪ оператор WriteLn выводит на экран текст "Введите два целых числа X и Y:";
▪ оператор ReadLn(X,Y)считывает значения чисел, введённых с клавиатуры и присваивает их соответственно целым переменным X и Y;
оператор ReadLn(Z)считывает значение числа, введённого с клавиатуры и присваивает его вещественной переменной Z;
▪ затем оператор присваивания вычисляет среднее значение X,Y,Z и присваивает его переменной Midd, затем аналогично вычисляется квадрат этой величины и присваивается переменной SqrMidd;
▪ оператор Writeln выводит текст "Среднее арифметическое = ",
рассчитанное значение Midd и переводит курсор на новую строку;
▪ оператор Write выводит текст "Квадрат среднего арифметического = " и рассчитанное значение SqrMidd;
▪ оператор end. закрывает основной блок и завершает выполнение программы.
Пример 2 Вычислить площадь круга S и длину окружности L по заданному радиусу R.
Программа
Program KRUG;
const P=3.14159
R,S,L:Real;
Read(R);{ввод значения радиуса}
L:=2*P*R;
S:=P*SQR(R);
Writeln(Длина окружности = ",L,"см");
Write("Площадь круга = ",S,"кв.см");
Контрольные вопросы
1 Из каких разделов состоит любая программа на языке Pascal?
2 Формат и назначение оператора присваивания.
3 Формат и назначение операторов ввода данных.
4 Формат и назначение операторов вывода данных.
Задание
Найти площадь поверхности куба по формуле T=6a 2 | |
Определить расстояние, пройденное физическим телом за время t, если тело движется с постоянной скоростью v. | |
Вычислить: ![]() |
|
В году примерно 3.156х10 7 сек. Написать программу, которая запрашивает возраст в годах и переводит его в секунды. | |
Вычислить: | |
Найти объем цилиндра по формуле: V=pR 2 H | |
Найти расстояние от точки с координатами (x,y) до начала координат. | |
Масса m одной молекулы воды примерно равна 3.0х10 -23 гр. Кварта воды равна примерно 950 гр. Написать программу, которая запрашивает количество воды в квартах и выводит число молекул в этом количестве воды. | |
Найти объем куба по формуле V=a 3 . (с использованием и без использования стандартных функций). | |
Вычислить: | |
Написать программу, которая запрашивает количество дней и переводит в недели и дни. Например, 18 дней = 2 недели и 4 дня. | |
Найти диагональ и площадь квадрата | |
Вычислить: ![]() |
|
Найти площадь боковой поверхности шара: T=4pR 2 | |
Вычислить: | |
Вычислить: ![]() |
31.01.2019 Learnpascal
Так как в воскресенье на сайте открывается новая рубрика — решение задач, мы с вами должны по-быстрому изучить основную часть математических операций, функций и процедур.
Давайте разберемся, что такое функция и процедура. Это подпрограмма — часть программы, выполняющая определенный алгоритм и допускающая обращение к ней из различных частей общей программы. В чем же разница между процедурой и функцией?
Процедуры — мини-программы.
Процедуры используются в случаях, когда в подпрограмме необходимо получить несколько результатов. Из картинки, расположенной ниже вы видите, как работает процедура. Входных данных может не быть вовсе, а может быть сто.
Например, программист хочет в своем суперкоде между блоками выходящих значений прописывать 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!? |
![](https://i0.wp.com/learnpascal.ru/wp-content/uploads/2013/12/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-2013-12-18-%D0%B2-20.58.44-510x290.png)
Операции 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. Найти сумму цифр трехзначного числа.
Чуть усложненная версия предыдущей задачи. Самая большая сложность — вторая цифра.
![](https://i1.wp.com/learnpascal.ru/wp-content/uploads/2013/12/png-1-510x398.png)
Вот и всё. На следующем уроке мы с вами начнём изучать особенности PascalABC.Net.
Арифметические функции
Арифметические функции можно использовать только с величинами целого и вещественного типа.
Функция |
Назначение |
Тип результата |
abs (x) |
абсолютное значение аргумента |
совпадает с типом аргумента |
sqr (x) |
квадрат аргумента |
совпадает с типом аргумента |
sqrt (x) |
квадратный корень аргумента |
вещественный |
cos (x) |
косинус аргумента |
вещественный |
sin (x) |
синус аргумента |
вещественный |
arctan (x) |
арктангенс аргумента |
вещественный |
exp (x) |
вещественный |
|
натуральный логарифм |
вещественный |
|
int (x) |
целая часть числа |
вещественный |
frac (x) |
дробная часть числа |
вещественный |
Функции преобразования типов
Эти функции предназначены для преобразования типов величин, например, символа в целое число, вещественного числа в целое и т.д.
Функции для величин порядкового типа
8 Оператор присваивания
Данный оператор предписывает запомнить некоторое значение в переменой. Значение и идентификатор переменой разделены парой знаков := . Типы объектов с обеих сторон знака := должны строго совпадать, за исключением того случая, когда тип переменой - REAL, а тип выражения - INTEGER. Общий вид оператора: < переменная >:= < выражение >
Операторы ввода/вывода
Немногие программы обходятся без ввода данных и совсем нет таких, которые не выводят полученные результаты.
Ввод данных с клавиатуры выполняется операторами: READ и READLN. Формат: Read (список переменных);
Readln (список переменных);
Буквы ln добавляются в конце оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы. Например:
Readln (x, y, z); Read (beta, gamma);
При выполнении оператора READ(READLN) программа останавливается и ждет, пока нужное количество чисел не будет введено с клавиатуры
Вывод данных на экран дисплея выполняется операторами: WRITE и WRITELN. Формат:
Write (список выражений); Writeln (список выражений);
Выражение в списке разделяются запятыми. Значения выражений сначала вычисляются, а затем выводятся на экран. При выводе вещественных значений можно указать, сколько десятичных цифр следует сохранить в дробной части числа, причем количество цифр указывается вслед за шириной поля после двоеточия.
Для того чтобы прокомментировать выводимые значения, в список вывода можно помещать строки любых символов, заключенные в апострофы.
9. Условный оператор if . Общий вид if <условие> then<действие 1>; else <действие 2>;
Оператор if может быть использован и без второй части
Если необходимо выполнить несколько условий, то тогда используем такие виды записи (условие 1) and (условие 2)- в этом случае должно выполнятся и 1 и 2
(условие 1) or (условие 2) – в этом случае выполняется выбор.Скобки обязательны!