Код. Данные и операторы. 24 апреля 2008 г. 4 курс Технологии программирования.

Презентация:



Advertisements
Похожие презентации
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Advertisements

1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Операторы языка. Арифметические операторы Арифметические операторы Арифметические операторы Арифметические операторы Операторы сравнения Операторы сравнения.
Тест классы По программированию Pascal.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Основы программирования Паскаль. Паскаль ( англ. Pascal) язык программирования общего назначения. Язык Паскаль был создан Никлаусом Виртом в
Лекция 6 1. Обработка массивов. Объявление одномерного массива Синтаксис: [ ] Пример: int a[10]; Определяет массив a размера 10, т. е. блок из 10 последо-
Тема: Управление потоком в PHP Изучить возможности языка PHP при решении задач, требующих использования условного оператора. Рассмотреть примеры управления.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках, комментарии для документирования. Комментарии,
Основы программирования В качестве базового языка взят обычный BASIC позволяющий в простой и наглядной форме выполнять основные конструкции программирования.
Информационные технологии Выбор вариантов 2 1.Выполнение последовательности операторов. 2.Выполнение определенной последовательности операторов.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Множества. Множество- ограниченный, неупорядоченный набор различных элементов одного типа. Примеры множеств: Множество арабских цифр. Множество знаков.
1 Программирование на языке Паскаль Тема 2. Ветвления.
PHP PHP (Hypertext Preprocessor) Язык программирования общего назначения, применяемый для разработки веб-приложений.
Транксрипт:

Код. Данные и операторы. 24 апреля 2008 г. 4 курс Технологии программирования

Числа 1.Избегаем магических чисел; Надежность и простота изменений Программа лучше читается for i = 0 to 99 do... for i = 0 to MAX_ENTRIES-1 do... 2.Из чисел в программе можно использовать только 0 и 1; 3.Всегда проверяем деление на 0; 4.Избегаем сравнения чисел разных типов. 2

Целые числа 1.Осторожнее с делением! Чему равно 7/10 ? А 10 * (7/10) ? 2.Проверяйте переполнение. 250 * 300 = или 9464? 3

Числа с плавающей точкой 1.Потери при сложении и вычитании: , ,01 = 0 ? 2.Неожиданные эффекты при сравнении на равенство: //Переменная nominal 64-битное вещественное число. double nominal = 1.0; double sum = 0.0; // sum вычисляется как 10*0,1. Она должна быть равна 1,0. for ( int i = 0; i < 10; i++ ) { sum += 0.1; } If ( nominal == sum ) // Значение в скобках истино или ложно? 4

Строки и символы 1.Избегаем магических строк!!! // Плохо! if ( input_char == OxlB )... // Лучше! If ( input_char == ESCAPE )... 2.Осторожно, unicode! 3.Планируйте локализацию как можно раньше! Отдельная программа для каждого языка, или переключение во время работы? 5

Логические переменные Используйте логические переменные для документрования программы. Добавьте переменную, название которой сделает смысл проверки очевидным. // Запутанная проверка if ( ( elementlndex < 0 ) || ( MAX_ELEMENTS < elementlndex ) || ( elementlndex == lastElementlndex ) ) // Более понятное условие violation = ( ( elementlndex < 0 ) || ( MAX_EI_EMENTS < elementlndex ) ); lastEntry = ( elementlndex == lastElementlndex ); if ( violation | | lastEntry ) 6

Перечислимые типы Обычно используются, когда вы знаете все возможные значения переменной и хотите выразить их словами. Используются для повышения читабельности кода. Сравним: int result = RetrievePayrollData( data, true, false, false, true ); // или так: int result = RetrievePayrollData( data, EmploymentStatus_CuгrentEmployee, PayrollType_Salaried, SavingsPlan_NoDeduction, MedicalCoverage_IncludeDependents ); 7

Именованные константы 1.Используйте именованные константы в объявлениях данных. 2.Избегайте «очевидных» констант: For i = 1 To 12 profit( i ) = revenue( i ) - expense( i ) Next Лучше так: For i = 1 To NUM_MONTHS_IN_YEAR profit( i ) = revenue( i ) - expense( i ) Next Ещё лучше: For month = 1 To NUM_MONTHS_IN_YEAR profit( month ) = revenue( month ) - expense( month ) Next 8

Массивы Главные проблемы с масссивами – выход за границы и путаница в индексах (в случае многомерных массивов). По возможности, используйте в программе контейнеры с последовательным или ассоциативным доступом. (стеки, очереди, множества, хэши) 9

Свои типы 1.Упрощают модификацию кода (изменение в единственном месте); 2.Использование имен из предметной области – указание на смысл переменной; 3.В некоторых языках (Pascal, Ada) можно добавить ограничение на значения; 4.Хм, а может быть сразу создать свой класс? 10

Структуры Структуры объединяют взаимосвязанные элементы данных. Это позволяет: Структурировать код; Упростить операции с блоками данных; Уменьшить список параметров в процедурах; Громоздкий вызов процедуры HardWayRoutine( name, address, phone, ssn, gender, salary ) Элегантный вызов процедуры EasyWayRoutine( employee ) 11

Указатели Указатель – это адрес в памяти и знание о том, как интерпретировать содержимое этой области. Ошибки с указателями трудно найти, поэтому: 1.Изолируйте операции с указателями в методах и классах; 2.Удаляйте указатели на том же уровне, где они созданы; 3.Проверяйте указатели перед использованием; 4.Не жалейте переменных для указателей; 5.Создайте свои безопасные методы инициализации и удаления указателей. 12

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

Последовательный код Когда важно обеспечить последовательное выполнение нескольких операторов – подчеркните это в названиях методов и общности данных. Если ничего не помогает – в конце концов, напишите комментарий! Группируйте взаимосвязанные операторы. Выносите слабосвязанные группы в отдельные методы. 14

Условные операторы 1.Сначала – нормальный вариант развития событий, потом (после else) – исключительные случаи. 2.Вообще, более вероятные случаи должны быть размещены выше в коде. 3.Проверьте – может быть вам все же нужен else? 4.Когда использовать if-then-else, а когда – case? 5.НЕ используйте для case искусственную переменную. 15

Циклы 1.Выберите правильный тип цикла. 2.Назовите переменную цикла осмысленно. 3.Пишите короткие циклы (не больше страницы). 4.Ограничьте вложенность тремя уровнями. 5.При всех ли обстоятельствах завершается цикл? 16

Табличные методы Табличный метод – альтернатива множественным if и case. Эта схема подразумевает использование таблицы подстановки. В таблице хранятся либо сами данные, либо ссылки на методы их обработки. Основной вопрос – выбор способа доступа. 17

Нестандартные структуры управления 1.Рекурсия: 1.Убедитесь, что рекурсия остановится; 2.Не используйте циклическую рекурсию; 3.Следите за стеком. 2.Goto or not goto? Вопрос религии. Лучше использовать try … finally 3.«Дострочные» и множественные возвраты из процедур: только при необходимости (чтобы избежать чрезмерной вложенности). 18

19 Спасибо за внимание Конец лекции.