Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Программирование на языке высокого уровня. Программирование на языке С++

Понятие типа данных

Тип данных определяет допустимый диапазон изменения переменных и констант, а также допустимые операции над данными этого типа. Каждая переменная и константа программы должны принадлежать к определенному типу данных. Это необходимо для того, чтобы отвести необходимое место в оперативной памяти и для проверки правильности записи выражений. Например, над числовыми данными можно производить арифметические операции, а символьные данные используются для анализа текста.

Целые типы данных

Целые типы данных используются для представления целых чисел. Целые типы, допустимый диапазон значений и требуемая память в байтах приведены в табл. 3.3.

Таблица 3.3. Целые типы данных

Тип

Назначение типа

Размер в байтах

Значение

unsigned char

Символьный

і

Целые числа или символы с кодами от 0 до 255

char

Символьный

і

Целые числа или символы с кодами от-128 до 127

short int

Короткий целый

2

Целые числа от -32 768 до 32 767

int

Целый

4

Целые числа от-2 147 483 648 до 2 147 483 647

long int

Длинный целый

unsigned int

Беззнаковый целый

4

Целые числа от 0 до 4 294 967 295

Целый тип char определяется двумя способами:

  • • это либо целые числа от -128 до 127;
  • • либо множество символов кодовой таблицы компьютера. Каждому символу ставится в соответствие целое число от 0 до 28 - 1. Для кодировки используется код ASCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией). Фактически допустимыми значениями для символьного типа являются все символы клавиатуры компьютера, в том числе и управляющие символы (Esc, Tab и т. д.).

Значения символьного типа можно вводить с клавиатуры, выводить на экран и сравнивать между собой, при этом большим считается символ с большим ASCII-кодом. Для символов типа char определены операции отношения =, О, <,>,>=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении I.

Если данные типа char рассматриваются как целые числа, то для них определены арифметические операции +, —, *, /, % (результат выполнения этих операций также имеет тип char), операции отношения =, О, <, >, >=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении 1.

Целый тип short int (короткое целое) задает целые данные с диапазоном изменения от -32 768 до 32 767 и занимает в памяти два байта. Для данных этого типа определены арифметические операции +, -, *, /, % (результат выполнения этих операций — целого типа short int), операции отношения =, О, <, >, >=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении 1.

Наиболее часто используемый целый тип int задает целые данные с диапазоном изменения от -2 147 483 648 до 2 147 483 647 и занимает в памяти четыре байта. Для данных типа int определены арифметические операции +, *, /, % (результат выполнения этих операций —

целого типа), операции отношения =, О, <, >, >=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении 1.

Целый тип long int (длинное целое) задает целые данные с диапазоном изменения от -2 147 483 648 до 2 147 483 647 и занимает в памяти четыре байта. Для данных этого типа определены арифметические операции +,-,*,/,% (результат выполнения этих операций — целого типа long int), операции отношения =, О, <, >, >=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении 1.

Тип беззнаковое целое unsigned int задает целые числа с диапазоном изменения от 0 до 4 294 967 295 и занимает четыре байта. Для данных этого типа определены арифметические операции +, -, *, /, % (результат выполнения этих операций — беззнакового целого типа unsigned int), операции отношения =, О, <, >, >=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении 1.

З.б. Вещественные типы данных

Вещественные типы используются для задания чисел с ненулевой дробной частью (например, 0.7, -18.567, 3.14) или чисел, меньших -2 147 483 648, или чисел, больших 2 147 483 647 (4 294 967295).

Вещественные типы, допустимый диапазон значений и требуемая память в байтах приведены в табл. 3.4.

Вещественный тип float задает вещественные числа с диапазоном изменения от -3,4 • 1038 до 3,4 • 1038 для больших чисел и от -3,4 • КГ38 до 3,4 • КГ38 и занимает в памяти четыре байта. Для данных этого типа определены арифметические операции +, —, *, / (результат выполнения этих операций — вещественного типа float), операции отношения =, О, <, >, >=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении 1.

Наиболее часто используемый вещественный тип double задает вещественные числа в диапазоне от -1,7 • Ю308 до 1,7 • Ю308 для боль-

Таблица 3.4. Вещественные типы данных

Тип

Назначение типа

Размер в байтах

Значение

float

Вещественный

4

Числа от 3.4Е-38 до 3.4Е+38 Точность представления — семь значащих цифр

double

Вещественный с двойной

точностью

8

Числа от 1.7Е-308 до 1.7Е+308.

Точность представления —

15 значащих цифр

long double

Вещественный с повышенной точностью

10

Числа от 3.4Е-4932 до 3.4Е+4932.

Точность представления —

19 значащих цифр

ших чисел и от -1,7 • КГ308 до 1,7 • 1(Г308 для маленьких чисел. Переменные типа double занимают в памяти восемь байт. Для данных типа double определены арифметические операции +, —, *, / (результат выполнения этих операций — вещественного типа double), операции отношения =, <>, <, >, >=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении 1.

Вещественный тип long double задает вещественные числа с диапазоном изменения от -3,4 • 104932 до 3,4 • 104932 для больших чисел и от -3,4 • 1СГ4832 до 3,4 • КГ4932 и занимает в памяти 10 байт. Для данных этого типа определены арифметические операции +, —, *, / (результат выполнения этих операций — вещественного типа long double), операции отношения =, О, <, >, >=, <= (результат — логического типа) и стандартные функции, которые приведены в приложении 1.

Логический тип данных

Булевский (логический) тип данных — BOOL. Переменные булевского типа данных представляют собой логические значения, такие как TRUE (истина) и FALSE (ложь). При вычислении значений в арифметических выражениях значение, равное нулю, принимается за ложь, а любое другое значение, не равное нулю, будет являться истиной.

Операторы описания и определения переменных

Чтобы переменную можно было использовать в программе, она должна быть предварительно объявлена (описана).

Оператор объявления (описания) переменных имеет следующий синтаксис:

<тип> <имя1>, <имя2>, ...;

Здесь <тип> — тип переменных, имена которых перечислены в операторе описания;

<имя1>, <имя 2>, ... — имена переменных, необходимых в программе.

Например:

int x,y,z; IIоператор объявления переменных х, у, z типа int

double а, b; //оператор объявления переменных а, b типа double

float t;

//оператор объявления переменной t типа float

При описании переменных под каждую из них резервируется память. Размер отведенной памяти зависит от типа переменных. При этом никаких значений в зарезервированную память не заносится.

Оператор определения переменных имеет следующий синтаксис:

<тип> <имя1>=<нач . значение1>, <имя2>=<нач. значение2>,... ;

Здесь <тип> — тип переменных, имена которых перечислены в операторе описания;

<имя1>, <имя 2>, ... — имена переменных, необходимых в программе;

<нач. значение1>, <нач . значение2> — начальные значения, заносимые компилятором до выполнения программы.

При описании переменных под каждую из них резервируется память. Размер отведенной памяти зависит от типа переменных. После этого компилятор заносит начальное значение в область памяти соответствующей переменной. Например:

double s = 0; //переменной s задано начальное значение равное О

В языке C++ объявлять и определять переменные можно в любом месте программы, однако область их действия начинается с момента объявления и заканчивается ближайшей за этой переменной закрывающейся фигурной скобкой. То есть область определения и действия переменной ограничена блоком, внутри которого она описана.

Именованные константы используются как переменные, значение которых не может быть изменено после инициализации. Объявляется с помощью ключевого слова const, за которым следует указание типа константы, идентификатор и значение:

const double pi = 3.14159; //объявление именованной константы pi

Преобразование типов

В некоторых случаях необходимо преобразование типов, например, чтобы присвоить целое значение выражения вещественной переменной или для согласования типов при использовании аргументов функций.

Рассмотрим простые выражения — арифметические действия. Эти выражения состоят из двух операндов, над которыми осуществляются действия, и знака операции (V, Например:

Операнд 1 + Операнд 2 — сложение.

Операнд 1 — Операнд 2 — вычитание.

Операнд 1 * Операнд 2 — умножение.

Операнд 1 / Операнд 2 — деление.

Существует три способа преобразования типов:

  • • неявное преобразование типов;
  • • явное преобразование типов;
  • • функциональное преобразование типов.

Неявное преобразование типов. Приведение результата к типу одного из операндов называется неявным преобразованием типов:

  • • если оба операнда одного типа, то и результат будет того же типа, например, в выражении 213 оба операнда целого типа, значит, и результат будет целого типа, в этом случае он будет равен целому частному от деления 2 на 3, т. е. 0
  • • если операнды имеют разный тип, то тип результата будет совпадать с более широким типом операнда, например, в выражении 2/3.0 первый операнд — целого типа, второй — вещественного типа, значит, и результат будет вещественного типа, т. е. 0.6667.

Явное преобразование типов и функциональное преобразование типов. В языке C++ существует также операция явного преобразования типов

<тип> <выражение>

и операция функционального преобразования типов

(<тип>) <выражение>

Например, предыдущее выражение можно записать как 2 / doub 1 е 3 или 2/(double)3.

Если применить ко всему выражению операцию явного преобразования типов double (2/3 ) или операцию функционального преобразования типов (double) (2/3), то сначала будет вычислено выражение в скобках (2/3), равное 0, а затем результат будет преобразован к типу double и станет равным 0.0.

Знаки операций

Знаки операций. Знаки операций — это лексемы, используемые при вычислении выражений. По числу операндов операции бывают:

  • • унарными (с одним операндом);
  • • бинарными (с двумя операндами).

Примером унарной операции может служить операция изменения знака —А (значение переменной А меняет знак на противоположный), операция определения адреса переменной &А — адрес переменной А. Операции сложения, вычитания, умножения, деления и т. д. являются бинарными.

В языке С++ используются следующие виды операций:

  • • арифметические операции;
  • • операции инкремента и декремента;
  • • операции присваивания;
  • • операции отношения;
  • • логические операции.

Арифметические операции. Знаки арифметических операций используются в арифметических или алгебраических выражениях:

+ сложение;

  • - вычитание;
  • • умножение;

/деление;

% — нахождение остатка от деления нацело.

Таблица 3.5. Примеры операции нахождения остатка целочисленного деления

Выражение

Результат

11 % 5

1

10% 3

1

2 % 3

2

Операции инкремента и декремента. Инкремент — это увеличение значения на 1, декремент — уменьшение значения на 1.

++ знак операции инкремента — увеличения операнда на единицу;

-- знак операции декремента — уменьшения операнда на единицу.

Операции инкремента и декремента бывают постфиксными и префиксными.

Постфиксные операции инкремента и декремента записываются после соответствующего операнда, например х++; г—;

При использовании постфиксных операций инкремента и декремента в операторе присваивания (или каком-либо другом операторе) используется старое значение операнда, и лишь после выполнения соответствующего оператора значение операнда изменяется.

Например, при выполнении операторов

Х=1;

У=Х++; (У=1, затем Х=2)

переменная У примет значение, равное старому значению переменной X (1), и лишь после выполнения операции присваивания значение X увеличится на 1 и станет равно 2.

При выполнении операторов

Z = 5;

Т-Т,--: (Т=5, затем Ъ- 4)

переменная Т примет значение, равное старому значению переменной Ъ (5), и лишь после выполнения операции присваивания значение г уменьшится на 1 и станет равно 4.

Префиксные операции инкремента и декремента записываются перед соответствующим операндом, например: + +х;, --г;.

При использовании префиксных операций инкремента и декремента в каком-либо операторе сначала изменяется значение операнда, и это новое значение операнда используется в соответствующем операторе.

Например, при выполнении операторов

(Х=2, затем У=2)

сначала значение переменной X увеличится на 1 и станет равным 2, а затем это новое значение (2 ) будет присвоено переменной У.

При выполнении операторов

Z = 5;

(7,=4:, затем Т=4)

Т= — г;

сначала значение переменной г уменьшится на 1 и станет равным 4, а затем это новое значение (4) будет присвоено переменной Т.

Операции инкремента и декремента можно использовать и в отдельных операторах, например,

++а;

--Ь;

с + + ; (5--;

здесь значения переменных а, с будут увеличены на единицу, а значения переменных Ь, а будут уменьшены на единицу, при этом ни старые, ни новые значения этих переменных ни в каких выражениях или операторах участвовать не будут.

Знаки операций присваивания. Существуют следующие знаки операции присваивания:

= — операция присваивания (значение, стоящее справа от знака операции, присваивается переменной, стоящей слева от знака присваивания, например х-6)

+= — присваивание со сложением, запись х+=5; идентична записи х = х + 5;

  • -= — присваивание с вычитанием, запись х-=3, идентична записи х = х - 3;
  • *= — присваивание с умножением, запись х*= 7, идентична записи х = х * 7;

/= — присваивание с делением, запись х/=4, идентична записи х = х/4

%- — присваивание с нахождением остатка, запись х%=2, идентична записи х = х%2;

Операции отношения. Знаки операций отношения используются в условных выражениях:

= = равно;

!= не равно;

> больше;

< меньше;

>= больше или равно;

<= меньше или равно;

Логические операции. Знаки логических операций используются в логических выражениях:

&& — логическое И (истинно тогда и только тогда, когда оба операнда истинны);

|| — логическое ИЛИ (ложно тогда и только тогда, когда оба операнда ложны);

! — логическое отрицание.

Оператор присваивания. Арифметические выражения. Приоритет операций

Оператор присваивания. Оператор присваивания используется для присваивания переменной значения какого-то выражения. Оператор присваивания имеет вид:

<имя переменной>=<выражение>;,

где <выражение> — это выражение, записанное с использованием арифметических и/или логических операций и скобок, значение которого можно вычислить;

<имя переменной> — это переменная, в которую будет записано значение <выражения>.

Правила записи арифметических выражений:

  • • для получения правильного результата в нужных случаях необходимо применять операции явного или неявного преобразования типов;
  • • если в числителе выражения есть хотя бы один знак сложения или вычитания, то числитель берется в скобки;
  • • если знаменатель выражения содержит два и более члена, то, вне зависимости от знаков операций, знаменатель берется в скобки;
  • • аргументы функций нужно брать в скобки;
  • • число открывающихся скобок должно быть равно числу закрывающихся скобок;
  • • операции умножения в выражении записывать обязательно (математическая запись в языке С++ заменяется на 2*х).

Оператор присваивания выполняется следующим образом:

  • • вычисляется значение выражения, стоящего в правой части оператора присваивания;
  • • при необходимости осуществляется преобразование типа значения выражения к типу переменной, стоящей слева от знака присваивания;
  • • вычисленное и преобразованное значение присваивается переменной, имя которой стоит в левой части оператора присваивания, т. е. записывается в то место оперативной памяти, которое выделено для данной переменной.

Например:

х=5 ; у=х*х;

//переменной х присваивается значение, равное 5

//переменной у присваивается значение х

Приоритет операций. Приоритет операций — это порядок выполнения операций в выражении. Выполнение каждой операции происходит с учетом ее приоритета.

Приоритет операций в выражении без скобок:

  • 3) ! — логическое отрицание;
  • 4) && — логическое И;
  • 5) || — логическое ИЛИ;
  • 6) =,<>,<, >,>=, <=.

Операции, перечисленные под одной цифрой, имеют одинаковый приоритет, т. е. операции *, /, % имеют одинаковый приоритет первого наивысшего уровня, операции +, - имеют одинаковый приоритет второго уровня, операции =, О, <, >, >=, <= имеют одинаковый приоритет третьего уровня.

В сложном выражении сначала выполняются вычисления в скобках, затем остальные операции в порядке убывания их приоритета (операции с равным приоритетом выполняются слева направо). Например, при вычислении значения выражения

12+14/(8+2*3/6-2)-4

сначала вычисляется значение выражения, стоящего в скобках, — (8+2*3/6-2):

  • 1) операции умножения и деления имеют наивысший приоритет; операция умножения стоит слева, поэтому она будет выполняться первой — выражение в скобках преобразуется к виду (8+6/6-2);
  • 2) в полученном выражении операция деления имеет наивысший приоритет и будет выполняться следующей — выражение в скобках преобразуется к виду (8+1-2);
  • 3) операции сложения и вычитания имеют одинаковый приоритет; операция сложения стоит слева, поэтому она будет выполняться следующей — выражение в скобках преобразуется к виду (9-2);
  • 4) выполняется операция вычитания — выражение в скобках преобразуется к виду (7);
  • 5) после вычисления значения выражения, стоящего в скобках, общее выражение преобразуется к виду 12+14/7-4. В полученном выражении операция деления имеет наивысший приоритет и будет выполняться следующей — общее выражение преобразуется к виду 12+2-4;
  • 6) операции сложения и вычитания имеют одинаковый приоритет; операция сложения стоит слева, поэтому она будет выполняться следующей — общее выражение преобразуется к виду 14-4;
  • 7) выполняется операция вычитания — общее выражение преобразуется к виду (10), т. е. значение выражения 12+14/(8+2*3/6-2)-4=10.

Структура программы на языке С++

Структура программы на языке С++. Под структурой программы понимается набор разделов программы и порядок их следования. В общем виде структура программы на языке С++ выглядит следующим образом:

  • • набор директив препроцессора, которые включают необходимые заголовочные файлы;
  • • описание глобальных констант;
  • • описания глобальных переменных;
  • • описание именованных констант;
  • • определения и описания функций пользователя;
  • • описание функции тат(), главной функции программы;
  • • определение тех функций пользователя, описания которых находятся перед функцией тат().

В программе могут отсутствовать один или несколько разделов, однако набор директив препроцессора и функция та1п() являются обязательными.

Пример простой программы. Составить программу вычисления площади круга.

#include /* директива препроцессора для подключения

стандартной библиотеки ввода-вывода*/

const double Pi = 3.14 //определ. вещественной константы Pi

//равной 3.14

int main () //заголовок функции main()

{

double R, S; //оператор описания вещественных переменных R и S

printf ("Введите радиус круга "); /* вывод приглашения

к вводу значения радиуса*/ scant (" % 1 f" , &R) ; //ввод с клавиатуры значения

//вещественной переменной R

S=Pi*R*R;

//оператор присваивания S значения площади круга радиуса R printf ("S = %lf " , S) ; //вывод на экран значения S

get char () ; //остановка работы программы до нажатия

//любого символа

return 0;

}

Пояснения. Программа начинается с директивы препроцессора #include , которая подключает к программе заголовочный файл стандартной библиотеки ввода-вывода. Затем с помощью оператора const double pi=3.14; объявляется вещественная константа pi, равная 3.14.

Далее идет заголовок главной функции программы main. Эта функция должна присутствовать в каждой программе. Сразу же после запуска программы на выполнение операционная система компьютера передает управление функции main программы, после завершения работы функция main возвращает управление операционной системе компьютера.

Заголовок int main () указывает на то, что функция main не получает никакой информации от операционной системы компьютера (пустые круглые скобки после имени функции main). Тип данных int перед именем функции main означает, что операционной системе будет возвращено целое значение (оператором return 0 ;).

Открывающаяся фигурная скобка открывает тело функции main — блок, соответствующий функции main. Затем с помощью оператора double R, S; описываются вещественные переменные программы. На экран выводится приглашение к вводу значения радиуса, с клавиатуры вводится значение радиуса. В операторе присваивания вычисляется площадь круга, которая затем выводится на экран.

Форматированный ввод и вывод данных

В ядре языка C++ отсутствуют средства (функции) осуществления ввода и вывода данных. Функции ввода-вывода данных содержатся в нескольких библиотеках. Рассмотрим одну из них:

stdio — STandarD Input Output library — стандартная библиотека ввода-вывода, содержит функции ввода с клавиатуры scanf() и вывода на экран дисплея printf(). Для того чтобы в программе можно было пользоваться этими функциями, нужно вначале подключить эту библиотеку. Директива препроцессора для включения в текст программы заголовочного файла библиотеки stdio имеет следующий вид:

#include

Функция ввода scanf(): функция ввода scanf() имеет следующий синтаксис:

scanf(<форматное выражением<список ввода>);

scanf — ключевое (зарезервированное) слово;

<форматное выражение> содержит форматные спецификации, которые показывают, каким образом интерпретировать (преобразовывать) данные, вводимые с клавиатуры.

Форматные спецификации начинаются с символа '%’ (процент), зависят от типа вводимых данных и имеют следующий вид:

Форматная

спецификация

Назначение

%d

Форматная спецификация для ввода чисел типа int и char

%i

Форматная спецификация для ввода чисел типа int и char

%ld

Форматная спецификация для ввода чисел типа long int

%f

Форматная спецификация для ввода чисел типа float в форме с фиксированной точкой

%lf

Форматная спецификация для ввода чисел типа double в форме с фиксированной точкой

Окончнаие форматных спецификаций

Форматная

спецификация

Назначение

Форматная спецификация для ввода чисел типа float в экспоненциальной форме

Форматная спецификация для ввода символов

%s

Форматная спецификация для ввода строк

< список в вода > содержит адреса переменных, значения которых вводятся с клавиатуры. Например:

int х; double а;

scanf("%d%lf",&х,&а) ;

