Как сделать сумму в паскале

Язык паскаль онлайн

Математические операции в паскале – Pascal Математические функции для работы с числами

    Browse: Home / Самоучитель паскаль онлайн / Математические операции в паскале – Pascal Математические функции для работы с числами

Как сделать сумму в паскале

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

Другие операции с числами

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

Результат : переменной «а» присваивается значение 25.

Результат : переменной «а» присваивается значение 5.

Результат : переменной «а» присваивается значение 25.

Результат : переменной «а» присваивается значение 0.2.

Чтобы получить модуль некоторого числа используется операция abs(x).
Пример :

Результат : переменной «а» присваивается значение 8.

Это были самые важные и часто используемые операции в паскале для работы с числами ( переменными ). Найти другие вы можете на этой странице.

Выводы :

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

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

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

Математические операции

В Паскале, как и в большинстве языков программирования, несколько специфически передаются основные математические операции — так математические выражения надо записывать в одну строку, а не в несколько уровней, как принято в классической математической нотации. Это достигается значительно более массовым использованием скобок, что иногда огорчает начинающих. Также всегда нужно писать знак умножения *. Кроме того, параметры функций всегда должны быть в скобках. Например:

Математическое выражениеЗапись на языке Паскаль
2+2=42+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)
Целая часть деленияdiv7 div 2 (=3)
Остаток от деленияmod7 mod 2 (=1)

Сравнение

Все операции сравнения возвращают значение типа boolean, то есть могут использоваться в операторах ветвления и циклах, например

Название операцииОператорПример
Равно=2+2=4
Не равно (?)<>2+2<>5
Больше>72>71.99
Больше или Равно>=x*x>=0
МеньшеФункции для преобразования действительных и целых чисел

Паскаль — язык программирования со статической сильной типизацией. Это означает, что компилятор не выполняет преобразований значений между типами, которые могут привести к потере информации; в частности, если подставить в конструкцию, предусматривает целое значение, действительное число, компилятор сообщит об ошибке, даже если это число имеет целое значение. Так, как мы видели выше, 13 and 11 равна 9, но выражение 13.0 and 11 вызовет сообщение компилятора об ошибке! Чтобы избежать этого, надо явно задавать преобразования действительного числа на целое с помощью следующих функций:

Название функцииописаниепример
Round(X)Возвращает целое значение, ближайшее к XRound(1.7)=2, Round(-3.1)=-3
Int(X),
Trunc(X)
Возвращает целую часть XInt(1.8)=1, Trunc(-11.3)=-11
Floor(X)Возвращает наибольшее целое значение, не превышает XFloor(1.7)=1, Floor(-3.1)=-4
Ceil(X)Возвращает наименьшее целое значение, не менее от XCeil(1.7)=2, Ceol(-3.1)=-3

Логические и побитовые операции

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

Название операцииоператорпримерописание
Логическое И, and, логическое умножениеand(2+3=5) and (0>-1)Истинное, если оба операнда истинны
Логическое ИЛИ, or, логическое сложениеor(2+2=5) or (1=1)Истинное, если хотя бы один из операндов истинный
Логическое исключающее ИЛИ, eXclusive orxor(2+2=5) xor (1=1)Истинное, если ровно один из операндов истинный
Отрицание, логическое НЕ, notnotnot (2+2=5)Истинное, если операнд ложный

Логические операторы, применены к целым типов, могут использоваться, как побитовые. Чтобы получить результат побитовой операции, надо представить операнды в двоичной системе (так, как они представлены в компьютере), после чего применить соответствующую операцию в соответствующих разрядов, причем 1 означает true 0 — false. так,

13 в двоичной системе будет111
11 в двоичной системе будет111
9 в двоичной системе будет11

Кроме того, есть еще две побитовых операции сдвига:

Название операцииоператорпримерописание
сдвиг вправоshr14 shr 2 (=3)Сдвигает двоичные разряды первого операнда справа на второй операнд разрядов;эквивалент целой части деления на степень 2
смещение слеваshl7 shl 3 (=56)Сдвигает двоичные разряды первого операнда слева на второй операнд разрядов;эквивалент умножению на степень 2

Алгебраические функции

Cерым обозначены функции, которые не поддерживаются в Turbo Pascal

Название функцииописаниеЗаменитель (для Turbo Pascal)
PiВозвращает значение числа <\ displaystyle \ pi

> Как сделать сумму в паскале(+3,141592653589793238462643383279 … с точностью, определенным типом real)

Abs(X)Абсолютное значение (модуль) X
Sign(X)Знак числа X: 1, если X отрицательный, 1, если положительный 0, если X = 0
Exp(X)Экспонента X (e X)
Ln(X)Натуральный логарифм X
Log2(X)Логарифм X по основанию 2Ln(X)/Ln(2)
Log10(X)Логарифм X по основанию 10Ln(X)/Ln(10)
LogN(X,Y)Логарифм Y по основанию XLn(Y)/Ln(X)
Power(X,Y)Степень X YExp(Y*Ln(X))
Sqrt(X)Корень квадратный из X
Sqr(X)квадрат X
Max(X,Y)Более из значений X и Y
Min(X,Y)Меньше из значений X и Y

Примечание: корень степени Y из числа X можно представить как X 1 / Y, и, соответственно, как Power (X, 1 / Y) или в Turbo Pascal как Exp (Ln (X) / Y).

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

Функции для работы со случайными величинами

Для имитации случайных процессов в Паскале есть генератор псевдослучайных чисел (ГПВЧ) и функции для работы с ним; такие числа достаточно непредсказуемыми для практического использования (то есть каждое последующее использование функции Random даст какой-то мере неожиданный результат), но их последовательность может быть полностью воспроизведена, если установить начальное значение ГПВЧ.

Название функцииописаниеЗаменитель (для Turbo Pascal)
RandomizeУстанавливает начальное значение ГПВЧ равным текущему значению часов
Randomize (X)Устанавливает начальное значение ГПВЧ равным X
RandomВозвращает псевдослучайное действительное число от 0 (включительно) до 1 (без включительно)
Random (X)Возвращает псевдослучайное целое число от 0 до X-1
Random (X, Y)Возвращает псевдослучайное целое число от X до YX + Random (Y-X + 1)

Функции для работы со сочтеными типами

Для величин сочтеных типов (все цели, буквенный, логическое и перечни) существуют также несколько удобных стандартных функций и процедур:

Название функцииописание
Succ (X)Возвращает значение, идет после X (для целых — X + 1, для буквенного — символ с последующим значением, для перечисления — следующее значение: так, Succ ( ‘A’) возвращает ‘B’
Pred (X)Возвращает, предшествующий X (для целых — X-1, для буквенного — символ с предыдущим значением, для перечисления — предварительное значение: так, Pred ( ‘A’) возвращает ‘@’
Inc (X)Увеличивает значение X на 1, эквивалент X = Succ (X)
Inc (X, N)Увеличивает значение X на N, эквивалент N приложений Inc (X)
Dec (X)Уменьшает значение X на 1, эквивалент X = Pred (X)
Dec (X, N)Уменьшает значение X на N, эквивалент N применений Dec (X)
Ord (X)Возвращает X (для нечисловых типов)
Odd (X)Проверяет X на нечетность, true, если X нечетный или false, если X имеет четное значение

Приоритет операций

Во время разбора математического выражения Паскаль сначала выполняет операции с высоким приоритетом, затем с низким, все справа налево. Так, в выражении 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 — выход из цикла.
Решение Вариант 1. Цикл for:

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:

Как сделать сумму в паскале

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

Предлагаем посмотреть подробный видео разбор поиска элемента в массиве (эффективный алгоритм):

Пример:

Циклический сдвиг

Решение:

Программа:
Как сделать сумму в паскале

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

Рассмотрим, как происходит перестановка или реверс массива.

Решение:

Псевдокод:
Как сделать сумму в паскале

Программа:
Как сделать сумму в паскале

Выбор элементов и сохранение в другой массив

Решение:

Как сделать сумму в паскале
Вывод массива B:

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.

Источник

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

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