Jump to content
Sign in to follow this  
Elec

OpenComputers. Урок 1.

Recommended Posts

Время сокращать разрыв между игроками за OpenComputers, здесь будет основа, что бы вы могли разобраться в чужих кодах в будущем.
Будем считать что у вас собран нормальный не дешманский пк и у него уже есть все компоненты, просто скину внутренности своего системника, как собрать пк разберётесь.
Системник:

Скрытый текст

image.png.5b5972b234e27d888e77d08db216ce75.png


Инструкция управления компом:
"Вбить" - напечатать следующее и нажать кнопку enter
Далее по списку на вбивание:
1. install - установка вашей первой OS при наличии нужной дискеты.Далее следуйте инструкциям.
    -Выбрать диск если их больше 1-го,
    -Вбить y (начнётся установка),
    -Вбить y (перезапуск компа),
2. ls - список файлов на пк.
3. edit название.lua - создать/отредактировать программу (.lua после названия обязательно!)
4. название.lua - запустить программу (можно без .lua)
5. Вставить буфер обмена - в настройках, аналог Ctrl+V, только на одну кнопку. Мне удобно на RCtrl.
6. Ctrl+S - сохранить программу.
7. Ctrl+W - выйти из программы.
8. Ctrl+F - поиск по программе, нажать ещё раз что бы искать далее.

Начнём со стандартного Hello World, это ваше самообучение. Способ вывести информацию из программы на консоль и разобраться самому.

Скрытый текст

print("Сообщение") -- далее будет несколько примеров, к слову после "--" на этой строчке в программе можно писать свой комментарий.

--Это не повлияет на работу программы. 
Сообщение

print("Hello work") --[[Первая строчка много строчного комментария
Вторя
Третья
И сколько захочется, не забудьте закрыть скобки в конце]]
Hello work

A, B = 2, 3 --[[Присвоение глобальным переменным A = 2 и B = 3, так же можно саписать как:
A = 2
B = 3
Если вам не жалко строк]]
C = A + B -- Заставляем комп выполнить лог операцию.
print("C = "..C) -- В скобках наш текст от ума, а после двух точек переменная, комп выдаст её значение.
C = 5 

t = "текст"
print(t)

текст

A = 2
print("1" + A)

3


Теперь о переменных:
Тип переменной присваивается автоматически если вы её правильно записывайте, так же если вы записали скажем просто число в текстовой переменной и эту же переменную используете в арифметической операции, то система может использовать её как числовую, но если у неё не получится она выдаст ошибку.
*Глобальные переменные - переменные остаются на протяжении всей работы программы.
A = 1
*Локальные переменные - после выполнения блока или цикла получают значение nil, хотя сама программа может продолжать свою работу.
local a = 1

1. Nil (ничего), у неё только одно значение - nil. Все переменные которым не были присвоены какие либо значения здесь.

Скрытый текст

а = nil

print(b)

nil

2. Boolean (логический) - false (ложь) и true (истина). Значение nil рассматривается как false. Все остальные включая 0 и пустую строку как true.

Скрытый текст

a = true

b = false

3. Number (числовой). Просто цифры.

Скрытый текст

a = 123
Можно преобразовать текстовые переменные в числовые, если условия позволяют:
A = tonumber ("10")
t = type (A)
print(t)
print(A)

number
10

A = tonumber ("10"..".5")
t = type (A)
print(t)
print(A)

number
10.5

4. String (строковый) - Текст:

Скрытый текст

a = "123"

Любую переменную можно перевести в текст или создать новую текстовую переменную на информации от той переменной что была.
A = 10 --[[Числовая переменная]]
t = type (A)
print(t)
A = tostring (A)
--[[Мы делаем переменную A текстовой, со значением переменной A, так как новое значение переменной A ещё не было присвоено, оно возмёт то что есть - 10]]
t = type (A)
print(t)
print(A)

number
string
10

Если мы пропишем
print("print("бла бла")") --[[После второй ковычки он ищет скобку или следующее действие в этом принте, но ни как не текст]]
*Ошибка*

print("print(\"бла бла\")") --[[Такие места надо помечать обратными слешами, ниже список символов]]
print("бла бла")

