Языки программирования

Языки программирования

Современные компьютеры не настолько совершенны, чтобы понимать программы, записанные на каком-либо разговорном языке – русском, английском,… Язык программирования Паскаль разработан в 1968 – 1971 гг. Николасом Виртом,… Для повышения качества и скорости разработки программ в середине 80-х гг. была создана система программирования Турбо…

Среда программирования Турбо Паскаль

Для выполнения каждого этапа применяются специальные средства: · для ввода и редактирования текста используется редактор текстов; · для трансляции программы – компилятор;

Элементы окна

Главное меню предназначено для выбора режима работы системы: ввод программы, компиляция, отладка, и так далее.

Полоса заголовков содержит имя файла, номер окна, кнопку масштабирования и закрывающую кнопку.

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

Статусная строка отображается в нижней части экрана и выполняет следующие функции:

· напоминает назначение основных функциональных клавиш в текущем режиме работы системы;

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

· содержит информацию о том, какая функция выполняется. Например, при компиляции программы, в статусной строке выводится сообщение: «Compile source file»;

· предлагает краткие советы по выбранной команде меню или элементам окна диалога.

Работа с главным меню в Турбо Паскаль

Меню File предназначено для выбора режима работы с файлами: · открытие новой активной рабочей области (New); · открытие файла с заданным именем (Open);

Работа с окнами в Турбо Паскаль

Активное окно – это окно, с которым вы в настоящий момент времени работаете. Любая команда, которую вы выбрали, или текст, который вы набрали,… Активное окно обрамлено двойной рамкой. Оно имеет закрывающую кнопку, кнопку… Быстрый способ управления окнами выполняется клавишами, показанными в таблице 1.

Компиляция и выполнение программы

Часто по результатам компиляции на экран выводится сообщение о наличии ошибки. Курсор при этом находится в строке, содержащей ошибку. Наиболее часто… Unknown identifier (неизвестный идентификатор); ¢;¢ expected (ожидается ¢;¢);

Вопросы и задания

1. Что такое языки программирования?

2. Язык программирования Паскаль, его особенности.

3. Зачем нужны трансляторы? Что такое компилятор, чем он отличается от интерпретатора?

4. Каковы возможности и в чем преимущество интегрированной среды программирования?

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

6. Опишите значение информации в статусной строке окна редактирования интегрированной среды программирования:

F1 Help F2 Save F3 Open Alt+F9 Compile F9 Make Alt+F10 Local menu

7. В чем отличие пункта Run от пункта Compile главного меню интегрированной среды программирования?

8. Как посмотреть результаты работы программы?

9. Каково назначение информационно - справочной системы интегрированной среды программирования? Почему ее называют контекстно-ориентированной? Как осуществляется управление системой помощи?

Основные понятия языка

Алфавит языка Турбо Паскаль

Каждый язык программирования, так же как и любой естественный язык, имеет свой алфавит, словарь и синтаксис. Основой языка Паскаль является алфавит – конечный набор знаков, который… · прописные и строчные буквы латинского алфавита;

Слова

Из отдельных символов языка образуются слова, имеющие определенный смысл. Слова в тексте программы разделяются пробелами и другими специальными символами. Если между словами стоит какой-нибудь разделитель, например скобка, знак плюс, двоеточие и другие, то пробел можно ставить до и после разделителя, но можно и не ставить. Допускается между словами ставить несколько пробелов. Внутри слов пробелы недопустимы.

В зависимости от назначения различают зарезервированныеслова и идентификаторы.

Зарезервированное (служебное, ключевое) – это слово, которое в языке Паскаль имеет определенное смысловое значение. Их используют только в том значении, которое заранее установлено в языке. Различие между словами, записанными прописными и строчными буквами в языке Паскаль не делается. Таким образом, слова

Program program program

будут обозначать одно и то же зарезервированное слово. Некоторые зарезервированные слова языка Паскаль приведены в таблице 3.

Таблица 3. Зарезервированные слова языка Турбо Паскаль.

слово описание слово описание
and логическое И mod остаток от деления
array массив not логическое НЕ
begin начало блока or логическое ИЛИ
case вариант procedure процедура
const константа program программа
div деление нацело repeat повторять
goto переход на string строка
do выполнять then то
downto уменьшить до to увеличивая
else иначе type тип
end конец блока unit модуль
for для until до
function функция uses использовать
if если var переменная
label метка while пока

Идентификаторы

Для обозначения различных объектов программы в языке программирования используются имена – идентификаторы (identification- установление соответствия объекта некоторому набору символов).

Идентификатором является последовательность букв, цифр и знаков подчеркивания, которая начинается с буквы или символа подчеркивания и не содержит пробелов

Как и зарезервированные слова, идентификаторы безразличны к регистру клавиатуры.

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

Стандартные идентификаторы заложены в языке для обозначения стандартных объектов.

Например: integer, SQRT, Read, Writeln.

В этом примере стандартный идентификатор SQRT вызывает функцию, вычисляющую квадратный корень из заданной величины. Read – вызывает процедуру, организующую ввод данных в оперативную память. Writeln - вызывает процедуру, организующую вывод данных.

Для обозначения объектов, с которыми работает программист, применяются идентификаторы пользователя.

При этом идентификаторы в программе должны быть уникальными, т.е. нельзя использовать в программе один идентификатор для обозначения более чем одной величины. Если это требование не соблюдается, то при компиляции на экран выведется сообщение: ”Error 4: Duplicate identifier” и указывается дубликат идентификатора.

Ниже приведены примеры правильных и неправильных идентификаторов.

Правильные идентификаторы MyVariable My_Variable _Stop Lab_12 _1_2_3

 

