Лекція 3
Обчислювальний пристрій
Обчислювальний пристрій
Обчислювальний пристрій
Обчислювальний пристрій
Обчислювальний пристрій
Обчислювальний пристрій
IBM
Перші розробники програмного забезпечення
Глушков Віктор Михайлович
Будова ПК
Будова ПК
Будова ПК
Будова CPU
Робота CPU
Розвиток
Списки
Додавання елементів
Цикли
Цикли
Цикл for
Цикл for
Range
Приклад
Приклад
Ітерація по спискам
Ітерація по спискам
Вкладені цикли
Приклад
break
Приклад
continue
Приклад
pass
while
Приклад
Повна форма циклів for/while
Повна форма циклів for/while
String Slicing
String Slicing
Slicing with a Step
Slicing with a Step
Reverse Slicing
Partial Slicing
Форматування стрічок (f-strings)
Форматування стрічок
Форматування стрічок
Exceptions
Exceptions
Обробка виключних ситуацій
Обробка виключних ситуацій
Обробка виключних ситуацій
Обробка виключних ситуацій
Exceptions
Дякую за увагу
1.86M

Lection3. Control Statements

1. Лекція 3

Кундік К. В.

2. Обчислювальний пристрій

• Слово комп’ютер походить від англійського слова to compute, яке
означає «здійснювати обчислення».
• Інша назва комп’ютерів - електронні обчислювальні машини.
• Вона підкреслює два ключові аспекти:
• По-перше, комп’ютер - це сукупність апаратних засобів, призначених
для обчислень і перетворення інформації.
• По-друге, основними елементами комп’ютерів є електронні
прилади.

3. Обчислювальний пристрій

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

4. Обчислювальний пристрій

• Найпростіші засоби для виконання простих арифметичних операцій
були відомі людям у глибоку давнину.
• Перші механічні пристрої (арифмометри) створено в середині ХVII ст.
Паскалем і Лейбніцом.
• У XIX ст. Чарльз Беббідж уперше сформулював ідею створення
універсальної обчислювальної машини.
• Він розробив детальний проект, який не був закінчений через
відсутність необхідної технічної бази.

5. Обчислювальний пристрій

Значний внесок у розробку принципів
функціонування комп’ютерів зробив Алан
Тьюринг, який у 1937 р. описав
гіпотетичну машину з універсальними
можливостями.
Ця машина Тьюринга, яку можна
розглядати як одну з можливих
формалізацій поняття «алгоритм», стала
теоретичною основою сучасних
комп’ютерів.

6. Обчислювальний пристрій

• В 1938 році з’явилася перша ЕОМ, що
працювала з двійковою системою і
розробив її німець Конрад Цузе – Z1.
Існували Z2, Z3, Z4. Усі три машини Z1, Z2,
Z3 були знищені при бомбардуванні
Берліну в 1944 р. Залишився один
екземпляр Z4.
• Перша електронно-обчислювальна
машина ENIAC створена у 1943–46 рр. Дж.
У. Моклі та Дж. П. Екертом з
Пенсільванського університету.

7. Обчислювальний пристрій

Величезний внесок у розвиток обчислювальної
техніки зроблено працею Дж. фон Неймана.
Початок серійного виробництва ЕОМ
пов’язують зі створенням у 1951 р. ЕОМ
UNIVAC.
Роботи над створенням першої вітчизняної
ЕОМ МЕЛМ (малої електронної лічильної
машини) були розпочаті в Інституті
електротехніки АН УРСР у 1947–1948 рр.
групою науковців під керівництвом С. О.
Лебєдєва.
У 1951 р. машину було прийнято до
експлуатації.

8. IBM


13 вересня 1956 р. був випущений
IBM 305 RAMAC - перша ЕОМ із
накопичувачем на жорстких дисках.
Він важив 900 кг і забезпечував
прямий доступ до 5 мегабайт даних
на 50 алюмінієвих дисках!
Носіями інформації були намагнічені
елементи.
The IBM 305 RAMAC, the First
Computer with a Hard Drive: $10,000
per Megabyte
https://www.historyofinformation.co
m/detail.php?entryid=952

9. Перші розробники програмного забезпечення

10. Глушков Віктор Михайлович


Ві́ктор Миха́йлович Глушко́ в (24 серпня 1923, Ростов-на-Дону) —
український і радянський вчений, піонер комп'ютерної техніки,
автор фундаментальних праць у галузі кібернетики, математики і
обчислювальної техніки, ініціатор і організатор реалізації
науково-дослідних програм створення проблемно-орієнтованих
програмно-технічних комплексів для інформатизації,
комп'ютеризації і автоматизації господарської і оборонної
діяльності країни. Засновник і перший очільник Інституту
кібернетики, пізніше названий на його честь.

11. Будова ПК

12. Будова ПК

13. Будова ПК

14. Будова CPU

15. Робота CPU

CPU має всього чотири етапи роботи:
1. Fetch – прочитання команди, робота PC
2. Decode – розшифровка команди, робота CU
3. Execute – виконання команди
4. Repeat cycle

16. Розвиток

