Курс по Nim

Тип значения: int, float, string, bool | Курс по Nim, урок 6

Тип значения: int, float, string, bool | Курс по Nim, урок 6
Михаил Омельченко
Автор
Михаил Омельченко
Опубликовано 04.11.2026
0,0
Views 2

Необходимые знания

Урок 1, Терминал и папки: первые команды: команда cd. Урок 4, Ошибка компилятора: как её читать: папка nim-kurs в редакторе, создание файла, сообщение cannot open, команда nim c -r --hints:off, адрес ошибки, кандидаты в сообщении. Урок 5, Переменная: var и let: объявление, присваивание, сообщение ':' or '=' expected.

Чем закончился урок 5

Программа из файла traty.nim печатает три строки, последняя из них сумма 1550. Вторая строка у вас может быть своя.

Откройте терминал и перейдите в папку nim-kurs. Эту же папку откройте в редакторе кода.

Так выглядит traty.nim после урока 5. Если файла нет или он не собирается, сохраните в него этот текст.

Пример traty.nim

echo "Учёт трат"
echo "Программа считает мои расходы"
var total = 0
total = total + 350
total = total + 1200
echo total

На Mac команды этого урока не запускались.

Что такое тип

В строке var total = 0 файла traty.nim значение это число. В строке echo "Учёт трат" значение это текст.

Тип это вид значения. От типа зависит, что можно делать со значением: к числу можно прибавить 350, к тексту нельзя. При сборке компилятор проверяет типы: можно ли сделать со значением то, что написано в программе.

Типы этого урока:

1) int: целое число, например 7 или -5

2) float: дробное число, например 21.5. Дробная часть отделяется точкой

3) string: текст в кавычках, например "Казань". Такое значение называется строкой. Дальше в уроке "строка" значит строку файла или вывода

4) bool: одно из двух значений, true (истина, да) или false (ложь, нет). По значению bool программа выбирает, что делать дальше. Разберу это в уроке 11

Тип по значению

В var total = 0 тип не написан. Компилятор определяет его по значению: 0 без точки и без кавычек, это int. Такой же тип получает переменная total.

Создайте файл pogoda.nim в папке nim-kurs. Наберите строки из примера в английской раскладке, кроме Казань, и сохраните файл.

Пример pogoda.nim

let days = 7
let temperature = 21.5
let city = "Казань"
let rain = false
echo days
echo temperature
echo city
echo rain

Наберите в терминале:

nim c -r --hints:off pogoda.nim

Вывод в PowerShell и Linux:

7
21.5
Казань
false

Строки вывода по порядку:

1) 7: строка 5 файла печатает days, тип int.

2) 21.5: строка 6 печатает temperature, тип float.

3) Казань: строка 7 печатает city, тип string. Кавычки отмечают границы текста в коде и не печатаются.

4) false: строка 8 печатает rain, тип bool.

echo 350 и echo "350" печатают одно и то же, а типы разные: int и string. К 350 можно прибавить число, к "350" нельзя.

Тип, записанный явно

Тип можно записать явно, знаком : после имени. У var и let запись одинакова:

var имя: тип = значение

В уроке 5 строка var steps дала сообщение ':' or '=' expected. После имени должен стоять : с типом или = со значением. Иначе тип взять неоткуда.

Если значения при объявлении нет, тип записывается обязательно: var days: int. Такая переменная получает значение по умолчанию, у int это 0. У let значение обязательно.

Проверка типов при сборке

Создайте файл nedelya.nim в папке nim-kurs. Наберите строки из примера и сохраните файл.

Пример nedelya.nim

var days: int = 7
echo days
days = "неделя"
echo days

Наберите:

nim c -r --hints:off nedelya.nim

Имя Anna в путях у вас будет своё.

Вывод в PowerShell:

C:\Users\Anna\nim-kurs\nedelya.nim(3, 8) Error: type mismatch: got 'string' for '"неделя"' but expected 'int'

Вывод в Linux:

/home/anna/nim-kurs/nedelya.nim(3, 8) Error: type mismatch: got 'string' for '"неделя"' but expected 'int'

Адрес: строка 3, столбец 8, там начинается значение "неделя". Перевод: "несовпадение типов: получено 'string' для '"неделя"', ожидался 'int'".

7 не напечаталось, хотя echo days стоит выше. Сборка не прошла, поэтому программа не запускалась. Ошибка найдена до запуска: ждать, пока программа дойдёт до строки 3, не нужно.

Откройте файл nedelya.nim в редакторе. Замените строку 1 на var days = 7 и сохраните файл. Снова наберите команду сборки. Сообщение то же: компилятор определил int по значению 7.

Тип переменной задаётся при объявлении и потом не меняется.

Поэтому запишите значение нужного типа. Снова откройте файл nedelya.nim в редакторе. Замените строку 3 на days = 8 и сохраните файл. Снова наберите команду сборки. Программа напечатает 7 и 8.

Ошибки в этих командах

Строки ниже показаны для PowerShell. В Linux отличается только начало пути. После каждой правки сохраните файл и снова соберите его.

':' or '=' expected. Знак : пропущен в строке var days int = 7:

C:\Users\Anna\nim-kurs\nedelya.nim(1, 10) Error: ':' or '=' expected, but got 'int'

Перевод: "ожидалось ':' или '=', получено 'int'". Допишите : сразу после имени.

undeclared identifier. Опечатка в имени типа, var days: innt = 7:

C:\Users\Anna\nim-kurs\nedelya.nim(1, 11) Error: undeclared identifier: 'innt'
candidates (edit distance, scope distance); see '--spellSuggest': 
 (1, 2): 'int'

Перевод: "необъявленное имя: 'innt'". Кандидат int. Пара (1, 2) не адрес, на неё можно не смотреть. Напишите int.

invalid indentation. В строке let temperature = 21,5 дробная часть отделена запятой:

C:\Users\Anna\nim-kurs\pogoda.nim(2, 21) Error: invalid indentation

Перевод: "неверный отступ". Отступа в этой строке нет, столбец 21 указывает на запятую. Поставьте точку: 21.5.

Задание

Создайте файл tipy.nim в папке nim-kurs. Объявите с var и явным типом четыре переменные:

1) count, тип int, значение 2

2) price, тип float, значение 775.5

3) category, тип string, значение "кафе"

4) paid, тип bool, значение true

Всё, кроме кафе, наберите в английской раскладке.

Ниже напечатайте каждую переменную отдельным echo, в том же порядке. Сохраните файл. Наберите:

nim c -r --hints:off tipy.nim

Снова откройте файл tipy.nim в редакторе. Последней строкой допишите присваивание без var, как days = 8: в count запишите "два". Сохраните файл. Снова наберите команду сборки.

Верно, если:

1) после первой сборки программа печатает четыре строки: 2, 775.5, кафе, true

2) при второй сборке компилятор печатает type mismatch: got 'string', адрес указывает на дописанную строку

После проверки откройте файл, удалите дописанную строку, сохраните файл и соберите его ещё раз: снова четыре строки. Файл traty.nim в этом уроке не менялся, с него начнётся урок 7.

Итоги

Тип это вид значения. От него зависит, что можно делать со значением. Компилятор определяет тип по значению, или вы записываете его знаком : после имени. Тип переменной не меняется. Несовпадение типов останавливает сборку, и программа не запускается.

В уроке 7 разберу арифметику: + - * / div mod.

Код урока

Примеры этого урока лежат в репозитории курса, папка lesson_06.

Предыдущий урок: Переменная: var и let

Следующий урок: Арифметика: + - * / div mod


Подписывайтесь на мой Telegram канал

0,0

Авторизуйтесь, чтобы оставить комментарий.

Комментариев: 0

Нет комментариев.

Тут может быть ваша реклама

Пишите info@aisferaic.ru

Похожие туториалы