Lg в паскале как записать
Перейти к содержимому

Lg в паскале как записать

  • автор:

Lg в паскале как записать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lg в паскале как записать

Magister of Code

Профиль
Группа: Участник
Сообщений: 155
Регистрация: 9.7.2004
Где: Kiev

Репутация: нет
Всего: 1

Профиль
Группа: Участник
Сообщений: 48
Регистрация: 9.1.2005
Где: г.Ижевск

Репутация: нет
Всего: нет

Magister of Code

Профиль
Группа: Участник
Сообщений: 155
Регистрация: 9.7.2004
Где: Kiev

Репутация: нет
Всего: 1

Профиль
Группа: Участник
Сообщений: 247
Регистрация: 6.4.2005
Где: Петербург

Репутация: нет
Всего: 10

Запрещается!

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

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »

[ Время генерации скрипта: 0.1027 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Pascal-Паскаль

Программирование. Стандартные функции Pascal-Паскаль

  • Скачено бесплатно: 25982
  • Куплено: 414
    ->Программирование. Стандартные функции Pascal-Паскаль

Программирование. Стандартные функции Pascal-Паскаль

Стандартные функции Pascal-Паскаль

Стандартные математические функции Турбо Паскаля
Обращение Тип аргумента Тип результата Примечание
Abs(x) Real, integer Тип аргумента Модуль аргумента
ArcTan(x) Real, integer Real Арктангенс (значение в радианах)
Cos(x) Real, integer Real Косинус, угол в радианах
Exp(x) Real, integer Real Экспонента
Frac(x) Real Real Дробная часть числа
Int(x) Real, integer Real Целая часть числа
Ln(x) Real, integer Real Логарифм натуральный
Pi Нет Real 3,141592653
Sin(x) Real, integer Real Синус, угол в радианах
Sqr(x) Real, integer Тип аргумента Квадрат аргумента
Sqrt(x) Real, integer Real Корень квадратный
Random Нет Real Псевдослучайное число в интервале [0, 1]
Random(I) Integer Integer Псевдослучайное число в интервале [0, I]
Round(x) Real Integer Округление до ближайшего целого
Trunc(x) Real Integer Отбрасывание дробной части числа

Порядок вычислений в выражениях следующий:

  1. вычисляются подвыражения, заключенные в скобки;
  2. затем выполняются операции с наибольшим приоритетом; обычно используются следующие уровни приоритетов (в порядке убывания):
    • возведение в степень;
    • мультипликативные операции: * , / , div , mod;
    • унарные операции: + , — , abs , not;
    • аддитивные операции: +, -;
    • операции отношения: = , <>, <, >, <=, >=;
    • логические операции: and, or, not;
  3. операции с одинаковым приоритетом выполняются слева направо.

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

Замечание (это важно!)

  • в Паскале нет стандартной операции или стандартной функции возведения в степень, поэтому используется следующее математическое тождество: x y = e ylnx
  • в Паскале существует только стандартная функция вычисления натурального логарифма, поэтому используется следующее математическое тождество: logab= ln b/ln a

Математическое выражение: x 3/2 — 7x + tg (x+2)

Выражение на Паскале: exp(3*ln(x)/2)-7*x+sin(x+2)/cos(x+2)

Операторы действия

Операторы действия — это средства языка, позволяющие изменять в процессе выполнения программы состояние вычислений. Самый простой оператор действия — оператор присваивания.

Пример оператора присваивания

Оператор присваивания, несмотря на кажущуюся простоту, имеет очень важное алгоритмическое значение.

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

  1. В каждый момент времени в ящике может храниться не более одного значения.
  2. Каждый ящик способен хранить только значения одного и того же типа. Попытка поместить в ящик значение любого другого типа приводит к тому, что ящик отказывается принимать на хранение передаваемое ему значение — это расценивается как ошибка в программе.
  3. Значение, помещенное в ящик, будет храниться в нем до тех пор, пока в этот ящик не будет помещено новое значение (в момент присваивания соответствующей переменной этого нового значения) — при этом предыдущее содержимое ящика безвозвратно теряется (уничтожается).
  4. Находящееся в ящике значение считается текущим значением соответствующей переменной. Это текущее значение может быть выдано из ящика для использования сколько угодно раз, но при этом содержимое ящика не меняется: из него каждый раз выдается копия хранящегося значения с сохранением оригинала в ящике без какого-либо изменения.
  5. К началу выполнения программы содержимое всех запоминающих ящиков считается неопределенным; в частности, их нельзя считать и пустыми, поскольку эти ящики могли использоваться при выполнении предыдущих программ, после чего в ящиках могло что-то остаться.

Еще один оператор действия, хотя его можно лишь условно назвать таковым: он не выполняет никакого действия, это — пустой оператор (в Паскале он обознается знаком ";"). В Паскале оператором действия является также оператор процедуры. Последний из простейших операторов действия — оператор останова, который прерывает работу программы (в Паскале это оператор halt).

Ввод и вывод данных

Ввод данных с клавиатуры производится с помощью стандартной процедуры read( ) или ее разновидности readln( ). Элементы списка ввода — идентификаторы (имена) переменных, перечисляемые через запятую. При выполнении этого оператора пользователь набирает на клавиатуре соответствующую последовательность значений, разделяя их пробелами (это важно!).

Пример ввода данных с клавиатуры

read(a,b,c);

readln(a,b,c);

Вывод данных на экран производится с помощью стандартной процедуры write( ) или ее разновидности writeln( ).

Список вывода может содержать константы, переменные, выражения, формат вывода. Выражения в списке вывода разделяются запятыми.

Пример вывода данных на экран

write(a,b,c);

writeln(a,b,c);

Окончание ln в имени процедуры означает, что курсор автоматически будет переведен в начало следующей строки экрана.

Программирование

Исходники Pascal (127)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

Домашние задание

http://pascalabc.net

Нажмите на рисунок

http://pascalabc.net

По этому адресу можно скачать среду программирования Pascal или работать в режиме on-line.

Щелкнув ЛКМ по рисунку слева, вы перейдете на главную страницу сайта. На главной странице можно будет скачать Среду программировая PASCAL, познакомиться с примерами решения задач, войти в ОН-лайн режим. Чтобы перейти в режим работы on-line выберите ссылку Web-сред а .

В появившемся окне можно вводить программу. После набора программы необходимо щелкнуть ЛКМ на кнопку ВЫПОЛНИТЬ. В нижней части окна появятся ошибки, если таковы имеются или результат, если программа выполнена без ошибок.

Урок №1

Основная структура программы.

Правила языка Паскаль предусматривают единую для всех программ форму основной структуры:

<Раздел описаний>

Begin

<Тело программы>

End.

Здесь слова Program, Begin и End являются служебными.
Правильное и уместное употребление этих слов является обязательным.

Имя программы выбирается программистом самостоятельно в
соответствии с правилами построения идентификаторов.

Урок №2

Типы переменных на языке Паскаль

BYTE — целое число от 0 до 255, занимает одну ячейку памяти (байт).

BOOLEAN — логическое значение (байт, заполненный единицами, или нулями),

WORD — целое число от 0 до 65535, занимает два байта.

INTEGER — целое число от –32768 до 32767, занимает два байта.

LONGINT — целое число от –2147483648 до 2147483647, занимает четыре байта.

REAL — число с дробной частью от 2.9*10-39.до 1.7*1038, может принимать и отрицательные значения, на экран выводится с точностью до 12-го знака после запятой, если результат какой либо операции с REAL меньше, чем 2.9*10-39, он трактуется как ноль. Переменная типа REAL занимает шесть байт.

DOUBLE — число с дробной частью от 5.0*10-324.до.1.7*10308, может принимать и отрицательные значения, на экран выводится с точностью до 16-го знака после запятой, если результат какой либо операции с DOUBLE меньше, чем 5.0*10-324, он трактуется как ноль. Переменная типа DOUBLE занимает восемь байт.

CHAR — символ, буква, при отображении на экран выводится тот символ, код которого хранится в выводимой переменной типа CHAR, переменная занимает один байт.

STRING — строка символов, на экран выводится как строка символов, коды которых хранятся в последовательности байт, занимаемой выводимой переменной типа STRING; в памяти занимает от 1 до 256 байт – по количеству символов в строке, плюс один байт, в котором хранится длина самой строки.

Операторы ввода / вывода

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

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

read ( <список_ввода> )

readln ( <список_ввода> )

Первая из этих команд считывает все предложенные ей данные, оставляя курсор в конце последней строки ввода, а вторая — сразу после окончания ввода переводит курсор на начало следующей

строки. В остальном же их действия полностью совпадают.

Список ввода — это последовательность имен переменных, разделенных запятыми.

Например, при помощи команды

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

Вводимые значения необходимо разделять пробелами, а завершать ввод — нажатием клавиши Enter.

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

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

write( <список_вывода> )

writeln( <список_вывода> )

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

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

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

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

Оператор Writеln без параметров реализует пропуск строки и переход к началу следующей строки.

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

Чтобы этого не случилось, нужно позаботиться о пробелах между выводимыми переменными:

writeln(a, ‘ ‘, b, ‘ ‘, c);

Но предпочтительнее задать для всех (или хотя бы для некоторых) переменных формат вывода:

writeln(a:5, b, c:20:5);

Если число длиннее, чем отведенное под него пространство, количество позиций будет автоматически увеличено.

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

Лабораторная работа №1

ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ ЛИНЕЙНОЙ СТРУКТУРЫ

Цель работы — овладение практическими навыками разработки и программирования вычислительного процесса линейной структуры и навыками по отладке и тестированию программ.

Задания для самостоятельной подготовки

— запись констант, переменных, стандартных функций;

— правила записи арифметических выражений;

— арифметический оператор присваивания;

— организацию простейшего ввода-вывода данных.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

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

Задание к работе

1. Вычислить на ЭВМ значения переменных, по заданным расчетным формулам и наборам исходных данных. Составить блок – схему.

Пример выполнения лабораторной работы №1 (вариант – 10)

1.Функции тангенс в Паскале не существует, поэтому заменим тангенс tg(x)=sin(x)/cos(x);

2. Тангенс находится в квадрате, поэтому представим это выражение следующим образом:

tg 2 x=SQR(sin(x)/cos(x));

3. Синус в знаменателе дроби тоже в квадрате, по аналогии запишем и его:

Sin 2 (x/a) = SQR(sin(x/a));

4. Запишем первое выражение по правилам языка программирования Паскаль:

5. Представим «Е» в степени минус корень квадратный из «А» по правилам записи на языке программирования Паскаль:

√a=sqrt(a), e x = exp(x) Þ e -√a =exp(-SQRT(a));

6. Запишем второе выражение по правилам языка программирования Паскаль:

Составим программу :

PROGRAM lab 1; — название программы .

Var y , d , x , a , b : real ; — описание переменных, которые встречаются в выражениях. Так как переменные имеют целую и дробную часть, то тип их вещественный (REAL).

BEGIN – начало программы.

a :=3.2; b :=17.5; x :=-4.8; — присвоение значений переменным (исходные данные).

y := b * SQR ( sin ( x )/ cos ( x ))- a / SQR ( sin ( x / a )); — вычисление значения «у».

d := a * exp (- sqrt ( a ))* cos ( b * x / a ); — вычисление значения « d ».

writeln (‘ y = ‘, y , ‘ и d = ‘, d ); — вывод результатов вычислений с комментариями.

end . – конец программы.

Результат вычислений выглядит так:

Урок №3

Условный оператор.

Структура условного оператора имеет следующий вид:

IF условие THEN оператор1 ELSE оператор2;

Вначале вычисляется условие, если результат — TRUE (истина), то выполняется оператор1, если результат есть FALSE (ложь), наоборот, выполняется оператор2.

В условном операторе после then, а также после else по синтаксису может стоять только один оператор. Если же при выполнении (или невыполнении) заданного условия надо выполнить не одно действие, а несколько, то их надо объединить в единый, составной оператор, т.е. заключить эту последовательность действий в операторные скобки begin. end.

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

var n : integer ;

begin

write ( ‘Введите целое число: ‘ ) ; readln ( n ) ;

if n mod 2 = 0 then write ( ‘ Оно четное .’ ) else write ( ‘Оно нечетное.’ ) ;

end .

Бывают неполные формы условных операторов. В таком случае вложенный в if блок кода выполняется только в случая true логическом выражении заголовка. В случае false выполнение программы сразу передается в основной блок. Понятно, что ветка else в таком случае отсутствует.

Пример: если переменная имеет значение меньше нуля, то ее значение изменяется (находится модуль числа).

При необходимости выполнения нескольких операторов они должны быть заключены в операторные скобки begin — end .

Пример: программа, которая меняет значения переменных местами, только если эти значения различны.

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

Общая форма записи следующая:

case выражение of
значение1 : оператор (группа операторов);
значение2 : оператор (группа операторов);
. . . . . . . . . . . . . . . . . . . . . .
значениеN : оператор (группа операторов)
else оператор (группа операторов);
end;

Задача . Написать программу преобразования цифр в слова .

Program Number;
Var a, b, c : integer;
Begin
writeln(‘Введите цифру ‘);
readln(a);
case a of
0 : writeln (‘ноль‘);
1 : writeln (‘один‘);
2 : writeln (‘два‘);
3 : writeln (‘три‘);
4 : writeln (‘четыре‘);
5 : writeln (‘пять‘);
6 : writeln (‘шесть‘);
7 : writeln (‘семь‘);
8 : writeln (‘восемь‘);
9 : writeln (‘девять‘)
else writeln (‘Это число не является цифрой‘);
end;
End.

Лабораторная работа №2

ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ РАЗВЕТВЛЯЮЩЕЙСЯ И ЦИКЛИЧЕСКОЙ СТРУКТУРЫ

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

Задания для самостоятельной подготовки

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

— условной и безусловной передачи управления;

— вычислительного процесса разветвляющейся структуры.

2. Разработать алгоритм решения задач в соответствии с заданием.

3. Составить программу решения задачи.

4. Составить блок – схему к задаче.

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

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

формула перехода от одного основания логарифма к другомуформула перехода от одного основания логарифма к другому

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

lg ( x ) = ln ( x )/ ln (10).

Пример выполнения лабораторной работы №2а (вариант – 10)

Вариант - 10

Вариант — 10

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

1. Запишем каждое выражение в фигурных скобках на языке программирования Паскаль.

2. Значение t нам известно, t:=2.2, значение переменной x вводится с клавиатуры:
write (‘введите значение X ’); readln ( x );
3. Для объявления условия используем полую форму оператора Условного перехода:
if x <0.5 then Z := cos ( x )+ t * sqr ( sin ( x )) else begin
if x =0.5 then Z :=(1/ x )+ sqrt ( x + t ) else Z := ( exp (3* ln ( ln ( x )))+ sqr ( x ))/( sqrt ( x + t ))
end ;
4. Выведем значение Z на экран с комментариями:
writeln (‘при Х=’, х, ‘значение функции Z=’, z );

Составим программу:

program lab2a; — название программы

var x,t,Z: real; — перечисление переменных и их тип

begin — начало программы

t:=2.2; — присвоение значения

write(‘введине значение Х и нажмите ENTER’); readln(x); — ввод данных с клавиатуры

if x <0.5 then Z := cos ( x )+ t * sqr ( sin ( x )) else begin — полная форма
if x =0.5 then Z :=(1/ x )+ sqrt ( x + t ) else Z := ( exp (3* ln ( ln ( x )))+ sqr ( x ))/( sqrt ( x + t )) записи
end ; оператора условного перехода

writeln(‘при значении Х=’, x, ‘ значение функции Z=’, Z); — вывод результата

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *