[20/01/10] Procedure & Function

1. Procedure ต่างกับ Function อย่างไรบ้าง

(1) Procedure จะเป็นส่วนของโปรแกรมใหญ่ที่เขียนขึ้นเพื่อทำงานเฉพาะอย่าง ส่วน Function จะเป็นโปรแกรมย่อยที่เป็นเหมือนการสร้างคำใหม่ขึ้นมา
(2) Procedure จะถูกเรียกใช้จากโปรแกรมหลักหรือจาก Procedure อื่นๆ ด้วยกันได้โดยที่แต่ละ Procedure ทำงานเป็นอิสระต่อกัน ส่วน Function จะถูกใช้ทำงานภายในโปรแกรมหลักหรือภายใน Procedure เท่านั้น ไม่สามารถถูกใช้งานใน Function อื่นๆ ได้

———————————————————————————————-
2. Procedure ต่อไปนี้มีส่วนใดผิด (ผิด = สีแดง)

PROCEDURE T;
VAR I:INTEGER;
BEGIN
     WHILE I>0 DO
     BEGIN
          I:=I-1;
          WRITE(+,’ ‘);
     END;
END;

———————————————————————————————-
3. ให้เขียนโปรแกรมโดยใช้คำสั่ง Procedure หรือ Function ในการรับค่าสองค่าแล้วนำค่าทั้งสองค่ามาดำเนินการคือ

3.1 บวก

PROGRAM WORK_04_3_1;
USES CRT;
PROCEDURE POSITIVE;
VAR A,B,TOT:INTEGER;
BEGIN
     WRITE(‘INPUT A : ‘); READLN(A);
     WRITE(‘INPUT B : ‘); READLN(B);
     TOT:=A+B;
     WRITELN(‘TOTAL : ‘,TOT);
END;
BEGIN
     CLRSCR;
     POSITIVE;
     READLN;
END.

3.2 ลบ
PROGRAM WORK_04_3_2;
USES CRT;
PROCEDURE NEGATIVE;
VAR A,B,TOT:INTEGER;
BEGIN
     WRITE(‘INPUT A : ‘); READLN(A);
     WRITE(‘INPUT B : ‘); READLN(B);
     TOT:=A-B;
     WRITELN(‘TOTAL : ‘,TOT);
END;
BEGIN
     CLRSCR;
     NEGATIVE;
     READLN;
END.

3.3 คูณ
PROGRAM WORK_04_3_3;
USES CRT;
VAR A,B:INTEGER;
FUNCTION MULTIPLIED(N1,N2:INTEGER):INTEGER;
VAR TOT:INTEGER;
BEGIN
     TOT:=N1*N2;
     WRITELN(‘TOTAL : ‘,TOT);
END;
BEGIN
     CLRSCR;
     WRITE(‘INPUT A : ‘); READLN(A);
     WRITE(‘INPUT B : ‘); READLN(B);
     MULTIPLIED(A,B);
     READLN;
END.

3.4 หาร
PROGRAM WORK_04_3_4;
USES CRT;
VAR A,B:INTEGER;
FUNCTION DIVIDED(N1,N2:REAL):REAL;
VAR TOT:REAL;
BEGIN
     TOT:=N1/N2;
     WRITELN(‘TOTAL : ‘,TOT:5:2);
END;
BEGIN
     CLRSCR;
     WRITE(‘INPUT A : ‘); READLN(A);
     WRITE(‘INPUT B : ‘); READLN(B);
     DIVIDED(A,B);
     READLN;
END.

———————————————————————————————-
4. โปรแกรมต่อไปนี้ผลลัพธ์ที่ได้เป็นอย่างไร
     PROGRAM P12(INPUT,OUTPUT);
     VAR I:INTEGER;
     PROCEDURE PN(X:INTEGER);
     BEGIN
          WRITELN(X+1);
     END;
     BEGIN
          I:=5;
          PN(I);
     END.

ผลลัพธ์ที่ได้คือ  6

———————————————————————————————-
5. จงเขียนโปรแกรมรับข้อมูลตัวเลข 1-25 แล้วนำตัวเลขนั้นมาบวกกันเพื่อให้ได้ผลลัพธ์โดยใช้คำสั่ง Function

PROGRAM WORK_04_5;
USES CRT;
VAR N:INTEGER;
FUNCTION P1_25:INTEGER;
VAR I,TOT:INTEGER;
BEGIN
     TOT:=0;
     REPEAT
          IF (N<0) OR (N>25) THEN
          BEGIN
               WRITE(‘ERROR!!! PLEASE ENTER NUMBER (1-25) : ‘);READLN(N);
          END
     UNTIL (N>0) AND (N<=25);
     FOR I:=1 TO N DO BEGIN
          TOT:=TOT+I;
          WRITELN(TOT-I:3,’ + ‘,I:3,’ = ‘,TOT);
     END;
     WRITELN(‘TOTAL = ‘,TOT);
END;
BEGIN
     CLRSCR;
     WRITE(‘PLEASE ENTER NUMBER (1-25) : ‘);READLN(N);
     P1_25;
     READLN;
END.

———————————————————————————————-
(สำหรับการบวกจำนวนตั้งแต่ 1-25 โดยไม่มีการรับค่าทางคีย์บอร์ด)
PROGRAM WORK_04_5;
USES CRT;
FUNCTION P1_25:INTEGER;
VAR I,TOT:INTEGER;
BEGIN
     TOT:=0;
     FOR I:=1 TO 25 DO TOT:=TOT+I;
     WRITELN(‘TOTAL = ‘,TOT);
END;
BEGIN
     CLRSCR;
     P1_25;
     READLN;
END.

———————————————————————————————-

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: