2. vježbe
Primjer 2-1
Zadatak
Napišite program koji za argument ima listu od dva člana i vraća sortiranu listu — manji broje je ispred većeg. Program prijavljuje grešku ako je duljinu liste različita od 2 — koristite funkciju Length za određivanje duljine liste.
Rješenje
In[1]:=
Testiranje
In[2]:=
Out[2]=
In[3]:=
Out[3]=
In[4]:=
Out[4]=
In[5]:=
Out[5]=
Primjer 2-2, za samostalni rad
Zadatak
Napišite program koji za argument ima listu od dva člana i vraća sortiranu listu — manji broje je ispred većeg. Program prijavljuje grešku ako je duljinu liste različita od 2 — koristite funkciju Length za određivanje duljine liste. U programu koristite postupak zamjene vrijednosti dviju varijabli.
Napomena:
1. za zamjenu vrijednosti dviju varijabli treba koristiti pomoćnu varijalblu,
2. specifično za Mathematicu, argument programa NE smije biti na lijevoj strani jednakosti pa u rješenju zadatka treba uvesti dvije varijable a i b koje predstavljaju elemente liste x[[1]] i x[[2]].
Rješenje
In[6]:=
Testiranje
In[7]:=
Out[7]=
In[8]:=
Out[8]=
In[9]:=
Out[9]=
In[10]:=
Out[10]=
Primjer 2-3
Napišite program koji će imati dva argumenta npr. x i y; tip oba argumenta mora biti Real ili Integer. Ako su oba pozitivna (tj. ako vrijedi x>0 i y>0) program vraća ln(x) + ln(y), a u protivnom vraća +.
Rješenje
In[11]:=
Testiranje
In[12]:=
Out[12]=
In[13]:=
Out[13]=
In[14]:=
Out[14]=
In[15]:=
Out[15]=
In[16]:=
Out[16]=
Primjer 2-4, za samostalni rad
Zadatak
Napišite program koji za argument ima listu od tri člana i vraća sortiranu listu — manji broj je ispred većeg. Program računa duljinu liste funkcijom Length. Napomena: za zamjenu vrijednosti treba koristiti pomoćnu varijablu.
Opis postupka
Obrazloženje algoritma (Bubble sort): polo\[ZHacek]aj "mjehurića" na početku
.
a
b
c
Krećemo odozdo (od trećeg do prvog retka), uspređujemo zadnji element i onaj ispred njega i zamjenjujemo ih (ako treba); Dalje uspoređujemo prednzadnji element i onaj ispred njega i evelntulano ih zamjenimo. Kada smo došli do vrha tada se na vrhu nalazi najlakši "mjehurić".
Ponavljao operaciju od trećeg do drugog elementa; na kraju se na drugom mjestu nalazi najlakši "mejhurić" među uspoređivanima
Primjer
Primjer postupka: Polazni raspored
(elementi koje promatramo na nekom koraku napisani su ovom bojom ).
5
4
3
Prvi prolaz (od zadnjeg do prvog elementa): usporedba:
, zamjena:
5
4
3
, usporedba:
5
3
4
, zamjena:
5
3
4
— na vrh je isplivao "najlakši" mjehurić.
3
5
4
Drugi prolaz (od zadnjeg do drugog elementa): usporedba:
, zamjena:
3
5
4
— na drugom mjestu se nalazi najlakši "mjehurić" među usopređivanima.
3
4
5
Kraj sortiranja, rezultat je
.
3
4
5
Primjer
Primjer postupka za listu od 4 člana: Polazni raspored:
(elementi koje promatramo na nekom koraku napisani su ovom bojom).
6
4
5
3
Prvi prolaz ("idemo" od zadnjeg do drugog člana i uspoređujemo ih s elementom ispred; ako treba zamjenjujemo ih): usporedba:
, zamjena:
6
4
5
3
, uspredba:
6
4
3
5
, zamjena:
6
4
3
5
, uspredba:
6
3
4
5
, zamjena:
6
3
4
5
— kraj prvog prolaza, najlakši "mjehurić" je na vrhu.
3
6
4
5
Drugi prolaz ("idemo" od zadnjeg do trećeg člana i uspoređujemo ih s elementom ispred; ako treba zamjenjujemo ih): uspredba:
, nema zamjene!:
3
6
4
5
, uspredba:
3
6
4
5
, zamjena:
3
6
4
5
— kraj drugog prolaza
3
4
6
5
Treći prolaz (od zadnjeg do trećeg člana): uspredba
, zamjena:
3
4
6
5
.
3
4
5
6
Kraj sortiranja, rezultat je
.
3
4
5
6
Rješenje
Napomena: kako je pokazano u drugom primjeru, zamjena vrijednosti dviju varijabli zahtjeva uvođenje pomoćne varijable. Program Mathematica ime neku vrstu izuzetka od navedenog pravila. Ako treba zamjeniti vrijednosti elemenata dvočlane liste {a, b} to možemo postići bez pomoćne varijable koristeći izraz
{a, b} = {b, a};
nakon čega će a i b imati zamijenjene vrijednosti, npr.
In[17]:=
Out[18]=
Out[19]=
Slijedi tekst programa:
In[20]:=
Testiranje
In[21]:=
Out[21]=