Список:
\b (пробел),
\n (перевод строки),
\r (возврат каретки);
\t (горизонтальная табуляция),
\\ (обратный слеш);
\" (двойная кавычка);
\' (одинарная кавычка).
\ddd, где ddd — последовательность из не более чем трёх цифр.

Так же вместо "" можно использовать [[]], в них можно не заморачиваться над синтаксисом:

print([[print("")]])
print("")

И даже переносить строку с пробелами и отступами:

t = [[Текст1
текст2
+
 end
A + B = c
@@Текст3 и т.д.]]
print(t)

Текст1
текст2
+
 end
A + B = c
@@Текст3 и т.д.

Дабы не путать двойные скобки текстовых переменных от коментарий пользователя можно между скобками ставить "="

print([[Текст]]) --[=[Хитроумный коментарий пользователя]=]
Текст

5. Table (таблица)

Скрытый текст

a = {} -- создаем таблицу
b = a -- переменная b ссылается на ту же таблицу, что и a
a[1] = 10 -- элементу таблицы с индексом 1 присвоено значение 10

6. function (функция)

Скрытый текст

О том как спросить у компа какой переменной будет введённое значение:
t = type ("текст")
print(t)

string

t = type (123)
print(t)

number

t = type (type)
print(t)

function

t = type (true)
print(t)

boolean

t = type (nil)
print(t)

nil

t = type ({})
print(t)

table

 

Операции с переменными:
1. Арифметические операции.
- -- вычитание
+ -- сложение
* -- умножение
/ -- деление)
^ -- возведение в степень
% -- остаток от деления

Скрытый текст

A, B = 2, 2
C = (A + B + 1) / 2
print(C) 

2.5

A, B = 3, 3
C = (A + B - 1) % 2
print(C)
--[=[Последнее действие немного отличается, мы получим не результат деления, а цельный остаток от него. 5 / 2 = 2 и в остатке 1, этот остаток он нам и выдаст]=]
1

A, B = 4, 5
C = A ^ B * A
print(C)

4096

2. Операции сравнения.

== -- равно
~= -- не равно
< -- меньше
> -- больше
<= -- меньше или равно
>= -- больше или равно
Если сравнение верно, то результат трактуется как true, если нет то как false
В придачу система видит большую разницу между "1" и 1, первая текстовая переменная, а вторая числовая, если их сравнивать, на выходе будет false:

Скрытый текст

A = "1"
B = 1
C = A == B
print(C)

false

A = "1"
B = 1
C = A ~= B
print(C)

true

A = 1
B = 1
C = A == B
print(C)

true

3. Логические операции. Расставлены в приоритетном списке.

Скрытый текст

1. () - первое действие в скобках, советую посмотреть лог операции ниже, а потом вернутся к примерам здесь.

A = not (true or false) -- 1 или 0 = 1, not 1 = 0
print(A)
false

A = not (false or false and true) --[[ здесь приоритет падает на and в скобочках, потому что у or приоритет ниже, false and true = false, false or false = false, not false = true]]
print(A)
true


2. not (не) - отрицание

A = not true
print(A)

false

A = not false
print(A)

true

3. and (и) - умножение
Тут важно помнить как это работает и можно зарисовать табличку истинности, прикол в том что все лог операции так или иначе представляются через 3 операции (не, и, или). Если вы выучите эти 3 операции, то вам не придётся понимать остальные, а просто найти их преобразование через основу.
И - истина тогда когда все значения удовлетворяют
false and false = false
false and true = false
true and false = false
true and true = true

A = true
B = true
C = false
D = false
G = A and B and C and D
print(G)

false

A = true
B = true
C = true
D = true
G = A and B and C and D
print(G)

true

4. or (или) - сложение

false and false = false
false and true = true
true and false = true
true and true = true

A = true
B = true
C = false
D = false
G = A or B or C or D
print(G)

true

A = false
B = false
C = false
D = false
G = A or B or C or D
print(G)

false

4. Операция конкатенации.
Это соединение 2 и более переменных в одну, но выдаёт ошибку если не может соединить разные переменные, скажем текстовую и логическую, по этому сначала логическую переменную надо перевести в текстовую.

Скрытый текст

A = 0
B = 1
C = A..B
print(C)

01

A = true
B = false
C = not A or B
--[[Лог операция если A то B выраженная через отрицание и сложение]]
t = tostring (C) --[[Присваиваем t значения с переменной C, но t - уже текстовая переменная]]
print([[not A or B = ]]..t)
not A or B = false

A = true
B = false
C = not A or B
print([[not A or B = ]]..C)

Error

5. Операция получения длины.

Скрытый текст

A = "текст"
len = #A
--[[Узнаёт длину строчки переменной A]]
print(#A)
10

Приоритет всех операций
1. ^
2. not # 
3. * / %
4. + -
5. ..
6. < > <= >= ~= ==
7. and
8. or

 

Циклы:

Цикл от и до с шагом:

Скрытый текст

A = 2
print(A)
for i = 3, 9, 3 do
--[[От 3 до 9 с шагом 3. Можно от большего к меньшему, тогда шаг должен быть отрицательным.]]
A = A*2
print(A)
end

2
4
6
8
16

О том зачем от 3 с шагом 3, скажем:

A = {{11,12,13},{21,22,23},{31,32,33}} --[[Мы создали двухмерную таблицу]]
print(A[1][1],A[1][2],A[1][3])
print(A[2][1],A[2][2],A[2][3])
print(A[3][1],A[3][2],A[3][3])
--[[А теперь скажем мы хотим умножить значения в этой табличке на 2, начиная со второй строки и только нечётные столбы. Да как за нефиг, всего же 4 переменной от руки поменять, а если табличка будет 100 на 100?]]
for i = 2, 3, 1 do --[[Локальная переменная начинается с 2, заканчивается на 3 и прыгает на 1]]
for g = 1, 3, 2 do --[[Локальная переменная начинается с 1, заканчивается на 3 и прыгает через 1, тоесть 2-ой столбик она не затронет. Цикл открыт в цикле, по этому когда этот цикл завершится - продолжится верхний цикл]]
local t = A[g] --[[Далее мы присваиваем локальной t значение ячейки i, g где i строка, а g столбик]]
A[g] = t * 2 --[[Умножаем содержимое ячейки на 2, или меняем его как хотим по желанию]]
end
end
print([[]])
print(A[1][1],A[1][2],A[1][3])
print(A[2][1],A[2][2],A[2][3])
print(A[3][1],A[3][2],A[3][3])

11    12    13
21    22    23
31    32    33

11    12    13
42    22    46
62    32    66

Цикл делать пока условие соблюдено.

Скрытый текст

A = 1
print(A)
while A < 10 do
A = A + 5
print(A)
end

1
6
11

Цикл делать до того момента пока не будет соблюдено условие.

Скрытый текст

A = 19
print(A)
repeat
A = A - 5
print(A)
until A < 10

19
14
9


 
На этом первый урок закончен.

  • good 2

Share this post


Link to post
Posted (edited)

Это сложно назвать уроком. Это больше похоже на очень урезанную версию основ языка lua. Игрок, который первый раз это видит, и не изучал до этого языков программирования — ничего не поймет. Ваш экскурс ничего общего не имеет  с OpenComputers. Для начала, к примеру, я бы рекомендовал детально остановиться на сборке компьютера и установке OpenOS (с этим у новичков часто возникают проблемы), а уже потом знакомить их с интерпретатором lua. Если просто "вбить", как вы говорите, код в терминал — ничего не произойдет.

Имхо, ничего не понятно. Зачем создавать такое, и писать:

Quote

как собрать пк разберётесь

 

Edited by ADB
  • good 1

Share this post


Link to post

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

4. or (или) - сложение

false and false = false
false and true = true
true and false = true
true and true = true

Share this post


Link to post
8 часов назад, ADB сказал:

Это сложно назвать уроком. Это больше похоже на очень урезанную версию основ языка lua. Игрок, который первый раз это видит, и не изучал до этого языков программирования — ничего не поймет. Ваш экскурс ничего общего не имеет  с OpenComputers. Для начала, к примеру, я бы рекомендовал детально остановиться на сборке компьютера и установке OpenOS (с этим у новичков часто возникают проблемы), а уже потом знакомить их с интерпретатором lua. Если просто "вбить", как вы говорите, код в терминал — ничего не произойдет.

Имхо, ничего не понятно. Зачем создавать такое, и писать:

 

Очень похоже на урезанную версию критики. Ты картинку системника смотрел или тебе сегодня общаться не с кем?

Ты похож на среднестатистического игрока в майнкрафт, этот мод не то что можно посмотреть за 10 секунд в NEI и сразу базу на его основе запилить. Приготовься - возьми кружку чая или кофе и посиди почитай один гайд, если не понятно почитай другой. Что-то пришло на ум? Зайди в майнкрафт и проверь свои догадки, молодец ты получил практический опыт, ты можешь вернутся к гайдам которые не понял и может быть что-то теперь из них выудишь. Это гайдерская, а не отдел жалоб, здесь не быкуют на людей, потому что полезную информацию ты будешь получать от них же, а ведёшь ты себя не самым подобающим образом. Ещё раз повторяю на гайды не быкуют! Ты либо показываешь мастер-класс, либо задаёшь вопросы где именно не понял. Связь между учеником и учителем нащупывается в процессе обучения, а когда ты говоришь: "Твой урок плохой и я не буду тебя слушать так как нифига не понимаю" - не о каком обучении речи быть не может.

Если игрок не сможет сам собрать комп - ему тут ловить нечего, потому что потом ему придётся придумывать свои код. Писать гайды таким бесполезно, для них существуют гайды с командой скачивания или код выложен.

Критиковать надо правильно:

1. Ты должен шарить за то что ты критикуешь.

2. В твоей критике не должно быть тавтологии и человек её должен понять конструктивно, а не как агрокрик школьника.

Ты не шаришь за то как именно создаются сейчас гайды. Их нельзя редактировать спустя полчасика-часик, это создаёт трудности с доработкой и исправлением ошибок в нём, а создание длинных гайдов сильно изматывает. 

Ты не шаришь за сам гайд который не читал. Если бы ты его читал, то написал о том что я И с ИЛИ перепутал первым.

В придачу дам тебе информацию о том что не весь синтаксис lua из интернета переваривает OpenComputers, всё что написано здесь опробовано и написано на пк в майнкрафте мной - работает.

Так же все новые языки одинаковые по системе исполнения у них различие лишь в синтаксисе. Это типо как в одном языке принято говорить: "Мальчик шёл покушать", а в другом "Шёл мальчик покушать", в некоторых вместо слова "кушать" должно использоваться слово "жрать" и так далее. 

Что бы ты мог собрать пк, вот тебе инструкция:

1. Тебе нужен: Системный блок, монитор, дисковод (если системный блок не может хранить дискеты), преобразователь энергии, клавиатура.

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

2. Что бы запустить компьютер в системном блоке по меньшей мере должно быть: EEPROM (Lua BIOS), центральный процессор, жёсткий диск, OpenOS (Operating System) [В дисковод если системник слабый, нужен на первый запуск], память, видеокарта.

3. Для запуска компа нужно нажать зелёную кнопку включения в системном блоке.

Теперь ты можешь продолжать читать гайд.

Share this post


Link to post
Posted (edited)

Ещё есть косяк, там где оранжевое в круглых скобках добавлено то что пропущено, но оно должно быть в квадратных, форум зажёвывает это значение. А где красное должна быть A. Верните пожалуйста опцию редактирования гайда.

local t = A(i)[g] --[[Далее мы присваиваем локальной t значение ячейки i, g где i строка, а g столбик]]
A(i)[g] = t * 2 --[[Умножаем содержимое ячейки на 2, или меняем его как хотим по желанию]]

Edited by Elec

Share this post


Link to post
03.05.2020 в 23:48, Elec сказал:

Если игрок не сможет сам собрать комп - ему тут ловить нечего, потому что потом ему придётся придумывать свои код.

Мне вот интересно, ты, когда первый раз за компьютер сел, тоже сразу начал проги писать или всё же пользовался тем, что есть? 
У тебя гайд называется "OpenComputers Урок 1" - так значит и расскажи как собрать, скрафтить, поставить всё правильно чтобы компьютер мог запуститься.
Многие новички и правда не могут именно собрать компьютер из-за нюансов, типо EEPROM (Lua BIOS) который после крафта ещё надо перекрафтить с руководством.

Многие люди вообще не шарят за луа, но шарят за мод и как поставить простейшую прогу для 3д печати или робота-дровосека и пользоваться этим. Ты даже про API не пишешь, что и составляет основу OpenComputers в lua. А здесь ты именно стандартные операции lua описываешь. 

Так что или следуй названию, или называй гайд правильно.

  • good 2
  • Like 1
  • bund 1

Share this post


Link to post
Posted (edited)

Да, это первое что я сделал.
А вы все будете пропускать первую строчку в гайде? Я не могу его отредактировать, а к тому моменту когда гайд был написан было творческое изнеможение, потому что он большой. Лишь текст от сырого вида с коррективом ошибок при создании форматируется час. 

Сейчас нельзя выпустить гайд, взять перерыв и доделать его, а потом ещё раз доделать. Ты его залил, а дальше выслушивай любителей покритиковать на пустом месте. Я даже снять его с выставки не могу по этой же причине.

Edited by Elec

Share this post


Link to post
Posted (edited)

Ты же тоже пишешь гайды, а значит с тобой можно поговорить серьёзно, да этот гайд сырой, да такие гайды не пишутся за один день. А из-за таких непонятливых людей как ты мне хочется его доработать, доработать его нельзя, удалить тоже нельзя. А вот теперь представь что сейчас в твоём гайде есть ошибка и каждый прохожий школьник будет тебя в неё тыкать. На какой секунде ты ... , а что ты сделаешь?

Edited by Elec

Share this post


Link to post

Когда что либо выкладываешь в общий доступ, будь готов к критике. А если не хочешь критики, то смысл выкладывать?

  • press F 1
  • =) 1

Share this post


Link to post
Posted (edited)
13 минут назад, simcool сказал:

Когда что либо выкладываешь в общий доступ, будь готов к критике. А если не хочешь критики, то смысл выкладывать?

Критика уместна только там где от неё будет польза, от твоей критики не будет пользы, потому что она не может повлиять на мои действия даже если я буду с тобой согласен.

Edited by Elec

Share this post


Link to post

Вот мой вариант решения:

 

Share this post


Link to post
40 минут назад, Elec сказал:

А вы все будете пропускать первую строчку в гайде? Я не могу его отредактировать, а к тому моменту когда гайд был написан было творческое изнеможение, потому что он большой. Лишь текст от сырого вида с коррективом ошибок при создании форматируется час. 

 

Да, я видел её и не пропускал. Я указал тебе на то, что у тебя название с содержанием не совпадает. В следующий раз проверяй гайд несколько раз и будь уверен в том, что написал. 

Если рассматривать гайд со стороны "Lua для начинающих", то неплохой гайд. Просто надо было несколько раз пройтись по нему перед выставлением, а лучше перед этим ещё отдохнуть, отвлечься или выспаться, чтобы при перепроверке выявить новые недостатки. Потому что глаз, всё-таки имеет свойство "замыливаться".) 

Прими эту критику как подсказку и сделай следующую часть гайда по красоте. А эту, я думаю, админы скажут как можно заново выложить с исправлениями или что-нибудь придумать. 
Я тоже был не очень рад увидеть, что не могу дополнить гайд через исправление шапки, пришлось просто дополнять новыми постами.

Удачи со следующими гайдами!
:)

  • press F 1

Share this post


Link to post
Posted (edited)

Стой тебя никто не отпускал ^_^
Мотни немного выше и присоединяйся к моей армии по отвоеванию возможности редактировать свои сообщения.

Я планирую использовать этот гайд как черновик для второго урока ?
И пересоздать первый, как я это буду делать? Вопрос хороший.
Раньше бы просто переписал бы этот гайд через редактирование, а всё из него во второй перекопировал. 

Edited by Elec

Share this post


Link to post

Приветствую!

Вынужден согласиться с ребятами, оставившими свои сообщения выше. Этот гайд - основы lua (при чем довольно странные, но об этом позже) и алгебры логики. У гайда мало общего с модом OpenComputers, да и с "основами" lua тут тоже все очень плохо т.к человек мало знакомый с программированием действительно мало что (а скорее всего ничего) поймет, а для людей знакомым с программированием тут слишком много бесполезной информации, так что лично я не вижу применения данному гайду

Итог - 30 баллов

  • good 1

Share this post


Link to post
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...