Нд, 31.05.2020, 03:52
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

 
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Модератор форуму: Ktara, НІКОЛЯ, Bandalak, volevikt  
Форум інформатиків » РОЗДІЛ ІІІ: МЕТОДИКА, ЗАСОБИ ВИКЛАДАННЯ ІНФОРМАТИКИ » 3.3 Методика викладання інформатики в старшій школі (10-11 кл.) » Методика викладання програмування
Методика викладання програмування
kom_adm Дата: Сб, 18.08.2007, 02:24 | Повідомлення № 1
Ветеран спілкування
Повідомлень: 3745
Нагороди: 19
Рейтинг: 217
Поділ досвідом по темі

Шановні форумчани!!!!!
Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятись без попередження!!!

Ковшун Дата: Чт, 08.11.2007, 19:10 | Повідомлення № 31
Досвідчений учасник
Повідомлень: 1462
Нагороди: 1
Рейтинг: 25
Quote (Newbie)
а мені здається, що просто
не варто вникати в глибини структур даних на першому ж занятті, програма "Hello World!" , яка працює на рожевому/зеленому екрані з блакитненькими/жовтенькими літерами, і звертається до користувача за тим іменем, яке він (вона) вводить - більш ніж досить для першої програми, яка є і простою, і красивою

А Ви не змогли б дану програмку розмістити у приваті?
Дуже цікаво!
Newbie Дата: Чт, 08.11.2007, 19:25 | Повідомлення № 32
Хелпер
Повідомлень: 1414
Нагороди: 9
Рейтинг: 91
проста, навіть примітивна програмка, класика жанру smile
Code
program HelloWorld;
uses crt;
var a:string;
begin
textbackground(red);
clrscr;
textcolor(green);
write('What is your name? ');
readln(a);
writeln('Hello ', a, ' It*s very nice to meet you!');
writeln ('Hope we*ll be friends!!');
readln;
end.

В Паскалі навіть не пробую використовувати укр.мову - менше плутанини, нема спокуси написати українські літери а,с,о і т.д.
sergey1979 Дата: Сб, 10.11.2007, 07:34 | Повідомлення № 33
Прописаний назавжди
Повідомлень: 434
Нагороди: 3
Рейтинг: 33
Сам початкуючий програміст, але рано чи пізно потрібно щось робити...
В школу поставили Borland Studio 2006. Спочатку примітивно попрацював з учнями 11 класу з ООП (розставляли кнопочки, лейбочки тощо - примітивненьки програмки штампували). Але здогадувався, що прийде час (олімпіад) ї когось прийдеться послати вирішувати ще й задачки за допомогою Паскаля. Щоб дійсно не лякати їх вікном DOS'а (хоча скоріше їх вже нічим не злякаєш ), використовую для складання консоль Delphi - переваги редактора з IDE Studio, а результати як в TP7. Ще й з ліцензією no problem.


Відредаговано: sergey1979 - Сб, 10.11.2007, 07:35
mouse Дата: Пн, 12.11.2007, 00:58 | Повідомлення № 34
Ветеран спілкування
Повідомлень: 2026
Нагороди: 4
Рейтинг: 62
Пробачте, але розмова йде не про методику викладання, а про яку мову обирати!
Якщо вже говорити відверто, то можна взагалі не використовувати ні візуальні мови, ні процедурні. Візміть УАМ (НАМ) і шуруйте скільки влізе.
Спробуйте заперечити: якщо на листочку задачу не розвязано - нема чого сідати за комп (ну окрім випадків переписування з листочка готової - хоча і це є метод прикладів).
Тоді з таким же успіхом можна взяти (що я і роблю) Сходинки - восьминіжка і писати різноманітні алгоритми. Там можна таке придумати, що діти самі і не додумаються як воно розвязується. Головне, це вміти мислити алг.структурами і мати певний набір методів розвязування різноманітних задач.
Хотілось би почути думки з цього приводу.
І пропоную перенести акценти з вибору інструментарія на те, які проблеми існують і різних темах програмування, а то ніби то одна проблема - на чому програмувати! (можна і у Екселі, якщо вже на те пішло) biggrin
Newbie Дата: Пн, 12.11.2007, 09:29 | Повідомлення № 35
Хелпер
Повідомлень: 1414
Нагороди: 9
Рейтинг: 91
ну зрештою ніде в програмах не вказано якою мовою програмувати, тож вибір може робити кожен свій.
але я не згодна, що варто вивчати НАМ, чи будь-що подібне.
ми ж вчимо програмування не заради чистого програмування! а заради того, щоб навчитись вирішувати певні задачі за допомогою програмування. інформатика у школі - це практична наука, тому задачі і засоби їх вирішення повинні бути якомога більш наближеними до реальних задач, які потім доведеться вирішувати учням в житті.
це моя така думка wink
mouse Дата: Пн, 12.11.2007, 17:10 | Повідомлення № 36
Ветеран спілкування
Повідомлень: 2026
Нагороди: 4
Рейтинг: 62
Quote (Newbie)
але я не згодна, що варто вивчати НАМ, чи будь-що подібне.

