Файл: Лекция №2 Обшие сведения о языке С++.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.05.2025

Просмотров: 203

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

условие ? выражение1 : выражение2;

Работает операция следующим образом. Если условие истинно (не равно 0), то результатом будет выражение1, в противном случае выражение2. Например, операция y=x<0 ? x : x; записывает в переменную y модуль числа х.

2.5.6. Операция преобразования типа

Для приведения выражения к другому типу данных в С++ существует операция преобразования типа:

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

Например, в результате действий x=5; y=x/2; z=(float) x/2; переменная y примет значение равное 2 (результат целочисленного деления), а переменная z = 2.5.

2.5.7. Операция определения размера

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

sizeof (тип) или sizeof выражение

В качестве примера рассмотрим программу, вычисляющую размеры основных типов данных в байтах. Результаты вычислений выводятся на экран (рис. 2.1).

#include "stdafx.h" #include "iostream" using namespace std; int main()

{

//Определение целочисленной переменной.

int i=3;

double d=0.2;

//Определение вещественной переменной.

//Вычисление размеров различных типов данных: cout<<"Size char:"<<sizeof (char)<<"\n"; cout<<"Size int:"<<sizeof (int)<<"\n"; cout<<"Size short int:"<<sizeof (short int)<<"\n"; cout<<"Size long int:"<<sizeof (long int)<<"\n";

cout<<"Size long long int:"<<sizeof (long long int)<<"\n"; cout<<"Size float:"<<sizeof (float)<<"\n";

cout<<"Size double:"<<sizeof (double)<<"\n"; cout<<"Size long double:"<<sizeof (long double)<<"\n"; //Размер памяти, отведенной под строку "STROKA". cout<<"Size STROKA:"<<sizeof "STROKA"<<"\n";

//Размер памяти, отведенной под целочисленную переменнцю i. cout<<"Size i:"<<sizeof i<<"\n";

//Размер памяти, отведенной под значение выражения i+d. cout<<"Size i+d:"<<sizeof (i+d)<<"\n";

return 0;

}

На рис. 2.1. видно, сколько памяти отводится под тот или иной тип данных. Остановимся на определении размера объектов. Так, объект STROKA состоит из 6 символов и занимает 7 байтов, т.е. по одному байту на каждую букву и один байт на символ окончания строки (п. 2.2.2). Под переменную i отведено 4 байта. Действительно, тип переменной int, занимает в памяти 4 байта. Последний объект это выражение i+d. Его значение занимает в памяти 8 байт. Это связано с тем, что тип double более длинный (8 байтов) по сравнению с типом int (4 байта) и значение результата было преобразовано к более длинному типу2.

Рис. 2.1. Результаты работы программы, определяющей размеры объектов

2В записи операции sizeof (i+d) были использованы скобки. Это связано с тем, что операция приведения типа имеет более высокий приоритет, чем операция сложения.


2.6. Стандартные функции

В C++ определены стандартные функции над арифметическими операндами (табл. 2.6). Таблица. 2.6. Стандартные математические функции

Обозначение

Действие

abs(x)

Модуль целого числа

fabs(x)

Модуль вещественного числа

sin(x)

Функция синус

cos(x)

Функция косинус

tan(x)

Функция тангенс

atan(x)

Арктангенс x в диапазоне -π/2 до π/2

exp(x)

Экспонента, ex

log(x)

Натуральный логарифм (x>0)

log10(x)

Десятичный логарифм (x>0)

sqrt(x)

Корень квадратный (x≥0)

pow(x,y)

x в степени y

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

некоторых случаях возведение х в степень y невыполнимо.

Так, ошибка возникает, если х отрицательное число ,а y дробь Предположим.

что,

y

правильная дробь вида k/m. Если знаменатель m четный, это означает вычисление корня четной степени из отрицательного числа, а значит, операция не может быть выполнена. В противном случае, если знаменатель m нечетный, можно воспользоваться выражением z=

pow(fabs(x),y).

2.7. Структура программы

Программа на языке С++ состоит из функций, описаний и директив процессора.

Одна из функций должна обязательно носить имя main. Элементарное описание функции

имеет вид:

тип_результата имя_функции (параметры)

{

оператор1; оператор2;

..

операторN;

}

Здесь, тип_результата это тип того значения ,которое функция должна вычислить если( функция не должна возвращать значение, указывается тип void), имя_функции имя , с которым можно обращаться к этой функции, параметры список аргументов функции (может отсутствовать), оператор1, оператор2,.., операторN операторы , представляющие тело функции, они обязательно заключаются в фигурные скобки и каждый оператор заканчивается точкой с запятой3. Как правило программа на С++ состоит из одной или

нескольких, не вложенных друг в друга функций.

Основному тексту программы предшествуют директивы процессора, которые в общем виде

выглядят так:

#include <имя_файла>

Каждая такая строка дает компилятору команду присоединить программный код, который хранится в отдельном файле с расширением .h. Такие файлы называют файлами заголовков.

3 Подробно работу с функциями рассмотрим в четвертой лекции.


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

описание стандартных математических функций находится в заголовочном файле math.h. Общую структуру программы на языке С++ можно записать следующим образом:

директивы процессора

описание глобальных переменных тип_результата main(параметры)

{

операторы главной функции

}

тип_результата имя1(параметры1)

{

операторы1;

}

тип_результата имя2(параметры2)

{

операторы2;

}

...................................................

тип_результата имяN(параметрыN)

{

операторыN;

}

2.8. Ввод и вывод данных

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

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

2.8.1. Функции вводавывода

Функция

printf(строка форматов, список выводимых переменных)

выполняет форматированный вывод переменных, указанных в списке, в соответствии со строкой форматов.

Функция

scanf(строка форматов, список адресов вводимых переменных)

выполняет ввод переменных, адреса которых указанны в списке, в соответствии со строкой форматов.

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

начинаются символом % и выполняют управление форматированием:

% флаг ширина . точность модификатор тип

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

Таблица 2.7. Символы управления

Параметр

Назначение

Флаги

-Выравнивание числа влево. Правая сторона дополняется пробелами. По умолчанию выравнивание вправо.