Generování úloh na kreslení grafu funkce

Tento notebook umožňuje vygenorovat úlohy, které slouží pro procvičení vykreslování grafů funkce s předpisem v jednom ze tvarů:
	y = a x + b;
	y = |a x + b| + c;
	y = ||a x + b| + d| + c;

Všechny tři typy funkcí se generují se stejnou pravděpodobností. Koeficienty a, b, c a d nabývají takových celočíselných hodnot, aby funkce bylo možné rozumně vykreslit. Navíc platí tato omezení:
	a je nenulové;
	d nabývá hodnot od -4 do 1 (tím je posílena pravděpodobnost, aby u třetího typu funkce měla smysl vnější absolutní hodnota pro většinu hodnot koeficientu d).

Pro název funkce se vybere náhodně jedno písmeno a od něj dále se pak funkce pojmenují dalšími písmeny, které následují v abecedě.
		
Počet úloh, které se mají generovat, je uložen v proměnné pocetuloh. Úlohy se vypíší do tabulky, v jejímž řádku bude pocetulohnaradek úloh. Počet opakování právě popsaného bloku je uveden v proměnné pocetopakovani.

© Jaroslav Reichl, 2012

pocetuloh=6;
pocetopakovani=3;

pocetulohnaradek=3;

dolnimezvyberu=-5;
hornimezvyberu=5;
vyberlinclen={-4,-3,-2,-1,1,2,3,4};
vyberabshodnota={-4,-3,-2,-1,0,1};

barva=Black;
velikostpisma=17;
okzadani=False;

For[k=1,k≤pocetopakovani,k++,
zadani=Table[Null,{i,0,pocetuloh+pocetulohnaradek,1}];
Table[zadani[[i]]="",{i,0,pocetuloh+pocetulohnaradek,1}];
zadani[[0]]=StringJoin[ToString[Style[ToString[k],barva,1.25velikostpisma,FontFamily->Times,Bold,Underlined],StandardForm],ToString[Style[". zadani uloh",barva,1.25velikostpisma,FontFamily->Times,Bold,Underlined],StandardForm]];
asciikodnazevfce=RandomInteger[{97,97+25-(pocetuloh-1)}];
jmenofunkce=Table[FromCharacterCode[asciikodnazevfce+i],{i,0,pocetuloh-1,1}];

Table[{
vypiscisla=StringJoin[ToString[Style[ToString[i],barva,velikostpisma,FontFamily->Times,Bold],StandardForm],ToString[Style[".  ",barva,velikostpisma,FontFamily->Times,Bold],StandardForm]],
akoef=RandomChoice[vyberlinclen],
bkoef=RandomInteger[{dolnimezvyberu,hornimezvyberu}],
ckoef=RandomInteger[{dolnimezvyberu,hornimezvyberu}],
dkoef=RandomChoice[vyberabshodnota],
rozhodovaciklic=RandomChoice[{1,2,3}],
If[rozhodovaciklic==1,
zadani[[i]]=StringJoin[vypiscisla," ",ToString[Style[jmenofunkce[[i]],barva,velikostpisma,FontFamily->Times,Italic],TraditionalForm],": y = ",ToString[Style[ToString[akoef x+bkoef,TraditionalForm],barva,velikostpisma,FontFamily->Times],StandardForm]],
If[rozhodovaciklic==2,
zadani[[i]]=StringJoin[vypiscisla," ",ToString[Style[jmenofunkce[[i]],barva,velikostpisma,FontFamily->Times,Italic],TraditionalForm],": y = ",ToString[Style[ToString[Abs[akoef x+bkoef]+ckoef,TraditionalForm],barva,velikostpisma,FontFamily->Times],StandardForm]],
zadani[[i]]=StringJoin[vypiscisla," ",ToString[Style[jmenofunkce[[i]],barva,velikostpisma,FontFamily->Times,Italic],TraditionalForm],": y = ",ToString[Style[ToString[Abs[Abs[akoef x+bkoef]+dkoef]+ckoef,TraditionalForm],barva,velikostpisma,FontFamily->Times],StandardForm]]]]},
{i,1,pocetuloh,1}];
If[Mod[pocetuloh,pocetulohnaradek]≠0,
korekceradku=1,
korekceradku=0];
tabulkazadani=TableForm[
Table[
Table[zadani[[(j-1)pocetulohnaradek+i]],{i,1,pocetulohnaradek,1}],{j,1,IntegerPart[(pocetuloh/pocetulohnaradek)]+korekceradku,1}],
TableSpacing->{1,3}];
Print[zadani[[0]]];
Print[tabulkazadani];
Print[StringJoin@@Table["_",{90}]]]