Milyen vezérlési szerkezeteket ismer? Mi a vezérlési szerkezet neve, szerkezeti ábrája és kódolása C-ben a szerkezeti ábra jelöléseit használva? Szekvenciális vezérlés +-----+ | P | +--+--+ | +----------------+--+--------------------+ | | | +---+--+ +---+--+ +---+--+ | P1 | | P2 | . . . | Pn | +------+ +------+ +------+ C-ben ---------- { P1; P2; ... Pn; } Szelekciós vezérlések Egyszerű szelekciós vezérlés egyébként ággal +-------+ | F | |---+---| | i | n | +-+-+-+-+ | | +------+ +------+ | | +--+--+ +--+--+ | A | | B | +-----+ +-----+ C-ben ---------- if (F) { A; } else { B; } Többszörös szelekciós vezérlés egyébként ággal +---------+ | | |---------| | ? | +----+----+ | +------+-------+--------+------+ | | | | F1 F2 Fn | | | | | +-+--+ +-+--+ +-+--+ +-+-+ | A1 | | A2 | . . . | An | | B | +----+ +----+ +----+ +---+ C-ben ---------- if (F1) { A1; } else if (F2) { A2; ... } else if (Fn) { An; } else { B; } Esetkiválasztásos szelekciós vezérlés egyébként ággal +---------+ | K | |---------| | ? | +----+----+ | +------+-------+--------+------+ | | | | H1 H2 Hn | | | | | +-+--+ +-+--+ +-+--+ +-+-+ | A1 | | A2 | . . . | An | | B | +----+ +----+ +----+ +---+ C-ben ---------- switch (K) { case H1: A1; break; case H2: A2; break; ... case Hn: An; break; default: B; break; } Ha a H1 halmaz nem egyelemű, hanem elemei x1,x2, ... ,xm ekkor az első esetet így kódoljuk C-ben ---------- case x1: case x2: ... case xm: A1; break; Ismétléses vezérlések Kezdőfeltételes ismétléses vezérlés ----- ( F ) --+-- | +--+--+ | M | +-----+ C-ben ---------- while (F) { M; } Végfeltételes ismétléses vezérlés --- ( F --+ | +--+--+ | M | +-----+ C-ben ---------- do { M; } while (!F); Növekvő számlálásos ismétléses vezérlés ------------- ( i := a -> b ) ------+------ | +--+--+ | M | +-----+ C-ben ---------- for ( i = a; i <= b; i++ ) { M; } Csökkenő számlálásos ismétléses vezérlés ------------- ( i := a <- b ) ------+------ | +--+--+ | M | +-----+ C-ben ---------- for ( i = b; i >= a; i-- ) { M; } Hurok ismétléses vezérlés --------- ( ) ----+---- | +---------+--------+-------+----+-------------+--------+ | | | | | | +-+--+ ---+--- +-+--+ ---+--- ---+--- +--+-+ | M0 | \ F1 / | M1 | ... \ Fi / ... \ Fn / | Mn | +----+ \ / +----+ \ / \ / +----+ \/ \/ \/ +-+--+ +-+--+ +-+--+ | K1 | | Ki | | Kn | +----+ +----+ +----+ C-ben ---------- while (1) { M0; if (F1) { K1; break; } M1; ... if (Fn) { Kn; break; } Mn; } Diszkrét ismétléses vezérlés -------- ( x in H ) ---+---- | +-+-+ | M | +---+ A diszkrét ismétléses vezérlésnek nincs közvetlen megvalósítása C nyelvben. A megvalósítás elsősorban attól függ, hogy az ismétlési feltételben megadott halmazt hogyan reprezentáljuk. Az eljárásvezérlésről nem kell most írni.