From 573597f0b90bfc05551a0930f72e280caaa32046 Mon Sep 17 00:00:00 2001 From: Kevin Mutua - ENE212-0078/2023 Date: Fri, 3 Apr 2026 11:46:45 +0300 Subject: [PATCH] lab 3 code listings --- lab3_task1.php | 123 +++++++++++++++++++++++++++++++++++++++++++++++++ lab3_task2.php | 78 +++++++++++++++++++++++++++++++ lab3_task3.php | 84 +++++++++++++++++++++++++++++++++ lab3_task4.php | 63 +++++++++++++++++++++++++ 4 files changed, 348 insertions(+) create mode 100644 lab3_task1.php create mode 100644 lab3_task2.php create mode 100644 lab3_task3.php create mode 100644 lab3_task4.php diff --git a/lab3_task1.php b/lab3_task1.php new file mode 100644 index 0000000..b207d70 --- /dev/null +++ b/lab3_task1.php @@ -0,0 +1,123 @@ += 36.1 && $temperature <= 37.5) { + echo "Normal"; +} + +// 2. Check for Fever +if ($temperature > 37.5) { + echo "Fever"; +} + +// 3. Check for Hypothermia Warning +if ($temperature < 36.1) { + echo "Hypothermia Warning"; +} + + +// ══════════════════════════════════════════════════════════════ +// EXERCISE B — Even or Odd +// ══════════════════════════════════════════════════════════════ + +$number = 47; + +// 1. Even or Odd Check +if ($number % 2 == 0) { + echo "$number is EVEN
"; +} else { + echo "$number is ODD
"; +} + +// 2. Divisibility by 3 +if ($number % 3 == 0) { + echo "$number is divisible by 3
"; +}else { + echo "$number is not divisible by 3
"; +} + +// 3. Divisibility by 5 +if ($number % 5 == 0) { + echo "$number is divisible by 5
"; +}else { + echo "$number is not divisible by 5
"; +} + +// 4. Divisibility by both +if ($number % 3 == 0 && $number % 5 == 0) { + echo "$number is divisible by both 3 and 5
"; +}else { + echo "$number is not divisible by both
"; +} + + + +// ========================================== +// Exercise C — Comparison Chain +// ========================================== +$x = 10; // Integer +$y = "10"; // String +$z = 10.0; // Float (Decimal) + +echo "

Exercise C Results:

"; +echo "
"; // 
 makes var_dump output easier to read in a browser
+
+var_dump($x == $y);  // A
+var_dump($x === $y); // B
+var_dump($x == $z);  // C
+var_dump($x === $z); // D
+var_dump($y === $z); // E
+var_dump($x <=> $y); // F
+
+echo "
"; + + +// ========================================== +// Exercise D — Null & Default Values +// ========================================== +echo "

Exercise D Results:

"; + +// Part 1: Basic Null Coalescing +$username = null; +$display = $username ?? "Guest"; +echo "Welcome, $display
"; + +// Part 2: Chained Null Coalescing +$config_val = null; +$env_val = null; +$default = "system_default"; +$result = $config_val ?? $env_val ?? $default; +echo "Config: $result
"; + +// Part 3: My Custom Chained Example +// This checks for a user-set theme, then a session theme, then defaults to 'Light' +$user_theme = null; +$session_theme = "Dark Mode"; +$fallback_theme = "Light Mode"; + +$final_theme = $user_theme ?? $session_theme ?? $fallback_theme; + +echo "Selected Theme: $final_theme
"; + +?> + diff --git a/lab3_task2.php b/lab3_task2.php new file mode 100644 index 0000000..bd8471d --- /dev/null +++ b/lab3_task2.php @@ -0,0 +1,78 @@ + 0) $cats_attended++; +if ($cat2 > 0) $cats_attended++; +if ($cat3 > 0) $cats_attended++; +if ($cat4 > 0) $cats_attended++; + +$total = $cat1 + $cat2 + $cat3 + $cat4 + $exam; +$output_message = ""; + +// 2. Eligibility Rule (Nested IF) +if ($cats_attended >= 3 && $exam >= 20) { + + // 3. Grading Rules (if-elseif-else, highest first) + if ($total >= 70) { + $grade = "A"; + $desc = "Distinction"; + } elseif ($total >= 65) { + $grade = "B+"; + $desc = "Credit Upper"; + } elseif ($total >= 60) { + $grade = "B"; + $desc = "Credit Lower"; + } elseif ($total >= 55) { + $grade = "C+"; + $desc = "Pass Upper"; + } elseif ($total >= 50) { + $grade = "C"; + $desc = "Pass Lower"; + } elseif ($total >= 40) { + $grade = "D"; + $desc = "Marginal Pass"; + } else { + $grade = "E"; + $desc = "Fail"; + } + + // 4. Supplementary Rule (Ternary) + $supp_msg = ($grade == "D") ? "Eligible for Supplementary Exam" : "Not eligible for supplementary"; + + $output_message = "Total Score: $total
Grade: $grade ($desc)
Status: $supp_msg"; + +} else { + // Failure to meet conditions + $output_message = "DISQUALIFIED — Exam conditions not met
"; + $output_message .= "Reason: Attended $cats_attended CATs and Exam score was $exam."; +} + +// 5. Final Output (SESE Principle) +echo "

