Презентация для JuJa вебинара о том, как писать рекурсивные программы с примером о вычислении факториала и чисел Фибоначчи. Также рассказывается о поиске линейном, бинарном, в глубину и в ширину, как работает поисковая система.
Презентация сделана для новичков в деле программистов.
Презентация для JuJa вебинара о том, как писать рекурсивные программы с примером о вычислении факториала и чисел Фибоначчи. Также рассказывается о поиске линейном, бинарном, в глубину и в ширину, как работает поисковая система.
Презентация сделана для новичков в деле программистов.
Основы языка Питон: функции, элементы функционального программирования, списочные выражения, генераторы. Презентация к лекции курса "Технологии и языки программирования".
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
Измерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Основы С++ (массивы, указатели). Задачи с массивамиOlga Maksimenkova
Расширенная версия презентации со школы учителей 2016. Изменён порядок материала, добавлены сортировки и индексация, слайды Незнанова А.А. и слайды с задачами.
Checkout the latest Merchandise, Autographed Memorabilia, Rare and Authentic Sports Gears and Clothing, Accessories, Drink ware etc. for all the MLB, NBA, NFL, and NHL Sports Teams available exclusively at Beckett Fan shop.
Основы языка Питон: функции, элементы функционального программирования, списочные выражения, генераторы. Презентация к лекции курса "Технологии и языки программирования".
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
Измерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Основы С++ (массивы, указатели). Задачи с массивамиOlga Maksimenkova
Расширенная версия презентации со школы учителей 2016. Изменён порядок материала, добавлены сортировки и индексация, слайды Незнанова А.А. и слайды с задачами.
Checkout the latest Merchandise, Autographed Memorabilia, Rare and Authentic Sports Gears and Clothing, Accessories, Drink ware etc. for all the MLB, NBA, NFL, and NHL Sports Teams available exclusively at Beckett Fan shop.
This is a short presentation I gave to library employees about the importance of LinkedIn for networking and building their own personal brand. Hope you enjoy!
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Yandex
В докладе пойдёт речь о методе сериализации произвольных данных, который применяется в Яндексе. Этот метод основан на отображаемых в память (mmapped) файлах и не требует операции декодирования. Мы рассмотрим его преимущества и недостатки, поговорим об общих принципах такой сериализации и об устройстве отображаемых аналогов стандартных контейнеров.
В докладе посмотрим на старые проверенные контейнеры из С++03, на новые из С++11/14, обсудим, какими контейнерами когда и зачем стоит пользоваться. Вместе с контейнерами взглянем на их окружение – алгоритмы и итераторы
В докладе посмотрим на старые проверенные контейнеры из С++03, на новые из С++11/14, обсудим, какими контейнерами когда и зачем стоит пользоваться. Вместе с контейнерами взглянем на их окружение – алгоритмы и итераторы.
Правила статического анализа кода для диагностики потенциально опасных констр...Sergey Vasilyev
В статье сформулированы правила диагностики потенциально опасных синтаксических конструкций в исходном коде программ на языке Си++. Описаны принципы построения статического анализатора исходного кода, реализующего проверку указанных правил.
1. Модуль 3: Основные понятия объектно-ориентированного
программирования.
Темы лекции: Строки. Потоки ввода-вывода.
Практическое задание: Ввод-вывод в С++.
Тренер: Игорь Шкулипа, к.т.н.
C++ Базовый. Занятие 12
3. http://www.slideshare.net/IgorShkulipa 3
Строки в C++
Для работы со строками в С++ используются классы
библиотеки STL.
Включаемый файл <string> содержит описания двух классов
строк, первый с символами типа char (однобайтовые
символы), второй с символами типа wchar_t (двухбайтовые
символы)
typedef basic_string <char> string;
typedef basic_string <wchar_t> wstring;
4. http://www.slideshare.net/IgorShkulipa 4
Доступ к элементу строки и добавление в конец строки
Доступ к элементу строки
⚫ at(size_type pos) const - доступ к символу в позиции pos;
⚫ reference at(size_type pos) - доступ к символу в позиции pos.
Если генерация исключения не нужна при некорректном аргументе pos, то
можно воспользоваться операцией [].
Добавление в конец строки
⚫ append(const basic_string& s) – добавление строки;
⚫ append(const basic_string& s, size_type pos, size_type npos) -
добавление части строки;
⚫ append(const char* s) - добавление C-строки;
⚫ append(const char* s, size_type n) - добавление части C строки;
⚫ append(size_type n, char c ) - добавление n символов c;
⚫ append(InputIterator first, InputIterator last) - добавление строки
заданной итераторами.
Методы возвращают ссылку на себя (*this). В качестве альтернативы
методам с одним аргументом можно воспользоваться операцией +=.
5. http://www.slideshare.net/IgorShkulipa 5
Присваивание данных строке
Присваивание данных строке
⚫ assign(const basic_string& s) – присваивание строки;
⚫ assign (const basic_string& s,size_type pos, size_type n) -
присв. части stl строки;
⚫ assign (const char* s) - присваивание C-строки;
⚫ assign (const char* s, size_type n) - присваивание части C-
строки;
⚫ assign (size_type n, char c) - присваивание n символов c;
⚫ assign (InputIterator first, InputIterator last) -
присваивание строки заданной итераторами.
Методы возвращают ссылку на себя (*this). В качестве альтернативы
методам с одним аргументом можно воспользоваться операцией =.
6. http://www.slideshare.net/IgorShkulipa 6
Методы сравнения строк
Сравнение строк
⚫ compare (const basic_string& str) - сравнение с stl строкой;
⚫ compare (size_type pos1, size_type n1, const basic_string&
str) const - сравнение с частью stl строки;
⚫ compare (size_type pos1,size_type n1,const basic_string&
str,size_type pos2,size_type n2) const - сравнение части stl
строки с частью stl строки;
⚫ compare (char* s) const - сравнение с C-строкой;
⚫ compare (size_type pos, size_type n1, char* s) const -
сравнение с C-строкой;
⚫ compare (size_type pos, size_type n1, char* s, size_type n2)
const - сравнение с C-строкой.
Методы сравнения возвращают следующие значения:
⚫ 0 - строки равны;
⚫ <0 - строка лексиграфически меньше со сравниваемой строкой;
⚫ >0 - строка лексиграфически больше со сравниваемой строкой.
В качестве альтернативы методам с одним аргументом можно
воспользоваться операциями ==, !=, < >, <=, >=.
7. http://www.slideshare.net/IgorShkulipa 7
Методы вставки данных
Вставка данных
⚫ insert (size_type pos1, const basic_string& s) - вставка stl
строки;
⚫ insert (size_type pos,const basic_string& s,size_type
pos2=0,size_type n=npos) - вставка части stl строки;
⚫ insert (size_type pos, const char* s) - вставка C-строки;
⚫ insert (size_type pos, const char* s, size_type n) - вставка
части C строки;
⚫ insert (size_type pos, size_type n, char c) - вставка
нескольких одинаковых символов.
Вставка данных, позиция вставки указана итератором:
⚫ insert (iterator p, char) - вставка символа;
⚫ insert (iterator p, size_type n, char c) - вставка нескольких
одинаковых символов;
⚫ insert (iterator p,InputIterator f,InputIterator l) - вставка
строки заданной итераторами.
Большинство методов возвращают ссылку на себя (*this).
8. http://www.slideshare.net/IgorShkulipa 8
Методы замены
Замена части строки
Замена участка строки, указанного позицией и размером:
⚫ replace (size_type pos,size_type n1, const basic_string& s) - замена stl
строкой;
⚫ replace (size_type pos1,size_type n1,const basic_string& str,size_type
pos2,size_type n2) - замена частью stl строкой;
⚫ replace (size_type pos, size_type n1, const char* s) - замена C строкой;
⚫ replace (size_type pos,size_type n1,const char* s,size_type n2) -
замена частью C строки;
⚫ replace (size_type pos, size_type n1, size_type n2, char c) - замена
несколькими символами.
Замена участка, указанного итераторами:
⚫ replace (iterator i1, iterator i2,const basic_string& str) - замена stl
строкой;
⚫ replace (iterator i1, iterator i2, const char* s) - замена C строкой;
⚫ replace (iterator i1, iterator i2, const char* s,size_type n) - замена
частью C строки;
⚫ replace (iterator i1, iterator i2, size_type n,char c) - замена
несколькими символами;
⚫ replace (iterator i1, iterator i2,InputIterator j1, InputIterator j2) -
замена строкой заданной итераторами.
Методы возвращают ссылку на себя (*this).
9. http://www.slideshare.net/IgorShkulipa 9
Методы поиска элементов строки
Поиск указанного элемента
⚫ find (const string& str) const - поиск stl строки;
⚫ find (const string& str, size_type idx) const - поиск stl строки
с указанной позиции;
⚫ find (const charT* s, size_type pos = 0) const - поиск C строки
с указанной позиции;
⚫ find (const charT* s, size_type pos, size_type n) const -
поиск подстроки с указанной позиции;
⚫ find (charT c, size_type pos = 0) const - поиск символа с
указанной позиции.
Также есть аналогичные методы rfind, делающие поиск справа налево.
Методы возвращают позицию найденного элемента или npos (обычно
равной -1).
10. http://www.slideshare.net/IgorShkulipa 10
Поиск символов, не входящих в строку
Поиск символа не входящего в строку
⚫ find_first_not_of (const basic_string& str, size_type
pos = 0) const;
⚫ find_first_not_of (const char* s,size_type
pos,size_type n) const;
⚫ find_first_not_of (const char* s,size_type pos=0)
const;
⚫ find_first_not_of (char c, size_type pos = 0) const.
Методы возвращают позицию найденного символа или npos (-1).
12. http://www.slideshare.net/IgorShkulipa 12
Удаление символов из строки
Удаление символов строки
⚫ erase (size_type pos=0,size_type n=npos) - удаляет n
символов с указанной позиции;
⚫ erase (iterator p) - удаляет один символ в указанной
позиции;
⚫ erase (iterator f, iterator l) - удаляет символы с
позиции f по l.
13. http://www.slideshare.net/IgorShkulipa 13
Другие методы строковых классов
begin() - итератор на первый символа;
end() - итератор на позицию за последним символом;
rbegin() - итератор на последний элемент (для обратных
алгоритмов);
rend() - итератор на позицию перед первым элементом (для
обратных алгоритмов);
size() - размер строки;
substr(size_type pos = 0, size_type n=npos) const -
выделение подстроки;
c_str() - преобразование в C строку (возвращается указатель
на первый символ);
copy(char* buf, size_type buf_size) const - копировать
buf_size символов в буфер;
copy(char* buf, size_type buf_size, size_type pos) const -
копировать buf_size символов с указанной позиции в буфер;
15. http://www.slideshare.net/IgorShkulipa 15
Классы ввода/вывода в C++
Объекты, связанные с консолью cout и cin - это обычные объекты. А
операторы извлечения из потока >> и вставки в поток << -
перегруженные операции классов этих объектов.
Базовым классом является класс ios. У класса ios довольно много
производных классов.
cin и cout - объекты классов istream (от Input Stream - поток ввода) и
ostream (от Output Stream - поток вывода) соответственно. Именно
для этих классов перегружены операторы извлечения и вставки.
Наследниками istream и ostream являются ifstream (от Input File
Stream) и ofstream (от Output File Stream).
Кроме того, есть ещё один класс - fstream (от File Stream - фаловый
поток), в котором объединены возможности ifstream и ofstream.
fstream наследует одновременно и от istream, и от ostream.
16. http://www.slideshare.net/IgorShkulipa 16
Текстовые и бинарные файлы
Текстовый файл Двоичный файл
1. Содержимое
представлено в
двоичном виде с
использованием
кодировок.
1. При открытии мы
видим текст.
1. Файл разбит на
блоки для
кодирования одной
буквы.
1. Содержимое
представлено в
двоичном виде.
1. Файл не разбит на
фиксированные
блоки (разбит по 1
байту).
17. http://www.slideshare.net/IgorShkulipa 17
Создание текстового файла
Необходимо включить заголовочный файл fstream (классы ifstream и
ofstream)
Также нужно подключить заголовочный файл iostream (операторы
вставки и извлечения из потоков)
ofstream os("text.txt");
os << "Hello, World!";
os.close();
Конструктор класса ofstream принимает параметр - символьную строку
содержащую название файла, в который будет осуществляться вывод.
Затем потоковый объект используется точно также как и cout. Только
вывод будет осуществляться не в консоль, а в файл text.txt.
Когда поток открывает файл, то этот файл блокируется, и никто не
сможет получить к нему доступ. Для этого и необходим вызов метода
close - файл закрывается и разблокируется.
18. http://www.slideshare.net/IgorShkulipa 18
Чтение текстового файла
char a[6];
ifstream is("text.txt");
is >> a;
is.close();
is использует оператор извлечения из потока, точно также как и
объект cin.
Для массива a выделено на один байт больше количества букв в
слове, так как в этот массив включается так же и символ конца
файла.
19. http://www.slideshare.net/IgorShkulipa 19
Двоичный режим записи и чтения файлов
Конструкторы классов ifstream и ofstream могут принимать
второй параметр - набор флагов. Одним из флагов указывается
двоичный режим:
ofstream os(“binary.bin", ios::binary);
ifstream is(“binary.bin", ios::binary);
Для чтения и записи двоичных файлов используются методы read
и write
void ofstream::write (char*, long);
void ifstream::read (char*, long);
20. http://www.slideshare.net/IgorShkulipa 20
Режимы открытия файла
fstream file;
file.open(file, "параметры через |");
Параметры:
⚫ ios::in - открыть файл для чтения
⚫ ios::out - открыть для записи в начало файла
⚫ ios::app - открыть для дозаписи в конец файла
⚫ ios::ate - установить указатель в конец файла
⚫ ios::thrunc - очистить файл если он существует
⚫ ios::binary - открыть файл в бинарном формате
21. http://www.slideshare.net/IgorShkulipa 21
Строковые потоки
В библиотеке STL есть также класс stringstream (заголовочный
файл #include <sstream>), который позволяет связать поток
ввода-вывода со строкой.
Всё, что выводится в такой поток, добавляется в конец строки;
всё, что считывается из потока — извлекается из начала
строки.
stringstream ss;
int choice;
cin >> choice;
ss << “Your choice is ” << choice << “n”;
string strText = “Formatted string= ”;
strText += ss.str();
cout << strText;
22. http://www.slideshare.net/IgorShkulipa 22
Лабораторная работа №12. Ввод-вывод в С++.
Создать программу, выполняющую копирование файлов.
Реализовать меню для управления копированием:
⚫ Скопировать файл
⚫ Скопировать часть файла
⚫ Удалить файл
⚫ Создать новый файл