
- •Часть 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.Задание
4.Задание
4.1.Создайте программу «Перечисления» (листинг 3.68):
Листинг 3.68. Программа «Перечисления»
В разделе описаний этой программы описаны перечисления дней недели.
Перечислениям присвоено имя Days. В программе вводится текущий день недели в виде цифры. Далее рассчитывается сколько дней недели осталось до конца недели и выводится на печать начальный и текущий день недели и сколько дней осталось до конца недели.
4.2.В отчете к данной лабораторной работе опишите назначение каждого оператора для программы, которая приведена в задании, а также структурную схему (блок-схему) программы «Перечисления».
Лабораторная работа №10 Строки символов
1.Цель работы
Целью работы является изучение возможностей работы со строками символов.
2.Контрольные вопросы
2.1.Дайте определение символьной константе?
2.2.Какая последовательность символов используется для перевода курсора на новую строку?
2.3.Какой из двух типов (С-строки или строковый тип string) наиболее удобен для описания строк?
2.4.Какая функция используется для расчета длины строки?
3.Методические указания
3.1.Данные типа char
Для хранения одного символа C++ имеет отдельный тип char. Символьной константой называется символ, заключенный в одиночные кавычки, например (Листинг 3.69):
Листинг 3.69. Определение символьных переменных
Несколько символов имеют специальное значение, они записываются с помощью символа обратной косой черты \ (Листинг 3.69). Ниже приведена таблица специальных символов (Таблица 3.7):
Последовательность символов |
Код(16 с/с) |
Выполняемое действие |
\а |
0x07 |
При выводе вызывает звуковой сигнал |
\b |
0x08 |
Вызывает сдвиг позиции курсора влево |
\f |
0х0С |
При выводе на принтер вызывает прогон листа |
\n |
0х0А |
Перевод на новую строку |
\r |
0x0D |
Перевод курсора в начало строки (не переводит строку) |
\t |
0x09 |
Горизонтальная табуляция |
\v |
0x0В |
Вертикальная табуляция |
\\ |
0х5С |
Символ обратной косой черты |
\’ |
0x27 |
Символ одиночной кавычки |
\” |
0x22 |
Символ двойной кавычки |
\ ? |
0x3F |
Знак вопроса |
Таблица 3.7. Специальные символы
С-строки
В "наследство" от языка С языку C++ достались С-строки - они представлены как массивы элементов типа char, в конце которого размещен символ ‘\0’ (нуль-терминатор). Такие строки еще называют
строками в формате ASCIIZ или просто ASCIIZ-cmpoкой. Как и с
любым массивом символов, с С-строкой связан указатель-константа на первый элемент массива. Строковые литералы заключаются и двойные кавычки, в которые можно вставлять специальные символы. Например, ниже представлены
идентичные строки кода (Листинг 3.70):
Т.к. С-строка - это всего лишь массив, то и обращаться с ней надо как с массивом элементов. При ее инициализации строкой, нуль-терминатор добавляется автоматически, а при посимвольной инициализации, нуль-терминатор необходимо указывать дополнительно. Например, совершенно идентичными являются следующие описания строк:
Если строка используется для указателя типа char*, адрес первого символа строки будет начальным значением указателя, например:
char* s = "Слово";
Здесь описывается только переменная-указатель s, и она получает начальное значение, равное адресу первого элемента (символ 'С') строки.
Из-за того, что С-строка - массив элементов типа char, вытекают различные неудобства их использования, например, нельзя выполнить такую "пересылку" строки символов (Листинг 3.71):
Листинг 3.71. Ошибочное действие над С-строкой
Для операций над С-строками в C++ есть специальная библиотека
функций, для использования которых необходимо включать заголовочный файл cstring, ниже приведены некоторые из них:
char *strcat (char *strDestination, const char *strSource)
добавить строку strSource к строке strDestinalion;
char *strcpy (char *strDestination, const char *strSource)
копирует содержимое строки strSource в строку по указателю
strDestination;
size_t strlen (const char *string) –
возвращает длину строки string;
сравнивает
строки string1
и string2.
Возвращает:
возвращает указатель на первое вхождение строки strCharSet в строке siring. Если вхождения нет, то функция возвращает 0.
Использовать С-строки надо крайне осторожно - С++- ничего не делает автоматически, отдает все в руки программиста. Так, например, копируя одну строку в другую, Вы должны быть уверены, что хватит места для этой операции (Листинг 3.72):
Листинг 3.72. Типичные ошибки при работе с С-строками