Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на вопросы по информатики.doc
Скачиваний:
537
Добавлен:
13.02.2016
Размер:
1.09 Mб
Скачать

26 Программы линейной структуры. Операторы ветвления. Операторы цикла.

Простейший алгоритм - это алгоритм линейной структуры. Его команды выполняются одна за другой по порядку, т.е. линейно, и этот порядок ничем и никогда не нарушается. Линейной структурой обладает, к примеру, программа передач телевидения. Передачи показывают одна за другой, и очередная начинается после того как закончилась предыдущая. Алгоритм линейной структуры напоминает план, список указаний исполнителю в порядке очередности их исполнения. Рассмотрим например, план вычисления выражения (a+b)/(a-b) для исполнителя, который за один шаг может выполнить только одно арифметическое действие: 1. Прочитать a и b. 2. Сложить a и b. 3. Вычесть b из a. 4. Результат пункта 2 разделить на результат пункта 3. 5. Показать результат пункта 4. Особенность этих указаний в том, что исполнитель не может уклониться от выполнения пунктов одного за другим, даже если из предыдущих пунктов известно, что очередное действие бессмысленно. Например, если a = 5 и b = 5, то после выполнения 3 пункта мы получим 0, и деление станет невозможным. Однако исполнитель все равно попытается его выполнить (и получит ошибку!), потому что не умеет различать такие ситуации. Из-за этой особенности алгоритмы чисто линейной структуры находят очень ограниченное применение. Любая достаточно сложная задача предполагает ситуации типа "а если... сделать так-то, если же нет - сделать что-то другое". Т.е. порядок выполнения плана зависит от каких-то условий, и, значит, линейность нарушается. Но, строго говоря, любой план при достаточно большом обобщении имеет линейную последовательность выполнения, хотя отдельные его пункты могут предполагать вариантность. Поэтому линейную структуру можно рассматривать как "каркас" сложного плана, как базисную его структуру. Для составления алгоритма нужно продумать порядок действий, которые необходимо выполнить для решения, и расположить их в нужном порядке. Можно записать их словами, по пунктам.  Пользуясь блок-схемой, можно проще написать программу на Паскале. В простейшем случае каждому блоку соответствует один оператор Паскале, а порядок их в программе определяется стрелками блок-схемы. Попробуем решить несложный пример, руководствуясь этими замечаниями. Например, напишем программу, которая складывает два введенных нами числа и показывает результат. Напишем по порядку действия, которые должна выполнить такая программа: Запишем эти пункты : 1. Ввести два числа. 2. Сложить введенные числа и запомнить результат. 3. Вывести результат. Заметьте, для описания шагов алгоритма мы пользуемся выражениями типа "два числа", "результат", "введенные числа" для того, чтобы рассказать, с чем должна работать программа. Это не самый рациональный путь. Лучше дать таким объектам ИМЕНА, и ссылаться на них по имени. Например, назовем вводимые нами числа a и b, а результат - r. Тогда наш алгоритм примет вид: 1. Ввести a и b. 2. a+b занести в r. 3. Вывести r. Теперь попытаемся составить программу. Она отличается от проведенного алгоритма строгостью записи: все ее действия записаны по строго определенным правилам. Конкретный вид правил задается языком программирования, на котором мы собираемся писать программу. В Паскале наш алгоритм будет выглядеть так: 1. Операция ввода в Паскале называется readln, после названия в круглых скобках указывается, что именно надо вводить.

 В нашем случае это a и b, поэтому пишем: readln (a, b) 2. Второй шаг задается с помощью оператора присваивания: r := a + b. Эта запись означает "сложить a и b и занести результат в r". 3. Операция вывода записывается как writeln (а в скобках указывается, что выводить): writeln(r) Алгоритм переведен на Паскаль. Но это еще не программа. Программа в Паскале имеет вид: program <имя>; <описание программных объектов> begin <алгоритм> end. Паскаль требует, чтобы мы указали ему, что означает каждое имя, используемое в программе. Это называется описанием. Мы указываем объект, его свойства, и как мы его будем называть в программе. Без этого Паскаль программу не поймет. У нас 3 объекта: a, b, r. Они характеризуются тем, что могут хранить любое число (ведь мы можем ввести любое!). Такие объекты в программировании называются ПЕРЕМЕННЫМИ. Допустим, мы можем вводить только целые числа. Тогда a, b, r будут ЦЕЛЫМИ ПЕРЕМЕННЫМИ. Описания таких объектов в Паскале выглядит так: var a, b, r: integer; VAR означает, что описываются переменные, INTEGER - целого типа, а a, b и r - их имена. После того, как мы соберем все вышеописанное, мы получим программу на Паскале: program prim1; var a, b, r: integer; begin readln(a, b); r := a + b; writeln(r); end. Oписания и операторы (шаги) отделяются друг от друга ';' (точкой с запятой). Это необходимо, чтобы определить, где кончается один и начинается другой. Эта программа будет работать (можете проверить), но... она неудобна в обращении. Ни ввод, ни вывод не сопровождаются пояснениями. В данной программе это не так страшно, но представьте себе более сложную. Не лучше ли добавить комментарии? Например: program prim2; var a, b, r: integer; begin writeln('Введите a и b:'); readln(a, b); r := a + b; writeln('a + b = ', r); readln; end. То, что в операторе вывода записано в кавычках, выводится как текст. Теперь программа в самом начале работы напечатает: Введите a и b: и мы будем знать, что она от нас ждет. Нужно запомнить: любой ввод и вывод должен быть комментирован! А последний оператор (readln;) позволяет задержать на экране результат до тех пор, пока не будет нажат ВВОД. Без него результат вряд ли успеете увидеть... разве только по ALT-F5 (кроме ABC Pascal).

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

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

Виды условных инструкций

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

Операторы цикла

Известно, что для реализации любого алгоритма достаточно трех структур управления: последовательного выполнения, ветвления по условию и цикла с предусловием. Любой язык программирования предоставляет в распоряжение программиста набор всех трех управляющих конструкций, дополняя их для удобства программирования другими конструкциями: цепочки ветвления и разнообразные формы цикла с предусловием, а также циклы с постусловием.  Мы уже познакомились с операторами ветвления Perl, а теперь пришло время узнать, какие конструкции цикла можно применять в Perl. Их всего три: while, for и foreach. Все они относятся к классу составныхоператоров и, естественно, определяются в терминах блоков БЛОК.