Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_программированию.doc
Скачиваний:
80
Добавлен:
02.04.2015
Размер:
4.77 Mб
Скачать

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

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

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

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

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

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

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

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

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

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