Subprograms in Pascal: Functions and Procedures

Subprograms in Pascal: Functions and Procedures

This article discusses the two types of subprograms in Pascal - functions and procedures. While a procedure takes input parameters but does not return a value except by using reference parameters, a Pascal function

  • Uploaded on | 1 Views
  • jeanne jeanne

About Subprograms in Pascal: Functions and Procedures

PowerPoint presentation about 'Subprograms in Pascal: Functions and Procedures'. This presentation describes the topic on This article discusses the two types of subprograms in Pascal - functions and procedures. While a procedure takes input parameters but does not return a value except by using reference parameters, a Pascal function. The key topics included in this slideshow are . Download this presentation absolutely free.

Presentation Transcript


Slide22Pascal Functions In Pascal, a  procedure  takes inputs (parameters) but does not return a value (except by using reference parameters). A Pascal  function  takes inputs (parameters) and returns a single value to the calling program. The function name is used to indicate the value returned by the function.

Slide33Pascal Function Cont’d Second type o subprogram supported by Turbo Pascal . We have already seen and used some of Pascal’s own functions e.g. Upcase, Length, Sqr, Sqrt. A  Function may be viewed as a special type of procedure that returns exactly one result. Functions are declared , called and can be used with variable and value parameters.

Slide44Pascal Function Cont’d Functions differ from procedures in that : • The return type of a function is included in the function heading, Return type can be any simple data type i.e. REAL, INTEGER, CHAR, BOOLEAN, STRING, an Enumerated type or a subrange type. • Within the function body, some value must be assigned to the  function name   I.e. the return value. • Unlike procedure calls, function calls do not appear as separate statements. They are treated as though they were  values and so are used in assignment statement, input/output statements and general expressions.

Slide55Template FUNCTION   function_name ( parameter list) : Data_ Type; e.g. Function  Cube (num :integer) :integer; Begin Cube := num * num * num; end;

Slide66Example program calcCube; function Cube( n : integer) : integer; begin Cube := n * n * n; end; var number, answer : integer; begin writeln('Enter a number: '); readln(number); answer := Cube(number); writeln('The cube of ', number, ' is ', answer); end.

Slide77Recall Mathematical Functions A function takes one or more inputs and produces a single output for each input or set of inputs. Examples: A function to double the value of the input: d(x) = 2x d(2) = 4 d(17) = 34 A function to cube the value of the input: c(x) = x 3 c(2) = 8 c(5) = 125 A function to compute the volume of a cylinder from the radius and height: v(r, h) =    r 2 h

Slide88If X, Y, A and B are global variables of type integer, some typical calls might be  : 1.  X := cube(5); 2. Y := 3* Cube(2) - 10 ; 3. A:= 3,  Writeln(cube(A)); 4. If Cube(A)   > B then….

Slide99NOTE: 1.  When declaring a function, you must always give the function a data type which indicates the type of the single result. E.g. FUNCTION Sample : INTEGER; or    FUNCTION Sample (a:integer;b,c :real) : BOOLEAN; 2. The function code must include a statement that assigns the result to the function name. In this way the function acts as a ‘variable’ in the main program. 3 Use functions when you wish to calculate a single value that will be used in the main program otherwise use procedures.

Slide1010Example Write a function that sums integer elements in an array and returns the value of sum.Incorporate this function into a main program that sums the contents of two arrays. (assume the arrays contain values in the elements and are of equal length) Given the global variables Type array_num = array [1..50] of integer; VAR array1, array2, : array_num; Total : integer;

Slide1111Example (Cont’d) FUNCTION SumArray( A : Array_num): integer; Var index, sum : integer; Begin sum:= 0; for index := 1 to 50 do sum:= sum + A[index]; SumArray := sum; End; Begin  { Main} Total: = SumArray(array1)  +  SumArray( array2)

Slide1212Example (Cont’d) Write a function that indicates if a Name parameter is valid . A name is valid if it contains uppercase characters. Global variable  , PersonName type string FUNCTION  ValidName  ( Name : String) : BOOLEAN; Var index : integer; begin ValidName  : = true; For index := 1 to length(Name) do If (Name[index] < ‘A’) OR (Name[index] > ‘Z’) then ValidName  := False; end;{ function}

Slide1313Example (cont’d) Begin writeln(‘Enter name’); Readln( PersonName); If  ValidName  (PersonName) then writeln(‘Ok’); End.

Slide1414Standard Pascal does not provide a standard power or factorial function. 1. Power the function should receive two integers X and N , (where N>= 0) and compute            N X Use the approach of multiplying repeatedly by X as we know the number of iterations. The loop will count down to zero fron an initial value of N. For each iteration of the loop X is multiplied by the product.

Slide1515FUNCTION Power ( X, N :integer) : Integer; Var Result :integer; Begin Result :=1; while N > 0 do Begin      result := result * X;      N := N-1; End; power : result; end;

Slide16162. Function to calculate the Factorial e.g. 5 factorial 5x4x3x2x1 FUNCTION  Factorial (X : integer) : integer; Var Result : integer; Begin Result := 1; While X > 0  do Begin Result : Result * x; X:= X -1; end; Factorial : result; End;

Slide1717Boolean Function Boolean function can be useful when a branch or loop depends on  some complex condition. Rather than code the condition directly into the IF or WHILE  statements, can call a Boolean function to form the controlling expression. E.g.   If we had a program that works with triangles, the program reads 3 angles . Before performing any calculations on these angles we want to  check if they form a triangle ( sum the angles and confirm that they  add up to 180).

Slide1818FUNCION Triangle ( Angle1, Angle2, Angle3 : Real) :Boolean; Begin If Angle1 + Angle2 + Angle3 -180 = 0  then triangle := true; end; Begin Readln( AngleA, angleB, angleC); If Triangle(( AngleA, angleB, angleC) then writeln (‘the 3 angles form a triangle’); else   writeln (‘ the 3 angles do not form a triangle); End.

Slide1919When to use a function There aren’t any formal rules determining when to use a PROCEDURE and when to use a FUNCTION but here are some guidelines 1. If the subprogram must return more than one value or modify the actual parameters,  don’t use a FUNCTION 2. If the subprogram must perform input/output,  do not use a FUNCTION. 3. If there is only one value returned from the subprogram and it is boolean use a function 4. If there is only one value returned and that value is used immediately in an expression(statement) use a function. 5. When in doubt use a procedure.

Slide2020Multiple Subprogram • When a program contains more than one subprogram, they can be called from the main program in any order. • One subprogram may call another as long as the subprogram being called appears  before  the subprogram that calls it. • The same identifier names can be used within different subprograms- as they are contained in separate blocks.

Slide2121Exercises • Tuliskan fungsi untuk mengkonversikan harga karakter angka (0..9) menjadi harga numerik sesuai dengan karakter yang tertulis. Contoh: ‘8’  8, ‘4’  4 • Tuliskan fungsi IsAnA yang mentest apakah sebuah karakter yang diberikan kepadanya adalah sebuah huruf ‘A’. Harga yang dihasilkan adalah benar jika huruf itu ‘A’,salah jika huruf itu bukan ‘A’. Contoh: – IsAnA(‘A’)   true – IsAnA(‘X’)   false • Tuliskanlah fungsi, yang jika diberikan sebuah angka Cm yang menyatakan panjang dalam cm, akan menghasilkan pasangan harga <x1,x2> sesuai dengan rumus ukuran metris (1 m = 100 cm) sehingga x1*100+x2 = cm. Contoh: – F(100) = <1,0> – F(355) = <3,55>

Slide2222Exercises • Tuliskan fungsi IsPrima(), yang mentest apakah sebuah bilangan integer yang diberikan merupakan bilangan prima atau bukan. Contoh: IsPrima(2)  true, IsPrima(15)  false. • Tuliskan fungsi IsEven(), yang mentest apakah sebuah bilangan integer yang diberikan merupakan bilangan genap atau bukan. Contoh: IsEven(43)  false, IsEven(32)  true. • Tuliskan fungsi IsOdd(), yang mentest apakah sebuah bilangan integer yang diberikan merupakan bilangan ganjil atau bukan. Contoh: IsOdd(24)  false, IsOdd(43)  true.

Slide2323Exercises • Tuliskanlah sebuah fungsi MAX2, yang menerima masukan dua buah bilangan integer dan menghasilkan sebuah bilangan integer yaitu salah satu diantara nilai dua buah bilangan tersebut yang terbesar. • Kemudian, dengan memakai fungsi MAX2, tuliskan sebuah fungsi lain MAX3 yang menghasilkan nilai terbesar dari tiga buah bilangan integer. Contoh: – MAX2(1,2)  2 – MAX2(10,2)  10 – MAX3(1,2,3) adalah MAX2(MAX2(1,2),3)  3 – MAX3(10,2,3) adalah MAX3(MAX2(10,2),3)  10

Slide2424Exercises Didefinisikan tipe terstruktur untuk mewakili hari seperti dalam kalender yang kita pakai sehari-hari: type nama: DATE<tanggal,bulan,tahun> Tuliskan algoritma untuk: • Membaca sebuah tanggal dan sebuah kode bahasa penulisan (1=Inggris, 2=Indonesia, 3=Perancis), • Menuliskan tanggal keesokan harinya sesuai dengan kode bahasa. – Inggris, DATE ditulis dalam: bulan,’/’,tanggal,’/’,tahun – Indonesia, DATE ditulis dalam: tanggal,’-’,bulan,’-’,tahun – Perancis, DATE ditulis dalam: tanggal,’/’,bulan,’/’,tahun • Proses menghitung hari esok dilakukan oleh sebuah fungsi NextDay yang menerima masukan sebuah tanggal dan menghasilkan tanggal keesokan harinya. Contoh: – NextDay(<13,4,1990>,1)  4/14/1990 – NextDay(<30,1,1990>,2)  31-1-1990 – NextDay(<31,12,1990>,1)  1/1/1991

Slide2525Referensi • Liem Inggriani, Diktat kuliah IF223 Algoritma dan Pemrograman, Jurusan Teknik Informatika ITB, 1999 • DT/266/1, Programming Language, Departement of Computer Science.