1. C++ / Говнокод #21408

    −22

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    #include <iostream>
    using namespace std;
    
    class cs{protected: int t;int fs(){return t;}   cs(int p):t(p){} ~cs(){cout<<"\n~cs"<<this;} friend void sh(cs*);};
    
    class cn:protected cs {protected: int t  /* ,z */ ; cn(int p, int ps):cs(ps), t(p){} int fs(){return t+cs::fs();}};
    
    class ct:protected cn, protected cs {protected: int t;int fs(){return t+cs::fs()+cn::fs();} friend int sm( ct*  x){return x->fs();}
    friend void sh(ct*);
    public: ct(int p, int ps, int pns, int pn):cs(ps), t(p), cn(pn,pns){} //void setZ(int pz){z=pz;} int getZ(){return z;}
    		~ct(){cout<<"\n~ct";}};
    
    void sh(ct* x){cout <<endl<<x<<' '<<x->t<<' '<<x->cs::t<<' '<<x->cn::t<<' '<<x->cn::cs::t;}
    
    void shcs(cs* x){ cout <<endl<<x; sh(x);}
    void sh(cs* x){cout <<endl<<x<<' '<<x->t;}
    
    struct ss {int t;ss(int p):t(p){}  void sh(){cout<<"\nsst="<<t;}~ss(){cout<<"\n~ss"<<this<<' '<<sizeof(*this);}};// no distructor for *this
    
    struct sn: ss { int t; sn(int p, int ps):ss(ps), t(p){} };
    
    struct st: sn,  ss { int t; st(int p, int ps, int pns, int pn):ss(ps), t(p), sn(pn,pns){}  ~st(){cout<<"\n~st"<<' '<<sizeof(*this);}};
    
    void main()
    {
    	ct* pct = new ct(1,2,4,8);cout <<sm(pct);
    //	pct->setZ(77);cout <<pct->getZ()<<endl;
    
    	for (int t= sizeof(*pct)/sizeof(int) ,sm=0, *pi=(int*)pct;t--; sm+= *pi++,cout<<' '<<sm);//4 12 14
    
    	cout<<"\ncalling shcs";sh(pct);shcs((cs*)pct);shcs((cs*)(cn*)pct);
    
    	delete pct;
    
    
    	st* pst = new st(1,2,4,8);
    	sn* psn=0;
    	ss* pss;  cout <<"\n ss* ->t="<<(pss /*  = psn  */ = pst)->t<<' '<<pss<<' '<<psn<<' '<<' '<<pst; // different pss' addresses 
    	cout <<"\n ss* ->t="<<(pss=(sn*)pst)->t<<' '<<pss<<' '<<pst;
    
    	st* ps2= (st*)pss; cout<<"\nst* ps2 = (st*) pss"<<ps2;// not existing instant on that address - CAN CRASH!!!
    
    	/* pss=pst; */  delete /*(st*)(sn*)*/  pss;//??????
    
    	system("pause");
    
    }

    Изучение бинарных деревьев. Компьютерная Академия "ШАГ" Киевский филиал

    Запостил: KARTON, 10 Октября 2016

    Комментарии (59) RSS

    • показать все, что скрытоТипичный олимпиадный код
      Ответить
    • показать все, что скрытосука

      как меня бесит что школоту с необсохшим на губах маёнозом учат крестам

      нахуя??

      зачем бинарные деревья проходить на крестах? блядь
      вы еще массивы на окамле изучайте
      Ответить
      • показать все, что скрыто> массивы на окамле изучайте

        А что не так с массивами в окамле?
        Ответить
        • показать все, что скрытовсе в норме

          а Вы считаете что ребенку стоит изучать программирование с окамла?
          Ответить
          • показать все, что скрытоВполне. Не обязательно же сразу в хардкор со структурным ООП, функторами, DI в компайлтайме и метапрограммированием на camlp4.
            Там вполне человеческое IO, отличная модульная система (в отличие от всяких JS), понятная модель исполнения, и можно срать в массивы без unsafePerformIO и ST-монад. Можно и DSL-ек при желании написать, чтобы сгладить кривую вхождения для детей.
            В общем, не сильно отличается от паскаля, с которого я начинал. Только скобки при вызове функций писать не нужно.
            Ответить
            • показать все, что скрытоУ меня весной будет вводный курс проги для шестиклашек. Может, попробовать?
              Ответить
              • показать все, что скрытоВ некоторых университетах — это первый язык, которому учат, почему бы и не попробовать :)
                https://github.com/ocaml/ocaml.org/wiki/OCaml-at-School
                Ответить
                • показать все, что скрытоВ нормальных университетах первые изыки asm и c
                  Ответить
                  • показать все, что скрытода, отличная мысль про asm.

                    --папа, а как написать программу чтобы компьютер вывел мое имя на экран?
                    --Делаешь строку, терминированную нолем, потом кладешь на стек в порядке слева-на-право(stdcall) хендл консоли, адрес этой строки, 32битное число с ее длиной, потом указатель на шмат памяти куда писать сколько символов записалось, и потмо еще нул. Смотришь потом чтобы в EAX была единица (это типа ретурн по стдколу, единица это тру) и не забудь почистить стек потом.
                    --Папа, а что такое терминаторную?
                    Ответить
                    • показать все, что скрытоДа, на первом курсе нам препод примерно так и рассказывал. И, имхо, правильно делал.
                      Ответить
                      • показать все, что скрытоКакой там оборот рашкинского it, напомните.
                        Ответить
                      • показать все, что скрытоправда? а где такое было?

                        Вообще говоря что-то в этом есть. С одной стороны я понимаю что начинать нужно со строгого, четкого языка с простыми конструкциями (кстати паскаль прекрасен как учебный язык).

                        С другой стороны ВВЕРХ всегда идти проще, чем вниз. Если студент осилил си с ее указательной арифметикой, сторадж классами, управлением памятью итд, то уж питончик-то он всегда освоит)

                        А вот обратное не верно, к сожалению.

                        Потому мне не очень нравится современная тенденция учить сразу питон или джаву, и уж конечно полный идиотизм писать на С++ когда ты не умеешь даже бинарные деревья.
                        Ответить
                        • показать все, что скрыто>со строгого, четкого языка с простыми конструкциями (кстати паскаль прекрасен как учебный язык).
                          Жава тоже соответствует критериям + гц.

                          >Если студент осилил си с ее указательной арифметикой, сторадж классами, управлением памятью итд, то уж питончик-то он всегда освоит)
                          И будет хуярить си напитоне.
                          Ответить
                          • показать все, что скрытоЖава не соответствуте. Во-первых много грязи. Вся стандартная либлиотека очень засрана всякими антипаттернами.

                            Во-вторых много ненужной хуйни.
                            Первая программа начинается словами "public static void main".
                            Сразу нихуя не понятно что это блядтьтакое.

                            >>И будет хуярить си напитоне.
                            Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)
                            Ответить
                            • показать все, что скрыто>Жава не соответствуте. Во-первых много грязи. Вся стандартная либлиотека очень засрана всякими антипаттернами.
                              И тут ты с пруфами.

                              >Первая программа начинается словами "public static void main".
                              Сразу нихуя не понятно что это блядтьтакое.
                              И это самое главное. Жава не для прог в 1 файл.

                              >Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)
                              Замечательно работает и в обратном направлении.
                              Ответить
                              • показать все, что скрыто>>И тут ты с пруфами.
                                Возьми книгу Блоха "эффектив джава" и сразу все узнаешь.
                                про readObject(), про Date(), про StringBuilder и StringBuffer итд.

                                >>Жава не для прог в 1 файл.
                                Совершенно верно. А учиться нужно с них.

                                >>Замечательно работает и в обратном направлении.
                                Не-а. Начинавшие с JS горе-программисты так на нём и кодят. И если им понадобится хотя бы просто понять код на сях, то они сразу же крякнут, потому что даже не знают обычно сколько бит в байте.
                                Ответить
                                • показать все, что скрытоДа нет уж, давай нормальные цитаты или ссылку на скачивание с номерами страниц.

                                  >А учиться нужно с них.
                                  Учиться можно и так. Тем более, рыбу генерит эклипс если поставить одну галочку или по шаблону main.

                                  >Не-а. Начинавшие с JS горе-программисты так на нём и кодят. И если им понадобится хотя бы просто понять код на сях, то они сразу же крякнут, потому что даже не знают обычно сколько бит в байте.
                                  >Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)

                                  Харэ демагогию разводить. Скажи в каких вузах на программиста обучение начинается с асма.
                                  Ответить
                                  • показать все, что скрыто>>, давай нормальные цитаты или ссылку на скачивание с номерами страниц.

                                    Да пошел ты нахуй, обезьяна безрукая. Книжки ты читать не умеешь, темой вопроса не владеешь (Если бы ты хоть один день писал на джаве, то вопроса бы не возникло) и хочешь чтобы я тут доказывал тебе что черное это черное.

                                    >>Тем более, рыбу генерит эклипс
                                    Ну, охуеннно.

                                    "Ребята, 80% символов на этом экране вы пока не понимаете, ну и хуй с ними.". Очень удобно так учиться.

                                    >>Скажи в каких вузах на программиста обучение начинается с асма.
                                    Это к хуесте вопрос: Он сказал что его так учили.

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

                      Только вместо навороченных и обросших говном х86 и винапи надо взять что-то подружелюбнее и попроще - какую-нибудь ардуинку например.
                      Ответить
                      • Кмк, языки для обучения детей и для универов должны быть немного разные.
                        Чтобы заинтересовать детей, старт должен быть интересным. Чтобы можно было делать крутые штуки, лучше всего — анимацию, роботов или игры. Тут подойдёт язык, в котором легко склеивать "блоки". Вот почему я упомянул написание eDSL для этих целей. Ассемблер в теории тоже подойдёт, если сделать его весёлым, показать на наглядных примерах. В частности, вот эту штуку я считаю неплохим введением в ассемблер http://tomorrowcorporation.com/humanresourcemachine
                        Для универов важно показать идею абстрактных типов данных и как правильно разделять и переиспользовать код. Паскаль был хорош для этого, но с обобщёнными алгоритмами у него не очень. Окамл в принципе весьма хорош для этих целей.
                        Ответить
                        • Игра неплохая, но отсутствие нормального IDE раздражает. Особенно когда ты хочешь переставить пару блоков кода, скопировать часть кода и вставить в другое место.

                          А после этой игры, сразу TIS-100. Чтобы сразу убить всё желание, которое могло появиться.

                          Или SHENZHEN I/O. Тоже вроде неплохая^w мозгоубивающая.
                          Ответить
                        • Я продолжаю любить лого как первый язык. Обычно на нём детям неплохо заходят все базовые процедурные концепции и любовь к декомпозиции.
                          Ответить
                          • > любовь к декомпозиции
                            А если я в детстве любил всё раскручивать - это проявление любви к декомпозиции?
                            Ответить
                            • Ну вот посмотри, что в итоге выросло.
                              Ответить
                          • Что думаешь про PascalABC?
                            По мне годнота, вроде современного турбопаса. Меня как-то просили учить школьников. Это, конечно, кончилось плохо (в смысле ничем), но дело было скорее в мне, а не в этой среде.
                            Ответить
                            • показать все, что скрытоВ моем децтве паскаль был не только учебный ЯП, но и рабочий. В теплые 90е я мог написать на нем всё, что угодно. И даже взрослые дяди на нем писали.

                              А что сейчас пишут на PascalABC?

                              Хотя он же по .NEt, так что наверное можно под винду не плохо писать
                              Ответить
                            • > но дело было скорее в мне
                              Хотел учить школьниц, а прислали школьников?
                              Ответить
                              • Как ты мог такое подумать. Мерзкое 3D же. Это просто не было интересно ни мне, ни им.
                                Ответить
                                • Хех, где бы найти 2D школьниц, которые хотят учиться программированию...
                                  Ответить
                                  • Bormand, за такие стремление к просвещению молодежи и посадить могут
                                    Ответить
                                  • Могу только мерзкое тридэ предложить. К тому же это тебе до академа ездить.
                                    Ответить
                            • Ну вот он сейчас стандарт де факто для школьного паскаля. У нас тут острая проблема в том, что людей, которые одновременно готовы учить школьников, умеют хорошо кодить и согласны вести паскаль, нет.

                              Сишечку семиклассникам вводить и то больше желающих.
                              Ответить
                              • Вообще говоря, у меня о Pascal весьма тёплые воспоминания. Первый язык всё-таки... Первые игрушки, спрайты, зашитые в код...
                                Ответить
                              • >>Сишечку семиклассникам вводить и то больше желающих.

                                Что бы к выпускному борода пробилась?
                                Ответить
                      • показать все, что скрытозавидую я тем, кто учил асм под z80) им куда проще было, гг
                        Ответить
                        • > завидую я тем, кто учил асм под z80
                          Присоединяйся к ардуинщикам, у avr асм тоже тёплый, ламповый и восьмибитный. Разве что регистров побольше.
                          Ответить
                          • показать все, что скрыто>> Разве что регистров побольше.
                            Чем в x86 long mode?;))))

                            Вообще мне кажется что угодно имеет более приятный ISA чем x86
                            Ответить
                            • > Чем в x86 long mode
                              Внезапно, но да (если sse не считать). 32 штуки. Но вроде речь шла про z80?
                              Ответить
                              • показать все, что скрытопочему это не считать sse? Очень даже считать. Их там сотня)
                                Ответить
                                • 16 штук всего. Мы же не байты считаем, а регистры? А ну ок, ещё +16 новых от AVX...
                                  Ответить
                                  • показать все, что скрытоЯ не про SSE, а вообще про самый последний x86 в long mode.
                                    А еще прибавь сюда плавающую курочку (там же тоже регистры есть) и всякие полудокументированные, и нормально будет. Сотня наберется)
                                    Ответить
                                    • Да гдеж сотня то? 16 обычных, 8 fpu/mmx, 32 sse/avx и... кончились. Или ты ещё предлагаешь всякие control/debug и MSR считать?
                                      Ответить
                                      • Может быть, он посчитал ещё половинки, четвертинки и осьмушки регистров (всякие EAX/AX/AL)?

                                        In 64-bit mode, eight new GPRs are added to the eight legacy GPRs, all 16 GPRs are 64 bits wide, and the low bytes of all registers are accessible. Figure 3-3 on page 27 shows the GPRs, flags register, and
                                        instruction-pointer register available in 64-bit mode. The GPRs include:
                                        • Sixteen 8-bit low-byte registers (AL, BL, CL, DL, SIL, DIL, BPL, SPL, R8B, R9B, R10B, R11B, R12B, R13B, R14B, R15B).
                                        • Four 8-bit high-byte registers (AH, BH, CH, DH), addressable only when no REX prefix is used.
                                        • Sixteen 16-bit registers (AX, BX, CX, DX, DI, SI, BP, SP, R8W, R9W, R10W, R11W, R12W, R13W, R14W, R15W).
                                        • Sixteen 32-bit registers (EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, R8D, R9D, R10D, R11D, R12D, R13D, R14D, R15D).
                                        • Sixteen 64-bit registers (RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8, R9, R10, R11, R12, R13, R14, R15).
                                        Ответить
                                      • Кстати, почему не придумали SIH, DIH, SPH, BPH? Ряд регистров на -H выглядит слишком скромно.
                                        Ответить
    • показать все, что скрытоХммм, а как называется этот стиль форматирования? void main() - ну блин, я сам ничего против компиляторов майкрософта не имею, но они хоть знают зачем есть int main()?
      Ответить

    Добавить комментарий