
- •Г.В. Ваныкина, т.О. Сундукова
- •Часть 1. Введение в программирование Тула - 2009
- •Содержание
- •Предисловие
- •Лабораторная работа №1
- •Лабораторная работа №2 Типы данных. Стандартные потоки ввода-вывода данных
- •Лабораторная работа №3 Константы. Стандартные потоки ввода-вывода вещественных данных
- •Лабораторная работа №4 Форматированный ввод-вывод данных
- •Лабораторная работа №5 Присваивание. Арифметические операции
- •Лабораторная работа №6 Логические и поразрядные операции. Операции сравнения и определения размера
- •Лабораторная работа №7 Математические функции. Выражения
- •Математические функции – файл math.H
- •Лабораторная работа №8 Линейные программы. Преобразование типов
- •Лабораторная работа №9 Операторы выбора: оператор условия if
- •Лабораторная работа №10 Решение задач с использование оператора условия if
- •Лабораторная работа №11 Операторы перехода. Операторы выбора: оператор-переключатель switch
- •Лабораторная работа №12 Решение задач с использованием оператора-переключателя switch
- •Лабораторная работа №13 Операторы цикла: оператор цикла с параметром for
- •Лабораторная работа №14 Операторы цикла: оператор цикла с предусловие while
- •Лабораторная работа №15 Операторы цикла: оператор цикла с постусловием do … while
- •Лабораторная работа №16 Решение задач с использованием операторов цикла
- •Лабораторная работа №17 Функции пользователя
- •Лабораторная работа №18 Решение задач методом процедурной абстракции
- •Лабораторная работа №19 Рекурсивные функции
- •Индивидуальные задания Требования к оформлению индивидуальных заданий
- •Задание 1. Линейные программы
- •Задание 2. Задачи на составление логических выражений
- •Задание 3. Условный оператор
- •Задание 4. Цикл с параметром
- •Задание 5. Циклы с условиями
- •Задание 6. Числовые функции
- •Задание 7. Функции
- •Задание 8. Рекурсия
- •Литература
- •Часть 1. Введение в программирования
Лабораторная работа №2 Типы данных. Стандартные потоки ввода-вывода данных
Цель работы: изучить типы данных языка С++, научиться работать со стандартными потоками ввода-вывода данных языка C++.
Теоретические сведения
Алфавит. В алфавит языка С++ входят:
прописные и строчные буквы латинского алфавита (A, B,…,Z, a,b,…,z);
цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
специальные знаки:
” , {} | [] () + - / % \ ; ’ . : ? < = > _ ! & * # ~ ^ ;
неизображаемые символы («обобщенные пробельные символы»), используемые для отделения лексем друг от друга (пробел, табуляция и т.д.).
В комментариях, строках и символьных константах могут использоваться и другие литеры (например, русские буквы).
Лексема (от греч. lexis – слово, выражение) – последовательность допустимых символов языка программирования, имеющая смысл для транслятора. Транслятор рассматривает программу как последовательность лексем. В языке С++ шесть классов лексем:
свободно выбираемые и используемые идентификаторы;
служебные (ключевые) слова;
константы;
строки (строковые константы);
операции (знаки операций);
разделители (знаки пунктуации).
Типы данных
Типы данных в C++ можно разделить на простые и составные. К простым типам относят типы, которые характеризуются одним значением. В языке C++ определено 6 простых типов данных:
int (целый) char (символьный) wchar_t (расширенный символьный) (C++) bool (логический) (C++) |
целочисленные |
float (вещественный) double (вещественный с двойной точностью) |
с плавающей точкой |
Существует 4 спецификатора типа, уточняющих внутреннее представление и диапазон стандартных типов:
short (короткий) long (длинный) |
длина |
signed (знаковый) unsigned (беззнаковый) |
знак (модификатор) |
Основные типы данных
Тип |
Обозначение |
Название |
Размер памяти, байт (бит) |
Диапазон значений |
|
Имя типа |
Другие имена |
||||
целый |
int |
signed signed int |
целый |
зависит от системы* |
|
unsigned int |
unsigned |
беззнаковый целый |
зависит от системы* |
||
short |
short int signed short int |
короткий целый |
2 (16) |
-32 768 до 32 767 |
|
unsigned short |
unsigned short int |
беззнаковый короткий целый |
2 (16) |
0 до 65 535 |
|
long |
long int signed long int |
длинный целый |
4 (32) |
-2 147 438 648 до 2 147 483 647 |
|
unsigned long |
unsigned long int |
беззнаковый длинный целый |
4 (32) |
0 до 4 294 967 295 |
|
символь-ный |
char |
signed char |
байт (целый длиной не менее 8 бит) |
1 (8) |
-128 до 127 |
unsigned char |
– |
беззнаковый байт |
1 (8) |
0 до 255 |
|
wchar_t |
– |
расширенный символьный |
2 (16) |
0 до 65 535 |
|
веществен-ный |
float |
– |
вещественный одинарной точности |
4 (32) |
3.4Е-38 до 3.4Е+38 (7 значащих цифр) |
double |
– |
вещественный двойной точности |
8 (64) |
1.7Е-308 до 1.7Е+308 (15 значащих цифр) |
|
long double |
– |
вещественный максимальной точности |
10 (80) |
1.2Е-4932 до 1.2Е+4932 (19 значащих цифр) |
|
|
bool |
– |
логический |
1 (8) |
true (истина) или false (ложь) |
|
enum |
– |
перечисляемый |
2 |
-32 768 до 32 767 |
* Тип int совпадает с типом short на 16-разрядных ПК и с типом long на 32-разрядных ПК.
Управляющие последовательности (эскейп-последовательности)
Управляющие последовательности представляют собой последовательность символов для представления специальных символьных констант.
При введении управляющая последовательность начинается с символа обратный слеш '\' (обязательный первый символ), затем пишется комбинация латинских букв, либо цифр.
'\a' |
сигнал-звонок |
'\b' |
возврат на одну позицию (на один символ) |
'\f' |
перевод (прогон) страницы |
'\n' |
перевод строки (переход на новую строку) |
'\r' |
возврат каретки (курсора) к началу строки |
'\t' |
горизонтальная табуляция |
'\v' |
вертикальная табуляция |
'\?' |
знак вопроса |
'\'' |
апостроф (одиночная кавычка) |
'\”' |
кавычка (символ двойной кавычки) |
'\\' |
обратная косая черта |
'\ddd' |
восьмеричное представление символьной константы, где d – восьмеричная цифра (от 0 до 7) |
'\xddd' |
шестнадцатеричное представление символьной константы, где d – шестнадцатеричная цифра (от 0 до F) |
Последовательность вида '\ddd' и '\xddd' позволяют представить символ из набора кодов ЭВМ как последовательность восьмеричных или шестнадцатеричных цифр соответственно.
Например, символ возврата каретки может быть представлен различными способами:
'\r' – общая управляющая последовательность;
'\015' – восьмеричная управляющая последовательность;
'\x00D' – шестнадцатеричная управляющая последовательность.
В языке С++ нет встроенных средств ввода и вывода – они осуществляется с помощью функций, типов и объектов, которые находятся в стандартных библиотеках.
Существует два основных способа:
форматированный ввод-вывод данных (функции, унаследованные из С);
стандартные потоки ввода-вывода данных (объекты С++).
Стандартные потоки ввода-вывода данных
Для реализации стандартного ввода-вывода данных используется библиотечный файл iostream.h (i – input (ввод); o – output (вывод); stream – stream (поток)), в котором определены стандартные потоки ввода данных от клавиатуры cin и вывода данных на экран дисплея cout, а также соответствующие операции:
<< – операция записи данных в поток;
>> – операция чтения данных из потока.
Пример 1.
//Программа стандартного ввода-вывода данных
#include <iostream.h>
void main() {
int year, /*год рождения*/
height, /*рост*/
weight;/*вес*/
cout << "Введите год рождения \n";
cin >> year;
cout << "Введите рост \n";
cin >> height;
cout << "Введите вес \n";
cin >> weight;
cout << "\nВведенные данные: год рождения " << year << ",
рост " << height << ", вес " << weight << ".";
}
После компиляции программы ее можно запустить на выполнение. Результат выполнения на экране будет выглядеть примерно так:
Введите год рождения
1991
Введите рост
173
Введите вес
67
Введенные данные: год рождения 1991, рост 173, вес 67.
Пояснение к примеру
Программа начинается (после комментариев) с оператора
#include <iostream.h>
Директива include подключает к исходному программному коду файл iostream.h, который описывает функции стандартной библиотеки ввода-вывода для работы с клавиатурой и экраном.
Следующая строка содержит тип и определение главной функции:
void main()
Далее стоит операторная скобка начала программы '{', а на следующей строке объявляется тип трех переменных
int year, /*год рождения*/
height, /*рост*/
weight;/*вес*/
Оператор int уведомляет компилятор, что для хранения этих трех переменных типа «целое число» требуется выделить необходимое количество памяти. Эта область памяти будет зарезервирована в течение выполнения оставшейся части программы. Переменные всегда должны быть описаны до первого использования.
Оператор cout выводит данные, заданные в кавычках, на экран в следующих строках (\n переводит курсор на новую строку):
cout << "Введите год рождения \n";
cout << "Введите рост \n";
cout << "Введите вес \n";
Оператор cin присваивает заданным переменным значения, которые были введены пользователем с клавиатуры. Ввод каждого значения завершается нажатием клавиши Enter (#10#13).
В строке
cin >> year;
переменной year присваивается значение 1991 (смотрите результат выполнения программы).
В строке
cin >> height;
переменной height присваивается значение 173.
В строке
cin >> weight;
переменной weight присваивается значение 67.
Строка
cout << "\nВведенные данные: год рождения " << year << ",
рост " << height << ", вес " << weight << ".";
выводит на экран как значения строковых констант, заданные в кавычках, так и значения переменных year, height, weight.
Далее стоит операторная скобка окончания программы '}'.
Комментарии
Комментарии – это набор символов, которые игнорируются компилятором, т.е. не относятся к исполняемым операторам программы. Комментарии предназначены для облегчения восприятия программного кода.
В языке С++ комментарии имеют два способа записи:
начинаются с двойного символа слэш '//' и до конца строки (см. Пример первая строка);
начинаются с символов '/*' и заканчиваются символами '*/' (см. Пример 5, 6, 7 строки). Внутри данного комментария не должно быть символов определяющих начала и конец комментария (соответственно '/*' и '*/' ).
Переменные типа char существенно отличаются от переменных типа int при выполнении ввода данных с клавиатуры и вывода на экран.
Пример 2.
//Программа стандартного ввода-вывода данных типа char и int
#include <iostream.h>
void main(){
int number;
char character;
cout << "Напечатайте символ и нажмите Enter:\n";
cin >> character;
number = character;
cout << "Вы ввели символ '" << character << "'.\n";
cout << "В памяти компьютера он хранится в виде числа "
<< number << ".\n";
}
Задания
Наберите код программы из Примера 1. Сохраните код в файле с именем dataint.cpp. Выполните компиляцию и запуск программы. Введите свои данные в качестве входных.
Наберите код программы из Примера 2. Сохраните код в файле с именем datachar.cpp. Выполните компиляцию и запуск программы. Добавьте к программному коду комментарии, которые поясняют действия, выполняемые каждой строкой.
Напишите программу, которая выводит на экран четверостишие. Используйте в начале каждой выводимой строки горизонтальную табуляцию.
Унылая пора! Очей очарованье!
Приятна мне твоя прощальная краса —
Люблю я пышное природы увяданье,
В багрец и золото одетые леса.
А. С. Пушкин
Домашние задания
Напишите программу ввода и вывода значений целых переменных а, b и с. Значение каждой переменной должно быть выведено в отдельной строке.
Составьте программу для решения следующей задачи. С клавиатуры вводится целое число, а выводится соответствующий символ, который хранится в памяти компьютера как это число. Воспользуйтесь программным кодом из Примера 2.
Написать программу, которая выводит на экран фразу: «Каждый охотник желает знать, где сидят фазаны», позволяющую запомнить порядок следования цветов радуги (первая буква слова кодирует цвет: каждый – красный, охотник – оранжевый, желает – желтый, знать – зеленый, где – голубой, сидят – синий, фазаны – фиолетовый). Каждое слово фразы должно быть выведено с новой строки с отступом на одну позицию табуляции вправо.