- •1. Основные этапы развития программирования как науки. Стихийное программирование.
- •2 Этап.
- •3 Этап.
- •4 Этап.
- •2. Структурный подход к программированию.
- •3. Объектный подход к программированию.
- •4. Процедуры с параметрами. Описание, пример.
- •5. Функции с параметрами. Описание, пример.
- •6. Область действия идентификаторов при использ. Проц. И функц.
- •7. Способы передачи параметров. Формальные и фактич. Параметры.
- •Параметры-значения
- •Параметры-константы
- •8. Параметры – значения. Механизм работы.
- •9. Параметры – переменные. Механизм работы.
- •10. Параметры – константы. Механизм работы.
- •11. Рекурсия. Понятия, пример.
- •12. Строки в delphi. Способы реализации строк. Основные процедуры. И функции.
- •13. Записи в delphi. Пример программы.
- •15. Модули в delphi. Понятие, описание, использование.
- •16. Программирование с использованием динамической памяти. Структура оперативной памяти. Понятие указателя.
- •17. Указатели. Описание в программе. Допустимые операции.
- •Операции над указателями
- •Нулевой указатель
- •18. Статические и динамические переменные. Динамические структуры данных.
- •19. Линейные списки. Основные операции над линейными списками.
- •20. Формы хранения информации. Их сравнение.
- •21. Стэк. Понятие, описание в программе, основные операции.
- •22. Очередь. Понятие, описание в программе, основные операции.
- •23. Списки. Понятие, описание в программе, основные операции.
- •25. Постфиксная, префиксная, инфиксная записи выражения.
- •26. Деревья. Понятия бинарного дерева. Способы представления д.
- •27. Бинарное дерево. Способы прохождения дерева.
- •28. Бинарное дерево поиска. Построение, использование.
- •Использование бинарных деревьев поиска Создание примеров деревьев поиска.
- •Симметричный метод прохождения.
- •Дублированные узлы
- •30. Графические средства delphi.
- •31.Понятие объекта. Основные свойства ооп.
- •32. Поля, методы и свойства объекта.
- •33. Использование конструктора и деструктора.
- •35. Основные операторы языка с.
- •36. Операторы инкремента и декремента. Операторы присваивания.
- •37. Функции scanf() и printf().
- •38. Способы задания развветвляющегося алгоритма в с. Пример.
- •39. Циклические алгоритмы. Виды циклов в с. Пример.
- •40. Табулирование функции одной переменной на заданном отрезке. Блок-схема. Программа.
- •41. Алгоритм вывода простых чисел меньше 100 в с.
- •42. Алгоритм разложения числа на простые множители в с.
- •43. Организация средства человеко-машинного интерфейса. Пользовательский интерфейс. Согласованность пи.
- •44. Стиль программирования. Критерии качества программы.
- •45. Тестирование программных продуктов.
33. Использование конструктора и деструктора.
В объектно-ориентированном программировании конструктор класса — специальный блок инструкций, вызываемый при создании объекта.
Конструктор схож с методом, но отличается от метода тем, что не имеет явным образом определённого типа возвращаемых данных, не наследуется, и обычно имеет различные правила для рассматриваемых модификаторов. Конструкторы часто выделяются наличием одинакового имени с именем класса, в котором объявляется. Их задача — инициализировать члены объекта и определить инвариант класса, сообщив в случае некорректности инварианта. Корректно написанный конструктор оставит объект в «правильном» состоянии. Неизменяемые объекты тоже должны быть проинициализированы конструктором.
Назначение конструктора. Одна из ключевых особенностей ООП — инкапсуляция: внутренние поля объекта напрямую недоступны, и пользователь может работать с объектом только как с единым целым, через открытые (public) методы. Каждый метод, в идеале, должен быть устроен так, чтобы объект, находящийся в «допустимом» состоянии (то есть когда выполняется инвариант класса), после вызова метода также оказался в допустимом состоянии. И первая задача конструктора — перевести поля объекта в такое состояние.
Вторая задача — упростить пользование объектом. Объект — не «вещь в себе», ему часто приходится требовать какую-то информацию от других объектов: например, объект File, создаваясь, должен получить имя файла. Это можно сделать и через метод:
File file;
file.open("in.txt", File::omRead);
Но удобнее открытие файла сделать в конструкторе:
File file("in.txt", File::omRead);
Пример:
TClassWithConstructor = class
public
constructor Create;
end;
Дестру́ктор — специальный метод класса, служащий для деинициализации объекта (например освобождения памяти). Для объявления деструктора в Delphi используется ключевое слово destructor. Имя деструктора может быть любым, но рекомендуется всегда называть деструктор Destroy.
TClassWithDestructor = class
destructor Destroy; override;
end;
В Delphi все классы являются потомками, по крайней мере, класса TObject, поэтому, для корректного освобождения памяти, необходимо перекрывать деструктор, используя директиву override.
В Delphi прямой вызов деструктора используется редко. Вместо него используют метод Free.
MyObject.Free;
Метод Free вначале проверяет существует ли уничтожаемый объект, а затем вызывает деструктор. Этот прием позволяет избегать ошибок, возникающих при обращении к несуществующему объекту.
35. Основные операторы языка с.
Бинарными (т. е. с двумя операндами) арифметическими операторами являются +, -, *, /, а также оператор деления по модулю %. Деление целых сопровождается отбрасыванием дробной части, какой бы она ни была. Выражение x % y дает остаток от деления x на y и, следовательно, нуль, если x делится на y нацело.
Например, год является високосным, если он делится на 4, но не делится на 100. Кроме
того, год является високосным, если он делится на 400. Следовательно,
if ((year % 4 == 0 && year % 100 !=0 || year % 400 == 0)
printf("%d високосный год\n", year);
else
printf("%d невисокосный год\n", year);
Операторами отношения являются
>>
=
<<
=
Все они имеют одинаковый приоритет. Сразу за ними идет приоритет операторов сравнения на равенство:
==
!=
Операторы отношения имеют более низкий приоритет, чем арифметические, поэтому выражение вроде i < lim-1 будет выполняться так же, как i < (lim-1), т.е. как мы и ожидаем. Более интересны логические операторы && и ||. Выражения, между которыми стоят операторы && или ||, вычисляются слева направо. Вычисление прекращается, как только становится известна истинность или ложность результата.
Приоритет оператора && выше, чем таковой оператора ||, однако их приоритеты ниже,
чем приоритет операторов отношения и равенства. Из сказанного следует, что выражение
вида
i < lim-1 && (с = getchar()) != '\n' && с != EOF
не нуждается в дополнительных скобках. Но, так как приоритет != выше, чем приоритет
присваивания, в
(с = getchar()) != '\n'
скобки необходимы, чтобы сначала выполнить присваивание, а затем сравнение с '\n'. По определению численным результатом вычисления выражения отношения или логического выражения является 1, если оно истинно, и 0, если оно ложно. Унарный оператор ! преобразует ненулевой операнд в 0, а нуль в 1. Обычно оператор ! используют в конструкциях вида
if (!valid)
что эквивалентно
if (valid == 0)
Унарные операторы:
С++/ C--/ ++C/ --C
С=A++/A--
C=++A/--A
C+=A / C -=A / C*=A / C%=A