- •Предельные значения для целостных типов — файл limits.H
- •Константы для вещественных типов — файл float.H
- •Математические функции — файл math.H
- •Функции ввода-вывода для стандартных файлов — файл stdio.H
- •Функции для работы со строками — файлы string.H, stdlib.H
- •Функции для работы со строками — файлы string.H, stdlib.H
- •Функции для работы с терминалом в текстовом режиме — файл conio.H
- •Специальные функции
- •Функции для управления графической системой
- •Функции для получения изображения на экране
- •Правила программирования
Правила программирования
Директивы препроцессора записываются в отдельной строке. Перед знаком # могут находиться только пробельные символы.
Имена переменных дает программист исходя из их назначения. Имя может состоять только из латинских букв, цифр и знака подчеркивания и должно начинаться не с цифры. От того насколько удачно подобраны имена в программе, зависит её читаемость – одна из важнейших характеристик программы.
В общем случае тип переменной выбирается исходя из возможного диапазона значений и требуемой точности представления данных. Например нет необходимости заводить переменную вещественного типа для хранения величины, которая может принимать только целочисленные значения – хотя бы потому, что целочисленные операции выполняются гораздо быстрее.
Не забывайте в дружелюбной манере, но без излишнего многословия, пригласить пользователя ввести исходные данные и указать порядок их ввода. В некоторых случаях может понадобиться указать тип величин.
Начинающие часто тратят время на поиск ошибки в алгоритме, не удостоверившись, что работают с правильными данными. Рекомендуется для контроля выводить исходные данные сразу же после ввода, чтобы исключить ошибки.
Перед запуском программы необходимо иметь тестовые примеры, содержащие исходные данные и ожидаемые результаты. Количество этих примеров зависит от алгоритма.
Данные при вводе разделяются пробелами, символами перевода строки или табуляции, но не запятыми!
В современной иерархии критериев качества программы на первом месте стоит её надежность, простота поддержки и модификации, а эффективность и компактность выходят на второй план. Поэтому, в общем случае, если нет специальных требований к быстродействию, наиболее наглядный вариант предпочтительней.
Для улучшения читаемости программы можно ставить скобки в тех местах, где они не обязательны, - например для визуальной группировки условий.
Если по какой-либо ветке условия необходимо выполнить более одного действия, их следует объединить в блок с помощью фигурных скобок.
Хотя наличие слова default в конструкции switch и не обязательно, рекомендуется всегда обрабатывать случай, когда значение выражения не совпадает ни с одной из констант. Это облегчает поиск ошибок при отладке программы.
Оператор switch предпочтительнее оператора if в тех случаях, если в программе требуется разветвить вычисления на количество направлений, больших двух, и выражение, по значению которого производится переход на ту или иную ветвь, является целочисленным. Часто это справедливо и для двух ветвей, поскольку улучшает наглядность программы.
В общем случае надо стремиться к минимизации области видимости переменных.
Обнуление памяти при её выделении не происходит.
Записывайте операторы инициализации накапливаемых в цикле величин непосредственно перед циклом, в котором они вычисляются.
Текстовые файлы очень удобно использовать для отладки программ, требующих ввода хотя бы нескольких величин, - ведь, как правило, программу не удается написать сразу без ошибок, а многократный ввод одних и тех же значений замедляет процесс отладки и может сильно испортить настроение. Кроме того, при подготовке данных в файле до выполнения программы можно спокойно продумать тестовые примеры для исчерпывающей проверки правильности программы.
Выход за границы строки и отсутствие нуль-символа являются распространенными причинами ошибок при в программах обработки строк.
При вводе текста программы не ленитесь сразу же форматировать его и снабжать комментариями.
При заполнении массива из файла обязательно контролируйте выход за границы массива и при необходимости выдавайте предупреждающее сообщение.
Все, что передается в функцию и обратно должно отображаться в её заголовке. Это требование не синтаксиса, а хорошего стиля.
В определении, в объявлении и при вызове одной и той же функции типы и порядок следования параметров должны совпадать. Для имен параметров никакого соответствия не требуется.
Разработка любой функции ведется в том же порядке, что и для всей программы в целом. Сначала определяется интерфейс функции, то есть какие значения подаются ей на вход и что должно получиться в результате. Затем придумываются структуры данных, в которых будут храниться эти и промежуточные значения, затем составляется алгоритм, программа и тестовые примеры.
Входные данные функции надо передавать по значению или по константной ссылке, результат её работы – через возвращаемое значение, а при необходимости передачи более одной величины – через параметры по ссылке или указателю.
При написании функции нужно предусмотреть все возможные ошибки и обеспечить пользователя функции средствами их диагностики. Печать диагностических сообщений внутри функции нежелательна.
Функция может иметь несколько параметров со значениями по умолчанию. Они должны находиться в конце списка параметров.
