- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
var
s:string;
begin
repeat
readln(s);
until
(length(s)=4)
and(
(s[1]='1')
or(s[1]='2')
or(s[1]='3')
or(s[1]='4')
or(s[1]='5')
or(s[1]='6')
or(s[1]='7')
or(s[1]='8')
or(s[1]='9')
)
and(
(s[2]='1')
or(s[2]='2')
or(s[2]='3')
or(s[2]='4')
or(s[2]='5')
or(s[2]='6')
or(s[2]='7')
or(s[2]='8')
or(s[2]='9')
or(s[2]='0')
)
and(
(s[3]='1')
or(s[3]='2')
or(s[3]='3')
or(s[3]='4')
or(s[3]='5')
or(s[3]='6')
or(s[3]='7')
or(s[3]='8')
or(s[3]='9')
or(s[3]='0')
)
and(
(s[4]='1')
or(s[4]='2')
or(s[4]='3')
or(s[4]='4')
or(s[4]='5')
or(s[4]='6')
or(s[4]='7')
or(s[4]='8')
or(s[4]='9')
or(s[4]='0')
)
end.
Lure Of Chaos 08.11.2011 01:26 # +4
TarasB 08.11.2011 09:00 # −4
defecate-plusplus 08.11.2011 23:26 # 0
Lure Of Chaos 09.11.2011 00:28 # +3
jabber 09.11.2011 01:34 # +1
defecate-plusplus 09.11.2011 07:43 # −3
бейсику меня не учили, с 10 класса сразу это виртоблядство уровня PrOgRaM MaSsIv;
а в бейсике, вроде, требовали перед каждой строчкой номер строки писать? да, отличный язык для начинающих
Lure Of Chaos 09.11.2011 13:24 # 0
defecate-plusplus 09.11.2011 13:30 # +1
roman-kashitsyn 09.11.2011 13:33 # +2
а ещё лучше с python
defecate-plusplus 09.11.2011 13:44 # +1
учителя средней школы да и многие преподаватели высшей с трудом то паскаль и бейсик осваивают
что может объяснить учитель по информатике, сам ничего не понимающий даже в ООП
может и правильно, что детей сейчас учат ворду и экселю, а не калечат таким програмированием
roman-kashitsyn 09.11.2011 13:53 # 0
ладно, пусть будет pascal
defecate-plusplus 09.11.2011 14:08 # 0
печалит отсутствие вложенных подпрограмм? зато не надо писать procedure, function
потом выходят из школы такие подготовленные ребята, на 1 курсе закрепляют еще, а если повезет, то других языков в институте им даже не покажут, после института скрываются от армии в каком то задрищенском НИИ, как программисты абсолютно ничего не умеют, потому что научники такие же бакланы, ничего кроме процедурного программирования в паскале не делавшие всю жизнь, зато получают гранты от государства. И вот приходят такие люди потом на собеседование на позицию программиста на С++ - каждый первый такой, плакать хочется. И ладно бы не знали чего то в шаблонах/специализациях, виртуальном наследовании или хитрожопом выборе неконстантных операторов приведения типов, но азы то тоже не знают... а ты - лисп
*cry*
TarasB 09.11.2011 14:14 # +2
ПОКОРМЛЮ
> кстати не вижу разницы в сложности между С и паскалем
Но она есть.
Попробуй показать левому человеку запись i=i+1, он долго будет думать, почему решение этого уравнения не заставляет компьютер делить на ноль. А вот математический знак := как раз более понятный.
> ничего кроме процедурного программирования в паскале не делавшие всю жизнь, зато получают гранты от государства
А потом марсианская ракета с орбиты уйти не может ;(
> печалит отсутствие вложенных подпрограмм? зато не надо писать procedure, function
Ну ты сравнил. Полезную возможность языка и несущественное сокращение записи.
defecate-plusplus 09.11.2011 14:20 # 0
я сам начинал с паскаля, никаких проблем потом с переходом :=,= на =,== не возникло
defecate-plusplus 09.11.2011 14:39 # 0
я в последнее время все чаще замечаю эти фейлы, то тихоокеанская группировка спутников, то недолетит очередное говно из НИИ - вспомни "Булаву"
да с пару лет назад у нас работал человек, до этого полировавший штаны в ОКБ Сухой - они делали этот гражданский недосамолёт. Столько страхов понарассказывал
eth0 09.11.2011 17:45 # −1
..он и член разобьёт, и лоб себе изрежет.
> почему решение этого уравнения
Крайне унылая отмазка. Это не является уравнением. С таким же успехом могу повторить свой прошлый аргумент, что
if a <> b then
должно разрывать мозг при попытке понять, как же это выходит, что a меньшебольше b.
TarasB 09.11.2011 18:05 # +1
Унылая отмазка сишников. Реальность говорит о другом.
> С таким же успехом могу повторить свой прошлый аргумент, что
if a <> b then
должно разрывать мозг при попытке понять, как же это выходит, что a меньшебольше b.
Надо один раз сказать, что это значит, и человек больше путаться не будет. А вот =/== - известная няшапроблема
eth0 09.11.2011 19:41 # 0
Я сишник только в том случае, если считать, что це мне нравится больше паскакаля.
Це-вэй широко распространён во всём мире, паскалевский синтаксис я могу вспомнить в трёх языках, включая сам паскаль. Это не спич про миллионы мух, но близко.
> Надо один раз сказать, что это значит
Надо один раз сказать, что это не уравнение, и что уравнений в таких ЯП не бывает. Бывают присваивания и проверка на равенство.
defecate-plusplus 09.11.2011 20:01 # +1
для бисексулингвальных программистов, отключающих или игнорирующих ворнинги есть рекомендация делать
roman-kashitsyn 09.11.2011 14:16 # +2
А про Лисп, я, разумеется, пошутил. Scheme очень проста, но чтобы понять и оценить эту простоту нужно пройти через императивное чистилище
defecate-plusplus 09.11.2011 14:25 # +1
кстати это минус, когда человека учат какому то языку, многие вещи как что то работает для него получаются на уровне мейджик, ну или просто верит на слово - делай так и только так, потому что экосистема другого тебе не позволяет
ученик не задумывается, а где хранится в памяти вот это или вот это, а почему плохо здоровые куски памяти тупо туда сюда копировать, да и не один раз
может поэтому подрастающее поколение называет близкие к машине языки богомерзкими?
roman-kashitsyn 09.11.2011 14:31 # +1
А по поводу ограниченности средств Pascal... Слона надо есть по кусочкам. Если сразу загрузить школоту матаном - пропадёт интерес. С начала всё должно казаться простым и весёлым. А потом уже сами сишку ковырять начнут в поисках ответов.
defecate-plusplus 09.11.2011 14:36 # +1
искалеченные судьбы
lucidfoxGovno 09.11.2011 14:38 # 0
А с++говно?
roman-kashitsyn 09.11.2011 14:50 # +2
TarasB 09.11.2011 15:02 # 0
Расскажи же про ограниченность Паскаля по сравнению с Си.
roman-kashitsyn 09.11.2011 15:08 # 0
TarasB 09.11.2011 15:12 # +2
TarasB 09.11.2011 15:01 # 0
Ололо, чё, учить программистов, начиная с работы транзисторов и ручной пайки процессора?
defecate-plusplus 09.11.2011 15:04 # +2
это пиздец когда выпускник по специальности "математик. системный программист" приличного московского вуза не знает что такое точка входа в программу
а другой выпускник по примерно такой же специальности, только вуза из жопы страны, без зазрения совести передаёт кучу аргументов std::string копированием
TarasB 09.11.2011 15:13 # 0
Это пиздец, что аргументы по умолчанию передаются как копии, а не как const&.
lucidfoxGovno 09.11.2011 16:45 # 0
И правильно делает. Оказался умнее тебя.
defecate-plusplus 09.11.2011 15:10 # +1
TarasB 09.11.2011 15:15 # 0
Математика нужна.
Языки для понимания базовых вещей хорошие.
А что касается крестошаблнов - то человек, осиливший математику, осилит их без труда при возникновении потребности. Так что таких выпускников брать надо, если общие знания хороши - через месяц будут шпарить на крестах не хуже бородатых дядек.
defecate-plusplus 09.11.2011 15:31 # 0
вот тут зачастую и хочется просто проверить адекватность такого кандидата, сможет ли он вообще что то освоить? пока что всё печально, российская система образования готовит малопригодных специалистов.
SmackMyBitchUp 09.11.2011 15:12 # 0
Лично у нас (учителей информатики) изучаются Pascal, Object Pascal, C++ (основы ООП на данном языке), Prolog.
Прим.: Не считая методики преподавания информатики/математики, математических и других наук.
Все именно в таком порядке. И, вы не поверите, большую часть студентов напрягает именно предметы по специальности, хотя те студенты, которые пришли на специальность не штаны протирать, не согласны.
Обучение стараются строить таким образом, чтобы человек железно знал основы языков программирования, умел применять свои знания на практике, а так же умел самостоятельно обучаться.
И данная цепочка языков программирования выбрана не случайно. С точки зрения новичков, которые кое-как обладают единственным языком после школы (русским, а с англ. хотя бы знакомы), им гораздо проще изучать ЯП близкий по семантике к обычным языкам. В языке Pascal для описания конструкций используются английские слова. Они кажутся вам непорядочно длинными для ЯП, но студенту (предположительно прошедшему курс англ. языка в школе) легче оперировать именно словами, а не другими символами.
Чет я запизделся..
SmackMyBitchUp 09.11.2011 15:14 # 0
Количество студентов, учивших данный язык в школе, но нифига не научившихся с каждым годом все больше и больше =\
defecate-plusplus 09.11.2011 15:24 # +1
я надеюсь, что когда-нибудь хоть кто то в школе сможет детям дать современные знания, но это вряд ли случится, пока для этого будет выделяться 1 академический час в неделю. я не знаю, сколько дают детям сейчас, 10 лет назад всё было именно так.
лично я в 10-11 классе вместо школьной информатики ходил на отдельные городские курсы по 6-8 часов в неделю, без траты времени на ворд, пейнт и прочее, которое и так осваивается интуитивно, если дома есть компьютер.
беда же ведь еще в том, что детям дают очень скромную базу, не выпрямляют руки, чтобы писался чистый, стильный код, а не каша, не рассказывают о хорошем стиле, типичных ошибках, не дают погрузиться достаточно глубоко.
даже меня, выпускника кибернетического факультета, по программированию не особо нагружали (хотя, конечно, кому то эта несчастная программа давалась с трудом)
вот и остается, как если брать человека без опыта, то первые полгода его только и учить, фактически заново
почему краснодипломнику тяжело нарисовать иерархию из 1 базового класса и 2 наследников с одним сраным виртуальным методом? потому что в институте дай бог успеть ему дать простейшие алгоритмы сортировки, пару задач на ввод-вывод и отпустить с миром
TarasB 09.11.2011 15:32 # 0
Потому что структуры и указатели на функции намного проще для понимания и кодирования. ООП, в том виде, в каком оно массово есть, это просто бесполезный сахар для вариантных полей структур и указателей на функции.
defecate-plusplus 09.11.2011 15:34 # 0
TarasB 09.11.2011 15:37 # +1
Инкапсуляция - пометка некоторых полей, как нежелательных для изменения снаружи.
Сахар, короче.
defecate-plusplus 09.11.2011 15:41 # +3
а еще экономия ручного кодирования при назначении указателей методов
а еще проверка типов компилятором
а еще если наследование вспомнить, то без такого сахара ты заебешься дописывать к структуре добавленные в наследнике поля - останется небезопасное приведение типов и error-prone
я писал на С с этими указателями функций, в структуре хранилось состояние конечного автомата, с десятком указателей на "методы", и этих состояний было штук 40, можно не рассказывать
TarasB 09.11.2011 15:47 # 0
Да, указатели придётся ставить руками.
> а еще проверка типов компилятором
Каким местом стандартное ООП даёт проверку типа компилятором?
> а еще если наследование вспомнить, то без такого сахара ты заебешься дописывать к структуре добавленные в наследнике поля
Варианта тут два:
1. Вариантные поля.
2. Создать новую структуру, которая первым же членом включает в себя старую.
В общем, ручной работы становится больше, но код становится более примитивным и понятным, как ни странно.
defecate-plusplus 09.11.2011 15:59 # +1
использовать ООП можно и в языке, не приспособленном к ООП
но только ООП-язык позволит сделать это удобно и безопасно
малая часть - переход от миллиона форвард-деклараций функций-"методов" к ручному назначению их указателей в нужные места структуры
http://dl.dropbox.com/u/4275844/states1.png
ручной работы намного больше, чем кажется на первый взгляд
а ведь еще можно и промахнуться и назначить не тот метод не в то место (какая собсно разница для компилятора между onEnter и onExit если у них одинаковая сигнатура)
а еще ах это сладкое отсутствие неймспейсов или другого вложения имён
TarasB 09.11.2011 16:07 # 0
defecate-plusplus 09.11.2011 16:14 # +3
ООП всего лишь парадигма, одна из многих, например
если её приплетать где не требуется, получится что и понижает удобство, а кому то и быстродействие снизит, а кому то и фундаментальные типы захочется объектами сделать, всё объекты, объекты объектов, наконец то большевики дождались!
TarasB 09.11.2011 16:17 # 0
Не согласен. Качественные скачки всё же были. А ООП - это количественный скачок, не более. Это как сравнивать константу и порядок во времени работы... программиста.
> ООП всего лишь парадигма, одна из многих
Она слишком легко реализуется процедурными средствами.
> а кому то и фундаментальные типы захочется объектами сделать, всё объекты, объекты объектов, наконец то большевики дождались!
Это да.
Основной минус ООП даже не в каких-то её качествах, а нездоровой популярности и повсеместном насаждении.
defecate-plusplus 09.11.2011 16:26 # +1
если есть данные и как минимум 2 метода, завязанные на эти данные (допустим 1 корректная инициализация и 1 работа над ними), то обёртка их в один класс сразу решает кучу проблем, а ведь зачастую надо еще и корректно деинициализироваться
инкапсуляция - самая востребованная фича ООП
а наследование и полиморфизм лечат изжоги в других местах, иногда с целью сахара, иногда их можно заменить через шаблоны, но иногда (контейнер указателей на базовый класс, или хранение объекта, созданного как someobject<T>) без них не обойтись
TarasB 09.11.2011 16:33 # 0
Ну или в структуру :3
> инкапсуляция - самая востребованная фича ООП
Если понимать под инкапсуляцией запред доступа к приватным полям, то это, скорее, просто сахар.
> но иногда (контейнер указателей на базовый класс, или хранение объекта, созданного как someobject<T>) без них не обойтись
Контейнер указателей на базовую структуру почти так же удобен в обращении.
defecate-plusplus 09.11.2011 16:40 # 0
продумай объект "строка" на С
сделай ей ну, скажем, несколько методов - присваивание другой строки, сравнение с другой строкой, формирование нового объекта подстроки (с позиции N до M), корректное умирание
ты не сможешь сделать a.assign(b), потому что assign ничего не будет знать об a, тебе придется делать my_awesome_string_assign(a, b), ну или извращенное a.assign(a, b)
ты не сможешь воспользоваться автоматическим вызовом деструктора при выходе объекта из видимости - придется делать a.delete(a) руками
даже если ты сделаешь a.assign(a, b) тебе для этого по-хорошему надо будет все функции, что относятся к работе с этой строкой загнать в отдельный cpp, сделать их static и для инициализации объекта a делать функцию init
т.е. фактически у тебя получится
my_string a, b;
a.init(a); b.init(b);
a.assign(a, b);
a.delete(a);
b.delete(b);
не error-prone? не butt-hurt?
отрицай ООП дальше
defecate-plusplus 09.11.2011 16:43 # 0
TarasB 09.11.2011 18:03 # 0
defecate-plusplus 09.11.2011 18:10 # +2
Для обратной совместимости для структур, содержащих только plain old поля, сохранится сишное поведение, но как только ты выйдешь из си (объявишь внутри метод, не сишное поле, да даже private: впишешь), структура превращается в класс с дефолтным доступом public, дефолтными конструкторами, операцией присваивания и деструктором
ты же не будешь спорить, что конструктор и деструктор - это ООП
TarasB 09.11.2011 18:13 # 0
defecate-plusplus 09.11.2011 18:25 # +3
только никому не охота ебать себе мозг эмуляцией ООП ручными вызовами
кроме тебя, фаната процедурного программирования
TarasB 09.11.2011 18:51 # 0
Я в курсе. Только экономия в письме от этого ннебольшая. Впрочем, код становится чуть логичнее. С другой стороны Compare(a,b) смотрится нормально, а a.Compare(b) смотрится по-идиотски.
> кроме тебя, фаната процедурного программирования
Все парадигмы - частный случай процедурной. Даже функциональная - ведь функция и процедура это одно и то же.
Шутка.
Если серьёзно, то я бы определил функциональное программирование как процедурное, в котором процедуры можно выполнять над функциями.
3.14159265 09.11.2011 20:19 # 0
>a.Compare(b) смотрится по-идиотски.
Однозначно.
Хочу спросить. А вот как при таком использовании структур геттеры и сеттеры - отдельные методы.
Или ты вообще считаешь их избыточными в большинстве случаев?
TarasB 09.11.2011 20:23 # 0
Неоднозначная не в плане UB, а в плане, что у разных людей очень разное мнение на их счёт.
Ответить на твой вопрос не могу. Он глубже и выходит за рамки текущей темы.
roman-kashitsyn 09.11.2011 15:38 # +3
С музыкой такая же фигня, кстати.
defecate-plusplus 09.11.2011 16:17 # 0
что заставит копать глубже и глубже студента, поступившего на бюджет с 120 баллами за 3 экзамена, если одноклеточная школьная программа не усвоилась
а тебе в будущем придется учить этих детей
готовься
roman-kashitsyn 09.11.2011 16:24 # 0
SmackMyBitchUp 09.11.2011 18:19 # 0
SmackMyBitchUp 09.11.2011 18:26 # 0
Кстати, недавно мне сказали, что одной кафедре не хватает часов по предметам, поэтому нам поставили больше часов по методике преподавания математике. Преподаватель с психическими расстройствами. Бабулька старая. Да и преподавание математики нам ни к чему. Вот из-за этой "нехватки часов" нам все 4 года не дают спокойно заниматься информатикой, так что я учить никого не собираюсь. Мне не стыдно идти с моими знаниями в школу даже сейчас, мне стыдно, что я натолкнусь на школьников, которые захотят изучать какую-то область информатики глубже, а я не смогу в ней толком разбираться. Пока нам ипали мозги время шло. Такова политика деканата, который информатику не особо любит.
defecate-plusplus 09.11.2011 19:47 # 0
или предложить читать хорошие книжки, ведь по каждому языку есть хорошие книжки (уверен, даже по php!)
разобраться и применять ООП в бедном турбо паскале мне не помешало то, что учительница курсов тщательно скрывала свое полное невежество в нем, и я её в этом не собираюсь винить
SmackMyBitchUp 09.11.2011 22:54 # 0
roman-kashitsyn 10.11.2011 08:24 # 0
Lure Of Chaos 09.11.2011 18:50 # +5
defecate-plusplus 09.11.2011 19:40 # +2
а паскаль... нет, паскаль - это француз такой и единица измерения давления
3.14159265 09.11.2011 19:46 # +1
- структурное программирование надстройка над GOTO
- процедурное программирование надстройка над старым добрым GOSUB
defecate-plusplus 09.11.2011 20:08 # +1
повсюду дейкстроблядский заговор!
Lure Of Chaos 09.11.2011 20:18 # +5
потом они запретили номера строк
потом изьяли goto и gosub
а сейчас мы программируем не для процессора, а для виртуальных машин
TarasB 09.11.2011 20:25 # +1
Такие вещи надо говорить на площади, вытянув руку вверх в кулак.
А толпа должна хором поддакивать конец каждой фразы.
Я уже представил, это бы выглядело шикарно.
Lure Of Chaos 09.11.2011 20:45 # 0
eth0 10.11.2011 18:09 # 0
defecate-plusplus 09.11.2011 20:28 # 0
грядёт конец всему сущему!
1. не сотвори себе языка программирования пред ассемблером
2. не сотвори виртуальные машины
3. не используй ассемблер всуе
4. помни пятницу и не работай
5. почитай процессор твой, мать твою
6. не дели на ноль!
7. не используй синтаксические сахары и прочие функциональные программирования
8. не копипасть
9. не тролль
10. не желай кода ближнего твоего, не желай компьютера ближнего своего, ни мыши, ни клавиатуры
SmackMyBitchUp 09.11.2011 22:56 # −4
istem 10.11.2011 00:27 # 0
lucidfoxGovno 10.11.2011 00:39 # −11
istem 10.11.2011 00:41 # −1
lucidfoxGovno 10.11.2011 00:45 # −10
istem 10.11.2011 00:50 # +1
defecate-plusplus 10.11.2011 09:24 # −1
за какую команд религию топишь?
ты в курсе, что фаеры, пронесённые в ж свечи, купленные вне храма, на территории храма не действуют
если православный, то используешь ли зело язык "Азъ"?
http://paulxaoc.narod.ru/orthodoxide.jpg
roman-kashitsyn 10.11.2011 10:00 # 0
2. Не сотвори начальников, не поклоняйся им и не служи им
3. Не создавай побочных эффектов понапрасну
4. Помни о пятнице и будь ленив
5. Почитай Лисп и Си
6. Не удаляй поломанные тесты, чини их
7. Не пиши на C++
8. Не нарушай лицензии GPL
9. Не сваливай вину за сломанный билд на ближнего своего
10. Не возжелай писать под платформу соседа
bugmenot 10.11.2011 00:34 # 0
Именно так и есть, Object Pascal с необязательным дереференцом указателей на структурные типы тому пример. Тарас подтвердит.
Lure Of Chaos 10.11.2011 00:44 # 0
bugmenot 10.11.2011 01:04 # 0
guest8 09.04.2019 11:56 # −999
454 24.08.2021 21:36 # 0