Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст_лекций_Си.doc
Скачиваний:
18
Добавлен:
16.03.2016
Размер:
1.06 Mб
Скачать

СИ

(ISO/IEC 14882(1998))

Начнем мы с краткого экскурса в историю.

Известно, что каждый язык программирования, как и вообще все в этом мире, создается с некоторой определенной целью.

Язык Pascal был создан Н. Виртом для обучения студентов программированию. Надо сказать, что именно для этих целей – это действительно прекрасный язык. Но не пытайтесь на нем писать программы размером более 5000 строчек – неблагодарное это занятие.

Билл Гейтс создал BASIC таким образом, чтобы его синтаксис был максимально приближен к английскому языку, вследствие чего языком смогли пользоваться американские студенты, не знакомые с компьютерами.

был создан в далеком 1972 году в компании Bell Labs Деннисом Ритчи во время работы над ОС Unix. После окончания разработки вся система была на нем и написана.

Сегодня три самые известные ОС: DOS, Windows и UNIX написаны именно на C. А из этого следует, что проще всего писать программы под эти системы именно на С.

Но тогда обстановка была достаточно интересной: единого стандарта на операционную систему и аппаратную платформу не существовало (это теперь все сидят на IBM PC-производных и MS Windows).

Отсюда вытекало первое требование к языку: КОД ДОЛЖЕН БЫТЬ МОБИЛЬНЫМ, то есть программист при желании должен был иметь возможность создания программ, которые без изменений могли быть откомпилированы на ЛЮБОЙ системе, на которой реализован компилятор C.

Сейчас язык стандартизирован (если у вас установлен Borland C++ версий от 1.0 до 3.1 (на остальных – не знаю, не искал), то вы в описании на любую библиотечную функцию можете увидеть таблицу поддерживаемых платформ. Если там отмечен пункт ANSI, то отмечены и все остальные), и ту его часть, которая включена в этот стандарт, реализована на всех платформах.

Во-вторых, язык должен был быть достаточно мощным, чтобы на нем писать ОС.

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

Вообще всегда есть выбор, кому облегчить жизнь: конечным пользователям некоторой программы или же ее программистам. В Си предпочтение отдается пользователям: программы на нем меньше, быстрее, портативнее и т.д. Но за все в этом мире надо платить: нам с вами придется основательно попотеть, чтобы создать нечто грандиозное.

Глава 1 элементы языка

Программиста спрашивают:

- Как вам удалось так быстро выучить английский язык?

- Да ерунда. Они там почти все слова из С++ взяли.

В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения.

Подобные элементы содержит и алгоритмический язык, только слова называются лексемами, словосочетания – выражениями, а предложения - операторами. Лексемы образуются из символов, выражения – из лексем и символов, а операторы – из символов, выражений и лексем.

  • алфавит языка или его символы – это основные неделимые знаки, с помощью которых пишутся все тексты на языке.

  • лексема – минимальная единица языка, имеющая самостоятельный смысл.

  • выражение задает правило вычисления некоторого значения.

  • оператор задает законченное описание некоторого действия.

    1. Алфавит

Основа – код ASCII,

  • буквы – латинские (прописные и строчные);

  • символ подчеркивания;

  • цифры – арабские,

  • спецсимволы.

  • пробельные символы: пробел, табуляция, переход на новую строку.

    1. Лексемы языка

      1. Идентификаторы

Идентификатор – имя программного объекта (переменных, констант, массивов, структур и т.д.).

Состав идентификатора: буквы, цифры, _ .

Первый символ буква или символ подчеркивания.

Максимальная длина идентификатора – 32 символа. Пробелы внутри идентификатора недопустимы.

Пример: STEP KOD A1 player_1 next_step

При создании идентификатора следует иметь в виду следующее:

  • идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка.

Например: в языке PL/1 допустимо:

IF IF = THEN THEN

THEN = ELSE;

ELSE

ELSE = IF; в Си такое недопустимо!

  • не рекомендуется начинать идентификатор с символа подчеркивания, т.к. велика вероятность совпадения таких идентификаторов с именами стандартных объектов языка.

Основной принцип лежащий в основе понятия «стиль программирования»– писать так, чтобы программу могли прочесть не только машины, но и люди.

СТИЛЬ – набор приемов или методов программирования, используемых для получения ПРАВИЛЬНЫХ, УДОБНЫХ ДЛЯ ПРИМЕНЕНИЯ, ЛЕГКОЧИТАЕМЫХ и, желательно, ЭФФЕКТИВНЫХ программ. Особый стиль – это программы, понятные лишь автору.

Стиль Си:

  • идентификаторы – малые буквы.

  • Имена должны быть осмысленными.

Hе надо! x xx aa a1 a2

Hормально! type size adress

Еще лучше! beg_km end_km field_name max_lenght

Существуют два соглашения о правилах создания имен (нотации)

Паскалевская нотация! BegKm EndKm FieldName

«Венгерская» нотация! intBegKm intEndKm charFieldName

  • Сходные имена не надо!

value и values ax1 и axi k и K

  • Цифры располагаются в конце идентификаторов.

fund1 Tab15

      1. Ключевые слова

Это зарезервированные идентификаторы, которые тимеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. По ходу.

      1. Знаки разрядки (пустые символы).

В языке СИ пустыми символами являются: пробел, табуляция (Tab), переход на новую строку  (Enter)

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

  • Размещение операторов. 1 оператор (кроме сложных) в строку.

Причины:

  • соответствует требованиям структурного программирования, требующим сдвигать оператор по строке в соответствии с уровнем его вложенности;

  • облегчает коррекцию.

  • Перенос.

  • если слово не входит в строку, начинайте его с новой строки;

  • делайте перенос после знака операции;

  • при переносе оператора строки продолжения сдвигать на 5…6 позиций.

Пример:

a = b – c Hехорошо! a = b – c – Хорошо!

– (d+2); (d+2);

  • Отступы – это абзац, выявление структуры программы.

Пример: Циклы

пока ( условие_1 )

действие_1-1;

пока ( условие_2)

действие_2-1;

действие_2-2;

конец пока

действие_1-2;

конец пока

Условные операторы

если ( условие ) то

действие_1;

действие_2;

иначе

действие_3;

действие_4;

  • Пропуск строк и пробелы обеспечивают уникальную разрядку текста. Применение:

– выделение логических частей текста (процедур, блоков);

– после нарушения естественного порядка выполнения операторов

(continue, break, goto);

– выделение комментариев.

– выявление структуры программы.