2. Hodina Algoritmizace * Asymptotické notace - definice - Co jsou f a g v def (slidy prednasky) a kde se vzaly? (funkce a a proč funkce kdyz provnavame algos) - Jak porovnáváme dvě čísla (např. inty)? - Jak porovnáváme dvě funkce? (nutné definovat definiční obor); - Asymptotická notace jako "porovnávadlo funkcí"; - Idea: meze, horní meze, asymptotická horní meze; * Asymptotické notace - příklady 1.1 2x funkce s grafem 1.3 Dokažte nebo vyvraťte tvrzení. Pro každou dvojici funkcí f, g: N_0 -> R platí: 1.3.2 f(n) = 2n^2 + n a g(n) = n^2; f(n) = O(g(n)) 1.3.3 ((n^2)/2)-3n= O(n^2) 1.6 Dokažte nebo vyvraťte tvrzení. Pro každou dvojici funkcí f1, f2: N_0 -> R platí: Nechť f_1 a f_2 jsou funkce pro, které platí f_1(n) in O(g(n)) a f_2(n) in O(g(n)). Potom f_1(n) + f_2(n) in O(g(n)). 1.8. Dokažte nebo vyvraťte tvrzení. Pro každou dvojici funkcí f1, f2: N_0 -> R platí: Nechť f(n) = f1(n) + f2(n) a f1(n) in O(f2(n)). Pak f(n) in O(f2(n)) 1.10 Dokažte nebo vyvraťte tvrzení. Pro každou dvojici funkcí f, g: N_0 -> R platí: 1.10.1 pokud f(n) = O(g(n)), pak g(n) = Omega(f(n)) 1.10.2 pokud f(n) = O(g(n)), pak 2^f(n) = O(2^g(n)) 1.10.3 f(n) = O(f(n)^2) 1.12 Nechť f_1 a f_2 jsou funkce pro které platí f_1(n) in O(g_1(n)) a f_2(n) in O(g_2(n)). Potom f_1(n) . f_2(n) in O(g_1(n) . g_2(n)) Programování 2. Hodina Python: konzole, IDLE, REPL, Adam lec 1.: základní typy: int, float, bool, string; přetypování (implicitní, explicitní) Recodex: představení a první serie domácích úkolů; nerokokní výstup programu pro recodex Python: jako kalkulačka Python: IO (input(), print()), cykly, if, identace, komentáře (Adam a Programiz;) (python script *.py; rozumné pojmenování programů;) * Příklad 1: Napište program, který vypočítá obsah obdélníku při zadání velikosti jeho stran (načte právě dvě číselné hodnoty a vynásobí je) a vypíše - načtení dvou hodnot (2x input() ) a vypsání výsledků * Příklad 2.1: Napište program, který postupně načte 5 (int) čísel a vypočítá a vytiskne jejich součet - více než 5 hodnot for od do * Příklad 2.2: Upravte program tak, aby počet načtených hodnot byl parametrem programu (např. zadaný jako první hodnota) - více než 5 hodnot for od do a parametrizované * Příklad 3: Napište program, který postupně čte kladná (int) čísla, načítání ukončí po načtení záporného čísla a vypočtený součet kladných čísel vypíše - while cyklus * Příklad 3.1: Upravte program tak, ze postupně čte (int) čísla, načítání ukončí po načtení stringu "konec" a vypočtený součet kladných čísel vypíše - while cyklus, pretypovavani * Příklad 4. Factorial: Write a program that reads a number N ≥ 0 and prints the value of N!, i.e. 1 ⋅ 2 ⋅ … ⋅ N. Enter N: 6 6! = 720 * Příklad 5. Leap Years: Read a year from the console, and write out "leap" if it is a leap year, or "no leap" if it isn't. A year is a leap year if it's divisible by 4, unless it's divisible by 100, in which case it isn't a leap year, unless it's divisible by 400, in which case it is actually a leap year. Enter year: 1922 no leap === Enter year: 1900 no leap === Enter year: 2000 leap === Enter year: 2020 leap * Příklad 6. Number Guessing: Write a program that plays the following game: the user thinks of a number from 1 to 1000 and the computer guesses it. Think of a number from 1 to 1000. My guess: 500. Is this (h)igh, (l)ow, or (c)orrect? h My guess: 250. Is this (h)igh, (l)ow, or (c)orrect? l … My guess: 467. Is this (h)igh, (l)ow, or (c)orrect? c Total guesses: 8