logo search
VT

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

Помимо операторов условного перехода существует также оператор безусловного перехода goto. Формат:goto метка

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

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

Оператор условного перехода в Турбо Паскаль имеет вид:

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

условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.

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

else - часть в операторе if может отсутствовать:

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

Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.

Следует помнить, что синтаксис языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно надо объединять в составной оператор (окаймлять операторными скобками begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно.

33. Метка (англ. label) — символьное имя, идентификатор для более удобного указания данных и кода в языках программирования. Позволяет программисту обходиться без вычисления и пересчёта адресов и смещений внутри программы (эти действия за него выполняет компилятор)

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

34.35.36. Алгоритм циклической структуры - это алгоритм, в котором происходит многократное повторение одного и того же участка программы. Такие повторяемые участки вычислительного процесса называются циклами. Программа циклической структуры содержит один или несколько циклов. Различают детерминированные циклы с заранее известным числом повторений и итерационные циклы, в которых число повторений заранее неизвестно. Изменяющаяся в цикле переменная называется параметром цикла.

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

В языке Паскаль существует 3 вида циклов:

1) цикл с параметром или цикл типа for,

2) цикл с предусловием или цикл типа while,

3) цикл с постусловием или цикл типа repeat ... until.

В цикле типа for число повторений известно заранее, в циклах типа while и repeat ... until число повторений цикла заранее неизвестно, производится проверка условия повторения цикла: в цикле типа while - перед циклом, в цикле типа repeat ... until - после его окончания. В циклах типов for и while повторяющяся часть (тело цикла) состоит из одного оператора, если требуется выполнить в цикле несколько операторов, они заключаются в операторные скобки begin ... end, образуя составной оператор. В цикле типа repeat ... until тело цикла помещается между зарезервированными словами языка (лексемами) repeat и until, операторные скобки не требуются, в названии цикла его тело условно обозначается тремя точками. С помощью цикла типа for удобно находить суммы, произведения, искать максимальные и минимальные значения и т.п. При нахождении суммы некоторой переменной, например S присваивается значение 0, затем в цикле к этой переменной прибавляется соответствующий член заданной последовательности. При нахождении произведения переменной присваивается значение 1, затем в цикле эта переменная умножается на общий член последовательности.

Цикл повторяется до тех пор, пока условие записанное после ключевого слова until, будет ложным (не выполняется). Как только это условие выполнится, происходит выход из цикла. После окончания цикла производится печать результата (оператор writeln). Отметим, что цикл с предусловием (типа while)  может не выполниться ни разу, цикл с постусловием repeat ... until выполнится по крайней мере 1 раз. Когда число повторений цикла неизвестно заранее, применяются циклы с предусловием или с остусловием . Когда число повторений цикла известно заранее, как правило, применяется цикл типа for. Но любой цикл типа for можно заменить циклом с предусловием или постусловием.

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

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

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

Полный условный оператор if: If <условие> Then <оператор 1> Else <оператор 2>;

Неполный условный оператор: If <условие> Then <оператор>;

Алгоритм выполнения полного условного оператора:

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

  2. Если условие истинно, то выполняется оператор 1, указанный после слова Then(то).

  3. Если условие ложно, то выполняется оператор 2, записанный после слова  Else (иначе)

В неполном ветвлении ветвь Else отсутствует,  в случае невыполнения условия ничего делать не надо. Происходит переход к следующему оператору.

Если в качестве оператора должна выполняться серия операторов, то они объединяются в операторные скобки Begin-End.

Решение задач.

  1. Найти наибольшее из трех данных чисел.

  2. Запишите условный оператор, в котором значение переменной вычисляется по формуле: a + b, если a - нечетное и a*b, если a - четное.

  3. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от 0.

  4. После выполнения операторов a := 0; If a<>0 Then; a := 2 значение переменной равно двум. Объясните почему.

  5. Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае - сообщение ''M на N нацело не делится''.

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

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

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

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

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

41. Функцией называется фрагмент программного кода, обладающий уникальным именем и предназначенный для решения конкретной задачи. Функция вызывается по имени в разных точках программы, что позволяет многократновыполнять фрагмент с указанным именем. Преимущество такого решения заключается в том, что блок кода пишется всего один раз, а затем легко модифицируется по мере необходимости. Если не совсем понятно, просто читайте дальше, думаю, постепенно всё прояснится. Вообще-то, с некоторыми функциями и их работой мы уже знакомы.  Например, с функциями mail(), fopen(), fclose(), file(), fgets() и др. От других конструкций языка php функция отличается «хвостом» в виде скобок, в которых могут присутствовать некоторые аргументы.

Существует два вида функций:

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

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

Особенность таких функций в том, что их нужно определять. То есть, перед именем самой функции указать, что перед нами функция, а не что-то ещё. Вот так:

function имя_функции (аргумент 1, аргумент 2, …)  { некоторые операции, выполняемые при вызове функции; }

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

Важно: имя функции не должно совпадать с зарезервированной функцией, иначе программа выдаст ошибку! В отличие от переменной, имя функции НЕ чувствительно к регистру ( имя_функции и ИМЯ_ФУНКЦИИ – это одно и то же).

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

Внутри функции (между фигурными скобками) может быть любой верный php-код.

Функции могут создаваться в любом месте php-кода, нодля удобства лучше это делать в самом начале сценария.

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

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

42.----