- •Введение
- •1. Этапы и проблемы решения задач с использованием компьютера
- •Алфавит языка
- •Ключевые слова
- •Идентификаторы
- •Знаки операций
- •Константы
- •Комментарии
- •2.3. Структура и основные элементы программы
- •2.4. Трансляция программ и их выполнение
- •3. Стандартные (базовые) типы данных, операции и выражения
- •3.1. Типы данных, переменные и константы Понятие типов данных
- •Классификация простых предопределенных типов данных
- •Переменные, константы
- •3.2. Целочисленные типы данных
- •3.3. Вещественные типы данных
- •3.4. Логический тип данных
- •3.5. Символьный тип данных
- •3.6. Операции и выражения
- •Преобразования типов данных
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные (битовые) операции
- •Операции составного присваивания
- •Условная операция
- •Операция sizeof
- •Приоритеты рассмотренных операций
- •3.7. Ввод и вывод простых типов данных
- •Вывод текстовых строк
- •Ввод/вывод арифметических типов данных
- •Форматирование ввода / вывода
- •4.1. Идеи структурного программирования
- •Условная инструкция (if)
- •Инструкция множественного выбора (switch)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Итерационный цикл (for)
- •Инструкции перехода
- •5. Приемы программирования циклов
- •5.1. Рекуррентные вычисления
- •5.2. Инвариант цикла
- •6. Массивы
- •6.1. Понятие массива
- •6.2. Объявление массивов Объявление одномерных массивов
- •Объявление многомерных массивов
- •6.3. Ввод-вывод массивов
- •Вывод массивов
- •Ввод массивов
- •6.4. Текстовые строки как массивы символов
- •Определение текстовой строки
- •Ввод текстовых строк с клавиатуры
- •Обработка текстовых строк
- •Массивы текстовых строк
- •7. Разработка программ при работе с массивами
2.4. Трансляция программ и их выполнение
При желании исходный текст программ можно вводить с помощью любого текстового редактора (например, с помощью Блокнота или WordPad) и обязательно сохранять его именно в текстовом формате без информации форматирования. Дело в том, что информация о форматировании помешает работе C++ - компилятора.
Имя файла, который будет содержать исходный код программы, формально может быть любым. Но С++ - программы обычно хранятся в файлах с расширением .срр. Поэтому называть исходные тексты С++ - программ можно любыми именами, но в качестве расширения следует использовать.срр. Например, назвать предыдущую программу можно, например, MyProg.срр.
Что необходимо сделать для того, чтобы выполнить трансляцию программы и выполнить ее? Конкретные действия зависят от используемой системы программирования.
Способ компиляции программ зависит от используемого компилятора и выбранных опций. Более того, многие компиляторы, например Visual С++ (Microsoft) и С++ Builder (Borland), предоставляют два различных способа компиляции программ: с помощью компилятора командной строки и интегрированной среды разработки (Integrated Development Environment — IDE). Поэтому для компилирования С++ - программ невозможно дать универсальные инструкции, которые подойдут для всех компиляторов.
Поскольку самыми популярными компиляторами являются Visual С++ и С++ Builder, здесь приведены инструкции по компиляции программ, соответствующие этим компиляторам.
Чтобы скомпилировать программу MyProg.срр, используя Visual С++ компилятор командной строки, необходимо ввести следующую командную строку:
C:\...>cl -GX MyProg.срр
Чтобы скомпилировать программу MyProg.срр, используя С++ Builder, необходимо ввести такую командную строку:
С: \...>bcc32 MyProg.срр
В результате работы С++-компилятора получается выполняемый объектный код. Для Windows-среды выполняемый файл будет иметь то же имя, что и исходный, но другое расширение, а именно расширение .exe. Итак, выполняемая версия программы MyProg.срр будет храниться в файле MyProg.ехе.
При использовании интегрированных сред разработки (IDE) соответствующие действия выполняются с помощью соответствующих команд меню.
Скомпилированная программа готова к выполнению. Поскольку результатом работы C++ компилятора является выполняемый объектный код, то для запуска программы MyProg.ехе необходимо выполнить командную строку:
С:\...>MyProg.exe
Если используется интегрированная среда разработки, то выполнить программу можно путем выбора из меню команды Run (Выполнить). При выполнении этой команды осуществляется автоматическая компиляция программы и, при отсутствии ошибок, программа запускается на выполнение.
Основным назначением компилятора (транслятора) является перевод исходного текста программы, написанного на языке программирования понятного человеку, на язык, понятный процессору — в машинные коды. Этот процесс состоит из нескольких этапов. Рисунок иллюстрирует эти этапы для языка С++.
Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочных файлов — текстовых файлов, в которых содержатся описания используемых в программе элементов).
Получившийся полный текст программы поступает на вход компилятора, который выделяет лексемы, а затем на основе грамматики языка распознает выражения и операторы, построенные из этих лексем. При этом компилятор выявляет синтаксические ошибки и в случае их отсутствия строит объектный модуль.
Компоновщик, или редактор связей, формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие функции библиотек, обращение к которым содержится в любой программе (например, для осуществления вывода информации на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки. Исполняемый модуль имеет расширение .exeи может быть запущен на выполнение обычным образом.
При разработке программ возникают ошибки трех видов:
Синтаксические ошибки - нарушения синтаксиса (то есть грамматических правил) языка программирования, например, пропущена точка с запятой;
Ошибки периода выполнения – возникающие только при работе программы (например, деление на 0);
Логические ошибки – ошибки исходного алгоритма (например, вместо операции + ошибочно использована операция *).
При компиляции программ, содержащих синтаксические ошибки, компилятор все их обнаружит и выдаст соответствующие сообщения об ошибках и покажет приблизительное место каждой из них. Однако эти сообщения не всегда точно отражают смысл и положение синтаксической ошибки в исходном тексте.
Ошибки периода выполнения обнаруживаются только при выполнении программы – эти ошибки, как правило, приводят к аварийному завершению работы программы с выдачей соответствующего сообщения.
Логические ошибки компилятором и исполняющей системой компьютера не обнаруживаются и могут привести к непредсказуемому поведению программы. Обнаружить такие ошибки можно только путем анализа результатов работы программы на различных наборах тестовых данных, но и в этом случае 100% уверенности в правильности работы программы никогда нельзя дать.