OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 23 Апрель, 2024 12:58

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Среда, 14 Декабрь, 2022 21:49 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Модуль существует в нескольких ипостасях (и это осложняет жизнь):

1) текст в документе, который открыт перед вами в среде
2) текст в файле на накопителе (диске)
3) машинный текст модуля на накопителе (откомпилированный файл Code/Module.ocf)
4) загруженный в память ЭВМ машинный текст модуля

В какой-то момент происходит рассинхронизация: вы что-то напечатали - теперь (1) рассинх со всеми остальными; откомпилировали - теперь 1 синх 3, но рассинх с остальными; сохранили документ - теперь 1 синх 2 синх 3 но рассинх 4.

Когда вы нажимаете на коммандер (!)Модуль.Команда, то Модуль (а именно 3) загружается в память ЭВМ, связывается с остальными модулями в системе. Когда Команда завершила работу, Модуль остается в памяти. При повторном нажатии на коммандер загружать модуль не надо - ведь он уже загружен.

Вот теперь вы поправили текст модуля (1), сохранили (синх 1 и 2), откомпилировали (синх 1 и 3) и радостно жмете на коммандер. А результат - прежний. Потому что в памяти ЭВМ - прежний вариант модуля.

Теперь нужно выгрузить (устаревший) вариант модуля из памяти ЭВМ, и загрузить свежий. В меню есть спец команда - выгрузить модуль. После нее при нажатии на коммандер свежий вариант модуля будет загружен.

А я написал про краткий способ: Ctrl+нажатие на коммандер сперва выгружает Модуль из памяти, затем вновь его загружает и выполняет Команду.
Другой вариант - это использовать команду "Компилировать и выгрузить", предотвращает рассинх 3 и 4. И можно эту команду активировать по клавишам.

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

У себя я всегда включаю "автосохранение" модуля перед компиляцией, это уменьшает рассинхронизацию между 1 и 2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 00:19 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3776
adimetrius писал(а):
Полезно знать, особенно школьникам, делающим один модуль, что если зажать Ctrl при щелчке по коммандеру, то командный модуль выгружается, прежде чем команда из него выполняется - т.е. получается команда "перезагрузи и выполни".

Ну и их преподавателям тоже полезно это может быть ))

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

Поэтому я сделал так, чтобы можно было запускать модуль Main с кнопки на панели, или по сочетанию клавишь Ctrl+R из меню Просто->Запустить

Чтобы мусор от компиляции не мешался с выводом модуля. Справа хочу сделать сверху холст для рисования без ООП, а снизу консоль для вывода текста через Out. Чтобы было прям как в online.oberon.org


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 12:19 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Shull писал(а):
Хм, поясните, плиз, что такое "выгрузка модуля"? Откуда и куда он выгружается?
Я в КП и ББ новичок, поэтому задаю глупые вопросы.


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

У Ермакова вообще был Lab, который прикрывал от учеников даже модуль, позволяя работать только с процедурой. Ткачёв, за это избыточное сокрытие, его справедливо критиковал. Ну нет проблем объяснить детям, как работать со средой.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 12:24 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3776
Вот я против того, чтобы скрывать достоинства Блэкбокса, и считаю, что надо и модули сохранять, и со временем рассказывать про коммандеры. Однако, чтобы среда прижилась мы должны закрыть проблемы преподавателя, слушать его мнение внимательно. А есть проблема со временем урока и с внимательностью учеников в массе. И на конференции были озвучены достоинства среды Пасаль АБЦ, что там сразу после запуска можно детям объяснять про циклы, ветвления и т.п. То есть время старта полезного материала от начала урока - меньше одной минуты. Запустил, и сразу можешь цикл писать. Не надо ни объяснять про коммандеры, ни про процедуры. Вот эту боль я и закрыл в первую очередь. Сразу заготовка модуля открывается. Сразу она компилируется и выполняется нажатием одной кнопки. Школьные преподаватели точно такое оценят, но это лучше Сергей пусть оценивает как лидер проекта. Я обеспечиваю техническую поддержку и полностью подчиняюсь его интуиции. Предлагаю разные варианты, но выбор за ним. Считаю, что такой подход будет продуктивным.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 12:37 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3776
adimetrius писал(а):
У себя я всегда включаю "автосохранение" модуля перед компиляцией, это уменьшает рассинхронизацию между 1 и 2.

