Завдання#

Узагальнене формулювання завдання до лабораторної роботи#

  1. Вивчити принципи створення функцій мови Python.

  2. Розробити програми із визначенням і викликом функцій, які призначені для користувача, відповідно до варіанта завдання. Функції повинні працювати з параметрами.

У звіті обов’язково повинно бути описано, які типи аргументів передаються при виклику функції.

  1. Вхідні дані і результат роботи супроводжувати відповідною інформацією на екрані.

  2. Показати розроблену програму викладачеві.

  3. Письмово відповісти на Питання для самоперевірки.

  4. Оформити звіт відповідно до вимог.

Завдання на виконання лабораторної роботи складається з 2-х частин:

  • функції на обчислення і логіку;

  • функції для роботи з рядками.

Варіанти завдань до лабораторної роботи#

Функції на обчислення і логіку (Перше завдання)#

  1. Ввести два дроби: \(\frac{A}{B}\) і \(\frac{C}{D}\). (\(A\) , \(B\), \(C\), \(D\) — натуральні числа). Написати функцію для складання цих дробів. Результат має бути нескоротним дробом. Вхідні параметри: \(A\), \(B\), \(C\), \(D\). Вихідний параметр: нескоротний дріб.

  2. Ввести координати вершин двох трикутників (\((x_1, y_1)(x_2,y_2)(x_3,y_3)\)). Визначити, який з них має більшу площу. Написати функцію, яка обчислює площу трикутника. Вихідні параметри: \(S\) — площа трикутника.

  3. Ввести число \(Х\). Вивести на екран в порядку зростання результат обчислення наступних математичних функцій : sin(x), cos(x), ln(x). Написати функцію, яка, залежно від вхідних параметрів, виконує обчислення. Вихідні параметри: результат обчисленої функції.

  4. Написати функцію, яка б по введеному номеру пори року в якості параметра (\(1\) — зима, \(2\) — весна, \(3\) — літо, \(4\) — осінь) повертала місяці, кількість днів в кожному з місяців, що відповідають цій порі року.

  5. Ввести координати точки \(А(х, у)\). Написати функцію, яка визначає, чи належить вона трикутнику з вершинами в точках \((x_1, y_1)(x_2, y_2)(x_3, y_3)\). Усі значення передавати у функцію. Результат у вигляді булевої змінної.

  6. Ввести два дійсних додатних числа \(Х\) і \(У\). Арифметичні дії над числами пронумеровані (\(1\) — додавання, \(2\) — віднімання, \(3\) — множення, \(4\) — ділення). Написати функцію, яка по введеному номеру виконує ту чи іншу дію над числами. Числа, операції передаються в якості параметрів. Результат операції повертається.

  7. Ввести дійсні числа \(х_1, у_1, х_2, у_2, \ldots, х_{10}, у_{10}\). Знайти периметр десятикутника, вершини якого мають відповідно координати \((х_1, у_1), (х_2, у_2), \ldots, (х_{10}, у_{10})\). Написати функцію обчислення відстані між двома точками, заданими своїми координатами, які передаються при виклику функції.

  8. Ввести відрізки \(a\), \(b\), \(c\) і \(d\). Для кожної трійки цих відрізків, з яких можна побудувати трикутник, надрукувати площу даного трикутника. Написати функцію, яка обчислює площу трикутника зі сторонами \(x\), \(y\) і \(z\), якщо такий трикутник існує.

  9. Мішень для стрільби являє собою концентричні кільця з центром на початку координат. Радіус внутрішнього кільця (“десятки”) — 1 см. Ширина всіх інших кілець — по 1 см. Написати функцію, яка за координатами трьох точок попадання \((х_1, у_1)\), \((х_2, у_2)\) і \((х_3, у_3)\) обчислює суму вибитих очок.

    Зауваження: cеред аналізованих пострілів можуть виявитися і попадання “в молоко” (за межі мішені), що не приносять очок.

  10. Ввести оцінки спортсмена 8-ма суддями. Написати функцію підрахунку середньої оцінки спортсмена за показаннями 8 суддів. При підрахунку середньої оцінки необхідно відкинути найбільшу і найменшу оцінки.

  11. На площині задано кільце з центром в точці \((х_0, у_0)\), внутрішнім радіусом \(r_1\) і зовнішнім \(r_2\). Скласти функцію, яка для заданого масиву точок \(ХY\) обчислює кількість точок, що належать кільцю. Точки, розташовані на межі кільця, вважати належним кільцю.

  12. Скласти функцію, яка повертає ціле число з діапазону \([1 \ldots 6]\), що відповідає номеру ситуації при взаємному розташуванні двох кіл. Кола \(О_1\) і \(О_2\) задаються своїми центрами \((х_1, у_1)\), \((х_2, у_2)\) і радіусами \(r_1\) і \(r_2\).

    • Ситуація 1. Кола знаходяться досить далеко одне від одного.

    • Ситуація 2. Кола перетинаються, але, по щонайменше, центр одного з них не належить іншому.

    • Ситуація 3. Коло \(О_2\) цілком знаходиться всередині кола \(О_1\), але їх центри не співпадають.

    • Ситуація 4. Коло \(О_1\) цілком знаходиться всередині кола \(О_2\), але їх центри не співпадають.

    • Ситуація 5. Кола концентричні, і \(О_2\) має менший радіус.

    • Ситуація 6. Кола концентричні, і \(О_1\) має менший радіус.

  13. Задати коло радіуса \(r\) з центром в точці \((x_0, y_0)\) і досліджувану точку з координатами \((x, y)\). Написати функцію, що визначає, який чверті кола, належить досліджувана точка. Номери чвертей окружності повторюють номера квадрантів в декартовій системі координат (\(N = 1,2,3\) або \(4\)). Якщо точка знаходиться поза колом, то покласти \(N = 0\). Граничними ефектами (попадання в центр, на контур кола, на горизонтальний або вертикальний діаметри) — знехтувати.

  14. Написати функцію Ro(n1,n2), яка обчислює відстань між двійковими кодами, відповідними машинному представленню цілочисельних аргументів n1 і n2. Відстанню між двома двійковими кодами називається кількість незбіжних двійкових розрядів. Наприклад:

    0 1 0 1 1 0 1
    0 0 1 0 1 0 1
    = * * * = = = 
    (відстань = 3)
    
  15. Два прямокутники задати парами чисел \((a_1, b_1)\) і \((a_2, b_2)\), що визначають довжини їх сторін. Написати функцію, яка з’ясовує, чи можна один з прямокутників цілком помістити в іншому. Передбачається таке розташування прямокутників, при якому зберігається паралельність сторін.

  16. Ввести два дробу: \(\frac{A}{B}\) і \(\frac{C}{D}\). (\(A\) , \(B\), \(C\), \(D\) — натуральні числа). Написати функцію множення дробу на дріб. Результат повинен бути нескоротним дробом. Вхідні параметри: \(A\), \(B\), \(C\), \(D\). Вихідні параметри: нескоротний дріб.

  17. Ввести координати вершин трикутника (\((x_1, y_1), (x_2, y_2), (x_3, y_3)\)) і координати деякої точки всередині нього \((х, у)\). Написати функцію, яка знаходить відстань від даної точки до найближчої сторони трикутника. (При визначенні відстаней врахувати, що площа трикутника обчислюється і через три його сторони, і через основу і висоту.)

  18. Написати програму обчислення виразу: $\(U = \frac{max^2(x, y,z) - 2^xmin(x, y, z)}{sin(2) + max(x, y , z)/min(x, y, z)}\)\( за заданими з клавіатури числами \)x\(, \)y\(, \)z$. Знаходження максимального і мінімального значення з 3-х чисел оформити у вигляді функцій maxim(x, y, z) і minim(x, y, z). (Для цього варіанту вбудовані функції max і min не застосовувати.)

  19. Для двох квадратних рівнянь \(a_1x^2 + b_1x + c_1 = 0\) і \(a_2x^2 + b_2x + c_2 = 0\) визначити, чи мають вони спільні корені. Вивести на екран корені рівняння, які не збігаються. Рішення рівняння оформити у вигляді функцій. Коефіцієнти \(a_1\), \(b_1\), \(c_1\), \(a_2\), \(b_2\), \(c_2\) вводяться з клавіатури.

  20. Ввести натуральне число \(n\). Серед чисел \(1, 2, \ldots, n\) знайти всі ті, які можна представити у вигляді суми квадратів натуральних чисел. Написати функцію, що дозволяє розпізнавати повні квадрати.

  21. Один з алгоритмів перевірки числа на “простоту” полягає в наступному: вихідне число \(N\) послідовно ділять на \(2, 3, 5, 7, 9, ..., 2*p+1\ \ (n \le (2*p+1)^2 \le n+1)\). Якщо жоден із залишків від ділення не дорівнює нулю, то \(n\) — просте. Написати логічну функцію, аргументом якої є довге ціле додатне число. Функція повинна повертати значення true, якщо її аргумент є простим числом.

  22. Скласти функцію, що визначає максимальне число підряд розташованих одиниць в двійковому представленні числа \(n\). Число \(n\) є вхідним параметром для функції.

  23. На площині виділена полоса, яка утворена двома паралельними прямими \(Ax + By + C_1 = 0\) і \(Ax + By + C_2 = 0\). Написати логічну функцію, що приймає значення true, якщо точка з координатами \((x_0, y_0)\) належить вказаній полосі.

  24. Скласти програму, яка вводить \(k\) натуральних чисел \(n_1, n_2, \ldots , n_k\ \ (k < 10)\) і сортує їх, розташовуючи “пірамідкою” (найбільше число — в середині, найменші — по краях). У припущенні, що \(n_i < 80\) організувати виведення відсортованих чисел, представляючи кожне з них відповідною кількістю зірочок в \(i\)-тому рядку. Наприклад, для \(n_1 = 3, n_2 = 7\):

    ***
    *******
    
  25. Скласти програму, яка вводить два значення \(x\) і \(q\), типу float і str відповідно. Перше (\(x\)) розглядається як значення температури, а друге є ознакою системи вимірювання:

    • q = 'C' — для шкали Цельсія;

    • q = 'F' — для шкали Фаренгейта;

    • q = 'K' — для шкали Кельвіна.

    Написати функцію, яка повинна видати значення температури в кожній із трьох систем вимірювань. Зв’язок між системами визначається наступними формулами: $\(F = \frac{9}{5}C + 32 \\ K = 273 + C\)$

  26. Ввести довжини сторін прямокутника. Написати функцію, яка обчислює кут (в градусах) між його діагоналями.

  27. З початку доби минуло \(H\) годин, \(M\) хвилин, \(S\) секунд (\(0 \le H < 12.0 \le M < 60.0 \le S < 60\)). Написати функцію, яка за даними числами \(H\), \(M\), \(S\) повинна визначити кут (в градусах), на який повернулаcь годинникова стрілка з початку доби і вивести його у вигляді дійсного числа. При вирішенні цього завдання не можна користуватися умовними інструкціями і циклами.

  28. Є дві ємності: кубічна з ребром \(A\), циліндрична з висотою \(H\) і радіусом основи \(R\). Написати функцію із вхідними параметрами \(A\), \(H\), \(R\), \(M\), яка визначить, чи поміститься рідина об’єму \(M\) у першу ємність, у другу, в обидві.

  29. Написати функцію, яка переводить число з десяткової системи числення у двійкову або вісімкову.

  30. Написати функцію, яка підраховує кількість парних і непарних цифр в числі, переданому в якості параметра.

