WWW.EL.Z-PDF.RU
БИБЛИОТЕКА  БЕСПЛАТНЫХ  МАТЕРИАЛОВ - Онлайн документы
 


«Выражения сами могут входить в состав других выражений. Во втором примере alpha-37 и beta/2 являются выражениями. Фактически ...»

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

ВыраженияЛюбая комбинация переменных, констант и операций, приводящая к вычислению некоторого значения, называется выражением. Например, выражениями являются конструкции alpha+12 или (alpha-37)*beta/2. Результатом выполнения всех операций, входящих в состав выражения, является значение. Так, например, если alpha будет равно 7, то значение первого выражения будет равно 19.

Выражения сами могут входить в состав других выражений. Во втором примере alpha-37 и beta/2 являются выражениями. Фактически каждую переменную и константу, например alpha и 37, можно считать частным случаем выражения.

Обратите внимание, что выражения и операторы — это не одно и то же. Операторы являются указанием компьютеру совершить какое-либо действие и всегда завершаются точкой с запятой (;). Выражения же лишь определяют некоторую совокупность вычислений. В одном операторе могут присутствовать несколько выражений.

Манипуляторы — это особые операции, которые используются вместе с операцией вставки << для того, чтобы видоизменять вывод, который делает программа. Мы знаем endl, познакомимся с setw.

setw изменяет ширину поля вывода.

Можно рассматривать каждую переменную, выводимую с помощью объекта setw, как занимающую некоторое поле — воображаемое пространство с определенной длиной. По умолчанию такое поле имеет достаточный размер для того, чтобы хранить нужную переменную. Так, например, цел т число 567 займет размер в 3 символа, а текстовая строка "раjаmаs" — 7 символов. Разумеется, существуют ситуации, когда подобный механизм не является ' лобным. Приведем пример программы WIDTH1, печатающей названия городов и численность их населения в виде двух столбцов:

Заголовочный файл <IOMANIP> для использования setw//widthl.cpp//демонстрирует необходимость применения манипулятора setw #include <iostream>

using namespace std:

int main()

{

long popl = 4789426, pop2 = 274124, рорЗ = 9761;

cout « "Город " « "Нас." « endl «"Москва " « popl «endl «"Киров " « pop2 «endl «"Угрюмовка " «рорЗ «endl;

return 0;

}

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

Город Нас.

Москва 4789426

Киров 274124

Угрюмовка 9761

Программа с применением setw

Выравнивание по правому краю

Каскадирование операции <<Обратите внимание на то, что в программах WIDTH1 и WIDTH2 имеется только один оператор с cout, несмотря на то, что он расположен на нескольких строчках. Записывая этот оператор подобным образом, мы прибегаем к свойству компилятора игнорировать разделительные символы. Таким образом, мы каскадируем операцию вставки, то есть записываем в одном операторе то, что можно было бы реализовать с помощью четырех последовательных операторов, начинающихся с cout.

Файл заголовка IOMANIPОбъявления манипуляторов (за исключением endl) происходит не в файле IOSTREAM, а в другом заголовочном файле — IOMANIP. Когда возникнет необходимость использовать эти манипуляторы, придется включить этот файл с помощью директивы #include, как мы делали в программе WIDTH2.

Пару слов о беззнаковых типах

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

unsigned char ucharVar;

Выход за рамки допустимых для данного типа значений, как правило, приводит к труднообнаруживаемым ошибкам. Подобные ошибки с беззнаковыми типами происходят гораздо реже. Следующая программа хранит одно и то же значение, равное 1 500 000 000, в переменных signedVar типа int и unsignVar типаunsigned int.

ПРИМЕР1.

// работа со знаковыми / беззнаковыми переменными#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL,"Russian");

int signedVar = 15000000000; // знаковая переменная

unsigned int unsignVar = 15000000000; // беззнаковая переменная

signedVar = (signedVar * 2) / 3; // выход за границы диапазона

unsignVar = (unsignVar * 2) / 3; // вычисления внутри диапазона

cout << "Знаковая переменная равна " << signedVar << endl; // ошибка

cout << "Беззнаковая переменная равна " << unsignVar << endl; // правильно

system("pause");

return 0;

}

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

Вот пример оператора, осуществляющего преобразование типа int к типу char:

aCharVar = static_cast<char>(anIntVar);

Здесь переменная, тип которой мы хотим изменить, заключена в круглые скобки, а тип, к которому мы приводим переменную, — в угловые скобки. Приведение типа переменной anIntVar происходит перед присваиванием значения переменной aCharVar.

ПРИМЕР2.

// работа со знаковыми и беззнаковыми переменными#include <iostream>using namespace std;

int main(){

int intVar = 1500000000; // 1 500 000 000

intVar = (intVar * 10) / 10; // слишком большой результат

cout << "Значение intVar равно " << intVar << endl; // неверный результат

intVar = 1500000000;

intVar = (static_cast<double>(intVar) * 10) / 10; // приведение к типу doublecout << "Значение intVar равно " << intVar << endl; // верный результат

return 0;

}

ПРИМЕР

int ans = 10;, a=5;

ans += 10;// то же самое, что ans = ans + 10;

cout << ans << ", ";

ans -= 7;// то же самое, что ans = ans - 7;

cout << ans << ", ";

ans *= 2;// то же самое, что ans = ans * 2;

cout << ans << ", ";

ans /= 3;// то же самое, что ans = ans / 3;

cout << ans << ", ";

ans %= 3;// то же самое, что ans = ans % 3;

ans *= ++a;

cout << ans << endl;

20, 13, 26, 8, 2, 12 //В данном случае первым выполняется инкрементирование.

ИнкрементОперация, которую мы сейчас рассмотрим, является более специфичной, нежели предыдущие. При программировании вам часто приходится иметь дело с увеличением какой-либо величины на единицу. Это можно сделать «в лоб», используяоператор

a = a + 1; или a += 1; или ++a;// увеличение count на 1

Операция ++ инкрементирует, или увеличивает на 1, свой операнд.

ПРИМЕР3.

int b=10;

cout << "b = " << b << endl; // вывод числа 10

cout << "b = " << ++b << endl; // вывод числа 11 (префиксная форма)

cout << "b = " << b << endl; // вывод числа 11

cout << "b = " << b++ << endl; // вывод числа 11 (постфиксная форма)

cout << "b = " << b << endl; // вывод числа 12

Формы директивы #includeСуществует две формы директивы #include. Угловые скобки < > и “”.

Угловые скобки, в которые мы заключили имена файлов IOSTREAM и CMATH, указывают на то, что компилятор будет сначала искать эти файлы в стандартной директории с именем INCLUDE, как правило, содержащей заголовочные файлы для компилятора. Вместо угловых скобок можно использовать и обычные двойные кавычки:

#include "myheader.h"

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

Тест

Разделение программы на функции:

является ключевым методом объектно-ориентированного программирования;

+упрощает представление программы;

+сокращает размер программного кода;

ускоряет процесс выполнения программы.

После имени функции ставятся().Тело функции заключается в{}.

В чем особенность функции main()? +Это первая функция, вызываемая при запуске программы.

Конструкция C++, указывающая компьютеру выполнить действие, называется +Выражением.

