Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
128
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

Используемые алгоритмы ввода

Алгоритмом называют способ выполнения определенной задачи. Изучая программирование, вы в то же время учитесь разрабатывать алгоритмы, то есть определять, каким именно образом решить ту или иную задачу, используя язык Си. Может показаться, что существует бесчисленное множество способов решения, столько же, сколько и задач, но на самом деле есть основной набор алгоритмов, которые используются в 90 процентах случаев. Изучив наиболее часто используемые алгоритмы, вы сможете легко проектировать программы, основываясь на уже известных вам методах.

Один из таких алгоритмов используется для изменения значения переменной. Речь идет о присваивании нового значения переменной, которая уже инициализирована. Если использовать просто функцию ввода и имя переменной в качестве параметра, исходное значение при вводе нового будет потеряно. А что делать, если вы не хотите, чтобы оно пропало? Например, вам нужно сравнить старое и новое значения (соответствующие примеры приведены в главе8). Один из возможных способов — это ввести дополнительную переменную для сохранения прежнего значения:

cache = amount;

Здесь значение переменной amount передается в переменную cache, и до тех пор, пока в amount не записана новая информация, обе переменные имеют одну и ту же величину. Переменная cache обеспечивает хранение значения в памяти, пока в нем не возникнет необходимость. Когда оно вам потребуется, используйте переменную, которая служила для хранения.

В программе, приведенной в Листинге 5.2, показан пример присваивания переменной нового значения (в следующих главах вы увидите различные варианты практического применения этой процедуры).

Листинг 5.2. Программа присваивания переменной нового значения с сохранением старого.

/*storage.c*/

main()

{

int number, storage;

puts("Введите значение переменной");

scanf("%d", &number);

storage = number;

puts("Введите значение переменной");

scanf("%d", &number);

printf("Исходное значение: %d\n", storage);

printf("Новое значение: %d", number);

}

Рис. 5.12. Присваивание переменной нового значения

Ввод значения переменной number обеспечивается следующими инструкциями:

puts("Введите значение переменной");

scanf("%d", &number);

Сохранение значения переменной number в переменной storage выполняет инструкция:

storage = number;

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

<>

Вопросы

  1. В чем смысл выражения «чистый вход — чистый выход»?

  2. Почему после ввода с использованием функции getchar() нет необходимости нажимать клавишу Enter?

  3. Назовите два способа использования функции getchar().

  4. Что такое оператор получения адреса?

  5. Какие преимущества дает использование функции scanf()?

  6. Что такое преобразователи символов?

  7. Почему для ввода строки лучше использовать функцию gets(), а не scanf()?

  8. В чем преимущества и недостатки форматированного ввода при помощи scanf()?

  9. Является ли необходимым присваивание всем переменным начальных значений?

  10. Какие трудности могут возникнуть при использовании функции scanf() для ввода значения переменной типа char?

<>

Упражнения

  1. Напишите программу, в которой вводится, а затем отображается на экране монитора в одной строке ваше имя и номер телефона.

  2. Напишите программу, в которой вводится число, а затем на экран выводится адрес области памяти, куда было записано это число.

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

  4. Напишите программу, в которой используются функции getchar(), gets() и scanf().

  5. Объясните, почему следующая программа написана неправильно:

main()

{

char initial;

initial = gets();

puts(initial);

}