Основы С++ 1 курс ИС Информатики 1 семестр, семинар 3
Проверка домашнего задания Вопросы: 1. Что такое программа? 2. Что такое структурное программирование? 3. Что такое директива препроцессора? 4. Какие символы входят в состав алфавита С++? 5. Что такое идентификатор? 6. Перечислите основные правила создания идентификаторов. 7. Что такое венгерская нотация? 8. Применение знака нижнего подчеркивания в идентификаторах. 9. Что такое ключевые слова? 10. Что такое знаки операций? На листе с ответом обязательно указать: Номер работы: 1 Дата выполнения: Группа: Фамилия:
Структурное программирование — это технология создания программ, позволяющая путем соблюдения определенных правил уменьшить время разработки и количество ошибок, а также облегчить возможность модификации программы.
Ключевые слова это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Например: asm auto bool break case catch char else enum explicit export extern false float new operator private protected public register reinterpret_cast this throw true try typedef typeid typename class const_cast continue default delete do double dynamic_cast for friend goto if inline int long mutable namespace return short signed sizeof static_cast struct switch template union unsigned using virtual void volatile wchar_t while
Венгерская нотация - давать объектам осмысленные имена. каждое слово, составляющее идентификатор, начинается с прописной буквы, а вначале ставится префикс, соответствующий типу величины, например, : i. Max. Length, lpfn. Set. First. Dialog. Другая традиция — разделять слова, составляющие имя, знаками под черкивания: maxjength, number_of_galosh.
Переменные и константы ВЫРАЖЕНИЕ = операнды + знаки операций + скоби Операнды – задают данные для вычислений, являются выражением или его частным случаем константой или переменной. Операции – задают действия, которые нужно выполнить согласно приоритетов выполнения. Переменная — это именованная область памяти, в которой хранятся данные определенного типа. Переменные – это значения, которые могут изменяться в ходе выполнения программы. У переменной есть имя и значение. Имя служит для обраще ния к области памяти, в которой хранится значение. Во время выполнения про граммы значение переменной можно изменять. Перед использованием любая переменная должна быть описана. Общий вид оператора описания переменных: [класс памяти] [const] тип имя [инициализатор]; Правила задания составных частей оператора описания переменных: § Класс памяти определяет время жизни и область видимости программного объекта (в частности, переменной). Необязательный класс памяти может принимать одно из значений auto, extern, static и register. § Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют именованной константой, или просто константой. § При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах — со знаком равенства: • = значение • ( значение ) Константа – некая постоянная величина, должна быть инициализирована при объявлении. В одном операторе можно описать несколько переменных одного типа, разделяя их запятыми.
• • • ПРИМЕРЫ int a; //целая переменной с именем а а =7; // а присвоено значение 7 int a=7; // операция инициализации – мы определяем переменную и задаем ей значение int a (7); //операция инициализации – мы определяем переменную и задаем ей значение float x; //вещественная переменная х short int a = 1; // целая переменная а const char С = ‘С’; // символьная константа С char s, sf = ‘f’; // инициализация относится только к sf char t (54); // инициализация символьной переменой t float с = 0. 22, x(3), sum; // вещественные переменные…
Выполним задания
Какие из приведенных ниже определений переменных содержат синтаксические ошибки? (a)int car = 1024, auto = 2048; (b) int ival = ival; (c) int ival( int() ); (d) double salary = wage = 9999. 99; (e) cin >> int input_value;
Найдите ошибку в данном примере. Исправьте запись. int main() { float f; int a; int pi; f = a = pi = 0; }
Какие имена объектов недопустимы в С++? Измените их так, чтобы они стали синтаксически правильными: (a) int double = 3. 14159; (b) vector< int > _; (c) string namespase; (d) string catch-22; (e) char 1_or_2 = '1'; (f) float Float = 3. 14 f;
Понятие типа данных В любом алгоритмическом языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип. Тип данных определяет: § внутреннее представление данных в памяти компьютера; § множество значений, которые могут принимать величины этого типа; § операции и функции, которые можно применять к величинам этого типа. Все типы языка C++ можно разделить на основные и составные. В языке C++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов.
Основные типы данных Для описания основных типов определены следующие ключевые слова: 1. int (целый); 2. char (символьный); 3. wchar_t (расширенный символьный); 4. bool (логический); Тип 5. float (вещественный); 6. double (вещественный с двойной точностью). char представление и диапазон значений стандартных типов: § short (короткий); § long (длинный); § signed (знаковый); § unsigned (беззнаковый). Диапазон 1 128, … 127 unsigned char Спецификаторы типа - уточняют внутреннее Длина, байт 1 0, … 255 int 2 32768, … 32767 unsigned int 2 0, … 65535 long int 4 unsigned long int 4 float 4 3. 4 e 38… 3. 4 e 38 double 8 long double 10 логического типа нет любой 0 – это ложь, в противном случае истина
Основные операции языка C++ В соответствии с количеством операндов, которые используются в операциях, они делятся на унарные (один операнд), бинарные (два операнда) и тернарную (три операнда). операция Унарные операции + + sizeof ~ ! + & * new delete (type) Краткое описание увеличение на 1 уменьшение на 1 размер поразрядное отрицание логическое отрицание арифметическое отрицание (унарный минус) унарный плюс взятие адреса разадресация выделение памяти освобождение памяти преобразование типа операция Бинарные и тернарная операции * / % + << >> < <= > >= = = != & ^ | && || ? : = *= /= %= += = <<= >>= &= |= ^= , Краткое описание умножение деление остаток от деления сложение вычитание сдвиг влево сдвиг вправо меньше или равно больше или равно //можно спутать с = не равно поразрядная конъюнкция (И) поразрядное исключающее ИЛИ поразрядная дизъюнкция (ИЛИ) логическое ИЛИ условная операция (тернарная) присваивание умножение с присваиванием деление с присваиванием остаток отделения с присваиванием сложение с присваиванием вычитание с присваиванием сдвиг влево с присваиванием сдвиг вправо с присваиванием поразрядное ИЛИ с присваиванием поразрядное исключающее ИЛИ с присваиванием последовательное вычисление
Арифметические операции Символ операции Значение * Умножение / Деление % Остаток от деления + Сложение Вычитание Особенности использования деления Деление целых чисел дает в результате целое число. Дробная часть результата, если она есть, отбрасывается: int A 1 = 21 / 6; int A 2 = 21 / 7; И A 1, и A 2 в итоге получат значение 3.
Использование деления cout<<20/11; //на экран выведется только целое число, которое получается при делении (20/11=1), если убрать остаток cout<<20%11; //на экран выведется остаток от деления 20/11 , т. е. 9 Для вывода на экран числа с запятой можно использовать такой код: #include
Операция деление по модулю Операция остаток (%), называемая также делением по модулю, возвращает остаток от деления первого операнда на второй, но применяется только к операндам целого типа (char, short, int, long). Результат положителен, если оба операнда положительны. Если же один или оба операнда отрицательны, результат зависит от реализации, то есть машинно зависим.
Что будет выведено на экран? … int main() { cout<< "Celaya chast ot delenia = "<<20/11; cout<<"n"; cout<< "Ostatok = "<<20%11; cout<<"n"; cout<<"Resultat"<
Операция деление по модулю Операция остаток (%), называемая также делением по модулю, возвращает остаток от деления первого операнда на второй, но применяется только к операндам целого типа (char, short, int, long). Результат положителен, если оба операнда положительны. Если же один или оба операнда отрицательны, результат зависит от реализации, то есть машинно-зависим. Примеры правильного и неправильного использования деления по модулю: 3. 14 % 3; // ошибка: операнд типа double 21 % 6; // правильно: 3 21 % 7; // правильно: 0 21 % -5; // машинно-зависимо: -1 или 1 int а = 1024; double d= 3. 14159; а % 12; // правильно: 85 а % d; // ошибка: операнд типа double
Задание В чем разница между приведенными выражениями с операцией деления? double n 1 = 10. 0, n 2 = 3. 0; int a 1 = 10, a 2 = 3; d= n 1 / n 2; a= а 1 / a 2;
Задание Вычислите периметр квадрата, зная диагональ
Вычислите периметр квадрата, зная диагональ начало Ввод значения диагонали d Вывод значения периметра Р конец
Домашняя работа Написать код программы на С++ Вычислите площадь треугольника по трем сторонам Для подготовки используем: Павловская Т. А. С/С++. Программирование на языке высокого уровня – Спб. : Питер, 2004. – 461 с. : ил. ISBN 5 -94723 -568 -4 (с начала + переменные и выражения) начало Ввод значений сторон a, b, c Вывод значения площади конец
Домашнее задание Для подготовки используем: Павловская Т. А. С/С++. Программирование на языке высокого уровня – Спб. : Питер, 2004. – 461 с. : ил. ISBN 5 94723 568 4


