КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Операторы
Операторы, это синтаксические конструкции, предназначенные как для записи алгоритмических действий по преобразованию данных, так и для задания порядка выполнения других действий. Набор операторов языка Free Pascal составляет минимальное множество конструкций, необходимых для наглядного и однозначного представления алгоритмов в стиле структурного программирования. Набор операторов языка показан на рис.7. Для первого знакомства с операторами языка достаточно ограничиться основными из них.
Рис. 7. Классификация видов операторов. 4.5.1. Простые операторы. Простыми называются операторы, которые не содержат в себе других операторов. Оператор присваивания предназначен для вычисления нового значения некоторой переменной или функции. Формат записи оператора присваивания: <имя переменной>: = <выражение>; Например, x:= x+1; color:= red; Присваивания допускаются для всех типов, но тип выражения должен быть совместим с типом переменной. Левая и правая части оператора присваивания совместимы в следующих случаях: типы обеих частей одинаковы; левая часть вещественного типа, правая - целого, но не наоборот; левая часть строкового типа, правая - символьного, но не наоборот. Безусловный переход описывается оператором безусловного перехода goto. Формат оператора: goto <метка>;. Меткой должен быть помечен оператор, на который происходит переход, причём метка и этот оператор разделяются двоеточием, т.е. операторная строка будет иметь вид: <метка>: <оператор, на который происходит переход>;. Все используемые метки должны быть перечислены в разделе описаний после служебного слова label. Одной и той же меткой можно пометить только один оператор. Не рекомендуется делать переходы к операторам, находящимся внутри составных. Это может вызвать непредсказуемую ошибку. Оператор Goto не рекомендуется использовать для досрочного выхода из подпрограммы. Для этого предназначена специальная процедура Exit. Пустой оператор не выполняет никакого действия и никак не отображается в программе. В основном он используется для передачи управления в конец составного оператора. Например: ............; label out; //Объявление метки ... begin //Открывающая операторная скобка ... goto out; //Переход к метке ... out: //Пустая операторная строка end. //Закрывающая операторная скобка 4.5.2.Составной оператор. Составной оператор - это последовательность произвольных операторов программы, заключённая в операторные скобки: begin Отдельные операторы внутри составного оператора ............ отделяются друг от друга точкой с запятой. begin Составной оператор применяется в тех случаях, когда грамматика языка допускает использование только …..... одного оператора, в то время как семантика програм- end; мы требует задания некоторой последовательности ............. операторов. Среди операторов составного оператора end. могут быть и другие составные операторы. В этом случае после end также ставиться точка с запятой. Оператор условного перехода в общем случае состоит из трёх служебных слов: if (если), then (то), else (иначе). Полный формат условного оператора имеет вид: if <условие> then <оператор 1> else <оператор 2>; Вторая часть оператора, начиная со слова else, необязательна, но в такой полной форме оператор очень хорошо описывает базовую структуру "ветвление" (рис. 2 б). Действительно, служебное слово then отображает ветвь "да", а else - ветвь "нет". В качестве операторов 1 и 2 может быть любой, но только один, оператор языка. В качестве условия может быть как простое отношение, например, X>0, так и выражение, например, X + 2*Z >0. На рис.8,а показана алгоритмическая структура, допускающая укороченную форму записи условного оператора: if <условие> then <оператор 1>; <оператор 2>; Условный оператор, называется вложенным, если в один условный оператор вкладывается другой. Степень вложенности может быть произвольной. На рис.8,б показан вариант алгоритмической структуры, обуславливающая использование вложенного условного оператора: if <условие1> then <оператор1> else if <условие2> then <оператор3> else <оператор2>; <оператор4>;
Рис. 8. Варианты структуры ветвления. Особенности записи сложных условий: При помощи логических операций AND (логическое «И») и OR (логическое «ИЛИ») из простых условий можно строить сложные. Например: 1) 2)
Примеры записи условия: 1) if (x<=b) and (x>=a) then <выражение C1> else <выражение C2>; или 2) if (x<a) or (x>b) then <выражение C2> else <выражение C1>; Примечание: скобки необходимы, поскольку логические операции "старше" операций сравнения. После записи условного оператора обязательно его тестирование. Используя алгоритм выполнения этого оператора компилятором, необходимо проанализировать все пути ветвлений, что поможет найти и устранить ошибки до выполнения программы, а, следовательно, существенно сократить время отладки программы. Оператор выбора варианта Case … of является обобщением условного оператора для случая произвольного числа альтернатив. При его использовании различным значениям некоторого выражения сопоставляются соответствующие им операторы. В формате записи оператора варианта селектор - переменная порядкового типа; n1, n2,..nn – одиночные константы, p1,.. pn – операторы; в списке перечисляемые константы разделяются запятыми, например: 1,3,7 или ’A’..’Z’. Все константы списка должны быть разными и иметь порядковый тип, совместимый с типом селектора. Оператор варианта работает следующим образом. Сначала вычисляется текущее значение селектора. Затем это значение сравнивается с константами. При совпадении значения селектора с одной из констант будет выполнен оператор, "помеченный" данной константой. Если значение селектора не совпадает ни с одной константой, то данный оператор не выполняет никаких действий. Чтобы задать некоторые действия (оператор р) для случая такого несовпадения можно использовать альтернативу else.
Рис. 9. Вариант структуры выбора. Циклические операторы предназначены для многократного вычисления некоторых действий, предусмотренных условием задачи. Для организации любого цикла необходимо выполнить следующие действия: - задать начальные значения переменной цикла; - после каждого повторения цикла изменять значения его переменной на заданный шаг; - при каждом повторении цикла проверять условие выхода из него и в зависимости от итога проверки либо переходить к началу цикла, либо выходить из него. Различают два типа циклов - цикл с заданным и неизвестным числом повторений. Циклы первого типа называются регулярными, а второго типа - итеративными. Регулярный цикл организуется оператором for. Имеется две формы его записи: for <переменная цикла>: = N to K do <оператор>; for <переменная цикла>: = К downto N do <оператор>; В первой форме записи оператора for при каждом новом повторе цикла значение шага увеличивается на 1 (инкрементный вариант), а во второй форме – уменьшается на 1 (декрементный вариант). В операторе for N (начальное значение) и K (конечное значение) могут быть числами или выражениями. Переменная цикла должна быть целого типа и объявлена в том же блоке, где находится оператор цикла. Нельзя в теле цикла менять значение переменной цикла. Если в цикле требуется выполнить несколько операторов, то их следует превратить в составной, используя операторные скобки. Оператор for выполняется следующим образом. Сначала вычисляются и запоминаются начальное и конечное значения переменной цикла. Затем переменной цикла присваивается начальное значение. Далее, значение переменной сравнивается с ее конечным значением. Если текущее значение переменной оказывается меньшей или равной ее конечному значению в первом варианте записи оператора, либо большей или равной - во втором варианте записи, выполняется тело цикла. После этого значение переменной изменяется на 1, и вся процедура повторяется вновь. Если результат сравнения противоположный, происходит выход из цикла. Регулярные циклы используются для вычисления сумм и произведений конечных рядов. В таких задачах используется сочетание приёмов вычисления сумм и произведений рядов с регулярным циклом.Если тело цикла содержит другие циклы, то такая структура называется структурой вложенных циклов. Переменные каждого цикла должны быть разными и изменяться не одновременно. Итеративные циклы характеризуются последовательным приближением к искомому результату. В качестве критерия выхода из итеративного цикла часто выбирается достижение заданной точности вычислений. Структура "пока" (рис 3,а) реализуется оператором while – do (пока есть – делать). Это цикл с предусловием. Формат оператора: while <выражение> do <тело цикла>;. В теле цикла допускается только один оператор. Если в цикле требуется выполнить несколько действий, то надо применить составной оператор. Оператор while - do выполняется следующим образом. Сначала проверяется истинность выражения. Пока <выражение> = True (истинно), оператор выполняется. При условии <выражение> = False (ложь) происходит выход из цикла. Структура " до " (рис 3,б) реализуется оператором repeat – until (повторять – пока не станет). Это цикл с постусловием. Формат оператора: repeat <тело цикла> until < выражение >; Здесь в теле цикла допускается последовательность операторов, а результат выражения должен быть логического типа. Оператор repeat - until выполняется следующим образом. Сначала исполняется тело цикла, а затем осуществляется проверка соответствия выражения истине (True ). Если <выражение> = True, то производится выход из цикла. Служебные слова repeat и until образуют операторные скобки. Поэтому тело цикла может содержать несколько операторов. Чтобы гарантировать выход из цикла целесообразно проверять число проходов. Процедура Break позволяет завершить цикл, не дожидаясь его окончания. Процедура Continue позволяет начать новую итерацию цикла, даже если текущая не завершена.
Дата добавления: 2014-12-27; Просмотров: 720; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |