Сохранение и редактирование проекта



Лекция 1

Создание консольного приложения

Цели:

ü познакомиться с основными элементами среды программирования Visual C++ 6.0;

ü научиться создавать проект (консольное приложение);

ü научиться запускать приложение на выполнение;

ü научиться сохранять и загружать проект.

 

1. Основные элементы среды Visual C ++ 6.0

Среду программирования Visual C++ 6.0 можно открыть различными способами. Одним из них будет последовательность шагов:

1) нажать кнопку Пуск и выбрать пункт Все программы;

2) в появившемся меню выбрать Microsoft Visual Studio 6.0, затем – Microsoft Visual C++ 6.0:

После этих действий появится окно среды Visual C++ 6.0, внешний вид и основные элементы которой показаны на рис.1.

 

Строка меню – стандартный элемент окна любого приложения ОС Windows. Назначение меню – выбор конкретного пункта приведет к реализации конкретного действия. Необходимые пункты меню будут рассмотрены по ходу изложения материала.

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

В окне рабочего пространства отображаются все элементы созданного проекта.

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

Окна рабочего пространства, отладчика и вывода сообщений об ошибках при открытии Visual C++ 6.0 могут быть закрыты. Для их открытия нужно активизировать панель инструментов Standard и нажать указанные кнопки (рис.2).

 

 


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

 

Консоль. Построение консольного проекта

 

Для написания программ в среде Visual C++ 6.0, не работающих с графикой, создается консольное приложение том случае, когда графический интерфейс не только не нужен, но и будет просто мешать. При программировании под Windows можно воспользоваться функциями, обеспечивающими эмуляцию текстового терминала, называемыми функциями консоли. Консоль – это интерфейс, обеспечивающий поддержку программ, работающих только в текстовом режиме. Такой интерфейс включает в себя буфер ввода и буфер вывода. Буфер ввода представляет собой очередь из событий ввода. Например, нажатие клавиши на клавиатуре или отпуск той же клавиши. Буфер вывода иначе называют экранным буфером, который служит для хранения выводимой на экран информации. Таким образом, для написания программ, требующих для своей работы только ввода и/или вывода информации, можно обойтись созданием консольного приложения или проекта.

Для создания консольного приложения в среде Visual C++ 6.0 предусмотрен мастер создания такого рода проектов. Этот мастер называется Win 32 Console Application. Надо сказать, что Win 32 Console Application создает программный проект, включающий в себя как главную функцию main(), так и головные файлы, необходимые для функционирования простейшей программы, написанной на языке. С++.

Этапы создания консольного приложения:

1. Запустить приложение Microsoft Visual C ++ 6.0. Появится окно среды  Visual C ++ 6.0.

2. Выбрать пункт меню File, в появившемся подменю выбрать New. Появится диалоговое окно (рис.3).

 

3. На вкладке Projects выбрать Win32 Console Application. Затем перейти в текстовое поле Project name и набрать имя проекта. Проектом называется набор файлов – головных, текстов программ, ресурсов и т.п, например лин_процесс (вместо пробела в названии проекта рекомендуется ставить символ подчеркивания _ ). После этого нужно определить месторасположение проекта, т.е. на каком диске и в какой папке будет храниться наш проект. Для этого необходимо нажать на кнопку  раздела Location. Затем выбрать диск и папку. Нажать кнопку .

4. Появится диалоговое окно, где нужно выбрать пункт A “ Hello , World !” application . Нажать кнопку  (рис.4).      

 

5. В следующем диалоговом окне предлагается проверить, правильно ли все было сделано на предыдущих этапах. Если нужно внести изменения на каком-либо этапе создания приложения, то нужно нажать кнопку , иначе кнопку .

Таким образом, будет создано консольное приложение. При этом внешний вид среды Visual C++ 6.0должен выглядеть следующим образом:

Для того чтобы открыть и редактировать главную функцию main(), нужно раскрыть корневой каталог в окне рабочего пространства на вкладке ClassView и двойным щелчком левой кнопки мыши открыть функцию main() в этом окне (рис.5).

Того же результата можно достичь, открыв вкладку FileView окна рабочего пространства. На этой вкладке нужно раскрыть корневой каталог, а затем открыть каталог Source Files. Далее открываем файл, имя которого совпадает с именем проекта. Это и будет файл с главной исполняемой программой (рис.6).

Запуск приложения

Перед тем как запустить приложение на выполнение, необходимо отладить созданный проект. Процесс отладки программы – это поиск синтаксических и семантических (смысловых) ошибок. Поиск синтаксических ошибок осуществляется при помощи компилятора и компоновщика, поэтому процесс преобразования набранной программы в исполняемую состоит из двух этапов. Первый этап состоит из компиляции программы: здесь работает компилятор, который осуществляет перевод набранной программы в некоторое внутреннее представление и поиск синтаксических ошибок error(s). Компилятор выдает сообщения об ошибках и предупреждениях warning(s) в окне сообщений об ошибках. Компиляцию программы можно осуществить, выбрав в среде              Visual C++ 6.0 пункт меню Build, затем Compile. Если компилятор не выявил синтаксических ошибок в тексте программы, то создается объектный файл. Далее необходимо перейти ко второму этапу генерации исполняемой программы – к компоновке. На этом этапе происходит создание связей между всеми файлами, входящими в проект, и создается исполняемая программа. При этом все файлы, входящие в проект автоматически сохраняются. Для выполнения этого этапа нужно выбрать в среде Visual C ++ 6.0 пункт меню Build, затем ещё раз Build.

Для запуска приложения выбираем в среде Visual C ++ 6.0 пункт меню Build, далее Execute. При запуске нашего приложения на экран будет выведена строка “Hello World!”:

После запуска приложения, нужно проверить правильность его работы с помощью тестовых примеров, ответы на которые заранее известны. Тестовые примеры подбираются таким образом, чтобы проверить все «узкие» места программы, т.е. выявить семантические ошибки. Если программа работает неправильно хотя бы на одном тесте, то проверяется тот блок программы, который отвечает за выполнение теста. Проверить этот блок можно, например, при помощи вставки в программу (на время отладки) контрольной печати. Это означает, что в каждом логически завершенном по смыслу блоке программы ставится оператор вывода значений переменных на экран монитора. Таким образом, можно выявить неправильную работу каждого блока программы.

Сохранение и редактирование проекта

В папке на жестком диске, где при создании был размещен проект, будут находиться все файлы проекта и папка Debug. Для хранения проекта на каком-либо носителе нужно удалить папку Debug из проекта и сохранить все оставшиеся файлы.

Отредактировать проект можно открыв файл <имя_проекта>. dsw.

Лекция 2

Основные элементы языка С++

Цели:

ü изучить структуру программы, написанной на языке С++, и основные понятия языка.

1. Структура С++ программы. Основные элементы языка С++

Структура программы, написанной на языке С++, выглядит следующим образом:

подключение головных файлов

запись макроопределений

описание глобальных переменных

int main ( ) // заголовок главной функции

{

описание переменных

текст программы//алгоритм

   return 1; // завершение работы функции int main( )

}

