Файл: Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Линейная алгоритмическая структура).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 92

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1 var a, b:real;

2 resalt:real;

3 BEGIN

4 write('Nomber A=');readln(a);

5 write('Nomber B=');readln(b);

6 If (a>b) then begin

7 resalt:=a-b;

8 writeln('Resalt=',resalt);

9 end;

10 If (b>a) then begin

11 resalt:=b-a;

12 writeln('Resalt=',resalt);

13 end;

14 Write('Press Enter to Exit');

15 readln;

16 END.

Далее рассмотрим примеры полного варианта ветвления.

Пример 1. Пусть дано два числа А и В, которые не равны между собой. Найти максимальное число [4, c. 98].

If (a>b) then max:=a else max:=b;

Полное решение задачи:

1 var a, b:real;

2 max:real;

3 BEGIN

4 write('Nomber A=');readln(a);

5 write('Nomber B=');readln(b);

6 If (a>b) then max:=a else max:=b;

7 Writeln('Max nomber is', max);

8 write('Press Enter to Exit');

9 readln;

10 END.

Пример 2. Дано два числа А, которые не равны между собой. Найти разницу между большим и меньшим числом.

1 var a, b:real;

2 resalt:real;

3 BEGIN

4 write('Nomber A=');readln(a);

5 write('Nomber B=');readln(b);

6 If (a>b) then begin

7 resalt:=a-b;

8 writeln('Resalt=',resalt);

9 end else begin

10 resalt:=b-a;

11 writeln('Resalt=',resalt);

12 end;;

13 Write('Press Enter to Exit');

14 readln;

15 END.

Таким образом, чтобы оптимизировать программы ветвлений, мы вместо двух команд If использовали слово Else и экономили одну строку. Для того чтобы еще сократить программный код, используется команда выбора «Case» [4, c. 101].

Общая структура команды выглядит так:

1 case Выражение of

2 значение1 : оператор (группа операторов);

3 значение2 : оператор (группа операторов);

4. . . . . . . . . . . . . . . . . . . . . .

5 значениеN : оператор (группа операторов)

6 else оператор (группа операторов);

7 end;

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

Бываю случаи, что в списке выбора не окажется значения, которое равно вычисленному значению в команде Case. В этом случае управление передается набору команд, стоящих после слова else. Если else отсутствует, то в этом случае просто ничего не выполняется [4, c. 99].

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

Рассмотрим пример: По номеру месяца указать квартал.

1 var n_month:byte;

2 Begin

3 write('N month='); readln(n_month);

4 case n_month of

5 1, 2, 3 : writeln ('Первый квартал');

6 4, 5, 6 : writeln ('Второй квартал');

7 7, 8, 9 : writeln ('Третий квартал');

8 10, 11, 12 : writeln ('Четвёртый квартал');

9 end;

10 writeln('Press Enter to Exit');

11 Readln;

12 End.

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


1 var n_month:byte;

2 Begin

3 write('Номер месяца='); readln(n_month);

4 case n_month of

5 1..3 : writeln ('Первый квартал');

6 4..6 : writeln ('Второй квартал');

7 7..9 : writeln ('Третий квартал');

8 10..12 : writeln ('Четвёртый квартал');

9 end;

10 writeln('Press Enter to Exit');

11 Readln;

12 End.

3.3. Программы с использования циклов

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

В среде программирования Паскаль используют три вида циклических операторов [15, c. 301]:

- while - оператор цикла с предварительным условием (с предусловием);

- repeat - оператор цикла с последующим условием (с постусловием);

- for - оператор цикла с управляющим параметром (с параметром).

Рассмотрим оператор цикла While. Для цикла с предусловием характерна проверка условия перед выполнением цикла. Если условие носит истинный характер, то будет выполняться продолжение цикла, иначе - цикл завершится.

Синтаксис оператора: while < логическое_выражение > do < оператор >;

где < оператор > представляет собой оператор, который может быть простым или составным, а < логическое_выражение > представлено выражением булевого типа.

Действия оператора цикла while заключаются в следующем [3]:

- вначале выполняется проверка значения логического выражения, пока оно будет истинным, выполняется < оператор >, указанный после do. В случае изменения значения логического выражения на ложное выполняется выход из цикла;

