Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5 Основы программирования 2012

.pdf
Скачиваний:
35
Добавлен:
29.02.2016
Размер:
448.12 Кб
Скачать

1

5 Основы программирования на языке С++

5.1 Основные понятия языков программирования

Согласно ГОСТ ИСО/ МЭК 2382-99. «Информационные технологии. Словарь. Часть 1» имеются следующие определения:

1)искусственный язык - язык, правила которого четко устанавливаются до его использования;

2)язык программирования - искусственный язык для представления программ,

позволяющий программно задавать алгоритм и переводить его непосредственно в команды процессора;

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

4)программировать - создавать, записывать, модифицировать и тестировать программы;

5)программирование - создание, запись, модификация и тестирование

программы.

Языки программирования включают следующие характеристики:

1)алфавит – совокупность допустимых символов языка;

2)лексика (словарь) – способы образования слов из символов;

3)синтаксис – правила описания данных и построения отдельных выражений операций языка;

4)семантика – набор правил реализаций вычислительного алгоритма (последовательности описания данных и действий);

5)прагматика – назначение и область применения языка.

В составе языка программирования входят следующие компоненты:

1)средства описания данных (констант, типов, переменных);

2)средства описания операций (операторы и подпрограммы);

3)средства управления (директивы предпроцессора, метки). Языки программирования подразделяются по уровню на:

1)язык высокого уровня (ADA, Pascal, Modula-2, VB), разработанный для быстроты и удобства использования программистом. Программы проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков;

2)язык среднего уровня находится в промежуточном положении между языком

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

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

Языки программирования при реализации подразделяются на:

1)компилируемые, которые при помощи специальной программы компилятора преобразуются (компилируются) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполнимый модуль – exe или dll-файл.

2)интерпретируемые (интерпретаторы) непосредственно выполняют (интерпретируют) исходный текст программы выполняет исходный текст прямо во время исполнения программы («интерпретируя» его своими средствами). Примером является Visual Basic for Application.

Разделение на компилируемые и интерпретируемые языки является условным. Скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем, при каждом изменении текста программы требуется еѐ перекомпиляция, что создаѐт трудности при разработке. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать

2

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

системах

и

на

различной

аппаратной

части

(обеспечивае6тся

кросс-

платформенность).

 

 

 

 

 

 

 

 

Некоторые языки (Java и C#) находятся между компилируемыми и

интерпретируемыми, когда программа компилируется не

в машинный

язык, а в

машинно-независимый код низкого уровня

(байт-код), далее выполняемый

виртуальной

 

машиной.

Для

выполнения

байт-кода

обычно

используется

интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для

C# — Common Language Runtime.

 

 

 

 

 

 

 

Программирование

выполняется

с

помощью

специальных

программных

интегрированных оболочек пользователя (IDE), которые выполняют операции:

 

1) кодирование

алгоритма

на

 

языке

программирования

с

помощью

специализированного текстового редактора, в результате создаются

файлы

исходного кода программ (для языка С расширение c, а для С++ - cpp);

 

 

2)компиляция исходного текста программы в машинный (объектный) код, который хранится в файлах с расширением obj;

3)компоновка объектных файлов с системными библиотеками и создание загрузочных модулей или динамически подключаемых библиотек;

4)отладчик программы, позволяющий производить пошаговое выполнение программы, устанавливать контрольные точки, просматривать значения всех переменных программы;

5)оптимизатор выполняемого кода программы, который оптимизирует загрузочный файл программы в соответствии с заданным критерием (максимальное быстродействие, минимальный объем и т.д.).

5.2 Алфавит языков программирования C и C++

В языке программирования C++ для написания идентификаторов используются следующие группы ACSII символов:

1)символы латинского алфавита верхнего и нижнего регистров, из которых строятся наименования операторов и идентификаторов (верхний и нижний регистр различается в отличие от языков Pascal и Delphi);

2)цифры от 0 до 9, обозначающие численные константы;

3)специальные символы знаков операций: <,>,=,+,*,\,/,#,@ и др.;

4)разделители, которые отделяют элементы языка друг от друга (символы пробела, запятой и точки с запятой);

5)символы местного (русского) языка, которые можно использовать только внутри строковых констант или комментариев.

Имена, использующиеся для переменных, функций,

