Степень в паскале abc как пишется

Функция Power

Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее.

Функция Power в Паскале (и многих других языках программирования) выполняет возведение числа в степень.

Синтаксис для вещественных чисел:

function Power(Base: Double; Expon: Double) : Double;

Синтаксис для целых чисел:

function Power(Base: LongInt; Expon: LongInt) : LongInt;

Эта функция возводит число Base в степень Expon и возвращает результат. В реальности функция возвращает результат выражения:

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

  • В документации сказано, что функция объявлена в модуле SYSTEM. Однако без подключения модуля MATH компилятор выдаёт ошибку. Из этого следует, что на самом деле функция объявлена в модуле MATH.
  • В документации приведён синтаксис как для целых, так и для вещественных чисел. Однако на самом деле функция работает только с вещественными числами. При попытке использовать целые числа компилятор также выдаёт ошибку.
  • Возможно, в более новых версиях эти проблемы уже исправлены. Но у меня было именно так (версия FPC 3.0.0).

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

Здесь мы число 2 (переменная Х) возводим в степень 3 (переменная Y), то есть вычисляем следующую формулу:

Обратите внимание на подключенный модуль MATH.

Эта статья входит в раздел о подпрограммах модуля SYSTEM. И по идее описания функции Power здесь не должно быть. Но, так как в документации сказано, что функция Power объявлена в модуле SYSTEM, я решил включить данную статью именно в этот раздел (я же не виноват, что в документации косяк))).

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

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

Однако, если есть специальная функция для возведения числа в степень, то почему бы ей и не воспользоваться? С одной стороны. С другой стороны – эта функция совершенно неожиданно требует подключения модуля MATH.

В документации сказано, что по сути функция Power работает по формуле возведения в степень в Паскале:

Однако, если мы будем делать именно так, эта формула будет неправильно работать с отрицательными числами, потому что в документации сказано, что функция Ln работает только с положительными числами.

Так что функция Power в реальности несколько сложнее, чем приведённая выше формула.

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

Также напомню, что любое число в нулевой степени равно 1, а ноль в любой степени равен 0 (кроме нуля в нулевой – ноль в нулевой степени не определён, но мы будем возвращать в таких случаях ноль, хотя функция Power возвращает 1).

А теперь наш аналог функции Power:

Я сознательно немного всё усложнил, чтобы вас запутать )))

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

Здесь есть один подвох – если вы попытаетесь возвести отрицательное число в не целую степень, например, так:

то стандартная функция Power вызовет ошибку во время выполнения программы. В своём аналоге я этого избежал, но надо понимать, что результат в этом случае будет неправильным (хотя с моей точки зрения это всё-равно лучше, чем аварийное завершение программы).

Это происходит потому, что при таком раскладе результатом являются комплексные числа, а операции с комплексными числами выполняются по другим правилам.

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

Ещё в моей функции используется функция Odd, о которой я ещё не рассказывал. Вкратце скажу, что она определяет, является ли число чётным. Более подробно о ней расскажу в отдельной статье.

Источник статьи: http://info-master.su/programming/pascal-functions/power.php

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

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

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

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

Рассмотрим наиболее распространенные в 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 (только диапазон значений здесь значительно больше).

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

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

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

При использовании 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 переменная неограниченный

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

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

