repeat

       Оператор1

       Оператор2

       …

       ОператорN

until ЛогическоеВыражение



Действие: Цикл выполняется до тех пор, пока ЛогическоеВыражение ложно. Истинное ЛогическоеВыражение определяет условие выхода из цикла.

Пример

Протабулировать функцию y=sin(x) на отрезке [-π;π] с шагом h = π / 5. Результаты вычислений вывести на экран в виде таблицы. Найти минимальное и максимальное значение функции на этом отрезке.

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

Блок-схема

Код программы в среде Pascal

program Tabulation;

uses Crt;

var h, x, y, min, max: real;

begin

       clrscr;

       h:=pi/5;

       x:=-pi;

       min:=sin(x); {Предполагаем, что min и max }

       max:=sin(x); { достигаются в первой точке}

       writeln(‘ x y’);

       repeat

               y:=sin(x);

               writeln(x:7:2, y:7:2);

               {Определяем максимум функции}

               if y>max then max:=y;

НЕ нашли? Не то? Что вы ищете?

               {Определяем минимум функции}

               if y<min then min:=y;

               x:=x+h; {Увеличиваем x на h}

       until x>=pi;

       writeln(‘max = ’, max:5:2, ‘ min = ’, min:5:2);

       readln;

end.

Внешний вид формы в Delphi

В конструкторе

При выполнении


Код программы в среде Delphi

Поскольку в данном случае пользователь никаких данных не вводит, то процедура табулирования указанной функции можно произвести в момент загрузки формы, т. е. момент OnCreate.

procedure TForm1.FormCreate(Sender: TObject);

var h, x, y, min, max: real;

       i :integer;

begin

       h:=pi/5;

       x:=-pi;

       min:=sin(x);

       max:=sin(x);

       StringGrid1.Cells[0,0]:='X';

       StringGrid1.Cells[1,0]:='Y';

       i:=1;

       {счетчик заполненных строк в StringGrid1}

       repeat

               y:=sin(x);

               StringGrid1.RowCount:=i;

               StringGrid1.Cells[0,i]:=FloatToStr(x);

               StringGrid1.Cells[1,i]:=FloatToStr(y);

               i:=i+1;

               if y>max then max:=y;

               if y<min then min:=y;

               x:=x+h;

       until x>=pi ;

       Label3.Caption := FloatToStr(max);

       Label5.Caption := FloatToStr(min);

       StringGrid1.FixedRows:=1;

end;

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

       …

       xmax:=pi;

       …

       repeat

               …

               if y > max then

                       begin

                               max:=y;

                               xmax:=x;

                       end;

               …

Лабораторная работа № 6

Протабулировать функцию на заданном отрезке с заданным шагом. Результаты вычислений вывести на экран в виде таблицы. Найти данные по дополнительному заданию. Если искомых данных нет, то вывести об этом дополнительное сообщение.

Выполнить два варианта: один – в среде Pascal, другой – в среде Delphi.


Формулировка задания

1.

Найти сумму максимального и минимального значений функции.

2.

Найти произведение максимального и минимального значения функции.

3.

Найти количество положительных значений функции.

4.

Найти количество отрицательных значений функции.

5.

Найти сумму всех положительных значений функции.

6.

Найти произведение всех положительных значений функции.

7.

Найти сумму всех отрицательных значений функции.

8.

Найти произведение всех отрицательных значений функции.

9.

Найти произведение наибольшего отрицательного и наименьшего положительного значения функции.

10.

Найти сумму аргументов максимального и минимального значений функции.

11.

Найти среднее арифметическое всех положительных значений функции.

12.

Найти среднее геометрическое максимального и минимального значений функции.

13.

Найти сумму наибольшего отрицательного и наименьшего положительного значения функции.

14.

Найти абсолютную разницу между максимальным и минимальным значениями функции.

15.

Найти абсолютную разницу между аргументами максимального и минимального значения функции.

16.

Найти отношение максимального значения функции к минимальному значению функции.

17.

Найти отношение аргумента максимального значения функции к аргументу минимального значения функции.

18.

Найти произведение аргумента наибольшего отрицательного значения функции и аргумента наименьшего положительного значения функции.

19.

Найти сумму аргумента наибольшего отрицательного значения функции и аргумента наименьшего положительного значения функции.

20.

Найти количество точек, в которых функция принимает заданное значение.

21.

Найти количество точек, в которых функция принимает значения из заданного интервала.

22.

Найти среднее арифметическое всех отрицательных значений функции.

23.

Найти среднее арифметическое первого и последнего положительного значения функции.

24.

Найти среднее арифметическое первого и последнего отрицательного значения функции.

25.

Найти среднее арифметическое всех значений функции.


Массивы

Массив – это структура данных, представляющая собой совокупность элементов одного типа.

array [Размер]of ИмяБазовогоТипа

Массивы разделяют на одномерные и многомерные массивы.

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

Размер (количество элементов) массива чаще сего задают в виде диапазона или именем некоторого перечисляемого типа данных. Описать массив можно в разделе описания типов type, в разделе const или в разделе объявления переменных-массивов указывает пользователь.

Type

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

day=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Const

cost: myarray=(1.2, 3, 7, 5.3, 8.1, 4.6);

Var

a, a1: myarray;

b: array [day] of integer;

c: array[1.. 100] of char;

Доступ к элементу массива осуществляется с помощью указания номера (индекса) элемента, в качестве которого можно использовать выражения целого типа, например, целую константу или переменную типа integer.

ИмяМассива [НомерЭлемента]

Пример

В заданном пользователем массиве найти номера и значения первого минимального и последнего максимального элементов.

Блок-схема

Код программы в среде Pascal

program MinMax;

uses Crt;

const n1=100;

var a: array [1 .. n1] of real;

       n, i, imin, imax: integer;

        min, max: real;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17