- •Федеральное агентство по образованию
 - •Краткая история языка с
 - •Особенности и основные понятия языка Си
 - •Структура программы
 - •Типы данных
 - •Классификация типов данных
 - •Вещественные
 - •Логический
 - •Диапазоны представления данных
 - •Объявление переменных
 - •Константы в языке Си
 - •Операции языка Си. Приоритет операций
 - •Операция присваивания
 - •Арифметические операции
 - •Операции отношения
 - •Логические операции
 - •Поразрядные операции
 - •Операцияsizeof
 - •Операция выбора по условию
 - •Операция запятая
 - •Приведение типов Неявное преобразование типов
 - •Явное преобразование типов
 - •Основные средства ввода-вывода на Си Понятие потока
 - •Стандартные потоки
 - •Функции потокового ввода-вывода
 - •Функции ввода
 - •Ввод символов
 - •Ввод строк
 - •Форматированный ввод
 - •Операторы языка Си
 - •Оператор if
 - •Оператор switch
 - •Оператор while
 - •Оператор do while
 - •Оператор for
 - •Оператор break
 - •Оператор continue
 - •Функции вывода на экран
 - •Вывод символов
 - •Функция вывода строк puts()
 - •Форматированный вывод
 - •Указатели в языке Си
 - •Адресная арифметика
 - •Массивы
 - •Функции в языке с
 - •Прототипы функций
 - •Указатели типа void
 - •Функции, возвращающие указатели
 - •Встраиваемые функции
 - •Рекурсивные функции
 - •Функции с переменным числом аргументов
 - •Аргументы функции main()
 - •Область действия и область видимости
 - •Локальные переменные
 - •Локальные переменные в функции Main()
 - •Глобальные переменные
 - •Классы памяти
 - •Указатели на указатели
 - •Указатели и многомерные массивы
 - •Массивы указателей
 - •Указатели на функции
 - •Операции над строками символов Определение длины строки
 - •Копирование строк
 - •Поиск в строках
 - •Преобразования символов в строках
 - •Другие функции для работы со строками
 - •Преобразования строк в числа
 - •Преобразования чисел в строки
 - •Функции анализа символов
 - •Распределение памяти
 - •Манипулирование блоками памяти
 - •Типы, определяемые пользователем
 - •Перечислимый тип
 - •Структуры
 - •Сложные структуры
 - •Битовые поля в структурах
 - •Объединения
 - •Работа с файлами Связь между потоками и файлами
 - •Типы дисковых файлов
 - •Открытие файла
 - •Запись и чтение данных
 - •Форматированный ввод-вывод Форматированный вывод
 - •Int fprintf (file *fp, char *fmt, ...);
 - •Форматированный ввод
 - •Символьный ввод
 - •Символьный вывод
 - •Блочный ввод-вывод
 - •Закрытие файла
 - •Директивы препроцессора
 - •Директива #include
 - •Директива #define
 - •Директивы условной компиляции
 - •Директива #undef
 - •Предопределенные макросы
 - •69 Лекции по курсу «Языки программирования» Часть III
 
Структура программы
| 
			 
  | 
			 <команды препроцессора>  | 
			 #include <stdio.h> (эквивалентно {$I stdio.h}) #define N 20 (эквивалентно Const N=20;)  | 
| 
			 
  | 
			 
  | 
			 
  | 
| 
			 
  | 
			 <определение типов>  | 
			 1) Определение синонима старого типа typedef unsigned int uint; ----------- ----- определение синоним 
 2) определение нового типа typedef struct { int a, b;} str;  | 
| 
			 
  | 
			 
  | 
			 
  | 
| 
			 
  | 
			 <прототипы функций>  | 
			 Заголовок int sum(int x, int y);  | 
| 
			 
  | 
			 
  | 
			 
  | 
| 
			 
  | 
			 <глобальные переменные>  | 
			 int x, y; ( то же , что Var x, y: integer); или int x=2, y=3; (то же, что const x:integer=2; y:integer=3;)  | 
| 
			 
  | 
			 
  | 
			 
  | 
| 
			 
  | 
			 <функции>  | 
			 Заголовок + тело 
  | 
Функции в свою очередь имеют следующую структуру:
<тип > Имя(<описания формальных параметров>)
{ --- то же, что begin
<описания локальных переменных>
<операторы и вызовы функций>
} --- то же, что end
В программе на СИ из всех функций, которые вы объявляете, только одна должна иметь имя main. Это и есть главный модуль вашей программы. Если вы забыли назвать одну из функций как main, то программа не сможет выполниться. Компилироваться программа начинает не сразу – вначале выполняются предложения препроцессора. Он находит в тексте свои команды и в соответствии с ними выполняет преобразование текста программы.
Когда программа начинает выполняться, первой вызывается функция Main(), а она может вызывать другие функций, описанные по тексту программы выше или ниже (вложенные функции в Си запрещены). Любая программа на Си состоит только из функций (процедур в чистом виде нет). Однако, некоторые функции имеют тип void (пустой тип) и не возвращают значений, так, что они аналогичны процедурам Паскаля. Вы также можете просто игнорировать значения, возвращаемые функциями, и вызывать функции как процедуры.
Прототип представляет собой заголовок функции, заканчивающийся точкой с запятой. Требуются прототипы по следующей причине. К сожалению, компилятор Си не производит контроля соответствия количества и типов фактических и формальных параметров. Это является источником ошибок.
Прототипы обычно не требуются, если все используемые функции определяются выше точки их вызова (обычно в main()). Прототипы стандартных функций хранятся в виде специальных заголовочных (h-файлов), которые надо подключать к своей программе с помощью #include <имя h-файла>.
Определяются переменные в Си по другому, чем в Паскале:
слово Var не пишут, а тип и имя поменялись местами по сравнению с Паскалем;
в Си переменные можно инициализировать прямо в месте описания (как для типизированных констант на Паскале);
в отличие от Паскаля регистр букв в именах переменных учитывается, т.е.
int a,b; не то же, что int A,B;.
Комментарий на Си заключается внутрь /* */, комментарий может занимать несколько строк и допускается вкладывание одного комментария в другой с любым уровнем вложенности.
