Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по информатике.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
281.6 Кб
Скачать

30. Алгоритм поиска в массиве заданного значения.

Дан массив вещественных чисел A состоящий из n элементов. Определить, содержит ли данный массив число B, и если содержит, то определить номер (индекс) данного элемента в массиве.

для упорядоченного массива:

Предположим, что в массиве A имеется элемент, равный B, т.е. существует такой индекс p, что A[p]=B. По результату любого сравнения A[s]<B (1<s<n) мы сразу определяем, лежит ли p в диапазоне от 1 до s, или же в диапазоне от s+1 до n: второе будет иметь место, если неравенство A[s]<B справедливо, а первое - если не справедливо. Это свойство данного сравнения используется в алгоритме деления пополам. Алгоритм деления пополам.

Первоначально номера крайних элементов массива 1 и n берут в качестве границ поиска элемента; далее, до тех пор, пока границы не совпадут, шаг за шагом сдвигают эти границы следующим образом: сравнить B с A[s], где s - целая часть среднего арифметического границ; если A[s]<B, то заменить прежнюю нижнюю границу на s+1, оставив верхнюю границу без изменения, иначе оставить без изменения нижнюю границу, а верхнюю границу заменить на s. Поиск закончится когда границы совпадут.Сказанное можно записать в виде последовательности операторов TP.В этом фрагменте p и q обозначают упомянутые верхнюю и нижнюю границы. p:=1; q:=n;while p<q do begin s:=(p+q) div 2; if a[s]<b then p:=s+1 else q:=s; end;

для любого массива:

Programm Poisk;

Const n=10;

Type Mas=array[1..n] of real;

Var Flag: Boolean;

I,Value:Integer;

Begin

Ввод элементов массива

Write(‘искомое значение:’); readln(Value);

I:=1 ; Flag=False;

Repeat

If Mas[i]=Value then Flag=True;

Else i=i+1;

Until I>n or flag;

If flag then write(i:количество знаков в числе:количество знаков после запятой);

Else write(‘значений нет’);

End.

Сравниваем по очереди нужное значение, с каждым элементом массива пока не будет найдено это значение или пока не будет превышена длина массива, далее выводим номер найденного элемента, а если его не нашлось то пишем что такого значения нет .

31. Оператор условного, безусловного перехода

Условные операторы:

  1. If

  • Неполная форма: if выражение then st;

  • Полная форма: if выражение then st1

Else st 2;

Блок схема:

St – это оператор

Если логическое выражение принимает значение True, то выполняется st (в 1-ом случае) и st1 (во 2-ом случ.), если же логическое выражение принимает значение False, то программа продолжает выполняться далее без выполнения каких-либо действий (в 1-ом случ.), а во 2-ом случае выполняется st2.

2 Условный оператор выбора САSE

Оператор Саse используется при большом кол-ве условий, он позволяет выбрать одно из нескольких действий в зависимости от значения переключателя.

Case Переключатель of Блок-схема:

Список констант 1: Оператор 1;

Список констант 2: оператор 2;

…………………………………….

Список констант N: Оператор N;

Else Оператор Е;

End.

Где, переключатель – переменная или выражение порядкового типа, список констант – константы порядковых типов, оператор – любой оператор Pascal (Case, if), составной оператор Begin….end; при неполной форме оператора Case ветвь Else отсутствует.

Оператор безусловного перехода:

GoTo Метка;

Осуществляется переход к инструкции, перед которой указана метка, объявленная в разделе label. (метка м.б.от1 до 99999)

Label метка 1, 45; Begin метка 1:B:=1; 45:A:=10; goto метка 1; …