Справочная система C guide


         

Тонкая настройка и оптимизация MS-DOS

Для каждого пользователя персонального компьютера рано или поздно наступает такой момент, когда возможностей имеющейся в его распоряжении техники становится недостаточно. Накопитель на магнитном диске переполнен, для последней версии программы вёрстки VENTURA PUBLISHER не хватает основной оперативной памяти, а графический редактор DESIGNER или транслятор Microsoft Quick C на вашей машине работают слишком медленно. Да и дискет не хватает для архива, который что-то слишком увеличился в размерах за последнее время.

Тип процессора
Расширенная память
Дополнительная память
Версия операционной системы
Составление плана оптимизации
Компьютер IBMPC или IBM XT
Компьютер IBMAT с процессором 80286
Компьютеры с процессорами 80386 или 80486
Быстродействие дисковой памяти
Теория: Почему диск работает медленно?

Язык программирования Си

Данное руководство описывает язык программирования Си, определенный 31 октября 1989 г. в соответствии с проектом, утвержденным в ANSI в качестве Американского национального стандарта для информационных систем: Язык программирования Си, X3.159-1989 ("American National Standard for Information Systems - Programming Language C, X3.159-1989"). Это описание - лишь один из вариантов предлагаемого стандарта, а не сам стандарт, однако мы специально заботились о том, чтобы сделать его надежным руководством по языку.
Настоящий документ в основном следует общей схеме описания, принятой в стандарте (публикация которого в свою очередь основывалась на первом издании этой книги), однако в организационном плане есть различия. Если не считать отклонений в названиях нескольких продуктов и отсутствия формальных определений лексем и препроцессора, грамматика языка здесь и грамматика в стандарте эквивалентны.

С для профессиональных программистов
Одна из наиболее очевидных черт профессионально написанных программ - это использование исчезающих и иерархических меню. При правильном использовании, эти меню дают программам дружелюбие, которое пользователи от них и ожидают. Хотя по существу и простые, и исчезающие, и иерархические меню представляют некоторые трудности в программировании.

Работа видеоадаптеров.
Доступ к экрану через BIOS
Использование int86()
Сохранение части экрана.
Восстановление экрана
Создание исчезающих меню
Высвечивание меню.
Высвечивание рамки
Ввод выбора пользователя
Функция popup()

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

Порядок построения выражений
Порядок построения выражений - 2
Синтаксический анализатор выражений
Синтаксический анализатор выражений - 2
Синтаксический анализатор выражений - 3
Синтаксический анализатор выражений - 4
Как анализатор обрабатывает переменные
Интерпретатор языка Small Basic
Основной цикл работы анализатора
Команда присваивания значений

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

Алфавит
Буквы и цифры
Пробельные символы
Разделители
Специальные символы
Специальные символы - 2
Операции
Константы
Целые константы
Целые константы - 2

Рекурсивные вызовы
Любая функция в Си-программе может быть вызвана рекурсивно; в частности, она может вызвать сама себя. Компилятор не ограничивает число рекурсивных вызовов одной функции. При каждом вызове новые ячейки памяти выделяются для формальных параметров и локальных переменных класса памяти auto и register, так что их значения в предшествующих, незавершенных вызовах недоступны и не портятся.

Именованные константы и макроопределения
Директива #define
Директива #define - 2
Директива #define - 3
Склейка лексем и преобразование аргументов
Директива #undef
Включение файлов
Включение файлов - 2
Условная компиляция
Директивы #if, #elif, #else, #endif

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

Основные арифметические операции
Программы на языке С строятся из операторов, операторы - из выражений и выражения - из операндов и операций. С имеет необычно богатое множество операций; за подтверждением вы можете обратиться к сводной таблице операций в . Следствием разнообразия операций является то, что правила, определяющие порядок применения операций к операндам, играют основную роль в понимании выражений языка.

Основные арифметические операции.
Результаты
Операции 1.1
Операции 1.2
Операции 1.3
Операции 1.4
Операции присваивания.
Результаты
Операции 2.1
Операции 2.2

Символ, строка и целый тип
Язык С имеет относительно немного основных типов. В выражениях могут свободно перемешиваться операнды разных типов. Тип результата выражения будет определяться некоторыми простыми правилами преобразования основных типов (иерархией простых типов). Эта иерархия приведена на схеме

Символ, строка и целый тип
Результаты
Пояснения
Примечание редактора
Приведение целых чисел и с плавающей точкой
Результаты
Пояснения
Пояснения - 2
Еще о приведении типов
Результаты

Включение файлов
Макроопределение PRINT1 показывает некоторую особенность препроцессора, которая часто приводит к неприятностям. Если определяемое имя встречается внутри строки, т.е. между двумя двойными кавычками, то оно не заменяется. Однако, аргументы макроопределения будут заменяться всюду, где бы они не встретились, даже внутри строки. Обратите внимание, что макроопределение PR использует это свойство препроцессора.

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

Управление 1. Условный оператор
Результаты
Пояснения
Управление 2. Оператор while и for
Результаты:
Пояснения
Пояснения - 2
Примечание редактора
Управление 3. Вложенность операторов
Результаты

Стиль программирования
О стиле программирования писалось много; и о том, каких конструкций следует избегать, и о том, какие конструкции следует имитировать. Из кажущихся противоречивыми советов можно было бы вынести поверхностное заключение, что хороший стиль программирования в основном дело вкуса. Более же разумный вывод говорит о том, что хороший стиль в программировании, как и в любом деле, прежде всего дело здравого смысла.

Составьте правильно условие
Пояснения
Выберите подходящую конструкцию
Пояснения

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

Классы памяти 1. Блоки
Результаты:
Пояснения:
Классы памяти 2. Функции
Результаты:
Пояснения:
Классы памяти 3. Снова функции
Результаты:
Классы памяти 3.1
Классы памяти 4. Файлы

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

Простые ссылки и массивы.
Результаты
Ссылки и массивы 1.1.
Ссылки и массивы 1.2.
Ссылки и массивы 1.3.
Ссылки и массивы 1.4.
Ссылки и массивы 1.5.
Ссылки и массивы 1.6.
Ссылки и массивы 1.7.
Массивы ссылок

Простые записи, вложенные записи
Запись, т.е. тип данных struct, - основной строительный блок данных в языке С. Она представляет собой удобный способ объединения различных элементов, связанных между собой.

Записи 1. Простые записи, вложенные записи
Результаты
Пояснения
Примечание редактора
Записи 2. Массив записей
Результаты
Записи 2.1.
Записи 2.2.
Записи 2.3.
Записи 2.4.

Препроцессор
Хотя, строго говоря, препроцессор и не относится к языку С, мало найдется программ, которые можно было бы составить без его помощи. Две наиболее важные функции препроцессора - это макроподстановка и включение файлов.

Препроцессор 1. Препроцессор не знает С.
Результаты
Препроцессор 1.1
Препроцессор 1.2
Препроцессор 1.3
Препроцессор 2. Осторожность вознаграждается.
Результаты
Препроцессор 2.1
Препроцессор 2.2
Препроцессор 2.3

Таблица приоритетов
Таблица приоритетов показывает относительный приоритет операций. Приоритет определяет порядок, в котором операции сопоставляются с операндами. Операции получают свои операнды в порядке убывания приоритетов.

Сводная таблица операций.
Сводная таблица операций. - 2
Таблица кодов.
Схема иерархии типов.

Справочная система C guide
Описания используются для определения переменных и для объявления типов переменных и функций, определенных в другом месте. Описания также используются для определения новых типов данных на основе существующих типов. Описание не является оператором.

Основные типы
Указатели и массивы
Указатели и массивы - 2
Определение локальных переменных
Определение глобальных переменных
Инициализация переменных
Описание внешних объектов
Форматированный ввод
Спецификация преобразования
Пустые символы


Логика и жизнь - перейти
Логические игры - перейти
Моделирование финансов - перейти
Фондовый менеджмент - перейти
Финансовые модели - перейти
Основные понятия объектно-ориентированного подхода - перейти
Система управления - перейти
Цифровой анализ - перейти
Защита информации - перейти
Угрозы компьютерной безопасности - перейти
Программы-шпионы - перейти
Парольная защита операционных систем - перейти
Безопасность компьютерной сети - перейти
Основы криптографии - перейти
Криптографические ключи - перейти