add homework 7.5

This commit is contained in:
2022-07-01 11:20:00 +07:00
parent 80bba26666
commit 2befd048b1
10 changed files with 208 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
module main
go 1.18

View File

@@ -0,0 +1,28 @@
package main
import (
"fmt"
"main/tasks"
)
func main() {
var taskNum int
fmt.Println("Enter number of task")
fmt.Scan(&taskNum)
switch taskNum {
case 1:
tasks.MetersToFeet()
break
case 2:
tasks.MinElement()
break
case 3:
tasks.DivThree()
break
default:
fmt.Println("Unknown task")
break
}
}

View File

@@ -0,0 +1,12 @@
package tasks
import "fmt"
func DivThree() {
fmt.Println("Numbers that are divisible by 3:")
for i := 1; i <= 100; i++ {
if i%3 == 0 {
fmt.Printf("%d, ", i)
}
}
}

View File

@@ -0,0 +1,17 @@
package tasks
import "fmt"
const metersInFeet float32 = 0.3048
func MetersToFeet() {
var meters int
fmt.Println("Please, input value in meters:")
fmt.Scan(&meters)
fmt.Printf("%f", convert(meters))
}
func convert(meters int) float32 {
return float32(meters) / metersInFeet
}

View File

@@ -0,0 +1,16 @@
package tasks
import (
"testing"
)
func TestConvert(t *testing.T) {
meters := 3048
var expectedResult float32 = 10000.0
result := convert(meters)
if result != expectedResult {
t.Fatalf("convert result is %f, expected %f", result, expectedResult)
}
}

View File

@@ -0,0 +1,23 @@
package tasks
import "fmt"
func MinElement() {
x := []int{48, 96, 86, 68, 57, 82, 63, 70, 37, 34, 83, 27, 19, 97, 9, 17}
fmt.Printf("Min element is %d\n", minElem(x))
}
func minElem(list []int) int {
min := list[0]
for i := 1; i < len(list); i++ {
current := list[i]
if current < min {
min = current
}
}
return min
}

View File

@@ -0,0 +1,15 @@
package tasks
import (
"testing"
)
func MinElemTest(t *testing.T) {
list := []int{1, 2, 3, 4}
expectedResult := 1
actualResult := minElem(list)
if expectedResult != actualResult {
t.Fatalf("minElem result is %d, expected %d", actualResult, expectedResult)
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

View File

@@ -0,0 +1,93 @@
Выполнение [домашнего задания](https://github.com/netology-code/virt-homeworks/blob/master/07-terraform-05-golang/README.md)
по теме "7.5. Основы golang".
## Q/A
### Задание 1
> Установите golang
>
> 1. Воспользуйтесь инструкций с официального сайта: [https://golang.org/](https://golang.org/).
> 2. Так же для тестирования кода можно использовать песочницу: [https://play.golang.org/](https://play.golang.org/).
```shell
go version
go version go1.18.3 linux/amd64
```
### Задание 2
> Знакомство с gotour.
>
> У Golang есть обучающая интерактивная консоль [https://tour.golang.org/](https://tour.golang.org/).
> Рекомендуется изучить максимальное количество примеров. В консоли уже написан необходимый код,
> осталось только с ним ознакомиться и поэкспериментировать как написано в инструкции в левой части экрана.
![gotour](./gotour.png)
### Задание 3
> Написание кода
>
> Цель этого задания закрепить знания о базовом синтаксисе языка. Можно использовать редактор кода
> на своем компьютере, либо использовать песочницу: [https://play.golang.org/](https://play.golang.org/).
>
> 1. Напишите программу для перевода метров в футы (1 фут = 0.3048 метр). Можно запросить исходные данные
> у пользователя, а можно статически задать в коде.
> Для взаимодействия с пользователем можно использовать функцию `Scanf`:
> ```go
> package main
>
> import "fmt"
>
> func main() {
> fmt.Print("Enter a number: ")
> var input float64
> fmt.Scanf("%f", &input)
>
> output := input * 2
>
> fmt.Println(output)
> }
> ```
>
> 1. Напишите программу, которая найдет наименьший элемент в любом заданном списке, например:
> ```
> x := []int{48,96,86,68,57,82,63,70,37,34,83,27,19,97,9,17,}
> ```
> 1. Напишите программу, которая выводит числа от 1 до 100, которые делятся на 3. То есть `(3, 6, 9, …)`.
>
> В виде решения ссылку на код или сам код.
1. Программа для перевода метров в футы: [meters_to_feet.go](./golang/tasks/meters_to_feet.go).
2. Программа для нахождения наименьшего элемента в списке: [min_element.go](./golang/tasks/min_element.go)
3. Программа для вывода чисел, которые деляться на 3: [div_three.go](./golang/tasks/div_three.go)
Для запуска программ нужно проделать следующие шаги:
1. Перейти в директорию [golang](./golang/)
```shell
cd golang
```
1. Запустить программу:
```shell
go run main.go
```
1. Ввести в консоль число от 1 до 3, в зависимости от необходимой программы
### Задание 4
> Протестировать код
>
> Создайте тесты для функций из предыдущего задания.
Написал тесты для [программы 1: meters_to_feet](./golang/tasks/meters_to_feet_test.go) и [программы 2: min_element](./golang/tasks/min_element_test.go).
Запуск тестов:
```shell
cd golang/tasks
go test
PASS
ok main/tasks 0.003s
```