C++ - занятие 2 24.02.2009Язык С++ - занятие 21. Какие типы вы бы использовали? age // возраст salary // зарплата за месяц (в рублях) grade// средний.

Презентация:



Advertisements
Похожие презентации
C++ - занятие 2 1. Какие типы вы бы использовали? height // рост salary // зарплата за месяц (в рублях) grade// средний балл charshort longint unsigned.
Advertisements

Д.з Язык С++ - занятие 31. Задача 1: 1/1 + 1/3 + 1/5 … #include using namespace std; int main() { int n; cin >> n; double sum = 0;// Сумма for.
1 Язык С++. 2 Спец.семинар «Язык С++» Симуни Михаил Лазаревич msimuni.wikidot.com/cpp группа спец.семинар "Язык С++" (мат-мех 13)
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
1 Переопределение операций Макаревич Л. Г.. 2 Зачем нужна перегрузка операций? class Complex { double re; double im; public: Complex(double r=0, double.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
УКАЗАТЕЛИ. Переменная - это именованная область памяти с заданным типом. [=значение]; int a; //Переменная типа integer с именем a int b=2;// Переменная.
Двумерные динамические массивы. Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы. Другими словами, это набор.
©ρŧą Базовые конструкции языка.
Основы информатики Лекция. Функции Заикин Олег Сергеевич
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Лекция 3 по дисциплине «Программные средства математических расчетов» тема: «Операторы циклов и работа с массивами в С++» гр. 8Е31 Мамонова Татьяна Егоровна.
Д.з. на 7 апреля Язык С++1. Задача 1: * и *= для rational class rational { int num, den; public: rational(int num_=0, int den_=1) : num(num_), den(den_)
Введение в C++ Урок 1-2.
МАССИВЫ 4 Определение 4 Описание 4 Обращение к элементам массива 4 Связь массивов с указателями 4 Примеры программ.
Лекция 3 ПЕРВЫЕ ПРОГРАММЫ, ВВОД/ВЫВОД В ЯЗЫКЕ С++
Массивы и строки Лекция 5. Одномерные массивы. Объявление. Общая форма объявления: тип имя_переменной[размер]; Пример: double balance[100]; balance[3]
Операторы языка Си Лекция 5.
Транксрипт:

C++ - занятие Язык С++ - занятие 21

Какие типы вы бы использовали? age // возраст salary // зарплата за месяц (в рублях) grade// средний балл charshort longint floatdouble unsigned Я бы написал так: int age; long salary; // (м.б. double ??) double grade;// (м.б. float?) Язык С++ - занятие 22

Можно ли так написать? Чему будут равны i, j, k? int i=3; int j=2; int k=1; 1. i %= j; 2. i = j++ > 0 || k++ > 0; 3. (i *= 10) += j; 4. i = (int n = 2)*j; 5. i = sizeof(j++); 6. i = '9' - '0'; // i = 1 // i = 1; j = 3; k = 1; // j = 32 // ошибка // i = 2 или 4; j = 2; // i = Язык С++ - занятие 23

Операторы Язык С++ - занятие 24

Оператор-выражение выражение; выражение - как правило, присваивание или вызов функции. i = 5; f(5); Но, в принципе, может быть любое выражение: i+1; // так писать можно (хотя бессмысленно) 5; Язык С++ - занятие 25

Составной оператор { несколько операторов или описаний } { int tmp = x; x = y; y = tmp; } Язык С++ - занятие 26

Условный оператор if (x > y) cout

Циклы while и do … while цикл while while ( условие ) оператор i = 0; while ( i < 10 ) { cout > x; } while (x != 0) всегда хотя бы 1 раз выполняется Язык С++ - занятие 28

Цикл for for (инициализация; условие окончания; шаг) оператор; for (int i = 0; i < N; i++) … for (int i = 1; i

break; и continue; break; выход из ближайшего цикла или оператора switch continue; переход на следующий виток цикла for (int i = 0; i < 100; i++) { if (a[i] < 0) continue; s += a[i]; } Язык С++ - занятие 210

Пример: «полтора цикла» // Найти произведение чисел пока > 0 int p = 1; for (;;) { int n; cin >> n; if (n < 0) break; p *= n; } Язык С++ - занятие 211

switch switch ( ocenka ) { case 1: case 2: cout

Пустой оператор ; while (a[i++] != 0); Язык С++ - занятие 213

Простая программа на C++ #include using namespace std; int main() { int n; cin >> n; int prod = 1;// Вычисляем факториал for (int i=2; i

Самые частые простые ошибки 1. if (i = 0) if (i == 0) 2. f; f(); Язык С++ - занятие 215

Указатели Язык С++ - занятие 216

Язык С++ - занятие 217 Указатели Описание:тип * переменная; int* p;// Указатель на int Переход по указателю:*указатель int i = *p; *p += 10;

Язык С++ - занятие 218 Указатели (продолжение) Адрес:&обьект; int j; p = &j; *p = 5;// То же, что j = 5 Нулевой указатель p = 0; if (p != 0) { …

Язык С++ - занятие 219 Указатели – динамическая память Динамическая память: new и delete p = new int; p = new int(56);// С инициализацией … delete p; Динамическое отведение массивов p = new int[k]; // Отвести массив из k элементов Освобождение массивов delete [] p;// Не забыть [] !!!

Язык С++ - занятие 220 Ошибки при работе с указателями p = 0; *p = 5; 2. int* p; *p = 5;// Wild pointer 3. delete p; *p = 5; 4. p = q; … delete p; … *q = 5; Dangling pointers

Язык С++ - занятие 221 Ошибки при работе с динамической памятью int* p = new int; p = 0; 2. p = new int; … p = new int; Memory leak (утечка памяти)

Указатели и массивы Адресная арифметика Язык С++ - занятие 222

Язык С++ - занятие 223 Указатели и массивы int a[100]; int* p; p = a; // a – адрес нулевого эл-та (&a[0]) p + n; // на n ячеек вперед p - n; // на n ячеек назад p += n p -= n p++ p p1 – p2 // Сколько ячеек между p1 и p2? if (p1 < p2) p[i] // Как бы считаем p началом массива // p[i] тоже, что *(p+i)

Зачем это все? С указателями можно работать, как с массивами int* p = new int[k]; p[3] = 1; С массивами можно работать с помощью указателей int a[100]; for (int* p = а; p < a + 100; p++) { s += *p; } Язык С++ - занятие 224

Замечания Равенства: &a[i] то же, чтоа+i &a[0]то же, чтоа Операции с массивами не отличаются (почти) от указателей А в чем все-таки отличаются? Язык С++ - занятие 225

Функции Язык С++ - занятие 226

Функция - пример int 1 max(int i, int j 2 ) { int result = i; if ( i < j ) result = j; return 3 j; } int k = max(i, j); Замечания: 1. тип результата 2. описания параметров разделяются запятыми 3. выход из функции Язык С++ - занятие 227

Как в C++ описать функцию, которая ничего не возвращает? void f(int i) { if (i>0) cout

Массивы, как параметры Язык С++ - занятие 229

Что будет, если массив передать, как параметр? int arr[100]; … cout

Массив, как параметр - продолжение int sum(int *a) // Или, просто как замечание, можно { // написать так s = 0; for (int* p = a; p < a+100; p++) s += *p; return s; } int sum(int a[])// транслируется в int sum(int* a) Замечание о длине массива: А можем мы как-то в функции узнать длину массива? Ну и что тогда делать? Передавать длину в качестве доп. параметра или что-то в таком роде Язык С++ - занятие 231

Дополнительные возможности для функций Язык С++ - занятие 232

Язык С++ - занятие 233 inline inline int square(int i) { return i*i; } n

Параметры по умолчанию void f(int i, int j = 55) { … } f(3) f(3, 55) Замечания: Умолчания могут быть для нескольких параметров Нельзя опускать параметры в середине (только в конце)

Перегрузка (overload) void f(int i) {… } void f(double j) { … } OK, компилятор различит: f(5);// Первая функция f(3.14);// Вторая функция Может перегружаться с разным количеством аргументов int f(int i) { … } double f(int i) { … } Можно так писать? int f(int i) { … } int f(int i, int j = 0) { … } А так можно писать? Компилятор должен однозначно понимать, какая функция вызывается

Объявление функции (прототип) void f(int i, int j); … cout

Д.з Язык С++ - занятие 237

Задачи 1. reverse(a); Параметр: массив из 20 чисел. Переставить числа в обратном порядке. Описать такую функцию. Желательно реализовать с помощью арифметики указателей (не используя []) 2.Треугольная матрица Массив указателей: int* a[10]; а. Отвести динамич.массивы длины 1, 2, 3… Заполнить: на диагонали 1, остальные 0 (рисунок был на занятии). б. Напечатать все элементы. 3. а – массив из 100 чисел. В нем сначала идет несколько четных, а потом только нечетные числа. Найти количество четных чисел. Желательно искать быстро (подсказка – метод деления пополам). Но если не получится, напишите любым способом. 3. Изменение п-ров (старинный способ:). Пусть мы хотим написать ф-ю, которая удваивает свой параметр. Раньше делали так: int i; twice(&i); … void twice(int* p) { …допишите дальше … Язык С++ - занятие 238