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 |





