Learn pascal
This presentation is the property of its rightful owner.
Sponsored Links
1 / 74

Learn Pascal PowerPoint PPT Presentation


  • 300 Views
  • Uploaded on
  • Presentation posted in: General

Learn Pascal. Content. Backgournd Basics Input/Output Program Flow Data Types Subroutines. About Pascal. Origins: ALGOL Inventor: Dr. Niklaus Wirth Date of Birth: 1971 Feature: Simple, Precise, Procedure-oriented Classic Compilers: Turbo Pascal, Borland Pascal, Free Pascal

Download Presentation

Learn Pascal

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Learn pascal

Learn Pascal


Content

Content

  • Backgournd

  • Basics

  • Input/Output

  • Program Flow

  • Data Types

  • Subroutines


About pascal

About Pascal

  • Origins: ALGOL

  • Inventor: Dr. Niklaus Wirth

  • Date of Birth: 1971

  • Feature: Simple, Precise, Procedure-oriented

  • Classic Compilers: Turbo Pascal, Borland Pascal, Free Pascal

  • Extension: Object Pascal, Delphi


First pascal program

First Pascal Program

  • program Hello;

  • begin

  • WriteLn('Hello, world!');

  • end.


Program structure

Program Structure

  • program ProgramName;

  • const

  • { Constant Declarations }

  • type

  • { Type Declarations }

  • var

  • { Variable Declarations }


Program structure1

Program Structure

  • { Subroutine definitions }

  • begin

  • { Main program}

  • end.


Comments

Comments

  • { Comment }

  • (* Comment *)

  • // Line Comment, New in Delphi & Free Pascal


Identifiers

Identifiers

  • Name of programs, procedures, functions, types, constants, variables, etc.

  • Must begin with a letter or an underscore(_)

  • Can be followed by letters, digits, and underscores

  • NOT case-sensitive (i.e. ID=id=Id=iD)


Reserved words

Reserved Words


Types

Types

  • Simple Type

  • String Type

  • Structured Type

  • Pointer Type

  • Procedural Type


Simple types

Simple Types

  • Ordinary Types

    • Integer Types

    • Char Types

    • Boolean Types

  • Real Types


Integer types

Integer Types


Integer types extension

Integer Types (Extension)


Real types

Real Types


Constants

Constants

  • const

  • Identifier = value;

  • // Cannot be modified

  • Identifier : Type = value;

  • // Can be modified


Constants1

Constants

  • Example:

  • const

  • Name = 'Han Wentao'; // string

  • Message = 'That''s OK.'; // string

  • FirstLetter = 'a'; // Char

  • NewLine = #10; // Char

  • Year = 2003; // Integer

  • Pi = 3.141592653589793; // Real

  • IsInDebugMode = True; // Boolean

  • a : Real = 12; // Typed Real


Variables

Variables

  • var

  • Identifier : Type;

  • // Can be modified

  • Example:

  • var

  • i, j, Count : Integer;

  • FileName : string;


Assignment

Assignment

  • Symbol: :=

  • Format:

  • Variable := expression;

  • Example:

  • i := $FF;

  • Count := 0;

  • FileName := 'berry10.out';


Operators

Operators

  • Arithmetic Operators (+, -, *, /, mod, div)

  • Logical Operators (not, and, or, xor, shl, shr)

  • Boolean Operators (not, and, or, xor)

  • Relation Operators (=, <>, <, >, <=, >=)


Assignment operators examples

Assignment & Operators Examples

  • i := (123 + 456) * 789;

  • q1 := (1 + 10) div 3; // q1=3,Integer

  • q2 := (1 + 10) / 3; // q2=3.666667

  • Value := 123;

  • Radix := 16;

  • Remainder := Value mod Radix;

  • // Remainder=11


Standard routine

Standard Routine


Standard math routine

Standard Math Routine


Punctuation indentation

Punctuation & Indentation

  • You MUST have a semicolon(;) following:

    • the program heading

    • each constant definition

    • each variable declaration

    • almost all statements

  • Indentation is not necessary but useful. It makes your program readable.


Program task 1

Program Task 1

  • Input 3 real numbers, a, b, c, from keyboard, print out the 2 roots of the equation ax2+bx+c=0 on the screen. It is guaranteed that the roots must exist.

  • Sample Input

    • 1 -3 2

  • Sample Output

    • 2 1


My solution for task 1

My Solution for Task 1

  • program Task1;

  • var

  • a, b, c, Delta: Real;

  • begin

  • Read(a, b, c);

  • Delta := Sqr(b) - 4 * a * c;

  • WriteLn((-b + Sqrt(Delta)) / (2 * a));

  • WriteLn((-b - Sqrt(Delta)) / (2 * a));

  • end.


Input

Input

  • Read(<Variable1>, <Variable2>, …);

  • // does not skip to the next line unless necessary

  • ReadLn(<Variable1>, <Variable2>, …);

  • // just a Read procedure that skips to the next line at the end of reading


Input example

Input Example


Output

