|
Программирование >> Структурное программирование
обходимости обрабатывать исключительную ситуацию. Но бывают ситуации, в которых никакой обработки по метке default не требуется. 2.24. Хотя предложения case и default могут размещаться в структуре switch в произвольном порядке, стоит учесть практику качественного программирования - помещать default в конце. 2.25. Если в структуре switch предложение default помещено последним в списке, то оператор break в нем не требуется. Но некоторые программисты включают break и тут для четкости и для симметрии с другими случаями. 2.26. Не забывайте обеспечить обработку возможности появления во входном потоке символа перехода на новую строку и других символов-разделителей, если обрабатываете по одному символу за раз. 2.27. Некоторые программисты всегда включают фигурные скобки в структуру do/while, даже если в них нет необходимости. Это помогает устранить двусмысленность, проистекающую из совпадения предложений структуры while и структуры do/while, содержащей один оператор. 2.28. Некоторые программисты чувствуют, что break и continue нарушают структурное программирование. А поскольку результат работы этих операторов, как мы скоро увидим, может быть достигнут технологией структурного программирования, то эти программисты не применяют break и continue. 2.29. Если выражение проверки равенства содержит переменную и константу, например, х == 1, некоторые программисты предпочитают записывать подобные выражения, помещая константу слева, а имя переменной справа, чтобы предохранить себя от логической ошибки при случайной подмене операции == операцией =. Советы по повышению эффективности 2.1. Программисты могут программы писать несколько быстрее и компилятор может компилировать их немного быстрее, если использовать сокращенные операции присваивания (составные присваивания). Некоторые компиляторы генерируют код, который выполняется быстрее при использовании сокращенных операций присваивания. 2.2. Многие из советов по повышению эффективности, которые мы будем давать в этой книге, приводят к незначительному улучшению, так что читатель может иметь искушение пренебречь ими. Значительное повышение эффективности получается, если такие небольшие улучшения находятся внутри цикла и могут повторяться много раз. 2.3. Избегайте размещать выражения, значение которых не изменяется, внутри цикла. Но даже, если вы сделаете это, то многие современные сложные оптимизирующие компиляторы автоматически разместят подобные выражения вне цикла во время генерации машинного кода. 2.4. В ситуациях, где важна эффективность, где жесткие требования к памяти или критична скорость исполнения программы, может оказаться желательным использовать целые минимальных размеров. 2.5. При надлежащем использовании операторы break и continue выполняются быстрее, чем соответствующие приемы структурного программирования, которые мы скоро изучим. 2.6. В выражениях, использующих операцию &&, если отдельные условия независимы друг от друга, записывайте комбинированное условие так, чтобы самым левым было то простое условие, которое вероятнее всего окажется ложным. В выражениях, использующих операцию , записывайте комбинированное условие так, чтобы самым левым было то простое условие, которое вероятнее всего окажется истинным. Это может сократить время выполнения программы. Замечания по мобильности 2.1. Комбинация клавиш для ввода признака конца файла зависит от системы. 2.2. Проверка на символическую константу EOF, а не на -1 делает программу более мобильной. Стандарт ANSII устанавливает, что EOF имеет целое отрицательное значение (но не обязательно -1). Так что EOF может иметь различные значения в разных системах. 2.3. Поскольку размер типа int варьируется от системы к системе, используйте тип long, если вы предусматриваете обработку целых, значения которых могут лежать вне диапазона 32767, и вы, вероятнее всего, сможете выполнять свою программу на нескольких различных компьютерных системах. Замечания по технике программирования 2.1. Составной оператор может быть помещен в любом месте программы, в котором может размещаться единичный оператор. 2.2. Справедливо, что составной оператор может быть помещен в любом месте программы, в котором может размещаться единичный оператор, но также справедливо и то, что можно вообще обойтись без оператора, т.е. поместить пустой оператор. Для этого надо поместить символ точки с запятой (;) в том месте, где нормально должен находиться оператор. 2.3. Каждая детализация, так же как и сама вершина, является полным описанием алгоритма; меняется только уровень детализации. 2.4. Многие программы могут быть логически разделены на три этапа: этап задания начальных значений, в котором задаются начальные значения переменных программы; этап обработки данных, в котором вводятся данные и устанавливаются значения соответствующих переменных программы; заключительный этап, в котором вычисляются и печатаются окончательные результаты. 2.5. Программист завершает процесс нисходящей разработки с пошаговой детализацией, когда алгоритм на псевдокоде настолько детализирован, чтобы его псевдокод можно было бы преобразовать в программу на С-Ы-. Реализованная программа на С-Ы- окажется в этом случае простой и наглядной. 2.6. Опыт показывает, что наиболее трудной частью решения задач на компьютерах является разработка алгоритма решения. После того, как корректный алгоритм получен, процесс создания на его основе работающей программы на С-Ы- продвигается успешно. 2.7. Многие опытные программисты пишут программы, не используя такой инструмент разработки, как псевдокод. Эти программисты полагают, что их конечная цель - решение задачи на компьютере и что написание псевдокода только задержит достижение конечного результата. Это может быть иногда оправдано для простых и хорошо знакомых задач, но может приводить к серьезным ошибкам в больших и сложных проектах. 2.8. Имеется некоторое противоречие между стремлением к технике высококачественного программирования и стремлением к наилучшей эффективности программного обеспечения. Часто достижение одной из этих целей достигается за счет другой. Упражнения для самопроверки Упражнения с 2.1 по 2.10 соответствуют разделам 2.1-2.12. Упражнения с 2.11 по 2.13 соответствуют разделам 2.13-2.21. 2.1. Заполнить пробелы в следующих утверждениях: a) Все программы можно писать в терминах трех типов управляющих структур: , и . b) Структура выбора используется для выполнения одного действия, если условие истинно, и другого, если условие ложно. c) Повторение ряда операторов заданное число раз называется повторением. d) Когда заранее не известно, сколько раз должна быть повторена группа операторов, можно использовать для окончания повторения. 2.2. Напишите четыре различных оператора С-Ы-, которые прибавляли бы 1 к целой переменной х. 2.3. Напишите операторы С-Ы-, выполняющие следующие действия: a) Присваивание суммы х и у переменной z и увеличение значения X на 1 после этого вычисления. b) Проверку, больше ли значение переменной count числа 10. Если больше, то печать текста: count больше, чем 10 . c) Уменьшение переменной х на 1 и затем ее вычитание из переменной total. d) Вычисление остатка от деления q на divisor и присваивание результата переменной q. Запишите два различных варианта такого оператора.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |