Устройство консольной программы на языке С

Давайте рассмотрим устройство программы подробнее.

Первая строка - это

#include<stdio.h>

#include - это директива препроцессора, она подключает заголовочный файл (файл с расширением .h) stdio.h, который содержит функции ввода и вывода на экран. Имя подключаемого модуля указывается в <>(когда заголовочный файл находится в каталоге \INCLUDE\ конкретной среды разработки), либо в " " (когда заголовочный файл находится в том же каталоге, где и включающий его модуль разрабатываемой программы с расширением .cpp.

Дадим некоторые пояснения. В языке Си любая программа, состоит из нескольких программных единиц и каждая из них - функция. Функции в Си подобны функциям или подпрограммам в Фортране или процедурам в Паскале, Имена функций выбираются произвольно (только латинскими буквами), но одно из них main, именно с нее начинается выполнение программы. Такая главная функция обычно обращается к другим функциям, которые находятся в одном файле с головной программой или извлекают из библиотеки предварительно подготовленных функций.Функцияmainне имеет аргументов, поэтому список ее выглядит так: ( ) . Скобки { } обрамляют операторы, которые реализуют собственно алгоритм. Эти скобки аналогичны BEGIN - END в Паскале.
Строка int a,b,c;объявляет a,b,cпеременными целого типа. Все используемые в программе переменные должны быть объявлены. Далее идут операторы присваивания к a значение 5, а к b - 7, с- значение их суммы. Значения переменных типа int лежат в диапазоне [-32768; 32767]. Функция printf выводит на экран: СУММА = 12.

Рассмотрим теперь функциюscanfпредназначенную для форматного ввода данных. Функция scanf в качестве фактических параметров использует адреса переменных, а не их значения. Для этого перед соответствующим параметром ставят знак & - символ взятия адреса. Например, &XL означает "адрес переменнойXL", а не значение, которое переменная имеет в данный момент.

Строка форматов функции scanf указывает, какие данные ожидаются на входе. Если функция встречает в форматной строке знак % , за которым следует символ преобразования, то она будет пропускать на входе символы до тех пор, пока не встретит какой-нибудь не пустой символ.

Предыдущяя программа страдает одним недостатком: программа вычисления суммы годится только для одного конкретного случая, когда a=5, b=7. Улучшим ее, заменив соответствующие операторы присваивания вызовом функции scanf

/* Ввод двух чисел, вычисление суммы и печать результата*/

#include <stdio.h>

int main( )

{
int a,b,c;
scanf(" %d %d",&a,&b);
c=a+b;
printf("Cумма = %d \n",c);
}

Форматная строка предписывает функции scanf ввести десятичное число, которое надо поместить в переменную a, затем через пробел ввести второе десятичное число, которое надо присвоить переменной b.Обратите внимание, что программа начинается со строки комментарием : /* .. */ ,транслятор пропускает любые символы между /* и */ их можно использовать для пояснений.

Главная функция

При выполнении консольного приложения, написанного на языке Си, операционная система компьютера передаёт управление функции с именем main(). Функцию main() нельзя вызывать из других функций программы, она является управляющей.

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

Главную функцию можно записать по-разному:

· int main()

· void main().

Перед именем функции указывается тип возвращаемого значения. При обращении к главной функции значение возвращается операционной системе. Последняя запись не будет возвращать значения. Однако void main() - не совсем корректная запись, так как сообщает компилятору, что функция main() не возвращает никакого значения. При этом запись int main() сообщает компилятору о возвращении целочисленного значения, которое необходимо операционной системе и сообщает ей о том, что программа завершилась корректно. Если же это значение не возвращено, то операционная система понимает, что программа завершилась в аварийном режиме. Для возврата целочисленного значения перед завершением функции дописывается строка

return 0;

Типы данных в языке Си

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

Процесс проверки и накладывания ограничений на типы используемых данных называется контролем типов или типизацией программных данных. Различают следующие виды типизации:

· Статическая типизация — контроль типов осуществляется при компиляции.

· Динамическая типизация — контроль типов осуществляется во время выполнения.

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

Различают простые, составные и прочие типы данных.

Простые данные

Простые данные можно разделить на

· целочисленные,

· вещественные,

· символьные

· логические.