Considere la siguiente gramática:
stmt -> if expr then else expr; stmt | ε expr -> term relop term | term term -> id | number id -> a | b | c number -> [0-9]
donde relop es una operación relacional (p. ej., < >, ….), ε se refiere a la declaración vacía, y if
, then , else son terminales.
Considere un programa P que sigue la gramática anterior que contiene diez terminales if. El número
de rutas de flujos de control en P es ____________.
Por ejemplo, el programa
if e1 then e2 else e3
tiene 2 rutas de flujo de control, e 1 -> e 2 y e 1 -> e 3
(A) 20
(B) 1024
(C) 2048
(D) 10
Respuesta: (B)
Explicación: Número de rutas de flujo de control para 10 si terminales
- si
después más ; sentencia - si
después más ; si después más ; sentencia - …………..
10 veces.
Observe que hay un punto y coma después de cada estructura if.
Ya que, cada estructura if tiene 2 flujos de control.
Por lo tanto, la 1.ª terminal tiene 2 flujos de control,
la 2.ª terminal tiene 2 flujos de control,
la 3.ª terminal tiene 2 flujos de control,
……….. La
9.ª terminal tiene 2 flujos de control
y la 10.ª terminal tiene 2 flujos de control.
Usando la ley de conteo de la multiplicación, obtenemos
= 2*2*2*2*2……10 veces = 2^10 = 1024 número de rutas de flujo de control para 10 terminales if.
1024 es la respuesta correcta.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA