Learning pascal ebook

13 231 1
Learning pascal ebook

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

PascalPascal 234319 CourseWinter 2010/11 1 IntroductionIntroduction • Imperative and procedural programming language • Designed: 1968/9 • Published: 1970 • Static and strong typing • Static binding • We will use: – FreePascal 2.4.0 http://www.freepascal.org/download.var Winter 2010/11 234319 Course These concepts will be explained in the lectures 2 A basic Pascal programA basic Pascal program program HelloWorld; { Definitions are placed here - types, variables, procedures, functions, … } begin WriteLn(‘ Hello World! ’); { More statements can be added here } end. Winter 2010/11 234319 Course 3 A basic Pascal programA basic Pascal program program program program program HelloWorld HelloWorldHelloWorld HelloWorld; ;; ; { Definitions are placed here - types, variables, procedures, functions, … } begin WriteLn(‘ Hello World! ’); { More statements can be added here } end. Winter 2010/11 234319 Course Program Heading 4 A basic Pascal programA basic Pascal program program HelloWorld; { Definitions are placed here { Definitions are placed here { Definitions are placed here { Definitions are placed here - - types, variables, procedures, functions, … } types, variables, procedures, functions, … }types, variables, procedures, functions, … } types, variables, procedures, functions, … } begin beginbegin begin WriteLn WriteLnWriteLn WriteLn(‘ (‘(‘ (‘ Hello World! Hello World!Hello World! Hello World! ’); ’);’); ’); { More statements can be added here } { More statements can be added here }{ More statements can be added here } { More statements can be added here } end. end.end. end. Winter 2010/11 234319 Course Block 5 A basic Pascal programA basic Pascal program program HelloWorld; { Definitions are placed here { Definitions are placed here { Definitions are placed here { Definitions are placed here - - types, variables, procedures, functions, … } types, variables, procedures, functions, … }types, variables, procedures, functions, … } types, variables, procedures, functions, … } begin WriteLn(‘ Hello World! ’); { More statements can be added here } end. Winter 2010/11 234319 Course Declaration Part 6 A basic Pascal programA basic Pascal program program HelloWorld; { Definitions are placed here - types, variables, procedures, functions, … } begin beginbegin begin WriteLn WriteLnWriteLn WriteLn(‘ (‘(‘ (‘ Hello World! Hello World!Hello World! Hello World! ’); ’);’); ’); { More statements can be added here } { More statements can be added here }{ More statements can be added here } { More statements can be added here } end. end.end. end. Winter 2010/11 234319 Course Statement Part 7 Data TypesData Types • Pascal has 4 primitive types: – integer, boolean, real, char • We can also create our own types: – Enumerated types: type Color = (Red, Green, Blue, Yellow); type MonthType = (January, February, ,December); Enumerated types are comparable: Red < Blue = true, succ(Red) = Green, pred(Blue) = Green, ord(Yellow) = 3 Winter 2010/11 234319 Course 8 Data Types Data Types cont.cont. – Subrange types: type Letter = ‘A’ ’Z’; Index = 3 8; ColorList = Red Blue; – Records (Complex types like C structs): type date = record day : 1 31; month : MonthType; year : 1900 2100; end; Winter 2010/11 234319 Course 9 Arrays in PascalArrays in Pascal Winter 2010/11 234319 Course 10 • Pascal arrays are defined as follow: array [<index-type>] of <element-type> • May have multiple indexes: • array [1 5 , 8 10] of … • Example: • var varvar var A : array arrayarray array [1 5] of ofof of real realreal real; • var varvar var pens : array arrayarray array [Red Green] of ofof of record recordrecord record width : 1 3; kind : (Regular,Bold); end; end;end; end; • For ForFor For col := Red to Yellow do dodo do writeLn(pens[col].width); !!! Functions and Procedures Functions and Procedures • Pascal functions always return a value function myFunc(…) : int; begin … myFunc := 13; {note how we set the value} … end; • A function that doesn’t return anything is a procedure. procedure myProc(…); begin … end; Winter 2010/11 234319 Course 11 A simple problem…A simple problem… • Given a range of positive numbers: – Summarize all numbers in range that divide by 3 or 5. – Print the result. Winter 2010/11 234319 Course 12 program Sum; function sumOfMatching(s, e : integer) : integer; var sum, i : integer; begin sum := 0; for i := s to e do begin if ( (i mod 3 = 0) or (i mod 5 = 0) ) then sum := sum + i; end; sumOfMatching := sum; end; begin WriteLn( sumOfMatching( 1,1000) ); end. Version Version 11 Winter 2010/11 234319 Course 13 Version Version 11 program Sum; function sumOfMatching(s, e : integer) : integer; var sum, i : integer; begin sum := 0; for i := s to e do begin if ( (i mod 3 = 0) or (i mod 5 = 0) ) then sum := sum + i; end; sumOfMatching := sum; end; begin WriteLn( sumOfMatching( 1,1000) ); end. What if s<0? e<0? Auxiliary Function? Winter 2010/11 234319 Course 14 Version Version 22 program Sum; type type type type positiveInt positiveIntpositiveInt positiveInt = = = = 1 11 1 MAXINT; MAXINT; MAXINT; MAXINT; function isMatching isMatchingisMatching isMatching(i : integer) : boolean; begin isMatching := ((i mod 3 = 0) or (i mod 5 = 0)); end; function sumOfMatching(s, e : positiveInt positiveIntpositiveInt positiveInt) : integer; var sum, i : integer; begin sum := 0; for i := s to e do begin if ( isMatching isMatchingisMatching isMatching( (( (i ii i) ) ) ) ) then sum := sum + i; end; sumOfMatching := sum; end; begin WriteLn( sumOfMatching(1,1000) ); end. What if s>e? Winter 2010/11 234319 Course 15 Version Version 33 program Sum; type positiveInt = 1 MAXINT; function SumOfMatching(s, e : positiveInt) : Integer; var sum, i : integer; function function function function isMatching isMatchingisMatching isMatching( (( (i ii i : integer) : : integer) : : integer) : : integer) : boolean booleanboolean boolean; ; ; ; begin begin begin begin isMatching isMatchingisMatching isMatching := (( := ((:= (( := ((i ii i mod mod mod mod 3 33 3 = = = = 0 00 0) or ( ) or () or ( ) or (i ii i mod mod mod mod 5 55 5 = = = = 0 00 0)); )); )); )); end; end;end; end; begin sum := 0; for i := s to e do begin if ( isMatching(i) ) then sum := sum + i; end; sumOfMatching := sum; end; begin WriteLn( sumOfMatching(1,1000) ); end. Winter 2010/11 234319 Course 16 Version Version 33 program Sum; type positiveInt = 1 MAXINT; function SumOfMatching(s, e : positiveInt) : Integer; var sum, i : integer; function isMatching(i : integer) : boolean; begin isMatching := ((i mod 3 = 0) or (i mod 5 = 0)); end; begin sum := 0; for i := s to e do begin if ( isMatching(i) ) then sum := sum + i; end; sumOfMatching := sum; end; begin WriteLn( sumOfMatching(1,1000) ); end. ‘3’ and ‘5’ should be inputs / consts… What is the difference? Can it be done in C/C++? Winter 2010/11 234319 Course 17 Version Version 44 program Sum; type positiveInt = 1 MAXINT; function sumOfMatching(s,e,div divdiv div1 11 1,div ,div,div ,div2 22 2:positiveInt):integer; var sum, i : integer; function isMatching(i , d dd d1 11 1, d , d, d , d2 2 2 2 : integer) : boolean; begin isMatching := ((i mod d dd d1 11 1=0) or (i mod d dd d2 22 2=0)); end; begin sum := 0; for i := s to e do begin if (isMatching(i,div divdiv div1 11 1,div ,div,div ,div2 22 2)) then sum:=sum+i; end; sumOfMatching := sum; end; begin WriteLn( sumOfMatching(1,1000, , , , 3 33 3, , , , 5 55 5) ); end. Winter 2010/11 234319 Course 18 Version Version 44 program Sum; type positiveInt = 1 MAXINT; function sumOfMatching(s,e,div divdiv div1 11 1,div ,div,div ,div2 22 2:positiveInt):integer; var sum, i : integer; function isMatching(i , d dd d1 11 1, d , d, d , d2 2 2 2 : integer) : boolean; begin isMatching := ((i mod d dd d1 11 1=0) or (i mod d dd d2 22 2=0)); end; begin sum := 0; for i := s to e do begin if (isMatching(i,div divdiv div1 11 1,div ,div,div ,div2 22 2)) then sum:=sum+i; end; sumOfMatching := sum; end; begin WriteLn( sumOfMatching(1,1000, , , , 3 33 3, , , , 5 55 5) ); end. ‘div1’ and ‘div2’ are already known to nested function ‘isMatching’! Winter 2010/11 234319 Course 19 Version Version 55 program Sum; type positiveInt = 1 MAXINT; function sumOfMatching(s,e,div1,div2:positiveInt):integer; var sum, i : Integer; function isMatching(i : Integer) : boolean; begin isMatching:=((i mod div divdiv div1 11 1=0) or (i mod div divdiv div2 22 2=0)); end; begin sum := 0; for i := s to e do begin if ( isMatching(i) ) then sum := sum + i; end; sumOfMatching := sum; end; begin WriteLn( sumOfMatching(1,1000, , , , 3, 5) ); end. Winter 2010/11 234319 Course 20 [...]... Course 23 So why learn Pascal? ? Pascal? ? • Still quite useful – Safety • Mixing types leads to errors • No type casting and no pointer arithmetic – Speed and Size • Pascal compiler still fast – Teaching Purposes • Shown to be easier to learn • Less overhead and fewer ways for a student to get a program into trouble Winter 2010/11 234319 Course 24 So why learn Pascal? ? – cont Pascal? ? • Still in the... Winter 2010/11 234319 Course 24 So why learn Pascal? ? – cont Pascal? ? • Still in the market – Many small-scale freeware, shareware, and opensource programs are written in Pascal or in Delphi (“Object Pascal ) • We will use Pascal and Pascal- like languages in many examples and most likely in some of the exam questions – So you need to know the basics of it… ☺ Winter 2010/11 234319 Course 25 . learn PascalPascal?? ?? –– cont.cont. • Still in the market – Many small-scale freeware, shareware, and open- source programs are written in Pascal or in Delphi (“Object Pascal ). • We will use Pascal. will use: – FreePascal 2.4.0 http://www.freepascal.org/download.var Winter 2010/11 234319 Course These concepts will be explained in the lectures 2 A basic Pascal programA basic Pascal program program. ‘@’ 23 So why learn So why learn PascalPascal???? • Still quite useful – Safety • Mixing types leads to errors. • No type casting and no pointer arithmetic. – Speed and Size • Pascal compiler still fast. –

Ngày đăng: 23/10/2014, 11:47

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan