WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаПедагогіка, Сценарії виховних заходів → Розвиток дослідницьких вмінь студентів в процесі вивчення програмування - Реферат

Розвиток дослідницьких вмінь студентів в процесі вивчення програмування - Реферат

Реферат на тему:

Розвиток дослідницьких вмінь студентів в процесі вивчення програмування

Навчально-пізнавальна діяльність здійснюється на різних рівнях самостійності і творчості. У зв'язку з цим, доцільно ставити питання не про активізацію навчально-пізнавальної діяльності взагалі, а про підвищення до оптимального в кожному конкретному випадку рівня активності і самостійності студентів у вирішенні певних навчальних задач.

Поступове нарощування самостійності і творчої ініціативи студентів потребує не повідомлення готових рецептів, а організацію сумісного пошуку розв'язання проблеми, не вказування на допущені помилки, а створення умов за які студенти аналізують свої дії і перевіряють одержаний результат. Таким чином процес оволодіння самостійною навчально-пізнавальною діяльністю здійснюється поетапно, сприяє розвитку дослідницьких вмінь студентів.

Основні зусилля вузівських педагогів завжди спрямовані на пошуки прийомів і способів активізації навчально-пізнавальної діяльності, які встановлюються дослідницьким шляхом. Наприклад, розглянемо, можливості розвитку дослідницьких вмінь студентів при розв'язуванні задач на обчислення скінчених сум та добутків при вивченні програмування в курсі ОІВТ.

Навчальна діяльність спрямована на розв'язання навчальних задач. Оскільки навчальна діяльність є окремим видом учбової діяльності, то очевидно, що її предметом є також учбова задача, але ця задача, як зазначають ряд авторів (А.М. Матюшкін, І.Я. Лернер, В. Оконь, Л.О. Іванова), має бути проблемною.

Задачі з розрахунку скінчених та нескінчених сум та добутків поруч з задачами щодо опрацювання масивів і задачами на аналіз текстів належать до класичних задач інформатики і входять практично в усі збірники задач. До переваг таких задач відносяться:

- стисле і змістовне формулювання умови;

- очевидна математична постановка;

- компактність реалізованого розв'язку.

Як правило, задачі з розрахунку сум та добутків розглядаються при вивченні ітерацій у курсі інформатики, рідше — при вивченні рекурентного методу обчислень. Їхнє розв'язування потребує від студентів знань, навичок і вмінь з одного питання програмного матеріалу і не передбачає широких зв'язків між різними розділами математики та інформатики. Роль і значення таких задач вичерпуються під час того нетривалого періоду, що приділяється на вивчення певного питання програми. Функція таких задач найчастіше зводиться до ілюстрації досліджуваного теоретичного матеріалу. Тому студентам неважко знайти метод розв'язання даної задачі — цей метод іноді підказується назвою розділу підручника або задачника, виучуваною темою, вказівками викладача та інше. Самостійний пошук студентом методу розв'язання тут мінімальний. При розв'язуванні задач на повторення, що потребують знання декількох тем, в студентів можуть виникнути певні труднощі, пов'язані з тим, що задачі розглядаються лише як засіб свідомого засвоєння програмного матеріалу.

Звичайно розглядається один-два варіанти розв'язування задач на обчислення скінчених та нескінчених сум та добутків, причому метою ставиться тільки пошук суми (добутку) ряду. Проте має сенс поставити додаткову умову — пошук оптимального за швидкості або обсягу пам'яті алгоритму обчислень.

Розглянемо кілька задач даного класу з варіантами їх розв'язання. Програми описуються мовою Паскаль, яка найчастіше застосовується в учбових закладах.

Задача 1.

Обчислити

Розв'язок 1.

Program Example1_1;

Var

i, j : Longint;

Pow : Longint; {чисельник}

Sum : Real; {cyмa}

{обчислення факториалу}

Function Factorial (x : Longint) : Longint;

Var

