Thursday, May 1, 2014

Break, Continue, Exit

Pak Dengklek memberikan Anda sebuah bilangan bulat N (1 ≤ N ≤ 100). Anda diminta untuk mencetak bilangan-bilangan dari 1 sampai dengan N secara berurutan, satu per baris, dengan aturan sebagai berikut:
  • Lompati bilangan kelipatan 10.
  • Jika program akan mengeluarkan bilangan 93, jangan cetak 93, tetapi cetak "ERROR" dan jangan cetak apa-apa lagi.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N.

Format Keluaran

Sesuai dengan deskripsi soal.

Contoh Masukan 1

12

Contoh Keluaran 1

1
2
3
4
5
6
7
8
9
11
12

Contoh Masukan 2

94

Contoh Keluaran 2

1
2
3
4
5
6
7
8
9
11
12
13
14
15
16
17
18
19
21
22
23
24
25
26
27
28
29
31
32
33
34
35
36
37
38
39
41
42
43
44
45
46
47
48
49
51
52
53
54
55
56
57
58
59
61
62
63
64
65
66
67
68
69
71
72
73
74
75
76
77
78
79
81
82
83
84
85
86
87
88
89
91
92
ERROR

Petunjuk

Untuk menyelesaikan soal di atas, Anda dapat membuat program seperti ini:
var
    n: integer;
    i: integer;
    error: boolean;
begin
    readln(n);
    
    error := false;
    
    for i := 1 to n do
    begin
        if (i = 93) then
            error := true;
        if (not error) and (i mod 10 <> 0) then
            writeln(i);
    end;
    
    if (error) then
        writeln('ERROR');
end.
Pada program di atas, variabel boolean error hanya berfungsi sebagai variabel pembantu. Pada mulanya, error diinisialisasi denganfalse. Setelah itu, di dalam loop for, jika i bukan kelipatan 10, i dicetak ke layar. Namun jika i bernilai 93, maka variabel error diberi nilaitrue, sehingga sejak saat itu tidak ada lagi yang dicetak ke layar kecuali "ERROR" di akhir program.
Ada cara lain menuliskan program tersebut, yaitu seperti berikut:
var
    n: integer;
    i: integer;
begin
    readln(n);
    
    for i := 1 to n do
    begin
        if (i = 93) then
        begin
            writeln('ERROR');
            break;
        end;
        if (i mod 10 = 0) then
            continue;
        
        writeln(i);
    end;    
end.
Pada program ini, break berfungsi untuk keluar secara paksa dari loop for. Jika i = 93, "ERROR" dituliskan ke layar dan loop fordihentikan secara paksa, dan program berlanjut ke perintah berikutnya setelah loop for. Karena tidak ada perintah lagi, program selesai. Perintah break sebetulnya juga dapat dipakai untuk menghentikan loop while secara paksa.
Perintah continue berfungsi untuk menghentikan aliran program dan kembali ke baris for i := 1 to n do dengan nilai i selanjutnya. Jadi jika i adalah kelipatan 10, perintah writeln(i) tidak dijalankan dan loop for dilanjutkan dengan nilai i berikutnya.
Perintah break di atas juga dapat diganti dengan perintah exit. Perintah ini akan menghentikan sebuah prosedur, fungsi, atau program secara paksa. Karena pada kasus di atas aliran program berada di program utama, perintah exit akan menghentikan program seketika.
Jawabannya adalah :


No comments:

Post a Comment