17.03.2017, 00:12 | #1 (permalink) |
Banned
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
|
ABC-Pascal
Pascal-abc используется уже во многих школах, институтах.. Основные возможности:
|
17.03.2017, 00:12 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Обычно в схожих топиках содержится много информативных ответов Pascal ABC Pascal |
17.03.2017, 11:33 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Вот лишь несколько моментов: 1. Типизированных констант (в частности, констант-массивов) не понимает. 2. Вместо стройной системы-иерархии целых типов в НОРМАЛЬНОМ Паскале: Знаковые: ShortInt (1 byte) - Integer (2 byte) - LongInt (4 byte) - Int64 (8 byte) Беззнаковые: Byte (1 byte) - Word (2 byte) - Cardinal (4 byte) - QWord (8 byte) предлагается какая-то маловразумительная каша: Integer стал четырехбайтовым, Word вообще непонятно то ли есть, то ли нет... 3. Поля записи String необъявленной длины не принимаются. 4. Плохая совместимость типов Char и String: например, при подстановке переменной типа Char в оператор Val возникает ошибка. 5. Плохо понимаются ситуации, когда границы цикла for..to задаются не числами или простыми идентификаторами, а вычисляются непосредственно в цикле. Возникают ошибки. 6. Модуль CRT (если он в АВС вообще есть) - тихий ужас: выброшены напрочь нужнейшие функции: снятие системного времени и даты. Спасибо, дорогие умельцы! Список можно продолжать. Теперь несколько соображений о сути проекта, как такового. Ни для кого не секрет, что программирование не знает госграниц, а потому очевидно, что следует пользоваться общепризнанными языками и пакетами. Попытки отгородиться тут абсолютно бесперспективны. И, казалось бы, - есть простой Паскаль (Turbo, Free, Borland), есть современный пакет Delphi, правда, платный (и хорошо платный), но есть упрощенный бесплатный вариант - Lazarus. Живи да радуйся. И зачем еще изобретать велосипед? А вот затем, что это - чистейшая конъюнктура, рассчитанная на не слишком грамотных чинуш. Ну как же - это ведь НАШЕ! Отечественное!! Уря!!! И пошло впаривание этой недоделки в ВУЗы... Ладно, заканчиваю, а то за себя не ручаюсь, а наш форум дети посещают... |
|
17.03.2017, 23:04 | #5 (permalink) |
Banned
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
18.03.2017, 19:21 | #7 (permalink) | |
Banned
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
|
Цитата:
2. Вместо стройной системы-иерархии целых типов в НОРМАЛЬНОМ Паскале: Знаковые: ShortInt (1 byte) - Integer (2 byte) - LongInt (4 byte) - Int64 (8 byte) Беззнаковые: Byte (1 byte) - Word (2 byte) - Cardinal (4 byte) - QWord (8 byte) предлагается какая-то маловразумительная каша: Integer стал четырехбайтовым, Word вообще непонятно то ли есть, то ли нет... 3. Поля записи String необъявленной длины не принимаются. 4. Плохая совместимость типов Char и String: например, при подстановке переменной типа Char в оператор Val возникает ошибка. 5. Плохо понимаются ситуации, когда границы цикла for..to задаются не числами или простыми идентификаторами, а вычисляются непосредственно в цикле. Возникают ошибки. 6. Модуль CRT (если он в АВС вообще есть) - тихий ужас: выброшены напрочь нужнейшие функции: снятие системного времени и даты. Спасибо, дорогие умельцы! Список можно продолжать." Ответы на Ваши заблуждения. 1. Типизированных констант (в частности, констант-массивов) не понимает. Понимает, но есть ньюансы. В современных многих языках программирования, константы - это константы, переменные - это переменные. Это следствие повышения безопасности языка и программ. Типизированные константы в Pascal - это, на самом деле, объявленные и инициализированные переменные. Из этого следует, что в дальнейшем этим "константам" можно присваивать новые значения. Поскольку это нарушает безопасность программ, поэтому в наследниках Pascal, например ADA, типизированные константы - это именно константы на все время жизни программы. Пример 1: const strConstMy: string = 'ABC'; arstrConstMy = ['A', 'B', 'C']; begin writeln(strConstMy); writeln(arstrConstMy); strConstMy := 'BCA'; // вызовет исключение времени компиляции. end. 2. Вместо стройной системы-иерархии целых типов в НОРМАЛЬНОМ Паскале: Ответ: это незнание исторических принципов иерархии целых чисел. Тип integer - это всегда был целый тип, не гарантированный по длине и часто привязанный к разрядности платформы. На машинах 16р, 32р - это соответственно 2, 4 байт. На ABC поддерживаются: Тип Размер, байт Диапазон значений shortint 1 -128..127 smallint 2 -32768..32767 integer, longint 4 -2147483648..2147483647 int64 8 -9223372036854775808..9223372036854775807 byte 1 0..255 word 2 0..65535 longword, cardinal 4 0..4294967295 uint64 8 0..18446744073709551615 BigInteger переменный неограниченный 3. Поля записи String необъявленной длины не принимаются. Ответ: это заблуждение. Пример 3: var s: string; s1: string[9]; s2: shortstring; // синоним string[255] const ch: char = '7'; begin SetLength(s,20); writeln(s.Length); var ret, err: integer; Val(ch,ret,err); writeln(ret); end. Есть особенность. Тип string - это объект со своими полями и методами, причем формат - Unicode. Это обычная практика в современных языках программирования. Тип Char - также имеет формат Unicode. Функция Val() прекрасно работает и с типом string и с типом char. 5. Плохо понимаются ситуации, когда границы цикла for..to задаются не числами или простыми идентификаторами, а вычисляются непосредственно в цикле. Возникают ошибки. Ответ: за такой стиль программирования положено пожизненное отлучение от профессии. Вы в каком веке застряли? Более того, инициализация цикла в ABC производится непосредственно в начале цикла локальной переменной, которая вне цикла недоступна, а внутри цикла ее изменение порождает логическую ошибку и это правильно. Пример 5: for var i := 1 to 10 do Print(i); for i: integer := 1 to 9 do write(i,' '); Переменная-параметр цикла может иметь любой порядковый тип. var en: (red,green,blue,white); for en := red to blue do write(Ord(en):2); 6. Модуль CRT (если он в АВС вообще есть) - тихий ужас: выброшены напрочь нужнейшие функции: снятие системного времени и даты. Ответ: Этот "ужас" от Вашего незнания языка PascalABC.Net. Есть стандартные модули GraphABC и ABCSprites. После подключения пространства имен System становятся доступными все его возможности: Пример 6: uses System; begin var d: DateTime := DateTime.Now; writeln(d.Day,'.',d.Month,'.',d.Year); writeln(d.Hour,':',d.Minute,':',d.Second); end. P.S. Успехов Вам с Вашим "НОРМАЛЬНЫМ" Паскалем! |
|
18.03.2017, 19:38 | #8 (permalink) |
Banned
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
|
ABC прекрасно понимает хоть так:
type Person = record Name: string; Age: integer; end; хоть так: type Person = record Name: string[32]; Age: integer; end; |
18.03.2017, 21:56 | #9 (permalink) | |
Banned
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
|
Цитата:
Однако, есть те, кому "Мила нам добра весть о нашей стороне. Отечества и дым нам сладок и приятен." (С) А.С. Грибоедов. Ни для кого не секрет, что госграницы сейчас открыты. Казалось бы - езжай Туды, живи, да радуйся. Те, кто создавал обсуждаемый продукт, после окончания отечественного ВУЗ-а, работают и в РФ и за рубежом и это нормально. Продукт продолжает развиваться. PascalABC.NET ни в коей мере не замена коммерческим продуктам, более того - проектирование визуальных интерфейсов там сведено к минимуму, ибо обучение программированию - это, прежде всего, алгоритмика и современные стили, синтаксис и объектные возможности, а не бездумное накидывание "баттонов" на формы. С уважением. Viewer - программист с более чем 40-летним стажем. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|