Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 428; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |