Шаблон программы «Ввод один, один процесс» — это распространенный шаблон, используемый при вводе ряда связанных данных, таких как усреднение любого набора чисел. Этот шаблон обычно реализуется с помощью цикла некоторого типа, например оператора while или оператора for.

Псевдокод для шаблона Input One, Process One

Вот псевдокод для этого шаблона:

Повторите следующие шаги в зависимости от условия:

Прочитать значение

Обработать значение

Тип цикла, используемый при реализации этого шаблона, будет зависеть от проблемы. Например, если вам нужно обработать 10 значений данных, вы будете использовать оператор for, а если вам нужно обработать неопределенное количество значений данных, вы будете использовать оператор while.

Прежде чем мы перейдем к реализации первого ввода, первого процесса, давайте рассмотрим, как писать циклы с помощью операторов while и for.

Оператор while

Оператор while используется, когда вы хотите повторить набор операторов программирования, но заранее не знаете, сколько раз вы хотите, чтобы они повторялись. Вот шаблон синтаксиса для оператора while:

в то время как (условие) {
оператор(ы);

Вот пример, отображающий числа от 1 до 10:

int main()
{
  int number = 1;
  while (number <= 10) {
    cout << number << endl;
    number++;
  }
}

Заявление for

Оператор for используется, когда вы заранее знаете, сколько итераций цикла вам нужно. Например, если я знаю, что мне нужно суммировать результаты 10 тестов и вычислить среднее значение, я буду использовать оператор for в своей программе.

Вот шаблон синтаксиса для оператора for:

for (тип данных имя-переменной = выражение; условие; модификация) {
оператор(ы);

Вот пример, отображающий числа от 1 до 10:

int main()
{
  for (int i = 1; i <= 10; i++) {
    cout << i << endl;
  }
}

Реализация шаблона Input One, Process One

В моем первом примере я буду использовать оператор while для усреднения набора тестовых результатов, используя контрольное значение для управления циклом. Вот программа:

int main ()
{
  int grade, count = 0, total = 0;
  const int SENTINEL = -1;
  // Input
  cout << "Enter grade (-1 to stop): ";
  cin >> grade;
  while (grade != SENTINEL) {
    // Process
    total += grade;
    count++;
    // Input
    cout << "Enter grade (-1 to stop): ";
    cin >> grade;
  }
  double average = static_cast<double>(total) / count;
  cout << "Average: " << average << endl;
  return 0;
}

Вот результат одного запуска этой программы:

Введите оценку (-1 для остановки): 77
Введите оценку (-1 для остановки): 81
Введите оценку (-1 для остановки): 74
Введите оценку (-1 для остановки) : 92
Введите оценку (-1 для остановки): 88
Введите оценку (-1 для остановки): 75
Введите оценку (-1 для остановки): 99
Введите оценку (-1 до остановки): -1
Среднее значение: 83,7143

В качестве следующего примера я напишу программу, в которой пользователь вводит дневную максимальную температуру за неделю, а затем вычисляет среднее значение температуры. Я напишу эту программу, используя оператор for, так как мы заранее знаем, сколько температур будет введено. Вот программа:

int main ()
{
  int temp, total = 0;
  const int DAYS = 7;
  for (int day = 1; day <= DAYS; day++) {
    // Input
    cout << "Enter the high temperature for day " 
         << day << ": ";
    cin >> temp;
    // Process
    total += temp;
  }
  double average = static_cast<double>(total) / DAYS;
  cout << "The average high temperature for the week is: " 
       << average << endl;
  return 0;
}

Вот результат одного запуска программы:

Введите максимальную температуру для дня 1: 66
Введите максимальную температуру для дня 2: 68
Введите максимальную температуру для дня 3: 65
Введите максимальную температуру для дня 4: 46
Введите максимальную температуру для 5-го дня: 48
Введите максимальную температуру для 6-го дня: 52
Введите максимальную температуру для 7-го дня: 54
Средняя максимальная температура за неделю: 57

Заключительная мысль

Шаблон Input One, Process One следует внедрять, когда вам нужно сразу же обработать данные после их ввода и когда данные вводятся по одному. Существуют и другие шаблоны, которые вы можете использовать, когда проблема требует другого шаблона обработки.

Спасибо за чтение и, пожалуйста, ответьте на эту статью или напишите мне с вашими комментариями и предложениями.