ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
МЕТОДИКА<br />
численная переменная-флаг может быть<br />
предпочтительнее, поскольку, кроме самого<br />
факта обнаружения элемента, позволяет<br />
хранить количество таких фактов обнаружения,<br />
что будет показано в последующих<br />
примерах.)<br />
Вопрос учащимся: как, по вашему мнению,<br />
переменная-флаг поможет нам различать случаи,<br />
когда искомый элемент отсутствует в<br />
массиве и когда искомым является последний<br />
элемент массива?<br />
Изначально флагу присваивается значение<br />
false (или 0). Если текущий элемент массива<br />
удовлетворяет заданному условию, то флаг<br />
приравнивается true (или, например, 1) и<br />
производится досрочный выход из цикла по<br />
goto. После выполнения перехода по goto сначала<br />
проверяется состояние флага, и если он<br />
“установлен” (равен true или 1), то на экран<br />
выводится номер (номера) найденного элемента,<br />
иначе выводится сообщение, что такой<br />
элемент не найден.<br />
Примеры:<br />
1) найти в одномерном целочисленном массиве<br />
и вывести на экран номер первого нулевого<br />
элемента (наличие такого элемента не<br />
гарантировано):<br />
Нет<br />
false<br />
Искомого<br />
элемента<br />
нет<br />
Начало<br />
Ввод массива mas[]<br />
flag = false<br />
i = 1 to 10<br />
mas[i] = 0<br />
flag<br />
Конец<br />
Да<br />
flag = true<br />
true<br />
Вывод<br />
элемента<br />
mas[i]<br />
36<br />
май 2012 / ИНФОРМАТИКА<br />
Выполняемое действие<br />
Строки программы<br />
Начало программы<br />
program mas_find;<br />
Объявление массива<br />
var mas : array[1..10] of integer;<br />
Объявление цикловой переменной i : integer;<br />
Объявление логической переменной-флага flag : boolean;<br />
Объявление метки label 1;<br />
begin<br />
ввод массива<br />
Первоначально флаг “сбрасывается” (приравнивается<br />
flag := false;<br />
false)<br />
Цикл перебора элементов массива for i := 1 to 10 do<br />
begin<br />
Если текущий элемент массива равен нулю,<br />
то:<br />
— флаг “устанавливается” (приравнивается<br />
true);<br />
— выполняется безусловный переход на<br />
метку 1<br />
Конец оператора проверки условия end;<br />
Конец цикла end;<br />
Если флаг “установлен”, то выводится номер<br />
(индекс) последнего обработанного в цикле<br />
элемента, на котором цикл был прерван.<br />
Если же флаг по-прежнему “сброшен”, то<br />
выводится сообщение об отсутствии в массиве<br />
такого элемента<br />
Конец программы<br />
if mas[i] = 0 then<br />
begin<br />
flag := true;<br />
goto 1;<br />
1: if flag then writeln('Номер первого нулевого<br />
элемента: ',i:2)<br />
else writeln('Искомый элемент не найден');<br />
end.