Выбрать главу

Kernighan Brian W. and Plauger P. J., The Elements of Programming Style (Second Edition), McGraw-HiII, 1978.

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

Kernighan Brian V. and Plauger P. J., Software Tools, Addison-Wesley, 1976.

В книге описывается несколько полезных программ и программных систем, причем делается упор на эффективное проектирование структур программ. Представлены описания языка RATFOR (рационализированного Фортрана) и одной из версий Паскаля. Так как создание языка RATFOR - это попытка сделать сходной работу языков Фортран и Си, он лучше всего подходит пользователям языка как для знакомства с ним.

Операционная система UNIX

Waite Mitchell, Martin Don and Praia Stephen , UNIX Primer Plus, Howard W. Sams and Company, Inc., 1983.

Эта книга - легко читаемое введение в операционную систему UNIX. В неe включены некоторые мощные расширения этой системы, реализованные в Калифорнийском университете (Беркли).

ПРИЛОЖЕНИЕ Б. КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ

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

Ключевые слова выполнения программы

Циклы

for while do

Принятие решения и выбор

if else switch case default

Переходы

break continue goto

Типы данных

char int short long unsigned float double struct union typedef

Классы памяти

auto extern register static

Разное

return sizeof

Еще не реализованное

entry

Применяемые только в некоторых системах

asm endasm fortran enum

ПРИЛОЖЕНИЕ В. ОПЕРАЦИИ ЯЗЫКА СИ

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

I. Арифметические операции

+ Прибавляет величину, находящуюся справа, к величине, стоящей слева
- Вычитает величину, стоящую справа, из величины, указанной слева
- Будучи унарной операцией, изменяет знак величины, стоящей справа
* Умножает величину справа на величину, находящуюся слева
/ Делит величину, стоящую слева, на величину справа. Результат усекается, если оба операнда целые числа
% Дает остаток от деления величины слева на величину, стоящую справа (только для целых чисел)
++ Прибавляет 1 к значению переменной, стояшей слева (префикная форма), или к переменной, стояшей справа (постфиксная форма)
-- Аналогично ++, но вычитает 1
Операции (от высшего приоритета к низшему) Порядок выполнения
()   {}   ->   . Л-П
!   ~   ++   --   -   (тип)   *   &   sizeof (все унарные) П-Л
*   /   % Л-П
+   - Л-П
<<   >> Л-П
<   <=   >   >= Л-П
==   !== Л-П
& Л-П
/\ Л-П
| Л-П
&& Л-П
|| Л-П
?: Л-П
=   +=   -=   *=   /*   %= П-Л
, Л-П
Условные обозначения: Л-П - порядок выполнения слева направо, а П-Л - наоборот.

II. Операции присваивания

=     Присваивает значение, указанное справа, переменной, стоящей слева

Каждая из приводимых ниже операции изменяет переменную, стоящую слева, на величину, находящуюся справа. Мы используем следующие обозначения: П для правой части и Л для левой. + = прибавляет величину П к переменной Л

-= вычитает величину П из переменной Л
*= умножает переменную Л на величину П
/= делит переменную Л на величину П
%= выдает остаток от деления переменной Л на величину П

Пример:

rabbits *= 1.6; то же самое, что rabbits = rabbits * 1.6;  

III. Операции отношения

Каждая из этих операций сравнивает значение слева со значением справа. Оператор отношения, состоящий из операции и двух ее операндов, имеет значение 1, если выражение истинно, и значение 0, если выражение ложно.

< меньше
<= меньше или равно
== равно
>= больше или равно
> больше
!= не равно

IV. Логические операции

Обычно логические операции "считают" условные выражения операндами. Операция ! имеет один операнд, расположенный справа. Остальные операции имеют два операнда: один слева и один справа.

&& Логическое И: результат операции имеет значение "истина", если оба операнда истинны, и "ложь" в противном случае.
|| Логическое ИЛИ: результат операции имеет значение "истина", если один или оба операнда истинны, и "ложь" в противном случае.
! Логическое НЕ: результат имеет значение "истина", если операнд имеет значение "ложь", и наоборот.