Организация ввода в диалоге

Организация диалогового режима ввода значений переменных – один из методов улучшения дружественности. При этом происходит некоторое усложнение программного продукта дополнительными блоками в алгоритме и операторами в программе.

Идея диалога заключается в формировании дополнительного запроса с организацией последующего ответа на него.

Запрос осуществляется установкой дополнительного блока в алгоритме (оператора в программе), организующего вывод на экран соответствующего сообщения.

Ответ на запрос выполняется уже существующим в алгоритме (программе) блоком (оператором) ввода.

ü Внимание! Блок (оператор) запроса должен располагаться в алгоритме (в программе) перед блоком (оператором) ввода.

Диалоговый режим (запросом) позволяет конкретно обозначить момент ввода численных значений переменных.

При необходимости ввода нескольких переменных возможны два варианта запроса:

общий на все переменные;

конкретный по каждой переменной.

Фрагменты алгоритмов и программ ввода переменных (например, 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> (запрос-ввод)