- если изначально логическое выражение ложно, то < оператор > не выполнится ни разу. В случае, когда логическое выражение будет истинным постоянно, цикл станет выполняться до бесконечности долго.

Базовая структура команды While:

1 параметр_флаг:=начальное значение

2 While (условие истинно=true) do

3 begin

4 Действия; изменение параметра_флага условия;

5 end;

Рассмотрим пример. Вывести на экран числа от 1 до 10.

1 var i:integer;

2 BEGIN

3 i:=1; //начальное значение

4 While i<=10 do // условие выхода

5 begin

6 write(i:3);

7 i:=i+1; //изменение параметра выхода

8 end;

9 Write('Press Enter to Exit...');

10 readln;

11 END.

Рассмотрим оператор цикла For. Для цикла с параметром характерно определение количества исполняемых циклов в операторе for.


Синтаксис оператора: for i:= n1 to n2 do.

где i - переменная (параметр) цикла; n1, n2 - начальное и конечное значения переменной цикла.

В качестве параметра i может использоваться только простая переменная, а в качестве n1, n2 используются выражения кроме выражений вещественного типа (real). Параметры i, n1, n2 должны быть одинакового скалярного, но не вещественного типа, т.е. могут быть целыми, символьными, ограниченного типа или перечисляющего [3].

Параметр цикла i примет последовательно значения указанного типа от n1 до n2. Если i, n1, n2 – переменные целого типа, то они всегда будут изменяться с шагом +1.

Убывающий цикл по значениям параметра i от n1 до n2 можно записать, используя следующий оператор: for i := n2 downto n1 do < оператор >; При этом параметр i последовательно будет принимать убывающие значения указанного типа от n2 до n1.

Необходимо обратить внимание на переменную I [3].

В For — переменная счетчик может быть только целого (integer) типа.

В While — она может быть целого (integer), действительного (real) и логического (boolean) типов.

Переменную, которая имеет тип boolean называют Флагом. Эта переменная может получать значения True или False.

Пример. Вывести на экран числа от 1 до 15.

1 var i:integer;

2 begin

3

4 for i:=1 to 15 do

5 write(i,' ');

6

7 Writeln('Press Enter to Exit');

8 readln;

9 end.

Обратный пример. Вывести на экран числа от 15 до 1

1 var i:integer;

2 begin

3

4 for i:=1 downto 15 do

5 write(i,' ');

6

7 Writeln('Press Enter to Exit');

8 readln;

9 end.

Рассмотрим оператор цикла Repeat.

В состав оператора повтора repeat входят заголовок (repeat), тело цикла и условие окончания (until). Для цикла с постусловием характерно обязательное выполнение вначале хотя бы одного раза команды, входящей в цикл [3].

По завершении цикла проверяется условие. При ложном условии операторы цикла выполняются снова. При истинности условия - цикл завершается.

Синтаксис оператора: repeat < оператор_1 >; < оператор_2 >; ........... < оператор_n > until < логическое_выражение >;

где < логическое_выражение > (условие) - выражение булевого типа.

При записи условия допускается использование булевых операций, а также операций отношения. При этом операторы, стоящие между repeat и until, составляют тело цикла.

Оператор цикла repeat выполняется следующим образом [4, c. 105]:

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

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


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

Для выхода из цикла раньше времени используется оператор goto.

Пример. Вычислить корень квадратный из введенного с клавиатуры числа. При вводе отрицательного числа каждый раз компьютер будет возвращать в начало цикла, поскольку выйти из цикла можно, если ввести неотрицательное число x: x >= 0.

1 var

2 x: integer;

3

4 begin

5 repeat

6 readln(x)

7 until x >= 0; { <-- выходим, если x>=0 }

8 writeln('Квадратный корень: ', sqrt(x):0:4);

9 readln

10 end.

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

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

Заключение

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

Алгоритм обладает некоторыми важными свойствами, которые отличают его от любых других предписаний.):

- понятность (для конкретного исполнителя);

- дискретность (команды последовательны, с точной фиксацией моментов начала и конца выполнения команды);

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

