середа, 22 лютого 2017 р.

На допомогу вчителю: тема 25


  • Вправа на формування навичок використання циклу із передумовою

Вправа 1. Урожай.

Завдання. Фермер вирощує новий сорт рослин для відгодівлі тварин. Він дослідив закономірність, що після кожного зрізу, який здійснюється через тиждень не більше 5 разів, кількість зеленої маси збільшується за формулою: s=s+(i-1)*i, де і – номер тижня, s – кількість зеленої маси. Розробіть проект у середовищі PyCharm, за яким буде визначено, чи встигне фермер зібрати n одиниць зеленої маси.

Якщо ви працюєте в середовищі Lazarus, то форма проекту має вигляд:

Програмний код проекту

Результат при введенні значення 50

Якщо ви працюєте в середовищі PyCharm, то форма проекту має вигляд:
Програмний код проекту:
Результат при введенні значення 50

  • Вправа на формування навичок використання циклу із лічильником
Вправа 2. Кількість слів у реченні.
Завдання. Розробіть  проект, за допомогою якого можна визначити, скільки слів введено у текстове поле, якщо відомо, що між словами міститься лише один пропуск.  

Якщо ви працюєте в середовищі Lazarus, то форма проекту має вигляд:

Програмний код проекту:
Пригадайте з учнями команди роботи із текстовими змінними. Зверніть увагу на потребу додавання до розділу бібліотек Uses бібліотеки LCLProc. Встановіть з  учнями закономірність, що кількість слів у реченні завжди більша на 1 від кількості пропусків!

Якщо ви працюєте в середовищі PyCharm, то форма проекту має вигляд:
  • Програмний код проекту:
Встановіть з  учнями закономірність, що кількість слів у реченні завжди більша на 1 від кількості пропусків! Зверніть увагу на те, як формується початкове та кінцеве значення лічильника.


  • Вправа на формування навичок використання циклу із післяумовою
Вправа 3. Просте число.
Завдання. Число називають простим, якщо воно ділиться без остачі тільки на одиницю і на себе. Розробіть програмний проект у середовищі Lazarus, за допомогою якого буде перевірятись, чи є простим введене у текстове поле число.

Якщо ви працюєте в середовищі Lazarus, то форма проекту має вигляд:


Програмний код проекту:

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

  • Вправа на формування навичок використання циклів та розгалужень 

Вправа 4. Гра.
Завдання. Складіть програму мовою програмування Python, яка реалізує гру Відгадай число між комп’ютером та користувачем. Користувач не більше ніж за 6 спроб має відгадати «задумане» число з діапазону від 1 до 20. Якщо користувач відгадає, то на екран виводиться повідомлення про кількість спроб, якщо ні – «задумане число».

Якщо ви працюєте в середовищі PyCharm, то програмний код  проекту має вигляд:
Вчитель може запропонувати у даному коді записати коментарями пояснення до команд. Окрім цього проект можна доповнити візуальними складовими. 

18 коментарів:

  1. Большое, спасибо за материал. В питоне ничего не работает. Посоветуйте где можно посмотреть уроки по питону на русском или украинском языке.

    ВідповістиВидалити
    Відповіді
    1. Доброго дня, пані Hellen Zatv! А що саме у Вас не працює? Перевірте, яка версія Python у Вас встановлена. Чи правильно я розумію, що Ви запускаєте запропоновані програми у PyCharm?
      Ви ж розумієте, якби не працювало, то я б просто не змогла створити скріни робочих програм.
      Якщо б Ви надіслали повідомлення, які отримуються під час запуску програм, то можна було б зрозуміти у чому ваша помилка.
      Щодо уроків з Python, то можете скористатись посиланнями, які запропоновані у підручнику на с. 191 - там знайдете щось для себе обов'язково.

      Видалити
    2. Я не за самі підкреслення написав, самий код не працює. І як помітно не працює не тільки в мене.

      Видалити
    3. Пане Ігорю, даю посилання на файл Урожай: https://drive.google.com/open?id=15lB7Rjj61HYrnKOvnx0f_kXsfc7MM5D4
      Завантажте в себе та перевірте код. Усе працює. Скріни зроблені із цього файлу. Якщо у вас не працюватиме - тоді будемо шукати помилку

      Видалити
    4. Та свій код я виправив і все запрацювало, до чого я вів - багато хто з вчителів поняття не має про мову програмування Python, деякі як показала практика і зовсім ніякої не знає. Проблема залишається в тому, що таким вчителям важко навчати дітей самим нічого не розуміючи. По PyCharm мало чого пояснено. Наведу приклад: с 119, практична робота №8 вправа 1 зробити напис в три рядки. Пояснення переносу знаходиться на 144 сторінці. Погодьтесь, що багатьом вчителям які цю мову не використовували самим важко щось зрозуміти, не то що учням пояснити.
      Як бачите по коментарям, ні в кого не вийшло. А вчителі, які бачать Пайтон вперше як ті самі діти, їм треба пояснити, щоб працювала програма, потрібно слідкувати за відступами, щоб кожна частина програми співпадала з цими відступами і т.д.
      Особисто мені підручник для 8 класу подобається, не дивлячись на багато помилок, які ми разом з учнями ще познаходили, на мене це навіть плюс, що учні самі познаходили і виправили. Але в темі програмування дуже багато запутано. Уявіть дитину яка прохворіла декілька тижнів і вирішила самостійно спробувати створювати програми - нічого не вийде без Інтернету, якщо такий є. В мене є такий учень який спробував, помалу доганяємо разом, так як дуже мало пояснень. Взяти для прикладу клас Tk в пайтоні, якщо не помиляюся, то не описано що він значить. Я в дитинстві багато сам хворів, вивчав багато самостійно, і зараз самоосвітой займаюся, думаю мені було б багато чого незрозумілого саме по Пайтону, по Lazarus немає ніяких питань. Хотілося в майбутньому побачити багато деталізації в наступних підручниках. Погодьтесь, зараз сучасне покоління деградує добре.

      Видалити
    5. Пане Ігорю, дякую за допис та Ваше хвилювання з приводу освіти дітей. Особливо дякую за позитивний відгук про підручник та про зазначення помилок. Були б вдячні, якщо б ви зазначили які саме помилки (ми їх також самі бачимо) потрібно виправити, щоб врахувати у майбутньому.
      Спробую деякі проблеми, зазначені Вами, прокоментувати.
      По-перше, підручник призначений для дітей і має обмежений обсяг. Тому при написанні автори мають дотримуватись дуже строгих рамок, які нам вказують і експерти, і програма, і різні інструктивні нормативи.
      По-друге, ми проводимо навчання вчителів та методистів з питань нових тем, які впроваджуються в курсі інформатики. Тому те, що потрібно глибше засвоїти вчителям - це питання підвищення кваліфікації, якими прямо не займається наш авторський колектив, але тільки опосередковано. Окрім цього, в підручнику є посилання, за якими можна глибше зануритись в курс як дітям, так і вчителям. На жаль, зайнятість авторів на основній роботі не дозволив нам зробити повноцінний курс методики навчання інформатики для вчителів-практиків, зокрема з питань програмування, хоча такого запиту й не було від вчителів. З огляну на диверсифікацію підвищення кваліфікації, яка передбачена новим Законом "Про освіту", можливо ми і візьмемось за розробку такого курсу, хоча б дистанційного, якщо такий запит від педагогів буде.
      А тепер детально по зауваженням.
      1) зробити напис в три рядки (с. 119) - це додати три написи, а не використовувати ескейп-послідовності, описані у рядках.
      2) Коментарів не критично багато, щоб стверджувати, що ні в кого не вийшло. Важливо, що є достатньо зразків, які розкривають навчальний матеріал.
      3) Вивчення Пайтона не дуже "лягало" під програму. Ми його додали на власний розсуд та ризик, розуміючи, що це перспектива інформатики та майбутнього дітей. Тому деякі моменти є трохи штучними та вимушеними. Якщо б у нас не було такої прив'язаності до програми, як вимагає комісія, та вимушеного паралельного подання двох середовищ, на які ми пішли, то ми б подали матеріал кардинально по-іншому. спочатку ази в консольному варіанті, а вже потім візуалізація проекту з описом бібліотеки візуалізації. А про модуль ТК вперше згадується на с. 112 у п. 2. Створення класів та глибоке занурення в ООП не передбачено в програмі школи.
      4) щодо відступів у програмі - Ваш допис написаний вище, аніж є зауваження про відступи на коментар, які по часу були раніше.Зазвичай я так і раджу своїм дітям: читати на тільки основний текст, а коментарі та відповіді на них, то в коментарях часто можна швидше знайти відповідь на питання, яке цікавить. У підручнику про відступи вказано на с 160 у третьому абзаці. До цього відступ стосувався події, наприклад, отримання вікна повідомлення (с. 127) і цей опис давався у програмі-заготовці.
      5) що стосується самостійного навчання учнів за підручником, то звісно, поза навчальною кімнатою тільки за друкованим посібником, без спілкування із вчителем та учнями це зробити складно. Для цього є спеціальні засоби та методи електронного дистанційного навчання, про які ми, як автори друкованого підручника, не могли подбати в принципі. У своїй практиці я використовую хмарний кабінет класу, в якому і вибудовуємо з кожним учнем його траєкторію, особливо за умов його хвороби чи відмінного від загалу темпу чи то відставання, чи випередження. Тому напевно, це питання не стільки до авторів, як до специфіки роботи самого вчителя.

      Видалити
  2. Доброго дня. Дякую за матеріли на сайті. У мене є запитання. Складаючи консольні програми у Lazarus, при її виконанні, відбувається некоректне відображення українських літер і,ї,є.

    Ось наприклад тут: writeln(UTF8ToConsole('Введіть два числа - ......'));, їх заміняє у вікні програми нижнім пробілом. Модуль FileUtil - використовується. Російська іде нормально, без помилок. Стоїть ОС Windows7, розрядність ОС на результат не впливає. Можливо є якесь рішення проблеми.
    З повагою Микола)

    ВідповістиВидалити
    Відповіді
    1. А в консолі Windows використовують кодування CP866. Для того, щоб задіяти кодування UTF-8 слід задіяти бібліотеку LCL. Функція UTF8ToConsole(), задіяна в цій бібліотеці, усуне ваші проблеми.
      Окрім цього, можна використи функцію CP866ToUTF8() для перетворення введеного з клавіатури тексту до UTF-8. Це стосується тільки ОС Windows. Функция CP866ToUTF8() описана в модулі LConvEncoding. Знову ж таки, коли ви працюєте в консолі та хочете працювати із типом Char, то краще використовуйте TUTF8Char із бібліотеки LCLType - і помилок із кирилицею не буде.

      Видалити
    2. Дякую, буду експерементувати!

      Видалити
  3. У меня лазарус работает все хорошо, а вот питон никак. Например в задаче про Урожай открывается пустое окно без текста и поля для ввода

    ВідповістиВидалити
    Відповіді
    1. Зверніть увагу на відступи, прийняті у Python. Якщо команди графічного інтерфейсу попадуть у поле дії функції, то буде така помилка. У дописі спеціально подано вигляд екрану, а не текст, бо при копіюванні тексту відступи не зберігаються та отримуємо помилки.

      Видалити
  4. Добрий день п. Ольга. В Вправі 2. Кількість слів у реченні.(і раніше) Ви рекомендуєте використання модуля
    LCLProc, в командах для опрацювання кирилиці використовувати кодування UTF8.
    Це обов'язково робити?, адже програми працюють і так (в Lazarus по замовчуванню і так стоїть кодування UTF8 і в цих вправах не використовуються введення чи виведення в консоль Windows)
    Дякую за допомогу.

    ВідповістиВидалити
    Відповіді
    1. Дякую за запитання, пане Василю! Ми пропонуємо використовувати бібліотеку LCLProc для кирилиці, особливо для української мови. У нашому підручнику, перекладеному на російську мову, ми не пропонуємо цю бібліотеку, бо справді працює коректно, коли слова вводити російською мовою. Але якщо використовувати слова із власне українськими літерами "і", "Ї, "Є", то виникають помилки.

      Видалити
    2. Я зрозумів з якою метою вводиться LCLProc, тільки код програми (кількіть слів) працює з літерами "і", "Ї, "Є", і без бібліотеки LCLProc (перевірено мною декілька разів)


      uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

      procedure TForm1.Button1Click(Sender: TObject);
      var s:string;
      i,k: integer;
      begin
      s:=Edit1.Text;
      k:=0;

      for i:=1 to length(s) do
      if copy(s,i,1)=' ' then k:=k+1;

      MessageDlg('Кількість слів '+IntToStr(k+1), mtInformation, [mbOk], 0);

      end;

      помилок не знаходить
      Дякую

      Видалити
    3. Дякую, пане Василю! Я також перевірила. Остання версія Лазарус коректно працює. А ось в попередній версії, за якою писався підручник, були баги. Тому будемо рекомендувати користувачам останньої версії не використовувати бібліотеку LCLProc. А тим, що не провели обновлення системи - таки нею користуватись. Дякую ще раз за Вашу турботу та сприяння покращенню навчального матеріалу.

      Видалити
  5. Добрий день і дякую за відповіді
    В мене виникає деколи така ситуація (замітив поки що тільки на на windows XP), проект створений в Лазарусі збережий , скомпільований, працює, створений запускний ехе файл (який теж виконує проет). При відкриті цього проекту може винукнути таке повідомлення від Лазаруса: Файл project1.lpi не схожий на lpi файл.
    Пропонується Прервати або Знехтувати,
    якщо вибрати Знехтувати нічогоне відкривається
    якщо-Прервати , відкриеться проет (форма, код і всі вікна), но проект більше запустити не вдається, На запуск не реагує.
    Дякую за допомогу

    ВідповістиВидалити