İçeriğe atla

İterasyon

İterasyon, tekerrür, tekrarlama, yineleme ve mükerrer icrâ, ardışık işlem anlamlarına gelen iterasyon (iteration), programlamada bir dizi işlemin döngüler kullanarak yazılmasıdır.

Bir çokgen iterasyonu. düzenli bir çokgenin köşelerine sırayla bağlama, daha küçük ters çevrilmiş pentagram (yıldız) üretir. İşlem tekrarı, iç içe çokgen ve yıldız serileri oluşturur.

Matematik

Matematikte, fonksiyon yineleme işlemini ifade eder. Örneğin, bir fonksiyonu yineleyerek uygulama, bir tekrardaki çıkışı sonrakinin girişi olarak kullanma gibi. Normalde basit bir fonksiyonun iterasyonu (tekrarı), karmaşık davranışlar ve zor problemler üretebilir. Collatz sanısı ve hokkabaz dizilerine bakınız.

İterasyonun matematikteki diğer kullanımı, yaklaşık sayısal çözümlerden kesin matematiksel problemler elde etmek için kullanılan tekrarlama yöntemleridir. Newton yöntemi tekrarlama yöntemine bir örnektir.

Bilgisayar

Bilgisayarda yineleme, tekrar eden kod bloklarının tekrar sayısını ifade etmek için kullanılır. Bu gibi kod bloklarına "yinelenmiş" ya da bilgisayar bilimcilerinin de zaman zaman kullandığı şekliyle "yineleme" denilir. Aşağıdaki sözde kod, bir yineleme örneğidir; for döngüsünün parantezleri arasındaki kod satırı üç kez "yinelenir":

 var i, a := 0        // önceki tekrarı başlatır
 for i from 1 to 3    // üç kez döndür
 {  
     a := a + i       // geçerli i değerini bir arttır
 }
 print a              // 6 sayısı görülür

Bu program fragmanında i değişkeninin değeri, 1, 2 ve 3 değerlerini alarak zamanla değişir. Bu değer değişimi—veya kararsız durum—tekrarın karakteristiğidir.

Diğer bir örnekte PHP dilinde bir dizimiz olduğunu varsayarak aşağıdaki kullanımı gerçekleştirmek mümkündür.

 $Dizi = array('1. Değer. ', '2. Değer. ', '3. Değer.');

Yinelemesiz (İterasyonsuz)

 echo $Dizi[0];
 echo $Dizi[1];
 echo $Dizi[2];

yerine -->

Yinelemeli (İterasyonlu)

 for ($i = 0; $i < count($Dizi); $i++)
 {
   echo $Dizi[$i];
 }

Her iki kullanımda da alacağımız çıktısı aşağıdaki gibi olacaktır.

 1. Değer. 2. Değer. 3. Değer.

Bununla beraber Yineleme (iterasyon) sadece dizilere mahsus bir kullanım değildir. Mesela aşağıdaki JavaScript kodu ile yineleme için bir değişken oluşturup bunu belirlediğimiz sınır sayısına kadar artırmasını ve yazmasını sağlayabiliriz.

 <script type="text/javascript">
 var PUAN = Array(' ', '(4.79), ', '(3.99), ', '(2.63)');
 var SIRA = 1;
   do
   {
     document.write(SIRA + '. yarışmacının puanı: ' + PUAN[SIRA]);
     SIRA++;
   }
   while (SIRA <= 3)
 </script>

Bu kullanım sonrasında alacağımız çıktısı şu şekilde olacaktır.

 1. yarışmacının puanı: (4.79), 2. yarışmacının puanı: (3.99), 3. yarışmacının puanı: (2.63)

Görüldüğü gibi SIRA değişkeni bir dizi olmadığı halde yineleme aracılığıyla kendisine 1 eklenerek yazdırılmaktadır. Bununla beraber PUAN isimli dizinin değerlerini kendisine atanan sayı sırasına göre dizi içerisinden çekerek yazdırmaktadır.

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

En küçük kareler yöntemi, birbirine bağlı olarak değişen iki fiziksel büyüklük arasındaki matematiksel bağlantıyı, mümkün olduğunca gerçeğe uygun bir denklem olarak yazmak için kullanılan, standart bir regresyon yöntemidir. Bir başka deyişle bu yöntem, ölçüm sonucu elde edilmiş veri noktalarına "mümkün olduğu kadar yakın" geçecek bir fonksiyon eğrisi bulmaya yarar. Gauss-Markov Teoremi'ne göre en küçük kareler yöntemi, regresyon için optimal yöntemdir.

İstatistik bilimi için mod bir veri kümesi içinde en sık görülen değerdir. Tepedeğer olarak da adlandırılır. Bazı kullanım alanlarında, özellikle eğitim alanında, örnek veriler çok kere puan olarak anılmakta ve örnek mod değerine ise mod puanı adı verilmektedir.

<span class="mw-page-title-main">Sayısal analiz</span>

Sayısal analiz, diğer adıyla nümerik analiz veya sayısal çözümleme, matematiksel analiz problemlerinin yaklaşık çözümlerinde kullanılan algoritmaları inceler. Bu nedenle birçok mühendislik dalı ve doğa bilimlerinde önem arz eden sayısal analiz, bilimsel hesaplama bilimi olarak da kabul edilebilir. Bilgisayarın işlem kapasitesinin artması ile gündelik hayatta ortaya çıkan birçok sistemin matematiksel modellenmesi mümkün olmuş ve sayısal analiz algoritmaları burada ön plana çıkmıştır. 21. yüzyıldan itibaren bilimsel hesaplama yöntemleri mühendislik ve doğa bilimleri ile sınırlı kalmamış ve sosyal bilimler ile işletme gibi alanları da etkilemiştir. Sayısal analizin alt başlıklarına adi diferansiyel denklemlerin yaklaşık çözümleri ve özellikle veri biliminde önem taşıyan sayısal lineer cebir ile optimizasyon örnek gösterilebilir.

Döngüsel artıklık denetimi, çoğunlukla sayısal şebekelerde ve depolama cihazlarında kullanılan ve ham veride yapılan hatalı değişimleri algılayan, uygulaması kolay ve güvenliği güçlü bir hata bulma yöntemidir.

Döngü açma, programın çalışmasını hızlandıran döngü dönüştürme yöntemlerinden biridir. Bu yöntem yazılan programın kod satır sayısını artırmaktadır. Döngülerdeki dönüşüm manuel olarak programcı tarafından yapılabileceği gibi kodlar derleyiciler tarafından da düzenlenebilmektedir.

Programlama paradigmaları, programlama dillerini özelliklerine göre sınıflandırmanın bir yoludur. Diller birden fazla paradigma içinde sınıflandırılabilir.

expr çeşitli ifadeleri hesaplayan ve uygun değeri ekrana basan bir Unix komut satırı aracıdır.

<span class="mw-page-title-main">Kriptografik özet fonksiyonu</span>

Kriptografik özet fonksiyonu çeşitli güvenlik özelliklerini sağlayan bir özet fonksiyonudur. Veriyi belirli uzunlukta bir bit dizisine, (kriptografik) özet değerine, dönüştürür. Bu dönüşüm öyle olmalıdır ki verideki herhangi bir değişiklik özet değerini değiştirmelidir. Özetlenecek veri mesaj, özet değeri ise mesaj özeti veya kısaca özet olarak da adlandırılır.

Pawn açık kaynaklı bir programlama dilidir. Hollanda'da kurulan CompuPhase şirketi tarafından geliştirilmiştir. İlk olarak 1998 yılında yayınlanmıştır. 3. versiyonu yayınlanana kadar Small dili olarak bilinmiştir,3.versiyonu 2005 yılının Mart ayında çıkmıştır.

<span class="mw-page-title-main">OpenMP</span>

OpenMP; Solaris, IBM AIX, HP-UX, GNU/Linux, MAC OS X ve Windows işletim sistemleri üzerinde çoğu işlemci mimarisi üzerinde Fortran, C++, C programlama dillerinde çoklu platform paylaşımlı bellek çoklu işlemeyi destekleyen bir uygulama geliştirme arayüzüdür, yani bir API'dir. OpenMP derleyici yönergelerinin kütüphane rutinlerini ve ortam değişkenlerinin çalışma zamanı davranışını etkileyen bir kümesini içerir.

<span class="mw-page-title-main">For döngüsü</span> programa dillerinde yaygın kullanılan bir döngü

For döngüsü, programlama dillerinde temel olarak bir kod blokunu belirli bir sayıda ve üst üste çalıştırmak için kullanılan bir döngüdür. Döngü başlangıcında kullanılan değişkene döngü içinde müdahale edilerek tekrar sayısı değiştirilebilir. While döngüsüyle birlikte en çok kullanılan döngüdür.

Matematiksel modellerin çözümünde kullanılır. Model kısıtlarından en az birisinin = veya => olması gerekir. Bu çözüm yönteminin bir türevide iki aşamalı yöntemdir. Büyük M yönteminde amaç satırındaki katsayılar M katsayısını alırlar. M katsayısı model içerisindeki hiçbir katsayının ulaşamayacağı kadar büyük bir sayı kabul edilmektedir.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

<span class="mw-page-title-main">Ayrıştırıcı (yazılım)</span>

Ayrıştırıcı, girdi verilerini alır ve girdinin yapısal bir temsilini vererek, süreçte doğru sözdizimini kontrol eden bir veri yapısı oluşturan bir yazılım bileşenidir. Ayrıştırma öncesinde veya sonrasında başka adımlar izlenebilir veya bunlar tek bir adımda birleştirilebilir. Ayrıştırıcı, genelde girilen karakter dizisinden belirteçler oluşturan ayrı bir sözcük tabanlı analiz motorunu takip eder. Ayrıştırıcılar elle programlanabilir veya bir ayrıştırıcı üreteci tarafından otomatik olarak veya yarı otomatik olarak oluşturulabilir. Ayrıştırma, biçimlendirilmiş çıktı üretimlerini tek bir şablonda tamamlama görevi görür. Bunlar, farklı etki alanlarına uygulanabilir, ancak bir derleyicinin girdi ve çıktı aşamaları gibi genellikle bir arada sunulur.

Bilgisayar bilimi, matematik, ekonomi ve biyoinformatikte dinamik programlama karmaşık bir problemi tekrarlanan alt problemlere bölerek, her bir alt problemi yalnız bir kere çözüp daha sonra bu çözümü kaydederek karmaşık problemin çözümünde kullanma yöntemidir. Bir alt problem çözüldükten sonra tekrar çözülmesi gerektiğinde daha önce kaydedilen çözüm kullanılarak zaman kazanılır, ancak alt problemlerin kaydedileceği daha fazla alana gereksinim duyulur. Yani dinamik programlama algoritmaları alandan ödün verilerek zamandan kazanılmasını sağlar. Dinamik programlama algoritmaları optimizasyon problemlerinin çözümünde yaygın olarak kullanılır.

Kriptografide, scrypt, Colin Percival tarafından Tarsnap çevrimiçi yedekleme hizmeti için oluşturulan bir parola tabanlı anahtar türetme fonksiyonudur. Bu algoritma, büyük miktarda bellek gerektirerek büyük ölçekli özel donanım saldırılarını gerçekleştirmeyi pahalı hale getirmek için özel olarak tasarlanmıştır. 2016 yılında, scrypt algoritması IETF tarafından RFC 7914 olarak yayınlandı. Scrypt algoritmasının, ArtForz kullanıcı adına sahip ve gerçek adı bilinmeyen bir programcı tarafından implemente edilmiş, basitleştirilmiş bir sürümü, önce Tenebrix'te ve ardından Fairbrix ve Litecoin olmak üzere bir dizi kripto para birimi tarafından iş kanıtı şeması olarak kullanıldı.

Kriptografi alanında, PBKDF1 ve PBKDF2 olarak bilinen anahtar türetme fonksiyonları şifrelenmiş anahtarları kaba kuvvet saldırılarına karşı güçlendirmek amacıyla geliştirilmiştir.

Kriptografide, biçim korumalı şifreleme, çıktı ve giriş aynı formatta olacak şekilde şifreleme anlamına gelir. "Biçim" in anlamı değişir. Biçimin anlamı için tipik olarak sadece sonlu alanlar tartışılır, örneğin: