Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Основная образовательная программа'
Ейска МО Ейский район протокол №__ от председатель управляющего совета 013 ГОД Содержание Целевой раздел Пояснительная записка ....полностью>>
'Учебник'
Примечание: Заявки на учебную литературу старых лет издания, не входящую в аттестационный период (гуманитарные науки – за 5 лет, естественные науки – ...полностью>>
'Документ'
9 Завод «ENKI» (Kазахстан) «Морковь» 50*1 0*88 39 M 150 99,99 «Морковь» 50*1 0* 5 480 M 150 95 «Персик» 50*1 0*88 39 M 150 99,99 «Персик» 50*1 0* 5 48...полностью>>
'Документ'
Акулович, Л. М. Направление развития гибких производственных участков в механообрабатывающем производстве на заводах отрасли Автомобильное производс...полностью>>

Главная > Документ

Сохрани ссылку в одной из сетей:
Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

Министерство образования республики беларусь

Учреждение образования

«Белорусский государственный университет информатики и

радиоэлектроники»

кафедра «Вычислительные методы и программирование»

КАФЕДРАЛЬНЫЙ ЗНАК !!!

Основы программирования в среде C++ Builder

Лабораторный практикум по курсу

«Основы алгоритмизации и программирования»

для студентов 1 – 2-го курсов БГУИР

В 2-х частях

Часть 2

Минск 2009

УДК 681.3.061 (075.8)

ББК 32.973.26-018.1 я 73

O – 75

Авторы:

В. Л. Бусько, А. Г. Корбит, Т. М. Кривоносова, А. А. Навроцкий,

Д.Л. Шилин

Основы программирования в среде С++ Builder: лаб.практикум по курсу «Основы алгоритмизации и программирования» для студ. 1 – 2-го курсов БГУИР. В 2 ч. Ч. 2 / Бусько В. Л. [и др.] . – Минск: БГУИР, 2009. – 80 с.: ил.

ISBN (ч. 2)

В практикуме приведены краткие теоретические сведения по алгоритмам обработки динамических структур данных (линейные и нелинейные списки), алгоритмам сортировки и поиска, а также некоторым методам приближенных вычислений; примеры их реализации на языке C++ в среде Builder, 9 лабораторных работ и индивидуальные задания к ним.

УДК 681.3.061 (075.8)

ББК 32.973.26-018.1 я 73

ISBN (ч. 2)

ISBN 985–444–583–6

© УО «Белорусский

государственный

университет информатики

и радиоэлектроники», 2009

Содержание

Лабораторная работа №1. Рекурсивные функции 5

1.1. Краткие теоретические сведения 5

1.2. Пример выполнения задания 5

1.3. Индивидуальные задания 8

Лабораторная работа №2. Алгоритмы поиска и сортировки в массивах 10

2.1. Краткие теоретические сведения 10

2.2. Индивидуальные задания 13

Лабораторная работа №3. Динамическая структура СТЕК 15

3.1. Краткие теоретические сведения 15

3.2. Пример выполнения задания 18

3.3. Индивидуальные задания 21

Лабораторная работа №4. Динамическая структура ОЧЕРЕДЬ 22

4.1. Краткие теоретические сведения 22

4.2. Пример выполнения задания 25

4.3. Индивидуальные задания 29

Лабораторная работа №5. Обратная польская запись 29

5.1. Краткие теоретические сведения 29

5.2. Пример выполнения задания 30

5.3. Индивидуальные задания 32

Лабораторная работа №6. Нелинейные списки 33

6.1. Краткие теоретические сведения 33

6.2. Пример выполнения задания 38

6.3. Индивидуальные задания 39

Лабораторная работа №7. Алгоритмы поиска корней уравнений 41

7.1. Краткие теоретические сведения 41

7.2. Пример выполнения задания 44

7.3. Индивидуальные задания 46

Лабораторная работа №8. Аппроксимация функций 47

8.1. Краткие теоретические сведения 47

8.2. Пример выполнения задания 50

8.3. Индивидуальные задания 51

Лабораторная работа №9. Алгоритмы вычисления интегралов 52

9.1. Краткие теоретические сведения 52

9.2. Пример выполнения задания 56

9.3. Индивидуальные задания 58

Литература 59

Лабораторная работа №1. Рекурсивные функции

Цель работы: изучить способы реализации алгоритмов с использованием рекурсии.

1.1. Краткие теоретические сведения

рекурсия – это способ организации вычислительного процесса, при котором функция в ходе выполнения входящих в нее операторов обращается сама к себе. Классическим примером является вычисление факториала n! (n>0)

double Faktorial_R (int n) {

if (n < 2) return 1; // Условие окончания рекурсии

else

return n* Faktorial_R (n–1); // Рекурсивное обращение к функции

}

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

При описании алгоритмов используем следующие стандартные фигуры блок-схем:

1.2. Пример выполнения задания

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

1.2.1. Реализация задания в оконном приложении

Вид формы и полученные результаты представлены на рис. 1.1. Компонента Edit1 используется для ввода n, а компоненты Edit2 и Edit3 – для вывода результатов.

Листинг программы может иметь следующий вид:

Блок-схема функции-обработчика Button1Click представлена на рис. 1.2.

. . .

double Faktorial(int);

double Faktorial_R(int);

//--------------------- Кнопка START ---------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int n = StrToInt(Edit1->Text);

switch(RadioGroup1->ItemIndex) {

case 0:

Edit2->Text = FloatToStrF(Faktorial_R(n), ffFixed, 8, 1);

break;

case 1:

Edit3->Text = FloatToStrF(Faktorial(n), ffFixed, 8, 1);

break;

}

}

//------------------ Функция без рекурсии ---------------------------------------

double Faktorial(int n) {

double f = 1;

for (int i = 1; i <= n; i++) f *= i;

return f;

}

//------------------- Рекурсивная функция ----------------------------------------

double Faktorial_R(int n) {

if (n < 2) return 1;

else

return n*Faktorial_R(n-1);

}

Рис. 1.1

Рис. 1.2

Блок-схемы функций пользователя Faktorial_R и Faktorial представлены на рис. 1.3.

Рис. 1.3

1.2.2. Реализация задания в консольном приложении

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

#include

double Faktorial(int);

double Faktorial_R(int);

void main(void)

{

int n, kod;

while(true) { // Бесконечный цикл с выходом по default

cout << "\n\tInput n " ;

cin >> n;

cout << "\n Recurs – 0\n Simple – 1\n Else – Exit" << endl ;

cin >> kod;

switch(kod) {

case 0:

cout << "\t Recurs = " << Faktorial_R(n) << endl;

break;

case 1:

cout << "\t Simple = " << Faktorial(n) << endl;

break;

default: return;

}

}

1.3. Индивидуальные задания

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

1. Для заданного целого десятичного числа N получить его представление в p-ичной системе счисления (p < 10).

2. В упорядоченном массиве целых чисел ai (i = 1, ..., n) найти номер находящегося в массиве элемента c, используя метод двоичного поиска.

3. Найти наибольший общий делитель чисел M и N, используя теорему Эйлера: если M делится на N, то НОД (N,M) = N, иначе НОД (N,M) = (M%N, N).

4. Числа Фибоначчи определяются следующим образом: Fb(0)=0; Fb(1)=1; Fb(n) = Fb(n–1) + Fb(n–2). Определить Fb(n).

5. Найти значение функции Аккермана A(m, n), которая определяется для всех неотрицательных целых аргументов m и n следующим образом:

A(0, n) = n + 1;

A(m, 0) = A(m–1, 1); при m > 0;

A(m, n) = A(m–1, A(m, n–1)); при m > 0 и n > 0.

6. Найти методом деления отрезка пополам минимум функции f(x) = 7sin2(x) на отрезке [2, 6] с заданной точностью  (например, 0.01).

7. Вычислить значение x = , используя рекуррентную формулу xn = , в качестве начального значения использовать x0 = 0,5(1 + a).

8. Найти максимальный элемент в массиве ai (i=1, , n), используя очевидное соотношение max(a1, , an) = max[max(a1, , an–1), an].

9. Вычислить значение y(n) = .

10. Найти максимальный элемент в массиве ai (i=1, , n), используя соотношение (деления пополам) max(a1,, an) = max[max(a1,, an/2), max(an/2+1, , an)].

11. Вычислить значение y(n) = .

12. Вычислить произведение четного количества n (n  2) сомножителей следующего вида y = .

13. Вычислить y = xn по следующему правилу: y = ( xn/2 )2, если n четное и y = x yn–1, если n нечетное.

14. Вычислить значение (значение 0! = 1).

15. Вычислить y(n) = , n задает число ступеней.

16. В заданном массиве заменить все числа, граничащие с цифрой «1», нулями.

Лабораторная работа №2. Алгоритмы поиска и сортировки в массивах

Цель работы: изучить способы сортировки и поиска в массивах структур и файлах.



Похожие документы:

  1. Силлабус разработан в соответствии с рабочей программой, составленной доцентом

    Документ
    ... 12 Введение в программирование. 3 13 Основы языка Delphi. 3 14 Основы программирования в среде Delphi. 3 15 ... СПб. “Питер”. 2001 Шилина А.Л. Экспресс-курс Microsoft Excel ... Персональный компьютер. М. Фолио. 2004 Шилина А.Л. Экспресс-курс Microsoft Excel ...
  2. Сведения о содержательном обеспечении образовательного процесса

    Программа
    ... поурочные планы по учебнику О.Т. Поглазовой, В.Д. Шилина. - Волгоград: Учитель, 2007 2.Методические ... «Химия»: для 10-11 кл.сред. шкл. – ОО «АРААЛ-ПРЕСС ... Экзаменационные билеты. Курс по информатике «Основы программирования на примере Visual Basic NET ...
  3. Работа направлений смотра-конкурса

    Конкурс
    ... топографическим методом. Рук. А. А. Шилин. 9. А. М. Булаев (ИИТ-473 ... фотополимеризующихся композиций пониженной горючести на основе галогенсодержащих эпоксидных олигомеров. Рук ... ). Разработка педагогической среды «РОБОТ» для программирования на языке СИ ...
  4. Название Информационно-измерительной техники

    Документ
    ... Черных И. В. Simulink: среда создания инженерных приложений / И. ... Н. Шилин [и ... С/С++. Структурное и объектно-ориентированное программирование: практикум / Т. А. Павловская ... 20 - - Яблонский О. П. Основы стандартизации, метрологии, сертификации: учебник ...
  5. Краткий словарь литературных терминов

    Краткий словарь
    ... основы жизни. 1976 1 Ораторское искусство. 1972 1 Русский язык среди ... 1 Гегулин. Жизнь и зодчество. 1978 1 А. Шилин. Место в строю. 1978 2 Е. Дрыжакова. ... Учитесь правильно говорить. 1986 2 Мастер программирования. 1981 1 П. Куликовский. Ломоносов. ...

Другие похожие документы..