- •1. Понятие информации, ее свойства. Единицы измерения информации.
- •2. Понятие энтропии. Вычисление количества информации по формулам Шеннона и Хартли.
- •3. Кодирование текстовой информации. Ascii, Unicode (UtF-8, utf-16).
- •4. Кодирование графической информации. Растровая, векторная и фрактальная графика. Палитры rgb, cmyk.
- •5. Кодирование звуковой информации. Теорема Котельникова.
- •6. Позиционные и непозиционные системы счисления.
- •7. Позиционные системы счисления. Основные понятия: алфавит, разряды, весовые коэффициенты.
- •8. Доказательство оптимальной троичной системы счисления.
- •9. Причины использования двоичной системы счисления.
- •19. Прямой, обратный и дополнительный коды.
- •20. Форматы представления чисел с фиксированной запятой.
- •21. Формат представления чисел с плавающей запятой одинарной точности. Мантисса, порядок.
- •22. Способы представления чисел с плавающей запятой одинарной точности ieee 754. Нормализованная и денормализованная формы, преставление бесконечности, нуля, "нечисла" (NaN).
- •23. Перевод чисел в формат с плавающей запятой и обратно.
- •24. Сложение и вычитание чисел с плавающей запятой.
- •25. Умножение и деление чисел с плавающей запятой.
- •26. Ошибки, возникающие при использовании чисел с плавающей запятой.
- •27. Основы логики. Понятия, высказывания, умозаключения.
- •28. Алгебра логики. Функции алгебры логики.
- •29. Способы представления функций алгебры логики.
- •30. Булева алгебра. Аксиомы и теоремы булевой алгебры.
- •31. Теорема о разложении функции алгебры логики по переменным (с доказательством).
- •32. Сднф функций алгебры логики.
- •34. Упрощение логических функций методом Квайна.
- •35. Упрощение логических функций с помощью карт Карио.
- •36. Конечный автомат: определение, разновидности. Способы задания конечных автоматов.
- •38. Автомат Мура. Структурная схема и способы задания.
- •39. Преобразование автомата Мили в автомат Мура и наоборот.
- •40. Машина Тьюринга.
- •41. Алгоритм. Свойства и способы представления.
- •42. Модели жизненного цикла программного обеспечения.
- •43. Императивные и декларативные парадигмы программирования.
- •44. Парадигмы процедурного и структурного программирования.
- •45. Концепции объектно-ориентированного программирования. Абстракция, инкапсуляция, наследование, полиморфизм.
- •46. Структура программы на языке программирования c.
- •47. Процесс трансляции программы на языке c.
- •48. Типы данных в языке программирования c.
- •49. Преобразование типов данных в язык программирования c.
- •50. Реализация разветвляющихся алгоритмов на языке c. Конструкции if и switch.
- •51. Реализация разветвляющихся алгоритмов на языке c. Тернарный оператор.
- •52. Циклы с предусловием, постусловием, со счетчиком.
- •53. Алгоритм вычисления конечных сумм и произведений.
- •54. Алгоритм вычисления итеративных сумм.
- •55. Функции. Объявление, определение и передача параметров.
- •56. Рекурсивные функции.
- •57. Массивы. Объявление, использование, способы ввода и вывода.
42. Модели жизненного цикла программного обеспечения.
Жизненный цикл программного обеспечения (ПО) — период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации. Этот цикл — процесс построения и развития ПО.
Модель жизненного цикла ПО — структура, определяющая последовательность выполнения и взаимосвязи процессов, действий и задач на протяжении жизненного цикла. Модель жизненного цикла зависит от специфики, масштаба и сложности проекта и специфики условий, в которых система создается и функционирует.
Общепринятая модель
Классическая итерационная модель
Каскадная модель
43. Императивные и декларативные парадигмы программирования.
Существуют две парадигмы программирования: императивная и декларативная. Основной (традиционной) парадигмой программирования является императивное (процедурное) программирование. В рамках императивной парадигмы рассматривается класс языков программирования, в которых программа явно указывает способ получения результата, не определяя ожидаемых свойств результата. Процедура получения результата имеет вид последовательности операций. Отсюда следуют характерные черты императивной программы:
• указание логики управления в программе;
• определение порядка выполнения операций;
• наличие операторов присваивания, выполняющих разрушающее присваивание.
Императивная парадигма основана на «фон-неймановской» вычислительной модели, основными параметрами которой являются:
• программа состоит из набора команд, которые выполняются последовательно;
• поименованные области памяти (концепция переменных как областей памяти, к которым можно обращаться по имени).
Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Реализация программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.
Императивные языки программирования характеризуются следующими особенностями:
• необходимостью явного управления памятью, в частности описанием переменных;
• малой пригодностью для символьных вычислений;
• отсутствием строгой математической основы;
• высокой эффективностью реализации на традиционных ЭВМ.
Одним из важнейших классификационных признаков процедурного языка является его уровень. Уровень языка программирования определяется семантической (смысловой) емкостью его конструкций и степенью его ориентации на программиста. Язык программирования частично ликвидирует разрыв между методами решения различного рода задач человеком и вычислительной машиной. Чем более язык ориентирован на человека, тем выше его уровень. К императивным языкам программирования относятся ассемблеры и хорошо распространенные языки программирования высокого уровня, например такие, как Фортран, Паскаль, Си.
Принципиально иную вычислительную модель предполагает декларативная парадигма программирования. При использовании декларативного языка в программе в явном виде указывается, какими свойствами должен обладать результат, но не определяется порядок его получения. В идеальном случае декларативная программа будет состоять из предложений, описывающих необходимый результат. Характерно, что в этом случае порядок предложений, определяющих конкретные свойства результата, не имеет значения. В декларативной парадигме отсутствует концепция переменной, как поименованной области памяти, и явное управление. Декларативные языки не привязаны жестко к традиционной фон-неймановской модели вычислений. В большинстве случаев алгоритм достижения необходимого результата может иметь высокую степень параллелизма.
Декларативная парадигма программирования реализуется с помощью одного из двух стилей программирования: функционального или логического программирования.
