====== Циклический алгоритм обработки массива чисел ======
===== Решение задачи =====
{{:gia:10.png|}}
Выделим в данном алгоритме три условные части: заполнение массива значениями и инициализация начальных значения переменных; цикличный перебор элементов массива согласно заданному алгоритму с целью...(продолжите предложение сами, когда поймете принцип действия алгоритма); вывод конечного результата.
**Первый этап** - заполнение массива значениями
Для схематичной записи условия задачи существует достаточно удобная форма представления массива (списка) данных в виде ряда нумерованных ячеек:
{{:gia:list.png|}}
**day = 1**\\
**m = Dat[0]**
**Внимание!** Особенность языка Python (как и многих других современных языков программирования) заключается в том, что индекс (порядковый номер) элемента массива (списка) начинается не с **1**, а с **0**.
**Второй этап** - перебор элементов массива в цикле с целью отбора значений соответствующих заданному условию
==== Исследование ====
Исследуйте принцип "работы" циклического алгоритма, используя специальное приложение, позволяющее визуализировать скрытые изменения состояния переменных в процессе исполнения алгоритма. На языке питон для организации цикла удобно использовать оператор for и встроенную функцию range(), для нашего случая - range(1,7) , позволяющую задавать числовую последовательность, начиная извлекать данные из массива со второго дня. Внимание! Указанный конец интервала не включается в список числовой последовательности; вызов range(1,7) генерирует 6 значений - 1, 2,...5, 6.\\
Вариант указанной задачи на языке Python записан ниже.\\
Скопируйте приведенный ниже код (# Python 2.5), откройте приложение:\\
[[http://people.csail.mit.edu/pgbovine/python/tutor.html#mode=edit]]\\
Замените код, размещенный в окне с надписью "Write your Python code here:", тем кодом, который хотите исследовать, нажмите на кнопку с надписью "Visualize execution", используйте клавиши со стрелками <- -> или кнопки с надписями "Forward", "Back" для пошагового воспроизведения инструкций программы. При смене инструкций меняются значения переменных, за которыми можно наблюдать на вкладке справа.
# Python 2.5
Dat = [7,9,10,8,7,6,7]
day = 1
m = Dat[0]
for k in range(1,7):
if Dat[k] < m:
m = Dat[k]
day = k + 1
print day
# Python 3
Dat = [7,9,10,8,7,6,7]
day = 1
m = Dat[0]
for k in range(1,7):
if Dat[k] < m:
m = Dat[k]
day = k + 1
print(day)
http://ideone.com/8K8t8 (Python 3)
// javaScript
Dat = [7,9,10,8,7,6,7];
day = 0; // индексация массива на языках javaScript и C++ начинается с 0
m = Dat[0];
for(k = 1; k < 7; k++){
if (Dat[k] < m){
m = Dat[k];
day = k;
}
}
// так как мы привыкли вести отсчет дням недели от 1, а не от 0 то прибавим 1
print(day + 1); // в этот день была самая низкая температура за неделю
http://ideone.com/iZKFUy (javaScript)
==== Практическое задание ====
Лучший способ научиться писать программы,- практиковаться в написании программ. Циклические алгоритмы - простой способ организации работы с массивами.\\
* Составьте программу, определяющую самый теплый день в неделе\\
В данном массиве значение температуры самого теплого дня - 10 градусов
* Составьте программу, определяющую максимальную разницу температур за неделю\\
В данном массиве значений разница температур самого теплого дня и самого холодного - 4 градуса
* Составьте программу, определяющую среднюю температур за неделю\\
{{:dev_c_pp.png|}}
Пример: среднее значение
http://ideone.com/CjcJ2y
=== Дополнение для изучающих javaScript ===
http://javascript.ru/Array/pop
http://javascript.ru/Array/push
http://javascript.ru/Array/shift
http://javascript.ru/Array/unshift