Ruthenia.Info

» Мої сторінки
» записи
» новий запис
Публічні сторінки
» Збирач даних
» джерела даних
» потоки новин
Автор: pavlo
публічний запис
 
Програмування для новачків (чайників)
1.0 Неправильне програмування чайників.
1.1 Правильне програмування чайників.
1.2 Помилки при програмуванні.
1.3 Елементи стилю програмування
1.4 Елементи технології програмування
1.5 Домашнє завдання

 

~

Для Киндітєра (але не для того)

Шо таке програмування? Згрубша — це управління комп’ютером, себто передача йому команд, які комп’ютер виконує. Як правило, за раз комп’ютеру передається не одна команда, але цілий іх набір, який зветься програмою.

Перед передачею комп’ютеру програми записуються деякти наперед визначеним способом — колись це було просто перемикання тумблерів, згодом — пробивання отворів в перфокартах, тепер же, найчастіше, програми записуються за допомогою клавіятури.

Що таке комп’ютер — не важливо, досить того, що: - комп’ютер має доступ до певного набору штуковин; це можуть бути, зокрема, цифри, або букви, або навіть реальні предмети (коли програмується комп’ютер робота) — надалі всі їх називатимемо ’’’предметами’’’; - комп’ютер може виконувати певні операції над згаданими предметами; - комп’ютер розуміє наші команди щодо виконання згаданих операції.

Для того, щоб комп’ютер розумів команди, слід записувати їх згідно певних правил. Відтак, конкретні набори команд і правил їх запису для порозуміння між програмістом і комп’ютером, звуться мовами програмування.

Коли в якості комп’ютера розглядається не щось реальне, але уявний набір предметів і операцій над ними, така система зветься ’’’віртуальною машиною (ВМ)’’’ (саме таким був один з перших комп’ютерів — так звана "машина Тьюрінґа"; кому цікаво — гугл в поміч). Але й кожен реальний комп’ютер спершу описується (створюється, вивчається) як ВМ.

1.0 Неправильне програмування чайників.

Наша перша віртуальна машина має доступ до наступних предметів:

- чайник, який стоїть зліва на столі; - чайник, який стоїть справа на столі; - кухонна мийка; - кран, закритий.

Допустимі операції:

- перенести лівий предмет зі столу в мийку під кран; - перенести правий предмет зі столу в мийку під кран; - перенести предмет з мийки на стіл зліва; - перенести предмет з мийки на стіл справа; - відкрити кран; - зачекати певну кількість секунд; - закрити кран.

А тепер нам треба написати програму для того, щоб набрати в чайник скільки-небудь води. Пишемо її наступним чмном:

- перенести чайник зі столу в мийку; - відкрити кран; - зачекати 3 секунди; - закрити кран.

Правильно? Ні. Чому? Подумайте, перш ніж читати далі.

1.1 Правильне програмування чайників.

В більшості сучасних мов програмування для доступу до предметів не використовуються їх назви. Натомість, щоб "взяти пердмет" слід вказати те місце, в якому він в цей момент знаходиться.

Так і наш комп’ютер не розуміє терміну "чайник" (немає такої операції — "перенести чайник"!) Ба, більше, навіть якби він розумів цей термін, він все’дно не знав би, який саме чайник слід взяти.

Отже, те, що написане вище — це не програма. А правильним записом нашої програми був би наступний:

- перенести лівий предмет зі столу в мийку під кран; - відкрити кран; - зачекати 3 секунди; - закрити кран.

І всіх ділов-то.

1.2 Помилки при програмуванні.

При всій простоті викладеного вище, в програмах, навіть найтривіяльніших, постійно трапляються помилки.

Ми, скажімо, знаємо ще зі школи, що від перестановки доданків результат не змінюється. І можемо спробувати написати отак от:

- відкрити кран; - зачекати 3 секунди; - закрити кран. - перенести лівий предмет зі столу в мийку під кран;

Чи буде в чайнику вода? Так отож.

А можемо написати ще й так:

- перенести лівий предмет зі столу в мийку під кран; - відкрити кран;

Чи буде в чайнику вода? Так. А якщо мийка не дуже добре зливає, то вода буде не тільки в чайнику а ще й у сусідів кількома поверхпми нижче. Це, скоріш за все, також помилка.

Якщо ж оцю останню програму спробуємо виконати повторно, то виявиться, що операція "перенести лівий предмет зі столу в мийку під кран" не може бути виконана, оскільки лівого предмету на столі нема, в той час я кмийка вже зайнята. Результати таких спроб в реальному програмуванні бувають непередбачуваними, тому справа програміста — писати так, щоб кожна операція могла бути виконана.

То ж будьмо уважними!

1.3 Елементи стилю програмування

Як на мою точку зору (понад 20 років програмістської роботи, декілька чималих програмних проєктів, які працюють і досі), хороша програма повинна робити тільки те, що їй належиться, і нічого иншого. Сиріч ’’’відновлювати контекст’’’ — кожну дію, яку тільки можливо, "повертати назад", а кожен предмет перед завершенням програми ставити на його вихідне місце. Відтак, доброю версією нашої програми була би наступна:

- перенести лівий предмет зі столу в мийку під кран; - відкрити кран; - зачекати 3 секунди; - закрити кран. - перенести предмет з мийки на стіл зліва.

В такому випадку, якщо ми навіть і не здогадуємся про існування сусідів знизу, потопу в них не буде. А коли ми захочемо виконати програму повторно, вона знову спрацює.

Безперечно, стилістичні правила не є абсолютними і допускають винятки — але, попри це, вони куди важливіші, аніж може видатись на перший погляд.

Завжди пам’ятаймо про стиль!

1.4 Елементи технології програмування

Перед тим, як писати програму, вкрай важливо зрозуміти, що і як вона буде робити, до дрібних деталей.

Добрі програмісти, отримуючи завдання, зазвичай уточнюють подробиці у того, хто це завдання формулює. Таке уточнення подробиць може займати навіть істотно більше часу, аніж наступне написання програми. У наведених прикладах, скажімо предметом уточнень може бути наступне: "що робить ліва рука, коли ми беремо чайник правою?", "скільки чайників можна взяти в одну руку" — та все, що завгодно, зрештою. Після досконалого уточнення деталей програма, як правило, пишеться без проблем.

Прекрасні помічники в цьому — ’’’папір, ручка і запис програми "своїми словами"’’’. Все, що вдається осмислено і чітко записати своїми словами, для себе — так само можна записати і для комп’ютера. А що не вдається записати своїми словами — про те ’’’варто перепитати’’’ в постановщика задачі.

А от погані програмісти (маю досвід спілкування!) багато питань не задають, натомість рішуче і швидко пишуть якусь ні до чого не придатну пургу.

Вчіться на доброго програміста — перепитуйте стосовно наступних завдань, не соромтесь: p.dzikovsky{кругла хріновина}gmail.com

1.5 Домашнє завдання

Предмети:

- чайник, який стоїть зліва на столі; - чайник, який стоїть справа на столі; - кухонна мийка;

Допустимі операції:

- взяти лівий предмет зі столу; - покласти предмет на стіл зліва; - взяти правий предмет зі столу; - покласти предмет на стіл справа; - взяти предмет з мийки; - покласти предмет в мийку

Зовісм просте завдання:

- поміняти чайники місцями.

Удачі!

P.S. "Справжні програми" з’являться в наступному дописі.


 

 
про цей сервер
правила публікацій

dumaj.org.ua
Відкрито: 27.01.2017