Ha jól csalódom a múlt számban a változók használatát vezettem be - lusta vagyok utánanézni-, de mivel folytassam? 

Konstansok

C-ben kétféle konstans van. Szöveges és numerikus. A numerikus lehet lebegőpontos, vagy egész, a szöveges lehet egy karakter, vagy string. A C a numerikus konstansokat több számrendszerben is tudja kezelni. Ha 0-val kezdjük, akkor az adott konstans oktális, ha 0x-el, akkor hexadecimális, egyébként pedig decimális. Pl.: 

0711 Oktális

0xff hexadecimális

222 decimális

Konstansdeklaráció:

# define NULLA 0

A konstansneveket mindig nagybetűvel kell írni, és a sor végére nem véletlenül nem tettem pontosvesszőt, ugyanis nem kell.

Ez esetben ha a programban bárhova beírjuk, hogy NULLA, a fordító indításkor karakterről karakterre bemásolja az adott névhez rendelt értéket, tehát a 0-t, utána kezd fordítani. Ezért a konstansok a tárban nem foglalnak helyet.

Akkor nézzük a már jól ismert programunkat konstanssal:

#include <stdio.h>
#define SZOVEG "Ha ezt a sort el tudja olvasni, nincs szüksége szemüvegre \n"
int main(void)
{
printf(SZOVEG);
return(0);
}

C-ben egy konstansot megsemmisíteni is lehet: #undef konstansnév 

Egyébként meg csak abban a file-ban érvényes egy konstans ahol deklaráltuk.

Ilyen egyszerű. Sőt sajnos annyira, hogy, már nem is tudok többet rizsázni róla.

Aritmetikai operátorok

Az előző számban már végeztünk műveleteket a változókkal, de ennél azért bonyolultabb a kérdés.

A négy alapművelet: + - * /

% maradékképzés

++ növelés

-- csökkentés

E két utóbbi a változó előtt, és után is működik, mégsem ugyanaz.

b=a++; a értékét berakja b-be, majd növeli a-t 

b=++a; növeli a-t, majd a növelt értékét berakja b-be.

a++;

++a; Ugyanaz

Ciklusszervezés

A C 3 féle ciklusutasítást ismer, amiket két csoportra lehet osztani. Elöltesztelős : While,for. Hátultesztelős: do..while.

WHILE

While (feltétel) utasítás

A feltétel bármilyen C nyelvű feltétel lehet. Pl. : a<b - bonyolult, mi ? - Ahol egy utasítás fordulhat csak elő, ott C-ben mindig használhatunk { és } jelek között tetszőleges számú utasítást. Egy elöltesztelt ciklus így néz ki: While (feltétel)

{
utasítás1; 
utasítás2; 
utasítás3; 
}

A program kiértékeli a zárójelben lévő kifejezést, ha ez igaz (nullától különböző), akkor az utasítás lefut, és újból indul az egész ,ha hamis (0), akkor a ciklus végrehajtása befejeződik. Mivel a feltétel kiértékelése a ciklusmag végrehajtása előtt történik meg, lehet, hogy a ciklus egyszer sem fut le.

Nézzünk egy példát, számoljunk 10-től visszafelé:

#include <stdio.h>
void main(void)
{
int a=10;
while(a)
{
printf("a=%d\n",a);
a--;
}
}

FOR

for (utasítás1; feltétel; utasítás2) utasítás;

Ennek jelentése:

utasítás1;
For(feltétel)
{
utasítás;
utasítás2;
}

Tehát először végrehajtja az első utasítás, ez általában egy értékadás szokott lenni, de ha nincs rá szükségünk, nem írunk oda semmit a pontosvessző elé. A feltétel lesz a ciklus-feltétel, a második utasítás pedig a ciklus összes lefutásakor végrehajtódik, a harmadik után. 

Tökéletesen lehet helyettesíteni a while-lal is, csak így kényelmesebb. 

Pl.

#include <stdio.h>
void main(void)
{
int a=0;
for(a=10;a>0;a--) 
{
printf("a=%d\n",a);
}
}

DO-WHILE:

do utasítás(blokk) while(feltétel);

Az előző két utasítás lényegében egy kaptafára épül, egyiket meg lehet valósítani a másikkal. Ez azonban abban különbözik, hogy egyszer mindenképp lefut, mivel hátultesztelős. Végrehajtódik az utasítás, majd ha a feltétel igaz, a ciklus végrehajtása folytatódik, ellenkező esetben, pedig leáll.

Állítólag a do-while nem felel meg a strukturált programozás alapelveinek, ezért ne használjuk. Szerintem nyugodtan használhatjuk, annál is inkább, mivel vannak feladatok, amiket nélküle csak körülményesen lehet megoldani. pl. várakozunk:

i=0;
do
{
i++
} while (i)

Na asszem ennyi mára. (Folytatjuk ...)

Írjatok (eMail-eljetek) !