Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_po_programmirovaniyu_33_33_33_33_33.doc
Скачиваний:
44
Добавлен:
20.09.2019
Размер:
1.36 Mб
Скачать

7. Операции и выражения языка Си.

Осуществляют пересылку и преобразование данных в программах. обозначаются операции одним или несколькими символами +, -, >> и т.д. Данные, участвующие в операции, называют операндами. Участвуют переменные, константы и выражения. Выражение – это строка, составленная по определенным правилам из операндов, операций и предназначенная для получения значения.

3+6/2*d

Выражение константное, если его операнды только константы.

По числу операндов, участвующих в операции, различают унарные (один операнд) и бинарные (два операнда) операции. Пример унарной операции – унарный минус (изменение знака числа); пример бинарной операции - *(умножение).

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

8. Операции присваивания и операторы присваивания.

Строку, содержащую знак “=” (присвоить) называют оператором присваивания.

Общий вид оператора присваивания:

P = V,

где V- выражение, Р – переменная.

Оператор присваивания выполняется следующим образом: вычисляется значение выражения V; это значение присваивается переменной Р.

Например оператор а = а+1 означает: взять текущее значение переменной а, прибавить к нему единицу и полученный результат сохранить в переменной а.

Язык Си допускает множественное присваивание – присваивание одного значения набору переменных в одном операторе. При этом операции выполняются справа налево

Пример:

a = b = c = d = 1;

Это эквивалентно следующей последовательности операторов присваивания:

d = 1;

c = d;

b = c;

a = b.

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

V1 OP = V, что эквивалентно V1 = V1 OP V,

где V1 – переменная, V – выражение, OP – одна из операций, задаваемых знаками *, /, +, -, %, >>, <<, &, ^.

9. Математические функции. Правила их использования в выражениях.

Прототипы функций хранятся в заголовочном файле math.h.

Для того чтобы получить перечень функций, необходимо ввести в тексте программы имя библиотеки math и нажать Ctrl+F1. Появится перечень слов с выделенным именем библиотеки. Нажать Enter.

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

Обращение к функции

Тип

аргументов

Тип

значения

Описание

abs(x)

int

int

Нахождение ‌ |x| ‌

fabs(x)

double

double

-//-

labs(x)

long int

long int

-//-

acos(x)

double

double

arccos(x), -1≤x≤1, 0≤z≤pi

asin(x)

double

double

arcsin(x), -1≤x≤1, -pi/2≤z≤pi/2

atan(x)

double

double

arctg(x), -pi/2<z<pi/2

atan2(y,x)

double,

double

double

arctg(y/x), x≠0, -pi<z<pi

ceil(x)

double

double

Нахождение наименьшего целого ≥x

floor(x)

double

double

Нахождение наибольшего целого ≤x

cos(x)

double

double

Нахождение cos(x), x-в радианах

sin(x)

double

double

Нахождение sin(x), x-в радианах

tan(x)

double

double

Нахождение tg(x), x-в радианах

cosh(x)

double

double

Нахождение ch(x)

sinh(x)

double

double

Нахождение sh(x)

tanh(x)

double

double

Нахождение th(x)

exp(x)

double

double

Нахождение ex

fmod(x,y)

double

double

Деление x по модулю y

log(x)

double

double

Вычисление ln(x), x>0

log10(x)

double

double

Вычисление lg(x), x>0

modf(x,&i)

double,

double *i

double

Определение целой i и дробной modf(x,&i) частей числа x

pow(x,y)

double,

double

double

Вычисление xy, x>0. Если x=y=0=>1

sqrt(x)

double

double

Вычисление корня квадратного, x≥0

pow10(x)

int

double

Вычисление 10x

10. Операции сдвига и дополнения.

Обработка данных представлена как набор бит.

<< левый сдвиг

>> правый сдвиг

11,1 2. Поразрядные логические операции.

Логические операции и операции отношения.

Относятся к операндам, для того, чтобы получить логическое значение.

истина – отличное от 0

ложь – 0

&& - логическое и

|| - логическое или

! – логическое не

! меняет истину на ложь и наоборот

Отношения:

>больше

<меньше

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

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

==равно !=не равно

13. Смешанные операнды и преобразование типов.

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

символьные<целые<длинные<плавающие<двойной точности<

Операция sizeof

sizeof (int) – 2б

sizeof (5/2) – 2б

sizeof (5.0/2) – 4б

14. Указатели. Понятие указателя. Операции над указателями.

Понятие указателя

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

Указатель-переменная (или просто указатель) – это переменная, предназначенная для хранения адреса в памяти.

Указатель-константа – это значение адреса оперативной памяти. В языке Си определены две специальные операции для доступа к переменным через указатели: операция “&” и операция “*”. Результатом операции “&” является адрес объекта, к которому эта операция применяется. Например, &var1 дает адрес, по которому var1 хранится в памяти (точнее адрес первого байта var1). Операция “*” – это операция обращения к содержимому памяти по адресу, хранимому в переменной-указателе или равному указателю-константе.

Признаком переменной-указателя для компилятора является наличие в описании переменной двух компонентов:

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

2) символа “*” перед именем переменной.

В совокупности тип и “*” воспринимаются компилятором как особый тип данных – “указатель на что-либо”.

Таким образом, описание int var1, *ptr приводит к появлению переменной var1 и указателя-переменной ptr. Указатель ptr имеет тип *int, т.е. тип “указатель на целое”. Место, выделяемое под такой тип компилятором, зависит от модели памяти.

Операцию “*”, пытаясь выразить словами смысл выражения, можно заменить фразой “взять содержимое по адресу, равному значению указателя”. Например, оператор присваивания *ptr = *ptr2 + 4 можно интерпретировать так: взять содержимое памяти по адресу, равному значению указателя ptr2, прибавить к этому содержимому 4, а результат поместить по адресу, равному значению указателя ptr. Число байтов, извлекаемых из памяти и участвующих в операции, определяется компилятором исходя из типа, на который “указывает” указатель.

Операции над указателями

Для указателей-переменных разрешены некоторые операции: присваивание, инкремент, декремент, сложение, вычитание, сравнение.

Язык Си разрешает операцию сравнения указателей одинакового типа. При выполнении присваивания значение указателя в правой части выражения пересылается в ячейку памяти, отведенную для указателя в левой части.

Важной особенностью арифметических операций с указателями является то, что физическое увеличение или уменьшение его значения зависит от типа указателя, т.е. от размера того объекта, на который указатель ссылается. Если к указателю, описанному как type *ptr прибавляется или отнимается константа N, значение ptr изменяется на N*sizeof(type). Разность двух указателей type *ptr1, *ptr2 – это разность их значений, поделенная на sizeof(type).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]