Скачать презентацию Алгоритмический язык Си С Создатель Скачать презентацию Алгоритмический язык Си С Создатель

prog_lk3_new.pptx

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

Алгоритмический язык Си++ Алгоритмический язык Си++

С++ • Создатель – Бьёрн Страуструп (начало 1980 -х г. ) • В C С++ • Создатель – Бьёрн Страуструп (начало 1980 -х г. ) • В C были добавлены классы, наследование классов, строгая проверка типов, inlineфункции и аргументы по умолчанию. • Первый компилятор Cfront от Bell Laboratory. • Ранние версии языка, первоначально именовавшегося «C with classes» ( «Си с классами» ), стали доступны с 1980 года.

С++ • 1983 г. – название «Си с классами» заменено на С++: добавлены новые С++ • 1983 г. – название «Си с классами» заменено на С++: добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев. • В 1998 году - опубликован стандарт языка ISO/IEC 14882: 1998 (известный как C++98).

Место С++ в мире языков Языки высокого уровня Языки среднего уровня Языки низкого уровня Место С++ в мире языков Языки высокого уровня Языки среднего уровня Языки низкого уровня Ада С Ассемблер Модула-2 С++ Паскаль FORTH COBOL Макро Ассемблер Фортран Бейсик

Место С++ в мире языков • Определение С как языка среднего уровня означает, что Место С++ в мире языков • Определение С как языка среднего уровня означает, что он объединяет элементы языков высокого уровня с функциональностью ассемблера. • Как язык среднего уровня, С++ позволяет манипулировать битами, байтами и адресами — основными элементами, с которыми работает компьютер. • Код С++ имеет высокую степень переносимости.

Примеры программ Примеры программ

/* Пример 1 */ # include <iostream> # include <locale> # include <conio. h> /* Пример 1 */ # include # include # include using namespace std; int main() { setlocale(LC_ALL, "rus"); clrscr(); system("cls"); cout <<"Hello!" << endl; cout << “Мы начинаем изучать язык Си++ " << endl; while (!kbhit()); return 0; }

Пример 2 Напечатать таблицу температур по Фаренгейту в диапазоне от 0 до 300 с Пример 2 Напечатать таблицу температур по Фаренгейту в диапазоне от 0 до 300 с шагом 20 и их эквивалентов по стоградусной шкале Цельсия, используя для перевода формулу c=5/9*(f-32)

Таблица имен • f 1 – начальное значение температуры по Фаренгейту; • f 2 Таблица имен • f 1 – начальное значение температуры по Фаренгейту; • f 2 - конечное значение температуры по Фаренгейту; • step – шаг изменения температуры по Фаренгейту; • fahr – текущее значение температуры по Фаренгейту; • cel - текущее значение температуры по Цельсию.

// Пример 2. Печать таблицы температур Фаренгейт - Цельсий # include <iostream> # include // Пример 2. Печать таблицы температур Фаренгейт - Цельсий # include # include # include using namespace std; int main() { int f 1, f 2, step; float fahr, cel; //clrscr(); system("cls"); f 1=0; f 2=300; step=20; fahr=f 1; while (fahr<=f 2) { cel=(5. 0/9. 0)*(fahr-32. 0); cout << " "<< fahr <<" "<< cel << endl; fahr=fahr+step; } while (!kbhit()); return 0; }

Алфавит языка Алфавит языка

Алфавит языка • Алфавит языка — это тот набор символов (знаков), который допустим в Алфавит языка • Алфавит языка — это тот набор символов (знаков), который допустим в данном языке. Алфавит языка С++ включает в себя: • прописные и строчные латинские буквы; • арабские цифры 0 – 9; • специальные знаки “ { } , | [ ] ( ) + - / % *. < > = & # и др.

Типы, операции, выражения Типы, операции, выражения

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

Имя или идентификатор Корректные Некорректные count {count test 123 +test 123 high_balance High. , Имя или идентификатор Корректные Некорректные count {count test 123 +test 123 high_balance High. , balance

Имя или идентификатор • С++ - регистрозависимый язык - прописные и строчные буквы трактуются Имя или идентификатор • С++ - регистрозависимый язык - прописные и строчные буквы трактуются по-разному. • kwadro, KWADRO, kw. Adro – это разные имена.

Ключевые слова C++ • Ключевые слова — это предварительно определенные зарезервированные идентификаторы, имеющие специальные Ключевые слова C++ • Ключевые слова — это предварительно определенные зарезервированные идентификаторы, имеющие специальные значения. • Их использование в программе в качестве идентификаторов не допускается.

Ключевые слова C++ asm; auto; bool; break; case; catch; char; class; const; const_cast; continue; Ключевые слова C++ asm; auto; bool; break; case; catch; char; class; const; const_cast; continue; default; delete; double; dynamic_cast; else; enum; explicit; export; extern; false; float; for; friend; goto; if; inline; int; long; mutable; namespace; new; operator; privare; protected; public; register; reinterpret; _cast; return; short; signed; sizeof; static_cast; struct; switch; template; this; throw; true; try; typedef; typeid; tipename; union; unsigned; using; virtual; void; volatile; wchar_t; while.

Типы данных Типы данных

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

Типы данных • Две группы: • основные; • составные. Типы данных • Две группы: • основные; • составные.

Основные (или стандартные) типы данных • • int - целый; char - символьный; wchar_t Основные (или стандартные) типы данных • • int - целый; char - символьный; wchar_t – расширенный символьный; bool – логический; float - вещественный; double – вещественный с двойной точностью; void - пустой, не имеющий значения.

Спецификаторы типа • • - short –короткий; - long - длинный; - signed - Спецификаторы типа • • - short –короткий; - long - длинный; - signed - знаковый; - unsigned – беззнаковый.

Допустимые комбинации типов и спецификаторов Тип переменной Длина в байтах Char 1 Unsigned char Допустимые комбинации типов и спецификаторов Тип переменной Длина в байтах Char 1 Unsigned char 1 Signed char 1 Int 2 Unsigned int 2 Short int 2 Unsigned short int 2 Signed short int 2 Long int 4

Допустимые комбинации типов и спецификаторов Тип переменной Длина в байтах Signed long int 4 Допустимые комбинации типов и спецификаторов Тип переменной Длина в байтах Signed long int 4 Unsigned long int 4 Float 4 Double 8 Long double 10

Составные типы данных • • массивы; перечисления; функции; структуры; ссылки; указатели; объединения; классы. Составные типы данных • • массивы; перечисления; функции; структуры; ссылки; указатели; объединения; классы.

Целый тип (int) Целый тип (int)

Целый тип (int) signed - старший разряд знаковый 0 – число положительное, 1 – Целый тип (int) signed - старший разряд знаковый 0 – число положительное, 1 – число отрицательное unsigned - беззнаковый

Пример • Целое число +3 типа int будет храниться в памяти в виде: 0 Пример • Целое число +3 типа int будет храниться в памяти в виде: 0 0 0 0 1 1 1 1 0 1 • Число -3 1 1 1

Примечание Типы: short int, long int, signed int, unsigned int можно сокращать до: short, Примечание Типы: short int, long int, signed int, unsigned int можно сокращать до: short, long, signed, unsigned соответственно.

Символьный тип (char) Символьный тип (char)

Кодировка символов Однобайтная кодировка: • код символа храниться в одном байте; • возможно использование Кодировка символов Однобайтная кодировка: • код символа храниться в одном байте; • возможно использование до 256 различных символов; • используется код ASCII (American Standard Code for Information Interchange – американский стандартный код для обмена информацией).

Основные коды 47 / 62 > 77 M 32 Пробел 48 0 63 ? Основные коды 47 / 62 > 77 M 32 Пробел 48 0 63 ? 33 ! 78 N 49 1 64 @ 34 “ 79 O 50 2 65 A 35 # 80 P 51 3 66 B 36 $ 81 Q 52 4 67 C 37 % 82 R 53 5 38 & 68 D 83 S 54 6 39 * 69 E 84 T 55 7 40 ( 70 F 85 U 56 8 41 ) 71 G 86 V 57 9 42 * 72 H 87 W 58 : 43 + 73 I 88 X 59 ; 44 , 74 J 89 Y 60 < 45 75 K 90 Z 61 = 46 . 76 L

Двухбайтная кодировка • Unicode • Символы могут принимать значения в диапазоне от 0 до Двухбайтная кодировка • Unicode • Символы могут принимать значения в диапазоне от 0 до 65 535.

Логический тип (bool) Логический тип (bool)

Логический тип (bool) • Величины логического типа могут принимать значения только: true false Логический тип (bool) • Величины логического типа могут принимать значения только: true false

Вещественные типы ( или типы с плавающей точкой) float double long double Вещественные типы ( или типы с плавающей точкой) float double long double

Диапазоны значений простых типов для IBM PC Тип Диапазон значений Размер (байт) Bool True Диапазоны значений простых типов для IBM PC Тип Диапазон значений Размер (байт) Bool True , false 1 Signed char -128 … 127 1 Unsigned char 0 … 255 1 Signed short int -32 768 … 32767 2 Unsigned short int 0 … 65 535 2 Signed long int -2 147 483 648 … 2 147 483 647 4 Unsigned long int 0 … 4 294 967 295 4 float 3. 4 e-38 … 3. 4 e+38 4 Double 1. 7 e-308 … 1. 7 e+308 8 Long double 3. 4 e-4932 … 3. 4 e+4932 10

Переменные Переменные

Переменные • Переменная - это именованное место хранения какого-то типа данных. • Конкретное значение Переменные • Переменная - это именованное место хранения какого-то типа данных. • Конкретное значение переменной хранится в ячейках оперативной памяти.

Формат объявления переменных [класс памяти] [const] тип <список имён> [инициализатор] Формат объявления переменных [класс памяти] [const] тип <список имён> [инициализатор]

Значения класса памяти • auto – создаются при входе в функцию и уничтожаются при Значения класса памяти • auto – создаются при входе в функцию и уничтожаются при выходе из нее; • extern – глобальная переменная, доступна везде, где описана; • static – если переменная объявлена внутри функции, то она сохраняет свое значение между вызовами функции; • register – регистровая, рекомендует размещать переменную в регистрах процессора

Примеры • int k, l; • short pi; • double a, b, c; • Примеры • int k, l; • short pi; • double a, b, c; • const char txt =‘c’; • unsigned int p; • int x=7; • float q=0. 5, f(2. 0);

/* Пример 4. Объявление переменных в разных местах программы. Использование глобальных и локальных переменных /* Пример 4. Объявление переменных в разных местах программы. Использование глобальных и локальных переменных и формальных параметров. */ #include #include #include using namespace std; char ch; // глобальная переменная ch int main() { int n; // локальная переменная n cout << “Введите символ: ”; ch=getche(); // использование глобальной переменной ch cout (<< “Введите количество символов: ”; scanf(“%d”, &n); print_str(int m) // формальный параметр m { int j; // локальная переменная j for (j=o; j

Константы Константы

Константы • Константа — способ адресации данных, изменение которых рассматриваемой программой не предполагается или Константы • Константа — способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается. • Виды констант: – целые; – вещественные; – символьные; – строковые.

Виды констант Константа Примеры Целая Формат десятичный 456; -12 Формат восьмеричный 06327 Формат шестнадцатеричный Виды констант Константа Примеры Целая Формат десятичный 456; -12 Формат восьмеричный 06327 Формат шестнадцатеричный 0 x 4 AF 8 Вещественная Формат десятичный 123. 45 Формат экспоненциальный 6. 7 e-3 Символьная ‘a’; ‘r’; ‘ 7’; ’ф’ Строковая “t аргумент функция ”

Суффиксы констант • Суффиксы целочисленных констант: u, l, h, U, L, H • Суффиксы Суффиксы констант • Суффиксы целочисленных констант: u, l, h, U, L, H • Суффиксы чисел с плавающей точкой: l, L, f, F

Примеры Примеры

Константы • Шестнадцатеричная константа начинается с символов: 0 x; • Восьмеричная константа начинается с Константы • Шестнадцатеричная константа начинается с символов: 0 x; • Восьмеричная константа начинается с нуля. int hex=0 xff; int oct=023;

Константы • “abba” - строковая константа; • “a” - строковая константа; • ‘a’ - Константы • “abba” - строковая константа; • “a” - строковая константа; • ‘a’ - символьная константа;

Управляющие константы (символьные константы с обратным слешем) • n перевод строки; • r возврат Управляющие константы (символьные константы с обратным слешем) • n перевод строки; • r возврат каретки; • t горизонтальная табуляция; • и др.

Примеры ch=‘t’; присваивает переменной ch знак горизонтальной табуляции; cout << “hello” << “n”; печать Примеры ch=‘t’; присваивает переменной ch знак горизонтальной табуляции; cout << “hello” << “n”; печать строки hello и перевод строки;

Операции Операции

Арифметические операции - - вычитание; + - сложение; * - умножение; / - деление; Арифметические операции - - вычитание; + - сложение; * - умножение; / - деление; % - остаток от целочисленного деления; ++ - увеличение на единицу (increment); -- - уменьшение на единицу (decrement).

// Программа 5 // Операция деления целых чисел #include <iostream> #include <conio. h> using // Программа 5 // Операция деления целых чисел #include #include using namespace std; int main() { int p=7, q=2, x, y; x=p/q; y=p%q; cout << “Частное =" << x << endl; cout << “Остаток=" << y << endl; while (!kbhit()); return 0; }

Примеры а) x=10; y=++x; Результат: y=11; x=11; б) x=10; y=x++; Результат: y=10; x=11; Примеры а) x=10; y=++x; Результат: y=11; x=11; б) x=10; y=x++; Результат: y=10; x=11;

Старшинство арифметических операций ++ -* / % + - Старшинство арифметических операций ++ -* / % + -

Операции сравнения и логические операции Операции сравнения и логические операции

Операции сравнения < <= > >= == != Операции сравнения < <= > >= == !=

Логические операции && и (and) || или (or) ! не (not) Логические операции && и (and) || или (or) ! не (not)

Примеры а) x 1>=x 2; б) ch==‘a’; в) if (!n%2) cout << n; если Примеры а) x 1>=x 2; б) ch==‘a’; в) if (!n%2) cout << n; если n – четное число, то в результате деления на 2 остаток равен нулю (“false”). Отрицание not преобразует этот результат в “true”и оператор печати выполняется.

Битовые операции • • • поразрядное И (конъюнкция) - & поразрядное ИЛИ (дизъюнкция) - Битовые операции • • • поразрядное И (конъюнкция) - & поразрядное ИЛИ (дизъюнкция) - | поразрядное исключающее ИЛИ - ^ логическое отрицание - ! сдвиги - << или >>

Поразрядные операции ОПЕРАНДЫ РЕЗУЛЬТАТЫ a b a&b a|b a^b !a 1 1 0 0 Поразрядные операции ОПЕРАНДЫ РЕЗУЛЬТАТЫ a b a&b a|b a^b !a 1 1 0 0 1 1 1 0 0 0 1