Неправильные идентификаторы MyVariable# -содержит недопустимый символ # My-Variable -содержит недопустимый символ - Сумма– содержит символы русского языка 1_2_3 – начинается с цифры VAR – зарезервированное слово языка

Комментарии

Комментарий служит для пояснения программы или отдельных ее частей. Наличие комментариев делает программу более понятной и удобной для чтения.

Комментарий языка Паскаль – это последовательность символов, ограниченная фигурными скобками или парами символов: «(*» -слева и «*)»- справа.

Примеры комментариев:

{Определение длины окружности}

или

(*Определение длины окружности*)

В ограничителях «(*…*)» пробелы между скобкой и звездочкой запрещены.

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

Вопросы и задания

1. На какие группы можно разделить символы, используемые в языке Паскаль?

2. Что такое «служебное слово»?

3. Для чего предназначен идентификатор и как он записывается?

4. Что является элементами данных?

5. Укажите буквы, символы, составные символы:

^, Y, <>, +, *, R, k, $, ! ы.

6. Укажите неправильные идентификаторы:

а) Center б) Month-Week в) _Year

г) Monday&Sunday д) This_a_Bad_Identifier е) 7Color

ж) _3 з) #5 и) _

7. Укажите идентификаторы, которые проще воспринимаются при чтении, объясните почему:

klass1; klass_1; summadohoda;

SummaDohoda; nomerdoma; Nomer_Doma

Структура программ

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

Program имя программы;

раздел описаний

Begin

раздел операторов

End.


Заголовок содержит служебное слово Program и имя программы, задаваемое программистом. Заканчивается заголовок символом «;» (точка с запятой). Заголовок программы в языке Паскаль не обязателен, однако, если он все же присутствует в программе, то должен быть записан синтаксически корректно.

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

Следует заметить, что не все перечисленные объявления обязательны в каждой программе. В простых программах могут потребоваться, например, только объявление констант и переменных. После каждого описания ставится символ «;» (точка с запятой).

Раздел операторов заключается в операторные скобки Begin… End, при этом после End ставится точка. В разделе операторов записывается последовательность исполняемых операторов. Каждый оператор выражает действие, которое необходимо выполнить. Исполняемые операторы отделяются друг от друга символом «;».

Программа на языке Паскаль состоит из последовательности строк. Максимальная длина строки программы – 127 символов. Она может занимать несколько экранных строк или, наоборот, в одной экранной строке может быть несколько строк программы.

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

Слова Program, Begin, End записывают с одной позиции строки (друг под другом). По отношению к ним описания и операторы сдвигаются вправо. Желательно сдвиг делать на одинаковое число позиций от края или по отношению к предыдущему сдвигу.

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

Структура программы на языке Паскаль

Programимя; uses ...; label ...; const ...; type ...;; var ...;; procedure < имя>; <тело процедуры>; function < имя>; <тело функции>; Begin <операторы> End. заголовок программы список подключаемых модулей описания меток описания констант описания типов описания переменных описания процедур описания функций   разделоператоров

Вопросы и задания

1. Каковы составные части программы, записанной на языке Паскаль?

2. Как оформляется заголовок программы? Является ли обязательным заголовок программы?

3. Для чего предназначен раздел описаний?

4. Какой из разделов обязателен в программе?

5. В каком виде оформляются комментарии?

6. Как описываются константы обозначенные именем?

7. Как описываются переменные, используемые в программе?


8. Где ошибки в следующей программе?

а) program Ошибки1; begin Summa:=6+8; end; б) Program Ошибки2; { программа с ошибками} Begin var X:integer; X:=5*3; Write(X); End.

9. Где ошибка в следующей программе?

а)

Program Kvadr;

Begin

writeln(‘Введите значение X’);

writeln(‘X в квадрате=’, X*X);

End.

var X : integer;

б)

Program Kvadr;

var X, Y, Сумма : integer;

Begin

writeln(‘Введите значение X’);

Readln(X);

writeln(‘Введите значение Y’);

Readln(Y);

Сумма := X + Y;

Writeln (Сумма);

End.

Элементы данных.

Константами называются элементы данных, значения которых установлены в описательной части программы и в процессе выполнения программы не изменяются.… Формат: const < идентификатор> = <значение константы>;

Типы данных

1) возможные значения констант, переменных, функций, выражений, принадлежащих к этому типу; 2) форму представления; 3) операции, которые могут выполняться над ними.

Вопросы и задания

1. В чем отличие данных вещественного и целого типов?

2. Какой тип результата имеют операции деления?

3. Укажите «неправильные» числа:

а) –5148е+10 б) 1,12 в) е7

г) 0.2 д) 5. е) .4

4. Опишите переменные, необходимые для вычисления значения функции y = x2.

5. Опишите переменные, необходимые для пересчета веса из фунтов в килограммы.

6. Опишите переменные, необходимые для вычисления объема параллелепипеда.

7. Опишите величины, необходимые для вычисления площади круга.

8. Опишите величины, необходимые для вычисления кольца.

9. Опишите величины, необходимые для вычисления объема и площади поверхности цилиндра.

10. Опишите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей, карандашей и линейки.

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

12. Заданы описания:

Var i, j :Integer; x, y :real;

Какие из следующих операторов содержат ошибки и почему?

x := I * j; j := i * y;

i := j / 2; i := j div 2;

x :=y mod 2; i := j mod i

j:= i + x; y := i + j

Выражения

Стандартные функции.

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

Правила записи стандартных функций:

1. Имя функции записывается буквами латинского алфавита. Имя состоит не более чем из шести букв.

2. Аргумент функции записывается в круглых скобках после имени функции.

3. Аргументом функции может быть константа, переменная или арифметическое выражение.

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

Угол в радианах = угол в градусах * p/180.

Некоторые стандартные функции приведены в таблице 7.

Таблица 7. Стандартные функции языка Паскаль.

Функция Назначение Тип результата
Abs(x) абсолютное значение (модуль) совпадает с типом x
Cos(x) косинус вещественный
Sin(x) синус вещественный
Frac(x) дробная часть вещественный
Int(x) целая часть вещественный
Sqr(x) квадрат совпадает с типом x
Sqrt(x) квадратный корень вещественный
Round(x) округление вещественный
Random Случайное число из интервала (0,1) вещественный
Pi константа p » 3.14 вещественный

Арифметические выражения.

Данные, которые участвуют в арифметических и логических операциях называются операндами. Операндом может быть константа, переменная и значение… Операции определяют действия, которые надо выполнить над операндами. Например,… А + В* T1/(T2-2.3)

Вопросы и задания

1. Что представляет собой выражение?

2. Каковы правила записи арифметических выражений?

3. Каков порядок выполнения действий в арифметическом выражении?

4. Какое различие между операциями / и div?

5. Чем отличаются следующие выражения и каков будет результат их выполнения:

а) 10 + 6 * 2 / 2; в) (10 + 6) * 2 / 2;

б) (10 + 6) * 2 / 2; г) 10 + 6 * (2 / 2).

6. Запишите на языке Паскаль следующие выражения:

а) X2 – 4X+ 5; б) SinX + Cos2X - 3 SinX;

;

Ввод - вывод данных

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

Для выполнения операций ввода-вывода служат четыре процедуры Read, Readln, Write, Writeln.

Процедура вывода на экран

Формат процедуры: write(х1, х2,…, xn); где х1, х2,…,xn – величины любого тип, разделителем в списке элементов является запятая.

Вывод на экран вещественных чисел

VV7.6586431000Е+02 Число –0,0002345 на экране выглядит так: V-2.3450000000Е-04

Процедура ввода Read.

Формат процедуры: Read(x1, x2, ..., xn); где х1, х2,…,xn – величины любого тип, разделителем в списке элементов является запятая.

Интерфейс пользователя

Посторонний человек ни за что не догадается, что компьютер чего-то ждет. Это не очень удобно. Было бы гораздо лучше, если на экране в нужный момент… Это же касается и вывода результатов. На пустом экране появляется число,… Говорят, что у таких программ неудобный интерфейс пользователя.

Вопросы и задания

1. Какие процедуры служат в Паскале для операций ввода-вывода?

2. В чем заключается отличие процедуры чтения Readln от процедуры Read?

3. Для чего в процедурах вывода Write и Writeln определяется ширина поля вывода? Какие обозначения используются в форматах вывода?


4. Составьте программу, которая, используя процедуру Writeln, изображает на экране домик:

*

* *

* *

*********

* *

* *

*********

5. Составьте программу, которая выводит на экран компьютера заставку, аналогичную следующей:

******************************

* Программа *

* вычисления суммы чисел *

* Автор: Петров В.И. *

******************************

Операторы

Операторы предназначены для описания действий, которые будут выполнены для реализации алгоритма. Тело программы на языке Паскаль представляет собой последовательность операторов. Операторы отделяются друг от друга символом «точка с запятой» (;). Точка с запятой не является частью оператора, это разделитель операторов.

Оператором называется предложение языка программирования, которое задает полное описание некоторого действия, которое необходимо выполнить.

Согласно синтаксису языка программирования Паскаль операторы разделяются на две группы: простые операторы и структурные операторы.

Простые операторы не содержат в себе других операторов. К ним относятся операторы присваивания, безусловного перехода, вызова процедуры и пустой оператор.

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

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

Оператор присваивания.

Оператор присваивания (:=) присваивает переменной значение выражения, в качестве которого может использоваться и константа, и переменная, и результат вычисления функции, и группа операций.

Формат оператора:

переменная := выражение;

Выполнение оператора присваивания приводит к вычислению значения выражения, стоящего справа от знака присваивания и помещению полученного значения в ячейку оперативной памяти, имя которой указано слева от знака «:=».

Оператор присваивания выполняется в оперативной памяти, результаты его работы не отображаются на экране монитора. Если необходимо увидеть результаты выполнения присваивания, необходимо использовать процедуру вывода writeln.

Примеры оператора присваивания:

1) Х := 2;

2) a := b;

3) Summa := a+ b;

4) S5 := 2*f – Sin(x);

5) Х := Х + 1;

В первом примере переменной Х присваивается значение константы –2 (т.е. в ячейку с именем Х помещается число 2).

Во втором - переменной а присваивается значение переменной b (т.е. в ячейку с именем Х помещается содержимое ячейки b).

В правой части оператора присваивания в третьем и четвертом примерах - математическое выражение. Если выражение содержит переменные, то компьютер перед вычислением ищет их значения в отведенных для них ячейках памяти, подставляет эти значения в выражение и вычисляет. Полученное значение помещает в соответствующую ячейку.

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

Например, в обычной математической записи выражение Х = Х + 1 является неверным. Однако запись оператора присваивания Х := Х + 1 правильна и означает следующее: текущее значение переменной Х увеличивается на 1, и полученное значение вновь помещается в ячейку Х.

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

Так, если переменная F была описана как целая (var F : integer;), то оператор F := 5.67 ошибочен, так как в правой части оператора записана константа вещественного типа.

Рассмотрим, как будут меняться значения переменной Х после последовательного выполнения операторов:

