Тема: Линейный поиск в массиве. Отбор элементов массива по условию.

Тема урока: Линейный поиск в массиве. Отбор элементов массива по условию.
Класс: 10-й, базовый уровень изучения информатики.
Цели урока:

Обучающая: Познакомить учащихся с понятиями массива, линейного поиска и отбора элементов по условию; научить писать простые программы на языке Pascal для реализации этих алгоритмов.
Развивающая: Развить логическое мышление, навыки анализа данных и программирования.
Воспитательная: Сформировать интерес к программированию, подчеркнуть важность алгоритмов в повседневной жизни (например, поиск в списке контактов или фильтрация товаров в магазине).

Оборудование и материалы: Компьютеры с установленным компилятором Pascal, доска, проектор для демонстрации кода, раздаточные материалы с примерами программ.

Актуализация темы: “Актуальность заключается в том, чтобы понять, как компьютер может искать информацию в списке данных (массиве) и отбирать нужные элементы. Это как искать имя в телефонной книге или выбирать только хорошие оценки из списка.”
1.Понятие массива
Массив — это структура данных, которая позволяет хранить несколько значений одного типа под одним именем. Это как ящик с пронумерованными ячейками, где каждая ячейка содержит число, слово или другой элемент.
Разъяснение:
Массивы используются, когда нужно работать с большим количеством похожих данных, например, список оценок учеников или цены товаров.
В Pascal массив объявляется так: var arr: array[1..N] of Тип;, где N — количество элементов, Тип — integer (целые числа), string (строки) и т.д.
Индексы (номера ячеек) обычно начинаются с 1 (для удобства), но могут с 0.
Пример: Массив из 5 чисел — array[1..5] of Integer;. Чтобы присвоить значение: arr[1] := 10;.

Почему это важно? Без массивов пришлось бы создавать много отдельных переменных (num1, num2, …), что неудобно.
2. Линейный поиск в массиве
Линейный поиск — это простой алгоритм поиска элемента в массиве. Мы проверяем каждый элемент по порядку (линейно), начиная с первого, пока не найдем нужный или не дойдем до конца.
Разъяснение для базового уровня:

Алгоритм похож на просмотр списка покупок: проверяешь по одному, пока не найдешь “хлеб”.
Шаги:
Задать массив и элемент для поиска (например, число X).
Пройти по массиву в цикле (for i := 1 to N do).
Проверить условие: if arr[i] = X then — нашли!
Если нашли, вывести позицию (i). Если нет — сообщение “не найдено”.

Преимущества: Просто реализовать, работает на любом массиве (даже не отсортированном).
Недостатки: Медленный для больших массивов — в худшем случае проверяет все N элементов (время O(N)).
Флаг (found: Boolean) помогает отслеживать, был ли успех.

Пример в жизни: Поиск друга в списке гостей на вечеринке — проверяешь всех по именам.
3. Отбор элементов массива по условию
Отбор (фильтрация) — это процесс выбора из массива только тех элементов, которые удовлетворяют заданному условию. Например, отобрать все четные числа или числа больше 10.
Разъяснение для базового уровня:

Это расширение поиска: вместо одного элемента собираем все подходящие.
Шаги:
Задать массив.
Пройти по массиву в цикле.
Проверить условие (if arr[i] > 10 then или if arr[i] mod 2 = 0 then).
Если подходит, сохранить в новый массив или вывести сразу.
Подсчитать количество (счетчик count).

Можно использовать второй массив для хранения отобранных элементов, но на базовом уровне достаточно выводить сразу.
Преимущества: Помогает анализировать данные (например, отобрать отличников из списка оценок).
Недостатки: Как и поиск, линейный — проверяет все элементы.

Пример в жизни: Из списка фруктов отобрать только красные (условие: цвет = ‘красный’).

Линейный поиск — частный случай отбора: отбираем элементы по условию “равно X”. Оба алгоритма используют цикл и условие if.

4. Практическая часть: Программы на Pascal

Отбор элементов массива по условию (положительные числа)
Эта программа отбирает из массива только положительные числа и выводит их. Отбор — это когда мы проверяем каждый элемент по условию (здесь: > 0) и собираем подходящие в список или новый массив. Для простоты используем фиксированный массив и выводим сразу, без второго массива (чтобы код был короче).
Простой алгоритм:

Создаем массив с числами (положительными и отрицательными).
Проходим по массиву в цикле.
Если элемент > 0, выводим его.
В конце говорим, сколько отобрали.

Это похоже на поиск, но мы собираем все, а не один.
program Pr1;
uses crt;
var
arr: array[1..5] of Integer; // Массив из 5 элементов
i, z: Integer; // i — для цикла, count — сколько отобрали
begin
// Заполняем массив фиксированными числами
arr[1] := 10;
arr[2] := -5;
arr[3] := 20;
arr[4] := -3;
arr[5] := 15;
// Выводим исходный массив
writeln(‘Исходный массив:’);
for i := 1 to 5 do
write(arr[i], ‘ ‘);
writeln;
// Отбор положительных чисел
z := 0; // Начинаем с 0
writeln(‘Положительные числа:’);
for i := 1 to 5 do
begin
if arr[i] > 0 then // Условие: положительное
begin
write(arr[i], ‘ ‘); // Выводим сразу
z := z + 1; // Считаем
end;
end;
writeln;

writeln(‘Отобрано ‘, z, ‘ положительных чисел.’);

readln;
end.

Пояснения к коду:

Массив заполняем вручную: Есть положительные и отрицательные, чтобы было видно отбор.
Цикл for: Проверяем if arr[i] > 0 — простое условие. Можно изменить на любое, например, четные: if arr[i] mod 2 = 0.
count := count + 1: Считаем количество. Нет второго массива — выводим прямо в цикле, чтобы код был проще.
Это базово: Только циклы, условия и вывод. Если нужно сохранить в новый массив, добавь его, как в более сложных примерах.

Рейтинг
( Пока оценок нет )
Полезные записи:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: