Kremento

En komputado krementoKomputada Leksikono, NPIV. estas ŝanĝado de valoro de variablo per adicio aŭ subtraho de konstanta grando (plej ofte de 1).

Krementojn disponigas multaj komputilaj procesoroj (ekz‑e PDP-11, x86) kaj altnivelaj programlingvoj. Ili estas speciale oportunaj por programi nombrilajn iteraciojn.

 Alkremento 
Alkremento estas la kremento adicia: i := i + k. En Modula-2 ĝi havas la formon de antaŭdifinita proceduro INC(i) (krementas la argumenton je +1) kaj INC(i, k) (krementas la argumenton je k).

 Dekremento 
Dekremento estas la kremento subtraha: i := i − k. En Modula-2 ĝi havas la formon de antaŭdifinita proceduro DEC(i) (dekrementas la argumenton je 1) kaj DEC(i, k) (dekrementas la argumenton je k).

 Krementaj operacioj en C 
En C la krementoj estas esprimoj liverantaj valoron, kaj sekve ili estas uzeblaj ene de pli grandaj esprimoj. Krementon kiu liveras la valoron de sia argumento antaŭ la kremento oni nomas antaŭkremento; Krementon kiu liveras la krementitan valoron oni nomas postkremento.

 Antaŭalkremento 
Antaŭalkremento estas kremento kiu estas antaŭkremento kaj kaj alkremento. Oni signas per antaŭmetita ++, ekz‑e A[++i]. Oni povas diri, ke
 y = ++x; signifas x = x + 1 ; y = x;

 Antaŭdekremento 
Antaŭalkremento estas kremento kiu estas antaŭkremento kaj kaj dekremento. Oni signas per antaŭmetita --, ekz‑e A[--i].

 Postalkremento 
Postalkremento estas kremento kiu estas postkremento kaj kaj alkremento. Oni signas per postmetita ++, ekz‑e A[i++]. Oni povas diri, ke
 y = x++; signifas y = x ; x = x + 1;

 Postdekremento 
Postalkremento estas kremento kiu estas postkremento kaj kaj dekremento. Oni signas per postmetita --, ekz‑e A[i--].

 Ekzemplo 
int i = 8, j = 4, A[11];
A[i++] = j++; // A[8] = 4, i == 9, j == 5
A[++i] = ++j; // A[10] = 6, i == 10, j == 6
A[i--] = j--; // A[10] = 6, i == 9, j == 5
A[--i] = --j; // A[8] = 4, i == 8, j == 4

 Kritiko 
La krementaj operacioj en C rekomputas siajn argumentojn, tio kontraŭas la principojn de funkcia programado kaj malhelpas komprenon. Ekz‑e en A[i++]=i ktp.
Tial N. Wirth insistis, ke krementoj havu la formon de apartaj ordonoj (procedurvokoj), kiel li faris en sia Modula-2.

 Notoj 

Kategorio:Operacioj en programoj
Kategorio:Unulokaj operacioj