Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_CPP_Semestr_2_1(4).doc
Скачиваний:
3
Добавлен:
26.09.2019
Размер:
144.38 Кб
Скачать
  1. Перечислите основные операции отношения.

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

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

  1. Операции больше, меньше, не меньше (больше или равно), не больше (меньше или равно) аналогичны в любом в любом языке и обозначаются: >,<,>=,<= соответственно

  2. операций равенства (==)

  3. операций неравенства(!=)

  4. Операции эквивалентности и неэквивалентности (===, !==)

  5. Строковые операции сравнения.

  1. Что является результатом любой операции отношения?

Операции сравнения возвращают значение логического типа, т.е. истина или ложь.

  1. Приведите пример практической реализации операции условия

Логические операции Обозначение в С++ Составное условие Краткое описание И && a==3 && b>4 Составное условие истинно, если истинны оба простых условия ИЛИ || a==3 || b>4 Составное условие истинно, если истинно, хотя бы одно из простых условий НЕ ! !(a==3) Условие истинно, если a не равно 3

Пример:

 bool a1 = true, a2 = false; // объявление логических переменных

    bool a3 = true, a4 = false;

    cout << "Tablica istinnosti log operacii &&" << endl;

    cout << "true  && false: " << ( a1 && a2 )   << endl // логическое И

         << "false && true: "  << ( a2 && a1 )   << endl

         << "true  && true: "  << ( a1 && a3 )   << endl

         << "false && false: " << ( a2 && a4 )   << endl;

    cout << "Tablica istinnosti log operacii ||" << endl;

    cout << "true  || false: " << ( a1 || a2 )   << endl // логическое ИЛИ

         << "false || true: "  << ( a2 || a1 )   << endl

         << "true  || true: "  << ( a1 || a3 )   << endl

         << "false || false: " << ( a2 || a4 )   << endl;

    cout << "Tablica istinnosti log operacii !"  << endl;

    cout << "!true: " << ( ! a1 ) << endl // логическое НЕ

         << "!false: "<< ( ! a2 ) << endl;

.

  1. Перечислите особенности операции присваивания в языке С++.

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

a=b;

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

Множественное присваивание

Множественное присваивание – присваивание нескольким переменным одного и того же значения.

Например: a=b=c=3.14159/6;

  1. Что такое выражение?

Это любой набор операторов, возвращаюший значение.

  1. Каково значение выражения 201 % 4?

1

  1. Перечислите операторы циклов, используемых в языке С++.

  1. Безусловные циклы

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

Цикл с предусловием

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

while(<условие>)

{

<тело цикла>

}

for (i = 0; i < 10; ++i)

{

... тело цикла

}

Цикл с постусловием

Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз.

do

{

<тело цикла>

}

while(<условие продолжения цикла>)

  1. В чем разница между операторами циклов do while и while?

Цикл  while называют еще циклом с предусловием. Чаще всего он используется когда неизвестно конкретно сколько раз нужно выполнить тело цикла.

Цикл do-while называют еще циклом с постусловием. И в этом состоит его основное отличие от цикла while

  1. Запишите общую структуру оператора цикла for.

1. for ( начальное значение ; условие выполнения ; приращение )

2. {

3. оператор 1;

4. оператор 2;

5. .....

6. оператор n;

7. }

  1. Приведите пример использования оператора for для “убывающего” цикла.

for (count = 14; count >= 0; count --)

  1. Как осуществить принудительный выход из цикла, организованного оператором for ?

for (...)

{

  for (...)

  {

    for (...)

    {

      ...

      if (smth) break 3; // выход из трех циклов

    }

  }

}

  1. Запишите общую структуру оператора switch .

// форма записи оператора множественного выбора switch

switch (/*переменная или выражение*/)

 {

 case /*константное выражение1/*:

 {

 /*группа операторов*/;

 break;

 }

 case /*константное выражение2*/:

 {

 /*группа операторов*/;

 break;

 }

 //.    .    .

 default:

                {

                 /*группа операторов*/;

                }

 }

  1. Запишите возможные структуры оператора условного перехода if. Приведите конкретные примеры таких структур.

  1. В чем состоят особенности использования операторов ввода – вывода printf и scanf в языке С?.

Функция printf() позволяет выводить информацию на экран при программировании в консольном режиме. Данная функция определена в библиотеке stdio.h и имеет следующий синтаксис:

Также можно выводить переменные разного типа, от целочисленных до строковых. Для выполнения этой операции используются специальные управляющие символы, которые называются спецификаторами и которые начинаются с "%". [sample]

int num; num = 6; printf(“%d”, num);

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

scanf(“ %d, %d ”, &n, &m);

Функция scanf() воспроизводит это как ожидание, что пользователь введет число, затем запятую, а затем второе число. Функция scanf() возвращает число успешно считанных элементов. Если операции считывания не происходило, что бывает в том случае, когда вместо ожидаемого цифрового значения вводится какая-то буква, то возвращаемое значение будет равно 0.

  1. Перечислите способы описания одномерного массива целых чисел

//синтаксис  объявления одномерного массива в С++:

/*тип данных*/  /*имя одномерного массива*/[/*размерность одномерного массива*/];

//пример объявления одномерного массива, изображенного на рисунке 1:

int a[16];

//ещё один способ объявления одномерных массивов

int mas[10], a[16];

Объявлены два одномерных массива  mas и а размерами 10 и 16 соответственно. Причём в таком способе объявления все массивы будут иметь одинаковый тип данных, в нашем случае - int.  

  1. Перечислите способы описания одномерного массива символов

Объявление одномерных массивов в разделе описания типов.

Объявление одномерных массивов в разделе переменных.

Объявление одномерных массивов в разделе констант.

  1. Приведите примеры, иллюстрирующие передачу и прием одномерного массива в функцию

В языке С нельзя передать весь массив как аргумент функции. Однако можно передать указатель на массив, т.е. имя массива без индекса. Например, в представленной программе в func1() передается указатель на массив i:

int main(void)

{

int i[10];

func1(i);

/* ... */

}

Если в функцию передается указатель на одномерный массив, то в самой функции его можно объявить одним из трех вариантов: как указатель, как массив определенного размера и как массив без определенного размера. Например, чтобы функция func1() получила доступ к значениям, хранящимся в массиве i, она может быть объявлена как

void func1(int *x) /* указатель */

{

/* ... */

}

или как

void func1(int x[10]) /* массив определенного размера */

{

/* ... */

}

и наконец как

void func1(int x[]) /* массив без определенного размера */

{

/* ... */

}

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

void func1(int x[32])

{

/* ... */

}

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

  1. Каким образом можно вернуть значение переменной из функции

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

  1. В каких случаях необходимо ставить знак & перед параметром при вызове функции

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

  1. На что указывает знак * в функции void f(int *r)

  1. Как описать функцию А, если вызов ее осуществляется как А(&x, y) x- и y – целые

  1. Какого типа могут быть параметры в вызывающей программе и как выполнить вызов функции, если описание функции имеет вид void MyIn(int *n, char *x)

  1. Какой оператор используется для получения адреса переменной?

Для возвращения адреса любой переменной используется оператор получения адреса (&).

  1. Какой оператор позволяет получить значение, записанное по адресу, содержащемуся в указателе?

оператор разыменовывания (*) для получения доступа к данным, сохраненным по адресу, содержащемуся в указателе.

  1. В чем разница между адресом, который хранится в указателе, и значением, записанным по этому адресу?

Адрес, сохраненный в указателе, — это адрес другой переменной. Значение, сохраненное по этому адресу, — это любое значение, сохраняемое в переменной, на которую ссылается указатель. Оператор разыменования (*) возвращает значение, сохраненное по адресу, который хранится в указателе.

  1. В чем различие между оператором разыменования и оператором получения адреса?

Оператор разыменования (*) возвращает значение, хранящееся по адресу, на который ссылается указатель. А оператор получения адреса (&) возвращает адрес переменной в памяти.

  1. Покажите разницу между ссылкой и указателем.

Ссылка — это условное название (псевдоним), а указатель — это переменная, которая содержит адрес. Ссылки не могут быть нулевыми и не могут переназначаться.

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

Для объявления ссылки нужно указать типа объекта адресата, за которым следует оператор ссылки (&), а за ним — имя ссылки. Для ссылок можно использовать любое легальное имя переменной, но многие программисты предпочитают со всеми именами ссылок использовать префикс "г". Так, если у вас есть целочисленная переменная с именем someInt, вы можете создать ссылку на эту переменную, написав

int &rSomeRef = someInt;

Это читается следующим образом: rSomeRef — это ссылка на целочисленное значение, инициализированная адресом переменной someInt. Создание и использование ссылок показано в листинге 9.1.

Указатель может быть равен 0, а ссылка не может ссылаться на объект по адресу 0. Ссылка - это практически псевдоним переменной (или константы). Ее нельзя переназначить.

Примечание:Обратите внимание на то, что оператор ссылки (&) выглядит так же, как оператор адреса, который используется для возвращения адреса при работе с указателями. Однако это не одинаковые операторы, хотя очевидно, что они родственны.

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