лекция1
лекция1
лекция1
2 Препроцессор это программа, которая преобразовывает текст директив препроцессора в форму, понятную
компилятору. О данных на выходе препроцессора говорят, что они находятся в препроцессированной форме.
2. Общие сведения о языке С++
Арифметическое ИЛИ (|). Здесь также оба операнда переводятся в двоичную систему, после
чего над ними происходит логическое поразрядное сложение операндов по следующим
правилам:
1|1=1,
1|0=1,
0|1=1,
0|0=0.
Например, результат логического сложения чисел А=13 и В=23 будет равен A|B=31 (рис. 2.2).
| 0000000000001101
0000000000010111
0000000000011111
Логическое сложение A|B
Сдвиг вправо (M>>L). В этом случае двоичное представление числа M сдвигается вправо на
L позиций, что эквивалентно целочисленному делению числа M на в степени L. Например,
25>>1=12, 25>>3= 3.
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
Экспонента, e
x
exp(x)
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).
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,S,r; //Описание переменных.
//В операторах scanf для вычисления адреса
//переменной применяется операция &.
printf("a="); //Вывод на экран символов a=.
scanf("%f",&a); //Запись в переменную а
//значениия введенного с клавиатуры.
printf("b="); //Вывод на экран символов b=.
scanf("%f",&b); //Запись в переменную b значениия
//введенного с клавиатуры.
printf("c="); //Вывод на экран символов c=
scanf("%f",&c); //Запись в переменную c значениия
//введенного с клавиатуры.
r=(a+b+c)/2; //Вычисление полупериметра.
S=sqrt(r*(r-a)*(r-b)*(r-c)); //Вычисление площади треугольника.
//Вывод символов S=, значения S и символа табуляции \t.
//Спецификация %5.2f означает, что будет выведено вещественное число,
//под которое отводится 5 знаков, причем 2 из них после точки.
printf("S=%5.2f \t",S);
//Вывод символов p=, значения выражения 2*r
//и символа окончания строки \n.
printf("p=%5.2f \n",2*r);
//Оператор printf("S=%5.2f \t p=%5.2f \n",S,2*r);
//выдаст тот же результат.
return 0;}
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,S,r;
printf("Vvedite a, b, c \n"); //Вывод на экран строки символов.
scanf("%f%f%f",&a,&b,&c); //Ввод значений.
r=(a+b+c)/2;
S=sqrt(r*(r-a)*(r-b)*(r-c));
printf("S=%5.2f \t p=%5.2f \n",S,2*r); //Вывод на экран результатов.
return 0;
}
2.8.2. Объектно-ориентированные средства ввода-вывода.
Описание объектов для управления вводом-выводом содержится в заголовочном файле
iostream.h. При подключении этого файла с помощью директивы #include <iostream.h> в
программе автоматически создаются объекты-потоки cin для ввода с клавиатуры и cout для
4
вывода на экран, а так же операции помещения в поток << и чтения из потока >>.
Итак, с помощью объекта cin и операции >> можно присвоить значение любой переменной.
Например, если переменная i описана как целочисленная, то команда cin>> i; означает, что в
переменную i будет записано некое целое число, введенное с клавиатуры. Если нужно ввести
несколько переменных, следует написать cin>>x>>y>>z;.
Объект cout и операция << позволяют вывести на экран значение любой переменной или
текст. Текст необходимо заключать в двойные кавычки, кроме того, допустимо применение
специальных символов \t и \n. Запись cout<<i; означает вывод на экран значения переменной
i. А команда cout<<x<<''\t''<<y; выведет на экран значения переменных x и y разделенные
символом табуляции.
Рассмотрим следующую задачу.
ЗАДАЧА 2.2. Известны плотность ρ, высота h и радиус основания R цилиндрического
слитка, полученного в металлургической лаборатории. Найти объем V, массу m и площадь S
основания слитка.
Входные данные: ρ, h, R. Выходные данные: S, V, m.
Учитывая, что S=2πR, V=πR2h и m=ρV составим текст программы:
#include <iostream>
using namespace std;
#define pi 3.14159 //Определение константы.
int main()
{double R,h,r,S,V,m; //Описание переменных.
cout<<"R="; //Вывод на экран символов R=.
cin>>R; //Ввод значения переменной R.
cout<<"h="; //Вывод на экран символов h=.
cin>>h; //Ввод значения переменной h.
cout<<"r="; //Вывод на экран символов r=.
cin>>r; //Ввод значения переменной r.
S=2*pi*R; //Расчет площади.
V=pi*R*R*h; //Вычисление объема.
m=r*V; //Определение массы.
cout<<"S="<<S; //Вывод на экран символов S= и значения переменной S.
cout<<"\n V="<<V; //Вывод на экран с новой строки V= и значения V.
cout<<"\n m="<<m; //Вывод на экран с новой строки m= и значения m.
return 0;
}