Шаблон программы «Ввод один, один процесс» — это распространенный шаблон, используемый при вводе ряда связанных данных, таких как усреднение любого набора чисел. Этот шаблон обычно реализуется с помощью цикла некоторого типа, например оператора 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 следует внедрять, когда вам нужно сразу же обработать данные после их ввода и когда данные вводятся по одному. Существуют и другие шаблоны, которые вы можете использовать, когда проблема требует другого шаблона обработки.
Спасибо за чтение и, пожалуйста, ответьте на эту статью или напишите мне с вашими комментариями и предложениями.