Напишите пример комментария в стиле C++ и пример устаревшего комментария /*.

Выражение:

а)всегда приводит к вычислению значения;

б)является способом высказывания программы;

в)всегда происходит вне функции;

г)является частью оператора.

Укажите размер переменных следующих типов в 32-битной системе:

а)тип int; 4

б)тип long double; 10

в)тип float; 4

г)тип long. 4

Истинно ли следующее утверждение: переменная типа char может хранить значение 301? +ложно

Укажите, к каким элементам программы относятся следующие:

а)12; +целочисленная константа;

б)'a'; +символьная константа;

в)4.28915; +константа в формате с плавающей запятой;

г)JungleJim; +имя переменное или идентификатор;

д)JungleJim().+имя функции.

Напишите операторы, выводящие на экран:

а) значение переменной x; + cout << 'x';

б)имя Jim; + cout << "Jim";

в)число 509. +cout << 509;

Истинно ли следующее утверждение: в операции присваивания величина, стоящая слева от знака равенства, всегда равна величине, стоящей справа от знака равенства? + Ложно; они не равны, пока не выполнится оператор.

Напишите оператор, выводящий значение переменной george в поле размером 10 символов. cout << setw(10) << george;

Какой заголовочный файл нужно включить в исходный текст, чтобы использовать объекты cin и cout? IOSTREAM

Напишите оператор, который получает с клавиатуры числовое значение и присваивает его переменной temp. cin >> temp;

Какой заголовочный файл нужно включить в исходный текст, чтобы использовать манипулятор setw? + IOMANIP

Двумя случаями, когда компилятор обрабатывает разделительные символы, являютсяи* и *

+Строковые константы, директивы препроцессора.

Верно или неверно следующее утверждение: нет никаких препятствий к использованию переменных разного типа в одном арифметическом выражении? истинно

Значение выражения 11 % 3 равно2.

Действия каких двух типов операций сочетают в себе операции арифметического присваивания? = и + и т.д.

Напишите оператор, увеличивающий значение переменной temp на 23 с одновременным присваиванием. Напишите аналогичный оператор, не использующий сложения с присваиванием. temp += 23; temp = temp +23;

На какую величину увеличивает значение переменной операция инкремента? 1

Какие значения выведут на экран два указанных оператора, если начальное значение переменной var1 равно 20?

cout << var1--; cout << ++var1; +20 20

С какой целью мы включали заголовочные файлы в тексты наших примеров? + Для обеспечения объявлений и других данных библиотечных функций, перегружаемых операций и объектов.

Коды библиотечных функций содержатся вфайлах. +библиотечных.

Похожие работы:

«Извещение о продаже Способ продажи: Открытый запрос цен Процедуру проводит: Публичное акционерное общество "Московская городская телефонная сеть". Заказчик: Публичное акционерное общество...»

«Платные образовательные услуги, 2 корпус (пер. Механический, 1) Наименование ПДОУ Возраст Руководитель ПДОУ Количество занятий в неделю (время) Стоимость услуги "Дизайн-студия" 1 группа 4-5 лет Митина Татьяна Афанасьевна, педагог дополнительного образования (изо) 1 занятие по 25 минут 80 руб. 1 занятие "Ди...»

«ВВЕДЕНИЕ В результате реструктуризации бурового комплекса 1 апреля 2008 года было образовано предприятие ООО "Татбурсервис" с филиалами в 4-х городах. В ходе этой реструктуризации вновь созданное предприятие объединило Базы производственного обслуживания Альметьевского, Азнакаевского, Нурлатского и Елабужско...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего образования "Забайкальский государственный университет" (ФГБОУ ВО "ЗабГУ") Факультет горный Кафедра подземной разработки месторождений полезных ископаем...»

«ПДД 2017 РФ Новые ПДД с изменениями от 25 июля 2017 года Правила дорожного движения 2017 1.1. Настоящие Правила дорожного движения 2017 года** устанавливают единый порядок дорожног...»

«Областное государственное автономное образовательное учреждение среднего профессионального образования "Ютановский агромеханический техникум"РАБОЧАЯ ТЕТРАДЬ по дисциплине "ЭКОНОМИЧЕСКИЕ И ПРАВОВЫЕ ОСНОВЫ ПРОИЗВОДСТВЕННОЙ ДЕЯТЕЛЬНОСТИ" для выполнения практических работ обучающимися по программе подготовки квалифицир...»

«ОМСКИЙ МУНИЦИПАЛЬНЫЙ РАЙОН ОМСКОЙ ОБЛАСТИ Администрация Петровского сельского поселенияПОСТАНОВЛЕНИЕ от 25.09.2017 № 148 Об утверждении Порядка проведения оценки технического с...»







 
2018 www.el.z-pdf.ru - «Библиотека бесплатных материалов - онлайн документы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 2-3 рабочих дней удалим его.