Fara í innihald

„Reiknirit“: Munur á milli breytinga

Úr Wikipediu, frjálsa alfræðiritinu
Efni eytt Efni bætt við
Xqbot (spjall | framlög)
m robot Bæti við: zh-min-nan:Ián-sǹg-hoat
Tengt er nú ‘Ada Byron’ með greinina sína
Merki: Sýnileg breyting Farsímabreyting Breyting frá farsímavef
 
(28 millibreytinga eftir 19 notendur ekki sýndar)
Lína 1: Lína 1:
[[Mynd:LampFlowchart.svg|thumb|right|[[Flæðirit]] eru stundum notuð til að skýra reiknirit með myndrænum hætti.]]
[[Mynd:LampFlowchart.svg|thumb|right|[[Flæðirit]] eru stundum notuð til að skýra reiknirit með myndrænum hætti.]]
'''Reiknirit''' er lausnaraðferð og skilgreint sem endanlegt mengi vel skilgreindra fyrirmæla til að leysa verkefni. Reiknirit skilar fyrirfram skilgreindri niðurstöðu að gefnu upphafsskilyrði.
'''Reiknirit'''<ref name="tos">[http://tos.sky.is/tos/to/word/isl/186/isl/isl/ Orðið '''algrím'''] {{Webarchive|url=https://web.archive.org/web/20150907191000/http://tos.sky.is/tos/to/word/isl/186/isl/isl/ |date=2015-09-07 }} á Tölvuorðasafninu</ref> (einnig '''algrím''',<ref name="tos" /> sjaldnar '''reiknisögn'''<ref name="tos" /> eða '''algóriþmi''') er lausnaraðferð og skilgreint sem endanlegt mengi vel skilgreindra fyrirmæla til að leysa verkefni. Reiknirit skilar fyrirfram skilgreindri niðurstöðu að gefnu upphafsskilyrði. Reiknirit eru einkum notuð í [[stærðfræði]] og [[tölvunarfræði]] við lausn vandamála.
Reiknirit eru einkum notuð í [[stærðfræði]] og [[tölvunarfræði]] við lausn vandamála.


== Saga ==
== Saga ==
Reiknirit er einnig kallað algrím eða algóriþmi. Uppruna orðsins algóriþmi má rekja til stærðfræðings sem var uppi á 10. öld, [[Abu Abdullah Muhammad bin Musa al-Khwarizmi]]. Al-Khwarizmi er af mörgum talinn upphafsmaður nútíma [[algebra|algebru]] og var hann sannfærður um að hægt væri að leysa öll stærðfræðileg vandamál ef þeim væri skipt upp í minni skref.
Reiknirit er einnig kallað ''algrím'' eða ''algóriþmi''. Uppruna orðsins algóriþmi má rekja til stærðfræðings sem var uppi á 10. öld, [[Abu Abdullah Muhammad ibn Musa al-Khwarizmi]]. Al-Khwarizmi er af mörgum talinn upphafsmaður nútíma [[algebra|algebru]] og var hann sannfærður um að hægt væri að leysa öll stærðfræðileg vandamál ef þeim væri skipt upp í minni skref.


Eitt frægasta reiknirit allra tíma er reiknirit Evklíðs sem finnur stærsta sameiginlega deili tveggja heiltalna, en það var birt árið 300 fyrir Krist.
Eitt frægasta reiknirit allra tíma er reiknirit Evklíðs sem finnur stærsta sameiginlega deili tveggja heiltalna, en það var birt árið 300 fyrir Krist.


Fyrsta reikniritið sem skrifað var fyrir tölvur var skrifað af Ada Byron árið 1842, en það var aldrei útfært.
Fyrsta reikniritið sem skrifað var fyrir tölvur var skrifað af [[Ada Lovelace|Ada Byron]] árið 1842, en það var aldrei útfært.


== Framsetning reiknirita ==
== Framsetning reiknirita ==
Lína 14: Lína 13:


'''Dæmi um reiknirit í sauðakóða:'''
'''Dæmi um reiknirit í sauðakóða:'''
'''ef''' tala er slétt tala '''þá'''

deila í tölu með tveimur
'''if''' tala er slétt tala '''then'''
'''annars'''
deila í tölu með tveimur
'''else''' hækka tölu um einn heilan og deila svo í hana með tveimur
hækka tölu um einn heilan og deila svo í hana með tveimur
'''end if'''
skrifa tölu á skjá
skrifa tölu á skjá


'''Dæmi um sama reiknirit í C++'''
'''Dæmi um sama reiknirit í C++'''


if (nr % 2 == 0)
'''if''' (nr % 2 == 0)
nr = nr/2;
nr = nr/2;
'''else'''
else
nr = (nr + 1) / 2;
nr = (nr + 1) / 2;
Lína 67: Lína 65:
Reiknirit eru misskilvirk. Til eru reiknirit sem tekur marga mannsaldra að leysa vandamál sem önnur skilvirkari reiknirit leysa á svipstundu. Það er því mikilvægt ef leysa á stórt vandamál að reikniritið sé skilvirkt. Skilvirkni er mæld í vaxtarhraða keyrslutíma, [[big Oh]], annars vegar og minnisnotkun hins vegar. Þegar vandamálið sem leysa á er mjög lítið, t.d. að raða 10 stökum skiptir skilvirkni ekki öllu máli.
Reiknirit eru misskilvirk. Til eru reiknirit sem tekur marga mannsaldra að leysa vandamál sem önnur skilvirkari reiknirit leysa á svipstundu. Það er því mikilvægt ef leysa á stórt vandamál að reikniritið sé skilvirkt. Skilvirkni er mæld í vaxtarhraða keyrslutíma, [[big Oh]], annars vegar og minnisnotkun hins vegar. Þegar vandamálið sem leysa á er mjög lítið, t.d. að raða 10 stökum skiptir skilvirkni ekki öllu máli.


== Tilvísanir ==
{{Tengill ÚG|sr}}
<references />


[[Flokkur:Reiknirit]]
[[Flokkur:Reiknirit]]

[[af:Algoritme]]
[[an:Algorismo]]
[[ar:خوارزمية]]
[[arz:الجوريتم]]
[[ast:Algoritmu]]
[[az:Alqoritm]]
[[be:Алгарытм]]
[[be-x-old:Альгарытм]]
[[bg:Алгоритъм]]
[[bn:অ্যালগরিদম]]
[[bs:Algoritam]]
[[ca:Algorisme]]
[[cs:Algoritmus]]
[[da:Algoritme]]
[[de:Algorithmus]]
[[el:Αλγόριθμος]]
[[en:Algorithm]]
[[eo:Algoritmo]]
[[es:Algoritmo]]
[[et:Algoritm]]
[[eu:Algoritmo]]
[[fa:الگوریتم]]
[[fi:Algoritmi]]
[[fr:Algorithmique]]
[[gl:Algoritmo]]
[[he:אלגוריתם]]
[[hi:अल्गोरिद्म]]
[[hr:Algoritam]]
[[hu:Algoritmus]]
[[ia:Algorithmo]]
[[id:Algoritma]]
[[io:Algoritmo]]
[[it:Algoritmo]]
[[ja:アルゴリズム]]
[[ka:ალგორითმი]]
[[kaa:Algoritm]]
[[ko:알고리즘]]
[[ku:Algorîtma]]
[[la:Algorithmus]]
[[lb:Algorithmus]]
[[lt:Algoritmas]]
[[lv:Algoritms]]
[[mk:Алгоритам]]
[[ml:അൽഗൊരിതം]]
[[mn:Алгоритм]]
[[mr:अल्गोरिदम]]
[[ms:Algoritma]]
[[nl:Algoritme]]
[[nn:Algoritme]]
[[no:Algoritme]]
[[pl:Algorytm]]
[[pt:Algoritmo]]
[[ro:Algoritm]]
[[ru:Алгоритм]]
[[sah:Алгоритм]]
[[scn:Alguritmu]]
[[sd:الخوارزمي]]
[[sh:Algoritam]]
[[si:ඇල්ගොරිතම]]
[[simple:Algorithm]]
[[sk:Algoritmus]]
[[sl:Algoritem]]
[[sq:Algoritmi]]
[[sr:Алгоритам]]
[[su:Algoritma]]
[[sv:Algoritm]]
[[ta:படிமுறைத் தீர்வு]]
[[te:అల్గారిథం]]
[[tg:Алгоритм]]
[[th:ขั้นตอนวิธี]]
[[tl:Algoritmo]]
[[tr:Algoritma]]
[[uk:Алгоритм]]
[[ur:الخوارزم]]
[[vi:Thuật toán]]
[[wa:Algorisse]]
[[war:Algoritmo]]
[[yi:אלגאריטם]]
[[zh:算法]]
[[zh-min-nan:Ián-sǹg-hoat]]
[[zh-yue:演算法]]

Nýjasta útgáfa síðan 8. desember 2021 kl. 09:48

Flæðirit eru stundum notuð til að skýra reiknirit með myndrænum hætti.

Reiknirit[1] (einnig algrím,[1] sjaldnar reiknisögn[1] eða algóriþmi) er lausnaraðferð og skilgreint sem endanlegt mengi vel skilgreindra fyrirmæla til að leysa verkefni. Reiknirit skilar fyrirfram skilgreindri niðurstöðu að gefnu upphafsskilyrði. Reiknirit eru einkum notuð í stærðfræði og tölvunarfræði við lausn vandamála.

Reiknirit er einnig kallað algrím eða algóriþmi. Uppruna orðsins algóriþmi má rekja til stærðfræðings sem var uppi á 10. öld, Abu Abdullah Muhammad ibn Musa al-Khwarizmi. Al-Khwarizmi er af mörgum talinn upphafsmaður nútíma algebru og var hann sannfærður um að hægt væri að leysa öll stærðfræðileg vandamál ef þeim væri skipt upp í minni skref.

Eitt frægasta reiknirit allra tíma er reiknirit Evklíðs sem finnur stærsta sameiginlega deili tveggja heiltalna, en það var birt árið 300 fyrir Krist.

Fyrsta reikniritið sem skrifað var fyrir tölvur var skrifað af Ada Byron árið 1842, en það var aldrei útfært.

Framsetning reiknirita

[breyta | breyta frumkóða]

Reiknirit eru oft í upphafi hönnunar skrifuð í sauðakóða sem er nokkurs konar millistig almenns ritmáls og forritunarmáls og er því óháð því forritunarmáli sem reikniritið verður útfært í. Það auðveldar útfærslu reikniritsins í hinum ýmsu forritunarmálum, enda er sauðakóðinn auðskiljanlegur öllum forriturum óháð forritunarbakgrunn þeirra.

Dæmi um reiknirit í sauðakóða:

 ef tala er slétt tala þá
      deila í tölu með tveimur
 annars 
      hækka tölu um einn heilan og deila svo í hana með tveimur
    
 skrifa tölu á skjá

Dæmi um sama reiknirit í C++

 if  (nr % 2 == 0) 
    nr = nr/2;
 else
    nr = (nr + 1) / 2;
  
 std::cout<<nr<<endl;

Nokkrar tegundir reiknirita

[breyta | breyta frumkóða]

Reiknirit geta verið einföld þar sem þau eru framkvæmd í röð eins og farið sé eftir uppskrift. Reiknirit geta líka verið flóknari. Sum reiknirit nota samanburð og rökaðgerðir til að ákvarða næsta skref, sbr. dæmið hér að ofan, önnur nota lykkjur og ítrun og enn önnur eru endurkvæm. Til eru margar gerðir leitarreiknirita sem leita að tilteknu staki í lista t.d. Dæmi um slík reiknirit eru t.d. línuleg leit og tvíundarleit. Einnig eru til mörg röðunarreiknirit. Algengast þeirra er sennilega reikniritið quick-sort.

Dæmi um reiknirit sem notar lykkju:

Reikniritið margfaldar saman heiltölurnar frá 1 og til og með 9. Einnig kallað hrópfall.

 int nr = 1;
 
 for (int i = 2, i < 10, i++)  
 {
    nr = nr * i;
 ) 
 std::cout<<nr<<endl;

Dæmi um endurkvæmt reiknirit sem gerir það sama: Fallið kallar í sjálft sig með n-1 þar til n er minna en 1 og reiknar sig svo til baka.

 int factorial(n) 
  
 {
    if (n <= 1)
       return n;
    else
       return n * factorial(n-1);
 }

Greining reiknirita

[breyta | breyta frumkóða]

Við greiningu reiknirita erum við að skoða hvort reiknirit sé ákjósanlegt. Þar er aðallega horft til tveggja þátta, einfaldleika og skilvirkni. Greining reiknirita er mjög mikilvæg þar sem við getum oft valið um fleiri en eitt reiknirit til lausnar á sama vandamáli. Það er mikilvægt að skilvirkni reiknirits sé skoðuð áður en það er útfært. Þá er notast við sauðakóða framsetningu reiknirits.

Einfaldleiki reiknirita

[breyta | breyta frumkóða]

Einfalt reiknirit er auðvelt að útfæra, prófa, viðhalda og sýna fram á að það sé rétt. Kostir einfaldra reiknirita eru því margir en sé reiknirit mjög óskilvirkt og það eigi að nota til að leysa stórt vandamál er það í raun ónothæft þó það sé mjög einfalt.

Skilvirkni reiknirita

[breyta | breyta frumkóða]

Reiknirit eru misskilvirk. Til eru reiknirit sem tekur marga mannsaldra að leysa vandamál sem önnur skilvirkari reiknirit leysa á svipstundu. Það er því mikilvægt ef leysa á stórt vandamál að reikniritið sé skilvirkt. Skilvirkni er mæld í vaxtarhraða keyrslutíma, big Oh, annars vegar og minnisnotkun hins vegar. Þegar vandamálið sem leysa á er mjög lítið, t.d. að raða 10 stökum skiptir skilvirkni ekki öllu máli.

Tilvísanir

[breyta | breyta frumkóða]
  1. 1,0 1,1 1,2 Orðið algrím Geymt 7 september 2015 í Wayback Machine á Tölvuorðasafninu