Тоже так добавил. Только надо убрать отмену Ctrl+Z при сохранении. На этот анахронизм уже многие жалуются.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 13:20 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Я согласен с Борисом: налицо подгонка ББ под что-то неестественное для ББ.

Но тут коллега-преподаватель из школы пришел. Вероятно, у него своя профдеформация, обусловленная "причудами нашего школьного образования". А у нас тут - своя, обусловленная средой. Как раз встреча таких уклонов - интересна.

"Ткачёв, за это избыточное сокрытие, его справедливо критиковал. Ну нет проблем объяснить детям, как работать со средой."
Я как раз думал, что Федор Василич бы возражал против сокрытия, MAIN и т.п., вы подкрепили мои предположения. И я тоже не возьму в толк, почему нельзя детям объяснить, как оформить модуль. Во 2 классе учат писать "Классная работа", по центру, а рядом, на полях - дату. Дату учат писать сначала число, потом месяц. В 7 классе их на физике учат оформлять должным образом решение задач: столбик Дано, столбик Си, столбик Решение. Справляются дети, обучаются. А программу нужно оформлять так: пишешь MODULE , пишешь PROCEDURE, тут отступы делаешь, в конце END.

Ожидания, что "программу нужно запускать", кмк, нет у детей, по крайней мере, у тех, кого я обучал с нуля - не было. (А кстати, что такое "модуль запускать"? ) Они же пришли, как табула раса, и я им объясняю: вот так оформляешь программу, вот так ею пользоваться можно (с помощью коммандера). Вполне 12-летнему мальчику оказалось посильно.

Мой второй опыт с Паскалем был в обучающей среде, кажется, мини-паскаль называлась. (Первый - на бумаге:). Там, емнип, на текстовом экране уже был вбит шаблон: program, var, begin, end. Мне оставалось только вбить свою нехитрую программу. Среда, тем самым, избавляла меня от описок и части синтаксических ошибок, и этим помогала. Но не скрывала внешнего вида и структуры программы. Вскоре после этого мне попался турбо-паскаль, и его пустое синее окно, конечно, слегка приводило в растерянность. Но я уже видел в мини-паскале, как выглядит программа, и это укрепляло.
Вот что-то такое можно было бы сделать в ББ. Можно очень простой прототип: форму с полями ввода. И даже кнопку "Выполнить", раз уж так хочется ее иметь, и раз коммандеры на потом откладываются.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 13:21 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Иван Денисов писал(а):
adimetrius писал(а):
У себя я всегда включаю "автосохранение" модуля перед компиляцией, это уменьшает рассинхронизацию между 1 и 2.

Тоже так добавил. Только надо убрать отмену Ctrl+Z при сохранении. На этот анахронизм уже многие жалуются.


Ура!!! Вы передумали? Вроде, высказывались против, когда мы с вами это обсуждали?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 13:26 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
За очистку памяти операций для отмены отвечает вот этот фрагмент в StdCmds, если я не ошибаюсь:

Изображение


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 14:17 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3776
adimetrius писал(а):
Иван Денисов писал(а):
adimetrius писал(а):
У себя я всегда включаю "автосохранение" модуля перед компиляцией, это уменьшает рассинхронизацию между 1 и 2.

Тоже так добавил. Только надо убрать отмену Ctrl+Z при сохранении. На этот анахронизм уже многие жалуются.


Ура!!! Вы передумали? Вроде, высказывались против, когда мы с вами это обсуждали?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 14:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3776
adimetrius писал(а):
Мой второй опыт с Паскалем был в обучающей среде, кажется, мини-паскаль называлась. (Первый - на бумаге:). Там, емнип, на текстовом экране уже был вбит шаблон: program, var, begin, end. Мне оставалось только вбить свою нехитрую программу. Среда, тем самым, избавляла меня от описок и части синтаксических ошибок, и этим помогала. Но не скрывала внешнего вида и структуры программы. Вскоре после этого мне попался турбо-паскаль, и его пустое синее окно, конечно, слегка приводило в растерянность. Но я уже видел в мини-паскале, как выглядит программа, и это укрепляло.
Вот что-то такое можно было бы сделать в ББ. Можно очень простой прототип: форму с полями ввода. И даже кнопку "Выполнить", раз уж так хочется ее иметь, и раз коммандеры на потом откладываются.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 16:46 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1449
Откуда: Киев
Иван Денисов писал(а):
Но он сказал, что это слишком сложно для первого уровня. Процедура - это уже некий концпет по группировке кода. А минимальный уровень - это все же простые алгоритмы с циклами и ветвлениями. А уже потом их группировка в процедурах. Функции и аргументы - это уже следующий уровень, как я понимаю.
Верить всему на слово тоже нельзя, и вполне возможно, что всё это "сложно" происходит не от структуры как таковой, а от английского языка, который для программирования не нужен, а сложности добавляет. Информатика-21 тоже дала на это ответ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 18:21 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2022 09:03
Сообщения: 35
Всем добрый день.
Я немного посидел над учебниками, поговорил с коллегами.
Есть идея. Можно ускорить изучение подпрограмм. Думаю, это несколько примирит обе стороны.

Обычно, обучение в школах идёт так:
переменная
вывод
типы данных
арифметика
ввод
ветвление
цикл
массив
подпрограмма

Я обычно делаю так:
вывод
переменная
типы данных
арифметика
ветвление
ввод
цикл
подпрограмма
массив

Сегодня, прочитав жалобы оберонщиков (обоснованные!), я предлагаю следующее:
вывод
подпрограмма
переменная
типы данных
арифметика
ветвление
ввод
цикл
массив

Что скажете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 18:43 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Процедура всё-таки (особенно в модульном языке) это не тоже самое, что подпрограмма.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 18:46 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Shull писал(а):
Всем добрый день.
Я немного посидел над учебниками, поговорил с коллегами.
Есть идея. Можно ускорить изучение подпрограмм.

А о каком возрасте речь идёт? Кстати.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 18:58 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2022 09:03
Сообщения: 35
Цитата:
А о каком возрасте речь идёт? Кстати.

8-10 классы.

Цитата:
Процедура всё-таки (особенно в модульном языке) это не тоже самое, что подпрограмма.

Ну, я говорю детям, что подпрограммы делятся на процедуры и функции, причём и те и другие бывают с параметрами.
Модули (питоновские модули) - это позже.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 19:00 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3776
можно и вот так

вывод
подпрограмма (процедура без аргументов)
переменная
типы данных
арифметика
ветвление
ввод
цикл
массив
подпрограмма (процедура с аргументами и процедура-функция)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 19:03 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
А что тогда понимать в качестве программы (если процедуры и функции это подпрограммы)?
Ну не секцию инициализации модуля же.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 19:03 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3776
Хотя я вот не понимаю, ведь мы уже когда вывод делаем, то обращаемся к процедурам другого модуля, причём с аргументами. Так что объяснять про процедуры всё равно придётся на этапе темы вывод.

На примере модуля Out можно как раз рассказать про процедуры с аргументами и без аргументов.
Код:
DEFINITION Out;

   PROCEDURE Char (ch: CHAR);
   PROCEDURE Int (i: LONGINT; n: INTEGER);
   PROCEDURE Ln;
   PROCEDURE Open;
   PROCEDURE Real (x: REAL; n: INTEGER);
   PROCEDURE String (str: ARRAY OF CHAR);

END Out.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 19:19 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2022 09:03
Сообщения: 35
Иван, пользуясь случаем, как в Блэкбоксе происходит ввод?
Когда я смотрел старую школьную сборку, там, вместо консоли, использовался очень необычный механизм выуживания данных из окружающего документа.
В новой сборке, вроде бы, приехал Out.
А как дела обстоят с вводом?
П.С: Тот же вопрос про Оберон Онлайн. Как тамошнему юзеру вбить свои данные?
П.П.С: тот же вопрос про Free Oberon


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Декабрь, 2022 19:29 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3776
Shull писал(а):
Иван, пользуясь случаем, как в Блэкбоксе происходит ввод?
Когда я смотрел старую школьную сборку, там, вместо консоли, использовался очень необычный механизм выуживания данных из окружающего документа.
В новой сборке, вроде бы, приехал Out.
А как дела обстоят с вводом?

Ввод через аргументы коммандера, по аналогии с аргументами команды в консоли. Либо из текста выделенного мышкой, так работает модуль In. Либо через поле на форме. Если программа консольная, то есть модуль Console, и в нем есть процедура ReadLn, которая считывает строку.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB