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 : array [1..10,1..2] 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