Лекция 11. Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "Лекция 11. Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных"

Транскрипт

1 Технологии программирования Зима-Весна Лекция 11 Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных сетей

2 Вопросы, рассматриваемые на лекции 1. Динамические структуры данных: Стек 2. Очередь 3. Кольцевая очередь 4. Очередь с приоритетами 5. Связанные списки. Односвязный список 6. Связанные списки. Двусвязный список

3 1. Динамические структуры данных

4 Динамические структуры данных Динамические структуры данных-- это структуры, способные при необходимости выделять память под новые элементы или удалять выделенную память для ненужных элементов "на ходу". Существует несколько видов динамических структур данных: стеки, очереди, связанные списки, двоичные деревья и т.д. Каждая из них обладает определенными достоинствами и недостатками, поэтому выбор одной из них зависит от решаемой программистом задачи

5 Динамические структуры данных: Стек Стек (обычно реализуется с помощью массива) реализует концепцию LIFO (Last In First Out), то есть элемент который добавили в стек последним выйдет из него первым

6 Динамические структуры данных: Стек

7 Динамические структуры данных: Стек Стек характеризуется базовым адресом и указателем на вершину стека (Top). Под базовым адресом понимается начальный адрес памяти, в которой размещается стек (адрес, естественно, выбран случайным образом). Top - это указатель на самый верхний элемент стека. Все операции, связанные с добавлением элементов в стек или удалением элементов из стека, ориентируются на этот указатель.

8 Динамические структуры данных: Стек Динамическая структура Стек чаще всего используется при синтаксическом анализе всевозможных выражений (пример анализа корректности расстановки различных скобок, приведенный далее). Примечание: Каждое написанное вами приложение имеет собственный стек (на текущий момент обучения он существует в единственном экземпляре). В этой области памяти компилятор создает локальные переменные, через стек происходит передача параметров в функцию.

9 Практический пример работы со стеком Контроль расстановки скобок Данный пример демонстрирует работу стека на примере разбора арифметического выражения. Задачей разбора является контроль за расстановкой и порядком следования скобок.

10 Пример(1). Интерфейс класса "Стек" // Предотвращение повторной компиляции кода #ifndef STACK #define STACK class Stack { enum {EMPTY = -1, FULL = 999}; // Нижняя и верхняя границы стека char st[full + 1]; // Массив для хранения данных int top; // Указатель на вершину стека public: Stack(); // Конструктор void Push(char c); // Добавление элемента char Pop(); // Выталкивание элемента void Clear(); // Очистка стека bool IsEmpty(); // Проверка существования элементов в стеке bool IsFull(); // Проверка на переполнение стека int GetCount(); // Количество элементов в стеке }; #endif // STACK

11 Пример(2). Реализация функций класса "Стек" #include "stack.h" Stack::Stack() { // Изначально стек пуст top = EMPTY; } void Stack::Clear() { /*Эффективная "очистка" стека (данные в массиве все еще существуют, но функции класса, ориентированные на работу с вершиной стека, будут их игнорировать) */ top = EMPTY; }

12 Пример(3). Реализация функций класса "Стек" bool Stack::IsEmpty() { // Пуст? return top == EMPTY; } bool Stack::IsFull() { // Полон? return top == FULL; } int Stack::GetCount() { // Количество присутствующих в стеке элементов return top + 1; } void Stack::Push(char c) { /* Если в стеке есть место, то увеличиваем указатель на вершину стека и вставляем новый элемент*/ if(!isfull()) st[++top] = c; }

13 Пример(4). Реализация функций класса "Стек" char Stack::Pop() { /* Если в стеке есть элементы, то возвращаем верхний и уменьшаем указатель на вершину стека*/ if(!isempty()) return st[top--]; else // Если в стеке элементов нет return 0; }

14 Пример(5). Использование класса "Стек" /* Функция, осуществляющая контроль за правильностью расстановки скобок */ bool Brackets(char * str) { // Объект класса "Стек" Stack st; // Типы скобок, за которыми ведется контроль char left_bracket[] = "([{"; char right_bracket[] = ")]}"; char * p = 0; // Длина выражения int len = strlen(str);

15 Пример(6). Использование класса "Стек" for(int i = 0; i < len; i++) { // Поиск символа в строке p = strchr(left_bracket, str[i]); if(p!= 0) st.push(str[i]); // Левая скобка else { p = strchr(right_bracket, str[i]); // Правая скобка if(p!= 0) { int pos = p - right_bracket; // Позиция элемента в массиве правых скобок char bracket = st.pop(); // Извлечение последнего внесенного элемента

16 Пример(7). Использование класса "Стек" if(bracket == 0) // Стек пуст { cout << str << endl; for(int j = 0; j < i; j++) cout << " "; cout << "^" << endl; // Отсутствует соответствующая левая скобка cout << "Error: left bracket missed" << endl; cout << "Position: " << i + 1 << endl; return 0; }

17 Пример(8). Использование класса "Стек" // Поиск извлеченной скобки в массиве левых скобок p = strchr(left_bracket, bracket); if(pos!= p - left_bracket) // Скобки не совпадают { cout << str << endl; for(int j = 0; j < i; j++) cout << " "; cout << "^" << endl; // Несоответствие открывающей и закрывающей скобок cout << "Error: incorrect bracket order" << endl; cout << "Position: " << i + 1 << endl; return 0; } } } }

18 Пример(9). Использование класса "Стек" if(!st.isempty()) // Стек не пуст { cout << str << endl; for(int j = 0; j < i; j++) cout << " "; cout << "^" << endl; // В стеке остались "лишние" скобки cout << "Error: right bracket missed" << endl; cout << "Position: " << i + 1 << endl; return 0; } return 1; }

19 Пример(10). Использование класса "Стек" void main() { char str[200]; // Ввод выражения, например, 2 * (2 + 2) cout << "Input expression: "; cin.getline(str, 200); if(!brackets(str)) { // Действия в случае ошибки } else { // Действия в случае корректности выражения } }

20 2. Очередь

21 Динамические структуры данных: Очередь Простая очередь представляет концепцию FIFO (First In First Out), то есть элемент который добавили в очередь первым, первым ее и покинет. Ее можно реализовывать с помощью массива или с помощью связных списков

22 Динамические структуры данных: Очередь

23 Очередь. Пример Очередь в принтере Очередь сообщений в Windows Очередь з хлебом

24 Пример. Имитационное моделирование работы билетных касс Данный пример демонстрирует работу очереди на примере имитации работы билетных касс. Задачей имитации является определение значений выходных характеристик (например, среднее ожидание заявки в очереди и в системе, среднее время обслуживания заявки, плотность загрузки обслуживающих приборов и т. д.), исходя из заданных начальных параметров (например, количество обслуживающих приборов, ограничение на длину очереди, время обслуживания заявки и т. д.). Проект с исходным кодом можно найти в папке Queue.

25 3. Кольцевая очередь

26 Динамические структуры данных: Кольцевая очередь Кольцевая очередь - это разновидность обычной очереди. Она также представляет концепцию FIFO (First In First Out), то есть элемент, который добавили в очередь первым, первым ее и покинет. Отличие состоит в том, что элемент, покидающий очередь, не будет теряться безвозвратно, он будет перемещаться в её конец

27 Динамические структуры данных: Кольцевая очередь

28 Кольцевая очередь. Пример У вас в очереди 3 элемента 45,67,88. При обычной очереди после удаления первого элемента возникнет такая картина : 67,88. При использовании кольцевой будет 67,88,45. Т.е. удаляемый появляется в конце очереди.

29 Кольцевая очередь. Пример Данный пример демонстрирует принцип работы кольцевой очереди. В основе его лежит класс RingQueue, переработанный из класса Queue. Проект с исходным кодом можно найти в папке RingQueue.

30 4. Очередь с приоритетами

31 Очередь с приоритетами В реальных задачах иногда возникает необходимость в формировании очередей, отличных от FIFO(first in first out). Порядок выборки элементов из таких очередей определяется приоритетами элементов. Приоритет в общем случае может быть представлен числовым значением, которое вычисляется либо на основании значений каких-либо полей элемента, либо на основании внешних факторов. Так, и FIFO, и LIFO-очереди могут трактоваться как приоритетные очереди, в которых приоритет элемента зависит от времени его включения в очередь или как-то иначе.

32 Очередь с приоритетами При выборке элемента всякий раз выбирается элемент с наибольшим приоритетом. Возможны очереди с приоритетным включением - в которых последовательность элементов очереди все время поддерживается упорядоченной, т.е. каждый новый элемент включается на то место в последовательности, которое определяется его приоритетом, а при исключении всегда выбирается элемент из начала. Возможны и очереди с приоритетным исключением - новый элемент включается всегда в конец очереди, а при исключении в очереди ищется (этот поиск может быть только линейным) элемент с максимальным приоритетом и после выборки удаляется из последовательности.

33 Очередь с приоритетами. Пример Данный пример демонстрирует работу очереди с приоритетом. Проект с исходным кодом можно найти в папке QueueP.

34 5. Связанные списки

35 Связанные списки Предположим, что необходимо создать массив целых чисел, в который можно добавлять в любой момент времени любое количество целых значений. Данную задачу можно попытаться решить с помощью обычного массива. Однако это не удобно, так как размер массива становится фиксированным при создании массива. Такого типа ситуации обычно решаются с помощью связанных списков.

36 Связанные списки Связанный список - это линейный набор ссылающихся на себя структур, называемых узлами, и объединенных указателем-связкой. Доступ к связующим узлам производится через связывающий указатель, хранящийся в каждом узле. В отличие от массива, список не имеет фиксированного размера - он может расти или сокращаться по мере необходимости. Эта его особенность становится существенной, если число объектов в списке неизвестно до времени выполнения.

37 Связанные списки Односвязный список состоит из конкретных узлов, в состав каждого из которых входит значение, хранящееся в узле, например, для списка целых чисел это будет число, а также указатель, содержащий адрес следующего узла списка. В последнем узле списка указатель на следующий узел содержит NULL. Обязательным является указатель на начало списка, хранящий адрес первого узла списка.

38 Односвязный список

39 Связанные списки Элементы связанного списка не обязательно расположены в памяти друг за другом. Односвязный список назван так потому, что при использовании такого списка можно пройтись по нему из начала в конец списка, но не наоборот. Чтобы была возможность передвигаться по списку в оба конца, используются двусвязные списки. Две типичные операции: вставка узла и удаление узла.

40 Связанные списки. Вставка узла Если происходит вставка узла в односвязном списке, нужно выполнить следующие действия: 1. Необходимо выделить память под новый узел. 2. Записать в новый узел значение. 3. Записать в указатель на следующий узел в этом узле адрес узла, который должен располагаться после нового узла. 4. Заменить в узле, который будет располагаться перед новым узлом, записанный адрес на адрес нового узла. Если осуществить действия в другом порядке, то мы потеряем адрес узла, который должен располагаться после нового узла. А это означает, что мы не только не найдем этот узел, но и потеряем все узлы, расположенные за ним.

41 Связанные списки. Вставка узла

42 Связанные списки. Удаление узла В односвязном списке для удаления узла нужно выполнить следующие действия: 1. Записать адрес узла, следующего за удаляемым узлом, в указатель на следующий узел в узле, предшествующем удаляемому. 2. Удалить узел, предназначенный для удаления.

43 Связанные списки. Удаление узла

44 Односвязанный список. Пример(1) Интерфейс класса «Односвязный список» (List ) // Предотвращение повторного включения файла в проект #ifndef LIST #define LIST // Элемент данных struct Element { // Данные char data; // Адрес следующего элемента списка Element * Next; };

45 Односвязанный список. Пример(2) // Односвязный список class List { Element * Head; // Адрес головного элемента списка int Count; // Количество элементов списка public: List(); // Конструктор ~List(); // Деструктор void Add(char data); /* Добавление элемента в список (Новый элемент становится головным)*/

46 Односвязанный список. Пример(3) void Del();//Удаление элемента списка void DelAll(); // Удаление всего списка void Print(); /* Распечатка содержимого списка (Распечатка начинается с головного элемента) */ int GetCount(); /*Получение количества элементов, находящихся в списке*/ }; #endif

47 Пример(4). Реализация функций класса "Односвязный список" List::List() { Head = NULL; Count = 0; // Изначально список пуст } List::~List() {DelAll(); // Вызов функции удаления } int List::GetCount() { // Возвращаем количество элементов return Count; }

48 Пример(5). Реализация функций класса "Односвязный список" void List::Add(char data) { Element * temp = new Element; // создание нового элемента temp->data = data; // заполнение данными // следующий элемент - головной элемент списка temp->next = Head; // новый элемент становится головным элементом списка Head = temp; } void List::Del() { Element * temp= Head;// запоминаем адрес головного элемента Head = Head->Next; //перебрасываем голову на следующий элемент delete temp; // удаляем бывший головной элемент }

49 Пример(6). Реализация функций класса "Односвязный список" void List::DelAll() { while(head!= 0) //Пока еще есть элементы Del(); // Удаляем элементы по одному } void List::Print() { Element * temp= Head;// запоминаем адрес головного элемента while(temp!= 0) // Пока еще есть элементы {cout << temp->data; // Выводим данные temp = temp->next; // Переходим на следующий элемент } cout << endl; }

50 Пример(7). Использование класса "Односвязный список" // Тестовый пример void main() { List List lst; // Создаем объект класса char s[] = "Hello, World!!!\n"; // Тестовая строка cout << s << endl; // Выводим строку int len = strlen(s); // Определяем длину строки for(int i = 0; i < len; i++) // Загоняем строку в список lst.add(s[i]); lst.print(); // Распечатываем содержимое списка lst.del(); lst.del(); lst.del(); // Удаляем три элемента списка lst.print(); // Распечатываем содержимое списка }

51 6. Двусвязные списки

52 Двусвязные списки Двусвязный список также состоит из конкретных узлов, в состав каждого из которых входит значение, хранящееся в узле, указатель, содержащий адрес следующего узла списка. Но в отличие от односвязного списка, в каждом узле двусвязного списка хранится указатель, который содержит адрес предыдущего узла списка.

53 Двусвязные списки В первом узле указатель на предыдущий узел равен NULL. В последнем узле списка указатель на следующий узел также содержит NULL. Обязательным является указатель на начало списка, хранящий адрес первого узла списка, а также указатель на конец списка, хранящий адрес последнего узла. Изобразим двусвязный список, хранящий целые числа 12, 45, 9

54 Двусвязные списки

55 Вставка узла 1. Выделить память под новый узел. 2. Записать в новый узел значение. 3. В указатель на предыдущий узел записать адрес узла, который должен располагаться перед новым узлом. 4. Записать в указатель на следующий узел адрес узла, который должен быть расположен после нового узла. После этого уже не имеет значения, в каком узле (предыдущем или следующем) первым поменять значение адреса на адрес нового узла. Для примера мы поменяем значения в следующем порядке.

56 Вставка узла 5. В предыдущем узле заменяем значение указателя на следующий узел на адрес нового узла. 6. В следующем узле заменяем значение указателя на предыдущий узел на адрес нового узла.

57 Вставка узла

58 Вставка узла (алтернативный способ) 1. Выделяем память под новый узел. 2. Записываем в него значение. 3. В указатель на следующий узел записываем адрес узла, который должен располагаться после нового узла, а в том узле значение указателя на предыдущий узел заменяем на адрес нового узла. 4. В указатель на предыдущий узел записываем адрес узла, который будет располагаться перед новым узлом, и в этом узле значение указателя на следующий узел заменяем на адрес нового узла.

59 Удаление узла 1. Записать адрес узла, следующего за удаляемым узлом, в указатель на следующий узел узла, являющегося предыдущим для удаляемого узла. 2. Записать адрес узла, являющегося предыдущим для удаляемого, в указатель на предыдущий узел узла, следующего за удаляемым узлом. 3. Удалить узел, предназначенный для удаления.

60 Удаление узла

61 Двусвязные списки. Пример Данный пример демонстрирует создание и реализацию функций "навернутого" двусвязного списка. Проект с исходным кодом можно найти в папке List1.

62 Вопросы, рассмотренные на лекции 1. Динамические структуры данных: Стек 2. Очередь 3. Кольцевая очередь 4. Очередь с приоритетами 5. Связанные списки. Односвязный список 6. Связанные списки. Двусвязный список

63 СПАСИБО ЗА ВНИМАНИЕ!

Использование шаблона «Стек»

Использование шаблона «Стек» Использование шаблона «Стек» 2013 Интерфейс шаблона «Стек» template class Stack { void push (const T&); T pop (); T top () const; bool isempty() const ; bool isfull() const ; } //в стек //из

Подробнее

Лекция 6. Динамические структуры данных

Лекция 6. Динамические структуры данных Лекция 6. Динамические структуры данных СОДЕРЖАНИЕ 1 Списки... 3 1.1 Стек (LIFO)... 3 1.2 Очередь (FIFO)... 4 1.3 Односвязный и двусвязный списки... 5 2 Ассоциативный массив. Хэш-таблица... 9 2.1 Прямая

Подробнее

Практика программирования 9

Практика программирования 9 Практика программирования 9 Стек, очередь, дек. Реализация на основе ограниченного массива Замена рекурсии стеком и циклом Автомат с магазинной памятью Кувшинов Д.Р. КМиММ УрФУ Екатеринбург 2011 Контейнеры

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014. Лекция 14

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014. Лекция 14 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014 Лекция 14 1 Динамические структуры данных Стек (stack) это динамическая последовательность элементов, количество которых изменяется, причем

Подробнее

Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна

Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна Рекомендуемая литература Материал курса опирается на знания студентов, полученные ранее

Подробнее

Программы из нескольких файлов

Программы из нескольких файлов 102 В.Л. Тарасов Лекции по программированию на C++ Лекция 8 Программы из нескольких файлов Как правило, исходные тексты программ на C++ размещают в нескольких файлах. Это удобно, так как небольшой код

Подробнее

Лекция 3 ОБЪЕКТЫ И КЛАССЫ

Лекция 3 ОБЪЕКТЫ И КЛАССЫ Лекция 3 Курс «Информатика» ОБЪЕКТЫ И КЛАССЫ В этой лекции рассматриваются следующие вопросы: Абстрактные типы данных Абстрактные типы данных Класс Stock достаточно специфичен. Однако часто программисты

Подробнее

ADS-1 <3 > Линейные динамические ADT

ADS-1 <3 > Линейные динамические ADT 1/16 http://rain.ifmo.ru/cat/ ADS-1 Линейные динамические ADT c С. Е. Столяр, 2007 ses@mail.ifmo.ru c СПбГУ ИТМО, 2007 Кафедра компьютерных технологий Допускается свободное распространение с учебными

Подробнее

Простейшие контейнеры

Простейшие контейнеры Кафедра информационных систем и технологий http://edu.msiu.ru Е.А. Роганов Простейшие контейнеры Простейшие контейнеры 1 / 1 Простейшие контейнеры Контейнерные классы (container classes) классы, которые

Подробнее

ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК

ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК На этой лекции речь пойдёт о структурах данных. Теперь, когда синтаксис языка хорошо изучен, можно приступать к более сложным вещам. Задача Дана строка, состоящая из открывающих

Подробнее

Стеки и очереди Stacks and Queues

Стеки и очереди Stacks and Queues Стеки и очереди Stacks and Queues Это методы хранения и доступа к данным, для которых характерны следующие функции: 1.добавления 2.извлечение с удалением Stack. Основной принцип: первым удаляется последний

Подробнее

Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам

Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам Шаблоны 2013 Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию)

Подробнее

Лекция 4: Стек. Очередь. КурносовМихаил Георгиевич к.т.н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net Контроль 1.

Подробнее

Национальный исследовательский университет «МИЭТ» МИЭТ. Кафедра ПКИМС. Теория алгоритмов. Лекция 2. Способы организации данных

Национальный исследовательский университет «МИЭТ» МИЭТ. Кафедра ПКИМС. Теория алгоритмов. Лекция 2. Способы организации данных МИЭТ Национальный исследовательский университет «МИЭТ» Кафедра ПКИМС Теория алгоритмов Лекция 2 Способы организации данных Слайд 2 из 18 Общая классификация структур данных Данные Дискретные Линейные (составные)

Подробнее

14. Обобщённые классы

14. Обобщённые классы 14. Обобщённые классы 14.1. Обобщённые структуры данных 14.1-0 Написать обобщённый класс, реализующий квадродерево дерево, у каждого внутреннего узла которого ровно 4 потомка. Значения в узлах могут быть

Подробнее

Динамические структуры данных

Динамические структуры данных Динамические структуры данных Динамические массивы ( были рассмотрены на прошлом занятии ) Списки Стэк Очередь не входят в программу данного курса: Ассоциативные массивы Хеш-таблицы Очередь с приоритетом

Подробнее

структура одного элемента type LIST = celltype; celltype = record element: eltype; next: LIST end; position = celltype; Java_node

структура одного элемента type LIST = celltype; celltype = record element: eltype; next: LIST end; position = celltype; Java_node Реализация АТД список:динамические структуры List class структура одного элемента type LIST = celltype; celltype = record element: eltype; next: LIST end; position = celltype; Java_node 1 Реализация на

Подробнее

Практика программирования 17

Практика программирования 17 Практика программирования 17 Двоичное дерево поиска Сбалансированные деревья AA-дерево Кувшинов Д.Р. КМиММ УрФУ Екатеринбург 2012 Двоичное дерево Binary tree Структура из элементов (узлов). Один из узлов

Подробнее

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы ООП. С++. Вопросы для проверки и закрепления знаний. 1. Проанализируйте ранее разработанные Вами программы и ответьте на вопрос: в каких из них наблюдается слабая связь между структурой данных и функционированием

Подробнее

ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ. Лекция 6 10 октября 2016 г.

ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ. Лекция 6 10 октября 2016 г. ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ Лекция 6 10 октября 2016 г. СОСТАВНЫЕ ТИПЫ ДАННЫХ ЗАПИСИ Объединяют разнотипные данные (элементы, поля), относящиеся к одному объекту из предметной области. struct Point

Подробнее

Абстрактные типы и структуры данных

Абстрактные типы и структуры данных Абстрактные типы и структуры данных 1 Абстрактный тип данных (АТД) это тип данных, который предоставляет для работы с элементами этого типа определѐнный набор операций (функций ) а также возможность создавать

Подробнее

Стеки и очереди. Глава 4. Другие структуры. Инструменты программиста. Ограничение доступа

Стеки и очереди. Глава 4. Другие структуры. Инструменты программиста. Ограничение доступа Глава 4 Стеки и очереди В этой главе рассматриваются три структуры данных: стек, очередь и приоритетная очередь. Сначала будут описаны основные отличия этих структур от массивов, а затем мы рассмотрим

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016. Лекция 24

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016. Лекция 24 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016 Лекция 24 1 Хеш-таблицы Словарные операции: добавление, поиск и удаление элементов по их ключам. Организуется таблица ключей: массив Index[m]

Подробнее

Студенческая лаборатория МФТИ-Intel. Структуры данных. Гареева Оксана

Студенческая лаборатория МФТИ-Intel. Структуры данных. Гареева Оксана Студенческая лаборатория МФТИ-Intel Структуры данных Гареева Оксана Oksana.gareeva@gmail.com 10.11.12 http://ilab.mipt.ru План лекци: Структуры данных. Общие понятия. Введение в указатели Структура: список

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 15

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 15 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017 Лекция 15 1 Списки Односвязный список это динамическая структура данных, каждый элемент которой содержит ссылку на следующий элемент (либо NULL,

Подробнее

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы.

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. 1. Статическая (static) переменная класса Добавим в определение класса статическую переменную: private: // double x;

Подробнее

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Содержание Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Что такое язык программирования?...20 В чем различие между C и C++?.........................................21 Обязательно

Подробнее

Начало История Библиотеки. Название. Лекция 1. Введение. Объектно-ориентированное программирование на C ++ 7 сентября 2009 г.

Начало История Библиотеки. Название. Лекция 1. Введение. Объектно-ориентированное программирование на C ++ 7 сентября 2009 г. Название Лекция 1. Введение Объектно-ориентированное программирование на C ++ 7 сентября 2009 г. Лекция 1 1 / 11 C C ++ Цели, ставившиеся при создании С Цели Непосредственная работа с памятью Структурные

Подробнее

Лекция 9. Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных

Лекция 9. Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных Технологии программирования Зима-Весна Лекция 9 Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных сетей Вопросы, рассматриваемые на лекции 1. Частные (private) элементы

Подробнее

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 5 Структуры данных (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем Юрьевич Кардинальные числа типов данных Общим свойством

Подробнее

Министерство РФ по связи и информатизации. Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ

Министерство РФ по связи и информатизации. Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ Министерство РФ по связи и информатизации Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ к лабораторным работам по дисциплине «Структуры и алгоритмы обработки

Подробнее

Язык программирования Си++ Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки.

Язык программирования Си++ Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки. Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки. 1. Массивы объектов Встроенное в язык Си++ понятие

Подробнее

Язык программирования Си

Язык программирования Си Язык программирования Си Бикулов Д.А., Иваницкая Н.В., Иванов А.П. Семинар 6. Указатели. Передача параметра в функцию по указателю. Функции работы с динамической памятью. Динамические массивы. Указатель

Подробнее

Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти.

Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти. Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти. 1. Дружественные функции Дружественные функции обладает такими же правами доступа к данным класса, как и его

Подробнее

Курс «Алгоритмы и алгоритмические языки» Лекция 11

Курс «Алгоритмы и алгоритмические языки» Лекция 11 Курс «Алгоритмы и алгоритмические языки» Лекция 11 1 Списки Односвязный список это динамическая структура данных, каждый элемент которой содержит ссылку на следующий элемент (либо NULL, если следующего

Подробнее

Программирование на языке С++ с использованием классов.

Программирование на языке С++ с использованием классов. Лабораторная работа 1 Программирование на языке С++ с использованием классов. Цель работы: 1) изучить возможности программирования классов на языке С++; 2) получить основные навыки программирования манипуляторов

Подробнее

Структуры данных. Программирование на языке С и С++

Структуры данных. Программирование на языке С и С++ Министерство образования Российской Федерации Южно-Уральский государственный университет Кафедра информатики Е.А. Конова, Г.А. Поллак, А.М. Ткачев Структуры данных. Программирование на языке С и С++ Учебное

Подробнее

Стандартная библиотека шаблонов STL

Стандартная библиотека шаблонов STL Стандартная библиотека шаблонов STL STL (Standard Template Library) является частью стандарта C++. Ядро STL состоит из четырех основных компонентов: контейнеры, итераторы, алгоритмы, распределители памяти.

Подробнее

Язык Си. Реализация списков с помощью цепочек динамических объектов

Язык Си. Реализация списков с помощью цепочек динамических объектов Язык Си. Реализация списков с помощью цепочек динамических объектов А. А. Вылиток В языке Си нет встроенных типов данных и операций для работы со списками. Программируя на языке Паскаль (в котором также

Подробнее

4. Понятие класса. Программа 7. Класс Box

4. Понятие класса. Программа 7. Класс Box 4. Понятие класса Класс определяет новый тип данных, используя который можно определять переменные этого типа, которые называются объектами или экземплярами класса. Объявление класса имеет вид: class classname

Подробнее

Лекция 2. Как выполняются программы на C++

Лекция 2. Как выполняются программы на C++ http://compscicenter.ru 1/21 Лекция 2. Как выполняются программы на C++ Александр Смаль CS центр 15 сентября 2016 Санкт-Петербург http://compscicenter.ru 2/21 Типы данных Целочисленные: 1. char (символьный

Подробнее

Лекция 1. Динамические массивы и некоторые структуры данных.

Лекция 1. Динамические массивы и некоторые структуры данных. Лекция 1. Динамические массивы и некоторые структуры данных. План лекции Массивы Динамические массивы в С Динамические массивы в С++ Вектор Стек и Очередь и Дек и 2 Массивы

Подробнее

Вариант выбирать в соответствии с собственным порядковым номером в списке группы. В случае нехватки вариантов считать, что нумерация циклическая.

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

Подробнее

Деревья. Двоичные деревья

Деревья. Двоичные деревья Рис. 1 Деревья Мы будем понимать под деревом неориентированный связный граф без циклов. Если убрать требование связности, получится понятие, представляющее собой набор из нескольких не связанных между

Подробнее

STL: последовательные контейнеры

STL: последовательные контейнеры http://compscicenter.ru 1/13 Александр Смаль CS центр 10 февраля 2016 Санкт-Петербург http://compscicenter.ru 2/13 STL: введение STL = Standard Template Library STL описан в стандарте C++, но не упоминается

Подробнее

Лабораторная работа 10. Краткая теория

Лабораторная работа 10. Краткая теория Лабораторная работа 10 Тема: Программирование с использованием динамической структуры стек Цель: Изучить методы организации списочных структур в динамической памяти. Реализовать алгоритмы помещения и изъятия

Подробнее

Лекция 9. Списки, деки

Лекция 9. Списки, деки Название Лекция 9., деки Объектно-ориентированное программирование на C ++ 1 ноября 2009 г. Лекция 9 1 / 23 Концепция списка Начало Концепция списка Характеристики Перенос элементов Аналоги алгоритмов

Подробнее

Дистанционная подготовка к Всероссийской олимпиаде по информатике

Дистанционная подготовка к Всероссийской олимпиаде по информатике Дистанционная подготовка к Всероссийской олимпиаде по информатике Преподаватели: к.ф.-м.н., заведующий кафедрой «САПР» ДВГУПС Пономарчук Юлия Викторовна E-mail: yulia.ponomarchuk@gmail.com преподаватель

Подробнее

Лекция 21 Обход двоичного дерева

Лекция 21 Обход двоичного дерева Лекция 21 Обход двоичного дерева 21.1. Определение двоичного дерева. Двоичное дерево это множество узлов, которое либо является пустым, либо состоит из корня и двух непересекающихся двоичных деревьев,

Подробнее

Программирование и основы алгоритмизации. Лекция 5 Рекурсивные структуры данных. Деревья

Программирование и основы алгоритмизации. Лекция 5 Рекурсивные структуры данных. Деревья Программирование и основы алгоритмизации Лекция 5 Рекурсивные структуры данных. Деревья Рекурсивные структуры данных По аналогии с рекурсивным вызовом функции существуют структуры данных, допускающие рекурсивное

Подробнее

Шаблоны C++ Абстрактное программирование

Шаблоны C++ Абстрактное программирование Абстрактное программирование Это произведение доступно по лицензии Creative Commons Attribution-ShareAlike ( Атрибуция На тех же условиях ) 3.0 Непортированная. http://creativecommons.org/licenses/by-sa/3.0/deed.ru

Подробнее

STL: последовательные контейнеры

STL: последовательные контейнеры http://compscicenter.ru 1/11 Александр Смаль CS центр 12 февраля 2014 Санкт-Петербург http://compscicenter.ru 2/11 STL: введение STL = Standard Template Library STL описан в стандарте C++, но не упоминается

Подробнее

Алгоритмизация и программирование

Алгоритмизация и программирование Алгоритмизация и программирование Программирование на С/С++ (ч.12 указатели) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Указатели Указатель переменная, значением

Подробнее

РЕАЛИЗАЦИЯ СТРУКТУР ДАННЫХ

РЕАЛИЗАЦИЯ СТРУКТУР ДАННЫХ РЕАЛИЗАЦИЯ СТРУКТУР ДАННЫХ Чтобы рисовать слона, надо его сначала увидеть. Вьетнамская пословица Содержание 2 Понятие структуры данных Основные структуры данных Реализация структур данных в языке Pascal

Подробнее

«Северо-Кавказский институт бизнеса, инженерных и информационных технологий» (ЧОУ ВО СКИБИИТ) Кафедра информационных технологий

«Северо-Кавказский институт бизнеса, инженерных и информационных технологий» (ЧОУ ВО СКИБИИТ) Кафедра информационных технологий «Северо-Кавказский институт бизнеса, инженерных и информационных технологий» (ЧОУ ВО СКИБИИТ) Кафедра информационных технологий Алгоритмы и структуры данных методические указания по выполнению лабораторных

Подробнее

Шаблоны. 1. Механизм шаблонов реализует в С++ параметрический полиморфизм.

Шаблоны. 1. Механизм шаблонов реализует в С++ параметрический полиморфизм. Шаблоны 1. Механизм шаблонов реализует в С++ параметрический полиморфизм. 2. Шаблон представляет собой предварительное описание функции или класса, конкретное представление которых зависит от параметров

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 18

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 18 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017 Лекция 18 1 Двоичное дерево набор узлов, который: либо пуст (пустое дерево), либо разбит на три непересекающиеся части: узел, называемый корнем,

Подробнее

Стандартная библиотека шаблонов STL

Стандартная библиотека шаблонов STL Стандартная библиотека шаблонов STL STL (Standard Template Library) является частью стандарта C++. Ядро STL состоит из четырех основных компонентов: контейнеры, итераторы, алгоритмы, распределители памяти.

Подробнее

Полякова Ирина Николаевна

Полякова Ирина Николаевна Полякова Ирина Николаевна Сборник заданий по Си для практических занятий в компьютерном классе. Методическое пособие для студентов бакалавриата по направлению Прикладная математика и информатика, 2010.

Подробнее

Практика программирования C++ Самостоятельная работа 6

Практика программирования C++ Самостоятельная работа 6 Практика программирования C++ Самостоятельная работа 6 Рассмотрим машину, называемую конечный автомат, которая работает в пошаговом режиме; начав с некоторого (начального) состояния, на каждом шаге считывает

Подробнее

В.Л. Тарасов Лекции по программированию на C++

В.Л. Тарасов Лекции по программированию на C++ 60 В.Л. Тарасов Лекции по программированию на C++ Лекция 4 Массивы и вектора Массив представляет собой набор последовательно пронумерованных элементов одного типа. Все элементы массива имеют одно имя,

Подробнее

АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ СЛОЖНОСТИ АЛГОРИТМОВ С ПОМОЩЬЮ MOCK-ОБЪЕКТОВ. Е.А. Тюменцев

АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ СЛОЖНОСТИ АЛГОРИТМОВ С ПОМОЩЬЮ MOCK-ОБЪЕКТОВ. Е.А. Тюменцев Математические структуры и моделирование 2013. 1(27). С. 82 88 УДК 004.053 АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ СЛОЖНОСТИ АЛГОРИТМОВ С ПОМОЩЬЮ MOCK-ОБЪЕКТОВ Е.А. Тюменцев В статье описывается способ тестирования

Подробнее

1 Связные списки. struct Node { int d; // элемент данных Node *n; // указатель на следующий узел Node(int dd, Node *nn = nullptr): d(dd), n(nn) {} };

1 Связные списки. struct Node { int d; // элемент данных Node *n; // указатель на следующий узел Node(int dd, Node *nn = nullptr): d(dd), n(nn) {} }; 1 Связные списки Ранее мы уже познакомились с массивами средством объединения нескольких однотипных переменных, доступных по номеру, который может быть результатом выражения. Как мы знаем, этот способ

Подробнее

Программирование в C++ Преподаватель Колотова Людмила Павловна

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 7-го занятия по практике Массивы. Определение массивов. Доступ к элементам массивов. Среднее арифметическое элементов массива

Подробнее

Введение в программирование Урок 13: Анализ сложности

Введение в программирование Урок 13: Анализ сложности Введение в программирование Урок 13: Анализ сложности Введение в компьютерные науки - урок 13 1 Анализ сложности программы по времени Функция f1() ищет индекс такого элемента в массиве a[], который присутствует

Подробнее

Такое приведение леса к двоичному дереву называется естественным соответствием между лесом и двоичными деревьями.

Такое приведение леса к двоичному дереву называется естественным соответствием между лесом и двоичными деревьями. Лекция 22 Топологическая сортировка. 22.1. Представление произвольного дерева в виде двоичного. 22.1.1. В отличие от двоичного дерева произвольное дерево не может быть пустым (по определению оно должно

Подробнее

СТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ. Методические указания к лабораторным работам для студентов

СТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ. Методические указания к лабораторным работам для студентов Министерство общего и профессионального образования Российской Федерации Новосибирский Государственный Технический Университет СТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ Методические указания к лабораторным работам

Подробнее

План практикума по курсу «Алгоритмы и структуры данных»

План практикума по курсу «Алгоритмы и структуры данных» План практикума по курсу «Алгоритмы и структуры данных» Приводится примерный список задач для разбора на практических занятиях (38 часов 19 пар). Занятия 1-4 (8 часов). Работа с файлами. 1. Дан текстовый

Подробнее

СТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ

СТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ СТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ Методические указания к лабораторным работам для студентов 1 курса ФПМиИ ( направление 010400 прикладная математика и информатика, направление 010500 математическое обеспечение

Подробнее

ЛЕКЦИЯ 9 ДЕРЕВЬЯ. ДВОИЧНОЕ ДЕРЕВО ПОИСКА. СБАЛАНСИРОВАННЫЕ ДЕРЕВЬЯ

ЛЕКЦИЯ 9 ДЕРЕВЬЯ. ДВОИЧНОЕ ДЕРЕВО ПОИСКА. СБАЛАНСИРОВАННЫЕ ДЕРЕВЬЯ ЛЕКЦИЯ 9 ДЕРЕВЬЯ. ДВОИЧНОЕ ДЕРЕВО ПОИСКА. СБАЛАНСИРОВАННЫЕ ДЕРЕВЬЯ 1. Деревья как структуры данных Сегодняшняя лекция посвящена структурам данных. Из курса теории графов известно определение дерева как

Подробнее

Курс «Алгоритмы и алгоритмические языки» Лекция 17

Курс «Алгоритмы и алгоритмические языки» Лекция 17 Курс «Алгоритмы и алгоритмические языки» Лекция 17 1 Представление двоичного дерева в памяти компьютера Описание узла двоичного дерева на Си: typedef struct bin_tree { char info; struct bin_tree *left;

Подробнее

Динамическое выделение памяти и исключения в С++

Динамическое выделение памяти и исключения в С++ Лабораторная работа 4 Динамическое выделение памяти и исключения в С++ Цель работы: 1) изучить менеджер памяти С++ 2) изучить различные способы обработки исключений; 3) получить практические навыки программирования

Подробнее

Основы платформы Microsoft.NET

Основы платформы Microsoft.NET Основы платформы Microsoft.NET Тема: Управление памятью Переменные величины и ссылки...1 Выделение памяти...2 Удаление объектов из памяти...4 Дефрагментация кучи...4 Поколения объектов...5 Деструкторы...7

Подробнее

Перегрузка функций. Перегрузка операторов

Перегрузка функций. Перегрузка операторов Лабораторная работа 3 Перегрузка функций. Перегрузка операторов Цель работы: 1) изучить возможности программирования классов на языке С++; 2) получить основные навыки программирования. Теоретические сведения

Подробнее

Глава 17. Двоичные деревья. Для чего нужны двоичные деревья?

Глава 17. Двоичные деревья. Для чего нужны двоичные деревья? Глава 17 Двоичные деревья ПРИМЕЧАНИЕ В этой главе рассматривается одна из самых интересных и полезных базовых структур данных двоичное дерево. Двоичные деревья представляют собой идеальный пример использования

Подробнее

Тема 1.1 Функции в С. Понятие функции

Тема 1.1 Функции в С. Понятие функции Тема 1.1 Функции в С Понятие функции Опыт показывает, что для написания больших программ лучше пользоваться функциями. В таком случае программа будет состоять из отдельных фрагментов кода. Такой отдельный

Подробнее

АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ

АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ»

Подробнее

Лекция 11. Итераторы

Лекция 11. Итераторы Название Общая характеристика Обзор категорий Лекция 11. Итераторы Объектно-ориентированное программирование на C ++ 9 декабря 2009 г. Лекция 11 1 / 26 Общая характеристика итераторов Название Общая характеристика

Подробнее

Программирование в C++ Преподаватель Колотова Людмила Павловна

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 9-го занятия по практике Указатели. Адреса и указатели. Указатель на void Указатели и массивы. Указатели и строки Диаграммы UML

Подробнее

Языки программирования и методы трансляции

Языки программирования и методы трансляции Языки программирования и методы трансляции Имена, связывание, области видимости 1 Время связывания 2 3 Статические области видимости Динамические области видимости Имя, область видимости и связывание Имя

Подробнее

Стековый компилятор формул

Стековый компилятор формул Кафедра информационных систем и технологий http://edu.msiu.ru Е.А. Роганов Стековый компилятор формул Задача перевода Любой компилятор (транслятор) или интерпретатор решает задачу автоматического перевода

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на Лекция 13. Области действия и времена жизни Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Основные понятия Область действия

Подробнее

Министерство Образования и Науки РФ. Кафедра Вычислительной математики. Курсовой проект. по дисциплине «Программирование»

Министерство Образования и Науки РФ. Кафедра Вычислительной математики. Курсовой проект. по дисциплине «Программирование» Министерство Образования и Науки РФ Новосибирский Государственный Технический Университет Кафедра Вычислительной математики Курсовой проект по дисциплине «Программирование» на тему «База данных произвольных

Подробнее

Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы

Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы Программирование, численные методы и информатика Александр Валерьевич Позднеев Кафедра автоматизации

Подробнее

Лекция 3. Массивы, указатели и ссылки

Лекция 3. Массивы, указатели и ссылки http://compscicenter.ru 1/18 Лекция 3. Массивы, указатели и ссылки Александр Смаль CS центр 22 сентября 2016 Санкт-Петербург Указатели Указатель это переменная, хранящая адрес некоторой ячейки памяти.

Подробнее

Глава 11. Контейнерные классы

Глава 11. Контейнерные классы Глава 11. Контейнерные классы Контейнерные классы это классы, предназначенные для хранения данных, организованных определенным образом. Один и тот же вид контейнера можно использовать для хранения данных

Подробнее

Лекция 14. Полиморфизм

Лекция 14. Полиморфизм Название Полиморфизм Лекция 14. Полиморфизм Объектно-ориентированное программирование на C ++ 13 декабря 2009 г. Лекция 14 1 / 37 Полиморфизм Название Полиморфизм Пример struct C1 void f() cout

Подробнее

ЧАСТЬ І. МЕТОДЫ РЕШЕНИЯ ЗАДАЧ 23 Глава 1. Принципы программирования и разработки программного обеспечения 24

ЧАСТЬ І. МЕТОДЫ РЕШЕНИЯ ЗАДАЧ 23 Глава 1. Принципы программирования и разработки программного обеспечения 24 Содержание Предисловие 13 Обращение к студентам 13 Метод изложения 14 Необходимые условия 14 Гибкость 14 Абстракция данных 15 Решение задач 16 Приложения 16 Новый и переработанный материал 16 Обзор 17

Подробнее

Лекция 8. Введение в STL. Контейнеры, последовательности, векторы

Лекция 8. Введение в STL. Контейнеры, последовательности, векторы Название Определения STL Структура STL Лекция 8. Введение в STL., последовательности, векторы Объектно-ориентированное программирование на C ++ 1 октября 2010 г. Лекция 8 1 / 33 Основные определения Название

Подробнее

Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей

Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей 1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков работы с указателями. 2. ОСНОВНЫЕ ПОНЯТИЯ Указатель это переменная,

Подробнее

Функции ref out определении вызове Main()

Функции ref out определении вызове Main() Функции Функции представляют собой блоки кода, позволяющие выполнять одни и те же операции над различными значениями данных. Функции определяются один раз и могут вызываться из любой точки приложения.

Подробнее

Язык программирования Си++ Семинар 6. Шаблоны функций и классов. Библиотека стандартных шаблонов (STL).

Язык программирования Си++ Семинар 6. Шаблоны функций и классов. Библиотека стандартных шаблонов (STL). Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 6. Шаблоны функций и классов. Библиотека стандартных шаблонов (STL). 1. Шаблоны функций Часто бывают ситуации, когда один и тот же алгоритм

Подробнее

Курс лекций "программирование" Объектно-ориентированное программирование на языке C++ Лекция 3. Шаблоны, линейные списки

Курс лекций программирование Объектно-ориентированное программирование на языке C++ Лекция 3. Шаблоны, линейные списки Курс лекций "программирование" Лекция 3. Шаблоны, линейные списки Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Шаблоны Позволяют параметризировать определение функции или класса так, чтобы

Подробнее

Лекция 4. Динамическая память

Лекция 4. Динамическая память http://compscicenter.ru 1/21 Александр Смаль CS центр 1 октября 2014 Санкт-Петербург http://compscicenter.ru 2/21 Зачем нужна динамическая память? Стек программы ограничен. Он не предназначен для хранения

Подробнее

Обход деревьев на основе автоматного подхода

Обход деревьев на основе автоматного подхода Статья опубликована в журнале Компьютерные инструменты в образовании, 2004, 3, с 32-37. Г. А. Корнеев, Н. Н. Шамгунов, А. А. Шалыто Санкт-Петербургский государственный университет информационных технологий,

Подробнее

Лекция 12. Динамические структуры данных

Лекция 12. Динамические структуры данных Лекция 12. Динамические структуры данных Понятие динамических структур данных Функции выделения/освобождения памяти Динамический массив Стандартные контейнеры Операции над контейнерами 1 Понятие динамических

Подробнее

Введение в С++11 (стандарт ISO/IEC 14882:2011 Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами:

Введение в С++11 (стандарт ISO/IEC 14882:2011 Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами: (стандарт ISO/IEC 14882:2011 ) Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами: ведение понятий лямбда-функций и выражений, внешние шаблоны, альтернативный синтаксис шаблонных

Подробнее

Массивы и их обработка

Массивы и их обработка Массивы и их обработка Линейные массивы. Двумерные массивы. Сортировка Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Массивы - основы Массив это структура данных,

Подробнее

Лекция 3. Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных

Лекция 3. Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных Технологии программирования Зима-Весна Лекция 3 Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных сетей Вопросы, рассматриваемые на лекции 1. Представление целых и вещественных

Подробнее

Реализация параллелизма с использованием «эффективных объектов»

Реализация параллелизма с использованием «эффективных объектов» Реализация параллелизма с использованием «эффективных объектов» Решение задач организации параллелизма приложения происходит традиционно, применяя вытесняющую многозадачность. Такая схема целесообразна,

Подробнее