Следующий
простой пример, но вполне законченной программы
поможет понять многие из расмотренных ранее
принципов построения программ на языке Си. Наша
первая программа вводит два числа, вычисляет их
сумму и печатает результат с поясняющим текстом
"Cумма" (пример 1.1)
Дадим некоторые пояснения. В языке Си любая
пограмма, состоит из нескольких программных
едениц и каждая из них - функция. Функции в Си
подобны функциям или подпрограммам в Фортране
или процедурам в Паскале, Имена функций
выбираются произвольно (только латинскими
буквами), но одно из них main, именно с нее
начинается выполнение программы. Такая главная
функция обычно обращается к другим функциям,
которые находятся в одном файле с головной
программой или извлекают из библиотеки
предварительно подготовленных функций.Функция
main не имеет аргументов, поэтому список ее
выглядит так: ( ) . Скобки { }
обрамляют операоры, которые реализуют
собственно алгоритм. Эти скобки аналогичны BEGIN -
END в Паскале. Рассмотрим теперь функцию scanf предназначенную для форматного ввода данных. Функция scanf в качестве фактических параметров использует адреса переменных, а не их значения. Для этого перед соответствующим параметром ставят знак & - символ взятия адресса. Например, &XL означает "адрес перменной XL", а не значение, которое переменная имеет в данный момент. Строка форматов функции scanf указывает, какие данные ожидаются на входе. Если функция встречает в форматной строке знак % , за которым следует символ преобразования, то она будет пропускать на входе символы до тех пор, пока не встретит какой-нибудь не пустой символ. Предыдущяя
программа страдает одним недостатком: программа
вычисления суммы годится только для одного
конкретного случая, когда a=5, b=7. Улучшим
ее, заменив соответствующие операторы
присваивания вызовом функции scanf
(пример 1.2) :
Форматная строка предписывает функции scanf ввести десятичное число, которое надо поместить в переменную a, затем через пробел ввести второе десятичное число, которое надо присвоить переменной b.Обратите внимание, что программа начинается со строки коминтарием : /* .. */ , транслятор пропускает любые символы между /* и */ и их можно использовать для пояснений. |