Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория к зачету1.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
107.01 Кб
Скачать

Локальные переменные

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

Глобальные переменные

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

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

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

Рекурсивные функции

// Программа 6.0

// Составить рекурсивную функцию для вычисления факториала заданного числа

#include <iostream>

using namespace std;

int factorial(int n);

int main()

{

int n;

cout << "Vvesti n: " << "\n";

cin >> n;

cout << factorial(n) << "\n";

system("pause");

return 0;

}

int factorial(int n)

{

if (n==0) return 1; // Проверка условия, которая обеспечивает выход

// из функции без выполнения рекурсивного вызова.

else return (n*factorial(n-1)); // Вызов функцией самой себя от аргумента n-1

}

Рекурсия – процесс вызова функцией самой себя. Если рекурсивная функция вызывается с аргументом, равным 1, то она сразу возвращает значение 1. В противном случае она возвращает произведение (n*factorial(n-1)). Для вычисления этого выражения вызывается функция factorial с аргументом (n-1). Этот процесс повторяется до тех пор, пока аргумент не станет равным 1, после чего вызванные ранее функции начнут возвращать значения. (Сколько раз вызывается функция, столько раз происходит умножение на величину n, которая при каждом вызове уменьшается на 1. Возвращение результатов происходит в обратном порядке: 1*2*3 и т.д.)

Например, при вычислении факториала числа 2 первое обращение к функции factorial(n) приведет ко второму обращению к той же функции, но с аргументом, равным 1. Второй вызов функции вернет значение 1, которое буде умножено на 2.

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

Массивы

Массив — это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый индексом), обращение к элементу массива осуществляется путем указания его индекса. В языке C++ элементы нумеруются начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива.

// Программа 8.1a

// Вывести на экран все элементы массива с четными индексами

#include <iostream>

using namespace std;

int main()

{

int n; // Объявление размера массива

int i;

cout << "Vvedite chislo elementov massiva: " << "\n";

cin >> n; // Ввод размера массива

double A[n]; // Объявление массива

cout << "Vvedite cherez probel " << n << " veshestvennih chisel: " << "\n";

for (i=0; i<n; ++i) // Ввод массива с клавиатуры

cin >> A[i];

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

{

if (i%2==0) // Работа с массивом

cout << "A[" << i << "] = " << A[i] << "\n";

}

system("pause");

return 0;

}