Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, полный углубленный курс, 4 часа в неделю)



Уроки 88 - 91
Линейный поиск в массиве. Отбор элементов массива по условию
§63. Алгоритмы обработки массивов






Содержание урока

Поиск в массиве

Максимальный элемент

Реверс массива

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

Отбор нужных элементов

Вопросы и задания

Задачи


Поиск в массиве


Требуется найти в массиве элемент, значение которого равно значению переменной X, или сообщить, что такого элемента в массиве нет. Алгоритм решения сводится к просмотру всех элементов массива с первого до последнего. Как только будет найден элемент, равный X, нужно выйти из цикла и вывести результат. Напрашивается такой

Он хорошо работает, если нужный элемент в массиве есть, однако приведёт к ошибке, если такого элемента нет, — получится зацикливание и выход за границы массива. Поэтому в условие нужно добавить ещё одно ограничение: i<=N. Если после окончания цикла это условие нарушено, значит, поиск был неудачным — элемента нет:

Отметим одну тонкость. В сложном условии i<=N и A[i]<>X первой должно проверяться именно отношение i<=N. Если первая часть условия, образованного с помощью операции «И», ложно, то вторая часть, как правило 1, не вычисляется — уже понятно, что всё условие ложно. Дело в том, что если i>N, проверка условия A[i]<>X приводит к выходу за границы массива, и программа может завершиться аварийно.


1 Это зависит от транслятора и его настроек. В школьном алгоритмическом языке и во многих других современных языках (например, в С, C++, Python, Javascript, PHP) такое поведение гарантировано стандартом, а в Паскале — нет.



Возможен ещё один поход к решению этой задачи: используя цикл с переменной, перебирать все элементы массива и досрочно завершить цикл, если найдено требуемое значение.

Здесь для выхода из цикла используется оператор выход (в Паскале — break), номер найденного элемента сохраняется в переменной nХ. Если её значение осталось равным нулю (не изменилось в ходе выполнения цикла), то в массиве нет элемента, равного X.

Следующая страница Максимальный элемент



Cкачать материалы урока







Наверх