КФ МГТУ им. Н.Э. Баумана. ЛАБОРАТОРНАЯ РАБОТА № 2 «Введение в программирование на языке Go»
Цель работы: сформировать практические навыки написания программы на языке Go.
Задачи: разработать программу на языке Go в соответствии с вариантом и рекомендациями, выполняющую 2 задания. Первое задание подразумевает написание функции, реализующей описанный функционал. Во втором задании – обязательно применение регулярных выражений.
Теоретические сведения
Go представляет компилируемый статически типизированный язык программирования от компании Google. Язык Go предназначен для создания различного рода приложений, но прежде всего это веб-сервисы и клиент-серверные приложения. Хотя также язык обладает возможностями по работе с графикой, низкоуровневыми возможностями и т.д.
Работа над языком Go началась в 2007 в недрах компании Google. Одним из авторов является Кен Томпсон, который, к слову, является и одним из авторов языка Си (наряду с Денисом Ритчи). 10 ноября 2009 года язык был анонсирован, а в марте 2012 года вышла версия 1.0. При этом язык продолжает развиваться. Текущей версией на момент написания данной статьи является версия 1.12, которая вышла в феврале 2019 года.
Язык Go развивается как open source, то есть представляет поект с открытым исходным кодом, и все его коды и компилятор можно найти и использовать бесплатно.
Go является кроссплатформенным, он позволяет создавать программы под различные операционные системы — Windows, Mac OS, Linux, FreeBSD. Код обладает переносимостью: программы, написанные для одной из этих операционных систем, могут быть легко с перекомпиляцией перенесены на другую ОС.
Основные особенности языка Go:
- компилируемый;
- статически типизированный;
- присутствует сборщик мусора;
- поддержка работы с сетевыми протоколами;
- поддержка многопоточности и параллельного программирования.
В настоящее время Go находит широкое применение в различных сферах. В частности, среди известных проектов, которые применяют Go, можно найти следующие: Google, Dropbox, Netflix, Kubernetes, Docker, Twitch, Uber, CloudFlare и ряд других.
Что нужно для работы с Go? Прежде всего необходим текстовый редактор для набора кода и компилятор для преобразования кода в исполняемый файл. Также можно использовать специальные интегрированные среды разработки (IDE), которые поддерживают Go, например, GoLand от компании JetBrains. Существуют плагины для Go для других IDE, в частности, IntelliJ IDEA и Netbeans.
Выполнение работы
Задание 1: напишите функцию сортировки списка вещественных чисел методом «пузырька».
Краткое описание работы программы: внутри программы задается массив вещественных чисел. Массив направляют в функцию BubbleSort, необходимую для сортировки пузырьком (пошагово перебираются все элементы массива, и, если как-то меньше предыдущего, он помещается раньше большего). Результат сортировки выводится на экран.
Листинг программы для задания 1:
package main
import (
«fmt»
)
func main() {
ar := []float64{3.1, 4.8, 1.1, 2.9, 5.5, 7, -1, 0}
fmt.Println(ar)
BubbleSort(ar)
fmt.Println(ar)
}
func BubbleSort(ar []float64) {
for i := 0; i < len(ar); i++ {
for j := i; j < len(ar); j++ {
if ar[i] > ar[j] {
swap(ar, i, j)
}
}
}
}
func swap(ar []float64, i, j int) {
tmp := ar[i]
ar[i] = ar[j]
ar[j] = tmp
}
Результат работы:
Рисунок 1 – Результат выполнения программы
Задание 2: в языке разметки HTML есть понятие тэг и атрибут. В строке: Example Link a это имя тега, href это имя атрибута, http://www.quackit.com/html/tutorial/html_links.cfm — значение атрибута. Составьте регулярное выражение, принимающее на вход строку с html-рамзеткой (набором тегов), а на выходе генерирующее список имён тегов, список имён атрибутов, список значений атрибутов.
Листинг программы для задания 2:
package main
import (
«fmt»
«regexp»
)
func match(pattern string, text string) {
matched, _ := regexp.Match(pattern, []byte(text))
if matched {
fmt.Println(«MATCH — YES v»)
} else {
fmt.Println(«MATCH — NO X»)
}
}
func main() {
var text string = «<a href=\»http://www.quackit.com/html/tutorial/html_links.cfm\»>Example Link</a>»
fmt.Println(«EXPRESSION: «, text)
pattern := `http://\w+\.\S+\.+\w+`
fmt.Println(«—————«)
match(pattern, text)
fmt.Println(«ATTRIBUTE’S MEANING: «)
re := regexp.MustCompile(pattern)
fmt.Printf(«%q\n», re.FindAllString(text, -1))
fmt.Println(«—————«)
pattern2 := `\s\w+=»`
match(pattern2, text)
re2 := regexp.MustCompile(pattern2)
fmt.Println(«ATTRIBUTE’S NAME: «)
fmt.Printf(«%q\n», re2.FindAllString(text, -1))
fmt.Println(«—————«)
pattern3 := `<\w+\s`
match(pattern3, text)
re3 := regexp.MustCompile(pattern3)
fmt.Println(«TAG’S NAME: «)
fmt.Printf(«%q\n», re3.FindAllString(text, -1))
}
Результат работы:
Рисунок 2 – Результат выполнения программы
Вывод: в ходе выполнения лабораторной работы были сформированы практические навыки написания программы на языке Go, изучены регулярные выражения.
или напишите нам прямо сейчас:
Здравствуйте. Скажите пожалуйста, планирую поступать в магистратуру на факультет Психологии « Психология личности»в РГГУ скажите пожалуйста, есть ли у вас, ответы на вступительные экзамены? так как, планирую, сделать акцент на бюджет. Спасибо.
Арсений, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Дистанционная помощь в защите ВКР
Анастасия, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте. Нужна срочно практическая часть вкр, третья глава. Скину похожие работы, на которые можно ориентироваться
Александр, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
вкр по теме: экологический туризм России : анализ состояния, проблемы и перспективы
Людмила, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте вы защищаете ВКР?
Ольга, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать магистерскую ВКР на тему «Совершенствование логистических бизнес-процессов на примере торговой компании». Не менее 100 страниц.
Миша, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте нужна работа Вкр
Лена, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать ВКР 3 раздела Тема строительство строительство жилого дома с применением каркасно-монолитных технологий Антиплагиат от 75% ПЗ и чертежи
Владимир, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.