Анатолій Бабін, вчитель-методист Жовтневського НВК Конотопського району Сумської області
Евристичні дослідження ІКС-файлів на уроках інформатики
Скачати пакет файлів для реалізації технології
Технологія навчання за допомогою ІКС-файлів використовує евристичні дослідження, у ході яких учні виконують цільові дидактичні завдання, спілкуються в парах або малих групах, обговорюючи результати їх виконання, самостійно роблять висновки щодо нових знань, які вони одержали у ході досліджень. При необхідності пари (малі групи) розширюють коло співрозмовників, підключаючи до взаємодії інші групи учнів, обмінюються між собою необхідною інформацією, спільно формулюють висновки.
Ікс-файли – навчальні ехе-файли, кожен з яких демонструє дію відповідної функції або процедури мови програмування. Виконуючи ці файли на комп´ютері, учні вивчають їх властивості, опановуючи навчальний матеріал. |
Крок за кроком учні опановують нові теоретичні поняття, засвоюють їх визначальні властивості. Наступний етап – самостійне застосовання здобутих знань на практиці – також відбувається за аналогічною схемою:
УРОК 1
ТЕМА УРОКУ: Вказівки і функції опрацювання символьних величин та їх опис навчальною алгоритмічною мовою та мовою програмування Pascal.
МЕТА УРОКУ: Сформувати поняття літерної величини. З'ясувати особливості цього типу даних. Розглянути відповідний набір вказівок та функцій, їх опис мовою програмування Pascal та навчальною алгоритмічною мовою.
ТИП УРОКУ: Урок засвоєння знань.
ТЕХНОЛОГІЯ: Інтерактивна евристика з поетапним формуванням понять.
ФОРМА ОРГАНІЗАЦІЇ УРОКУ: Інтерактивне дослідження методом „секретних” ікс-файлів.
ЗАБЕЗПЕЧЕННЯ УРОКУ: Заздалегідь підготовлена на робочому столі папка UROK9-47 з текстовим файлом char.doc (char.txt), у якому в стислій формі описаний теоретичний матеріал уроку і сформульовано завдання для самостійних досліджень та п'ятьма ІКС-ФАЙЛАМИ: навчальними файлами f_ord.exe; f_chr.exe; f_succ.exe; f_pred.exe; f_upcase.exe, кожен з яких демонструює дію відповідної функції опрацювання символьних величин.
Учитель: Сьогодні ми вивчаємо новий матеріал за допомогою „секретних” ІКС-ФАЙЛІВ. Ви самостійно будете вивчати питання, аналізувати, досліджувати, робити висновки.
1-е ЗАВДАННЯ ДЛЯ ДОСЛІДЖЕНЬ: розкрийте папку UROK9-47. У папці є файл char.doc прочитайте його (в редакторі Word).
Спочатку учні опрацьовують зміст текстового файлу.
Зміст текстового файлу:
Символьний (літерний) тип величин (CHAR). Окрім числових даних комп'ютер може опрацьовувати символьні (знакові, літерні, буквенні) величини. Всі символи - це літерні константи: 'a', 'L', 'Ф', '1', '2', '%', '&',';' та інші знаки, які відображуються на екрані комп'ютера, включаючи "пропуск". Комп'ютер може опрацьовувати також змінні символьні (літерні) величини, які у Pascal-програмі описуються у розділі змінних var ідентифікатором char. Про символьні величини відомо: 1. Кожен символ займає в пам'яті комп'ютера 1 байт. 2. Кожному символу відповідає певне число - код символа (порядковий номер у таблиці кодів): 'A'- 65; '0'- 48; "пробіл"- 32 і т.д. 3. Для опрацювання символьних величин є такі функції TURBOPASCAL: 1) ORD(SIM) – у дужках міститься аргумент – символ (SIM). 2) CHR(COD) – аргумент – ціле число (COD). 3) SUCC(SIM) – аргумент – символ (SIM). 4) PRED(SIM) – аргумент – символ (SIM). 5) UPCASE(SIM) - аргумент символ (SIM).
Хочете дізнатись, для чого призначена кожна з цих функцій і як вони працюють у програмах на TURBOPASCAL? Тоді приступайте до виконання завдань для досліджень, – крок за кроком. Працюйте в парі, обговорюючи з товаришем наслідки опрацювання кожної порції інформації. ЗАВДАННЯ ДЛЯ ДОСЛІДЖЕНЬ: Для вивчення дії цих 5 функцій по черзі запустіть "секретні" ІКС-ФАЙЛИ з відповідними іменами f_ord.exe; f_chr.exe; f_succ.exe; f_pred.exe; f_upcase.exe. (Зверніть увагу, що кожному імені файлу відповідає відповідна функція опрацювання символьних величин!) Постарайтесь розгадити "секрет" кожного з них. Дослідіть призначення цих функцій для роботи з символьними величинами за такою схемою: а) призначення (дія) функції; б) яка величина є аргументом даної функції; в) що є результатом дії функції, до якого типу величин належить. Зробіть висновки. г) додаткове завдання (для бажаючих): відтворити у загальних рисах кожну програму на Паскалі або створити свою власну. Отже, відправляйтесь у подорож по Х-ФАЙЛАХ: запускайте їх по черзі, а як зрозумієте призначення функції – робіть висновок (згідно пунктів а),б),в)) і приступайте до наступного кроку. Успіхів!
|
Зміст „секретних” exe-файлів - програм для дослідження дії функцій опрацювання символьних величин:
1 Program F_ord; {Виведення на екран монітора коду введеного за допомогою клавіатури символу з циклічним запитом про закінчення виконання програми}
var
s: char; lit: char;
begin
s:='y'; while ((s='y') or (s='Y')) do begin writeln('Введіть довільний символ'); readln(lit); writeln(lit,'-',ord(lit)); writeln('Для продовження введіть y(Y), <Enter>'); writeln('для закінчення двічі натисніть <Enter> '); readln(s); writeln(' ') end;
end.
|
2 Program F_chr; {Виведення на екран символу за його кодом}
var s: char; cod: integer; begin
s:='y'; while ((s='y') or (s='Y')) do begin
writeln('Введіть ціле число від 0 до 255'); readln(cod); writeln(cod,'-',''',chr(cod),'''); writeln('Для продовження введіть y(Y), <Enter>'); writeln('для закінчення двічі натисніть <Enter>'); readln(s); writeln(' ')
end;
end.
|
3 Program F_succ; {Виведення символу, наступного у кодовій таблиці після символу, введеного з клавіатури}
var
s: char; lit: char;1
begin
s:='y'; while ((s='y') or (s='Y')) do begin
writeln('Введіть довільний символ'); readln(lit); writeln(lit,' - наступний - ',succ(lit)); writeln('Для продовження введіть y(Y), <Enter>'); writeln('для закінчення двічі натисніть <Enter>'); readln(s); writeln(' ')
end;
end.
|
4 Program F_pred; {Виведення символа, який передує у кодовій таблиці символу, введеному з клавіатури}
var
s: char; lit: char;
begin
s:='y';
while ((s='y') or (s='Y')) do begin
writeln('Введіть довільний символ'); readln(lit); writeln(lit,' - попередній - ',pred(lit)); writeln('Для продовження введіть y(Y), <Enter>'); writeln('для закінчення двічі натисніть <Enter>'); readln(s); writeln(' ')
end;
end.
|
5 Program F_upcase; {Перетворення малої англійської літери, введеної з клавіатури, до верхнього регістру}
var
s: char; lit: char;
begin
s:='y';
while ((s='y') or (s='Y')) do begin writeln('Введіть довільну малу латинську літеру '); writeln(' і натисніть <Enter>'); readln(lit); lit:=upcase(lit)); writeln(lit); writeln('для закінчення двічі натисніть <Enter> '); readln(s); writeln(' ') end;
end.
|
Після виконання досліджень учні роблять висновки про призначення і дію символьних функцій:
1) ORD(SIM) - визначає код (порядковий номер) символу SIM із даної кодової таблиці; результат даної функції належить до цілого типу.
2) CHR(COD) - визначає символ за його кодом COD. Результатом такої функції є символ.
3) SUCC(SIM) - визначає символ, який знаходиться після символу SIM у даній кодовій таблиці.
4) PRED(SIM) - визначає символ, який знаходиться перед символом SIM у даній кодовій таблиці.
5) UPCASE(SIM) - перетворює малі літери англійського алфавіту (і тільки англійського) у великі.
Учитель: Ви всі виконали хорошу дослідницьку роботу, вірно зробили висновки, і тепер залишається лише оформити отримані результати у вигляді ОПОРНОГО КОНСПЕКТУ.
Для кращого запам'ятання вивченого на уроці можна запропонувати такий варіант ОПОРНОГО КОНСПЕКТУ:
СИМВОЛЬНИЙ (ЛІТЕРНИЙ) ТИП ВЕЛИЧИН (CHAR)Комп'ютер може опрацьовувати символьні (знакові, літерні, буквенні) величини. Символи - це літерні константи: 'a', '+','Д', '7', '&',';' та інші знаки, які відображуються на екрані комп'ютера, включаючи "пропуск". Змінні символьні (літерні) величини, у Pascal-програмі описуються так: ІМ'Я: char; Про символьні величини відомо: 1. Кожен символ займає в пам'яті комп'ютера 1 байт. 2. Кожному символу відповідає певне число - код символа (порядковий номер у таблиці кодів): 'A'- 65; 'a' - 97; '0'- 48; "пробіл"- 32 і т.д. 3. Для опрацювання символьних величин є такі функції TURBOPASCAL: |
СИНТАКСИС | АРГУМЕНТ | РЕЗУЛЬТАТ | 1) ORD(SIM) | Char | Ціле число [0..255] | 2) CHR(COD) | Ціле число [0..255] | Char | 3) SUC(SIM) | Char | Char | 4) PRED(SIM) | Char | Char | 5) UPCASE(SIM) | Char[a..z] | char [A..Z] |
|
Учитель: А тепер дайте відповідь на таке питання:
Чи є множина символів, яку використовує комп'ютер, упорядкованою?
Як це можна довести?
Учні: (передбачуваний варіант відповіді): Множина символів, які використовує комп'ютер, є упорядкованою, тому що кожному символу відповідає певний порядковий номер (код) - від 0 до 255 у таблиці кодів комп'ютера і навпаки: кожному коду відповідає 1 символ.
Вчитель: Розглянемо роботу програми, яка підтверджує дане твердження. Програма Tab_sim.exe виводить на екран всю кодову таблицю.
Зміст програми:
6 Program Tab_sim; {Виведення на екран кодової таблиці символів}
var
stop, ch: char; {символ} cod: integer; {десятковий код символа} i,j,n: integer;
begin
stop:='y';
while (stop='y') or (stop='Y') do begin writeln('Виведення на екран кодової таблиці символів'); writeln('Для символів основної таблиці (коди 0-127) ввести 0, '); writeln('Для додаткових символів (коди 128-255) ввести 128, '); readln(n); cod:=0;
for i:=0 to 15 do {16 рядків} begin
cod:=i+n; {Для символів з кодами 128-255 dec:=i+128} for j:=1 to 8 do {8 колонок} begin if (cod=14) and (cod<>26) then write(cod:4,'-',' ',chr(cod):1,chr(179)) else write(cod:4,'- ',chr(179));
cod:=cod+16;
end; writeln; {Перехід до нового екранного рядка} end; writeln('Для продовження введіть <Y>, <Enter>'); writeln ('Для виходу з програми двічі натисніть <Enter>'); readln(stop); writeln(' '); end;
end.
|
Вчитель: Розглянемо кілька програм із застосуванням літерних величин.
ПРАКТИЧНЕ ЗАВДАННЯ 1
Скласти алгоритм і програму, яка виводить на екран всі малі літери латинського алфавіту, використовуючи факт упорядкованості символів у кодовій таблиці комп'ютера.
1 алг алфавіт
арг. буква (літ)
рез. буква (літ)
поч
від буква="a" до "z" виконати
п.ц.
виведення букви
к.ц.
кін.
|
Вчитель: Реалізуємо цей алгоритм на мові програмування TurboPascal (самостійно). Перейдіть у систему TURBOPASCAL
2 Program Alphabet; {Послідовне виведення букв латинського алфавіту}
var c:char;
begin
writeln ('Виведення на екран алфавіту');
for c:='a' to 'z' do begin write(c) end;
readln
end.
|
Вчитель: Тепер пригадаємо, для чого потрібні букви? Для чого потрібні цифри?
Учні: Із букв складаються слова; з цифр - числа.
Вчитель: Всяке слово, речення, текст - це послідовність символів.
Чи є така послідовність упорядкованою?
Учні: Так, тому що кожен символ (буква, цифра, знак) у слові, реченні має своє місце, свій порядковий номер.
Вчитель: Який висновок можна зробити з цього?
Учні: Слово, число, речення, текст можна розглядати як лінійну таблицю (одномірний масив), елементами якої є символи.
Вчитель: Такі масиви називаються літерними або символьними. При роботі з символьними масивами використовуються такі самі алгоритми, як і з числовими. Пригадайте, які саме алгоритми з масивами ви опрацьовували.
Учні:
- Формування масиву;
- пошук заданого елемента масиву;
- підрахунок кількості елементів у масиві, рівних заданому;
- сортування елементів масиву у зростаючому або спадному порядку;
- виконання різних операцій і функцій з елементами масивів.
Вчитель: Подібні алгоритми можна використовувати і з символьними масивами. Розглянемо використання кількох з них у такому прикладі:
ПРАКТИЧНЕ ЗАВДАННЯ 2
Скласти програму, яка введене з клавіатури слово виводить на екран у зворотньому порядку.
3 Program Ob_Slovo; {Програма обернення слова}
const n=15;
var a,b:array[1..n] of char;{Два масиви – прямого і оберненого слова} i:integer;
begin
writeln('Введіть слово або фразу з ',n,' літер'); writeln('Незаповнені місця заповнити пробілами');
for i:=1 to n do {Заповнення масиву a в циклі} begin read(a[i]); b[n-i+1]:=a[i]; {"Обернення" індексів масиву b} end;
writeln;
for i:=1 to n do write(b[i]);
end.
|
Вчитель: символьні величини описують одиночні символи, але якщо комп'ютеру дати змогу використати стандартну функцію EOLN,яка приймає значення TRUE (істина) лише при досягненні кінця рядка, то можна в циклі дати команду читати символи до тих пір, поки не буде досягнутий кінець рядка і виконувати з прочитаними символами відповідні дії. Ось характерний приклад.
ПРАКТИЧНЕ ЗАВДАННЯ 3.
Скласти програму, яка б у введеному з клавіатури тексті "відмовлялася" б виводити на екран великі латинські літери.
Роз'язання
1. Складемо алгоритм методом покрокової деталізації.
Доцільно вести опрацювання тексту по рядках у порядку зростання їх номерів, при досягненні кінця рядка збільшувати його номер на 1, аж поки не буде опрацьовано останній рядок.
Загальна схема фрагменту алгоритму:
4А для і від 1 до N п.ц. опрацювати і-ий рядок к.ц. |
Уточнюємо, що означає опрацювати і-ий рядок деталізацією команд: поки не досягнутий кінець рядка
4Б п.ц.
читати символ
якщо символ не є великою літерою лат. алфавіту
то вивести літеру на екран
все
к.ц.
перейти до нового рядка
|
Перекладаємо алгоритм на мову Pascal.
4В Program No_Caps;{Програма пропускає друкування усіх великих латинських букв}
var lit:char;
begin
writeln ('Введіть текст і переконайтесь,', ' що великі латинські літери відсутні');
while not EOLN do begin read(lit); if not ((lit>='A') and (lit<='Z')) then write(lit); end;
writeln;
readln;
end.
|
ПІДСУМКИ УРОКУ:
Учні: називають вивчені на уроці поняття, посилаючись при потребі опорний конспект.
Учитель: Зауважує, що це лиш найважливіші поняття, що стосуються літерних величин.
ДОМАШНЄ ЗАВДАННЯ:
Опрацювати п.2.13 ("Інформатика". Верлань А.Ф.) cт.175-178. Завдання 1-3 (cт. 185)
1) (Обов’язкове) Скласти програму, яка б виводила на екран кириличний алфавіт у зворотньому порядку.
2) (Додаткове – на вибір):
а) Виведення букв латинського алфавіту з затримкою 0.2 секунди.
б) Виведення букв кирилиці у зворотньому порядку в 1 рядок.
в) Фокус із буквами. Відгадування задуманих комп'ютером букв за кількість спроб, які вибирає гравець.
3) До заліку з теми виконайте такі завдання:
(кожен вибирає з наведеного переліку обов'язкові завдання, бажаючі - додатково завдання 3-го рівня)
ЗАВДАННЯ ДО ЗАЛІКУ (І розділ - СHAR)
(1-9 - обов'язкові. Вибрати довільні два. 10-18 - додатково)
Скласти програми, які виконували б такі завдання:
1) Визначає пору року за назвою місяця, введеного з клавіатури.
2) Виведення букв латинського алфавіту з затримкою 0.2 секунди.
3) Виведення букв кирилиці у зворотньому порядку в 1 рядок.
4) Визначає, мала чи велика латинська літера введена з клавіатури.
5) Організовує простий діалог з користувачем: вітається, знайомиться, запитує, відповідає.
6) Читання N рядків тексту і друкування лише великих латинських букв.
7) Підраховує кількість літер 'a', які передують крапці '.' в рядку символів.
8) Підраховує кількість вибраних користувачем знаків, які передують знаку / в рядку символів.
9) Замінює одні символи на інші у рядку, введеному з клавіатури.
10) Дано послідовність символів s1,s2,..,s30; потрібно визначити,чи співпадає перша половина s1,s2,..,s15 з другою половиною s16,s17,..,s30.
11) Дано послідовність символів a1,a2,..,aN,; потрібно вивести кожний символ 1 раз і вказати, скільки разів він зустрічається у масиві.
12) Фокус із буквами. Відгадування задуманих комп'ютером букв за кількість спроб, які вибирає гравець.
13) Визначає частоту входження символів у заданий текст (у процентах).
14) Програма пропускає всі цифри у введеному тексті.
15) Шифрування тексту. Змінює всі слов’янські літери у введеному тексті на нові з кодами, на 1 більшими.
16) Пошук у масиві методом перебору його елементів. Програма повинна видавати на екран найменший індекс елемента масиву, який вперше співпадає із заданим.
17) Підрахунок кількості елементів масиву, які співпадають з даним символом (методом послідовного перебору його елементів).
18) Підрахунок кількості елементів масиву, які співпадають з даним символом методом послідовного перебору його елементів. Програма повинна також указувати індекси тих елементів масиву, які співпали з заданим для пошуку.
Додавати коментарі можуть тільки зареєстровані користувачі.
[
Реєстрація |
Вхід ]