[Название файла: 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 в Паскале — наиболее часто используемый из вещественных типов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

const x = 17; begin var myname := ‘Петр’; print($’имя: , возраст: ‘) 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:

Более сложное использование процедуры 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.

    Источник статьи: http://labs-org.ru/pascal-1_3/

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

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

    Написать программу на языке Pascal, которая возводит число в целочисленную степень. Число и степень вводятся с клавиатуры.

    Решение

    Чтобы возвести число в степень, его надо умножить само на себя количество раз, равное показателю степени. То есть возведение числа n в степень d будет выглядеть так:

    где индексы внизу просто указывают очередное по счету n .

    Если d (степень) равна нулю, то какое бы число не стояло в основании степени, результат всегда будет равен единице:

    Если показатель степени отрицателен ( d что делать если степень минусовая?

    Повеситься, перед этим проштудировав любой букварь по элементарной математике и сделав для себя «гениальное открытие» — оказывается, «икс в степени минус эн равно единице, деленной на икс в степени эн»

    program slojenie;
    Var
    a, b, d, i, j, s : integer; // — öåëî÷èñëåííûé
    //s: string; // — ñòðîêà
    //c: real; // — äåñÿòè÷íàÿ äðîáü

    Begin
    write(‘Ââåäèòå íàèìåíüøåå ÷èñëî êîòîðîå õîòèòå âîçâåñòè â êâàäðàò a:’);
    readln(a);
    write(‘Ââåäèòå íàèáîëüøåå ÷èñëî êîòîðîå õîòèòå âîçâåñòè â êâàäðàò b:’);
    readln(b);

    Write (‘Âîçâåäèòå â ñòåïåíü ÷èñëî ‘,j, ‘^2 = ‘); // — ïåðåõîä íà ñëåä ñòðîêó
    readln(d);

    if (j * j = d) then writeln (j,’^2 = ‘, d)

    else
    Begin
    writeln(‘Íåâåðíî — ó÷è òàáëèöó êâàäðàòîâ’);
    j:=j-1;
    end;
    End;
    writeln(‘Ìîëîäåö’);

    //readln; // — ïðè çàïóñêå åêçå ôàéëà, ÷òî áû ñðàçó íå çàêðûâàëñÿ åêçå ôàéë

    Функция Power

    Функция Power в Паскале (и многих других языках программирования) выполняет возведение числа в степень.

    Синтаксис для вещественных чисел:

    function Power(Base: Double; Expon: Double) : Double;

    Синтаксис для целых чисел:

    function Power(Base: LongInt; Expon: LongInt) : LongInt;

    Эта функция возводит число Base в степень Expon и возвращает результат. В реальности функция возвращает результат выражения:

    • В документации сказано, что функция объявлена в модуле SYSTEM. Однако без подключения модуля MATH компилятор выдаёт ошибку. Из этого следует, что на самом деле функция объявлена в модуле MATH.
    • В документации приведён синтаксис как для целых, так и для вещественных чисел. Однако на самом деле функция работает только с вещественными числами. При попытке использовать целые числа компилятор также выдаёт ошибку.
    • Возможно, в более новых версиях эти проблемы уже исправлены. Но у меня было именно так (версия FPC 3.0.0).

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

    Здесь мы число 2 (переменная Х) возводим в степень 3 (переменная Y), то есть вычисляем следующую формулу:

    Обратите внимание на подключенный модуль MATH.

    Эта статья входит в раздел о подпрограммах модуля SYSTEM. И по идее описания функции Power здесь не должно быть. Но, так как в документации сказано, что функция Power объявлена в модуле SYSTEM, я решил включить данную статью именно в этот раздел (я же не виноват, что в документации косяк))).

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

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

    Однако, если есть специальная функция для возведения числа в степень, то почему бы ей и не воспользоваться? С одной стороны. С другой стороны — эта функция совершенно неожиданно требует подключения модуля MATH.

    В документации сказано, что по сути функция Power работает по формуле возведения в степень в Паскале:

    Однако, если мы будем делать именно так, эта формула будет неправильно работать с отрицательными числами, потому что в документации сказано, что функция Ln работает только с положительными числами.

    Так что функция Power в реальности несколько сложнее, чем приведённая выше формула.

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

    Также напомню, что любое число в нулевой степени равно 1, а ноль в любой степени равен 0 (кроме нуля в нулевой — ноль в нулевой степени не определён, но мы будем возвращать в таких случаях ноль, хотя функция Power возвращает 1).

    А теперь наш аналог функции Power:

    Я сознательно немного всё усложнил, чтобы вас запутать )))

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

    Здесь есть один подвох — если вы попытаетесь возвести отрицательное число в не целую степень, например, так:

    то стандартная функция Power вызовет ошибку во время выполнения программы. В своём аналоге я этого избежал, но надо понимать, что результат в этом случае будет неправильным (хотя с моей точки зрения это всё-равно лучше, чем аварийное завершение программы).

    Это происходит потому, что при таком раскладе результатом являются комплексные числа, а операции с комплексными числами выполняются по другим правилам.

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

    Ещё в моей функции используется функция Odd, о которой я ещё не рассказывал. Вкратце скажу, что она определяет, является ли число чётным. Более подробно о ней расскажу в отдельной статье.

    Источник статьи: http://ventureindustries.com.ua/obuchenie/robot/kak-vozvesti-v-stepen-v-paskale

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

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

    Вопросы «возвденеие в степень 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);

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

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

    if ((not odd(pow)) and (pow 0) do

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

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

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

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

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

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

    Функция Power

    Функция Power в Паскале (и многих других языках программирования) выполняет возведение числа в степень.

    Синтаксис для вещественных чисел:

    function Power(Base: Double; Expon: Double) : Double;

    Синтаксис для целых чисел:

    function Power(Base: LongInt; Expon: LongInt) : LongInt;

    Эта функция возводит число Base в степень Expon и возвращает результат. В реальности функция возвращает результат выражения:

    • В документации сказано, что функция объявлена в модуле SYSTEM. Однако без подключения модуля MATH компилятор выдаёт ошибку. Из этого следует, что на самом деле функция объявлена в модуле MATH.
    • В документации приведён синтаксис как для целых, так и для вещественных чисел. Однако на самом деле функция работает только с вещественными числами. При попытке использовать целые числа компилятор также выдаёт ошибку.
    • Возможно, в более новых версиях эти проблемы уже исправлены. Но у меня было именно так (версия FPC 3.0.0).

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

    Здесь мы число 2 (переменная Х) возводим в степень 3 (переменная Y), то есть вычисляем следующую формулу:

    Обратите внимание на подключенный модуль MATH.

    Эта статья входит в раздел о подпрограммах модуля SYSTEM. И по идее описания функции Power здесь не должно быть. Но, так как в документации сказано, что функция Power объявлена в модуле SYSTEM, я решил включить данную статью именно в этот раздел (я же не виноват, что в документации косяк))).

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

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

    Однако, если есть специальная функция для возведения числа в степень, то почему бы ей и не воспользоваться? С одной стороны. С другой стороны — эта функция совершенно неожиданно требует подключения модуля MATH.

    В документации сказано, что по сути функция Power работает по формуле возведения в степень в Паскале:

    Однако, если мы будем делать именно так, эта формула будет неправильно работать с отрицательными числами, потому что в документации сказано, что функция Ln работает только с положительными числами.

    Так что функция Power в реальности несколько сложнее, чем приведённая выше формула.

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

    Также напомню, что любое число в нулевой степени равно 1, а ноль в любой степени равен 0 (кроме нуля в нулевой — ноль в нулевой степени не определён, но мы будем возвращать в таких случаях ноль, хотя функция Power возвращает 1).

    А теперь наш аналог функции Power:

    Я сознательно немного всё усложнил, чтобы вас запутать )))

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

    Здесь есть один подвох — если вы попытаетесь возвести отрицательное число в не целую степень, например, так:

    то стандартная функция Power вызовет ошибку во время выполнения программы. В своём аналоге я этого избежал, но надо понимать, что результат в этом случае будет неправильным (хотя с моей точки зрения это всё-равно лучше, чем аварийное завершение программы).

    Это происходит потому, что при таком раскладе результатом являются комплексные числа, а операции с комплексными числами выполняются по другим правилам.

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

    Ещё в моей функции используется функция Odd, о которой я ещё не рассказывал. Вкратце скажу, что она определяет, является ли число чётным. Более подробно о ней расскажу в отдельной статье.

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

    Nickolay.info. Алгоритмы. Некоторые математические расчёты на Паскале

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

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

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

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

    Если b — целое число (вообще говоря, «не слишком большое» по модулю), а a — любое (не равное нулю при b 0 . Кроме того, при делении большого значения y на малое x возможно переполнение. Показанная ниже функция вычисляет полярный угол fi , лежащий в промежутке от -pi до +pi , для любой точки с координатами (x,y) , не совпадающей с началом координат:

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

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

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

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

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

    Источник статьи: http://ritorika.com.ua/rukovodstvo/17/kak-vozvesti-v-stepen-v-paskale

    Степень в паскале abc как пишется

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

    integer – целые числа в интервале от -2147483648 до 2147483647

    real – вещественные (реальные) – целые и дробные положительные и отрицательные числа

    Описания констант в декларативной части производится перед переменными, и предусматривают определенную форму записи чисел (дополнительно тип константы не оговаривается): если константа записана с точкой, тип константы считается real. При записи значения константы используется знак равенства.

    c1=3.14159265; // с1 имеет тип real

    с2=2; // c2 имеет тип integer

    Переменная – это вид объектов в программе, предназначенный для хранения информации во время выполнения программы. По правилам Паскаля каждая переменная должна быть объявлена, т.е. описана в декларативной части программы.

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

    На Паскале такого рода предписание обычно выражается предложением назначения, имеющим вид:

    Выполнение такого предложения начинается вычислением выражения, стоящего справа от символа назначения (:=). Полученное значение потом помещается в переменную (присваивается ей), указанную слева от =:

    Описание переменных следует за описанием констант. В описании переменных после двоеточия указывается тип переменной:

    В Паскале возможны следующие действия (группы операций записаны в порядке приоритета):

    1) Операция возведения в степень (в стандартном Паскале отсутствует) – функция i:=power(x,y), где i – результат, x – основание, y – степень;

    2) умножение ( * ), деление ( / ), деление целочисленное (div), получение остатка от целочисленного деления (mod);

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

    Если хотя бы одна из переменных, используемых в операциях умножения, сложения, вычитания относится к типу real, результат операции будет типа real.

    Результат операции деления всегда типа real. Результат операций div и mod – integer.

    Пример записи математической операции:

    в программе на Паскале это будет выглядеть так:

    Примечание. Квадрат числа sqr(c) можно (и проще!) записать как с*с

    Обратите внимание на использование знака операции присваивания :=

    При проведении математических операций следует учитывать, что вещественные числа (real) представляются с некоторым приближением.

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

    При использовании стандартных функций необходимо контролировать тип аргумента (возможные типы указаны в скобках).

    a:=random(x) – случайное число (если аргумент не указан, то результат real – число в интервале от 0 до 1, если x целое число от 0 до 65535, то результат случайное целое число в интервале от 0 до х-1;

    a:=abs(x) – модуль (абсолютная величина) x (real или integer);

    a:=int(x) – целая часть числа x (число real, результат integer), округление не проводится, дробная часть отсекается;

    a:=frac(x) – дробная часть числа x (число и результат real),

    a:=round(x) – целое число, полученное в результате округления числа x по правилам математики

    a:=sqr(x) – квадрат числа x (real, integer);

    a:=sqrt(x) – квадратный корень из числа x (real, x>0);

    a:=sin(x) – синус x (x задается в радианах, real);

    a:=cos(x) – косинус x (x задается в радианах, real);

    a:=arctan(x) – арктангенс x (real);

    Наберите следующую программу и разберитесь в ее работе:

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

    writeln(‘Сумма цифр трехзначного числа’);

    write(‘Введите целое трехзначное число ‘);

    writeln(‘Сумма цифр трехзначного числа=’, s+d+e);

    writeln(‘Сумма цифр трехзначного числа=’, s+d+e);

    Выполните задания с Begin9° по Begin30° по электронному задачнику (стр.11). Открыть его можно в режиме Помощь – Электронный задачник РТ.

    Задачи для самостоятельного решения

    1. Составить программу, чтобы компьютер по закону Ома для участка цепи, запрашивая с клавиатуры значения напряжения на концах участка и его сопротивления, определял и выводил на экран значение силы тока (I=U/R).

    Источник статьи: http://www.sites.google.com/site/osnovyprogrampaskal/tema-2

    Стандартные функции языка Pascal

    В программировании, как и в любой науке (хотя это и искусство также), с течением исторического времени накапливается опыт, методы решения различных задач. Многие задачи решаются в определенной степени универсальными методами. Незачем каждый раз писать алгоритм для ее решения, если он уже был написан много лет назад и одобрен сообществом программистов. Такие алгоритмы оформляются в виде функций и модулей, а затем используются в программах, которые пишутся здесь и сейчас.

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

    Ниже описаны стандартные (включенные в язык) функции языка программирования Паскаль.

    Арифметические и тригонометрические функции

    Арифметические функции можно использовать только с величинами целого и вещественного типа.

    Функция Назначение Тип результата
    abs(x) абсолютное значение аргумента совпадает с типом аргумента
    sqr(x) квадрат аргумента совпадает с типом аргумента
    sqrt(x) квадратный корень аргумента вещественный
    cos(x) косинус аргумента вещественный
    sin(x) синус аргумента вещественный
    arctan(x) арктангенс аргумента вещественный
    exp(x) e x вещественный
    ln(x) натуральный логарифм вещественный
    int(x) целая часть числа вещественный
    frac(x) дробная часть числа вещественный

    Следующие две функции можно применять к целым параметрам, и в этом случае они возвращают целый результат. Этим функциям можно также передавать вещественный параметр, получая вещественный результат.

    abs(выражение) – абсолютное (то есть положительное) значение параметра.
    abs(-2), abs(0), abs(2). Результат: 2, 0, 2
    abs(-2.0), abs(0.0), abs(2.0). Результат: 2.0, 0.0, 2.0

    sqr(выражение) – квадрат параметра.
    sqr(-2), sqr(0), sqr(2). Результат: 4, 0, 4
    sqr(-2.0), sqr(0.0), sqr(2.0). Результат: 4.0, 0.0, 4.0

    Функция sqr возводит значение аргумента (записанного внутри скобок) в квадрат. В Паскале нет оператора возведения в произвольную степень. Возведение в степень здесь осуществляется с использованием логарифмов. Вместо математического выражения a x на Pascal можно написать exp(ln(a) * x).

    Остальные арифметические функции принимают целый или вещественный параметр; результат в любом случае будет вещественным:

    sqrt(выражение) – квадратный корень.
    sqrt(16), sqrt(0.64), sqrt(0). Результат: 4.0, 0.8, 0.0
    sqrt(-16). Результат: ошибка

    ln(выражение) – натуральный логарифм.
    ln(1), ln(2.7182):4:1, ln(7.5):4:1. Результат: 0.0, 1.0, 2.0
    ln(0), ln(-1). Результат: ошибка

    exp(выражение) – экспонента.
    exp(0):4:1, exp(1):8:5, exp(2.014903):4:1. Результат: 1.0, 2.71828, 7.5
    exp(-1):7:4. Результат: 0.3579
    Примечание: e -1 = 1 / e

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

    sin(выражение) – синус угла, измеренного в радианах
    sin(-pi / 6):4:1. Результат: -0.5
    sin(0):4:1. Результат: 0.0
    sin(pi / 2):4:1. Результат: 1.0

    cos(выражение) – косинус угла, измеренного в радианах
    cos(-pi / 6):4:1. Результат: 0.8
    cos(0):4:1. Результат: 1.0
    cos(pi):4:1. Результат: -1.0

    arctan(выражение) – арктангенс
    arctan(1e35):8:5. Результат: 1.57080
    arctan(0):4:1. Результат: 0.0
    arctan(-1):8:5. Результат: 0.78540

    Функции преобразования из вещественного в целый тип

    Когда целое значение присваивается вещественной переменной, оно автоматически преобразуется в вещественный тип и никакие функции для этого не требуются. Такое преобразование типов называется неявным. Так, если переменную объявить как real, а затем присвоить ей целое число 5, то последнее автоматически преобразуется в 5.0.

    Обратного неявного преобразования нет: будет ошибкой пытаться присваивать переменной целого типа вещественный результат.

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

    trunc(вещественное_выражение) – преобразует вещественное в целый тип, отбрасывая дробную часть.
    trunc(3.1), trunc(3.8). Результат: 3, 3
    trunc(-3.1), trunc(-3.8). Результат: -3, -3

    round(вещественное_выражение) – преобразует вещественное в целый тип, округляя до ближайшего целого.
    round(3.1), round(3.8). Результат: 3, 4
    round(-3.1), round(-3.8). Результат: -3, -4

    Здесь возможны недоразумения. Пусть вещественная переменная x имеет значение 3.499999. Если это значение напечатать с использованием оператора write(x:8:5), то получится 3.50000, в то время как write(round(x)) даст 3, а не 4. Это затруднение можно обойти при помощи небольшой поправки, например write(round(x + 0.000001)) (в предположении, что значение переменной x заведомо положительное).

    Применять функции trunc и round к параметрам целого типа нельзя. Например, будут ошибкой такие выражения, как trunc(3) или round(3).

    Логические функции

    Функция odd используется для проверки четности или нечетности целого выражения. Аргумент функции величина типа longint.
    odd(целое_выражение) – возвращает true, если параметр – нечетный, в противном случае возвращает false.
    odd(3), odd(2), odd(0). Результат: true, false, false
    odd(-3), odd(-2). Результат: true, false
    odd(3.0). Результат: ошибка

    Следующие функции служат для определения конца строки или конца файла соответственно. Функция eoln используется только с текстовыми файлами, которые организованы как строки символов. Функцию eof не следует использовать при вводе данных с клавиатуры.
    eoln(имя_файла) – возвращает true, если была прочитана последняя литера текущей строки.

    eof(имя_файла) – возвращает true, если была прочитана последняя литера файла (попытка дальнейшего чтения ведет к ошибке).

    Функции над дискретными типами

    Функция ord

    Буквы от ‘A’ до ‘Z’ следуют в возрастающем порядке, иными словами, каждая буква имеет порядковое значение, соответствующее ее месту в алфавите. Это порядковое значение может быть получено посредством функции ord.
    ord(выражение) – возвращает порядковый номер литеры или значения другого дискретного типа.
    ord(‘I’), ord(‘J’). Результат: 73, 74 (код ASCII)

    Порядковый номер литеры зависит от используемого кода. Но, независимо от используемого кода, порядковые значения букв следуют по возрастанию:
    ord(‘A’) days , определенный ранее: pred(sun) возвращает sat, succ(mon) возвращает tue.

    Однако было бы неверно писать writeln(pred(sun)), поскольку элементы перечисляемого типа нельзя читать или печатать, что, конечно, снижает выгоду от использования таких типов. Наилучшее приближение к writeln(pred(sun) – это оператор writeln(ord(pred(sun))), печатающий число 5 (порядковое значение элемента sat).

    Функцию succ удобно использовать для управления циклом:

    Источник статьи: http://pas1.ru/standartfunc

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

    Вопросы “возвденеие в степень 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);

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

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

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

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

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

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

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

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

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

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

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

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

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

    Источник статьи: http://bpascal.ru/download/desc/436.php

    Как возвести в степень в pascal

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

    Наиболее простой случай возникает, когда число необходимо возвести в небольшую целую положительную степень. Такое математическое действие можно выполнить буквально за одну строку. Например, если число необходимо всегда возводить в четвертую степень, воспользуйтесь такой строкой:b:=a*a*a*a;Сами переменные a и b должны иметь тип, соответствующий диапазону и виду чисел, подвергающихся возведению в степень.

    Если число также возводится в целую и положительную степень, но она велика, и, к тому же, может меняться, воспользуйтесь циклом. Для этого поместите в программу такой фрагмент:c:=a;if b=0 then c:=1;if b>=2 then for i:=2 to b do c:=a*c;Здесь a – число, подлежащее возведению в степень, b – показатель степени, c – результат. Переменные i и b – обязательно типа integer.

    Чтобы возвести число в дробную степень, воспользуйтесь свойствами логарифмов. Соответствующий фрагмент программы при этом будет выглядеть так:c:=exp(b*ln(a));Данный способ не позволяет работать с нулем и отрицательными числами. Для устранения первого из этих недостатков воспользуйтесь такой конструкцией:if a=0 then c:=1 else c:=exp(b*ln(a));Это позволит обойти ограничение на диапазон значений входного параметра натурального логарифма, который при нуле не имеет математического смысла. Второй недостаток, однако, останется в силе: возводить в степень отрицательные числа по прежнему не удастся. Все переменные используйте типа real.

    Чтобы возвести в степень отрицательное число, возьмите его модуль, подставьте в предыдущее выражение, после чего поменяйте знак результата. На языке Паскаль это будет выглядеть следующим образом:c:=(-1)*exp(b*ln(abs(a)));Затем, если сама степень является четной, возьмите модуль от результата:if round(b/2)=b/2 then c:=abs(c);

    Иногда возникает необходимость в универсальном фрагменте программы, позволяющем осуществлять возведение в степень в отношении любых чисел. Тогда составьте его следующим образом:c:=0;if a0 then c:=exp(b*ln(a));if b=0 then c:=1;if round(b/2)=b/2 then c:=abs(c);Здесь все переменные – также типа real.

    Источник статьи: http://completerepair.ru/kak-vozvesti-v-stepen-v-pascal

    Степень в паскале abc как пишется

    Если степень целая и положительная, то обычным циклом:

    //x – Ваше число (integer, real)
    //N – степень (integer)
    //S – здесь будет результат (integer, real)
    //i – счётчик (integer)

    А если число, которое нужно возвести в степень отрицательное? И формула примерно выглядит так:

    сумма при k равном от 1 до n (((-1)^k)*(n/((k+1)*(k+2)))

    в файле оформленно как в Worde выглядит, если непонятно.

    В модуле Math есть функция
    function Power(const Base, Exponent: Extended): Extended;
    которая возводит любое число в любую степень.

    E := StrToFloatDef(Edit.Text, 1); // Если число введено неверно, то вернет 1
    X := Power(Число, E);

    В модуле Math есть функция
    function Power(const Base, Exponent: Extended): Extended;
    которая возводит любое число в любую степень.

    E := StrToFloatDef(Edit.Text, 1); // Если число введено неверно, то вернет 1
    X := Power(Число, E);

    А если число, которое нужно возвести в степень отрицательное? И формула примерно выглядит так:

    сумма при k равном от 1 до n (((-1)^k)*(n/((k+1)*(k+2)))

    в файле оформленно как в Worde выглядит, если непонятно.

    – будут вопросы обращайтесь!

    Там если что под себя отредактировать можно.

    Источник статьи: http://www.programmersforum.ru/showthread.php?t=4192

    Pascal: Занятие №3. Часть2: Цикл While в Паскале

    While в Паскале — цикл с предусловием

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

    n счетчик
    246 0
    24 1
    2 2
    0 3

    В чем сложность?: Заранее не определено и неизвестно, сколько цифр нужно убрать, т.е. сколько шагов необходимо сделать.
    Как выполнить: Надо перестать отделять цифры, когда n = 0, т.е. надо выполнять пока n > 0

    Блок-схема решения:

    Решение примера на Паскале:

    Цикл while в Паскале применяется для создания повторений с неизвестным заранее их числом. Повторения (итерации) будут осуществляться, пока истинно некоторое условие.

    Блок-схема, соответствующая циклу while в Паскале:

    • Здесь оператор, стоящий после служебного слова do , образует тело цикла и будет выполняться, пока значение “условия” равно true (истина).
    • Если операторов должно быть несколько, тогда необходимо применять составной оператор.
    • Условие пересчитывается каждый раз при входе в цикл.
    • Непосредственно условием цикла while может быть переменная или логическое выражение.
    • Операторы тела цикла while выполнятся только в том случае, если условие будет истинно, если условие ложно — они игнорируются, и программа продолжается с тех операторов, которые стоят уже после конструкции. Таким образом, это существенное отличие цикла с предусловием от цикла с постусловием.

    Рассмотрим использование цикла while в Паскале на решенном примере:

    var i,n:integer; begin write (‘количество знаков’); readln(n); i:=1; while i [Название файла: L3task3.pas ]

    Задача 4. Вычислять с использованием цикла while квадратные корни из чисел 900, 893, 886, 879 и т.д. до тех пор, пока это можно делать.

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

    Детальный разбор работы цикла While в Паскале рассмотрен в видеоуроке:


    которые по модулю больше 0,001:

    Блок-схема решения:

    Результат: S = 1.157

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

    Вложенные циклы в Паскале

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

    const n = 9; <размер таблицы>var i, j :integer; begin for i:=1 to n do <номера строк>begin for j:=1 to n do <номера столбцов>write(i*j:4); writeln; <переход на новую строку>end; end.

    const n = 9; <размер таблицы>begin for var i:=1 to n do <номера строк>begin for var j:=1 to n do <номера столбцов>write(i*j:4); writeln; <переход на новую строку>end; end.

    Произведение в Паскале

    Точно также, как существует сумматор для сложения, для умножения в паскале тоже существует специальная конструкция:

    Произведение вычисляется по рекуррентному выражению:

    где P – промежуточные произведения

    Y — сомножители

    Рассмотрим пример вычисления факториала числа в Паскале с использованием цикла while .

    var fact, n : integer; begin fact := 1; <начальное значение факториала =0! >n := 1; <начальное значение для условия >while n n := 1 стоит до цикла, если этого не сделать, то условие будет работать некорректно, так как переменная n будет пуста.

    Программа возведения в степень числа в Паскале

    Для начала уточним, что есть формула вычисления степени на Паскале. Но мы не будем ее использовать, а разберем алгоритм решения задачи возведения в степень.

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

    Таким образом, возведение числа n в степень d можно выразить так:
    n d = n1 * n2 * n3 * … * nd , где нижние индексы просто указывают очередное по счету число n .

    Еще необходимо учесть следующее:

    • число в нулевой степени равняется 1
    • если показатель степени отрицателен, т.е. d , то задача решается по формуле:
      n d = 1 / (n1 * n2 * n3 * … * nd)

    Т.е., решая программу на Паскале, учитываем:

    • в программе на языке Паскаль количество итераций (повторений) цикла while должно быть равно показателю степени числа по модулю;
    • если показатель степени — отрицательное число, то нужно впоследствии единицу разделить на результат.

    Задача 6. Вычислить в Паскале степень числа, используя цикл while.

    Источник статьи: http://labs-org.ru/pascal-3_2/

  • Понравилась статья? Поделить с друзьями: