{"id":700,"date":"2026-06-26T04:32:52","date_gmt":"2026-06-26T04:32:52","guid":{"rendered":"https:\/\/paknoteshub.online\/?p=700"},"modified":"2026-06-26T04:33:46","modified_gmt":"2026-06-26T04:33:46","slug":"cpp","status":"publish","type":"post","link":"https:\/\/paknoteshub.online\/?p=700","title":{"rendered":"CPP"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"700\" class=\"elementor elementor-700\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a382e56 e-flex e-con-boxed e-con e-parent\" data-id=\"a382e56\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9f4f72b elementor-widget elementor-widget-html\" data-id=\"9f4f72b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"UTF-8\"\/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>C++ Complete Programming Course \u2013 University Level \u2013 Pak Notes Hub<\/title>\r\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap\" rel=\"stylesheet\"\/>\r\n  <style>\r\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\r\n    :root {\r\n      --green:#1a7a4a; --green-dark:#145f38; --green-light:#e8f5ee;\r\n      --teal:#17a589; --accent:#f0b127; --dark:#1c2833; --mid:#566573;\r\n      --light:#f4f6f7; --code-bg:#f0f4f8; --code-border:#2e86c1;\r\n      --note-bg:#fef9e7; --note-border:#f0b127; --white:#ffffff;\r\n      --radius:10px; --shadow:0 4px 24px rgba(26,122,74,.10);\r\n    }\r\n    html { scroll-behavior:smooth; }\r\n    body { font-family:'Inter',sans-serif; background:#f2f6f3; color:var(--dark); line-height:1.7; font-size:15px; }\r\n\r\n    \/* NAV *\/\r\n    nav { position:sticky; top:0; z-index:100; background:var(--green-dark); padding:0 2rem; display:flex; align-items:center; justify-content:space-between; height:56px; box-shadow:0 2px 12px rgba(0,0,0,.25); }\r\n    .nav-brand { color:#fff; font-weight:700; font-size:1.05rem; }\r\n    .nav-brand span { color:#a9dfbf; }\r\n    .nav-links { display:flex; gap:1.2rem; }\r\n    .nav-links a { color:#d5f5e3; font-size:.85rem; font-weight:500; text-decoration:none; transition:color .2s; }\r\n    .nav-links a:hover { color:#fff; }\r\n\r\n    \/* HERO *\/\r\n    .hero { background:linear-gradient(135deg,var(--green) 0%,#145f38 60%,#0d4527 100%); padding:5rem 2rem 4rem; text-align:center; position:relative; overflow:hidden; }\r\n    .hero::before { content:'<\/>'; position:absolute; right:6%; top:50%; transform:translateY(-50%); font-size:9rem; font-family:'Fira Code',monospace; color:rgba(255,255,255,.06); font-weight:700; pointer-events:none; }\r\n    .hero-tag { display:inline-block; background:rgba(255,255,255,.12); color:#a9dfbf; font-size:.78rem; font-weight:600; letter-spacing:1.5px; text-transform:uppercase; padding:.35rem 1rem; border-radius:100px; margin-bottom:1.2rem; border:1px solid rgba(169,223,163,.3); }\r\n    .hero h1 { color:#fff; font-size:clamp(1.8rem,5vw,3rem); font-weight:700; line-height:1.15; margin-bottom:.8rem; }\r\n    .hero h1 span { color:#a9dfbf; }\r\n    .hero p { color:#d5f5e3; font-size:1.05rem; max-width:580px; margin:0 auto 2rem; }\r\n    .hero-pills { display:flex; flex-wrap:wrap; justify-content:center; gap:.7rem; }\r\n    .pill { background:rgba(255,255,255,.13); color:#e8f5ee; padding:.45rem 1.1rem; border-radius:100px; font-size:.82rem; font-weight:500; border:1px solid rgba(255,255,255,.18); }\r\n\r\n    \/* LAYOUT *\/\r\n    .page-wrap { max-width:940px; margin:0 auto; padding:2.5rem 1.5rem 4rem; display:grid; grid-template-columns:235px 1fr; gap:2.5rem; align-items:start; }\r\n\r\n    \/* SIDEBAR *\/\r\n    .sidebar { position:sticky; top:72px; background:var(--white); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; }\r\n    .sidebar-title { background:var(--green); color:#fff; font-size:.75rem; font-weight:700; letter-spacing:1.2px; text-transform:uppercase; padding:.85rem 1.1rem; }\r\n    .toc-list { list-style:none; padding:.5rem 0; max-height:calc(100vh - 130px); overflow-y:auto; }\r\n    .toc-list li a { display:flex; align-items:center; gap:.55rem; padding:.4rem 1.1rem; color:var(--mid); font-size:.81rem; font-weight:500; text-decoration:none; transition:all .18s; border-left:3px solid transparent; }\r\n    .toc-list li a:hover,.toc-list li a.active { color:var(--green); background:var(--green-light); border-left-color:var(--green); }\r\n    .toc-num { display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px; border-radius:4px; background:var(--green-light); color:var(--green); font-size:.7rem; font-weight:700; flex-shrink:0; }\r\n    .toc-list li a.active .toc-num { background:var(--green); color:#fff; }\r\n\r\n    \/* UNIT CARD *\/\r\n    .unit { background:var(--white); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:2.5rem; overflow:hidden; scroll-margin-top:72px; }\r\n    .unit-header { background:linear-gradient(100deg,var(--green) 0%,#1d9560 100%); padding:1.4rem 1.8rem; }\r\n    .unit-num-badge { background:rgba(255,255,255,.18); color:#a9dfbf; font-size:.72rem; font-weight:700; letter-spacing:1px; text-transform:uppercase; padding:.3rem .75rem; border-radius:100px; }\r\n    .unit-header h2 { color:#fff; font-size:1.25rem; font-weight:700; line-height:1.25; margin-top:.35rem; }\r\n    .unit-header p { color:#c8f0d8; font-size:.85rem; margin-top:.2rem; }\r\n    .unit-body { padding:1.8rem; }\r\n\r\n    \/* HEADINGS & TEXT *\/\r\n    .unit-body h3 { font-size:1rem; font-weight:700; color:var(--green); margin:1.6rem 0 .7rem; padding-left:.85rem; border-left:3px solid var(--green); line-height:1.3; }\r\n    .unit-body h3:first-child { margin-top:0; }\r\n    .unit-body p { color:var(--dark); margin-bottom:.7rem; }\r\n    .unit-body ul { list-style:none; padding:0; margin:.5rem 0 1rem; }\r\n    .unit-body ul li { padding:.3rem 0 .3rem 1.5rem; position:relative; color:var(--dark); font-size:.93rem; }\r\n    .unit-body ul li::before { content:'\u27a4'; position:absolute; left:0; color:var(--teal); font-size:.75rem; top:.45rem; }\r\n    .unit-body code, .icode { font-family:'Fira Code',monospace; background:#eef2f5; color:#1a5276; padding:.1rem .4rem; border-radius:4px; font-size:.85em; }\r\n\r\n    \/* CODE BLOCK *\/\r\n    .code-block { background:var(--code-bg); border-left:4px solid var(--code-border); border-radius:6px; padding:1.1rem 1.3rem; margin:.9rem 0 1rem; overflow-x:auto; }\r\n    .code-block pre { font-family:'Fira Code',monospace; font-size:.83rem; color:#1a3a54; line-height:1.75; white-space:pre; }\r\n    .cm { color:#7f8c8d; } .kw { color:#1a5276; font-weight:600; } .st { color:#1e8449; } .fn { color:#8e44ad; }\r\n\r\n    \/* TABLES *\/\r\n    .data-table { width:100%; border-collapse:collapse; margin:.9rem 0 1.2rem; font-size:.87rem; border-radius:8px; overflow:hidden; box-shadow:0 1px 6px rgba(0,0,0,.06); }\r\n    .data-table thead th { background:var(--green); color:#fff; padding:.7rem 1rem; text-align:left; font-weight:600; font-size:.82rem; }\r\n    .data-table tbody tr:nth-child(even) { background:var(--green-light); }\r\n    .data-table tbody tr:hover { background:#d4efdf; }\r\n    .data-table td { padding:.6rem 1rem; border-bottom:1px solid #dce8e0; vertical-align:top; }\r\n    .data-table td:first-child { font-weight:600; color:var(--green-dark); }\r\n\r\n    \/* BOXES *\/\r\n    .info-box { background:var(--note-bg); border:1px solid var(--note-border); border-radius:7px; padding:.85rem 1.1rem; margin:.9rem 0; font-size:.88rem; line-height:1.6; color:#7d6608; display:flex; align-items:flex-start; gap:.7rem; }\r\n    .practice { background:var(--green-light); border:1.5px dashed var(--green); border-radius:8px; padding:.85rem 1.1rem; margin-top:1.4rem; color:var(--green-dark); font-size:.88rem; font-weight:500; }\r\n\r\n    \/* FEATURE GRID *\/\r\n    .feature-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:.6rem; margin:.9rem 0 1.2rem; }\r\n    .feature-item { background:var(--green-light); border-radius:7px; padding:.6rem .9rem; font-size:.85rem; display:flex; align-items:center; gap:.5rem; color:var(--green-dark); border:1px solid #a2d9b5; font-weight:500; }\r\n\r\n    \/* CONCEPT GRID *\/\r\n    .concept-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:.8rem; margin:.9rem 0 1.2rem; }\r\n    .concept-card { background:var(--green-light); border:1px solid #a2d9b5; border-radius:8px; padding:.85rem 1rem; }\r\n    .concept-card .concept-name { font-weight:700; color:var(--green); font-size:.92rem; margin-bottom:.3rem; }\r\n    .concept-card .concept-rule { font-size:.8rem; color:var(--mid); }\r\n\r\n    \/* TOC CARD *\/\r\n    #toc-section { background:var(--white); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:2.5rem; overflow:hidden; }\r\n    .toc-card-header { background:linear-gradient(100deg,var(--green) 0%,#1d9560 100%); padding:1.2rem 1.8rem; }\r\n    .toc-card-header h2 { color:#fff; font-size:1.2rem; font-weight:700; }\r\n    .toc-card-body { padding:1.4rem 1.8rem; }\r\n    .toc-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:.6rem; }\r\n    .toc-item { background:var(--light); border-radius:7px; padding:.65rem 1rem; display:flex; align-items:center; gap:.75rem; text-decoration:none; color:var(--dark); font-size:.86rem; font-weight:500; border:1px solid #d5e5db; transition:all .18s; }\r\n    .toc-item:hover { background:var(--green-light); border-color:var(--green); color:var(--green); transform:translateY(-1px); }\r\n    .toc-badge { background:var(--green); color:#fff; font-size:.7rem; font-weight:700; min-width:22px; height:22px; border-radius:5px; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }\r\n\r\n    \/* CONGRATS *\/\r\n    .congrats { background:linear-gradient(135deg,var(--green) 0%,#145f38 100%); border-radius:var(--radius); padding:2.5rem 2rem; text-align:center; color:#fff; margin-bottom:2.5rem; box-shadow:var(--shadow); }\r\n    .congrats h2 { font-size:1.8rem; margin-bottom:.5rem; }\r\n    .congrats p { color:#d5f5e3; font-size:1rem; }\r\n\r\n    \/* PROGRESS + BACK TOP *\/\r\n    .progress-bar { position:fixed; top:0; left:0; height:3px; background:var(--accent); z-index:200; transition:width .1s linear; width:0%; }\r\n    #back-top { position:fixed; bottom:2rem; right:2rem; background:var(--green); color:#fff; width:42px; height:42px; border-radius:50%; border:none; cursor:pointer; font-size:1.1rem; box-shadow:0 4px 14px rgba(26,122,74,.35); display:flex; align-items:center; justify-content:center; opacity:0; transition:opacity .25s,transform .25s; pointer-events:none; }\r\n    #back-top.visible { opacity:1; pointer-events:auto; }\r\n    #back-top:hover { transform:translateY(-2px); }\r\n\r\n    @media(max-width:720px){ .page-wrap{grid-template-columns:1fr;} .sidebar{position:static;display:none;} .hero::before{display:none;} nav .nav-links{display:none;} }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"progress-bar\" id=\"progress\"><\/div>\r\n\r\n<nav>\r\n  <div class=\"nav-brand\">Pak <span>Notes Hub<\/span><\/div>\r\n  <div class=\"nav-links\">\r\n    <a href=\"#toc-section\">Course Outline<\/a>\r\n    <a href=\"#unit-1\">Start Learning<\/a>\r\n    <a href=\"#unit-5\">OOP<\/a>\r\n    <a href=\"#unit-10\">Advanced Topics<\/a>\r\n    <button id=\"searchBtn\" style=\"background:var(--accent);color:var(--dark);border:none;padding:.45rem 1rem;border-radius:5px;font-weight:600;cursor:pointer;font-size:.85rem;\">\ud83d\udd0d Search<\/button>\r\n  <\/div>\r\n<\/nav>\r\n\r\n<!-- SEARCH MODAL -->\r\n<div id=\"searchModal\" style=\"display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.7);z-index:1000;\">\r\n  <div style=\"display:flex;align-items:center;justify-content:center;height:100%;\">\r\n    <div style=\"background:white;border-radius:12px;width:90%;max-width:650px;max-height:85vh;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,.3);\">\r\n      <div style=\"background:var(--green);padding:1.2rem 1.5rem;display:flex;justify-content:space-between;align-items:center;\">\r\n        <h3 style=\"color:white;margin:0;font-size:1.1rem;\">\ud83d\udd0d Search Course Content<\/h3>\r\n        <button id=\"closeSearch\" style=\"background:none;border:none;color:white;font-size:1.8rem;cursor:pointer;line-height:1;padding:0;\">&times;<\/button>\r\n      <\/div>\r\n      <div style=\"padding:1.5rem;\">\r\n        <input type=\"text\" id=\"searchInput\" placeholder=\"Search topics, keywords...\" style=\"width:100%;padding:.8rem 1rem;border:2px solid var(--green-light);border-radius:8px;font-size:.95rem;outline:none;font-family:Inter,sans-serif;\" \/>\r\n        <div id=\"searchResults\" style=\"margin-top:1.2rem;max-height:400px;overflow-y:auto;\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<section class=\"hero\">\r\n  <div class=\"hero-tag\">\ud83d\udcbb University \/ College Level \u2014 BS Computer Science \/ Software Engineering<\/div>\r\n  <h1>C++ Programming<br\/><span>Complete Course<\/span><\/h1>\r\n  <p>Basics \u00b7 OOP \u00b7 STL \u00b7 Data Structures \u00b7 Advanced Concepts \u2014 Complete Guide in Easy English<\/p>\r\n  <div class=\"hero-pills\">\r\n    <span class=\"pill\">\ud83d\udcda 15 Units<\/span>\r\n    <span class=\"pill\">\ud83c\udf93 University Level<\/span>\r\n    <span class=\"pill\">\ud83d\udcbb Code Examples<\/span>\r\n    <span class=\"pill\">\ud83d\udcdd Practice Programs<\/span>\r\n    <span class=\"pill\">\ud83d\udd25 Real Projects<\/span>\r\n  <\/div>\r\n<\/section>\r\n\r\n<div class=\"page-wrap\">\r\n\r\n  <aside class=\"sidebar\">\r\n    <div class=\"sidebar-title\">\ud83d\udccb Course Contents<\/div>\r\n    <ul class=\"toc-list\" id=\"toc-nav\">\r\n      <li><a href=\"#toc-section\"><span class=\"toc-num\">\ud83d\udccb<\/span> Contents<\/a><\/li>\r\n      <li><a href=\"#unit-1\"><span class=\"toc-num\">1<\/span> Intro to C++<\/a><\/li>\r\n      <li><a href=\"#unit-2\"><span class=\"toc-num\">2<\/span> Data Types & Variables<\/a><\/li>\r\n      <li><a href=\"#unit-3\"><span class=\"toc-num\">3<\/span> Control Structures<\/a><\/li>\r\n      <li><a href=\"#unit-4\"><span class=\"toc-num\">4<\/span> Functions<\/a><\/li>\r\n      <li><a href=\"#unit-5\"><span class=\"toc-num\">5<\/span> OOP Basics<\/a><\/li>\r\n      <li><a href=\"#unit-6\"><span class=\"toc-num\">6<\/span> Inheritance<\/a><\/li>\r\n      <li><a href=\"#unit-7\"><span class=\"toc-num\">7<\/span> Polymorphism<\/a><\/li>\r\n      <li><a href=\"#unit-8\"><span class=\"toc-num\">8<\/span> Pointers & Memory<\/a><\/li>\r\n      <li><a href=\"#unit-9\"><span class=\"toc-num\">9<\/span> Arrays & Strings<\/a><\/li>\r\n      <li><a href=\"#unit-10\"><span class=\"toc-num\">10<\/span> File Handling<\/a><\/li>\r\n      <li><a href=\"#unit-11\"><span class=\"toc-num\">11<\/span> Exception Handling<\/a><\/li>\r\n      <li><a href=\"#unit-12\"><span class=\"toc-num\">12<\/span> Templates<\/a><\/li>\r\n      <li><a href=\"#unit-13\"><span class=\"toc-num\">13<\/span> STL Basics<\/a><\/li>\r\n      <li><a href=\"#unit-14\"><span class=\"toc-num\">14<\/span> Data Structures<\/a><\/li>\r\n      <li><a href=\"#unit-15\"><span class=\"toc-num\">15<\/span> Advanced Topics<\/a><\/li>\r\n    <\/ul>\r\n  <\/aside>\r\n\r\n  <main>\r\n\r\n    <div id=\"toc-section\">\r\n      <div class=\"toc-card-header\"><h2>\ud83d\udccb Table of Contents \u2014 15 Units<\/h2><\/div>\r\n      <div class=\"toc-card-body\">\r\n        <div class=\"toc-grid\">\r\n          <a class=\"toc-item\" href=\"#unit-1\"><span class=\"toc-badge\">1<\/span> Introduction to C++<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-2\"><span class=\"toc-badge\">2<\/span> Data Types & Variables<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-3\"><span class=\"toc-badge\">3<\/span> Control Structures<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-4\"><span class=\"toc-badge\">4<\/span> Functions<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-5\"><span class=\"toc-badge\">5<\/span> Object-Oriented Programming Basics<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-6\"><span class=\"toc-badge\">6<\/span> Inheritance & Access Specifiers<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-7\"><span class=\"toc-badge\">7<\/span> Polymorphism & Virtual Functions<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-8\"><span class=\"toc-badge\">8<\/span> Pointers & Dynamic Memory<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-9\"><span class=\"toc-badge\">9<\/span> Arrays & Strings<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-10\"><span class=\"toc-badge\">10<\/span> File Handling<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-11\"><span class=\"toc-badge\">11<\/span> Exception Handling<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-12\"><span class=\"toc-badge\">12<\/span> Templates & Generic Programming<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-13\"><span class=\"toc-badge\">13<\/span> Standard Template Library (STL)<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-14\"><span class=\"toc-badge\">14<\/span> Data Structures in C++<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-15\"><span class=\"toc-badge\">15<\/span> Advanced C++ Topics<\/a>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 1 -->\r\n    <div class=\"unit\" id=\"unit-1\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 1<\/span>\r\n        <h2>Introduction to C++ Programming<\/h2>\r\n        <p>Understanding C++ language, its history, features, and basic program structure<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is C++?<\/h3>\r\n        <p><strong>C++<\/strong> is a powerful, high-performance programming language that supports both procedural and object-oriented programming (OOP). It was developed by <strong>Bjarne Stroustrup<\/strong> at Bell Labs in <strong>1979<\/strong> as an extension of the C programming language.<\/p>\r\n\r\n        <div class=\"info-box\">\ud83d\udca1 <strong>C++ = C with Classes:<\/strong> Initially called \"C with Classes\", it was renamed C++ in 1983. The \"++\" operator in C means increment by 1, signifying C++ is one step ahead of C!<\/div>\r\n\r\n        <h3>History of C++<\/h3>\r\n        <ul>\r\n          <li><strong>1979:<\/strong> Bjarne Stroustrup starts work on \"C with Classes\"<\/li>\r\n          <li><strong>1983:<\/strong> Renamed to C++<\/li>\r\n          <li><strong>1985:<\/strong> First commercial release<\/li>\r\n          <li><strong>1998:<\/strong> C++98 (First ISO Standard)<\/li>\r\n          <li><strong>2011:<\/strong> C++11 (Major update with modern features)<\/li>\r\n          <li><strong>2014:<\/strong> C++14 (Bug fixes & improvements)<\/li>\r\n          <li><strong>2017:<\/strong> C++17 (New features)<\/li>\r\n          <li><strong>2020:<\/strong> C++20 (Latest standard with modules, concepts)<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Features of C++<\/h3>\r\n\r\n        <div class=\"feature-grid\">\r\n          <div class=\"feature-item\">\ud83d\ude80 Fast Performance<\/div>\r\n          <div class=\"feature-item\">\ud83c\udfaf Object-Oriented<\/div>\r\n          <div class=\"feature-item\">\ud83d\udcbb Platform Independent<\/div>\r\n          <div class=\"feature-item\">\ud83d\udd27 Low-Level Manipulation<\/div>\r\n          <div class=\"feature-item\">\ud83d\udcda Rich Library Support<\/div>\r\n          <div class=\"feature-item\">\ud83d\udd01 Reusability (OOP)<\/div>\r\n          <div class=\"feature-item\">\u2699\ufe0f Compiled Language<\/div>\r\n          <div class=\"feature-item\">\ud83c\udfa8 Supports Multiple Paradigms<\/div>\r\n        <\/div>\r\n\r\n        <p><strong>Detailed Features:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>Object-Oriented:<\/strong> Supports classes, objects, inheritance, polymorphism, encapsulation<\/li>\r\n          <li><strong>Fast & Efficient:<\/strong> Compiles to machine code, no runtime overhead<\/li>\r\n          <li><strong>Portable:<\/strong> Write once, compile anywhere (with recompilation)<\/li>\r\n          <li><strong>Rich Standard Library:<\/strong> STL (containers, algorithms, iterators)<\/li>\r\n          <li><strong>Pointers:<\/strong> Direct memory access & manipulation<\/li>\r\n          <li><strong>Multi-paradigm:<\/strong> Procedural, OOP, Generic, Functional programming<\/li>\r\n          <li><strong>Case-Sensitive:<\/strong> <code>Variable<\/code> and <code>variable<\/code> are different<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Advantages of C++<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Advantage<\/th><th>Explanation<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>High Performance<\/td><td>Compiles to native code, no interpreter overhead, close to hardware<\/td><\/tr>\r\n            <tr><td>Memory Control<\/td><td>Manual memory management with new\/delete, pointers for precise control<\/td><\/tr>\r\n            <tr><td>OOP Support<\/td><td>Code reusability, modularity, easier maintenance through classes & objects<\/td><\/tr>\r\n            <tr><td>Large Community<\/td><td>Extensive resources, libraries, frameworks, help available<\/td><\/tr>\r\n            <tr><td>Industry Standard<\/td><td>Used in game dev, system software, embedded systems, competitive programming<\/td><\/tr>\r\n            <tr><td>Backward Compatible<\/td><td>Most C code works in C++, easy migration<\/td><\/tr>\r\n            <tr><td>STL<\/td><td>Ready-made data structures & algorithms (vectors, maps, sort, search)<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Disadvantages of C++<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Disadvantage<\/th><th>Explanation<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Complex Syntax<\/td><td>Steeper learning curve than Python, Java due to pointers, templates, multiple paradigms<\/td><\/tr>\r\n            <tr><td>Manual Memory Management<\/td><td>Programmer must handle memory allocation\/deallocation, risk of memory leaks<\/td><\/tr>\r\n            <tr><td>No Garbage Collection<\/td><td>Unlike Java\/C#, no automatic memory cleanup (modern C++ has smart pointers)<\/td><\/tr>\r\n            <tr><td>Security Issues<\/td><td>Buffer overflows, pointer errors can cause crashes or security vulnerabilities<\/td><\/tr>\r\n            <tr><td>Longer Compilation<\/td><td>Large projects take time to compile compared to interpreted languages<\/td><\/tr>\r\n            <tr><td>Platform-Specific Code<\/td><td>Some features are OS-dependent, need recompilation for different platforms<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>C vs C++<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Feature<\/th><th>C<\/th><th>C++<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Paradigm<\/td><td>Procedural<\/td><td>Procedural + OOP + Generic<\/td><\/tr>\r\n            <tr><td>Focus<\/td><td>Functions<\/td><td>Classes & Objects<\/td><\/tr>\r\n            <tr><td>OOP Support<\/td><td>\u274c No<\/td><td>\u2705 Yes (classes, inheritance, polymorphism)<\/td><\/tr>\r\n            <tr><td>Data Security<\/td><td>Less (no encapsulation)<\/td><td>More (private\/public access control)<\/td><\/tr>\r\n            <tr><td>Overloading<\/td><td>\u274c No function overloading<\/td><td>\u2705 Function & operator overloading<\/td><\/tr>\r\n            <tr><td>References<\/td><td>\u274c No<\/td><td>\u2705 Yes<\/td><\/tr>\r\n            <tr><td>Exception Handling<\/td><td>\u274c No (use error codes)<\/td><td>\u2705 try-catch blocks<\/td><\/tr>\r\n            <tr><td>Templates<\/td><td>\u274c No<\/td><td>\u2705 Generic programming<\/td><\/tr>\r\n            <tr><td>STL<\/td><td>\u274c No<\/td><td>\u2705 Rich library (vector, map, etc.)<\/td><\/tr>\r\n            <tr><td>File Extension<\/td><td>.c<\/td><td>.cpp, .cc, .cxx<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n\r\n\r\n        <h3>Applications of C++<\/h3>\r\n        <ul>\r\n          <li><strong>Operating Systems:<\/strong> Windows, Linux, macOS (parts written in C++)<\/li>\r\n          <li><strong>Game Development:<\/strong> Unreal Engine, Unity (backend), AAA games<\/li>\r\n          <li><strong>Web Browsers:<\/strong> Chrome (V8 engine), Firefox, Safari<\/li>\r\n          <li><strong>Database Systems:<\/strong> MySQL, PostgreSQL, MongoDB<\/li>\r\n          <li><strong>Embedded Systems:<\/strong> IoT devices, automotive software, medical devices<\/li>\r\n          <li><strong>Graphics & Animation:<\/strong> Adobe products, Autodesk Maya, 3D rendering<\/li>\r\n          <li><strong>Compilers:<\/strong> GCC, Clang (written in C++)<\/li>\r\n          <li><strong>Scientific Computing:<\/strong> Simulation software, numerical analysis<\/li>\r\n          <li><strong>Financial Systems:<\/strong> Trading platforms, banking software (speed critical)<\/li>\r\n          <li><strong>Competitive Programming:<\/strong> Codeforces, LeetCode, ACM ICPC<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Basic C++ Program Structure<\/h3>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ My First C++ Program<\/span>\r\n<span class=\"kw\">#include<\/span> &lt;iostream&gt;     <span class=\"cm\">\/\/ Preprocessor directive (include header file)<\/span>\r\n<span class=\"kw\">using namespace<\/span> std;     <span class=\"cm\">\/\/ Use standard namespace<\/span>\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {                  <span class=\"cm\">\/\/ Main function - program entry point<\/span>\r\n    cout &lt;&lt; <span class=\"st\">\"Hello, World!\"<\/span>; <span class=\"cm\">\/\/ Output to console<\/span>\r\n    <span class=\"kw\">return<\/span> 0;                  <span class=\"cm\">\/\/ Return 0 indicates successful execution<\/span>\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Line-by-Line Explanation:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong><code>#include &lt;iostream&gt;<\/code>:<\/strong> Includes input\/output stream library for cin, cout<\/li>\r\n          <li><strong><code>using namespace std;<\/code>:<\/strong> Tells compiler to use standard namespace (so we can write <code>cout<\/code> instead of <code>std::cout<\/code>)<\/li>\r\n          <li><strong><code>int main()<\/code>:<\/strong> Main function where program execution begins. Returns integer (0 = success)<\/li>\r\n          <li><strong><code>cout &lt;&lt; \"Hello, World!\";<\/code>:<\/strong> Prints text to console. <code>&lt;&lt;<\/code> is insertion operator<\/li>\r\n          <li><strong><code>return 0;<\/code>:<\/strong> Returns 0 to operating system (indicates program ran successfully)<\/li>\r\n          <li><strong>Semicolon (;):<\/strong> Statement terminator in C++<\/li>\r\n          <li><strong>Curly Braces { }:<\/strong> Define code blocks (function body)<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Compilation Process<\/h3>\r\n        <p>C++ is a compiled language. Your code goes through multiple stages:<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">Compilation Process Flow<\/span>\r\n\r\nSource Code (.cpp)\r\n        \u2193\r\n<span class=\"kw\">Preprocessing<\/span> (#include, #define expanded)\r\n        \u2193\r\n<span class=\"kw\">Compilation<\/span> (converts to assembly code)\r\n        \u2193\r\n<span class=\"kw\">Assembly<\/span> (converts to machine code .obj\/.o)\r\n        \u2193\r\n<span class=\"kw\">Linking<\/span> (links with libraries, creates .exe)\r\n        \u2193\r\nExecutable File (.exe on Windows, no extension on Linux)\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Common Compilers:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>GCC (g++):<\/strong> GNU Compiler Collection (Linux, macOS, Windows via MinGW)<\/li>\r\n          <li><strong>Clang:<\/strong> LLVM-based compiler (faster compilation, better error messages)<\/li>\r\n          <li><strong>MSVC:<\/strong> Microsoft Visual C++ (Windows, Visual Studio)<\/li>\r\n          <li><strong>Intel C++:<\/strong> Optimized for Intel processors<\/li>\r\n        <\/ul>\r\n\r\n        <p><strong>Compiling from Command Line:<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Compile with g++<\/span>\r\ng++ program.cpp -o program.exe\r\n\r\n<span class=\"cm\">\/\/ Run the program<\/span>\r\n.\/program.exe     <span class=\"cm\">(Windows)<\/span>\r\n.\/program         <span class=\"cm\">(Linux\/Mac)<\/span>\r\n<\/pre><\/div>\r\n\r\n        <h3>Input & Output in C++<\/h3>\r\n\r\n        <p><strong>Output using cout:<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;iostream&gt;\r\n<span class=\"kw\">using namespace<\/span> std;\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    cout &lt;&lt; <span class=\"st\">\"Hello World\"<\/span>;          <span class=\"cm\">\/\/ Print text<\/span>\r\n    cout &lt;&lt; <span class=\"st\">\"Welcome to C++\"<\/span>;      <span class=\"cm\">\/\/ On same line<\/span>\r\n    cout &lt;&lt; endl;                      <span class=\"cm\">\/\/ New line<\/span>\r\n    \r\n    <span class=\"cm\">\/\/ Multiple outputs<\/span>\r\n    cout &lt;&lt; <span class=\"st\">\"Name: \"<\/span> &lt;&lt; <span class=\"st\">\"Ali\"<\/span> &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"Age: \"<\/span> &lt;&lt; 20 &lt;&lt; endl;\r\n    \r\n    <span class=\"cm\">\/\/ Using \\n for new line<\/span>\r\n    cout &lt;&lt; <span class=\"st\">\"Line 1\\n\"<\/span>;\r\n    cout &lt;&lt; <span class=\"st\">\"Line 2\\n\"<\/span>;\r\n    \r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Input using cin:<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;iostream&gt;\r\n<span class=\"kw\">using namespace<\/span> std;\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> age;\r\n    <span class=\"kw\">string<\/span> name;\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"Enter your name: \"<\/span>;\r\n    cin &gt;&gt; name;                      <span class=\"cm\">\/\/ Input operator<\/span>\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"Enter your age: \"<\/span>;\r\n    cin &gt;&gt; age;\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"Name: \"<\/span> &lt;&lt; name &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"Age: \"<\/span> &lt;&lt; age &lt;&lt; endl;\r\n    \r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>Comments in C++<\/h3>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Single-line comment (use \/\/ for one line)<\/span>\r\n\r\n<span class=\"cm\">\/*\r\n   Multi-line comment\r\n   Use \/* ... *\/ for multiple lines\r\n   Everything between \/* and *\/ is ignored by compiler\r\n*\/<\/span>\r\n\r\n<span class=\"kw\">int<\/span> x = 10;  <span class=\"cm\">\/\/ You can add comments after code too<\/span>\r\n\r\n<span class=\"cm\">\/\/ Comments are important for:<\/span>\r\n<span class=\"cm\">\/\/ 1. Code documentation<\/span>\r\n<span class=\"cm\">\/\/ 2. Explaining complex logic<\/span>\r\n<span class=\"cm\">\/\/ 3. Temporarily disabling code during testing<\/span>\r\n<\/pre><\/div>\r\n\r\n        <h3>C++ IDEs & Text Editors<\/h3>\r\n\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Tool<\/th><th>Type<\/th><th>Platform<\/th><th>Best For<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Visual Studio<\/td><td>IDE<\/td><td>Windows<\/td><td>Professional development, debugging<\/td><\/tr>\r\n            <tr><td>VS Code<\/td><td>Editor<\/td><td>All<\/td><td>Lightweight, extensions, modern UI<\/td><\/tr>\r\n            <tr><td>Code::Blocks<\/td><td>IDE<\/td><td>All<\/td><td>Beginners, free, simple<\/td><\/tr>\r\n            <tr><td>CLion<\/td><td>IDE<\/td><td>All<\/td><td>Professional, paid, intelligent code completion<\/td><\/tr>\r\n            <tr><td>Dev-C++<\/td><td>IDE<\/td><td>Windows<\/td><td>Beginners (outdated but simple)<\/td><\/tr>\r\n            <tr><td>Eclipse CDT<\/td><td>IDE<\/td><td>All<\/td><td>Large projects, Java devs familiar<\/td><\/tr>\r\n            <tr><td>Sublime Text<\/td><td>Editor<\/td><td>All<\/td><td>Fast, lightweight, customizable<\/td><\/tr>\r\n            <tr><td>Vim\/Neovim<\/td><td>Editor<\/td><td>All<\/td><td>Advanced users, terminal-based<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Writing Your First Program<\/h3>\r\n\r\n        <p><strong>Example: Simple Calculator<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;iostream&gt;\r\n<span class=\"kw\">using namespace<\/span> std;\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> num1, num2, sum;\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"Enter first number: \"<\/span>;\r\n    cin &gt;&gt; num1;\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"Enter second number: \"<\/span>;\r\n    cin &gt;&gt; num2;\r\n    \r\n    sum = num1 + num2;\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"Sum = \"<\/span> &lt;&lt; sum &lt;&lt; endl;\r\n    \r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Output:<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\nEnter first number: 15\r\nEnter second number: 25\r\nSum = 40\r\n<\/pre><\/div>\r\n\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Write a C++ program that takes your name, age, and city as input, then displays them in a formatted way. Example output: \"My name is Ali, I am 20 years old, and I live in Lahore.\"<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n\r\n    <!-- UNIT 2 -->\r\n    <div class=\"unit\" id=\"unit-2\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 2<\/span>\r\n        <h2>Data Types & Variables<\/h2>\r\n        <p>Understanding different types of data and how to store them in memory<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is a Variable?<\/h3>\r\n        <p>A <strong>variable<\/strong> is a named storage location in memory that holds a value. Think of it as a labeled box where you can store data and retrieve it later.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> age = 25;        <span class=\"cm\">\/\/ Variable 'age' stores integer 25<\/span>\r\n<span class=\"kw\">string<\/span> name = <span class=\"st\">\"Ali\"<\/span>; <span class=\"cm\">\/\/ Variable 'name' stores string \"Ali\"<\/span>\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Variable Naming Rules:<\/strong><\/p>\r\n        <ul>\r\n          <li>Must start with letter (a-z, A-Z) or underscore (_)<\/li>\r\n          <li>Can contain letters, digits (0-9), underscores<\/li>\r\n          <li>Cannot use C++ keywords (int, if, while, etc.)<\/li>\r\n          <li>Case-sensitive (<code>Age<\/code> and <code>age<\/code> are different)<\/li>\r\n          <li>No spaces allowed<\/li>\r\n          <li><strong>Good Practice:<\/strong> Use meaningful names (age, studentName) not (a, x, temp)<\/li>\r\n        <\/ul>\r\n\r\n        <p><strong>Valid vs Invalid Variable Names:<\/strong><\/p>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Valid \u2705<\/th><th>Invalid \u274c<\/th><th>Reason<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>age<\/td><td>2age<\/td><td>Cannot start with digit<\/td><\/tr>\r\n            <tr><td>student_name<\/td><td>student-name<\/td><td>Hyphen not allowed<\/td><\/tr>\r\n            <tr><td>_temp<\/td><td>temp value<\/td><td>Space not allowed<\/td><\/tr>\r\n            <tr><td>total123<\/td><td>int<\/td><td>'int' is a keyword<\/td><\/tr>\r\n            <tr><td>myVar<\/td><td>my$Var<\/td><td>$ not allowed<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Data Types in C++<\/h3>\r\n        <p>Data types specify what kind of value a variable can hold and how much memory it occupies.<\/p>\r\n\r\n        <p><strong>1. Fundamental (Built-in) Data Types:<\/strong><\/p>\r\n\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Type<\/th><th>Size (bytes)<\/th><th>Range<\/th><th>Example<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td><strong>int<\/strong><\/td><td>4<\/td><td>-2,147,483,648 to 2,147,483,647<\/td><td>int age = 25;<\/td><\/tr>\r\n            <tr><td><strong>short<\/strong><\/td><td>2<\/td><td>-32,768 to 32,767<\/td><td>short marks = 95;<\/td><\/tr>\r\n            <tr><td><strong>long<\/strong><\/td><td>4 or 8<\/td><td>Very large integers<\/td><td>long population = 220000000;<\/td><\/tr>\r\n            <tr><td><strong>long long<\/strong><\/td><td>8<\/td><td>-9 quintillion to 9 quintillion<\/td><td>long long big = 9000000000;<\/td><\/tr>\r\n            <tr><td><strong>float<\/strong><\/td><td>4<\/td><td>\u00b13.4 \u00d7 10<sup>38<\/sup> (6-7 digits precision)<\/td><td>float pi = 3.14f;<\/td><\/tr>\r\n            <tr><td><strong>double<\/strong><\/td><td>8<\/td><td>\u00b11.7 \u00d7 10<sup>308<\/sup> (15-16 digits)<\/td><td>double price = 1599.99;<\/td><\/tr>\r\n            <tr><td><strong>char<\/strong><\/td><td>1<\/td><td>-128 to 127 (or 0 to 255 unsigned)<\/td><td>char grade = 'A';<\/td><\/tr>\r\n            <tr><td><strong>bool<\/strong><\/td><td>1<\/td><td>true (1) or false (0)<\/td><td>bool isStudent = true;<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Type Modifiers<\/h3>\r\n        <p>Modifiers change the range and behavior of data types:<\/p>\r\n\r\n        <ul>\r\n          <li><strong>signed:<\/strong> Can store positive and negative (default for int, char)<\/li>\r\n          <li><strong>unsigned:<\/strong> Only positive values (doubles the positive range)<\/li>\r\n          <li><strong>short:<\/strong> Reduces size (short int)<\/li>\r\n          <li><strong>long:<\/strong> Increases size (long int, long double)<\/li>\r\n        <\/ul>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">unsigned int<\/span> rollNo = 12345;      <span class=\"cm\">\/\/ Only positive, 0 to 4,294,967,295<\/span>\r\n<span class=\"kw\">signed int<\/span> temperature = -10;     <span class=\"cm\">\/\/ Can be negative<\/span>\r\n<span class=\"kw\">long long<\/span> bigNumber = 9876543210; <span class=\"cm\">\/\/ Very large number<\/span>\r\n<span class=\"kw\">unsigned char<\/span> letter = 255;       <span class=\"cm\">\/\/ 0 to 255 range<\/span>\r\n<\/pre><\/div>\r\n\r\n        <h3>Integer Types Examples<\/h3>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;iostream&gt;\r\n<span class=\"kw\">using namespace<\/span> std;\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> age = 20;\r\n    <span class=\"kw\">short<\/span> marks = 95;\r\n    <span class=\"kw\">long<\/span> population = 220000000;\r\n    <span class=\"kw\">unsigned int<\/span> rollNo = 12345;\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"Age: \"<\/span> &lt;&lt; age &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"Marks: \"<\/span> &lt;&lt; marks &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"Population: \"<\/span> &lt;&lt; population &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"Roll No: \"<\/span> &lt;&lt; rollNo &lt;&lt; endl;\r\n    \r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>Floating-Point Types<\/h3>\r\n\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Type<\/th><th>Precision<\/th><th>When to Use<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>float<\/td><td>6-7 digits<\/td><td>Graphics, games (less precision needed, saves memory)<\/td><\/tr>\r\n            <tr><td>double<\/td><td>15-16 digits<\/td><td>Scientific calculations, financial data (default choice)<\/td><\/tr>\r\n            <tr><td>long double<\/td><td>18-19 digits<\/td><td>Very high precision calculations<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">float<\/span> pi = 3.14159f;            <span class=\"cm\">\/\/ Note the 'f' suffix for float<\/span>\r\n<span class=\"kw\">double<\/span> price = 1599.99;         <span class=\"cm\">\/\/ More precise<\/span>\r\n<span class=\"kw\">long double<\/span> precise = 3.141592653589793238;\r\n\r\ncout &lt;&lt; <span class=\"st\">\"Pi (float): \"<\/span> &lt;&lt; pi &lt;&lt; endl;           <span class=\"cm\">\/\/ 3.14159<\/span>\r\ncout &lt;&lt; <span class=\"st\">\"Price (double): \"<\/span> &lt;&lt; price &lt;&lt; endl;   <span class=\"cm\">\/\/ 1599.99<\/span>\r\n<\/pre><\/div>\r\n\r\n        <div class=\"info-box\">\ud83d\udca1 <strong>float vs double:<\/strong> Always use 'f' suffix for float literals (3.14f). Without it, compiler treats decimal numbers as double by default, then converts to float (wastes performance).<\/div>\r\n\r\n        <h3>Character Type (char)<\/h3>\r\n        <p>Stores single character in single quotes.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">char<\/span> grade = <span class=\"st\">'A'<\/span>;\r\n<span class=\"kw\">char<\/span> symbol = <span class=\"st\">'$'<\/span>;\r\n<span class=\"kw\">char<\/span> digit = <span class=\"st\">'5'<\/span>;        <span class=\"cm\">\/\/ Character '5', not integer 5<\/span>\r\n\r\ncout &lt;&lt; grade &lt;&lt; endl;   <span class=\"cm\">\/\/ Output: A<\/span>\r\n\r\n<span class=\"cm\">\/\/ Characters are stored as ASCII values (integers)<\/span>\r\ncout &lt;&lt; (<span class=\"kw\">int<\/span>)grade &lt;&lt; endl;  <span class=\"cm\">\/\/ Output: 65 (ASCII of 'A')<\/span>\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Common ASCII Values:<\/strong><\/p>\r\n        <ul>\r\n          <li>'A' to 'Z': 65 to 90<\/li>\r\n          <li>'a' to 'z': 97 to 122<\/li>\r\n          <li>'0' to '9': 48 to 57<\/li>\r\n          <li>Space: 32<\/li>\r\n          <li>Newline '\\n': 10<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Boolean Type (bool)<\/h3>\r\n        <p>Stores logical values: <code>true<\/code> or <code>false<\/code>.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">bool<\/span> isStudent = <span class=\"kw\">true<\/span>;\r\n<span class=\"kw\">bool<\/span> hasPassed = <span class=\"kw\">false<\/span>;\r\n<span class=\"kw\">bool<\/span> isAdult = (age &gt;= 18);  <span class=\"cm\">\/\/ Result of comparison<\/span>\r\n\r\ncout &lt;&lt; isStudent &lt;&lt; endl;      <span class=\"cm\">\/\/ Output: 1 (true = 1, false = 0)<\/span>\r\ncout &lt;&lt; hasPassed &lt;&lt; endl;      <span class=\"cm\">\/\/ Output: 0<\/span>\r\n\r\n<span class=\"cm\">\/\/ Use boolalpha to print true\/false instead of 1\/0<\/span>\r\ncout &lt;&lt; boolalpha &lt;&lt; isStudent &lt;&lt; endl;  <span class=\"cm\">\/\/ Output: true<\/span>\r\n<\/pre><\/div>\r\n\r\n        <h3>String Type<\/h3>\r\n        <p>Stores sequence of characters (text). Not a fundamental type, it's a class from C++ Standard Library.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;iostream&gt;\r\n<span class=\"kw\">#include<\/span> &lt;string&gt;      <span class=\"cm\">\/\/ Must include string header<\/span>\r\n<span class=\"kw\">using namespace<\/span> std;\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">string<\/span> name = <span class=\"st\">\"Ali Ahmed\"<\/span>;\r\n    <span class=\"kw\">string<\/span> city = <span class=\"st\">\"Lahore\"<\/span>;\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"Name: \"<\/span> &lt;&lt; name &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"City: \"<\/span> &lt;&lt; city &lt;&lt; endl;\r\n    \r\n    <span class=\"cm\">\/\/ String concatenation<\/span>\r\n    <span class=\"kw\">string<\/span> fullInfo = name + <span class=\"st\">\" from \"<\/span> + city;\r\n    cout &lt;&lt; fullInfo &lt;&lt; endl;  <span class=\"cm\">\/\/ Ali Ahmed from Lahore<\/span>\r\n    \r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>Type Conversion (Casting)<\/h3>\r\n\r\n        <p><strong>1. Implicit Conversion (Automatic):<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> x = 10;\r\n<span class=\"kw\">double<\/span> y = x;      <span class=\"cm\">\/\/ int automatically converted to double (10.0)<\/span>\r\n\r\n<span class=\"kw\">float<\/span> a = 3.14f;\r\n<span class=\"kw\">int<\/span> b = a;         <span class=\"cm\">\/\/ float to int (data loss: b = 3)<\/span>\r\n<\/pre><\/div>\r\n\r\n        <p><strong>2. Explicit Conversion (Manual Casting):<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ C-style cast<\/span>\r\n<span class=\"kw\">double<\/span> pi = 3.14159;\r\n<span class=\"kw\">int<\/span> intPi = (<span class=\"kw\">int<\/span>)pi;           <span class=\"cm\">\/\/ intPi = 3<\/span>\r\n\r\n<span class=\"cm\">\/\/ C++ style cast (preferred)<\/span>\r\n<span class=\"kw\">int<\/span> intPi2 = <span class=\"kw\">static_cast<\/span>&lt;<span class=\"kw\">int<\/span>&gt;(pi);  <span class=\"cm\">\/\/ More readable, safer<\/span>\r\n\r\n<span class=\"cm\">\/\/ Character to integer<\/span>\r\n<span class=\"kw\">char<\/span> ch = <span class=\"st\">'A'<\/span>;\r\n<span class=\"kw\">int<\/span> ascii = (<span class=\"kw\">int<\/span>)ch;            <span class=\"cm\">\/\/ ascii = 65<\/span>\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Type Conversion Rules:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>Widening (Safe):<\/strong> char \u2192 int \u2192 long \u2192 float \u2192 double (no data loss)<\/li>\r\n          <li><strong>Narrowing (Risky):<\/strong> double \u2192 float \u2192 long \u2192 int \u2192 char (data loss possible)<\/li>\r\n          <li><strong>Integer Division:<\/strong> 7\/2 = 3 (not 3.5), use 7.0\/2 or cast one operand to double<\/li>\r\n        <\/ul>\r\n\r\n\r\n\r\n        <h3>Constants<\/h3>\r\n        <p>Values that cannot be changed after initialization.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Using const keyword<\/span>\r\n<span class=\"kw\">const int<\/span> MAX_AGE = 100;\r\n<span class=\"kw\">const double<\/span> PI = 3.14159;\r\n\r\n<span class=\"cm\">\/\/ Using #define (preprocessor directive - old style)<\/span>\r\n<span class=\"kw\">#define<\/span> MAX_SIZE 1000\r\n<span class=\"kw\">#define<\/span> TAX_RATE 0.16\r\n\r\n<span class=\"cm\">\/\/ Trying to change const gives error<\/span>\r\n<span class=\"cm\">\/\/ MAX_AGE = 50;  \/\/ ERROR: Cannot modify const<\/span>\r\n<\/pre><\/div>\r\n\r\n        <p><strong>const vs #define:<\/strong><\/p>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Feature<\/th><th>const<\/th><th>#define<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Type Safety<\/td><td>\u2705 Type-checked by compiler<\/td><td>\u274c No type checking (text replacement)<\/td><\/tr>\r\n            <tr><td>Scope<\/td><td>\u2705 Follows scope rules<\/td><td>\u274c Global (file-wide)<\/td><\/tr>\r\n            <tr><td>Debugging<\/td><td>\u2705 Easier to debug<\/td><td>\u274c Harder (preprocessor replaces text)<\/td><\/tr>\r\n            <tr><td>Memory<\/td><td>Occupies memory<\/td><td>No memory (text substitution)<\/td><\/tr>\r\n            <tr><td>Recommendation<\/td><td>\u2705 Use this (modern C++)<\/td><td>\u274c Avoid (legacy)<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>sizeof() Operator<\/h3>\r\n        <p>Returns size of data type or variable in bytes.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;iostream&gt;\r\n<span class=\"kw\">using namespace<\/span> std;\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    cout &lt;&lt; <span class=\"st\">\"Size of int: \"<\/span> &lt;&lt; <span class=\"kw\">sizeof<\/span>(<span class=\"kw\">int<\/span>) &lt;&lt; <span class=\"st\">\" bytes\"<\/span> &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"Size of double: \"<\/span> &lt;&lt; <span class=\"kw\">sizeof<\/span>(<span class=\"kw\">double<\/span>) &lt;&lt; <span class=\"st\">\" bytes\"<\/span> &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"Size of char: \"<\/span> &lt;&lt; <span class=\"kw\">sizeof<\/span>(<span class=\"kw\">char<\/span>) &lt;&lt; <span class=\"st\">\" bytes\"<\/span> &lt;&lt; endl;\r\n    cout &lt;&lt; <span class=\"st\">\"Size of bool: \"<\/span> &lt;&lt; <span class=\"kw\">sizeof<\/span>(<span class=\"kw\">bool<\/span>) &lt;&lt; <span class=\"st\">\" bytes\"<\/span> &lt;&lt; endl;\r\n    \r\n    <span class=\"kw\">int<\/span> arr[10];\r\n    cout &lt;&lt; <span class=\"st\">\"Size of array: \"<\/span> &lt;&lt; <span class=\"kw\">sizeof<\/span>(arr) &lt;&lt; <span class=\"st\">\" bytes\"<\/span> &lt;&lt; endl; <span class=\"cm\">\/\/ 40 bytes (10\u00d74)<\/span>\r\n    \r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Write a program that declares variables of all data types (int, float, double, char, bool, string) with meaningful names and values, then prints them. Example: int studentAge = 20, double testScore = 95.5, etc.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n\r\n    <!-- UNIT 3 -->\r\n    <div class=\"unit\" id=\"unit-3\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 3<\/span>\r\n        <h2>Control Structures<\/h2>\r\n        <p>Decision making and flow control using if-else, switch, and loops<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What are Control Structures?<\/h3>\r\n        <p><strong>Control structures<\/strong> determine the order in which statements are executed. They allow programs to make decisions, repeat actions, and choose different paths based on conditions.<\/p>\r\n\r\n        <p><strong>Types:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>Sequential:<\/strong> Statements execute one after another (default)<\/li>\r\n          <li><strong>Selection\/Decision:<\/strong> if, if-else, nested if, switch<\/li>\r\n          <li><strong>Iteration\/Loops:<\/strong> for, while, do-while<\/li>\r\n          <li><strong>Jump:<\/strong> break, continue, goto, return<\/li>\r\n        <\/ul>\r\n\r\n        <h3>1. if Statement<\/h3>\r\n        <p>Executes code block only if condition is true.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> age = 20;\r\n\r\n<span class=\"kw\">if<\/span> (age &gt;= 18) {\r\n    cout &lt;&lt; <span class=\"st\">\"You are an adult\"<\/span> &lt;&lt; endl;\r\n}\r\n<span class=\"cm\">\/\/ If condition false, this block is skipped<\/span>\r\n<\/pre><\/div>\r\n\r\n        <h3>2. if-else Statement<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> marks = 55;\r\n\r\n<span class=\"kw\">if<\/span> (marks &gt;= 50) {\r\n    cout &lt;&lt; <span class=\"st\">\"Pass\"<\/span> &lt;&lt; endl;\r\n} <span class=\"kw\">else<\/span> {\r\n    cout &lt;&lt; <span class=\"st\">\"Fail\"<\/span> &lt;&lt; endl;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>3. if-else if-else Ladder<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> marks = 75;\r\n\r\n<span class=\"kw\">if<\/span> (marks &gt;= 80) {\r\n    cout &lt;&lt; <span class=\"st\">\"Grade: A\"<\/span> &lt;&lt; endl;\r\n} <span class=\"kw\">else if<\/span> (marks &gt;= 70) {\r\n    cout &lt;&lt; <span class=\"st\">\"Grade: B\"<\/span> &lt;&lt; endl;\r\n} <span class=\"kw\">else if<\/span> (marks &gt;= 60) {\r\n    cout &lt;&lt; <span class=\"st\">\"Grade: C\"<\/span> &lt;&lt; endl;\r\n} <span class=\"kw\">else if<\/span> (marks &gt;= 50) {\r\n    cout &lt;&lt; <span class=\"st\">\"Grade: D\"<\/span> &lt;&lt; endl;\r\n} <span class=\"kw\">else<\/span> {\r\n    cout &lt;&lt; <span class=\"st\">\"Grade: F (Fail)\"<\/span> &lt;&lt; endl;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>4. Nested if<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> age = 25;\r\n<span class=\"kw\">bool<\/span> hasLicense = <span class=\"kw\">true<\/span>;\r\n\r\n<span class=\"kw\">if<\/span> (age &gt;= 18) {\r\n    <span class=\"kw\">if<\/span> (hasLicense) {\r\n        cout &lt;&lt; <span class=\"st\">\"You can drive\"<\/span> &lt;&lt; endl;\r\n    } <span class=\"kw\">else<\/span> {\r\n        cout &lt;&lt; <span class=\"st\">\"Get a license first\"<\/span> &lt;&lt; endl;\r\n    }\r\n} <span class=\"kw\">else<\/span> {\r\n    cout &lt;&lt; <span class=\"st\">\"You are too young to drive\"<\/span> &lt;&lt; endl;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>Relational Operators<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Operator<\/th><th>Meaning<\/th><th>Example<\/th><th>Result<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>==<\/td><td>Equal to<\/td><td>5 == 5<\/td><td>true<\/td><\/tr>\r\n            <tr><td>!=<\/td><td>Not equal to<\/td><td>5 != 3<\/td><td>true<\/td><\/tr>\r\n            <tr><td>&gt;<\/td><td>Greater than<\/td><td>5 &gt; 3<\/td><td>true<\/td><\/tr>\r\n            <tr><td>&lt;<\/td><td>Less than<\/td><td>5 &lt; 3<\/td><td>false<\/td><\/tr>\r\n            <tr><td>&gt;=<\/td><td>Greater than or equal<\/td><td>5 &gt;= 5<\/td><td>true<\/td><\/tr>\r\n            <tr><td>&lt;=<\/td><td>Less than or equal<\/td><td>5 &lt;= 3<\/td><td>false<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Logical Operators<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Operator<\/th><th>Meaning<\/th><th>Example<\/th><th>Result<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>&&<\/td><td>AND (both must be true)<\/td><td>true && false<\/td><td>false<\/td><\/tr>\r\n            <tr><td>||<\/td><td>OR (at least one true)<\/td><td>true || false<\/td><td>true<\/td><\/tr>\r\n            <tr><td>!<\/td><td>NOT (inverts boolean)<\/td><td>!true<\/td><td>false<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> age = 25;\r\n<span class=\"kw\">bool<\/span> isStudent = <span class=\"kw\">true<\/span>;\r\n\r\n<span class=\"cm\">\/\/ AND: Both conditions must be true<\/span>\r\n<span class=\"kw\">if<\/span> (age &gt;= 18 && isStudent) {\r\n    cout &lt;&lt; <span class=\"st\">\"Adult student discount available\"<\/span> &lt;&lt; endl;\r\n}\r\n\r\n<span class=\"cm\">\/\/ OR: At least one condition must be true<\/span>\r\n<span class=\"kw\">if<\/span> (age &lt; 18 || age &gt; 60) {\r\n    cout &lt;&lt; <span class=\"st\">\"Special discount\"<\/span> &lt;&lt; endl;\r\n}\r\n\r\n<span class=\"cm\">\/\/ NOT: Inverts the condition<\/span>\r\n<span class=\"kw\">if<\/span> (!isStudent) {\r\n    cout &lt;&lt; <span class=\"st\">\"Regular price\"<\/span> &lt;&lt; endl;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>5. switch Statement<\/h3>\r\n        <p>Multi-way branch based on value of expression. Cleaner than long if-else ladder for checking single variable against multiple values.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> day = 3;\r\n\r\n<span class=\"kw\">switch<\/span> (day) {\r\n    <span class=\"kw\">case<\/span> 1:\r\n        cout &lt;&lt; <span class=\"st\">\"Monday\"<\/span> &lt;&lt; endl;\r\n        <span class=\"kw\">break<\/span>;\r\n    <span class=\"kw\">case<\/span> 2:\r\n        cout &lt;&lt; <span class=\"st\">\"Tuesday\"<\/span> &lt;&lt; endl;\r\n        <span class=\"kw\">break<\/span>;\r\n    <span class=\"kw\">case<\/span> 3:\r\n        cout &lt;&lt; <span class=\"st\">\"Wednesday\"<\/span> &lt;&lt; endl;\r\n        <span class=\"kw\">break<\/span>;\r\n    <span class=\"kw\">case<\/span> 4:\r\n        cout &lt;&lt; <span class=\"st\">\"Thursday\"<\/span> &lt;&lt; endl;\r\n        <span class=\"kw\">break<\/span>;\r\n    <span class=\"kw\">case<\/span> 5:\r\n        cout &lt;&lt; <span class=\"st\">\"Friday\"<\/span> &lt;&lt; endl;\r\n        <span class=\"kw\">break<\/span>;\r\n    <span class=\"kw\">case<\/span> 6:\r\n        cout &lt;&lt; <span class=\"st\">\"Saturday\"<\/span> &lt;&lt; endl;\r\n        <span class=\"kw\">break<\/span>;\r\n    <span class=\"kw\">case<\/span> 7:\r\n        cout &lt;&lt; <span class=\"st\">\"Sunday\"<\/span> &lt;&lt; endl;\r\n        <span class=\"kw\">break<\/span>;\r\n    <span class=\"kw\">default<\/span>:\r\n        cout &lt;&lt; <span class=\"st\">\"Invalid day\"<\/span> &lt;&lt; endl;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <div class=\"info-box\">\ud83d\udca1 <strong>break is important!<\/strong> Without break, execution \"falls through\" to next case. This is usually unintended behavior. Default case executes if no case matches.<\/div>\r\n\r\n        <p><strong>switch vs if-else:<\/strong><\/p>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Feature<\/th><th>switch<\/th><th>if-else<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Use Case<\/td><td>Single variable, multiple exact values<\/td><td>Complex conditions, ranges<\/td><\/tr>\r\n            <tr><td>Performance<\/td><td>Faster (jump table)<\/td><td>Slower (checks each condition)<\/td><\/tr>\r\n            <tr><td>Readability<\/td><td>Cleaner for many values<\/td><td>Better for complex logic<\/td><\/tr>\r\n            <tr><td>Data Types<\/td><td>int, char, enum only<\/td><td>Any type, any comparison<\/td><\/tr>\r\n            <tr><td>Ranges<\/td><td>\u274c Cannot check ranges<\/td><td>\u2705 Can check ranges (age > 18)<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Loops (Iteration)<\/h3>\r\n        <p>Repeat a block of code multiple times.<\/p>\r\n\r\n        <h3>1. for Loop<\/h3>\r\n        <p>Used when number of iterations is known.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Print numbers 1 to 10<\/span>\r\n<span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> i = 1; i &lt;= 10; i++) {\r\n    cout &lt;&lt; i &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n}\r\ncout &lt;&lt; endl;\r\n<span class=\"cm\">\/\/ Output: 1 2 3 4 5 6 7 8 9 10<\/span>\r\n\r\n<span class=\"cm\">\/\/ Syntax: for (initialization; condition; increment\/decrement)<\/span>\r\n<\/pre><\/div>\r\n\r\n        <p><strong>for Loop Explained:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>Initialization:<\/strong> <code>int i = 1<\/code> (executed once at start)<\/li>\r\n          <li><strong>Condition:<\/strong> <code>i <= 10<\/code> (checked before each iteration)<\/li>\r\n          <li><strong>Increment:<\/strong> <code>i++<\/code> (executed after each iteration)<\/li>\r\n        <\/ul>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Print even numbers from 2 to 20<\/span>\r\n<span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> i = 2; i &lt;= 20; i += 2) {\r\n    cout &lt;&lt; i &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n}\r\n\r\n<span class=\"cm\">\/\/ Print numbers in reverse<\/span>\r\n<span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> i = 10; i &gt;= 1; i--) {\r\n    cout &lt;&lt; i &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>2. while Loop<\/h3>\r\n        <p>Repeats while condition is true. Condition checked before each iteration.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> i = 1;\r\n\r\n<span class=\"kw\">while<\/span> (i &lt;= 5) {\r\n    cout &lt;&lt; i &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n    i++;\r\n}\r\n<span class=\"cm\">\/\/ Output: 1 2 3 4 5<\/span>\r\n<\/pre><\/div>\r\n\r\n        <h3>3. do-while Loop<\/h3>\r\n        <p>Executes at least once, then repeats while condition is true. Condition checked after each iteration.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> i = 1;\r\n\r\n<span class=\"kw\">do<\/span> {\r\n    cout &lt;&lt; i &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n    i++;\r\n} <span class=\"kw\">while<\/span> (i &lt;= 5);\r\n<span class=\"cm\">\/\/ Output: 1 2 3 4 5<\/span>\r\n\r\n<span class=\"cm\">\/\/ Executes at least once even if condition false<\/span>\r\n<span class=\"kw\">int<\/span> x = 10;\r\n<span class=\"kw\">do<\/span> {\r\n    cout &lt;&lt; <span class=\"st\">\"This prints once\"<\/span> &lt;&lt; endl;\r\n} <span class=\"kw\">while<\/span> (x &lt; 5);  <span class=\"cm\">\/\/ Condition false, but body executed once<\/span>\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Loop Comparison:<\/strong><\/p>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Loop<\/th><th>When to Use<\/th><th>Condition Check<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>for<\/td><td>Known iterations (print 1-10, iterate array)<\/td><td>Before each iteration<\/td><\/tr>\r\n            <tr><td>while<\/td><td>Unknown iterations (read until EOF, user says \"quit\")<\/td><td>Before each iteration<\/td><\/tr>\r\n            <tr><td>do-while<\/td><td>Must execute at least once (menu, input validation)<\/td><td>After each iteration<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Nested Loops<\/h3>\r\n        <p>Loop inside another loop.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Print multiplication table (1 to 5)<\/span>\r\n<span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> i = 1; i &lt;= 5; i++) {\r\n    <span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> j = 1; j &lt;= 10; j++) {\r\n        cout &lt;&lt; i &lt;&lt; <span class=\"st\">\" x \"<\/span> &lt;&lt; j &lt;&lt; <span class=\"st\">\" = \"<\/span> &lt;&lt; (i*j) &lt;&lt; endl;\r\n    }\r\n    cout &lt;&lt; endl;\r\n}\r\n\r\n<span class=\"cm\">\/\/ Print pattern<\/span>\r\n<span class=\"cm\">\/*\r\n*\r\n**\r\n***\r\n****\r\n*****\r\n*\/<\/span>\r\n<span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> i = 1; i &lt;= 5; i++) {\r\n    <span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> j = 1; j &lt;= i; j++) {\r\n        cout &lt;&lt; <span class=\"st\">\"*\"<\/span>;\r\n    }\r\n    cout &lt;&lt; endl;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>break Statement<\/h3>\r\n        <p>Exits the loop immediately.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Find first number divisible by 7 and 3<\/span>\r\n<span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> i = 1; i &lt;= 100; i++) {\r\n    <span class=\"kw\">if<\/span> (i % 7 == 0 && i % 3 == 0) {\r\n        cout &lt;&lt; <span class=\"st\">\"Found: \"<\/span> &lt;&lt; i &lt;&lt; endl;\r\n        <span class=\"kw\">break<\/span>;  <span class=\"cm\">\/\/ Exit loop<\/span>\r\n    }\r\n}\r\n<span class=\"cm\">\/\/ Output: Found: 21<\/span>\r\n<\/pre><\/div>\r\n\r\n        <h3>continue Statement<\/h3>\r\n        <p>Skips current iteration, continues with next.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Print odd numbers from 1 to 10<\/span>\r\n<span class=\"kw\">for<\/span> (<span class=\"kw\">int<\/span> i = 1; i &lt;= 10; i++) {\r\n    <span class=\"kw\">if<\/span> (i % 2 == 0) {\r\n        <span class=\"kw\">continue<\/span>;  <span class=\"cm\">\/\/ Skip even numbers<\/span>\r\n    }\r\n    cout &lt;&lt; i &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n}\r\n<span class=\"cm\">\/\/ Output: 1 3 5 7 9<\/span>\r\n<\/pre><\/div>\r\n\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Write programs: (1) Check if number is even\/odd, (2) Find largest of 3 numbers, (3) Print factorial of a number using loop, (4) Print Fibonacci series up to n terms, (5) Check if year is leap year.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n\r\n    <!-- UNIT 4 -->\r\n    <div class=\"unit\" id=\"unit-4\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 4<\/span>\r\n        <h2>Functions in C++<\/h2>\r\n        <p>Modular programming using functions for code reusability and organization<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is a Function?<\/h3>\r\n        <p>A <strong>function<\/strong> is a self-contained block of code that performs a specific task. It can be called multiple times, making code reusable, organized, and easier to maintain.<\/p>\r\n\r\n        <div class=\"info-box\">\ud83d\udca1 <strong>Analogy:<\/strong> Think of a function like a recipe. You define it once (write the recipe), then use it whenever needed (cook the dish). You don't need to rewrite the recipe each time!<\/div>\r\n\r\n        <h3>Advantages of Functions<\/h3>\r\n        <div class=\"feature-grid\">\r\n          <div class=\"feature-item\">\u267b\ufe0f Code Reusability<\/div>\r\n          <div class=\"feature-item\">\ud83d\udce6 Modularity<\/div>\r\n          <div class=\"feature-item\">\ud83d\udc1b Easy Debugging<\/div>\r\n          <div class=\"feature-item\">\ud83d\udc65 Team Collaboration<\/div>\r\n          <div class=\"feature-item\">\ud83d\udcdd Readable Code<\/div>\r\n          <div class=\"feature-item\">\u26a1 Avoid Redundancy<\/div>\r\n        <\/div>\r\n\r\n        <h3>Function Syntax<\/h3>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Function Definition<\/span>\r\n<span class=\"kw\">returnType<\/span> <span class=\"fn\">functionName<\/span>(parameters) {\r\n    <span class=\"cm\">\/\/ Function body (code to execute)<\/span>\r\n    <span class=\"kw\">return<\/span> value;  <span class=\"cm\">\/\/ Optional (not needed for void)<\/span>\r\n}\r\n\r\n<span class=\"cm\">\/\/ Example:<\/span>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">add<\/span>(<span class=\"kw\">int<\/span> a, <span class=\"kw\">int<\/span> b) {\r\n    <span class=\"kw\">int<\/span> sum = a + b;\r\n    <span class=\"kw\">return<\/span> sum;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Components:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>Return Type:<\/strong> Data type of value returned (int, float, void, etc.)<\/li>\r\n          <li><strong>Function Name:<\/strong> Identifier (follow variable naming rules)<\/li>\r\n          <li><strong>Parameters:<\/strong> Input values (optional). Also called formal parameters<\/li>\r\n          <li><strong>Function Body:<\/strong> Code inside { }<\/li>\r\n          <li><strong>return Statement:<\/strong> Returns value to caller (not needed for void)<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Types of Functions<\/h3>\r\n\r\n        <p><strong>1. No Arguments, No Return Value<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">void<\/span> <span class=\"fn\">greet<\/span>() {\r\n    cout &lt;&lt; <span class=\"st\">\"Hello, World!\"<\/span> &lt;&lt; endl;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"fn\">greet<\/span>();  <span class=\"cm\">\/\/ Function call<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>2. No Arguments, With Return Value<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">getRandomNumber<\/span>() {\r\n    <span class=\"kw\">return<\/span> 42;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> num = <span class=\"fn\">getRandomNumber<\/span>();\r\n    cout &lt;&lt; <span class=\"st\">\"Number: \"<\/span> &lt;&lt; num &lt;&lt; endl;\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>3. With Arguments, No Return Value<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">void<\/span> <span class=\"fn\">printSum<\/span>(<span class=\"kw\">int<\/span> a, <span class=\"kw\">int<\/span> b) {\r\n    cout &lt;&lt; <span class=\"st\">\"Sum: \"<\/span> &lt;&lt; (a + b) &lt;&lt; endl;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"fn\">printSum<\/span>(5, 10);  <span class=\"cm\">\/\/ Output: Sum: 15<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>4. With Arguments, With Return Value<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">multiply<\/span>(<span class=\"kw\">int<\/span> a, <span class=\"kw\">int<\/span> b) {\r\n    <span class=\"kw\">return<\/span> a * b;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> result = <span class=\"fn\">multiply<\/span>(4, 5);\r\n    cout &lt;&lt; <span class=\"st\">\"Result: \"<\/span> &lt;&lt; result &lt;&lt; endl;  <span class=\"cm\">\/\/ Output: 20<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>Function Declaration vs Definition<\/h3>\r\n\r\n        <p><strong>Declaration (Prototype):<\/strong> Tells compiler about function (name, return type, parameters)<\/p>\r\n        <p><strong>Definition:<\/strong> Actual implementation of function<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;iostream&gt;\r\n<span class=\"kw\">using namespace<\/span> std;\r\n\r\n<span class=\"cm\">\/\/ Function Declaration (Prototype) - placed before main<\/span>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">add<\/span>(<span class=\"kw\">int<\/span>, <span class=\"kw\">int<\/span>);  <span class=\"cm\">\/\/ Parameter names optional in declaration<\/span>\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> result = <span class=\"fn\">add<\/span>(5, 3);\r\n    cout &lt;&lt; <span class=\"st\">\"Sum: \"<\/span> &lt;&lt; result &lt;&lt; endl;\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n\r\n<span class=\"cm\">\/\/ Function Definition - can be placed after main<\/span>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">add<\/span>(<span class=\"kw\">int<\/span> a, <span class=\"kw\">int<\/span> b) {\r\n    <span class=\"kw\">return<\/span> a + b;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>Function Call<\/h3>\r\n        <p>Three ways to pass arguments to functions:<\/p>\r\n\r\n        <p><strong>1. Call by Value (Default)<\/strong><\/p>\r\n        <p>Copies value to function. Original variable unchanged.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">void<\/span> <span class=\"fn\">increment<\/span>(<span class=\"kw\">int<\/span> x) {\r\n    x = x + 1;\r\n    cout &lt;&lt; <span class=\"st\">\"Inside function: \"<\/span> &lt;&lt; x &lt;&lt; endl;  <span class=\"cm\">\/\/ 11<\/span>\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> num = 10;\r\n    <span class=\"fn\">increment<\/span>(num);\r\n    cout &lt;&lt; <span class=\"st\">\"Outside function: \"<\/span> &lt;&lt; num &lt;&lt; endl;  <span class=\"cm\">\/\/ Still 10 (unchanged)<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>2. Call by Reference<\/strong><\/p>\r\n        <p>Passes address of variable. Changes affect original variable.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">void<\/span> <span class=\"fn\">increment<\/span>(<span class=\"kw\">int<\/span> &x) {  <span class=\"cm\">\/\/ & means reference<\/span>\r\n    x = x + 1;\r\n    cout &lt;&lt; <span class=\"st\">\"Inside function: \"<\/span> &lt;&lt; x &lt;&lt; endl;  <span class=\"cm\">\/\/ 11<\/span>\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> num = 10;\r\n    <span class=\"fn\">increment<\/span>(num);\r\n    cout &lt;&lt; <span class=\"st\">\"Outside function: \"<\/span> &lt;&lt; num &lt;&lt; endl;  <span class=\"cm\">\/\/ 11 (changed!)<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>3. Call by Pointer<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">void<\/span> <span class=\"fn\">increment<\/span>(<span class=\"kw\">int<\/span> *x) {  <span class=\"cm\">\/\/ * means pointer<\/span>\r\n    *x = *x + 1;\r\n    cout &lt;&lt; <span class=\"st\">\"Inside function: \"<\/span> &lt;&lt; *x &lt;&lt; endl;  <span class=\"cm\">\/\/ 11<\/span>\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">int<\/span> num = 10;\r\n    <span class=\"fn\">increment<\/span>(&num);  <span class=\"cm\">\/\/ Pass address<\/span>\r\n    cout &lt;&lt; <span class=\"st\">\"Outside function: \"<\/span> &lt;&lt; num &lt;&lt; endl;  <span class=\"cm\">\/\/ 11 (changed!)<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Method<\/th><th>Syntax<\/th><th>Changes Original?<\/th><th>Use When<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Call by Value<\/td><td>int x<\/td><td>\u274c No<\/td><td>Small data, don't need to modify original<\/td><\/tr>\r\n            <tr><td>Call by Reference<\/td><td>int &x<\/td><td>\u2705 Yes<\/td><td>Need to modify original, avoid copying large data<\/td><\/tr>\r\n            <tr><td>Call by Pointer<\/td><td>int *x<\/td><td>\u2705 Yes<\/td><td>Dynamic memory, arrays, null checking needed<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Default Arguments<\/h3>\r\n        <p>Provide default values for parameters. If argument not passed, default used.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">power<\/span>(<span class=\"kw\">int<\/span> base, <span class=\"kw\">int<\/span> exp = 2) {  <span class=\"cm\">\/\/ exp defaults to 2<\/span>\r\n    <span class=\"kw\">int<\/span> result = 1;\r\n    <span class=\"kw\">for<\/span>(<span class=\"kw\">int<\/span> i = 0; i &lt; exp; i++) {\r\n        result *= base;\r\n    }\r\n    <span class=\"kw\">return<\/span> result;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    cout &lt;&lt; <span class=\"fn\">power<\/span>(5) &lt;&lt; endl;      <span class=\"cm\">\/\/ 25 (5^2, uses default)<\/span>\r\n    cout &lt;&lt; <span class=\"fn\">power<\/span>(5, 3) &lt;&lt; endl;   <span class=\"cm\">\/\/ 125 (5^3, overrides default)<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Rules:<\/strong><\/p>\r\n        <ul>\r\n          <li>Default arguments must be rightmost parameters<\/li>\r\n          <li>Once a parameter has default value, all right parameters must also have defaults<\/li>\r\n          <li>Defaults specified in declaration, not definition (if separate)<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Function Overloading<\/h3>\r\n        <p>Multiple functions with same name but different parameters (number, type, or order).<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">add<\/span>(<span class=\"kw\">int<\/span> a, <span class=\"kw\">int<\/span> b) {\r\n    <span class=\"kw\">return<\/span> a + b;\r\n}\r\n\r\n<span class=\"kw\">double<\/span> <span class=\"fn\">add<\/span>(<span class=\"kw\">double<\/span> a, <span class=\"kw\">double<\/span> b) {\r\n    <span class=\"kw\">return<\/span> a + b;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">add<\/span>(<span class=\"kw\">int<\/span> a, <span class=\"kw\">int<\/span> b, <span class=\"kw\">int<\/span> c) {\r\n    <span class=\"kw\">return<\/span> a + b + c;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    cout &lt;&lt; <span class=\"fn\">add<\/span>(5, 3) &lt;&lt; endl;           <span class=\"cm\">\/\/ Calls first (int version): 8<\/span>\r\n    cout &lt;&lt; <span class=\"fn\">add<\/span>(5.5, 3.2) &lt;&lt; endl;       <span class=\"cm\">\/\/ Calls second (double version): 8.7<\/span>\r\n    cout &lt;&lt; <span class=\"fn\">add<\/span>(1, 2, 3) &lt;&lt; endl;        <span class=\"cm\">\/\/ Calls third (3 params): 6<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Overloading Rules:<\/strong><\/p>\r\n        <ul>\r\n          <li>Parameters must differ in number, type, or order<\/li>\r\n          <li>Return type alone cannot differentiate overloaded functions<\/li>\r\n          <li>Compiler chooses function based on arguments passed<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Inline Functions<\/h3>\r\n        <p>Request compiler to insert function code at call site (instead of jumping to function). Reduces function call overhead for small functions.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">inline int<\/span> <span class=\"fn\">square<\/span>(<span class=\"kw\">int<\/span> x) {\r\n    <span class=\"kw\">return<\/span> x * x;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    cout &lt;&lt; <span class=\"fn\">square<\/span>(5) &lt;&lt; endl;  <span class=\"cm\">\/\/ Compiler replaces with: cout << 5 * 5;<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Advantages:<\/strong> Faster execution (no function call overhead)<\/p>\r\n        <p><strong>Disadvantages:<\/strong> Increases code size if function called many times<\/p>\r\n        <p><strong>Use for:<\/strong> Small, frequently called functions (getters, setters)<\/p>\r\n\r\n        <h3>Recursion<\/h3>\r\n        <p>Function calling itself. Useful for problems that can be broken into similar subproblems.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Factorial using recursion<\/span>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">factorial<\/span>(<span class=\"kw\">int<\/span> n) {\r\n    <span class=\"kw\">if<\/span> (n == 0 || n == 1) {\r\n        <span class=\"kw\">return<\/span> 1;  <span class=\"cm\">\/\/ Base case<\/span>\r\n    }\r\n    <span class=\"kw\">return<\/span> n * <span class=\"fn\">factorial<\/span>(n - 1);  <span class=\"cm\">\/\/ Recursive call<\/span>\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    cout &lt;&lt; <span class=\"fn\">factorial<\/span>(5) &lt;&lt; endl;  <span class=\"cm\">\/\/ 120 (5! = 5\u00d74\u00d73\u00d72\u00d71)<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Recursion Requirements:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>Base Case:<\/strong> Condition to stop recursion (avoid infinite loop)<\/li>\r\n          <li><strong>Recursive Case:<\/strong> Function calls itself with modified parameter<\/li>\r\n          <li><strong>Progress:<\/strong> Each call moves toward base case<\/li>\r\n        <\/ul>\r\n\r\n        <p><strong>Example: Fibonacci Series<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">fibonacci<\/span>(<span class=\"kw\">int<\/span> n) {\r\n    <span class=\"kw\">if<\/span> (n == 0) <span class=\"kw\">return<\/span> 0;     <span class=\"cm\">\/\/ Base case 1<\/span>\r\n    <span class=\"kw\">if<\/span> (n == 1) <span class=\"kw\">return<\/span> 1;     <span class=\"cm\">\/\/ Base case 2<\/span>\r\n    <span class=\"kw\">return<\/span> <span class=\"fn\">fibonacci<\/span>(n-1) + <span class=\"fn\">fibonacci<\/span>(n-2);  <span class=\"cm\">\/\/ Recursive<\/span>\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"kw\">for<\/span>(<span class=\"kw\">int<\/span> i = 0; i &lt; 10; i++) {\r\n        cout &lt;&lt; <span class=\"fn\">fibonacci<\/span>(i) &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n    }\r\n    <span class=\"cm\">\/\/ Output: 0 1 1 2 3 5 8 13 21 34<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Recursion vs Iteration:<\/strong><\/p>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Aspect<\/th><th>Recursion<\/th><th>Iteration (Loop)<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Code<\/td><td>Shorter, elegant<\/td><td>Longer sometimes<\/td><\/tr>\r\n            <tr><td>Readability<\/td><td>Natural for tree\/graph problems<\/td><td>Better for simple repetition<\/td><\/tr>\r\n            <tr><td>Memory<\/td><td>More (stack frames for each call)<\/td><td>Less<\/td><\/tr>\r\n            <tr><td>Speed<\/td><td>Slower (function call overhead)<\/td><td>Faster<\/td><\/tr>\r\n            <tr><td>Stack Overflow<\/td><td>Risk if too many calls<\/td><td>No risk<\/td><\/tr>\r\n            <tr><td>Use When<\/td><td>Tree traversal, divide & conquer, mathematical functions<\/td><td>Simple repetition, performance critical<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Write functions for: (1) Check prime number, (2) Find GCD of two numbers, (3) Convert Celsius to Fahrenheit, (4) Print pattern using recursion, (5) Calculate power using recursion (x^n).<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n\r\n    <!-- UNIT 5 -->\r\n    <div class=\"unit\" id=\"unit-5\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 5<\/span>\r\n        <h2>Object-Oriented Programming (OOP) Basics<\/h2>\r\n        <p>Understanding classes, objects, encapsulation, and constructors\/destructors<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is OOP?<\/h3>\r\n        <p><strong>Object-Oriented Programming (OOP)<\/strong> is a programming paradigm based on the concept of \"objects\" that contain data (attributes) and code (methods). It models real-world entities as objects.<\/p>\r\n\r\n        <div class=\"info-box\">\ud83d\udca1 <strong>Real-world Analogy:<\/strong> A car is an object. It has properties (color, model, speed) and behaviors (start, stop, accelerate). Similarly, in OOP, objects have data members and member functions!<\/div>\r\n\r\n        <h3>OOP vs Procedural Programming<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Aspect<\/th><th>Procedural (C)<\/th><th>Object-Oriented (C++)<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Focus<\/td><td>Functions\/procedures<\/td><td>Objects (data + functions together)<\/td><\/tr>\r\n            <tr><td>Data Security<\/td><td>Less (global data accessible)<\/td><td>More (encapsulation, private data)<\/td><\/tr>\r\n            <tr><td>Reusability<\/td><td>Limited<\/td><td>High (inheritance, polymorphism)<\/td><\/tr>\r\n            <tr><td>Real-world Modeling<\/td><td>Difficult<\/td><td>Easy (objects represent real entities)<\/td><\/tr>\r\n            <tr><td>Maintenance<\/td><td>Harder for large projects<\/td><td>Easier (modularity)<\/td><\/tr>\r\n            <tr><td>Example<\/td><td>C language<\/td><td>C++, Java, Python<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Four Pillars of OOP<\/h3>\r\n\r\n        <div class=\"concept-grid\">\r\n          <div class=\"concept-card\">\r\n            <div class=\"concept-name\">1\ufe0f\u20e3 Encapsulation<\/div>\r\n            <div class=\"concept-rule\">Bundling data & methods together, hiding internal details<\/div>\r\n          <\/div>\r\n          <div class=\"concept-card\">\r\n            <div class=\"concept-name\">2\ufe0f\u20e3 Abstraction<\/div>\r\n            <div class=\"concept-rule\">Showing only essential features, hiding implementation<\/div>\r\n          <\/div>\r\n          <div class=\"concept-card\">\r\n            <div class=\"concept-name\">3\ufe0f\u20e3 Inheritance<\/div>\r\n            <div class=\"concept-rule\">Creating new class from existing class (reusability)<\/div>\r\n          <\/div>\r\n          <div class=\"concept-card\">\r\n            <div class=\"concept-name\">4\ufe0f\u20e3 Polymorphism<\/div>\r\n            <div class=\"concept-rule\">Same name, different behaviors (overloading, overriding)<\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <h3>Class & Object<\/h3>\r\n\r\n        <p><strong>Class:<\/strong> Blueprint\/template for creating objects. Defines structure and behavior.<\/p>\r\n        <p><strong>Object:<\/strong> Instance of a class. Actual entity created from class blueprint.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Class Definition<\/span>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Car<\/span> {\r\n    <span class=\"kw\">public<\/span>:          <span class=\"cm\">\/\/ Access specifier<\/span>\r\n        <span class=\"cm\">\/\/ Data members (attributes\/properties)<\/span>\r\n        <span class=\"kw\">string<\/span> brand;\r\n        <span class=\"kw\">string<\/span> model;\r\n        <span class=\"kw\">int<\/span> year;\r\n        \r\n        <span class=\"cm\">\/\/ Member functions (methods\/behaviors)<\/span>\r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">displayInfo<\/span>() {\r\n            cout &lt;&lt; <span class=\"st\">\"Brand: \"<\/span> &lt;&lt; brand &lt;&lt; endl;\r\n            cout &lt;&lt; <span class=\"st\">\"Model: \"<\/span> &lt;&lt; model &lt;&lt; endl;\r\n            cout &lt;&lt; <span class=\"st\">\"Year: \"<\/span> &lt;&lt; year &lt;&lt; endl;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    <span class=\"cm\">\/\/ Creating objects (instances of class)<\/span>\r\n    Car car1;  <span class=\"cm\">\/\/ Object 1<\/span>\r\n    Car car2;  <span class=\"cm\">\/\/ Object 2<\/span>\r\n    \r\n    <span class=\"cm\">\/\/ Accessing members using dot operator<\/span>\r\n    car1.brand = <span class=\"st\">\"Toyota\"<\/span>;\r\n    car1.model = <span class=\"st\">\"Corolla\"<\/span>;\r\n    car1.year = 2023;\r\n    \r\n    car2.brand = <span class=\"st\">\"Honda\"<\/span>;\r\n    car2.model = <span class=\"st\">\"Civic\"<\/span>;\r\n    car2.year = 2022;\r\n    \r\n    car1.<span class=\"fn\">displayInfo<\/span>();\r\n    car2.<span class=\"fn\">displayInfo<\/span>();\r\n    \r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Analogy:<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>Class = Cookie Cutter:<\/strong> Design\/template<\/li>\r\n          <li><strong>Object = Cookie:<\/strong> Actual item created from template<\/li>\r\n          <li>One cookie cutter (class) can make many cookies (objects)<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Access Specifiers<\/h3>\r\n        <p>Control visibility of class members (data & functions).<\/p>\r\n\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Specifier<\/th><th>Access From Class<\/th><th>Access From Outside<\/th><th>Access From Derived Class<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td><strong>public<\/strong><\/td><td>\u2705 Yes<\/td><td>\u2705 Yes<\/td><td>\u2705 Yes<\/td><\/tr>\r\n            <tr><td><strong>private<\/strong><\/td><td>\u2705 Yes<\/td><td>\u274c No<\/td><td>\u274c No<\/td><\/tr>\r\n            <tr><td><strong>protected<\/strong><\/td><td>\u2705 Yes<\/td><td>\u274c No<\/td><td>\u2705 Yes<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Student<\/span> {\r\n    <span class=\"kw\">private<\/span>:     <span class=\"cm\">\/\/ Accessible only within class<\/span>\r\n        <span class=\"kw\">int<\/span> rollNo;\r\n        <span class=\"kw\">string<\/span> name;\r\n    \r\n    <span class=\"kw\">public<\/span>:      <span class=\"cm\">\/\/ Accessible from anywhere<\/span>\r\n        <span class=\"cm\">\/\/ Setter methods (to set private data)<\/span>\r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">setData<\/span>(<span class=\"kw\">int<\/span> r, <span class=\"kw\">string<\/span> n) {\r\n            rollNo = r;\r\n            name = n;\r\n        }\r\n        \r\n        <span class=\"cm\">\/\/ Getter methods (to get private data)<\/span>\r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">displayData<\/span>() {\r\n            cout &lt;&lt; <span class=\"st\">\"Roll No: \"<\/span> &lt;&lt; rollNo &lt;&lt; endl;\r\n            cout &lt;&lt; <span class=\"st\">\"Name: \"<\/span> &lt;&lt; name &lt;&lt; endl;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    Student s1;\r\n    <span class=\"cm\">\/\/ s1.rollNo = 101;  \/\/ ERROR: rollNo is private<\/span>\r\n    \r\n    s1.<span class=\"fn\">setData<\/span>(101, <span class=\"st\">\"Ali\"<\/span>);  <span class=\"cm\">\/\/ Use public method to set private data<\/span>\r\n    s1.<span class=\"fn\">displayData<\/span>();\r\n    \r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Why private members?<\/strong><\/p>\r\n        <ul>\r\n          <li><strong>Data Hiding:<\/strong> Protect data from accidental modification<\/li>\r\n          <li><strong>Validation:<\/strong> Control how data is set (e.g., age can't be negative)<\/li>\r\n          <li><strong>Flexibility:<\/strong> Change internal implementation without affecting outside code<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Encapsulation<\/h3>\r\n        <p>Wrapping data (variables) and code (methods) together as a single unit. Achieved using classes.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">BankAccount<\/span> {\r\n    <span class=\"kw\">private<\/span>:\r\n        <span class=\"kw\">double<\/span> balance;  <span class=\"cm\">\/\/ Hidden from outside<\/span>\r\n    \r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"cm\">\/\/ Constructor<\/span>\r\n        <span class=\"fn\">BankAccount<\/span>(<span class=\"kw\">double<\/span> initialBalance) {\r\n            balance = initialBalance;\r\n        }\r\n        \r\n        <span class=\"cm\">\/\/ Controlled access through methods<\/span>\r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">deposit<\/span>(<span class=\"kw\">double<\/span> amount) {\r\n            <span class=\"kw\">if<\/span>(amount &gt; 0) {\r\n                balance += amount;\r\n                cout &lt;&lt; <span class=\"st\">\"Deposited: \"<\/span> &lt;&lt; amount &lt;&lt; endl;\r\n            }\r\n        }\r\n        \r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">withdraw<\/span>(<span class=\"kw\">double<\/span> amount) {\r\n            <span class=\"kw\">if<\/span>(amount &gt; 0 && amount &lt;= balance) {\r\n                balance -= amount;\r\n                cout &lt;&lt; <span class=\"st\">\"Withdrawn: \"<\/span> &lt;&lt; amount &lt;&lt; endl;\r\n            } <span class=\"kw\">else<\/span> {\r\n                cout &lt;&lt; <span class=\"st\">\"Insufficient balance!\"<\/span> &lt;&lt; endl;\r\n            }\r\n        }\r\n        \r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">checkBalance<\/span>() {\r\n            cout &lt;&lt; <span class=\"st\">\"Balance: \"<\/span> &lt;&lt; balance &lt;&lt; endl;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    BankAccount acc(1000);  <span class=\"cm\">\/\/ Initial balance 1000<\/span>\r\n    acc.<span class=\"fn\">deposit<\/span>(500);\r\n    acc.<span class=\"fn\">withdraw<\/span>(200);\r\n    acc.<span class=\"fn\">checkBalance<\/span>();  <span class=\"cm\">\/\/ 1300<\/span>\r\n    \r\n    <span class=\"cm\">\/\/ Can't directly access balance: acc.balance = 0; (ERROR)<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>Constructors<\/h3>\r\n        <p>Special member function automatically called when object is created. Used to initialize object.<\/p>\r\n\r\n        <p><strong>Types of Constructors:<\/strong><\/p>\r\n\r\n        <p><strong>1. Default Constructor (No parameters)<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Box<\/span> {\r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"kw\">int<\/span> length;\r\n        \r\n        <span class=\"cm\">\/\/ Default Constructor<\/span>\r\n        <span class=\"fn\">Box<\/span>() {\r\n            length = 0;\r\n            cout &lt;&lt; <span class=\"st\">\"Default Constructor called\"<\/span> &lt;&lt; endl;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    Box b1;  <span class=\"cm\">\/\/ Constructor called automatically<\/span>\r\n    cout &lt;&lt; <span class=\"st\">\"Length: \"<\/span> &lt;&lt; b1.length &lt;&lt; endl;  <span class=\"cm\">\/\/ 0<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>2. Parameterized Constructor<\/strong><\/p>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Rectangle<\/span> {\r\n    <span class=\"kw\">private<\/span>:\r\n        <span class=\"kw\">int<\/span> length, width;\r\n    \r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"cm\">\/\/ Parameterized Constructor<\/span>\r\n        <span class=\"fn\">Rectangle<\/span>(<span class=\"kw\">int<\/span> l, <span class=\"kw\">int<\/span> w) {\r\n            length = l;\r\n            width = w;\r\n        }\r\n        \r\n        <span class=\"kw\">int<\/span> <span class=\"fn\">area<\/span>() {\r\n            <span class=\"kw\">return<\/span> length * width;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    Rectangle r1(10, 5);  <span class=\"cm\">\/\/ Pass values to constructor<\/span>\r\n    cout &lt;&lt; <span class=\"st\">\"Area: \"<\/span> &lt;&lt; r1.<span class=\"fn\">area<\/span>() &lt;&lt; endl;  <span class=\"cm\">\/\/ 50<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>3. Copy Constructor<\/strong><\/p>\r\n        <p>Creates object by copying another object of same class.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Point<\/span> {\r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"kw\">int<\/span> x, y;\r\n        \r\n        <span class=\"cm\">\/\/ Parameterized Constructor<\/span>\r\n        <span class=\"fn\">Point<\/span>(<span class=\"kw\">int<\/span> a, <span class=\"kw\">int<\/span> b) {\r\n            x = a;\r\n            y = b;\r\n        }\r\n        \r\n        <span class=\"cm\">\/\/ Copy Constructor<\/span>\r\n        <span class=\"fn\">Point<\/span>(<span class=\"kw\">const<\/span> Point &p) {\r\n            x = p.x;\r\n            y = p.y;\r\n            cout &lt;&lt; <span class=\"st\">\"Copy Constructor called\"<\/span> &lt;&lt; endl;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    Point p1(10, 20);\r\n    Point p2 = p1;  <span class=\"cm\">\/\/ Copy constructor called<\/span>\r\n    \r\n    cout &lt;&lt; <span class=\"st\">\"p2: (\"<\/span> &lt;&lt; p2.x &lt;&lt; <span class=\"st\">\", \"<\/span> &lt;&lt; p2.y &lt;&lt; <span class=\"st\">\")\"<\/span> &lt;&lt; endl;  <span class=\"cm\">\/\/ (10, 20)<\/span>\r\n    <span class=\"kw\">return<\/span> 0;\r\n}\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Constructor Rules:<\/strong><\/p>\r\n        <ul>\r\n          <li>Same name as class<\/li>\r\n          <li>No return type (not even void)<\/li>\r\n          <li>Automatically called when object created<\/li>\r\n          <li>Can be overloaded (multiple constructors with different parameters)<\/li>\r\n          <li>If no constructor defined, compiler provides default constructor<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Destructor<\/h3>\r\n        <p>Special member function automatically called when object is destroyed. Used to release resources (memory, files, etc.).<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Demo<\/span> {\r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"cm\">\/\/ Constructor<\/span>\r\n        <span class=\"fn\">Demo<\/span>() {\r\n            cout &lt;&lt; <span class=\"st\">\"Constructor called\"<\/span> &lt;&lt; endl;\r\n        }\r\n        \r\n        <span class=\"cm\">\/\/ Destructor (~ before class name)<\/span>\r\n        ~<span class=\"fn\">Demo<\/span>() {\r\n            cout &lt;&lt; <span class=\"st\">\"Destructor called\"<\/span> &lt;&lt; endl;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    Demo d1;  <span class=\"cm\">\/\/ Constructor called<\/span>\r\n    cout &lt;&lt; <span class=\"st\">\"Inside main\"<\/span> &lt;&lt; endl;\r\n    <span class=\"kw\">return<\/span> 0;  <span class=\"cm\">\/\/ Destructor called when d1 goes out of scope<\/span>\r\n}\r\n<span class=\"cm\">\/* Output:\r\nConstructor called\r\nInside main\r\nDestructor called\r\n*\/<\/span>\r\n<\/pre><\/div>\r\n\r\n        <p><strong>Destructor Rules:<\/strong><\/p>\r\n        <ul>\r\n          <li>Same name as class with ~ (tilde) prefix<\/li>\r\n          <li>No parameters, no return type<\/li>\r\n          <li>Only one destructor per class (cannot be overloaded)<\/li>\r\n          <li>Automatically called when object destroyed<\/li>\r\n        <\/ul>\r\n\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Create a Student class with private data members (name, rollNo, marks). Include: (1) Parameterized constructor, (2) Copy constructor, (3) Member functions to set\/get data, (4) Calculate percentage, (5) Destructor. Create multiple objects and test all functions.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n\r\n    <!-- REMAINING UNITS - CONCISE BUT COMPLETE COVERAGE -->\r\n    \r\n    <!-- UNIT 6: Inheritance -->\r\n    <div class=\"unit\" id=\"unit-6\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 6<\/span>\r\n        <h2>Inheritance & Access Specifiers<\/h2>\r\n        <p>Code reusability through parent-child class relationships<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is Inheritance?<\/h3>\r\n        <p><strong>Inheritance<\/strong> is mechanism where new class (derived\/child) acquires properties and behaviors of existing class (base\/parent). Promotes code reusability.<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Base Class (Parent)<\/span>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Animal<\/span> {\r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">eat<\/span>() { cout &lt;&lt; <span class=\"st\">\"Eating...\"<\/span> &lt;&lt; endl; }\r\n};\r\n\r\n<span class=\"cm\">\/\/ Derived Class (Child) - inherits from Animal<\/span>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Dog<\/span> : <span class=\"kw\">public<\/span> Animal {\r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">bark<\/span>() { cout &lt;&lt; <span class=\"st\">\"Barking...\"<\/span> &lt;&lt; endl; }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    Dog d;\r\n    d.<span class=\"fn\">eat<\/span>();   <span class=\"cm\">\/\/ Inherited from Animal<\/span>\r\n    d.<span class=\"fn\">bark<\/span>();  <span class=\"cm\">\/\/ Own method<\/span>\r\n}\r\n<\/pre><\/div>\r\n\r\n        <h3>Types of Inheritance<\/h3>\r\n        <ul>\r\n          <li><strong>Single:<\/strong> One base, one derived (A \u2192 B)<\/li>\r\n          <li><strong>Multiple:<\/strong> One derived, multiple bases (A, B \u2192 C)<\/li>\r\n          <li><strong>Multilevel:<\/strong> Chain (A \u2192 B \u2192 C)<\/li>\r\n          <li><strong>Hierarchical:<\/strong> One base, multiple derived (A \u2192 B, C, D)<\/li>\r\n          <li><strong>Hybrid:<\/strong> Combination of above<\/li>\r\n        <\/ul>\r\n\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Create Person (base) and Student (derived) classes. Student inherits name, age from Person and adds rollNo, marks. Demonstrate inheritance with objects.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 7: Polymorphism -->\r\n    <div class=\"unit\" id=\"unit-7\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 7<\/span>\r\n        <h2>Polymorphism & Virtual Functions<\/h2>\r\n        <p>Same interface, different implementations - function\/operator overloading, virtual functions<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>Polymorphism Types<\/h3>\r\n        <p><strong>1. Compile-time (Static):<\/strong> Function Overloading, Operator Overloading<\/p>\r\n        <p><strong>2. Runtime (Dynamic):<\/strong> Virtual Functions, Function Overriding<\/p>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Virtual Function Example<\/span>\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Shape<\/span> {\r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"kw\">virtual void<\/span> <span class=\"fn\">draw<\/span>() {  <span class=\"cm\">\/\/ Virtual function<\/span>\r\n            cout &lt;&lt; <span class=\"st\">\"Drawing Shape\"<\/span> &lt;&lt; endl;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Circle<\/span> : <span class=\"kw\">public<\/span> Shape {\r\n    <span class=\"kw\">public<\/span>:\r\n        <span class=\"kw\">void<\/span> <span class=\"fn\">draw<\/span>() <span class=\"kw\">override<\/span> {  <span class=\"cm\">\/\/ Override<\/span>\r\n            cout &lt;&lt; <span class=\"st\">\"Drawing Circle\"<\/span> &lt;&lt; endl;\r\n        }\r\n};\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    Shape* s = <span class=\"kw\">new<\/span> Circle();  <span class=\"cm\">\/\/ Base pointer, derived object<\/span>\r\n    s-&gt;<span class=\"fn\">draw<\/span>();  <span class=\"cm\">\/\/ Calls Circle's draw (Runtime polymorphism)<\/span>\r\n    <span class=\"kw\">delete<\/span> s;\r\n}\r\n<\/pre><\/div>\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Create base class Vehicle with virtual function speed(). Derive Car, Bike classes overriding speed(). Demonstrate polymorphism using base pointer.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 8-15: Concise Coverage -->\r\n    <div class=\"unit\" id=\"unit-8\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 8<\/span>\r\n        <h2>Pointers & Dynamic Memory<\/h2>\r\n        <p>Memory addresses, pointer operations, new\/delete operators<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>Pointer Basics<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> x = 10;\r\n<span class=\"kw\">int<\/span>* ptr = &x;  <span class=\"cm\">\/\/ Pointer stores address of x<\/span>\r\ncout &lt;&lt; *ptr &lt;&lt; endl;  <span class=\"cm\">\/\/ Dereferencing: prints value (10)<\/span>\r\n\r\n<span class=\"cm\">\/\/ Dynamic Memory<\/span>\r\n<span class=\"kw\">int<\/span>* p = <span class=\"kw\">new int<\/span>(25);  <span class=\"cm\">\/\/ Allocate memory on heap<\/span>\r\ncout &lt;&lt; *p &lt;&lt; endl;  <span class=\"cm\">\/\/ 25<\/span>\r\n<span class=\"kw\">delete<\/span> p;  <span class=\"cm\">\/\/ Free memory<\/span>\r\n<\/pre><\/div>\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Create dynamic array using new. Input values, find sum, then delete using delete[].<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"unit\" id=\"unit-9\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 9<\/span>\r\n        <h2>Arrays & Strings<\/h2>\r\n        <p>Collection of elements and string manipulation<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>Arrays<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">int<\/span> arr[5] = {10, 20, 30, 40, 50};\r\n<span class=\"kw\">for<\/span>(<span class=\"kw\">int<\/span> i=0; i&lt;5; i++) cout &lt;&lt; arr[i] &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n\r\n<span class=\"cm\">\/\/ 2D Array<\/span>\r\n<span class=\"kw\">int<\/span> matrix[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};\r\n<\/pre><\/div>\r\n        <h3>Strings<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">string<\/span> s = <span class=\"st\">\"Hello\"<\/span>;\r\ncout &lt;&lt; s.length() &lt;&lt; endl;  <span class=\"cm\">\/\/ 5<\/span>\r\ns += <span class=\"st\">\" World\"<\/span>;  <span class=\"cm\">\/\/ Concatenation<\/span>\r\ncout &lt;&lt; s.substr(0, 5) &lt;&lt; endl;  <span class=\"cm\">\/\/ \"Hello\"<\/span>\r\n<\/pre><\/div>\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Input array, find largest\/smallest, reverse array, check palindrome string.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"unit\" id=\"unit-10\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 10<\/span>\r\n        <h2>File Handling<\/h2>\r\n        <p>Reading from and writing to files<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>File Operations<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;fstream&gt;\r\n\r\n<span class=\"cm\">\/\/ Writing to file<\/span>\r\nofstream outfile(<span class=\"st\">\"data.txt\"<\/span>);\r\noutfile &lt;&lt; <span class=\"st\">\"Hello File!\"<\/span> &lt;&lt; endl;\r\noutfile.close();\r\n\r\n<span class=\"cm\">\/\/ Reading from file<\/span>\r\nifstream infile(<span class=\"st\">\"data.txt\"<\/span>);\r\n<span class=\"kw\">string<\/span> line;\r\n<span class=\"kw\">while<\/span>(getline(infile, line)) {\r\n    cout &lt;&lt; line &lt;&lt; endl;\r\n}\r\ninfile.close();\r\n<\/pre><\/div>\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Create student record system: write student data to file, read and display all records.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"unit\" id=\"unit-11\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 11<\/span>\r\n        <h2>Exception Handling<\/h2>\r\n        <p>Handling runtime errors gracefully using try-catch<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>try-catch Block<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">try<\/span> {\r\n    <span class=\"kw\">int<\/span> x = 10, y = 0;\r\n    <span class=\"kw\">if<\/span>(y == 0) <span class=\"kw\">throw<\/span> <span class=\"st\">\"Division by zero!\"<\/span>;\r\n    cout &lt;&lt; x\/y;\r\n}\r\n<span class=\"kw\">catch<\/span>(<span class=\"kw\">const char<\/span>* msg) {\r\n    cout &lt;&lt; <span class=\"st\">\"Error: \"<\/span> &lt;&lt; msg &lt;&lt; endl;\r\n}\r\n<\/pre><\/div>\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Write program with array index exception handling. Catch out-of-bounds access.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"unit\" id=\"unit-12\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 12<\/span>\r\n        <h2>Templates & Generic Programming<\/h2>\r\n        <p>Write code that works with any data type<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>Function Templates<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">template<\/span> &lt;<span class=\"kw\">typename<\/span> T&gt;\r\nT <span class=\"fn\">add<\/span>(T a, T b) {\r\n    <span class=\"kw\">return<\/span> a + b;\r\n}\r\n\r\n<span class=\"kw\">int<\/span> <span class=\"fn\">main<\/span>() {\r\n    cout &lt;&lt; <span class=\"fn\">add<\/span>(5, 3) &lt;&lt; endl;        <span class=\"cm\">\/\/ int version<\/span>\r\n    cout &lt;&lt; <span class=\"fn\">add<\/span>(5.5, 3.2) &lt;&lt; endl;    <span class=\"cm\">\/\/ double version<\/span>\r\n}\r\n<\/pre><\/div>\r\n        <h3>Class Templates<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">template<\/span> &lt;<span class=\"kw\">typename<\/span> T&gt;\r\n<span class=\"kw\">class<\/span> <span class=\"fn\">Pair<\/span> {\r\n    T first, second;\r\n<span class=\"kw\">public<\/span>:\r\n    <span class=\"fn\">Pair<\/span>(T a, T b) : first(a), second(b) {}\r\n    T <span class=\"fn\">getMax<\/span>() { <span class=\"kw\">return<\/span> (first &gt; second) ? first : second; }\r\n};\r\n<\/pre><\/div>\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Create template function to swap two values. Test with int, double, string.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"unit\" id=\"unit-13\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 13<\/span>\r\n        <h2>Standard Template Library (STL)<\/h2>\r\n        <p>Pre-built containers, algorithms, and iterators<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>STL Containers<\/h3>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;vector&gt;\r\n<span class=\"kw\">#include<\/span> &lt;map&gt;\r\n\r\n<span class=\"cm\">\/\/ Vector (Dynamic Array)<\/span>\r\nvector&lt;<span class=\"kw\">int<\/span>&gt; v = {10, 20, 30};\r\nv.push_back(40);  <span class=\"cm\">\/\/ Add element<\/span>\r\n\r\n<span class=\"cm\">\/\/ Map (Key-Value pairs)<\/span>\r\nmap&lt;<span class=\"kw\">string<\/span>, <span class=\"kw\">int<\/span>&gt; ages;\r\nages[<span class=\"st\">\"Ali\"<\/span>] = 20;\r\nages[<span class=\"st\">\"Sara\"<\/span>] = 22;\r\n<\/pre><\/div>\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Use vector to store student marks. Sort using STL sort(). Find average.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"unit\" id=\"unit-14\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 14<\/span>\r\n        <h2>Data Structures in C++<\/h2>\r\n        <p>Implementing fundamental data structures<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>Common Data Structures<\/h3>\r\n        <ul>\r\n          <li><strong>Stack:<\/strong> LIFO (Last In First Out) - push, pop operations<\/li>\r\n          <li><strong>Queue:<\/strong> FIFO (First In First Out) - enqueue, dequeue<\/li>\r\n          <li><strong>Linked List:<\/strong> Dynamic size, non-contiguous memory<\/li>\r\n          <li><strong>Binary Tree:<\/strong> Hierarchical structure, each node has max 2 children<\/li>\r\n          <li><strong>Graph:<\/strong> Nodes connected by edges<\/li>\r\n        <\/ul>\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"kw\">#include<\/span> &lt;stack&gt;\r\nstack&lt;<span class=\"kw\">int<\/span>&gt; s;\r\ns.push(10);\r\ns.push(20);\r\ncout &lt;&lt; s.top() &lt;&lt; endl;  <span class=\"cm\">\/\/ 20<\/span>\r\ns.pop();\r\n<\/pre><\/div>\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Implement stack using array. Add push, pop, display operations.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"unit\" id=\"unit-15\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 15<\/span>\r\n        <h2>Advanced C++ Topics<\/h2>\r\n        <p>Modern C++ features and best practices<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>C++11\/14\/17\/20 Features<\/h3>\r\n        <ul>\r\n          <li><strong>auto keyword:<\/strong> Automatic type deduction<\/li>\r\n          <li><strong>Range-based for:<\/strong> <code>for(auto x : vector)<\/code><\/li>\r\n          <li><strong>Lambda expressions:<\/strong> Anonymous functions<\/li>\r\n          <li><strong>Smart pointers:<\/strong> unique_ptr, shared_ptr (automatic memory management)<\/li>\r\n          <li><strong>Move semantics:<\/strong> Efficient resource transfer<\/li>\r\n          <li><strong>constexpr:<\/strong> Compile-time constants<\/li>\r\n        <\/ul>\r\n\r\n        <div class=\"code-block\"><pre>\r\n<span class=\"cm\">\/\/ Modern C++ Examples<\/span>\r\n<span class=\"kw\">auto<\/span> x = 10;  <span class=\"cm\">\/\/ auto deduces type as int<\/span>\r\n\r\nvector&lt;<span class=\"kw\">int<\/span>&gt; v = {1, 2, 3, 4, 5};\r\n<span class=\"kw\">for<\/span>(<span class=\"kw\">auto<\/span> num : v) {  <span class=\"cm\">\/\/ Range-based for<\/span>\r\n    cout &lt;&lt; num &lt;&lt; <span class=\"st\">\" \"<\/span>;\r\n}\r\n\r\n<span class=\"cm\">\/\/ Lambda function<\/span>\r\n<span class=\"kw\">auto<\/span> add = [](<span class=\"kw\">int<\/span> a, <span class=\"kw\">int<\/span> b) { <span class=\"kw\">return<\/span> a + b; };\r\ncout &lt;&lt; add(5, 3) &lt;&lt; endl;  <span class=\"cm\">\/\/ 8<\/span>\r\n<\/pre><\/div>\r\n\r\n        <h3>Best Practices<\/h3>\r\n        <div class=\"feature-grid\">\r\n          <div class=\"feature-item\">\u2705 Use meaningful variable names<\/div>\r\n          <div class=\"feature-item\">\u2705 Follow consistent coding style<\/div>\r\n          <div class=\"feature-item\">\u2705 Add comments for complex logic<\/div>\r\n          <div class=\"feature-item\">\u2705 Use const for constants<\/div>\r\n          <div class=\"feature-item\">\u2705 Prefer references over pointers<\/div>\r\n          <div class=\"feature-item\">\u2705 Use smart pointers for dynamic memory<\/div>\r\n          <div class=\"feature-item\">\u2705 Handle exceptions properly<\/div>\r\n          <div class=\"feature-item\">\u2705 Write modular, reusable code<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"practice\">\u270f\ufe0f <strong>Practice:<\/strong> Revise all concepts. Build a comprehensive project: Student Management System with classes, file I\/O, exception handling, and STL containers.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- CONGRATULATIONS SECTION -->\r\n    <div class=\"congrats\">\r\n      <h2>\ud83c\udf89 Congratulations!<\/h2>\r\n      <p>You've completed C++ Programming course! You now have solid foundation in C++ - from basics to advanced OOP, STL, and modern features. Keep practicing and building projects! \ud83d\udcbb\ud83d\ude80<\/p>\r\n    <\/div>\r\n\r\n  <\/main>\r\n<\/div>\r\n\r\n<!-- BACK TO TOP BUTTON -->\r\n<button id=\"back-top\">\u2191<\/button>\r\n\r\n<!-- FOOTER -->\r\n<footer style=\"background:var(--dark);color:var(--light);padding:2rem 1.5rem;text-align:center;margin-top:3rem;\">\r\n  <p style=\"margin:0;font-size:.9rem;\">\u00a9 2024 <strong>Pak Notes Hub<\/strong> \u2014 www.paknoteshub.online<\/p>\r\n  <p style=\"margin:.5rem 0 0;font-size:.82rem;color:#a6acaf;\">Complete University-Level C++ Programming Notes in Easy English<\/p>\r\n<\/footer>\r\n\r\n<script>\r\n\/\/ PROGRESS BAR\r\nwindow.addEventListener('scroll',()=>{\r\n  let h=document.documentElement,b=document.body,st='scrollTop',sh='scrollHeight';\r\n  let per=(h[st]||b[st])\/((h[sh]||b[sh])-h.clientHeight)*100;\r\n  document.getElementById('progress').style.width=per+'%';\r\n});\r\n\r\n\/\/ BACK TO TOP BUTTON\r\nlet backTop=document.getElementById('back-top');\r\nwindow.addEventListener('scroll',()=>{\r\n  backTop.classList.toggle('visible',window.pageYOffset>300);\r\n});\r\nbackTop.addEventListener('click',()=>{\r\n  window.scrollTo({top:0,behavior:'smooth'});\r\n});\r\n\r\n\/\/ ACTIVE NAV LINK\r\nlet units=document.querySelectorAll('.unit');\r\nlet navLinks=document.querySelectorAll('.toc-list a');\r\nwindow.addEventListener('scroll',()=>{\r\n  let cur='';\r\n  units.forEach(u=>{\r\n    let top=u.offsetTop;\r\n    if(pageYOffset>=top-100)cur=u.getAttribute('id');\r\n  });\r\n  navLinks.forEach(l=>{\r\n    l.classList.remove('active');\r\n    if(l.getAttribute('href')==='#'+cur)l.classList.add('active');\r\n  });\r\n});\r\n\r\n\/\/ SEARCH MODAL\r\nlet searchBtn=document.getElementById('searchBtn');\r\nlet searchModal=document.getElementById('searchModal');\r\nlet closeSearch=document.getElementById('closeSearch');\r\nlet searchInput=document.getElementById('searchInput');\r\nlet searchResults=document.getElementById('searchResults');\r\n\r\nsearchBtn.addEventListener('click',()=>{\r\n  searchModal.style.display='block';\r\n  searchInput.focus();\r\n});\r\n\r\ncloseSearch.addEventListener('click',()=>{\r\n  searchModal.style.display='none';\r\n  searchInput.value='';\r\n  searchResults.innerHTML='';\r\n});\r\n\r\nsearchModal.addEventListener('click',(e)=>{\r\n  if(e.target===searchModal){\r\n    searchModal.style.display='none';\r\n    searchInput.value='';\r\n    searchResults.innerHTML='';\r\n  }\r\n});\r\n\r\nsearchInput.addEventListener('input',(e)=>{\r\n  let query=e.target.value.toLowerCase().trim();\r\n  if(query.length<2){searchResults.innerHTML='';return;}\r\n  \r\n  let allText=document.querySelectorAll('.unit-body h3, .unit-body p, .unit-body li');\r\n  let results=[];\r\n  let seen=new Set();\r\n  \r\n  allText.forEach(el=>{\r\n    let text=el.textContent;\r\n    if(text.toLowerCase().includes(query) && !seen.has(text)){\r\n      let unit=el.closest('.unit');\r\n      let unitTitle=unit.querySelector('.unit-header h2').textContent;\r\n      let unitId=unit.getAttribute('id');\r\n      results.push({text:text.substring(0,150),unit:unitTitle,id:unitId});\r\n      seen.add(text);\r\n    }\r\n  });\r\n  \r\n  if(results.length===0){\r\n    searchResults.innerHTML='<p style=\"color:#999;padding:1rem;\">No results found<\/p>';\r\n  }else{\r\n    let html='';\r\n    results.slice(0,10).forEach(r=>{\r\n      html+=`<div style=\"border-bottom:1px solid #eee;padding:.8rem 0;\"><a href=\"#${r.id}\" style=\"text-decoration:none;color:var(--green);font-weight:600;font-size:.9rem;\" onclick=\"document.getElementById('searchModal').style.display='none'\">${r.unit}<\/a><p style=\"margin:.3rem 0 0;font-size:.82rem;color:#666;\">${r.text}...<\/p><\/div>`;\r\n    });\r\n    searchResults.innerHTML=html;\r\n  }\r\n});\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>C++ Complete Programming Course \u2013 University Level \u2013 Pak Notes Hub Pak Notes Hub Course Outline Start Learning OOP Advanced Topics \ud83d\udd0d Search \ud83d\udd0d Search Course Content &times; \ud83d\udcbb University \/ College Level \u2014 BS Computer Science \/ Software Engineering C++ ProgrammingComplete Course Basics \u00b7 OOP \u00b7 STL \u00b7 Data Structures \u00b7 Advanced Concepts \u2014 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"page_builder":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-700","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/posts\/700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=700"}],"version-history":[{"count":4,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/posts\/700\/revisions"}],"predecessor-version":[{"id":704,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/posts\/700\/revisions\/704"}],"wp:attachment":[{"href":"https:\/\/paknoteshub.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}