Оператор scanf (" %d%lf" ,&х,&а) служит для ввода с клавиатуры значений переменных х, а . Его действие можно расшифровать следующим образом:

  • • ввести с клавиатуры первое значение по форматной спецификации %d (интерпретировать его как число типа int или char);
  • • записать введенное значение по адресу переменной х;
  • • затем ввести с клавиатуры второе значение по форматной спецификации %lf (интерпретировать его как число типа double в форме с фиксированной точкой);
  • • записать введенное значение по адресу переменной а.

При вводе с помощью таких операторов ввода сами вводимые числовые значения можно отделять одним или несколькими пробелами или размещать на разных строках, например, ввод целых переменных х и у можно осуществить следующими способами:

  • 1- й способ:
  • 4 5.7
  • 2- й способ:
  • 4
  • 5.7

Функция вывода printff(). Функция вывода printfO имеет следующий синтаксис:

printf(<форматное выражение>,<список вывода>);

«форматное выражение> содержит форматные спецификации, аналогичные форматным спецификациям оператора эсаг^ (), а также строковые константы.

<список вывода> — это список идентификаторов переменных или констант, значения которых нужно вывести на экран дисплея. Например:

рг:тР? ("значение переменной х =%с1п" ,х) ;

На экране появится текст:

значение переменной х =4

Форматы вывода. Формат вывода предназначен для корректного вывода результатов работы программы и используется только при выводе значений числовых переменных. Формат вывода указывается в операторе сразу после символа «%» и перед соответствующей форматной спецификацией.

1. Для вещественных чисел используется формат с фиксированной точкой (использовать обязательно, иначе по умолчанию вывод будет в формате с плавающей точкой.

Например, 1.2300000000000000000000Е+00 вместо 1.23). Для вещественных переменных формат вывода имеет вид:

%<число1>.<число2>1?

ИЛИ

%<число1>.<число2>?;,

где <число1> указывает общее количество позиций для вывода всего числа вместе с десятичной точкой и знаком;

<число2> указывает количество позиций для вывода дробной части числа;

If — форматная спецификация для вывода данных типа double; f — форматная спецификация для вывода данных типа float;

% — признак форматной спецификации.

Таблица 3.6. Примеры форматов вывода вещественной переменной

Значение переменной

Формат вывода

Результат (на экране)

511.04

