Организация ввода в диалоге
Организация диалогового режима ввода значений переменных – один из методов улучшения дружественности. При этом происходит некоторое усложнение программного продукта дополнительными блоками в алгоритме и операторами в программе.
Идея диалога заключается в формировании дополнительного запроса с организацией последующего ответа на него.
Запрос осуществляется установкой дополнительного блока в алгоритме (оператора в программе), организующего вывод на экран соответствующего сообщения.
Ответ на запрос выполняется уже существующим в алгоритме (программе) блоком (оператором) ввода.
ü Внимание! Блок (оператор) запроса должен располагаться в алгоритме (в программе) перед блоком (оператором) ввода.
Диалоговый режим (запросом) позволяет конкретно обозначить момент ввода численных значений переменных.
При необходимости ввода нескольких переменных возможны два варианта запроса:
общий на все переменные;
конкретный по каждой переменной.
Фрагменты алгоритмов и программ ввода переменных (например, a, b, c, x) могут иметь вид:
· общий на все переменные:
Алгоритм | Программа printf("Введите значения a, b, c, x \n"); scanf("%f %f %f %f", &a, &b, &c, &x); Указание символа \n (перевод строки) в конце запроса организует ввод численных значений указанных переменных отдельной, следующей после запроса, строкой. |
· конкретный по каждой переменной:
Алгоритм | Программа printf("Введите значение a: "); scanf("%f ", &a); printf("Введите значение b: "); scanf("%f ", &b); printf("Введите значение c: "); scanf("%f ", &c); printf("Введите значение x: "); scanf("%f ", &x); Отсутствие символа \n в конце каждого запроса организует ввод численных значений каждой переменной в конце соответствующей строки. Следовательно, значения вводимых переменных должны быть записаны под программой не строкой, а столбцом. |
Реализация рассмотренных фрагментов программ выполняется диалогами:
· для общего запроса
Введите значения a, b, c, x (общий запрос программы)
5.7_ 3.8_ -7.89_ 0.004 <Enter> (ввод данных)
· для запроса по каждой переменной
Введите значение a: 5.7 <Enter> (конкретный запрос-ввод)
Введите значение b: 3.8 <Enter> (конкретный запрос-ввод)
Введите значение c: -7.89 <Enter> (конкретный запрос-ввод)
Введите значение x: 0.004 <Enter> (конкретный запрос-ввод)
Варианты ввода массивов
Ввод элементов массива выполняется аналогично вариантам ввода простых переменных:
стандартно (перечислением всех элементов);
поэлементно (указанием каждого отдельно).
Реализация указанных вариантов может быть представлена следующими фрагментами алгоритмов и программ:
· стандартный вариант:
Алгоритм | Программа printf("Введите элементы массива А \n"); scanf("%f %f %f %f %f" , &a[0],&a[1], &a[2],&a[3]); Следовательно, значения вводимых переменных должны быть записаны под программой одной строкой. |
· поэлементный вариант:
Алгоритм | Программа printf("Введите значение a(1): "); scanf("%f ", &a[0]); printf("Введите значение a(2): "); scanf("%f ", &a[1]); printf("Введите значение a(3): "); scanf("%f ", &a[2]); printf("Введите значение a(4): "); scanf("%f ", &a[3]); Следовательно, значения вводимых переменных должны быть записаны под программой не строкой, а столбцом. |
Реализация представленных фрагментов программы выполняется диалогами:
· при стандартном вводе:
Введите элементы массива A (общий запрос программы)
-4.1_5.3_0.34_93.1 <Enter> (ввод данных)
· при поэлементном вводе:
Введите значение a(1): -4.1 <Enter> (поэлементный запрос-ввод)
Введите значение a(2): 5.3 <Enter> (поэлементный запрос-ввод)
Введите значение a(3): 0.34 <Enter> (поэлементный запрос-ввод)
Введите значение a(4): 93.1 <Enter> (поэлементный запрос-ввод)
Анализ фрагментов второго варианта показывает низкую эффективность при большом количестве элементов массива и невозможность изменения размера массива в процессе выполнения.
Эти недостатки можно устранить, организуя запрос размера вводимого массива, а затем формируя цикл ввода текущих значений элементов.
Фрагменты алгоритма и программы имеют вид:
алгоритм | программа printf("Введите размер " "массива n: "); scanf("%d", &n); for( i=0 ; i<n ; i=i+1 ) { printf("Введите значение " "a(%d): ", i+1); scanf("%f ", &a[i]); } Оператор for формирует цикл ввода, запрашивая на каждом шаге текущее значение a(i+1) и организуя его размещение в ячейке элемента массива a[i]. |
Реализация фрагмента программы выполняется диалогом:
Введите размер массива n: 4 <Enter> (запрос-ввод)
Введите значение a(1): -4.1 <Enter> (запрос-ввод)
Введите значение a(2): 5.3 <Enter> (запрос-ввод)
Введите значение a(3): 0.34 <Enter> (запрос-ввод)
Введите значение a(4): 93.1 <Enter> (запрос-ввод)