logo search
FINAL (Verdana, 16)

Int cena;

double rashod;

};

Доступ к членам структуры можно производить и через использование оператора указателя структуры -> (двухсимвольный). Если переменной-указателю присвоен адрес структуры, то доступ к члену структуры может быть осуществлен с помощью конструкций вида p->m, где p - указатель, m - имя члена-переменной. Отметим, что запись p->m эквивалентна (*p).m. Переменные типа структуры можно присваивать, передавать в качестве аргументов и возвращать в качестве значений функций.

Ссылочные типы данных: 1. Указатели, 2. Ссылки.

Указатели – используются для связи переменных с машинными адресами. Принято, что для некоторого типа Т тип Т* является “указателем на Т”, т.е. переменная типа Т* содержит адрес объекта типа Т. Например:

int k=12;

int* p= &k; // указатель p содержит адрес переменной k.

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

Например:

int k=12; // определение целочисленной переменной k

int* p=&k // p содержит адрес переменной k с начальным

// значением, хранящимся по адресу, записанному в p.

Итак, если p является указателем, то *p – значение переменной, на которую указывает p. Прямое значение p – это адрес памяти, тогда как *p- это значение, находящееся по адресу, записанному в p. На основе указателей можно организовать эффективный вызов по ссылке при использовании функций. В данном случае адреса переменных используются в качестве аргументов функций, а в результате значения переменных могут изменяться в вызывающем окружении.

2. Ссылки. Объявление ссылки, которое является ее определением, обязательно должно содержать инициализатор.

Например:

double x; // определяется вещественная переменная x

double& y=x; // y – альтернативное имя для x

В данном примере имена x и y ссылаются на одно и то же значение в памяти, а потому изменение y равносильно изменению x и наоборот.

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

3.Охарактеризуйте базовые инструкции языка программирования С++.

Инструкции выбора в языке C++. В языке С++ такие понятия как операторы безусловного перехода (типа goto), ветвления (типа if), организации циклов (типа for, while) принято называть инструкциями. Объявления разрешается помещать в любом месте, где допустима инструкция и, кроме того, можно их размещать в условиях и в for-инструкциях.Для организации ветвлений в языке предусмотрены инструкции выбора if и switch. Составная инструкция – это последовательность инструкций, заключенных в фигурные скобки { и }. В инструкции switch (условие) инструкция обычно используется составная инструкция, содержащая метки case и необязательную метку default. Каждая метка case должна быть уникальна.Обычно действие, выполняемое после каждой метки case, заканчивается инструкций break. Если break отсутствует, то управление передается или следующей инструкции, идущей за очередным case, или default. В языке С++ Для организации циклов предусмотрены инструкции трех видов:while;do while ;for. Если перед выполнением цикла предварительно проверяется условие, то цикл называется “цикл с предусловием”. Отличительной чертой такого цикла является то, что он может ни разу не выполняться. Инструкция do представляет собой вариант инструкции while. Однако вместо проверки логического условия в начале цикла, в инструкции do она производится в конце. Отсюда очевидно, что цикл do выполняется хотя бы один раз, тогда как цикл while может ни разу не выполняться. Правила выполнения цикла for (инициализир_инструкция [условие] ; [выражение]). В языке С++ имеются инструкции break и continue. Инструкция break может встречаться только внутри тела циклов for, while, do или внутри инструкции switch. Она прерывает выполнение соответствующей инструкции и передает управление следующей в программе. Инструкция continue вызывает остановку выполнения очередного шага цикла и производит переход на начало очередного (следующего) шага цикла. Continue может использоваться только внутри инструкций for, while или do. В языке С++ имеется инструкция безусловного перехода goto метка; Меткой в языке является идентификатор.Инструкция return передает управление обратно в вызывающую функцию, либо если она размещена внутри функции main, то управление передается операционной системе.

4. Объясните назначение и механизм использования функций в языке С++

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

В С++ функции подразделяют на два вида: 1) встроенные, которые являются составной частью компилятора и поставляются вместе с ним; 2) нестандартные, которые разрабатываются самим программистом. Перед использованием функции в программе требуется сначала объявить ее, а затем и определить. При объявлении функции компилятору сообщается тип возвращаемого функцией значения, ее имя и список параметров.

Объявление функции можно реализовать с помощью так называемого прототипа функции, который состоит из типа возвращаемого значения функции и сигнатуры. В свою очередь под сигнатурой функции подразумевается ее имя и список формальных параметров. Таким образом, прототип функции имеет синтаксис: тип имя_ функции ([список_формальных_параметров]);

Список формальных параметров может быть пустым, содержать одно или несколько объявлений параметра, разделенных запятыми. Если функция параметров не имеет, то вместо списка формальных параметров разрешается использовать ключевое слово void. При записи объявления параметра можно указать тип параметра и его имя или можно ограничиться только типом, например:double max (double x, double y);

double max (double, double);

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

заголовок функции

{

инструкции тела функции;

}

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

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

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