суббота, 21 января 2017 г.


Блок-схема

Урок 5. Математические операции, функции и процедуры в Pascal (Часть первая)

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

Процедуры — мини-программы.

Процедуры используются в случаях, когда в подпрограмме необходимо получить несколько результатов. Из картинки, расположенной ниже вы видите, как работает процедура. Входных данных может не быть вовсе, а может быть сто.
20131220-004613.jpg
Например, программист хочет в своем суперкоде между блоками выходящих значений прописывать 20 амперсандов. Чтобы облегчить себе задачу, он напишет простую подпрограмму.
  1. program superpuper;
  2. var очень много буковок;
  3. procedure ampersand;
  4. begin
  5. write('&&&&&&&&&&&&&&&&&&&&');
  6. end;
  7. begin
  8. суперсложный код;
  9. ampersand;
  10. суперсложный код;
  11. ampersand;
  12. суперсложный код;
  13. ampersand;
  14. суперсложный код;
  15. ampersand;
  16. end.

Функции в Паскале — мега переменные.

Функции отличается от процедуры тем, что после выполнения функции на ее месте в коде ставится одно число, буква, строка и т.д. Набор встроенных функций в языке Паскаль достаточно широк. Например, для того, чтобы подсчитать квадрат числа можно воспользоваться стандартной функцией sqr(x). Как вы,наверное, уже поняли sqr(x) требует лишь один фактический параметр — число.
Пример: a:=sqr(4).
Обратите внимание! Функции необходимо присваивать! Просто написав их в тексте программы, как процедуры, вы ничего не добьетесь!
Структура функции представлена на картинке ниже.
20131220-004554.jpg

Если в программу необходимо включить новую уникальную функцию, ее надо описать также, как процедуру. Более подробно о том, как делать собственные процедуры и функции, мы поговорим через 10 уроков. Ниже вы видите таблицу основных стандартных функций и процедур в Паскаль.
Математические функции
ИмяТип аргументаРезультат вычисленияПример
Abs(x)Целый или Вещ.Модуль   хAbs(-6) = 6
Sqrt(x)ВещественныйКорень из хSqrt(25)=5
Sqr(x)Целый и Вещ.Квадрат хSqr(5)=25
Power(x,a)ВещественныйЗначение хаPower(5,3)=125
Frac(x)ВещественныйДробная часть хFrac(5.67)=0.67
Sin(x)ВещественныйСинус хSin(45)=0.8509
Cos(x)ВещественныйКосинус хCos(45)=0.5253
Arctan(x)ВещественныйАрктангенс хArctan(5)=1.3734
Int(x)ВещественныйЦелая часть хInt(5.67)=5.0
Random(x)ЦелыйСлучайное число (0..х-1)Random(5)=4
Succ(x)ПорядковыйСледующийSucc(10)=11
Pred(x)ПорядковыйПредыдущийPred(‘Z’)=’Y’
Математические процедуры
Inc(x,a)ЦелыйX:=X+AInc(5)=6
Dec(x,a)ЦелыйX:=X-ADec(25,20)=5
Преобразование типов
Trunc(x)ВещественныйЦелая часть хTrunc(5.67)=5
Round(x)ВещественныйОкругление х до целогоRound(5.67)=6
Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!?
Очень странная ошибка.
Очень странная ошибка.

Операции div и mod.

Иногда нам требуется найти частное либо же остаток от деления. В такие моменты на помощь нам приходят такие операции, как div и mod. Заметим, что эти операции выполняются только над целыми числами.

Div

Для того, чтобы найти частное от деления, мы используем операцию div.
   Примеры:
  • 25 div 20 = 1;
  • 20 div 25 = 0;
  • 39 div 5 = 7;
  • 158 div 3 = 52.

Mod

Для того, чтобы найти остаток от деления, мы используем операцию mod.
    Примеры:
  • 25 mod 20 = 5;
  • 20 mod 25 = 0;
  • 39 mod 5 = 4;
  • 158 mod 3 = 2.
Чтобы окончательно понять, с чем мы имеем дело, решим следующую задачу:
Задача 1 . Найти сумму цифр двухзначного числа.
Так как эта задача очень простая, мы с вами обойдемся блок-схемой и программой.
Блок-схема
Блок-схема
  1. program Sumoftwo;
  2. var Number,Num1,Num2,Sum: integer;
  3. begin
  4. write('Введите двухзначное число: ');
  5. read(Number); { Возьмем число 25 }
  6. Num1 := Number div 10; { 25 div 10 = 2 }
  7. Num2 := Number mod 10; { 25 mod 10 = 5 }
  8. Sum := Num1 + Num2; { 2 + 5 = 7 }
  9. write('Сумма двух чисел -- ',Sum);
  10. end.
Задача 2 . Найти сумму цифр трехзначного числа.
Чуть усложненная версия предыдущей задачи. Самая большая сложность — вторая цифра.
Блок-схема
Приоритет div и mod больше, чем приоритете + и -. Поэтому в данной программе можно обойтись без скобок.
  1. program Sumoftree;
  2. var Number,Sum: integer;
  3. begin
  4. write('Введите трехзначное число: ');
  5. read(Number); { Возьмем число 255 }
  6. Sum := Number div 100 + Number mod 10 + Number div 10 mod 10; { 255 div 100 + 255 mod 10 + 255 div 10 mod 10 = 12 }
  7. write('Сумма трёх чисел -- ',Sum);
  8. end.
Вот и всё. На следующем уроке мы с вами начнём изучать особенности PascalABC.Net.

Комментариев нет:

Отправить комментарий