
- •Вопрос 1. История языков программирования от машинного кода до современных языков структурного программирования.
- •Вопрос 3. Понятие о синтаксисе языка программирования. Основные типы данных языка с.
- •Вопрос 14. Цикл с выходом из середины. Привести блок схемы и примеры реализации.
- •Вопрос 15. Итерационные алгоритмы. Привести примеры реализации итерационных алгоритмов в задачах вычисления суммы бесконечного ряда с заданной точностью (нет ничего)
- •Вопрос 21. Область видимости и "время жизни" переменных. Использование статических переменных в функции. Привести примеры.
- •Void Swap ( int &a, int &b ) // ссылки в заголовке
- •2) Массив можно заполнить, вводя элементы массива с клавиатуры:
- •Вопрос 26. Что такое вложенные циклы? Проанализировать работу программы, содержащей вложенные циклы.
- •Int MyArray1 [ 10 ]; // Одномерный массив размерности 10
- •Int MyArray2 [ 20 ][ 10 ]; // 20 одномерных массивов
- •Int MyArray3 [ 30 ][ 20 ][ 10 ]; // 30 двумерных массивов
- •Вопрос 36. Функции сравнения строк. Проиллюстрировать работу функций на примерах
- •Вопрос 37. Функции преобразования числа в цифровую строку и обратно. Проиллюстрировать работу функций на примерах.
- •Int value; //Запись &value означает «адрес объекта value».
- •1) С использованием имени переменной.
- •2) С использованием адреса переменной.
- •Int *ap [15]; // Массив из 15 указателей на int
- •Вопрос 40. Передача массивов в качестве параметров в функцию. Привести пример передачи массива вещественных чисел в функцию, вычисляющую сумму его элементов.
- •Вопрос 41. Статическое и динамическое выделение памяти. Операторы new и delete.
- •Вопрос 44. Привести пример реализации алгоритма обработки и преобразования матриц, используя динамическое выделение памяти и технику работы с указателями.
- •Вопрос 45. Понятие структуры. Описание, инициализация структур. Доступ к полям структур. Примеры использования структур.
- •Вопрос 46. Массивы структур. Привести пример обработки массива структур.
- •Вопрос 47. Передача структур в качестве параметров в функцию. Привести пример функции, обрабатывающей структуру.
- •Передача целых структур функциям
- •Вопрос 48. Указатели на структуру. Использование структур с функциями. Передача структуры в функцию по значению, по ссылке и с использованием техники работы с указателями
- •Объявление указателя на структуру
- •Использование указателей на структуры
Вопрос 14. Цикл с выходом из середины. Привести блок схемы и примеры реализации.
Цикл с выходом из середины — наиболее общая форма условного цикла. Синтаксически такой цикл оформляется с помощью трёх конструкций: начала цикла, конца цикла и команды выхода из цикла. Конструкция начала маркирует точку программы, в которой начинается тело цикла, конструкция конца — точку, где тело заканчивается. Внутри тела должна присутствовать команда выхода из цикла, при выполнении которой цикл заканчивается и управление передаётся на оператор, следующий за конструкцией конца цикла. Естественно, чтобы цикл выполнился более одного раза, команда выхода должна вызываться не безусловно, а только при выполнении условия выхода из цикла.
Принципиальным отличием такого вида цикла от рассмотренных выше является то, что часть тела цикла, расположенная после начала цикла и до команды выхода, выполняется всегда (даже если условие выхода из цикла истинно при первой итерации), а часть тела цикла, находящаяся после команды выхода, не выполняется при последней итерации.
Легко видеть, что с помощью цикла с выходом из середины можно легко смоделировать и цикл с предусловием (разместив команду выхода в начале тела цикла), и цикл с постусловием (разместив команду выхода в конце тела цикла).
Вопрос 15. Итерационные алгоритмы. Привести примеры реализации итерационных алгоритмов в задачах вычисления суммы бесконечного ряда с заданной точностью (нет ничего)
Вопрос 16. Пользовательские функции в С/C++. Разновидности функций. Определение функций. Привести пример функции, возвращающей значение.
Для того, чтобы в С++ использовать функцию, нужно ее:
Объявить
Описать (или определить)
Вызвать
Функции — это средства языка программирования, позволяющие:
разбить сложную задачу на ряд сравнительно простых ;
выполнять одну и ту же последовательность операторов в разных частях программы.
С++ включает ряд интересных особенностей, отсутствующих в других языках, например, функции с переменным числом параметров, перегрузка функций, механизм шаблонов и т.д.
Функции в С++ подразделяются на
библиотечные,
определяемые пользователем.
Примеры функций:
int add (int, int); объявляется функция, поименованная add, которая требует два аргумента типа int и возвращает величину типа int.
double calc ( ); объявляется функция, поименованная calc, которая возвращает величину типа double. Список типов аргументов не задан.
void draf (void); объявляется функция с типом возврата void (нет возвращаемой величины). Список типов аргументов также void, означающий отсутствие аргументов для этой функции.
тип возвращаемого значения Имя (список параметров)
{
тело функции
}
Вопрос 17. Способы передачи параметров в вызываемую функцию на языке С/C++. Последовательность выполнения вызова функции. Привести примеры.
Передача данных по значению
Этот способ передачи данных в подпрограмму является основным и действует по-умолчанию. Фактический параметр вычисляется в вызывающей функции и его значение передаётся на место формального параметра в вызываемой функции. На этом связь между фактическим и формальным параметрами прекращается.
Передача данных по адресу
По адресу в функцию всегда передаются массивы (рассмотрим это в следующих темах). Для массива это вообще единственный способ передачи данных в языках С/С++. Так же по адресу можно передать те простые объекты, которые являются выходными данными (или входными и выходными одновременно).
Передача данных по ссылке
Это ещё один из способов вернуть результат работы функции через список параметров. Напомним, что применяется только для С++. В языке С такого варианта нет. При передаче данных по ссылке в функцию, куда передаются данные, создаются синонимы исходных объектов. Поэтому работа в подпрограмме ведётся именно с исходными объектами. Если в подпрограмме ссылочная переменная изменит значение, то это сразу отразится на исходной переменной.
Вызов имеет вид:
Имя (список аргументов);
Функция, возвращающая значение некоторого типа, обычно должна вызываться как один из элементов выражения того же типа, например:
double у = sin ( x ) + 2 * cos ( x ) + 1.53;
Если функция не возвращает значения, то вместо типа нужно задавать зарезервированное слово void.
Вопрос 18. Правила разработки функций. Формальные и фактические параметры функции. Привести примеры определения и вызова функций в С/C++.
Правила разработки функций
Функция должна быть определена до того, как использована (вызвана).
Прототип выполняет ту же роль, что и объявление для переменных: в нем перечисляются используемые типы.
Тело функции — это блок, т. е. последовательность описаний переменных и операторов, заключенных в фигурные скобки. Даже если функция не выполняет никаких действий, тело функции должно присутствовать в определении. В этом случае тело функции будет состоять просто из скобок { }:
void f(void) { }
Определения функций не должны быть вложенными. В отличие от определений, прототипы — объявления функции — могут быть вложенными в другие функции. Главное, чтобы прототип был прописан до вызова соответствующей функции.
Формальные и фактические параметры функции
Формальные параметры - это переменные, которые принимают значения, переданные функции от функционального вызова. Формальные параметры объявляются в списке параметров в начале описания функции. Список параметров определяет имена параметров и порядок, в котором они принимают значения при вызове функции.
Формальные параметры – входные и выходные. Входные – те, которые должны быть известны для вычислений в функции. Выходные – результаты.
Список параметров состоит из нуля или более идентификаторов, разделенных запятой. Список должен быть ограничен круглыми скобками даже в случае, когда он пуст.
Аргументы, задаваемые при вызове функции, называются фактическими параметрами. Список фактических параметров, как правило, должен в точности соответствовать списку формальных параметров, хотя в C++ возможны исключения.
int add (int x, int y)
{
return (x+y);
}
// Формальные параметры – x и y.
void main( )
{
int a = 2;
int b = 3;
cout << add (5*a,
4*b);
}
// Фактические параметры – выражения 5*a и 4*b.
Вопрос 19. Функция с параметрами по умолчанию. Привести пример определения и вызова такой функции в С/C++.
В C++ разрешается задавать значение параметров по умолчанию. Синтаксис присвоения значения по умолчанию выглядит следующим образом:
тип имя = выражение
Параметры со значениями по умолчанию должны объявляться последними (крайними правыми) параметрами в списке. При вызове функции такие параметры можно не указывать - используется значение, заданное по умолчанию.
Пример функции
void repch (char ch = '-', int k = 60)
{ for (int i = 0; i < k; ++i) cout << ch; }
C++ разрешает такие вызовы этой функции:
repch (); // выводится 60 минусов
repch ('+'); // выводится 60 плюсов
repch ('=', 52); // выводится 52 равно
Вызов функции с параметрами по умолчанию считается корректным, если не указываются самые правые параметры. Язык C++ запрещает писать вызовы с пропущенными первыми и заданными последними параметрами.
Вызов repch (,54); писать нельзя.
Вызов repch (54); приведет к выводу на экран 60 шестерок.
Вызов функции с параметрами по умолчанию
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);
}