Математика | ||||
Джонс Р., Стюарт Я. Программируем на Си/ Пер. с англ, и предисл. М.Л. Сальникова, Ю.В. Сальниковой. - М.: Компьютер, ЮНИТИ, 1994. - 236 с.: ил. ISBN 5-88201-015-2 Книга представляет собой учебное пособие по одному из самых популярных языков программирования высокого уровня. В живой, увлекательной форме авторы знакомят с выразительными средствами языка и спецификой программирования на Си. Изложение сопровождается большим числом примеров. Книга послужит полезным пособием для самостоятельно изучающих Си, но и владеющим языком она также будет интересна. | ||||
Для всех работающих с IBM PC. Предисловие к русскому изданию Перед вами, уважаемый читатель, еще одна книга по языку программирования Си, которая, на наш взгляд, представляет собой прекрасное пособие для начинающих. Мы не будем здесь говорить о Си, одном из самых популярных на сегодняшний день языков программирования высокого уровня (уверены, вы достаточно о нем наслышаны). Скажем о самой книге, которую вы держите в руках. В живой, увлекательной, методически безупречной форме авторы знакомят читателя с выразительными средствами языка и спецификой программирования на Си, т.е. с тем, что в оригинале названо ими "философией Си". Изложение сопровождается большим количеством задач с ответами и контрольными упражнениями, позволяющими читателю самостоятельно проверить усвоение материала. Как и во всех по настоящему хороших книгах по программированию, материал умело дозируется и носит ярко выраженную практическую направленность. Начиная с не очень строгого описания языка, авторы постепенно, на большом числе примеров, углубляют изложение и в конечном итоге вводят читателя в "мир Си", рассказав о нем достаточно полно и строго. Примеры подобраны таким образом, чтобы читатель мог ясно представить области применения языка Си. В приложении 2 приводится краткий справочник по языку. Книгу можно рассматривать как пособие для желающих самостоятельно изучить Си. Однако и владеющие языком, без сомнения, прочтут ее с удовольствием, поскольку в ней нешаблонно описана философия Си и можно отыскать много интересного, включая новую грань в методике преподавания Си. Наконец, книга снабжена прекрасными, известными всему миру иллюстрациями сэра Джона Тенниела (John Tenniel) к произведениям Льюиса Кэрролла. Вы могли познакомиться ? ними ранее отнюдь не по научно-техническим изданиям. К сожалению, сегодня наше книгопечатание переживает не самые лучшие дни, и в момент написания этих строк мы не можем с уверенностью сказать, в каком виде будет держать в руках эту книгу читатель. Предисловие Язык Си занимает среди языков программирования необычное место. Его можно поставить между языками программирования высокого уровня и языком Ассемблера, поскольку он соединяет в себе наиболее сильные свойства тех и других. Данная книга представляет собой введение в язык Си и в связанный с ним специфический образ мышления. Читатель, приступающий к изучению Си, вероятно уже знаком с каким-либо языком программирования, например, Бейсиком или Паскалем, и было бы разумно воспользоваться этим опытом. Поэтому мы полагаем, что вы имеете представление о компьютерной арифметике и знакомы с основными понятиями, общими для всех языков программирования высокого уровня (циклами, условными переходами и т.п.). К сказанному хотелось бы еще кое-что добавить. Невозможно научиться разговорному французскому языку, продолжая думать на английском и выполняя перевод механически. Точно также невозможно научиться "разговорному" Си, продолжая "думать" на Бейсике. Однако на ранней стадии изучения французского языка можно опереться на знание английского и не потерять уверенность, столкнувшись с mot juste,* которому нет эквивалента в английском. Таков же наш подход к изучению Си. Поэтому в самом начале мы не говорим о некоторых возможностях Си, позволяющих создать очень элегантный и эффективный программный код, так как у новичка их применение может вызвать затруднения. Позднее, когда у вас появится легкость владения языком, вы сами воспользуетесь этими возможностями. Книгу условно можно разделить на две части. Главы с 1 по 13 содержат описание базовых возможностей языка. Они снабжены примерами, небольшими задачами с ответами и там, где это необходимо, контрольными заданиями для про- верки знаний читателя. В главах 14-17, на базе материала предыдущих глав, разбираются более сложные примеры программ. В конце концов, программы разрабатываются для того, чтобы с ними можно было действительно работать, а Си — это язык системного программирования (именно на нем написана широко известная операционная система UNIX), идеально подходящий для написания служебных программ. Исходя из этого, при подборе примеров и упражнений мы отдавали предпочтение задачам, требующим создания служебных программ общего назначения, таких как программы рациональной арифметики, поддержки графики и генераторы случайных чисел. Подобные задачи привлекают нас и еще по одному соображению — они очень подходят для демонстрации различных возможностей языка. Числовые задачи помогают пояснять арифметические операции над битами, а генераторы случайных чисел — логические операции. Работа с графикой позволяет проиллюстрировать достаточно сложные математические идеи и возможности динамического развития уже раз-ррботанных систем. При работе с графикой мы постарались обойтись операциями только с целыми числами. В конце книги приводятся два приложения. Первое содер-экит описание ранее не обсуждавшихся возможностей языка, а второе представляет собой краткое справочное пособие по Си. Книга, конечно, задумана как учебник, а не справочное пособие, но мы сочли не лишним снабдить ее и компактным описанием языка, которым можно воспользоваться как справочником. • Используемая нами методика подачи материала приводит к тому, что в первой части книги программы несколько громоздки. Это объясняется тем, что мы пользуемся только некоторыми возможностями Си, известными читателю из других языков программирования. Но к концу чтения книги читатель вполне будет способен воспользоваться всей мощью языка Си. Фолкстон, Кент Робин Джонс Ковентри, Варвикшир Ян Стюарт Содержание Предисловие к русскому изданию Предисловие о 1 Компиляторы и интерпретаторы 10 Редакторы 12 Работа с компилятором 12 2 Структура программы на Си Простые и составные предложения 18 Функции, не возвращающие значения 20 Возврат значений 20 Функция main 21 Типы переменных 22 Область действия переменных 23 Глобальные переменные 24 Упущенные детали 25 Функция print! 25 Комментарии 26 Упражнения 27 3 Циклы и управляющие конструкции 28 Конструкция И 29 Условные выражения 30 Логические связки 31 Циклы 31 Автоматическое наращивание значений 33 Функция sqr 34 ОТВЕТЫ 40 Упражнения 41 4 Арифметические и логические операции 43 Четные и нечетные числа 44 Логические операторы 45 Код ASCII 45 Оператор AND (И) 46 Оператор OR (ИЛИ) 48 Оператор XOR (исключающее ИЛИ) 49 Оператор NOT (HE) 50 Сдвиги 51 Ответы • 52 5 Строки, массивы и указатели Строки и указатели 55 Массивы 56 Объявление массивов 57 Функции работы со строками 58 Выделение подстроки слева 59 Выделение подстроки справа 60 Дополнительные сведения об указателях 61 Модификация функции left 62 Модификация функции right 62 Копирование и объединение строк 63 Ответы М1 Упражнения 66 6 Данные типа float и некоторые другие типы данных 67 Данные типа float 68 Разновидности данных типа int 68 Знак числа и сдвиги 69 Регистровые переменные 69 Структуры 70 Пользовательские типы данных 71 Константы и инициализация переменных 72 Символьные константы 72 Управляющие символы 73 Поименованные константы 74 Изменение значений констант 75 Предложение ^include 76 Восьмеричные и шестнадцатиричные константы 77 Инициализация переменных 78 Инициализация указателей 79 Объявление типа функции 80 Ответы 81 7 Ввод 82 Простой ввод 83 Ввод с буферизацией 83 Старшинство операций оператора 85 Преобразование строк в числа 86 Слабое оправдание 90 Функция scanf 90 Ответы 91 Упражнения 91 J ВЫВОД 92 Еще о функции printf 93 Выравнивание 93 Форматный вывод в оперативную память 94 Простейший вывод 95 9 Кое-что об управляющих конструкциях 96 Условный оператор 97 Прерывание циклов 98 Обход части цикла 98 Переключатели 99 О предложении goto 101 Ответы 102 10 Рекурсия 103 Факториалы 104 Работа со строками 106 Перестановка слов в предложении 108 Ввод и вывод строк 109 Перестановка текста 111 Ответы 112 Упражнение 113 Послесловие ИЗ 11 Структуры 114 Действия со структурами 115 Программа-склад 117 Удаление 118 Добавить 120 Рекурсивные структуры 121 Ответы 122 Упражнения 124 12 Работа с файлами 125 Переназначение ввода/вывода 126 Сообщения об ошибке 127 Буферизация ввода/вывода 127 Создание файла 129 Еще о работе с файлами 130 Ошибки доступа к файлу 131 Файлы прямого доступа 132 Таблица квадратов 134 Обратная задача 135 Ответы 137 Упражнения 139 13 Отладка Наиболее распространенные ошибки 142 Ошибки во время выполнения программы 144 Тестирование функций 145 Отладочные предложения 146 Удостоверьтесь! 149 Остались ли ошибки? 150 Ответы 153 Упражнения 154 14 Рациональная арифметика 155 Анализ проблемы 156 Переполнение 158 Практическая реализация 159 Функции 160 В два раза больше или ничего 161 Немного о мобильности 165 Обманы, ужасные обманы и компьютерные программы 166 Вычитание 166 Умножение 167 Деление 167 Подпрограммы преобразования типов 168 А теперь плохие новости... 169 Ответы 170 Упражнения 171 Послесловие 171 15 Создание "черепашьей" графики... 173 Управление черепашкой 174 Но сначала одно отступление... 175 Начнем "от печки" 176 Команды черепашки 179 Подключение черепашки 182 Аппроксимация функций 183 Тригонометрические функции на Си 186 Упражнения 187 16 ....и ее применение 188 Прямоугольники 1 g9 Вращение прямоугольников 191 Многоугольники 192 Окружность 195 Звездочки 195 Спирали 195 Снежинка Коха 196 Некоторые размышления... 199 Ответы 200 Упражнения 201 17 Случайные числа 202 Несколько основных идей 203 Проверка "случайности" 205 Численная связь 206 Случайные числа и регистровые операции 208 Практическая программа 210 Ответы 213 Упражнения 215 Некоторые дополнения 216 Краткий справочник 224 Цена: 100руб. |
||||