Евгений Колесников 1 місяць тому
батько
коміт
4d83559a50
1 змінених файлів з 34 додано та 8 видалено
  1. 34 8
      articles/t1l2.md

+ 34 - 8
articles/t1l2.md

@@ -329,9 +329,16 @@ fun main(){
 
 В общем виде структурная команда цикл с постусловием или цикл — до представляется так: 
 
-![цикл с постусловием](../img/t1l2p10.png)
+```mermaid
+flowchart TD
+    start([начало цикла])
+    start-->proc[серия]
+    proc-->if{условие}
+    if-->|нет|proc
+    if-->|да|finish([конец цикла])
+```
 
-```kt
+```cs
 do {
   //серия
 } while (условие)
@@ -339,16 +346,28 @@ do {
 
 Здесь используется условие окончания цикла. Когда оно становится истинным, цикл заканчивает работу. 
 
-Составим алгоритм решения следующей задачи: даны два натуральных числа М и N. Требуется вычислить их наибольший общий делитель — НОД(M, N). 
+Составим алгоритм решения следующей задачи: даны два натуральных числа `М` и `N`. Требуется вычислить их наибольший общий делитель — НОД(M, N). 
 
-Эта задача решается с помощью метода, известного под названием алгоритма Евклида. Его идея основана на том свойстве, что если M>N, то НОД(М, N) = НОД(М-N,N). Другой факт, лежащий в основе алгоритма, тривиален — НОД(М, М) = М. Для «ручного» выполнения этот алгоритм можно описать в форме следующей инструкции: 
+Эта задача решается с помощью метода, известного под названием алгоритма Евклида. Его идея основана на том свойстве, что если M>N, то НОД(М, N) = НОД(М-N, N). Другой факт, лежащий в основе алгоритма, тривиален — НОД(М, М) = М. Для «ручного» выполнения этот алгоритм можно описать в форме следующей инструкции: 
 
 1. Если числа равны, то взять их общее значение в качестве ответа; в противном случае продолжить выполнение алгоритма
 2. Определить большее из чисел
 3. Заменить большее число разностью большего и меньшего значений
 4. Вернуться к выполнению пункта 1
 
-![блок-схема НОД](../img/t1l2p11.png)
+```mermaid
+flowchart TD
+    start([Начало])
+    start-->input[/Ввод N, N/]
+    input-->if1{$$M \neq N$$}
+    if1-->|Да|if2{$$M > N$$}
+        if2-->|Да|proc1[M := M - N]
+            proc1-->if1
+        if2-->|Нет|proc2[N := N - M]
+            proc2-->if1
+    if1-->|Нет|output[/Вывод M/]
+    output--->finish([Конец])
+```
 
 ```kt
 fun main(){
@@ -369,13 +388,19 @@ fun main(){
 
 В теории алгоритмов известно понятие вспомогательного алгоритма. Вспомогательным называется алгоритм решения некоторой подзадачи из основной решаемой задачи. В таком случае алгоритм решения исходной задачи называется основным алгоритмом.
 
-В качестве примера рассмотрим следующую задачу: требуется составить алгоритм вычисления степенной функции с целым показателем ***у = х<sup>к</sup>***, где к — целое число, х<>0. В алгебре такая функция определена следующим образом: 
+В качестве примера рассмотрим следующую задачу: требуется составить алгоритм вычисления степенной функции с целым показателем $$у = х^к$$, где `к` — целое число, `х<>0`. В алгебре такая функция определена следующим образом: 
 
-![](../img/t1l2p12.png)
+$$x^n = 
+\begin{cases}
+1 & n = 0 \\\\
+\frac{1}{x^{-n}}  & n < 0 \\\\
+x^n & n > 0
+\end{cases}
+$$
 
 Для данной задачи в качестве подзадачи можно рассматривать возведение числа в целую положительную степень.
 
-Учитывая, что ***1/х<sup>-n</sup> = (1/х)<sup>-n</sup>***, запишем основной алгоритм решения этой задачи. 
+Учитывая, что $$\frac{1}{х^{-n}} = (\frac{1}{х})^{-n}$$, запишем основной алгоритм решения этой задачи. 
 
 ```kt
 fun main(){
@@ -429,6 +454,7 @@ fun stepen(x: Float, n: Int): Float {
 Использование процедур позволяет строить сложные алгоритмы методом *последовательной детализации*.
 
 ## Программы для графического отображения алгоритмов
+
 https://draw.io (онлайн)  
 Microsoft Visio  
 Dia (бесплатная)