diff options
1 files changed, 39 insertions, 32 deletions
| -rw-r--r-- | src/teaching/upp-2023/week3/revision.du | 71 |
diff --git a/src/teaching/upp-2023/week3/revision.du b/src/teaching/upp-2023/week3/revision.du index bcbdafa..99875e2 100644 --- a/src/teaching/upp-2023/week3/revision.du +++ b/src/teaching/upp-2023/week3/revision.du @@ -1,8 +1,11 @@ -# Преговор - УПП, Седмица 3, 20.10.2023 +'def title Преговор - УПП, Седмица 3, 20.10.2023 +'def desc Преговор на материала + +# {title} \n -[$presentation-controller] +{presentation-controller} :title_slide35 @@ -20,7 +23,7 @@ bool b; if (condition) b = true; - Грешно е, понеже [`condition`] сам по себе си е от тип bool, с този [`if`] буквално не правите нищо. + Грешно е, понеже {` condition} сам по себе си е от тип bool, с този {` if} буквално не правите нищо. Правилния вариант е: ```cpp @@ -48,7 +51,7 @@ .p Всяка буква действително съответства на определено число, дефинирано от ASCII стандарта. - Наистина '0' е 48 и '9' е 57, обаче от вас [=не=] се очаква да помните ASCII таблицата! + Наистина '0' е 48 и '9' е 57, обаче от вас {b не} се очаква да помните ASCII таблицата! Също, ако не знаеш наизуст кои буква са тези числа, този израз е много неясен. .p @@ -63,11 +66,11 @@ ## С/без загуба на данни -[$br3] +{br3} .p Получи се малко разногласие между това, което Ивана ви е казала и това което аз ви казах. -В края на деня, [=конвертиране от int към unsigned int не губи информация!=] +В края на деня, {b конвертиране от int към unsigned int не губи информация!} .p Цитирайки 4то издание на "The C++ Programming Language" глава 10.5: @@ -88,7 +91,7 @@ A conversion is value-preserving if you can convert a value and then convert the .p Как бихме ги използвали, за да представим отрицателните числа? -Най-лесния начин е да погледнем най-левия (старшия) бит, ако е 0 значи е положително, ако е 1 значи е отрицателно, тоест [`010`] е 2, докато [`110`] е -2. +Най-лесния начин е да погледнем най-левия (старшия) бит, ако е 0 значи е положително, ако е 1 значи е отрицателно, тоест {` 010} е 2, докато {` 110} е -2. Ако разпишем всичките ни числа: ``` @@ -175,17 +178,17 @@ A conversion is value-preserving if you can convert a value and then convert the Това е идеята на "complements", дефинираме отрицателни числа, така че да използваме едно и също събиране между положителни и отрицателни. .p -Още от много старите "калкулатори" ([url https://en.wikipedia.org/wiki/Adding_machine сумиращи машини]), изваждането се е свеждало до събиране на положително и отрицателно число. +Още от много старите "калкулатори" ({url сумиращи машини;https://en.wikipedia.org/wiki/Adding_machine}), изваждането се е свеждало до събиране на положително и отрицателно число. .p -И това е причината защо [`~ 2`] връща [`-3`]: +И това е причината защо {` ~ 2} връща {` -3}: ``` ~ 00000000000000000000000000000010 ────────────────────────────────── 11111111111111111111111111111101 -И затова при [`>>`] със знаков тип имаме аритметическо отместване: +И затова при {` >>} със знаков тип имаме аритметическо отместване: ``` 11111111111111111111111111111101 >> 1 @@ -197,17 +200,17 @@ A conversion is value-preserving if you can convert a value and then convert the ## Цикли -[$br4] +{br4} :unordered -- [`while`] цикъл +- {` while} цикъл ```cpp while (условие) { тяло } - "условие" е булева стойност, като ако е [`false`] цикъла спира, докато ако е [`true`] "тяло" се изпълнява и после пак се проверява условие + "условие" е булева стойност, като ако е {` false} цикъла спира, докато ако е {` true} "тяло" се изпълнява и после пак се проверява условие @@ -215,7 +218,7 @@ A conversion is value-preserving if you can convert a value and then convert the - Може да си го представите като - :code_cpp + ````cpp if (условие) { тяло } @@ -229,14 +232,15 @@ A conversion is value-preserving if you can convert a value and then convert the else { спри } - ... + \... + :slide :unordered -- [`do-while`] цикъл, като [`while`], но "тяло" се изпълнява поне един път +- {` do-while} цикъл, като {` while}, но "тяло" се изпълнява поне един път ```cpp do { @@ -245,7 +249,7 @@ A conversion is value-preserving if you can convert a value and then convert the Нашият аналог е: - :code_cpp + ````cpp тяло if (условие) { @@ -256,14 +260,15 @@ A conversion is value-preserving if you can convert a value and then convert the } if (условие) { - ... + \... + :middle_slide :unordered -- [`for`] цикъл +- {` for} цикъл ```cpp for (инициализация; условие; инкрементация) { @@ -271,7 +276,7 @@ A conversion is value-preserving if you can convert a value and then convert the } "инициализация" се изпълнява само веднъж, преди всичко останало в цикъла\n - "условие" се изпълнява преди всяка итерация, като ако е [`false`] цикъла спира, докато ако е [`true`] продължава\n + "условие" се изпълнява преди всяка итерация, като ако е {` false} цикъла спира, докато ако е {` true} продължава\n "инкрементация" се изпълнява след края на всяка итерация @@ -280,7 +285,7 @@ A conversion is value-preserving if you can convert a value and then convert the :unordered - Може да си представяте, че това на практика извършва: - :code_cpp + ````cpp инициализация if (условие) { @@ -298,14 +303,15 @@ A conversion is value-preserving if you can convert a value and then convert the else { спри } - ... + \... + :middle_slide :unordered -- или използвайки [`while`] цикъл: +- или използвайки {` while} цикъл: ```cpp инициализация @@ -320,18 +326,18 @@ A conversion is value-preserving if you can convert a value and then convert the ### Ключови думи -[$br3] +{br3} :unordered -- [`break`]: моментално прекратява изпълнението на цикъла +- {` break}: моментално прекратява изпълнението на цикъла - .p При [`for`] цикли инкрементацията не се изпълнява след [`break`] + .p При {` for} цикли инкрементацията не се изпълнява след {` break} -[$br2] +{br2} -- [`continue`]: продължи след края на сегашната итерация; тоест изпълнението на тяло се прекратява и започваме нова итерация +- {` continue}: продължи след края на сегашната итерация; тоест изпълнението на тяло се прекратява и започваме нова итерация - .p При [`for`] цикли директно отива на инкрементация + .p При {` for} цикли директно отива на инкрементация @@ -339,17 +345,18 @@ A conversion is value-preserving if you can convert a value and then convert the ## Assert -[$br3] +{br3} .p Понякога е полезно да тестваме нашия код вътре в самия код. Тоест, искаме на конкретно място в кода да проверим нещо. + ```cpp assert(condition); .p -Ако [`condition`] е [`true`], нищо не се случва, обаче ако е [`false`] програмата моментално прекратява изпълнение. +Ако {` condition} е {` true}, нищо не се случва, обаче ако е {` false} програмата моментално прекратява изпълнение. .p -Използва се повече като програмистки уред, тоест ако програмата спре заради [`assert`], това е защото има някаква програмистка грешка. +Използва се повече като програмистки уред, тоест ако програмата спре заради {` assert}, това е защото има някаква програмистка грешка. |