оператор содержимое ячейки
Х := 5;
Х := Х + 4;
Х := Х / 3;
Х := Х * Х + 1;

Какого типа должна быть объявлена переменная Х, чтобы данные операторы выполнялись без ошибки? Конечно вещественного, так как в третьем операторе присваивания используется операция деления. А результат операции деления только вещественного типа, даже если числа делятся нацело как в нашем примере.

Составной и пустой операторы.

Составной оператор – объединение нескольких операторов в одну группу.

Формат записи составного оператора:

Begin

оператор1;

оператор2;

оператор3;

. . .

End;

В этой конструкции служебные слова Begin и End называются операторными скобками. Слово Begin выполняет роль открывающей скобки, слово End – роль закрывающей скобки.

Составной оператор представляется как единый оператор. Его можно вставлять в любое место программы, где допускается один оператор. Любой из операторов составного оператора, в свою очередь также может быть составным.

Пустой оператор – это оператор, не выполняющий никакого действия. Пустому оператору соответствует отсутствие записи на том месте, где должен быть оператор. Например:

А := В;

R :=2;

;

N :=R;

В этом примере третий оператор пустой.

Вопросы и задания

1. Какие функции выполняют операторы в языке программирования?

2. Что является разделителем операторов в языке Паскаль?

3. На какие группы делятся операторы языка Паскаль?

4. Какие операторы называются простыми?

5. Как работает оператор присваивания?

6. Запишите оператор, который присваивает переменной х значение –1,5.

7. Запишите оператор, который присваивает переменной summa нулевое значение.

8. Запишите оператор, который увеличивает на два значение переменной n.

9. Запишите оператор, который уменьшает на единицу значение переменной counter.

10. Запишите оператор вычисления среднего арифметического переменных х1 и х2.

11. Запишите в виде оператора присваивания формулу вычисления значения функции y = -2,7x3 + 0,23x2 – 1,4.

12. Запишите в виде оператора присваивания формулу вычисления значения функции .

13. Запишите в виде оператора присваивания формулу вычисления стоимости покупки, состоящей из нескольких тетрадей и такого же количества обложек.

Составление линейных программ

Линейной называется программа, операторы в которой выполняются в том порядке, в каком записаны.

При составлении программ рекомендуется выполнять следующую последовательность действий:

1. Программист сам должен знать решение задачи. Ведь программа – это инструкция по ее решению. Нельзя давать инструкцию, не зная, как решить.

2. Придумать имена константам и переменным. Имя переменной должно говорить о ее смысле.


3. Определить какого типа будут переменные.

4. Задать значения исходным данным.

5. Задать действия, которые надо выполнить с исходными данными, чтобы получить результат.

6. Вывести результат на экран.

Алгоритм решения задачи записывается на языке блок-схем. При схемном описании алгоритма математические и логические действия изображаются геометрическими фигурами (блоками), внутри которых описываются действия. Блоки связывают между собой стрелками, указывающими последовательность выполнения действий.

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

Таблица 8. Условные обозначения блоков.

блок назначение
начало, конец
ввод, вывод
оператор присваивания
  условный оператор
заголовок цикла «для»
соединитель разрыва линии

Решим задачу: Известны размеры спичечной коробки: высота – 12,41 см, ширина – 8 см, толщина – 5 см. вычислить площадь основания коробки и ее объем.

Мы знаем, что спичечная коробка имеет форму прямоугольного параллелепипеда, основание – прямоугольник. Формулы, которые нам понадобятся для вычисления: площадь основания = ширина ´ толщина, объем = площадь основания ´ высота.

Придумаем имена переменным. Например, такие:

Shirina - ширина
Tol - толщина
Visota - высота
S_osnov - площадь основания
V - объм

Определим тип переменных. Ширина и толщина по условию целые числа, значит и площадь основания – целое. Высота, и следовательно, объем – вещественные. Описания переменных будут таким:

Var Shirina, Tol, S_os : Integer;

Visota , V : Real;

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

Shirina := 8; Tol :=5; Visota:= 12.41;

Зададим компьютеру действия, которые надо проделать с данными, чтобы получить результат:

S_os := Shirina * Tol;

V := S_os * Visota;

Выведем результаты вычислений на экран:

Writeln(S_os : 5, V:5:2);

 

Алгоритм решения данной задачи на языке блок – схем:

Вот как будет выглядеть программа:

Program primer;

{Вычисление площади основания и объема прямоугольного параллелепипеда}

Var Shirina, Tol, S_os : Integer;

Visota , V : Real;

Begin

Shirina := 8; Tol :=5; Visota:= 12.41;

S_os := Shirina * Tol;

V := S_os * Visota;

Writeln(S_os : 5, V:5:2)

End.

Программа напечатает два числа: 40 и 496.40.

Надо отметить, что интерфейс этой программы не очень удобен. Вы должны помнить, какая величина выводится на экран первой, какая – второй. Надо дополнить вывод результата сопроводительным текстом.

Другой недостаток программы – ее не универсальность. С ее помощью нельзя найти площадь основания и объем прямоугольного параллелепипеда с другими размерами. Ведь мы использовали для задания исходных данных оператор присваивания. Для ввода в оперативную память различных значений данных необходимо использовать оператор Read.

После исправления, программа может выглядеть следующим образом:

Program primer;

{Вычисление площади основания и объема}

Var Shirina, Tol, S_os, Visota , V : Real;

Begin

Write(¢Введите значение ширины->¢);

Readln(Shirina);

Write(¢Введите значение длины->¢);

Readln(Tol);

Write(¢¢);

Readln(Visota);

S_os := Shirina * Tol;

