 |
Вітаю Вас, Гість · RSS |
 |
Методика викладання програмування
| |
kom_adm |
Дата: Сб, 18.08.2007, 02:24 | Повідомлення № 1 |
Ветеран спілкування
Повідомлень: 3767
| Поділ досвідом по темі Шановні форумчани!!!!! Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятись без попередження!!!
|
|
| |
Ковшун |
Дата: Чт, 08.11.2007, 19:10 | Повідомлення № 31 |
Досвідчений учасник
Повідомлень: 1462
| Quote (Newbie) а мені здається, що просто не варто вникати в глибини структур даних на першому ж занятті, програма "Hello World!" , яка працює на рожевому/зеленому екрані з блакитненькими/жовтенькими літерами, і звертається до користувача за тим іменем, яке він (вона) вводить - більш ніж досить для першої програми, яка є і простою, і красивою А Ви не змогли б дану програмку розмістити у приваті? Дуже цікаво!
|
|
| |
Newbie |
Дата: Чт, 08.11.2007, 19:25 | Повідомлення № 32 |
Хелпер
Повідомлень: 1414
| проста, навіть примітивна програмка, класика жанру 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 |
Прописаний назавжди
Повідомлень: 435
| Сам початкуючий програміст, але рано чи пізно потрібно щось робити... В школу поставили 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
| Пробачте, але розмова йде не про методику викладання, а про яку мову обирати! Якщо вже говорити відверто, то можна взагалі не використовувати ні візуальні мови, ні процедурні. Візміть УАМ (НАМ) і шуруйте скільки влізе. Спробуйте заперечити: якщо на листочку задачу не розвязано - нема чого сідати за комп (ну окрім випадків переписування з листочка готової - хоча і це є метод прикладів). Тоді з таким же успіхом можна взяти (що я і роблю) Сходинки - восьминіжка і писати різноманітні алгоритми. Там можна таке придумати, що діти самі і не додумаються як воно розвязується. Головне, це вміти мислити алг.структурами і мати певний набір методів розвязування різноманітних задач. Хотілось би почути думки з цього приводу. І пропоную перенести акценти з вибору інструментарія на те, які проблеми існують і різних темах програмування, а то ніби то одна проблема - на чому програмувати! (можна і у Екселі, якщо вже на те пішло)
|
|
| |
Newbie |
Дата: Пн, 12.11.2007, 09:29 | Повідомлення № 35 |
Хелпер
Повідомлень: 1414
| ну зрештою ніде в програмах не вказано якою мовою програмувати, тож вибір може робити кожен свій. але я не згодна, що варто вивчати НАМ, чи будь-що подібне. ми ж вчимо програмування не заради чистого програмування! а заради того, щоб навчитись вирішувати певні задачі за допомогою програмування. інформатика у школі - це практична наука, тому задачі і засоби їх вирішення повинні бути якомога більш наближеними до реальних задач, які потім доведеться вирішувати учням в житті. це моя така думка
|
|
| |
mouse |
Дата: Пн, 12.11.2007, 17:10 | Повідомлення № 36 |
Ветеран спілкування
Повідомлень: 2026
| Quote (Newbie) але я не згодна, що варто вивчати НАМ, чи будь-що подібне. А мені здається, що якщо дитина не розуміє: якщо <умова> | то <оператори> | інакше <оператори> все То про який VB, Delphi може йти мова. Бо Паскаль розуміють (по-справжньому) не багато дітей, інші просто пишуть те що вже кимось написано. Це факт. А ви кажете про практичне значення. Воно стане практичним значенням тоді і тільки тоді, коли всі базові структури глибоко засоюються і стають очевидними. Мені здається, що звичайні класи, у звичайній базовій програми далеко не всі діти в них засвоюються програмування. І причина лежить як раз у не розумінні умов, циклів тощо. 
|
|
| |
Newbie |
Дата: Пн, 12.11.2007, 17:17 | Повідомлення № 37 |
Хелпер
Повідомлень: 1414
| а чим Code якщо <умова> | то <оператори> | інакше <оператори> все відрізняється від Code if <умова> then <оператори> else<оператори> ; ? правильно, нічим. але другий запис хоч якось застосувати можна, а перший - тільки в зошиті
|
|
| |
Sasyk |
Дата: Ср, 14.11.2007, 14:23 | Повідомлення № 38 |
знаток тестуючих систем
Повідомлень: 300
| Quote (mouse) якщо <умова>| то <оператори>| інакше <оператори>все Щоб дити на розуміла, наведіть реальний приклад... якщо <мама приготувала істи> то <можна попоїсти> інакше <залишуся голодним> І сказати, що в даному блоці виконається тільки одна умова: якщо на запитання "мама приготувала істи?" можна дати відповідь "так" - виконуємо те, що стоїть після "то", якщо на запитання "мама приготувала істи?" - відповідь- "ні", то виконується те, що стоїть після "інакше"... А блок-схеми навіщо придумали? Добавлено (14.11.2007, 13:33) --------------------------------------------- Quote (Ковшун) Та не зовсім це просто! Діти до програмування повинні підходити ВЖЕ підготовленими, і все дійсно просто... Знаючи базові структури алгоритмів, вони повинні вже до самого програмування скласти КУЧУ програм через словесний спосіб подання алгоритму і блок-схеми... Не бійтеся заставляти учнів перед написанням програми, навіть ЛІНІЙНОЇ скласти блок-схему (це на перших етапах програмування не просто допоможе їм, але буде розвивати мислення щодо послідовності виконання дій, для розвязання алгоритму)... Зрозуміло що не всі діти це сприймуть Додано (14.11.2007, 14:23) --------------------------------------------- Давайте проведемо цікавий конкурс: 1 завдання: Написати програму для знаходження коренів квадратного рівняння (параметри a, b, c вводяться з клавіатури)... Ну, хто перший пропонує код програми?
|
|
| |
kom_adm |
Дата: Ср, 14.11.2007, 17:35 | Повідомлення № 39 |
Ветеран спілкування
Повідомлень: 3767
| Як найповніший варіант розв'язку, що враховує абсоллютно всі аспекти: 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
| 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 не перевірена... При такій умові не має квадратного рівняння скажете... але користувач таке може ввести... тож дану умову треба прорахувати
|
|
| |
kom_adm |
Дата: Ср, 14.11.2007, 19:33 | Повідомлення № 41 |
Ветеран спілкування
Повідомлень: 3767
| 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
| підтримую ідею розв*язування задач! така тема може допомогти вчителям-новачкам, і навіть не зовсім он я задачку про Черепашку таки не можу осилити. один варіант на форумі є, але він не універсальний.
|
|
| |
mouse |
Дата: Ср, 14.11.2007, 21:34 | Повідомлення № 43 |
Ветеран спілкування
Повідомлень: 2026
| До речі. Знайшов ось цікаву інформацію. Це до того, що Паскаль-завжди Паскаль. (тут була така думка). Без ньог на олімпіаду нікуда.... читаймо... _______________________________________________________________________ В заявках на ІІІ етап Всеукраїнської олімпіади з інформатики обов’язково дотримуватися пропорційності складу команди району (міста) для 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
| Декілька зауважень до задачі про квадратне рівняння: 1. Немає дійсних коренів у випадку d<0, це дужк суттєво. 2. Квадратне рівняння має 2 розв'язки, у випадку d=0 теж два розв'язки (оскільки рівняння квадратне) тільки вони однакові. 3. Випадок a=0 взагалі не розглядати: а) це вже не квадратне рівняння; б) читайте умову задачі. 4. Та Ви що в Pascalі використовувати Goto, це неповага до програмістів і до мови Pascal 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
| Ковальчук_Олександр, останній розвязок ідеальний... Ось це і означає, що алгоритм задовільняє всім властивостям... Наступне запитання, якій властивості не задовільняють всі попередні написані алгоритми?
|
|
| |
© Форум інформатиків України, 2007-2023.  |