
- •1. Кризис программирования
- •2. Понятие жизненного цикла по
- •3. Требования к технологии проектирования
- •4. Понятия профессионального программирования
- •5. Проект и команда
- •6. Задача профессионального программирования
- •7. Алгоритмы
- •8. Модели и моделирование
- •9. Структурный подход
- •9.1. Проблема сложности
- •9.2. Сущность структурного подхода
- •9.3. Метод функционального моделирования (sadt)
- •9.3.1. Состав функциональных моделей
- •9.3.2. Методика построения модели
- •9.4. Метод моделирования процессов - потоков данных (dfd)
- •9.4.1. Общая концепция
- •9.4.2. Состав диаграмм потоков данных
- •13. Венгерская нотация
- •14. Методология и парадигма программирования
- •15. Современные методологии программирования
- •16. Методология императивного программирования
- •17. Методология объектно-ориентированного программирования
- •18. Методология функционального программирования
- •19. Методология логического программирования
- •20. Методология программирования в ограничениях
- •21. Методология структурного императивного программирования
- •22. Методология параллельного императивного программирования
- •23. Методология нейросетевого программирования
- •23.1. Модель нейрона с линейной функцией активации
- •23.2. Модель нейрона с радиальной функцией активации
- •23.3. Разработка нейросетевой модели
- •24. Основные типы ошибок в программах
- •25. Отладка и тестирование
- •26. Режимы работы компилятора Delphi для поиска ошибок
- •27. Задание режимов работы отладчика с помощью переключающих директив
- •28. Пользователи и их поддержка
- •29. Поддержка программиста: общие требования
- •29.1. Пролог модуля
- •29.2. Проектная документация
- •29.3. Оформление текста программы
- •30. Поддержка конечного пользователя
- •31. Технология программирования графики
- •31.1. Графическая подсистема оболочек Win32/64
- •31.2. Графические средства Delphi
- •31.3. Проектирование интерфейса с пользователем: компоненты стандартных диалогов
- •32.Технология компонентного программирования
- •32.1. Технология com
- •32.1.1. Общая концепция
- •32.1.2. Интерфейс com
- •32.1.3. Сервер com
- •32.2. Технология ole
- •32.2.1 Суть и содержание ole
- •32.2.2.Терминология ole
- •32.2.3. Автоматизация ole
- •32.2.4. Структурированная память
- •32.3. Технология corba
- •32.4. Технология Java
- •32.5.Технология .Net
- •33. Технология описания аппаратуры
- •Input clock, reset, en;
- •If(!reset)
- •34. Технология коллективной разработки
- •34.1. Авторская разработка
- •34.2. Коллективная разработка
- •34.2.1. Технические командные роли
- •34.2.2. Психологические командные роли
- •34.2.3. Типы совместной деятельности
- •34.3. Общинная модель разработки
- •35. Технология оценки качества по
- •35.1. Подходы к оценке качества по
- •35.2. Характеристики качества по
- •35.3. Оценка качества процесса разработки
- •35.3.1. Модель зрелости процесса разработки по
- •35.3.2. Определение возможностей и улучшение процесса создания по
- •35.4. «Достаточно хорошее» по
- •33.5. Стандартизация информационных технологий
- •Международные организации, входящие в структуру оон.
- •Промышленные профессиональные или административные организации.
- •Промышленные консорциумы.
- •36. Инструментальные средства поддержки некоторых технологических подходов
- •36.1. Инструментальные системы
- •36.1.1. Инструментальные среды программирования
- •36.1.2. Средства автоматизации разработки программ (case-средства)
- •36.1.3. Интегрированные среды
- •36.1.4. Репозитории проекта
- •36.2. Поддержка коллективной разработки: системы управления версиями
- •37. Организация диалогов
- •38. Защита программного кода
13. Венгерская нотация
Венгерская нотация – это соглашение о наименовании переменных и функций.
Это соглашение широко используется при программировании в среде Windows, так как делает код программы более понятным. Свое название венгерская нотация получила в честь родины ее создателя – Чарльза Симонаи (Charles Simonyi).
Вопрос об удобном наименовании переменных и функций является более важным, чем это кажется изначально, т.к. выбор удобного именования позволяет значительно снизить трудозатраты по созданию программы за счет уменьшения обращений к справочной информации.
Венгерская нотация основывается на следующем принципе: имена переменных должны содержать префикс, описывающий тип данных переменной. В ряде случаев, префикс может служить указателем на способ использования переменной.
Пример использования соглашения о наименовании:
achFile:Array[0…127]of Char;
lpszName:PString;
Первая переменная achFile содержит префикс, который расшифровывается как массив символов (array of characters); префикс переменной lpszName указывает на то, что переменная является указателем типа long на строку формата ASCIIZ (long pointer to string zero).
Помимо предоставления возможности сделать код программы более понятным, венгерская нотация позволяет также избежать ряда ошибок.
Например, присвоение типа: lpszName:= achFile; является допустимым, а следующее присвоение недопустимо: lpszName:= cbCount; так как префикс переменной cbCount указывает на то, что переменная должна содержать байт.
Список префиксов, наиболее часто используемых при программировании в среде Windows приводится в таблице ниже.
Префикс |
Описание |
a |
Массив (array) |
ch |
Символ (char) |
by |
Байт (byte) |
n |
Целое (short/int) |
i |
Целое (int) |
x, y |
Целое для координат (short/int) |
cx, cy |
Короткое целое для координат (short, count) |
b |
Булевское (bool) |
w |
Слово (word) |
l |
Длинное целое (long) |
dw |
Двойное слово (dword) |
fn |
Функция (function) |
p |
Указатель (pointer) |
s |
Строка (string) |
sz |
Строка, оканчивающаяся байтом 0 (string) |
Такой же принцип наименования используется при присвоении имен различным константам, но при этом в качестве префикса указывается группа принадлежности константы.
Пример: wm_XXX означает, что константа принадлежит к группе оконных сообщений (window message), а префикс константы cs_XXX указывает на ее принадлежность к группе стилей класса окна (class style).
Понимание принципов Венгерской нотации позволяет легко разбираться в смысле параметров функций Windows API и в большом числе программ, распространяемых в исходном виде.