Функції для роботи з рядками (Друге завдання)#

Якщо є аналог заданої фунції в методах по роботі з рядками або у вбудованих функціях, їх не застосовувати, а писати свою. Функція повинна реалізовувати поставлену задачу — і нічого більше. Це означає, що функцію можна буде, наприклад, перенести без змін у будь-яку іншу програму, якщо специфікації функції задовольняють умовам задачі.

Примітка: під “словом” всюди розуміється послідовність символів, яка не містить пробілів.

  1. Функція — Copies(s,s1,n). Призначення — копіювання рядка \(s\) в рядок \(s_1\) \(n\) раз.

  2. Функція — Words(s). Призначення — підрахунок слів в рядку \(s\).

  3. Функція — Concat(s1,s2). Призначення — конкатенація рядків \(s_1\) і \(s_2\).

  4. Функція — Parse(s,t). Призначення — поділ рядка \(s\) на дві частини: до першого входження символу \(t\) і після нього.

  5. Функція — StrCenter(s1,s2,l). Призначення — центрування — розміщення рядка \(s_1\) в середині рядка \(s2\) довжиною \(l\).

  6. Функція — Delete(s,n,l). Призначення — видалення з рядка \(s\) підрядка, починаючи з позиції \(n\), довжиною l.

  7. Функція — Left(s,l). Призначення — вирівнювання рядка \(s\) по лівому краю до довжини \(l\).

  8. Функція — Right(s,l). Призначення — вирівнювання рядка \(s\) по правому краю до довжини \(l\).

  9. Функція — Insert(s,s1,n). Призначення — вставка в рядок \(s\) підрядка \(s_1\), починаючи з позиції \(n\).

  10. Функція — Reverse(s). Призначення — зміна порядку символів в рядку \(s\) на протилежний.

  11. Функція — Pos(s,s1). Призначення — пошук першого входження підрядка \(s_1\) у рядок \(s\).

  12. Функція — LastPos(s,s1). Призначення — пошук останнього входження підрядка \(s_1\) у рядок \(s\).

  13. Функція — WordIndex(s,n). Призначення — визначення позиції початку в рядку \(s\) слова з номером \(n\).

  14. Функція — WordLength(s,n). Призначення — визначення довжини слова з номером \(n\) в рядку \(s\).

  15. Функція — SubWord(s,n,l). Призначення — виділення з рядка \(s\) \(l\) слів, починаючи зі слова з номером \(n\).

  16. Функція — WordCmp(s1,s2). Призначення — порівняння рядків (з ігноруванням множинних пробілів).

  17. Функція — StrSpn(s,s1). Призначення — визначення довжини тієї частини рядка \(s\), яка містить тільки символи з рядка \(s_1\).

  18. Функція — StrCSpn(s,s1). Призначення — визначення довжини тієї частини рядка \(s\), яка не містить символи з рядка \(s_1\).

  19. Функція — Overlay(s,s1,n). Призначення — перекриття частини рядка \(s\), починаючи з позиції \(n\), рядком \(s_1\).

  20. Функція — SymbReplace(s,s1,s2). Призначення — заміна в рядку \(s\) комбінації символів \(s_1\) на \(s_2\).

  21. Функція — Compress(s,t). Призначення — заміна в рядку \(s\) множинних входжень символу \(t\) на одне.

  22. Функція — Trim(s). Призначення — видалення початкових і кінцевих пробілів в рядку \(s\).

  23. Функція — StrSet(s,n,l,t). Призначення — установка \(l\) символів рядка \(s\), починаючи з позиції \(n\), в значення \(t\).

  24. Функція — Space(s,l). Призначення — доведення рядка \(s\) до довжини \(l\) шляхом вставки пробілів між словами.

  25. Функція — Findwords(s,s1). Призначення — пошук входження в рядок s заданої фрази (послідовності слів) \(s_1\).

  26. Функція — StrType(s). Призначення — визначення типу рядка \(s\) (можливі типи — рядок букв, десяткове число, 16-кове число, двійкове число і т.д.).

  27. Функція — Compul(s1,s2). Призначення — порівняння рядків \(s_1\) і та \(s_2\) з ігноруванням відмінностей в регістрах.

  28. Функція — Translate(s,s1,s2). Призначення — переклад в рядку \(s\) символів, які входять в алфавіт \(s_1\), в символи, які входять в алфавіт \(s_2\).

  29. Функція — Word(s). Призначення — виділення першого слова з рядка \(s\).

  30. Функція — Substr(s,n,l). Призначення — виділення з рядка \(s\) підрядка, починаючи з позиції \(n\), довжиною \(l\).