Элементарные типы данных.
Типы данных
Для хранения данных используются ячейки памяти, объем одной ячейки кратен минимум 8 битам, минимальный для процессора объем одной ячейки называют машинным словом.
Зависит он от разрядности процессора.
Простые типы данных:
-
Целочисленный тип данных. Числа со знаком представляются в виде дополнительного кода. Положительные – 0 и двоичный код, отрицательные – инверсия + 1. Самое большое положительное число 2^(w-1)-1. Самое маленькое это байт. 0-255. Машинно-независимые языки в них количество байт соответствующих им ячеек памяти строго фиксировано, не зависят от процессора на котором исполняется программа, и компилятора, который создал машинный код. Машинно-зависимые – кол-во ячеек памяти зависит от платформы, под которую компилируется. Операции над целыми числами + - * /. Получаемые значения ограничены диапазоном типа данных. Переполнение – полученное значение выходит за границы допустимого диапазона. Отбросит кратное число. Операция деления в современных языках программирования разделена на операцию получения целой части и получении остатка от деления. Операция умножения требует большего времени обработки на процессоре, чем остальные. Кроме того сохраняет результат в двух ячейках памяти, только потом обрезает до нужного типа данных.
-
Символьный тип – полный аналог целочисленного типа. Char 256 символов. Для того чтобы сопоставить числам символы используются таблицы кодировки. Операции те же.
-
Перечисляемый тип – таблица перечислений. Операции выполняются в контексте порядкового номера, соответствующих обозначений в таблице. Многие языки программирования требуют явной типизации значений типа перечислений при таких операциях.
-
Булев тип – можно считать частным случаем перечисления, где значению false сопоставлен целочисленный 0, а все остальные числа трактуются как true.
-
Подтипы – типы, значения которых ограничены некоторым диапазоном.
-
Вещественные числа – 2 подхода 2ичного представления вещественных чисел.
-
Согласно двоичной арифметике.
-
Кодировать цифры числа как целое число дополняя информацию о позиции десятичного разделителя.
-
Числа с фиксированной точкой (формат определяет что число содержит не более заданного кол-ва цифр n, в том числе не более заданного кол-ва цифр m после запятой). Для представления в памяти достаточно сохранить его целочисленное представление включая один бит знака и номер позиции десятичной точки. Достоинство – кол-во знаков после запятой определяет абсолютную погрешность. Недостатки – относительная погрешность есть переменная. Некоторые числа нельзя вписать в этот формат. Применяется когда точность заранее определена.
Числа с плавающей точкой. Х – вещественное число от 0 до 1. Кол-во знаков мантиссы определяет относительную погрешность. Очень широкий диапазон чисел. Низкая относительная погрешность.
Некоторые операции может произойти переполнение, или потеря значимости.
- Язык программирования. Общие принципы построения и использования языков программирования.
- Стандарты языков программирования.
- Лямбда-исчисление. Аппликация, абстракция, редукция, преобразование.
- Списки и функциональные выражения в функциональных языках программирования.
- Механизмы и средства взаимодействия программы с операционной системой.
- Функциональное программирование. Основные положения. Основные отличия от других типов языков программирования.
- Классификация языков программирования. Близость языков программирования к естественному языку.
- Унификация и хорновский клоз в логических языках программирования.
- Модель вычислений функциональных языков программирования.
- Языки программирования низкого уровня.
- Средства разработки графического интерфейса пользователя. Эргономические свойства человеко-машинного интерфейса.
- Процедурные языки программирования. Основные отличия от других типов языков.
- Обоснование выбора языка программирования.
- Перегрузка в языках программирования.
- Логические языки программирования. Основные положения и понятия. Основные отличия от других типов языков программирования.
- Объектно-ориентированные языки программирования (ооп). Основные отличия от других концепций языков программирования.
- Полиморфизм в ооп. Виртуальные функции. Таблицы виртуальных функций.
- Структура языка программирования. Синтаксис и семантика языка программирования. Расширенная форма Бэкуса-Наура.
- Наследование в ооп. Множественное наследование. Проблемы множественного наследования.
- Инкапсуляция в ооп. Контроль доступа.
- Понятие класса и объекта в ооп. Атрибуты, методы, конструктор и деструктор, статические члены класса.
- Диаграммы классов uml. Основные элементы и обозначения.
- Данные. Средства описания данных. Типизация языка.
- Преобразования типов. Контроль соответствия типов данных.
- Ооп. Основные концепции ооп.
- Современные интегрированные схемы разработки программ. Основные компоненты среды программирования.
- Декомпозиция программ.
- Трансляторы. Интерпретация и компиляция.
- Макропроцессоры и макрогенераторы.
- Потоки и процессы. Сходства и различия.
- Мониторы и защищаемые переменные в параллельном программировании.
- Семафоры в параллельном программировании. Типы семафоров.
- Отладчики. Генераторы кода и приложений.
- Параллельная обработка данных и параллелизм. Параллельное и распределенное программирование.
- Основные проблемы параллельного и распределенного программирования.
- Оценка максимально возможного параллелизма.
- Основные модели параллельного программирования.
- Оптимизатор. Основные функции оптимизатора.
- Обработка исключительных ситуаций. Иерархия и виды исключительных ситуаций.
- Операторы обработки исключительных ситуаций в различных языках программирования.
- Элементарные типы данных.
- Перегрузка данных, операторов, методов.
- Составные типы данных.
- Механизмы логического вывода. Прямая и обратная цепочки рассуждений.
- Пространство имен, область видимости, время жизни переменных.
- Ошибки при работе с вещественными числами. Смешанная арифметика.
- Операторы выбора и условные операторы.
- Вещественные числа. Способы представления. Операции над вещественными числами.
- Оператор присваивания. Операторы цикла.
- Распределение памяти при выполнении программы.
- Динамические структуры данных. Реализация динамических структур данных с помощью указателей.
- Библиотеки программ и классов. Статические и динамические библиотеки. Критерии проектирования библиотек.
- Подпрограммы. Формальные и фактические параметры подпрограмм.
- Передача параметров подпрограмме.
- Программный стек и его изменение.
- Рекурсивный и итерационный методы решения задач. Виды рекурсий.
- Общая характеристика языков ассемблера: назначение, принципы построения и использования; структура языка.
- Сериализация и десериализация. Методы сериализации объектов в базу данных.