1й курс / Konspekt_lektsiy_Informatika_2
.pdf1
Тема №2. ПРОГРАММИРОВАНИЕ НА С++
2.1. Базовые средства языка
Язык С был создан в 1972 году во время работы над операционной системой UNIX. С++
– язык объектного-ориентированного программирования.
Для выполнения программы на ПК ее необходимо перевести машинный (двоичный) код, с которым работает процессор. Перевод в машинный код осуществляется специальными программами – трансляторами, которые делятся на два класса:
·интерпретаторы переводят каждый оператор программы в машинный код, операторы выполняются процессором по мере перевода;
·компиляторы переводят всю программу целиком, и если перевод всей программы прошел без ошибок, то полученный двоичный код выполняется.
ВС++ в качестве транслятора обычно выступает компилятор, поэтому процесс перевода программы в машинный код называетсякомпиляцией программы. Наиболее распространен-
ными компиляторами С++ являются Dev C++ и Visual Studio.
2.1.1. Основные понятия языка
Набор символов, которые используются для формирования всех конструкций языка, называют его алфавитом. В С++ алфавит включает следующие символы:
·прописные, строчные латинские буквы;
·арабские цифры от 0 до 9;
· |
специальные знаки:. , : ; | [ ] ( ) { } + – / % * \ ‘ ? < = > ! & # ~ ^ |
· |
знак подчеркивания, символы пробела, табуляции и перехода на новую строку. |
Программный код С++ состоит из последовательности операторов, которые образуются из ключевых слов (зарезервированные слова, которые имеют специальное значение для компилятора).
Оператор задает законченное описание определенного действия. Операторы делятся на исполняемые и неисполняемые.
Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных.
Программа – объединенная единым алгоритмом последовательность операторов. Каждый оператор программы завершается ;. Можно записывать несколько операторов в одну строку.
Идентификатор – имя программного объекта или переменной. Имя состоит из латинских букв, цифр и символа подчеркивания. Прописные и строчные буквы различаются:
ABC, abc, Abc – разные имена.
Имя должно начинаться с буквы или знака подчеркивания и не содержать пробелов. Имя не должно совпадать с ключевыми словами языка. Недопустимые имена:
9bc ® bc9 или _9bc, count mas ® count_mas
Комментарий – это поясняющий текст к программе, который игнорируется компилятором. Начинается с символов // и заканчивается переходом на новую строку:
//Это комментарий
или заключается в скобки:
/* Это комментарий */
2.2. Типы данных С++
Данные, которые обрабатываются программой, хранятся в оперативной памяти компью-
тера в виде переменных и констант.
Переменная – это поименованная область памяти (ячейка), в которой хранится значение определенного типа. В процессе выполнения программы значения переменных могут изменять-
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
2
ся. Каждая переменная в С++ имеет свой тип данных, указывающий на значение, которое будет храниться в переменной: целое или вещественное число, символ, структура и т.п.
Тип данных определяет способ кодирования значения и задаетразмер ячейки оперативной памяти ПК, в которой будет храниться это значение, тем самым определяя его максимальную величину или точность представления.
Типы данных языка С++ делятся на основные и составные.
Основные типы данных С++: char – символьный,
int – целый,
float – вещественный,
double – вещественный с двойной точностью, bool – логический,
void – без типа (бестиповый).
Для формирования других типов данных используютосновные типы и спецификаторы, которые служат для уточнения внутреннего представления и диапазона значений стандартных типов. Типы данных, созданные на базе стандартных типов с использованием спецификаторов,
называют составными типами данных.
Спецификаторы типов данных С++: short – короткий;
long – длинный; signed – знаковый;
unsigned – беззнаковый.
Различают описание переменных (определение их типа) и инициализацию переменных
(присвоение им начальных значений).
Оператор описания переменных в С++ имеет вид:
тип_данных список_переменных;
В списке_переменных имена переменных записываются через запятую(может состоять из одной переменной). Перед использованием в программевсе переменные должны быть определены (описаны).
2.2.1. Символьный тип данных – char
Используется для хранения одного символа и обычно занимает в памяти1байт. Напри-
мер,
char c, str; // описаны символьные переменные c и str
При использовании в выраженияходиночного символа, его необходимо заключить в одинарные кавычки. Например, 'a', 'b', '+', '3'.
Последовательность символов – строка, при использовании в выражениях заключается в двойные кавычки: "Hello!".
2.2.2. Целый тип данных – int
По умолчанию все целые типы считаются знаковыми, т.е. спецификатор signed можно не указывать.
Тип |
Диапазон |
Размер |
int |
-32768…32767 |
4 байта |
unsigned int |
0…65535 |
4 байта |
short int |
-32768…32767 |
2 байта |
long int |
-2147483648…2147483647 |
4 байта |
long long int |
–263 …(263–1) |
8 байт |
unsigned long int |
0 … 4294967295 |
4 байта |
Пример описания целочисленных переменных: int a, b, c;
unsigned long int A, B, C;
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
3
2.2.3. Вещественные типы данных – float, double
Вещественные числа в памяти компьютера хранятся в форматес плавающей точкой в нормализованном виде.
Число с плавающей точкой представлено в экспоненциальной форме mE±p ® m×10p
где m – мантисса (целое или дробное число с десятичной точкой), p – порядок (целое число).
Например, 3.2E-6 = 3.2×10-6 =0.0000032
Длина мантиссы определяет точность числа, а длина порядка его диапазон. Спецификатор типа long перед именем типаdouble указывает, что под величину отво-
дится 10 байт.
|
Тип |
Диапазон |
Размер |
|
float |
|
3.4Е-38…3.4E+38 |
4 |
байта |
double |
1.7Е-308…1.7E+308 |
8 |
байт |
|
long |
double |
3.4Е-4932…3.4E+4932 |
10 байт |
Пример описания вещественных переменных: double x1, x2, x3;
float X, Y, Z;
2.2.4. Логический тип данных – bool
Переменная типа bool может принимать только два значенияtrue (истина) или false (ложь). Любое значение не равное нулю интерпретируется какtrue, а при преобразовании к целому типу принимает значение равное 1. Значение false представлено в памяти как 0.
Пример описания логических переменных: bool F, T;
2.2.5. Тип данных – void
Множество значений этого типа пусто. Он используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типов.
2.3. Константы в языке С++
Константа это величина, которая не изменяет своего значения в процессе выполнения программы. Оператор описания константы имеет вид:
сonst тип_данных имя = значение;
Например:
const float PI=3.14159;
Константа может быть определена до главной функции. В этом случае применяется директива #define:
#define PI 3.141592653
2.4. Операции и выражения
Выражение задает порядок выполнения действий над данными и состоит из операндов (констант, переменных, обращений к функциям), круглых скобок и знаков операций (табл. 2.1). Операции делятся на унарные (-с) и бинарные (а+b).
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
|
|
4 |
|
|
Таблица 2.1. Основные операции языка С++ |
Операция |
|
Описание |
|
|
Унарные операции |
++ |
|
инкремент (увеличение значения на 1) |
-- |
|
декремент (уменьшение значения на 1) |
! |
|
логическое отрицание |
- |
|
унарный минус |
+ |
|
унарный плюс |
& |
|
взятие адреса |
* |
|
разадресация |
|
|
Бинарные операции |
+, |
– |
сложение, вычитание |
* |
|
умножение |
/, % |
целочисленное деление, остаток от деления |
|
<, |
> |
меньше, больше |
<= |
|
меньше или равно |
>= |
|
больше или равно |
== |
|
равно |
!= |
|
не равно |
&& |
|
логическое И |
|| |
|
логическое ИЛИ |
= |
|
присваивание |
*= |
|
умножение с присваиванием |
/= |
|
деление с присваиванием |
+= |
|
сложение с присваиванием |
-= |
|
вычитание с присваиванием |
%= |
|
остаток от деления с присваиванием |
2.4.1. Оператор присваивания
Инициализация переменных выполняется с помощью оператора присваивания, который имеет вид:
имя_переменной = значение;
где значение – это выражение, переменная, константа или функция.
Принцип работы оператора: вычисляется значение выражения указанного в правой части оператора, затем его результат записывается в переменную, имя которой указано слева. Например,
b=3; a=b; |
c=c+1; |
a=a*3; |
c=a+2*b; |
Пример 1. Пусть в переменной а хранится число 3, в переменной b число 5. Поменять местами значения переменных а и b.
Для решения задачи понадобится дополнительная перемен-
ная c. |
// Шаг 1. |
с=3 |
|
с=a; |
|||
a=b; |
// Шаг |
2. |
a=5 |
b=c; |
// Шаг |
3. |
b=3 |
Если в операторе присваивания левая и правая часть этопе-
ременные разных типов, то происходит преобразование типов: значение переменной в правой части преобразуется к типу переменной в левой части. Следует учитывать, что при этом можно потерять информацию или получить другое значение (переполнение).
В С++ существует возможность присваивания нескольким переменным одного и того же
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
5
значения. Такая операция называется множественным присваиванием:
имя1=имя2=…=имяN=значение;
Например, a=b=c=3.14159/6;
Операции +=, –=, *=, /= называют составным присваиванием. В таких операциях при вычислении выражения стоящего справа используется значение переменной из левой части. Например:
x+=p; //Увеличение x |
на p ® |
x=x+p. |
||
x-=p; //Уменьшение x |
на p ® |
x=x-p. |
||
x*=p; |
//Умножение x на p |
® |
x=x*p. |
|
x/=p; |
//Деление x на |
p |
® |
x=x/p. |
2.4.2. Арифметические операции
При записи выражений на С++ необходимо учитывать приоритет выполнения арифме-
тических операций. Операции одного |
уровня выполняются последовательно друг за другом |
||||||||||||
(слева на право). |
|
|
|||||||||||
|
|
|
|
Математическая запись |
|
Запись на языке С++ |
|
||||||
|
2 × a + b × (c + d ) |
|
2*a+b*(c+d) |
|
|||||||||
|
|
3 × a + b |
|
|
|
|
|
(3*a+b)/(c+d) |
|
||||
|
|
c + d |
|
|
|
|
|
|
|
|
|
||
|
|
3a - 2b2 |
|
|
|
|
|
(3*a-2*b*b)/(c*d) |
|
||||
|
|
c × d |
|
|
|
|
|
|
(3*a-2*b)/c/d |
|
|||
|
|
3 × a |
|
|
|
|
|
3*a/(2*c) |
|
||||
|
|
2 × c |
|
|
|
|
|
|
|
|
|||
|
|
(b - a)2 |
|
- |
a2 +1 |
|
|
(b-a)*(b-a)/(c+1/(d-2))- |
|
||||
|
|
c + |
1 |
|
b2 + cd |
|
(a*a+1)/(b*b+c*d) |
|
|||||
|
|
|
|
|
|
||||||||
|
|
d - 2 |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
2.4.3. Операции целочисленной арифметики
Операция целочисленного деления / возвращает целую часть частного (дробная часть отбрасывается) в том случае если она применяется к целочисленным операндам, в противном случае выполняется обычное деление:
int a; a=11; |
® a/4 = |
2 |
float b; b=11; ® b/4 = |
2.75 |
|
или 11/4 = 2, |
11./4 = 2.75. |
|
Операция остаток от деления % применяется только к целочисленным операндам: |
||
11%4 = 3. |
|
|
2.4.4. Логические операции и операции отношения
Логические операции ||, &&, ! выполняются над логическими значениями true (исти-
на) и false (ложь). |
>=, <, <=, ==, != является логическое значение |
|||
|
Результатом операции отношения >, |
|||
true (истина) или false (ложь). Например: |
|
|
||
|
Математическая запись |
|
Запись на языке С++ |
|
|
x ≥ 5 |
|
x >= 5 |
|
|
a = 1 |
|
a == 1 |
|
|
y ≠ 0 |
|
y != 0 |
|
|
1.5 ≤ z ≤ 2.5 |
|
(z >=1.5) && (z <= 2.5) |
|
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
6
2.4.5. Операция преобразования типа
Для приведения выражения к другому типу данных в С++ существует операция преобра-
зования типа:
(тип) выражение;
Например, в результате действий x=5;
y=x/2; z=(float) x/2;
переменная y примет значение равное2 (результат целочисленного деления), а переменная z
=2.5.
2.4.6.Операция определения размера
Вычислить размер объекта или типа в байтах можно с помощью операции определения размера, которая имеет две формы записи:
sizeof (тип) или sizeof выражение
Например: |
|
int a,b,c,d; |
//В перем. a будет значение 4 |
a=sizeof(int); |
|
b=sizeof(double); |
//В перем. b будет значение 8 |
c=sizeof 4/2; |
//В перем. c будет значение 2 |
d=sizeof 4./2; |
//В перем. d будет значение 4 |
2.5.Стандартные функции
ВC++ определены стандартные функции над арифметическими операндами (табл. 2.2). Работа с математическими функциями возможна только при подключении директивы math.h.
#include <math.h>
|
|
|
|
|
|
|
|
|
|
|
Таблица 2.2. Математические функции |
||||
|
|
|
|
|
|
|
|
Обозначение |
|
|
|
Действие |
|
||
|
|
|
abs(x) |
|
Модуль целого числа |
|
|
|
|
||||||
|
|
|
fabs(x) |
|
Модуль вещественного числа |
|
|||||||||
|
|
|
sin(x) |
|
Функция синус |
|
|
|
|
|
|||||
|
|
|
cos(x) |
|
Функция косинус |
|
|
|
|
|
|||||
|
|
|
tan(x) |
|
Функция тангенс |
|
|
|
|
|
|||||
|
|
|
atan(x) |
|
Арктангенс х в диапазоне -p/2 до p/2 |
|
|||||||||
|
|
|
exp(x) |
|
Экспонента, ex |
|
|
|
|
|
|||||
|
|
|
log(x) |
|
Натуральный логарифм ( |
|
|
) |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
x>0 |
|
|
||
|
|
|
log10(x) |
|
Десятичный логарифм ( |
|
) |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
x>0 |
|
|
|
|
|
|
|
sqrt(x) |
|
Корень квадратный ( |
x≥0 |
) |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pow(x,y) |
|
x в степени y |
|
|
|
|
|
|||||
|
|
|
round(x) |
|
округление вещественного x до ближайшего целого |
|
|||||||||
|
|
|
|
|
|
Примеры записи математических выражений |
|
|
|
|
|
||||
3 |
(a + b)2 |
|
pow((a+b)*(a+b),1./3) или pow(pow(a+b,2),1./3) |
||||||||||||
cos3(x) |
|
|
|
cos(x)*cos(x)*cos(x) |
или |
|
pow(cos(x), 3) |
||||||||
5sin |
æ x |
ö |
|
|
|
|
|
|
|
|
|
||||
ç |
|
|
÷ |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||||||
e |
è 2 |
ø |
|
|
exp(5*sin(x/2)) |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|||||
sin |
|
2x |
|
sin(sqrt(2*x)) |
|
|
|
|
|
||||||
ln | x - 2 | |
log(fabs(x-2)) |
|
|
|
|
|
|||||||||
log3 (x2 +1) |
log(x*x+1)/log(3) |
|
|
|
|
|
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
7
sin(x2 +)cos |
x2 |
|
|
||
+ |
x2 + y2 |
sin(x*x)+cos(x*x/(2*y))+sqrt(x*x+y*y); |
|||
2 × y |
|||||
|
|
|
|
Особого внимания требует применение функцииpow(x,y), которая возводит х в степень y.
Ошибка возникает, если х – отрицательное число, а y – дробь. Предположим, что y – правильная дробь вида k/m.
k
x m = m xk
Если знаменатель m четный, это означает вычисление корня четной степени из отрицательного числа, а значит, операция не может быть выполнена. В противном случае, если знаменатель m нечетный, можно воспользоваться выражением
z=–pow(fabs(x),y).
Тема №3. ПРОГРАММИРОВАНИЕ НА С++
3.1. Структура программы
Программа на С++ может состоять из одной или нескольких функций.
Каждая функция состоит из строки заголовка и тела функции, которое заключаются в фигурные скобки {}.
тип имя_функции (параметры) //Заголовок функции
{
операторы_функции; //Тело функции
}
где тип – это тип вычисляемого (возвращаемого) функцией результата. Если функция не возвращает результат, то указывается тип void;
имя_функции – идентификатор, по которому происходит обращение к функции(вызов функции);
параметры – список аргументов функции (может отсутствовать). Тело функции условно делится на две части:
–описательную – операторы, определяющие все переменные, которые будут использоваться в функции;
–исполнимую – операторы, реализующие алгоритм решения задачи.
Программе всегда должна содержать главную функцию с именемmain. Функции в программе не должны быть вложенными друг в друга.
В общем случае программа на С++ включает в себя директивы процессора, описания и функции.
Директивы процессора располагаются вначале программы(перед функциями) и задаются в виде:
#include <имя_файла>
Каждая директива дает компилятору команду присоединить программный код, который хранится в отдельном файле с расширением*.h. Такие файлы называют файлами заголовков. С их помощью выполняется ввод-вывод данных, работа с математическими функциями, преобразование данных, распределение памяти и т.д.
Общая структура программы на языке С++:
#include //директивы процессора #define //описание переменных и констант //описание функций
тип имя_функции1(параметры1)
{
операторы_тела_функции1;
}
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
8
..................
тип main(параметры)
{
операторы_тела_главной_функции;
}
По месту объявления (описания) переменные делятся на локальные и глобальные. Локальные переменные объявляются внутри функции и доступны только в ней. Глобальные переменные описываются до всех функций и доступны из любого места программы.
3.1.1. Начало работы в Dev-C++
В компиляторе Dev-C++ для создания консольной программы необходимо выполнить команду:
File – New – Project – Console Application
Ввести имя проекта и указать папку, в которой он будет сохранен (для каждого проектапрограммы рекомендуется создавать отдельную папку в личной папке в папке Students). В результате в окне редактора Dev-C++ будет создана заготовка будущей программы в виде:
#include <cstdlib> //Директива процессора #include <iostream> //Директива процессора using namespace std;
//Заголовок главной функции
int main(int argc, char *argv[])
{//Начало тела функции
…; //Операторы описания переменных …; //Исполняемые операторы тела функции
//Операторы задающие паузу при завершении //работы программы
system("PAUSE"); return EXIT_SUCCESS;
}//Конец тела функции
Текст программы сохраняется в файле *.cpp.
Для использования в операторах ввода/вывода русских букв необходимо :
1)добавить директиву процессора
#include <Windows.h>
2)в начало тела функции main добавить операторы
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
3)запустить программу на выполнение;
4)в заголовке окна консоли вызвать контекстное меню и выбрать команду «Свойства»;
5)в окне команды «Свойства» на вкладке «Шрифт» выбрать шрифт
Lucida Console
3.1.2. Начало работы в MS Visual Studio
Для работы с пакетом запуститьMicrosoft Visual Studio. Затем выполнить следующие действия:
1. Создать проект (команда Файл – Создать – Проект).
1.1.Выбрать «Консольное приложение Win32 Visual C++».
1.2.Ввести имя проекта, например, Lab2_1 (все файлы проекта будут помещены в папку
стаким же именем).
1.3.Выбрать расположение проекта, для этого нажать кнопку «Обзор» и открыть папку
Рабочий стол ® Students ® Имя группы ® Личная папка (Фамилия).
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
9
1.4.В окне «Мастер приложений Win32» нажать кнопку «Готово».
1.5.В результате в окне редактораMicrosoft Visual Studio будет создана заготовка будущей программы, аналогичная Dev-C++ (вместо main будет _tmain).
2.В область директив процессора добавить строки
#include <iostream> using namespace std;
3.Для обеспечения паузы при завершении работы программы в конец тела функции main перед оператором
return 0;
добавить оператор system("PAUSE");
4.Для использования в операторах ввода/вывода русских букв в начало тела функции main добавить оператор
setlocale(LC_ALL, “Russian”);
3.2. Ввод и вывод данных
Ввод-вывод данных в языке С++ может осуществляться двумя способами.
1.С помощью функций ввода-вывода в стиле С.
2.С помощью объектов библиотеки классов С++.
Объекты С++ легче в использовании, но функции ввода-вывода позволяют организовывать форматированный вывод данных.
3.2.1. Функции ввода-вывода
Для использования функций ввода-вывода, программа должна содержать директиву
#include <stdio.h>
которая содержит описание функций scanf/printf. Функция вывода
printf(строка_вывода, [список_выводимых_переменных]);
выполняет форматированный вывод текста и значенийпеременных, указанных в стро-
ке_вывода, в соответствии со списком_выводимых_переменных.
Строка_вывода записывается в двойных кавычках и содержит текст и спецификаторы, которые будут выводиться на экран.
В простейшем случае операторprintf позволяет выводить обычный текст. Например, оператор:
printf("Literal text.");
выведет на экран текст: Literal text.
В случае если требуется вывести значения переменных, то в строке вывода необходимо использовать спецификаторы форматов в позициях, где должны выводиться значения.
Спецификатор форматов – это набор символов, который начинается символом% и управляет форматированием выводимого значения переменной. Имеет вид:
%[ширина][.точность]тип
где тип указывает на тип выводимой переменной и может принимать следующие значения: d – десятичное int со знаком;
f – десятичное float со знаком; с – одиночный символ;
s – строка символов.
ширина – количество позиций отводимых под значение в поле вывода(включает все символы выводимого значения). Если указанное количество позиций недостаточно, то поле вывода расширяется до минимально необходимого. Незаполненные позиции заполняются пробелами;
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |
10
точность – количество знаков после десятичной точки, при этом
ширина ≥ точность+2.
Параметры ширина и точность в спецификаторе могут отсутствовать. Например, пусть х=2.51, тогда оператор:
printf("x=%f",x);
выведет на экран значение х в виде: |
х=2.510000 |
|
При форматном выводе оператор: |
|
|
printf("x=%4.2f",x); |
х=2.51 |
|
выведет на экран значение х в виде: |
||
Кроме того, строка форматов может содержать специальные символы: |
||
\n |
перевод на новую строку; |
|
\t |
горизонтальная табуляция. |
|
Например, пусть х=2.51 и y=3.1 тогда оператор: printf("Result \n x=%4.2f \t y=%3.1f \n",x,y);
выведет на экран:
Result
x=2.51 y=3.1
Спецификаторы формата в строке вывода оператораprintf должны точно соответствовать типу и количеству переменных в списке выводимых переменных!
Функция ввода
scanf(строка_форматов, список_адресов_вводимых_переменных);
выполняет ввод переменных, адреса которых указаны всписке, в соответствии со строкой форматов.
Строка_форматов записывается в двойных кавычках, и содержит только спецификаторы формата (см. функцию printf), соответствующие переменным из списка ввода, и разделители (пробел, \t, \n).
Переменные в списке ввода обязательно записываются со знаком& – амперсант (операция – взятие адреса). Исключение составляют только имена массивов.
Например, оператор scanf("%f",&x);
требует ввести значение вещественной переменной .хПосле ввода числа необходимо нажать клавишу Enter.
В случае если одна функция scanf используется для ввода значений нескольких перемен-
ных,
scanf("%f %f",&x,&y);
то числа можно вводить через пробел и завершать ввод клавишей Enter.
Обычно функция scanf используется в паре с функциейprintf, которая вначале выводит приглашение к вводу данных, а затем функция scanf вводит само значение.
Например, printf("Input x = "); scanf("%f",&x);
Пример 3.1 (лабораторная работа 2.1). Для заданного значения x вычислить
y = sin( 1.2x )- ex+1.5 + ln(1+ | x |) .
cos x + 2x3
Текст программы (для Dev-C++):
//Директива подключения функций scanf/printf
#include <stdio.h>
//Директива подключения математических функций
#include <math.h> using namespace std;
Конспект лекций по «Информатике» |
Ó Ефименко К.Н. |