Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Чтобы придать языку С более высокую интернациональность, стандарты С99 и С99 обеспечивают доступность обширного набора символов посредством механизма UCN (Universal Character Names — имена в универсальных символах). Подробное описание этого расширения приведено в приложении Б. Эта возможность позволяет использовать символы, не входящие в английский алфавит.
Четыре веских причины объявления переменных
Некоторые ранние языки программирования, такие как первоначальные формы FORTRAN и BASIC, позволяли применять переменные без их объявления. А почему нельзя использовать такой упрощенный подход в С? Это обусловлено рядом причин.
• Размещение объявлений всех переменных в одном месте упрощает читателю кода уловить назначение программы. Это особенно справедливо, когда вы назначаете переменным осмысленные имена (например, taxrate вместо г). Если имени недостаточно, предусмотрите в комментарии объяснение, что конкретно представляют объявленные переменные. Документирование программы в таком стиле считается хорошим тоном в программировании.
• Обдумывание того, какие переменные объявить, способствует проведению определенного планирования, прежде чем приступать к написанию кода. Какая информация нужна для того, чтобы начать писать программу? Какой вывод должна производить программа? Как лучше всего представить данные?
• Объявление переменных помогает избежать одной из наиболее тонких и трудных для обнаружения ошибок программирования — некорректно написанного имени переменной.
Предположим, что на одном из языков с необязательным объявлением переменных был написан следующий оператор:
RADIUS1 = 20.4;
Введение в язык С 61
Затем в другом месте программы был введен оператор с неправильно указанным именем переменной:
CIRCUM = 6.28 * RADIUS1;
Вы не заметили, как вместо цифры 1 ввели букву 1 (строчную латинскую букву “С). Согласно правилам этого языка будет создана новая переменная с именем RADIUS1, которая получит случайное значение (возможно ноль, а возможно какой-то мусор). Переменная CIRCUM получит неправильное значение, и придется потратить немало времени, чтобы выяснить причину. В С это невозможно (если только вы не окажетесь достаточно неосмотрительными, объявив два настолько похожих имени), т.к. компилятор выдаст сообщение об ошибке, когда в коде встретится необъявленная переменная RADIUS1.
• Пока вы не объявите переменные, программа на С не скомпилируется. Если перечисленные выше причины не возымели действия, то этот серьезный аргумент должен окончательно убедить.
Учитывая необходимость объявления переменных, где это следует делать? Как упоминалось ранее, до появления стандарта С99 требовалось размещать все объявления в начале блока. Одна из причин следования этой рекомендации заключается в том, что группирование объявлений в едином месте облегчает понимание назначения программы. Разумеется, существуют аргументы и в пользу распределения объявлений по всей программе, как теперь разрешает делать стандарт С99. Идея в том, чтобы объявлять переменные непосредственно перед тем, когда вы готовы присвоить им значения. Это позволит не забыть присвоить переменным начальные значения. Однако на деле многие компиляторы пока не поддерживают такое правило стандарта С99.
Присваивание
num = 1;
В следующей строке программы находится оператор присваивания, в котором применяется одна из основных операций языка С. В рассматриваемом примере это означает “присвоить значение 1 переменной num”. Предшествующая ему строка int num; резервирует в памяти компьютера пространство для переменной num, а строка с оператором присваивания сохраняет значение в этой ячейке. Позже при желании переменной num можно присвоить другое значение; вот почему num называется переменной.
Обратите внимание, что оператор присваивания назначает значение, указанное справа знака операции, переменной, указанной слева. Кроме того, оператор завершается точкой с запятой (рис. 2.2).
Функция printf () printf("Я простой "); printf("компьютер.\n"); printf ("Моей любимой цифрой является % d , так как она первая. \n" ,num);
Во всех этих строках используется стандартная функция С по имени printf(). Круглые скобки указывают, что printf является именем функции. То, что содержится внутри круглых скобок — это информация, передаваемая из функции main() в функцию printf(). Например, первая строка передает фразу “Я простой ” в функцию printf(). Такая информация называется аргументам или, более точно, фактическим
62 Глава 2
printf() аргументом функции (рис. 2.3). (Для различения
конкретного значения, переданного функции, и переменной в функции, используемой для хранения значения, в языке С используются термины фактический аргумент и формальный аргумент. Более подробно об этом пойдет речь в главе 5.) Что делает функция printf() с этим аргументом? Она просматривает все, что заключено в двойные кавычки, и выводит этот текст на экран.
Первая строка с printf() является примером того, как вызвать или как обратиться к функции в С. Понадобится только ввести имя функции и поместить нужный аргумент (аргументы) в круглые скобки. Когда выполнение достигает этой строки, управление передается указанной функции (printf() в рассматриваемом случае). После того как функция выполнит свою работу, управление возвращается в исходную (вызывающую) функцию — main() в данном примере.
Чем отличается следующая строка с printf() ? Она содержит символы \n, заключенные в кавычки, и они не выводятся! В чем же дело? Символы \n означают начало новой строки. Комбинация \n (вводится как два символа) представляет один символ, получивший название символы новой строки. Для функции printf() эта комбинация означает “начать новую строку с крайней левой позиции”. Другими словами, вывод символа новой строки выполняет ту же операцию, что и нажатие клавиши на стандартной клавиатуре. А почему бы просто не нажать клавишу при наборе этого аргумента printf() ? Потому что это будет воспринято как непосредственная команда редактору, но не как инструкция, которая должна быть помещена в исходном коде. В результате при нажатии клавиши редактор прейдет с текущей строки на следующую. Тем не менее, символ новой строки влияет на то, как будет отображаться вывод программы.
Символ новой строки является примером управляющей последовательности. Управляющая последовательность применяется для представления символов, которые трудно или просто невозможно ввести с клавиатуры. Примерами таких последовательностей могут служить символы \t для представления нажатия клавиши <���Таb> и \b — для . В любом случае управляющая последовательность начинается с обратной косой черты (\). Мы вернемся к этой теме в главе 3.
Читать дальшеИнтервал:
Закладка: