Prvi programi
O obliku teksta programa
U 9. predavanju (MPZI_predavanje_09) opisali smo načine definiranja i primjene programskih funkcija:
„Programska se funkcija definira na sljedeći način:
def naziv (parametri) :
tijelo funkcije
Definicija funkcije započinje ključnom riječju def iza koje slijedi naziv funkcije. Dobro odabrani naziv trebao bi biti ključem značenja i svrhe funkcije. Nakon naziva se između okruglih zagrada navode parametri funkcije. Parametri su varijable koje pri upotrebi funkcije prihvaćaju vrijednosti koje se prenose u funkciju—koje ulaze u nju. (Par zagrada treba napisati i ako funkcija nema parametara.) Prvi redak definicije funkcije završava dvotočkom.
Tijelo funkcije niz je naredaba koje propisuju kako funkcija radi ono čemu je namijenjena.
Vrijednost koju funkcija izračunava i ‚vraća’ naredbom return je vrijednost funkcije.
Upotreba funkcije naziva se pozivom funkcije:
naziv (argumenti)
Nakon naziva se između okruglih zagrada navode funkcijski argumenti—vrijednosti koje se prenose u funkciju.”
Treba dodati da su naredbe tijela funkcije uvučene 4 slovna znaka (pomoću 4 razmaka, to jest, prazna znaka, „ ”). Kada napišete prvi redak koji završava dvotočkom (nazvan i zaglavljem funkcije) i pritisnete tipku Enter , sučelje SageMath-a će samo formirati uvlaku, pa o uvlačenju retka trebate voditi računa samo ako obrišete redak naredbe i ponovo ga pišete. Potpunije rečeno (s pogledom u budućnost), kad god otipkate dvotočku pa Enter (na sljedećim ćemo vježbama pokazati da to neće biti samo u prvom retku definicije funkcije), sučelje SageMath-a će sljedeći redak uvući za daljnja 4 znaka; ako zadnji otipkani znak prije Enter nije dvotočka, sučelje sljedeći redak uvlači onoliko koliko je uvučen tekući redak.
1. zadatak
Napišite programsku funkciju nazvanu pol3, kojoj je parametar broj x, a koja izračunava i vraća vrijednost izraza x3+2x+1, te njome izračunajte vrijednost izraza za brojeve 0, 1 i −1.
|
|
|
|
2. zadatak
Napišite programsku funkciju s nazivom potencije, koja ima dva parametra x i y, a izračunava i vraća vrijednost izraza xy+yx. Funkciju pozovite s vrijednostima parametara x=1 i y=2.
|
|
1. zadatak za zadaću
Napišite programsku funkciju hipotenuza(), čiji su parametri a i b katete pravokutnoga trokuta, a koja vraća duljinu hipotenuze. Funkciju upotrijebite za podatke
Ako su duljine kateta a i b, duljina je hipotenuze c=√a2+b2.
|
3. zadatak
„Teorija”:
Tekstualna konstanta (niz znakova, engl. string) zadaje se tako da se bilo koji tekst ograniči jednostrukim ili dvostrukim navodnicima. Primjerice, izrazi "Danas je lijep dan" i 'Padao je snijeg' dvije su tekstualne konstante. Dvije se tekstualne konstante mogu spojiti u treću primjenom operatora zbrajanja +. Na primjer, izraz
"Danas je lijep dan" + 'Padao je snijeg'
daje tekst "Danas je lijep danPadao je snijeg".
Zadatak:
Napišite programsku funkciju pozdrav() koja kao parametar ima tekst koji sadrži ime i prezime, a vraća pozdravnu poruku sastavljenu od teksta "Pozdravljam Te, " kojemu je dodano ime i prezime te uzvičnik na kraju.
|
|
Ako ime ili prezime sadrže naša slova s kvačicama (dijakritičke znakove), primijetit ćete da SageMath ime malih problema s ispisom rezultata. To je greška SageMath-a i jezika Python.
Promijenite naredbu return u print i ponovo pozovite funkciju.
|
|
Vrijednost funkcije je ono što funkcija vraća naredbom return. Ta se vrijednost može pridružiti varijabli i upotrijebiti u daljnjem radu u radnom listu. Prethodni primjer s naredbom print nema naredbe return, pa funkcija ne vraća nikakvu vrijednost. U pravilu, programske funkcije trebaju vraćati vrijednosti, pa stoga pokušajte uvijek upotrebiti naredbu return.
Problem ispisa vrijednosti funkcije pozdrav() može se riješiti i na sljedeći način:
|
2. zadatak za zadaću
Napišite programsku funkciju omiljeni() kojoj ćete kao argument predati naziv Vašega omiljenog kolegija na Fakultetu, a funkcija će ispisati tekst "Omiljeni kolegij mi je " dopunjen nazivom izabranog predmeta, naravno, s točkom na kraju.
|
4. zadatak
„Teorija”:
Prisjetite se da se kvadratna jednadžba u SageMath-u može riješiti funkcijom solve(). Primjerice, želimo li riješiti jednadžbu x2−5x+6=0, napisat ćemo
solve (x^2 - 5*x + 6 == 0, x)
i kao rezultat dobiti
[x == 3, x == 2]
Ako taj rezultat pridružimo varijabli rez, numerička se vrijednost prvog rješenja može dobiti izrazom
rez[0].right()
Zadatak:
Napišite programsku funkciju kvadratna() kojoj je parametar kvadratna jednadžba ax2+bx+c=0. Funkcija treba, pomoću funkcije solve(), riješiti tu jednadžbu i vratiti numeričke vrijednosti rješenja x1 i x2 (dakle, ne želimo da funkcija vrati listu [x == x1, x == x2]).
Napisanom funkcijom riješite jednadžbe x2−5x+6=0 i x2+x+1=0 pa rezultate ispišite pomoću funkcije show().
|
|
|
Napomena: funkcija dobro radi i ako joj se kao argument preda samo lijeva strana jednadžbe. Provjerite.
|
3. zadatak za zadaću
„Teorija”:
Kao što bi trebalo biti poznato, formula za rješenja kvadratne jednadžbe ax2+bx+c=0 je
x1,2=−b±√D2a gdje je D=b2−4ac.
Zadatak:
Napišite programsku funkciju kvadratna2() parametri koje su koeficijenti a, b i c kvadratne jedandžbe ax2+bx+c=0. Funkcija treba, primjenom navedene formule, riješiti jednadžbu i vratiti vrijednosti rješenja x1 i x2.
Napisanom funkcijom riješite jednadžbe iz prethodnoga zadatka.
|