А мені здається, що якщо дитина не розуміє:

якщо <умова>
| то <оператори>
| інакше <оператори>
все

То про який VB, Delphi може йти мова. Бо Паскаль розуміють (по-справжньому) не багато дітей, інші просто пишуть те що вже кимось написано. Це факт. А ви кажете про практичне значення. Воно стане практичним значенням тоді і тільки тоді, коли всі базові структури глибоко засоюються і стають очевидними. Мені здається, що звичайні класи, у звичайній базовій програми далеко не всі діти в них засвоюються програмування. І причина лежить як раз у не розумінні умов, циклів тощо.
cry

Newbie Дата: Пн, 12.11.2007, 17:17 | Повідомлення № 37
Хелпер
Повідомлень: 1414
Нагороди: 9
Рейтинг: 91
а чим
Code
якщо <умова>  
| то <оператори>  
| інакше <оператори>  
все  

відрізняється від
Code
if <умова>  
  then <оператори>  
   else<оператори> ;
?
правильно, нічим. але другий запис хоч якось застосувати можна, а перший - тільки в зошиті
Sasyk Дата: Ср, 14.11.2007, 14:23 | Повідомлення № 38
знаток тестуючих систем
Повідомлень: 300
Нагороди: 0
Рейтинг: 9
Quote (mouse)
якщо <умова>| то <оператори>| інакше <оператори>все

Щоб дити на розуміла, наведіть реальний приклад...
якщо <мама приготувала істи> то <можна попоїсти> інакше <залишуся голодним>
І сказати, що в даному блоці виконається тільки одна умова: якщо на запитання "мама приготувала істи?" можна дати відповідь "так" - виконуємо те, що стоїть після "то", якщо на запитання "мама приготувала істи?" - відповідь- "ні", то виконується те, що стоїть після "інакше"...
А блок-схеми навіщо придумали?

Добавлено (14.11.2007, 13:33)
---------------------------------------------

Quote (Ковшун)
Та не зовсім це просто!

Діти до програмування повинні підходити ВЖЕ підготовленими, і все дійсно просто... Знаючи базові структури алгоритмів, вони повинні вже до самого програмування скласти КУЧУ програм через словесний спосіб подання алгоритму і блок-схеми...
Не бійтеся заставляти учнів перед написанням програми, навіть ЛІНІЙНОЇ скласти блок-схему (це на перших етапах програмування не просто допоможе їм, але буде розвивати мислення щодо послідовності виконання дій, для розвязання алгоритму)...
Зрозуміло що не всі діти це сприймуть sad

Додано (14.11.2007, 14:23)
---------------------------------------------
Давайте проведемо цікавий конкурс:
1 завдання: Написати програму для знаходження коренів квадратного рівняння (параметри a, b, c вводяться з клавіатури)...
Ну, хто перший пропонує код програми?

kom_adm Дата: Ср, 14.11.2007, 17:35 | Повідомлення № 39
Ветеран спілкування
Повідомлень: 3745
Нагороди: 19
Рейтинг: 217
Як найповніший варіант розв'язку, що враховує абсоллютно всі аспекти:
Code
    program kwur;
  label 10,20,30;
  var a,b,c,d,x1,x2 : real;
  begin
    writeln( ‘ Програма розв’’язує квадратнi рiвняння! ’);
    writeln(‘ Загальний вигляд квадратного рiвняння: ’);
    writeln( ‘        Ax*x + B*x + C = 0 ’);
    writeln( ‘ Введiть коефiцiєнти: ’);
    10: write( ‘A = ’);readln(a);
        if a = 0 then begin
                        writeln( ‘Цей випадок роз’’вяжiть самi. ’);
                        goto 10;
                      end;
    20: write( ‘B = ’);readln(b);
        if b = 0 then begin
                        writeln( ‘ Цей випадок розв’’яжiть самi. ’);
                        goto 20;
                      end;
    30: write( ‘C = ’);readln(c);
        if c = 0 then begin
                        writeln( ‘ Цей випадок розв’’яжiть самi. ’);
                        goto 30;
                      end;
    d := b*b - 4*a*c;
    if d > 0 then begin
                    writeln( ‘ Рiвняння має два коренi: ’);
                    x1 := (-b-sqrt(d))/(2*a);
                    x2 := (-b+sqrt(d))/(2*a);
                    writeln( ‘x1 = ’,x1:2:2, ‘  x2 = ’,x2:2:2);
                  end
    else if d = 0 then begin
                         writeln( ‘ Рiвняння має один корiнь: ’);
                         x1 := -b/(2*a);
                         writeln( ‘x = ’,x1:2:2);
                       end
         else writeln( ‘ Дане рiвняння коренiв не має. ’);
    readln;
  end.

Можна і більш скорочено:
Quote
program kwur;
var a,b,c,d,x1,x2 : real;
begin
writeln( ‘ Введiть коефіцієнти квадратного рівняння: ’);
write( ‘A = ’);readln(a);
write( ‘B = ’);readln(b);
write( ‘C = ’);readln©;
d := b*b - 4*a*c;
if d > 0 then begin
writeln( ‘ Рiвняння має два коренi: ’);
x1 := (-b-sqrt(d))/(2*a);
x2 := (-b+sqrt(d))/(2*a);
writeln( ‘x1 = ’,x1:2:2, ‘ x2 = ’,x2:2:2);
end
else if d = 0 then begin
writeln( ‘ Рiвняння має один корiнь: ’);
x1 := -b/(2*a);
writeln( ‘x = ’,x1:2:2);
end
else writeln( ‘ Дане рiвняння коренiв не має. ’);
readln;
end.

Можна і ще коротше. А можна взагалі реалізувати програмку так, щоб у випадку, коли коренів немає, програма пропонувала ввести коефіцієнти заново:
Code

program kwur;
  Label 1,2;
  var a,b,c,d,x1,x2 : real;
  begin   
    1: writeln( ' Введiть коефіцієнти квадратного рівняння: ');
  write( 'A = ');readln(a);       
  write( 'B = ');readln(b);
  write( 'C = ');readln(c);
  d := b*b - 4*a*c;
    if d > 0 then begin
                    writeln( ' Рiвняння має два коренi: ');
                    x1 := (-b-sqrt(d))/(2*a);
                    x2 := (-b+sqrt(d))/(2*a);
                    writeln( 'x1 = ',x1:2:2, '  x2 = ',x2:2:2);Goto 2;
                  end
    else if d = 0 then begin
                         writeln( ' Рiвняння має один корiнь: ');Goto 2;
                         x1 := -b/(2*a);
                         writeln( 'x = ',x1:2:2);
                       end
         else writeln( ' Дане рiвняння коренiв не має. Спробуйте ввести інші значення коефіцієнтів.');
  Goto 1;
    2: readln;
  end.

