- 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
#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");
}
Изучение бинарных деревьев. Компьютерная Академия "ШАГ" Киевский филиал
как меня бесит что школоту с необсохшим на губах маёнозом учат крестам
нахуя??
зачем бинарные деревья проходить на крестах? блядь
вы еще массивы на окамле изучайте
А что не так с массивами в окамле?
а Вы считаете что ребенку стоит изучать программирование с окамла?
Там вполне человеческое IO, отличная модульная система (в отличие от всяких JS), понятная модель исполнения, и можно срать в массивы без unsafePerformIO и ST-монад. Можно и DSL-ек при желании написать, чтобы сгладить кривую вхождения для детей.
В общем, не сильно отличается от паскаля, с которого я начинал. Только скобки при вызове функций писать не нужно.
--папа, а как написать программу чтобы компьютер вывел мое имя на экран?
--Делаешь строку, терминированную нолем, потом кладешь на стек в порядке слева-на-право(stdcall) хендл консоли, адрес этой строки, 32битное число с ее длиной, потом указатель на шмат памяти куда писать сколько символов записалось, и потмо еще нул. Смотришь потом чтобы в EAX была единица (это типа ретурн по стдколу, единица это тру) и не забудь почистить стек потом.
--Папа, а что такое терминаторную?
Вообще говоря что-то в этом есть. С одной стороны я понимаю что начинать нужно со строгого, четкого языка с простыми конструкциями (кстати паскаль прекрасен как учебный язык).
С другой стороны ВВЕРХ всегда идти проще, чем вниз. Если студент осилил си с ее указательной арифметикой, сторадж классами, управлением памятью итд, то уж питончик-то он всегда освоит)
А вот обратное не верно, к сожалению.
Потому мне не очень нравится современная тенденция учить сразу питон или джаву, и уж конечно полный идиотизм писать на С++ когда ты не умеешь даже бинарные деревья.
Жава тоже соответствует критериям + гц.
>Если студент осилил си с ее указательной арифметикой, сторадж классами, управлением памятью итд, то уж питончик-то он всегда освоит)
И будет хуярить си напитоне.
Во-вторых много ненужной хуйни.
Первая программа начинается словами "public static void main".
Сразу нихуя не понятно что это блядтьтакое.
>>И будет хуярить си напитоне.
Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)
И тут ты с пруфами.
>Первая программа начинается словами "public static void main".
Сразу нихуя не понятно что это блядтьтакое.
И это самое главное. Жава не для прог в 1 файл.
>Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)
Замечательно работает и в обратном направлении.
Возьми книгу Блоха "эффектив джава" и сразу все узнаешь.
про readObject(), про Date(), про StringBuilder и StringBuffer итд.
>>Жава не для прог в 1 файл.
Совершенно верно. А учиться нужно с них.
>>Замечательно работает и в обратном направлении.
Не-а. Начинавшие с JS горе-программисты так на нём и кодят. И если им понадобится хотя бы просто понять код на сях, то они сразу же крякнут, потому что даже не знают обычно сколько бит в байте.
>А учиться нужно с них.
Учиться можно и так. Тем более, рыбу генерит эклипс если поставить одну галочку или по шаблону main.
>Не-а. Начинавшие с JS горе-программисты так на нём и кодят. И если им понадобится хотя бы просто понять код на сях, то они сразу же крякнут, потому что даже не знают обычно сколько бит в байте.
>Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)
Харэ демагогию разводить. Скажи в каких вузах на программиста обучение начинается с асма.
Да пошел ты нахуй, обезьяна безрукая. Книжки ты читать не умеешь, темой вопроса не владеешь (Если бы ты хоть один день писал на джаве, то вопроса бы не возникло) и хочешь чтобы я тут доказывал тебе что черное это черное.
>>Тем более, рыбу генерит эклипс
Ну, охуеннно.
"Ребята, 80% символов на этом экране вы пока не понимаете, ну и хуй с ними.". Очень удобно так учиться.
>>Скажи в каких вузах на программиста обучение начинается с асма.
Это к хуесте вопрос: Он сказал что его так учили.
В моем детстве путь был такой: паскаль ->си+асм.
Сейчас не знаю как.
Только вместо навороченных и обросших говном х86 и винапи надо взять что-то подружелюбнее и попроще - какую-нибудь ардуинку например.
Чтобы заинтересовать детей, старт должен быть интересным. Чтобы можно было делать крутые штуки, лучше всего — анимацию, роботов или игры. Тут подойдёт язык, в котором легко склеивать "блоки". Вот почему я упомянул написание eDSL для этих целей. Ассемблер в теории тоже подойдёт, если сделать его весёлым, показать на наглядных примерах. В частности, вот эту штуку я считаю неплохим введением в ассемблер http://tomorrowcorporation.com/humanresourcemachine
Для универов важно показать идею абстрактных типов данных и как правильно разделять и переиспользовать код. Паскаль был хорош для этого, но с обобщёнными алгоритмами у него не очень. Окамл в принципе весьма хорош для этих целей.
А после этой игры, сразу TIS-100. Чтобы сразу убить всё желание, которое могло появиться.
Или SHENZHEN I/O. Тоже вроде неплохая^w мозгоубивающая.
Купил неглядя, ибо zachtronics. Пойду играть в китайца.
Офигенная, имхо.
З.Ы. Вот только интересно, смогут ли в неё играть те, кто контроллеры ни разу не щупал и даташиты не курил?
А если я в детстве любил всё раскручивать - это проявление любви к декомпозиции?
По мне годнота, вроде современного турбопаса. Меня как-то просили учить школьников. Это, конечно, кончилось плохо (в смысле ничем), но дело было скорее в мне, а не в этой среде.
А что сейчас пишут на PascalABC?
Хотя он же по .NEt, так что наверное можно под винду не плохо писать
Хотел учить школьниц, а прислали школьников?
Сишечку семиклассникам вводить и то больше желающих.
Что бы к выпускному борода пробилась?
Присоединяйся к ардуинщикам, у avr асм тоже тёплый, ламповый и восьмибитный. Разве что регистров побольше.
Чем в x86 long mode?;))))
Вообще мне кажется что угодно имеет более приятный ISA чем x86
Внезапно, но да (если sse не считать). 32 штуки. Но вроде речь шла про z80?
А еще прибавь сюда плавающую курочку (там же тоже регистры есть) и всякие полудокументированные, и нормально будет. Сотня наберется)
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).