- •Вопрос 1. Диалоговые программы. Понятие дружественности.
- •Вопрос 2. Условный оператор и условная операция
- •If (выражение) оператор_1 [else оператор_2]
- •Вопрос 3. Операции отрицания и побитового дополнения.
- •Вопрос 4. Логические операции.
- •Вопрос 5. Побитовые операции
- •Вопрос 6. Изменение типа выражения
- •Вопрос 8. Операция «адрес» и косвенной адресации (разадресации)
- •Вопрос 9. Структура объявления типов. Классы памяти
- •● Static — статическая
- •● Extern — внешняя (глобальная)
- •Extern int total; // ссылка на переменную total, определённую в другом файле ● register — регистровая (локальная)
- •Вопрос 10. Классификация типов данных с размерами в памяти (в байтах).
- •Вопрос 11. Подпрограммы в языке Си. Определение функции. Возврат значений.
- •Int maximum (int X; int y; int z) – формальные параметры
- •Вопрос 12. Передача в подпрограмму массивов
- •Вопрос 13. Объявление, вызов функции и возврат значений
- •Вопрос 14. Работа с файлами
- •Где *fname – имя файла, *mode – режим
- •Вопрос 15. Вызов функций с переменным числом аргументов
- •Вопрос 16. Возврат из функции нескольких значений.
- •Вопрос 17. Структура программы и время жизни переменных, объявленных на внутреннем уровне.
- •Вопрос 18. Общая структура программы, состоящей из нескольких файлов. Локальные и глобальные переменные. Переменные, видимые в нескольких файлах.
- •Вопрос 19. Время жизни и области видимости функций и переменных, объявленных на внешнем уровне.
- •Вопрос 20. Типы, определяемые пользователем. Структуры
- •Вопрос 21. Объединения
- •Вопрос 22. Поля битов
- •Вопрос 23. Динамическая память. Резервирование, освобождение памяти в языке с
- •Оператор new
- •New type_name [(инициатор)]; или new (type_name [(инициатор)]);
- •Оператор delete
- •Вопрос 25. Связные динамические структуры. Списки. Двусвязные списки
- •Вопрос 26. Связные динамические структуры. Очередь. Односвязные списки
- •Вопрос 27. Связные динамические структуры. Кольцевые списки.
- •Вопрос 28. Связные динамические структуры. Стек.
- •Вопрос 29. Нелинейные динамические структуры. Деревья
- •Основные характеристики дерева:
- •Вопрос 30. Перегрузка функций
- •Вопрос 31. Перегрузка операторов
- •{ Операторы, определяющие действия }
- •Вопрос 32. Основные принципы объектно-ориентированного программирования.
- •Вопрос 33. Понятие класса. Инкапсуляция
- •Вопрос 34. Конструкторы и деструкторы
- •Вопрос 35. Наследование
- •Режимы доступа
- •Вопрос 36. Полиморфизм
- •Вопрос 37. Структуризация. Восходящее программирование
- •Вопрос 38. Нисходящий метод проектирования программ
- •Вопрос 39. Методы тестирования программных средств, состоящих из одного модуля
- •Вопрос 40. Спецификация программного средства
- •Вопрос 41. Межмодульное тестирование
- •Вопрос 42. Основы доказательства правильности программ
- •Вопрос 43. Жизненный цикл программы
- •Вопрос 44. Причины отказов по и повышение отказоустойчивости
- •Вопрос 45. Направления в программировании. Классификация языков программирования. Направления в программировании:
- •Вопрос 46. Критерии качества программы
- •Вопрос 47. Директивы препроцессора. Директива define, макроподстановки
- •#Define имя значение
- •Удаление определения: #undef
- •Вопрос 48. Модульное программирование. Структура программы, состоящей из нескольких файлов.
- •Вопрос 49. Гост 19.701. Виды схем, символов. Обозначения для схем алгоритмов и схем работы системы.
Вопрос 37. Структуризация. Восходящее программирование
Структуризация - расчленение алгоритма на составные части.
Вопрос 38. Нисходящий метод проектирования программ
Метод нисходящего проектирования программ основан на идее уровней абстракции, которые становятся уровнями модулей в разрабатываемой программе. На этапе проектирования строится схема иерархии, которая изображает эти уровни и позволяется сконцентрироваться сначала на том, что надо сделать в программе, затем разрабатывать решение. При этом методе проектирования исходная задача, подлежащая решению, делится на ряд подзадач, которые подчиняются главной задаче. Это разбиение называют декомпозицией. Далее эти задачи делятся еще на более мелкие и т.д. до тех пор, пока не получатся задачи, для решения которых требуются небольшие модули 3-5 строк. Такой метод позволяет упростить решение сложных задач.
Вопрос 39. Методы тестирования программных средств, состоящих из одного модуля
Тестирование модулей (или блоков) представляет собой процесс тестирования отдельных подпрограмм или процедур программы. Здесь подразумевается, что, прежде чем начинать тестирование программы в целом, следует протестировать отдельные небольшие модули, образующие эту программу.
Цель тестирования модулей — сравнение функций, реализуемых модулем, со спецификациями его функций или интерфейса.
Метод «большого скачка»:
В соответствии с этим методом каждый модуль тестируется автономно. По окончании тестирования модулей они интегрируются в систему все сразу. Метод «большого скачка» по сравнению с другими подходами имеет много недостатков и мало достоинств. Заглушки и драйверы необходимы для каждого модуля. Модули не интегрируются до самого последнего момента, а это означает, что в течение долгого времени серьезные ошибки в сопряжениях могут остаться необнаруженными.
Вопрос 40. Спецификация программного средства
Спецификация требований программного обеспечения (англ. Software Requirements Specification, SRS) — законченное описание поведения программы, которую требуется разработать. Включает ряд пользовательских сценариев (англ. use cases), которые описывают все варианты взаимодействия между пользователями и программным обеспечением. Пользовательские сценарии являются средством представления функциональных требований. В дополнение к пользовательским сценариям, спецификация также содержит не функциональные требования, которые налагают ограничения на дизайн или реализацию (такие как требования производительности, стандарты качества, или проектные ограничения). В стандарте IEEE 830 содержится рекомендации к структуре и методам описания программных требований — «Recommended Practice for Software Requirements Specifications»
Вопрос 41. Межмодульное тестирование
На этапе модульного тестирования наиболее просто и эффективно находятся дефекты, связанные с кодированием алгоритмов, ошибки определения и использования, ошибки условий и некорректного изменения индексов. На модульном уровне осуществляется проверка функциональной законченности отдельно взятого модуля или класса, путём отделения его от остальных частей системы. На этапе модульного тестирования используются структурные и функциональные критерии. Структурные критерии позволяют сформировать тестовые наборы, определяющие ошибки некорректной реализации, в то время как функциональные критерии проверяют соответствие тестируемого элемента программной системы и его спецификации. Модульное тестирование - это тестирование отдельно взятых программных модулей и классов.
