- •Вопрос 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. Виды схем, символов. Обозначения для схем алгоритмов и схем работы системы.
Вопрос 45. Направления в программировании. Классификация языков программирования. Направления в программировании:
Системное программирование: Разработка операционных систем, драйверов, компиляторов, утилит.
Прикладное программирование: Разработка программ для решения конкретных пользовательских задач (бизнес-приложения, игры, редакторы).
Веб-программирование: Разработка веб-сайтов, веб-приложений, веб-сервисов.
Мобильная разработка: Разработка приложений для мобильных устройств.
Научные вычисления: Разработка программ для моделирования, анализа данных, научных исследований.
Искусственный интеллект (ИИ) и машинное обучение (МО): Разработка систем с элементами ИИ и алгоритмов МО.
Встраиваемые системы: Разработка программ для микроконтроллеров и встраиваемых устройств.
Классификация языков программирования:
По уровню абстракции:
Низкоуровневые: близки к машинному коду (например, ассемблер).
Высокоуровневые: близки к человеческому языку (например, Python, Java, C++).
По парадигме:
Императивные: описывают последовательность действий (например, C, Pascal).
Объектно-ориентированные (ООП): основаны на концепциях объектов и классов (например, C++, Java, Python).
Функциональные: ориентированы на вычисление функций (например, Haskell, Lisp).
Логические: основаны на формальной логике (например, Prolog).
По области применения:
Универсальные: подходят для разных задач (например, Python, Java).
Специализированные: подходят для конкретных областей (например, R для статистики, SQL для баз данных).
По типу компиляции/интерпретации:
Компилируемые: преобразуются в машинный код перед выполнением (например, C, C++).
Интерпретируемые: выполняются интерпретатором построчно (например, Python, JavaScript).
Вопрос 46. Критерии качества программы
Корректность – очевидно, что программа должна работать правильно, иначе нет смысла ее писать.
Надежность – программа не должна «зависать» или «зацикливаться» при любых исходных данных.
Эффективность – программа должна использовать, по возможности, минимальное количество ресурсов, как по памяти (хотя в настоящее время это стало менее актуально), так и по времени (это проблема остается актуальной, особенно при обработке больших массивов данных или при решении задач, в которых время обработки экспоненциально зависит от размерности исходных данных).
Эргономичность – удобство для пользователя. Не забывайте, что первым пользователем Вашей программы будете Вы сами.
Читабельность – удобство для программиста. К сожалению, по прошествии времени, программа забывается, и давно написанную Вами программу невозможно прочитать как книгу, Вы должны заново принимать все когда-то принятые решения. Поэтому нет смысла создавать себе дополнительные трудности в виде плохо структурированного и плохо читаемого текста. Для решения этой проблемы существует ряд принципов написания текста программы.
1. Не стоит писать, как слишком длинные строки – они уходят за пределы экрана по ширине, так и слишком короткие строки – они увеличивают длину не только всей программы, но и каждого отдельного блока, который Вы в этом случае не можете охватить взглядом и оценить, что он делает.
2. Принято вложенные блоки писать со смещением вправо.
3. Используйте везде, где можно, аккуратные столбцы.
4. Не жалейте пробелов – «а + b» читается лучше, чем «a+b».
5. Не прячьте операторные скобки {…} в конец строки – в этом случае их трудно найти и определить начало и конец блока.
Переносимость – программа должна работать не только на Вашем компьютере, но и на других!
