Здесь показаны различия между двумя версиями данной страницы.
| 
                    for_loop_lists [2013/10/29 11:05] | 
                
                    for_loop_lists [2019/06/24 20:29] (текущий) | 
            ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Циклический алгоритм обработки массива чисел ====== | ||
| + | ===== Решение задачи ===== | ||
| + | {{: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" для пошагового воспроизведения инструкций программы. При смене инструкций меняются значения переменных, за которыми можно наблюдать на вкладке справа. | ||
| + | |||
| + | <code python> | ||
| + | # 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 | ||
| + | </code> | ||
| + | |||
| + | <code python> | ||
| + | # 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) | ||
| + | </code> | ||
| + | |||
| + | http://ideone.com/8K8t8 (Python 3) | ||
| + | |||
| + | <code javaScript> | ||
| + | // 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); // в этот день была самая низкая температура за неделю | ||
| + | </code> | ||
| + | |||
| + | 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 | ||
| + | |||