a<x<b - неверно
Составное условие может включить логические оп-ции AND, OR, NOT.
Пр. "x принадлежит [a, b]"
(x>=a) and (x<=b)
"x не принадлежит [a, b]"
not ( (x>=a) and (x<=b) ) или
(x<a) or (x>b)
"хотя бы одно из a, b,c положительно"
(a>0) or (b>0) or (c>0)
"заданы a, b,c, возможность построения треугольника со сторонами a, b,c"
(a<b+c) and (b<a+c) and (c<a+b)
Короткий условный оператор.
если условие то оператор;
if then
Если условие истинно, выполнится оператор, иначе он будет пропущен.
Пр. Если x и y – одного знака, вывести сообщ.
если x*y>0 то вывод "Одного знака"
Пр. Если введено знач.<0, сообщить об ошибке и прервать
ввод x
если x<0 то нач
вывод "Ошибка"
halt (стоп)
кон
Полный условный оператор, всегда выбирает 1 из 2.
Если условие то оп1 иначе оп2
if then else
Пр. Проверить, принадлежит ли точка с коорд. (a, b) прямоугольнику с левым верхним углом (x1,y1) и правым нижним (x2,y2)
if (a>x1) and (a<x2) and (b>y2) and (b<y1)
then write 'принадлежит'
else write 'не принадлежит'
Пр. Корректно найти значение c=a/b
if b<>0 then c:=a/b
else write 'Деление на ноль!'
Составной условный оператор выбирает одну из нескольких ветвей алгоритма:
if условие1 then оператор1
else if условие2 then оператор2
else if условие3 then оператор3
else оператор4; {если все 3 условия ложны!}
Для точки, не лежащей на осях координат, определить номер ее координатной четверти
Ввод x, y
Если x>0 то нач
Если y>0 то n=1
Иначе n=4
Кон
Иначе нач
Если y>0 то n=2
Иначе n=3
кон
вывод n
III. Циклы.
Цикл – характеризуется повторением вычислений над некоторым набором данных. Числом повторений тела цикла управляет специальная переменная – счётчик или управляющая переменная (УП). На УП накладывается условие, определяющее, до каких пор выполняется цикл.
| |
Цикл с предусловием – может не выполниться ни разу, если условие сразу же ложно пока условие нц тело цикла кц или while условие do begin тело цикла end; | Цикл с постусловием – обязательно выполнится хотя бы раз нц тело кц пока условие; или repeat тело; until условие; |
Обычно циклы взаимозаменяемы:
x = 1 while x<=10 do begin выч. y(x) x = x + 1 end | x = 1 do begin выч. y(x) x = x + 1 end while x<=10; |
Оба этих цикла выполняются по 10 раз, УП x принимает значения 1,2,…,10:
- до цикла УП должна получить начальное значение; в условии задаётся конечное значение УП; в конце тела цикла УП должна изменяться.
В теле любого цикла должно быть обеспечено изменение УП, чтобы цикл мог завершиться!
Любой цикл с конечным числом шагов удобнее записать в виде цикла с параметром.

Цикл с параметром – форма записи цикла с предусловием, применяемая для:
- компактной записи закона изменения УП в заданных пределах; обработки векторов и матриц (списков и таблиц).
Формы записи закона изменения УП:
X=1,1.5,…,10 | X меняется от 1 до 10 включительно с шагом 0.5 |
Z=0; 100; 5 | Z принимает значения 0, 5, …, 100 |
I=1..10 I=1;10 | Если шаг не указан, он равен 1 |
На псевдокоде:
для УП от НачЗн до КонЗн шаг Шаг нц
тело
кц
или
for i:=1 to n do begin
тело
end
Чаще всего наборы данных описаны как массивы. Массив – упорядоченный набор однотипных переменных (элементов).
Пр. в математике
1-мерный массив = вектор (список),
2-мерный массив = матрица (таблица)
Элементы между собой различаются по номерам.
Номер переменной в массиве – её индекс. Обычно индексы нумеруются с 1.
Пр. Оценки 20 студентов за экзамен?
a : array [1..20] of integer;
имя массив нумерация целочисленный
float или real – вещественный
string – строковый
Пр. Координаты 10 точек на плоскости?
1) x, y : array [1..10] of real;
- т. к. величины м. б. не только целочисленными
- так тоже возможно; массив P состоит из 10 элементов, каждый элемент – это набор из 2 значений (X - и Y-координаты очередной точки).
Взять из массива одну величину (элемент) можно записью вида a[1] или a1 "1-й эл-т массива a"
b[2,3] или b2,3 "эл-т матрицы b из 2-й строки и 3-го столбца"
Все действия с массивами выполняются в цикле с параметром! (for, для) Поэлементно!
Пр.1. Пользователь вводит 5 эл-тов массива A

Для I := 1 до 5 выполнять ввод A[i]
Пр.2 В массиве A – 20 оценок за экз. Найти средний балл
S = 0 {искомый средний балл обозначили S}
для n от 1 до 20 шаг 1 нц
S = S + A[i] {к сумме прибавили очеред. оценку}
кц
S = S / 20 {Поделили сумму на 20 – средний балл}
Типовые алгоритмы – задают правила выполнения типовых расчётов.
Табулирование – составление списков или таблиц Определить УП цикла и задать ей нач. значение – левая граница интервала её изменения Пишется цикл с предусловием вида УП<=КЗ, где КЗ – правая граница интервала В теле цикла вычисляется и формируется 1 строка таблицы Последний оператор тела цикла – увеличение УП на шагПр. Составить таблицу стоимости 1,2,…,K единиц товара при цене за единицу = Z руб.
ввод K, Z
i:=1 {A, УП – кол-во ед. товара}
пока i<=K нц {B}
стоимость := i*Z
вывод i, стоимость {C}
i := i+1 {D}
кц
Вычисление суммы, количества или произведения Для каждой искомой величины предусмотреть по переменной того же типа, что исходные данные (сумма целых – целое, вещественных – вещественное); До цикла присвоить начальные значения всем величинам, которые в нём ищутся:
Сумме или количеству 0, произведению 1
С. В теле цикла (как в алгоритме 1), если выполнено условие подсчета, вычисляем по правилам:
Сумму: S := S + T
Произведение: P := P * T
Количество: K := K + 1
где T – очередной элемент данных
Пр. В массиве A[10] определить, каких элементов больше – положительных или отрицательных
kp := 0; ko := 0 {A-B}
for i := 1 to 10 do begin {C}
if A[i]>0 then kp := kp + 1;
if A[i]<0 then ko := ko + 1;
end;
if kp>ko then write ('положительных больше')
else if kp<ko then write ('отрицат. больше')
else write ('поровну');
Поиск максимума или минимума Для каждого искомого максимума или минимума задать по переменной того же типа, что данные До цикла максимуму присвоить:
- 1-й элемент данных; заведомо малое значение, например, -1030
минимуму присвоить:
- 1-й элемент данных; заведомо большое значение, например, 1030
С) В теле цикла макс. ищется оператором вида
if t>max then max := t ;
мин. ищется оператором вида
if t<min then min := t ;
где t – очередной элемент данных
Пр. Для функции y(x) = sin x2 при x, принимающем значения [-1,-0.95,…,1] найти максимальное по модулю значение
max := -1030 {A-B}
x := -1
while x<=1 do begin
y := sin(sqr(x))
if abs(y)>max then max:=abs(y);
x:=x+0.05;
end;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |



