Скачать презентацию Введение 1 Язык программирования Языки программирования Скачать презентацию Введение 1 Язык программирования Языки программирования

Лекции ПЯВУ С Каф 16_Слюсаренко 1_ПЯВУ С-С++.ppt

  • Количество слайдов: 47

Введение 1 Введение 1

Язык программирования • Языки программирования: – FORTRAN – вычислительные операции – Pascal – разработка Язык программирования • Языки программирования: – FORTRAN – вычислительные операции – Pascal – разработка программ на основе технологии структурного программирования – Basic – язык для обучения, язык макрокоманд – Lisp – язык для разработки программ на основе технологии функционального программирования – Java – объектно-ориентированное сетевое программирование с богатой библиотекой стандартных классов – C – язык для системного программирования на основе технологии структурного программирования – С++ – язык для разработки сложного ПО с использованием различных технологий 2 программирования (структурное, функциональное, объектно-ориентированное, обобщённое, событийное и

Список литературы • Пол А. Объектно-ориентированное программирование с использованием С++ / А. Пол. – Список литературы • Пол А. Объектно-ориентированное программирование с использованием С++ / А. Пол. – СПб. : Невский диалект, М. : "БИНОМ", 2001. – 464 с. • Страуструп Б. Язык программирования С++ / Б. Страуструп. – СПб. : "Невский диалект", М. : Бином, 2008. – 1104 с. • Мейерс С. Эффективное использование C++. 50 рекомендаций по улучшению ваших программ и проектов - М. : ДМК Пресс, 2000. -240 с. • Мейерс С. Наиболее эффективное см. Раздаточные материалы 3 использование C++. 35 новых рекомендаций по

Основы языка С++ 4 Основы языка С++ 4

Состав языка программирования • Алфавит – символы, которые можно использовать в программах – строчные Состав языка программирования • Алфавит – символы, которые можно использовать в программах – строчные и прописные и буквы: a. . . z и A. . . Z в строковых и символьных константах: а. . . я и А. . . Я – цифры: 0. . . 9 – специальные символы для разных целей (операторы, пунктуация и др. ) • Лексика – ключевые слова, идентификаторы, операторы 5

Лексика • Лексемы (token) – наборы символов, распознаваемые компилятором языка – ключевые слова (key Лексика • Лексемы (token) – наборы символов, распознаваемые компилятором языка – ключевые слова (key words) – идентификаторы (identifiers) – литералы (literals) или константы (constants) – операторы (operators) – знаки пунктуации (punctuators) • Комментарии 6 • /* многострочный Руководство по стилю программирования на С++ см.

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

Идентификаторы и константы • Идентификаторы – это последовательность латинских букв, цифр и символов подчеркивания Идентификаторы и константы • Идентификаторы – это последовательность латинских букв, цифр и символов подчеркивания ( _ ), обозначающая имя переменной • • i // обычно целая переменная цикла count // количество COUNT // другая переменная buff_size // составное (из 2 слов) имя с символом _ g 374 // непонятно _foo // плохо if // не может быть идентификатором, т. к. это ключевое слово 374 q // не может начинаться с цифры • Литералы (константы) – постоянные значения • 5 // целая константа • 05 // целая константа в восьмеричной системе счисления • 0 х5 // целая константа в шестнадцатеричной системе 8

Операторы • Операторы – используются для составления арифметических и логических выражений 9 см. Раздаточные Операторы • Операторы – используются для составления арифметических и логических выражений 9 см. Раздаточные материалы

Основные типы данных • При назначении переменных определяется – объем памяти, отводимый для ее Основные типы данных • При назначении переменных определяется – объем памяти, отводимый для ее хранения – диапазон значений, который эта переменная может принимать • Обратить внимание – чтобы программа во время выполнения не требовала большого объема памяти – чтобы значения, которые могут возникать при решении задачи, не превышали диапазон, не 10

Типы данных C++ Название типа (type) Ключевое слово (keyword) Размер (size) Диапазон значений (limits) Типы данных C++ Название типа (type) Ключевое слово (keyword) Размер (size) Диапазон значений (limits) логический bool 1 byte true/false символьный char 1 byte -128 127 short 2 bytes -32768 32767 целый int 4 bytes -2147483648 2147483647 беззнаковый целый unsigned int 4 bytes см. Раздаточные материалы 0 4294967295 . . . короткий целый. . . 11

Объявление переменных • int i; // объявление и определение типа (declaration) • i=1; // Объявление переменных • int i; // объявление и определение типа (declaration) • i=1; // инициализация (initialization) • int j=1; // объявление, определение и инициализация • int i=0, j; // объявление нескольких переменных • Повышение типа и понижение типа • • float f=0. 5 f; int i=int(f); // понижение типа double d=double(f); // повышение типа double value=static_cast(i); // повышение 12

Особые типы данных • Особые типы данных С++ • bool flag; //логический тип данных Особые типы данных • Особые типы данных С++ • bool flag; //логический тип данных (true/false) • wchar_t wchar; //двухбайтовый символьный тип (UNICODE) • void func(); //пустой тип данных • Ключевые слова-модификаторы • • const; //неизменяемая величина static; //статическая переменная signed; //знаковый тип (используется по умолчанию) 13 auto; //класс памяти автоматический

Инструкции • Инструкция (statement) – записывается на одной строке и заканчивается точкой с запятой Инструкции • Инструкция (statement) – записывается на одной строке и заканчивается точкой с запятой «; » • Арифметические выражения • • int j, i=0; ++i; // i=1, то же, что и i=i+1, i++; // i=2, то же, что и ++i, j=++i; // то же, что (i=i+1; j=i; ), i=3, j=3 j=i--; // то же, что (j=i; i--), i=2, j=3 j=i%2; // остаток от целочисленного деления, j=0 j+=2; // то же, что и j=j+2, j=2 14

Группа операторов • Группа операторов заключается в фигурные скобки: • if(x==1) • { • Группа операторов • Группа операторов заключается в фигурные скобки: • if(x==1) • { • y=x+3; • z=y*5; • } • if(x=1) // неправильно! выполняется всегда! • { 15

Условные конструкции • if(условие) • { • блок операторов; • } • • if(условие) Условные конструкции • if(условие) • { • блок операторов; • } • • if(условие) { блок операторов 1; } else { блок операторов 2; 16

Арифметический логический оператор • переменная = условие ? значение 1 : значение 2; – Арифметический логический оператор • переменная = условие ? значение 1 : значение 2; – Пример: • int i=3; • int j=(i>0) ? 1 : -1; // j=1 – То же, что: • if(i>0) • { • j=1; • } 17

Циклические конструкции • Цикл с предусловием • while(условие) • { • блок операторов; • Циклические конструкции • Цикл с предусловием • while(условие) • { • блок операторов; • } • Цикл с постусловием • do • { 18

Циклические конструкции (пример) • • • y=0; while(y<7) // 0, 3, 6, 9 { Циклические конструкции (пример) • • • y=0; while(y<7) // 0, 3, 6, 9 { y+=3; } • y=10; • while(y<7) // 10 • { • y+=3; // нет • • • y=0; do { y+=3; }while(y<7); // 0, 3, 6, 9 • y=10; • do • { 19

Пошаговый цикл • for(инициализация; условие; модификация) • { • блок операторов; • } • Пошаговый цикл • for(инициализация; условие; модификация) • { • блок операторов; • } • for(int i=0; i<10; i++) • { • x*=i; • } 20

Селективные конструкции (switch) • switch(переменная) • { • case целая константа 1: • { Селективные конструкции (switch) • switch(переменная) • { • case целая константа 1: • { • блок операторов; • break; • } • case целая константа 2: • { • блок операторов; • break; • } • default: • { 21

Селективные конструкции (if) • • • if(условие) { блок операторов; } else { блок Селективные конструкции (if) • • • if(условие) { блок операторов; } else { блок операторов; } 22

Селективные конструкции (пример) • switch(k) • { • case 1: • { • x=2; Селективные конструкции (пример) • switch(k) • { • case 1: • { • x=2; • break; • } • case 2: • { • x=5*y; • break; • } • default: • { • • • if(k==1) { x=2; } else if(k==2) { x=5*y; } else { x=0; } 23

Селективные конструкции (пример 2) • switch(k) • { • case 1: • { • Селективные конструкции (пример 2) • switch(k) • { • case 1: • { • x=2; • } • case 2: • { • x+=5*y; • break; • } • default: • { • x=0; • switch(k) • { • case 1: • { • x=2; • } • case 2: • { • x+=5*y; • } • default: • { • x=0; • } 24

Функции • Объявление функции (прототип функции) • возвращ. тип имя (список аргументов с типами); Функции • Объявление функции (прототип функции) • возвращ. тип имя (список аргументов с типами); – например: • double plus(double x, double y); • Определение(реализация) функции • возвращ. тип имя (список аргументов с типами) • { • инструкции • return возвращ. знач. ; • } – например: • double plus(double x, double y) 25

Обращение к функции • Минимальная программа • void main() • { • } • Обращение к функции • Минимальная программа • void main() • { • } • Обращение к функции • double plus(double x, double y); • void main() • { 26

Указатели и ссылки 27 Указатели и ссылки 27

Автоматическое размещение данных • Память зарезервирована в exe-модуле – Определение Объявление = инициализация; • Автоматическое размещение данных • Память зарезервирована в exe-модуле – Определение Объявление = инициализация; • int i=1; //тип переменная=значение • Время жизни – глобальное – в течение работы программы с переменной ассоциирована область памяти и обратиться к ней можно из любой точки программы – статическое – в течении работы программы с переменной ассоциирована область памяти, но обратиться к ней можно только из определенных точек программы 28 – локальное – при каждом входе в блок { } для

Классы памяти • extern - внешний (глобальный) – переменная глобальна для всех функций и Классы памяти • extern - внешний (глобальный) – переменная глобальна для всех функций и доступна в любой точке программы • static – статический – сохраняет предыдущее значение при повторном входе в блок { } • auto – автоматический (по умолчанию) – при входе в блок { } память распределяется, а при выходе из блока память освобождается, значения теряются • Переменные явно не инициализированные 29

Указатели адрес байт • int i=1; //тип переменная=значение ячейк памяти и • Указатель (pointer) Указатели адрес байт • int i=1; //тип переменная=значение ячейк памяти и • Указатель (pointer) - это. . . . переменная особого вида 0 x 00 000000 предназначенная для хранения A 0 00 адреса объекта 0 x 00 000000 • int *p; // переменная типа указателя – Диапазон значений: положительные A 1 00 • int числа целыеi=1; • null // или p=&i; (0) p=0 x 00 A 0 (оператор получения адреса) 0 x 00 000000 – занимает 32 бита (4 байта) A 2 00 • int j; • j=*p; // значение по указателю (оператор разименования) 0 x 00 000000 • * - значение переменной по адресу 30 • int t=*p+1; // t=2 A 3 01 • & - адрес переменной

Указатели (пример) • int i=1; • int* p=&i; • //3 ----------- • *p-=5; • Указатели (пример) • int i=1; • int* p=&i; • //3 ----------- • *p-=5; • • • cout<

Ссылки • Ссылка (referenсe) – это переменная особого вида, которая представляет собой альтернативное имя Ссылки • Ссылка (referenсe) – это переменная особого вида, которая представляет собой альтернативное имя переменной (псевдоним) – ссылку нельзя объявить без инициализации • • • int i=1; int& r=i; // r - новое альтернативное имя переменной i int x=r; // x=1 r=2; // i=2 32

Ссылки (пример) • int i=1; • int &r=i; • //3 ----------- • i-=5; • Ссылки (пример) • int i=1; • int &r=i; • //3 ----------- • i-=5; • //1 ----------- • cout<

Передача аргументов в функции по значению (call by value) • Значения копируются в переменныеаргументы Передача аргументов в функции по значению (call by value) • Значения копируются в переменныеаргументы функции, но сами переменные при этом не изменяются • void swap(int i, int j) • { • int t=i; • i=j; • j=t; • cout<

Передача аргументов в функции по указателю (call by pointer) • Передаются указатели на переменные Передача аргументов в функции по указателю (call by pointer) • Передаются указатели на переменные • void swap(int *i, int *j) • { • int t=*i; • *i=*j; • *j=t; • cout<<*i<<*j<

Передача аргументов в функции по ссылке (call by reference) • Передаются ссылки на переменные Передача аргументов в функции по ссылке (call by reference) • Передаются ссылки на переменные • • • void swap(int &i, int &j) { int t=i; i=j; j=t; cout<

Стандартная библиотека С++ 37 Стандартная библиотека С++ 37

Состав стандартной библиотеки C++ • Математические функции (комплексные числа, случайные числа) • Работа со Состав стандартной библиотеки C++ • Математические функции (комплексные числа, случайные числа) • Работа со временем и датой • Строковый тип данных и форматные преобразования 38

Пространства имён • Пространства имён – механизм логического группирования функций, классов, переменных, констант в Пространства имён • Пространства имён – механизм логического группирования функций, классов, переменных, констант в именованный программный модуль • namespace сalculator • { • double plus(double x, double y); • . . . • } • #include • Стандартная библиотека – пространство имён std • x=std: : cos(0. ); • #include • using namespace std; 39

Потоковый ввод/вывод • Поток – механизм преобразования значений различного типа в последовательность символов (вывод) Потоковый ввод/вывод • Поток – механизм преобразования значений различного типа в последовательность символов (вывод) и наоборот (ввод), в значение переменной • Вывод: с помощью оператора << (extractor): – cout - стандартный поток вывода (экран) – cerr - стандартный поток вывода ошибок (экран) 40

Потоковый ввод/вывод (пример) • #include <iostream> // подключение стандартной библиотеки • using namespace std; Потоковый ввод/вывод (пример) • #include // подключение стандартной библиотеки • using namespace std; • void main() • { • cout<<"Data types: "<

Форматированный ввод/вывод • Манипуляторы потока вставляются между записываемыми или читаемыми объектами и изменяют формат Форматированный ввод/вывод • Манипуляторы потока вставляются между записываемыми или читаемыми объектами и изменяют формат вывода значений – влияет только на следующее выводимое значение #include • Для вывода логических переменных: • bool value_t=true, value_f=false; • cout<

Форматированный ввод/вывод для вещественных чисел • По умолчанию – с точностью 6 значащих цифр Форматированный ввод/вывод для вещественных чисел • По умолчанию – с точностью 6 значащих цифр • float f=1234. 56789; • cout<

Манипуляторы вывода • Ширина вывода переменных в количестве символов • setw(int n); • cout<<setw(2)<<1245; Манипуляторы вывода • Ширина вывода переменных в количестве символов • setw(int n); • cout<

Файловые потоки • #include <fstream> • using namespace std; • • • // создается Файловые потоки • #include • using namespace std; • • • // создается поток ввода из файла ifstream inputfile("z: \data. txt"); // «» экранирующий символ inputfile>>x; // создается поток вывода в файл ofstream outputfile("z: \res. txt"); outputfile<

Строковые переменные и константы • Строковый тип данных string позволяет хранить строки переменной длины, Строковые переменные и константы • Строковый тип данных string позволяет хранить строки переменной длины, причем длину можно менять в процессе выполнения программы • #include • #include • using namespaсe std; • void main() • { • string name="Bjarne"; // объявление, определение, инициализация • string lastname="Stroustrup"; • • • name+=" " + lastname; // конкатенация с присваиванием cout<

Математические функции • Cм. раздаточные материалы 47 Математические функции • Cм. раздаточные материалы 47