{"id":10797,"date":"2018-02-16T23:17:21","date_gmt":"2018-02-17T04:17:21","guid":{"rendered":"https:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=10797"},"modified":"2018-07-06T23:58:01","modified_gmt":"2018-07-07T03:58:01","slug":"10-tr-def","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/10-tr-def\/","title":{"rendered":"10: def"},"content":{"rendered":"<!-- Please retain this notice and add more notes if you create a new version.<br \/>\nOriginal lesson author: David Pritchard, daveagp@gmail.com, http:\/\/cscircles.ca<br \/>\nLicense: http:\/\/creativecommons.org\/licenses\/by-nc-sa\/3.0\/-->\n<p>Bu derste programc\u0131l\u0131ktaki en \u00f6nemli a\u015famay\u0131 \u00f6\u011freneceksiniz: Kendi fonksiyonlar\u0131n\u0131z\u0131 olu\u015fturmak! Fonksiyonlar progra\u0131n\u0131z\u0131n daha k\u0131sa, daha organize, daha okunakl\u0131, hata ay\u0131klamas\u0131 daha kolay ve tekrar tekrar kullanmaya daha elveri\u015fli olmas\u0131n\u0131 sa\u011flar. Gelecek derslerimizde fonksiyonlar\u0131n <em>yineleme<\/em> gibi di\u011fer faydalar\u0131n\u0131 g\u00f6rece\u011fiz.<\/p>\n<h1>Bir Fonksiyonu Tan\u0131mlamak<\/h1>\n<p>\u00d6nce bir \u00f6rnekle ba\u015flayal\u0131m.\u00a0\u00a0<code>abs<\/code>\u00a0fonksiyonunu hat\u0131rl\u0131yor musunuz? Bir arg\u00fcman al\u0131yordu (<em>x\u00a0<\/em>say\u0131s\u0131) ve onun kesin de\u011ferini veriyordu (<em>x <\/em>\u2265 0 durumunda bu de\u011fer x, <em>x<\/em> &lt; 0 durumunda ise -x oluyordu). Python'da bu fonksiyonu tan\u0131mlama yolu \u015f\u00f6yledir:<\/p>\n<pre>def abs(x):     # 'abs' adl\u0131 bir fonksiyonu 'x' adl\u0131 bir arg\u00fcmanla tan\u0131ml\u0131yoruz\r\n  if x &gt;= 0:    # fonksiyon g\u00f6vdesi burada ba\u015fl\u0131yor\r\n    return x\r\n  else:\r\n    return -x   # fonksiyon g\u00f6vdesi burada sonlan\u0131yor<\/pre>(Click <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=def%20abs%28x%29%3A%20%23Fonksiyon%20tan%C4%B1m%C4%B1%0A%20%20if%20x%20%26gt%3B%3D%200%3A%0A%20%20%20%20return%20x%0A%20%20else%3A%20%20%0A%20%20%20%20return%20-x%0A%0A%23%20Ana%20program%20burada%20ba%C5%9Flar%0Aprint%28abs%28-5%29%29%0Aprint%28abs%2810%29%29\" target=\"_blank\">burada<\/a> konsolda kodu test edebilirsiniz.)<\/p>\n<h2>Bir Fonksiyon Tan\u0131m\u0131n\u0131n \u0130ki Par\u00e7as\u0131<\/h2>\n<p>Bir fonksiyon tan\u0131m\u0131ndaki ilk sat\u0131rda fonskiyonun <em>ad\u0131<\/em> ve <em>arg\u00fcmanlar\u0131<\/em> belirtilir. \u015eu \u015fekilde olu\u015fturulur:<\/p>\n<p style=\"text-align: center;\"><code>def \u00abfonksiyon-ad\u0131\u00bb(\u00abarg\u00fcman-listesi\u00bb):<\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte\u00a0<code>abs<\/code>\u00a0fonksiyonun ad\u0131 idi ve arg\u00fcman listesinde\u00a0\u00a0<code>x<\/code>\u00a0bulunuyordu. Buna <em>arg\u00fcman listesi<\/em> deniyor, \u00e7\u00fcnk\u00fc birden fazla arg\u00fcman bulunabilir\u00a0<code>x, y, z<\/code>\u00a0gibi; veya hi\u00e7 arg\u00fcman da bulunmayabilir, bo\u015f liste. <strong>Arg\u00fcmanlar fonksiyonun inputlar\u0131d\u0131r.<\/strong><\/p>\n<p>Bir fonksiyon tan\u0131m\u0131nda ilk sat\u0131rdan sonra gelen sat\u0131rlar fonksyionun g\u00f6vdesidir. G\u00f6vde girintili bir kod blo\u011fu olacakt\u0131r.\u00a0 Fonksiyon her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, fonksiyon g\u00f6vdesi en ba\u015fta belirlenmi\u015f arg\u00fcman\/inputlarla i\u015fleme konur. En sonunda fonksiyon g\u00f6vdesindeki \u015fu sat\u0131ra ula\u015ft\u0131\u011f\u0131m\u0131zda,<\/p>\n<p style=\"text-align: center;\"><code>return \u00abde\u011fer\u00bb<\/code><\/p>\n<p>fonksiyon \u00e7al\u0131\u015fmay\u0131 durdurur ve output olarak\u00a0<code>\u00abde\u011fer\u00bb<\/code>\u00a0sonucunu verir.<strong>\u00a0Yani bu, sonu\u00e7 de\u011feri, fonksiyonun \u00e7\u0131kt\u0131s\u0131d\u0131r.<\/strong>\u00a0Yukar\u0131daki\u00a0<code>abs<\/code>\u00a0\u00f6ren\u011finde g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi g\u00f6vde birden fazla\u00a0<code>return<\/code> ifadesi i\u00e7erebilir; ama fonksyion sonras\u0131nda \u00e7al\u0131\u015fmay\u0131 durdurdu\u011fu i\u00e7in sadece ilk olan i\u015fleme konur.<\/p>\n<h2>\u00d6rnek: Bir Fonksiyonu Tan\u0131mlama ve \u00c7a\u011f\u0131rma<\/h2>\n<p>A\u015fa\u011f\u0131daki programda fonksiyon tan\u0131m\u0131 ve fonksiyonun tan\u0131mlanmas\u0131yla i\u015fleme konacak di\u011fer baz\u0131 ifadeler var. Outputu tahmin edebilir misiniz?<\/p>\n<p><iframe width='100%' height='480' frameborder='0' scrolling='no' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/OnlinePythonTutor3-cemc\/iframe-embed.html#code=def+square%28x%29%3A+++++%23+function+definition%0A++++return+x%2Ax+++++%23+body+only+has+one+line%0A%0A%23+use+the+function%2C+now+that+it%27s+defined%0Aprint%28square%2810%29%29++++++++%0Aprint%28square%28square%282%29%29%29&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=460&rightStdout=1'><\/iframe><\/p>\n<p>Fonksiyonun ad\u0131\u00a0\u00a0<code>kare<\/code>, sadece bir arg\u00fcman var\u00a0<code>x<\/code>, ve fonksiyon g\u00f6vdesinde tek sat\u0131r bulunuyor\u00a0<code>return x*x<\/code>. Fonksiyonun d\u0131\u015f\u0131nda, fonksiyonu toplamda \u00fc\u00e7 kez \u00e7a\u011f\u0131rmam\u0131z\u0131 sa\u011flayacak iki komutumuz var.<\/p>\n<p>G\u00f6r\u00fcnt\u00fcleyiciden izleyebildi\u011fimize g\u00f6re, fonksiyon her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda ayr\u0131 bir \u00e7al\u0131\u015fma alan\u0131 par\u00e7as\u0131 (bir <strong>\u00e7er\u00e7eve<\/strong>-<strong>frame<\/strong>)\u00a0tahsis edilir. Fonksiyon d\u00f6n\u00fc\u015f yapt\u0131\u011f\u0131nda, o \u00e7al\u0131\u015fma alan\u0131na art\u0131k ihtiya\u00e7 kalmad\u0131\u011f\u0131ndan silinir.<\/p>\n<p>Ad\u0131mlar\u0131 burada kelimelerle a\u00e7\u0131klayal\u0131m:<\/p>\n<ol>\n<li>\u0130lk komut i\u015fleme kondu\u011funda Python\u00a0<code>square(10)<\/code>\u00a0ifadesini ele al\u0131r.\n<ul>\n<li>Python input listesi ile\u00a0<code>(10)<\/code>\u00a0arg\u00fcman listesini\u00a0<code>(x)<\/code>\u00a0kar\u015f\u0131la\u015ft\u0131r\u0131r. Fonksiyon g\u00f6vdesi de\u00a0<code>return x*x<\/code>\u00a0i\u015flemini\u00a0\u00a0<code>x<\/code> arg\u00fcman\u0131n\u0131n\u00a0<code>10<\/code>\u00a0 say\u0131s\u0131 ile kar\u015f\u0131land\u0131\u011f\u0131n\u0131 g\u00f6z\u00f6n\u00fcnde turarak yapar. B\u00f6ylece\u00a0<code>x*x<\/code> i\u015flemi\u00a0<code>100<\/code>\u00a0sonucunu verir.<\/li>\n<\/ul>\n<\/li>\n<li>\u0130kinci komut i\u015fleme kondu\u011funda, Python\u00a0<code>square(square(2))<\/code>\u00a0ifadesini ele al\u0131r.\n<ul>\n<li>\u0130lk olarak i\u00e7 k\u0131s\u0131m\u00a0<code>square(2)<\/code> de\u011ferlendirilir. Ge\u00e7ici olarak\u00a0\u00a0<code>x<\/code> arg\u00fcman\u0131na\u00a0<code>2<\/code>\u00a0say\u0131s\u0131n\u0131 verdi\u011fimizde fonksiyon g\u00f6vdesini \u00e7al\u0131\u015ft\u0131r\u0131r ve\u00a0<code>4<\/code>\u00a0sonucunu al\u0131r\u0131z.<\/li>\n<li>Sonra d\u0131\u015f k\u0131s\u0131m de\u011ferlendirilir,\u00a0<code>square(2)<\/code> bize\u00a0<code>4<\/code>\u00a0sonucunu verdi\u011fi i\u00e7in \u015fimdi arg\u00fcman 4 olur:\u00a0<code>square(4)<\/code>. Bu da \u00e7\u0131kt\u0131 olarak\u00a0<code>16<\/code>\u00a0sonucunu yazd\u0131r\u0131r.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2>D\u00f6rt Genel Hata<\/h2>\n<p>Birfonksiyon tan\u0131mlan\u0131rken yap\u0131lan hatalardan biri\u00a0<code>return<\/code> ifadesini kullanmay\u0131 unutmakt\u0131r.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform0\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox0'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Hata 1: <code>return<\/code>ifadesini unutmak<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ndef square(x):\n  x*x\nprint(square(10))<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse0\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"0\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"d401a99df9d67e64488be6a811464442\"\/>\n<div id='pbresults0' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit0\").value = \"Run program\";document.getElementById(\"inputInUse0\").value = \"N\";<\/script>\n<\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi e\u011fer fonksiyon g\u00f6vdesinde\u00a0<code>return<\/code> ifadesine rastlanmazsa, fonksiyon varsay\u0131lan sonu\u00e7 olarak\u00a0<code>None<\/code>\u00a0yazd\u0131r\u0131r. Yani e\u011fer bir \u00e7al\u0131\u015fman\u0131zda\u00a0\u00a0<code>None<\/code>\u00a0sonucu almak gibi bir hata s\u00f6z konusu olursa problem genellikle fonksiyon inputlar\u0131n\u0131n i\u015flenmesini sa\u011flayacak\u00a0<code>return<\/code> bulunamamas\u0131d\u0131r.<\/p>\n<p><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> \u00a0<code>return<\/code>\u00a0ifadesini bilerek de kullanmam\u0131\u015f olabilirsiniz.\u00a0 Bu ancak fonksiyonunuzun return de\u011ferinden ba\u015fka bir \u00e7\u0131kt\u0131 olu\u015fturma kapasitesi oldu\u011funda anlaml\u0131d\u0131r:<form class=\"pbform\" action=\"#\" id=\"pbform1\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox1'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Yan etki ve returns\u00fcz ifade<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\ndef repeatedPrint(string, repetitions):   # bu fonksiyonda return yok\n  for i in range(0, repetitions):\n    print(string)\n\ntekrarlananPrint('Selam, d\u00fcnya!', 3)<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit1' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(1)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(1,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse1\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"1\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"b7eaa91e109f88c8d9b1720e977af328\"\/>\n<div id='pbresults1' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit1\").value = \"Run program\";document.getElementById(\"inputInUse1\").value = \"N\";<\/script>\n  <\/span><\/td><\/table><\/p>\n<p>Ba\u015fka bir hata ise kodu yazarken girintileri koymamakt\u0131r,\u00a0<code>IndentationError<\/code>\u00a0hatas\u0131 ile sonu\u00e7lan\u0131r.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox2'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Hata 2: Girintiyi unutmak<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ndef square(x):\nreturn x*x\nprint(square(10))<\/textarea><\/div>\n<div id='pbhistory2' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit2' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(2)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(2,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse2\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"2\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"76a9707ae41952893106ccb9765ef1ba\"\/>\n<div id='pbresults2' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit2\").value = \"Run program\";document.getElementById(\"inputInUse2\").value = \"N\";<\/script>\n<\/p>\n<p>2. derste g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi fonksiyonu gerekenden fazla veya az arg\u00fcmanla \u00e7a\u011f\u0131rmak da hataya yol a\u00e7ar.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform3\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox3'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Hata 3: Fazla arg\u00fcmanla \u00e7a\u011f\u0131rmak<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ndef square(x):\n  return x*x\nprint(square(7, 11))<\/textarea><\/div>\n<div id='pbhistory3' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit3' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(3)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(3,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse3\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"3\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"f5b2120c0fc6ad7f25132dea204179c4\"\/>\n<div id='pbresults3' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit3\").value = \"Run program\";document.getElementById(\"inputInUse3\").value = \"N\";<\/script>\n<\/p>\n<p>Son olarak, fonksiyonu tan\u0131mlarken veya \u00e7a\u011f\u0131r\u0131rken yaz\u0131m hatas\u0131 yaparsan\u0131z, fonksiyon tan\u0131mlanm\u0131\u015f de\u011fil \"function is undefined\" diyen bir hata al\u0131rs\u0131n\u0131z.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform4\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox4'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Hata 4: yanl\u0131\u015f isim<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ndef square(x):\n  return x*x\nprint(skware(10))<\/textarea><\/div>\n<div id='pbhistory4' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit4' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(4)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(4,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse4\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"4\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"5155fcb74e9e404c28b06beff82cd471\"\/>\n<div id='pbresults4' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit4\").value = \"Run program\";document.getElementById(\"inputInUse4\").value = \"N\";<\/script>\n<\/p>\n<h2>Siz de Deneyin<\/h2>\n<p><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> Bu al\u0131\u015ft\u0131rmada veya daha sonra \"fonksiyon tan\u0131mlay\u0131n\" denilen al\u0131\u015ft\u0131rmalarda\u00a0<code>input()<\/code> veya\u00a0<code>print()<\/code>\u00a0kullanmam\u0131z gerekmeyecek. D\u00fczenleyici fonksiyonunuzu arg\u00fcmanlarla otomatik olarak \u00e7a\u011f\u0131racak ve do\u011frudan, d\u00f6nd\u00fcr\u00fclen sonucu inceleyecektir.  Bu al\u0131\u015ft\u0131rma i\u00e7in do\u011fru \u00e7\u00f6z\u00fcm 2 sat\u0131r olacak (dersin yukar\u0131daki 'Bir fonksiyon tan\u0131m\u0131n\u0131n iki par\u00e7as\u0131' b\u00f6l\u00fcm\u00fcne bak\u0131n\u0131z.). <\/span><\/td><\/table><\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform5\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox5'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Cubism<\/span><\/div>\u00a0<code>cube(n)<\/code>\u00a0adl\u0131 bir fonksiyon tan\u0131mlay\u0131n, input olarak\u00a0\u00a0<code>n<\/code>\u00a0tek say\u0131s\u0131n\u0131 als\u0131n ve \u00e7\u0131kt\u0131 olarak\u00a0\u00a0<code>n<\/code>\u00a0\u00d7\u00a0<code>n<\/code>\u00a0\u00d7\u00a0<code>n<\/code>\u00a0i\u015fleminin sonucunu versin.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode5' id='usercode5'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory5' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput5\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit5' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch5\" value=\"Input Switch\" onclick=\"pbInputSwitch(5,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(5)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(5,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect5' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(5,'10.cube')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(5);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse5\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"5\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"72d514655d307489b0eb30eec6d6852e\"\/>\n<div id='pbresults5' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(5);});pbInputSwitch(5,\"Y\");<\/script>\n<\/p>\n<h2>\u0130ki veya Daha Fazla Arg\u00fcman<img decoding=\"async\" class=\"alignright\" src=\"..\/wp-content\/lesson_files\/img\/10\/area-triangle.png\" alt=\"\" \/><\/h2>\n<p>Yukar\u0131daki fonksiyonlar sadece bir arg\u00fcman al\u0131r, ama bir fonksiyonu istedi\u011finiz say\u0131da arg\u00fcmanla da olu\u015fturabilirsiniz. Mesela, The functions above only took one argument, but a function can be designed to take any number of arguments. Mesela\u00a0<code>input()<\/code>\u00a0fonksiyonunu 0 arg\u00fcmanla \u00e7a\u011f\u0131r\u0131yorduk (ve 15A dersinde s\u0131f\u0131r arg\u00fcmanl\u0131 bir fonksiyon tan\u0131mlayaca\u011f\u0131z).<\/p>\n<p>\u0130\u015fte burada da\u00a0geometri ile ilgili iki arg\u00fcmanl\u0131 bir \u00f6rnek. Diyelim ki taban\u0131 ve y\u00fcksekli\u011fi belirli bir \u00fc\u00e7genin alan\u0131n\u0131 hesaplamak i\u00e7in bir fonksiyon yazaca\u011f\u0131z. \u00dc\u00e7genin alan form\u00fcl\u00fc<\/p>\n<p style=\"text-align: center;\">alan = taban \u00d7 y\u00fckseklik \/ 2<\/p>\n<p>Kod \u015f\u00f6yle g\u00f6r\u00fcn\u00fcr:\u00a0\u00a0<code>def \u00abfonksiyon-ad\u0131\u00bb(\u00abarg\u00fcman1\u00bb)<\/code>\u00a0yap\u0131s\u0131n\u0131\u00a0<code>def \u00abfonksiyon-ad\u0131\u00bb(\u00abarg\u00fcman1\u00bb, \u00abarg\u00fcman2\u00bb)<\/code>\u015feklinde de\u011fi\u015ftiririz.<\/p>\n<p><iframe width='100%' height='480' frameborder='0' scrolling='no' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/OnlinePythonTutor3-cemc\/iframe-embed.html#code=def+%C3%BC%C3%A7genAlan%C4%B1%28taban%2C+y%C3%BCkseklik%29%3A%0A++return+taban%2Ay%C3%BCkseklik%2F2%0Aprint%28%C3%BC%C3%A7genAlan%C4%B1%283%2C+5%29%29%0Aprint%28%C3%BC%C3%A7genAlan%C4%B1%284%2C+2%29%29&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=345&rightStdout=1'><\/iframe><\/p>\n<p>Kaydetmemiz gereken ba\u015fka bir \u00f6nemli \u015fey de, bir fonksiyonun tan\u0131mlanmas\u0131 ile y\u00fcr\u00fct\u00fclmesi farkl\u0131 \u015feylerdir. Fonksiyon \u00e7a\u011fr\u0131lmad\u0131\u011f\u0131 s\u00fcrece g\u00f6vde i\u015fleme konmaz.\u00a0 Bunu test etmek i\u00e7in \u015fu \u00f6rne\u011fe bakal\u0131m:<\/p>\n<div class='pybox modeNeutral' id='pybox6'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Multiple Choice Exercise: <\/span><span class='title'>In-n-Out<\/span><\/div><div> Bir sonraki program\u0131n \u00e7\u0131kt\u0131s\u0131 ne olur? <\/p>\n<pre>def f():          # 0 arg\u00fcmanl\u0131 fonksiyon<br\/>   print(\"in f\")<br\/>print(\"not in f\")<br\/>f()               # f fonksiyonunu \u00e7a\u011f\u0131r\u0131yoruz<\/pre> <\/div><label>Your choice: <\/label><select id=\"pyselect6\"><option value=\"d\" selected>Select one<\/option><option value=\"w\">3 sat\u0131r: 'in f', then 'not in f', then 'in f'<\/option><option value=\"r\">2 sat\u0131r: 'not in f', then 'in f'<\/option><option value=\"w\">2 lines: 'in f', then 'not in f'<\/option><\/select><div class='pyboxbuttons'><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"10.order\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick='pbMultiCheck(6)'\/><\/div><div class=\"pbresults\" id=\"pyMultiResults6\"><\/div><div class=\"epilogue\">Do\u011fru! <code>f<\/code> fonksiyonu her\u015feyin ba\u015f\u0131nda tan\u0131mlan\u0131r, ama g\u00f6vdesi hemen i\u015fleme konmaz. Fonksiyon tan\u0131mland\u0131ktan sonra <code>not in f<\/code> yazd\u0131r\u0131yoruz. Daha sonra fonksiyon \u00e7a\u011fr\u0131l\u0131r, g\u00f6vde i\u015fleme konurve <code>in f<\/code> yazd\u0131r\u0131r.<\/div><\/div>\n<p><img decoding=\"async\" class=\"alignright\" style=\"color: #333333; font-style: normal; line-height: 24px; margin-top: 0.4em;\" src=\"..\/wp-content\/lesson_files\/img\/10\/peri-rect.png\" alt=\"\" \/><\/p>\n<p>Son al\u0131\u015ft\u0131rmada sizden bir d\u00f6rtgenin \u00e7evresini hesaplamak \u00fczere iki arg\u00fcmanl\u0131 bir fonksiyon yazman\u0131z\u0131 isteyece\u011fiz. (\u00c7evre bilindi\u011fi gibi t\u00fcm kenarlar\u0131n toplam\u0131d\u0131r.) Belirli bir en ve boya sahip d\u00f6rtgenin \u00e7evresini hesaplama form\u00fcl\u00fc \u015f\u00f6yledir:<\/p>\n<p style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Ctextrm%7B%C3%A7evre+%3D+en+%2B+boy+%2B+en+%2B+boy%7D&#038;bg=T&#038;fg=000000&#038;s=2' alt='\\textrm{\u00e7evre = en + boy + en + boy}' title='\\textrm{\u00e7evre = en + boy + en + boy}' class='latex' \/><\/p>\n<p style=\"text-align: left;\">\u00d6rnek i\u00e7in yandaki \u015fekle bak\u0131n\u0131z.<\/p>\n<p style=\"text-align: left;\"><br\/> <br\/><\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform7\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox7'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>D\u00f6rtgen<\/span><\/div>Bir d\u00f6rtgenin \u00e7evresini hesaplamak i\u00e7in\u00a0<code>d\u00f6rtgenin\u00c7evresi(en, boy)<\/code>\u00a0fonksiyonu yaz\u0131n\u0131z. <div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode7' id='usercode7'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory7' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput7\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit7' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch7\" value=\"Input Switch\" onclick=\"pbInputSwitch(7,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(7)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(7,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect7' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(7,'10.rectangle')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(7);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse7\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"7\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"8d8299ce8e1281e21e6d539c2199da4c\"\/>\n<div id='pbresults7' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(7);});pbInputSwitch(7,\"Y\");<\/script>\n<\/p>\n<h3>Fonksiyonlar\u0131 \u00c7a\u011f\u0131ran Fonksiyonlar<\/h3>\n<p>Fonksiyonlar iyi in\u015fa edilmi\u015f b\u00fcy\u00fck \u00e7apl\u0131 programlar\u0131n yap\u0131 ta\u015flar\u0131d\u0131r: Bir i\u015flemi ayn\u0131 kodu tekrar yazmadan ikinci kez yapabilirsiniz, genel i\u015flemler i\u00e7in ayn\u0131 \u00e7\u00f6z\u00fcmleri tekrar devreye sokabilirsiniz. Bir fonksiyon olu\u015fturup onu bir di\u011ferinin i\u00e7inde kullanaca\u011f\u0131m\u0131z bir \u00f6ne\u011fe bakal\u0131m.<\/p>\n<p><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> <em>Program\u0131 \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce, program\u0131n ne yapaca\u011f\u0131n\u0131 tahmin edebilir misiniz? <\/em>4. dersten hat\u0131rlayacaks\u0131n\u0131z say\u0131larla stirnglerin \u00e7arp\u0131m\u0131n\u0131n sonucunda, stirng o say\u0131da kopyalan\u0131yordu.\u00a0\u00d6rne\u011fin,\u00a0<code>\"bar\"*2<\/code>\u00a0\u00a0<code>\"barbar\"<\/code>. <\/span><\/td><\/table><\/p>\n<p><em id=\"funcfunc\">Dikey gri \u00e7izgiyi sa\u011fa ve sola \u00e7ekerek kod veya g\u00f6r\u00fcnt\u00fcleyicinin ne kadarl\u0131k alanda g\u00f6r\u00fcnece\u011fini belirleyebilirsiniz.<\/em><\/p>\n<p><iframe width='100%' height='480' frameborder='0' scrolling='no' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/OnlinePythonTutor3-cemc\/iframe-embed.html#code=def+inner%28string%2C+width%29%3A%0A++return+string+%2B+%22+%22+%2A+%28width+-+len%28string%29%29%0A%0Adef+outer%28string1%2C+string2%29%3A%0A++w+%3D+max%28len%28string1%29%2C+len%28string2%29%29%0A++print%28%22%2A%22+%2A+%28w+%2B+4%29%29%0A++print%28%22%2A+%22+%2B+inner%28string1%2C+w%29+%2B+%22+%2A%22%29%0A++print%28%22%2A+%22+%2B+inner%28string2%2C+w%29+%2B+%22+%2A%22%29%0A++print%28%22%2A%22+%2A+%28w+%2B+4%29%29%0A%0Aouter%28%22Box+number+one%22%2C+%22is+very+fun%22%29%0Aouter%28%22Box+%232%22%2C+%22%28not+False%29+is+%22+%2B+str%28not+False%29%29&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=400&rightStdout=1'><\/iframe><\/p>\n<p>G\u00f6r\u00fcnt\u00fclemede yeni bir \u00f6zellik g\u00f6r\u00fcyorsunuz: \"\u00c7er\u00e7eveler\" s\u00fctununun alt\u0131nda, biz 30 ad\u0131ml\u0131k i\u015flemin 8. ad\u0131m\u0131ndayken, sadece baz\u0131 k\u00fcresel de\u011fi\u015fkenler de\u011fil, 2 \u00e7er\u00e7eve You can see a new phenomenon in the visualization: under the \"Frames\"\u00a0column, when we are at Step 8 of 30 in the execution, there are not only\u00a0some global variables, but two frames (biri\u00a0\u00a0<code>d\u0131\u015f<\/code>, di\u011ferir <code>i\u00e7<\/code>\u00a0\u015feklinde yeni olu\u015fturuldu) de bulunuyor.\u00a0<code>d\u0131\u015f<\/code>\u00a0\u00e7er\u00e7eve,\u00a0<code>i\u00e7<\/code>\u00a0\u00e7er\u00e7eve tam olarak sonlanana kadar bekler ve daha sonra\u00a0\u00a0<code>d\u0131\u015f<\/code>\u00a0kald\u0131\u011f\u0131 yerden devam eder.\u00a0 Bu,\u00a0<code>i\u00e7<\/code>\u00a0\u00e7er\u00e7eveye yeni bir \u00e7a\u011fr\u0131 g\u00f6ndermek i\u00e7in yap\u0131l\u0131r, ve tekrar\u00a0\u00a0<code>d\u0131\u015f<\/code>\u00a0bekler; ve\u00a0<code>i\u00e7<\/code>\u00a0sona erdi\u011finde\u00a0<code>d\u0131\u015f<\/code>\u00a0i\u015flemine devam eder. En son biz tekrar<code>d\u0131\u015f<\/code>\u00a0\u00e7er\u00e7eveyi \u00e7a\u011f\u0131r\u0131r\u0131z ve t\u00fcm s\u00fcre\u00e7 bu \u015fekilde yinelenir.<\/p>\n<p>\u015eimdi bir sonraki derse ge\u00e7ebilirisniz!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu derste programc\u0131l\u0131ktaki en \u00f6nemli a\u015famay\u0131 \u00f6\u011freneceksiniz: Kendi fonksiyonlar\u0131n\u0131z\u0131 olu\u015fturmak! Fonksiyonlar progra\u0131n\u0131z\u0131n daha k\u0131sa, daha organize, daha okunakl\u0131, hata ay\u0131klamas\u0131 daha kolay ve tekrar tekrar kullanmaya daha elveri\u015fli olmas\u0131n\u0131 sa\u011flar. Gelecek derslerimizde fonksiyonlar\u0131n yineleme gibi di\u011fer faydalar\u0131n\u0131 g\u00f6rece\u011fiz. Bir Fonksiyonu &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/10-tr-def\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-10797","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/comments?post=10797"}],"version-history":[{"count":8,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10797\/revisions"}],"predecessor-version":[{"id":11004,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10797\/revisions\/11004"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=10797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}