//Программа 6 Поразрядные операции #include <iostream> #include <conio. h> using namespace std; int main() //Программа 6 Поразрядные операции #include #include using namespace std; int main() { cout << "n 6 & 5 = " << (6 & 5); cout << "n 6 | 5 = " << (6 | 5); cout << "n 6 ^ 5 = " << (6 ^ 5); cout << "n !0 = " << (!0); while (!kbhit()); return 0; }

Результаты поразрядное И ( 6 & 5 ) = 4 1 1 0 1 Результаты поразрядное И ( 6 & 5 ) = 4 1 1 0 1 _______ 1 0 0

Результаты поразрядное ИЛИ ( 6 | 5 ) = 7 1 1 0 1 Результаты поразрядное ИЛИ ( 6 | 5 ) = 7 1 1 0 1 0 1 _______ 1 1 1

Результаты исключающее ИЛИ ( 6 ^ 5 ) = 3 1 1 0 1 Результаты исключающее ИЛИ ( 6 ^ 5 ) = 3 1 1 0 1 0 1 _______ 0 1 1

Логические операции • логическое И - && • логическое ИЛИ - || Логические операции • логическое И - && • логическое ИЛИ - ||

Выражения Выражения

Правила преобразования 1) все переменные и константы типов char и short int преобразуются в Правила преобразования 1) все переменные и константы типов char и short int преобразуются в int; 2) все переменные и константы типа float преобразуются в double; 3) для любой пары операндов: если один из операндов long double то и другой long double; если один из операндов double то и другой преобразуется в double; если один из операндов unsigned то и другой unsigned;

Явное указание типов Явное указание типов

Явное указание типов Формат: (ТИП) ВЫРАЖЕНИЕ Явное указание типов Формат: (ТИП) ВЫРАЖЕНИЕ

Пример Пусть x переменная целого типа; для того, чтобы x/2 имело тип float достаточно Пример Пусть x переменная целого типа; для того, чтобы x/2 имело тип float достаточно записать: (float) x/2

Операторы Операторы

Оператор присваивания а) i=i+2; эквивалентно i+=2 б) x=x*(y+1); эквивалентно x*=y+1; a=b=c=x*y; в) многократное присваивание Оператор присваивания а) i=i+2; эквивалентно i+=2 б) x=x*(y+1); эквивалентно x*=y+1; a=b=c=x*y; в) многократное присваивание (выполняется справа налево)

Условные операторы а) if б) if - else в) switch Условные операторы а) if б) if - else в) switch

Операторы if и if-else Формат: if (выражение) оператор - 1; [ else оператор - Операторы if и if-else Формат: if (выражение) оператор - 1; [ else оператор - 2; ];

false Выражение true Оператор s 1 false Выражение true Оператор s 1

!=0 =0 ВЫРАЖЕНИЕ true ОПЕРАТОР S 1 false ОПЕРАТОР S 2 !=0 =0 ВЫРАЖЕНИЕ true ОПЕРАТОР S 1 false ОПЕРАТОР S 2

Примеры а) if (a<0) y=a-3; if (x>0) && (x==1) y=sqrt(x); else y=1/x; б) в) Примеры а) if (a<0) y=a-3; if (x>0) && (x==1) y=sqrt(x); else y=1/x; б) в) if (a>=0) else y=a-3; if (a>b) z=a; else z=b; г)

//Программа 7 Вычисление площади треугольника по заданным длинам сторон a, b, c, #include <iostream> //Программа 7 Вычисление площади треугольника по заданным длинам сторон a, b, c, #include #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); float a, b, c; // длины сторон треугольника float p; // полупериметр float s; // площадь треугольника float coef=0. 5; int r; cout << «Введите длины сторон: n "; cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; r=(a>0)&&(b>0)&&(c>0)&&(a+b>c)&&(a+c>b)&&(b+c>a); if(r) { p=coef*(a+b+c); s=sqrt(p*(p-a)*(p-b)*(p-c)); cout << «Площадь треугольника =" << s; } else cout << «Треугольник построить нельзя!"; while (!kbhit()); return 0; }

Пример Заданы три числа a, b, c. Напечатать “Да”, если равны хотя бы два Пример Заданы три числа a, b, c. Напечатать “Да”, если равны хотя бы два числа и напечатать “Нет”, если нет равных чисел.

Вариант 1 #include <iostream> #include <conio. h> using namespace std; int main() { setlocale(LC_ALL, Вариант 1 #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int a, b, c; cout << “Введите числа a, b, c: " << "na= "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; if((a==b)&&(a==c)&&(b==c)||(a==b)||(a==c)||(b==c)) cout << «ДА"; else cout << “НЕТ"; while (!kbhit()); return 0; }

Вариант 2 #include <iostream> #include <conio. h> using namespace std; int main() { setlocale(LC_ALL, Вариант 2 #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int a, b, c; cout << «Введите числа a, b, c: " << "na= "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; if(a==b) cout << «ДА"; else if (a==c) cout << “ДА"; else if (b==c) cout << «ДА"; else cout << «НЕТ"; while (!kbhit()); return 0; }

Вариант 3 #include <iostream> #include <conio. h> using namespace std; int main() { setlocale(LC_ALL, Вариант 3 #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int a, b, c, k; cout << “Введите числа a, b, c: " << "na= "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; k=1; if (a==b) k=k+1; if (a==c) k=k+1; if (b==c) k=k+1; if (k>=2) cout << «ДА"; else cout << «НЕТ"; while (!kbhit()); return 0; }

Оператор switch - переключатель Формат: switch (выражение) { case константа 1 : оператор1 [break; Оператор switch - переключатель Формат: switch (выражение) { case константа 1 : оператор1 [break; ] case константа 2 : оператор2 [break; ] . [default : оператор] }

a m 1 m 2 mn s 1 s 2 sn a m 1 m 2 mn s 1 s 2 sn

Пример Вычислить значение функции z, в зависимости от нажатой клавиши: a, то z=x+y; b, Пример Вычислить значение функции z, в зависимости от нажатой клавиши: a, то z=x+y; b, то z=x-y; c, то z=x*y; при вводе любого другого символа печатается фраза “Сравнение не найдено”.

начало q q ‘a’ z=x+y ‘b’ ‘c’ z=x-y z=x*y z конец default Сравнение не начало q q ‘a’ z=x+y ‘b’ ‘c’ z=x-y z=x*y z конец default Сравнение не найдено

#include <iostream> #include <conio. h> using namespace std; int main() { setlocale(LC_ALL, #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int x=5, y=3, z; char q; cout << “Введите символ q: "; cin >> q; switch (q) { case 'a' : z=x+y; break; case 'b' : z=x-y; break; case 'c' : z=x*y; break; default : { cout << «Сравнение не найденоn"; goto end; } } cout << «Результат: n"; cout << "z=" << z; end: ; while (!kbhit()); return 0; }

Операторы цикла Операторы цикла