printf("%8.41fR);

511.0400

-46.78

printf("%6.2f',R);

-46.78

-46.78

printf("%9.41f',R);

<пробел>-46.7800

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

2. Для целых чисел (использовать необязательно — по умолчанию выделяется столько позиций, сколько необходимо; в основном используется для вывода табличных результатов). Для целочисленных переменных формат вывода имеет вид:

%<число1>с1;

где <число1> указывает общее количество позиций для вывода всего числа вместе со знаком;

6 — форматная спецификация для вывода целых чисел;

% — признак форматной спецификации.

Таблица 3.7. Примеры форматов вывода целочисленной переменной

Значение переменной

Формат вывода

Результат (на экране)

  • 85
  • 85

printf("%3d",A);

printf("%2d",A);

  • <пробел>85
  • 85

Особенности ввода и вывода символов и строк

Символы (переменные и константы типа char) в компьютере хранятся в виде кодов, т. е. последовательностей нулей и единиц, которые интерпретируются как целые числа в диапазоне от -128 до 127 (в соответствии с таблицей ASCII). В программе переменные типа char можно вводить, выводить и использовать либо как символы, либо как код (целое число) в зависимости от желаний программиста.

Ввод одного символа с клавиатуры можно осуществить с помощью функции getchar;, которая считывает очередной символ с клавиатуры (из стандартного входного потока stdin, связанного с клавиатурой), при этом вводимый символ на экране не отображается. Чтобы ввести два или более символов, необходимо несколько раз вызвать функцию getchar (), в этом случае символы вводятся один за другим без каких-либо разделителей. Например,

char smvl,smv2;

smvl=getchar(); smv2=getchar();

При вводе с помощью этих операторов значения вводимых символов не разделяются никакими разделителями, например, при вводе следующей последовательности символов

ab

переменная smvl получит значение a, smv2 — значение Ь.

Один или несколько символов также можно ввести с помощью функции scanf () с форматной спецификацией %с:

char cl,c2,c3;

scanf("%с%с%с",&с1,&с2,&сЗ);

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

qwe

переменная cl получит значение q, с2 — значение w, сЗ — значение е.

Если при вводе символы нужно разделить пробелом или запятой, то эти разделители ставятся между форматными спецификациями ввода:

scanf("%с %с %с",&с1,&с2,&сЗ); ( q w e -

строка ввода)

scanf("%с,%с,%с",&cl,&с2,&сЗ); (q,w,e - строка

ввода)

При вводе числа и символа с помощью одного оператора scanf () в форматном выражении обязательно нужно указывать разделитель между форматными спецификациями:

scanf("%с %lf",&cl,&b); (q -1.89 - строка ввода)

scanf("%lf %c",&b,&cl); (-1.89 q - строка

ввода)

Если нужно сначала с помощью оператора ввода ввести число, а затем с помощью другого оператора ввода ввести символ, то перед вводом символа из стандартного потока нужно сначала убрать коды клавиши Enter с помощью оператора:

c=getchar(); или scanf("п");

При выводе символов можно выводить сам символ по форматной спецификации и (или) его код по форматной спецификации %d:

printf("Код символа %с равен %d ",cl,cl);

Здесь сначала значение переменной cl будет выведено в виде символа (по форматной спецификации %с), а затем значение переменной cl будет выведено по форматной спецификации %d как целое число — код символа, являющегося значением переменной cl.

Пример. Ввести вещественное число и символ. Найти среднее арифметическое кода символа и числа.

#include //подключение стандартной библиотеки

//ввода-вывода

int main () //заголовок функции main ()

{

double х, sг; //описание вещественных переменных xt/sr

char smb; //описание символьной переменной smb

printf ("Введите число и символп"); /*вывод на экран

приглашения к вводу исходных данных*/ scanf ("%lf %с" ,&x,&smb) //ввод с клавиатуры через пробел числа

//и символа

sr= (x+smb) /2 ; //вычисление среднего арифметического кода символа

//и числа

printf (" sr=%lf ", sr) ; /*вывод на экран значения переменной sr

и перевод курсора на начало следующей строки экрана*/ get char () ; //остановка работы программы до нажатия любого символа

return 0;

}

Тесты

  • 1. Выберите пример правильного идентификатора в языке C++:
    • а) Fr_5;
    • б) 10Sd;
    • в) scanf.
  • 2. К какому типу данных относится число -543.12?
  • а) double;
  • б) int;
  • в) char.
  • 3. К какому типу данных относится число -1000?
  • а) double;
  • б) int;
  • в) char.
  • 4. Правильна ли структура следующей программы?

#include

{int Redouble m; k=5; m=-2 ;

int main() return 0;

}

  • а) да;
  • б) нет.
  • 5. А=12 + 14/ (8+2*3/б-2) *4; Чему равно А?
  • а) Ю/7;
  • б) 14;
  • в) 20.
  • 6. Каково значение выражения: 31 / б?
  • а) 5.01;
  • б) 1;
  • в) 5.
  • 7. Каково значение выражения: 31 % б?
  • а) 5.01;
  • б) 1;
  • в) 5.
  • 8. Что будет на экране после выполнения следующих операторов?

printf("Пусть "); printf("всегда п");

printf("будет "); printf("солнце.п");

  • а) Пусть всегда будет солнце;
  • б) Пусть всегда будет солнце;

Задания

Для каждой задачи составить схему алгоритма и написать программу.

  • 1. Даны Л, В. Найти Р = Л- В.
  • 2. Даны Л, В. Найти 0 = А/В.
  • 3. Даны А, В, С. Найти = Д + Д + С, Р = А ? В С.
  • 1 х - А
  • 4. Вычислить значения У по формуле У =-.
  • 5х + 3
  • 5. Вычислить объем и площадь поверхности параллелепипеда.
  • 6. Вывести сумму числа, введенного с клавиатуры, с числом 10.
  • 7. Ввести целые числаД и В, результаты их суммирования, вычитания и произведения вывести в таблице, используя форматы вывода. Например, введены числа «6» и «2», тогда таблица будет иметь вид:

1 А |

В

1 А+В

I А-В

1 А*В |

1 6 1

2

1 8

1 4

1 12

8. Вычислить (2 =

а + (х - I)2 Ь-(У + 1)~ п

(считаем, что знаменатель никогда не

равен нулю).

  • 9. Ввести 5 переменных, а вывести их в обратном порядке.
  • 10. Ввести с клавиатуры значения А, В, С, Д организовать вычисление и вывод его по действиям, нумеруя каждое из них: Р=А -В + С-(А+ + А + В - (С + А)) + 7).
  • 11. Ввести с клавиатуры значения А, В, С в разных строках и вывести результат выражения в отдельной строке Л*(5/3,14) + (С*3+5). Использовать поясняющие надписи и комментарии.
  • 12. Составить программу исследования положительного вещественного числа А, в которой определялись бы значения следующих величин: целая часть, дробная часть, значение арифметического квадратного корня, остаток от деления целой части на 5.
  • 13. В банк положили деньги на счет из расчета 60 % годовых от исходной суммы (накопления процентов ежемесячно не происходит). Вычислить причитающийся вкладчику доход (с клавиатуры задается, сколько месяцев деньги лежат в банке).
  • 14. Поменять местами значения переменных Xи У.

Контрольные вопросы

  • 1. Что такое алфавит языка программирования?
  • 2. Какие символы входят в алфавит языка С++?
  • 3. Что такое зарезервированные (ключевые слова)? Приведите примеры ключевых слов.
  • 4. Что такое идентификатор? Для чего используются идентификаторы в программах?
  • 5. Может ли идентификатор содержать русские буквы?
  • 6. Может ли идентификатор состоять только из латинских букв и символов подчеркивания?
  • 7. С каких символов может начинаться идентификатор?
  • 8. Может ли зарезервированное слово использоваться как идентификатор в программе? Почему?
  • 9. Можно ли использовать в программе несколько одинаковых идентификаторов? Почему?
  • 10. Что такое константа? Для чего можно использовать константы в программе?
  • 11. Что такое переменная? Для чего в программе используются переменные?
  • 12. Верно ли, что в любой программе на С++ обязательно должны использоваться переменные и константы? Почему?
  • 13. Назовите основные отличия константы от переменной?
  • 14. Можно ли в программе использовать две переменные с одинаковыми именами? Почему?
  • 15. Могут ли в одной и той же программе переменная и константа иметь одинаковые имена? Почему?
  • 16. Может ли изменяться значение переменной при выполнении программы? Почему?
  • 17. Может ли в процессе работы программы изменяться значение константы? Почему?
  • 18. Что такое операция? Приведите примеры.
  • 19. Какие типы операций существуют в языке С++?
  • 20. Назовите арифметические операции, используемые в языке С++.
  • 21. Чем отличаются операции деления «3/2» и 3.0/2.0?
  • 22. Чем отличаются операции «/» и «%»? Приведите примеры.
  • 23. Какие операции отношения можно использовать в программе на языке С++?
  • 24. Что такое выражение? Приведите примеры.
  • 25. Что такое приоритет операций? Объясните на примере.
  • 26. Какие операции выполняются в первую очередь, если в выражении есть скобки?
  • 27. Какие операции имеют самый высокий приоритет, если в выражении нет скобок?
  • 28. Какие операции имеют самый низкий приоритет?
  • 29. Какие из операций отношения имеют более высокий приоритет?
  • 30. Какая из операций имеет более высокий приоритет: умножение или деление?
  • 31. Какая из операций имеет более высокий приоритет: сложение или вычитание?
  • 32. Какая из операций имеет более высокий приоритет: умножение или вычитание?
  • 33. Какие операции имеют более высокий приоритет: арифметические или операции отношения?
  • 34. Что такое тип данных?
  • 35. Какие типы данных в языке C++ вы знаете?
  • 36. Что такое стандартный тип данных? Приведите примеры.
  • 37. Для чего используются типы данных?
  • 38. Приведите примеры данных типа int. Какие операции применимы к данным этого типа?
  • 39. Приведите примеры данных типа double. Какие операции применимы к данным этого типа?
  • 40. Какие данные относятся к символьному типу? Приведите примеры.
  • 41. Для чего можно использовать данные строкового типа в программе?
  • 42. Какие операции применимы в C++ к символьным и к строковым данным?
  • 43. Из каких разделов состоит программа на языке C++?
  • 44. Какие разделы и ключевые слова должны присутствовать в самой простой программе на языке C++?
  • 45. Какие разделы не являются обязательными для программы на языке C++?
  • 46. Что такое оператор в языке C++?
  • 47. Для чего предназначены функции вывода? Назовите их.
 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Пред   СОДЕРЖАНИЕ   След >
 
Популярные страницы