Та не должно чтобы заработало, надо внести в код правки согласно тексту урока. Тогда вот заработает.
Ну так правильно , если “с нуля” надо сначала учить стандартное, потом уже фишки конкретно ABC. А обучение “стандартному паскалю” - это обучение в какой-то среде.
В корне неверный тезис. Нет никаких “фишек АВС”, есть полноценный язык и нужно сразу ему учиться.
Что то не верю. Да и это 3. что меня волновало. 1. это навыки форматирования (а точнее их отсутствие).
- это
var
доbegin
. В PascalABC.Net такое не должно происходить в большинстве задачек.
И вот как раз это - прекрасный пример:var
послеbegin
это не дополнительная возможность ABC.Net, а то, к чему надо приучать с самого начала. И так же с большинством фич.
Как раз это именно, что “фича” . Т.к. С++ подобное обьявление переменных где попало затрудняет чтение кода. Если рубить имеющиеся преимущества Паскаля, то это будет минус а не плюс. Но иногда, да удобнее в тексте объявлять.
Вы шутите, надеюсь? Или “мое мнение превыше сложившегося” ?
[quote=“Sun_Serega, post:11, topic:3256”] “шестью восемь сорок восемь”), так чтоб до любой пары чисел было не больше одного сложения/ [/quote]- сложившегося где? В среде паскалистов или дельфистов я не видел, что-то особых вздохов сожаления , что нельзя где попало объявлять переменные.
Кому что нравится — сказал индус, целуя в ухо обезьяну. (с)
А это вообще кто такие? Особи из Красной книги программирования? Когда они что-то еще писали, тогда вздыхать было не по чем, а сейчас они бы может и вздохнули, но некому.
А кто мешает сейчас объявлять переменные в начале программы? По-моему, все эскапады Рулина - это следствие самоизоляции от современного программирования.
Тут что-то другое. В стиле “Я считаю, что должно быть только так, поэтому все лишнее требую убрать”. То есть просто вернуть Pascal ABC образца 2007 года.
Да, сейчас некоторые требуют вернуть Советский Союз.
Рулин рассуждает на уровне школьных программ из дюжины строк. Тогда нет большой разницы между глобальными и локальными переменными. Современные программы гораздо длиннее и сложнее. Современная программа должна быть НАДЁЖНОЙ. Глобальные переменные неизменно уменьшают надёжность программ, поэтому их стараются заменить свойствами.
Никакого возврата к прошлому не будет. Глобализация гикнулась, пользуйтесь локальными переменными.
Мы не настаиваем - в PascalABC.NET можно программировать в старом стиле, используя только описание до begin-end.
Мы ввели в язык внутриблочные описания, и это неизбежно привело к изменению стиля программирования. Мы считаем этот стиль более правильным, соответствующим принципу локальности и препятствующим написанию “грязных” программ, где имеется описанная вначале свалка из 20-40 переменных, многие из которых используются повторно для разных целей, а некоторые уже забыты, для чего они используются и используются ли.
Понятно, что если человек всю свою жизнь привык использовать только описание до begin (так называемый паскалист), то он так будет делать всю свою оставшуюся жизнь.
У детей мы формируем правильный стиль сразу, и у них не возникает вопросов по поводу правильности, потому что описание в нужном месте расширяет свободу, а это важно для молодёжи.
Меня всегда в Паскале удивляло решение его автора убрать внутриблочные переменные, которые были в предшественнике Паскаля - языке Алгол-60. Возможно, в погоне за эффективностью компиляции на дохленьких ЭВМ того времени. Потому что даже в Бейсике было можно объявить нужную переменную в любой момент посредством DIM. Нельзя было только в Fortran, поскольку концепция эффективной компиляции в те времена не рассматривала динамическое распределение памяти.
Паскаль, я полагаю, придумали для коротких учебных программ (часто вообще без процедур), поэтому локальные переменные не шибко были нужны. Сейчас всё не так…
DIM используется для объявления массивов. А объявление переменных по факту встречи по ходу выполнения, как в Python. AFAIK
На Ваш AFAIK у нас найдется RTFM ))))
Надеюсь, Вы доверяете Майкрософт?
Как только появился VB (еще даже не в составе Visual Studio), появилась возможность опционально требовать описания всех объектов программы. Для надежности кода. А в ранних бейсиках - да, там DIM был для массивов только, переменные описывались или по умолчанию, как в Fortran-II, или к именам добавлялись значки типа #, $ и т.д., определяющие тип.
Да, да. Именно так. Я с GWBasic практически сразу перешел на Pascal. А в VB только изредка заглядывал. Пару лет назад принесли проекты (вычислительная модель) на GWBasic, с просьбой переписать на C#/WPF. Забавно было столкнуться с тем, что руки помнят больше, чем сознание. Почти 30 лет не запускал его.
Надо сказать C++ до сих пор компилируется достаточно медленно даже на современных машинах. Конечно не из-за переменных, а в целом из-за парадигмы меньше оптимизации.
Ну в процедурах как раз можно объявить локальные переменные до begin . Нельзя было объявлять посередине кода.