Язык Си - руководство для начинающих - M. УЭИТ
Шрифт:
Интервал:
Закладка:
Первая и наиболее авторитетная книга по языку Си. (Заметим. что один из авторов этой книги Деннис Ритчи - создатель языка Си.) Практически она является официальным описанием языка и включает много интересных примеров. Однако авторы предполагают, что читатель знаком с системным программированием.
Feuer Alan R., The С Puzzle Hook, Prentice-Hall, 1982. (Имеется перевод: Фьюэр А. Задачи по языку Си.- M.: Финансы и статистика, 1985.)
Книга содержит большое количество программ, результат работы которых вы можете предсказать. Она дает хорошую возможность проверить и расширить ваши знания о языке Си. Книга включает ответы и пояснения.
Ritchie D. M., Johnson S. С., Lesk M. E., and Kernighan В. W., The СProgramming Language, The Bell System Technical Journal, Vol. 57, No. 6, July-August 1978.
В статье обсуждается история создания языка Си и дается обзор особенностей программирования с использованием этого языка.
BYTE, Vol. 8, No. 8, August 1983.
Этот выпуск журнала "Байт" посвящен языку Си. Он содержит статьи, где обсуждаются история его создания, концепции и применения. Проверяются и оцениваются двенадцать компиляторов языка Си для микропроцессоров. Включена также обширная современная библиография книг и статей по языку Си. Каждая книга и статья включает краткое содержание.
Программирование
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. Логические операции
Обычно логические операции "считают" условные выражения операндами. Операция ! имеет один операнд, расположенный справа. Остальные операции имеют два операнда: один слева и один справа.
&& Логическое И: результат операции имеет значение "истина", если оба операнда истинны, и "ложь" в противном случае. || Логическое ИЛИ: результат операции имеет значение "истина", если один или оба операнда истинны, и "ложь" в противном случае. ! Логическое НЕ: результат имеет значение "истина", если операнд имеет значение "ложь", и наоборот.V. Операции над указателями
& Операция получения адреса: выдаст адрес переменной, имя которой стоит за обозначением операции: &nurse является адресом переменной nurse * Косвенная адресация: выдает значение, записанное по адресу, на который ссылается указатель:nurse = 22;
ptr = &nurse; /* указатель на nurse */
val = *ptr
В результате работы этих операторов переменной val присваивается значение 22.
VI. Операции над структурами и объединениями
. Операция принадлежности (точка) используется совместно с именем структуры (или объединения) для задания элемента этой структуры (иди объединения). Если name является именем структуры, а member - элементом, указанным в структурном шаблоне, то name.member определяет этот элемент структуры. Операцию принадлежности можно аналогичным образом применять и к объединениям.Пример: