Birt þann 9. september, 2011 | Höfundur: Nörd Norðursins
0Kynning á forritun
– eftir Ólaf Waage
Þessi grein er ætluð þeim sem hafa áhuga á að kynna sér hvað það er að forrita, og er búist við því að lesandinn viti lítið sem ekkert um forritun.
Í grunninn snýst forritun um það að leysa vandamál. Vandamálin og hvernig þau eru leyst eru jafn mörg og þau eru mismunandi, en forritarar nýta sér ýmsar aðferðir til þess að einfalda þau, og þeir geta einnig nýtt hluta af lausn á eldra vandamáli til þess að aðstoða við lausnina á því nýja.
Buxur eru flóknar
Ímyndum okkur að þú standir fyrir því vandamáli að klæða þig í buxur, sem er vandamál sem hrjáir marga íslendinga á hverjum degi, og ímyndum okkur að það eina sem þú kannt er að beita líkamanum á sama máta og þú kannt í dag, það er að segja að hreyfa útlimina.Uppsetningin er eftirfarandi, þú ert buxnalaus og stendur fyrir framan einar buxur. Sumir myndu byrja á að segja, „Ég klæði mig í buxurnar.“ En það er eitthvað sem við kunnum ekki, þannig að hvernig getum við, sem kunnum að klæða okkur brotið vandamálið niður í einfaldari aðgerðir sem að hægt væri að fylgja eftir?
Einfaldasta niðurbrotið væri að segja „Fyrst seturðu hægri fótinn í hægri skálmina á buxunum, síðan seturðu vinstri fótinn í vinstri skálmina“ en eru það nægar leiðbeiningar fyrir einhvern sem veit ekkert um buxur?
- Við gætum sett upp smá lista.
- Setja hægri fót í hægri skálmina
- Setja vinstri fót í vinstri skálmina
- Hífa buxurnar upp
- Renna upp buxnaklauf
- Hneppa tölunni
Þarna erum við með fimm hluti sem þarf að gera sem tilvonandi buxnanotandi gæti fylgt eftir, það er að segja ef hann veit hvað skálm, buxnaklauf og tala er, því fyrir honum eru það mjög tæknileg orð. Síðan byrjar notandinn okkar á því að fylgja skrefi eitt en stoppar, því hann kann ekki að setja hægri fót í hægri skálmina. Hvað gera bændur þá? Sama og við gerum fyrir ofan, við tökum vandamálið og brjótum það aftur niður í einfaldari aðgerðir.
- Taktu utan um buxurnar með báðum höndum
- Lyftu buxunum örlítið upp
- Lyftu hægri fæti upp
- Staðsettu hægri fót fyrir ofan hægri buxnaskálm
- Ýttu fætinum í gegnum skálmina
Hér erum við komin með meiri nákvæmni í þær aðgerðir sem við ætlum að framkvæma og látum það vera í þessu dæmi að fara dýpra, en hægt er mjög einfaldlega að halda þessu ferli áfram, en það verður mjög tæknilegt og nákvæmt á skömmum tíma.
En útfærsla eins og þessi opnar fyrir margar spurningar. Hversu hátt er „örlítið“? Hversu hátt á að lyfta hægri fæti upp? Hvar er rétt staðsetning til þess að vera fyrir ofan buxnaskálmina? o.s.frv. En þetta eru allt góðar og gildar spurningar sem þarf að svara ef á að útfæra þessa virkni. Glöggir lesendur taka líka eftir því að stór hluti þeirra aðgerða sem við skilgreindum fyrir hægri skálmina er hægt að endurnýta fyrir vinstri skálmina, þetta er mikilvægt atriði þegar kemur að góðri hönnun forrita.
En þetta er það fyrsta sem þarf að vita þegar kemur að því að læra um hvað forritun snýst og í raun sagði Douglas Adams þetta allra best.
If you really want to understand something, the best way is to try and explain it to someone else.
That forces you to sort it out in your mind.
And the more slow and dim-witted your pupil, the more you have to break things down into more and more simple ideas.
And that’s really the essence of programming. By the time you’ve sorted out a complicated idea into little steps that even a stupid machine can deal with, you’ve learned something about it yourself.
Upplýsinga duld
Næsta atriði sem við þurfum að skoða er andstæðan við þá aðferð sem var útskýrð fyrir ofan. Tökum til dæmis fjarstýringuna á sjónvarpinu þínu. Veistu nákvæmlega hvernig hún virkar? Margir hafa hugmynd um hvað gerist þegar þú ýtir á takkann en í raun sem notandi þá er þér alveg sama, og það er algjörlega rétta viðhorfið. Það sama má beita buxna aðgerðinni sem við notuðum, þegar að þú kannt að klæða þig í buxur, þá er þér sama um alla þá tæknilegu hluti sem eiga sér stað. Þú ýtir bara á takkann og töfrar gerast, svo ef hún virkar ekki þá opnarðu lokið og rúllar rafhlöðunum aðeins og prófar aftur.
Forritarar smíða forritin sín á þennan máta, þeir búa til aðgerðir sem eru endurnýtanlegar og vinna skýr og nákvæm verk.
Segjum að þú fáir aðgang að kerfi sem einhver annar forritari smíðaði og inniheldur eftirfarandi aðgerðir. Við getum skipt spurningarmerkjunum út fyrir hvað sem er í þessu tilfelli.
- Labba í ?
- Standa upp
- Setjast niður
- Klæða sig í ?
- Borða ?
- Bursta tennur
Með þessum aðgerðum ættum við að geta smíðað nýja aðgerð. Þessi aðgerð á að framkvæma allt það sem við gerum á morgnana.
Við getum útfært hana einhvernvegin svona.
Standa upp, Klæða sig í (buxur), Klæða sig í (bol), Labba í (eldhúsið), Setjast niður, Borða (morgunmat), Standa upp, Labba í (baðherbergið), Bursta tennur, Labba í (forstofuna), Klæða sig í (jakka), Klæða sig í (skó).
Við köllum þessa aðgerð „Morgunverkin“ og gefum út þetta fína kerfi sem aðrir forritarar geta nýtt sér. Þeim, eins og okkur, er sama um hvernig aðgerðin „Morgunverkin“ virkar, svo lengi sem hún virkar rétt. Sama átti við um okkur þegar við bjuggum til aðgerðina sjálfa.
Þetta leyfir forriturum að smíða stór og flókin kerfi á fljótlegan hátt, og gerir það að verkum að auðveldara verður fyrir marga forritara að vinna saman.
He took from his surroundings what was needed, and made of it something more – Aaron (Primer)
Forritun
Þá er komið að því að forrita, í þessari grein ætlum við að skoða forritunarmálið Python og kynna okkur notkun þess, við munum síðan fara yfir fleiri forritunarmál í seinni greinum.
Til þess að geta forritað í Python þarf að setja upp forritunarmálið sjálft, sem er óþarfi á Mac OS X og Linux stýrikerfum því það er sett upp nú þegar. En á Windows er hægt að fara á http://www.python.org og smella þar á „Windows Installer“ og fara í gegnum ferlið þar. Í þessari grein munum við nota Python útgáfu 2 vegna þess að útgáfa 2 er sett upp á flestum Mac og Linux stýrikerfum.
Eina sem þarf til þess að byrja að skrifa Python forrit er textaritill, hægt er að nota Notepad í Windows, TextEdit á Mac og GEdit á Linux (Gnome byggðu). Við munum færa okkur yfir í betri ritla þegar lengra er komið.
Í tómt skjal ætlum við að skrifa eftirfarandi texta.
# Thetta forrit skrifar Hallo, heimur! ut a skjainn
print “Hallo, heimur!”
Vistaðu þetta skjal sem hallo.py á einhvern þægilegan stað. Farðu síðan í skeljar umhverfið í stýrikerfinu hjá þér, Command line á Windows og Terminal á Mac og Linux.
Farðu í þá möppu sem skráin þín er vistuð og skrifaðu „python hallo.py“. Þetta mun keyra skrána sem þú skrifaðir í gegnum python túlkinn og út ætti að koma „Halló, heimur!“ á skjáinn. Vinnuferlið í þessu máli er á þennan veg. Skrifa forritið í textaritlinum, vista það og keyra það svo í gegnum túlkinn. Þannig að þegar við gerum breytingar á skránni, þá skal keyra aftur „Python nafn.py“, þar sem nafn er nafnið á skránni.
Fyrsta línan í forritinu er athugasemd, hún er aðeins fyrir þig og túlkurinn hunsar hana alveg, þannig að endilega skrifið hjá ykkur allt sem hjálpar ykkur að skilja forritið betur. Athugasemdir í Python byrja á # og þá er afgangurinn af línunni fyrir þann texta sem þú vilt skrifa.
Næsta lína er síðan línan sem skrifar textann, hún er nokkuð stutt en við skulum líta aðeins á hana.
Það fyrsta sem að kemur er aðgerðin sem við ætlum að keyra. Í þessu tilfelli er það print aðgerðin sem skrifar texta út á skjáinn. Hún býst við því að það sem kemur næst sé eitthvað sem hún kann að skrifa út á skjáinn. Það sem við gefum henni er texta strengur. Texta strengir eru nokkuð einfaldir í útliti, texti sem byrjar og endar á gæsalöppum, en undir yfirborðinu eru þeir flóknir hlutir sem við skoðum betur seinna.
Þú getur sett tölur í staðinn fyrir texta strenginn og einnig stærðfræði jöfnur.
# Leggur saman 2 og 3 og margfaldar síðan með 5print (2 + 3) * 5
Python fylgir réttri röð aðgerða, þannig að, ef ég vil leggja saman fyrst, þá verð ég að setja sviga utan um þann lið.
Næsta forritið sem við ætlum að skoða er örlítið stærra en þar af leiðandi mun skemmtilegra.
# Thetta forrit spyr um nafnid og skrifar thad svo ut
# Spyr um nafnid
print “Hvad heitir thu?”
# Saekir thad fra lyklabordi
name = raw_input()
# Prentar thad ut
print “Hallo “ + name
Í þessu forriti eru þrír nýir hlutir. Það er breytan “nafn“, fallið “raw_input()” og plús virkinn í seinustu línunni.
Breytur eru gögn sem geymast innan forritsins sem þú gefur nafn. Breytur geyma upplýsingarnar þangað til þú breytir þeim. Þetta er nokkur einföldun á breytum en er nóg til þess að byrja með. Til þess að setja gögn í breytu er nóg að skrifa nafnið á breytunni, samasem og svo gögnin. Hér eru nokkur dæmi.
fimm = 5
nafn = “Jón Jónsson“
formula = (2 + 3) * 5
fimm = 10
Gott er að gefa breytum nöfn sem lýsa þeim vel. Þú sérð að ég gaf breytunni „fimm“ gildið 5 sem er fínt, þangað til ég breytti gildinu í 10, þá er breytan ekki lengur að lýsa innihaldinu, þannig að nafnið er ekki alveg nógu gott. Breytan „formula“ mun ekki geyma formúluna sjálfa heldur niðurstöðuna úr henni.
raw_input() er fall sem vinnur ákveðna aðgerð. Þetta er forritað fyrirfram af þeim sem bjuggu til Python, og þetta fall bíður eftir texta frá notandanum. Þannig að, þegar kallað er í raw_input(), þá bíður forritið eftir að notandinn skrifi inn texta og ýti svo á enter. Þegar því er lokið, þá skilar raw_input() af sér því sem að notandinn skrifaði og setur það í breytuna „nafn“. Þá mun „nafn“ geyma það sem að skrifað var af notandanum.
Það seinasta sem er nýtt, er plús virkinn í seinustu línunni. Það sem hann gerir er að skeyta saman tveimur gildum. Ef að gildin eru tölur, þá mun hann leggja þær saman, en ef að gildin eru strengir, þá mun virkinn skeyta textana tvo saman þannig að þeir mynda eina heild.
Sometimes the questions are complicated and the answers are simple. – Dr Seuss
Svona líkur fyrsta hluta af vonandi mörgum um hvernig skal forrita, í næsta hluta munum við fara yfir skilyrði, lykkjur, föll og einnig skoða þessa sömu hluti í öðrum forritunarmálum.