3. Promjenjive i dodijeljivanje

Do ovog momenta, kad god bismo komandu „puts“ koristili da bi ispisali neki string ili broj, nakon što je ona izvršena, taj string ili broj bi nestao. Htio sam reći da, ako bismo htjeli ispisati (output) neki string dva puta, onda bismo ga morali dva puta i otkucati:

puts '...you can say that again...'

puts '...you can say that again...'

Ispis:

...you can say that again...

...you can say that again...

Bilo bi lijepo kad bi to mogli negdje upisati jednom i onda ga i zadržati,...spasiti ga negdje. Pa, naravno da je to moguće, inače ne bih ni spominjao.

Da bi smjestili neki string u memoriju računara, potrebno je označiti taj cijeli string nekim imenom. Programeri najčešće ovaj proces opisuju kao dodijeljivanje (assignment), a ime koje će imati taj string nazivaju varijablom. Samu varijablu možemo označiti bilo kakvim nizom znakova, ali prvi znak mora biti malo slovo. Da pokušamo ovaj posljednji program napisati još jednom, ali ovaj put string koji smo pisali iznad, označit ćemo varijablom imena myString (iako samo joj mogao dati i neko sasvim drugo ime, str ili myOwnLittleString ili henryTheEight).

myString = '...you can say that again...'

puts myString

puts myString

Ispis:

...you can say that again...

...you can say that again...

Svaki naredni put kad se pozovete na myString, program će umjesto toga koristiti string „...you can say that again...”. Možete sebi predstaviti varijablu myString kao nešto što upućuje na string „...you can say that again...”. Evo još nekoliko zanimljivih primjera:

name = 'Patricia Rosanna Jessica Mildred Oppenheimer'

puts 'My name is ' + name + '.'

puts 'Wow! ' + name + ' is a really long name!'

Ispis:

My name is Patricia Rosanna Jessica Mildred Oppenheimer.

Wow! Patricia Rosanna Jessica Mildred Oppenheimer is a really long name!

Kao što možemo varijabli dodijeliti (assign) neki objekt, tako taj objekat možemo zamijeniti nekim drugim, unutar iste varijable (reassign). (To i jeste razlog što ih nazivamo promjenjive; ono čemu one teže može varirati, mijenjati se.)

composer = 'Mozart'

puts composer + ' was "da bomb", in his day.'

composer = 'Beethoven'

puts 'But I prefer ' + composer + ', personally.'

Ispis:

Mozart was "da bomb", in his day.

But I prefer Beethoven, personally.

Naravno, kao varijablu možemo definisati bilo koji objekt, ne samo string:

var = 'just another ' + 'string'

puts var

var = 5 * (1+2)

puts var

Ispis:

just another string

15

Ustvari, varijable mogu ukazivati na gotovo sve,...osim drugih varijabli. Međutim, šta se desi ako bismo to ipak pokušali?

var1 = 8

var2 = var1

puts var1

puts var2

puts ''

var1 = 'eight'

puts var1

puts var2

Ispis:

8

8

eight

8

Dakle, prvo smo ukazali var2 na var1, što je toj varijabli dodijelilo objekat koji je definisan prvom varijablom i dalo rezultat 8. Onda smo dodijelili varijabli var1 drugi objekat (izvršili reassign) „eight“, ali pošto ustvari var2 nikad nije bila vezana za var1 [k.p.: što znači da se var2 ne mijenja dimanički, ne prati promjene na var1], njena je vrijednost ostala 8.

Eh sad kad smo naučili nešto o varijablama, brojevima i stringovima, hajde da naučimo i kako sve njih da pomiješamo u jednom programu!

------------------------------------------------

© 2003-2009 Chris Pine

http://pine.fm/LearnToProgram/