Software TestingWeek 7Quiz 2 · PYQ

Zero Se Path Constraint

11 chhote steps. Har step pe ek hi nayi cheez. Beech-beech me khud try karo, phir jawab kholo.

STEP 01

Do raaste

Kuch bhi symbolic nahi. Sirf normal Python.

def f(x):
    if x > 10:
        print("BADA")
    else:
        print("CHHOTA")

Bas ek cheez notice karo: 50 aur 3 ne alag-alag lines chalayi.

"Kaun si lines chali" — usko path kehte hain. Matlab raasta jo program ne liya. Is program me do paths hain.

STEP 02

Infinite list ki jagah ek condition

BADA wale path pe kaun si values jaati hain? 11, 12, 13, ... — list khatam hi nahi hoti.

To infinite numbers likhne ki jagah, hum ek chhoti condition likh dete hain: x > 10. Ye ek line un saari values ko pakad leti hai.

Definition

Path constraint = "is raaste pe jaane ke liye input pe kya shart hai."

PathPath constraint
BADAx > 10
CHHOTAx <= 10

CHHOTA me x <= 10 isliye aaya kyunki else ka matlab hi hai "jab x > 10 sach nahi hai" — yaani ulta.

STEP 03

Ulta karte waqt boundary badal jaati hai

Ye poore chapter ki sabse badi galti hai. Ek baar pakka kar lo.

if me haielse me banega
<>=
><=
<=>
>=<
==!=
Trap

< ka ulta > nahi hota — >= hota hai. Kyunki "chhota nahi hai" ka matlab hai "ya to bada hai, ya barabar hai". Barabar wala case sab bhool jaate hain.

Tumhari baari
def g(y):
    if y < 5:  print("A")
    else:      print("B")

A aur B ke path constraints kya honge?

STEP 04

Do if = AND

def k(x):
    if x > 10:
        if x < 50:
            print("MILA")

To MILA ka constraint hai dono conditions ek saath:

x > 10   ∧   x < 50
Asli rule

Raaste me jitne if aaye, unki saari conditions ∧ se jod do. Bas wahi path constraint hai.

STEP 05

∧ matlab AND (OR ka lafda hai hi nahi)

SymbolBoloMatlabKab sach
ANDdono chahiyedono sach hone pe
ORkoi ek chal jaayegakisi ek ke sach hone pe
Good news

Path constraint me hamesha AND hi aata hai, kabhi OR nahi. Kyunki ek path pe chalte waqt tumhe har if ko ek-ek karke paar karna hota hai — sab. Question ke chaaron options dekh lo, sab me sirf ∧ hai.

Tumhari baari
if x > 0:
    if x > 5:
        if x > 20:
            print("TOP")
STEP 06

Har baar naya number, naya naam

def n():
    a = input()          # pehla number
    if a > 0:
        b = input()      # DUSRA number
        if b > 0:
            print("DONO POSITIVE")
a > 0   ∧   b > 0

a > 0 ∧ a > 0 nahi likha — kyunki dusra input() ek naya number laata hai. Jaise ATM do baar PIN maange: dono baar alag cheez, chahe sawaal same ho.

Agar program 10 baar input maange to a, b, c, d… naam khatam ho jaayenge. Isliye naam dete hain r₀, r₁, r₂, r₃…r matlab read, aur number matlab kaunsa-wala read. Ginti zero se shuru.

Kaunsa inputNaam
pehlar₀
dusrar₁
teesrar₂
chauthar₃
Tumhari baari

Teen baar input liya, teeno positive nikle. Constraint kya hoga?

STEP 07

Loop = wahi cheez, bas chhota likha

10 baar chahiye to 10 if likhne padenge — pagal ho jaoge. To loop likh dete hain:

while True:
    r = input()
    if r <= 0:
        break        # ← BAHAR nikal jao

Ye wahi kaam kar raha hai jo Step 06 wale nested if kar rahe the. Bas short me.

STEP 08

Par loop ko rukna bhi padta hai

Nested if wala program 3 input ke baad apne aap khatam ho gaya tha. Loop apne aap nahi rukta — usko rokna padta hai, break se.

r ki valuer <= 0Kya hua
positive (7)❌ jhoothbreak nahi chala → loop aage chalta hai
0 ya negative (−3)✅ sachbreak chal gaya → loop ruk gaya
Yaad rakho

Loop aage chalne ke liye r > 0 chahiye. Loop rukne ke liye r <= 0.

Maan lo loop 3 baar chala, phir ruk gaya:

ReadKya huaConstraint
r₀chalar₀ > 0
r₁chalar₁ > 0
r₂chalar₂ > 0
r₃ruk gayar₃ <= 0
r₀ > 0  ∧  r₁ > 0  ∧  r₂ > 0  ∧  r₃ <= 0
Ek line me poora concept

Jitni baar loop chala, utne > 0. Aur phir aakhir me ek <= 0 jisne loop ko roka.

Tumhari baari

Loop 2 baar chala phir ruk gaya. Constraint kya hoga?

STEP 09

Ginti zero se shuru hoti hai

Loop 2 baar chala, par aakhri wala r₂ hai — r₁ nahi. Teeno case saath rakh ke dekho:

Loop kitni baarConstraint> 0 waalejisne roka
1r₀>0 ∧ r₁≤0r₀r₁
2r₀>0 ∧ r₁>0 ∧ r₂≤0r₀, r₁r₂
3r₀>0 ∧ r₁>0 ∧ r₂>0 ∧ r₃≤0r₀, r₁, r₂r₃

Har baar aakhri number ek kam. Aur rokne waala hamesha usse agla.

STEP 10

Ab n daal do

Maan lo loop n baar chala — n matlab koi bhi number: 2, 5, 100, kuch bhi. Upar wale pattern se seedha:

> 0 waaler₀ se r₍ₙ₋₁₎ tak  →  i = 0 se n−1
rokne waalarₙ,  constraint rₙ ≤ 0
r₀ > 0  ∧  r₁ > 0  ∧  …  ∧  r₍ₙ₋₁₎ > 0   ∧   rₙ ≤ 0

Isko chhota likhne ke liye ek symbol use karte hain:

⋀ se daro mat

Iska matlab sirf itna hai: "i ko 0 se n−1 tak ghumao, har baar rᵢ > 0 likho, aur sabko AND se jod do."

Bilkul waise hi jaise 1+2+3+…+100 ki jagah Σ likhte hain. Nayi cheez kuch nahi — bas short form.

STEP 11

Ab wo exam wala question

// Add positive inputs until a zero or negative integer is read.
int sumUntilZero(int a) {
    int sum = a;
    while (true) {           // constant — ye branch hai hi nahi
        x = sym_input();      // har baar naya: r₀, r₁, r₂ …
        if (x <= 0) {         // ← ASLI branch
            break;
        }
        sum = sum + x;
    }
    return sum;
}

"Choose the appropriate path constraint (PC) for the while loop with a sequence of n true outcomes followed by a false."

Loop outcomeCode me kya huaConstraint
true — aur chalox <= 0 jhooth → break skiprᵢ > 0
false — nikal jaox <= 0 sach → breakrₙ ≤ 0
Answer
( ⋀i ∈ [0, n−1]  rᵢ > 0 )  ∧  ( rₙ ≤ 0 )
Option A
EXTRA

Baaki options kyun galat hain

OptGalti
Ba ko index bana diya — par a to sum ki starting value hai, ginti nahi. Upar se ≥ 0: 0 to loop rok deta hai, chalata nahi.
C[0,n] matlab n+1 baar chala — ek zyada. Question ne n maanga tha.
DTeen galtiyan ek saath: ginti zyada, ≥ 0 galat, aur < 0 jo 0 ko miss kar deta hai — jabki 0 break karta hai.
Paper me sabse pehle ye check karo

1. Ginti 0 se shuru — n baar chala matlab index 0 se n−1.
2. Boundary: <= ka ulta > hai, >= nahi.
3. Jo variable kisi if me aaya hi nahi (jaise a), wo constraint me aa hi nahi sakta.