Главная страница

реферат Простые операторы. Характеристика форм.docx. Лр операторы и выражения Delphi


Скачать 1.3 Mb.
НазваниеЛр операторы и выражения Delphi
Дата17.04.2023
Размер1.3 Mb.
Формат файлаdoc
Имя файлареферат Простые операторы. Характеристика форм.docx.doc
ТипПрограмма
#1067638
страница7 из 26
1   2   3   4   5   6   7   8   9   10   ...   26

Организация циклов


При разработке программ зачастую возникает необходимость повторного выполнения ряда одинаковых действий, например вычислений. В подобной ситуации на помощь приходят циклы. Циклы предназначены для многократного выполнения одного или нескольких выражений. В Delphi предусмотрены три разновидности циклов:

  • цикл for с параметром;

  • цикл while..do с предусловием;

  • цикл repeat..until с постусловием.

На рис. 1.2 представлены структурные схемы всех трех циклов.

docshapegroup40


docshapegroup42 Проверка условия
true

Установка условия

Установка условия

Установка параметра цикла
false


frame16


Модификация условия



docshapegroup62 docshapegroup81 for .. do while .. do repeat .. until

Рис. 1.2. Фрагмент блок-схемы операторов циклов
Цикл с параметром for..do

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

for <счетчикцикла>:=<стартовоезначение>

to | downto <конечноезначение> do <оператор>;

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


Листинг 1.13. Пример цикла со счетчиком




var i:integer;

begin

for i:=0 to 9 do begin

...

WriteLn(i);

end;

end;
В предложенном примере работа цикла прекратится в тот момент, когда параметр i превысит значение 9. Таким образом, будет осуществлено 10 итераций.

Отличие ключевого слова to от downto в том, что при использовании в цикле слова to параметр цикла увеличивает свое значение, а во втором — уменьшает. В листинге 1.14 показано, как следует организовывать цикл с убывающим счетчиком.


Листинг 1.14. Цикл с убывающим счетчиком




for i:=99 downto 3 do begin

...

WriteLn(i);

end;

Внимание!

Ни в коем случае не допускается изменять значения параметра внутри тела цикла for..do. Ведь это не более чем счетчик числа итераций. Если же ваша интуиция и логика программы подсказывают, что необходимо найти решение, в котором параметр цикла будет выступать не только в виде банального счетчика, но и в роли управляемого параметра, то на службу вместо цикла for..do надо поставить цикл while..do или repeat..until.

Инструкция inв цикле for..do

Цикл for имеет еще один вариант применения. Если вместо конструкции for..to..do задействовать for..in..do, то цикл найдет возможность самостоятельно разобраться с шагом счетчика. Если говорить точнее — шаг передается через дополнительный параметр, например множество, строку, коллекцию, запись или массив (листинг 1.15).


Листинг 1.15. Управление параметром цикла с помощью инструкции in




var x: array[0..7] of byte = (1,2,3,5,8,11,19,45); i:Integer;

begin

for i in x do

WriteLn(i); ReadLn;

end.
Результатом выполнения предложенного кода станет вывод на экран строк со значениями 1, 2, 3, 5, 8, 11, 19, 45.

Цикл с предусловием while..do

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

while <(логическоевыражение= true)> do <оператор>;

Условие цикла задается в виде булевого выражения (выражения, возвращающего значение

true/false).


Листинг 1.16. Цикл с предусловием




var x: array [0..99] of Integer; i:Integer;

begin

i:=0;

while i<=99 do begin

x[i]:=i;

INC(i); //приращение i:=i+1;

end;
Предложенный в листинге 1.16 пример решил задачу заполнения массива рядом целых чисел (от 0 до 99).

Организация цикла while..do требует от программиста большой внимательности нам нельзя забывать управлять логическим условием цикла. Например, если бы мы с вами забыли в листинге