• Як подальші віхи в розвитку
обчислювальної техніки можна
відзначити такі:
• поява операційних систем;
• виникнення мов програмування
високого рівня;
• розвиток мережних технологій і
масове розповсюдження
персональних комп’ютерів.

17. Списки

• У Python ми можемо зберігати кілька значень разом в одній змінній.
• Хоча існує багато способів зробити це, найпопулярнішим є список.
• Це дуже схоже на рядок, оскільки рядок є набором символів.
• Список також є лише набором значень.
• Однак значення можуть бути будь-якого типу.
• Все, що нам потрібно зробити, це взяти всі елементи в квадратні
дужки [] і розділити їх комами.

18. Додавання елементів

• Усі елементи списку не завжди можна вказати заздалегідь, тому
існує велика ймовірність того, що ми захочемо додати більше
елементів під час виконання програми.
• Метод append() можна використовувати для додавання нового
елемента в кінець списку. Потрібно дотримуватися наступного
шаблону:
• a_list.append(new_еlement)

19. Цикли

• Цикл — різновид керівної конструкції у високорівневих мовах
програмування, призначений для організації багаторазового
виконання набору інструкцій (команд).

20. Цикли

• Цикли вирішують проблему необхідності писати той самий набір
інструкцій знову і знову.
• Ми можемо вказати кількість разів виконання коду.
• Одним із найбільших застосувань циклів є обхід структур даних, напр.
списки, кортежі, набори тощо.
• У такому випадку цикл повторює елементи структури даних,
виконуючи кожен раз набір операцій.
• Так само, як і умовні оператори, цикл класифікується як керуюча
структура, оскільки він керує потоком програми, приймаючи різні
рішення в її ітераціях.

21. Цикл for

• Цикл for використовує ітератор для обходу послідовності, напр.
діапазон чисел, елементи списку тощо.
• Простіше кажучи, ітератор — це змінна, яка проходить через
список.
• Ітератор починається з початку послідовності.
• У кожній ітерації ітератор оновлюється до наступного значення в
послідовності.
• Цикл завершується, коли ітератор досягає кінця.

22. Цикл for

• У циклі for нам потрібно визначити три основні речі:
• Ім'я ітератора
• Послідовність, яку потрібно пройти
• Набір операцій для виконання
• Цикл завжди починається з ключового слова for.
for iterator in sequence:
Набір операцій що треба повторювати

23. Range

• У Python для створення послідовності цілих чисел можна
використовувати вбудовану функцію range().
• Діапазон вказується в такому форматі:
• range(start, end, step)
• end – не включається
• якщо start не визначений то починається з 0
• step – опційний, за замовчанням 1

24. Приклад

• Як ви думаєте, що буде виведено на екран?

25. Приклад

• Що буде виведено на екран?

26. Ітерація по спискам

• Що буде виведено на екран?

27. Ітерація по спискам

• Що буде виведено на екран?

28. Вкладені цикли

• Python дозволяє нам легко створювати цикли всередині циклів.
• Є лише одна заковика: внутрішній цикл завжди завершується
раніше, ніж зовнішній.
• Для кожної ітерації зовнішнього циклу ітератор у внутрішньому
циклі завершить свої ітерації для заданого діапазону, після чого
зовнішній цикл може перейти до наступної ітерації.

29. Приклад

• Що буде виведено на екран?

30. break

• Іноді нам потрібно вийти з циклу до того, як він досягне кінця.
• Це може статися, якщо ми знайшли те, що шукали, і більше не
потрібно робити жодних обчислень у циклі.
• Прекрасним прикладом є той, який ми щойно розглянули. У певний
момент n1 дорівнює 23, а n2 дорівнює 27.
• Наша умова n1 + n2 == n виконана.
• Але цикли продовжують працювати та порівнювати всі інші пари. Ось
чому пара друкується двічі.
• Було б добре просто припинити це, коли пара знайдеться.
• Ось для чого потрібне ключове слово break.
• Він може розірвати цикл коли завгодно.

31. Приклад

32. continue

• Коли використовується ключове слово continue, решта
конкретної ітерації пропускається.
• Цикл продовжується до наступної ітерації.
• Можна сказати, що він не порушує цикл, але пропускає весь код у
поточній ітерації та переходить до наступної.

33. Приклад

• Що буде виведено на екран?

34. pass

• У практичному сенсі оператор pass не впливає на виконання
коду.
• Його можна використовувати для представлення області коду,
яку потрібно написати.
• Отже, він просто там, щоб допомогти вам, коли ви не написали
шматок коду, але все ще потребуєте, щоб уся ваша програма була
виконана.

35. while

• Цикл while продовжує виконувати певний набір операцій, доки
виконується певна умова.
• Він працює за такою логікою:
• поки ця умова вірна, продовжує працювати цикл.
• У циклі for кількість ітерацій фіксована, оскільки ми знаємо
розмір послідовності.
• З іншого боку, цикл while не завжди обмежений фіксованим
діапазоном.
• Його виконання ґрунтується виключно на пов’язаній з ним умові.

36. Приклад

37. Повна форма циклів for/while