1. Файл с программой на языке С++ вначале обрабатывает препроцессор, который распознаёт директивы препроцессора (каждая из них начинается с символа #) и выполняет их. Одной из таких директив является директива #include, которая используется для подключения головных файлов. Осуществляется эта возможность при помощи команды

#include < имя головного файла>

Подключение головных файлов необходимо для возможности работы с библиотечными (определёнными разработчиками языка) функциями, а также для возможности работы с функциями, описанными разработчиками

программы и помещёнными в некоторый головной файл.

Некоторые библиотечные головные файлы:

stdio.h – функции ввода-вывода информации, работы с файлами и др.;

math.h – математические функции;

string.h – работа со строками;

stdlib.h – работа с динамической памятью.

2. Запись макроопределений выполняется с помощью директивы

#define <имя_макропеременной> <определение_макропеременной>

При записи этой директивы между #define, <имя макропеременной> и <определение макропеременной> должны быть пробелы. Именем макропеременной может быть любая последовательность символов, не начинающаяся и не содержащая специальных символов. Под определением макропеременной понимается любая константа (числовая), любое арифметическое выражение, содержащее константу и имена макропеременных ранее определённых. В любом месте текста программы, где будет встречаться имя макропеременной, его будет заменять соответствующее макроопределение, описанное после директивы #define.

3. Текст программы, написанной на языке С++, содержит различные слова (имена переменных и констант, ключевые слова), операторы и выражения, которые формируются из символов алфавита языка С++ по правилам этого языка.

   В алфавит языка С++ входят:

прописные и строчные буквы латинского алфавита;

цифры 0 1 2 3 4 5 6 7 8 9;

специальные знаки: "   { }   ,   |   [ ] (   )   +   -   %   \   ;   ‘   :   ?   <   =   > _   !   & # ~   ^   .  *

Текст программы начинается с объявления переменных. Под объявлением переменных понимаются строки:

<имя типа данных 1> <имя переменной 1>,…, <имя переменной N>;

<имя типа данных М> <имя переменной 1>,…, <имя переменной К>;

Пример объявления переменных:

int f, k; //объявлены две целочисленные переменные с именами f и k

float dr; //объявлена вещественная переменная с именем dr

char ch; //объявлена символьная переменная с именем ch

Таблица 1

Тип данных Объем занимаемой оперативной памяти в байтах Диапазон значений
1 2 3
char 1 –128 ÷ 127
unsigned char 1 0 ÷ 255
signed char 1 -128 ÷ 127
int 4 –2147483648 ÷ 2147483647

Типы данных языка С++ приведены в табл.1.

Продолжение таблицы 1

1 2 3
unsigned int 4 0 ÷ 4294967295
signed int 4 -2147483648 ÷ 2147483647
short int 2 -32768 ÷ 32767
unsigned short int 2 0 ÷ 65535
signed short int 2 –32768 ÷ 32767
long int 4 -2147483648 ÷ 2147483647
unsigned long int 4 0 ÷ 4294967295
signed long int 4 -2147483648 ÷ 2147483647
float 4 3,4e-38 ÷ 3.4e+38
double 8 1.7e-308 ÷ 1.7e+308
long double 10 3.4е-4932 ÷ 1.1e+4932

При объявлении переменной под неё в оперативной памяти (ОП) отводится конкретное место (участок ОП). Размер участка оперативной памяти, который занимает переменная, определяется типом этой переменной. Для определения объема оперативной памяти, который занимает переменная какого-либо типа можно воспользоваться операцией sizeof(), например:

i=sizeof(int);

В этом примере значение переменной i будет равно 4.

При объявлении переменных можно сообщить им начальные значения путём помещения знака равенства после имени переменной. Этот процесс называется инициализациейи в общем случае имеет вид

<имя_типа_данных><имя_переменной1>=знач1,…,<имя_переменнойN>=значN;

Например:

int f = 10, k = 56;

Кроме переменных в программе могут быть использованы именованные и неименованные константы. Неименованная константа – число, именованная – идентификатор, которому поставлено в соответствие постоянное значение, не изменяющееся в процессе выполнения программы. Объявление констант выглядит следующим образом:

сonst <имя_типа_данных> <имя_константы1>=знач1,…,<имя_константыN>=значN;

При инициализации вещественных переменных и при определении вещественных констант вместо запятой в записи числа всегда ставится точка, например:

сonst float pi= 3.14159;

При задании имен переменных и констант нужно учитывать то обстоятельство, что компилятор С++ различает строковые и заглавные символы. Например, переменные с именами Alfa и alfa – это различные переменные.

4. Ключевое слово – это идентификатор, зарезервированный в языке для специального использования. В языке С++ используются ключевые слова:

 

asm else private throw
auto enum protected try
break extern public typedef
case float register typeid
catch for return union
char friend short unsigned
class goto signed virtual
const if sizeof void
continue inline static volatile
default int struct while
delete long switch  
do new template  
double operator this  

5. Операции в С++. Знаки операций обеспечивают формирование и последующее вычисление выражений. Выражение есть правило для получения значения. Один и тот же знак операции может употребляться в различных выражениях и по-разному интерпретироваться в зависимости от контекста. Для изображения операций в большинстве случаев используют несколько символов.

Операции подразделяют на унарные и бинарные. Унарными называются операции над одним операндом и пишутся, как правило, перед операндом. Бинарные операции – это операции над двумя операндами. К унарным операциям относятся:

* – взятие значения по адресу оперативной памяти;

& – это операция получения адреса;

- (унарный минус) – изменяет знак арифметического операнда;

+  – унарный плюс (введён для симметрии с унарным минусом);

~ – поразрядное инвертирование внутри двоичного кода целочисленного аргумента – побитовое отрицание;

! – логическое НЕ (отрицание);

К бинарным операциям относятся:

+ – бинарный плюс (сложение арифметических операндов или сложение указателя с целочисленным операндом);

-  – бинарный минус (вычитание);

* – умножение двух операндов;

/ – целочисленное деление, в результате выполнения операции получается целое число;

% – остаток от деления;

<< – сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда;

>> – сдвиг вправо битового представления значения правого целочисленного операнда на количество разрядов, равное значению левого целочисленного операнда;

& – логическое умножение;

| – логическое сложение;

^ – поразрядное исключение или битовых представлений значений целочисленных операндов;

<, <= – меньше, меньше или равно;

>, >= – больше, больше или равно;

= = – логическое равенство;

!= – не равно;

&& – логическое И;

| | – логическое ИЛИ;

?: – условное выражение;

= – операция присваивания.

 

При использовании операций в выражениях нужно учитывать приоритет операций (табл.2).

 

Таблица 2

Приоритеты операций

Ранг Операции Смысл операции
1 ( ) [ ] –> . Выражение в скобках Ограничитель индексов массива Указатель на поле структуры Ограничитель имени поля структуры
2 ! ~ + - ++ -- & * sizeof(<имя_переменной>) (<тип_данных>) Логическое НЕ Побитовое отрицание Унарный плюс Унарный минус Приращение на 1 Уменьшение на 1 Определение адреса Взятие значения по адресу Определение размера переменной в байтах Операция приведения к типу_данных
3 * / % Умножение Целочисленное деление Остаток от деления
4 + - Сложение Вычитание
5 << >> Побитовые сдвиги
6 < <= > >= Меньше Меньше или равно Больше Больше или равно
7 = = != Логическое равно Не равно
8 & | && || ?: = , Логическое умножение Логическое сложение Логическая операция и Логическая операция или Условное выражение Оператор присваивания Операция «запятая»

Запятая в качестве операции

Несколько выражений, разделённых запятой, вычисляются последовательно слева направо. В качестве результата сохраняется тип и значение самого правого выражения. Таким образом, операция «запятая» группирует вычисления слева направо. Тип и значение результата определяются самым правым из разделённых запятыми операндов (выражений). Значения всех левых операндов игнорируются.

Язык С++ предоставляет два полезных оператора:

++ – увеличение значения переменной на единицу;

-- – уменьшение значения переменной на единицу.

Например, х++ равносильно оператору присваивания x=x+1. Аналогично, x=x-1 – то же самое, что х--. Как оператор увеличения, так и оператор уменьшения могут стоять перед операндом (префиксный способ записи) или после операнда (постфиксный способ). Например, x=x+1 может быть записано как ++x или x++.

Тем не менее, существует разница использования префиксного и постфиксного операторов в выражениях. Когда оператор увеличения или уменьшения стоит перед операндом, производится увеличение или уменьшение до начала других вычислений. Если  же такой оператор следует за операндом, программа получает значение операнда перед его увеличением или уменьшением. Например,

x=10;

y=++x;

В этом случае значение переменной y равно 11.

В варианте постфиксной записи, т.е.

x=10;

y=x++;

переменная у будет иметь значение 10. В обоих случаях значение переменной x будет равно 11.

6. В языке С++ есть два способа задания комментариев. Первый способ определяет комментарий как последовательность символов, ограниченных слева парой символов /*, а справа – */. Между этими граничными парами может размещаться текст, поясняющий, что должен выполнять данный оператор или блок операторов. В комментарии разрешено использовать не только символы из алфавита языка С++, но и другие символы:   /* Это комментарий, допустимый в С++ */

Второй способ определяет комментарий как последовательность символов, началом которого служат символы //, а концом – код перехода на новую строку. Таким образом, односторонний комментарий имеет вид

// Это односторонний комментарий, специфичный для языка С++

7. В C++ есть операция присваивания =, а не оператор присваивания, как в некоторых языках. Операция присваивания, без которой не обойтись в любой программе, приведена в следующей строке:

<имя_переменной> = <выражение>;

Здесь выражение – либо константа, либо сложная комбинация переменных, операторов и констант. В С++ для отображения операции присваивания используется одиночный знак равенства. В левой части операции присваивания должна стоять переменная, а не функция или константа. Присваивание может встречаться в неожиданном контексте, например x=sqrt(a=4*x). При начальном значении х = 4 значение переменной а будет равно 16, значение х после операции присваивания – 4                 (sqrt() – функция вычисления квадратного корня). С++ позволяет присваивать переменным одни и те же значения путём использования многочисленных присваиваний в одном операторе. Например, оператор x=y=z=0; присваивает переменным x, y, z значение 0.

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

Оператор    A=b+c; работает следующим образом:

1) вычисляется значение b+c;

