learnxinyminutes-docs/pascal.html.markdown
2018-10-02 13:55:35 -07:00

3.9 KiB
Raw Blame History

language filename contributors
Pascal learnpascal.pas
Ganesha Danu
http://github.com/blinfoldking
Keith Miyake
https://github.com/kaymmm

Pascal is an imperative and procedural programming language, which Niklaus Wirth designed in 196869 and published in 1970, as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named in honor of the French mathematician, philosopher and physicist Blaise Pascal. source : wikipedia

to compile and run a pascal program you could use a free pascal compiler. Download Here

//Anathomy of a Pascal Program
//this is a comment
{
    this is a 
    multiline comment
}

//name of the program
program learn_pascal; //<-- dont forget a semicolon

type
    {
        this is where you should delcare a custom
        data-types
    }
var
    {
        this is where you should declare a variable
    }

//main program area
begin
    {
        area to declare your instruction
    }
end. // End of a main program area should required a "." symbol
//declaring variable
//you can do this
var a:integer;
var b:integer;
//or this
var 
    a : integer;
    b : integer;
//or this
var a,b : integer;
program Learn_More;
//Lets learn about data types and their operations

//Declaring variables
var 
    int : integer; // a variable that contains an integer number data types
    ch  : char;    // a variable that contains a character data types
    str : string; // a variable that contains a string data types
    r   : real;   // a variable that contains a real number data types
    bool : boolean; //a variables that contains a Boolean(True/False) value data types
Begin
    int := 1;// how to assign a value to a variable
    r   := 3.14;
    ch  := 'a';
    str := 'apple';
    bool := true;
    //pascal is not a case-sensitive language
    //arithmethic operation
    int := 1 + 1; // int = 2 overwriting the previous assignment
    int := int + 1; // int = 2 + 1 = 3;
    int := 4 div 2; //int = 2 a division operation which the result will be floored
    int := 3 div 2; //int = 1
    int := 1 div 2; //int = 0

    bool := true or false; // bool = true
    bool := false and true; // bool = false
    bool := true xor true; // bool = false
    
    r := 3 / 2; // a division operator for real
    r := int; // you can assign an integer to a real variable but not the otherwise

    c := str[1]; // assign the first letter of str to c
    str := 'hello' + 'world'; //combining strings
End.
program Functional_Programming;

Var
    i, dummy : integer;

function factorial_recursion(const a: integer) : integer;
{ recursively calculates the factorial of integer parameter a }

// Declare local variables within the function
// e.g.:
// Var
//    local_a : integer;

Begin
    If a >= 1 Then
    // return values from functions by assigning a value to the function name
        factorial_recursion := a * factorial_recursion(a-1)
    Else
        factorial_recursion := 1;
End; // terminate a function using a semicolon after the End statement.

procedure get_integer(var i : integer; dummy : integer);
{ get user input and store it in the integer parameter i.
  parameters prefaced with 'var' are variable, meaning their value can change
  outside of the parameter. Value parameters (without 'var') like 'dummy' are
  static and changes made within the scope of the function/procedure do not
  affect the variable passed as a parameter }

Begin
    write('Enter an integer: ');
    readln(i);
    dummy := 4; // dummy will not change value outside of the procedure
End;

Begin // main program block
    dummy := 3;
    get_integer(i, dummy);
    writeln(i, '! = ', factorial_recursion(i));
    // outputs i!
    writeln('dummy = ', dummy); // always outputs '3' since dummy is unchanged.
End.