Output

  • Write(<Expression1>, <Expression2>, …);

  • WriteLn(<Expression1>, <Expression2>, …);

  • // skips to the next line when done


Formatting output

Formatting Output

  • <Expression> : <Field Width>

  • for reals:

  • <Real Expression> : <Field Width> : <Decimal Field Width>


Output example

Output Example

  • Write('Hi' : 10, 5 : 4, 5673 : 2);

  • ********Hi***55673

  • Write(573549.56792 : 20 : 2);

  • ***********573549.57

  • Write(123.345 : 0 : 2);

  • 123.35

  • // * represents a space


Text files

Text Files

  • Declaration:

  • var

  • FileVar : Text;


Access a file

Access a File

  • Assign(<FileVar>, 'File Path & Name');

  • for input: Reset(<FileVar>);

  • for output: Rewrite(<FileVar>);

  • and DO NOT forget:

  • Close(<FileVar>);

  • at last!


Read and write file

Read and Write File

  • Read/ReadLn(<FileVar>, <Variable1>, <Variable2>, …);

  • Write/WriteLn(<FileVar>, <Expression1>, <Expression2>, …);


A shortcut

A Shortcut

  • for input:

    • Assign(Input, 'File Path & Name');

    • Reset(Input);

  • for output:

    • Assign(Output, 'File Path & Name');

    • Rewrite(Output);

    • Close(Output); // DO NOT FORGET


Test end of line end of file

Test End of Line & End of File

  • Eoln(FileVar : Text) : Boolean;

  • Eof(FileVar : Text) : Boolean;


Program task 2

Program Task 2

  • Read an angle from file trigono.in in degrees. Write the function sin, cos, tan, cot, sec and csc of the angle to the file trigono.out, rounded to 4 decimals. It is guaranteed that the angle is valid.


Program task 21

Program Task 2

  • Sample Input (trigono.in):

    • 30

  • Sample Output (trigono.out):

    • 0.5000

    • 0.8660

    • 0.5774

    • 1.7321

    • 1.1547

    • 2.0000


My solution for task 2

My Solution for Task 2

  • program TrigonometricFunctions;

  • const

  • InputFileName = 'trigono.in';

  • OutputFileName = 'trigono.out';

  • var

  • Deg, Rad, SinA, CosA: Real;

  • begin

  • Assign(Input, InputFileName);

  • Reset(Input);

  • Assign(Output, OutputFileName);

  • Rewrite(Output);

  • Read(Deg);


My solution for task2

My Solution for Task2

  • Rad := Deg / 180 * Pi;

  • SinA := Sin(Rad);

  • CosA := Cos(Rad);

  • WriteLn(SinA : 0 : 4);

  • WriteLn(CosA : 0 : 4);

  • WriteLn(SinA / CosA : 0 : 4);

  • WriteLn(CosA / SinA : 0 : 4);

  • WriteLn(1 / CosA : 0 : 4);

  • WriteLn(1 / SinA : 0 : 4);

  • Close(Input);

  • Close(Output);

  • end.


Sequential control

Sequential Control

  • Sequential control is the default. The computer executes each statement and goes on to the next statement until it sees an end.


Boolean expressions

Boolean Expressions

  • Precedence

    • - not

    • * / div mod and shr shl

    • + - or xor

    • = <> < > <= >=

  • Complex Boolean

    • 3 > 5 or 650 < 1 // WRONG

    • (3 > 5) or (650 < 1) // CORRECT


Real value comparison

Real Value Comparison

  • DO NOT compare two real values with operator =. Small round-off errors may cause two equivalent expressions to differ.

  • Instead, use this comparison:

  • const Epsilon = 1E-10;

  • Abs(x1 - x2) <= Epsilon


Statement

Statement

  • Assignment

  • Subroutine Call

  • goto

  • Compound Statement

  • Conditional Statement

  • Repetitive Statement


Compound statement

Compound Statement

  • begin

  • Statement1;

  • Statement2;

  • end;


If statement

IF Statement

  • if <BooleanExpression> then

  • Statement;

  • OR

  • if <BooleanExpression> then

  • Statement1

  • else

  • Statement2;


If statement pitfall

IF Statement Pitfall

  • if <BooleanExpression1> then

  • if <BooleanExpression2> then

  • Statement1

  • else

  • Statement2;


If statement pitfall correction

IF Statement Pitfall Correction

  • if <BooleanExpression1> then

  • begin

  • if <BooleanExpression2> then

  • Statement1

  • end

  • else

  • Statement2;


If statement extension

IF Statement Extension

  • if <BooleanExpression1> then

  • Statement1

  • else if <BooleanExpression2> then

  • Statement2

  • else if …

  • else

  • Statement n;


Case statement

CASE Statement

  • case <OrdinalExpression> of

  • <OrdinalValueList1>: Statement1;

  • <OrdinalValueList2>: Statement2;

  • else Statement

  • end;


For statement