V := S_os * Visota;

Writeln(¢Ответ:¢);

Writeln(¢Площадь основания =¢, S_os:5,¢ см¢);

Writeln(¢¢,V:5:2, ¢ куб. см¢)

End.

Ниже представлен вид экрана во время работы программы. Данные, введенные с клавиатуры, выделены полужирным шрифтом.

Введите значение ширины-> 8

Введите значение длины-> 5

Введите значение высоты-> 12.41

Ответ:

Площадь основания = 40 см

Объем = 496.40 см

Вопросы и задания

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

Вычисление площади круга.

Введите радиус -> 5

Ответ:

Длина окружности равна 31.4 см

Площадь круга равна 78.50 кв. см.

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

Вычисление стоимости покупки.

Введите исходные данные:

Цена одной тетради (руб.) – 13.5

Количество тетрадей (шт.) - 7

Цена одного карандаша (руб.) – 10

Количество карандашей (шт.) – 3

Цена одной линейки (руб.) – 6.3

Ответ:

На покупку Вы истратите - 130.80 руб.

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

Вычисление стоимости покупки.

Введите исходные данные:

Цена тетради (руб.) – 2.75

Цена обложки (руб.) –0.5

Количество комплектов (шт.) – 7

 

Ответ:

На покупку Вы истратите - 22.75 руб.

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

Вычисление стоимости покупки.

Введите исходные данные:

Цена 1 килограмма яблок (руб.) – 8.5

Вес яблок (кг) – 2.3

 

Ответ:

Стоимость покупки: 19.55 руб.

5. В углу прямоугольного двора размерами а ´ b стоит прямоугольный дом размером c ´ d. Подсчитать площадь дома, свободную площадь двора и длину забора. Примечание: в углу, где стоит дом, забора нет. (Выполните программу если размеры дома 20 ´ 30, а размеры двора 50 ´ 30).

6. Напишите программу определения площади квадрата по его периметру.

7. Напишите программу определения идеального веса человека по формуле: Идеальный вес = Рост в см – 100. значение роста вводите с клавиатуры. Результат вывести в следующем виде: «Для человека ростом 165 см идеальный вес равен 65 кг».

8. Напишите программу вычисления расстояния, которое пройдет катер за 3 часа по течению и 4часа против течения.

9. Составьте программу определения стоимости набора конфет, в который входят следующие сорта:

наименование количество Цена, руб
Красная шапочка Алые паруса Воронежские Чародейка 500 г 200 г 100 г 250 г k a b v

10. Напишите программу получения следующей формы:

*********************

* А * В * А+В * А–В *

*********************

* 6 * 2 * 8 * 4 *

*********************

Условный оператор

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

Условные операторы.

Условные операторы используются в тех случаях, когда надо выбрать одно из нескольких возможных вариантов решения. В языке программирования Паскаль два условных оператора – if и case, каждый из которых может быть записан в двух формах – полной и неполной.

Хотя оба оператора if и case по своей сути являются условными, однако исторически сложилось так, что условным оператором называется оператор if, а оператор case называется оператором выбора или оператором варианта. Будем придерживаться этой исторической терминологии.

Условный оператор if.

Условный оператор if, как отмечалось выше, может быть записан в полной и неполной формах. Рассмотрим их.

Формат оператора (полная форма):

if<условие> then оператор1 else оператор2;

При выполнении оператора сначала проверяется условие, а затем, в зависимости от результата проверки (true, false) выполняется или оператор1, стоящий после служебного слова then (если условие истинно) или оператор2, стоящий после служебного слова else (если условие ложно).

Работу оператора наглядно представляет блок схема.

Формат оператора (неполная форма):

if<условие> then оператор;

При выполнении оператора if в неполной форме если условие ложно, то выполняются оператор, следующий непосредственно после оператора if, а оператор, стоящий после служебного слова then,пропускается.

Блок-схема оператора:

Следует обратить внимание на рассматриваемые ниже синтаксические особенности оператора if.

Вы помните, что в языке Паскаль операторы разделяются символом «;». Это означает, что внутри любого структурного оператора символ «;» встречаться не должен, иначе все, что стоит после него, будет считаться уже другим оператором.

Чтобы не допускать таких ошибок, целесообразно запомнить правило: перед служебным словом else символ «;» никогда не ставится.

Еще одна синтаксическая сложность корректного использования оператора if возникает, если в какой-либо из ветвей альтернативы (then или else) или сразу в обоих требуется выполнить несколько операторов. В этих случаях следует воспользоваться составным оператором Begin…end, который позволяет интерпретировать группу операторов как один оператор. Обобщенные формы оператора if приведены в таблице 9.

Разберем типы задач, при решении которых применяется условный оператор.

Самыми простыми являются задачи, в которых действие производится только при выполнении (не выполнении) какого-либо условия. При решении этого типа используется неполный условный оператор.

Например, такая задача: Удвоить число, если оно положительное.

program primer_1;

uses crt;

var x:integer;

Begin

clrscr;

write('Введите число');

Read(x);

If x > 0 Then x :=2*x;

writeln(x:4);

End.


Таблица 9.Запись условного оператора

Количество операторов в ветви Обобщенная форма оператора if
then else
один один if <условие> then оператор else оператор;
несколько один if <условие> then begin оператор; оператор; . . . оператор end else оператор;
один несколько if <условие> then оператор else begin оператор; оператор; . . . оператор end;
несколько несколько if <условие> then begin оператор; оператор; . . . оператор end else begin оператор; оператор; . . . оператор end;

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

program primer_2;

{большее из двух}

uses crt;

var a, b, max : integer;

Begin