• У Python блок else можна використовувати як з циклами for, так і
з циклами while. Ключовою особливістю цієї конструкції є те, що
код у блоці else виконується лише тоді, коли цикл завершує всі
свої ітерації нормально (тобто без виконання оператора break).

38. Повна форма циклів for/while

39. String Slicing

• Slicing — це процес отримання частини (підрядка) рядка за
допомогою його індексів.
• Маючи рядок, ми можемо використати такий шаблон, щоб
розділити його та отримати підрядок:
• string[start:end]
• start — це індекс, з якого ми хочемо починати підрядок
• end - це індекс, де ми хочемо, щоб закінчувався наш
підрядок (не включаючи його)

40. String Slicing

• Що буде виведено в результаті роботи?

41. Slicing with a Step

• Python 3 також дозволяє нам «розрізати» рядок,
визначаючи крок, через який ми можемо пропускати
символи в рядку.
• Крок за замовчуванням дорівнює 1, тому ми проходимо
рядок по одному символу за раз.
• Крок визначається після кінцевого індексу:
• string[start:end:step]

42. Slicing with a Step

• Що буде виведено на екран?

43. Reverse Slicing

• Рядки також можна «розрізати», щоб повернути перевернутий
підрядок.
• У цьому випадку нам потрібно буде змінити порядок початкового
та кінцевого індексів.
• Необхідно також надати негативний крок.
• Що буде виведено?

44. Partial Slicing

• Слід зазначити, що вказувати
початковий і кінцевий індекси є
необов’язковим.
• Якщо початок не вказано,
підрядок матиме всі символи
до кінцевого індексу.
• Якщо end не вказано, підрядок
буде починатися з початкового
індексу і йти до кінця.
• Давайте подивимося на це в
дії:

45. Форматування стрічок (f-strings)

• Форматування рядка означає підстановку значень у рядок. Щоб створити такий рядок достатньо перед
оголошенням стрічки додати префікс f і використати фігурні дужки {} для виведення змінної.
• Можна не тільки вставляти числа, а й рахувати нові значення прямо всередині {} дужок.
• А також можна виконувати інші Python вирази (expressions) такі як slicing, виклик функції чи
застосування умовного оператора.

46. Форматування стрічок

• Творці Python передбачили, що нам розробникам доведеться багато часу шукати помилки в
своєму коді. Один з варіантів це робити – виводити значення змінних, які ми оголошували, та
результати функцій. Використовуючи f-стрічки, ми можемо виводити не лише значення змінних, а
й одразу їх імена!
• Інструменти для вирівнювання тексту всередині стрічки з мінімальною довжиною, яка
виділяється для форматування значення.

47. Форматування стрічок

• Потужні інструменти для форматування числових значень в f-стрічка в залежності від бажаного
типу виведення.
• Форматування к-сті цифр після коми.
• Форматування к-сті цифр перед комою.

48. Exceptions


Exceptions
Винятки/виключення (exceptions) - ще
один вбудований тип даних у python.
Винятки необхідні для того, щоб
повідомляти програміста про помилки.
Найпростіший приклад виключення –
спроба ділення на нуль.
Якщо спробувати запустити таку
програму
z = 100 / 0
Ви отримаєте виключення:
Traceback (most recent call last):
File "", line 1, in
ZeroDivisionError: division by zero

49. Exceptions


Exceptions
Зрозуміло, можливі й інші винятки.
Наприклад, при спробі скласти рядок і
число
• z = 2 + '1'
• Traceback (most recent call last):
• File "", line 1, in
• TypeError: unsupported operand
type(s) for +: 'int' and 'str'

50. Обробка виключних ситуацій


Для обробки винятків використовується конструкція try – except.
try:
• k=1/0
except ZeroDivisionError:
• k=0
print(k)

51. Обробка виключних ситуацій


У блоці try ми виконуємо інструкцію, яка може спричинити
виняток, а в блоці except ми перехоплюємо їх.
try:
• k=1/0
except ArithmeticError:
• k=0
print(k)

52. Обробка виключних ситуацій


Також можлива інструкція except без аргументів, яка
перехоплює взагалі все (переривання з клавіатури, системний
вихід і т. д.).
Тому в такій формі інструкція except практично не
використовується, а використовується except <Exception>.
Таким чином перехоплюють винятки по одному для
спрощення налагодження (раптом ви ще іншу помилку зробите,
а except її перехопить).

53. Обробка виключних ситуацій


Ще дві інструкції, які нам доступні, це finally і else.
finally виконує блок інструкцій завжди не важливо чи був
виняток, чи ні (застосовна, коли треба обов'язково щось
зробити, наприклад, закрити файл).
Інструкція else виконується у тому випадку, якщо винятку не
було.

54. Exceptions


Exceptions
string_numbers = ['14', '15', '16', '-1', 'abc']
ints = []
try:
• for item in string_numbers:
• ints.append(int(item))
except ValueError:
• print('Це не число. Кінець роботи')
except Exception:
• print('Щось дивне …')
else:
• print('Супер. Ми все зчитали без помилок')
finally:
• print('Операцію завершено.')

55. Дякую за увагу

English     Русский Правила