Линейный поиск элементов массива по условию
Раздел «Алгоритмы обработки массивов». Работа за компьютером по теме «Алгоритмы обработки массивов». КТП составлено по действующей официальной программе Республики Беларусь.
Сначала — короткое объяснение
Поиск элементов массива по условию
Короткое объяснение полного просмотра массива, фильтрации значений, подсчёта совпадений и поиска первого подходящего индекса в PascalABC.NET.
Конспект урока
Язык примеров
Содержание урока адаптируется под выбранный язык
Поиск в массиве: цикл просматривает, условие отбирает
Дан массив a = [3, 8, 1, 10, 6, 5]. Как вывести только значения больше 5? Нужно пройти по всем индексам и для каждого проверить одно и то же условие.
Цель урока: выводить и подсчитывать элементы по условию, а также находить первый подходящий индекс.
Фильтр: вывести все подходящие элементы
for i := 1 to 6 do
if a[i] > 5 then
write(a[i], ' ');
Ожидаемый вывод: 8 10 6.
Цикл гарантирует полный просмотр. Условие if решает, выполнять ли действие для текущего элемента.
Трассировка фильтра
i | a[i] | a[i] > 5 | Выводим? |
|---|---|---|---|
| 1 | 3 | ложь | нет |
| 2 | 8 | истина | да |
| 3 | 1 | ложь | нет |
| 4 | 10 | истина | да |
| 5 | 6 | истина | да |
| 6 | 5 | ложь | нет |
Счётчик: сколько элементов подошло?
k := 0;
for i := 1 to 6 do
if a[i] > 5 then
k := k + 1;
Итог: k = 3. Счётчик увеличивается только при истинном условии и обязательно начинается с нуля.
Поиск первого подходящего элемента
Задача «найти первый» отличается от задачи «найти все». После первого совпадения индекс нужно запомнить и завершить поиск.
pos := 0;
i := 1;
while (i <= 6) and (pos = 0) do
begin
if a[i] mod 2 = 0 then
pos := i
else
i := i + 1;
end;
Первый чётный элемент — a[2]=8, поэтому pos=2.
Почему начальное значение pos=0 удобно
Индексы массива начинаются с 1. Следовательно, ноль можно использовать как специальный признак «ничего не найдено».
После поиска всегда проверяйте результат:
if pos = 0 then
writeln('Элемент не найден')
else
writeln('Индекс: ', pos);
Практика: три разных продукта
Для массива [3,8,1,10,6,5]:
- вывести все чётные элементы —
8 10 6; - посчитать элементы меньше 6 — их 3;
- найти первый индекс элемента больше 9 — индекс 4.
Не смешивайте продукты: список значений, количество и один индекс требуют разных переменных и действий.
Поймайте ошибку
k := 0;
for i := 1 to 6 do
if a[i] > 5 then
write(a[i], ' ')
else
k := k + 1;
Здесь k считает элементы, не удовлетворяющие условию. Если требуется число элементов больше 5, увеличение должно находиться в ветви истинного условия.
Самопроверка
Дан b = [4, 9, 2, 7, 6].
- Выпишите элементы больше 5.
- Найдите их количество.
- Укажите индекс первого нечётного элемента.
Ключ: 9 7 6; количество 3; первый нечётный элемент b[2]=9, индекс 2.
Источник программы курса: учебная программа Республики Беларусь.
Скачать и открыть
Материалы урока
2 материалаОт сообщества
Материалы сообщества0
Дополнения от учителей к этому уроку. Проверены модерацией, но не являются редакционным контентом MediaSchool.
Поделитесь первым материалом
Рабочий лист, презентация или методичка помогут другим учителям подготовиться к уроку.
Комментарии
Войдите, чтобы оставлять комментарии.
Пока нет комментариев. Будьте первым!