2) значение b+c копируется в переменную A, т.е. это значение помещается в область оперативной памяти, которая отведена под переменную A.

В языке С++ существует сокращенная запись операций:

Сокращенная запись Полная запись
x+=y; x=x+y;
x -=y; x=x-y;
x*=y; x=x*y;
x/=y; x=x/y;
 x%=y; x=x%y;
x<<=y; x=<<y;
x>>=y; x=x>>y;
x&=y; x=x&y;
x|=y; x=x|y;
x^=y; x=x^y;

Таким образом, оператор x/=y+10; эквивалентен оператору x=x/(y+10);.

8. Оператор-выражение обычно используется при вычислениях выражений, содержит операцию присваивания или вызов библиотечной или пользовательской функции и заканчивается точкой с запятой. Например:      a=a+65; // оператор содержит операцию присваивания

printf(“Функция”); // оператор содержит вызов функции

В языке С++ допускаются смешанные выражения. Смешанное выражение – это выражение, в котором могут использоваться операции различных типов, например:

a=x>0 && x<10;

Очередность выполнения операций в таких выражениях определяется

приоритетом операций.

9. Составной оператор – это возможно пустой список операторов, заключенный в фигурные скобки:

{

a=b+2;

b++;

}

Составной оператор называют блоком, который позволяет рассматривать несколько операторов как один. Внутри составного оператора можно объявлять переменные, которые будут «жить» только внутри этого блока. Составной оператор, как правило, ограничивает тело пользовательской функции, операторы тела цикла и т.п.

 


Дата добавления: 2019-11-25; просмотров: 169; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!