> For the complete documentation index, see [llms.txt](https://coding-courses.gitbook.io/matlab/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coding-courses.gitbook.io/matlab/matlab-programming/intro-to-matlab-programming.md).

# Intro to MATLAB Programming

In this chapter, you will familiarise yourself with the basics of programming i.e. Control-Flow, Custom Functions and Debugging, both abstractly and in MATLAB.

We start this section with an abstract introduction into the Fundamentals of Programming. You will learn about the basic tools for control flow such as conditions and loops. The initial treatment of this is abstract and written in pseudo-code.

{% content-ref url="/pages/-Lp2ivNXGLquw9VtWzvE" %}
[Programming Fundamentals](/matlab/matlab-programming/programming-fundamentals.md)
{% endcontent-ref %}

After this, we will dive into the basics of Control Flow in MATLAB, building on the logical operators you have already learned in the 'Getting Started' section. Flow control allows us to write more complex programs by dividing the code into code blocks which are only executed when certain conditions are met or executing code block multiple times with different parameters i.e. creating loops.

{% content-ref url="/pages/-Lp2hyyP-LayhYO7Rk3I" %}
[Conditions](/matlab/matlab-programming/conditions.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Lp2i0fNWNrCcO4gpebt" %}
[Loops](/matlab/matlab-programming/loops.md)
{% endcontent-ref %}

Next, we will discuss how to write custom functions that allow us to execute code blocks in a dynamic way depending on the inputs to avoid repetitions (DRY principle) and provide abstraction.

{% content-ref url="/pages/-Lp2iDOFFR3o9krSDaju" %}
[Custom Functions](/matlab/matlab-programming/custom-functions.md)
{% endcontent-ref %}

We conclude with a very brief overview of Debugging in MATLAB.

{% content-ref url="/pages/-Lp2iKkJW8NOSlOUeFdW" %}
[Debugging](/matlab/matlab-programming/debugging.md)
{% endcontent-ref %}
