MPZI_vj10

2480 days ago by fresl

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  $x^3 + 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  $x^y + y^x$.  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

  1. $a = 3$  i  $b = 4$,
  2. $a = 7$  i  $b = 24$.

Ako su duljine kateta $a$ i $b$, duljina je hipotenuze  $c = \sqrt{a^2 + b^2}$.

       

 

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  $x^2 -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  $a\,x^2 + b\,x + c = 0$.  Funkcija treba, pomoću funkcije solve(), riješiti tu jednadžbu i vratiti numeričke vrijednosti rješenja $x_1$ i $x_2$  (dakle, ne želimo da funkcija vrati listu [x == x1, x == x2]).

Napisanom funkcijom riješite jednadžbe  $x^2 -5x + 6 = 0$  i  $x^2 + 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  $a\,x^2 + b\,x + c = 0$  je

       $x_{1,2} = \dfrac{-b \pm \sqrt{D}}{2\,a}$  gdje je  $D = b^2 - 4\:a\,c$.

Zadatak:

Napišite programsku funkciju kvadratna2() parametri koje su koeficijenti $a$, $b$ i $c$ kvadratne jedandžbe  $a\,x^2 + b\,x + c = 0$.  Funkcija treba, primjenom navedene formule, riješiti jednadžbu i vratiti vrijednosti rješenja $x_1$ i $x_2$.

Napisanom funkcijom riješite jednadžbe iz prethodnoga zadatka.