& Алгоритмические средства информатики

 

Введение в моделирование и алгоритмизацию

Понятие о моделях и моделировании

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

Поэтому, чтобы привлечь компьютер к исследованию объекта, процесса, явления или к “рутинной” обработке информации, прежде всего надо:

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

 

Общие сведения

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

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

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

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

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

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

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

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

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

Далеко не всегда созданные исследователем модели хорошо описывают реальность: бывают грубые, плохие и никуда не годные модели. Иногда изучаемый объект крайне сложен, иногда объект и сложен, и недоступен для наблюдения (например, Вселенная с ее экстремальными условиями, которые невозможно воспроизвести в лаборатории). Однако бывают и вообще ложные модели, создатели которых, пользуясь для прикрытия “ученой” математикой, выдумывают всевозможные “формулы” предсказаний будущего, истолкования исторических процессов и т. п.

В зависимости от поставленной задачи, способа создания модели и предметной области различают множество типов моделей.

Существуют общепринятые и широко используемые типы:

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

Компьютер и моделирование

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

Математические модели

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

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

Экономико-математическое моделирование, являясь одним из системных методов исследования, позволяет в формализованной форме определить причины изменений экономических явлений, закономерности этих изменений, их последствия, а также делает возможным прогнозирование экономических процессов.

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

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

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

Информационные модели

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

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

В данном курсе информационные модели рассматриваются в разделе построения баз данных.

Фундаментальные понятия этих моделей:

объект (нечто, существующее и различимое; например, книга),

атрибут (свойство, характеристика объекта; например, название книги или издание),

значение атрибута (например, “Информатика”).

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

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

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

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

Предположим, что набор атрибутов для библиотеки - следующий:

У конкретной книги каждый из этих атрибутов примет то или иное значение. Например, для книги № 10: название “Анализ финансовых операций” (текст), год издания 1998 (дата) и т. д.

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

 

 

ПОНЯТИЕ АЛГОРИТМА

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

Понятие алгоритма, относящееся к фундаментальным концепциям информатики, возникло задолго до появления ЭВМ и стало одним из основных понятий математики.

Слово “алгоритм” произошло от имени среднеазиатского математика аль-Хорезми
(IX в.) и использовалось в математике для обозначения правил выполнения четырех арифметических действий: сложения, вычитания, умножения и деления. В настоящее время понятие алгоритма используется не только в математике. Его применяют во многих областях человеческой деятельности, например, говорят об алгоритме управления производственным процессом, алгоритме игры в шахматы, алгоритме пользования бытовым прибором, алгоритме поиска пути в лабиринте, алгоритме управления полетом ракеты и т. п.

Для пояснения понятия “алгоритм” важное значение имеет определение понятия “исполнитель алгоритма”. Алгоритм формулируется в расчете на конкретного исполнителя, например человека, особую машину автомат и т. д.

Алгоритм является руководством к действию для исполнителя, поэтому значение слова “алгоритм” близко по смыслу к значению слов “указание” или “предписание”.

Алгоритмпонятное и точное предписание (указание) исполнителю совершить определенную последовательность действий для достижения указанной цели или решения поставленной задачи.

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