FOR Statement

  • for <OrdinalVariable>:=<LowerBound> to <UpperBound> do

  • Statement;

  • OR

  • for <OrdinalVariable>:=<UpperBound> downto <LowerBound> do

  • Statement;


While statement

WHILE Statement

  • while <BooleanExpression> do

  • Statement;


Repeat statement

REPEAT Statement

  • repeat

  • Statement1;

  • Statement2;

  • until <BooleanExpression>;


Break continue

Break & Continue

  • Break jumps to the statement following the end of the current repetitive statement.

  • Continue jumps to the end of the current repetitive statement.


Program task 3

Program Task 3

  • Fibonacci sequence is defined by:

    • a1=1

    • a2=1

    • ai=ai-1+ai-2

  • Input a positive integer n(n<=20) from keyboard, print an.

  • Sample

    • Input: 10Output: 55


My solution for task 3

My Solution for Task 3

  • program Task3;

  • var

  • i, a, b, c, n: Integer;

  • begin

  • Read(n);

  • a := 1;

  • b := 1;

  • for i := 3 to n do

  • begin

  • c := b;

  • b := a + b;

  • a := c;

  • end;

  • WriteLn(b);

  • end.


Program task 4

Program Task 4

  • Display all powers of 2 that are < 2,000,000,000. Display the list in a properly formatted manner, with commas between the numbers. Display five numbers per line. The output should look like:

  • 1, 2, 4, 8, 16,

  • 32, 64, 128, 256, 512,

  • 1024, 2048, 4096, 8192, 16384,


My solution for task 4

My Solution for Task 4

  • program Task4;

  • const

  • N = 31;

  • var

  • i: Integer;

  • begin

  • for i := 1 to N do

  • begin

  • Write(1 shl (i - 1));

  • if i <> N then

  • Write(',');

  • if i mod 5 = 0 then

  • WriteLn

  • else

  • Write(' ');

  • end;

  • if N mod 5 <> 0 then

  • WriteLn;

  • end.


Type definition

Type Definition

  • type

  • TypeIdentifier = TypeSpecification;

  • For example:

  • type

  • TName = string[25];


Enumerated type

Enumerated Type

  • Format:

  • (id1, id2, …)

  • For example:

  • type

  • TWeek = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);


Subrange type

Subrange Type

  • Format:

  • LowerBound .. UpperBound

  • For example:

  • type

  • TDay = 1 .. 31;

  • TWorkDay = Monday .. Friday;


Array type

Array Type

  • Format:

  • array [LowerBound .. UpperBound] of SomeType;

  • For example:

  • a: array [1 .. 100] of Integer;

  • FillChar(a, SizeOf(a), 0);

  • a[1] := 100;


Array type1

Array Type

  • Multidimensional array:

  • array [LowerBound1 .. UpperBound1, LowerBound2 .. UpperBound2, …] of DataType;


Record type

Record Type

  • Format:

  • record

  • FieldNameList1: Type1;

  • FieldNameList2: Type2;

  • end;


Record type1

Record Type

  • For example:

  • TPerson=

  • record

  • Name: TName;

  • Gender: (Male, Female);

  • Age: 1 .. 200;

  • Height, Weight: Real;

  • end;


Set type

Set Type

  • Format:

  • set of OrdinalType

  • For example:

  • set of Char;

  • set of 1 .. 100;


Set type1

Set Type

  • a, b: set of 1 .. 100;

  • Assignment:

    • a := [1 .. 10, 20];

    • b := [];

  • Operatiors:

    • Union +

    • Difference –

    • Intersection *

    • Add Element Include(S, E);

    • Delete Element Exclude(S, E);


Procedure definition

Procedure Definition

  • procedure Id[(ArgList)];

  • const

  • type

  • var

  • begin

  • end;


Function definition

Function Definition

  • function Id[(ArgList)]: DataType;

  • const

  • type

  • var

  • begin

  • Id := Expression;

  • end;


Argument list

Argument List

  • [var] VarList: DataType;

  • if no var, call-by-value

  • if var, call-by-variable

  • For example:

  • procedure ConvertRadix(n, Radix: Integer; var R: string);


Exit halt

Exit & Halt

  • Exit exits the current subroutine, and returns control to the calling routine.

  • Halt stops program execution, and returns control to the calling program.


Scope

Scope

  • For example:

  • program Scope;

  • A, B, C

    • procedure Alpha;

    • A, F, G

    • procedure Beta;

    • V, B, C

      • procedure Beta1;

      • F

      • function Beta2;

      • F2


Recursion

Recursion

  • Recursion means allowing a subroutine to call itself directly or indirectly.

  • For example:

  • function Factorial(n: Integer): Integer;

  • begin

  • if n = 0 then

  • Factorial := 1

  • else

  • Factorial := n * Factorial(n - 1);

  • end;


Forward referencing

Forward Referencing

  • procedure A; forward;

  • procedure B;

  • begin

  • A;

  • end;

  • procedure A;

  • begin

  • B;

  • end;


Program task 5

Program Task 5

  • Towers of Hanoi


  • Login