Паскаль: произведение расчетов, стандартные функции, звук

Паскаль: произведение расчетов, стандартные функции, звук

Мы представляем вам второй урок по изучению распространённого языка программирования Pascal. В уроке рассмотрены простейшие операторы и стандартные функции языка, а также представлена программа, воспроизводящая мелодию из кинофильма «Бумер», используя PC Speaker.

Pascal: произведение расчетов, стандартные функции, звук.

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

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

Основной акцент сегодня сделаем на произведении расчетов в Pascal’e. Для начала изучим простейшие: сложение, вычитание, умножение, сложение.

Сложение можно выполнять с данными типа real…

И integer.

Можно также комбинировать типы данных. То есть присваивать переменной типа real значение суммы переменных разных типов (integer и real) или просто значение переменной типа integer, но главное помнить, что переменной типа integer присвоить значение переменной типа real не получится. Такой маленький нюанс называется автоматическим (или неявным) преобразованием данных. Существует также явное преобразование данных. Работает только для типов integer и char (символьный тип данных, предназначенный для хранения одного символа в определённой кодировке). Для явного преобразования предусмотрены несколько функций: для преобразования данных типа char в целое число предназначена функция ord, обратное преобразование integer в char осуществляет функция chr. Более подробно рассматривать преобразования и символьный тип данных мы в рамках этого урока не будем, чтобы не отвлекаться от основной темы занятия.

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

Округлять можно до целых, десятых, сотых и т. д., пока позволяет выбранный формат. Округление до целых можно произвести при помощи функции ROUND (X).

Вычитание и умножение происходит абсолютно идентичным способом. Для деления рекомендуется использовать тип Real. Собственно говоря, простейшие арифметические действия в Pasca’e мы рассмотрели. Теперь пройдемся по более сложным.

Для начала разберем целочисленное деление и то, каким образом берется остаток от деления. Производятся эти 2 действия только с данными типа integer.

Целочисленное деление div. В качестве примера возьмем числа, которые нацело разделить невозможно, например 8 и 3. При делении 8 на 3 получается 2 (6), а целочисленное деление берет только целую часть. Выглядит это таким образом:

Когда используем операцию mod, вычисляется остаток от деления. Возьмем те же числа (8 и 3). При делении 8 на 3 получается 2 и 6 в периоде. Или 2 и 2 в остатке. Для того, чтобы вычислить этот самый остаток, и используется операция mod.

Далее мы рассмотрим функции, которые используются для выполнения расчетов. Для начала вспомним определение функции. Функция – процедура, возвращающая значение. Имеет имя и может иметь параметры. Также можно добавить, что результатом работы функции будет выполнение некоторых действий над параметром.

Заранее скажу, что определенной логики подачи именно этого материала не наблюдается. Вопросы типа «какая функция более полезна при произведении расчетов» неуместны по одной простой причине: каждая функция выполняет определенное действие и используется в различных ситуациях. Нельзя сравнивать несравнимое.

Итак, начнем. Первая функция, которую мы рассмотрим – ABS (x) – функция вычисления абсолютной величины (модуля) числа. Работает с числами типов real и integer. Будет полезна при выполнении сложных расчетов.

Получаем |e|=20 и |a|=4.6, что, несомненно, верно.

Функция вычисления угла, тангенс которого задан в радианах – ArcTan (x). Работает с числами типа real. Будет полезна при проведении сложных расчетов. Для примера возьмем простейшую ситуацию. Необходимо вычислить угол, тангенс которого равен 1. Всем известно, что это угол 45 градусов. В программе это будет выглядеть таким образом.

Sin(X), Cos (X) – нетрудно догадаться, что это функции вычисления синуса и косинуса угла Х. Х задан в радианах. Работает с числами типа real. Применяется как и арктангенс.

Ехр (х) – вычисление экспоненты х, то есть значения е в степени х. Е – основание натурального логарифма и равно 2,718282.

Ln (x) – вычисление натурального логарифма. Основание натурального логарифма смотри выше.

Если я знаю число Пи только до седьмого знака, то Паскаль знает его полностью. Возвращение значения Пи происходит благодаря функции Pi. Например, X:=Pi; Думаю, понятно, что Х в данном случае должен быть типа Real. Функция будет очень полезна при проведении сложных расчетов, требующих большой точности вычислений.

Возведение в квадрат – SQR (X). Х может быть любого типа, главное, чтобы тип совпадал (за исключением случая комбинирования типов, который был рассмотрен выше) с типом переменной, которая принимает значение примера.

Извлечение квадратного корня – SQRT (X). Условия применения аналогичны возведению в квадрат.

При помощи функции INT (X) можно взять целую часть от дробного числа (излишне говорить, что Х вещественного типа). Дробную же часть можно взять, используя функцию FRAC (X). Требования те же. Trunc - эта функция усекает значение вещественного типа к значению целочисленного типа.

Возникает весьма закономерный вопрос: а как брать корень n-ной степени и возводить в n-ую степень? Можно использовать циклы (их мы изучим позднее, в рамках отдельной темы), а для вычисления корня n-ной степени есть сложная формула, которая выглядит примерно следующим образом: exp (ln(x)/y). Где х – число, которое необходимо возвести в степень у. Возвести число в n-ую степень тоже можно, использовав сложную формулу: exp (n*Ln(c)), гдe n – степень, а с – число, которое мы возводим в эту степень.

В некоторых случаях требуется ввести большое количество различных чисел для выполнения определенных действий. Можно делать это вручную, а можно использовать функцию случайных чисел Random (x), где х – предел, из которого будет случайным образом выбираться число (0..х-1). В начале программы должна быть прописана строчка Randomize. Ее отсутствие несколько испортит программу - случайным будет только первое число, а остальные будут его дублировать, а с прописанным Randomize'м каждый раз числа будут разными, что не является недостатком.

В завершении рассмотрения функций небольшая сводная таблица по ним.

Произведение расчетов в Паскале и некоторые основные функции мы рассмотрели. Урок подходит к своему логическому завершению. Один крайне неожиданный материал я еще расскажу-таки. Это управление звуком.

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

Sound (x) – включает внутренний динамик с частотой Х. Х – целого типа.

Delay (N) – задержка на N миллисекунд. N целого типа.

NoSound – выключение динамика (прекращение звука).

Значения Х для нот: До 262, ре 294, ми 330, фа 349, соль 392, ля 440, си 494. Для перехода на следующую октаву необходимо умножить значение Х на два, чтобы перейти обратно, соответственно, разделить.

Если покопаться в Интернете, можно найти много музыкальных произведений, разобранных таким образом, что можно «забивать» в программу и воспроизводить. Вот, например, код, как утверждает автор «мелодии из «Бумера», немного различается с оригиналом, но в целом играть можно.

Листинг : Описание program example; uses crt; begin delay(60000); delay(60000); sound(3100); delay(39000); sound(3900); delay(60000); delay(34000); nosound; delay(60000); delay(40000); sound(3100); delay(46000); sound(2600); delay(60000); delay(30000); nosound; delay(60000); delay(20000); sound(3100); delay(40000); sound(2600); delay(30000); sound(3100); delay(40000); sound(2600); delay(30000); sound(3100); delay(40000); sound(2600); delay(30000); sound(3100); delay(40000); sound(2600); delay(30000); sound(3100); delay(40000); sound(3900); delay(60000); delay(30000); nosound; end.


Карта сайта


Информационный сайт Webavtocat.ru