
- •Понятие программы и языка программирования
- •Функция как компонент структуры программы
- •Примеры простых программ
- •Вычисление значения функции в заданной точке
- •Вычисление суммы и количества целых чисел, введенных пользователем с клавиатуры
- •Демонстрация работы со строками на основе использования класса string
- •Представление программы и данных
- •Процесс компиляции программы
- •Классическая схема подготовки исполняемой программы
- •Технологический цикл обработки программы
- •Особенности внутреннего представления программы и ее исполнения
- •Организация памяти компьютера
- •Сегментация программы
- •Процесс исполнения программного кода
- •Структура текстового файла программы
- •Структура программы из двух текстовых файлов
_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 |
|