Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л_1_введение_в_С++.doc
Скачиваний:
10
Добавлен:
02.11.2018
Размер:
292.35 Кб
Скачать

Лекция 1

Введение в С++

Программа 1

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

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

Упрощенная модель компиляции 3

Лексический анализ программы 4

Синтаксический и семантический анализ программы 6

Главные элементы программы 6

Типы данных 7

Классификация типов данных 9

Способы представления данных 9

Константы 10

Обратить внимание!!! 13

Программа

Программирование – процесс разработки программ для работы компьютера.

Программа – описание на языке программирования структур данных и алгоритма решения задачи, автоматически переводимое на язык команд компьютера при помощи программы-транслятора для последующего выполнения компьютером.

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

Программа имеет два представления: текстовое (исходный текст программы) и кодовое (двоичный компьютерный код).

Как правило, под программой на С++ подразумевают ее исходный текст (последовательность символов алфавита языка), написанный на С++, набранный в текстовом редакторе и сохраненный в текстовом файле.

Текстовый файл с названием <имя_программы>.cpp (cpp – принятое расширение для программ на С++, имя программы выбирается достаточно произвольно) – основная программная единица на языке С++. Программа записывается в свободном формате, лишние пробелы игнорируются.

Пример программы на С++ (варианты программы демонстрируют разные способы вывода):

//proba_1_1.cpp

#include <iostream.h>

void main()

{

cout << ”Ivanov Ivan\n”;

cout << ”Ok\n”;

}

/*proba_1_2.cpp*/

#include <stdio.h>

void main()

{

printf (”Ivanov Ivan\n”);

printf (”Ok\n”);

}

Программа на любом языке формируется из некоторого набора символов – алфавита языка программирования. Символами алфавита языка С++ являются:

  • строчные и заглавные латинские буквы,

  • цифры 0..9,

  • специальные символы (+ - * / & | ( ) [ ] { } _ = % # ! . , ; : ‘ “ ?  \ ^ пробел),

  • пробельные символы (перевод строки, перевод страницы, табуляция, возврат каретки и др.), имеют то же самое назначение, что и пробелы между словами.

Для первоначального представления программы и данных в компьютере проводится кодирование «внешних» символов, основанное на сопоставлении каждому из них определенной группы двоичных знаков1.

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

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

В С++ трансляцию программы в машинные коды осуществляет компилятор, который является одним их компонентов IDE (Integrated Development Environment) – интегрированной среды разработки, предоставляющей программисту средства для комплексной работы с программой (редактирование, компиляция, компоновка, загрузка, выполнение, отладка, справка). Удобство IDE (например, Microsoft Visual C++ 6.0) заключается в том, что не приходится работать с множеством приложений, так как все задачи выполняются в рамках IDE.

Скомпилировать исходный код означает выполнить программу-компилятор, которая транслирует исходный код во внутренний язык компьютера, называемый машинным языком.

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

Схема выполнения программы в С++ представлена на рисунке 4.1:

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

(1) – программа набирается в текстовом редакторе среды программирования и запоминается на диске (расширение имени файла .срр);

(2) – программа-препроцессор2 распознает в тексте программы директивы (команды) препроцессора (начинаются с символа #) и выполняет их;

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

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

(5) – системная программа компоновщик объединяет объектный код программы с объектными кодами функций, используемых программой (библиотечные файлы имеют расширение .lib), и определенным стандартным кодом начальной загрузки, в результате чего создается выполняемая версия программы (исполняемый загрузочный модуль) – файл с расширением .exe, сохраняемый на диске. Обычно программы содержат ссылки на функции, определенные вне самой программы: в стандартных или личных библиотеках, а объектный код содержит «дыры» из-за этих отсутствующих частей; компоновщик заполняет эти «дыры». Если программа состоит из нескольких исходных файлов, то они компилируются по отдельности и объединяются на этапе компоновки. Файл, содержащий окончательный продукт, называется исполняемым (загрузочным) модулем.

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