Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания по программированию БИО.docx
Скачиваний:
5
Добавлен:
11.02.2016
Размер:
125.93 Кб
Скачать

Объявление функции

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

тип возвращаемого значения имя функции (список параметров)

{

тело функции

}

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

В С++ не допускается вложение функций друг в друга.

Выход из функции осуществляется следующими способами:

1. Если нет необходимости возвращать вычисленное значение, то выход осуществляется по достижении закрывающей скобки или при выполнении оператора return.

2. Если необходимо вернуть определенное значение, то выход осуществляется оператором

return выражение;

Передача параметров

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

Передача параметров по значению

В момент обращения к функции в памяти создаются временные переменные с именами, указанными в списке параметров. В временные переменные копируются значения фактических параметров.

Передача параметров по ссылке

При передаче параметров по ссылке передается не значение соответствующей переменной, а ее адрес. Для указания на данный способ передачи после имени параметра ставится символ «&».

Передача параметров по указателю

В отличие от передачи по ссылке адрес переменной передается в функцию не с использованием операции разадресации (&), а операцией косвенной адресации (*).

Перегрузка функций и указатель на функцию

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

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

При объявлении указатель должен возвращать тот же тип и иметь такие же аргументы, как и функция, на которую он будет указывать. Например, указатель на функцию

double y(double x, int n);

будет иметь вид:

double (*fun)(double, int);

Пример выполнения работы

Условие. Вывести на экран таблицу значений функции Y(x) = и ее разложения в ряд S(x) = с точностью = 0.001. Вывести число итераций, необходимое для достижения заданной точности.

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

typedef double (*uf)(double, double, int &);

void tabl(double, double, double, double, uf);

double y(double, double, int &);

double s(double, double, int &);

int main()

{

cout << setw(8) <<"x"<< setw(15) <<"y(x)"<< setw(10) << "k" << endl;

tabl(0.1,0.8,0.1,0.001,y);

cout << endl;

cout << setw(8) <<"x"<< setw(15) <<"s(x)"<< setw(10) << "k" <<endl ;

tabl(0.1,0.8,0.1,0.001,s);

return 0;

}

void tabl(double a, double b, double h, double eps, uf fun)

{

int k=0;

double sum;

for (double x=a; x<b+h/2; x+=h)

{

sum=fun(x,eps,k);

cout << setw(8) << x << setw(15) << sum << setw(10) << k << endl;

}

}

double y(double x, double eps, int &k)

{

return sin(x);

}

double s(double x, double eps, int &k)

{

double a,c,sum;

sum=a=c=x;

k=1;

while (fabs(c)>eps)

{

c = pow(x,2)/(2*k*(2*k+1));

a *= -c;

sum += a;

k++;

}

return sum;

}

    1. Дать описание порядка вызова функции

    2. Описать возвращение результата функцией

    3. Объяснить принцип работы рекурсивных функций

  1. Охарактеризуйте принципы работы с формами

    1. Описать основные элементы управления

    2. Привести примеры использования элементов управления

    3. Привести примеры программирования элементов управления

    4. Описать свойства, события и методы некоторых элементов управления

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

    1. Описать принцип модульного программирования

    2. Записать синтаксис модуля

    3. Описать заголовок модуля

    4. Описать разделы модуля

  1. Охарактеризуйте принципы объектно-ориентированного программирования

    1. Дать определение инкапсуляции

    2. Дать определение полиморфизма

    3. Дать определение наследования

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

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

Бурное развитие технологий программирования, основанных на объектном подходе, позволило решить многие проблемы. Так были созданы среды, поддерживающие визуальное программирование, например, Delphi, C++ Builder, Visual C++ и т. д. При использовании визуальной среды у программиста появляется возможность проектировать некоторую часть, например, интерфейсы будущего продукта, с применением визуальных средств добавления и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды.

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

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

Инкапсуляция — это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создаётся объект.

Применяя инкапсуляцию, данные, принадлежащие объекту, становятся защищёнными от возможных ошибок, которые могут возникнуть при прямом доступе к этим данным. Кроме того, применение этого принципа очень часто помогает локализовать возможные ошибки в коде программы. А это намного упрощает процесс поиска и исправления этих ошибок. Можно сказать, что инкапсуляция подразумевает под собой сокрытие данных, что позволяет защитить эти данные. Однако применение инкапсуляции ведет к снижению эффективности доступа к элементам объекта. Это обусловлено необходимостью вызова методов для изменения внутренних элементов (переменных) объекта. Но при современном уровне развития вычислительной техники эти потери в эффективности не играют существенной роли.

Наследование – это процесс, посредством которого один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него. В итоге создаётся иерархия объектных типов, где поля данных и методов "предков" автоматически являются и полями данных и методов «потомков».

Смысл и универсальность наследования заключается в том, что не надо каждый раз заново («с нуля») описывать новый объект, а можно указать «родителя» (базовый класс) и описать отличительные особенности нового класса. В результате новый объект будет обладать всеми свойствами родительского класса плюс своими собственными отличительными особенностями.

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

Современная технология программирования – компонентный подход, который предполагает построение программного обеспечения из отдельных компонентов – физически отдельно существующих частей программного обеспечения, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию. На сегодня рынок объектов стал реальностью. Это позволяет программистам создавать продукты, хотя бы частично состоящие из повторно использованных частей, т.е. использовать технологию, хорошо зарекомендовавшую себя в области проектирования аппаратуры.