03.11.2014 Views

Выпуск 5 - Российский государственный профессионально ...

Выпуск 5 - Российский государственный профессионально ...

Выпуск 5 - Российский государственный профессионально ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!