Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Экспонента в степени паскаль

Pascal. Стандартные функции и выражения

Стандартные функции.

В программировании, довольно часто приходиться выполнять однотипные действия, причем в задачах разного уровня и класса. И для ускорения процесса написания кода эти действия выносят в специальные подпрограммы – стандартные функции. Обращение к такой подпрограмме происходит по ее имени, а в скобках указывается значение аргумента. В следующей таблице указаны те стандартные функции, которые используются в языке программирования Pascal.

ФункцияНазначение
ABS(x)Вычисление абсолютного значения x: |х|
SQR(x)Вычисление квадрата x: x*x
SIN(x)Вычисление синуса x: sin x
COS(x)Вычисление косинуса x: cos x
ARCTAN(x)Вычисление арктангенса x: arctg x
EXP(x)Вычисление экспоненты (числа Е) в степени x
EXP10(x)Вычисление 10 в степени x
LN(x)Вычисление натурального логарифма x
LOG(x)Вычисление десятичного логарифма x
SQRT(x)Вычисление квадратного корня из x
A DIV BВычисление частного при делении А на В с отбрасыванием остатка
A MOD BНахождение остатка от делении А на В
TRUNC(x)Нахождение целой части x
RANDOM(x)Псевдослучайное число в интервале [0, x]
ROUND(x)Округление значения x в сторону ближайшего целого
ODD(x)Проверяет аргумент на нечетность. Результат TRUE, если аргумент нечетный, FALSE – если четный.
ORD(x)Возвращает порядковый номер аргумента и, как следствие, преобразует величину порядкового типа в величину целого типа.
CHR(x)Определение символа языка Паскаль по его порядковому номеру
SUCC(x)Нахождение элемента, идущего после данного в перечне допустимых элементов
PRED(x)Нахождение элемента, идущего перед данным в перечне допустимых элементов
FRAC(X)Возвращает дробную часть x
INT(X)Возвращает целую часть x
PiЗначение математической постоянной π
EOF(x)Возвращает TRUE, если файл находится в стоянии “конец файла”, иначе FALSE, если нет конца файла

Выражения

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

1) 12+3*3=21 (12+3)*3=45

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

2) ( a >1) and ( a 3) (a+3>0) and (a+3 1) and (b

Условие вернет истину, тогда когда истинными будут два условия слева или справа от OR , а также если они оба будут истинными.

Логическая операция OR (или) суть дизъюнкция в логики и поэтому имеет следующую таблицу истинности:

XYX or Y
11
11
111

Ложь имеет место только когда X и Y ложны (нули). В том случае, чтобы истина возвращалась только тогда, когда одно из условий верно следует применить оператор XOR (исключающее или):

(a+3>0) and (a+3 1) and (b

4) x ^( a ) = exp( a *ln( x ))

В Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути:

1 — умножать число само на себя, какое то количество раз;

2 — воспользоваться функциями экспоненты и натурального логарифма.

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

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Pascal: Занятие №1. Часть 3: Типы данных в Паскаль

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

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

Читать еще:  Квадратный корень в си шарп

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

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

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

ТипДиапазонТребуемая память (байт)
byte0..2551
shortint-128..1271
integer-32768.. 327672
word0..655352
longint-2147483648..21474836474

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

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

program a1; var x,y:integer; <целочисленный тип>myname:string; <строковый тип>begin x:=1; y:=x+16; myname:=’Петр’; writeln (‘имя: ‘,myname, ‘, возраст: ‘, y) end.

Результат:
имя: Петр, возраст: 17

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

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

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

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

ТипДиапазонТребуемая память (байт)
real2.9 * 10E-39 .. 1.7 * 10E386
single1.5 * 10 E-45 .. 3.4 * 10E384
double5 * 10E-324 .. 1.7 * 10E3088
extended1.9 * 10E-4951 .. 1.1 * 10E493210

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

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

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

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

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

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

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

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

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

const x=17; var myname:string; begin myname:=’Петр’; writeln (‘имя: ‘,myname, ‘, возраст: ‘, х) end.

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

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

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

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

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

ДЕЙСТВИЕРЕЗУЛЬТАТСМЫСЛ
2 + 35плюс
4 — 13минус
2 * 36умножить
17 div 53целочисленное деление
17 mod 52остаток от целочисленного деления

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

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

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

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

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

Читать еще:  Паскаль переход на новую строку

Пример операции inc:

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

  • Аналогично работает процедура Dec в Паскале: Dec(x) — уменьшает x на 1 (декремент) или Dec(x,n) — уменьшает x на n.
  • Оператор abs представляет собой модуль числа. Работает следующим образом:

    Пример использования функции odd:

    begin WriteLn(Odd(5)); WriteLn(Odd(4)); end.

    Пример использования процедуры sqr в Pascal:

    var x:integer; begin x:=3; writeln(sqr(x)); <ответ 9>end.

    Формула такая: exp(ln(a)*n) , где а — число, n — степень (а>0).

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

    Пример использования процедуры sqrt в Pascal:

    var x:integer; begin x:=9; writeln(sqrt(x)); <ответ 3>end.

    Возведение в степень в паскале

    Вопросы «возвденеие в степень pascal» или «возведение в степень на Паскале» являются наиболее популярными в своей тематике. Не всегда представляется возможным умножать число само на себя (например x := x * x;) в силу динамично изменяющихся параметров задачи, да и при больших показателях степени размер кода может увеличиться во много раз. Кроме того, подобное выражение не предусматривает возможность возведения числа в дробную степень.

    Возведение в степень в паскале можно реализовать несколькими способами. Рассмотрим их, установив преимущества и недостатки каждого

    Универсальная функция возведения в степень в pascal

    Самый эффективный и правильный способ — взятие экспоненты от логарифма Exp(X*Ln(Y)), где X — степень числа, Y — основание. Однако, необходимо учитывать частные случаи когда основание или степень отрицательные числа, либо когда один из них является нулем. Также необходимо учесть тот факт, что при возведении отрицательного числа в четную степень, результат становится положительным

    if (x 0) then pow := Exp(y*Ln(Abs(x))) else

    if (l mod 2 = 0) then R:=Abs(pow);

    if (y = 0) then Pow :=1;

    Возведение в степень с помощью цикла

    Является одним из самых простых и быстрых способов. Задается цикл от единицы до требуемого показателя, в котором основание складывается с самим собой. Организовать подобный алгоритм можно использовав как for, так и while или repeat.

    for i:=1 to pow-1 do

    if ((not odd(pow)) and (pow

    Возведение в степень с помощью рекурсии

    Аналогично предыдущему итерационному способу. Отличие заключается только в том, что вместо очередного вызова тела цикла используется вызов функции (рекурсия).

    Возведение в степень в pascal для целого показателя, вычисляемого за время log2(pow)

    Данный алгоритм также, как и два предыдущих работает только с целыми показателями степени. Однако, время затрачиваемое на вычисление существенно сокращается.

    function power (x,pow:integer):integer;

    var res: integer;

    while (pow > 0) do

    if (pow and 1 = 1) then res := res * x;

    Таким образом, возвести число в степень в паскале с дробным показателем может позволить только универсальная функция возведения в степень. Использование первого способа является наиболее быстродейственным. Это особенно заметно, при больших значениях степени и большого числа знака после запятой. Следует отметить, что помимо перечисленных выше способов существуют и другие алгоритмы реализующие в Turbo Pascal возведение в степень.

    Возведение в степень в pascal — Универсальная функция возведения в степень (1 способ)

    Функция Power — Простое итерационное вычисление степени с помощью цикла (2 способ)

    Рекурсивное возведения числа в степень — Возведение числа в степень с помощью рекурсии (3 способ)

    Быстрое возведение в степень в паскале — Алгоритм с вычислением за время log2(pow) (4 способ)

    Экспонента в степени паскаль

    Pers.narod.ru. Алгоритмы. Некоторые математические расчёты на Паскале

    Как известно, ядро Паскаля предельно компактно, и многие математические функции в модуле System просто отсутствуют. Поэтому у людей, изучающих основы программирования именно на этом языке, типовые математические расчёты зачастую вызывают проблемы. Далее приводятся пути решения наиболее типичных из этих проблем.

    Читать еще:  Int в си размер

    Возведение в произвольную степень на Паскале

    Требуется вычислить значение с = a b . В зависимости от значений основания a и показателя степени b , вычисление степени может быть реализовано по-разному.

    Если a > 0 , а b может принимать произвольные вещественные значения, используем известную формулу a b = exp (b * ln a) :

    Если b — целое число (вообще говоря, «не слишком большое» по модулю), а a — любое (не равное нулю при b ), возведение в степень может быть реализовано с помощью цикла:

    Для целого b и не равного нулю a выгоднее считать с помощью экспоненты и логарифма, не забывая о том, что не существует логарифмов от отрицательных чисел:

    Вычисление корня произвольной степени на Паскале

    Стандартная функция sqrt умеет извлекать только квадратный корень.

    Извлечь корень степени n (где n — натуральное) из числа a можно всегда, кроме случая, когда a и при этом n четно. Извлечь корень степени n из числа a означает возвести число a в степень 1/n . При этом знак корня совпадает со знаком a . Ниже приводится код функции, вычисляющей корень произвольной степени n от своего аргумента a :

    Вычисление логарифмов на Паскале

    Стандартная функция ln вычисляет только натуральный логарифм. Для вычисления логарифмов по другим основаниям можно применить формулу log a b = ln b / ln a :

    В частности, для вычисления десятичного логарифма lg b можно записать:

    Вычисление обратных тригонометрических функций (арксинусов и арккосинусов) на Паскале

    В Паскале имеется стандартная функция arctan для вычисления арктангенса.

    Другие обратные тригонометрические функции могут быть выражены через неё с помощью формул тригонометрии.

    Для вычисления y = arcsin x , где, конечно, |x| , можно применить один из следующих способов:

    на практике следует помнить о возможных погрешностях при сравнении вещественных чисел (глава учебника, п.7.2).

    Для вычисления z = arccos x , где |x| , можно использовать тот факт, что сумма арксинуса и арккосинуса некоторого значения равна прямому углу:

    Вычисление полярных углов на Паскале

    Полярным углом точки с координатами (x,y) , отличной от начала координат, называют угол между положительным направлением оси Ox и направлением из начала координат на данную точку. При этом угол отсчитывается против часовой стрелки. Строго говоря, полярный угол не всегда равен arctg (y/x) , это верно лишь при x > 0 . Кроме того, при делении большого значения y на малое x возможно переполнение. Показанная ниже функция вычисляет полярный угол fi , лежащий в промежутке от -pi до +pi , для любой точки с координатами (x,y) , не совпадающей с началом координат:

    Проблема с приведением типов на Паскале

    Начинающие «паскалисты» нередко не понимают строгой типизированности этого языка, из-за чего находят в нём несуществующие «баги». Вот простейший пример.

    Эта программа выдаст отнюдь не 200000, как может показаться. Ответ будет равен 3392 (результат переполнения). Никакого бага нет. Тип выражения в Паскале определяется только типом входящих в него переменных, но не типом переменной, куда записывается результат. То есть, мы вычислили с переполнением произведение двух переменных типа Integer , а потом «испорченный» результат переписали в переменную типа Longint . ничего не изменит и

    Здесь тоже сначала вычислен результат с переполнением, затем преобразован к типу Longint . А вот

    рулит, получите свои 200000 🙂 Указанная ошибка часто встречается в программах начинающих. Чтобы её не повторять, помните — выражение в Паскале должно быть приведено к нужному типу в процессе его вычисления, а не после его окончания или при присваивании.

  • Ссылка на основную публикацию
    Adblock
    detector