
- •Часть 2
- •Раздел 3. Основы программирования
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.2.Структура программы
- •3.3.Имена и зарезервированные слова
- •3.4.Специальные символы
- •3.5.Константы и переменные
- •3.6.Оператор присваивания
- •Листинг 3.4. Пример множественного присваивания
- •3.7.Комментарии
- •4.Задание
- •Лабораторная работа №2 Арифметические операции и функции
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1.Типы целых чисел
- •3.2.Типы вещественных чисел
- •3.3.Арифметические выражения
- •3.4.Функции
- •3.5.Преобразование типов
- •4.Задание
- •Лабораторная работа №3 Ввод и вывод данных
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1. Ввод и вывод
- •3.2.Дополнительные возможности ввода/вывода
- •3.3.Форматированный ввод/вывод
- •4.Задание
- •Лабораторная работа №4 Логические операции
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1. Условный оператор
- •3.2.Условная операция
- •3.3.Оператор выбора
- •3.4.Составной оператор
- •3.5.Сложные условия
- •3.6.Тип bool(логический)
- •3.7.Особенности работы условного оператора
- •4.Задание
- •Лабораторная работа №5 Циклические операции
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1. Оператор цикла while (цикл с предусловием)
- •3.2.Оператор цикла do (цикл с постусловием)
- •3.3.Оператор цикла for (счетный цикл)
- •3.4.Вложенные циклы
- •3.5.Операторы прерывания цикла
- •4.Задание
- •Лабораторная работа №6 Указатели и массивы
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1. Указатели
- •3.2.Константные указатели и указатели-константы
- •3.3.Операции над указателями
- •3.4.Массивы
- •3.5.Одномерные массивы
- •3.6.Указатели на массивы
- •3.7.Инициализация массивов
- •3.8.Операция sizeof
- •3.9.Определение новых типов
- •3.10.Многомерные массивы
- •4.Задание
- •Лабораторная работа №7 Функции и процедуры
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1.Описание функций
- •3.2.Процедуры
- •3.3.Параметр-ссылка
- •3.4.Область видимости переменных
- •4.Задание
- •Лабораторная работа №8 Перегрузка функций
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1.Полиморфизм
- •3.2.Перегрузка функций
- •3.3.Особенности перегрузки функций
- •3.4.Использование параметров по умолчанию
- •4.Задание
- •Лабораторная работа №9 Перечисления
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •4.Задание
- •Лабораторная работа №10 Строки символов
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1.Данные типа char
- •3.2.Строковый тип string
- •4.Задание
3.2.Строковый тип string
Как вы уже поняли, пользоваться С-строками крайне неудобно -постоянно надо думать о размерах строк, код получается сложный, нечитаемый, Это было сделано из-за желания достичь максимального быстродействия языка С (вспомните, его задачей была замена низкоуровневого ассемблера). C++ призван в первую очередь облегчить жизнь программисту, поэтому специально для строковых операции в нем появился новый тип - string. Чтобы использовать данный тип необходимо подключить одноименный заголовочный файл
(Листинг 3.73):
Листинг 3.73. Использование типа string
Как уже видно из приведенного простого примера (Листинг 3.60), типом string пользоваться гораздо удобней - он поддерживает oneрации конкатенации (объединения), сравнения, присваивания, индексирования и много других, кроме того, многочисленные функции-методы через оператор "точка", вот некоторые из них:
size_t.length () -возвращает длину строки;
void
swap
(string
&s)
-обменивает
содержимое строки с содержимым
строки s;
string& insert (size_ type pos, const char *s),
string& insert(size_ type pos, const string &s),
string& insert (size_ type pos, size type count, char c) -вставляет элемент
(строку или символ) в строку, начиная с позиции pos. В варианте №3 (вставка символа) есть дополнительный параметр count, указывающий сколько раз вставить символ с.
Пример. Показать использование методов тина string (Листинг 3.74).
Листинг 3.74. Использование методов типа string
В примере, приведенном выше (Листинг 3.74), показана тонкость использования типа string: более эффективно передавать string в функции как ссылку (или, как в примере, константную ссылку). Как вы уже знаете, что при передаче переменной в качестве параметра-ссылки, в функцию передается лишь адрес переменной (см. тему "Функции"). Если для базовых типов вроде int, bool, float и т.д. это не критично, то для сложных типов, таких как string — это имеет большое значение, т.к. строки могут быть очень большого размера (вплоть до 232 символов).
4.Задание
4.1.Создайте программу «Строковый тип string» (листинг 3.75):
Листинг 3.75. Программа «Строковый тип string»
В программе проводится формирование строковых переменных s1="Hello" и s2="world", их сложение в строковой переменной s3=s1+" ,"+s2+"!!! с выводом на печать переменной s3. Результатом работы программы будет печать текста Hello, world!!!
4.2.Создайте программу «Разбиение строки на подстроки заданной длины» (листинг 3.76):
Листинг 3.76. Программа «Разбиение строки на подстроки заданной длины»
В начале программы вводятся строка символов и длина подстроки, на которые будет разбита данная строка. Далее организуется циклическая операция, в которой посимвольно выводятся на печаль символы введенной строки, пока не будет достигнута длина подстроки. После этого произойдет перевод строки и будет печататься новая подстрока и т. д. Вывод на печать закончится по достижение длины всей строки.
4.4.В отчете к данной лабораторной работе опишите назначение каждого оператора для программ, которые приведены в задании, а также структурную схему (блок-схему) программы «Разбиение строки на подстроки заданной длины».