clrscr;

write('Введите два числа->');

Read(a, b);

If a > b Then max := a

Else max := b;

writeln('Большее число -', max)

End.

Ниже представлен вид экрана во время работы программы:

Введите два числа->135 8

Большее число ->135

или

Введите два числа->13 88

Большее число ->88


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

Алгоритм решения задачи:

Если программу составлять в строгом соответствии с блок-схемой, то она будет выглядеть так:

program primer_3;

{определение значения функции}

uses crt;

var x : real; y : integer;

Begin

clrscr;

writeln('Введите x');

readln(x);

if x < 0 then y := -1

else

if x=0 then y := 0

else y := 1;

writeln(’при х = ’,х:4:1,’y = ’;y);

end.

Основную часть программы (вычисление у) можно реализовать следующим образом:

if x < 0 then y := -1;

if x = 0 then y := 0;

if x > 0 then y := 1;

Но нельзя написать так:

if x < 0 then y := -1;

if x = 0 then y := 0 else y := 1;

Ошибка состоит в том, что для всех значений х, меньших 0, первый оператор действительно присвоит переменной у значение –1. но выполнение второго оператора изменит это значение на 1, т.к. отрицательное число не равно 0 (смотри фрагмент блок-схемы):

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

if <условие1> then <выбор1>

else

if <условие2> then <выбор2>

else <выбор3>;

или

if <условие1> then <выбор1>;

if <условие2> then <выбор2>;

if <условие3> then <выбор3>;

Причем условия 1-3 должны учитывать все возможные значения переменной.

Иногда в задачах требуется выполнение не одного, а нескольких условий или одного из нескольких. Тогда простые условия образуют составные при помощи логических операций And и Or. При составлении сложного условия простые условия заключают в круглые скобки. Например, двойное неравенство –4 £ х £ 5 на языке Паскаль будет записано так: (х >= -4) and (x <= 5).

Оператор выбора case.

Условный оператор if позволяет выбирать только одно из двух возможных действий в зависимости от какого-либо условия.

Оператор выбора case позволяет выбрать одно из нескольких действий в зависимости от значения переключателя.

В качестве переключателя используется выражение, которое располагается между служебными словами case и of.

Формат оператора:

CaseпереключательOf

Список констант2:оператор2; … Список константN:операторN;

Оператор безусловного перехода. Метки.

Оператор безусловного перехода обеспечивает передачу управления в любое место программы. Он имеет вид GotoМетка.

Метка позволяет указать тот оператор, с которого будет продолжаться выполнение программы. Метки объявляются в разделе описаний программы, после слова label.

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

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

Program Chisla;

uses crt;

label Perehod; {описание метки}

var x:integer;

Begin

clrscr; x:=1;

Perehod: {применение метки}

write(x:4);

x:=x+1;

goto Perehod; {переход на метку}

End.

Эта программа реализует бесконечный цикл, а это некорректно. Выйти из него при выполнении программы можно нажав Ctrl + Pause.

Вопросы и задания

1. Назовите условные операторы языка Паскаль. Когда они применяются?

2. Формы записи и порядок выполнения условного оператора If?

3. Каковы отличия оператора Case от оператора If?

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

В каком году началась вторая мировая война?

Введите число и нажмите Enter

¾>1939

Правильно!

5. Написать программу, которая определяет, какой из двух пакетов риса тяжелее и на сколько. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Введите вес первого пакета ¾>4

Введите вес второго пакета ¾>2

Первый пакет тяжелее на 2 кг.

6. Написать программу, которая удваивает меньшее из двух чисел и увеличивает на 2 большее.

7. Написать программу вычисления стоимости покупки с учетом скидки. Скидка 10% предоставляется, если стоимость покупки больше1000 руб. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление стоимости покупки с учетом скидки.

Введите сумму покупки¾>1200

Вам предоставляется скидка 10%

Сумма покупки с учетом скидки: 1080 руб.

8. Написать программу вычисления площади кольца. Программа должна проверять правильность исходных данных. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление площади кольца.

Введите исходные данные:

Радиус кольца (см) ¾>3.5

Радиус отверстия (см) ¾>7

Ошибка!

Радиус отверстия не может быть больше радиуса кольца.

9. В школу танцев принимаются учащиеся не выше178 см и не ниже 168 см. Написать программу, которая определяет, будете ли вы приняты в школу танцев.

10. На работу в компанию принимаются люди не старше 42 лет и имеющие стаж не менее 5 лет. Написать программу, которая определяет, будете ли вы приняты на работу.

11. Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если стоимость покупки больше 500 руб., в 5% - если стоимость покупки больше 1000 руб. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление стоимости покупки с учетом скидки.

Введите сумму покупки¾>640

Вам предоставляется скидка 3%

Сумма покупки с учетом скидки: 620.80 руб.

12. Написать программу, которая вычисляет оптимальный вес пользователя, сравнивает его с реальным и выдает рекомендации о необходимости поправиться или похудеть. Оптимальный вес вычисляется по формуле: рост (в см) – 100. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Введите свой рост (см) ¾>170

Введите свой вес (кг)¾>68

Вам надо поправиться на 2.00 кг.

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

*Решение квадратного уравнения*

Введите в одной строке значения коэффициентов:

¾> 12 27 -10

Ответ:

Дискриминант =

Х1 = -25.551

Х2 = -28.449

14. Написать программу, определяющую значение функции, заданной графиком:


15. Написать программу, определяющую, лежит ли точка с указанными координатами X и Y на окружности радиуса R с центром в начале координат.

16. Написать программу, которая по введенному номеру дня недели выводит на экран монитора его название на русском языке.

17. Написать программу, которая запрашивает номер дня недели и выводит одно из сообщений: «Рабочий день», «Суббота», «Воскресенье».

18. Написать программу, которая по введенному номеру месяца выводит на экран монитора его название на русском языке.

Операторы повторения

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

В языке Паскаль различают три вида операторов цикла: цикл с предусловием (While), цикл с постусловием (Repeat) и цикл со счетчиком (For).

Операторы для записи циклов являются структурными, так как в их состав входят другие операторы.

Для всех операторов цикла характерны следующие особенности:

· повторяющиеся действия записываются один раз;

· вход в цикл возможет только через его начало;

· необходимо предусмотреть выход из цикла либо по естественному значению, либо по оператору перехода.

Если число повторений оператора заранее не известно, а задано лишь условие его повторения, то используются операторы While, Repeat. Оператор For используется, если число повторений заранее известно.

Оператор While

Оператор While называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале выполнения оператора.

Формат оператора:

Тело цикла состоит из одного оператора Тело цикла включает более одного оператора
While условие do оператор;   While условие do begin оператор; оператор; . . . оператор end;

Блок-схема цикла с предусловием:

Рассмотрим фрагмент программы с использованием цикла с предусловием:

N:=1;

While N <= 5 do

Begin

Write(N:4);

N:=N+2

End;

Пока условие N <= 5 истинно, выполняются операторы циклической части программы: выводится на экран значение переменной N; значение N увеличивается на 2 и результат присваивается переменной N. Начальное значение параметра цикла задано до начала оператора цикла (N:=1).

Переменная N, условие выполнения тела цикла принимают следующие значения в процессе выполнения этого фрагмента программы:

N N <= 5 Условие истинно или ложно экран
1 <= 5 истинно
3 <= 5 истинно
5 <= 5 истинно
7 <= 5 ложно  

Следует заметить, что тело цикла выполнилось три раза. На экран вывелись числа 1, 3, 5. При N = 7 условие становится ложным, и управление передается за пределы цикла (т.е. за end).

Оператор цикла с постусловием

Оператор цикла с постусловием состоит из служебного слова Repeat, за которым следуют операторы тела цикла, и замыкающего ключевого слова Until, после которого указывают условие окончания цикла.

Формат оператора:

Repeat

оператор;

оператор;

...

оператор;

Until условие

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

Общий принцип работы цикла Repeat такой же, как у цикла с предусловием, но в отличие от While, условие проверяется не перед выполнением тела цикла, а после него.

Управление циклом Repeat прямо противоположно управлению циклом While. Т.е. цикл Repeat выполняется пока условие ложно и заканчивается, когда условие становится истинным.

Рассмотрим блок-схему цикла с постусловием:

Оператор Repeat является не столь универсальным, как While, т.к. его условие располагается в конце тела цикла, и операторы тела цикла будут, в отличие от цикла While, всегда выполняться как минимум один раз. То есть этот оператор нельзя применять для записи циклов, в которых могут возникнуть ситуации, когда тело цикла не должно выполняться ни разу.

Пример работы оператора Repeat: вычислить значение функции Y = х2 при х = 8, 6, 4, 2.

Фрагмент программы имеет вид:

X:=8;

Repeat

Y:=x*x;

Writeln(’при х = ’,x:4,’y=’,Y:4);

X := x - 2

Until x < 2;

Сначала задается начальное значение аргумента х = 8. В теле цикла выполняются следующие действия: вычисляется значение Y при текущем значении х, выводятся на экран монитора значения х и Y и значение параметра цикла уменьшается на 2.

Тело цикла выполняется до тех пор, пока выражение x < 2 не станет истинным. В процессе выполнения фрагмента программы переменные принимают следующие значения:

x
Y -
Условие x < 2 истинно или ложно ложно ложно ложно ложно истинно

Оператор цикла с параметром

Оператор цикла с параметром (счетчиком) For используется в тех случаях, когда заранее известно, сколько раз должна повториться циклическая часть программы. Это обусловливает его менее широкую сферу применения, чем циклов While и Repeat.

Однако в тех случаях, когда его использование возможно, оператор For, благодаря своей наглядности, имеет несомненное преимущество перед операторами циклов с условием.

Форматы оператора:

1) Если параметр цикла при выполнении цикла наращивает свое значение:

For переменная := начальное значение параметра цикла to конечное значение параметра цикла do оператор;

Чтобы тело цикла выполнилось хотя бы один раз, начальное значение параметра меньше либо равно конечного значения параметра цикла.

2) Если параметр цикла при выполнении цикла уменьшает свое значение:

For переменная := начальное значение параметра цикла downto конечное значение параметра цикла do оператор;

Чтобы тело цикла выполнилось хотя бы один раз, начальное значение параметра больше либо равно конечного значения параметра цикла.

Параметр цикла, определяющий количество повторений операторов циклической части программы может быть только типа INTEGER!

Блок-схема цикла с параметром:

Тело цикла может быть простым или составным оператором. Оператор For обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного.

Заголовок оператора определяет:

1) диапазон изменения параметра цикла и одновременно число повторений тела цикла;

2) направление изменения параметра цикла (возрастание - to или убывание - downto).

Пусть имеется фрагмент программы с переменными целого типа:

For I := 1 to 5 do

Begin

A:=2*I;

Writeln(A:4)

End;

Тело цикла выполняется пять раз, при этом параметр цикла изменяет свое значение от 1 до 6. В результате выполнения фрагмента программы переменные получают следующие значения:

I
I<=5 да да да да да нет
A  

Фрагмент программы с убыванием параметра цикла имеет следующий вид:

