7. Подпрограммы |
161 |
|||
Рисунок 7.3 Графическое обозначение подпрограммы
Подпрограмма описывается один раз и может быть затем неоднократно вызвана в разделе операторов программы или другой подпрограммы. Вызов подпрограммы (т.е. ее реальное использование) приводит к выполнению входящих в нее операторов. После их выполнения работа программы продолжается с оператора, который следует непосредственно за вызовом подпрограммы, в вызывающем блоке.
При вызове подпрограмма может получать исходные данные от вызывающего блока и, при необходимости, возвращать ему результат работы.
В Pascal подпрограммы бывают двух видов: процедуры и функции. Разница между ними достаточно условна1. Суть этой разницы сводится к различию методов работы с ними.
Использование подпрограмм позволяет вывести процесс программирования на качественно иной уровень. Т.к. подпрограммы, по сути, являются независимыми блоками, то их разработку можно вести последовательно, шаг за шагом. Более того, различные участки кода, объединенные в общие библиотеки можно поручать разным программистам. Это позволяет более четко выделить сферы ответственности и разбить процесс программирования во времени и по степени сложности. Кроме того, выделив в подпрограммы многократно повторяющиеся действия, можно получить существенное сокращение программного текста, чем достигается более высокая наглядность и меньшая загруженность памяти ЭВМ.
Как процедуры, так и функции, являясь алгоритмами написанными пользователем языка программирования Pascal, и имеющими уникальное имя на своем уровне иерархии в программе, на блок-схемах изображаются блоком предопределенного процесса, имеющего вид Рисунок 7.3.
7.2 Подпрограммы в языке Pascal
Использование подпрограмм вносит иерархическую зависимость в алгоритм решения задачи, т.е. одна часть программы подчиняется другой, также соблюдается принцип вложенности, то есть любой блок может содержать внутренние блоки. Поэтому рекомендуется придерживаться следующей последовательности описаний для каждого блока:
— заголовок блока;
1 Более того, в большинстве современных языков программирования вообще нет деления на процедуры и функции (например в C существуют только функции, а процедурой можно назвать функцию не возвращающую значения (void)). Даже в Pascal существует возможность настройки компилятора таким образом, чтобы не существовало различий между процедурами и функциями.
162 |
7.2 Подпрограммы в языке Pascal |
—описание констант;
—описание типов;
—описание переменных;
—внутренние блоки.
Таким образом, структура у подпрограмм такая же, как и у основной программы, за исключением того, что в подпрограмме нельзя описывать список используемых библиотек, а после операторов подпрограммы стоит end с точкой с запятой, тогда как программа заканчивается end с точкой.
Как отмечалось выше, в языке Pascal два вида подпрограмм: процедуры
и функции.
Функция – подпрограмма языка Pascal, реализующая некоторый алгоритм, результатом которого является формирование некоторого единственного значения. Обращение к функции происходит через ее имя. Функция всегда возвращает, как минимум, один параметр, причем возвращение параметра происходит через операцию присваивания, путем помещения имени функции справа от этой операции. Функции Pascal очень похожи на обычные функции, используемые в математике. Часть функций уже изначально встроена в базовый набор языка и рассматривалась ранее.
Это, например, sin(x), cos(x), ln(x), pi, frac(x), trunc(x). Видно, что у перечисленных функций есть аргумент, но не у всех. Так, функция pi его не имеет, поскольку число Пи является фундаментальной константой и ни от чего не зависит. Хоть здесь они и не представлены, однако существуют функции с числом аргументов более одного.
Стандартные функции языка Pascal представляют собой некоторый алгоритм, реализующий последовательность действий с максимальной оптимальностью. Так, например, арифметико-логическое устройство микропроцессоров не может напрямую реализовать вычисление функции sin, потому, на первом этапе sin раскладывается в ряд, что позволяет используя только базовые арифметические операторы (+, –, *, / ) вычислять сложные тригонометрические функции. Естественно, что нам не нужно заботиться о программировании этих рядов, поскольку, в виду частоты использования, их уже описали авторы базовых библиотек Pascal. Потому работа с этими функциями достаточно проста. Однако, если бы в базовый набор не был встроен sin, то, вспомнив, что разложение синуса в ряд имеет вид:
sin(x) = x − |
x3 |
+ |
x5 |
− |
x7 |
+ |
x9 |
+… |
|
3! |
5! |
7! |
9! |
||||||
мы бы могли написать функцию: function sin(x:real):real; var xx,S:real;
i:byte;
f:longInt; begin
S:=0;
f:=1;
xx:=x;
i:=1;
while i<20 do begin
S:=S+xx; {добавление в сумму неч. члена с плюсом} i:=i+1; {четное значение}
xx:=xx*x; {четная степень} f:=f*i; {четный факториал} i:=i+1; {нечетное значение} xx:=xx*x; {нечетная степень} f:=f*i; {нечетный факториал}
S:=S-xx; {добавление в сумму неч. члена с минусом} end;
sin:=S;
end;
Здесь для простоты понимания принципа работы функции, мы ограничились первой двадцаткой членов ряда. Кроме того, здесь учтено, что период повтора знака у членов равен четырем (четные члены в сумму не включаются, однако используются для вычисления нечетных).
Далее рассмотрим порядок обращения к функциям, или, как принято говорить «вызов». Совершенно естественной выглядит запись обращения:
y:=sin(x);
z:=exp(y);
в то время, как такая запись бессмысленна: sin(x) := y; (! не верно!)
exp(y) := z; (! не верно!)
Синтаксис Pascal не допускает подобных общений. Всегда имя функции ставится справа от операции присваивания. Единственным исключением является определение значения функции при ее описании в собственном теле. Т.е. при описании для задания значения мы имя функции без параметров ставим слева от операции присваивания.
Описание состоит из заголовка и тела. Заголовок выглядит следующим образом:
function имя_функции (список формальных параметров) : тип результата;
Здесь:
имя_функции – идентификатор пользователя, используемый затем для ее вызова;
список формальных параметров – набор параметров, состоящий для функции, как правило, только из входных переменных. Для каждого формального параметра указывается его тип и способ передачи. Параметры одного типа и с одинаковым способом передачи, перечисляются через запятую, все остальные через точку с запятой.
Результат работы функции возвращается в вызывающий модуль через ее имя. Тип результата указывается в заголовке. Чтобы вернуть результат, необходимо чтобы в разделе операторов (теле) функции присутствовал хотя
164 |
7.2 Подпрограммы в языке Pascal |
бы один оператор присваивания, который ставит в соответствие имени функции полученное в результате работы значение:
Имя_функции := результат;
Пример описания заголовка функции может быть таким:
function Summa(Const X:T2mx; Const N,M:byte): integer;
То, что касается вызова функции, то стоит сказать, что она не является отдельным оператором и может быть использована только:
—в выражениях, в правой части оператора присваивания,
—в составе булевского выражения,
—в списке вывода процедур write или writeLn.
—в списке фактических параметров любой подпрограммы, если только
способ их передачи позволяет это (передача должна быть либо по значению, либо по константной ссылке1).
ПРИМЕР
S:=Summa(A,Na,Ma) + Summa(B,Na,Ma);
или так:
If Summa(A,N,M) > Summa(B,K,L) then begin
writeLn(‘Сумма положительных элементов матрицы A больше суммы положительных элементов матрицы B’); writeLn (‘эта сумма равна: ’,Summa(A,N,M));
end;
Само описание функции поиска положительных элементов в двумерном массиве может быть таким:
function Summa(Const X:T2mx; Const N,M:byte): integer; var i,j:byte;
S:integer; begin
S:=0;
for i:=1 to N do for j:=1 to M do
if X[i,j]>0 then S:=S+X[i,j];
Summa:=S;
end;
Блок-схема алгоритма этой функции показана на (Рисунок 7.4). Необходимо отметить, что обычно функции применяются для
выполнения каких-либо математических вычислений, в результате которых получается одно число. Если в результате работы функции происходит изменение каких-либо данных (преобразование массивов и т.д.), то это называется побочным действием функции и таких ситуаций по возможности нужно избегать, т.к. это приводит к нарушению логики использования средств языка Pascal (раз есть процедуры, то и пользоваться лучше ими в подходящем случае, чем применять нечто не совсем подходящие под ситуацию). Далее подробно рассмотрим процедуры.
1 Подробнее о способах передачи будет рассказано ниже
7. Подпрограммы |
165 |
||||||||||||||
Рисунок 7.4 Функция суммы положительных элементов
Процедура – подпрограмма языка Pascal, предназначенная для формирования нескольких значений и/или выполнения некоторых действий не связанных напрямую с изменением значений параметров. Процедура описывается в разделе описаний вызывающего ее блока, т.е. в программе или подпрограмме более высокого уровня, и состоит из заголовка, раздела описаний и раздела операторов (тела) процедуры.
Заголовок выглядит следующим образом:
procedure имя_процедуры (список формальных параметров);
Здесь:
имя_процедуры – идентификатор пользователя, используемый затем для вызова процедуры;
список формальных параметров – набор параметров, состоящий из входных и выходных данных. Для каждого формального параметра указывается его тип и способ передачи. Параметры одного типа и с одинаковым способом передачи, перечисляются через запятую, все остальные через точку с запятой.
166 |
7.2 Подпрограммы в языке Pascal |
||||||||||||
Рисунок 7.5 Ввод двумерного массива (а)) и возведение его элементов в квадрат (б))
ПРИМЕР
procedure Vvod(var X:T2mx; Var N,M:byte; Name:char);
или так:
procedure SqrtMass(const X:T2mx; const N,M:byte);
Вызов процедуры – это отдельный оператор, в котором указывается
Имя_процедуры (список фактических параметров);
Опишем полностью процедуры объявленные выше. Процедура ввода двумерного массива (Рисунок 7.5 а)):
procedure Vvod(var X:T2mx; var N,M:byte; Name:char); var i,j: byte;
begin
writeLn(‘вводим массив ’, Name, ‘, введите N и M’); readLn(N,M);
for i:=1 to N do for j:=1 to M do
begin write(Name,‘[’,i,’,’,j,’]=’); readLn(X[i,j]);
end;
end;
Возведение в квадрат элементов двумерного массива будет таким (Рисунок 7.5 б)):
procedure SqrMass(const X:T2mx; const N,M:byte); var i,j: byte;
begin
for i:=1 to N do for j:=1 to M do
X[i,j]:=sqr(X[i,j]);
end;
7.3 Локальные и глобальные идентификаторы
Ранее отмечалось, что главная программа и входящие в ее состав подпрограммы имеют свои разделы описаний, а потому объявленные в этих разделах идентификаторы (константы, типы, переменные) обладают разными свойствами.
Идентификаторы, описанные в подпрограмме, являются локальными для нее, т.е. работа с ними возможна только внутри этой подпрограммы и внутри вложенных в нее блоков.
Имена, описанные в модулях более высокого уровня, являются глобальными для всех своих подчиненных. Эти имена могут быть использованы в любом модуле стоящем ниже на иерархической лестнице, а также в исполнительной части самого модуля.
Если объявление глобальных переменных1 происходит в основной программе, то во время ее работы значения глобальных переменных записываются в область памяти, называемую сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы. Локальные данные записываются в иную специальную область памяти, называемую стеком и доступны только во время работы подпрограммы, в которой они описаны, по завершении работы подпрограммы эти данные стираются.
Основные правила работы с глобальными и локальными переменными:
–локальные переменные доступны внутри блока, в котором они описаны, и во вложенных в него блоках;
–имя, описанное в локальном блоке «закрывает» совпадающее с ним имя из блока более высокого уровня. Т.е. если при обработке подпрограммы возникла коллизия имен (имена глобальной и локальной переменных совпадают), то обрабатываться будет локальная переменная, до тех пор, пока работа с подпрограммой не закончится. Однако, как говорилось ранее, все глобальные переменные доступны в подпрограмме. Если возникает
потребность в обращении к переменной при коллизии имен, то следует
1 Здесь под переменной подразумеваются данные, которые могут храниться за любым идентификатором (константой, типом и т.д.), просто именно переменные являются основным объектом работы большинства алгоритмов.
168 |
7.3 Локальные и глобальные идентификаторы |
полностью указывать ее имя вместе с названием модуля. Делается это так: вначале указывается название модуля (модуль основной программы – это, собственно, название программы, указанное после слова program), а далее через точку имя переменной (или иной идентификатор) к которому нужно обратиться. Для примера, изображенного на Рисунок 7.6 полные обращения к переменным такие:
G.X, G.Y, G.A.A1.XA1, G.C.YC и т.д.
На Рисунок 7.6 изображена иерархическая структура некоторой условной программы. Эта программа имеет основной глобальный модуль обозначенный как G. В G объявлены переменные X и Y, которые являются глобальными по отношению ко всем подчиненным модулям. Область видимости этих переменных абсолютная, т.е. в данной программе они доступны из любой точки. А переменные XA и YA из блока A будут видны помимо, собственно блока A еще и в блоках A1 и A2. Ну а, например, переменные XB22 и YB22 нигде кроме B22 не будут видны, они для B22 являются локальными идентификаторами.
Можно определить локальные идентификаторы процедур как те, которые описываются в разделах var, const, type и в скобках с параметрами.
Глобальный блок G (переменные X, Y)
Блок А (переменные XA, YA)
Блок А1 (переменные XA1, YA1)
Блок А2 (переменные XA2, YA2)
Блок С
(переменные XC, YC)
Блок B (переменные XB, YB)
Блок B1
(переменные XB1, YB1)
Блок B2 (переменные XB2, YB2)
Блок B21
(переменные XB21, YB21)
Блок B22
(переменные XB22, YB22)
Рисунок 7.6 Пример иерархии подпрограмм и переменных
Глобальными можно назвать все те идентификаторы, которые используются в основной программе, в том числе и в скобках при вызове процедур.
7.4 Параметры подпрограмм
Все то, что, записывается в скобках сразу после названия подпрограммы, называется ее параметрами. Параметры, по сути, являются тем интерфейсом, с помощью которого данная подпрограмма «общается с внешним миром».
При обмене данными между программой и подпрограммами используется механизм передачи входных и выходных параметров. Входные параметры – это исходные для подпрограммы данные, а выходные – результат ее работы.
Для того чтобы подпрограмма могла быть использована многократно для разных наборов входных и выходных параметров, используют наборы формальных и фактических параметров.
Формальные параметры – это локальные переменные необходимые для описания алгоритма подпрограммы, они описываются в ее заголовке и используются в собственном разделе операторов. Выше говорилось, что формальные параметры – все то, что указывается в скобках справа от названия подпрограммы при ее описании. Потому описание формальных параметров происходит только один раз.
Вообще говоря, список формальных параметров является необязательной частью заголовка, его наличие зависит от способа обмена информацией процедуры с вызывающим блоком, т.е., например, возможен такой вариант заголовка:
Procedure Poisk;
В этом случае процедура вызывается просто по имени:
Poisk;
Однако, использование процедур и функций без параметров, как правило, предполагает либо независимость исходных данных от данных глобального модуля, либо использование глобальных переменных (или иных идентификаторов). Если есть возможность не пользоваться глобальными переменными, то лучше ей воспользоваться, поскольку это позволяет повысить автономность подпрограммы и надежность ее алгоритма.
Фактические параметры – это набор данных, в обработке которых и заключается предназначение алгоритма. В момент вызова формальные параметры заменяются фактическими во всей подпрограмме. Другими словами фактические параметры – все то, что указывается в скобках справа от названия процедуры или функции при ее вызове. Фактические параметры у подпрограммы могут меняться при каждом вызове, а формальные нет.
Имена формальных и фактических параметров могут совпадать, это не отразится на выполнении программы, но может привести к проблемам при
170 |
7.4 Параметры подпрограмм |
понимании алгоритма работы, поэтому рекомендуется использовать для формальных и фактических переменных разные имена.
Следует отметить, что поскольку параметры представляют собой интерфейс связи между главным модулем и процедурами, то параметры заявленные (формальные) должны соответствовать параметрам фактическим. Критериев такого соответствия принято выделять всего четыре:
—по количеству, т.е. количество заявленных и реально используемых переменных должно совпадать;
—по типу, т.е. тип заявленных и реально используемых переменных должен совпадать;
—по порядку следования, т.е. переменные в описании подпрограммы и при ее вызове должны быть перечислены в одинаковом порядке;
—по способу передачи, т.е. статус параметров в главной программе должен быть совместимым с заявленным статусом параметров подпрограммы.
На способах передачи параметров стоит остановиться подробнее.
В зависимости от того, является передаваемый параметр входным или выходным, различают и способ его передачи. Для языка Pascal принято выделять три способа передачи:
—по значению;
—по ссылке с правом изменения;
—по ссылке без права изменения.
Основным моментом важным для понимания является усвоение принципов лежащих в основе передачи по значению или по ссылке. Условно разницу этих двух видов передач можно изобразить так, как показано на Рисунок 7.7.
По значению передаются параметры-значения, являющиеся простыми входными данными, т.е. константами, именами переменных и простыми выражениями. При этом значение передаваемого фактического параметра
Глобальный блок G |
Глобальный блок G |
|
X |
Y |
|
X |
Y |
|
XA |
YA |
|
Блок А |
Блок А |
|
XA |
YA |
|
а) |
б) |
Рисунок 7.7 Передача параметров по значению а) и по ссылке б)
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
… массив — это одномерный массив, каждым элементом которого является свои одномерный массив, или, иначе говоря, это такой тип данных, элементы которого однотипны и каждый из них характеризуется уникальной парой чисел: индексом строки и индексом столбца
—
Под произвольным доступом к компонентам файла понимается работа с файлом с возможностью произвольного перемещения …
—
К основным типам данных языка в C++ относится … — тип с плавающей запятой наименьшего размера
Тип ответа: Одиночный выбор
char
bool
double
wchar_t
float
int
—
Если связанный с потоком файл, который открывается в режиме открытия w+, уже существует, то …
Тип ответа: Одиночный выбор
О вся информация из него стирается
О выдается ошибка при исполнении программы
О информация из него не стирается, можно выполнять запись в конец файла
—
…-это процесс уменьшения значения переменной
Тип ответа: Одиночный выбор
О итерация
О декрементация
О инкрементация
—
В языке C++ рекомендуется первоначально использовать при написании программ …
Тип ответа: Одиночный выбор
О только строчные буквы
О только прописные буквы
О строчные и прописные буквы
О цифры и буквы (строчные и прописные)
—
Перемещение указателя на произвольную файловую позицию происходит с помощью функции fseek, которая записывается как int fseek(FILE *f, long off, int org); где FILE *f- это …
Тип ответа: Одиночный выбор
О позиция смещения
О указатель на файл
О начало отсчета
—
Если объявление глобальных переменных происходит в основной программе, то во время ее работы значения глобальных переменных записываются в область памяти, называемую …
Тип ответа: Одиночный выбор
О сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы
О стеком и доступны только во время работы функции, в которой они описаны
О сегментом данных (статический сегмент) и доступны только во время работы функции, в которой они описаны
О стеком и доступны постоянно на протяжении всей работы программы
—
Идентификаторы — это …
Тип ответа: Одиночный выбор
О высказывания, относительно которых можно сказать истинно оно или ложно
О имена переменной константы, процедур, функций и т. д.
О атомарная часть C++ программы, которой можно поставить в соответствие предложение естественного языка
—
B C++ тип данных bool — это …
Тип ответа: Одиночный выбор
О тип с плавающей запятой, повышенной точности
О целочисленный тип, обычно содержащий члены кодировки ASCII
О целочисленный тип, который может иметь одно из двух значений: true или false
О тип с плавающей запятой наименьшего размера
—
B C++ циклическая алгоритмическая управляющая структура с параметром записывается как …
Тип ответа: Одиночный выбор
О while
О for
О do while
—
Говоря о порядке обращения к элементам двумерного массива, можно утверждать, что …
Тип ответа: Одиночный выбор
О двумерный массив всегда подвергается изменению сразу весь, целиком
О массив можно подвергать изменению целиком, в зависимости от условия задачи
О нельзя подвергать изменению целиком весь массив сразу
—
Директива #include включает в программу содержимое указанного файла, имя которого может быть указано двумя способами, в частности:…
Тип ответа: Множественный выбор
#include// my_file.h>> //
#include#my_file.h
#include
#include «my_file.h»
—
Описание формальных параметров алгоритма функции происходит …
Тип ответа: Одиночный выбор
О только два раза
О неограниченное количество раз
О только один раз
—
Квадратные матрицы — это такие матрицы, у которых …
Тип ответа: Одиночный выбор
О все элементы матрицы равны нулю
О число элементов в строке равно числу элементов в столбце, т. е. M = N
О число элементов в строке/столбце зависит от того, в каком столбце/строке оно содержится
О не все ячейки заполнены элементами
—
Чтобы текст программы в C++ был более понятным, рекомендуется придерживаться общепринятых соглашений об именах объектов, в частности, если имя состоит из нескольких слов (например, first index), принято …
Тип ответа: Множественный выбор
разделять слова символом подчеркивания (first index)
писать каждое следующее слово с большой буквы (FirstIndex)
писать через пробел (first index)
писать слитно строчными буквами (first index)
—
Имена формальных и фактических параметров …
Тип ответа: Одиночный выбор
О не могут совпадать
О могут совпадать, но это отразится на выполнении программы
О могут совпадать и это не отразится на выполнении программы, но может привести к проблемам при понимании алгоритма работы
—
В C++ оператор … высвобождает выделенную память
delete
&
new
—
К основным типам языка в C++ относится … — тип с плавающей запятой, повышенной точности
Тип ответа: Одиночный выбор
О char
О bool
О double
О _wchar_t
О float
О int
—
Если произвести единичный циклический сдвиг элементов массива вправо, то …
Тип ответа: Одиночный выбор
О будет происходить перемещение содержимого последней ячейки в первую
О будет происходить перемещение содержимого первой ячейки в последнюю
О будет создана дополнительная ячейка
—
Файл — это …
Тип ответа: Одиночный выбор
О именованная область на внешнем информационном носителе (диске), содержащая данные
О перенос данных
О специальное место на компьютерном носителе информации
—
Идентификаторы, описанные в функции, являются локальными для нее, если …
Тип ответа: Одиночный выбор
О работа с ними возможна только внутри этой функции и внутри вложенных в нее блоков
О они могут быть использованы в любом модуле, стоящем ниже на иерархической лестнице
О они могут быть использованы в исполнительной части самого модуля
—
Файл, связанный с потоком, в режиме открытия а открывается для …
Тип ответа: Одиночный выбор
О чтения
О записи
О добавления
О чтения и записи
—
Параметры-переменные используются для передачи … значений функций
Тип ответа: Одиночный выбор
О выходных
О входных
О входных и выходных
—
Строковые данные можно складывать друг с другом (например, при сложении строк «Hello», и «world!» получится строка «Hello, world!»), и такая операция над строками будет называться …
Тип ответа: Одиночный выбор
О инкрементацией
О конкатенацией
О инициализацией
О итерацией
—
Для того чтобы в программе описать переменную типа одномерный массив, нужно записать:…
Тип ответа: Одиночный выбор
О <тип> <имя_массива>[<инициализатор>]
О массива
О <индекс> <имя_массива>
—
Директивы препроцессора начинаются со знака который должен быть самым первым символом строки
Тип ответа: Одиночный выбор
О «амперсанд» (&)
О «правый слеш» («/»)
О «диез» (#)
О «плюс» (+)
—
Функция обработки строковых данных islower(c) возвращает значение true, если с является и false в других случаях
Тип ответа: Одиночный выбор
О буквой нижнего регистра
О буквой верхнего регистра
О буквой или цифрой
О цифрой
О пробелом
—
Начало однострочного комментария в C++ обозначается комбинацией …
Тип ответа: Одиночный выбор
«//»
«#»
«*/»
«?»
«&»
—
Функция обработки строковых данных strcat (s1, s2)…
Тип ответа: Одиночный выбор
О выполняет побайтное копирование п символов из строки s2 в строку s1. возвращает значения s1
О сравнивает строку s1 со строкой s2 и возвращает результат типа ɪnt: 0 — если строки эквивалентны, >0 — если s1 < s2, <0 — если s1 > s2
О определяет длину указанной строки, без учета нуль-символа
О объединяет строку s2 со строкой s1, результат сохраняется в s1
—
Наиболее естественными объектами, которые принято хранить в двумерных массивах, являются …
Тип ответа: Одиночный выбор
О числа
О латинские буквы
О символы
—
Идентификаторы могут состоять …
Тип ответа: Одиночный выбор
О только из арифметических знаков +, *, /
О как из цифр, так и из специальных символов #, $, Л, &
О только из букв латиницы, цифр и символа «_»
—
B C++ все файлы … последовательность байтов
Тип ответа: Одиночный выбор
О могут рассматриваться или как структурированная, или как неструктурированная
О рассматриваются как структурированная
О рассматриваются как неструктурированная
—
Диапазон типа данных float-…
Тип ответа: Одиночный выбор
О 1 байт
О 2 байта
О 4 байта
О 8 батов
—
B C++ циклическая алгоритмическая управляющая структура с постусловием записывается как …
Тип ответа: Одиночный выбор
О while
О for
О do
—
Говоря об одномерных массивах, можно утверждать, что …
Тип ответа: Множественный выбор
массив — переменная сложной структуры и потому не может быть подвергнута обработке целиком
массив может быть подвергнут обработке целиком
все действия с массивами следует проводить поэлементно, т.е. обращаясь непосредственно к каждой его ячейке
—
Прямым проходом следует пользоваться при реализации …
Тип ответа: Одиночный выбор
О циклического сдвига вправо
О циклического сдвига влево
О как циклического сдвига вправо, так и циклического сдвига влево
—
Говоря об алгоритмах подсчета суммы и произведения элементов массива, можно утверждать, что накопление суммы начинают с…
Тип ответа: Одиночный выбор
О нуля, а произведения — с единицы
О единицы, а произведения — с нуля
О нуля, как и произведения
О единицы, как и произведения
—
В языке C++ блок комментариев (условный вид блоков программ) выделяется сочетанием символов …
Тип ответа: Одиночный выбор
О «/*» — начало комментария и «*/» — конец комментария
О «*/»- начало комментария и «/*» — конец комментария
О «//»- начало комментария и «//» — конец комментария
О «#»- начало комментария и «/*» — конец комментария
—
Если доступ к элементам многомерных массивов осуществляется с помощью индексированных переменных а[1] [1], то доступ к этому же элементу с помощью указателей будет …
Тип ответа: Одиночный выбор
*(*(a+1)+1)
a[1,1]
a|1||1|
*(a+1)+1
a[1::1]
—
Для создания переменных, которые доступны во всех файлах программы, используется класс памяти …
Тип ответа: Одиночный выбор
О auto
О extern
О static
О register
—
Локальные данные записываются в область памяти, называемую …
Тип ответа: Одиночный выбор
О сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы
О стеком и доступны только во время работы функции, в которой они описаны
О сегментом данных (статический сегмент) и доступны только во время работы функции, в которой они описаны
О стеком и доступны постоянно на протяжении всей работы программы
—
Выходные параметры — это …
Тип ответа: Одиночный выбор
О текущие данные для функции
О результат работы функции
О исходные данные для функции
О набор данных, в обработке которых и заключается предназначение алгоритма
О параметры, переданные по ссылке без права их изменения
—
Изменить режим работы с файлом …
Тип ответа: Одиночный выбор
О можно только после закрытия файла
О невозможно
О можно только во время работы с файлом
—
Разреженные матрицы — это такие матрицы, у которых …
Тип ответа: Одиночный выбор
О все элементы матрицы равны нулю
О число элементов в строке равно числу элементов в столбце, т. е. M = N
О число элементов в строке/столбце зависит от того, в каком столбце/строке оно содержится
О не все ячейки заполнены элементами
С этим файлом связано 7 файл(ов). Среди них: Тип и характиристика компании.docx, Иностранный_язык_в_сфере_юриспурденции_2_семестр.docx, Otchet.po.praktike._na.baze.kompanij_.doc, Прил 1_ИЗ на практику_Магистратура_ТРПС_2 сем.docx, РПД Производственная технологическая (проектно-технологическая) , СЕТЕВАЯ ИНФРАСТРУКТУРА КОМПАНИИ И КАК ПРАВИЛЬНО ЕЕ ОРГАНИЗОВАТЬ., Синергия Тест Основы экономической теории. (2021) 91 вопрос с от.
Показать все связанные файлы
Подборка по базе: ОГП Тема № 2 (Послание Президента РФ 2023).doc, АСР.doc; Тема № 3.2. Занятие 1.doc, АСР; Тема № 3.10.doc, ЛЕКЦИЯ № 8.БАДы. Основные требования к хранению..docx, о родном языке Маше.docx, доклад на тему- структура и основные элементы договора перевозки, Практическое занятие №7 Тема_ Внедрение JavaScript-кода в HTML-с, ЛР- 5. Теортитческие сведения и Протокол.pdf, 3 Основные теоретические положения и пример решения задания 3.do, 5 кл темати.docx
Основы программирования на С++
🅂
Основы программирования на С++.
●
Тема 1. Основные сведения о языке С++
●
Тема 2. Одномерные массивы
●
Тема 3. Двумерные массивы
●
Тема 4. Функции
●
Тема 5. Файлы
════════════════════
… – это массив, элементами которого служат массивы
Тип ответа: Текcтовый ответ
1
… есть процесс записи значений переменных на каждом шаге работы
программы
Тип ответа: Текcтовый ответ
2
… массив – это одномерный массив, каждым элементом которого является свой
одномерный массив, или, иначе говоря, это такой тип данных, элементы
которого однотипны и каждый из них характеризуется уникальной парой чисел:
индексом строки и индексом столбца
Тип ответа: Текcтовый ответ
3
… параметры – это локальные переменные, необходимые для описания
алгоритма функции, они описываются в ее заголовке и используются в ее
определении
Тип ответа: Одиночный выбор
● формальные
● входные
● фактические
● выходные
3
Двумерный
2
Трассировка
1
Матрица
Основы программирования на С++
В С++ все файлы … последовательность байтов
Тип ответа: Одиночный выбор
● могут рассматриваться или как структурированная, или как неструктурированная
● рассматриваются как структурированная
● рассматриваются как неструктурированная
В С++ класс памяти определяет … переменной
Тип ответа: Одиночный выбор
● только время жизни
● только область видимости
● время жизни и область видимости
В С++ компилятор может работать с переменными разных типов, т.е. если
присвоить целочисленной переменной значение вещественной переменной, то
будет присвоена только целая часть и …
Тип ответа: Одиночный выбор
● произойдет неявное преобразование типов данных
● произойдет явное преобразование типов данных
● произойдет явное или неявное преобразование типов данных
● преобразования типов данных не произойдет
В С++ тип данных категории void …
Тип ответа: Одиночный выбор
● служит для обработки целых чисел
● служит для описания пустого набора значений
● позволяет задавать значения, которые могут иметь дробные части
В С++ циклическая алгоритмическая управляющая структура с параметром
записывается как …
Тип ответа: Одиночный выбор
● while
● for
● do while
Основы программирования на С++
В С++ циклическая алгоритмическая управляющая структура с постусловием
записывается как …
Тип ответа: Одиночный выбор
● while
● for
● do
В языке С++ …
Тип ответа: Одиночный выбор
● счет индексам всегда начинается с 0
● счет индексам всегда начинается с 1
● счет может начинаться с любого числа после 1
● можно задавать диапазон изменения индексов в любых границах (даже отрицательных)
● счет может начинаться как с 0, так и с 1
В языке С++ блок комментариев (условный вид блоков программ) выделяется
сочетанием символов …
Тип ответа: Одиночный выбор
●
«/*» – начало комментария и «*/» – конец комментария
●
«*/»– начало комментария и «/*» – конец комментария
●
«//»– начало комментария и «//» – конец комментария
●
«#»– начало комментария и «/*» – конец комментария
В языке С++ рекомендуется первоначально использовать при написании
программ …
Тип ответа: Одиночный выбор
● только строчные буквы
● только прописные буквы
● строчные и прописные буквы
● цифры и буквы (строчные и прописные)
Основы программирования на С++
В C++ циклическая алгоритмическая управляющая структура с предусловием
записывается как …
Тип ответа: Одиночный выбор
● while
● for
● do
Выходные параметры – это …
Тип ответа: Одиночный выбор
● текущие данные для функции
● результат работы функции
● исходные данные для функции
● набор данных, в обработке которых и заключается предназначение алгоритма
● параметры, переданные по ссылке без права их изменения
Говоря о порядке обращения к элементам двумерного массива, можно
утверждать, что …
Тип ответа: Одиночный выбор
● двумерный массив всегда подвергается изменению сразу весь, целиком
● массив можно подвергать изменению целиком, в зависимости от условия задачи
● нельзя подвергать изменению целиком весь массив сразу
Говоря об одномерных массивах, можно утверждать, что …
Тип ответа: Множественный выбор
массив – переменная сложной структуры и потому не может быть подвергнута обработке целиком массив может быть подвергнут обработке целиком все действия с массивами следует проводить поэлементно, т.е. обращаясь непосредственно к каждой его ячейке
Основы программирования на С++
Диапазон типа данных float ̶ …
Тип ответа: Одиночный выбор
●
1 байт
●
2 байта
●
4 байта
●
8 батов
Для доступа к компонентам файла …
Тип ответа: Одиночный выбор
● используется индекс
● используется указатель
● можно использовать как индекс, так и указатель
Для использования способа передачи входных данных, являющихся сложными
структурированными переменными, в списке формальных параметров перед
параметром-константой ставится префикс …
Тип ответа: Одиночный выбор
●
//
●
#
● const
●
&
Для использования способа передачи выходных значений функций, в списке
формальных параметров перед параметром-переменной ставится префикс …
Тип ответа: Одиночный выбор
●
//
●
#
● const
●
&
Основы программирования на С++
Для обработки элементов двумерного массива, на строки которого
накладываются некоторые условия, требуется при просмотре этого массива
внутрь циклов ставить условие на …
Тип ответа: Одиночный выбор
● элемент
● элемент либо индекс строки (в зависимости от условия задачи)
● индекс строки или столбца (в зависимости от условия задачи)
Для создания переменных, которые доступны во всех файлах программы,
используется класс памяти …
Тип ответа: Одиночный выбор
● auto
● extern
● static
● register
Если возникает потребность в обращении к переменной при коллизии имен, то
следует вначале указать название модуля (модуль основной программы), а
далее через … – имя переменной (или иной идентификатор, к которому нужно
обратиться)
Тип ответа: Одиночный выбор
● двойное двоеточие
● двоеточие
● запятую
● двойной слеш
Если нужно скопировать элементы массива B в массив A, …
Тип ответа: Одиночный выбор
● предпочтительней всего просто присвоить один массив другому, т.е. A = B
● предпочтительней применить поэлементное копирование, т.к. в случае побитного копирования одного объекта в другой у двух массивов могут не совпадать размеры
● одинаково эффективно или присвоить один массив другому, или использовать поэлементное копирование
Основы программирования на С++
Если объявление глобальных переменных происходит в основной программе, то
во время ее работы значения глобальных переменных записываются в область
памяти, называемую …
Тип ответа: Одиночный выбор
● сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы
● стеком и доступны только во время работы функции, в которой они описаны
● сегментом данных (статический сегмент) и доступны только во время работы функции, в которой они описаны
● стеком и доступны постоянно на протяжении всей работы программы
Если при открытии потока возникла ошибка – диск заполнен (при записи), то
указатель на поток приобретет …
Тип ответа: Одиночный выбор
● любое значение ниже 0
● значение NULL (0)
● любое значение выше 0
Если произвести единичный циклический сдвиг элементов массива вправо, то …
Тип ответа: Одиночный выбор
● будет происходить перемещение содержимого последней ячейки в первую
● будет происходить перемещение содержимого первой ячейки в последнюю
● будет создана дополнительная ячейка
Если связанный с потоком файл, который открывается в режиме открытия w+,
уже существует, то …
Тип ответа: Одиночный выбор
● вся информация из него стирается
● выдается ошибка при исполнении программы
● информация из него не стирается, можно выполнять запись в конец файла
Основы программирования на С++
Если элементами одномерного массива является простой числовой тип данных,
то такие массивы называют …
Тип ответа: Текcтовый ответ
4
Идентификаторы – это …
Тип ответа: Одиночный выбор
● высказывания, относительно которых можно сказать истинно оно или ложно
● имена переменной константы, процедур, функций и т. д.
● атомарная часть С++ программы, которой можно поставить в соответствие предложение естественного языка
Изменить режим работы с файлом …
Тип ответа: Одиночный выбор
● можно только после закрытия файла
● невозможно
● можно только во время работы с файлом
Имена переменных констант, процедур, функций и т. д. называются …
Тип ответа: Одиночный выбор
● идентификаторами
● компиляторами
● операторами
● типами данных
Имена формальных и фактических параметров …
Тип ответа: Одиночный выбор
● не могут совпадать
● могут совпадать, но это отразится на выполнении программы
● могут совпадать и это не отразится на выполнении программы, но может привести к проблемам при понимании алгоритма работы
4
векторами
Основы программирования на С++
К основным типам данных языка в С++ относится … – тип с плавающей запятой
наименьшего размера
Тип ответа: Одиночный выбор
● char
● bool
● double
●
__wchar_t
●
float
● int
К основным типам языка в С++ относится … – тип с плавающей запятой,
повышенной точности
Тип ответа: Одиночный выбор
● char
● bool
● double
●
__wchar_t
●
float
● int
К унарным операциям относят …
Тип ответа: Множественный выбор
деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление) умножение операндов получение остатка от деления целочисленных операндов получение адреса операнда обращение по адресу (разыменование) логическое отрицание (НЕ)
Основы программирования на С++
Локальные данные записываются в область памяти, называемую …
Тип ответа: Одиночный выбор
● сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы
● стеком и доступны только во время работы функции, в которой они описаны
● сегментом данных (статический сегмент) и доступны только во время работы функции, в которой они описаны
● стеком и доступны постоянно на протяжении всей работы программы
Наиболее естественными объектами, которые принято хранить в двумерных
массивах, являются …
Тип ответа: Одиночный выбор
● числа
● латинские буквы
● символы
Начало однострочного комментария в С++ обозначается комбинацией …
Тип ответа: Одиночный выбор
●
«//»
●
«#»
●
«*/»
●
«?»
●
«&»
Операции new и delete …, так как выделяемая память после ее использования
должна высвобождаться
Тип ответа: Одиночный выбор
● используются парами
● используются только по отдельности
● могут использоваться парами, но чаще всего используются по отдельности
Основы программирования на С++
Описание переменной может быть выполнено …
Тип ответа: Одиночный выбор
● только как объявление, содержащее информацию о классе памяти и типе переменной
● только как определение, вместе с информацией о классе памяти и типе переменной дающее указание выделить память
● или как объявление, или как определение
Параметры-константы – это параметры, …
Тип ответа: Множественный выбор
переданные по ссылке без права их изменения переданные по ссылке с правом их изменения которые используются, когда передаются входные данные, являющиеся сложными структурированными переменными (например, массивы)
Параметры-переменные используются для передачи … значений функций
Тип ответа: Одиночный выбор
● выходных
● входных
● входных и выходных
Переменные класса памяти register аналогичны …, но память под них
выделяется в регистрах процессора
Тип ответа: Одиночный выбор
● auto
● static
● extern
Перемещение указателя на произвольную файловую позицию происходит с
помощью функции fseek, которая записывается как int fseek(FILE *f, long off, int
org); где FILE *f – это …
Тип ответа: Одиночный выбор
● позиция смещения
● указатель на файл
● начало отсчета
Основы программирования на С++
Под произвольным доступом к компонентам файла понимается работа с файлом
с возможностью произвольного перемещения …
Тип ответа: Текcтовый ответ
5
Разреженные матрицы – это такие матрицы, у которых …
Тип ответа: Одиночный выбор
● все элементы матрицы равны нулю
● число элементов в строке равно числу элементов в столбце, т. е. M = N
● число элементов в строке/столбце зависит от того, в каком столбце/строке оно содержится
● не все ячейки заполнены элементами
Согласно правилам описания перегруженных функций, …
Тип ответа: Множественный выбор
в разных вариантах перегруженных функций может быть разное количество умалчиваемых параметров перегруженные функции должны находиться в одной области видимости перегруженные функции могут иметь параметры по умолчанию, при этом значения одного и того же параметра в разных функциях должны совпадать перегруженные функции должны находиться в разных областях видимости в разных вариантах перегруженных функций может быть только одинаковое количество умалчиваемых параметров перегруженные функции могут иметь параметры по умолчанию, при этом значения одного и того же параметра в разных функциях не должны совпадать
Сопоставьте знаки унарных операций в С++ и описания операций:
Тип ответа: Сопоставление
🅰 A. !
🅱 B. &
🅲 C. *
🄰 D. логическое отрицание (НЕ)
🄱 E. получение адреса операнда
🄲 F. обращение по адресу (разыменование)
5
указателя
Основы программирования на С++
Строковые данные можно складывать друг с другом (например, при сложении
строк «Hello», и «world!» получится строка «Hello, world!»), и такая операция над
строками будет называться …
Тип ответа: Одиночный выбор
● инкрементацией
● конкатенацией
● инициализацией
● итерацией
Файл – это …
Тип ответа: Одиночный выбор
● именованная область на внешнем информационном носителе (диске), содержащая данные
● перенос данных
● специальное место на компьютерном носителе информации
Функция обработки строковых данных strcat (s1, s2) …
Тип ответа: Одиночный выбор
● выполняет побайтное копирование n символов из строки s2 в строку s1. возвращает значения s1
● сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 – если строки эквивалентны, >0 – если s1 < s2, <0 – если s1 > s2
● определяет длину указанной строки, без учета нуль-символа
● объединяет строку s2 со строкой s1, результат сохраняется в s1
Чтобы текст программы в С++ был более понятным, рекомендуется
придерживаться общепринятых соглашений об именах объектов, в частности,
если имя состоит из нескольких слов (например, first index), принято …
Тип ответа: Множественный выбор
разделять слова символом подчеркивания (first_index) писать каждое следующее слово с большой буквы (FirstIndex) писать через пробел (first index) писать слитно строчными буквами (first index)
СИНЕРГИЯ Ответы Основы программирования на С++ Тест 2021г. Сдан на 97-100 баллов. Все ответы выделены в файле.
1.Для того чтобы в программе описать переменную типа одномерный массив, нужно записать:…
2.Директивы препроцессора начинаются со знака который должен быть самым первым символом строки
3.Функция обработки строковых данных islower(c) возвращает значение true, если с является и false в других случаях
4.В C++ имя функции, возвращающей не-void,… от операции присваивания
5.Если при открытии потока возникла ошибка — диск заполнен (при записи), то указатель на поток приобретет …
6…. есть процесс записи значений переменных на каждом шаге работы программы
7.В C+ + оператор … выделяет память из области свободной памяти
8.Процесс задания некоторой переменной первичного значения называется …
9.Для использования способа передачи выходных значений функций, в списке формальных параметров перед параметром-переменной ставится префикс …
10.В языке C++ …
11.Для обработки элементов двумерного массива, на строки которого накладываются некоторые условия, требуется при просмотре этого массива внутрь циклов ставить условие на …
12.Если нужно скопировать элементы массива В в массив А,…
13…. массив — это одномерный массив, каждым элементом которого является свои одномерный массив, или, иначе говоря, это такой тип данных, элементы которого однотипны и каждый из них характеризуется уникальной парой чисел: индексом строки и индексом столбца
14.Под произвольным доступом к компонентам файла понимается работа с файлом с возможностью произвольного перемещения …
15.К основным типам данных языка в C++ относится … — тип с плавающей запятой наименьшего размера
16.Если связанный с потоком файл, который открывается в режиме открытия w+, уже существует, то …
17….-это процесс уменьшения значения переменной
18.В языке C++ рекомендуется первоначально использовать при написании программ
19.Перемещение указателя на произвольную файловую позицию происходит с помощью функции fseek, которая записывается как int fseek(FILE *f, long off, int org); где FILE *f- это …
20.Если объявление глобальных переменных происходит в основной программе, то во время ее работы значения глобальных переменных записываются в область памяти, называемую …
21.Идентификаторы — это …
22.B C++ тип данных bool — это …
23.B C++ циклическая алгоритмическая управляющая структура с параметром записывается как …
24.Говоря о порядке обращения к элементам двумерного массива, можно утверждать, что …
25.Директива #include включает в программу содержимое указанного файла, имя которого может быть указано двумя способами, в частности:…
26.Описание формальных параметров алгоритма функции происходит …
27.Квадратные матрицы — это такие матрицы, у которых …
28.Чтобы текст программы в C++ был более понятным, рекомендуется придерживаться общепринятых соглашений об именах объектов, в частности, если имя состоит из нескольких слов (например, first index), принято …
29.Имена формальных и фактических параметров …
30.В C++ оператор … высвобождает выделенную память
31.К основным типам языка в C++ относится … — тип с плавающей запятой, повышенной точности
32.Если произвести единичный циклический сдвиг элементов массива вправо, то …
33.Файл — это …
34.Идентификаторы, описанные в функции, являются локальными для нее, если …
35.Файл, связанный с потоком, в режиме открытия а открывается для …
36.Параметры-переменные используются для передачи … значений функций
37.Строковые данные можно складывать друг с другом (например, при сложении строк «Hello», и «world!» получится строка «Hello, world!»), и такая операция над строками будет называться …
38.В C++ компилятор может работать с переменными разных типов, т.е. если присвоить целочисленной переменной значение вещественной переменной, то будет присвоена только целая часть и …
39.Согласно правилам описания перегруженных функций,…
40.Начало однострочного комментария в C++ обозначается комбинацией …
41.Функция обработки строковых данных strcat (s1, s2)…
42.Наиболее естественными объектами, которые принято хранить в двумерных массивах, являются …
43.Идентификаторы могут состоять …
44.B C++ все файлы … последовательность байтов
45.Диапазон типа данных float-…
46.B C++ циклическая алгоритмическая управляющая структура с постусловием записывается как …
47.Говоря об одномерных массивах, можно утверждать, что …
48.Прямым проходом следует пользоваться при реализации …
49.Говоря об алгоритмах подсчета суммы и произведения элементов массива, можно утверждать, что накопление суммы начинают с…
50.В языке C++ блок комментариев (условный вид блоков программ) выделяется сочетанием символов …
51.Если доступ к элементам многомерных массивов осуществляется с помощью индексированных переменных а[1] [1], то доступ к этому же элементу с помощью указателей будет …
52.Для создания переменных, которые доступны во всех файлах программы, используется класс памяти …
53.Локальные данные записываются в область памяти, называемую …
54.Выходные параметры — это …
55.Изменить режим работы с файлом …
56.Разреженные матрицы — это такие матрицы, у которых …
Добавлено 11 мая 2021 в 11:57
В уроке «6.3 – Локальные переменные» мы рассмотрели, что локальные переменные – это переменные, определенные внутри функции (или параметры функции). Локальные переменные имеют область видимости блока (видны только внутри блока, в котором они объявлены) и имеют автоматическую продолжительность (они создаются в точке определения и уничтожаются при выходе из блока).
В C++ переменные также могут быть объявлены вне функции. Такие переменные называются глобальными переменными.
Объявление и именование глобальных переменных
По соглашению глобальные переменные объявляются в верхней части файла, ниже включений заголовочных файлов, но выше любого кода. Ниже показан пример определения глобальной переменной:
#include <iostream>
// Переменные, объявленные вне функций, являются глобальными переменными
int g_x {}; // global variable g_x
void doSomething()
{
// глобальные переменные можно видеть и использовать везде в файле
g_x = 3;
std::cout << g_x << 'n';
}
int main()
{
doSomething();
std::cout << g_x << 'n';
// глобальные переменные можно видеть и использовать везде в файле
g_x = 5;
std::cout << g_x << 'n';
return 0;
}
// g_x выходит из области видимости здесь
Приведенный выше пример напечатает:
3
3
5
По соглашению многие разработчики добавляют к идентификаторам глобальных переменных префикс «g» или «g_«, чтобы указать, что они глобальные.
Лучшая практика
Рассмотрите возможность использования префикса «g» или «g_» для глобальных переменных, чтобы помочь отличить их от локальных переменных.
Глобальные переменные имеют область видимости файла и статическую продолжительность
Глобальные переменные имеют область видимости файла (также неофициально называемую глобальной областью видимости или областью видимости глобального пространства имен), что означает, что они видны с момента объявления до конца файла, в котором они объявлены. С момента объявления глобальную переменную можно использовать в любом месте файла! В приведенном выше примере глобальная переменная g_x
используется в обеих функциях doSomething()
и main()
.
Поскольку они определяются вне функции, глобальные переменные считаются частью глобального пространства имен (отсюда и термин «область видимости глобального пространства имен»).
Глобальные переменные создаются при запуске программы и уничтожаются при ее завершении. Это называется статической продолжительностью. Переменные со статической продолжительностью иногда называют статическими переменными.
В отличие от локальных переменных, которые по умолчанию не инициализируются, статические переменные по умолчанию инициализируются нулем.
Инициализация глобальной переменной
При желании неконстантные глобальные переменные можно инициализировать:
int g_x; // без явного инициализатора (по умолчанию инициализируется нулем)
int g_y {}; // инициализируется нулем
int g_z { 1 }; // инициализируется значением
Константные глобальные переменные
Как и локальные переменные, глобальные переменные могут быть константными. Как и все константы, константные глобальные переменные должны быть инициализированы.
#include <iostream>
const int g_x; // ошибка: константные переменные необходимо инициализировать
constexpr int g_w; // ошибка: переменные constexpr должны быть инициализированы
const int g_y { 1 }; // глобальная константная переменная g_y, инициализированная значением
constexpr int g_z { 2 }; // глобальная переменная constexpr g_z, инициализированная значением
void doSomething()
{
// глобальные переменные можно видеть и использовать везде в файле
std::cout << g_y << 'n';
std::cout << g_z << 'n';
}
int main()
{
doSomething();
// глобальные переменные можно видеть и использовать везде в файле
std::cout << g_y << 'n';
std::cout << g_z << 'n';
return 0;
}
// g_y и g_z выходят из области видимости здесь
Предупреждение о (неконстантных) глобальных переменных
У начинающих программистов часто возникает соблазн использовать множество глобальных переменных, потому что их можно использовать без явной передачи их каждой функции, которая в них нуждается. Однако следует вообще избегать использования неконстантных глобальных переменных! А почему, мы обсудим в следующем уроке «6.9 – Почему глобальные переменные – это зло».
Краткое резюме
// Неконстантные глобальные переменные
int g_x; // Определяет неинициализированную глобальную переменную
// (по умолчанию инициализируется нулем)
int g_x {}; // Определяет глобальную переменную, явно инициализированную нулем
int g_x { 1 }; // Определяет явно инициализированную глобальную переменную
// Константные глобальные переменные
const int g_y; // ошибка: константные переменные необходимо инициализировать
const int g_y { 2 }; // определяет инициализированную глобальную константу
// Constexpr global variables
constexpr int g_y; // ошибка: переменные constexpr должны быть инициализированы
constexpr int g_y { 3 }; // определяет инициализированную глобальную константу
Теги
C++ / CppLearnCppГлобальная переменнаяДля начинающихОбласть видимостиОбучениеПрограммирование
Синергия Основы программирования на С++ (тест с ответами на 81 вопрос) 2021-2022 года. (97 из 100 баллов)
B C++ тип данных bool — это …
тип с плавающей запятой, повышенной точности
целочисленный тип, обычно содержащий члены кодировки ASCII
целочисленный тип, который может иметь одно из двух значений: true или false
тип с плавающей запятой наименьшего размера
Директива #include включает в программу содержимое указанного файла, имя которого может быть указано двумя способами, в частности: …
#include //my_file.h»//
#include#my_file.h
#include
#include «my_file.h»
Для использования способа передачи входных данных, являющихся сложными структурированными переменными, в списке формальных параметров перед параметром-константой ставится префикс …
//
#
const
&
В С++ компилятор может работать с переменными разных типов, т.е. если присвоить целочисленной переменной значение вещественной переменной, то будет присвоена только целая часть и …
произойдет неявное преобразование типов данных
произойдет явное преобразование типов данных
произойдет явное или неявное преобразование типов данных
преобразования типов данных не произойдет
В языке С++ …
счет индексам всегда начинается с 0
счет индексам всегда начинается с 1
счет может начинаться с любого числа после 1
можно задавать диапазон изменения индексов в любых границах (даже отрицательных)
счет может начинаться как с 0, так и с 1
В языке С++ рекомендуется первоначально использовать при написании программ
только строчные буквы
только прописные буквы
строчные и прописные буквы
цифры и буквы (строчные и прописные)
Выходные параметры – это …
текущие данные для функции
результат работы функции
исходные данные для функции
набор данных, в обработке которых и заключается предназначение алгоритма
параметры, переданные по ссылке без права их изменения
Диапазон типа данных float ̶ …
1 байт
2 байта
4 байта
8 батов
В С++ каждый индекс пишется в …
собственных квадратных скобках […]
собственных круглых скобках (…)
общих фигурных скобках {…}
собственных прямых скобках |…|
Директивы препроцессора начинаются со знака …, который должен быть самым первым символом строки
«амперсанд» (&)
«правый слеш» («/»)
«диез» (#)
«плюс» (+)
Для доступа к компонентам файла …
используется индекс
используется указатель
можно использовать как индекс, так и указатель
Для обработки элементов двумерного массива, на строки которого накладываются некоторые условия, требуется при просмотре этого массива внутрь циклов ставить условие на …
элемент
элемент либо индекс строки (в зависимости от условия задачи)
индекс строки или столбца (в зависимости от условия задачи)
Если доступ к элементам многомерных массивов осуществляется с помощью индексированных переменных a[1] [1], то доступ к этому же элементу с помощью указателей будет …
*(*(a+1)+1)
a[1,1]
а|1||1|
*(a+1)+1
a[1::1]
Говоря об одномерных массивах, можно утверждать, что …
массив – переменная сложной структуры и потому не может быть подвергнута обработке целиком
массив может быть подвергнут обработке целиком
все действия с массивами следует проводить поэлементно, т.е. обращаясь непосредственно к каждой его ячейке
Если произвести единичный циклический сдвиг элементов массива вправо, то …
будет происходить перемещение содержимого последней ячейки в первую
будет происходить перемещение содержимого первой ячейки в последнюю
будет создана дополнительная ячейка
Если связанный с потоком файл, который открывается в режиме открытия w+, уже существует, то …
вся информация из него стирается
выдается ошибка при исполнении программы
информация из него не стирается, можно выполнять запись в конец файла
Если элементами одномерного массива является простой числовой тип данных, то такие массивы называют …
… есть процесс записи значений переменных на каждом шаге работы программы
Идентификаторы, описанные в функции, являются локальными для нее, если …
работа с ними возможна только внутри этой функции и внутри вложенных в нее блоков
они могут быть использованы в любом модуле, стоящем ниже на иерархической
лестнице они могут быть использованы в исполнительной части самого модуля
Идентификаторы могут состоять …
только из арифметических знаков +, –, *, /
как из цифр, так и из специальных символов @, #, $, ^, &
только из букв латиницы, цифр и символа «_»
Идентификаторы – это …
высказывания, относительно которых можно сказать истинно оно или ложно
имена переменной константы, процедур, функций и т. д.
атомарная часть С++ программы, которой можно поставить в соответствие предложение естественного языка
Изменить режим работы с файлом …
можно только после закрытия файла
невозможно
можно только во время работы с файлом
Имена переменных констант, процедур, функций и т. д. называются …
идентификаторами
компиляторами
операторами
типами данных
Имена формальных и фактических параметров …
не могут совпадать
могут совпадать, но это отразится на выполнении программы
могут совпадать и это не отразится на выполнении программы, но может привести к проблемам при понимании алгоритма работы
К основным типам языка в С++ относится … – тип с плавающей запятой, повышенной точности
char
bool
double
__wchar_t
float
int
К унарным операциям относят …
деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление)
умножение операндов
получение остатка от деления целочисленных операндов
получение адреса операнда
обращение по адресу (разыменование)
логическое отрицание (НЕ)
Квадратные матрицы – это такие матрицы, у которых …
все элементы матрицы равны нулю
число элементов в строке равно числу элементов в столбце, т. е. M = N
число элементов в строке/столбце зависит от того, в каком столбце/строке оно содержится
не все ячейки заполнены элементами
Локальные данные записываются в область памяти, называемую …
сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы
стеком и доступны только во время работы функции, в которой они описаны
сегментом данных (статический сегмент) и доступны только во время работы функции, в которой они описаны
стеком и доступны постоянно на протяжении всей работы программы
… массив – это одномерный массив, каждым элементом которого является свой одномерный массив, или, иначе говоря, это такой тип данных, элементы которого однотипны и каждый из них характеризуется уникальной парой чисел: индексом строки и индексом столбца
Наиболее естественными объектами, которые принято хранить в двумерных массивах, являются …
числа
латинские буквы
символы
Начало однострочного комментария в С++ обозначается комбинацией …
«//»
«#»
«*/»
«?»
«&»
Операции new и delete …, так как выделяемая память после ее использования должна высвобождаться
используются парами
используются только по отдельности
могут использоваться парами, но чаще всего используются по отдельности
Описание переменной может быть выполнено …
только как объявление, содержащее информацию о классе памяти и типе переменной
или как объявление, или как определение
только как определение, вместе с информацией о классе памяти и типе переменной
дающее указание выделить память
Описание формальных параметров алгоритма функции происходит …
только два раза
неограниченное количество раз
только один раз
… память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм, и собственно тела программы
… параметры – это локальные переменные, необходимые для описания алгоритма функции, они описываются в ее заголовке и используются в ее определении
формальные
входные
фактические
выходные
Если объявление глобальных переменных происходит в основной программе, то во время ее работы значения глобальных переменных записываются в область памяти, называемую …
сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы
стеком и доступны только во время работы функции, в которой они описаны
сегментом данных (статический сегмент) и доступны только во время работы функции, в которой они описаны
стеком и доступны постоянно на протяжении всей работы программы
Параметры-константы – это параметры, …
переданные по ссылке без права их изменения
переданные по ссылке с правом их изменения
которые используются, когда передаются входные данные, являющиеся сложными структурированными переменными (например, массивы)
Параметры-переменные используются для передачи … значений функций
выходных
входных
входных и выходных
Говоря об алгоритмах подсчета суммы и произведения элементов массива, можно утверждать, что накопление суммы начинают с …
нуля, а произведения – с единицы
единицы, а произведения – с нуля
нуля, как и произведения
единицы, как и произведения
Переменные класса памяти register аналогичны …, но память под них выделяется в регистрах процессора
auto
static
extern
В C++ циклическая алгоритмическая управляющая структура с предусловием записывается как …
while
for
do
Перемещение указателя на произвольную файловую позицию происходит с помощью функции fseek, которая записывается как int fseek(FILE *f, long off, int org); где FILE *f – это …
Процесс задания некоторой переменной первичного значения называется …
Прямым проходом следует пользоваться при реализации …
циклического сдвига вправо
циклического сдвига влево
как циклического сдвига вправо, так и циклического сдвига влево
Если при открытии потока возникла ошибка – диск заполнен (при записи), то указатель на поток приобретет …
любое значение ниже 0
значение NULL (0)
любое значение выше 0
Разреженные матрицы – это такие матрицы, у которых …
все элементы матрицы равны нулю
число элементов в строке равно числу элементов в столбце, т. е. M = N
число элементов в строке/столбце зависит от того, в каком столбце/строке оно содержится
не все ячейки заполнены элементами
Согласно правилам описания перегруженных функций, …
в разных вариантах перегруженных функций может быть разное количество умалчиваемых параметров
перегруженные функции должны находиться в одной области видимости
перегруженные функции могут иметь параметры по умолчанию, при этом значения одного и того же параметра в разных функциях должны совпадать
Если нужно скопировать элементы массива B в массив A, …
предпочтительней всего просто присвоить один массив другому, т.е. A = B
предпочтительней применить поэлементное копирование, т.к. в случае побитного копирования одного объекта в другой у двух массивов могут не совпадать размеры
одинаково эффективно или присвоить один массив другому, или использовать поэлементное копирование
Сопоставьте знаки унарных операций в С++ и описания операций:
Строковые данные можно складывать друг с другом (например, при сложении строк «Hello», и «world!» получится строка «Hello, world!»), и такая операция над строками будет называться …
инкрементацией
конкатенацией
инициализацией
итерацией
Укажите правильное определение массива: …
Укажите пример объявления указателя:
char *ch ;
char c&h ;
char _ch ;
char #ch ;
Укажите пример правильного написания прототипа функции FUNC, имеющей два параметра и возвращающей вещественное значение:
float FUNC ( float a ) ;
int FUNC ( int x, INT Y ) ;
float FUNC ( float a , float z ) ;
float Func ( float a , float z ) ;
Укажите пример правильного синтаксиса цикла for :
for ( инициализация ; условие ; итератор) { оператор(ы) ; }
for (итератор; условие ; инициализация) { оператор(ы) ; }
for ( инициализация , условие , итератор) { оператор(ы) ; }
В С++ оператор … высвобождает выделенную память
delete
&
new
Укажите пример правильной инициализации переменной: …
Файл – это …
именованная область на внешнем информационном носителе (диске), содержащая данные
перенос данных
специальное место на компьютерном носителе информации
В С++ циклическая алгоритмическая управляющая структура с постусловием записывается как …
while
for
do
Функция обработки строковых данных islower(c) возвращает значение true, если с является …, и false в других случаях
буквой нижнего регистра
буквой верхнего регистра
буквой или цифрой
цифрой
пробелом
Функция обработки строковых данных strcat (s1, s2) …
выполняет побайтное копирование n символов из строки s2 в строку s1. возвращает значения s1
сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 – если строки эквивалентны, >0 – если s1 < s2, <0 – если s1 > s2
определяет длину указанной строки, без учета нуль-символа
объединяет строку s2 со строкой s1, результат сохраняется в s1
Чтобы текст программы в С++ был более понятным, рекомендуется придерживаться общепринятых соглашений об именах объектов, в частности, если имя состоит из нескольких слов (например, first index), принято …
разделять слова символом подчеркивания (first index)
писать каждое следующее слово с большой буквы (FirstIndex)
писать через пробел (first index)
писать слитно строчными буквами (first index)
… – это массив, элементами которого служат массивы
… ̶ это процесс уменьшения значения переменной
итерация
декрементация
инкрементация
Файл, связанный с потоком, в режиме открытия а+ открывается для …
чтения
записи
добавления
чтения и записи
В С++ все файлы … последовательность байтов
могут рассматриваться или как структурированная, или как неструктурированная рассматриваются как структурированная
рассматриваются как неструктурированная
Перемещение указателя на произвольную файловую позицию происходит с помощью функции fseek, которая записывается как int fseek(FILE *f, long off, int org); где FILE *f- это …
позиция смещения
указатель на файл
начало отсчета
В С++ имя функции, возвращающей не-void, … от операции присваивания
В С++ класс памяти определяет … переменной
только время жизни
время жизни и область видимости
только область видимости
В С++ оператор … выделяет память из области свободной памяти
delete
&
new
В С++ циклическая алгоритмическая управляющая структура с параметром записывается как …
while
for
do
К основным типам данных языка в С++ относится … – тип с плавающей запятой наименьшего размера
char
bool
double
__wchar_t
float
int
В С++ тип данных категории void …
служит для обработки целых чисел
служит для описания пустого набора значений
позволяет задавать значения, которые могут иметь дробные части
В языке С++ блок комментариев (условный вид блоков программ) выделяется сочетанием символов
Дано: int a[5]; .Что означает следующая запись a[1]; :
Для использования способа передачи выходных значений функций, в списке формальных параметров перед параметром-переменной ставится префикс …
//
#
const
&
Для создания переменных, которые доступны во всех файлах программы, используется класс памяти
Для того чтобы в программе описать переменную типа одномерный массив, нужно записать:
Говоря о порядке обращения к элементам двумерного массива, можно утверждать, что …
двумерный массив всегда подвергается изменению сразу весь, целиком
массив можно подвергать изменению целиком, в зависимости от условия задачи
нельзя подвергать изменению целиком весь массив сразу
Если возникает потребность в обращении к переменной при коллизии имен, то следует вначале указать название модуля (модуль основной программы), а далее через … – имя переменной (или иной идентификатор, к которому нужно обратиться)
двойное двоеточие
двоеточие
запятую
двойной слеш
Под произвольным доступом к компонентам файла понимается работа с файлом с возможностью произвольного перемещения …
Синергия Основы программирования на С++ (тест с ответами на 81 вопрос) 2021-2022 года. (97 из 100 баллов)
B C++ тип данных bool — это …
тип с плавающей запятой, повышенной точности
целочисленный тип, обычно содержащий члены кодировки ASCII
целочисленный тип, который может иметь одно из двух значений: true или false
тип с плавающей запятой наименьшего размера
Директива #include включает в программу содержимое указанного файла, имя которого может быть указано двумя способами, в частности: …
#include //my_file.h»//
#include#my_file.h
#include
#include «my_file.h»
Для использования способа передачи входных данных, являющихся сложными структурированными переменными, в списке формальных параметров перед параметром-константой ставится префикс …
//
#
const
&
В С++ компилятор может работать с переменными разных типов, т.е. если присвоить целочисленной переменной значение вещественной переменной, то будет присвоена только целая часть и …
произойдет неявное преобразование типов данных
произойдет явное преобразование типов данных
произойдет явное или неявное преобразование типов данных
преобразования типов данных не произойдет
В языке С++ …
счет индексам всегда начинается с 0
счет индексам всегда начинается с 1
счет может начинаться с любого числа после 1
можно задавать диапазон изменения индексов в любых границах (даже отрицательных)
счет может начинаться как с 0, так и с 1
В языке С++ рекомендуется первоначально использовать при написании программ
…
только строчные буквы
только прописные буквы
строчные и прописные буквы
цифры и буквы (строчные и прописные)
Выходные параметры – это …
текущие данные для функции
результат работы функции
исходные данные для функции
набор данных, в обработке которых и заключается предназначение алгоритма
параметры, переданные по ссылке без права их изменения
Диапазон типа данных float ̶ …
1 байт
2 байта
4 байта
8 батов
В С++ каждый индекс пишется в …
собственных квадратных скобках […]
собственных круглых скобках (…)
общих фигурных скобках {…}
собственных прямых скобках |…|
Директивы препроцессора начинаются со знака …, который должен быть самым первым символом строки
«амперсанд» (&)
«правый слеш» («/»)
«диез» (#)
«плюс» (+)
Для доступа к компонентам файла …
используется индекс
используется указатель
можно использовать как индекс, так и указатель
Для обработки элементов двумерного массива, на строки которого накладываются некоторые условия, требуется при просмотре этого массива внутрь циклов ставить условие на …
элемент
элемент либо индекс строки (в зависимости от условия задачи)
индекс строки или столбца (в зависимости от условия задачи)
Если доступ к элементам многомерных массивов осуществляется с помощью индексированных переменных a[1] [1], то доступ к этому же элементу с помощью указателей будет …
*(*(a+1)+1)
a[1,1]
а|1||1|
*(a+1)+1
a[1::1]
Говоря об одномерных массивах, можно утверждать, что …
массив – переменная сложной структуры и потому не может быть подвергнута обработке целиком
массив может быть подвергнут обработке целиком
все действия с массивами следует проводить поэлементно, т.е. обращаясь непосредственно к каждой его ячейке
Если произвести единичный циклический сдвиг элементов массива вправо, то …
будет происходить перемещение содержимого последней ячейки в первую
будет происходить перемещение содержимого первой ячейки в последнюю
будет создана дополнительная ячейка
Если связанный с потоком файл, который открывается в режиме открытия w+, уже существует, то …
вся информация из него стирается
выдается ошибка при исполнении программы
информация из него не стирается, можно выполнять запись в конец файла
Если элементами одномерного массива является простой числовой тип данных, то такие массивы называют …
… есть процесс записи значений переменных на каждом шаге работы программы
Идентификаторы, описанные в функции, являются локальными для нее, если …
работа с ними возможна только внутри этой функции и внутри вложенных в нее блоков
они могут быть использованы в любом модуле, стоящем ниже на иерархической
лестнице они могут быть использованы в исполнительной части самого модуля
Идентификаторы могут состоять …
только из арифметических знаков +, –, *, /
как из цифр, так и из специальных символов @, #, $, ^, &
только из букв латиницы, цифр и символа «_»
Идентификаторы – это …
высказывания, относительно которых можно сказать истинно оно или ложно
имена переменной константы, процедур, функций и т. д.
атомарная часть С++ программы, которой можно поставить в соответствие предложение естественного языка
Изменить режим работы с файлом …
можно только после закрытия файла
невозможно
можно только во время работы с файлом
Имена переменных констант, процедур, функций и т. д. называются …
идентификаторами
компиляторами
операторами
типами данных
Имена формальных и фактических параметров …
не могут совпадать
могут совпадать, но это отразится на выполнении программы
могут совпадать и это не отразится на выполнении программы, но может привести к проблемам при понимании алгоритма работы
К основным типам языка в С++ относится … – тип с плавающей запятой, повышенной точности
char
bool
double
__wchar_t
float
int
К унарным операциям относят …
деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление)
умножение операндов
получение остатка от деления целочисленных операндов
получение адреса операнда
обращение по адресу (разыменование)
логическое отрицание (НЕ)
Квадратные матрицы – это такие матрицы, у которых …
все элементы матрицы равны нулю
число элементов в строке равно числу элементов в столбце, т. е. M = N
число элементов в строке/столбце зависит от того, в каком столбце/строке оно содержится
не все ячейки заполнены элементами
Локальные данные записываются в область памяти, называемую …
сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы
стеком и доступны только во время работы функции, в которой они описаны
сегментом данных (статический сегмент) и доступны только во время работы функции, в которой они описаны
стеком и доступны постоянно на протяжении всей работы программы
… массив – это одномерный массив, каждым элементом которого является свой одномерный массив, или, иначе говоря, это такой тип данных, элементы которого однотипны и каждый из них характеризуется уникальной парой чисел: индексом строки и индексом столбца
Наиболее естественными объектами, которые принято хранить в двумерных массивах, являются …
числа
латинские буквы
символы
Начало однострочного комментария в С++ обозначается комбинацией …
«//»
«#»
«*/»
«?»
«&»
Операции new и delete …, так как выделяемая память после ее использования должна высвобождаться
используются парами
используются только по отдельности
могут использоваться парами, но чаще всего используются по отдельности
Описание переменной может быть выполнено …
только как объявление, содержащее информацию о классе памяти и типе переменной
или как объявление, или как определение
только как определение, вместе с информацией о классе памяти и типе переменной
дающее указание выделить память
Описание формальных параметров алгоритма функции происходит …
только два раза
неограниченное количество раз
только один раз
… память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм, и собственно тела программы
… параметры – это локальные переменные, необходимые для описания алгоритма функции, они описываются в ее заголовке и используются в ее определении
формальные
входные
фактические
выходные
Если объявление глобальных переменных происходит в основной программе, то во время ее работы значения глобальных переменных записываются в область памяти, называемую …
сегментом данных (статический сегмент) и доступны постоянно на протяжении всей работы программы
стеком и доступны только во время работы функции, в которой они описаны
сегментом данных (статический сегмент) и доступны только во время работы функции, в которой они описаны
стеком и доступны постоянно на протяжении всей работы программы
Параметры-константы – это параметры, …
переданные по ссылке без права их изменения
переданные по ссылке с правом их изменения
которые используются, когда передаются входные данные, являющиеся сложными структурированными переменными (например, массивы)
Параметры-переменные используются для передачи … значений функций
выходных
входных
входных и выходных
Говоря об алгоритмах подсчета суммы и произведения элементов массива, можно утверждать, что накопление суммы начинают с …
нуля, а произведения – с единицы
единицы, а произведения – с нуля
нуля, как и произведения
единицы, как и произведения
Переменные класса памяти register аналогичны …, но память под них выделяется в регистрах процессора
auto
static
extern
В C++ циклическая алгоритмическая управляющая структура с предусловием записывается как …
while
for
do
Перемещение указателя на произвольную файловую позицию происходит с помощью функции fseek, которая записывается как int fseek(FILE *f, long off, int org); где FILE *f – это …
Процесс задания некоторой переменной первичного значения называется …
Прямым проходом следует пользоваться при реализации …
циклического сдвига вправо
циклического сдвига влево
как циклического сдвига вправо, так и циклического сдвига влево
Если при открытии потока возникла ошибка – диск заполнен (при записи), то указатель на поток приобретет …
любое значение ниже 0
значение NULL (0)
любое значение выше 0
Разреженные матрицы – это такие матрицы, у которых …
все элементы матрицы равны нулю
число элементов в строке равно числу элементов в столбце, т. е. M = N
число элементов в строке/столбце зависит от того, в каком столбце/строке оно содержится
не все ячейки заполнены элементами
Согласно правилам описания перегруженных функций, …
в разных вариантах перегруженных функций может быть разное количество умалчиваемых параметров
перегруженные функции должны находиться в одной области видимости
перегруженные функции могут иметь параметры по умолчанию, при этом значения одного и того же параметра в разных функциях должны совпадать
Если нужно скопировать элементы массива B в массив A, …
предпочтительней всего просто присвоить один массив другому, т.е. A = B
предпочтительней применить поэлементное копирование, т.к. в случае побитного копирования одного объекта в другой у двух массивов могут не совпадать размеры
одинаково эффективно или присвоить один массив другому, или использовать поэлементное копирование
Сопоставьте знаки унарных операций в С++ и описания операций:
Строковые данные можно складывать друг с другом (например, при сложении строк «Hello», и «world!» получится строка «Hello, world!»), и такая операция над строками будет называться …
инкрементацией
конкатенацией
инициализацией
итерацией
Укажите правильное определение массива: …
Укажите пример объявления указателя:
char *ch ;
char c&h ;
char _ch ;
char #ch ;
Укажите пример правильного написания прототипа функции FUNC, имеющей два параметра и возвращающей вещественное значение:
float FUNC ( float a ) ;
int FUNC ( int x, INT Y ) ;
float FUNC ( float a , float z ) ;
float Func ( float a , float z ) ;
Укажите пример правильного синтаксиса цикла for :
for ( инициализация ; условие ; итератор) { оператор(ы) ; }
for (итератор; условие ; инициализация) { оператор(ы) ; }
for ( инициализация , условие , итератор) { оператор(ы) ; }
В С++ оператор … высвобождает выделенную память
delete
&
new
Укажите пример правильной инициализации переменной: …
Файл – это …
именованная область на внешнем информационном носителе (диске), содержащая данные
перенос данных
специальное место на компьютерном носителе информации
В С++ циклическая алгоритмическая управляющая структура с постусловием записывается как …
while
for
do
Функция обработки строковых данных islower(c) возвращает значение true, если с является …, и false в других случаях
буквой нижнего регистра
буквой верхнего регистра
буквой или цифрой
цифрой
пробелом
Функция обработки строковых данных strcat (s1, s2) …
выполняет побайтное копирование n символов из строки s2 в строку s1. возвращает значения s1
сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 – если строки эквивалентны, >0 – если s1 < s2, <0 – если s1 > s2
определяет длину указанной строки, без учета нуль-символа
объединяет строку s2 со строкой s1, результат сохраняется в s1
Чтобы текст программы в С++ был более понятным, рекомендуется придерживаться общепринятых соглашений об именах объектов, в частности, если имя состоит из нескольких слов (например, first index), принято …
разделять слова символом подчеркивания (first index)
писать каждое следующее слово с большой буквы (FirstIndex)
писать через пробел (first index)
писать слитно строчными буквами (first index)
… – это массив, элементами которого служат массивы
… ̶ это процесс уменьшения значения переменной
итерация
декрементация
инкрементация
Файл, связанный с потоком, в режиме открытия а+ открывается для …
чтения
записи
добавления
чтения и записи
В С++ все файлы … последовательность байтов
могут рассматриваться или как структурированная, или как неструктурированная рассматриваются как структурированная
рассматриваются как неструктурированная
Перемещение указателя на произвольную файловую позицию происходит с помощью функции fseek, которая записывается как int fseek(FILE *f, long off, int org); где FILE *f- это …
позиция смещения
указатель на файл
начало отсчета
В С++ имя функции, возвращающей не-void, … от операции присваивания
В С++ класс памяти определяет … переменной
только время жизни
время жизни и область видимости
только область видимости
В С++ оператор … выделяет память из области свободной памяти
delete
&
new
В С++ циклическая алгоритмическая управляющая структура с параметром записывается как …
while
for
do
К основным типам данных языка в С++ относится … – тип с плавающей запятой наименьшего размера
char
bool
double
__wchar_t
float
int
В С++ тип данных категории void …
служит для обработки целых чисел
служит для описания пустого набора значений
позволяет задавать значения, которые могут иметь дробные части
В языке С++ блок комментариев (условный вид блоков программ) выделяется сочетанием символов
Дано: int a[5]; .Что означает следующая запись a[1]; :
Для использования способа передачи выходных значений функций, в списке формальных параметров перед параметром-переменной ставится префикс …
//
#
const
&
Для создания переменных, которые доступны во всех файлах программы, используется класс памяти
Для того чтобы в программе описать переменную типа одномерный массив, нужно записать:
Говоря о порядке обращения к элементам двумерного массива, можно утверждать, что …
двумерный массив всегда подвергается изменению сразу весь, целиком
массив можно подвергать изменению целиком, в зависимости от условия задачи
нельзя подвергать изменению целиком весь массив сразу
Если возникает потребность в обращении к переменной при коллизии имен, то следует вначале указать название модуля (модуль основной программы), а далее через … – имя переменной (или иной идентификатор, к которому нужно обратиться)
двойное двоеточие
двоеточие
запятую
двойной слеш
Под произвольным доступом к компонентам файла понимается работа с файлом с возможностью произвольного перемещения …
In general, the scope is defined as the extent up to which something can be worked with. In programming also the scope of a variable is defined as the extent of the program code within which the variable can be accessed or declared or worked with. There are mainly two types of variable scopes:
- Local Variables
- Global Variables
Now let’s understand each of the scope at a greater detail:
Local Variables
Variables defined within a function or block are said to be local to those functions.
- Anything between ‘{‘ and ‘}’ is said to inside a block.
- Local variables do not exist outside the block in which they are declared, i.e. they can not be accessed or used outside that block.
- Declaring local variables: Local variables are declared inside a block.
C++
#include<iostream>
using
namespace
std;
void
func()
{
int
age=18;
}
int
main()
{
cout<<
"Age is: "
<<age;
return
0;
}
Output:
Error: age was not declared in this scope
The above program displays an error saying “age was not declared in this scope”. The variable age was declared within the function func() so it is local to that function and not visible to portion of program outside this function.
Rectified Program : To correct the above error we have to display the value of variable age from the function func() only. This is shown in the below program:
C++
#include<iostream>
using
namespace
std;
void
func()
{
int
age=18;
cout<<age;
}
int
main()
{
cout<<
"Age is: "
;
func();
return
0;
}
Output:
Age is: 18
Global Variables
As the name suggests, Global Variables can be accessed from any part of the program.
- They are available through out the life time of a program.
- They are declared at the top of the program outside all of the functions or blocks.
- Declaring global variables: Global variables are usually declared outside of all of the functions and blocks, at the top of the program. They can be accessed from any portion of the program.
C++
#include<iostream>
using
namespace
std;
int
global = 5;
void
display()
{
cout<<global<<endl;
}
int
main()
{
display();
global = 10;
display();
}
Output:
5 10
In the program, the variable “global” is declared at the top of the program outside all of the functions so it is a global variable and can be accessed or updated from anywhere in the program.
What if there exists a local variable with the same name as that of global variable inside a function?
Let us repeat the question once again. The question is : if there is a variable inside a function with the same name as that of a global variable and if the function tries to access the variable with that name, then which variable will be given precedence? Local variable or Global variable? Look at the below program to understand the question:
C++
#include<iostream>
using
namespace
std;
int
global = 5;
int
main()
{
int
global = 2;
cout << global << endl;
}
Look at the above program. The variable “global” declared at the top is global and stores the value 5 where as that declared within main function is local and stores a value 2. So, the question is when the value stored in the variable named “global” is printed from the main function then what will be the output? 2 or 5?
- Usually when two variable with same name are defined then the compiler produces a compile time error. But if the variables are defined in different scopes then the compiler allows it.
- Whenever there is a local variable defined with same name as that of a global variable then the compiler will give precedence to the local variable
How to access a global variable when there is a local variable with same name?
What if we want to do the opposite of above task. What if we want to access global variable when there is a local variable with same name?
To solve this problem we will need to use the scope resolution operator. Below program explains how to do this with the help of scope resolution operator.
C++
#include<iostream>
using
namespace
std;
int
x = 0;
int
main()
{
int
x = 10;
cout <<
"Value of global x is "
<< ::x;
cout<<
"nValue of local x is "
<< x;
return
0;
}
Output:
Value of global x is 0 Value of local x is 10
This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.