i : Longint;

F : Longint;

Begin

F := 1;

For i := 2 To x Do

F := F * i;

Factorial := F;

End;

Begin

Sum := 0;

For i := 1 To 10 Do

Begin

pow := -1;

For j := 2 To i Do

Pow := Pow * (-1);

Sum := Sum + Pow / Factorial(i);

End;

WriteLn ('Cyмa = ', Sum)

End.

Розв'язок 2.

Program Example1_2;

Var

i : Longint;

Numerator : Longint; {чисельник}

Denominator : Longint; {знаменник}

Sum : Real;

Begin

Sum : = 0 ;

Numerator := -1;

Denominator := 1;

For i := 1 To 10 Do

Begin

Sum : = Sum + Numerator / Denominator;

Numerator := -Numerators;

Denominator := Denominator * (i + 1) ;

End;

WriteLn('Cyмa = ', Sum);

End.

Розв'язок 1 являє собою розв'язок, побудований безпосередньо за умовою задачі — на кожному окремому кроці алгоритму обчислюється чисельник і знаменник наступного члена ряду і отримане значення додається до поточної суми. Такий алгоритм не можна назвати неправильним; він дає правильну відповідь на поставлене завдання. Але розв'язок 1 є вкрай неефективним алгоритмом, бо припускає значні обчислювальні затрати. Розв'язок № 2 відрізняється лише тим, що значення чисельника і знаменника обчислюється за допомогою результатів, одержаних на попередній ітерації. Результатом цього є, по-перше, значно менша кількість операцій (розв'язок 1 – О(N3), розв'язок 2 – О(N)), по-друге, більш лаконічний запис алгоритму.

Задача 2.

Дано натуральне число N. Обчислити

Розв'язок 1.

Program Example2_l;

Const

N = 1000;

Var

i : Longint;

Numerator : Longint; {чисельник}

Denominator : Longint; {знаменник}

Sum : Real; {cyмa}

Begin

Sum := 0;

Numerator := -1;

For i : = 1 To N Do

Begin

Denominator := (2*i+l) *i;

Sum := Sum + Numerator / Denominator;

Numerator := -Numerator;

End;

WriteLn('Cyмa = ', Sum);

End.

Розв'язок 2.

Program Example2_2;

Const

N = 1000;

Var

i : Longint;

Numerator : Longint; {чисельник}

Denominator : Longint; {знаменник}

Sum : Real; {сума}

Begin

Sum := 0;

Numerator := -1;

Denominator := (2*1+1) * 1;

For i : = 1 To N Do

Begin

Sum := Sum + Numerator / Denominator;

Numerator := -Numerator;

Denominator := Denominator + 4 * i + 3;

End;

WriteLn('Cyмa = ', Sum);

End.

Розв'язок 1 реалізовано так що, чисельник і знаменник обчислюються на основі попередніх значень. Такий варіант можна вважати задовільним, але, провівши деякі математичні спостереження, а саме з'ясувавши, що знаменник деякого члену ряду дорівнює

(2i+1)i = 2i2 + i,

а знаменник наступного члену ряду дорівнює

(2(i + 1) + 1)(i + 1) = 2i2 + 5i + З,

тобто відрізняється на значення (4i + 3), приходимо до розв'язку 2. Цей варіант коротший на одну операцію множення, але оскільки ця операція знаходиться в середині циклу, алгоритм стає більш заощадливий на О(N) операцій.

Задача 3.

Обчислити кінцеву суму 14 +24 +34 +...+ N4

Розв'язок 1.

Program Example3_l;

Const

N = 100;

Var

i : Longint;

Addend : Longint; {додаток}

Sum : Longint; {сума}

Begin

Sum := 0;

For i := 1 To N Do Begin

Begin

Addend := i * i * i * i;

Sum := Sum + Addend;

End;

WriteLn('Cyмa = ', Sum);

End.

Розв'язок 2.

