Programiranje

4. predavanje

3. primjer petlje Do

Zadatak

Napišite program koji  zahtijeva da upišete dva vektora (dvije liste)  i zatim računa skalarni umnožak. Liste moraju biti iste duljine.

Uputa: ako je "4predavanje_1.gif", i "4predavanje_2.gif" tada je skalarni umnožak jednak "4predavanje_3.gif".

Napomena: Nećemo provesti većinu potrebnih kontrola pri upisu podataka.

Rješenje

"4predavanje_4.gif"

Testiranje

"4predavanje_5.gif"

"4predavanje_6.gif"

3. primjer petlje Do, sa dodanom kontrolom (nije nužno)

Naredba FullForm i Head izraza

Mathematica svaki izraz koji korisnik napiše preformulira u funkcijski izraz tj. sve se prikazuje kao funkcija. Interni prikaz izraza možemo vidjeti pomoću funkcije FullForm.

"4predavanje_7.gif"

"4predavanje_8.gif"

Plus se zove Head izraza dok su a i b elementi izraza.

"4predavanje_9.gif"

"4predavanje_10.gif"

"4predavanje_11.gif"

"4predavanje_12.gif"

Times se zove Head izraza dok su x i y elementi izraza.

"4predavanje_13.gif"

"4predavanje_14.gif"

"4predavanje_15.gif"

"4predavanje_16.gif"

List se zove Head izraza dok su 1 , a, 6 i Sin[5] elementi izraza.

"4predavanje_17.gif"

"4predavanje_18.gif"

"4predavanje_19.gif"

"4predavanje_20.gif"

"4predavanje_21.gif"

"4predavanje_22.gif"

Kontrola da li je zadana lista zaista lista brojeva

Program kontrola ima kao argument listu i provjerava da li su elementi liste (realni) brojevi, ako jesu vraća kao vrijednost broj 0 a ako nisu vraća broj 1.

"4predavanje_23.gif"

Rješenje s  kontrolama

U programu ćemo koristiti naredbu oblika
          izraz1 =!= izraz2
rezultat je True ako izraz1 nije identički jednak izrazu izraz2, i False ako su izraz1 i izraz2 identički jednaki.

Reci programa koji sadrže kontrole imaju naredbe napisanie o ovoj boji.

"4predavanje_24.gif"

Dimenzija matrice (tip matrice)

Naredba ArrayDepth[a] daje kao rezultat broj indeksa potrebnih da se dobije "elementarni" element liste a. Kako su elementi matrice određeni s dva indeksa (npr "4predavanje_25.gif"ArrayDepth[a]==2; ako je ArrayDepth[a]!=2tada lista a nije matrica.
Nećemo provjeravati dali su elementi matrice brojevi ili objekti nekog drugog tipa.

Ako je lista a matrica tada se broj redaka i stupaca matrice a dobije naredbom Dimensions[a], pri čemu Dimensions vraća kao svoju vrijednost listu čiji prvi element je broj redaka a drugi element je broj stupaca.

1. primjer

"4predavanje_26.gif"

"4predavanje_27.gif"

"4predavanje_28.gif"

"4predavanje_29.gif"

"4predavanje_30.gif"

"4predavanje_31.gif"

2. primjer

"4predavanje_32.gif"

"4predavanje_33.gif"

"4predavanje_34.gif"

"4predavanje_35.gif"

"4predavanje_36.gif"

1. primjer dvostruke petlje Do

Zadatak

Napišite program koji ima jedan argument - matricu i vraća najmanji element te matrice. U programu ćemo kontrolirati da li je argument zaista matrica, ali nećemo kontrolirati da li su elementi matrice brojevi ili neki drugi objekti.

Npr. ako matrica izgleda ovako "4predavanje_37.gif" tada program treba vratiti broj -7.

Izrada

"4predavanje_38.gif"

testiranje

"4predavanje_39.gif"

"4predavanje_40.gif"

"4predavanje_41.gif"

"4predavanje_42.gif"

"4predavanje_43.gif"

"4predavanje_44.gif"

"4predavanje_45.gif"

"4predavanje_46.gif"

"4predavanje_47.gif"

"4predavanje_48.gif"

2. primjer dvostruke petlje Do

Zadatak

Napišite program koji ima jedan argument - matricu i vraća najveći negativan element te matrice. U programu ćemo kontrolirati da li je argument zaista matrica, ali nećemo kontrolirati da li su elementi matrice brojevi ili neki drugi objekti.

U dole navednom programu ovom bojom  je istaknut jedini redak koji se mijenja.

Npr. ako matrica izgleda ovako "4predavanje_49.gif" tada program treba vratiti broj -2.

Izrada

"4predavanje_50.gif"

testiranje

"4predavanje_51.gif"

"4predavanje_52.gif"

"4predavanje_53.gif"

"4predavanje_54.gif"

"4predavanje_55.gif"

"4predavanje_56.gif"

"4predavanje_57.gif"

"4predavanje_58.gif"

"4predavanje_59.gif"

"4predavanje_60.gif"

"4predavanje_61.gif"

"4predavanje_62.gif"

"4predavanje_63.gif"

"4predavanje_64.gif"

3. primjer dvostruke petlje Do

Zadatak

Napišite program koji će zbrojiti dvije matrice. Program neće kontrolirati ulazne podatke osim činjenice da li se matrice mogu zbrojiti.

Podsjećanje: ako je matrica "4predavanje_65.gif",  tipa (m, n) i matrica "4predavanje_66.gif"] tipa (p, q) tada se zbroj a+b može formirati ako u a i b istog tipa tj. m=p i n=q,  i rezultat "4predavanje_67.gif"] je tipa (m,n) a elementi od c se računaju po formuli
                             "4predavanje_68.gif"
                             
Da bi kreirali matricu u koju ćemo upisati elemente od c koristiti ćemo se naredbom ConstantArray[konstata, {m, q}]; u našem slučaju će konstata biti jedanka nuli. Npr. nul matrica sa 3 retka i 4 stupca se dobije naredbom

"4predavanje_69.gif"

"4predavanje_70.gif"

Izrada

"4predavanje_71.gif"

Testiranje

"4predavanje_72.gif"

"4predavanje_73.gif"

"4predavanje_74.gif"

"4predavanje_75.gif"

"4predavanje_76.gif"

Primjer trostruke petlje Do (nije nužno)

Zadatak

Napišite program koji će pomnožiti dvije matrice. Program neće kontrolirati ulazne podatke osim činjenicu da li su matrice ulančane.

Podsjećanje: ako je matrica "4predavanje_77.gif",  tipa (m, n) i matrica "4predavanje_78.gif"] tipa (p, q) tada se umnožak a·b može formirati ako u a i b ulančane, tj. n=p, i rezultat "4predavanje_79.gif"] je tipa (m,q) a elementi od c se računaju po formuli
                             "4predavanje_80.gif"

Izrada

"4predavanje_81.gif"

Testiranje

"4predavanje_82.gif"

"4predavanje_83.gif"

"4predavanje_84.gif"

"4predavanje_85.gif"

Notebook izradili: Vladimir Benić i Sonja Gorjanc


Created by Wolfram Mathematica 6.0  (13 May 2008) Valid XHTML 1.1!