Processing math: 100%

MPZI_vj10

2399 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  x3+2x+1,  te njome izračunajte vrijednost izraza za brojeve  01  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

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

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  x25x+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  x25x+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=b24ac.

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.