Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабор., 1 семестр, гр. ПО, 2010.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.66 Mб
Скачать

В каждой очерченной части находятся операторы с одинаковым приоритетом

Таблица 2

Приоритет

Оператор

Назначение оператора

Синтаксис оператора

1

::

разрешение области видимости

имя_класса :: член

::

глобальное

:: имя

2

->

выбор члена

указатель -> член

[ ]

индексация

указатель [ ] выр

( )

вызов функции

выр ( список_выр )

sizeof

определение размера типа

sizeof ( тип )

sizeof

определение размера объекта

sizeof выр

3

++

приращение после

lvalue ++

++

приращение до

++ lvalue

- -

уменьшение после

lvalue - -

- -

уменьшение до

- - lvalue

~

дополнение

~ выр

!

не

! выр

-

ударный минус

- выр

+

ударный плюс

+ выр

&

адрес объекта

& lvalue

*

разыменование

* выр

new

создание (размещение)

new mun

delete

уничтожение (освобождение)

delete указатель

delete [ ]

уничтожение вектора

delete [выр ] указатель

( )

преобразование типа

( тип ) выр

4

*

умножение

выр * выр

/

деление

выр / выр

%

взятие по модулю (остаток)

выр % выр

5

+

сложение (плюс)

выр + выр

-

вычитание (минус)

выр - выр

6

<<

сдвиг влево

lvalue << выр

>>

сдвиг вправо

lvalue >> выр

7

<

меньше

выр < выр

<=

меньше или равно

выр <= выр

>

больше

выр > выр

>=

больше или равно

выр >= выр

Приоритет

Оператор

Назначение оператора

Синтаксис оператора

8

= =

равно

выр == выр

!=

не равно

выр != выр

9

&

побитовое И

выр & выр

10

^

побитовое исключающее ИЛИ

выр ^ выр

11

|

побитовое включающее ИЛИ

выр | выр

12

&&

логическое И

выр && выр

13

||

логическое ИЛИ

выр || выр

14

?:

арифметический if

выр ? выр : выр

15

=

простое присваивание

lvalue = выр

* =

умножить и присвоить

lvalue * = выр

/ =

разделить и присвоить

lvalue / = выр

% =

взять по модулю и присвоить

lvalue % = выр

+ =

сложить и присвоить

lvalue + = выр

- =

вычесть и присвоить

lvalue - = выр

16

,

запятая (последование)

выр , выр

J = I ++; равнозначно J = I; I = I + 1;

J = ++ I; равнозначно I = I + 1; J = I;

Термин lvalue (left value) – леводопустимое выражение (происходит от объяснения операции присваивания LV=A , в которой левый операнд LV может быть только адресным объектом, т.е. изменяемым выражением).

Выражение (выр expression) – это последовательность имен объектов, соединенных операторами. Эта последовательность задает выполнение некоторых действий над объектами в виде математической формулы и/или отношения.

Например, если определены следующие объекты:

int nA1, nA2 ;

float fltB ;

то выражения могут выглядеть так:

nA1 + fltB – 2. / nA2

или так

fB = 2.8

или так

nA1 = (nA2 + fltB) / nA2 - fltB * nA1

Инструкция- выражение – это выражение, после которого стоит точка с запятой.

Например:

nB = 2.8 ;

nA1 = (nA2 + fB) / nA2 - fB * nA1 ;

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

Синтаксической программной единицей является объект, тип которого относится к группе производных типов и называется function - «функция». Объект типа функция (часто мы будем говорить просто функция) – это специальный вид подпрограмм.

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

Вот как синтаксически выглядит определение функции:

тип_возвращаемого_значения имя_объекта_функции ( список_формальных_параметров )

{

/* Это тело функции. Здесь пишутся инструкции, которые определяют объекты,

создаваемые внутри функции.

Здесь пишутся инструкции, задающие действия над этими объектами, которые

задают алгоритм работы функции

*/

}

Итак, определение функции состоит из заголовка функции:

тип_возвращаемого_значения имя_объекта_функции ( список_формальных_параметров )

и тела функции, заключенного в фигурные скобки:

{

/* Это тело функции. Здесь пишутся инструкции, которые определяют объекты,

создаваемые внутри функции.

Здесь пишутся инструкции, задающие действия над этими объектами, которые

задают алгоритм работы функции

*/

}

Определить объект типа функция, как и любой другой объект, можно только один раз. И как любой другой объект функцию порой приходится описывать. Зачем? Для того, чтобы уметь правильно с ней работать.

Как выглядит инструкция описания функции? Синтаксически – это точная копия заголовка функции, после которого стоит точка с запятой (ведь это инструкция!):

тип_возвращаемого_значения имя_объекта_функции ( список_формальных_параметров ) ;

Для инструкции описания функции есть специальное название – прототип (prototype).

В примере тела функции показано, как записать в программе на языке С++ много строковый комментарий, который дает нужные пояснения:

/* это много

строковый

комментарий */

Комментарий, который занимает одну строку, можно создать так:

// это комментарий в одну строку

В комментарии можно использовать любые символы.

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

// тип_возвращаемого_значения имя_объекта_функции ( список_формальных_параметров )

void main ( void )

{

// инструкции тела функции main

}

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

Далее следует пример программы, состоящей из одной функции. А раз функция одна, то такой функцией должна быть только функция main.

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

/* файл MyFirst.cpp содержит программу, 1

состоящую из одной функции main 2

единственное действие этой программы - 3

ввести два числа, 4

вывести на экран их сумму и 5

приветствие "BYE !" 6

7 */

//================================================= 8

#include <iostream> // 9

#include <conio.h> // 10

using namespace std; // 11

// 12

void main (void) // 13

{ // 14

int nA; // 15

float fltB; // 16

cout <<"Input numbers:\t" // 17

<<"\nfirst int\t"; // 18

cin>>nA; // 19

cout<<"second float\t"; // 20

cin>>fltB; // 21

float fltSumma; // 22

fltSumma = nA + fltB; // 23

cout<<"summa = " << fltSumma; // 24

cout<<"\n\tBYE !"; // ПОКА 25

getch(); // 26

} // 27

Рассмотрим приведенный текст. Программа содержит функцию main. Она состоит из заголовка ( строка 13 ) и тела ( строки 14 – 27 ).

Тело функции состоит из инструкций. Каждая инструкция заканчивается точкой с запятой. Инструкций в теле функции всего 11, из них 3 – это инструкции определения объектов nA, fltB, fltSumma. Эти инструкции создают объекты. Напоминаем, что любой объект, имя которого встречается в программе, должен быть определен и определен всего один раз. Инструкции определения объектов легко распознать, т.к. они всегда начинаются с имен типов - здесь int и float (строки 15, 16, 22).

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

Вот они: "Input numbers:\t",

"\nfirst int\t",

"second float\t",

"summa = ",

"\n\tBYE !".

Обратите внимание, что почти в каждой из этих строк присутствуют escape-символы (здесь, для того чтобы их разглядеть, они выделены жирным курсивом).

Кроме объектов a, b, summa и константных строк в тексте появились имена cout и cin. Это имена объектов, но где их определения?

Объекты cout и cin – стандартные абстрактные объекты, тип их называется «поток», с их помощью организуется ввод и вывод. Описание этих объектов присоединяется в строке 9. В этой строке записана директива специальной программы – препроцессор. Директива #include вставляет перед текстом функции текст файла iostream. Обратите внимание, что эта директива не является элементом языка С++, это элемент другого языка, языка программы, которая называется препроцессор. Директива, не являясь инструкцией языка С++, не имеет заканчивающей её точки с запятой. В тексте включенного файла iostream находятся описания объектов cout и cin, эти описания и присоединяются к тексту программы. А определения этих объектов cout и cin находятся в стандартной библиотеке. Написание имени файла в треугольных скобках < > указывает системе, где, в каких папках искать файл и соответствующую ему библиотеку. Это делается автоматически.

Обратите внимание на инструкцию в строке 19:

using namespace std;

Эта инструкция определяет область имен, где необходимо искать определения используемых в программе имен объектов. Дело в том, что сейчас существует очень много различных библиотек, в которых могут появиться одинаковые имена. Инструкция using namespace определяет, что поиск нужно осуществлять в области имен стандартной библиотеки std.

Последнее имя, которое используется в этой программе – имя getch. Это имя объекта типа функция. По какому внешнему признаку система и мы узнаем, что это имя функции, а не какого-то объекта любого другого типа? Этим признаком является то, что сразу после этого имени появляется оператор вызова функции – круглые скобки ().

Это стандартная функция, ее описание находится в файле conio.h , который подключается директивой препроцессора #include в строке 10. Само определение этого объекта функции ( последовательность команд, определяющих алгоритм выполнения функции) будет найдено автоматически в стандартной библиотеке.

В функции main 7 инструкций-выражений.

Что делают инструкции-выражения?

То, что делают операторы, которые в них используются!!!

Обратите внимание, как внешне по разному эти инструкции выглядят. Их разнообразие бесконечно.

Инструкции-выражения

cout << "Input numbers:\t" << "\nfirst int\t";

cout << "second float\t";

cout << "summa = " << fltSumma;

cout << "\n\tBYE !";

используя оператор << совместно с потоковым объектом cout выводят на экран строковые константы и значение объекта summa.

Инструкции-выражения

cin>>nA;

cin>>fltB;

используя оператор >> совместно с потоковым объектом cin копируют (вводят) в область объектов а и b значения, которые вводятся с клавиатуры.

Инструкция-выражение

fSumma = nA + fB;

с помощью оператора + вычисляет сумму значений объектов a и b и результат этого суммирования с помощью оператора = (присвоить) копирует в объект summa.

Инструкция-выражение

getch();

с помощью оператора () (оператор вызова функции) вызывает функцию getch, и ничего более.

Вопрос: а вот что делает вызванная стандартная функция?

Каждая функция делает то, что определяет ее алгоритм. Эта функция ожидает, пока не будет введен какой либо символ с клавиатуры в ее буферную область памяти. В этой программе функция getch вызывается в инструкции-выражении для организации задержки (пока пользователь не введет какой-либо символ, не выполняется никаких действий со стороны программы).

ЗАДАНИЕ НА ИЗУЧЕНИЕ НАЧАЛ РАБОТЫ В СРЕДЕ MICROSOFT VISUAL STUDIO.NET

Найдите на указанном преподавателем диске папку с именем вашей группы (если ее нет, то создайте ее) и сделайте в ней свою папку с вашей фамилией. В этой папке вы будете работать в течение всего первого семестра.