![]() ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Оператор цикла с предусловиемЭтот оператор обычно используется в тех случаях, когда число повторений цикла заранее неизвестно, а определяется в процессе его выполнения. Общий вид оператора:
While <уcловие> Do <оператор>;
здесь While, Do - кодовые слова (пока [выполняется], делать); <уcловие> - выражение логического типа; <оператор>- произвольный оператор паскаля.
Если логическое выражение, задающее <уcловие>, имеет значение TRUE, то выполняется <оператор>, после чего повторяется проверка условия. если <уcловие> имеет значение FALSE, оператор While прекращает свою работу. поскольку условие завершения циклического процесса проверяется до выполнения <оператора>, то оператор цикла данного вида называется оператором цикла с предусловием.
2. Оператор цикла с постусловием Для записи повторяющихся действий можно использовать оператор цикла с постусловием. Этот оператор обычно используется в тех случаях, когда число повторений цикла заранее неизвестно, а определяется в процессе его выполнения. Оператор цикла с постусловием имеет вид Repeat <тело цикла> until <условие>; здесь Repeat, until - кодовые слова (Repeat - повторять until - до тех пор, пока); <тело цикла> - произвольная последовательность операторов Pascal; <условие> - выражение типа Boolean. при выполнении этого оператора операторы тела цикла (т.е. последовательность операторов, заключенная между Repeat и until) выполняются хотя бы один раз. После выполнения операторов тела цикла проверяется <условие>. Если его значение FALSE, то операторы тела цикла повторяются, в противном случае оператор Repeat... until завершает свою работу. Таким образом, логическое выражение, записанное после кодового слова until задает условие выхода из цикла.
3. Оператор цикла с параметром.
Если количество повторений операторов тела цикла известно к началу его выполнения, то для организации такого вычислительного процесса можно использовать оператор цикла с параметром. Pascal допускает два вида этого оператора:
1) For V: = E1 to E2 do S;
где for (для), to (увеличиваясь к), do (делать) - кодовые слова, V- переменная порядкового типа (любой скалярный кроме real) V называют параметром цикла; е1, е2- выражения того же типа, что и V; S - произвольный оператор, называемый телом цикла. при выполнении оператора цикла с параметром предусматривается присваивание параметру цикла V последовательных значений от начального, равного значению выражения е1, до конечного, равного значению выражения е2 и выполнения оператора S при каждом значении параметра цикла V. при этом значения выражений е1 и е2 вычисляются один раз, при входе в оператор цикла, а значение параметра V не должно изменяться в результате выполнения оператора S. если заданное конечное значение параметра цикла меньше начального, то оператор S не выполняется ни разу.
2) в некоторых случаях бывает удобно, чтобы параметр цикла принимал не возрастающие, а убывающие значения. для таких случаев в паскале предусмотрен оператор следующего вида:
For V: = E1 downto E2 do S;
где downto (уменьшаясь к) - кодовое слово; V- переменная порядкового типа (любой скалярный кроме real) V называют параметром цикла; е1, е2- выражения того же типа, что и V; S - произвольный оператор, называемый телом цикла.
Пример 1.
{Дан массив целых чисел а1,..., а20. получить сумму тех чисел данной последовательности, которые кратны 5.} Const n=20; Type vector = array [1... n] of integer; Var a: vector; {последовательность целых чисeл} sum: integer; {cумма чисел, кратных 5} i: byte;
Begin //ввод массива целых чисел из строки; for i: = 1 to n do a[i]:=strtoint(sg1.cells[i-1,0]); //находим сумму элементов, кратных 5 sum:= 0; for i:=1 to n do if a[i] mod 5 = 0 then sum: = sum+a[i]; //вывод результата Edit1.text:=inttostr(sum); End;
Пример 2.
{даны целые числа а1,..., а20. получить номер первого члена данной последовательности, кратного 5} Const n=20; Type vector = array [1... n] of integer; Var a: vector; {последовательность целых чисeл} Num:byte; {номер первого члена последовательности, кратного 5} i: byte; Begin //ввод массива целых чисел из строки i: = 0 repeat i: = i+1; a [i]:=strtoint(sg1.cells[i-1,0]); until i=n; //нахождение номера Num: = 0; i:= 0 repeat i: = i+1; if a[i] mod 5 = 0 then Num:= i; until (Num<>0) or (i=n); //вывод результата if Num>0 then showmessage(‘первый элемент, кратный 5 a[‘+inttostr(Num)+‘]= ‘+inttostr(a[Num])); else showmessage(‘ таких элементов нет’) End;
Пример 3. {Дана целочисленная матрица А(5х5). Найти сумму положительных элементов каждой строки матрицы.} Const n=5; Type vector = array [1... n] of integer; Matrix= array [1... n,1..n] of integer; Var a:matrix; sum:vector; {последовательность целых чисeл} sum: integer; {cумма чисел, кратных 5} i,j: byte;
Begin //ввод матрицы for i: = 1 to n do for j: = 1 to n do a[i,j]:=strtoint(sg1.cells[j-1,i-1]); //находим сумму положительных элементов в каждой строке
for i:=1 to n do begin sum[i]:= 0; for j:=1 to n do if a[i,j] > 0 then sum[i]: = sum[i]+a[i,j]; //вывод результата в столбец for i: = 1 to n do sg1.cells[0,i-1]:=inttostr(sum[i]); End; Не нашли, что искали? Воспользуйтесь поиском:
|