Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Программирование – 2 курс осень 2020 – 1 занятие

ТиМПИ
September 08, 2020
260

Программирование – 2 курс осень 2020 – 1 занятие

ТиМПИ

September 08, 2020
Tweet

More Decks by ТиМПИ

Transcript

  1. dscs.pro spbu.ru 3/22 Преобразование типов double x = 1; float

    y = 1; if(x == y) cout<<“yes”; double x = 0.5; float y = 0.5; if(x == y) cout<<“yes”; double x = 0.5; float y = 0.5; if(x == (double)y) cout<<“yes”; 1) 2) 3)
  2. dscs.pro spbu.ru 4/22 Преобразование типов (как не надо) int x

    = 10; unsigned y = 11; cout<<x - y; int x = 10; if(x) cout<<“yes”; double x = 0.5; float y = 0.5; if(x == y) cout<<“yes”; 1) 2) 3)
  3. dscs.pro spbu.ru 5/22 Имена, объявление и определение Объявление и определение:

    extern int i; static int j; int k; • Идентификатор должен быть осмысленным; • Имена переменных обычно состоят из строчных символов. Например, index, а не Index или INDEX; • Имена классов обычно начинаются с прописной буквы, например Sales_item; • Несколько слов в идентификаторе разделяют либо символом подчеркивания, либо прописными буквами в первых символах каждого слова. Например: student_loan или studentLoan, но не studentloan.
  4. dscs.pro spbu.ru 6/22 Область видимости int x = 10 void

    func() x++; func(); cout<<x; void func(){ int x = 10 x++;} func(); cout<<x; void func(){ static int x = 10 x++;} func(); cout<<x; 1) 2) 3)
  5. dscs.pro spbu.ru 7/22 Ссылки Ссылка — это не объект, а

    только другое имя уже существующего объекта. int ival = 1024; int &refVai = ival; // refVal ссылается на другое имя, ival int &refVal2; // ошибка: ссылку следует инициализировать
  6. dscs.pro spbu.ru 8/22 Указатели (1/3) Указатель (pointer) — это составной

    тип, переменная которого указывает на объект другого типа. double dval; double *pd = &dval;// ok: инициализатор - адрес // объекта типа double double *pd2 = pd; // ok: инициализатор – указатель // на тип double int *pi = pd; // ошибка: типы pi и pd // отличаются pi = &dval; // ошибка: присвоение адреса // типа double
  7. dscs.pro spbu.ru 9/22 Указатели (2/3) Хранимое в указателе значение (т.е.

    адрес) может находиться в одном из четырех состояний: • Оно может указывать на объект. • Оно может указывать на область непосредственно за концом объекта. • Это может быть нулевое значение, означающее, что данный указатель не связан ни с одним объектом. • Оно может быть недопустимо. Любое иное значение, кроме приведенного выше, является недопустимым.
  8. dscs.pro spbu.ru 10/22 Указатели (3/3) int ival = 42; int

    *р = &ivai; // р содержит адрес ival ; р - указатель на // ival cout << *р; // * возвращает объект, на который // указывает р; выводит 42 *р = 0; // * возвращает объект; присвоение // нового значения ival через указатель р cout << *р; // выводит 0 int *pl = nullptr; // эквивалентно int *pl = 0;
  9. dscs.pro spbu.ru 11/22 const, псевдонимы типа, auto const int bufSize

    = 512; // размер буфера ввода bufSize = 512; // ошибка: попытка записи в // константный объект typedef double wages; // wages – синоним для double typedef wages base, *p; // base - синоним для double, //a p - для double* using SI = Sales_item; // SI - синоним для Sales_item auto item = vail + val1; // item инициализируется // результатом val1 + val2
  10. dscs.pro spbu.ru 12/22 Собственные типы данных struct Sales_data { int

    cost; unsigned units_sold = 0; double revenue = 0.0; }; Sales_data things; cin>>things.cost>>things.units_sold; cout<<things.revenue // 0.0 Sales_data things2; If (things > things2) сout<<“yes”; // ошибка
  11. dscs.pro spbu.ru 13/22 Пространство имён #include <iostream> // объявление using;

    при использовании имени cin теперь подразумевается , что оно принадлежит пространству имен std using std::cin; int main(){ int i; cin >> i; // ok : теперь cin - синоним std ::cin cout << i; // ошибка: объявления using нет; std::cout << i; // ok : явно указано применение cout из // пространства имен std return 0; }
  12. dscs.pro spbu.ru 14/22 Библиотека String (1/4) Строка (string) — это

    последовательность символов переменной длины. Чтобы использовать тип string, необходимо включить в код заголовок string. Поскольку тип string принадлежит библиотеке, он определен в пространстве имён std (стандартной библиотеки). #include <string> string s1; // инициализация по умолчанию; s1 — пустая строка
  13. dscs.pro spbu.ru 16/22 String (3/4). Пример работы string s1, s2;

    s1 = “Hello ”; cin >> s2; // введём «World» cout << s2.empty(); // вывод «false»; cout << s1 + s2 + “!”; // вывод «Hello World!» cout << s1[4]; // вывод буквы «o» cout << s1==s2; // вывод «false»
  14. dscs.pro spbu.ru 18/22 Библиотека Vector (1/4) Вектор (vector) — это

    коллекция объектов одинакового типа, каждому из которых присвоен целочисленный индекс, предоставляющий доступ к этому объекту. Вектор — это контейнер (container), поскольку он "содержит" другие объекты. #include <vector> vector <int> ivec; // ivec содержит объекты // типа int vector vector <Sales_vec> ivec2; // содержит объекты класса //Sales_vec vector <vector<string>> file; // вектор векторов // (двумерный вектор)
  15. dscs.pro spbu.ru 21/22 Vector (4/4). Пример работы vector <int> v1;

    vector <int> v2; v1 = {1, 2, 3, 4}; cout<<v2.empty(); // вывод «true» cout<<v1.size(); // вывод «4» cout<<v2.push_back(2); // вывод и запись «2» cout<< v2 == v1; // вывод «false»
  16. dscs.pro spbu.ru 23/22 Задачи 1) Дано: входная строка состоящая из

    символов D и F. Например: DDDFFDFFFD или DFFDD. Найти минимальное количество удалений чтобы в строке не было повторений подряд. Например: DFFD —> DFD(1 удаление), DFDFFFDFD —> DFDFDFD (2 удаления). 2) Дано: строка представленная в CamelCase найти количество слов в данной строке. Например: etoLuchshayaParaNaSvete (5 слов), matmehLuchsheVseh (3 слова). 3) Проверить пароль на надежность: Длинна не меньше 6 символов; Содержит хотя бы 1 цифру; Содержит хотя бы один английский символ нижнего регистра; Содержит хотя бы один английский символ нижнего регистра; Содержит один из специальных знаков. Список спец знаков: !@#$%^&*()-+