Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Вызов функции с параметрами по умолчанию




double f;

double sqr (double x) // определение функции

{ return x * x; }

double ff (double x = sqr(f)) // вызов функции для вычисления

// значения

{ return x; }

int main (void)

{ f = 2;

cout << "\n \n f =" < f < endl;

cout << "\n ff (x = sqr(f)) =" << ff (); // вычисляется значение

// по умолчанию

cout << "\n ff(3) = " << ff (3) << endl; // умолчание

// не используется

return 0;

} f = 2

ff (x = sqr(f)) = 4

ff (3) = 3

Вопрос 20. Рекурсия. Привести пример рекурсивной функции в С/C++.

рекурсивной называется такая функция, которая может вызывать сама себя;

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

Рекурсивная функция "Факториал"

#include "stdafx.h"

#include <iostream>

using namespace std;

unsigned int factor (unsigned int); //прототип функции

int main (void)

{

unsigned int n; // число, факториал которого надо вычислить

unsigned int f; // факториал числа n

cout << " Вычисление факториала: \n ";

cout << " Введите число, факториал которого надо вычислить \n";

cin >> n;

f = factor (n);

cout << "Факториал числа “ << n << “равен” << f;

return 0;

}

unsigned int factor (unsigned int k)

{ if (k == 1)

return 1;

else

return k*factor(k-1);

}

Вопрос 21. Область видимости и "время жизни" переменных. Использование статических переменных в функции. Привести примеры.

"Время жизни" —это время существования переменной во время работы программы.

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

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

l за пределами функции имена объявленных внутри нее переменных не видны, т. е. имя переменной нельзя использовать вне тела функции в других местах программы. Говорят, что область видимости локальных переменных — тело функции.

l до входа в функцию локальных переменных не существует. Они "рождаются" при входе в функцию и "умирают" при выходе из нее. Говорят, что "время жизни" локальных переменных ограничено временем выполнения. функции. То же относится к параметрам. Данный механизм реализуется с помощью стека: локальные переменные и параметры автоматически размешаются в стеке программы при входе в функцию, а удаляются из стека при выходе из нее.

Вопрос 22. Передача параметров в функцию по ссылке. Привести примеры определения и вызова таких функций в С/C++..

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

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

Вернёмся снова к примеру обмена, только данные передадим по ссылке.

Пример:

void Swap (int &a, int &b) // ссылки в заголовке

{ int t = а; а = b; b = t; }

……………………………….

int х = 5, у = 3;

Swap (x, у);

cout << "х = " << х;

cout << " у = " << у << endl;

……………………………….

x = 3 y = 5

Вопрос 23. Перегрузка функций. Пример реализации перегруженной функции в С/C++.

Использование одного имени для нескольких функций называется перегрузкой (overloading).

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

Функции С++, вычисляющие абсолютное значение своего аргумента:

int abs (int x);

long labs (long x);

double fabs (double x);

long double fabsl (long double x);

Пример:

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

Основное правило перегрузки заключается в том, что перегруженными считаются функции с различными списками параметров.

Перегруженный вариант функции, вычисляющей абсолютное значение своего аргумента:

int abs (int x);

long abs (long x) { return labs(x);)

double abs (double x) { return fabs(x); }

long double abs (long double x) { return fabsl(x); }

Вопрос 24. Одномерные массивы: объявление, инициализация, обработка, использование массивов в С/C++.

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

Пример объявления:

int month[12]; double mas[32]; char letter[40];

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

Инициализация массивов:

1) int month[7] = { 31, 28, 31, 30, 31, 30, 31 };

При инициализации массива разрешается не указывать количество элементов:

int month[] = { 31, 28, 31, 30, 31, 30, 31, 31 };

Обнуление массива с заданным количеством элементов: int v[10] = {0};

2) массив можно заполнить, вводя элементы массива с клавиатуры:

for (int i = 0; i < 12; ++i) cin >> month [i];

Обработка массива:

получение суммы элементов массива;

поиск максимума, минимума и других задаваемых значений;

сортировка массива;

выполнение однотипных действий над всеми элементами массива.

Пример использования: Вычисление суммы элементов массива вещественных чисел

#include "stdafx.h"

#include <iostream>

using namespace std;

int main (void)

{ double v [10] = { 1, 2, 3, 4, 5, 6 };

unsigned int n = sizeof (v) / sizeof (double);

double s = 0;

for (int i = 0; i < n; ++i) s += v [ i ];

cout << “Summa =“ << s << endl;

return 0;

}

Вопрос 25. Одномерные массивы: последовательный поиск элементов в массивах и его организация на языке С/C++.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных