Використання нетрадиційних задач казкового типу з елементами гумору при вивченні основ програмування в 8-10 класах загальноосвітньої школи в середовищі Pascal. При вирішенні таких казкових розвивальних завдань в дитини знімається своєрідний психологічний бар'єр щодо подібних із суто математичною моделлю. Адже в казці все і завжди легко вирішується, при цьому герої знайомих та улюблених з дитинства казок постають у вигляді нових даних з гумором та новим змістом. Пройшовши тренінг на розвивальних казкових задачах, школярі в подальшій роботі з теми зможуть легко впоратися з більш складними та формальними. При цьому матеріал теми засвоюється ніби «граючи» і не втрачається зацікавленість учнів. З метою закріплення теми по її закінченні, учням пропонуємо розробити свою нетрадиційну казкову розвивальну задачу за результатами вивченого.
Самарська М. В.,
Практичний психолог і вчитель інформатики
Білозерської загальноосвітньої школи І-ІІІ ступенів № 18
Добропільської міської ради Донецької області
Використання розвивальної казкотерапії при вивченні основ програмування в загальноосвітній школі
Із курсу літератури нам відомо, що казка — один із фольклорних жанрів. На Сході здатність казки позитивно впливати на психічний, розумовий та емоційний стани людини була помічена лікарями й використовувалася свідомо. Один із найвідоміших прикладів такого використання — історія Шахерезади із серії арабських казок «Тисяча і одна ніч». Казкотерапія — це система передачі життєвого досвіду, розвитку соціальної чутливості, мислення, інтуїції і творчих здібностей. Цілющі властивості казки було покладено в основу цілого напряму сучасної психотерапії, названого казкотерапією. Існують, наприклад, у Санкт-Петербурзі, інститути казкотерапії, в яких можна організувати творчі корекційні розвивальні заняття для дітей, а також курси підвищення кваліфікації для дорослих.
У казці можна знайти повний перелік людських проблем і образні способи їх розв’язання. Слухаючи казки в дитинстві, людина поповнює у підсвідомості банк життєвих ситуацій. Цей банк за необхідності може бути активізований, якщо ні — так і залишиться пасивним. Казка поєднує дорослого й дитину. Мова казки, звісно, зближує. Казка інформативніша, ніж звичайна стисла мова. Вона не видає свої положення за щось серйозніше, ніж символи, метафори чи аналогії. Казка розвиває увагу, сприйняття, мислення та уяву дитини, а дорослого повертає у дитинство.
В практиці роботи з обдарованими учнями при вивченні інформатики ми часто використовуємо розвивальну казку з гумором. Так, кожен розділ курсу програмування (наприклад, лінійні, розгалужені, циклічні алгоритми тощо) починаємо саме з розгляду нетрадиційних задач казкового типу з елементами гумору. Такі задачі дуже зацікавлюють учнів, активізують їх пізнавальну активність та дозволяють у вигляді гри набувати перших навичок при розв’язуванні подібних завдань. Наприклад, при вивченні теми «Лінійні програми», розглядаємо задачі про Курочку Рябу та царицю Несміяну.
1. Курочка Ряба знесла яєчко, а Мишка взяла і розбила його. Після цього Ряба знесла три яєчка, але Мишка знову їх розбила. Ряба піднатужилася і знесла п’ять яєчок , але безсовісна Мишка розтрощила і ці яєчка. Так продовжувалося п’ять разів, поки Ряба не здалася. Із скількох яєць Дід і Баба змогли б зробити собі яєчню?
Program Riaba;
var x: integer;
begin
x:=1;
x:=x+2;
x:=x+2;
x:=x+2;
x:=x+2;
x:=x+2;
writeln(‘Ряба знесла ’,x:3,’ яєчок’);
readln;
end.
2. У цариці Несміяни кругле обличчя, радіус якого r . Визначіть, яку сторону повинно мати квадратне дзеркало, щоб коли Несміяна милується собою, її відображення поміщалося у дзеркалі.
Program Nesmeiana;
var r: real;
begin
writeln(‘Задайте радіус обличчя Несміяни’);
readln(r);
r:= 2* r;
writeln(‘Сторона дзеркала - ’, r:0:2);
readln;
end.
При вивченні теми «Розгалужені програми» розглядаємо задачку про Змія Горинича та про Чебурашку.
Program vitamin;
var a,b,c,x,y: real;
begin
writeln(‘Вкажіть x i y’);
readln(x,y);
a:=x*0.00005;
b:=y*0.2;
if (a>=10) and (a<=15) or (b>20) then writeln (‘Змій Горинич одужав’) else
begin
с:=20-b;
writeln(‘ Змію Гориничу не вистачило для ’);
writeln(‘одужання трохи більше, ніж ’);
writeln(c:0:2, ‘ літрів чаю.‘);
end;
readln;
end.
Program kulumu;
Var a,b,c,h,d,k,s: integer;
begin
writeln(‘Вкажіть розміри прямокутної кімнати’);
readln(a,b);
writeln(‘Вкажіть сторону квадратного килима’);
readln(c);
if (a<c) or (b<c) then writeln (‘Розміри килима завеликі для даної кімнати’) else
begin
h:=a div c;
d:= b div c;
k:=d*h;
s:=a*b-sqr(c)*k;
writeln(‘Ненакрита площа – ’,s:5, ‘ ,килимів – ’,k:3);
end;
readln;
end.
Циклічні програми вивчаємо на прикладі завдань про Василину Премудру.
Program Vasilina1;
var n,m,k,i: integer;
begin
writeln(‘Скільки спочатку було скринь у Чахлика’);
readln(n);
writeln(‘По скільки скринь додається кожного року?’);
readln(m);
writeln(‘Скільки скринь хоче мати Василина?’);
readln(k);
i:=0;
while n<k do
begin
n:=n+m;
i:=i+1;
end;
writeln(‘Василина вийде заміж у ’, (i+18),‘ років’);
readln;
end.
Program Vasilina2;
var V,G,N,SG,SV,i: integer;
begin
writeln(‘Вкажіть на якому ході Змій Горинич з’їв Василину’);
readln(N);
V:=3;
G:=5;
SV:=V;
SG:=G;
for i:=2 to N-1 do
begin
V:=V+6;
G:=G*2;
SV:=SV+V;
SG:=SG+G;
end;
SG:=SG+SV;
writeln(‘Гра закінчилася перемогою Горинича у ’, SG,‘ шашок’);
readln;
end.
При вирішенні таких казкових розвивальних завдань в дитини знімається своєрідний психологічний бар’єр щодо подібних із суто математичною моделлю. Адже в казці все і завжди легко вирішується, при цьому герої знайомих та улюблених з дитинства казок постають у вигляді нових даних з гумором та новим змістом. Пройшовши тренінг на розвивальних казкових задачах, школярі в подальшій роботі з теми зможуть легко впоратися з більш складними та формальними. При цьому матеріал теми засвоюється ніби «граючи» і не втрачається зацікавленість учнів. З метою закріплення теми по її закінченні, учням пропонуємо розробити свою нетрадиційну казкову розвивальну задачу за результатами вивченого. Під час тижня інформатики школярі презентують свої казкові завдання. Приклади таких завдань(див. Додаток)
Психологічна мета казкотерапії — перетворити негативні образи на позитивні. Спокійний стан нервової системи повертає людині здоров’я.
У казках людина бачить не реальний світ, а те враження, яке він на неї справляє, тобто свій внутрішній стан. Щоб описати його, дитина шукає у зовнішньому світі аналогії і, оперуючи ними, створює образи, повідомляючи при цьому про свій внутрішній стан. Це називається метафорою. Саме мовою метафор говорить наша психіка, а точніше — права півкуля головного мозку. Вчені вважають, що ця частина мозку відповідає і за наше здоров’я. Отже, тривала психологічна напруга, викликана страхом невирішення складної задачі, призводить до дисбалансу в організмі дитини, а це, у свою чергу, викликає тривогу, небажання вивчати саму дисципліну, навіть нездужання. Все, що викликає нездужання, записане у правій півкулі мозку у вигляді почуття. Мова правої півкулі (тобто мова метафор і аналогій) не лише створює нові картини, а й змальовує і трансформує нові гарні образи.
При роботі з учнями на уроках інформатики з використанням казкових розвивальних завдань, заглиблюючись у казку, діти розкривають свій інтелектуальний потенціал й накопичують сили для його реалізації. Таким чином, організується творча діяльність учнів, яка сприяє їх самовдосконаленню. В цій діяльності формуються інтереси, здібності, позитивні сторони Я-концепції, відбувається самороскриття особистості. В результаті чого дитина переконується у своїх можливостях:
Я можу!
Я здатна!
Я потрібна!
Я вільна!
Я обираю!
Я оцінюю!
Я створюю!
Додаток
Календар від Мальвіни
В своїй ляльковій лісовій школі Мальвина вирішила встановити на комп’ютері програму, яка б за номером місяця визначала його назву та пору року, до якої він відноситься.
Допоможіть Мальвіні.
Рішення
Program kalendar;
var a,b : array [1..12] of string;
i,l : longint;
begin
write('введите номер месяца : ');readln(l);
if (l>12)or(l<1)then halt;
b[1]:='зима'; b[3]:='весна'; b[6]:='літо'; b[9]:='осінь';
b[2]:='зима'; b[4]:='весна'; b[7]:='літо'; b[10]:='осінь';
b[12]:='зима'; b[5]:='весна'; b[8]:='літо'; b[11]:='осінь';
a[1]:='січень'; a[7]:='липень';
a[2]:='лютий'; a[8]:='серпень';
a[3]:='березень'; a[9]:='вересень';
a[4]:='квітень'; a[10]:='жовтень';
a[5]:='травень'; a[11]:='листопад';
a[6]:='червень'; a[12]:='грудень';
writeln(' місяць: ',a[l]);
write('пора року: ',b[l]);
readln;
end.
if d=e then write('Так')
else write('Ні');
readln;
end.
Охорона Князя Гвидона
На острові Буяні князь Гвидон для особистої охорони з 33 богатирів вирішив вибрати трьох. Скількома способами він може це зробити?
Рішення
Program vidbir;
var k, i1, i2, i3, i4, i5, fl: longint;
mm:array[1..3]of longint;
begin
clrscr;
for i1:=1 to 33 do
for i2:=1 to 33 do
for i3:=1 to 33 do
begin
mm[1]:=i3;
mm[2]:=i2;
mm[3]:=i1;
fl:=0;
for i4:=1 to 2 do
for i5:=i4+1 to 3 do
if mm[i4]=mm[i5] then fl:=1;
if fl=0 then begin writeln(i3,',',i2,',',i1); inc(k); end;
end;
write(' кількість способів: ', k);
readln;
end.
Скринька для Білосніжки
Для Білосніжки гномики виготовили скриньку, яка має форму куба, купили чотири фарби та вирішили її розмалювати. Скількома різними способами можна розфарбувати грані скриньки в чотири кольори?
Рішення
Program podarok;
var n, a, b, c, d, e, f, m : longint;
begin
for a:=1 to 4 do
for b:=1 to 4 do
begin
for c:=1 to 4 do
for d:=1 to 4 do
for e:=1 to 4 do
for f:=1 to 4 do
begin
m:=a*100000+b*10000+c*1000+d*100+e*10+f;
n:=n+1; write(' ', m);
end;
readln;
end;
writeln(''); write(' кількість способів: ', n);
readln;
end.
Телеграма для тата Карло
Буратіно потрапив в незнайоме місто. Маючи k золотих він прийшов на телеграф і вирішив послати татові Карло телеграму. За введеним текстом телеграми a та вартістю одного слова c з’ясуйте питання – чи вистачить в Буратіно коштів на цю поштову операцію? (При вводі текста коми познач. словом КОМ, крапки - словом КР, інших знаків не використовувати)
Рішення
Program Buratino;
var a : string;
k,i,s,c : longint;
begin
write('Введіть текст телеграми'); readln(a);
write('Вартість одного слова '); readln(c);
write('Введіть кількість золотих, які має Буратіно'); readln (k);
s:=0;
repeat;
for i:=1 to length(a) do
if (a[i]=' ') or (a[i]+a[i+1]+a[i+2]='КОМ')
then s:=s+c;
until a[i]='КР';
s:=s+c;
if ( k >= s)
then write('Коштів вистачить')
else write('Коштів не вистачить');
readln;
end.
Буратіно і золотий ключик
Таємні двері в комірці тата Карли Буратіно відкриває здобутим золотим ключиком, який має форму цеглини з ребрами a, b, c. Отвір прямокутної форми зі сторонами x, y. Чи вдасться герою відкрити двері?
Program zamok;
var a,b,c,x,y,f : longint;
begin
write('ребро a='); readln(a);
write('ребро b='); readln(b);
write('ребро c='); readln(c);
write('сторона x='); readln(x);
write('сторона y='); readln(y);
f:=0;
if ((x>b) and (y>c)) or ((x>c) and (y>b)) then f:=1;
if ((x>b) and (y>a)) or ((x>a) and (y>b)) then f:=1;
if ((x>a) and (y>c)) or ((x>c) and (y>a)) then f:=1;
if f=1
then write('відкриє') else write('не відкриє');
readln;
end.
Казкова подорож
Князь Гвидон Салтанович зі своєю матінкою проплавали в бочці по океану рівно k суток. Написати програму, яка б підраховувала скільки годин, хвилин та секунд проплавали герої поки не потрапили на чарівний острів Буян.
Рішення
program kruiz;
var k ,god, hvil, sec : extended;
begin
clrscr;
write('k = '); readln(k);
god:=24*k;
hvil:=60*god;
sec:=60*hvil;
writeln('годин : ',god:0:0);
writeln('хвилин : ',hvil:0:0);
writeln('секунд : ',sec:0:0);
readln;
end.
Намисто для Попелюшки
Попелюшка має дві білі, дві сині та дві червоні намистини. Допоможіть їй скласти з них намисто. Які можливі варіанти складання існують та скільки їх?
Рішення
Program namisto;
var n, n1, n2, n3, a, b, c, d, e, f, m1, і : longint;
m: string;
begin
n:=0; n1:=0; n2:=0; n3:=0;
for a:=1 to 3 do
for b:=1 to 3 do
for c:=1 to 3 do
for d:=1 to 3 do
for e:=1 to 3 do
for f:=1 to 3 do
begin
m1:=a*100000+b*10000+c*1000+d*100+e*10+f;
str(m1, m);
for i:=1 to 6 do
begin
if m[i]='1' then inc(n1);
if m[i]='2' then inc(n2);
if m[i]='3' then inc(n3);
end;
if (n1=2) and (n2=2) and (n3=2 )then
begin
inc(n); write(' ', m1);
end;
n1:=0; n2:=0; n3:=0;
end;
writeln(''); write(' кількість способів: ', n);
readln;
end.
Іван Царевич та Сірий Вовк
Іван Царевич проїхав на Сірому Вовці х хвилин. Визначити, скільки годин і скільки хвилин він їхав. Порівняти, чого виявилося більше – годин чи хвилин?
Рішення
Program Ivan_Carevith;
Var x,y,z: integer;
begin
writeln(‘Вкажіть, скільки хвилин їхав Іван Царевич на Сірому Вовці’);
readln(x);
y:=x div60;
z:=x mod60;
writeln(‘Іван Царевич їхав’, y:2,’ год. ‘, z:2,’ хв.’);
if y>z then writeln (‘Годин більше, ніж хвилин.’) else
if y=z then writeln (‘Годин і хвилин порівну.’)
else writeln(‘Хвилин більше, ніж годин’);
readln;
end.
Завдання Снігової Королеви
Снігова Королева запропонувала Каю наступну гру. Вона дає слово a, а Кай за допомогою викреслювання деякої кількості літер з цього слова має отримати слово b. Чи можливо хлопчику виконати задачу Королеви?
Рішення
program zadacha_Korolevi;
var i,j,m,n : integer;
a,b,d,e : string;
begin
write('введіть текст a='); readln(a);
write('введіть текст b='); readln(b);
n:=length(a);m:=length(b);e:=b;
if n<m then halt;
for i:=1 to n do
for j:=1 to m do
if a[i]=b[j] then begin
d:=d+a[i];
delete(b,j,1);
end;
if d=e then write('Так')
else write('Ні');
readln;
end.
Погоня за килимом-літаком
Чарівний килим-літак старика Хотабича став неслухняним, він самостійно вилетів у космос. Хотабич вирішив наздогнати бешкетника. Написати програму, яка б повідомляла чи наздогнав старик Хотабич свій килим, якщо координати вершин трикутного літака відповідно A(x1,y1, z1), B(x2,y2, z2), C(x3,y3, z3), а координати місця знаходження чарівника Х(x0, y0, z0). (Вважати, що старик Хоттабич наздогнав килим-літак, коли сам на нього сів).
Program kilim_litak;
var
x1,y1, z1, x2,y2 z2, x3,y3, z3, p, S, a, b, c, p1, S1, a1, b1, c1, p2, S2, p3, S3:real;
begin
writeln('A(x1,y1, z1)'); write('x1 = '); readln(x1); write('y1 = '); readln(y1);
write(' z1 = '); readln(z1);
writeln('B(x2,y2)'); write('x2 = '); readln(x2); write('y2 = '); readln(y2);
write(' z2 = '); readln(z2);
writeln('C(x3,y3)'); write('x3 = '); readln(x3); write('y3 = '); readln(y3);
write(' z3= '); readln( z3);
writeln(‘Х(x0, y0, z0))'); write('x0 = '); readln(x0); write('y0 = '); readln(y0);
write(' z0 = '); readln( z0);
a:=sqrt(sqr(x1-x2)+sqr(y1-y2)+ sqr(z1- z2));
b:=sqrt(sqr(x2-x3)+sqr(y2-y3)+ sqr(z2- z3));
c:=sqrt(sqr(x3-x1)+sqr(y3-y1)+ sqr(z3- z1));
a1:=sqrt(sqr(x1-x0)+sqr(y1-y0)+ sqr(z1- z0));
b1:=sqrt(sqr(x2-x0)+sqr(y2-y0)+ sqr(z2- z0));
c1:=sqrt(sqr(x3-x0)+sqr(y3-y0)+ sqr(z3- z0));
p:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));
p1:=(a1+b+c1)/2;
S1:=sqrt(p1*(p1-a1)*(p1-b)*(p1-c1));
p2:=(a1+b1+c)/2;
S2:=sqrt(p2*(p2-a1)*(p2-b1)*(p2-c));
p3:=(a+b1+c1)/2;
S3:=sqrt(p3*(p3-a)*(p3-b1)*(p3-c1));
if (S=S1+ S2+ S3) then writeln('Хотабич наздогнав килим-літак') else writeln('Хоттабич не наздогнав килим-літак');
readln;
end.
Фатальна зустріч
Червона шапочка вирішила пройти через ліс до бабусі по прямій y=kx+l. Чи зустрінеться вона з Сірим Вовком, який спить під сосною в точці з координатами (x0,y0)?
Рішення
Program vovk;
var x0,y0,l,k : integer;
begin
write('x0=');readln(x);
write('y0=');readln(y);
write('k=');readln(k);
write('l=');readln(l);
if (y0=k*x0+l) then write('Зустрінеться')
else write('Не зустрінеться');
readln;
end.
Література