Урок 5. Математические операции, функции и процедуры в Pascal (Часть первая)
Так как в воскресенье на сайте открывается новая рубрика — решение задач, мы с вами должны по-быстрому изучить основную часть математических операций, функций и процедур.
Давайте разберемся, что такое функция и процедура. Это подпрограмма — часть программы, выполняющая определенный алгоритм и допускающая обращение к ней из различных частей общей программы. В чем же разница между процедурой и функцией?
Процедуры — мини-программы.
Процедуры используются в случаях, когда в подпрограмме необходимо получить несколько результатов. Из картинки, расположенной ниже вы видите, как работает процедура. Входных данных может не быть вовсе, а может быть сто.
Например, программист хочет в своем суперкоде между блоками выходящих значений прописывать 20 амперсандов. Чтобы облегчить себе задачу, он напишет простую подпрограмму.
Функции в Паскале — мега переменные.
Функции отличается от процедуры тем, что после выполнения функции на ее месте в коде ставится одно число, буква, строка и т.д. Набор встроенных функций в языке Паскаль достаточно широк. Например, для того, чтобы подсчитать квадрат числа можно воспользоваться стандартной функцией sqr(x). Как вы, наверное, уже поняли sqr(x) требует лишь один фактический параметр — число.
Обратите внимание! Функции необходимо присваивать! Просто написав их в тексте программы, как процедуры, вы ничего не добьетесь!
Структура функции представлена на картинке ниже.
Если в программу необходимо включить новую уникальную функцию, ее надо описать также, как процедуру. Более подробно о том, как делать собственные процедуры и функции, мы поговорим через 10 уроков. Ниже вы видите таблицу основных стандартных функций и процедур в Паскаль.
Очень странная ошибка.
Операции div и mod.
Иногда нам требуется найти частное либо же остаток от деления. В такие моменты на помощь нам приходят такие операции, как div и mod. Заметим, что эти операции выполняются только над целыми числами.
Для того, чтобы найти частное от деления, мы используем операцию div.
Для того, чтобы найти остаток от деления, мы используем операцию mod.
Чтобы окончательно понять, с чем мы имеем дело, решим следующую задачу:
Задача 1. Найти сумму цифр двухзначного числа.
Так как эта задача очень простая, мы с вами обойдемся блок-схемой и программой.
Задача 2. Найти сумму цифр трехзначного числа.
Чуть усложненная версия предыдущей задачи. Самая большая сложность — вторая цифра.
Pascal-Паскаль
Программирование. Стандартные функции 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 | Отбрасывание дробной части числа |
Порядок вычислений в выражениях следующий:
Хотя нет ограничений на сложность выражений, однако выражения, содержащие более 7 операндов, трудны для чтения и понимания и поэтому такие выражения не рекомендуется использовать.
Выражение на Паскале: exp(3*ln(x)/2)-7*x+sin(x+2)/cos(x+2)
Операторы действия
Пример оператора присваивания
Оператор присваивания, несмотря на кажущуюся простоту, имеет очень важное алгоритмическое значение.
Удобно считать, что выполнение присваивания переменной некоторого значения означает помещение этого значения в выделенный для переменной ящик. При этом каждый запоминающий ящик обладает следующими свойствами.
Ввод и вывод данных
Пример ввода данных с клавиатуры
read(a,b,c);
readln(a,b,c);
Вывод данных на экран производится с помощью стандартной процедуры write( ) или ее разновидности writeln( ).
Список вывода может содержать константы, переменные, выражения, формат вывода. Выражения в списке вывода разделяются запятыми.
Пример вывода данных на экран
write(a,b,c);
writeln(a,b,c);
Окончание ln в имени процедуры означает, что курсор автоматически будет переведен в начало следующей строки экрана.
Программирование
Исходники Pascal (127)
Справочник
Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту
Выражения Паскаль
Какую структуру имеют выражения Паскаль? Выражения Паскаль задают определенное правило, по которому вычисляется некоторое значение. В состав выражений входят:
Математические операции Паскаль:
Приведем стандартные математические операции в Паскале:
+ — сложение (3+58=61)
— — вычитание (4-42=-38)
* — умножение (8*12=96)
/ — деление (46/23=2)
Однако кроме этих стандартных операций в Паскале предусмотрены еще 2 математические операции:
div — деление нацело (10/3=3)
mod — деление с остатком (10/3=1)
Логические операции Паскаль:
В языке Паскаль присутствуют еще и логические операции над аргументами логического типа, например, у нас даны две логические переменные A и B. В таблице истинности запишем результат выполнения тех или иных логических операций:
Под not понимается логическое отрицание («НЕ»), and означает логическое умножение («И»), or подразумевает логическое сложение («ИЛИ»), xor раскрывает логическое «исключающее ИЛИ».
Операции отношения Паскаль:
Теперь поговорим об операциях отношения в Турбо Паскаль:
Уникальность операций отношения состоит в том, что их можно выполнять не только над числами, но и над строками, символами, множителями и указателями.
Приоритет операций Паскаль:
Как в математике, так и в программировании присутствует приоритет операций. В Турбо Паскале порядок вычисления выражения фиксируется по старшинству содержащихся в нем операций:
В математике тем не менее возможно переопределить порядок выполнения операций при помощи скобок. Турбо Паскаль — не исключение:
Математические функции Паскаль:
Приведем основные математические функции, которые разработчики Турбо Паскаль предусмотрели и вставили в системную библиотеку:
abs(n) — абсолютное значение числа n,
sin(n) — синус числа n, где n — угол в радианах,
cos(n) — косинус числа n, где n — угол в радианах,
В Турбо Паскале не предусмотрены функций тангенса и котангенса. Чтобы их вычислить, используют выражения sin(x)/cos(x), cos(x)/sin(x) соответственно.
atan(n) — арктангенс числа n,
exp(n) — число e = 2,718 в степени n,
ln(n) — натуральный логарифм числа n,
pi — число Пи = 3,14,
sqr(n) — квадрат числа n.
В Турбо Паскале нет функции, чтобы возвести число в произвольную степень, поэтому, как и в математике, можно либо многократно умножать число на себя для возведения в целочисленную степень, либо воспользоваться функциями экспоненты и натурального логарифма, чтоб возвести число как в целочисленную, так и в вещественную степень (более эффективный способ):
2^(1.33) = exp(1.33*ln(2))
sqrt(n) — квадратный корень из числа n,
trunc(n) — число, равное целой части числа n (отбрасывается дробная часть числа n, результатом выполнения будет число с типом longint),
frac(n) — число, равное дробной части числа n,
int(n) — число, равное целой части числа n (в результате получается число с типом real),
round(n) — округление числа n (возвращаемое значение будет иметь тип longint),
random(n) — генератор псевдослучайных чисел в диапазоне 0 до n (если аргумент отсутствует, т.е. просто random, то в результате выполнения этой функции появится вещественное число от 0 до 1).
program chislo;
var j: integer;
begin randomize;
for j:=1 to 7 do
writeln(random(26)-10);
inc(m,n) — увеличение значения числа m на n (если число n не указано, то число m увеличивается на единицу),
dec(m,n) — уменьшение значения числа m на n (если число n не указано, то число m уменьшается на единицу).
Как написать формулу в паскале
3. Подберите такие значения x, y, z, чтобы значение а= 2.000
4. Что изменится и почему, если в программе заменить команду Writeln(‘a=’,a:7:3); на команду Writeln(a);?
5. Как распечатать только целую часть результата?
Этапы выполнения задания (b).
I Определение исходных данных: переменные x, y.
II Определение результатов: переменная b.
III Алгоритм решения задачи.
1. Ввод исходных данных
2. Вычисление значения выражения
3. Вывод результата.
IV Описание переменных:
Все переменные, определенные для решения задачи, имеют тип real. (Переменные x, y могут быть и целого типа, а переменная b только вещественного типа, поскольку в выражении используется функция вычисления квадратного корня.)
Write(‘введите значение x=’);
Write(‘введите значение y=’);
Можешь загрузить! Пример 3_б
VI Тестирование программы:
1. Запустите программу и введите значения
Проверьте, результат должен быть следующим:
Проверить правильность вычислений можно на калькуляторе.
2. Заполните таблицу
3. Подберите такие значения x, y, чтобы значение b= 2.000.
Проверка знаний Тест: Построение простейших арифметических выражений
Задачи для самостоятельного решения
Составить программу вычисления значения выражения:
а) ; б) ; в) .
Перевести из линейной записи в обычную следующие выражения :
Примечание. В программах на Паскале дробное число записывается с помощью точки. Например, 12.6; 3.6; 4.7.
Составить программу вычисления значения функции при любом значении переменных:
Составить программу вычисления значения функции:
Проверка знаний Тест: Арифметические выражения
Примеры решения задач
1. Составить программу вычисления значения выражения:
.
program Prim_3_1;
var a,b,c, d : r eal ;
begin
writeln (‘Введите 3 численных значения через пробел и нажмите :’);
readln (a,b,c );
d := (4.2/a-3.2*b)/(c/7+8) ;
writeln (‘ d =’, d );
Можешь загрузить! Пример 3_1
.
3. Составить программу вычисления значения функции при любом значении переменных:
a) ;
b) .
Можешь загрузить! Пример 3_3_а
Можешь загрузить! Пример 3_3_б
4. Составить программу вычисления значения функции:
program Prim_ 3_4 ;
var t,g : r eal ;
begin
writeln (‘Введите з начени я t и нажмите :’);
readln ( t );
g := abs(2.4*t-100)+abs(t-2.2)-sqrt(sqr(t)/(18+abs(t))) ;
writeln (‘ g =’, g );
Можешь загрузить! Пример 3_4
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 (только диапазон значений здесь значительно больше).
Примеры того, как описываются (объявляются) переменные в Паскале:
Pascal | PascalABC.NET | ||||||||||||||||||
Pascal | PascalABC.NET | ||||||||||||||||
ДЕЙСТВИЕ | РЕЗУЛЬТАТ | СМЫСЛ |
---|---|---|
2 + 3 | 5 | плюс |
4 — 1 | 3 | минус |
2 * 3 | 6 | умножить |
17 div 5 | 3 | целочисленное деление |
17 mod 5 | 2 | остаток от целочисленного деления |
Порядок выполнения операций
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:
Более сложное использование процедуры inc:
Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.
Пример использования функции odd:
begin WriteLn(Odd(5));
Пример использования процедуры sqr в Pascal:
var x:integer; begin x:=3; writeln(sqr(x)); <ответ 9>end.
Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:
Пример использования процедуры sqrt в Pascal:
var x:integer; begin x:=9; writeln(sqrt(x)); <ответ 3>end.
Теперь вы знаете какие однокоренные слова подходят к слову Как написать формулу в паскале, а так же какой у него корень, приставка, суффикс и окончание. Вы можете дополнить список однокоренных слов к слову "Как написать формулу в паскале", предложив свой вариант в комментариях ниже, а также выразить свое несогласие проведенным с морфемным разбором.