![Процесс создания программы](../Pictures/01_01.%20Процесс%20создания%20программы.png)  
Процесс создания программы для решения прикладной задачи обычно состоит из 3 этапов:
1) Задача - описывается с помощью некоторого математического аппарата, тем самым создается (описывается, определяется) неформальный алгоритм
2) На основе математической модели определяются АТД, которые будут использоваться в алгоритме. 
    **АТД** - это математическая модель с совокупностью операторов, определенных в рамках этой модели.  
    После определения АТД создается программа на некотором псевдоязыке
3) АТД преобразуется в конкретные структуры данных и операторы некоторого языка программирования, на котором и создается итоговая программа
  
**Пример:** раскраска географической карты  
Дана плоская географическая карта. Требуется раскрасить государства на карте так, чтобы никакие 2 соседних не были раскрашены одним цветом. По возможности использовать небольшое количество цветов  
1) Математическая модель - граф
2) АТД - граф с определенными на нем операциями: 
	- нахождение вершин, смежных с вершиной **i**
	- определение цвета вершины
	- раскраска вершины цветом **color**
	- и т. д.
```
цикл i=1 to количество вершин {
	цикл j=1 to количество вершин {
		если (вершина j смежная с i и вершина j выкрашена цветом color)
			установить флаг цвета color;
		найти первый свободный цвет color_s;
		раскрасить вершину i цветом color_s;
	}
}
```
3) Структуры - двумерный и одномерный массивы
  
![Пример географической карты](../Pictures/01_02.%20Пример%20географической%20карты.png)  