Скачать 137.47 Kb.
|
Тема 11 Языки и системы программированияЯзык программирования (programming language) - формальный язык, на котором создаются компьютерные программы. Язык программирования обычно состоит из последовательности инструкций. Описание языка состоит из:
По своему уровню языки программирования классифицируются на:
Языки высокого уровня можно разделить на на две группы:
Текст программы на языке высокого уроня называется исходным текстом. Для того, чтобы программа, написанная на языке высокого уровня, могла быть выполнена на компьютере, требуются системы программирования - программные средства, предназначенные для создания и трансляции высокоуровневых программ в машинные коды. Примеры систем программирования - QBASIC, Turbo Pascal, Turbo C++, Delphi, MS Visual Studio, Borland C++ Builder, Borland JBuilder, Borland C#Builder и т.д. Основной функцией систем программирования является трансляции. Трансляторы (программы, выполняющие эту работу) делятся на две группы:
Все системы программирования, ориентированные на языки С и С++, являются компилирующими системами. ^ В качестве базового языка для С++ был выбран С - многоцелевой, лаконичный и относительно низкоуровневый язык программирования. Основными особенностями C++ по сравнению с С являются следующие:
На базе синтаксиса впоследствии были созданы новые объектно-ориентированные языки. Прежде всего, это Java и C#. Можно назвать следующие отличия C++ от вновь созданных языков объектно-ориентированного программирования:
Таким образом, язык С++ сочетает в себе возможности представления сложных структур данных и написания эффективных низкоуровневых программ. В августе 1998 года был ратифицирован стандарт языка С++. Стандарт С++ представляет собой документ, полностью описывающий синтаксис языка и его возможное использование. Кроме базовых средств языка программирования С++, в стандарт вошла так называемая Стандартная библиотека (Standard C++ Library). Все последние версии систем программирования на С++ обязаны поддерживать стандарт языка. Некоторые компании предлагают специальные пакеты, проверяющие "стандартность" реализации С++. ^ Алфавит языка С++ включает:
В С++ различаются заглавные и строчные буквы. Исходный текст на С++ состоит из лексем. Лексемы (tokens), в свою очередь, делятся на группы: ключевые (зарезервированные) слова, идентификаторы, литералы, знаки операций и разделители. Набор ключевых слов ограничен. В стандартном С++ имеется 63 ключевых слова. Еще 11 слов зарезервировано для альтернативного представления операций. В некоторых реализациях С++ к ним могут быть добавлены специфические ключевые слова. Ключевые слова нельзя использовать в качестве идентификаторов. Ниже приводится список ключевых слов:
Идентификаторы используются для именования переменных, функций и других программных объектов. Первым символом должна быть буква или символ "_". Далее могут использоваться также цифры. Разделители - это пробелы, горизонтальная и вертикальная табуляция и символы перехода на новую строку. Разделителями могут также служить комментарии. Комментарии (comments) могут содержать произвольный текст с использованием любых символов. Символы /* начинают комментарий, который завершается символами */. Такие комментарии не могут быть вложенными. Символы // начинают комментарий, который завершается концом текущей строки. Литералы и операции рассматриваются ниже. ^ Текст программы содержится в модулях, именуемых исходными файлами. Файл состоит из последовательности описаний. 4.1 Препроцессорная обработкаС логической точки зрения файл транслируется за несколько проходов. Первый проход состоит в препроцессорной обработке , на которой происходит включение файлов и макроподстановка. Работа препроцессора управляется с помощью команд, являющихся строками, первый символ которых отличный от пробела есть # (перед ним могут идти пробелы и символы горизонтальной табуляции). Такие строки называются командами препроцессора, и их синтаксис определяется независимо от остального языка. Команды препроцессора могут находиться в любом месте программы. Ниже приводятся некоторые команды препроцессора. Управляющая строка вида: #include <имяфайла> приводит к замене данной строки на содержимое файла с указанным именем. Поиск указанного файла проходит в определенной последовательности и определяется реализацией системы программирования. Аналогично, управляющая строка вида: #include "имяфайла" приводит к замене данной строки на содержимое файла с указанным именем. Поиск этого файла начинается в особых (системных) папках, указанных в начале последовательности поиска. Команда вида #define идентификатор строка-лексем называется макроопределением. Она указывает препроцессору, что надо произвести замену всех последующих вхождений идентификатора на заданную последовательность лексем, называемую строкой замены. После появления макроопределения идентификатор из него считается определенным и остается в текущей области видимости (независимо от правил областей видимости в С++) до конца единицы трансляции или пока его определение не будет отменено с помощью команды #undef. Команда #undef имеет вид: #undef идентификатор Она заставляет препроцессор "забыть" макроопределение с этим идентификатором. Если указанный идентификатор не является определенным в данный момент макроименем, то команда #undef игнорируется. С помощью препроцессора можно организовать условную трансляцию программы, для этого используются команды #if выражение-константа #ifdef идентификатор #ifndef идентификатор #elif выражение-константа #else #endif С помощью #ifdef, #ifndef и #endif можно добиться, чтобы часть строк компилировалась, если идентификатор определен (не определен) ранее с помощью #define. ^ Результат работы препроцессора есть последовательность лексем. Такую последовательность лексем, т.е. файл после препроцессорной обработки, называют единицей трансляции (translation unit). Результатом трансляции этих единиц в общем случае являются объектные модули (файлы с расширением .obj). Разрешение вызовов внешних имен (объектов, функций) осуществляется на этапе компоновки (редактирования связей, linking). Компоновка может быть внешней (имена используются в других единицах трансляции) и внутренняя (на имя можно ссылаться лишь в той единице трансляции, в которой оно определено). ^ Для имен (идентификаторов) следует использовать английскую мнемонику с соблюдением грамматики (по возможности). Идентификаторы должны начинаться со строчной буквы или знака "_". Если идентификатор составлен из нескольких слов, начиная со второго слова их можно выделять заглавными буквами или знаком "_". Знаки операций должны выделяться с двух сторон пробелами. В выражениях после открывающейся скобки и перед закрывающимися скобками пробел не ставится. Перед точками, запятыми и точками с запятыми пробел не ставится. Операции "выбор члена" и "разрешение области видимости" пробелами не выделяются. Отдельные инструкции должны быть размещены на отдельных строках. Все отступы должны иметь фиксированный размер (2 / 4 пробела или табуляция). Дополнительные отступы появляются после операторных скобок, а также если в теле циклов и условных операторах реализуется только одна инструкция. В циклах for, while, в конструкциях switch, if и т.д. перед скобками следует размещать пробел. Открывающиеся и закрывающиеся операторные (блочные) скобки должны размещаться строго друг под другом. Между определениями функций пропускается строка. ^ Microsoft Visual Studio .NET - это комплект (suite) средств разработки, включающий Visual Basic .NET, Visual C++ .NET и Visual C# .NET, а также поддержку Web-программирования. Три основных языка разработки (Visual Basic .NET, Visual C++ .NET и Visual C# .NET) используют общую среду разработки (Integrated Development Environment, IDE), что, в частности, содействует созданию проектов, комбинирующих несколько языков программирования. При первой загрузке IDE пользователю предлагается стартовая страница (Start Page). По умолчанию раскрывается закладка "Начать работу" (Get Started). На панели этой закладки предлагается список проектов, которые открывались за последнее время. Здесь же имеются кнопки "Открыть проект" (Open Project) и "Новый проект" (New Project). Ключевым понятием разработки приложения в Visual C++ является проект (project). Проект - это набор взаимосвязанных исходных файлов, компиляция и компоновка которых позволяет создать исполняемую программу или DLL (Dynamic link library). Исходные файлы проекта обычно хранятся в отдельном подкаталоге. Кроме того, зачастую проект зависит от многих файлов, расположенных вне подкаталога проекта, таких как включаемые (include) и библиотечные файлы. Существует понятие конфигурации проекта. Каждый проект содержит как минимум две конфигурации - отладочную (Debug) и конфигурацию поставки (Release). Новый проект может быть создан несколькими способами:
Наша цель - создать проект, реализующий консольное приложение на С++. После выбора функции создания нового проекта любым из ранее перечисленных способов выполняются следующие действия:
Следующим этапом необходимо создать новый файл с исходным текстом. Для этого нужно выполнить следующее:
IDE содержит редактор исходного текста, поддерживающий множество возможностей - выделение цветом синтаксических конструкций, автоотступы, раскладки клавиатурных команд, а также печать. Имеется функция AutoComplete: после набора нескольких начальных символов оператора программы, редактор предлагает выбрать «всё слово» из списка возможных вариантов. Для выполнения программы можно использовать клавишную комбинацию Ctrl-F5. ^ Отладчик используется для поиска и исправления ошибок времени выполнения. Для запуска отладчика используется функция Debug | Start (F5). Предварительно в исходном тексте расставляются точки прерывания (функция Debug | New Breakpoint или Ctrl-B). Для выполнения программы по строкам используются функциональные клавиши F11 (Step Into, отладка с заходом в функции) и F10 (Step Over, отладка без захода в функции). После запуска отладчика меняется внешний вид и состав окон интегрированной среды разработки. Соответствующие кнопки на панели инструментов позволяют расставлять и убирать точки прерывания и управлять пошаговым исполнением программ. Вместо точек прерывания можно использовать функцию "Выполнять до курсора" (Ctrl-F10). В окнах Autos, Locals и Watch можно просматривать изменение значений переменных. Если поместить курсор мыши на скалярную переменную, отладчик покажет ее значение в маленьком окошке. ^ Пример 1Необходимо ввести с клавиатуры два числа и определить их среднее арифметическое. 01 // Программа вычисления среднего арифметического 02 #include 03 using namespace std; 04 int main(int argc, char* argv[]) 05 { 06 double a, b; 07 cout << "Enter a and b:" << endl; 08 cin >> a >> b; 09 double c = (a + b) / 2; 10 cout << "Average is " << c << endl; 11 return 0; 12 } |
![]() | В лекции 4 (тема 4) говорилось, что концепция процедурного программирования состоит в том, что программа складывается из последовательности... | ![]() | Методические указания к выполнению контрольной работы по дисциплине «Основы программирования и алгоритмические языки» для студентов... |
![]() | А вы знаете, что языки веб-программирования бывают клиентскими и серверными? А вы знаете, чем они отличаются, как работают? А вы... | ![]() | Вычислительный процесс – это решение задачи путем преобразования исходных данных в результат с помощью вычислителя, который действует... |
![]() | Определение системы программирования | ![]() | Кроме достаточно известных gpm и Trac, ассемблерной макротехники и препроцессоров систем программирования, рассматриваются макропроцессоры... |
![]() | ![]() | ||
![]() | ![]() |