Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Stoneshard |#11| Battle at the castle
Stoneshard |#10| A busy reaper
The Elder Scrolls IV: Oblivion Remastered - Trash review
Stoneshard |#9| A Million Liches

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Страустрап Б. Весь текст 579.17 Kb

Язык С++

Предыдущая страница Следующая страница
1 ... 32 33 34 35 36 37 38  39 40 41 42 43 44 45 ... 50
     вашей системе,  (5) все символы пунктуации, (6) целые значения
     всех управляющих символов, (7) все символы пропуска, (8) целые
     значения всех символов пропуска, и (9) все печатаемые символы.
  5. (*4)  Реализуйте   стандартную   библиотеку   ввода/вывода   C
     () с  помощью стандартной библиотеки ввода/вывода C++
     ().
  6. (*4)  Реализуйте   стандартную  библиотеку   ввода/вывода  C++
     () с  помощью стандартной библиотеки ввода/вывода  C
     ().
  7. (*4) Реализуйте  стандартные библиотеки C и C++ так, чтобы они
     могли использоваться одновременно.
  8. (*2)  Реализуйте   класс,  для  которого  []  перегружено  для
     реализации случайного чтения символов из файла.
  9. (*3) Как  Упражнение 8,  только сделайте,  чтобы [] работало и
     для чтения,  и  для  записи.  Подсказка:  сделайте,  чтобы  []
     возвращало  объект   "дескрипторного   типа",   для   которого
     присваивание означало  бы присвоить  файлу через дескриптор, а
     неявное преобразование  в char  означало бы  чтение  из  файла
     через дескриптор.
  10. (*2) Как  Упражнение 9,  только  разрешите  []  индексировать
     записи некоторого вида, а не символы.
  11. (*3) Сделайте  обобщенный  вариант  класса,  определенного  в
     Упражнении 10.
  12. (*3.5)  Разработайте   и   реализуйте   операцию   ввода   по
     сопосталению с  образцом. Для спецификации образца используйте
     строки  формата   в  духе   printf.  Должна  быть  возможность
     попробовать  сопоставить  со  вводом  несколько  образцов  для
     нахождения фактического  формата. Можно  было бы вывести класс
     ввода по образцу из istream.
  13. (*4) Придумайте  (и реализуйте) вид образцов, которые намного
     лучше.


                     Справочное руководство по C++

                         1. ВВЕДЕНИЕ

  Язык  программирования   C++  -  это  C*,  расширенный  введением
классов, inline-функций,    перегруженных  операций,  перегруженных
имен  функций,   константных  типов,  ссылок,  операций  управления
свободной памятью,  проверки параметров  функций. Коротко  различия
между С++  и  "старым  С"  приведены  в  #15.  В  этом  руководстве
описывается язык по состоянию на Июнь 1985.

                 2. ДОГОВОРЕННОСТИ О ЛЕКСИКЕ

  Есть  шесть   классов  лексем:  идентификаторы,  ключевые  слова,
константы, строки, операторы и прочие разделители. Символы пробела,
табуляции и  новой строки,  а  также  комментарии  (собирательно  -
"белые места"),  как описано ниже, игнорируются, за исключением тех
случаев, когда  они служат разделителями лексем. Некое пустое место
необходимо  для   разделения  идентификаторов,   ключевых  слов   и
констант, которые в противном случае окажутся соприкасающимися.
  Если входной  поток  разобран  на  лексемы  до  данного  символа,
принимается, что следующая лексема содержит наиболее длинную строку
символов из тех, что могут составить лексему.

     2.1 Комментарии

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

     2.2 Идентификаторы (имена)

  Идентификатор  -  последовательность  букв  и  цифр  произвольной
длины; первый  символ обязан  быть буквой; подчерк '_' считается за
букву; буквы в верхнем и нижнем регистрах являются различными.

     2.3 Ключевые слова

  Следующие  идентификаторы  зарезервированы  для  использования  в
качестве ключевых слов и не могут использоваться иным образом:

____________________
  * "Язык  программирования Си"  Брайэна В.  Кернигана и Денниса М.
Ритчи. Это  руководство было  построено на  основе  "C  Programming
Language -  Reference Manual" системы UNIX V с разрешения AT&T Bell
Laboratories. (прим. автора)

                             - стр 254 -

  asm       auto      break     case      char
  class     const     continue  default   delete
  do        double    else      enum      extern
  float     for       friend    goto      if
  inline    int       long      new       operator
  overload  public    register  return    short
  sizeof    static    struct    switch    this
  typedef   union     unsigned  virtual   void
  while

Идентификаторы signed  и volatile  зарезервированы для применения в
будущем.

     2.4 Константы

  Как  описано   ниже,  есть   несколько  видов  констант.  В  #2.6
приводится краткая  сводка аппаратных характеристик, которые влияют
на их размеры.

     2.4.1 Целые константы

  Целая константа,  состоящая из последовательности цифр, считается
восьмиричной, если  она начинается с 0 (цифры ноль), и десятичной в
противном случае.  Цифры 8  и 9  не являются восьмиричными цифрами.
Последовательность  цифр,   которой     предшествует  0х   или  0Х,
воспринимается как  шестнадцатеричное  целое.  В  шестнадцатеричные
цифры входят буквы от а или А до f или F, имеющие значения от 10 до
15. Десятичная  константа, значение  которой  превышает  наибольшее
машинное целое  со знаком, считается длинной (long); восьмеричная и
шестнадцатеричная константа,  значение которой превышает наибольшее
машинное целое со знаком, считается long; в остальных случаях целые
константы считаются int.

     2.4.2 Явно заданные длинные константы

  Десятичная,  восьмиричная  или  шестнадцатиричная  константа,  за
которой непосредственно  стоит l  (латинская буква  "эль")  или  L,
считается длинной константой.

     2.4.3 Символьные константы

  Символьная константа состоит из символа, заключенного в одиночные
кавычки  (апострофы),  как,  например,  'х'.  Значением  символьной
константы является  численное значение  символа в  машинном  наборе
символов (алфавите).  Символьные константы  считаются данными  типа
int.
  Некоторые неграфические  символы, одиночная  кавычка ' и обратная
косая \,  могут  быть  представлены  в  соответствие  со  следующей
таблицей escape-последовательностей:

   символ новой строки              NL(LF)        \n
   горизонтальная табуляция         NT            \t

                             - стр 255 -

   вертикальная табуляция           VT            \v
   возврат на шаг                   BS            \b
   возврат каретки                  CR            \r
   перевод формата                  FF            \f
   обратная косая                   \             \\
   одиночная кавычка (апостроф)     '             \'
   набор битов                      0ddd          \ddd
   набор битов                      0xddd         \xddd

  Escape-последовательность \ddd  состоит  из  обратной  косой,  за
которой следуют  1, 2  или 3  восьмеричных цифры, задающие значение
требуемого символа.  Специальным случаем  такой консрукции является
\0 (не  следует ни  одной  цифры),  задающая  пустой  символ  NULL.
Escape-последовательность  \xddd  состоит  из  обратной  косой,  за
которой следуют  1,  2  или  3  шестнадцатиричных  цифры,  задающие
значение требуемого  символа.  Если  следующий  за  обратной  косой
символ не  является  одним  из  перечисленных,  то  обратная  косая
игнорируется.

     2.4.4 Константы с плавающей точкой

  Константа с  плавающей точкой  состоит из целой части, десятичной
точки, мантиссы,  е или Е и целого показателя степени (возможно, но
не обязательно,  со знаком).  Целая часть и мантисса обе состоят из
последовательности цифр. Целая часть или мантисса (но не обе сразу)
может быть  опущена; или  десятичная точка, или е(Е) вместе с целым
показателем степени  (но не  обе  части  одновременно)  может  быть
опущена. Константа с плавающей точкой имеет тип double.

     2.4.5 Перечислимые константы

  Имена,  описанные   как  перечислители,   (см.   #8.5)   являются
константами типа int.

     2.4.6 Описанные константы

  Объект  (#5)   любого  типа  может  быть  определен  как  имеющий
постоянное значение  во всей  области видимости (#4.1) его имени. В
случае указателей  для  достижения  этого  используется  декларатор
*const; для  объектов, не  являющихся    указателями,  используется
описатель const (#8.2).

     2.5 Строки

  Строка есть  последовательность символов,  заключенная в  двойные
кавычки: "...".  Строка имеет  тип "массив символов" и класс памяти
static (см. #4 ниже), она инициализируется заданными символами. Все
строки, даже  если они  записаны  одинаково,  различны.  Компилятор
располагает в  конце каждой  строки нулевой (пустой) байт \0 с тем,
чтобы сканируюшая  строку программа  могла найти ее конец. В строке
перед символом двойной кавычки " обяэательно должен стоять \; кроме

                             - стр 256 -

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

     2.6 Харктеристики аппаратного обеспечения

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

_____________________________________________________________
|           DEC VAX-11 Motorola 68000 IBM 370     AT&T 3B   |
|            ASCII        ASCII       EBCDIC       ASCII    |
|___________________________________________________________|
| char     |    8 бит  |   8 бит   |  8 бит    |   8 бит    |
| int      |   32 бит  |  16 бит   | 32 бит    |  16 бит    |
| short    |   16 бит  |  16 бит   | 16 бит    |  16 бит    |
| long     |   32 бит  |  32 бит   | 32 бит    |  32 бит    |
| float    |   32 бит  |  32 бит   | 32 бит    |  32 бит    |
| double   |   64 бит  |  64 бит   | 64 бит    |  64 бит    |
| указатель|   32 бит  |  32 бит   | 24 бит    |  32 бит    |
| диапазон |           |           |           |            |
|    float | +_10E+_38 | +_10E+_38 | +_10E+_76 | +_10E+_38  |
| диапазон |           |           |           |            |
|   double | +_10E+_38 | +_10E+_38 | +_10E+_76 | +_10E+_308 |
| тип char |  знаковый | без знака | без знака | без знака  |
| тип поля |  знаковый | без знака | без знака | без знака  |
| порядок  |  справа   | слева     |  слева    | слева      |
|  полей   |   налево  |  направо  |   направо |  направо   |
|__________|___________|___________|___________|____________|

                    3. ЗАПИСЬ СИНТАКСИСА

  По используемым  в  данном  руководстве  синтаксическим  правилам
записи синтаксические  категории выделяются  курсивом а литеральные
слова  и   символы  шрифтом   постоянной  ширины*.   Альтернативные
категории   записываются    на   разных   строках.   Необязательный
терминальный  или   нетерминальный     символ  обозначается  нижним
индексом                       "opt",            так            что

  { выражение opt }

указывает  на   необязательность  выражения   в  фигурных  скобках.
Синтаксис кратко изложен в #14.

____________________
  * !!!  выделить "постоянной  ширины" шрифтом,  которым печатаются
программы и английские слова!!!

                             - стр 257 -

                       4. ИМЕНА И ТИПЫ

  Имя обозначает(денотирует)  объект, функцию,  тип,  значение  или
метку.  Имя   вводится  в   программе  описанием  (#8).  Имя  может
использоваться только  внутри области  текста программы, называемой
его  областью   видимости.  Имя   имеет   тип,   определяющий   его
использование. Объект  - это  область памяти.  Объект  имеет  класс
памяти, определяющий его время жизни. Смысл значения, обнаруженного
в объекте,  определяется типом имени, использованного для доступа к
нему.

     4.1 Область видимости

  Есть четыре вида областей видимости: локальная, файл, программа и
класс.
  Локальная: Имя, описанное в блоке (#9.2), локально в этом блоке и
     может использоваться  только в  нем после  места описания  и в
     охватываемых  блоках.  Исключение  составляют  метки  (#9.12),
Предыдущая страница Следующая страница
1 ... 32 33 34 35 36 37 38  39 40 41 42 43 44 45 ... 50
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (4)

Реклама