меток и других

определяемых

пользователем

объектов,

называются

идентификаторами.

Идентификаторы языков C и С++ строятся по правилам:

 

1)идентификатор может состоять из одного или более символов латинского алфавита, включая символ подчеркивания (_) и цифры от 0 до 9, имя всегда должно начинаться с символа;

2)максимальная длина – 126 символов, но в некоторых версиях С только первые 31 символ являются значимыми (в С++ все символы значимые);

3)идентификатор не может совпадать с зарезервированными словами С или C++ и не должен иметь такое же имя, как функция из библиотеки модулей;

4)идентификаторы учитывают регистр (xn, Xn и XN - различные идентификаторы). В языке C++ имеется опция подавления учета регистра,

обеспечивающая совместимость при компоновке с модулями на

языках, не

учитывающих регистр.

 

 

 

 

 

Пробел, табуляция, перевод строки,

возврат каретки (Enter), новая

страница, табуляция и новая

строка

это

символы, называемые

пробельными

(разделителями), поскольку они

имеют

то

же

самое назначение, как и пробелы

между словами и строками на печатной странице. Эти символы разделяют элементы программы друг от друга.

3

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

Запятая (,) отделяет между элементы некоторого списка (например, списка переменных: int i, j, k;):

Точка с запятой (;) служит терминатором оператора и отделяет между собой выражения языка.

Двоеточие (:) служит для обозначения оператора с меткой.

5.3 Словарь языков программирования C и С++

Программа на языке C++ записывается как последовательность символов, представляющих собой исходный код, создаваемый в текстовом редакторе. Базовой программной единицей в C++ является файл, имеющий расширение *.c или *.cpp. Словарь языков С и С++ состоит из лексем. Лексемы C++ образуются из последовательности операций, выполняемых с программой компилятором и препроцессором языка. C++ распознает лексемы семи классов:

1)ключевые (зарезервированные) слова языка используются для обозначения некоторых операторов и действий в программе;

2)идентификаторы имена переменных, констант, типов и функций, вводимые программистом;

3)константы значения, неизменные в процессе выполнения программы;

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

5)операции обозначение операций преобразования данных в программе (операторы, функции),

6)

директивы препроцессора начинаются с символа # и предназначены

для задания

режима обработки программы;

7)

комментарии текстовые пояснения фрагментов программы, которые

игнорируются при ее выполнении.

5.3.1 Комментарии

Комментарии текстовые фрагменты, предназначенные для пояснения определенной части программы. Комментарии перед лексическим анализом исключаются компилятором из исходного текста программы.

Существует два способа указания на комментарии:

1)традиционный метод языка C – представляет собой любую последовательность символов, помещаемую внутри двух пар символов /* */:

/* Программа решения задачи */

2)метод языка C++ – создает комментарий в одной строке при помощи двух подряд следующих символов наклонной черты (//), который может начинаться в любой позиции строки и включает в себя все до символа новой строки:

float Xn; // начальное значение X

Разрешается смешанное и комбинированное использование комментариев любого типа в программах языков C и C++. Комментарии стиля С (/**/) являются более мощным средством, чем комментарии С++ (//), и могут закомментировать фрагменты кода при отладке программы с внутренними строчными комментариями.

Пример отключения части кода с помощью комментариев.

/*

// начало закомментированного фрагмента

cout << ―\nA=‖;

// вывод приглашения

для ввода A

cin >> A;

//

ввод значения A с

клавиатуры

*/

//

окончание фрагмента

5.3.2 Операции языка С++.

Операции лексемы, определяющие вычисления с переменными и прочими объектами, указанными в выражении. Язык C++ имеет широкий состав операций, включающий арифметические и логических операции, средства манипуляции с данными на битовом уровне, доступ к компонентам структур и объединений, а также операции с указателями.

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

Операции

в

языке

C++

определяются

с

помощью

специальных

символов

(указанных в таблице ниже), обозначающих операцию и операндов,

которые

описывают данные, участвующие в операции (константы, переменные и функции).

 

 

Таблица 5.1 – Обозначения операций языка С++

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[]

()

.

->

 

++

--

 

&

*

+

 

@

!

 

sizeof

 

/

%

<<

>>

<

>

 

<=

>=

 

==

!=

^

 

\!

&&

 

\!\!

 

?:

=

*=

/=

%=

+=

 

-=

<<=

 

>>=

&=

^=

 

\!=

,

 

#

 

##

 

Различают два типа операций:

1)унарные – состоят из символа операций и одного знака, например –X;

2)бинарные – включают два операнда, например A+B.

Операции # и ## используются только препроцессором.

5.3.3 Ключевые (зарезервированные) слова

 

 

 

Ключевыми

словами

называются

слова,

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

в

языке

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

Таблица 5.2 – Ключевые слова языка С++

asm

_cs

extern

interrupt

register

struct

 

 

 

 

 

 

auto

default

far

_loadds

_regparam

switch

break

delete

float

long

return

template

case

do

for

near

saverages

this

catch

double

friend

new

_seg

typedef

cdecl

_ds

goto

operator

short

union

char

else

huge

pascal

signed

unsigned

class

enum

if

private

sizeof

virtual

const

_es

inline

protected

_ss

_void

continue

_export

int

public

static

volatile

 

 

 

 

 

 

 

 

 

 

 

while

5.4

Описания типов данных в языках C и C++

Тип

данных определяет для переменной диапазон возможных значений и

область допустимых операций над

этой переменной. В языках программирования

различают два основных вида типов

данных:

1)простые (скалярные) типы, не имеющие внутренней структуры, описывающие одно значение данных;

2)составные (структурированные) типы, имеющие некоторую внутреннюю

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

1)символьный char – определяет символы текста;

2)целочисленный int – определяет целые численные значения;

3)вещественный с одинарной точностью float – определяет численные

значения с

дробной частью обычной

точности представления;

4)

вещественный с двойной точностью double – определяет численные

значения с

дробной частью высокой

точности представления;

5)

тип void, который может иметь три назначения:

-указание о невозвращении значения функцией;

-указание о неполучении параметров функции;

-создание нетипизированных указателей.

Четыре первых базовых (фундаментальных) типа данных могут иметь

модификаторы, которые уточняют параметры типа данных:

 

1)

signed

тип,

учитывающий

знак

(возможность

использования

отрицательных значений);

 

 

 

 

2)

unsigned – тип данных, который

имеет

только положительные значения,

не учитывающие знак;

 

 

 

 

 

3)

long – длинный размер типа в байтах, используется для увеличения

диапазона возможных значений;

 

 

 

 

5

4) short – тип короткого размера в байтах, имеющий небольшой диапазон возможных значений.

В языке С нет явного логического типа данных. Вместо него используется целочисленный тип int, нулевое значение которого соответствует ложному утверждению, а ненулевое – истинному. В языке С++ имеется логический тип данных bool, истинное значение соответствует константе true, а ложное – false.

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

Таблица 5.3 – Описание скалярных типов данных языка ANSI C

Тип

Длина в битах

 

Диапазон

char

8

от -128 до 127

unsigned char

8

от 0 до

255

signed char

8

от -128

до 127

 

 

 

int

16

от -32768 до 32767

unsigned int

16

от 0 до

65535

signed int

16

от -32768 до 32767

 

 

 

short int

16

от -32768 до 32767

unsigned short int

16

от 0 до 65535

signed short int

16

от -32768 до 32767

long int

32

от -2147483648 до 2147483647

unsigned long int

32

от 0 до

4294967295

signed long int

32

от -2147483648 до 2147483647

float

32

от 3.4е~38 до 3.4е+38

double

64

от1.7е-308до'1.7е+308

long double

80

от 3.4е-4932 до 1.1е+4932

 

 

 

 

5.5 Константы в языках C и C++

Константами называются лексемы, представляющие собой фиксированные числовые или символьные значения. Значения констант в процессе выполнения программы не изменяются. Существуют два вида констант:

а) именованные константы, значения которых обозначены некоторым именем, что дает возможность автоматически менять в одном месте программы несколько одинаковых значений. Некоторые источники рекомендуют все численные значения внутри программ оформлять в виде именованных констант, что на практике не всегда оправдано. Они объявляются в верхней части программы или функции. В языке С эти константы объявляются с помощью директивы #define (как макросы) в формате:

#define имя_конствнты значение_константы

Пример объявление константы максимального размера, равного 1000:

#define MaxSize 1000

В языке С++ именованные константы объявляются как переменные с модификатором const в разделе описания в следующем формате:

const тип_константы имя_константы = значение_константы;

Пример: const int MaxSize=1000;

б) непосредственно заданные константы, отображающие некоторое значение и используемые внутри выражений и операторов программы, например: 1.5.

C++ поддерживает следующие типы констант:

1)вещественные или действительные константы, обозначают числа с дробной

частью;

2)целочисленные – обозначают целые числа;

3)перечислимого типа – обозначают фиксированный набор дискретных

значений;

4)символьные – описывают значения символов;

5)строковые – обозначают текстовую строку;

6)литералы – управляющие последовательности внутри строковых констант.

5.5.1 Вещественные (действительные) константы

Используются для задания вещественных (действительных) числовых значений (т.е. имеющих дробную часть). Константы имеют два основных вида:

6

1)десятичной дроби классического формата (с фиксированной точкой):

цифры_целой_части.цифры_десятичной_дроби

Пример const A=5.678;

2):экспоненциальный формат (научная нотация или с плавающей точкой) обозначающей значение мантисса∙10степень, состоящей из шести частей:

десятичное целое значение;

десятичная точка (.) – разделитель дробной части;

десятичное дробное значение;

символ e или E – разделитель мантиссы и показателя степени;

целочисленная экспонента со знаком (опционально для положительного значения), обозначающая степень;

суффикс типа: f или F либо l или L (опционально).

Пример обозначения вещественных констант в научной нотации:

1.031e-03 – значение 0,001031 или 1,031∙10-3;

2.156E+04 – значение 21560 или 2,156∙104;

4.E10F – значение 40 000 000 000 или 4∙1010 вещественного формата.

5.5.2 Целочисленные константы

Используются для определения целых чисел. В зависимости от способа представления различают следующие виды целочисленных констант:

1)десятичные константы (представленные в десятичном формате чисел) с использованием цифр от 0 до 9; формат записи константы:

<десятичное число><суффикс>

2)шестнадцатеричные константы (используют шестнадцатеричный или HEX код), записываются с помощью цифр от 0 до 9 и шесть букв: A, B, C, D, E, F (или a, b, c, d, e, f); формат записи константы должен начинаться с двух символов - нуля и х (0x или 0X):

0X<HEX число><суффикс>

Пример OXFF // 256 в десятичном коде

3)восьмеричные константы (используют восьмеричный код), их значения задаются с первого символа 0 (цифра ноль), остальные - цифры от 0 до 8 в формате;

0<восьмиричное число><суффикс>

Пример 010 // Десятичное число 9 Суффикс целочисленных констант:

-для беззнаковых констант: u или U;

-длинной константы: l или L

Таблица 5.4 Диапазоны значений целочисленных констант без знака

Тип константы

Минимальное значение

 

Максимальное

 

Десятичная

 

0

 

4 294 967 295

 

Восьмеричная

 

0

 

037777777777

 

Шестнадцатеричная

 

0

 

0xFFFFFFFF

 

Примеры описания целочисленных констант

 

 

const int i = 10;

// десятичное число 10

const int j = 010;

// восьмеричное ЧИСЛО равное десятичному 8

const int k = 0xA;

// шестнадцатеричное число равное десятичному 10

Если за константой следует суффикс L (или l), то такая константа будет представлена как длинная (типа long). Суффикс U (или u) делает константу константой без знака (unsigned). Если численное значение константы превышает десятичное 65535, независимо от используемого основания системы счисления, то такая константа будет иметь тип unsigned long. Суффиксы можно указывать для одной и той же константы в произвольном порядке и набирать в любом регистре: ul, lu, UL и т.д.

5.5.3 Символьные константы

Символьная константа – один или более символов, заключенных в одинарные кавычки (например: 'F', '=', '\n'). Они представляют последовательность символов. В качестве символа может использоваться любой символ за исключением

7

символов одинарной кавычки ('), обратной наклонной черты (\) или управляющейпоследовательности символа новой строки. В C константы из одного символа имеют тип int и внутренний размер 16 бит, когда старший байт слова заполняется нулем или знаком. В C++ константа из одного символа имеет тип char.

C++ поддерживает также двухсимвольные константы (например, 'An', '\n\t' и '\007\007'). Эти константы представлены 16-битовыми значениями типа int, где первый символ расположен в младшем байте, а второй символ - в старшем байте. Эти константы не могут быть перенесены на другие компиляторы C.

5.5.4 Строковые константы (литералы)

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

количества символов, заключенных в двойные кавычки:

 

 

"Это строковая константа!"

 

 

 

Нулевая (пустая) строка записывается в виде "".

 

 

Внутри

символьных

констант

могут

включаться

управляющие

последовательности. Строковая константа хранится в памяти как заданная последовательность символов, заканчивающаяся пустым символом ('\0'). Нулевая строка хранится в виде одного символа '\0'.

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

cout << "В действительности \

это однострочная строка символов");

5.5.5 Управляющие последовательности

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

Таблица 5.5 - Управляющие последовательности C++

Последовательность

Выполняемая функция

 

 

\a

Звуковой сигнал

\b

Забой

\f

Перевод бланка

\n

Перевод строки

 

 

\r

Возврат каретки

\t

Табуляция (горизонтальная)

\v

Вертикальная табуляция

\\

\Обратная наклонная черта

\'

Одинарная кавычка (апостроф)

 

 

\"

Двойная кавычка

\?

Вопросительный знак

\O

строка до трех восьмеричных цифр

\xH

строка шестнадцатеричных цифр

 

 

\XH

строка шестнадцатеричных цифр

 

 

5.6 Переменные

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

8

тип_данных_переменной имя_переменной;

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

int I; // объявление целочисленной переменной I float X; // объявление вещественной переменной X

Имя переменной должно начинаться с символа латинского алфавита или символа подчеркивания (_) и может включать далее и цифры. В языках программирования С и С++ различаются прописные и строчные символы: x и X – это

две разные

переменные.

Если

объявляется несколько переменных одного типа, то возможна

сокращенная форма записи, использующая формат:

тип_данных имя_первой_переменной, имя_второй_переменной, …; int i, j, k; // объявление трех целочисленных переменных

В языках С и С++ при объявлении переменных можно присвоить начальные значения (провести инициализацию переменных), так как считается, что по умолчанию переменная имеет нулевое значение. Формат инициализации имеет вид:

тип_данных имя_переменной=начальное значение;

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

double z=1.5e-5; // инициализация переменной значением 1.5∙10-5 int i=10, j=-100; // инициализация двух целых переменных

Переменные классифицируются по зоне видимости на локальные и глобальные. Локальные переменные доступны только в конкретной подпрограмме или фрагменте программы, глобальные — во всей программе. Это дает возможность использовать одинаковые имена переменных, выполняющие схожие функции. Однако следует избегать чрезмерного употребления одинаковых имен для глобальной и локальной переменной, так как при этом теряется доступ к данным глобальной переменной. Следует также избегать чрезмерного применения глобальных переменных.

При объявлении переменных могут использоваться спецификаторы хранения, которые указываются перед типом переменной:

1)extern – объявление внешней переменной при модульном программировании, которое означает, что в программе уже выделена память под эту переменную в ином модуле, например: extern int Nsize;

2)static – обозначение статической долговременной переменной,

существующей на протяжении всего файла или функции;

3) register – указание регистровой переменной, к которой обеспечивается быстрый доступ.

По способу выделения адреса оперативной памяти различаю статические и динамические переменные. Если адрес именованной ячейки памяти определяется на этапе компиляции, то переменная является статической, создающейся при запуске программы. Динамические переменные создаются и удаляются в процессе выполнения программы по мере необходимости.

5.7 Операции в выражениях

Выражением называется последовательность операций, операндов и пунктуаторов (разделителей), задающих определенное вычисление. Например:

a = b*3+c;

cout << "press Enter"; sin(2*x+1);

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

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

9

убывания которого представлен в таблице 4.4. Операции с одинаковым приоритетом указаны на одной строке. Операции, отмеченные (R→L), имеют правую ассоциативность (то есть при сочетании равноприоритетных операций без скобок они вычисляются справа налево).

Таблица 5.6 – Приоритет операций

Наименование операций

Обозначение

Постфиксные операции

[] () . -> ++ --

Унарные операции (R→L)

++ -- & * + - ~ ! sizeof(type)

Мультипликативные

* / %

 

 

Аддитивные

+ -

Сдвиговые

<< >>

Операции сравнения

< > <= >=

Операции проверки равенства

== !=

Побитовые

& ^ |

 

 

Логические

&& ||

Условная операция (R→L)

?:

Операции присваивания (R→L)

= *= /= %= += -= <<= >>= &= ^= |=

Последовательное вычисление

,

 

 

Для задания требуемой последовательности выполнения операций внутри выражения используются круглые скобки. Например:

X=-(A+B)*C; // сначала A+B , затем изменяется знак и умножается на С Таблица 5.7 - Арифметические операции в языке С

Символ

Выполняемая операция

 

 

+

Плюс, унарный и бинарный

-

Минус, унарный и бинарный

*

Умножение

/

Деление

 

 

%

Получение остатка целочисленного деления

Целое деление дает целый результат: 7/2 есть 3. Над целыми может выполняться операция % получения остатка: 7%2 равно 1.

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

Таблица 5.8 – Логические операторы и сравнения

Назначение

Операция

Обозначение

 

Меньше

<

Операторы сравнения

Больше

>

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

<=

 

 

 

 

 

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

>=

Операторы равенства

Равно

==

не равно

!=

 

 

Отрицание

!

 

 

 

Логические операторы

логическое и

&&

 

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

||

Важно не путать операторы равенства (==) и присваивания (=), например a==b - это проверка на равенство, а при a=b переменная a станет равна b.

5.7.1 Операция присваивания

Оператор присваивания в С и С++ обозначается символом = и имеет формат

переменная = расчетное выражение;

При этом сначала рассчитывается выражение, стоящее справа от знака равенства (=), которое в последствии присваивается переменной, стоящей в левой части.

В C++ в отличие от многих языков программирования имеется операция присваивания вместо оператора присваивания. Это позволяет выполнять присваивание внутри других выражений, например: x=sqrt(a=3*x).

Допустимо множественное присваивание в формате

10

Переменная_1 = переменная_2 = ... = переменная_N = выражение;

Пример: a=b=c=10;

Это означает присвоение значения 10 сначала c потом b, а затем a.

Другим свойством операции присваивания является то, что она может совмещаться с бинарными операциями (таблица 5.9). Формат совмещенного оператора

присваивания следующий:

 

переменная знак= переменная

Примеры:

 

 

x*=4 означает

x=x*4.

Z+=10

-

Z=Z+10

Таблица 5.9 – Операторы присваивания языка С++

 

 

 

Обозначение

 

Описание

=

Присваивание

*=

Присвоить произведение

/=

Присвоить частное

 

 

%=

Присвоить остаток

+=

Присвоить сумму

-=

Присвоить разность

<<=

Присвоить сдвиг влево

>>=

Присвоить сдвиг вправо

 

 

&=

Присвоить поразрядное И

^=

Присвоить поразрядное исключающее ИЛИ

\!=

Присвоить поразрядное ИЛИ

5.7.2 Оператор выражения

 

Самый обычный вид оператора - оператор

выражение. Он состоит из

выражения, за которым следует точка с запятой. Например:

a = b*3+c;

cout << "press Enter";

sin(2*x+1);

5.7.3 Пустой оператор

 

Простейшей

формой оператора является пустой

оператор: ; , который ничего

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

5.7.4 Составной оператор

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

{a=b+2;

b++;

}

5.8 Операторы ввода-вывода

5.8.1 Консольный ввод-вывод в языке С

Консольный ввод-вывод организует чтение программой данных с клавиатуры в командной строке, а вывод из программы - на текстовый экран. Такой обмен данными реализуется в операционных системах MS-DOS, LINUX и консоли Windows XP.

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

Таблица 5.10 – Потоки ввода-вывода в языке С

Поток

Устройство

Назначение

Примечание

stdin

Клавиатура

Поток ввода данных c клавиатуры

 

 

 

 

 

stdout

Экран

Поток вывода данных на экран

 

stderr

Экран

Поток вывода ошибок на экран

 

stdaux

Порт COM1

Вывод данных в последовательный порт

Только Borland C

stdprn

Порт LTP1

Вывод данных в параллельный порт

Только Borland C

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]