- •Введение
- •Тема 1.1.Лексические основы языка программирования Общие сведения о программах, лексемах и алфавите
- •Тема 1.2.Концепция типа данных Понятие переменной
- •Основные типы данных
- •Указатели
- •Перечисления (перечислимый тип)
- •Массивы
- •Тема 1.3.Основные управляющие структуры программирования Понятие алгоритма
- •Свойства алгоритма:
- •С помощью языка программирования. Управляющие структуры и основные конструкции языков программирования
- •Тема 1.4.Основы модульного программирования
- •Подпрограммы
- •Рекурсивные функции
- •Раздел 2.Технология создания программ Тема 2.1.Интегрированная среда программирования
- •Трансляторы
- •Тема 2.2.Жизненный цикл программного обеспечения (Этапы подготовки и решения задач на эвм)
- •Анализ требований (постановка задачи, обследование)
- •Определение спецификаций
- •Кодирование
- •Тестирование, отладка и оптимизация
- •Внедрение и сопровождение
- •Раздел 3.Основные парадигмы программирования Тема 3.1.Генезис языков программирования.
- •Основные вехи в истории развития языков программирования
- •Классификация языков программирования
- •Уровни языков программирования
- •Поколения языков программирования
- •Тема 3.2.Основные парадигмы (технологии) программирования
- •Структурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование (ооп)
- •Основные свойства ооп
- •Структуры (записи)
- •Объединения (запись с вариантами)
- •Как массив символов
- •Как указатель на строковую константу
Трансляторы
Существует два основных метода перевода программы, написанной на языке программирования высокого уровня, в машинные коды.
Метод интерпретации устанавливает соответствие между языком программирования и машинным языком благодаря специальной программе – интерпретатор, одновременно оперирующий программой на языке программирования и данными, которыми надо передать этой программе для обработки. Интерпретатор декодирует программу, то есть переводит в машинный код, и по мере этого декодирования выполняет соответствующие команды, применяя их к обработанным данным. (Самый известный интерпретатор – интерпретатор языка Бейсик).
Достоинства: один и тот же текст программы практически без всяких изменений может запускаться на разных компьютерах, что устраняет проблемы переноса программ с компьютера на компьютер.
Недостаток: сравнительно небольшая скорость выполнения – каждую строку программы на языке высокого уровня интерпретатор должен проанализировать, проверить на наличие ошибок и только после этого выполнить. Наличие синтаксических ошибок в операторах выявляется только в момент их выполнении.
При использовании метода компиляции выполнение программы включает две фазы. Сначала осуществляет перевод программы, написанной на языке программирования, в эквивалентную программу на машинном языке с предварительной проверкой синтаксических конструкций данного языка программирования. На втором этапе программа выполняется на компьютере с данными, которые необходимо обработать.
Достоинство: повышенная скорость – один раз скомпилированная программа в дальнейшем при запуске не требует каких-либо дополнительных действий над собой, не содержит синтаксических ошибок.
Недостаток: ограничение при переносе с одной платформы на другую (с одной архитектуры на другую) – приходится заново компилировать. Фирмы, торгующие программы обеспечением, вынуждены продавать несколько версий одной и той же программы для разных платформ.
До 1994 г. эти два методы перевода программы были единственными, используемыми в программировании и получили общее название методы трансляции.
В 1994 году американский ученный, программист Михаэль Франц предложил новый метод - динамическую кодогенерацию - нечто среднее между интерпретацией и компиляцией. Его суть заключается в следующем – программа, написанная на языке высокого уровня, транслируется не в машинный код, а в некоторый промежуточный. При трансляции происходит синтаксическая проверка запуска программы. Сам же перевод программы из промежуточного кода в машинный для данного процессора происходит в момент загрузки программы в оперативную память компьютера. Этот метод был применен при разработки нового языка программирования Java.
Схема подготовки исполняемой программы на языке С++
Основная программная единица на языке С++ - это текстовый файл с расширением .сpp. Процесс перевода программы в машинные коды состоит из следующих этапов. Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочный файлов, в который содержатся описания используемых в программе элементов). Например,
#include <iostream.h>
вставляет в текст программы текст из заголовочного файла iostream.h.
В результате препроцессор изменяет исходный текст программы. Сформированный таким образом текст программы (полный текст программы) поступает на компиляцию. Компилятор, во-первых, выделяет из поступившего текста программы лексемы, а затем на основе грамматики языка распознают смысловые конструкции языка, такие как выражения, операторы, блоки операторов. В результате работы компилятора либо выдается сообщение о синтаксических ошибках, либо в случае их отсутствия формируется объектный модуль программы с расширением .obj. Объектный модуль отправляется на компоновку. Компоновщик (или редактор связей) дополняет объектный модуль нужными библиотечными функциями, обращение к которым содержится в любой программе и, если необходимо, объединяет с другими объектными модулями и формирует исполняемый модуль программы с расширением .exe.
Схема подготовки исполняемой программы