Информационни технологии · 10 клас · урок 3 от 8

Разчитане на алгоритми и резултат от алгоритмичен фрагмент

Да разчетем алгоритъм означава да проследим стъпките му и да предвидим резултата, без да пускаме програмата. Удобно е да водим таблица със стойностите на променливите след всяка стъпка (трасиране). Особено внимание изискват циклите, условията и операциите // (целочислено деление) и % (остатък). В урока решаваме задачи от типа „Какво ще изведе този фрагмент?“ и броим колко пъти се изпълнява дадено действие.

Работен лист за печат

Какво да запомним

  • Трасиране: записваме стойностите на променливите след всяка стъпка.
  • n // k е целочислено деление, n % k е остатъкът: 13 // 4 = 3, 13 % 4 = 1.
  • range(1, 5) дава 1, 2, 3, 4 (без 5).
  • Линейното търсене в списък от n елемента прави най-много n сравнения.

Пример

s = 0; for i in range(1, 5): s = s + i. Стойностите на s са 1, 3, 6, 10, затова print(s) извежда 10.

Проверете се: 15 въпроса

Натиснете въпроса, за да видите верния отговор и обяснението.

  1. Какво ще изведе: x = 4; y = x + 3; print(y)
    • 4
    • 3
    • 7
    • 43

    Отговор: 7

    y = 4 + 3 = 7.

  2. Какво ще изведе: s = 0, после for i in range(1, 5): s = s + i, накрая print(s)
    • 15
    • 4
    • 9
    • 10

    Отговор: 10

    range(1, 5) дава 1, 2, 3, 4, а 1 + 2 + 3 + 4 = 10.

  3. Какво ще изведе: a = 5; b = 2; a = a * b; b = a - b; print(a, b)
    • 10 8
    • 10 3
    • 5 2
    • 10 2

    Отговор: 10 8

    Първо a = 10, после b = 10 − 2 = 8, защото се използва новата стойност на a.

  4. Какво ще изведе: n = 13; print(n // 4, n % 4)
    • 3.25 1
    • 3 1
    • 1 3
    • 3 0

    Отговор: 3 1

    // е целочислено деление (13 = 3 · 4 + 1), а % дава остатъка 1.

  5. k = 0; x = 20; докато x > 1, изпълнявай x = x // 2 и k = k + 1. Колко е k накрая?
    • 3
    • 5
    • 4
    • 10

    Отговор: 4

    x става 10, 5, 2, 1, т.е. цикълът се изпълнява 4 пъти.

  6. Какво ще изведе: x = 10; x = x - 3; print(x)
    • 7
    • 10
    • 3
    • 13

    Отговор: 7

    x се намалява с 3: 10 − 3 = 7.

  7. Какво ще изведе: print("ab" * 3)
    • ab3
    • ababab
    • aaabbb
    • грешка

    Отговор: ababab

    Умножението на низ по цяло число го повтаря.

  8. Какво ще изведе: a = [3, 8, 1]; print(max(a) - min(a))
    • 8
    • 2
    • 7
    • 11

    Отговор: 7

    max е 8, min е 1, а 8 − 1 = 7.

  9. x = 7; ако x > 5, то x = x * 2, иначе x = x + 1. Колко е x накрая?
    • 8
    • 7
    • 15
    • 14

    Отговор: 14

    Условието 7 > 5 е вярно, затова се изпълнява x = 7 · 2 = 14.

  10. c = 0; for i in range(10): ако i % 3 == 0, то c = c + 1. Колко е c накрая?
    • 4
    • 3
    • 10
    • 9

    Отговор: 4

    Кратни на 3 сред 0, 1, ..., 9 са 0, 3, 6 и 9, т.е. четири числа.

  11. Колко сравнения прави линейното търсене в най-лошия случай в списък от 100 елемента?
    • 1
    • 7
    • 100
    • 50

    Отговор: 100

    Линейното търсене проверява елементите един по един; двоичното търсене в подреден списък би стигнало до 7.

  12. Какво ще изведе: a = 3; b = a + a; print(b * 2)
    • 6
    • 12
    • 9
    • 18

    Отговор: 12

    b = 6, а b * 2 = 12.

  13. Какво ще изведе: print(17 % 5)
    • 3
    • 5
    • 3.4
    • 2

    Отговор: 2

    17 = 3 · 5 + 2, остатъкът е 2.

  14. Колко пъти ще се изпълни print в: for i in range(2, 8): print(i)
    • 8
    • 5
    • 7
    • 6

    Отговор: 6

    range(2, 8) дава 2, 3, 4, 5, 6, 7, тоест 6 числа.

  15. Какво ще изведе: s = 1; for i in range(1, 5): s = s * i; накрая print(s)
    • 24
    • 120
    • 10
    • 6

    Отговор: 24

    s става 1, 2, 6, 24.