Ang Iteration ay kilos ng pag- uulit ng isang proseso, upang makabuo ng isang pagkakasunud-sunod ng mga resulta (posibleng walang limitasyong), na may layuning lumapit sa isang nais na layunin o resulta. Sa konteksto ng matematika o agham ng kompyuter, ang pag-ulit (kasama ang kaugnay na pamamaraan ng recursion) ay isang pamantayan na pagbuo ng mga algorithm.
Sa computer programming, ang pag-ulit, na tinatawag din na termino ng loop na Ingles, ay isang istraktura ng kontrol sa loob ng isang algorithm na malulutas ang isang naibigay na problema, na inuutos sa computer na paulit-ulit na magsagawa ng isang pagkakasunud-sunod ng mga tagubilin, sa pangkalahatan hanggang sa paglitaw tiyak na mga lohikal na kundisyon.
Mahalagang tandaan na ang pagkakasunud-sunod at pagpili ay bumubuo ng isa sa tatlong pangunahing istraktura para sa paglutas ng algorithm ng isang tukoy na problema ayon sa teorama ng Böhm-Jacopini. Mayroong maraming mga paraan ng pag-ulit; ang pinakakilala ay ang MENTRE, ang REPEAT, at ang PER. Masasabing ang pag-ulit ay ang malakas na link ng programa na nagbibigay-daan sa iyo upang i-automate ang pagganap ng isang proseso, na hindi sapat upang maisagawa lamang ang isang pagkakasunud-sunod ng mga tagubilin.
Ang tinaguriang "infinite loop" ay isang kaso ng pag-ulit dahil sa isang error sa programa na humihinto sa pagpapatupad ng programa, habang sa ilang mga diskarte sa pagprograma, lalo na sa mga microcontroller, ito ay sinasadyang ginagamit upang umulit nang walang katapusan sa loob ng programa.
Sa pagpapaunlad ng software, ang umuulit ay ginagamit upang ilarawan ang isang heuristic na proseso ng pagpaplano at pag-unlad kung saan ang isang aplikasyon ay binuo sa maliliit na seksyon na tinatawag na mga pag-ulit. Ang bawat pag-ulit ay sinusuri at pinupuna ng pangkat ng software at mga potensyal na end user; Ang mga pananaw na nakuha mula sa pagpuna sa isang pag-ulit ay ginagamit upang matukoy ang susunod na hakbang sa pag-unlad. Ang mga modelo ng data o mga diagram ng pagkakasunud-sunod, na madalas na ginagamit upang magbalak ng mga pag-ulit, subaybayan kung ano ang sinubukan, naaprubahan, o itinapon at sa huli ay nagsisilbing isang uri ng blueprint para sa pangwakas na produkto.
Ang hamon sa umuulit na pag-unlad ay nakasisiguro na ang lahat ng mga pag-ulit ay magkatugma. Tulad ng pag-apruba ng bawat bagong pag-ulit, maaaring gumamit ang mga developer ng isang diskarteng kilala bilang paatras na engineering, na isang sistematikong pagsusuri at pamamaraan ng pag-verify upang matiyak na ang bawat bagong pag-ulit ay tugma sa mga naunang na. Ang bentahe ng paggamit ng umuulit na pag-unlad ay ang end user na kasangkot sa proseso ng pag-unlad. Sa halip na maghintay hanggang ang aplikasyon ay isang pangwakas na produkto, kung hindi madaling magawa ang mga pagbabago, ang mga problema ay makikilala at malulutas sa bawat yugto ng pag-unlad. Ang kaunlaran ng iterative ay tinatawag na pabilog o ebolusyonaryong pag-unlad.