En komputado kremento[1] estas ŝanĝado de valoro de variablo per adiciosubtraho 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 redakti

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 redakti

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 redakti

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 redakti

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 redakti

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

Postalkremento redakti

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 redakti

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

Ekzemplo redakti

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 redakti

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 redakti