- •21. Основные понятия структурного программирования. Идентификаторы. Переменные и константы. Тип данных. Выражения. Инструкция присваивания. Теорема о структурировании. Базовые управляющие структуры.
- •Константы
- •Переменные
- •1. Добавление звена в начало списка
- •2. Удаление звена из начала списка
- •Операция над строками Создание строк
- •Преобразования строк
- •Очередь fifo
- •27. Сортировка. Спецификация задачи сортировки. Простые алгоритмы сортировки массивов: пузырьковая сортировка, сортировки простым обменом, вставкой и слиянием.
- •Псевдокод
- •Анализ алгоритма
- •Псевдокод
- •Работа с типизированными файлами
- •Работа с нетипизированными файлами
- •29. Указатели и динамическое распределение памяти. Понятие указателя. Виды указателей. Динамическое и статическое распределение памяти. Разадресация и разыменование. Проблемы использования указателей.
- •31. Свойства классов. Доступ к членам класса. Статические члены классов. Массивы объектов классов. Указатель объекта класса на себя. Дружественные функции. Перегрузка операторов.
- •33. Обобщенное программирование. Шаблоны функций и классов. Параметры шаблона. Специализация шаблона. Создание объектов на основе шаблона класса. Примеры.
- •Параметры шаблонов
- •Специализация и создание объектов
- •Примеры
1. Добавление звена в начало списка
-
{Процедура добавления звена в начало списка; в x содержится добавляемая информация}
Procedure V_Nachalo(Var First : U; X : BT);
Var Vsp : U;
Begin
New(Vsp);
Vsp^.Inf := X;
Vsp^.Next := First; {То звено, что было заглавным, становится вторым по счёту}
First := Vsp; {Новое звено становится заглавным}
End;
2. Удаление звена из начала списка
-
{Процедура удаления звена из начала списка;
в x содержится информация из удалённого звена}
Procedure Iz_Nachala(Var First : U; Var X : BT);
Var Vsp : U;
Begin
Vsp := First; {Забираем ссылку на текущее заглавное звено}
First := First^.Next; {То звено, что было вторым по счёту, становится заглавным}
X := Vsp^.Inf; {Забираем информацию из удаляемого звена}
Dispose(Vsp); {Уничтожаем звено}
End;
Строки
В разных языках строки представлены по-разному и стандарт на строковый тип сложился относительно недавно. Когда говорят о строковом типе, то обычно различают тип, представляющий:
отдельные символы, чаще всего, его называют типом char;
строки постоянной длины, часто они представляются массивом символов;
строки переменной длины - это, как правило, тип string, соответствующий современному представлению о строковом типе.
Строки символов можно хранить либо в обычных символьных массивах либо в объектах специальных строковых типов (или классов). В любом случае чаще всего строки реализуются на базе одномерных символьных массивов. Строковые объекты отличаются от просто символьных массивов возможностью применять к ним: операции сравнения, конкатенации (стыковки) и др., для обработки строк существует большой набор процедур и функций (поиск в строках, реализация вставки, удаления, поиска и замены и множество других действий).
Строки С++
В С++ хранение строк организуется в виде C-строк. С-строка – последовательность символов, хранящаяся в символьном массиве char[], оканчивающаяся нулевым символом '\0' (признак конца строки).
Операция над строками Создание строк
Проиллюстрирую создание строк на фрагментах кода с комментариями.
char str1[10]; // Строка - массив из 10 символов. Начальное значение символов не определено. char str2[10]="Hello"; /* Используется инициализация (не присваивание!). В первые 5 символов записывается “Hello”, в 6 – нуль-терминатор, значение трех последних не определено.*/ char str3[10]={'H', 'e', 'l', 'l', 'o', '\0'}; //Эквивалентно предыдущему. char str4[10]="Very long line"; //Ошибка. Массив из 10 элементов нельзя инициировать более длинной последовательностью. char str5[]="Very long line"; /*Компилятор автоматически определяет длину массива (в нашем случае 15) и инициализирует его последовательностью символов. */ char* str6; /*Строка - указатель на символ. В большинстве случаев для ее использования потребуется выделить память.*/ str6= new char[10]; delete [] char; |