For I := 5 dowto 1 do

Begin

A:=2*I;

Writeln(A:4)

End;

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

Сравнение работы операторов While, Repeat и For

Отметим отличия и особенности хорошего стиля работы с циклическими операторами:

Цикл с предусловием While (пока условие истинно) Цикл с постусловием Repeat (до истинности условия)
1) До начала цикла должно быть задано начальное значение параметра цикла для корректного входа в цикл
2) в теле цикла должны присутствовать операторы, изменяющие значения параметра цикла так, чтобы цикл через несколько шагов закончился
3) Цикл работает пока условие истинно 3) Цикл работает пока условие ложно
4) Цикл завершается, когда условие становится ложным 4) Цикл завершается, когда условие становится истинным
5)Цикл может не выполниться ни разу, если исходное значение условия при входе в цикл ложно 5) Цикл обязательно выполняется как минимум один раз
6) Если в теле цикла требуется выполнить более одного оператора, то необходимы операторные скобки 6) Независимо от количества операторов в теле цикла использование операторных скобок не требуется
Цикл с параметром For
1) Задание начального значения параметра цикла до его заголовка не требуется
2) Изменение в теле цикла значений параметра цикла не допускается
3) Количество повторений тела цикла неизменно и точно определено начальным и конечным значениями параметра цикла
4) Цикл может не выполниться ни разу, если начальное значение параметра цикла > конечного значения (при to) или если начальное значение параметра цикла < конечного значения (при dowto)

Вопросы и задания

1. Каково назначение операторов повтора (цикла)?

2. какие требования предъявляются к выражениям, управляющим повторениями?

3. в чем отличия операторов while и repeat?

4. в каких случаях предпочтительнее использовать для организации циклов оператор for? Что записывается в заголовке этого оператора?

5. каким образом в операторе цикла for описывается направление изменения значения параметра цикла?

6. какие ограничения налагаются на использование параметра цикла в операторе for?

7. какие правила пунктуации необходимо соблюдать при записи операторов повтора?

8. что такое вложенные циклы? Какие дополнительные условия необходимо соблюдать при организации вложенных циклов?

9. Дана последовательность операторов:

а := 1; b := 1;

While a + b < 8 do

begin

а := a+1; b := b + 2;

end;

s := a + b;

Сколько раз будет выполнено тело цикла, и какими будут значения переменных a, b, s после завершения работы цикла?

10. Какими будут значения переменных a и b после выполнения операторов?

a := 1; b := 1;

While a < = 3 do

begin

a := a+1; b := b + 1;

end;

11. Написать программу, которая вычисляет сумму первых N целых положительных чисел. Ниже представлен рекомендуемый вид экрана во время работы программы:

*Вычисление суммы положительных чисел*

Введите количество суммируемых чисел-> 20

Сумма первых 20 чисел равна 210.

12. Написать программу, которая выводит на экран все натуральные делители введенного с клавиатуры числа натурального числа N. Ниже представлен рекомендуемый вид экрана во время работы программы:

Введи натуральное число-> 12

Делители этого числа:

1 2 3 4 6 12

13. Написать программу, которая вычисляет сумму первых N членов ряда Количество суммируемых элементов задается с клавиатуры. Ниже представлен рекомендуемый вид экрана во время работы программы:

Вычисление суммы ряда 1+1/2+1/3+1/4…

------------------------------------

Введи кол-во суммируемых членов ряда-> 15

Сумма ряда:

1 + 1/2 + 1/3 + 1/4 + ... + 1/15 = 3.3182

14. Написать программу, которая выводит на экран таблицу квадратов первых пяти натуральных чисел. Ниже представлен рекомендуемый вид экрана во время работы программы:

--------------------

Число | Квадрат

--------------------

1 | 1

2 | 4

3 | 9

4 | 16

5 | 25

--------------------

15. Написать программу, которая выводит на экран таблицу стоимости, например, яблок в диапазоне от 0,1 кг до 1 кг с шагом 0,1. Ниже представлен рекомендуемый вид экрана во время работы программы:

Введи цену-> 45

Вес (кг) Цена (руб.)
0.1 4.5
0.2 9.0
0.3 13.5

16. Написать программу, которая выводит на экран последовательность двузначных чисел (в строку), кратных 13 и находит их среднее арифметическое. Ниже представлен рекомендуемый вид экрана во время работы программы:

Двузначные кратные 13:

13 26 39 52 65 78 91

Среднее арифметическое чисел = 52.00

17. Написать программу, которая выводит на экран таблицу умножения, например, на 5. Рекомендуемый вид экрана во время работы программы приведен ниже.

5 * 2 = 10

5 * 3 = 15

5 * 4 = 20

5 * 5 = 25

5 * 6 = 30

5 * 7 = 35

5 * 8 = 40

5 * 9 = 45

18. Написать программу, которая вычисляет факториал числа, введенного с клавиатуры. (Факториалом числа N называется произведение целых чисел от 1 до N. Например, факториал числа 7! = 1*2*3*4*5*6*7 = 5040.)

19. Написать программу, которая выводит таблицу значений функции y = -2,4х2 + 5х – 3 в диапазоне от –2 до 2 с шагом 0,5.

20. Написать программу, которая находит средний рост пяти учащихся вашего класса.

21. Составить программу нахождения остатка от деления числа а на числа b (не используя функцию mod).

22. Составить программу нахождения частного от деления числа a на числа b

23. Написать программу, которая вычисляет наибольший общий делитель двух чисел.

24. Написать программу, которая вычисляет наименьшее общее кратное двух чисел.

25. Составить программу нахождения степени числа a с показателем n.