Иаков
нет, показалось
Иаков
а на какую виртуалку можно ещё поставить? От виртуалки зависит, как производительно будет работать система?
Иаков
на флешку, что ли, поставить.... И поюзать её так?
Михаил
Иаков
Да факенг щеет
Михаил
я кст на DVD залил)
Иаков
создал машину для федоры, а запущу-ка я на ней не федору... Так же можно?
Иаков
Вот, xubuntu летает, как ошпаренная, а kde fedora лагает, как ошпаренная(((( Ладно, буду юзать xubuntu... Но fedora в моём сердце теперь, пхпхпх
Илья
здравствуйте, кто то из присутствующих людей проходил второй курс на Stepik, там последние задание в разделе Пространства имён и области видимости, можете посоветовать ресурсы чтобы понять как решить эту задачу
Иаков
Илья
python
Илья
проблема в том, что даже не понятно как вопрос задать
Алексей
Илья
окей
Иаков
python
а, пайтон. Ну, ты спроси, как понимать пространства имен. Когда я изучал, то у меня погнятия пространства имен были папки. Типо, дирректория проекта, потом каталоги проекта и прочее - это всё составные пространства имен. Проект - DeliveryProducts - это пространства имен именно этого каталога, но там может быть папка Models, тогда DeliveryProducts.Models - это будет другое прострнаства имен, там свои классы
Иаков
Это про C# если, там всё понятно было. Удачи тебе понять это!)
Илья
Реализуйте программу, которая будет эмулировать работу с пространствами имен. Необходимо реализовать поддержку создания пространств имен и добавление в них переменных.
В данной задаче у каждого пространства имен есть уникальный текстовый идентификатор – его имя.
Вашей программе на вход подаются следующие запросы:
create <namespace> <parent> – создать новое пространство имен с именем <namespace> внутри пространства <parent>
add <namespace> <var> – добавить в пространство <namespace> переменную <var>
get <namespace> <var> – получить имя пространства, из которого будет взята переменная <var> при запросе из пространства <namespace>, или None, если такого пространства не существует
Рассмотрим набор запросов
add global a
create foo global
add foo b
create bar foo
add bar a
Структура пространств имен описанная данными запросами будет эквивалентна структуре пространств имен, созданной при выполнении данного кода
a = 0
def foo():
b = 1
def bar():
a = 2
В основном теле программы мы объявляем переменную a, тем самым добавляя ее в пространство global. Далее мы объявляем функцию foo, что влечет за собой создание локального для нее пространства имен внутри пространства global. В нашем случае, это описывается командой create foo global. Далее мы объявляем внутри функции foo функцию bar, тем самым создавая пространство bar внутри пространства foo, и добавляем в bar переменную a.
Добавим запросы get к нашим запросам
get foo a
get foo c
get bar a
get bar b
Представим как это могло бы выглядеть в коде
a = 0
def foo():
b = 1
get(a)
get(c)
def bar():
a = 2
get(a)
get(b)
Результатом запроса get будет имя пространства, из которого будет взята нужная переменная.
Например, результатом запроса get foo a будет global, потому что в пространстве foo не объявлена переменная a, но в пространстве global, внутри которого находится пространство foo, она объявлена. Аналогично, результатом запроса get bar b будет являться foo, а результатом работы get bar a будет являться bar.
Результатом get foo c будет являться None, потому что ни в пространстве foo, ни в его внешнем пространстве global не была объявлена переменная с.
Более формально, результатом работы get <namespace> <var> является
<namespace>, если в пространстве <namespace> была объявлена переменная <var>
get <parent> <var> – результат запроса к пространству, внутри которого было создано пространство <namespace>, если переменная не была объявлена
None, если не существует <parent>, т. е. <namespace> – это global
Формат входных данных
В первой строке дано число n (1 ≤ n ≤ 100) – число запросов.
В каждой из следующих n строк дано по одному запросу.
Запросы выполняются в порядке, в котором они даны во входных данных.
Имена пространства имен и имена переменных представляют из себя строки длины не более 10, состоящие из строчных латинских букв.
Формат выходных данных
Для каждого запроса get выведите в отдельной строке его результат.
Sample Input:
9
add global a
create foo global
add foo b
get foo a
get foo c
create bar foo
add bar a
get bar a
get bar b
Sample Output:
global
None
bar
foo
Jsx707
Jsx707
Никогда не видел ......
Видел в C++ , C# , но больше нигде
Jsx707
C# кстати решил изучить как дополнение к C++ , я хотел на нём реализовать приложение с графическим интерфейсом как дополнение к моему движку на C++ , но C# конечно тот ещё ... Подарок , особенно последний .net
Jsx707
Но в принципе , после C++ всё понятно
Илья
друзья, у кого то есть чат питонистов
Kenin
Почему в С++ Std'шный вектор не может быть частью typename'a?
Илья
был бы рад если бы скинули ссылку
Иаков
C# кстати решил изучить как дополнение к C++ , я хотел на нём реализовать приложение с графическим интерфейсом как дополнение к моему движку на C++ , но C# конечно тот ещё ... Подарок , особенно последний .net
Не надо гнать на C#, C# - это улучшенная java, к тому же, синтаксис на C# очень красивый, по красивее java... Хотя, наверное, не привычно на 6 .net, как в питоне, без class и namespace, даже без метода, сразу писать код, как в js или python
Jsx707
Я уже имею представление о том , что такое класс , метод , пространство имён , что такое модификатор доступа и ТД , поэтому , не так сложно , но парадигма ООП она интересна ,но все же , там есть некоторые моменты , я не понимаю до конца , как их использовать , а ещё в C# мне не знакомо слово foreach
Andrii
Kenin
Это как?
ну нельзя перегружать typename вектором
Иаков
Jsx707
Не надо гнать на C#, C# - это улучшенная java, к тому же, синтаксис на C# очень красивый, по красивее java... Хотя, наверное, не привычно на 6 .net, как в питоне, без class и namespace, даже без метода, сразу писать код, как в js или python
Аа да , но я все равно изменил , я создал пространство имен , внутри класс , а потом статический метод main и внутри написал логику
Vyacheslav
Иаков
Andrii
typename просто используется в шаблонах, чтобы подсказать компилятору, что это имя типа. По сути костыль, который позвляет обойти неоднозначность грамматики
Иаков
Эх, ладно... Буду теперь кодить в xubuntu, щас скачаю vs code, посморим, чё поменяется. Эх, хотел бы я норм поюзать kde fedora, но не судьба, видать
Jsx707
друзья, у кого то есть чат питонистов
Есть англоязычный , он очень крупный и его в поиске можно найти ,но там недавно у админа поехала кукуха просто .
.. хз как сейчас
Просто в поиске пиши "Python" и всё , но там есть много версий для разных людей , говорящих на разных языках
Типа :
Python Spanish
Python Portuguese
И ТД
Vyacheslav
Иаков
Есть англоязычный , он очень крупный и его в поиске можно найти ,но там недавно у админа поехала кукуха просто .
.. хз как сейчас
Просто в поиске пиши "Python" и всё , но там есть много версий для разных людей , говорящих на разных языках
Типа :
Python Spanish
Python Portuguese
И ТД
всмысле, поехала кукуха, он говорил, что питон топ, а всё говно и те, кто поддерживает это, тоже говноеды?
Иаков
Jsx707
Иаков
Он банил просто кого попало
оу... За то, что не признавал питон? Хпхпхпх... Я ничего про питон не говорю, норм язык, свои задачи решает. Просто есть на эту тему рофлы и прочее
Jsx707
Я просто хотел на C# , WinForms сделать файловый менеджер к движку со своим api , а ещё сделать графический менеджер сборки его из исходников и графический установщик зависимостей
Иаков
утин
Jsx707
Тебе виднее , но по-моему
using namespace это очень злая вещь
Kenin
Kenin
я просто как помню, что std::cin не проходило по тестам, в отличиии о подключенного пространства имён
Jsx707
там cin как-то по-другому начинает работать
Та нет , он будет работать по-моему также , просто если подключить пространства имён сразу в несколько файлов , то на этапе линковки могут пойти непонятные ошибки , ещё код , который был в этом пространстве имён может конфликтовать с вашим кодом
Jsx707
Andrii
Иаков
Блин... Раздражает, что даже xubuntu не ведет себя также, как если бы я сидел на ней нативно... Печально(((
Jsx707
Просто линкер вещь очень капризная местами , особенно в многофайловых проектах
Иаков
Jsx707
Если не осторожно пользоваться #include , пространством имён , extern-ами ,то можно получить много ошибок на каком-то непонятном языке
Алексей
Михаил
Andrii
Andrii
Михаил
а за что больше можно по шапке получить: за использование goto или за использование using namespace std в хедерах?
Алексей
Иаков
Jsx707
Михаил
хз, oracle же
а вот я бы не парился: просто дефрагментировать диск (чтоб побстрее все разделилось), отделить свободные 40-60 гигов на диске, туда все поставить, потом если что форматнуть и присоединить обратно
Михаил
в смысле не париться с этой ВМ
Михаил
А с разделом диска.. 😁
Иаков
Михаил
Иаков
Ну.. Хзхз... Я пока не готов на такие риски, но я рассмотрю этот план.. Думаю, можно такое провернуть. Удалю пару игр на пк и поставлю таким образом федору