Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке с++ ч.1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.13 Mб
Скачать

Лабораторная работа №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' – шестнадцатеричная управляющая последовательность.

В языке С++ нет встроенных средств ввода и вывода – они осуществляется с помощью функций, типов и объектов, которые находятся в стандартных библиотеках.

Существует два основных способа:

  1. форматированный ввод-вывод данных (функции, унаследованные из С);

  2. стандартные потоки ввода-вывода данных (объекты С++).

Стандартные потоки ввода-вывода данных

Для реализации стандартного ввода-вывода данных используется библиотечный файл 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.

Далее стоит операторная скобка окончания программы '}'.

Комментарии

Комментарии – это набор символов, которые игнорируются компилятором, т.е. не относятся к исполняемым операторам программы. Комментарии предназначены для облегчения восприятия программного кода.

В языке С++ комментарии имеют два способа записи:

  1. начинаются с двойного символа слэш '//' и до конца строки (см. Пример первая строка);

  2. начинаются с символов '/*' и заканчиваются символами '*/' (см. Пример 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. Наберите код программы из Примера 1. Сохраните код в файле с именем dataint.cpp. Выполните компиляцию и запуск программы. Введите свои данные в качестве входных.

  2. Наберите код программы из Примера 2. Сохраните код в файле с именем datachar.cpp. Выполните компиляцию и запуск программы. Добавьте к программному коду комментарии, которые поясняют действия, выполняемые каждой строкой.

  3. Напишите программу, которая выводит на экран четверостишие. Используйте в начале каждой выводимой строки горизонтальную табуляцию.

Унылая пора! Очей очарованье!

Приятна мне твоя прощальная краса —

Люблю я пышное природы увяданье,

В багрец и золото одетые леса.

А. С. Пушкин

Домашние задания

  1. Напишите программу ввода и вывода значений целых переменных а, b и с. Значение каждой переменной должно быть выведено в отдельной строке.

  2. Составьте программу для решения следующей задачи. С клавиатуры вводится целое число, а выводится соответствующий символ, который хранится в памяти компьютера как это число. Воспользуйтесь программным кодом из Примера 2.

  3. Написать программу, которая выводит на экран фразу: «Каждый охотник желает знать, где сидят фазаны», позволяющую запомнить порядок следования цветов радуги (первая буква слова кодирует цвет: каждый – красный, охотник – оранжевый, желает – желтый, знать – зеленый, где – голубой, сидят – синий, фазаны – фиолетовый). Каждое слово фразы должно быть выведено с новой строки с отступом на одну позицию табуляции вправо.