Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы си++.pdf
Скачиваний:
58
Добавлен:
09.04.2015
Размер:
455.01 Кб
Скачать

_getch(); return 0;

}

Результаты выполнения программы:

Enter Your name: Larisa<enter> Hello, Larisa!

Представление программы и данных

Программа имеет два представления:

т екст овое – исходный текст программы, хранимый в виде текстовых файлов;

кодовое:

oпоследовательность машинных команд, которая получается как результат обработки (компиляции) исходного текста программного модуля и которая не может быть

непосредственно выполнена компьютером (объект ный код);

oдвоичный код, готовый к исполнению и хранимый в виде exe-файла (исполнимый,

машинный,код);

Данные имеют также два представления:

внешнее – в тексте программы, при вводе или выводе значений на экран и, возможно, хранении (в текстовом файле)

внут реннее – двоичный код, формируемый по определенным правилам компилятором и средой исполнения в оперативной памяти (в зависимости от типа данного).

Процесс компиляции программы

Функцию перевода программы в машинный код выполняет программа-т ранслят ор, имеющая две разновидности: компилят ор и инт ерпрет ат ор.

Инт ерпрет ация – непосредственное выполнение инструкций (команд, операторов) формального языка над образами языковых объектов программы (обозначенных в программе именами). Инт ерпрет ат оры непосредственно исполняют программы на языках высокого уровня и не требуют их трансляции в машинный код, однако требуют наличия исполняющей среды. Интерпретаторы удобны, когда программы часто перекомпилируются для добавления в них новых возможностей и исправления ошибок. Однако отлаженные скомпилированные программы выполняются более эффективно.

Компиляция – перевод текста программы с исходного формального языка на другой, более простой язык. Скомпилировать исходный код – означает выполнить программу-компилятор. В

С++ компилят ор является одним их компонентов IDE (Integrated Development Environment) –

интегрированной среды разработ ки, предоставляющей программисту средства для комплексной работы с программой (редактирование, компиляция, компоновка, загрузка, выполнение, отладка, справка). Удобство IDE (например, Microsoft Visual Studio 2005) заключается в том, что не приходится работать с множеством приложений, так как все задачи выполняются в рамках IDE.

Компиляция и интерпретация отличаются не характером и методами анализа и преобразования объектов программы, а совмещением фаз обработки этих объектов во времени. При компиляции фазы преобразования и выполнения действий разнесены во времени, но зато каждая из них выполняется над всеми объектами программы одновременно. При интерпретации, наоборот, преобразование и выполнение действий объединены во времени, но для каждого объекта программы.

Различные языки программирования включают процессы компиляции и интерпретации в разных пропорциях и сочетаниях. Язык Си++ является «чист ым компилят ором»: результатом трансляции является программный код, в который транслятор не включает никаких «лишних»

Программирование – лекция 1 (лекции Стрикелевой Л.В.)

10

 

команд (например, проверки установленных ограничений или обнаружения ошибок), что позволяет гарантировать эффективность и независимость программного кода и делает язык единственным (кроме Ассемблера) языком системного программирования, на котором пишутся ядро операционной системы, драйверы и т.п.

Классическая схема подготовки исполняемой программы

Программа выполняется в компьютере, архитектура которого обеспечивает язык программирования, именуемый машинным кодом. Данные в этом языке представлены машинными словами, хранящимися в памяти и в регистрах процессора, а выполняемые действия – сист емой команд. Рассмотрим схему подготовки исполняемой программы в типичной среде программирования С++ (Рис.1.3):

Рис.1.3. Схема подготовки исполняемой программы в типичной среде программирования С++

(1)– программа набирается в текстовом редакторе среды разработки и запоминается на диске

(расширение имени файла .срр);

(2) – программа-препроцессор распознает в тексте программы директивы препроцессора (начинаются с символа #), обрабатывает директиву #include <…..> и подключает к исходному тексу программы указанные в ней файлы. Основная цель препроцессора – закончить формирование исходного кода программы на С++, поэтому типичное для него действие – добавление или изменение исходного кода перед компиляцией. Выполняя директиву, препроцессор преобразовывает исходный код программы в расширенный код («единицу трансляции»), который и подается на вход компилятора.

(3) – программа-компилят ор выделяет лексемы (минимальные смысловые конструкции языка), затем на основе грамматики языка распознает более сложные смысловые конструкции языка

(определения, объявления, выраж ения, операт оры и т.д.), построенные из лексем, выявляет синтаксические ошибки и при их отсутствии создает код на языке Ассемблера; в языке программирования Ассемблер система команд, способы адресации, машинные слова и их адреса обозначаются символическими именами; Ассемблер работает с компьютерной архитектурой, но ее элементы представлены не во внутренней (двоичной) форме, а в обычной текстовой;

Программирование – лекция 1 (лекции Стрикелевой Л.В.)

11