Главная страница
Навигация по странице:

  • К36 Язык программирования

  • Предисловие к первому изданию

  • Имеется в

  • Б. Керриган, Д. Ритчи Язык программирования C. Б. Керниган, Д. зык программирования и . Издание 3е, исправленное Перевод с английского под редакцией Вс. С. Штаркмана СанктПетербург 2003


    Скачать 31.48 Mb.
    НазваниеБ. Керниган, Д. зык программирования и . Издание 3е, исправленное Перевод с английского под редакцией Вс. С. Штаркмана СанктПетербург 2003
    АнкорБ. Керриган, Д. Ритчи Язык программирования C.pdf
    Дата06.04.2017
    Размер31.48 Mb.
    Формат файлаpdf
    Имя файлаБ. Керриган, Д. Ритчи Язык программирования C.pdf
    ТипКнига
    #4546
    страница1 из 28
      1   2   3   4   5   6   7   8   9   ...   28

    Б.
    Д. Ритчи

    Brian
    Kernighan, Dennis M. Ritchie
    The anguage
    Second Edition
    Bell Laboratories
    Murray
    New Jersey
    Prentice Hall
    Englewood Cliffs, New Jersey 07632

    Б. Керниган, Д.
    зык программирования и
    • • .
    Издание 3-е, исправленное
    Перевод с английского под редакцией Вс. С. Штаркмана
    Санкт-Петербург 2003

    УДК 681.3.06
    ББК 24.4.9
    К36
    Перевод с английского Вт. С. Штаркмана,
    под редакцией Вс. С. Штаркмана.
    Керниган
    Ритчи Д.
    К36 Язык программирования
    с англ., 3-е изд., испр. —
    СПб.: "Невский Диалект", 2001. - 352 с: ил.
    Книга широко известных авторов, разработчиков языка Си, переработанная и дополненная с учетом стандарта ANSI для языка Си, 2-е английское издание которой вышло в году, давно стала классикой для всех изучающих и/или использующих как Си, так и Си++. Русский перевод этой книги впервые был выпущен "Финансы и статистика" в г. и с тех пор пользуется неиз- менным спросом читателей.
    Для настоящего третьего русского издания перевод заново сверен с оригина- лом, в него внесены некоторые поправки, учитывающие устоявшиеся за прошед- шие годы изменения в терминологии, а так же учтены замечания, размещенные автором на странице
    Для программистов, преподавателей и студентов.
    Издание подготовлено при участии издательства "Финансы и статистика".
    ©
    by Bell Telephone
    ISBN 0-13-110362-8 {PBK} Laboratories, Incorporated
    ISBN 0-13-110370-9 (англ.) © "Невский Диалект",
    '

    Оглавление
    Предисловие 8
    Предисловие к первому изданию 10
    Введение 12
    Глава
    Обзор языка 17 1.1. Начнем, пожалуй
    18 1.2. Переменные и арифметические выражения 21
    Инструкция for 27 1.4. Именованные константы 28 1.5. Ввод-вывод символов '. 29 1.6. Массивы 38 1.7. Функции 40 1.8. Аргументы. Вызов по значению 44 1.9. Символьные массивы 45 1.10. Внешние переменные и область видимости 49
    Глава2. Типы, операторы и выражения 54 2.1. Имена переменных 54 2.2. Типы и размеры данных 55 2.3. Константы 56 2.4. Объявления 60 2.5. Арифметические операторы 61 2.6. Операторы отношения и логические операторы 62 2.7. Преобразования типов 63 2.8. Операторы инкремента и декремента 68 2.9. Побитовые операторы '. 70 2.10. Операторы и выражения присваивания 72 2.11. Условные выражения 74 2.12. Приоритет и очередность вычислений 75 3. Управление 78 3.1. Инструкции и блоки , 78 3.2. Конструкция
    78 3.3.
    80 3.4. Переключатель switch 82 3.5. Циклы while и f o r 84 3.6. Цикл do-while 88 3.7. Инструкции break и continue '. 90 3.8. Инструкция goto и метки 91

    Оглавление
    Глава 4. Функции и структура программы 93 4.1. Основные сведения о функциях 94 4.2. Функции, возвращающие нецелые значения 98 4.3. Внешние переменные 101 4.4. Области видимости .'. 108 4.5. Заголовочные файлы
    4.6. Статические переменные
    4.7. Регистровые переменные
    4.8. Блочная структура
    4.9. Инициализация
    4.10. Рекурсия
    Препроцессор языка Си 118
    Глава 5. Указатели и массивы 124 5.1. Указатели и адреса •. 124 5.2. Указатели и аргументы
    126 5.3. Указатели и массивы 129 5.4. Адресная арифметика 133 5.5. Символьные указатели функции 137 5.6. Массивы указателей, указатели на указатели
    5.7. Многомерные массивы 145 5.8. Инициализация массивов указателей 148 5.9. Указатели против многомерных массивов 148 5.10. Аргументы командной строки 150 5.11. Указатели на функции 155 5.12. Сложные объявления 159
    Структуры 165 6.1. Основные сведения о структурах 165 6.2. Структуры и функции 168 6.3. Массивы структур 171 6.4. Указатели на структуры 176 6.5. Структуры со ссылками на себя 179 6.6. Просмотр таблиц 184 6.7. Средство typedef 187 6.8. Объединения 189 6.9. Битовые поля : 191
    вывод
    194 7.1. Стандартный ввод-вывод 194 7.2. Форматный вывод
    197 7.3. Списки аргументов переменной длины 199 7.4. Форматный ввод
    201

    Оглавление
    7.5. Доступ к файлам 205 7.6.
    ошибками (stderr exit) 208 7.7. Ввод-вывод строк '.
    7.8. Другие библиотечные функции 212
    Интерфейсе системой UNIX 216
    Дескрипторы файлов 216 8.2. Нижний уровень ввода-вывода (read и write) 217 8.3. Системные вызовы open, creat, close,
    220 8.4. Произвольный доступ
    222 8.5. Пример. Реализация функций open и getc 224 8.6. Пример. Печать каталогов 228 8.7. Пример. Распределитель памяти 235
    Приложение А. Справочное руководство
    А1. Введение 241
    А2. Соглашения о лексике 241
    A3. Нотация синтаксиса 246
    А4. Что обозначают идентификаторы 246
    А5. Объекты и Lvalues 249
    А6. Преобразования 250
    А7. Выражения 254
    А8. Объявления 268
    А9. Инструкции 284
    А10. Внешние объявления 289
    All. Область видимости и связи 292
    Препроцессирование 294
    А13. Грамматика 301
    Приложение В. Стандартная библиотека 309 310
    Проверки класса символа: Функции, оперирующие со строками: 320
    Математические функции:
    h> 322
    Функции общего назначения: 323
    Диагностика:
    h> 326
    Списки аргументов переменной длины: 327
    Дальние h> 327
    Сигналы:
    328
    Функции даты и времени:
    329 1. Зависящие от реализации пределы:
    h> и h> 331
    Приложение С. Перечень изменений 333 338

    Предисловие
    С момента публикации в г. книги "Язык программирования Си"
    в мире компьютеров произошла революция. Большие машины стали еще больше, а возможности персональных ЭВМ теперь сопоставимы с воз- можностями больших машин десятилетней давности. Язык это вре- мя также изменился, хотя и не очень сильно; что же касается сферы при- менения то она далеко вышла за рамки его начального назначения как инструментального языка операционной системы UNIX.
    Рост популярности Си, накапливающиеся с годами изменения, созда- ние компиляторов коллективами разработчиков, ранее не причастных к проектированию языка, - все это послужило стимулом к более точному и отвечающему времени определению языка по сравнению с первым изда- нием книги. В
    г. Американский институт национальных стандартов
    (American National Standards Institute - ANSI) учредил комитет, перед которым была поставлена цель выработать "однозначное и машинно- независимое определение языка Си", полностью сохранив при этом его стилистику. Результатом работы этого комитета и явился стандарт ANSI
    языка Си.
    Стандарт формализует средства которые в первом были только намечены, но не описаны, такие, например, как присваивание структурам и перечисления. Он вводит новый вид описания функций,
    позволяющий проводить повсеместную проверку согласованности вызо- вов функций с их определением; специфицирует стандартную библиоте- ку с широким набором функций ввода-вывода, управления памятью, ма- нипуляций со строками символов и другими функциями; уточняет семан- тику, бывшую в первоначальном определении неясной, и явно выделяет то, что остается машинно-зависимым.
    Во втором издании книги "Язык программирования Си" представлена версия Си, принятая в качестве стандарта ANSI. Мы решили описать язык заново, отметив при этом те места, в которых он претерпел изменения.
    В большинство параграфов это не привнесло существенных перемен, самые заметные различия касаются новой формы описания и определения функ- ции. Следует отметить, что современные компиляторы уже обеспечили поддержку значительной части стандарта.

    Предисловие
    Мы попытались сохранить краткость первого издания. Си — неболь- шой язык, и чтобы его описать большой книги не требуется. В новом из- дании улучшено описание наиболее важных средств, таких как указате- ли, которые занимают центральное место в программировании на Си; до- работаны старые примеры, а в некоторые главы новые. Так,
    для усиления трактовки сложных объявлений в качестве примеров включе- ны программы перевода объявлений в их словесные описания и обратно.
    Как и все примеры были протестированы прямо по текстам, на- писанным в воспринимаемой машиной форме.
    Приложение А — это справочное руководство, но отнюдь не стандарт.
    В нем мы попытались уложить самое существенное на минимуме ниц. По замыслу это приложение должно легко читаться программистом- пользователем; для разработчиков же компилятора определением языка должен служить сам стандарт. В приложении В приведены возможности стандартной библиотеки. Оно также представляет собой справочник для прикладных программистов, но не для разработчиков компиляторов.
    Приложение С содержит краткий перечень отличий представленной вер- сии языка Си от его начальной версии.
    В предисловии к первому изданию мы говорили том, что "чем больше работаешь с Си, тем он становится удобнее". Это впечатление осталось и после десяти лет работы с ним. Мы надеемся, что данная книга поможет вам изучить Си и успешно его использовать.
    Мы в большом долгу перед друзьями, которые помогали нам в выпуске второго издания книги. Джон Бентли, Дуг Гуин, Дуг Макилрой, Питер
    Нельсон и Роб Пайк сделали четкие замечания почти по каждой страни- це первого варианта рукописи. Мы благодарны
    Ахо, Деннису сону, Джою Кемпбеллу, Г. Р. Эмлину, Карен Фортганг,
    Голубу,
    Эндрю Хьюму, Дэйву Кристолу, Джону Линдерману, Дэйву Проссеру,
    Гину Спаффорду и Крису Ван Уику за внимательное прочтение книги.
    Мы получили полезные советы от Билла Чезвика, Марка Кернигана,
    Эндрю Коэнига, Робина Лейка, Тома Лондона, Джима Ридза, Кловиза
    Тондо и Питера Вайнбергера. Дейв Проссер ответил на многочисленные вопросы, касающиеся деталей стандарта ANSI. Мы широко пользовались транслятором с Си++ Бьерна Страуструпа для локальной проверки на- ших программ, а Дейв Кристол предоставил нам для окончательной их проверки. Рич Дрешлер очень помог в наборе книги.
    Мы искренне благодарим всех.
    Брайан В.
    Ритчи

    Предисловие к первому изданию
    Си — это универсальный язык программирования с компактным спо- собом записи выражений, современными механизмами управления струк- турами данных и богатым набором операторов. Си не является ни язы- ком "очень высокого уровня", ни "большим" языком, не рассчитан он и на какую-то конкретную область применения. Однако благодаря ши- роким возможностям и универсальности для решения многих задач он удобнее и эффективнее, чем предположительно более мощные языки.
    Первоначально Си был создан Деннисом Ритчи как инструмент на- писания операционной системы UNIX для машины и реализован в рамках этой операционной системы. И операционная система, и Си-ком- пилятор, и, по существу, все прикладные программы системы UNIX
    (включая и которые использовались для подготовки текста этой кни-
    ) написаны на Си. Фирменные Си-компиляторы существуют и на не- скольких машинах других типов,
    которых IBM/370, Honeywell 6000
    и
    8/32. Си не привязан к конкретной аппаратуре или системе,
    однако на нем легко писать которые без каких-либо измене- ний переносятся на другие где осуществляется его поддержка.
    Цель нашей книги — помочь читателю научиться программировать
    Си. Издание включает введение-учебник, позволяющий новичкам начать программировать как можно скорее, а также главы, посвященные основ- ным свойствам языка, и справочное руководство. В ее основу положены изучение, написание и проработка примеров, а не простое перечисление правил. Почти все наши примеры — это законченные реальные програм- мы, а не разобщенные фрагменты. Все они были оттестированы на маши- не точно в том виде, как приводятся в книге. Помимо демонстрации эф- фективного использования языка, там, где это было возможно, мы стре- мились проиллюстрировать полезные алгоритмы и принципы хорошего стиля написания программ и их разумного проектирования.
    Эта книга не является вводным курсом по программированию. Пред- полагается, что читатель знаком с такими основными понятиями, как "пе- ременная", "присваивание", "цикл", "функция". Тем не менее и новичок
    ' Имеется в виду оригинал этой к н и г и на английском
    Примеч. пер.

    Предисловие к первому изданию сможет изучить язык, хотя для него будет очень полезным общение с бо- лее знающими специалистами.
    Наш опыт показал, что Си — удобный, выразительный и гибкий язык,
    пригодный для программирования широкого класса задач. Его легко вы- учит и чем больше с Си, тем он становится удобнее. Мы на- деемся, что эта книга поможет вам хорошо его освоить.
    Вдумчивая критика и предложения многих друзей и коллег помогали нам написать книгу. В частности, Майк Бианки, Джим Блу, Стью Фелд- ман, Дуг Макилрой, Билл Рум, Боб Розин и Ларри Рослер со вниманием прочли все многочисленные варианты этой книги. Мы в долгу у Ала Ахо,
    Стива Бьерна, Дана Дворака, Чака Хейли, Марион Харрис, Рика Холта,
    Стива Джонсона, Джона Машея, Боба Митца, Ральфа Мухи, Питера
    Нельсона, Эллиота Пинсона, Билла
    Джерри Спивака, Кена
    Томпсона и Питера Вайнбергера за полезные полученные от них на различных стадиях подготовки рукописи, а также у Майка Леска и Джо за помощь при подготовке ее к изданию.
    Брайан В.
    Деннис
    Ритчи

    Введение
    Си — универсальный язык программирования. Он тесно связан с сис- темой UNIX, так как был разработан в этой системе, которая как и боль- шинство программ, работающих в ней, написаны на Си. Однако язык не привязан жестко к какой-то одной операционной системе или машине.
    Хотя он и назван "языком системного программирования", поскольку удобен для написания компиляторов и операционных оказалось,
    что на нем столь же хорошо писать большие программы другого про- филя.
    Многие важные идеи Си взяты из языка BCPL, автором которого яв- ляется Мартин Ричарде. Влияние BCPL на Си было косвенным - через язык В, разработанный Кеном Томпсоном в 1970 г. для первой системы
    UNIX, реализованной на PDP-7.
    BCPL и В - "бестиповые" языки. В отличие от них Си обеспечивает разнообразие типов данных. Базовыми типами являются символы, а так- же целые и числа с плавающей точкой различных размеров. Кроме того,
    имеется возможность получать целую иерархию производных типов дан- ных из указателей, массивов, структур и объединений. Выражения фор- мируются из операторов и операндов. Любое выражение, включая при- сваивание и вызов функции, может быть инструкцией. Указатели обес- печивают машинно-независимую адресную арифметику.
    В Си имеются основные управляющие конструкции, используемые в хорошо структурированных программах: составная инструкция ветвление по условию выбор одной альтернативы из многих
    (switch), циклы с проверкой наверху (while,
    и с проверкой внизу (do),
    а также средство прерывания цикла (break).
    В качестве результата функции могут возвращать значения базовых типов, структур, объединений и указателей. Любая функция допускает рекурсивное обращение к себе. Как правило, локальные переменные функции - "автоматические", т. е. они создаются заново при каждом об- ращении к ней. Определения функций нельзя вкладывать друг в друга,
    но объявления переменных разрешается строить в блочно-структурной манере. Функции программы на Си могут храниться в отдельных ис- ходных файлах и компилироваться независимо. Переменные по отно-
    шению к функции могут быть внутренними и внешними. Последние мо- гут быть доступными в пределах одного исходного файла или всей про- граммы.
    На этапе препроцессирования выполняется макроподстановка в текст программы, включение других исходных файлов и у
    Си - язык сравнительно "низкого уровня". Однако это вовсе не умаля- ет его достоинств, просто Си имеет дело с теми же объектами, что и боль- шинство компьютеров, т. е. с символами, числами и адресами. С
    можно оперировать при помощи арифметических и логических операций,
    выполняемых реальными машинами.
    В Си нет прямых операций над составными объектами, такими как стро- ки символов, множества, списки и массивы. В нем нет операций, которые бы манипулировали с целыми массивами или строками символов, хотя структуры разрешается копировать целиком как единые объекты. В язы- ке нет каких-либо средств распределения памяти, помимо возможности определения статических переменных и стекового механизма при выде- лении места для локальных переменных внутри функций. Нет в нем "кучи" и "сборщика мусора". Наконец, в самом Си нет средств ввода-вы- вода, инструкций READ (читать) и WRITE (писать) и каких-либо мето- дов доступа к файлам. Все это - механизмы высокого уровня, которые в Си обеспечиваются исключительно с помощью явно вызываемых функ- ций. Большинство реализованных Си-систем содержат в себе разумный стандартный набор этих функций.
    В продолжение сказанного следует отметить, что Си предоставляет средства лишь последовательного управления ходом вычислений: меха- низм ветвления по условиям, циклы, составные инструкции, подпрограм- мы - и не содержит средств мультипрограммирования, параллельных процессов, синхронизации и организации сопрограмм.
    Отсутствие некоторых из перечисленных средств может показаться серьезным недостатком ("выходит, чтобы сравнить две строки символов,
    нужно обращаться к
    Однако компактность языка имеет ре- альные выгоды. Поскольку Си относительно мал, то и описание его крат- ко, и овладеть им можно быстро. Программист может реально рассчиты- вать на то, что он будет знать, понимать и на практике регулярно ваться всеми возможностями языка.
    В течение многих лет единственным определением языка Си было пер- вое издание книги "Язык программирования Си". В 1983 г. Институтом американских национальных стандартов учреждается комитет для выработки современного исчерпывающего определения языка Си. Ре- зультатом его работы явился стандарт для Си выпущенный в 1988 г. Большинство положений этого стандарта уже учтено в совре- менных компиляторах.

    Введение
    Стандарт базируется на первоначальном справочном руководстве.
    По сравнению с последним язык изменился относительно мало. Одной из целей стандарта было обеспечить, чтобы в большинстве случаев суще- ствующие программы оставались правильными или вызывали предупреж- дающие сообщения компиляторов об изменении поведения.
    Для большинства программистов самое важное изменение - это но- вый синтаксис объявления и определения функций. Объявление функ- ции может теперь включать и описание ее аргументов. В соответствии с этим изменился и синтаксис определения функции. Дополнительная информация значительно облегчает компилятору выявление ошибок, свя- занных с несогласованностью аргументов; по нашему мнению, это очень полезное добавление к языку.
    Следует также отметить ряд небольших изменений. В языке узаконе- ны присваивание структур и перечисления, которые уже некоторое вре- мя широко используются. Вычисления с плавающей точкой теперь до- пускаются и с одинарной точностью. Уточнены свойства арифметики,
    особенно для беззнаковых типов. Усовершенствован препроцессор. Боль- шинство программистов эти изменения затронут очень слабо.
    Второй значительный вклад стандарта - это определение библиоте- ки, поставляемой вместе с Си-компилятором, в которой специфициру- ются функции доступа к возможностям операционной системы (напри- мер чтения-записи файлов), форматного ввода-вывода, динамического выделения памяти, манипуляций со строками символов и т. д. Набор стандартных заголовочных файлов обеспечивает единообразный доступ к объявлениям функций и типов данных. Гарантируется, что програм- мы, использующие эту библиотеку при взаимодействии с операционной системой, будут работать также и на других машинах. Большинство про- грамм, составляющих библиотеку, созданы по образу и подобию "стан- дартной библиотеки ввода-вывода" системы UNIX. Эта библиотека описана в первом издании книги и широко используется в других систе- мах. И здесь программисты не заметят существенных различий.
    Так как типы данных и управляющих структур языка Си поддержива- ются командами большинства существующих машин, исполнительная система (run-time library), обеспечивающая независимый запуск и выпол- нение программ, очень мала. Обращения к библиотечным функциям пи- шет сам программист (не компилятор), поэтому при желании их можно легко заменить на другие. Почти все программы, написанные на Си, если они не касаются каких-либо скрытых в операционной системе деталей,
    переносимы на другие машины.
    Си соответствует аппаратным возможностям многих машин, однако он не привязан к архитектуре какой-либо конкретной машины. Проявляя некоторую дисциплину, можно легко писать переносимые программы,

    Введение т. е. программы, которые без каких-либо изменений могут работать на раз- ных машинах. Стандарт предоставляет возможность для явного описа- ния переносимости с помощью набора констант, отражающих характерис- тики машины, на которой программа будет работать.
    Си не является "строго типизированным" языком, но в процессе его развития контроль за типами был усилен. В первой версии Си хоть не одобрялся, но разрешался бесконтрольный обмен указателей и целых,
    что вызывало большие нарекания, но это уже давным-давно запрещено.
    Согласно стандарту теперь требуется явное объявление или явное указа- ние преобразования,
    уже и реализовано в хороших компиляторах. Но- вый вид объявления функций - еще один шаг в этом направлении. Ком- пилятор теперь предупреждает о большей части ошибок в типах и авто- матически не выполняет преобразования данных несовместимых типов.
    Однако основной философией Си остается что программисты сами что делают; язык лишь требует явного указания об их намерениях.
    Си, как и любой другой язык программирования, не свободен от недо- статков. Уровень старшинства некоторых операторов не является обще- принятым, некоторые синтаксические конструкции могли бы быть луч- ше. Тем не менее, как оказалось, Си - чрезвычайно эффективный и вы- разительный язык, пригодный для широкого класса задач.
    Книга имеет следующую структуру. Глава 1 представляет собой обзор основных средств языка Си. Ее назначение - побудить читателя по воз- можности быстрее приступить к программированию, так как мы убежде- ны, что единственный способ изучить новый язык - это писать на нем программы. Эта часть книги предполагает наличие знаний по основным элементам программирования. Никаких пояснений того, что такое ком- пьютер, компиляция или что означает выражение вида п =
    не дается.
    Хотя мы и пытались там, где это возможно, показать полезные приемы программирования, эта книга не призвана быть справочником ни по ра- боте со структурами данных, ни по алгоритмам; когда оказывалось необ- ходимым выбрать, на что сделать ударение, мы предпочитали сконцент- рировать внимание на языке.
    В главах 2-6 различные средства языка обсуждаются более и несколько более формально, чем в главе при этом по-прежнему упор делается на примеры, являющиеся законченными программами, а не изолированными фрагментами. Глава 2 знакомит с базовыми типами данных, с операторами и выражениями. В главе 3 рассматриваются сред- ства управления последовательностью вычислений:
    switch, while,
    и т. д. В главе 4 речь идет о и структуре программы (внеш- них переменных, правилах видимости, делении программы на несколько исходных файлов и т. д.), а также о препроцессоре. В главе 5 обсужда- ются указатели и адресная арифметика. Глава 6 посвящена структурам и объединениям.

    Введение
    В главе 7 описана стандартная библиотека, обеспечивающая общий ин- терфейс с операционной системой. Эта библиотека узаконена в качестве стандарта ANSI, иначе говоря, она должна быть представлена на всех ма- шинах, где существует Си, благодаря чему программы, использующие ввод-вывод и другие возможности операционной системы, без каких-либо изменений можно переносить с одной машины на другую.
    Глава 8 содержит описание интерфейса между программами на Си и операционной системой UNIX, в частности описание ввода-вывода,
    файловой системы и распределения памяти. Хотя некоторые параграфы этой главы отражают специфику системы UNIX, программисты, пользу- ющиеся другими системами, все же найдут в них много полезных сведе- ний, включая определенный взгляд на то, как реализуется одна из версий стандартной библиотеки, и некоторые предложения по переносимости программ.
    Приложение А является справочником по языку. Строгое определе- ние синтаксиса и семантики языка Си содержится в официальном доку- менте стандарта ANSI. Последний, однако, более всего подходит разра- ботчикам компилятора. Наш справочник определяет язык более сжато,
    не прибегая к педантично юридическому стилю, которым пользуется стан- дарт. Приложение В - сводка по содержимому стандартной библиотеки и предназначена скорее пользователям, чем реализаторам. В приложении
    С приводится краткий перечень отличий от версии языка. В со- мнительных случаях, однако, окончательным судьей по языку остается стандарт и компилятор, которым вы пользуетесь.

    Глава 1
    Обзор языка
    Начнем с быстрого ознакомления с языком Си. Наша цель - показать на реальных программах существенные элементы языка, не вдаваясь в мелкие детали, формальные правила и исключения из них. Поэтому мы не стремимся к полноте и даже точности (заботясь, однако, о коррект- ности примеров). Нам бы хотелось как можно скорее подвести вас к мо- менту, когда вы сможете писать полезные программы. Чтобы сделать это,
    мы должны сконцентрировать внимание на основах: переменных и кон- стантах, арифметике, управлении последовательностью вычислений,
    функциях и простейшем вводе-выводе. В настоящей главе мы умышлен- но не затрагиваем тех средств языка, которые важны при написании боль- ших программ: указателей, структур, большой части богатого набора опе- раторов, некоторых управляющих инструкций и стандартной библиоте- ки.
    Такой подход имеет свои недостатки. Наиболее существенный из них состоит в том, что отдельное характерное свойство языка не описывается полностью в одном месте, и подобная лаконичность при обучении может привести к неправильному восприятию некоторых положений. В силу ограниченного характера подачи материала в примерах не используется вся мощь языка, и потому они не столь кратки и элегантны, как могли бы быть.
    Мы попытались по возможности смягчить эти эффекты, но считаем не- обходимым предупредить о них. Другой недостаток заключается в том, что в последующих главах какие-то моменты нам придется повторить. Мы на- деемся, что польза от повторений превысит вызываемое ими раздражение.
    В любом случае опытный программист должен суметь экстраполиро- вать материал данной главы на свои программистские нужды. Нович- кам же рекомендуем дополнить ее чтение собственных ма- леньких программ. И те и другие наши читатели могут рассматривать эту главу как на который далее, начиная с главы 2, будут "навеши- ваться" элементы языка.

      1   2   3   4   5   6   7   8   9   ...   28


    написать администратору сайта