Program Example3_2;

Const

N = 100;

Var

NA : Real;

Sum : Longint; {сума}

Begin

NA := N * N + N;

Sum := Round((NA * (2 * N +1) * (3 * NA - 1)) / 30);

WriteLn('Cyмa = ', Sum);

End.

Перший варіант розв'язку являє собою зразок майже бездоганного алгоритму розв'язування задачі, що за мінімальну кількість операцій знаходить відповідь. Але якщо провести аналіз умови, то стає зрозумілим, що шукана сума дорівнює:

,

а це дозволяє скласти алгоритм № 2, який зовсім не містить циклу і кількість операцій в якому порядку О(1). Іншими словами, процес розв'язування задачі втратив ітеративний характер обчислень. Необхідно звернути увагу також на те, що введення допоміжної змінної NА дозволило додатково зменшити кількість операцій ще на дві. В задачах такого типу введення додаткових змінних можна вважати раціональним, якщо це призводить до будь-якого прискорення обчислень.

Задача 4.

Обчислити cos x у вигляді розкладу – нескінченного добутку

з точністю 10-4

Розв'язок 1.

Program Example4_1;

Const

ETHA = 1.0Е – 4; {точність}

X = 0.5; {параметр}

Var

N : Longint;

Factor : Real; {множник}

Product : Real; {добуток}

ProductNext : Real; {добуток на наступному кроці}

Begin

ProductNext :=1;

N := 1;

Repeat

Product := ProductNext;

Factor := 1 - (4 * X * X) / ((2 * N – 1) * (2 * N – 1)*Pi * Pi);

ProductNext := ProductNext * Factor;

Inc(N) ;

Until Abs(ProductNext - Product) < ETHA;

WriteLn ( 'Результат = ', ProductNext);

End.

Розв'язок 2.

Program Example4_2;

Const

ETHA = l.OE-4; {точність}

X = 0.5; {параметр}

Pi2 = Pi * Pi; {постійні частини множника}

TX = 4 * X * X;

Var

N : Longing;

Factor : Real; {множник}

Product : Real; {добуток}

ProductNext : Real; {добуток на наступному кроці}

FN : Real;

Begin

ProductNext := 1;

FN := 1;

N := 1;

Repeat

Product := ProductNext;

Factor := 1 - TX / (FN * Pi2);

ProductNext := ProductNext * Factor;

FN := FN + 8 * N;

Inc(N) ;

Until Abs(ProductNext - Product) < ETHA;

Writeln('Результат = ',ProductNext);

End.

Другий розв'язок відрізняється від першого тим, що обчислення постійних множників винесено за межі циклу, і в окрему змінну FN відокремлено множник (2N - 1)2, що дало змогу скоротити обчислення за рахунок наступних перетворень:

(2(N+ 1) - 1)2 = (2N+ 1)2 = (2N2 + 4N+ 1) = (2N - 1)2 + 8N,

тобто наступне значення змінної FN відрізняється від попереднього на 8N.

Отже, при розгляді задач з інформатики на обчислення скінчених і нескінчених сум і добутків доцільно ввести додаткові вимоги до алгоритму розв'язування, що надасть змогу поглибити дослідницькі вміння студентів. Аналітичне розв'язування таких задач може призвести до більш стислих алгоритмів з меншим числом операцій. При цьому можна використовувати наступні прийоми складання алгоритмів:

- використання результатів, здобутих на попередній ітерації;

- винесення сталих за межі ітеративних обчислень;

- введення додаткових змінних.

Література.

  1. Трушин О.В. Збірник екзаменаційних задач. – Уфимский державний авіатехнічний університет.

  2. Широчин В. П. Моделювання на ЕОМ. Конспект лекцій для студентів спеціальностей 22. 01 "Обчислювальні машини, комплекси, системи і мережі" всіх форм навчання. – К.: КПІ, 1994. – 64 с.

Loading...

 
 

Цікаве