{"id":10818,"date":"2018-02-16T23:20:05","date_gmt":"2018-02-17T04:20:05","guid":{"rendered":"https:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=10818"},"modified":"2018-10-16T12:10:26","modified_gmt":"2018-10-16T16:10:26","slug":"15a-tr-termination-determination","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/15a-tr-termination-determination\/","title":{"rendered":"15A: Termination Determination"},"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><em>15A, 15B ve 15C derslerini istedi\u011finiz s\u0131rayla yapabilirsiniz.<\/em><\/p>\n<p>Bu derste uzun ve karma\u015f\u0131k bir problem, par\u00e7alara ayr\u0131lm\u0131\u015f olarak size sunuluyor. Ayr\u0131ca bu derste stringleri b\u00f6lmeye yarayan\u00a0<code>str.split()<\/code>\u00a0 metodunu g\u00f6rece\u011fiz: t\u00fcm bo\u015fluk karakterlerini silip, stringdeki t\u00fcm kelimeleri liste h\u00e2line getirir. Orijinal string de\u011fi\u015fmez.<\/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><code>str.split()<\/code>\u00f6rnekleri<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 188px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=7 readonly='readonly'  style = 'height : 188px;'  class='pyboxCode RO'>\nS = 'Bu bir string'\nwords = S.split()\nprint(words)\nprint(len(words))\nprint(words[1])\nprint(S)   # S de\u011fi\u015fmedi\nprint('  Ba\u015fka bir b\u00f6lme \u00f6rne\u011fi '.split())<\/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=\"48f4651bb6e68aa533d1b1856b89e968\"\/>\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><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>split()<\/code> metoduyla daha sofistike b\u00f6l\u00fcmlemeler yapmak i\u00e7in \u00f6zel arg\u00fcmanlar kullan\u0131labilir, ama a\u015fa\u011f\u0131daki \u00f6rneklerde bunlara ihtiyac\u0131m\u0131z olmayacak. Bu konuda daha fazla bilgi i\u00e7in\u00a0<a href=\"http:\/\/docs.python.org\/py3k\/library\/stdtypes.html#str.split\">Python dok\u00fcmanlar\u0131n\u0131<\/a> inceleyebilirsiniz. <\/span><\/td><\/table><\/p>\n<p>\u015eimdi g\u00f6reve ba\u015flayabiliriz. Eski programlama dili\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/BASIC\">BASIC<\/a>\u00a0numaraland\u0131r\u0131lm\u0131\u015f sat\u0131rlar\u0131 ve\u00a0\u00a0<code>goto<\/code> ifadeleri ile \u00fcn\u00fc idi. Bu \u00f6rnekte, BASIC'in basit bir versiyonunu bu \u00f6zelliklerle uygulayaca\u011f\u0131z. Program\u0131n\u0131z\u0131n inputu birka\u00e7 sat\u0131rdan olu\u015facak ve \u015f\u00f6yle bir formatta olacak:<\/p>\n<p style=\"text-align: center;\"><code>\u00abetiket (label)\u00bb goto \u00abhedef (target)\u00bb<\/code><\/p>\n<p><code>\u00abetiket (label)\u00bb<\/code>\u00a0ve\u00a0<code>\u00abhedef (target)\u00bb<\/code>\u00a0pozitif say\u0131lar olacak.\u00a0 <i>Etiket<\/i>\u00a0sat\u0131r\u0131n ad\u0131 veya adresi gibi d\u015f\u00fcn\u00fclebilir;\u00a0<em>etiketler benzersizdir, tekrarlanamaz.<\/em>\u00a0<i>Hedef\u00a0<\/i>ise\u00a0 gidilecek bir sonraki etiketi g\u00f6sterecek.\u00a0 Program\u0131n son sat\u0131r\u0131, size bu sat\u0131ra gelindi\u011finde durman\u0131z\u0131 g\u00f6stermek \u00fczere\u00a0\u00a0<code>\u00abetiket (label)\u00bb END<\/code>\u00a0olacak. Burada bir BASIC program\u0131 \u00f6rne\u011fi:<\/p>\n<pre>5 GOTO 30\r\n10 GOTO 20\r\n20 GOTO 10\r\n30 GOTO 40\r\n40 END<\/pre>BASIC\u00a0 program\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ger\u00e7ekle\u015fen i\u015flemler: \u0130lk sat\u0131r ba\u015flang\u0131\u00e7 sat\u0131r\u0131 (etiketi 5 olan sat\u0131r). Etiketi 5 olan sat\u0131rda hedef 30, yani etiketi 30 olan sat\u0131ra gidecek. Etiketi 30 olan sat\u0131r ise bize 40'a gitmemizi s\u00f6yl\u00fcyor. 40'tan gidece\u011fimiz yer de END, yani son. Bu \u015fekilde program sonu\u00e7lan\u0131r.<\/p>\n<p>Di\u011fer yandan,\u00a0 BASIC sonsuz bir d\u00f6ng\u00fcye de girebilir. Mesela \u015f\u00f6yle olursa:<\/p>\n<pre>10 GOTO 21\r\n21 GOTO 37\r\n37 GOTO 21\r\n40 END<\/pre>Program 10'da ba\u015flar, ama 21 ve 37 aras\u0131nda sonsuz bir d\u00f6ng\u00fcye girer.<\/p>\n<p><strong>Size verilen g\u00f6rev<\/strong>\u00a0Python'da BASIC program\u0131n\u0131 input olarak al\u0131p, program ba\u015far\u0131yla sonu\u00e7lan\u0131rsa,\u00a0<code>success<\/code>\u00a0\u00e7\u0131kt\u0131s\u0131n\u0131 yazd\u0131racak (print) bir program olu\u015fturmak. E\u011fer BASIC sonsuz d\u00f6ng\u00fcye girerse, program\u0131n\u0131z \"sonsuz d\u00f6ng\u00fc\" anlam\u0131nda\u00a0<code>infinite loop<\/code>ifadesini yazd\u0131rs\u0131n (print).\u00a0 Her hedef'in bir etikete kar\u015f\u0131l\u0131k geldi\u011fini varsayal\u0131m, b\u00f6ylece hata kontrol\u00fc yapman\u0131z gerekmeyecek.<\/p>\n<p>Bunu yapman\u0131n birka\u00e7 yolu var, ama bu ders i\u00e7in basit bir y\u00f6ntem olu\u015fturmak i\u00e7in problemi 3'e b\u00f6l\u00fcyoruz.\u00a0 (In lesson 15C dersinde verilen problemi alt g\u00f6revlere b\u00f6lme i\u015fini size b\u0131rakt\u0131k.)<\/p>\n<h2>1. Alt g\u00f6rev: Program\u0131 Okumak<\/h2>\n<p>Program\u0131 okumak i\u00e7in s\u00fcrekli\u00a0<code><a href=\"\/5-input\/\">input()<\/a><\/code>\u00a0\u00e7a\u011f\u0131rmam\u0131z gerekiyor; ama son sat\u0131ra gelindi\u011finde\u00a0(<code>END<\/code>\u00a0yaz\u0131l\u0131 olan)\u00a0 <code>EOFError<\/code>\u00a0 hatas\u0131ndan ka\u00e7\u0131nmak i\u00e7in\u00a0\u00a0<code>input()<\/code>\u00a0\u00e7a\u011f\u0131rmay\u0131 b\u0131rakmal\u0131y\u0131z.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform1\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox1'>\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'>Program\u0131 Okumak<\/span><\/div>Hi\u00e7 arg\u00fcman olmayan\u00a0<code>getBASIC()<\/code>\u00a0fonksiyonu tan\u0131mlay\u0131n, g\u00f6revi: \u00f6nce bir while d\u00f6ng\u00fcs\u00fc i\u00e7inde inputtan sat\u0131rlar okumal\u0131 ve sona ula\u015f\u0131ld\u0131\u011f\u0131nda string listesi formunda t\u00fcm program\u0131 d\u00f6nd\u00fcrmeli (return). (\u0130pu\u00e7lar\u0131: <a class=\"hintlink\"  id=\"hintlink2\">Listeler <\/a> ve durmak <a class=\"hintlink\"  id=\"hintlink3\">hakk\u0131nda<\/a>)<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='usercode1' id='usercode1'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput1\">You may enter input for the program in the box 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='submit1' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch1\" value=\"Input Switch\" onclick=\"pbInputSwitch(1,'N')\" ><\/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><select id='pbSelect1' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(1,'15a.getbasic')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(1);\" >Help<\/option>\n<\/select><\/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=\"e73435a05a942b728190fbdff4a94879\"\/>\n<div id='pbresults1' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(1);});pbInputSwitch(1,\"N\");<\/script>\n<\/p>\n<h2>2. Alt g\u00f6rev: Hedefe Git!<\/h2>\n<p>Program\u0131 okuduktan sonra, programda sat\u0131rdan sat\u0131ra gidebilmeliyiz. Bunu ger\u00e7ekle\u015ftirmek i\u00e7in a\u015fa\u011f\u0131daki alt yordam\u0131 olu\u015fturmal\u0131s\u0131n\u0131z.<br \/>\n<form class=\"pbform\" action=\"#\" id=\"pbform4\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox4'>\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'>Hedefe git!<\/span><\/div>A\u015fa\u011f\u0131daki i\u015flemi yapacak bir\u00a0<code>sat\u0131rBul(prog, target)<\/code>\u00a0fonksiyonu tan\u0131mlay\u0131n. Diyelim\u00a0<code>prog<\/code>\u00a0 BASIC program\u0131n\u0131 i\u00e7eren bir string listesi,\u00a0<code>getBASIC()<\/code>\u00a0 fonsiyonuyla \u00fcretildi\u011fi gibi; ve\u00a0<code>target<\/code> da GOTO ifadesinin hedefi olan sat\u0131r\u0131 say\u0131s\u0131n\u0131 verecek bir string. Fonksiyonun d\u00f6nd\u00fcrece\u011fi \u00e7\u0131kt\u0131 olarak index <code>i<\/code> (<code>0<\/code> ve<code>len(prog)-1<\/code>\u00a0aras\u0131nda bir say\u0131)\u00a0 d\u00f6nd\u00fcrmeli, t\u0131pk\u0131\u00a0<code>target<\/code>\u00a0 say\u0131s\u0131na e\u015fit olan\u00a0<code>prog[i]<\/code>\u00a0etiketi gibi. <a class=\"hintlink\"  id=\"hintlink5\">\u0130pucu<\/a>\u00a0<br\/><strong>\u0130nput\/output \u00f6rne\u011fi:<\/strong> E\u011fer <\/p>\n<pre>sat\u0131rBul(['10 GOTO 20','20 END'], '10')<\/pre> fonksiyonunu \u00e7a\u011f\u0131r\u0131rsan\u0131z \u00e7\u0131kt\u0131\u00a0<code>0<\/code>\u00a0olmal\u0131, \u00e7\u00fcnk\u00fc\u00a0 listedeki 0 elementi 10 etiketli olacak.<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='usercode4' id='usercode4'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory4' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput4\">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='submit4' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch4\" value=\"Input Switch\" onclick=\"pbInputSwitch(4,'Y')\" ><\/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,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect4' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(4,'15a.goto')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(4);\" >Help<\/option>\n<\/select><\/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=\"0f222510a0c295ae1a5a776bf5377b8b\"\/>\n<div id='pbresults4' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(4);});pbInputSwitch(4,\"Y\");<\/script>\n<\/p>\n<h2>3. Alt g\u00f6rev: Ak\u0131ll\u0131 Sim\u00fclasyon<\/h2>\n<p>Yukar\u0131daki iki \u00f6rnekte input rutini ve arama g\u00f6revlerini yerine getirdik. Bunlar ana program\u0131 daha k\u0131sa yazmakta bize yard\u0131m edecek. Ama as\u0131l soru h\u00e2l\u00e2 cevaplanmad\u0131: Problemi nas\u0131l \u00e7\u00f6zece\u011fiz? En dolamba\u00e7s\u0131z yol BASIC program\u0131n\u0131 sim\u00fcle etmektir:<\/p>\n<ul>\n<li><code>prog<\/code>\u00a0 BASIC program\u0131 olsun (bir stringler dizisi)<\/li>\n<li>0'dan ba\u015flayan\u00a0<code>location<\/code> adl\u0131 bir saya\u00e7 yapal\u0131m, \u00e7\u00fcnk\u00fc program\u0131n ilk sat\u0131r\u0131ndan ba\u015fl\u0131yoruz<\/li>\n<li>while True,\n<ul>\n<li>e\u011fer\u00a0<code>prog[location]<\/code>\u00a0END sat\u0131r\u0131nda ise, \"ba\u015far\u0131l\u0131\" olmu\u015ftur ve durur.<\/li>\n<li><code>prog[location]<\/code>'da g\u00f6sterilen hedef string <code>T<\/code> olsun<\/li>\n<li>\u00a0<code>location<\/code>'\u0131n yeni de\u011feri\u00a0<code>findLine(prog, T)<\/code> olsun<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>But, there is a major problem: this doesn't detect infinite loops, and if the BASIC program has an infinite loop, then the Python program will also loop forever. What we wanted was that the program should print \"infinite loop\" in this situation. We leave this problem for you to solve; we give a hint below.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform6\" method=\"POST\">\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'>Coding Exercise: <\/span><span class='title'>Smart Simulation<\/span><\/div>Write a function <code>execute(prog)<\/code> to do the following. Assume\u00a0<code>prog<\/code> is a list of strings containing the BASIC program, like before. Then, your function\u00a0should return either \"<code>success<\/code>\" or \"<code>infinite loop<\/code>\" depending on whether the program terminates, or loops forever. <strong>Important<\/strong>: you should assume the procedure <code>findLine(prog, target)<\/code> defined in sub-task 2 is already defined, you do not need to re-write it. <a class=\"hintlink\"  id=\"hintlink7\">Hint<\/a> <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='usercode6' id='usercode6'  cols=10 rows=20   class='pyboxCode RW'>\n# here is a broken solution to get you started\ndef execute(prog):\n  location = 0\n  while True:\n    if location==len(prog)-1: return \"success\"\n    #get T from prog[location] via str.split\n    location = findLine(prog, T)\n<\/textarea><\/div>\n<div id='pbhistory6' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput6\">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<input type='hidden' id='defaultCode6' value='# here is a broken solution to get you started\\ndef execute(prog):\\n  location = 0\\n  while True:\\n    if location==len(prog)-1: return \\\"success\\\"\\n    #get T from prog[location] via str.split\\n    location = findLine(prog, T)\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit6' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch6\" value=\"Input Switch\" onclick=\"pbInputSwitch(6,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(6)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(6,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect6' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(6,'15a.main')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(6,descape($('#defaultCode6').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(6);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse6\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"6\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"8cb015415ecc3a1fb073b9dfce9ec79c\"\/>\n<div id='pbresults6' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(6);});pbInputSwitch(6,\"Y\");<\/script>\n<\/p>\n<h2>Hepsini birle\u015ftirelim<\/h2>\n<p>\u00c7z\u00f6\u00fcm\u00fcn\u00fcz\u00fcn tamam\u0131n\u0131 test edebilmek i\u00e7in, yukar\u0131da yapt\u0131klar\u0131n\u0131z\u0131 kopyalayarak verilen \u015fabona yap\u0131\u015ft\u0131r\u0131n.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform8\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox8'>\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'>BASIC Simulator<\/span><\/div>Put together your BASIC simulator.<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='usercode8' id='usercode8'  cols=10 rows=20   class='pyboxCode RW'>\n# def getBASIC from subtask 1\n\n# def findLine from subtask 2\n\n# def execute from subtask 3\n\nprint(execute(getBASIC()))\n<\/textarea><\/div>\n<div id='pbhistory8' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput8\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode8' value='# def getBASIC from subtask 1\\n\\n# def findLine from subtask 2\\n\\n# def execute from subtask 3\\n\\nprint(execute(getBASIC()))\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit8' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch8\" value=\"Input Switch\" onclick=\"pbInputSwitch(8,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(8)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(8,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect8' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(8,'15a.overall')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(8,descape($('#defaultCode8').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(8);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse8\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"8\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"65fa257da1397c3584f44a84247679b0\"\/>\n<div id='pbresults8' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(8);});pbInputSwitch(8,\"N\");<\/script>\n<\/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> If your programming language is slightly more complicated, then it's\u00a0<em>impossible<\/em>\u00a0to write a termination-checking program. This was the earliest important theorem in computer science, proven by <a href=\"http:\/\/en.wikipedia.org\/wiki\/Alan_Turing\">Alan Turing<\/a> in the 1930s, and nowadays people refer to the result by saying \"the\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Halting_problem\">Halting Problem<\/a>\u00a0is undecidable.\" <\/span><\/td><\/table><\/p>\n","protected":false},"excerpt":{"rendered":"<p>15A, 15B ve 15C derslerini istedi\u011finiz s\u0131rayla yapabilirsiniz. Bu derste uzun ve karma\u015f\u0131k bir problem, par\u00e7alara ayr\u0131lm\u0131\u015f olarak size sunuluyor. Ayr\u0131ca bu derste stringleri b\u00f6lmeye yarayan\u00a0str.split()\u00a0 metodunu g\u00f6rece\u011fiz: t\u00fcm bo\u015fluk karakterlerini silip, stringdeki t\u00fcm kelimeleri liste h\u00e2line getirir. Orijinal string &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/15a-tr-termination-determination\/\">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-10818","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10818","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=10818"}],"version-history":[{"count":10,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10818\/revisions"}],"predecessor-version":[{"id":11084,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10818\/revisions\/11084"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=10818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}