Kremento
En komputado kremento[1] 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
[redakti | redakti fonton]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 | redakti fonton]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 | redakti fonton]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 | redakti fonton]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;
signifasx = x + 1 ; y = x;
Antaŭdekremento
[redakti | redakti fonton]Antaŭalkremento estas kremento kiu estas antaŭkremento kaj kaj dekremento. Oni signas per antaŭmetita --
, ekz‑e A[--i]
.
Postalkremento
[redakti | redakti fonton]Postalkremento estas kremento kiu estas postkremento kaj kaj alkremento. Oni signas per postmetita ++
, ekz‑e A[i++]
. Oni povas diri, ke
y = x++;
signifasy = x ; x = x + 1;
Postdekremento
[redakti | redakti fonton]Postalkremento estas kremento kiu estas postkremento kaj kaj dekremento. Oni signas per postmetita --
, ekz‑e A[i--]
.
Ekzemplo
[redakti | redakti fonton]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 | redakti fonton]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.