1.16 ввести команду INC(i), то наш цикл станет выполняться вечно (по крайней мере, до тех пор, пока не сядут аккумуляторы в вашем ноутбуке).
Замечание

Основное преимущество цикла с предусловием while над своим коллегой циклом for заключается в возможности определения расширенных условий управления циклом. С помощью операторов

отношения (<, <=, <>, >=,>, =) и булевых операторов (AND, OR, NOT) мы имеем возможность составлять сложные логические комбинации, что существенно расширяет спектр применения цикла while.

Цикл с постусловием repeat..until

Наше знакомство с циклами Delphi продолжит цикл repeat..until.

repeat <оператор> until <логическоевыражение= false>;

Основные отличия цикла с постусловием repeat..until от цикла с предусловием while..do заключаются в следующем. Во-первых, оператор цикла repeat..until вне зависимости от логического выражения будет выполнен хотя бы один раз. Это объясняется местонахождением логического выражения — проверка условия происходит после того, как выполнилось тело цикла. Во-вторых, в отличие от цикла while..do выход из цикла с постусловием осуществляется при истинности логического выражения. Другими словами, цикл repeat..until будет выполняться до тех пор, пока логическое выражение не соблюдается.

Листинг 1.17 демонстрирует порядок применения цикла с постусловием.


Листинг 1.17. Цикл с постусловием




var ch:char;

X,Y : integer;

begin

repeat

WriteLn('X=?, Y=?');

ReadLn(X, Y);

WriteLn(X, '+', Y, '=', x+y);

WriteLn('Press "q" to exit'); ReadLn(ch);

until (ch='q');

end.
Разработанная нами программа, суммирует два полученных от пользователя значения. Затем предлагает подтвердить выход из программы нажатием клавиши с символом "q", если будет введен любой другой символ, то цикл подсчета суммы X+Y вновь повторится.

Вложенные циклы


Одним из наиболее распространенных приемов работы с циклами является идея использования вложенных циклов, в этом случае в теле одного цикла выполняется другой. В листинге 1.18 представлен способ обнуления всех элементов двумерного массива A размером 10 10 элементов. Обращение к ячейкам массива производится в рамках двойного цикла for..do.


Листинг 1.18. Пример организации вложенного цикла




var A : Array[0..9, 0..9] of Integer; x, y : byte;

begin

for x:=0 to 9 do //внешний цикл

for y:=0 to 9 do A[x, y]:=0; //вложенный цикл

end;
Операторы breakи continue

Изучение циклов было бы логически незавершенным без рассмотрения операторов прерывания текущей итерации цикла break и внеочередного начала следующей итерации continue.

Рассмотрим представленный в листинге 1.19 пример.


Листинг 1.19. Прерывание цикла оператором break




var Accept : Boolean;
Counter : Integer;

begin

Accept:=true; Counter:=0;

while Accept=true do

begin

Accept:=<ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ>;

INC(Counter); //Counter:=Counter+1;

if Counter>10 then break; end;

end;
Цикл while..do будет выполняться до тех пор, пока переменная Accept принимает значение true. Но количество итераций в любом случае не превысит числа 10, контроль за этим осуществляется с помощью переменной-счетчика Counter. При достижении Counter значения 11 работа цикла прекращается.

В листинге 1.20 предложен еще один пример. На этот раз нам необходимо подсчитать сумму нечетных чисел, входящих в диапазон от 0 до 99. Для этого воспользуемся оператором continue и операцией целочисленного деления MOD, вычисляющей остаток от деления.


Листинг 1.20. Переход к очередной итерации с помощью continue




var X,Sum:Integer;

begin

Sum:=0;

for X:=0 to 99 do begin

if (X MOD 2)=0 then continue; {пропускаем итерации

с четным значением x} Sum:=Sum+X; {накапливаем нечетные числа}

end; WriteLn(Sum); Readln;

end;
Если переменная X принимает четное значение, то оператор continue принуждает цикл начать новую итерацию (досрочно увеличивает счетчик цикла на единицу). Поэтому суммируются только нечетные значения из диапазона чисел 0—99.
ЗАДАНИЕ

Вариант 1.


  1. Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

𝑎𝑥2 + 𝑏 при 𝑥 < 0 и 𝑏 0


𝐹 =


𝑥 𝑎


𝑥 𝑐

𝑥


𝑐

при 𝑥 > 0 и 𝑏 = 0
в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 2


    1. Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

1



𝑎𝑥
𝑏 при 𝑥 + 5 < 0 и 𝑐 = 0

𝐹 =

𝑥 𝑎


𝑥

10𝑥

при 𝑥 + 5 > 0 и 𝑐 0
в остальных случаях


𝑐 4

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 3


1) Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

𝑎𝑥2 + 𝑏 + 𝑐 при 𝑎 < 0 и 𝑐 0

𝐹 =

−𝑎


𝑥 𝑐

при 𝑎 > 0 и 𝑐 = 0

𝑎(𝑥 + 𝑐) в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 4


1) Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

−𝑎𝑥 𝑐 при 𝑐 < 0 и 𝑥 0


𝐹 =


𝑥 𝑎


−𝑐

𝑏𝑥


𝑐 𝑎

при 𝑐 > 0 и 𝑥 = 0
в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 5


1) Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

𝑎 𝑥
при 𝑥 < 0 и 𝑏 0



𝐹 =







10 + 𝑏

𝑥 𝑎


𝑥 𝑐

3𝑥 + 2

𝑐
при 𝑥 > 0 и 𝑏 = 0
в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 6


1) Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

𝑎𝑥2 + 𝑏2𝑥 при 𝑐 < 0 и 𝑏 0


𝐹 =


𝑥 + 𝑎


𝑥 + 𝑐

𝑥


𝑐

при 𝑐 > 0 и 𝑏 = 0
в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 7


1) Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

𝑎𝑥2 + 𝑏 при 𝑥 < 0 и 𝑏 0


𝐹 =


𝑥 𝑎


𝑥 𝑐

𝑥


𝑐

при 𝑥 > 0 и 𝑏 = 0
в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 8


1) Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

1



𝑎𝑥
𝑏 при 𝑥 + 5 < 0 и 𝑐 = 0

𝐹 =

𝑥 𝑎


𝑥

10𝑥

при 𝑥 + 5 > 0 и 𝑐 0
в остальных случаях


𝑐 4

Где a,b,c действительные числа.Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 9


1) Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

𝑎𝑥2 + 𝑏 + 𝑐 при 𝑎 < 0 и 𝑐 0

𝐹 =

−𝑎


𝑥 𝑐

при 𝑎 > 0 и 𝑐 = 0

𝑎(𝑥 + 𝑐) в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 10


1) Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

−𝑎𝑥 𝑐 при 𝑐 < 0 и 𝑥 0


𝐹 =


𝑥 𝑎


−𝑐

𝑏𝑥


𝑐 𝑎

при 𝑐 > 0 и 𝑥 = 0
в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 11


1)Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

𝑎 𝑥 при 𝑥 < 0 и 𝑏 0



𝐹 =







10 + 𝑏

𝑥 𝑎


𝑥 𝑐

3𝑥 + 2

𝑐
при 𝑥 > 0 и 𝑏 = 0
в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.

Вариант 12


1)Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX

𝑎𝑥2 + 𝑏2𝑥 при 𝑐 < 0 и 𝑏 0


𝐹 =


𝑥 + 𝑎


𝑥 + 𝑐

𝑥


𝑐

при 𝑐 > 0 и 𝑏 = 0
в остальных случаях

Где a,b,c действительные числа. Значения a,b,c, dX, Xнач. и Xкон вводятся с клавиатуры.



1   2   3   4   5   6   7   8   9   10   ...   26


написать администратору сайта