І ще кілька варіантів є для реалізації даної програми. А взагалі ідея пана Sasyk дуже хороша. Для цього потрібно мабуть відкривати нову тему, в якій хтось пише умову цікавої задачі (не обов'язково дуже складної) бажано шкільного рівня, а інші намагаються методично правильно її розв'язати. До речі, як ви ставитесь до таких розв'язків?
Sasyk Дата: Ср, 14.11.2007, 18:02 | Повідомлення № 40
знаток тестуючих систем
Повідомлень: 300
Нагороди: 0
Рейтинг: 9
Quote (Ковальчук_Олександр)
program kwur;var a,b,c,d,x1,x2 : real;beginwriteln( ‘ Введiть коефіцієнти квадратного рівняння: ’);write( ‘A = ’);readln(a);write( ‘B = ’);readln(b);write( ‘C = ’);readln©;d := b*b - 4*a*c;if d > 0 then beginwriteln( ‘ Рiвняння має два коренi: ’);x1 := (-b-sqrt(d))/(2*a);x2 := (-b+sqrt(d))/(2*a);writeln( ‘x1 = ’,x1:2:2, ‘ x2 = ’,x2:2:2);endelse if d = 0 then beginwriteln( ‘ Рiвняння має один корiнь: ’);x1 := -b/(2*a);writeln( ‘x = ’,x1:2:2);endelse writeln( ‘ Дане рiвняння коренiв не має. ’);readln;end.

А якщо а=0?

Добавлено (14.11.2007, 18:02)
---------------------------------------------

Quote (Ковальчук_Олександр)
program kwur;Label 1,2;var a,b,c,d,x1,x2 : real;begin1: writeln( ' Введiть коефіцієнти квадратного рівняння: ');write( 'A = ');readln(a);write( 'B = ');readln(b);write( 'C = ');readln©;d := b*b - 4*a*c;if d > 0 then beginwriteln( ' Рiвняння має два коренi: ');x1 := (-b-sqrt(d))/(2*a);x2 := (-b+sqrt(d))/(2*a);writeln( 'x1 = ',x1:2:2, 'x2 = ',x2:2:2);Goto 2;endelse if d = 0 then begin writeln( ' Рiвняння має один корiнь: ');Goto 2; x1 := -b/(2*a); writeln( 'x = ',x1:2:2); end else writeln( ' Дане рiвняння коренiв не має. Спробуйте ввести інші значення коефіцієнтів.');Goto 1;2: readln;end.

Quote (Ковальчук_Олександр)
program kwur;label 10,20,30;var a,b,c,d,x1,x2 : real;beginwriteln( ‘ Програма розв’’язує квадратнi рiвняння! ’);writeln(‘ Загальний вигляд квадратного рiвняння: ’);writeln( ‘Ax*x + B*x + C = 0 ’);writeln( ‘ Введiть коефiцiєнти: ’);10: write( ‘A = ’);readln(a);if a = 0 then beginwriteln( ‘Цей випадок роз’’вяжiть самi. ’);goto 10;end;20: write( ‘B = ’);readln(b);if b = 0 then beginwriteln( ‘ Цей випадок розв’’яжiть самi. ’);goto 20;end;30: write( ‘C = ’);readln©;if c = 0 then beginwriteln( ‘ Цей випадок розв’’яжiть самi. ’);goto 30;end;d := b*b - 4*a*c;if d > 0 then beginwriteln( ‘ Рiвняння має два коренi: ’);x1 := (-b-sqrt(d))/(2*a);x2 := (-b+sqrt(d))/(2*a);writeln( ‘x1 = ’,x1:2:2, ‘x2 = ’,x2:2:2);endelse if d = 0 then begin writeln( ‘ Рiвняння має один корiнь: ’); x1 := -b/(2*a); writeln( ‘x = ’,x1:2:2); end else writeln( ‘ Дане рiвняння коренiв не має. ’);readln;end.

Мітки бажано не використовувати...
Отже виходить, що умова а=0 не перевірена... При такій умові не має квадратного рівняння скажете... але користувач таке може ввести... тож дану умову треба прорахувати wacko
kom_adm Дата: Ср, 14.11.2007, 19:33 | Повідомлення № 41
Ветеран спілкування
Повідомлень: 3745
Нагороди: 19
Рейтинг: 217
Quote (Sasyk)
А якщо а=0?

Code
program kwur;   
   var a,b,c,d,x1,x2 : real;
   begin    
     writeln( ' Введiть коефіцієнти квадратного рівняння: ');
   write( 'A = ');readln(a);        
   write( 'B = ');readln(b);
   write( 'C = ');readln(c);
   d := b*b - 4*a*c;
   if a=0 then  writeln( ' Це неповне квадратне рівняння, розвяжіть його самостійно')
   else   
     if d > 0 then begin
                     writeln( ' Рiвняння має два коренi: ');
                     x1 := (-b-sqrt(d))/(2*a);
                     x2 := (-b+sqrt(d))/(2*a);
                     writeln( 'x1 = ',x1:2:2, '  x2 = ',x2:2:2);
                   end
     else if d = 0 then begin
                          writeln( ' Рiвняння має один корiнь: ');
                          x1 := -b/(2*a);
                          writeln( 'x = ',x1:2:2);
                        end
          else writeln( ' Дане рiвняння коренiв не має. Спробуйте ввести інші значення коефіцієнтів.');
     readln;
   end.

або
Code

program kwur;   
   var a,b,c,d,x1,x2 : real;
   begin    
     writeln( ' Введiть коефіцієнти квадратного рівняння: ');
   write( 'A = ');readln(a);        
   write( 'B = ');readln(b);
   write( 'C = ');readln(c);
   d := b*b - 4*a*c;
   if a=0 then    
   begin
   write( ' Це неповне квадратне рівняння. Воно має 1 корінь: ');
   write((-(c/b)):2:2)
   end
   else   
     if d > 0 then begin
                     writeln( ' Рiвняння має два коренi: ');
                     x1 := (-b-sqrt(d))/(2*a);
                     x2 := (-b+sqrt(d))/(2*a);
                     writeln( 'x1 = ',x1:2:2, '  x2 = ',x2:2:2);
                   end
     else if d = 0 then begin
                          writeln( ' Рiвняння має один корiнь: ');
                          x1 := -b/(2*a);
                          writeln( 'x = ',x1:2:2);
                        end
          else writeln( ' Дане рiвняння не має дійсних коренів. Спробуйте ввести інші значення коефіцієнтів.');
     readln;
   end.

Сподіваюсь остання програма враховує все.
Newbie Дата: Ср, 14.11.2007, 20:35 | Повідомлення № 42
Хелпер
Повідомлень: 1414
Нагороди: 9
Рейтинг: 91
підтримую ідею розв*язування задач!
така тема може допомогти вчителям-новачкам, і навіть не зовсім
он я задачку про Черепашку таки не можу осилити. один варіант на форумі є, але він не універсальний.
mouse Дата: Ср, 14.11.2007, 21:34 | Повідомлення № 43
Ветеран спілкування
Повідомлень: 2026
Нагороди: 4
Рейтинг: 62
До речі. Знайшов ось цікаву інформацію. Це до того, що Паскаль-завжди Паскаль. (тут була така думка). Без ньог на олімпіаду нікуда.... читаймо...

_______________________________________________________________________

В заявках на ІІІ етап Всеукраїнської олімпіади з інформатики обов’язково дотримуватися пропорційності складу команди району (міста) для 9-11 класів, обов’язково вказувати мову програмування та її версію. При рівних кількості балів та рівні робіт учасників перевагу при формуванні районної (міської) команди бажано віддавати учням 9-10 класів. Увага: рішенням журі ІІІ (обласного) етапу Всеукраїнської олімпіади з інформатики, на ІІІ етапі для виконання завдань будуть запропоновані такі інструментальні середовища: Borland Pascal 7.0, Free Pascal 2.0.0, Borland C++ 3.1, Borland Delphi 6.0, Microsoft Visual C++ 6 (або пізніші версії цих продуктів).
Звітну документацію про проведення ІІ етапу олімпіади з інформатики оформити згідно встановленої форми та надіслати до ЗОІППО до 20 грудня 2007 р.
Додаткову інформацію можна отримати в кабінеті інформатики ЗОІППО. За довідками звертатися за телефоном: (0612) 34-82-12 Чернікова Людмила Антонівна, Федько Олексій Миколайович. (www.ciit.zp.ua, E-mail: zoippo@mail.ru )

___________________________________________________________________________

Виходячи з цього - паскаль, делфі, с++ в будь-якій формі мають право на життя.
Останнім часом мені імпоную мова С++. Можна писати філігранні коди і отримувати насолоду від того, що 5-6 рядків розв'язують олімпіадну задачу...

KulAlex Дата: Чт, 15.11.2007, 06:42 | Повідомлення № 44
Знаток програмування
Повідомлень: 326
Нагороди: 6
Рейтинг: 19
Декілька зауважень до задачі про квадратне рівняння:
1. Немає дійсних коренів у випадку d<0, це дужк суттєво.
2. Квадратне рівняння має 2 розв'язки, у випадку d=0 теж два розв'язки (оскільки рівняння квадратне) тільки вони однакові.
3. Випадок a=0 взагалі не розглядати:
а) це вже не квадратне рівняння;
б) читайте умову задачі.
4. angry Та Ви що в Pascalі використовувати Goto, це неповага до програмістів і до мови Pascal angry
5. Свій варіант

var a,b,c,d,x1,x2:real;
begin
readln(a,b,c);
d:=sqr(b)-4*a*c;
if d<0 then writeln('дійсних розвязків немає')
else
begin
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
writeln(x1,x2)
end
end.

Добавлено (15.11.2007, 06:42)
---------------------------------------------
6. З точки зору компілятора sqr(b) виконується швидше ніж b*b

Sasyk Дата: Чт, 15.11.2007, 08:41 | Повідомлення № 45
знаток тестуючих систем
Повідомлень: 300
Нагороди: 0
Рейтинг: 9
Ковальчук_Олександр, останній розвязок ідеальний... Ось це і означає, що алгоритм задовільняє всім властивостям...
Наступне запитання, якій властивості не задовільняють всі попередні написані алгоритми?
Форум інформатиків » РОЗДІЛ ІІІ: МЕТОДИКА, ЗАСОБИ ВИКЛАДАННЯ ІНФОРМАТИКИ » 3.3 Методика викладання інформатики в старшій школі (10-11 кл.) » Методика викладання програмування
Пошук:


© Форум інформатиків України, 2007-2020.