Как сделать сумму в паскале
Язык паскаль онлайн
Математические операции в паскале – Pascal Математические функции для работы с числами
- Browse: Home / Самоучитель паскаль онлайн / Математические операции в паскале – Pascal Математические функции для работы с числами
Арифметические операции
Другие операции с числами
В паскале предусмотрены и многие другие операции с числами. Давайте разберем самые популярные из них.
Результат : переменной «а» присваивается значение 25.
Результат : переменной «а» присваивается значение 5.
Результат : переменной «а» присваивается значение 25.
Результат : переменной «а» присваивается значение 0.2.
Чтобы получить модуль некоторого числа используется операция abs(x).
Пример :
Результат : переменной «а» присваивается значение 8.
Это были самые важные и часто используемые операции в паскале для работы с числами ( переменными ). Найти другие вы можете на этой странице.
Выводы :
Этот раздел содержит описание математических операций, которыми можно пользоваться в выражениях на языке Паскаль. Вывести результат вычисления выражения можно такой нехитрой программе:
Конечно, результат вычисления выражения можно и записать в переменную для дальнейшего использования, и передать в другую функцию.
Не все операции и действия в этом разделе будут вам понятны. Ничего страшного — просто помните, что сюда можно вернуться, когда вам что-то понадобится.
Математические операции
В Паскале, как и в большинстве языков программирования, несколько специфически передаются основные математические операции — так математические выражения надо записывать в одну строку, а не в несколько уровней, как принято в классической математической нотации. Это достигается значительно более массовым использованием скобок, что иногда огорчает начинающих. Также всегда нужно писать знак умножения *. Кроме того, параметры функций всегда должны быть в скобках. Например:
Математическое выражение | Запись на языке Паскаль |
2+2=4 | 2+2=4 |
a*(1+sqr(e))/2 | |
(-b+sqrt(sqr(b)-4*a*c))/(2*a) | |
exp(2*x+y) | |
abs(cos(x)*sin(x)*cos(y)/tan(y)) если компилятор не поддерживает Tan. |
Базовая арифметика
Название операции | Оператор | Пример | Примечание |
Добавление | + | 2+2 (=4) | |
Вычитание | — | 18.3-11 (=7.3) | |
Умножение | * | 7*8 (=56) | |
Деление | / | 7/8 (=0.875) | Результат всегда действительного типа (real) |
Целая часть деления | div | 7 div 2 (=3) | |
Остаток от деления | mod | 7 mod 2 (=1) |
Сравнение
Все операции сравнения возвращают значение типа boolean, то есть могут использоваться в операторах ветвления и циклах, например
Название операции | Оператор | Пример | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Равно | = | 2+2=4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Не равно (?) | <> | 2+2<>5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Больше | > | 72>71.99 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Больше или Равно | >= | x*x>=0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Меньше | Функции для преобразования действительных и целых чисел Паскаль — язык программирования со статической сильной типизацией. Это означает, что компилятор не выполняет преобразований значений между типами, которые могут привести к потере информации; в частности, если подставить в конструкцию, предусматривает целое значение, действительное число, компилятор сообщит об ошибке, даже если это число имеет целое значение. Так, как мы видели выше, 13 and 11 равна 9, но выражение 13.0 and 11 вызовет сообщение компилятора об ошибке! Чтобы избежать этого, надо явно задавать преобразования действительного числа на целое с помощью следующих функций:
Логические и побитовые операцииЛогические операции используются для объединения нескольких логических условий в одну.
Логические операторы, применены к целым типов, могут использоваться, как побитовые. Чтобы получить результат побитовой операции, надо представить операнды в двоичной системе (так, как они представлены в компьютере), после чего применить соответствующую операцию в соответствующих разрядов, причем 1 означает true 0 — false. так,
Кроме того, есть еще две побитовых операции сдвига:
Алгебраические функцииCерым обозначены функции, которые не поддерживаются в Turbo Pascal
Примечание: корень степени Y из числа X можно представить как X 1 / Y, и, соответственно, как Power (X, 1 / Y) или в Turbo Pascal как Exp (Ln (X) / Y). Тригонометрические функцииФункции для работы со случайными величинамиДля имитации случайных процессов в Паскале есть генератор псевдослучайных чисел (ГПВЧ) и функции для работы с ним; такие числа достаточно непредсказуемыми для практического использования (то есть каждое последующее использование функции Random даст какой-то мере неожиданный результат), но их последовательность может быть полностью воспроизведена, если установить начальное значение ГПВЧ.
Функции для работы со сочтеными типамиДля величин сочтеных типов (все цели, буквенный, логическое и перечни) существуют также несколько удобных стандартных функций и процедур:
Приоритет операцийВо время разбора математического выражения Паскаль сначала выполняет операции с высоким приоритетом, затем с низким, все справа налево. Так, в выражении 2 + 2 * 2 сначала будет вычислено 2 * 2 = 4, а уже затем 2 + 4 = 6 — так же, как в обычной математике; в выражении 10 mod 2 * 3 сначала будет выполнено 10 mod 2 = 0, а уже потом 0 * 3 = 0! Pascal: Занятие № 5. Одномерные массивы в ПаскалеОдномерные массивы в ПаскалеОбъявление массиваМассивы в Паскале используются двух типов: одномерные и двумерные. Объявить размер можно через константу: Инициализация массиваКроме того, массив может быть сам константным, т.е. все его элементы в программе заранее определены. Описание такого массива выглядит следующим образом: const a:array[1..4] of integer = (1, 3, 2, 5); Заполнение последовательными числами: Ввод с клавиатуры: Вывод элементов массиваvar a: array[1..5] of integer; <массив из пяти элементов>i: integer; begin a[1]:=2; a[2]:=4; a[3]:=8; a[4]:=6; a[5]:=3; writeln(‘Массив A:’); for i := 1 to 5 do write(a[i]:2); <вывод элементов массива>end. Для работы с массивами чаще всего используется в Паскале цикл for с параметром, так как обычно известно, сколько элементов в массиве, и можно использовать счетчик цикла в качестве индексов элементов. В данном примере работы с одномерным массивом есть явное неудобство: присваивание значений элементам. Функция Random в PascalДиапазон в Паскале тех самых случайных чисел от a до b задается формулой: var f: array[1..10] of integer; i:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); < интервал [0,9] >write(f[i],’ ‘); end; end. Для вещественных чисел в интервале [0,1]: Числа Фибоначчи в ПаскалеНаиболее распространенным примером работы с массивом является вывод ряда чисел Фибоначчи в Паскаль. Рассмотрим его. Получили формулу элементов ряда. var i:integer; f:array[0..19]of integer; begin f[0]:=1; f[1]:=1; for i:=2 to 19 do begin f[i]:=f[i-1]+f[i-2]; writeln(f[i]) end; end. Максимальный (минимальный) элемент массиваПоиск максимального элемента по его индексу: Пример: Поиск в массивеРассмотрим сложный пример работы с одномерными массивами: Для решения поставленной задачи понадобится оператор break — выход из цикла. var f: array[1..10] of integer; flag:boolean; i,c:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); write(f[i],’ ‘); end; flag:=false; writeln(‘введите образец’); readln(c); for i:=1 to 10 do if f[i]=c then begin writeln(‘найден’); flag:=true; break; end; if flag=false then writeln(‘не найден’); end. Рассмотрим эффективное решение: Алгоритм: решение на Паскале Вариант 2. Цикл While: Поиск элемента в массиве Предлагаем посмотреть подробный видео разбор поиска элемента в массиве (эффективный алгоритм): Пример: Циклический сдвигРешение: Программа: Перестановка элементов в массивеРассмотрим, как происходит перестановка или реверс массива. Решение: Псевдокод: Программа: Выбор элементов и сохранение в другой массивРешение:
writeln(‘Выбранные элементы’); for i:=1 to count-1 do write(B[i], ‘ ‘) Сортировка элементов массиваВыполнение на Паскале: for i:=1 to N-1 do begin for j:=N-1 downto i do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; end; end; Выполнение на Паскале: for i := 1 to N-1 do begin min:= i ; for j:= i+1 to N do if A[j] i then begin c:=A[i]; A[i]:=A[min]; A[min]:=c; end; end; Рубрики:См. пузырьковая сортировка. adminИменно поэтому в коде : for j:=N-1 downto i do downto i — то есть мы доходим сначала до первого элемента, потом до второго и т.д. BronislavСмотрите. Ваш код работает. Но работает не так, как вы пишете перед этим. Он просеивает минимальный элемент с конца через весь массив до первой позиции (первого индекса если хотите). А не так как вы пишете: «При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой.» Соответственно вашему коду и вашим рисункам на второй итерации не сравнивается первый элемент (минимальный) со вторым, а не последний (который вообще не факт что максимальный) с предпоследним. Вот об чем речь. Или код меняйте или описание алгоритма перед кодом. ВладимирВ сохранении в другой массив ошибка. Надо поменять местами счётчик и команду сохранения. В массиве В нет элемента 0.
|