Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Логические выражения в управляющих операторах
Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Раньше мы его описывали в таком виде: If <условие> Then <оператор 1> Else <оператор 2>; Кроме того, возможно использование неполной формы условного оператора: If <условие> Then <оператор>; Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы (рис. 20).
То, что мы раньше называли условием, есть логическое выражение, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться <оператор 1> (после Then), если false, то <оператор 2> (после Else) для полной формы или сразу следующий оператор после условного для неполной формы (без Else). Пример 1. По длинам трех сторон треугольника а, b, с вычислить его площадь. Для решения задачи используется формула Герона
где р = (а + b + с) / 2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон. Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, мы можем сразу «отфильтровать» все варианты неверных исходных данных. Program Geron; Var A,B,C,P,S: Real; Begin WriteLn('Введите длины сторон треугольника:'); Write('а='); ReadLn(A); Write('b='); ReadLn(В); Write ('c='); ReadLn(C); If (A>0) And (B>0) And (00) And (A+B>C) And (B+С>A) And (A+C>B) Then Begin P:=(A+B+C)/2; S:=Sqrt(P*(P-A)*(P-B)*(P-C)); WriteLn('Площадь=',S) End Else WriteLn('Неверные исходные данные') End. Теперь рассмотрим синтаксическую диаграмму оператора цикл-пока, или цикл с предусловием (рис. 21).
Сначала вычисляется <Логическое выражение>. Пока его значение равно true, выполняется <0ператор> — тело цикла. Здесь <Oператор> может быть как простым, так и составным. Пример 2. В следующем фрагменте программы на Паскале вычисляется сумма конечного числа членов гармонического ряда
Суммирование прекращается, когда очередное слагаемое становится меньше ε или целая переменная i достигает значения MaxInt. S:=0; I:=l; While (l/I>=Eps) And (I<MaxInt) Do Begin S:=S+1/I; I:=1+1 End; Синтаксическая диаграмма оператора цикл-до, или цикл с постусловием, представлена на рис. 22.
Исполнение цикла повторяется до того момента, когда <Логическое выражение> станет равным true.
Предыдущая задача с использованием цикла с постусловием решается так: S:=0; I:=1; Repeat S:=S+1/I; I:=I+1 Until (1/I<Eps) Or (I>=MaxInt);
Цикл по параметру Рассмотрим следующую простую задачу: требуется вычислить сумму целых чисел от M до N путем прямого суммирования. Здесь М и N — целые числа. Задачу можно сформулировать так:
Алгоритм и программа решения этой задачи с использованием структуры цикл-пока представлены на рис. 23.
А теперь введем новый тип циклической структуры, который будет называться цикл по параметру, или цикл-для. Блок-схема и программа на Паскале для решения рассматриваемой задачи с использованием этой структуры приведены на рис. 24.
Здесь целая переменная I последовательно принимает значения в диапазоне от М до N. При каждом значении I выполняется тело цикла. После последнего выполнения цикла при I = N происходит выход из цикла на продолжение алгоритма. Цикл выполняется хотя бы один раз, если М ≤ N, и не выполняется ни разу при М > N. В программе используется оператор цикла For, синтаксическая диаграмма которого представлена на рис. 25.
Выполнение оператора For в первом варианте (То) происходит по следующей схеме: 1. Вычисляются значения < Выражения 1> и < Выражения 2>. Это делается только один раз при входе в цикл. 2. Параметру цикла присваивается значение < Выражения 1>. 3. Значение параметра цикла сравнивается со значением < Выражения 2 >. Если параметр цикла меньше или равен этому значению, то выполняется тело цикла, в противном случае выполнение цикла заканчивается. 4. Значение параметра цикла изменяется на следующее значение в его типе (для целых чисел — увеличивается на единицу); происходит возврат к пункту 3. Оператор цикла For объединяет в себе действия, которые при использовании цикла While выполняют различные операторы: присваивание параметру начального значения, сравнение с конечным значением, изменение на следующее. Как известно, результат суммирования целых чисел не зависит от порядка суммирования. Например, в рассматриваемой задаче числа можно складывать и в обратном порядке, т.е. от N до М (N ≥ М). Для этого можно использовать второй вариант оператора цикла For:
Summa:=0; For I:=N DownTo M Do Summa:=Summa+I; Слово DownTo буквально можно перевести как «вниз до». В таком случае параметр цикла изменяется по убыванию, т.е. при каждом повторении цикла параметр изменяет свое значение на предыдущее (равносильно i:=pred(i)). Тогда ясно, что цикл не выполняется ни разу, если N < М.
Работая с оператором For, учитывайте следующие правила:
• параметр цикла не может иметь тип Real; • в теле цикла нельзя изменять переменную «параметр цикла»; • при выходе из цикла значение переменной-параметра является неопределенным.
В следующем примере в качестве параметра цикла For используется символьная переменная. Пусть требуется получить на экране десятичные коды букв латинского алфавита. Как известно, латинские буквы в таблице кодировки упорядочены по алфавиту. Вот фрагмент такой программы: For С:='а' То 'z' Do Write (С,'-',Ord(C)); Здесь переменная С имеет тип Char.
|
||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 306; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.23.130.108 (0.008 с.) |