Свойства алгоритма:

  1. Результативность
    Алгоритм имеет некоторое число
    входных величинаргументов, задаваемых до начала работы Цель выполнения алгоритма получение результата (результатов), имеющего вполне определенное отношение к исходным данным. Можно сказать, что алгоритм указывает последовательность действий по переработке исходных данных в результаты.
  2. Массовость (универсальность)
  3. Для алгоритма можно брать различные наборы входных данных, т. е. можно применять один и тот же алгоритм для решения целого класса однотипных задач, различающихся исходными данными. Это свойство алгоритма обычно называют массовостью. Вместе с тем существуют и такие алгоритмы, которые применимы только к единственному набору исходных данных. Поэтому понятие массовости требует уточнения. Можно считать, что для каждого алгоритма существует свой класс объектов, допустимых в качестве исходных данных. Тогда свойство массовости означает применимость алгоритма ко всем объектам этого класса.

  4. Понятность
    Чтобы алгоритм можно было выполнить, он должен быть понятен исполнителю. Чтобы этот алгоритм мог быть также выполнен человеком, необходимо записать алгоритм на языке, понятном исполнителю.
    Понятность алгоритма означает знание исполнителя о том, что надо делать для исполнения этого алгоритма. Таким образом, при формулировке алгоритма необходимо учитывать возможности и особенности исполнителя, на которого рассчитан алгоритм.
  5. Конечность (дискретность)
  6. Алгоритм представлен в виде конечной последовательности шагов. Говорят, что алгоритм имеет дискретную структуру. Следовательно, его исполнение расчленяется на выполнение отдельных его шагов (выполнение каждого очередного шага начинается после завершения предыдущего). Выполнение алгоритма заканчивается после выполнения конечного числа шагов. При выполнении алгоритма некоторые его шаги могут повторяться многократно. В математике существуют вычислительные процедуры, имеющие алгоритмический характер, но не обладающие свойством конечности. Так, можно сформулировать процедуру вычисления числа p . Такая процедура описывает бесконечный процесс и никогда не завершится. Если же прервать ее искусственно, например, ввести условие завершения процесса вычислений вида: “Закончить вычисления после получения п десятичных знаков числа p ”, то получится алгоритм вычисления п десятичных знаков числа p . На этом принципе основано получение многих вычислительных алгоритмов: строится бесконечный, сходящийся к искомому решению процесс. Он обрывается на некотором шаге, и полученное значение принимается за приближенное решение рассматриваемой задачи. При этом точность приближения зависит от числа шагов.

  7. Определенность (точность)
  8. Каждый шаг алгоритма должен быть четко и недвусмысленно определен и не должен допускать произвольной трактовки исполнителем. При исполнении алгоритма исполнитель должен действовать строго в соответствии с его правилами и у него не должно возникать потребности предпринимать какие-нибудь действия, отличные от предписанных алгоритмом. Иными словами, алгоритм рассчитан на чисто механическое исполнение. Эта очень важная особенность означает, в частности, что если один и тот же алгоритм поручить для исполнения разным исполнителям, то они придут к одному и тому же результату, лишь бы эти исполнители понимали алгоритм. Именно определенность алгоритма дает возможность поручить его исполнение автомату, не обладающему “здравым смыслом”.Таким образом, формулировка алгоритма должна быть так точна, чтобы полностью определять все действия исполнителя.

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

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

 

СРЕДСТВА ЗАПИСИ АЛГОРИТМОВ

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

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

Словесная запись алгоритма

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

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

  1. Если числа равны, то взять первое число в качестве ответа и закончить исполнение алгоритма, иначе перейти к п. 2.
  2. Определить большее из двух чисел.
  3. Заменить большее число на разность большего и меньшего чисел.
  4. Перейти к п. 1.

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

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

Структурные схемы алгоритмов

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

Пример структурной схемы алгоритма Евклида

Для записи внутри блоков команды используется естественный язык с элементами математической символики. В результате проверки условия возникают два возможных пути для продолжения алгоритма. Эти пути изображаются стрелками со знаками “+” и “-” (иногда пишут также “Да” и “Нет”).

Переход по стрелке со знаком “+” происходит, если условие соблюдено, а переход по стрелке “-”, если условие не соблюдено.

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

Псевдокоды

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

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

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

алгоритм алгоритм Евклида;

начало

пока первое число не равно второму

повторять

начало

если числа равны

то стоп все;

иначе определить большее из двух чисел;

заменить большее число на разность большего и меньшего чисел

конец;

взять первое число в качестве ответа

конец

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

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

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

Однако на практике в качестве исполнителей алгоритмов используются специальные автоматы электронные вычислительные машины (ЭВМ). Поэтому алгоритм, предназначенный для исполнения на ЭВМ, должен быть записан на языке, “понятном” ЭВМ. И здесь на первый план выдвигается необходимость точной записи команд, не оставляющей места для произвольного толкования их исполнителем. Следовательно, язык для записи алгоритма должен быть формализован. Такой язык принято называть языком программирования, а запись алгоритма на этом языкепрограммой для ЭВМ.

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

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

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

 

 



 

 

 

 

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

Универсальные языки высокого уровня обеспечивают создание различных программ (задач), например Алгол, Си, ПЛ/1 и т.д..

Проблемно-ориентированные языки создавались под какие-то конкретные классы задач, например, Фортран - научные расчеты, Кобол - экономические расчеты, Лисп и Пролог - искусственный интеллект и т.д.

Объектно-ориентированные языки четвертого поколения (4GL — forth-generation language) и программирование основаны на создании модели системы, как совокупности объектов и использует следующие базовые понятия: класс, объект, событие, свойства объекта, метод обработки. Первым языком программирования этой группы был - Симула-67. В настоящее время к этим языкам относятся - С++, Visual Basic, Java Script и динамический HTML и другие современные языки программирования.

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

Например, интересна эволюция языка программирования BASIC. Он был задуман как универсальный язык для начинающих (по аналогии с BASIC ENGLISH, — подмножеством английского языка, выделенным для обучения иностранцев). Первые версии (или “диалекты”) этого языка содержали небольшое количество самых необходимых команд и предусматривали только режим интерпретации. Однако современные варианты языка BASIC не только не уступают по возможностям многим “грандам” (типа С), но иногда и превосходят их. Например, Visual Basic используется в суперсовременных системах, основанных на так называемой технологии “клиент-сервер”. Одновременно BASIC стал своеобразным “эсперанто” в мире информационной технологии. На этом языке часто пишутся примеры программ или их фрагментов в книгах, статьях, инструкциях к программным продуктам.

Фирма Microsoft использует Visual Basic для расширения функций своих программных продуктов. Уже в пакете Microsoft Office для Windows 3-х пользователям и программистам предлагались диалекты Word Basic и Access Basic, а ныне в Microsoft Office предусмотрен универсальный язык Visual Basic for Applications (VBA — Visual Basic для приложений). Ранее этот язык использовался только в Excel 5.0. С помощью VBA можно создавать собственные программные модули, собственные интерфейсы для офисных приложений Word, Excel, Access.

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

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

Программа-интерпретатор всегда работает совместно с исходным текстом. Она разбирает каждую инструкцию исходного текста (интерпретирует ее) и немедленно исполняет (т. е. файл на машинном языке не создается). Программа в режиме интерпретации работает гораздо медленнее, чем такая же программа в машинном коде. Это связано с тем, что каждую инструкцию приходится разбирать во время выполнения (а не заранее, как при компиляции). Многие инструкции в программе выполняются многократно, — и при каждом выполнении интерпретируются заново. Поэтому всюду, где возможно, стремятся заменить режим интерпретации режимом компиляции. Правда, интерпретация имеет и свои преимущества: с ее помощью проще отлаживать программу. Иногда пользуются режимом “псевдокомпиляции”: ускоряют интерпретацию за счет предварительного запоминания тех или иных элементов разобранных команд в памяти машины.

Современное программирование существенно отличается от технологии разработки программ для старых ЭВМ. Среди относительно новых особенностей и направлений этой технологии:

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

СТРУКТУРЫ АЛГОРИТМОВ

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

Многие языки пользуются похожими принципами организации программ, но —разным синтаксисом.

Алгоритмы строятся из некоторых жестких структур, состоящих из отдельных базовых элементов.

Простые команды

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

Значение переменной величины может быть изменено с помощью команды присваивания. Например, команда x:=1 означает, что переменной x присваивается значение 1, а команда y:=y+1 что переменной y присваивается значение, которое на 1 больше ее прежнего значения.

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

ввод(x, у)

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

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

 

Составные команды

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

Команда следования

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

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

Команда ветвления

 

 

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

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

В том случае, когда условие соблюдено, продолжение исполнения алгоритма происходит по стрелке “+”, в противном случае по стрелке “—”.

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

Команда повторения (цикл)

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

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

Рассмотрим два типа команды повторения.


+ --


+


Схема цикла с предусловием

 

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


- +

Схема цикла с постусловием


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

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

 

СТРУКТУРНОЕ ПРОЕКТИРОВАНИЕ

Задачи, решаемые на ЭВМ, являются математическими моделями процессов или явлений реальной жизни. В математической модели находят отражение наиболее существенные связи между реальными объектами. Модели реальных объектов вместе с присущими им связями образуют структуры данных, процесс обработки которых и описывается с помощью алгоритмов.

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

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

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

Существует несколько методов проектирования:

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

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