11.1.9 පැස්කල් ක්‍රමලේඛන ලිවීම - 2 කොටස - 11-වසර තොරතුරු හා සන්නිවේදන තාක්ෂණය

11.1.9 පැස්කල් ක්‍රමලේඛන ලිවීම - 2 කොටස

Nested If

කොන්දේසියකට පසුව කොන්දේසියක් වශයෙන් කොන්දේසි සමූහයක් යෙදෙන අවස්ථා Nested If ලෙස හඳුන්වනු ලබයි.

උදාහරණ 1 : පාසලක ළමුන් ඇතුළත්වීමේ දී අංකය අනුව එක් එක් ළමයාට අදාළ නිවාසය නම් කරනු ලබයි. ඇතුළත්වීමේ අංකය තුනෙන් බෙදූ පසු ඉතිරිය 2 ක් නම් ලිහිණි නිවාසය ලෙස ද , ඉතිරිය 1 ක් නම් මයුර නිවාසය ලෙස ද , එසේ නොමැතිනම් තිසර නිවාසය ලෙස ද ප්‍රතිදානය කරන්න.

Program        Houses(input,output);
Var               indexNo,remainder:integer;
Begin
                    writeln('Enter the index Number');
                    read(indexNo);
                    remainder:=indexNo mod 3;
                    if remainder=2 then
                           writeln('Lihini')
                    else
                    if remainder=1 then
                           writeln('Mayura')
                    else
                           writeln('Thisara');
End.

උදාහරණ 2 : a = 100 හා b = 200 නම් "Value of a is 100 and value of b is 200" ලෙස ප්‍රතිදානය කරන්න.

program nested_ifelseChecking;
var         a, b : integer;
begin
             a := 100;
             b:= 200;
             if (a = 100) then
                    if ( b = 200 ) then
                           writeln('
Value of a is 100 and value of b is 200' );

             writeln('a = 100 and b = 200' );
end.

මෙහිදී එක් කොන්දේසියක් තෘප්ත වුවහොත් පමණක් ඊලඟ කොන්දේසිය වෙත යයි.  a = 100 යන්න තෘප්ත වන බැවින් b = 200 යන කොන්දේසිය වෙත ගොස් එය ද තෘප්ත වන නිසා "Value of a is 100 and value of b is 200" ප්‍රතිදානය කරයි.

නමුත් මෙම වැඩසටහන පහත පරිදි වෙනස් වුවහොත් ලැබෙන ප්‍රතිදානය වෙනස් වේ.

program nested_ifelseChecking;
var         a, b : integer;
begin
             a := 100;
             b:= 201;
             if (a = 100) then
                    if ( b = 200 ) then
                           writeln('
Value of a is 100 and value of b is 200' );

             writeln('a = 100 and b = 200' );
end.

මෙහි ප්‍රතිදානය ලෙස ලැබෙන්නේ "a = 100 and b = 200" වේ. ඊට හේතුව වන්නේ a = 100 කොන්දේසිය තෘප්ත වුව ද b = 200 කොන්දේසිය තෘප්ත නොවීමයි.

 

Case Statement

වරණය සහිත ක්‍රමලේඛන ලිවීමේ දී  කොන්දේසි සමූහයක් නැවත නැවත යෙදීම සිදු නොකර , Case  භාවිතා කර කොන්දේසිසමූහය දැක්වීම Case Statement ලෙස හදුන්වනුලබයි.

උදාහරණ : පාසලක ළමුන් ඇතුළත්වීමේ දී අංකය අනුව එක් එක් ළමයාට අදාළ නිවාසය නම් කරනු ලබයි. ඇතුළත්වීමේ අංකය තුනෙන් බෙදූ පසු ඉතිරිය 2 ක් නම් ලිහිණි නිවාසය ලෙස ද , ඉතිරිය 1 ක් නම් මයුර නිවාසය ලෙස ද , එසේ නොමැතිනම් තිසර නිවාසය ලෙස ද ප්‍රතිදානය කරන්න.

Program    Houses2(input,output);
Var           IdNo,Remainder:integer;
Begin
                writeln('enter the number');
                Read(IdNo);
                Remainder:=IdNo mod 3;
                Case Remainder of
                     2:writeln('Lihini');
                     1:writeln('Mayura');
                ELSE
                     writeln('Thisara');
                end;
END.

 

නිඩීත පාලන ව්‍යූහ (Nestead Control Structure)

වරණයක් අතර පුණර්කරණය යෙදීම හෝ පුණර්කරණය අතර වරණය යෙදීම නිඩීත පාලන ව්‍යූහ (Nestead Control Structure) ලෙස හඳුන්වයි.

 

වරණය තුළ පුනර්කරණය යෙදීම.

උදාහරණ : පරිශීලකයාගේ තේරීම අනුව , තේරීම 1 නම් , "A" සිට "Z" දක්වා ද (ආරෝහණ පිළිවෙළට), තේරීම 2 නම් , "Z" සිට "A" දක්වා ද (අවරෝහණ පිළිවෙළට), එසේ නොමෙතිව වෙනත් ඉලක්කමක් ආදානය කලහොත් "" ලෙස ද ප්‍රතිදානය කරන්න.

program loopInSelection (input,output);
var         select:integer;
             order:char;
begin
             writeln('Enter 1 or 2');
             read(select);
             if select=1 then
             begin
                 writeln('Asending order');
                 for order:='A' to 'Z' do
                        writeln(order);
             end;
             if select=2 then
             begin
                 writeln('Desding order');
                 for order:='Z' downto 'A' do
                       writeln(order);
             end
             else
                 writeln('Invalid Number');
end.

පුනර්කරණය තුළ වරණය යෙදීම.

උදාහරණ : 10 සිට 25 තෙක් සංඛ්‍යා ලබාගෙන , ඔත්තේ සංඛ්‍යා "ඔත්තේ" ලෙස ද , ඉරට්ටේ සංඛ්‍යා "ඉරට්ටේ" ලෙස ද නම් කරන්න.

program  selectionInLoop(input,output);
var         No,Remainder:integer;
begin
             For No:=10 to 25 do
             begin
                   Remainder := No MOD 2;
                   if Remainder = 1 then
                        writeln(No,' is an odd number')
                  else
                        writeln(No,' is an even number');
             end;
end.