Первая программа на Go lang
В качестве упражнения интерактивная документация по языку программирования Go, о которой я говорил вчера, предлагает посчитать квадратный корень по формуле Ньютона.
А после подсчета в лоб, используя фиксированное количество итераций, нужно было оптимизировать приложение так, чтобы использовалось только нужно количество попыток с определенным допуском.
Красивая задачка, чтобы разобраться с синтаксисом и наступить на пару классических грабель Go.
Вот какой красивый код получился:
package main import ( "fmt" ) func Sqrt(x float64) float64 { z := 1.0 check := 0.0 for i:=0; i <= 100; i++ { z = z - (z*z - x)/(2*z) fmt.Println("Попытка", i, "Квадратный корень =", z) if i != 0 { if check - z < 0.00000001 { fmt.Println("Это значение довольно точное!") break } } check = z } return z } func main() { fmt.Println("Квадратный корень по Ньютону:", Sqrt(5645)) }
А вот результат выполнения:
Попытка 0 Квадратный корень = 2823 Попытка 1 Квадратный корень = 1412.4998228834572 Попытка 2 Квадратный корень = 708.2481417807868 Попытка 3 Квадратный корень = 358.1092560726704 Попытка 4 Квадратный корень = 186.9363008837615 Попытка 5 Квадратный корень = 108.56687651411139 Попытка 6 Квадратный корень = 80.28123878909122 Попытка 7 Квадратный корень = 75.29827319476982 Попытка 8 Квадратный корень = 75.13339593357443 Попытка 9 Квадратный корень = 75.13321502526514 Попытка 10 Квадратный корень = 75.13321502504735 Это значение довольно точное! Квадратный корень по Ньютону: 75.13321502504735
Серьезный шаг вперед, первая программа написана и работает.
А что особенно мне нравится в Go, так это его поддержка кириллицы. Никаких тебе кракозябр в выводе. Все языки должны быть такими.