Rank 00: Foundations - kevshouse/exam_quest GitHub Wiki

Essential skills for 42 School's first common core exam

Rank 00: Foundations

Core Skills

  • C Syntax: Primitive types (int, char), operators (+, %), control flow (if/else)
  • Compilation: gcc -Wall -Wextra -Werror, basic Makefiles
  • Shell: cd/ls/mkdir/chmod, Git workflow (add/commit/push)
  • Norms: Variables at scope top, function length limits, forbidden for loops

Functional Patterns

// Pattern 1: Simple I/O (e.g., ft_putchar)
void ft_putchar(char c) {
    write(1, &c, 1);
}

// Pattern 2: Value modification (e.g., ft_ft)
void ft_ft(int *nbr) {
    *nbr = 42;  // Direct pointer assignment
}

// Pattern 3: Multi-param operations (e.g., ft_div_mod)
void ft_div_mod(int a, int b, int *div, int *mod) {
    *div = a / b;
    *mod = a % b;  // Multiple results via pointers
}

Key Exercises

Exercise Core Concept Norm Constraints ft_putstr String iteration No standard libraries ft_swap Pointer dereference No temporary variables ft_ultimate_div_mod Nested pointers Single assignment

Learning Path Dependencies

graph TD
    A[Shell Basics] -->|Environment Setup| B[Compilation]
    B -->|Debugging Foundation| C[C Syntax]
    C -->|Control Flow| D[Pointer Basics]
    D -->|Core Mechanism| E[Functional Patterns]
    E -->|Applied Practice| F[libft Exercises]
    
    subgraph Rank 00 Competencies
        A[Shell Basics<br><i>cd/ls/git</i>]
        B[Compilation<br><i>gcc flags</i>]
        C[C Syntax<br><i>Data types/if/else</i>]
        D[Pointer Basics<br><i>Address operators</i>]
        E[Functional Patterns<br><i>ft_ft/ft_swap</i>]
        F[libft Exercises<br><i>ft_putstr</i>]
    end
    
    style A fill:#6fa8dc,stroke:#1c5ca7
    style B fill:#8e7cc3,stroke:#4a2d9e
    style C fill:#93c47d,stroke:#38761d
    style D fill:#ffd966,stroke:#bf9000
    style E fill:#f6b26b,stroke:#e06666
    style F fill:#e06666,stroke:#990000
Loading

⚠️ Critical Path: Failure in pointer mastery blocks 80% of Rank 00 exercises. Prioritize ft_swap-style drills before complex tasks.

graph TD
    A[Shell Basics] -->|Environment Setup| B[Compilation]
    B -->|Enforces Correctness| C[C Syntax]
    C -->|Variable Foundation| D[Pointer Basics]
    D -->|Core Mechanism| E[Functional Patterns]
    E -->|Applied Practice| F[libft Exercises]
    D -->|Critical Path| G[Blocks 80% of Exercises]
    F -->|Requires| D
    F -->|Requires| C

    subgraph Key_Concepts
        A[Shell Basics<br><i>cd/ls/git</i>]
        B[Compilation<br><i>gcc -Wall -Wextra -Werror</i>]
        C[C Syntax<br><i>Data types/if/else</i>]
        D[Pointer Basics<br><i>& operator/* dereference</i>]
        E[Functional Patterns<br><i>ft_swap/ft_div_mod</i>]
        F[libft Exercises<br><i>ft_putstr/ft_ultimate_div_mod</i>]
        G[Critical Path<br><i>Master pointers first!</i>]
    end

    style A fill:#6fa8dc,stroke:#1c5ca7
    style B fill:#8e7cc3,stroke:#4a2d9e
    style C fill:#93c47d,stroke:#38761d
    style D fill:#ffd966,stroke:#bf9000
    style E fill:#f6b26b,stroke:#e06666
    style F fill:#e06666,stroke:#990000
    style G fill:#ff0000,stroke:#000000,color:#ffffff
Loading

Revision Protocol

  • Master shell navigation before writing code
  • Validate all compilations with -Wall -Wextra -Werror
  • Implement ft_putchar → ft_putstr → ft_swap in sequence
  • Test with edge cases: NULL inputs, max/min integers
⚠️ **GitHub.com Fallback** ⚠️