{"id":30580,"date":"2025-09-29T14:31:18","date_gmt":"2025-09-29T11:31:18","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/"},"modified":"2025-09-29T14:31:18","modified_gmt":"2025-09-29T11:31:18","slug":"zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/","title":{"rendered":"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)"},"content":{"rendered":"<p><body><\/p>\n<p>ZX Sinclair BASIC kullanarak kendi kelime i\u015flemcinizi geli\u015ftirme ser\u00fcvenimizin \u00fc\u00e7\u00fcnc\u00fc ve son b\u00f6l\u00fcm\u00fcne ho\u015f geldiniz. Bu b\u00f6l\u00fcmde, s\u0131n\u0131rl\u0131 bellek ve i\u015flem g\u00fcc\u00fcyle nas\u0131l daha geli\u015fmi\u015f bir metin edit\u00f6r\u00fc olu\u015fturabilece\u011fimizi, dosyalar\u0131 g\u00fcvenli bir \u015fekilde nas\u0131l kaydedip y\u00fckleyece\u011fimizi ve kullan\u0131c\u0131 deneyimini nas\u0131l iyile\u015ftirece\u011fimizi ke\u015ffedece\u011fiz. Retro programlaman\u0131n zorluklar\u0131na meydan okurken, yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlerle dijital bir metin sanat\u00e7\u0131s\u0131 olmaya haz\u0131r m\u0131s\u0131n\u0131z?<\/p>\n<p>ZX Spectrum&#8217;\u0131n o kendine has kaset y\u00fckleme sesini hat\u0131rl\u0131yor musunuz? O d\u00f6nemin bilgisayarlar\u0131, g\u00fcn\u00fcm\u00fcz standartlar\u0131na g\u00f6re inan\u0131lmaz s\u0131n\u0131rl\u0131 kaynaklara sahipti. Ancak bu s\u0131n\u0131rlamalar, programc\u0131lar\u0131 yarat\u0131c\u0131l\u0131\u011f\u0131n s\u0131n\u0131rlar\u0131n\u0131 zorlamaya itiyordu. Bir kelime i\u015flemci yazmak, bu yarat\u0131c\u0131l\u0131\u011f\u0131n en g\u00fczel \u00f6rneklerinden biriydi. Temel bir kelime i\u015flemci, metin giri\u015fi, silme ve ekranda g\u00f6r\u00fcnt\u00fcleme gibi fonksiyonlar\u0131 i\u00e7ermelidir. \u00d6nceki b\u00f6l\u00fcmlerde, muhtemelen karakter okuma (<code class=\"language-basic\">INKEY$<\/code>), ekrana yazd\u0131rma (<code class=\"language-basic\">PRINT AT<\/code>) ve basit imle\u00e7 hareketleri gibi temel i\u015flevleri ele alm\u0131\u015ft\u0131k. Ancak ger\u00e7ek bir kelime i\u015flemci i\u00e7in daha fazlas\u0131 gereklidir: metinleri kal\u0131c\u0131 olarak depolamak, dosyalar\u0131 a\u00e7\u0131p d\u00fczenlemek ve geli\u015fmi\u015f navigasyon sa\u011flamak.<\/p>\n<p>ZX Spectrum&#8217;\u0131n 8-bit Z80 i\u015flemcisi ve tipik olarak 48KB belle\u011fiyle, her karakterin, her bo\u015flu\u011fun ve her kod sat\u0131r\u0131n\u0131n de\u011feri vard\u0131. BASIC dili, interpretatif yap\u0131s\u0131 nedeniyle C veya Assembly gibi dillere g\u00f6re daha yava\u015ft\u0131, ancak \u00f6\u011frenmesi ve h\u0131zl\u0131 prototipleme yapmas\u0131 kolayd\u0131. Bu nedenle, bir\u00e7ok ki\u015fi i\u00e7in kendi uygulamalar\u0131n\u0131 yazman\u0131n kap\u0131s\u0131n\u0131 aral\u0131yordu. Kelime i\u015flemcinin kalbi, metni tutacak bir veri yap\u0131s\u0131yd\u0131. Genellikle bu, bir dizi (array) dizelerden (strings) olu\u015fuyordu; her dizi eleman\u0131 bir sat\u0131r\u0131 temsil ediyordu. \u00d6rne\u011fin, <code class=\"language-basic\">DIM TEXT$(100)<\/code> komutu, 100 sat\u0131rl\u0131k bir metin i\u00e7in yer ay\u0131r\u0131rd\u0131. Metin girdik\u00e7e, <code class=\"language-basic\">TEXT$(LINE_NUMBER) = NEW_TEXT_LINE$<\/code> gibi ifadelerle bu diziyi g\u00fcncelleriz. Metin d\u00fczenleme i\u015flevleri, bu dizi elemanlar\u0131 \u00fczerinde dize manip\u00fclasyonu (<code class=\"language-basic\">MID$<\/code>, <code class=\"language-basic\">LEFT$<\/code>, <code class=\"language-basic\">RIGHT$<\/code>, <code class=\"language-basic\">LEN<\/code>) yapmay\u0131 gerektiriyordu. Bu temel yap\u0131, bizi sonraki ad\u0131mlara haz\u0131rlayacakt\u0131r.<\/p>\n<h3>ZX Spectrum&#8217;\u0131n Donan\u0131msal S\u0131n\u0131rlamalar\u0131 Bizi Nas\u0131l Yarat\u0131c\u0131 Olmaya \u0130tti?<\/h3>\n<p>ZX Spectrum, 32&#215;24 karakterlik metin ekran\u0131 ve 256&#215;192 piksellik grafik \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc sunuyordu. Her karakter h\u00fccre ba\u015f\u0131na sadece iki renk (\u00f6n plan ve arka plan) ve parlakl\u0131k ayar\u0131 (BRIGHT\/FLASH) atayabilme \u00f6zelli\u011fi, g\u00f6rsel \u00e7e\u015fitlili\u011fi s\u0131n\u0131rlasa da, bu k\u0131s\u0131tlamalar yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlere kap\u0131 a\u00e7t\u0131. \u00d6rne\u011fin, farkl\u0131 renk kombinasyonlar\u0131 veya parlakl\u0131k ayarlar\u0131 kullanarak metin i\u00e7inde ba\u015fl\u0131klar\u0131 veya \u00f6nemli k\u0131s\u0131mlar\u0131 vurgulamak m\u00fcmk\u00fcn oluyordu. Bu durum, grafik tasar\u0131m\u0131nda minimalist yakla\u015f\u0131mlar\u0131 benimsemek ve daha i\u015flevsel, az kaynak t\u00fcketen aray\u00fczler tasarlamak anlam\u0131na geliyordu. Metin edit\u00f6rlerinde, bu durum, daha \u00e7ok komut sat\u0131r\u0131 benzeri men\u00fclere ve tu\u015f kombinasyonlar\u0131na dayal\u0131 kullan\u0131mlara yol a\u00e7t\u0131. Geli\u015fmi\u015f bir metin edit\u00f6r\u00fc i\u00e7in, ekran\u0131n h\u0131zl\u0131 bir \u015fekilde g\u00fcncellenmesi, klavye girdilerinin an\u0131nda i\u015flenmesi ve bellekteki metin dizelerinin s\u00fcrekli olarak manip\u00fcle edilmesi gerekiyordu. ZX Spectrum&#8217;\u0131n s\u0131n\u0131rl\u0131 i\u015flem g\u00fcc\u00fc ve BASIC&#8217;in interpretatif do\u011fas\u0131 d\u00fc\u015f\u00fcn\u00fcld\u00fc\u011f\u00fcnde, her bir operasyonun ne kadar optimize edildi\u011fi performans\u0131 do\u011frudan etkilerdi. Bu ba\u011flamda, her bir karakterin silinmesi veya eklenmesi bile ekran\u0131n tamam\u0131n\u0131n yeniden \u00e7izilmesini gerektirmemeli, yaln\u0131zca ilgili sat\u0131r\u0131n veya karakterin g\u00fcncellenmesi sa\u011flanmal\u0131d\u0131r. \u0130\u015fte bu, donan\u0131msal k\u0131s\u0131tlamalar\u0131n m\u00fchendisleri ve programc\u0131lar\u0131 daha ak\u0131ll\u0131 algoritmalar ve daha verimli kodlar yazmaya itti\u011fi ger\u00e7ek bir vaka analiziydi.<\/p>\n<p>Ayr\u0131ca, ZX Spectrum&#8217;\u0131n karakter seti (ROM&#8217;da saklanan 0-127 aras\u0131 ASCII karakterler ve 128-255 aras\u0131 kullan\u0131c\u0131 tan\u0131ml\u0131 grafik karakterler), geli\u015fmi\u015f simgeler veya farkl\u0131 yaz\u0131 tipleri kullanma yetene\u011fini k\u0131s\u0131tl\u0131yordu. Ancak, programc\u0131lar bu bo\u015fluklar\u0131 \u00f6zel karakterler tasarlayarak veya renk atrib\u00fctlerini stratejik olarak kullanarak dolduruyordu. \u00d6rne\u011fin, kal\u0131n veya italik metinler do\u011frudan yaz\u0131 tipi de\u011fi\u015fikli\u011fiyle de\u011fil, karakterlere \u00f6zel renk veya parlakl\u0131k ayarlar\u0131yla taklit edilebilirdi. Bu yarat\u0131c\u0131 adaptasyonlar, ZX Spectrum platformunda kullan\u0131c\u0131lar\u0131n beklentilerini kar\u015f\u0131layacak i\u015flevsel ve estetik uygulamalar geli\u015ftirmenin anahtar\u0131yd\u0131. Dolay\u0131s\u0131yla, donan\u0131msal s\u0131n\u0131rlamalar sadece bir engel de\u011fil, ayn\u0131 zamanda inovasyon i\u00e7in bir kataliz\u00f6r g\u00f6revi g\u00f6r\u00fcyordu.<\/p>\n<h2>Belge Kaydetme ve Y\u00fckleme: Verileri Disketten Mi, Kasetten Mi Y\u00f6netelim?<\/h2>\n<p>ZX Spectrum d\u00f6neminde bilgisayarlar i\u00e7in veri depolama denince akla ilk gelen \u015f\u00fcphesiz kasetlerdi. Disket s\u00fcr\u00fcc\u00fcleri (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Microdrive\">Microdrive<\/a> veya harici disket s\u00fcr\u00fcc\u00fcleri gibi) daha sonra pop\u00fclerle\u015fse de, standart bir ZX Spectrum kullan\u0131c\u0131s\u0131 i\u00e7in kasetler ana depolama birimiydi. Kelime i\u015flemcinizle yazd\u0131\u011f\u0131n\u0131z bir belgeyi kaydetmek veya daha \u00f6nce kaydetti\u011finiz bir belgeyi y\u00fcklemek, uygulaman\u0131n temel bir par\u00e7as\u0131d\u0131r. ZX Spectrum BASIC, bu i\u015flemler i\u00e7in <code class=\"language-basic\">SAVE<\/code> ve <code class=\"language-basic\">LOAD<\/code> komutlar\u0131n\u0131 sunar. Ancak bu komutlar genellikle program kodunu veya say\u0131sal dizileri kaydetmek i\u00e7in kullan\u0131l\u0131rken, metin belgelerini kaydetmek i\u00e7in biraz daha farkl\u0131 bir yakla\u015f\u0131m gerekiyordu.<\/p>\n<p>Metin belgesini kaydetmenin en yayg\u0131n yolu, metin dizilerini bir veri dosyas\u0131 olarak kasede yazmakt\u0131. Bu, <code class=\"language-basic\">OPEN #kanal_no, \"dosya_ad\u0131\" FOR OUTPUT<\/code> komutu ile bir dosya a\u00e7\u0131p, her metin sat\u0131r\u0131n\u0131 <code class=\"language-basic\">PRINT #kanal_no, metin_sat\u0131r\u0131$<\/code> ile dosyaya yazmak anlam\u0131na geliyordu. Kaydetme i\u015flemi tamamland\u0131\u011f\u0131nda, dosyan\u0131n <code class=\"language-basic\">CLOSE #kanal_no<\/code> ile kapat\u0131lmas\u0131 gerekiyordu. Y\u00fckleme i\u015flemi ise benzer \u015fekilde \u00e7al\u0131\u015f\u0131rd\u0131: <code class=\"language-basic\">OPEN #kanal_no, \"dosya_ad\u0131\" FOR INPUT<\/code> ile dosya a\u00e7\u0131l\u0131r, <code class=\"language-basic\">INPUT #kanal_no, metin_sat\u0131r\u0131$<\/code> ile her sat\u0131r okunur ve bir diziye atan\u0131r. Bu i\u015flemler s\u0131ras\u0131nda, kaset motorunun kontrol edilmesi ve kullan\u0131c\u0131ya durum bilgisi verilmesi (\u00f6rne\u011fin, &#8220;Kaset \u00e7alara PLAY tu\u015funa bas\u0131n ve ENTER&#8217;a bas\u0131n&#8221;) \u00f6nemlidir. Hata y\u00f6netimi de kritikti; kaset okuma\/yazma hatalar\u0131 s\u0131k\u00e7a ya\u015fanabiliyordu, bu nedenle <code class=\"language-basic\">ON ERROR GOTO<\/code> komutu ile olas\u0131 hatalar\u0131 yakalamak ve kullan\u0131c\u0131ya bilgi vermek iyi bir uygulamayd\u0131. Kasetin g\u00fcvenilirli\u011fi, ses seviyesinin do\u011fru ayarlanmas\u0131 ve kaset \u00e7alar\u0131n fiziksel durumu gibi fakt\u00f6rlere ba\u011fl\u0131yd\u0131, bu da ger\u00e7ek d\u00fcnya senaryolar\u0131nda kullan\u0131c\u0131lar i\u00e7in \u00f6nemli bir deneyim unsuru haline geliyordu.<\/p>\n<h3><code>SAVE<\/code> ve <code>LOAD<\/code> Komutlar\u0131n\u0131 Verimli Kullanman\u0131n P\u00fcf Noktalar\u0131 Nelerdir?<\/h3>\n<p>ZX Spectrum&#8217;da <code class=\"language-basic\">SAVE<\/code> ve <code class=\"language-basic\">LOAD<\/code> komutlar\u0131 genellikle programlar\u0131 veya say\u0131sal dizileri kaydetmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Ancak metin belgeleri, asl\u0131nda bir dize dizisi (<code class=\"language-basic\">DIM TEXT$(MAX_LINES)<\/code>) oldu\u011fu i\u00e7in, bu mant\u0131k dosya i\u015flemlerine uyarlanabilir. Metin belgelerini kaydederken, her sat\u0131r\u0131 ayr\u0131 bir dize olarak kaydedip, y\u00fcklerken de ayn\u0131 \u015fekilde okumak en pratik yakla\u015f\u0131md\u0131r. \u0130\u015fte bu s\u00fcreci g\u00f6steren basit bir BASIC kod \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-basic\">\n10 REM KELIME ISLEMCI BELGE KAYIT ORNEGI\n20 PRINT AT 0,0;\"Belgeyi kaydetmek icin isim girin:\"\n30 INPUT FILENAME$\n40 IF FILENAME$=\"\" THEN GO TO 20\n50 REM Metin verilerini bir dize dizisinde tuttugumuzu varsayalim: TEXT$(LINE_NUM)\n60 REM LAST_LINE, belgedeki son dolu satirin numarasi\n70 REM ZX Spectrum'da #3 genellikle kaset kanalidir.\n80 OPEN #3, FILENAME$ FOR OUTPUT\n90 IF ERR THEN GOTO 150 REM Hata durumunda atla\n100 FOR I=1 TO LAST_LINE\n110 PRINT #3, TEXT$(I)\n120 NEXT I\n130 CLOSE #3\n140 PRINT AT 0,0;\"Belge basariyla kaydedildi: \"; FILENAME$\n145 PAUSE 100 REM Kullanicinin gormesi icin kisa bir bekleme\n150 RETURN REM Ana menuye don veya hata mesajini goster\n160 REM Hata yonetimi\n170 PRINT AT 0,0;\"HATA: Kaydetme basarisiz! (Kod: \";ERR;\")\"\n175 PAUSE 200\n180 RESUME NEXT REM Hata meydana geldigi yerden devam etmeye calis\n  <\/pre>\n<p><\/code><\/p>\n<p>Y\u00fckleme i\u015flemi de benzer \u015fekilde kurgulan\u0131r, ancak bu sefer dosyadan veri okuyarak diziyi doldururuz:<\/p>\n<pre><code class=\"language-basic\">\n200 REM KELIME ISLEMCI BELGE YUKLEME ORNEGI\n210 PRINT AT 0,0;\"Yuklemek istediginiz belgenin adini girin:\"\n220 INPUT FILENAME$\n230 IF FILENAME$=\"\" THEN GO TO 210\n240 ON ERROR GOTO 360 REM Hata durumunda atla\n250 OPEN #3, FILENAME$ FOR INPUT\n260 IF ERR THEN GOTO 360 REM Hata durumunda atla\n270 GOSUB CLEAR_TEXT_BUFFER REM Eski metni temizle\n280 LINE_COUNT = 0\n290 REM EOF(#3) dosya sonuna ulasip ulasmadigimizi kontrol eder\n300 WHILE NOT EOF(#3)\n310 LINE_COUNT = LINE_COUNT + 1\n320 REM Dize dizisini genisletmek gerekirse DIM komutu tekrar kullanilabilir.\n330 REM Ancak ZX BASIC'te dinamik dizi boyutlandirma karmasiktir.\n340 INPUT #3, TEXT$(LINE_COUNT)\n350 WEND\n360 CLOSE #3\n370 PRINT AT 0,0;\"Belge basariyla yuklendi: \"; FILENAME$;\"   \"\n375 LAST_LINE = LINE_COUNT\n380 PAUSE 100\n390 RETURN REM Metin duzenleme ekranina don\n400 REM Hata yonetimi\n410 PRINT AT 0,0;\"Hata: Belge bulunamadi veya yuklenemedi! (Kod: \";ERR;\")\"\n415 PAUSE 200\n420 RESUME NEXT REM Devam et\n430 REM Metin tamponunu temizleme alt programi\n440 CLEAR_TEXT_BUFFER:\n450 FOR I = 1 TO LAST_LINE\n460 TEXT$(I) = \"\"\n470 NEXT I\n480 LAST_LINE = 0\n490 RETURN\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rneklerde, hata y\u00f6netimini (<code class=\"language-basic\">ON ERROR GOTO<\/code>) ve kullan\u0131c\u0131ya geri bildirim sa\u011flamay\u0131 unutmay\u0131n. ZX Spectrum'da kaset tabanl\u0131 i\u015flemler yava\u015f olabilece\u011finden, kullan\u0131c\u0131ya sabretmesi gerekti\u011fini belirten mesajlar g\u00f6stermek kullan\u0131c\u0131 deneyimini iyile\u015ftirecektir. Ayr\u0131ca, <code class=\"language-basic\">EOF(#kanal_no)<\/code> fonksiyonu, dosyan\u0131n sonuna ula\u015f\u0131p ula\u015fmad\u0131\u011f\u0131n\u0131z\u0131 kontrol etmek i\u00e7in hayati \u00f6neme sahiptir. Bu \u015fekilde, belgenizin boyutundan ba\u011f\u0131ms\u0131z olarak t\u00fcm i\u00e7eri\u011fi okuyabilir veya kaydedebilirsiniz. \u00d6zellikle uzun belgelerde, bu t\u00fcr bir d\u00f6ng\u00fcsel kay\u0131t\/y\u00fckleme yap\u0131s\u0131 esneklik sa\u011flar.<\/p>\n<h2>Geli\u015fmi\u015f Metin D\u00fczenleme Fonksiyonlar\u0131 Nas\u0131l Entegre Edilir?<\/h2>\n<p>Basit bir metin edit\u00f6r\u00fcnde karakter giri\u015fi ve silme yeterli olabilirken, \"geli\u015fmi\u015f\" bir kelime i\u015flemci, kullan\u0131c\u0131n\u0131n metin \u00fczerinde daha fazla kontrol sahibi olmas\u0131n\u0131 sa\u011flar. Bu, imle\u00e7 kontrol\u00fcnden metin manip\u00fclasyonuna kadar geni\u015f bir yelpazeyi kapsar. ZX Spectrum'da imleci sadece sa\u011fa ve sola de\u011fil, yukar\u0131 ve a\u015fa\u011f\u0131 hareket ettirmek, sayfa atlamak veya sat\u0131r ba\u015f\u0131na\/sonuna gitmek i\u00e7in \u00f6zel rutinler yazmam\u0131z gerekir. Klavyeden okunan tu\u015f kodlar\u0131na (<code class=\"language-basic\">INKEY$<\/code> ile elde edilen) g\u00f6re imle\u00e7 konumunu (<code class=\"language-basic\">ROW<\/code>, <code class=\"language-basic\">COLUMN<\/code> de\u011fi\u015fkenleri) g\u00fcncellemeli ve <code class=\"language-basic\">PRINT AT ROW,COLUMN;<\/code> komutuyla yeni konumda imleci (genellikle bir blok karakteri veya tersine \u00e7evrilmi\u015f bo\u015fluk) g\u00f6stermeliyiz. <code class=\"language-basic\">CHR$ 8<\/code> (sol), <code class=\"language-basic\">CHR$ 21<\/code> (yukar\u0131), <code class=\"language-basic\">CHR$ 22<\/code> (sa\u011f), <code class=\"language-basic\">CHR$ 23<\/code> (a\u015fa\u011f\u0131) gibi kontrol kodlar\u0131 direkt olarak imleci hareket ettirmez; bunlar terminal \u00e7\u0131kt\u0131s\u0131 i\u00e7in \u00f6zel anlamlara sahiptir ancak bizim kendi imle\u00e7 y\u00f6netimimizi yazarken klavye giri\u015flerini yorumlamam\u0131z gerekir.<\/p>\n<p>Metin d\u00fczenleme, temel dize i\u015flemleriyle ba\u015flar. Bir karakteri eklemek i\u00e7in, mevcut dizeyi <code class=\"language-basic\">LEFT$<\/code> ve <code class=\"language-basic\">RIGHT$<\/code> kullanarak ikiye b\u00f6l\u00fcp, araya yeni karakteri ekleyip tekrar birle\u015ftirmemiz gerekir. \u00d6rne\u011fin, <code class=\"language-basic\">LINE$ = LEFT$(LINE$, CURSOR_POS) + NEW_CHAR$ + MID$(LINE$, CURSOR_POS + 1)<\/code>. Benzer \u015fekilde, karakter silmek i\u00e7in <code class=\"language-basic\">MID$<\/code> veya <code class=\"language-basic\">RIGHT$<\/code> kullanarak istenen k\u0131sm\u0131 \u00e7\u0131karabiliriz. Sat\u0131r silme ise daha karma\u015f\u0131kt\u0131r; silinecek sat\u0131rdan sonraki t\u00fcm sat\u0131rlar\u0131 bir \u00fcste kayd\u0131rmak ve son sat\u0131r\u0131 bo\u015faltmak gerekir. Bu i\u015flemlerin tamam\u0131, metin dizileri \u00fczerinde yo\u011fun dize manip\u00fclasyonu gerektirir ve bu da ZX Spectrum'\u0131n s\u0131n\u0131rl\u0131 i\u015flem g\u00fcc\u00fc nedeniyle yava\u015f olabilir. Bu nedenle, performans optimizasyonu kritik hale gelir. Ekran g\u00fcncellemeleri yaln\u0131zca de\u011fi\u015fen b\u00f6lgeyi kapsamal\u0131, t\u00fcm ekran\u0131 her seferinde yeniden \u00e7izmekten ka\u00e7\u0131n\u0131lmal\u0131d\u0131r.<\/p>\n<h3>Bellek Y\u00f6netimi ve Performans \u0130\u00e7in Ne Gibi Optimizasyonlar Uygulayabiliriz?<\/h3>\n<p>ZX Spectrum'da bellek y\u00f6netimi, \u00f6zellikle 48KB'l\u0131k modelde hayati \u00f6nem ta\u015f\u0131r. Metin edit\u00f6r\u00fc i\u00e7in ayr\u0131lan bellek, program\u0131n kendisi, de\u011fi\u015fkenler, dizeler ve ekran belle\u011fi aras\u0131nda payla\u015ft\u0131r\u0131l\u0131r. Dize de\u011fi\u015fkenleri, dinamik olarak bellek kulland\u0131\u011f\u0131 i\u00e7in, uzun dizeler veya \u00e7ok say\u0131da dize, belle\u011fi h\u0131zla t\u00fcketebilir. Bu durumu optimize etmek i\u00e7in \u015funlar yap\u0131labilir:<\/p>\n<ul>\n<li><strong>Dize Alan\u0131 Optimizasyonu<\/strong>: Dize alan\u0131n\u0131 program\u0131n ba\u015f\u0131nda <code class=\"language-basic\">CLEAR<\/code> komutuyla belirli bir boyuta ayarlamak (<code class=\"language-basic\">CLEAR 10000<\/code>, \u00f6rne\u011fin, 10KB dize alan\u0131 b\u0131rak\u0131r) ve bu alan\u0131 a\u015fmamaya \u00f6zen g\u00f6stermek.<\/li>\n<li><strong>Ekran G\u00fcncelleme Kontrol\u00fc<\/strong>: Her tu\u015f bas\u0131m\u0131nda veya imle\u00e7 hareketinde t\u00fcm ekran\u0131 yeniden \u00e7izmek yerine, yaln\u0131zca etkilenen sat\u0131r\u0131 veya karakteri g\u00fcncellemek performans\u0131 dramatik bir \u015fekilde art\u0131r\u0131r. <code class=\"language-basic\">PRINT AT<\/code> komutunu hedefli kullanarak bu sa\u011flanabilir.<\/li>\n<li><strong>Gereksiz Hesaplamalardan Ka\u00e7\u0131nma<\/strong>: D\u00f6ng\u00fc i\u00e7inde s\u00fcrekli ayn\u0131 dize uzunlu\u011funu hesaplamak (<code class=\"language-basic\">LEN<\/code>) yerine, bir de\u011fi\u015fkeni kullanarak bu de\u011feri depolamak ve g\u00fcncellemek daha iyidir.<\/li>\n<li><strong>Makine Dili Rutinleri<\/strong>: E\u011fer performans kritikse, BASIC kodunun belirli b\u00f6l\u00fcmlerini (\u00f6zellikle ekran g\u00fcncellemeleri ve dize manip\u00fclasyonlar\u0131) makine dilinde (Z80 Assembly) yaz\u0131p <code class=\"language-basic\">CALL<\/code> komutuyla \u00e7a\u011f\u0131rmak, h\u0131zda \u00f6nemli bir fark yaratabilir. Ancak bu, geli\u015fmi\u015f bir programlama bilgisini gerektirir.<\/li>\n<\/ul>\n<div class=\"expert-tip\">\n<p>Uzman \u0130pucu: Metin tamponunu optimize etmek i\u00e7in dizeleri sabit boyutta tan\u0131mlamak yerine, dinamik olarak b\u00fcy\u00fcyen\/k\u00fc\u00e7\u00fclen bir yap\u0131 kullanmak daha verimlidir. Ancak ZX BASIC'te bu, genellikle daha karma\u015f\u0131k dizeler ve d\u00f6ng\u00fcler anlam\u0131na gelir. Ger\u00e7ek ZX Spectrum \u00fczerinde, basit <code class=\"language-basic\">TEXT$(LINE_NUM)<\/code> dizileri en s\u0131k kullan\u0131lan ve y\u00f6netilebilir \u00e7\u00f6z\u00fcmd\u00fcr, ancak bellek s\u0131n\u0131rlar\u0131 dahilinde kalmak i\u00e7in maksimum sat\u0131r say\u0131s\u0131n\u0131 iyi belirlemek gerekir.<\/p>\n<\/p><\/div>\n<p>Uzun belgelerle \u00e7al\u0131\u015f\u0131rken, sadece ekranda g\u00f6r\u00fcnen sat\u0131rlar\u0131 bellekte tutmak ve di\u011ferlerini diskten (kasetten) gerekti\u011finde y\u00fcklemek bir strateji olabilir. Ancak bu, kaset i\u015flemlerinin yava\u015fl\u0131\u011f\u0131 nedeniyle ger\u00e7ek zamanl\u0131 d\u00fczenlemeyi zorla\u015ft\u0131r\u0131r. Dolay\u0131s\u0131yla, \u00e7o\u011fu ZX Spectrum kelime i\u015flemcisi, t\u00fcm belgeyi bellekte tutmaya \u00e7al\u0131\u015f\u0131r ve bu da belgenin maksimum boyutunu k\u0131s\u0131tlar. Bu dengeyi kurmak, kelime i\u015flemcinizin kullan\u0131labilirli\u011fi a\u00e7\u0131s\u0131ndan hayati \u00f6neme sahiptir. Karakter silme veya ekleme i\u015flemleri gibi dize manip\u00fclasyonlar\u0131 s\u0131ras\u0131nda ge\u00e7ici dize de\u011fi\u015fkenlerini minimal d\u00fczeyde kullanarak bellek par\u00e7alanmas\u0131n\u0131 (fragmentation) azaltmak da performans art\u0131\u015f\u0131na katk\u0131da bulunabilir.<\/p>\n<h2>Ekran \u00c7\u0131kt\u0131s\u0131n\u0131 ve Kullan\u0131c\u0131 Deneyimini Geli\u015ftirme Y\u00f6ntemleri<\/h2>\n<p>ZX Spectrum'da kullan\u0131c\u0131 deneyimini iyile\u015ftirmek, s\u0131n\u0131rl\u0131 grafik ve metin yeteneklerine ra\u011fmen yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmler bulmakla ilgilidir. Dinamik ekran yenileme, sadece de\u011fi\u015fen b\u00f6l\u00fcmleri g\u00fcncelleyerek ekran\u0131n \"titremesini\" engeller ve daha ak\u0131c\u0131 bir deneyim sunar. \u00d6rne\u011fin, bir karakter silindi\u011finde veya eklendi\u011finde t\u00fcm sat\u0131r\u0131 yeniden \u00e7izmek yerine, yaln\u0131zca imle\u00e7ten sonraki karakterleri kayd\u0131rmak daha verimlidir. Bu, <code class=\"language-basic\">PRINT AT<\/code> komutu ve <code class=\"language-basic\">SPC<\/code> (bo\u015fluk b\u0131rakma) ile birle\u015ftirilerek yap\u0131labilir. Renkler ve vurgulama (<code class=\"language-basic\">INK<\/code>, <code class=\"language-basic\">PAPER<\/code>, <code class=\"language-basic\">BRIGHT<\/code>, <code class=\"language-basic\">FLASH<\/code>), metin i\u00e7inde ba\u015fl\u0131klar\u0131, men\u00fc \u00f6\u011felerini veya hata mesajlar\u0131n\u0131 vurgulamak i\u00e7in kullan\u0131labilir. Kullan\u0131c\u0131ya bir men\u00fc sunarken veya bir se\u00e7im yapmas\u0131n\u0131 isterken, farkl\u0131 renklerle vurgulanan se\u00e7enekler g\u00f6rsel olarak daha \u00e7ekici olabilir. \u00d6rne\u011fin, se\u00e7ili men\u00fc \u00f6\u011fesini <code class=\"language-basic\">BRIGHT 1<\/code> veya farkl\u0131 bir <code class=\"language-basic\">INK<\/code> rengiyle g\u00f6stermek, kullan\u0131c\u0131ya an\u0131nda g\u00f6rsel geri bildirim sa\u011flar.<\/p>\n<p>Men\u00fcler ve ileti\u015fim kutular\u0131, kullan\u0131c\u0131yla etkile\u015fim kurman\u0131n anahtar\u0131d\u0131r. <code class=\"language-basic\">INPUT<\/code> komutu, kullan\u0131c\u0131lardan dosya ad\u0131 veya se\u00e7enek giri\u015fi almak i\u00e7in kullan\u0131labilir. Ancak, <code class=\"language-basic\">INPUT<\/code> komutu genellikle ekran\u0131n alt k\u0131sm\u0131nda belirir ve kontrol\u00fc programdan al\u0131r. Daha esnek men\u00fcler i\u00e7in, <code class=\"language-basic\">PRINT AT<\/code> ile ekran\u0131n belirli bir yerine men\u00fc se\u00e7eneklerini yazd\u0131r\u0131p, <code class=\"language-basic\">INKEY$<\/code> ile kullan\u0131c\u0131n\u0131n hangi tu\u015fa bast\u0131\u011f\u0131n\u0131 okumak daha interaktif bir yakla\u015f\u0131m sunar. B\u00f6ylece, klavye k\u0131sayollar\u0131 ve \u00f6zel tu\u015flar (\u00f6rne\u011fin, <code class=\"language-basic\">SHIFT<\/code> + tu\u015f kombinasyonlar\u0131), farkl\u0131 i\u015flevleri h\u0131zl\u0131ca tetiklemek i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, <code class=\"language-basic\">SHIFT + CURSOR LEFT<\/code> bir kelimeyi sola atlamak i\u00e7in kullan\u0131labilirken, <code class=\"language-basic\">CAPS SHIFT + 1<\/code> (yani fonksiyon tu\u015fu <code class=\"language-basic\">EDIT<\/code>) kopyala\/yap\u0131\u015ft\u0131r benzeri bir i\u015flevi tetikleyebilir. Bu t\u00fcr k\u0131sayollar, deneyimli kullan\u0131c\u0131lar i\u00e7in \u00e7al\u0131\u015fma ak\u0131\u015f\u0131n\u0131 h\u0131zland\u0131r\u0131r ve genel deneyimi zenginle\u015ftirir.<\/p>\n<h3>Mobil Uyumluluk: ZX Spectrum Ekran Boyutunu Modern Cihazlara Nas\u0131l Adapte Ederiz?<\/h3>\n<p>Her ne kadar ZX Spectrum kendi ba\u015f\u0131na bir mobil cihaz olmasa da, onun ekran \u00e7\u0131kt\u0131s\u0131n\u0131 modern web ortam\u0131nda taklit etmek ve mobil cihazlarda da anla\u015f\u0131l\u0131r k\u0131lmak i\u00e7in HTML ve CSS'in g\u00fcc\u00fcnden yararlanabiliriz. Bu, retro programlama projelerinin g\u00fcn\u00fcm\u00fczdeki izleyicilerle bulu\u015fmas\u0131n\u0131 sa\u011flar. Bir ZX Spectrum em\u00fclat\u00f6r\u00fcn\u00fc veya ekran \u00e7\u0131kt\u0131s\u0131n\u0131 web sayfas\u0131na g\u00f6merken, mobil uyumluluk i\u00e7in <code class=\"language-html\">@media<\/code> sorgular\u0131n\u0131 kullanmak idealdir. Bu sayede, ekran\u0131n boyutu ve yaz\u0131 tipi, farkl\u0131 cihaz geni\u015fliklerine g\u00f6re otomatik olarak ayarlanabilir.<\/p>\n<pre><code class=\"language-html\">\n<style>\n  .zx-screen-emulator {\n    font-family: 'Monaco', 'Courier New', monospace; \/* Monospace font *\/\n    background-color: #0000D7; \/* Koyu mavi arka plan (Spectrum mavisini taklit eder) *\/\n    color: #D70000; \/* K\u0131rm\u0131z\u0131 metin (Spectrum k\u0131rm\u0131z\u0131s\u0131n\u0131 taklit eder) *\/\n    padding: 20px;\n    border: 2px solid #555;\n    box-shadow: 5px 5px 15px rgba(0,0,0,0.5);\n    width: 600px; \/* Varsay\u0131lan geni\u015flik *\/\n    margin: 20px auto;\n    overflow-x: auto; \/* Yatay kayd\u0131rma gerekirse *\/\n    white-space: pre; \/* \u0130\u00e7erik \u00f6nceden bi\u00e7imlendirilmi\u015f olarak kals\u0131n *\/\n  }\n\n  \/* Mobil cihazlar i\u00e7in stil ayarlar\u0131 *\/\n  @media screen and (max-width: 600px) {\n    .zx-screen-emulator {\n      width: 90%; \/* Daha k\u00fc\u00e7\u00fck ekranlarda daha fazla yer kapla *\/\n      font-size: 0.8em; \/* Yaz\u0131 tipi boyutunu k\u00fc\u00e7\u00fclt *\/\n      padding: 10px;\n    }\n  }\n\n  \/* Tablet gibi orta boyutlu cihazlar i\u00e7in stil ayarlar\u0131 *\/\n  @media screen and (min-width: 601px) and (max-width: 1024px) {\n    .zx-screen-emulator {\n      width: 75%; \/* Orta boyutlu ekranlarda orta geni\u015flik *\/\n      font-size: 0.9em; \/* Hafif\u00e7e k\u00fc\u00e7\u00fclt\u00fclm\u00fc\u015f yaz\u0131 tipi *\/\n      padding: 15px;\n    }\n  }\n<\/style>\n\n<div class=\"zx-screen-emulator\">\n  <!-- ZX Spectrum benzeri bir ekran \u00e7\u0131kt\u0131s\u0131 sim\u00fclasyonu -->\n  <pre>\n       10 REM ZX WORD PROCESSOR III\n       20 PRINT AT 0,0;\"Mi propio procesador de textos\"\n       30 PRINT AT 2,0;\"1. YUKLE  2. KAYDET  3. DUZENLE  4. CIKIS\"\n       40 PRINT AT 4,0;\"SECIMINIZ: \";\n       50 INPUT A\n       60 IF A=1 THEN GOSUB 200: REM YUKLEME\n       70 IF A=2 THEN GOSUB 10: REM KAYIT\n       80 IF A=3 THEN GOSUB 400: REM DUZENLEME\n       90 IF A=4 THEN STOP\n       100 GO TO 20\n  <\/pre>\n<\/div>\n<p>  <\/code><\/p>\n<p>Yukar\u0131daki HTML ve CSS kodu, ZX Spectrum ekran\u0131n\u0131 taklit eden bir <code class=\"language-html\">div<\/code> elementini tan\u0131mlar. <code class=\"language-html\">@media<\/code> sorgular\u0131 sayesinde, 600 piksel geni\u015fli\u011fin alt\u0131ndaki cihazlarda em\u00fclat\u00f6r\u00fcn geni\u015fli\u011fi %90'a d\u00fc\u015f\u00fcr\u00fcl\u00fcr ve yaz\u0131 tipi boyutu k\u00fc\u00e7\u00fclt\u00fcl\u00fcr. 601 ile 1024 piksel aras\u0131ndaki cihazlarda ise geni\u015flik %75'e ayarlan\u0131r. Bu teknik, retro i\u00e7eriklerin modern web standartlar\u0131na uygun, eri\u015filebilir ve g\u00f6rsel olarak tutarl\u0131 bir \u015fekilde sunulmas\u0131n\u0131 sa\u011flar. B\u00f6ylece, ZX Spectrum BASIC ile yaz\u0131lm\u0131\u015f kelime i\u015flemcinizin kod \u00f6rnekleri veya ekran g\u00f6r\u00fcnt\u00fcleri, cep telefonlar\u0131ndan masa\u00fcst\u00fc bilgisayarlara kadar her t\u00fcrl\u00fc cihazda rahatl\u0131kla g\u00f6r\u00fcnt\u00fclenebilir hale gelir. Bu, eski teknolojiyi g\u00fcn\u00fcm\u00fczle bulu\u015fturman\u0131n yarat\u0131c\u0131 bir yoludur ve kullan\u0131c\u0131 deneyimini her platformda optimize etme felsefesini yans\u0131t\u0131r.<\/p>\n<h2>Sonu\u00e7: ZX Sinclair BASIC ile Kelime \u0130\u015flemci Geli\u015ftirmenin Gelece\u011fi ve F\u0131rsatlar\u0131<\/h2>\n<p>ZX Sinclair BASIC ile kendi kelime i\u015flemcinizi geli\u015ftirme yolculu\u011fumuzun sonuna geldik. Bu seride, s\u0131n\u0131rl\u0131 donan\u0131m kaynaklar\u0131na sahip bir platformda, temel bir metin edit\u00f6r\u00fcnden, dosya kaydetme\/y\u00fckleme ve geli\u015fmi\u015f d\u00fczenleme i\u015flevlerine sahip bir uygulamaya nas\u0131l ula\u015f\u0131labilece\u011fini ad\u0131m ad\u0131m g\u00f6rd\u00fck. Ba\u015flang\u0131\u00e7ta basit g\u00f6r\u00fcnen bu proje, asl\u0131nda bellek y\u00f6netimi, ekran optimizasyonu, dize manip\u00fclasyonu ve kullan\u0131c\u0131 aray\u00fcz\u00fc tasar\u0131m\u0131 gibi pek \u00e7ok zorlu\u011fun \u00fcstesinden gelmemizi gerektirdi. Retro programlama, g\u00fcn\u00fcm\u00fcz\u00fcn bol kaynakl\u0131 ortam\u0131nda pek \u00e7ok geli\u015ftiricinin unuttu\u011fu optimizasyon ve verimlilik derslerini yeniden hat\u0131rlat\u0131r. Her bir bayt\u0131n ve her bir i\u015flem d\u00f6ng\u00fcs\u00fcn\u00fcn \u00f6nemini anlamak, problem \u00e7\u00f6zme yetene\u011fimizi ve yarat\u0131c\u0131l\u0131\u011f\u0131m\u0131z\u0131 keskinle\u015ftirir.<\/p>\n<p>ZX Spectrum BASIC ile bir kelime i\u015flemci geli\u015ftirmek, sadece nostaljik bir u\u011fra\u015f de\u011fil, ayn\u0131 zamanda temel programlama prensiplerini ve sistem kaynaklar\u0131n\u0131 anlama konusunda paha bi\u00e7ilmez bir deneyimdir. \u00d6\u011frendi\u011fimiz dersler \u2013 \u00f6rne\u011fin, her ekran pikselini veya dize karakterini nas\u0131l verimli kullanaca\u011f\u0131m\u0131z, performans\u0131 art\u0131rmak i\u00e7in ak\u0131ll\u0131 algoritmalar tasarlayaca\u011f\u0131m\u0131z \u2013 modern programlama projelerinde de ge\u00e7erlidir. Kaynak k\u0131s\u0131tl\u0131 IoT cihazlar\u0131ndan, y\u00fcksek performansl\u0131 web uygulamalar\u0131na kadar her alanda, bu t\u00fcr optimizasyon teknikleri hala de\u011ferli ve uygulanabilir niteliktedir. Dolay\u0131s\u0131yla, bu retro proje, sadece ge\u00e7mi\u015fe bir sayg\u0131 duru\u015fu de\u011fil, ayn\u0131 zamanda gelece\u011fe y\u00f6nelik geli\u015ftirme becerilerini de peki\u015ftiren bir e\u011fitim niteli\u011fi ta\u015f\u0131maktad\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li>\n<p><strong>S1: ZX Sinclair BASIC ile karma\u015f\u0131k bir kelime i\u015flemci yazmak m\u00fcmk\u00fcn m\u00fcd\u00fcr?<\/strong><\/p>\n<p><strong>C1:<\/strong> Evet, temelden ba\u015flayarak mod\u00fcler yakla\u015f\u0131mla, belle\u011fi ve i\u015flem g\u00fcc\u00fcn\u00fc verimli kullanarak olduk\u00e7a i\u015flevsel bir kelime i\u015flemci olu\u015fturulabilir. Ancak, modern edit\u00f6rlerin sundu\u011fu geli\u015fmi\u015f grafiksel bi\u00e7imlendirme, \u00e7oklu yaz\u0131 tipleri veya ger\u00e7ek zamanl\u0131 yaz\u0131m denetimi gibi t\u00fcm \u00f6zellikleri beklememek gerekir. Temel metin d\u00fczenleme ve dosya y\u00f6netimi gayet ba\u015far\u0131l\u0131 bir \u015fekilde uygulanabilir.<\/p>\n<\/li>\n<li>\n<p><strong>S2: Metin dosyalar\u0131n\u0131 kasetten kaydederken nelere dikkat etmeliyim?<\/strong><\/p>\n<p><strong>C2:<\/strong> G\u00fcvenilir bir kaset ve kaset \u00e7alar kullanmak, ses seviyesi ayarlar\u0131n\u0131 do\u011fru yapmak ve kay\u0131t s\u0131ras\u0131nda cihaz\u0131n sallanmamas\u0131n\u0131 sa\u011flamak \u00f6nemlidir. Ayr\u0131ca, kay\u0131t sonras\u0131 bir test y\u00fcklemesi yapmak (belgeyi tekrar a\u00e7maya \u00e7al\u0131\u015fmak) olas\u0131 veri bozulmalar\u0131n\u0131 erken tespit etmek i\u00e7in iyi bir pratiktir.<\/p>\n<\/li>\n<li>\n<p><strong>S3: Performans sorunlar\u0131n\u0131 nas\u0131l giderebilirim?<\/strong><\/p>\n<p><strong>C3:<\/strong> Performans\u0131 art\u0131rmak i\u00e7in ekran g\u00fcncellemelerini minimize etmek (sadece de\u011fi\u015fen b\u00f6lgeyi \u00e7izmek), d\u00f6ng\u00fcleri optimize etmek, dize manip\u00fclasyonlar\u0131n\u0131 azaltmak ve verileri daha verimli yap\u0131larda depolamak (\u00f6rne\u011fin, tek bir uzun dize yerine dize dizisi) \u00f6nemlidir. Kritik b\u00f6l\u00fcmler i\u00e7in makine dili rutinleri kullanmak da \u00f6nemli h\u0131z art\u0131\u015f\u0131 sa\u011flayabilir.<\/p>\n<\/li>\n<li>\n<p><strong>S4: ZX Spectrum'\u0131n s\u0131n\u0131rl\u0131 grafik yetenekleri metin d\u00fczenleyiciyi nas\u0131l etkiler?<\/strong><\/p>\n<p><strong>C4:<\/strong> S\u0131n\u0131rl\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fck (32x24 karakter) ve renk paleti (8 renk, iki parlakl\u0131k seviyesi) geli\u015fmi\u015f bi\u00e7imlendirme ve g\u00f6rsel efektler i\u00e7in alan b\u0131rakmaz. Ancak, temel metin vurgulama (parlakl\u0131k, renk de\u011fi\u015fimi) ve karakter tabanl\u0131 grafikler (ASCII art) kullan\u0131larak i\u015flevsel ve estetik bir aray\u00fcz olu\u015fturulabilir.<\/p>\n<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"ZX Sinclair BASIC kullanarak kendi kelime i\u015flemcinizi geli\u015ftirme ser\u00fcvenimizin \u00fc\u00e7\u00fcnc\u00fc ve son b\u00f6l\u00fcm\u00fcne ho\u015f geldiniz. Bu b\u00f6l\u00fcmde, s\u0131n\u0131rl\u0131&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1342],"tags":[],"class_list":{"0":"post-30580","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ai","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)<\/title>\n<meta name=\"description\" content=\"ZX Sinclair BASIC kullanarak kendi kelime i\u015flemcinizi geli\u015ftirme ser\u00fcvenimizin \u00fc\u00e7\u00fcnc\u00fc ve son b\u00f6l\u00fcm\u00fcne ho\u015f geldiniz. Bu b\u00f6l\u00fcmde, s\u0131n\u0131rl\u0131 bellek ve i\u015flem g\u00fcc\u00fcyle nas\u0131l daha geli\u015fmi\u015f bir metin edit\u00f6r\u00fc olu\u015fturabilece\u011fimizi, dosyalar\u0131 g\u00fcvenli bir \u015fekilde nas\u0131l kaydedip y\u00fckleyece\u011fimizi ve kullan\u0131c\u0131 deneyimini nas\u0131l iyile\u015ftirece\u011fimizi ke\u015ffedece\u011fiz. Retro programlaman\u0131n zorluklar\u0131na meydan okurken, yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlerle dijital bir metin sanat\u00e7\u0131s\u0131 olmaya haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)\" \/>\n<meta property=\"og:description\" content=\"ZX Sinclair BASIC kullanarak kendi kelime i\u015flemcinizi geli\u015ftirme ser\u00fcvenimizin \u00fc\u00e7\u00fcnc\u00fc ve son b\u00f6l\u00fcm\u00fcne ho\u015f geldiniz. Bu b\u00f6l\u00fcmde, s\u0131n\u0131rl\u0131 bellek ve i\u015flem g\u00fcc\u00fcyle nas\u0131l daha geli\u015fmi\u015f bir metin edit\u00f6r\u00fc olu\u015fturabilece\u011fimizi, dosyalar\u0131 g\u00fcvenli bir \u015fekilde nas\u0131l kaydedip y\u00fckleyece\u011fimizi ve kullan\u0131c\u0131 deneyimini nas\u0131l iyile\u015ftirece\u011fimizi ke\u015ffedece\u011fiz. Retro programlaman\u0131n zorluklar\u0131na meydan okurken, yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlerle dijital bir metin sanat\u00e7\u0131s\u0131 olmaya haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-29T11:31:18+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)\",\"datePublished\":\"2025-09-29T11:31:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/\"},\"wordCount\":3136,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AI\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/\",\"name\":\"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-29T11:31:18+00:00\",\"description\":\"ZX Sinclair BASIC kullanarak kendi kelime i\u015flemcinizi geli\u015ftirme ser\u00fcvenimizin \u00fc\u00e7\u00fcnc\u00fc ve son b\u00f6l\u00fcm\u00fcne ho\u015f geldiniz. Bu b\u00f6l\u00fcmde, s\u0131n\u0131rl\u0131 bellek ve i\u015flem g\u00fcc\u00fcyle nas\u0131l daha geli\u015fmi\u015f bir metin edit\u00f6r\u00fc olu\u015fturabilece\u011fimizi, dosyalar\u0131 g\u00fcvenli bir \u015fekilde nas\u0131l kaydedip y\u00fckleyece\u011fimizi ve kullan\u0131c\u0131 deneyimini nas\u0131l iyile\u015ftirece\u011fimizi ke\u015ffedece\u011fiz. Retro programlaman\u0131n zorluklar\u0131na meydan okurken, yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlerle dijital bir metin sanat\u00e7\u0131s\u0131 olmaya haz\u0131r m\u0131s\u0131n\u0131z?\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)","description":"ZX Sinclair BASIC kullanarak kendi kelime i\u015flemcinizi geli\u015ftirme ser\u00fcvenimizin \u00fc\u00e7\u00fcnc\u00fc ve son b\u00f6l\u00fcm\u00fcne ho\u015f geldiniz. Bu b\u00f6l\u00fcmde, s\u0131n\u0131rl\u0131 bellek ve i\u015flem g\u00fcc\u00fcyle nas\u0131l daha geli\u015fmi\u015f bir metin edit\u00f6r\u00fc olu\u015fturabilece\u011fimizi, dosyalar\u0131 g\u00fcvenli bir \u015fekilde nas\u0131l kaydedip y\u00fckleyece\u011fimizi ve kullan\u0131c\u0131 deneyimini nas\u0131l iyile\u015ftirece\u011fimizi ke\u015ffedece\u011fiz. Retro programlaman\u0131n zorluklar\u0131na meydan okurken, yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlerle dijital bir metin sanat\u00e7\u0131s\u0131 olmaya haz\u0131r m\u0131s\u0131n\u0131z?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/","og_locale":"tr_TR","og_type":"article","og_title":"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)","og_description":"ZX Sinclair BASIC kullanarak kendi kelime i\u015flemcinizi geli\u015ftirme ser\u00fcvenimizin \u00fc\u00e7\u00fcnc\u00fc ve son b\u00f6l\u00fcm\u00fcne ho\u015f geldiniz. Bu b\u00f6l\u00fcmde, s\u0131n\u0131rl\u0131 bellek ve i\u015flem g\u00fcc\u00fcyle nas\u0131l daha geli\u015fmi\u015f bir metin edit\u00f6r\u00fc olu\u015fturabilece\u011fimizi, dosyalar\u0131 g\u00fcvenli bir \u015fekilde nas\u0131l kaydedip y\u00fckleyece\u011fimizi ve kullan\u0131c\u0131 deneyimini nas\u0131l iyile\u015ftirece\u011fimizi ke\u015ffedece\u011fiz. Retro programlaman\u0131n zorluklar\u0131na meydan okurken, yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlerle dijital bir metin sanat\u00e7\u0131s\u0131 olmaya haz\u0131r m\u0131s\u0131n\u0131z?","og_url":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-29T11:31:18+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)","datePublished":"2025-09-29T11:31:18+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/"},"wordCount":3136,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AI"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/","url":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/","name":"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-29T11:31:18+00:00","description":"ZX Sinclair BASIC kullanarak kendi kelime i\u015flemcinizi geli\u015ftirme ser\u00fcvenimizin \u00fc\u00e7\u00fcnc\u00fc ve son b\u00f6l\u00fcm\u00fcne ho\u015f geldiniz. Bu b\u00f6l\u00fcmde, s\u0131n\u0131rl\u0131 bellek ve i\u015flem g\u00fcc\u00fcyle nas\u0131l daha geli\u015fmi\u015f bir metin edit\u00f6r\u00fc olu\u015fturabilece\u011fimizi, dosyalar\u0131 g\u00fcvenli bir \u015fekilde nas\u0131l kaydedip y\u00fckleyece\u011fimizi ve kullan\u0131c\u0131 deneyimini nas\u0131l iyile\u015ftirece\u011fimizi ke\u015ffedece\u011fiz. Retro programlaman\u0131n zorluklar\u0131na meydan okurken, yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlerle dijital bir metin sanat\u00e7\u0131s\u0131 olmaya haz\u0131r m\u0131s\u0131n\u0131z?","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/zx-sinclair-basic-ile-kendi-kelime-islemcinizi-gelistirin-bolum-iii\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ZX Sinclair BASIC ile Kendi Kelime \u0130\u015flemcinizi Geli\u015ftirin (B\u00f6l\u00fcm III)"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=30580"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30580\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}