Инструменты пользователя

Инструменты сайта


for_loop_lists2

Циклический алгоритм обработки массива чисел

Решение задачи

Выделим в данном алгоритме три условные части: заполнение массива значениями и инициализация начальных значения переменных; цикличный перебор элементов массива согласно заданному алгоритму с целью…(продолжите предложение сами, когда поймете принцип действия алгоритма); вывод конечного результата.

Первый этап - заполнение массива значениями

Для схематичной записи условия задачи существует достаточно удобная форма представления массива (списка) данных в виде ряда нумерованных ячеек:

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)

// C++
#include <iostream>
using namespace std;
 
int main() {
    int day,m,k;
    int Dat[7] = {7,9,10,8,7,6,7};
    //int 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
    cout << day + 1 << "\n"; // в этот день была самая низкая температура за неделю
    system("pause");
    return 0;
}

http://ideone.com/kNO8ao (C++)

Практическое задание

Лучший способ научиться писать программы,- практиковаться в написании программ. Циклические алгоритмы - простой способ организации работы с массивами.

  • Составьте программу, определяющую самый теплый день в неделе

В данном массиве значение температуры самого теплого дня - 10 градусов

  • Составьте программу, определяющую максимальную разницу температур за неделю

В данном массиве значений разница температур самого теплого дня и самого холодного - 4 градуса

  • Составьте программу, определяющую среднюю температур за неделю

for_loop_lists2.txt · Последние изменения: 2013/10/29 07:05 (внешнее изменение)