- результативность (после конечного числа шагов задача решается или же становится ясно, что процесс решения не может быть продолжен):

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

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


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

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

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

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

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

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

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

Список использованных источников

  1. ГОСТ 33707-2016 (ISO/IEC 2382:2015) Информационные технологии (ИТ). Словарь. - М.: Стандартинформ, 2016
  2. ГОСТ 34.003-90 Информационная технология (ИТ). Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Термины и определения. - М.: Стандартинформ, 2019
  3. Абрамян А.В., Абрамян М.Э. Основы программирования на языке Паскаль в задачах. Электронное учебное пособие. - Ростов-на-Дону: ЮФУ, 2017
  4. Авдеюк О.А., Акулов Л.Г., Наумов В.Ю. Информатика и программирование: основы программирования на языке Паскаль: учебно-методическое пособие. — 2-е изд., исправл. — Волгоград: Волгоградский государственный технический университет, 2018. — 268 с.
  5. Алгоритм. Способы описания алгоритма. Учебно-методическое пособие для учителей информатики / сост. Е.А.Пархоменко, Ю.В.Сюбаева – Коломна: Лицей, 2017. – 33 с.
  6. Затонский А.В., Бильфельд Н.В. Программирование и основы алгоритмизации. Теоретические основы и примеры реализации численных методов. - М.: Изд-во РИОР, 2019. - 167 с.
  7. Кувшинов Д. Р. Основы программирования: учебное пособие для вузов / Д. Р. Кувшинов. — М.: Издательство Юрайт, 2019; Екатеринбург: Изд-во Урал. ун-та. — 104 с.
  8. Кудрец Д. М. Основы программирования на языке Pascal: учебное пособие. - М.: Программирование, 2018. - 50 с.
  9. Кузнецов А.А. Основы информатики: учеб. для общеобразоват. учеб. заведений / А.А.Кузнецов, Н.В.Апатова. - М.: Дрофа, 2016. - 176 с.
  10. Медведик В. И. Практика программирования на языке Паскаль. Задачи и решения. - М.: Изд-во ДМК-Пресс, 2017. - 590 с.
  11. Ожегов С. И. Толковый словарь русского языка. - М.: Мир и образование, 2019. - 1376 с.
  12. Основы программирования. Учебник с практикумом / под ред. Макаровой Н.В. - М.: КноРус, 2017. - 352 c.
  13. Парфилова Н.И. Программирование: Основы алгоритмизации и программирования: учебник / Н.И. Парфилова / под ред. Трусова Б.Г. - М.: Academia, 2018. - 32 c.
  14. Семакин И.Г. Основы алгоритмизации и программирования. Учебник / И.Г. Семакин, А.П. Шестаков. - М.: Academia, 2017. - 144 c.
  15. Симонович С. В. Информатика. Базовый курс. Учебник для вузов. - СПб.: Изд-во Питер, 2019. - 640 с.
  16. Трофимов В. В. Информатика в 2 т. Том 1: учебник / В. В. Трофимов; под редакцией В. В. Трофимова. — 3-е изд., перераб. и доп. — М.: Издательство Юрайт, 2019. — 553 с.
  17. Трофимов В. В. Основы алгоритмизации и программирования: учебник / В. В. Трофимов, Т. А. Павловская; под редакцией В. В. Трофимова. — М.: Издательство Юрайт, 2018. — 137 с.
  18. Угринович Н.Д. Информатика и информационные технологии. - М.: 2018. — 512 с.
  19. Филиппов Е.С. Разработка учебного алгоритмического языка для обучения школьников основам алгоритмизации и программирования // Информатика. 2018. № 6
  20. Фризен И.Г. Основы алгоритмизации и программирования (среда PascalABC.Net): учебное пособие / И.Г. Фризен. - М.: Форум, 2018. - 784 c.
  21. Чернышов П. И. Программная реализация задач средствами алгоритмических языков // Информатика. 2018. №12.
  22. Черпаков И. В. Основы программирования: учебник и практикум / И. В. Черпаков. — М.: Издательство Юрайт, 2019. — 219 с.
  23. Шень А. Программирование: учебное пособие. Издание: 6-е, дополненное. — М.: МЦНМО, 2017. — 320 с.