Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к Ветчинину 3 курс.docx
Скачиваний:
1
Добавлен:
14.04.2019
Размер:
66 Кб
Скачать

2.16 Передача массивов функциям, варианты, примеры.

Вызов функции с аргументом- массивом.

SIZE – переменная, определяющая размерность массива

function(array1, SIZE);

По умолчанию переменные при вызове функции принимаются по значению, а массив по ссылке (по адресу), значений много. Экономия ресурсов, время-память. Это может привести в изменениям значений в массиве. Как это предотвратить? Использовать при его инициализации квалификатор const.

Определение функции, вызывающей массив (использует массив в качестве аргумента).

int function(int name_array[], SIZE) {…}

SIZE компилятор игнорирует, только проверяет неравенство нулю. Так что можно не писать. Прототип по желанию.

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

3.1 Переменная в программировании, назначение, отличительные особенности.

Назначение переменной в программировании – работа с данными: запись, хранение, считывание. Для этого программной системой выделяется блок ячеек памяти. Программная система (тип данных) управляет созданным на ее основе объектом, переменной; использованием переменной: записью, хранением, считыванием, выделением блока ячеек памяти, хранением идентификатора переменной в др. ячейках, установлением связи между идентификатором и адресом ячейки памяти, выделенной для хранения значений в переменной.

3.2 Переменная в C/C++, особенности, примеры.

Переменная в С++ - программный объект, обеспечивающий программисту работу с данными. Это блок элементарных ячеек памяти, выделенных для хранения машинных слов (размером, кратным 8 битам). Это объект, создаваемый либо на основе встроенных типов данных, либо на основе типов данных, создаваемых программистом (структуры, классы).

Правила идентификации переменных:

- исп только латинские буквы

- различие регистров А-а

- все символы кроме нижнего подчеркивания исключены

- в «классическом С» 31 символ

- желательно имена простых объектов, переменных начинать с маленькой буквы, именовать осмысленно.

- место объявления переменных крайне жестко

- инициализация переменной обязательна

- для имен переменных не могут быть использованы зарезервированные ключевые слова типа if, while, for, main.

3.3 Программный дизайн при работе с переменными в C/C++.

см. вопрос 3.2

3.4 Модификаторы встроенных типов данных в C/C++, назначение.

В С/С++ могут использоваться модификаторы типов переменных:

signed char – 8 байт, тот же char только (-127;127)

signed int – аналогично для int

unsigned short int – беззнаковый короткий int, 2 байта

short int - 2 байта (-32000;32000) экономия

3.7 Преобразование типов в стиле С и в стиле С++, примеры.

Приведе́ние ти́па (type conversion) — преобразование значения переменной одного типа в значение другого типа. Выделяют явное инеявное приведения типов.

  • При явном приведении указывается тип переменной, к которому необходимо преобразовать исходную переменную.

  • При неявном приведении преобразование происходит автоматически, по правилам, заложенным в данном языке программирования.

Неявное на С

double d; // вещественный тип

long l; // целый тип

int i; // целый тип

if (d > i) d = i;

if (i > l) l = i;

if (d == l) d *= 2;

Явное на С

int X;

int Y = 200;

char C = 30;

X = (int)C * 10 + Y; //переменная С приведена к типу int.

На С++

  • Назначение: Приведение типа по обычным правилам, когда компилятор отказывается привести его автоматически (отличается от применяемого в Си (type_to)expression_from только тем, что с указателями не работает; для указателей применяетсяreinterpret_cast). Применяется:

    • для вычислений в более широком числовом типе (например, для дробных вычислений с целыми числами);

    • чтобы избавиться от предупреждения «Возможная потеря точности» при переводе в более узкий числовой тип;

    • для указателей и ссылок при конвертации в родительский тип;

    • для типов с конструкторами или операциями конвертации наподобие operator type_to;

    • в шаблонах — компилятор уже при специализации шаблона решает, какие операции использовать;

    • в операции ?:, у которой then- и else-части должны иметь один тип.

  • Ограничения на expression_from: нет.

  • Ограничения на type_to: должен найтись способ преобразования в type_to.

  • Производит ли код: в общем случае да.

  • Возможные ошибки: относительно безопасно. Логические ошибки возможны, если привести в неправильный тип или вообще пропустить приведение, когда оно требуется. Не исключено, что после преобразования появится временный объект, который будет благополучно уничтожен вместе со всеми изменениями (большинство компиляторов на это выдают предупреждение).

string s = static_cast<string>("qqq"); // аналогично string s = string("qqq");

string s = (string)"qqq"; // синтаксис Си тоже работает

string s = static_cast<string>(5); // не компилируется - нет подходящего конструктора

3.9 Что нужно понимать под термином «конгломерация данных» в C/С++.

Соединение элементов, данных в одно целое при сохранении их свойств и характеристик.

3.10 Что можно понимать под термином «агрегирование данных» в C/С++.

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

3.11 Массивы в C/С++, основные понятия.

Массив – упорядоченный набор ячеек памяти, предназначенный для хранения данных одного типа. Многоместная переменная, программный объект, программная система, набор связанных между собой программ, конструкция, программная конструкция.