История создания С++ начинается с языка С. С++ можно назвать расширенной и улучшенной версией языка С.

Язык С++ был создан Бьерном Страуструпом в 1979 году в компании Bell Laboratories. Сначала новый язык получил имя «С с классами», но в 1983 году он стал называться С++.

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

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

Язык С++ используется практически во всех областях науки, техники и производства. Он позволяет удобно, эффективно и быстро разрабатывать программы, тестировать и изменять их. Язык С++ используется для решения множества технических, научных и инженерных задач. Его можно использовать для создания программ широкого пользования.

Язык С++ в настоящее время является одним из наиболее распространенных языков программирования в мире.

Состав языка С++

Алфавит любого языка программирования — это набор допустимых символов этого языка. Алфавит языка С++ включает:

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

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p r s t u v w x y z

  • буквы русского алфавита (для комментариев и вывода сообщений на экран)
  • знак подчеркивания
  • арабские цифры: 1 2 3 4 5 6 7 8 9 0
  • специальные символы (Таблица 1)
  • пробельные символы: пробел, символы табуляции, символы перехода на новую строку

Таблица 1

Специальные символы языка С++

Символ

Пояснение

кавычки

()

круглые скобки

,

запятая

|

знак «ИЛИ»

{}

фигурные скобки

[]

квадратные скобки

.

точка

+

плюс

-

минус

\

обратный слэш

/

дробная черта (слэш)

больше

меньше

=

равно

!

восклицательный знак

?

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

^

циркумфлекс

&

амперсанд

:

двоеточие

;

точка с запятой

апостроф

#

номер

*

звездочка

Лексемы языка С++. Лексема — это логически выделенная единица языка, воспринимаемая как единое целое компилятором и программистом.

Лексемы бывают следующих видов:

  • идентификаторы
  • ключевые слова (Таблица 2)
  • знаки операции
  • константы
  • разделители

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

A25

правильно

8F, 4_q

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

sum_ср

правильно

f(x)

неправильно, так как идентификатор не может содержат скобки

_4f

правильно

пример

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

Прописные и строчные латинские буквы воспринимаются компилятором как разные.

Min, MIN, min — это три разных идентификатора.

Длина идентификатора ничем не ограничена.

Идентификатор не может совпадать ни с одним из ключевых слов.

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

Таблица 2

Список ключевых слов С++

asm

double

operator

auto

else

private

bool

extern

protected

break

false

public

case

float

return

catch

for

signed

char

goto

sizeof

class

if

switch

comst

inline

true

continue

int

try

default

long

unsigned

delete

namespace

using

do

new

while

 

Константами называют неизменяемые величины. Константы бывают:

  • целые (7, 0, 0X00FF);
  • вещественные (5.7, 5Е10);
  • символьные (‘A’, ‘7’, ‘\n’);
  • строковые (‘programming’, ‘значение’).

Если требуется сформировать отрицательную целую или вещественную константу, то перед константой ставится знак —.

Последовательности символов, начинающиеся с обратной косой черты, называются управляющими, или escape-последовательностями (Таблица 3). Управляющая последовательность интерпретируется как одиночный символ.

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

Таблица 3

Управляющие последовательности в языке С++

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

Описание

\a

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

\b

Возврат на 1 символ назад

\f

Перевод страницы

\n

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

\r

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

\t

Горизонтальная табуляция

\v

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

\\

Обратная косая черта

\’

Апостроф

\”

Кавычка

\?

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

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

По числу операндов операции бывают унарные (с одним операндом) и бинарными (с двумя операндами).

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

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

  • арифметические операции;
  • операции инкремента и декремента;
  • операции присваивания;
  • операции отношения;
  • логические операции.

Таблица 4

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

Операция

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

арифметические операции

+

сложение

-

вычитание

*

умножение

/

деление

%

остаток от деления

операции инкремента и декремента

++

увеличение на 1(декремент)

--

уменьшение на 1 (инкремент)

операции отношения

меньше

<=

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

больше

>=

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

==

равно

!=

не равно

логические операции

&&

логическое И (истинно тогда и только тогда, когда оба операнда истинны)

||

логическое ИЛИ 9ложно тогда и только тогда, когда оба операнда ложны)

!

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

Приоритет операций — это порядок выполнения операций и выражений. Выполнение каждой операции происходит с учетом ее приоритета.

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

  1. *, /, %
  2. +, -
  3. !
  4. &&
  5. ||
  6. =, <>, <, >, >=, <=

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

Разделители используются для отделения друг от друга лексем языка. В языке С++ используются следующие разделители: []  ()  {}  ,  :  ;  … и т.д.

Комментарии начинаются либо с двух символов «прямая косая черта» (//) и заканчиваются символом перехода на новую строку, либо заключаются между символами — скобками /* */. Внутри комментария можно использовать любые символы.

Типы данных в С++

Данные различных типов хранятся и обрабатываются по-разному. Тип данных определяет:

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

В С++ определено 5 простых типов данных:

  • int (целый);
  • char (символьный);
  • bool (логический);
  • float (вещественный);
  • void (пустой).

Перед типами char, int, double разрешается использовать модификаторы, уточняющие внутреннее представление и диапазон:

  • short (короткий)
  • long (длинный)
  • signed (знаковый)
  • unsigned (беззнаковый)

Целые типы данных

Целые типы данных используются для представления целых чисел. (Таблица 5).

Под величину символьного типа отводится 1 байт. Тип char может быть со знаком и без знака. В величинах со знаком можно хранить значение в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут храниться в пределах от 0 до 255. Этого достаточно для хранения любого символа из 256 — символьного набора ASCII.

Значения символьного типа можно вводить с клавиатуры, выводить на экран и сравнивать между собой, при этом большим считается символ с большим ASCII — кодом.

Наиболее часто используемый целый тип int задает целые данные. Для 16-разрядного процессора под величины этого типа отводится 2 байта, а для 32-разрядного — 4 байта.

Таблица 5

Целые типы данных

Тип

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

Размер в байтах

unsigned char

символьный

1

char

символьный

1

short int

короткий целый

2

int

целый

         2 (для 16-разрядного процессора), 4 (для 32-разрядного)

unsigned int

беззнаковый целый

long int

длинный целый

4

Для данных типа int определены арифметические операции +, —, *, /, % (результат — целого типа), операции отношения =, <>, <, >, <=, >= (результат — логического типа) и стандартные функции, которые приведены в таблице 6.

Таблица 6

Базовые функции из математической библиотеки языка С++

Функция

Описание

abs(x)

Возвращает абсолютное значение аргумента

cos(x)

Возвращает косинус аргумента

exp(x)

Возвращает экспоненту аргумента

sin(x)

Возвращает синус аргумента

sqr(x)

Возвращает аргумент в квадрате

sqrt(x)

Возвращает квадратный корень аргумента

tan(x)

Возвращает тангенс аргумента

Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквивалентны int и short int, а на 32-разрядном — int и long int.

Спецификатор unsigned позволяет представлять только положительные числа. По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signed можно опускать.

Вещественные типы данных

Стандарт С++ определяет три типа данных для хранения вещественных значений:

  • float (вещественный);
  • double (вещественный с двойной точностью);
  • long double (вещественный с повышенной точностью).

Таблица 7

Вещественные типы данных

Тип

Размер в байтах

Значение

float

4

Числа от 3.4E-38 до 3.4E+38

Точность представления — 7 значащих цифр

double

8

Числа от 1.7E-308 до 1.7E+308

Точность представления — 15 значащих цифр

long double

10

Числа от 3.4E-4932 до 3.4E+4932

Точность представления — 19 значащих цифр

 

Для вещественных типов определены арифметические операции (+,—, *, /), операции отношения (=, <>, <, >, <=, >=) и стандартные функции.

Логический тип данных

Булевский (логический) тип данных — bool. Переменный логического типа данных представляют собой логические значения, такие как true (истина) и false (ложь). При вычислении значений в арифметических выражениях значение, равное нулю, принимается за ложь, а любое другое значение, не равное нулю, будет являться истиной.

Тип void

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

Базовые конструкции структурного программирования

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

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

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

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

Оператор присваивания выполняется следующим образом:

  1. вычисляется значение выражения, стоящего в правой части оператора присваивания;
  2. вычисленное значение присваивается переменной, имя которой стоит в левой части оператора присваивания, т.е. записывается в то место оперативной памяти, которое выделено для данной переменной.

Помимо основной в языке С++ существуют специальные формы оператора присваивания, примеры которых показаны в таблице 8.

Таблица 8

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

Обычная запись

Более коротко на С++

a=a*b

a*=b

a=a/(b+1)

a/=b+1

a=a%b

a%=b

a=a+b

a+=b

a=a-b

a-=b

 

Ввод и вывод данных

Ввод — вывод данных в языке C++ осуществляется с помощью потоков, реализованных в STL (Standard Template Library).

Для использования консольного ввода — вывода с помощью потоков STL в программу необходимо включить заголовочный файл <iostream>.   При подключении этого файла с помощью директивы #include <iostream> в программе автоматически создаются виртуальные каналы связи cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток << и чтения из потока >>. 

С помощью объекта cin и операции >> можно присвоить значение любой переменной. Например, если переменная x описана как целочисленная, то команда cin>>x; означает, что в переменную x будет записано некое целое число, введенное с клавиатуры. Если необходимо ввести несколько переменных, то следует написать cin>>x>>y>>z;.

Объект cout и операция << позволяет вывести на экран значение любой переменной или текст. Текст необходимо заключать в двойные кавычки. Запись cout<<x; означает вывод на экран значения переменной x.

Лабораторная работа №1

Лабораторная работа №2