Опубликован: 09.11.2006 | Уровень: для всех | Доступ: свободно
Лекция 7:

Базовые алгоритмические структуры

< Лекция 6 || Лекция 7: 12 || Лекция 8 >
Аннотация: Рассматриваются основные понятия об алгоритме в программах и алгоритмизации решения задач.

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

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

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

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

  1. Конечность (дискретность) команд и выполняемых по ним действий алгоритма.
  2. Выполнимость в определенной операционной среде (в определенном классе исполнителей).
  3. Результативность отдельных команд и всего алгоритма.
  4. Применимость алгоритма ко всем возможным входным данным конкретного класса задач.
  5. Определенность (детерминированность) команд и всего алгоритма для всех входных данных.
  6. Формализованное, конструктивное описание (представление) команд алгоритма.
  7. Минимальная полнота системы команд алгоритма.
  8. Непротиворечивость любых команд алгоритма на любом наборе входных данных.

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

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

Для записи, исполнения, обмена и хранения алгоритмов существуют различные средства, языки, псевдокоды – блок-схемы, структурограммы (схемы Нэсси-Шнайдермана), Р-схемы, школьный алгоритмический язык (ШАЯ), различные языки программирования.

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

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

Program <имя (заголовок) алгоритма>;
  Uses <список подключаемых библиотек, если они нужны>; { комментарии, если нужны }
  Label <список меток (имен участков программ), если они нужны>; { комментарии }
  Const <список констант (не изменяемых величин), если они нужны>; { комментарии }
  Type  <список имен и типов структур данных, если они нужны>; { комментарии }
  Var    <список имен и типов переменных, если они нужны>; { комментарии }
    { < условия задачи и применимости алгоритма > }
    { < цель составления и выполнения алгоритма > }
Begin
  <команды ввода входных данных, если они нужны>; { комментарии }
  <тело алгоритма (команды управления и преобразования алгоритма)>; { комментарии }
  <команды вывода результатов (выходных данных), если они нужны>; { комментарии }
End.

Пример. Программа вычисления объема v правильного цилиндра с радиусом основания r и высотой h.

Program VСil;
Uses Crt; { подключение библиотеки ввода/вывода на экран "в звуке и цвете" }
Const pi = 3.14;
Var r, h, v: real;
  { для правильного цилиндра с радиусом основания r и высотой h }
  { вычислить и выдать на экран значение его объема v }
Begin
  ClrScr; { команда очистки экрана (от данных предыдущей задачи) }
  ReadLn (r, h); { ввод входных параметров }
  v:=pi*r*r*h; { вычисление объема по формуле для цилиндра }
  WriteLn (‘Вычисленный объем цилиндра равен ’, v) { вывод результата }
End.

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

Обычная запись Паскаль
Квадрат числа х sqr(x)
Корень квадратный из x sqrt (x)
Модуль |х| abs (x)
sin x sin(x)
cos x cos(x)
tg x tg(x)
ctg x ctg(x)
arcsin x arcsin (x)
arccos x arccos(x)
arctg x arctg(x)
Натуральный логарифм ln x ln(x)
Степень числа е = 2, 7... или еx exp(x)
Остаток от деления целого х на целое у x mod y
Частное от деления целого х на целое y x div y
Целая часть числа х (вещественного) int(x)
Случайное число от 0 до х rnd(x)
Длина текста х в символах length (x)

Пример. Результаты применения этих функций: sqrt(9) = 3, abs(–5) = 5, sin(0) = 0, cos(0) = 1, ln(1) = 0, exp(1 ) =e, 23 mod 5 = 3, 20 mod 5 = 0, 23 div 5 = 4, 20 div 5 = 4, int(2.7) = 2, int(2) = 2, rnd(0) = 0.231356, length(‘информ’) = 6.

Порядок выполнения операций (старшинство операций – по убыванию) в языке Паскаль:

  1. вычисление выражений в скобках;
  2. вычисление стандартных функций;
  3. умножение и деление (обозначаются "*" и "/");
  4. сложение и вычитание (обозначаются "+" и "–").

Пример. Выражение b*c + (d/t*(v/n/m))*sin(x) вычисляется в следующем порядке (слева направо): v/n, (v/n)/m, d/t, (d/t)*(v/n/m), sin(x), b*c, (d/t*(v/n/m))*sin(x), b*c+(d/t*(v/n/m))*sin(x) и эквивалентно математическому выражению: bc+\frac{dv}{tnm}\mathrm{sin} x.

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

  1. Команда описания (заголовка) алгоритма (программы) :

    Program <имя алгоритма>;,

    где <имя алгоритма> – имя, задаваемое составителем программы (краткое, полное, грамотное отражение сути алгоритма ).

  2. Ввод – команда ввода в рассмотрение (в тело алгоритма ) тех или иных входных параметров:

    Read (<список вводимых параметров>);

    или

    ReadLn (<список вводимых параметров>);.

    Первая команда вводит данные с текущей позиции экрана (где стоит курсор), вторая – с новой строки экрана.

  3. Вывод – команда вывода на экран тех или иных входных или выходных параметров алгоритма:

    Write (<список выводимых параметров>);

    или

    WriteLn (<список выводимых параметров>);.

    Первая команда выводит данные с текущей позиции экрана (где стоит курсор), вторая – с новой строки экрана.

  4. Присваивание – команда изменения текущего значения переменной вида:

    <идентификатор> := <выражение>;,

    где <идентификатор> соответствует имени переменной, <выражение> – корректно записанное выражение. Знак ":=" означает последовательное выполнение двух действий: определение текущего значения <выражения> и замена текущего значения переменной, имя которой задано <идентификатором>, на новое значение, равное значению <выражения>.

  5. Команда начала алгоритма (блока) – команда Begin.
  6. Команда завершения алгоритма (блока) – команда End.
  7. Команда вставки комментариев в текст алгоритма имеет вид:

    <комментируемое в программе> <текст комментария>.

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

< Лекция 6 || Лекция 7: 12 || Лекция 8 >
Ирина Рыбакова
Ирина Рыбакова
тест
Анастасия Тимофеева
Анастасия Тимофеева
Как посмотреть свои результаты тестов и экзамена после того, как получил сертификат по курсу.
Андрей Гончарук
Андрей Гончарук
Россия, Тольятти