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 />

34<br />

май 2012 / ИНФОРМАТИКА<br />

for i := 1 to 5 do<br />

writeln('Получился элемент<br />

массива mas[',i,']=', mas[i]);<br />

end.<br />

Задание 3<br />

program mas_3;<br />

var mas : array[1..5] of integer;<br />

i, N : integer;<br />

begin<br />

write('Введите максимальное<br />

значение элемента массива N: ');<br />

readln(N);<br />

for i := 1 to 5 do<br />

begin<br />

mas[i] := random(N) + 1;<br />

end;<br />

writeln;<br />

for i := 1 to 5 do<br />

writeln('Получился элемент<br />

массива mas[',i,']=', mas[i]);<br />

end.<br />

Задание 4<br />

program mas_2;<br />

var mas : array[1..5] of integer;<br />

i : integer;<br />

begin<br />

for i := 1 to 5 do<br />

begin<br />

mas[i] := random(15-(-3)+1) - 3;<br />

end;<br />

writeln;<br />

for i := 1 to 5 do<br />

writeln('Получился элемент<br />

массива mas[',i,']=', mas[i]);<br />

end.<br />

Задание 5<br />

program mas_5;<br />

var mas : array[1..5] of integer;<br />

i : integer;<br />

begin<br />

for i := 1 to 5 do<br />

begin<br />

mas[i] := i*i - i;<br />

end;<br />

writeln;<br />

for i := 1 to 5 do<br />

writeln('Получился элемент<br />

массива mas[',i,']=', mas[i]);<br />

end.<br />

УЭ4 (материал для изучения новой темы)<br />

Поиск элемента, соответствующего заданному<br />

условию. Запоминание номера элемента.<br />

Подсчет количества элементов, удовлетворяющих<br />

условию<br />

При обработке массивов часто встречается задача<br />

поиска в массиве элемента 1 , соответствующего<br />

некоторому условию: первого нулевого, первого ненулевого,<br />

первого отрицательного и т.д. Возможен и<br />

вариант, когда нужно найти не первый (“основной”)<br />

элемент, соответствующий некоторому условию, а<br />

второй по счету или же несколько таких элементов.<br />

Кроме того, отдельно может ставиться задание, что<br />

при наличии в массиве нескольких элементов, соответствующих<br />

условию, требуется найти все такие<br />

элементы либо достаточно найти любой из них.<br />

Подобная задача решается путем полного перебора<br />

элементов массива с проверкой соответствия<br />

каждого очередного элемента заданному условию.<br />

Если такое соответствие достигнуто, необходимо<br />

(в зависимости от задания) запомнить (сохранить<br />

в отдельной переменной) номер (индекс) найденного<br />

элемента либо вывести его на печать. Далее,<br />

в зависимости от задания, можно или прекратить<br />

просмотр массива (если достаточно найти первый<br />

требуемый элемент), или продолжить перебор элементов,<br />

чтобы найти другие элементы, удовлетворяющие<br />

заданному условию.<br />

Поиск первого элемента, соответствующего<br />

условию<br />

Для решения этой задачи может быть использован<br />

цикл for, обеспечивающий полный перебор элементов<br />

массива. Но при достижении первого же подходящего<br />

элемента массива надо досрочно прервать этот<br />

цикл, не просматривая оставшиеся элементы.<br />

Вопрос учащимся: почему необходимо досрочно<br />

прервать цикл?<br />

В некоторых языках программирования для прерывания<br />

цикла предусмотрены специальные операторы.<br />

В некоторых современных версиях языка Паскаль реализован<br />

оператор break, а в более старых версиях Паскаля<br />

досрочное прерывание цикла можно произвести,<br />

используя оператор безусловного перехода goto на первый<br />

же оператор<br />

после завершающего<br />

цикл слова<br />

end. При этом цикловая<br />

переменная<br />

сохраняет свое<br />

последнее значение<br />

и далее может<br />

быть использована<br />

как результат<br />

решения задачи.<br />

Пример<br />

Найти в одномерном<br />

целочисленном<br />

массиве и<br />

вывести на экран<br />

номер первого<br />

нулевого элемента<br />

(просмотр массива<br />

произвести с<br />

его начала):<br />

Нет<br />

Начало<br />

Ввод массива<br />

mas[]<br />

i = 1 to 10<br />

mas[i] = 0<br />

Вывод<br />

элемента<br />

mas[i]<br />

Конец<br />

1<br />

Очевидно, что для решения такой задачи достаточно<br />

определить номер (индекс) элемента, тогда как сам этот<br />

элемент можно при необходимости извлечь из исходного<br />

массива по его индексу. Но можно аналогичным способом<br />

запоминать в отдельной переменной само значение найденного<br />

элемента.<br />

Да

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

Saved successfully!

Ooh no, something went wrong!