Student Result Card

"; +echo $output_message; +?> \ No newline at end of file diff --git a/lab3_task3.php b/lab3_task3.php new file mode 100644 index 0000000..3feb5ab --- /dev/null +++ b/lab3_task3.php @@ -0,0 +1,84 @@ +Exercise A: Day Classifier"; + +switch ($day) { + case 1: + echo "Monday — Lecture day
"; + break; + case 2: + echo "Tuesday — Lecture day
"; + break; + case 3: + echo "Wednesday — Lecture day
"; + break; + case 4: + echo "Thursday — Lecture day
"; + break; + case 5: + echo "Friday — Lecture day
"; + break; + case 6: + case 7: + echo "Weekend
"; + break; + default: + echo "Invalid day
"; +} + +echo "
"; + +// ========================================== +// Exercise B — HTTP Status Code Explainer +// ========================================== +$status_code = 404; + +echo "

Exercise B: HTTP Explainer (Switch)

"; + +switch ($status_code) { + case 200: echo "200: OK"; break; + case 301: echo "301: Moved Permanently"; break; + case 400: echo "400: Bad Request"; break; + case 401: echo "401: Unauthorized"; break; + case 403: echo "403: Forbidden"; break; + case 404: echo "404: Not Found"; break; + case 500: echo "500: Internal Server Error"; break; + default: echo "Unknown Status Code"; break; +} + +echo "
"; + +// ========================================== +// Exercise C — PHP 8 match Rewrite +// ========================================== +echo "

Exercise C: HTTP Explainer (Match)

"; + +// match is an expression, so we can assign its result to a variable +$explanation = match ($status_code) { + 200 => "200: OK", + 301 => "301: Moved Permanently", + 400 => "400: Bad Request", + 401 => "401: Unauthorized", + 403 => "403: Forbidden", + 404 => "404: Not Found", + 500 => "500: Internal Server Error", + default => "Unknown Status Code", +}; + +echo $explanation; +?> \ No newline at end of file diff --git a/lab3_task4.php b/lab3_task4.php new file mode 100644 index 0000000..eab0ab0 --- /dev/null +++ b/lab3_task4.php @@ -0,0 +1,63 @@ += 2.0) { + + // 3. INNER CHECK 2 — Income + if ($annual_income < 100000) { + $loan_amount = "Full loan"; + } elseif ($annual_income < 250000) { + $loan_amount = "Partial 75%"; + } elseif ($annual_income < 500000) { + $loan_amount = "Partial 50%"; + } else { + $loan_amount = "Not eligible — Income above limit"; + } + + // 4. TERNARY — Renewal vs New (only if eligible for some loan) + // We check if the word "Not" is in the loan_amount string + if (strpos($loan_amount, "Not") === false) { + $app_type = ($previous_loan) ? "Renewal application" : "New application"; + $final_status = "$loan_amount | $app_type"; + } else { + $final_status = $loan_amount; + } + + } else { + $final_status = "Not eligible — GPA below minimum"; + } + +} else { + $final_status = "Not eligible — must be an active student"; +} + +// 5. Output (SESE Principle) +echo "

HELB Eligibility Result

"; +echo "Status: " . $final_status; +?> \ No newline at end of file