Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Delphi.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

3.5Цикл с предусловием

Цикл с предусловием выполняется до тех пор, пока условие истинно. С предусловием, потому, что условие стоит перед телом цикла.

Формат оператора:

while (условие) do (оператор);

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

3.6 Цикл с постусловием

Бывает такая ситуация, что надо получить результаты первой итерации цикла, а только потом проверять выполнение условия. В этом случае можно воспользоваться оператором repeat…until.

Обеспечивается работа оператора repeat, пока не выполнится условие. Формат оператора:

repeat

(операторы)

until (условие);

Пример 2.

Вычислить сумму с точностью Е

Блок-схема:

Текст программы:

program Cikl;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

x,e,znam,chisl,s:real;

znak,i:integer;

begin

writeln('Vvedite x i E (tochnost`)');

readln(x,e);

S:=1;

i:=0;

if x<>0 then

begin

znak:=1;

znam:=1;

chisl:=1/x;

repeat

inc(i);

chisl:= chisl*x*x;

znam:=znam*i;

znak:=znak*(-1);

S:=S+chisl/znam*znak

until ABS(chislitel/znamenatel) < e;

end;

writeln('Pri x= ',x:0:2,', E= ',E:0:6,

': S= ',S:0:6,' Kolicestvo iteraciy ',i);

readln;

end.

3.7Цикл с параметром (счетчик)

Когда нам требуется что-то посчитать определенное количество раз, циклы с предусловиями и постусловиями не удобны для реализации таких задач. Удобнее использовать цикл с параметром, который можно реализовать при помощи оператора for.

Формат оператора:

for (параметр):=(начальное значение) to/ downto (конечное значение) do(оператор);

Значения параметра могут быть только порядкового типа, и шаг изменения параметра может быть только +1 (to) или -1 (downto). Цикл выполняется до тех пор, пока параметр цикла меньше или равен конечному значению.

Пример 3. Вычислить сумму первых n членов ряда

Блок-схема:

3.8Массивы

Массив - упорядоченный набор данных, используется для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. Все элементы, входящие в массив, должны иметь один и тот же тип данных. Массив может быть одномерным и многомерным.

Примеры описания массивов:

Одномерные массивы

const

n=10;

var

mas: array [1..5] of real;

mas2: array [3..n] of integer;

Можно описать массив, вводя новый тип данных.

type

mas=array [10..20] of real;

var

massiv:mas;

Разберем пример на одномерный массив. Как вводить массив. Некоторые операции над массивом.

Пример 4. Посчитать среднеарифметическое всех положительных элементов массива.

Блок-схема

Текст программы:

program Odnomer_massiv;

{$APPTYPE CONSOLE}

uses

SysUtils;

const

Nmax=20;

var

i,N,k:integer;

S,sr:real;

a: array [1.. Nmax] of real;

begin

writeln('vvedite kolichestvo elementov massiva');

readln(N);

for i:=1 to N do

begin

writeln('Vvedite ',i,' element massiva');

readln(a[i]);

end;

S:=0;

k:=0;

for i:=1 to N do

begin

if a[i]>0

then

begin

inc(k);

S:=S+a[i];

end;

end;

if k>0 then

begin

sr:=S/k;

writeln('Srednee arifmeticeskoe vseh polojitel`nih elementov massiva= ',sr:0:3)

end

else writeln(‘Net polojitel`nih elemenrov’);

readln;

end.

Двумерные массивы

const

m=10;

n=20;

var

mas: array [1..5,1..m] of real;

mas2: array [1..n,1..m] of integer;

Можно описать двумерный массив, вводя новый тип данных.

type

mas=array [1..10] of real;

massiv=array[1..5] of mas;

var

dvumer_mas:massiv;

или

type

mas=array [1..10,1..4] of real;

var

dvumer_mas:mas;

Пример 5.

Упорядочить строки вещественной матрицы по убыванию их наибольших элементов без использования вспомогательной матрицы.

(Каждая строка двумерного массива является одномерным массивом. Таким образом, необходимо упорядочить одномерный массив по убыванию столько раз, сколько строчек в двумерном массиве).

Блок-схема

Текст программы:

program Dvumer_mas;

{$APPTYPE CONSOLE}

uses

SysUtils;

const

n=3;

m=4;

type

mas=array [1..n,1..m] of real;

var

i,j,ii:integer;

vspom:real;

a:mas;

begin

for i:=1 to n do

for j:=1 to m do

begin

write('Vvedite element matrici

a[',i,',',j,']: ');

readln(a[i,j]);

end;

writeln('Staraya matrica');

for i:=1 to n do

begin

for j:=1 to m do

write(a[i,j]:10:1,' ');

writeln;

end;

for i:=1 to n do

begin

for ii:=1 to m-1 do

for j:=ii to m do

if a[i,ii]<a[i,j] then

begin

vspom:=a[i,ii];

a[i,ii]:=a[i,j];

a[i,j]:=vspom;

end;

end;

writeln;

writeln('Novaya matrica');

for i:=1 to n do

begin

for j:=1 to m do

write(a[i,j]:10:1,' ');

writeln;

end;

readln;

end.