- •Язык c. Лекция 1
- •1. Общая характеристика языка
- •1.1. История создания
- •2. Отличительные особенности языка c
- •2.1. Нет ничего, кроме функций
- •3.3. Описания
- •3.4. Общая структура программы
- •3.5. Способ передачи аргументов при вызове функции
- •4. Пример простой программы: решение квадратного уравнения
1.1. История создания
Язык C тесно связан с системой UNIX; собственно говоря, он и был создан для ее разработки:
[язык BCPL (середина 60-х) ] язык B (1970 г., 1-я версия UNIX для PDP-7) язык C
В 1978 г. вышло 1‑е издание книги Б. Кернигана и Д. Ритчи «Язык программирования C». Авторы книги были одновременно и разработчиками самого языка. До принятия официального стандарта книга Кернигана и Ритчи служила эталонным описанием языка не только для программистов, но и для разработки компиляторов. Первоначальная версия языка C, изложенная в 1‑м издании книги, сейчас уже устарела, хотя до сих пор поддерживается большинством компиляторов.
В течение 5 лет (1983 – 1988 гг.) велась работа над стандартом языка в комитете X3J11 ANSI (American National Standards Institute — Национальный институт стандартов США). Официальный стандарт опубликован в 1989 г. Этот стандарт затем был утвержден Международной организацией по стандартизации (ISO) как ISO/IEC 9899-1990. Стандартный вариант языка (под названием ANSI C) изложен во 2-м английском издании книги Кернигана и Ритчи, вышедшем в 1988 г. и выдержавшем к настоящему времени 34 переиздания1.
Развитие языка C продолжалось; появившиеся изменения и дополнения, расширяющие его возможности и обеспечивающие лучшую совместимость реализаций и переносимость программ, отражены в новом стандарте, принятом в 1999 г. Этот последний вариант языка известен как C99; пока лишь очень немногие компиляторы реализуют его в полном объеме.
1.2. C и C++
Язык C++ создан на основе C; в нем реализованы идеи объектно-ориентированного программирования (ООП). Сам по себе язык C не является объектно-ориентированным.
В известном смысле C можно считать подмножеством C++. Это значит, что правильная программа на языке C (при некотором ограничении «вольностей» со стороны программиста) является также и программой на языке C++.
В настоящее время практически нет компиляторов для «чистого» C; большинство из них годятся для работы как на C, так и на C++.
2. Отличительные особенности языка c
2.1. Нет ничего, кроме функций
Имеется единственный вид элементов, из которых строится программа — функции. Это следствие общего принципа: выполнение программы представляет собой последовательное вычисление различных выражений. При этом допускаются побочные эффекты, т.е. какие-то дополнительные результаты помимо формирования конечного значения вычисляемого выражения. Например, попутно могут меняться значения различных переменных, производиться операции ввода-вывода и т.п. Предполагается, что иногда «побочные» эффекты могут являться главной целью вычисления выражения, а сам формальный результат, т.е. значение выражения, не нужен (нигде далее не используется). Эта идеология допускает существование функций, не возвращающих2 никакого значения, если по смыслу в нем нет необходимости (т.е. такие функции не производят ничего кроме побочных эффектов).
Функции могут иметь произвольные названия за исключением одной: main. В любой законченной программе обязательно должна присутствовать функция main, которая называется «главной»: выполнение программы есть не что иное, как «вычисление» функции main; при этом результат, т.е. вычисленное значение, в самой программе использовать негде. (Это т. наз. «код завершения», который может быть передан тому, кто запустил программу — вышестоящему процессу операционной системы). В некоторых системах код завершения не является строго обязательным, и там разрешается делать main без возвращаемого значения.
2.2. Библиотека стандартных функций
Язык C компактен, т. е. набор основных его средств и конструкций невелик. Многие необходимые действия (например, операции ввода-вывода) не входят в состав собственно языка, но для их выполнения предусмотрен набор стандартных функций. Эти функции — неотъемлемая часть реализации языка; их ассортимент и поведение точно определены стандартом. Стандартная библиотека содержит более сотни функций.
2.3. Краткость записи
В языке последовательно выдерживается принцип краткости обозначений. Для наиболее часто используемых конструкций выбраны самые короткие формы записи или существуют альтернативные укороченные варианты.
3. Начальные сведения
3.1. Алфавит
В языке C буквы верхнего и нижнего регистров (заглавные и строчные) считаются различными. Все ключевые слова языка записываются строчными буквами. Символ подчеркивания (_) играет роль буквы.
3.2. Базовые типы данных
char – символы; размер всегда 1 байт
int – целые числа. Размер зависит от архитектуры процессора, это «естественный» размер элемента данных (машинное слово).
float – числа с плавающей точкой обычной (одинарной) точности.
double – числа с плавающей точкой увеличенной (двойной) точности. Наличие двух отдельных типов чисел с плавающей точкой обусловлено тем, что подавляющее большинство процессоров умеют работать с вещественными числами «обычной» и «увеличенной» точности.
указатель – адрес ячейки машинной (оперативной) памяти.
void – «пустой» тип (значение отсутствует или не определено). Используется для функций, не возвращающих никакого значения; может также указывать, что функция не имеет аргументов. Указатель на величину типа void — это абстрактный указатель (адрес размещения данных неизвестного типа).