- •Экзамен по информатике
- •Цели программирования.
- •Области языков программирования. Научные приложения.
- •Области языков программирования. Коммерческие приложения.
- •Области языков программирования. Искусственный интеллект.
- •Области языков программирования. Системное программирование.
- •Области языков программирования. Языки сценариев.
- •Области языков программирования. Web-программирование.
- •Уровни языков программирования. Машинные языки (история возникновения, отличительные особенности, пример языков).
- •Уровни языков программирования. Языки ассемблера (история возникновения, отличительные особенности, пример языков).
- •Уровни языков программирования. Языки высокого уровня (история возникновения, отличительные особенности, пример языков).
- •Методы реализации программ. Компиляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Интерпретация (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Смешанная реализация (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Трансляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Жизненный цикл программного продукта.
- •Этапы решения задач на эвм.
- •Цикл с параметром
- •Пример 1
- •Пример 2
- •Способы записи алгоритма. Псевдокод.
- •Пример 1
- •Пример 2
- •Рекомендации
- •Сравнение примеров
- •Способы записи алгоритма. Сравнение различных подходов. Выгоды использования блок-схем и псевдокода
- •Только псевдокод
- •Концепция памяти.
- •Принципы типизации данных.
- •Тип данных bool
- •Тип данных char
- •Целочисленные типы данных
- •Типы данных с плавающей точкой
- •Иерархия простых типов данных.
- •Стандартные типы данных. Таблица характеристик. Особенности выбора типа.
- •Правила приведения типов.
- •Пример, использующий преобразование типов
- •Оператор sizeof.
- •Переменные (объявление, инициализация, присвоение).
- •Константы. Специальные символы. Квалификатор const.
- •Область видимости переменных.
- •Операторы управления областью видимости.
- •Группы операций (особенности записи, таблица приоритетов)
- •Понятие ассоциативности, приоритета, размерности. Таблица приоритета операций.
- •Арифметические операции.
- •Логические операции (краткая схема вычислений).
- •Побитовые операции (таблицы истинности). Побитовые логические операции
- •Побитовое отрицание (not)
- •Побитовое и (and)
- •Побитовое или (or)
- •Сложение по модулю два (xor)
- •Другие побитовые логические операции
- •Битовые сдвиги
- •Принципы структурного программирования.
- •Структурное программирование: три базовые конструкции.
- •Основные операторы.
- •Параметры по-умолчанию.
- •Перегрузка функций.
- •Файлы (понятие, текстовые и двоичные файлы, структурированные и неструктурированные, операции, основные библиотеки для работы с файлами).
- •Режимы открытия файлов
- •Потоковый ввод-вывод. Библиотека потокового ввода-вывода. Вступление.
- •Консольный ввод/вывод.
- •Форматирование.
- •Потоковый ввод/вывод пользовательских типов.
- •Файловый ввод/вывод.
- •Файловый ввод-вывод. Стандартная библиотека ввода-вывода.
Уровни языков программирования. Языки высокого уровня (история возникновения, отличительные особенности, пример языков).
Использование компьютеров резко возросло с появлением языков ассемблера, но эти языки всё ещё требовали много команд для полного описания даже простых задач. Для ускорения процесса программирования были разработаны языки высокого уровня, в которых иногда достаточно написать всего один оператор для решения реальной задачи. Программы трансляции, которые преобразуют программы на языках высокого уровня в машинные коды, называются компиляторами. Языки высокого уровня позволяют программисту писать программы, которые выглядят почти так же, как повседневный английский, и используют общепринятую математическую нотацию. Очевидно, что языки высокого уровня гораздо удобнее с точки зрения программистов по сравнению с языками ассемблера и с машинными кодами.
Методы реализации программ. Компиляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
Программа может переводиться на машинный язык и выполняться непосредственно компьютером. Такая реализация называется компиляцией. Преимущество этого метода – очень быстрое выполнение программы после завершения процесса компиляции. Программы на большинстве языков, таких как C++ и Delphi, реализуются с помощью компилятора.
Рассмотрим, основные этапы процесса компиляции.
Лексический анализатор объединяет символы исходной программы в лексические единицы. Лексические единицы программы – это имена переменных, служебные слова, операторы и знаки пунктуации. Их кратко называют лексемами.
Слова в русском языке состоят тоже из букв, но мы оперируем именно словами.
Синтаксический анализатор получает от лексического анализатора лексемы и проверяет правильность их следования. Например, последовательность лексем «x», «=», «5» будет правильной, а вот «=», «x», «5» – нет. Результатом работы синтаксического анализатора являются деревья синтаксического анализа, которые представляют собой иерархические структуры данных с информацией о программе и её операторах.
Расписать дерево выражения (2+2)*2
Аналогия орфографии в русском языке.
Таблица символов используется в качестве базы данных для процесса компиляции. Изначально в этой таблице находится информация о типах и атрибутах всех операторов и переменных, определённых в программе. Эту информацию в таблицу символов помещают лексический и синтаксический анализатор, а используют семантический анализатор и генератор кода.
Генератор промежуточного кода создаёт программы на особом языке, промежуточном между языком исходной программы и машинным языком. Промежуточные языки зачастую очень похоже на языки ассемблера и иногда действительно ими являются.
Семантический анализ позволяет выявить смысловые ошибки в программе, такие как использование переменных без присвоения им начального значения или определение операторов, которые никогда не могут быть выполнены.
Оптимизатор позволяет улучшить программу путём уменьшения её размеров или скорости выполнения или того и другого одновременно. Оптимизация часто является дополнительным этапом процесса компиляции.
Генератор машинного кода переводит программу с промежуточного кода в машинный код.
Машинный код, созданный генератором кода, может непосредственно выполняться аппаратным обеспечением. Однако для выполнения большинства пользовательских программ необходимы также программы и функции операционной системы (например, функции ввода-вывода). Для связки программы с функциями операционной системы и программами других разработчиков предназначен редактор связей.
После редактора связей программа переведена в машинный код и может быть непосредственно исполнена. Способы запуска программы зависят от операционной системы, если такая есть, и особенностей работы аппаратного обеспечения.