பிரச்சினைகளைத் தீர்ப்பதற்குச் செய்நிரல்களை எழுதுதல்
1. பிரச்சினை தீர்த்தல் என்றால் என்ன?
நாம் ஒவ்வொரு நாளும் சந்திக்கும் பிரச்சினைகள் — ஒரு வட்டத்தின் பரப்பளவைக் கணித்தல், இரு எண்களின் கூட்டுத்தொகையைக் காணல், ஒர் எண் ஒற்றையா இரட்டையா எனத் தீர்மானித்தல் — இவை அனைத்தும் ஒரு படிமுறையான தீர்வுக்கு உட்பட்டவை. கணினி இவ்வாறான பிரச்சினைகளைத் தீர்க்கும் ஒரு கருவியாகப் பயன்படுத்தப்படுகின்றது. கணினியால் தீர்க்க முடியக்கூடிய ஒவ்வொரு பிரச்சினையும் முதலில் தெளிவான படிமுறைகளாக (Steps) வரையறுக்கப்பட வேண்டும்.
| கூறு | பொருள் | உதாரணம் — வட்டத்தின் பரப்பளவு |
|---|---|---|
| உள்ளீடு (Input) | பிரச்சினையைத் தீர்ப்பதற்கு தேவையான தரவுகள் | வட்டத்தின் ஆரை (Radius) |
| முறைவழியாக்கம் (Process) | உள்ளீட்டை வெளியீடாக மாற்றும் செயற்பாடு | Area = π × r × r |
| வெளியீடு (Output) | பிரச்சினைக்கான தீர்வு | பரப்பளவு |
செய்து பாருங்கள் — இரு எண்களின் கூட்டுத்தொகை
உள்ளீடு: இரு எண்கள் (a, b).
முறைவழியாக்கம்: இரு எண்களையும் கூட்டல்.
வெளியீடு: கூட்டுத்தொகை.
2. நெறிமுறை (Algorithm) என்றால் என்ன?
ஒரு பிரச்சினையைத் தீர்ப்பதற்குப் பின்பற்றப்படும் படிகளைக் காட்டும் நெறிமுறை நெறிமுறை (Algorithm) எனப்படும். ஒரு பிரச்சினையை முழுமைக்கூடிய வழக்கறிஞர் தீர்வை அளிப்பதற்கான நெறிமுறை எழுதப்படுவதின் அவசியமாகும். நெறிமுறை எழுதப்படும் வழிமுறைகள் இரண்டாகும் — பாய்ச்சற் கோட்டுப்படம் (Flowchart) மற்றும் போலிக் குறிமுறை (Pseudo code).
3. பாய்ச்சற் கோட்டுப்படம் (Flowchart)
நெறிமுறையை வரைபடம் மூலம் காட்டுவதே பாய்ச்சற் கோட்டுப்படமாகும். இதில் ஒவ்வொரு செயலுக்கும் ஒரு குறியீடு உண்டு. குறியீடுகள் அம்புக்குறிகளால் இணைக்கப்பட்டு, செயல்களின் பாய்ச்சல் திசையை குறிக்கின்றன.
| குறியீடு | பெயர் | செயற்பாடு |
|---|---|---|
| நீள்வட்டம் (Oval / Terminator) | தொடக்கம் / முடிவு | Begin, End |
| இணைகரம் (Parallelogram) | உள்ளீடு / வெளியீடு | Read, Display |
| செவ்வகம் (Rectangle) | முறைவழியாக்கம் | Process / Calculate |
| சாய்சதுரம் (Rhombus / Diamond) | தெரிவு / தீர்மானம் | If condition |
| அம்புக்குறி (Arrow) | பாய்ச்சல் திசை | நிகழ்வுகளின் ஒழுங்கு |
| சிறுவட்டம் (Connector) | தொடர்பு | படத்தின் பகுதிகளை இணைத்தல் |
உதாரணம்: ஒரு வட்டத்தின் பரப்பளவைக் கணித்தல்
செய்து பாருங்கள் — ஒற்றை/இரட்டை எண்ணை அறிய நெறிமுறை
உள்ளீடு: ஒரு எண் N. முறைவழி: N-ஐ 2 ஆல் வகுத்துப் பெற்ற மீதியை (Remainder) சரிபார்க்க. மீதி = 0 எனின் இரட்டை, இல்லையெனின் ஒற்றை. வெளியீடு: "ஒற்றை" அல்லது "இரட்டை".
4. போலிக் குறிமுறை (Pseudo Code)
போலிக் குறிமுறை என்பது நெறிமுறையை எளிய ஆங்கிலச் சொற்களினால் எழுத்துருவாக எழுதுதலாகும். இது எந்தக் கணினி மொழியையும் சாராதது. ஆனால் ஒரு போலிக் குறிமுறையை எந்தக் கணினி மொழியிலும் மாற்றியெழுத முடியும். ஆகவே போலிக் குறிமுறையை எழுதுவதன் மூலம் கணினிச் செய்நிரல்களை உருவாக்குவதை எளிதாக்கலாம்.
| தமிழ் | போலிக் குறிமுறை |
|---|---|
| தொடக்கம் | BEGIN |
| முடிவு | END |
| உள்ளீடு | INPUT / READ / GET |
| வெளியீடு | OUTPUT / DISPLAY / SHOW |
| முறைவழி | PROCESS / CALCULATE |
| தெரிவு | IF … THEN … ELSE … ENDIF |
| மீள்செய்கை | FOR-DO / WHILE-ENDWHILE / REPEAT-UNTIL |
உதாரணம் 1 — வட்டத்தின் பரப்பளவைக் கணித்தல்
BEGIN
INPUT Radius
CALCULATE Area = 22/7 × Radius × Radius
DISPLAY Area
END
உதாரணம் 2 — ஒற்றை/இரட்டை எண்ணை அறிதல்
BEGIN
READ number as N
CALCULATE Remainder after N is divided by 2
IF Remainder = 0 THEN
DISPLAY "Even number"
ELSE
DISPLAY "Odd number"
ENDIF
END
செய்து பாருங்கள் — இரு எண்களில் பெரிய எண்ணைக் கண்டுபிடிக்கும் போலிக் குறிமுறை
BEGIN
INPUT n1, n2
IF n1 > n2 THEN
DISPLAY n1
ELSE
DISPLAY n2
ENDIF
END
5. மாறி (Variable) மற்றும் மாறிலி (Constant)
ஒரு செய்நிரலில் தரவுகள் நினைவகத்தில் சேமிக்கப்படுகின்றன. ஒரு மாறி (Variable) என்பது ஒரு பெயர் இருக்கும், அறிவிக்கப்பட்ட வகைக்குரிய தரவு வகையின் ஒரு பெறுமானத்தை வைக்கப்பட்டிருக்கும். செய்நிரல் நடைமுறைப்படுத்தும்போது மாறியின் பெறுமானம் மாறக்கூடியது. மாறிலி (Constant) என்பதன் பெறுமானம் செய்நிரலின் நடைமுறையில் மாறாது.
Var max : integer; | Const pi = 22/7;ஒவ்வொரு மாறிக்கும் அதற்கான தரவு வகை அறிவிக்கப்பட வேண்டும்.
| தரவு வகை | பொருள் | உதாரணம் |
|---|---|---|
| Integer | முழு எண் | 25, -10, 0 |
| Real | தசம எண் | 3.14, 22.5 |
| Char | ஒரு எழுத்து | 'A', 'M' |
| String | எழுத்துத் தொடர் | 'Sumi', 'Nimal' |
| Boolean | உண்மை / பொய் | True, False |
6. வினைக்குறிகள் (Operators)
செய்நிரலில் கணித்தல், ஒப்பிடுதல், தருக்கக் கோவைகளை உருவாக்க வினைக்குறிகள் பயன்படுத்தப்படுகின்றன. வினைக்குறிகள் மூன்று வகைப்படும் — எண்கணித (Arithmetic), தொடர்புறுத்தல் (Relational), தருக்க (Logical).
| வகை | வினைக்குறி | பயன்பாடு |
|---|---|---|
| எண்கணித | + | கூட்டல் |
| − | கழித்தல் | |
| * | பெருக்கல் | |
| / | வகுத்தல் (தசம விடை) | |
| DIV | முழு எண் ஈவு (20 DIV 6 = 3) | |
| MOD | வகுத்தலின் மீதி (20 MOD 6 = 2) | |
| தொடர்புறுத்தல் | = | சமமா எனப் பார்த்தல் |
| <> | சமமற்றதா | |
| < | குறைவா | |
| > | கூடுதலா | |
| <= | குறைவா அல்லது சமமா | |
| >= | கூடுதலா அல்லது சமமா | |
| தருக்க | AND | இரண்டும் உண்மை → உண்மை |
| OR | ஒன்றாவது உண்மை → உண்மை | |
| NOT | எதிர்மாற்றம் (உண்மை → பொய்) |
உதாரணம்: 5 + 14 MOD 4 = 5 + 2 = 7.
செய்து பாருங்கள் — பின்வரும் கோவைகளை மதிப்பிடுக
(1) 3 + 7 DIV 2 = 3 + 3 = 6
(2) 16 / 4 * 2 = 4 * 2 = 8
(3) NOT (8 MOD 2 > 5) = NOT (0 > 5) = NOT(False) = True
(4) 4 >= 4 AND NOT(7 > 9) = True AND NOT(False) = True AND True = True
7. கட்டுப்பாட்டுக் கட்டமைப்புகள் (Control Structures)
செய்நிரலில் கூற்றுகள் (Statements) நடைபெறுகின்ற ஒழுங்கு கட்டுப்பாட்டுக் கட்டமைப்புகளால் தீர்மானிக்கப்படுகின்றது. இவை மூன்று வகைப்படும்:
- தொடரி (Sequence) — தொடக்கப் படியிலிருந்து இறுதிப் படிவரை ஒன்றிலிருந்தொன்று ஒழுங்குமுறையில் நடைபெறுதல்.
- தெரிவு (Selection) — ஒரு நிபந்தனை திருப்தி செய்யப்படுவதைக்கு அல்லது செய்யப்படாமைக்கு ஏற்ப பாய்ச்சல் திசை தீர்மானிக்கப்படுதல்.
- மீள்செய்கை (Iteration / Loop) — ஒரு கூற்றுத் தொகுதி பல தடவைகள் மீளவும் நடைபெறுதல்.
7.1 தெரிவு — IF … THEN … ELSE
IF நிபந்தனை THEN கூற்று 1 ELSE கூற்று 2 ENDIF
If n1 > n2 then
Large := n1
Else
Large := n2;
Writeln('Large = ', Large);
7.2 மீள்செய்கை — FOR-DO, WHILE-ENDWHILE, REPEAT-UNTIL
FOR-DO: மீள்செயலின் எண்ணிக்கை முன்கூட்டியே தெரிந்திருக்கும்போது பயன்படுகின்றது.
FOR Variable := Value_1 TO Value_2 DO கூற்று
Program printNos(input,output);
Var count : integer;
Begin
For count := 1 to 10 do
Writeln(count);
End.
மேற்காட்டிய செய்நிரல் 1 தொடக்கம் 10 வரைக்குமான எண்களை வெளியிடுகின்றது. மீள்செயல் 10 தடவைகள் நடைமுறைப்படுத்தப்படுகின்றது.
FOR DOWNTO-DO: தொடக்கப் பெறுமானம் இறுதிப் பெறுமானத்திலும் கூடுதலாக இருக்க வேண்டும். உதாரணம் — FOR X := 10 DOWNTO 5 DO — மீள்செயல் 6 தடவைகள் நடைபெறும்.
| மீள்செயல் கட்டமைப்பு | தொடக்கம் | இறுதி | மீள்செயல் எண்ணிக்கை |
|---|---|---|---|
| FOR X := 1 TO 5 DO | 1 | 5 | 5 |
| FOR X := 10 DOWNTO 5 DO | 10 | 5 | 6 |
| FOR X := 4 DOWNTO 0 DO | 4 | 0 | 5 |
செய்து பாருங்கள் — 1 முதல் 100 வரை எண்களின் கூட்டுத்தொகை
BEGIN
Sum := 0
FOR i := 1 TO 100 DO
Sum := Sum + i
DISPLAY Sum
END
இறுதி வெளியீடு: 5050.
8. பஸ்கால் (Pascal) செய்நிரல் கட்டமைப்பு
போலிக் குறிமுறையில் எழுதப்பட்ட நெறிமுறையை ஒரு உயர் மட்ட மொழியில் (High-Level Language) மொழிபெயர்த்தல் வேண்டும். பஸ்கால் (Pascal) கற்றலுக்கு ஏற்ற கட்டமைப்புமுறை மொழியாகும். ஒரு பஸ்கால் செய்நிரலின் அமைப்பு:
Program ProgramName (input, output);
Var
variable_list : data_type;
Begin
statements;
End.
உதாரணம் — இரண்டு எண்களின் கூட்டுத்தொகை
Program SumTwo (input, output);
Var n1, n2, sum : integer;
Begin
Writeln('Enter two numbers');
Read(n1, n2);
sum := n1 + n2;
Writeln('Sum = ', sum);
End.
Program, Var, Begin, End, If, Then, Else, For, To, Downto, Do, While, Repeat, Until, Read, Writeln. ஒவ்வொரு கூற்றும் ; ஆல் முடிவடைய வேண்டும். மாறிக்கு பெறுமானம் வழங்கல் — := (இடப்பொருத்தல் வினைக்குறி).
9. அணி (Array)
ஒரே வகையான மாறிகளின் தொகுதியை ஒரு பெயரில் சேமிக்கும் கட்டுப்பாட்டு அமைப்பு அணி (Array) எனப்படும். ஒவ்வொரு மூலகத்தையும் எழுத்தாற்றுச் சுட்டியாக (Index) எடுத்துக்காட்டலாம்.
Var X : Array[1..5] of integer; X[1] := 10; X[2] := 20; ...
Var marks : array[0..39] of integer;
i : integer;
For i := 0 to 39 do
Begin
Writeln('Enter marks');
Read(marks);
marks[i] := marks;
End;
மேற்காட்டிய உதாரணத்தில் 40 மாணவர்களின் கணித புள்ளிகளை marks என்னும் அணியில் சேமிக்கின்றோம். ஒவ்வொரு புள்ளியையும் தனித் தனியான மாறிகளால் சேமிப்பதை விட இது மிக எளிது.
10. கணினி மொழிகளின் வகைகள்
கணினி மொழிகள் கணினியின் புரிதலின் மட்டத்திற்கு ஏற்ப மூன்று மட்டங்களாக வகைப்படுத்தப்படுகின்றன:
| மட்டம் | பெயர் | உதாரணம் | பண்பு |
|---|---|---|---|
| 1 | எந்திர மொழி (Machine Language) | 0, 1 (இருமம்) | கணினி நேரடியாகப் புரியும்; மனிதர்களுக்கு கடினம் |
| 2 | தொகுதிக் கூட்டல் மொழி (Assembly) | MOV, ADD | நினைவகச் சொற்களைப் பயன்படுத்தும்; Assembler-ஆல் மாற்றப்படும் |
| 3 | உயர் மட்ட மொழி (High-Level) | Pascal, C, Python, Java | மனிதருக்கு எளிது; Compiler / Interpreter ஆல் மாற்றப்படும் |
பொருள் சார்ந்த (Object Oriented) — Java, C++; பொருள்களைக் கொண்டது.
தருக்க (Logical) — Prolog; தருக்க விதிகளைப் பயன்படுத்துகிறது.
செயற்படு (Functional) — Lisp, Haskell; கணித செயற்பாடுகளைப் பயன்படுத்துகிறது.
செய்து பாருங்கள் — ஏன் உயர் மட்ட மொழி பயன்படுத்தப்படுகிறது?
உயர் மட்ட மொழி மனிதர்கள் புரிய எளிதானது. ஆனால் இவ்வாறான மொழியில் எழுதப்பட்ட நிரல்கள் (Source Code) கணினியால் நேரடியாகச் செயற்படுத்த முடியாது. ஆகவே Compiler அல்லது Interpreter மூலம் எந்திர மொழியில் மாற்றப்பட வேண்டும்.
📝 பரீட்சை வினாக்கள் (Past paper practice)
உண்மையான பரீட்சை வடிவம் — முதலில் உங்களே எழுதி, பின் மாதிரி விடை பார்க்க.
Programming / Problem Solving தொடர்பான MCQ பயிற்சி.
-
(a) பின்வரும் நிரலை (Program) கவனிக்கவும்:
counter:=2
WHILE counter <= 3 DO
DISPLAY \'Enter a Number\'
READ (number)
count = counter + 1
END WHILE
மேலே உள்ள நிரல் எத்தனை முறை செயல்படும்?
(1) 1
(2) 2
(3) 3
(4) 4 (1 புள்ளி)(2) 2.
விளக்கம்: counter=2 இல் தொடங்குகிறது. 2<=3 (உண்மை, 1-வது சுழற்சி), counter=3; 3<=3 (உண்மை, 2-வது சுழற்சி), counter=4; 4<=3 (பொய்), நிரல் நிறுத்தம். ஆக 2 முறை செயல்படும். -
(b) பின்வரும் நிரலை (Algorithm) கவனிக்கவும்:
count := 0
FOR i:=1 TO 4 DO
count := count + i
END FOR
DISPLAY count
count-இன் இறுதி மதிப்பு என்ன?
(1) 1
(2) 3
(3) 6
(4) 10 (1 புள்ளி)(4) 10.
விளக்கம்: i=1: count=0+1=1; i=2: count=1+2=3; i=3: count=3+3=6; i=4: count=6+4=10. இறுதி மதிப்பு = 10. -
(c) கணினி வழிமுறை (Algorithm) வடிவியலில் (Flowchart) முடிவு (Decision) குறியீட்டின் வடிவம் எது?
(1) செவ்வகம் (Rectangle)
(2) இரட்டை கோடுகள் (Parallelogram)
(3) வைரம் (Diamond)
(4) நீள்வட்டம் (Oval) (1 புள்ளி)(3) வைரம் (Diamond).
விளக்கம்: வழிமுறை வடிவியலில் முடிவு (Decision) குறியீட்டிற்கு வைர வடிவம் (Diamond shape) பயன்படுத்தப்படுகிறது. இதில் இருந்து \'ஆம்\' (Yes) மற்றும் \'இல்லை\' (No) என்ற இரு கிளைகள் கிளம்பும்.
Programming / Problem Solving பயிற்சி.
-
(a) பின்வரும் Pascal நிரலை கவனிக்கவும்:
VAR
counter : integer
BEGIN
counter := 2
WHILE counter <= 20 DO
BEGIN
DISPLAY \'Enter a Number\'
READ (number)
counter = counter + 1
END
END
(a) மேலே உள்ள நிரலில் counter-இன் ஆரம்ப மதிப்பு என்ன?
(b) இந்த நிரல் மொத்தம் எத்தனை முறை செயல்படும்?
(c) FOR சுழற்சியை (FOR loop) பயன்படுத்தி மேலே உள்ள WHILE சுழற்சியை மாற்றி எழுதவும்.
(d) count = count + 1 என்பதற்கு பதிலாக count = count + 2 என்று மாற்றினால் நிரல் எத்தனை முறை செயல்படும்? (8 புள்ளி)(a) counter-இன் ஆரம்ப மதிப்பு = 2
(b) மொத்தம் 19 முறை — counter = 2 முதல் 20 வரை (2, 3, 4, ..., 20) = 19 மதிப்புகள், எனவே 19 முறை.
(c) FOR சுழற்சி:
FOR counter := 2 TO 20 DO
BEGIN
DISPLAY \'Enter a Number\'
READ (number)
END
(d) count = count + 2 என்றால்:
counter: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 → 10 மதிப்புகள். எனவே 10 முறை செயல்படும். -
(b) பின்வரும் வழிமுறை (Algorithm) வரைவை (Flowchart) கவனிக்கவும்:
தொடக்கம் (Start)
↓
kandy_count = 0
galle_count = 0
student_count = 0
↓
ஒவ்வொரு மாணவரையும் சோதிக்கவும்:
நகரம் = Kandy? → ஆம்: kandy_count = kandy_count + 1
இல்லை → Galle? → ஆம்: galle_count = galle_count + 1
student_count = student_count + 1
↓
kandy_count, galle_count காட்டு
↓
முடிவு (End)
(a)(i) மேலே உள்ள வழிமுறை வரைவை படிப்படியாக விளக்கவும்.
(ii) kandy_count மற்றும் galle_count-இன் இறுதி மதிப்புகள் என்னவாகும் என்று விளக்கவும்.
(b) பின்வரும் Pascal நிரலை கவனிக்கவும்:
IF marks >= 75 THEN
Output \'Qualified for the post\'
ELSE
Output \'Not qualified for the post\'
(i) marks = 80 ஆக இருந்தால் வெளியீடு (Output) என்னவாகும்?
(ii) மேலே உள்ள நிரலில் ஒரு மாணவர் \'Qualified for the post\' ஆக தேர்வு பெற குறைந்தது எத்தனை மதிப்பெண் பெற வேண்டும்? (8 புள்ளி)(a)(i) விளக்கம்:
1. kandy_count, galle_count, student_count அனைத்தும் 0-ஆக துவங்குகின்றன
2. ஒவ்வொரு மாணவரின் நகரத்தை சோதிக்கிறது
3. Kandy என்றால் kandy_count கூட்டுகிறது
4. Galle என்றால் galle_count கூட்டுகிறது
5. student_count படிப்படியாக அதிகரிக்கிறது
6. இறுதியில் kandy_count மற்றும் galle_count காட்டப்படுகின்றன
(a)(ii) இறுதி மதிப்புகள் மாணவர்களின் நகர விவரங்களை பொறுத்தது. Kandy மாணவர்களின் எண்ணிக்கை = kandy_count, Galle மாணவர்களின் எண்ணிக்கை = galle_count.
(b)(i) marks = 80 >= 75, எனவே வெளியீடு: \'Qualified for the post\'
(b)(ii) குறைந்தது 75 மதிப்பெண் பெற வேண்டும் (marks >= 75 நிபந்தனை).
Programming / Problem Solving தொடர்பான MCQ பயிற்சி.
-
(a) 18. ஒரு pascal நிரலில் பின்வரும் குறியீடு உள்ளது:
begin
x := 4;
y := x+3;
writeln(y)
end.
வெளியீடு என்ன?
(A) 3
(B) 4
(C) 7
(D) 12 (1 புள்ளி)(C) 7.
விளக்கம்: x = 4, y = x + 3 = 4 + 3 = 7. எனவே writeln(y) என்பது 7 என்று அச்சிடும். -
(b) 19. IF characters = 16 என்றால் Pascal நிரலில் எழுத்துகளை (characters) சேமிக்க எந்த தரவு வகை (data type) பொருத்தமானது?
(A) Integer
(B) Char
(C) Boolean
(D) String (1 புள்ளி)(D) String.
விளக்கம்: 16 characters என்பது ஒன்றுக்கும் மேற்பட்ட எழுத்துகளை சேமிப்பதால் String தரவு வகை பொருத்தமானது. Char வகை ஒரே ஒரு எழுத்தை மட்டும் சேமிக்கும். -
(c) 20. IF variable = 43 சேமிக்கப்பட்டால் எந்த தரவு வகை சரியானது?
(A) Integer
(B) Real
(C) Char
(D) Boolean (1 புள்ளி)(A) Integer.
விளக்கம்: 43 என்பது முழு எண் (whole number) ஆதலால் Integer தரவு வகை சரியானது. -
(d) 21. Pascal நிரலில் WHILE loop மற்றும் REPEAT-UNTIL loop ஆகியவற்றுக்கு இடையே உள்ள முக்கிய வேறுபாடு என்ன?
(A) WHILE loop குறைந்தது ஒரு முறையாவது இயங்கும்
(B) REPEAT-UNTIL loop குறைந்தது ஒரு முறையாவது இயங்கும்
(C) இரண்டும் ஒரே மாதிரி செயல்படும்
(D) WHILE loop மட்டுமே நிபந்தனை சோதிக்கும் (1 புள்ளி)(B) REPEAT-UNTIL loop குறைந்தது ஒரு முறையாவது இயங்கும்.
விளக்கம்: REPEAT-UNTIL loop-இல் நிபந்தனை சோதிப்பு கடைசியில் நடக்கும், எனவே loop குறைந்தது ஒரு முறையாவது இயங்கும். WHILE loop-இல் நிபந்தனை முதலில் சோதிக்கப்படும். -
(e) 22. Pascal நிரலில் FOR loop:
For counter := 1 to 5 do
writeln(counter);
கீழ்காணும் வெளியீடுகளில் சரியானது எது?
(A) 1 2 3 4
(B) 1 2 3 4 5
(C) 0 1 2 3 4 5
(D) 2 3 4 5 (1 புள்ளி)(B) 1 2 3 4 5.
விளக்கம்: FOR loop counter := 1 முதல் 5 வரை இயங்குவதால் 1, 2, 3, 4, 5 என்று ஐந்து மதிப்புகளை அச்சிடும். -
(f) 23. ஒரு algorithm-இல் flowchart-இல் diamond வடிவம் எதை குறிக்கும்?
(A) தொடக்கம்/முடிவு
(B) செயல்முறை (Process)
(C) உள்ளீடு/வெளியீடு
(D) முடிவு (Decision) (1 புள்ளி)(D) முடிவு (Decision).
விளக்கம்: Flowchart-இல் diamond (வைரம்) வடிவம் முடிவு எடுக்கும் இடத்தை (Decision) குறிக்கும். இங்கு ஆம்/இல்லை அல்லது உண்மை/பொய் என்று இரண்டு பாதைகள் உருவாகும். -
(g) 24. கீழ்காணும் Pascal நிரலை கவனியுங்கள்:
program p1;
var
a : integer;
begin
a := 0;
while a < 5 do
begin
a := a + 2;
end;
writeln(a);
end.
வெளியீடு என்ன?
(A) 4
(B) 5
(C) 6
(D) 8 (1 புள்ளி)(C) 6.
விளக்கம்: a = 0: நிபந்தனை 0<5 சரி → a=2; 2<5 சரி → a=4; 4<5 சரி → a=6; 6<5 தவறு → நிறுத்தம். வெளியீடு 6. -
(h) 25. கீழ்காணும் flowchart-ஐ கவனியுங்கள். N=4 என்று உள்ளீடு கொடுக்கப்பட்டால் வெளியீடு என்ன?
(A) APS
(B) APF
(C) NAPS
(D) NAPF (1 புள்ளி)(A) APS.
விளக்கம்: flowchart-ல் N=4 என்ற மதிப்பை வைத்து செயல்முறை கடந்தால் APS என்ற வெளியீடு கிடைக்கும்.
Programming / Problem Solving பயிற்சி.
-
(a) 4. (a) கீழ்காணும் Pascal நிரலைக் கவனியுங்கள்:
program p2;
var
number : integer;
begin
number := 0;
repeat
number := number + 1;
until number = 5;
writeln(number);
end.
(i) இந்த நிரல் எத்தனை முறை loop ஆகும்?
(ii) வெளியீடு என்ன?
(b) 1 முதல் N வரை உள்ள எண்களின் கூட்டலை கணக்கிட Pascal நிரல் எழுதுக. N-ஐ பயனர் உள்ளீடாக கொடுப்பார்.
(c) கீழ்காணும் Flowchart-ஐ கவனியுங்கள்:
[Start → Read N → total := 0, i := 1 → i <= N? → ஆம்: total := total + i, i := i + 1 → மீண்டும் நிபந்தனைக்கு; இல்லை: Write total → Stop]
N = 4 என்று கொடுக்கப்பட்டால்:
(i) Loop எத்தனை முறை இயங்கும்?
(ii) இறுதி வெளியீடு என்ன? (10 புள்ளி)(a)(i) நிரல் 5 முறை loop ஆகும் (number 1 முதல் 5 வரை).
(ii) வெளியீடு: 5
(b) Pascal நிரல்:
program SumCalculation;
var
N, i, total : integer;
begin
write(\'N மதிப்பை உள்ளிடுக: \');
readln(N);
total := 0;
for i := 1 to N do
begin
total := total + i;
end;
writeln(\'கூட்டல் = \', total);
end.
(c)(i) N = 4 என்றால் loop 4 முறை இயங்கும் (i = 1, 2, 3, 4).
(ii) இறுதி வெளியீடு: total = 1 + 2 + 3 + 4 = 10
Programming / Problem Solving தொடர்பான MCQ பயிற்சி.
-
(a) 16. Pascal மொழியில் ஒரு variable ஐ integer வகையில் அறிவிக்க எந்த keyword பயன்படுகிறது?
(A) REAL
(B) CHAR
(C) INTEGER
(D) BOOLEAN (1 புள்ளி)(C) INTEGER.
விளக்கம்: Pascal மொழியில் முழு எண்களை (whole numbers) சேமிக்க INTEGER என்ற data type பயன்படுகிறது. -
(b) 17. Pascal மொழியில் ஒரு F.Q.R என்ற function ஐப் பற்றிய கீழ்க்கண்ட கோட் துணுக்கை கவனிக்கவும். இந்த function ஆனது எந்த data type ஐ திருப்பி அனுப்பும்?
(A) Integer
(B) Real
(C) Boolean
(D) String (1 புள்ளி)(C) Boolean.
விளக்கம்: Function declaration இல் குறிப்பிடப்பட்ட return type ஆனது Boolean என்று இருக்கும் என்று பக்கத்தில் காட்டப்படும் code இலிருந்து தெரிகிறது. -
(c) 18. ஒரு Pascal நிரலில் FOR loop ஐப் பயன்படுத்தி 1 முதல் N வரை உள்ள எண்களின் கூட்டுத்தொகையை (sum) கணக்கிட ஒரு algorithm இன் flowchart கொடுக்கப்பட்டுள்ளது. அதில் காட்டப்பட்டுள்ள P, Q, R என்ற box இடங்களில் சரியாக இருப்பவை எவை?
(A) P: Sum:=0, Q: Sum:=Sum+i, R: Print Sum
(B) P: i:=1, Q: i:=i+1, R: Sum:=Sum+i
(C) P: Sum:=Sum+1, Q: Print Sum, R: i:=0
(D) P: Print Sum, Q: Sum:=0, R: Sum:=Sum+i (1 புள்ளி)(A) P: Sum:=0, Q: Sum:=Sum+i, R: Print Sum.
விளக்கம்: P: Sum:=0 (initialize), Q: Sum:=Sum+i (accumulate), R: Print Sum (output). FOR loop மூலம் கூட்டுத்தொகை காண்பதற்கான நிலையான அல்கோரிதம் இதுவாகும். -
(d) 19. Pascal மொழியில் AND, NOT, OR என்ற logical operators பயன்படுத்தும்போது சரியான முன்னுரிமை (precedence) வரிசை எது?
(A) NOT, AND, OR
(B) OR, AND, NOT
(C) AND, NOT, OR
(D) AND, OR, NOT (1 புள்ளி)(A) NOT, AND, OR.
விளக்கம்: Pascal இல் logical operators இன் முன்னுரிமை வரிசை: NOT (மிக அதிகம்) → AND → OR (மிக குறைவு).
Programming / Problem Solving பயிற்சி.
-
(a) 2. (a) கீழே ஒரு Pascal நிரலின் ஒரு பகுதி கொடுக்கப்பட்டுள்ளது:
Program example;
Var
i, Sum : Integer;
Begin
Sum := 0;
FOR i := 1 TO 10 DO
Begin
Sum := Sum + i;
End;
Writeln(Sum);
End.
(i) இந்த நிரல் என்ன செய்கிறது என விளக்குக.
(ii) நிரல் இயக்கப்பட்டால் வெளியீடு (output) என்னவாக இருக்கும்?
(iii) FOR loop ஐ WHILE loop ஆக மாற்றி எழுதுக.
(b) Pascal மொழியில் Procedure மற்றும் Function இன் வேறுபாடுகளை குறிப்பிடுக.
(c) பின்வரும் flowchart ஐப் பார்த்து Pascal நிரல் எழுதுக:
[Flowchart: Start → Input N → IF N>0 THEN print \'Positive\' ELSE print \'Negative\' → Stop] (10 புள்ளி)(a)(i) இந்த நிரல் 1 முதல் 10 வரை உள்ள எண்களின் கூட்டுத்தொகையை (Sum) கணக்கிட்டு வெளிப்படுத்துகிறது.
(ii) வெளியீடு: 55 (1+2+3+...+10 = 55)
(iii) WHILE loop மாற்றம்:
Sum := 0;
i := 1;
WHILE i <= 10 DO
Begin
Sum := Sum + i;
i := i + 1;
End;
Writeln(Sum);
(b) Procedure: மதிப்பை திருப்பி அனுப்பாது (no return value); Function: ஒரு மதிப்பை (value) திருப்பி அனுப்பும் (has return type).
(c) Pascal நிரல்:
Program CheckSign;
Var N : Integer;
Begin
Readln(N);
IF N > 0 THEN
Writeln(\'Positive\')
ELSE
Writeln(\'Negative\');
End. -
(b) 5. (a) பின்வரும் Pascal நிரலின் வெளியீட்டை (output) எழுதுக:
Program test;
Var a, b, c : Integer;
Begin
a := 10;
b := 4;
c := a MOD b;
Writeln(c);
c := a DIV b;
Writeln(c);
End.
(b) கீழே கொடுக்கப்பட்டுள்ள flowchart ஐ Pascal நிரலாக மாற்றுக:
[Flowchart: Start → P=1 → Q=1 → P<=5? (Yes→R=P*Q, Print R, Q=Q+1, go back to Q loop; No→P=P+1, check P<=5?) → Stop]
(c) Pascal இல் Array (வரிசை) என்றால் என்ன? ஒரு எடுத்துக்காட்டுடன் விளக்குக.
(d) Pascal நிரல் எழுதும்போது கடைப்பிடிக்க வேண்டிய Debugging (பிழை திருத்தம்) முறைகளை விளக்குக. (10 புள்ளி)(a) வெளியீடு:
2
2
(10 MOD 4 = 2; 10 DIV 4 = 2)
(b) Pascal நிரல்:
Program MultiTable;
Var P, Q, R : Integer;
Begin
P := 1;
WHILE P <= 5 DO
Begin
Q := 1;
WHILE Q <= 5 DO
Begin
R := P * Q;
Writeln(R);
Q := Q + 1;
End;
P := P + 1;
End;
End.
(c) Array (வரிசை): ஒரே data type உடைய பல மதிப்புகளை ஒரே variable name இல் சேமிக்கும் data structure.
எடுத்துக்காட்டு:
Var marks : Array[1..5] of Integer;
5 மாணவர்களின் மதிப்பெண்களை marks[1], marks[2],...marks[5] என சேமிக்கலாம்.
(d) Debugging முறைகள்: (1) Syntax errors: compiler காட்டும் பிழைகளை திருத்துக. (2) Logic errors: நிரலின் தர்க்கத்தை சோதனை data மூலம் சரிபார்க்கவும். (3) Runtime errors: நிரல் இயக்கத்தின்போது வரும் பிழைகளை கண்டுபிடித்து திருத்தவும்.
Programming / Problem Solving பயிற்சி.
-
(a) 5. (a) பின்வரும் Pascal நிரல் (Pascal program) ஒரு எண்ணை (Counter) 1 இலிருந்து 10 வரை பட்டியலிடுகிறது.
BEGIN
Counter := 1
WHILE Counter <= 10 DO
BEGIN
DISPLAY Counter
Counter = Counter + 1
END
END
(i) மேற்கண்ட நிரலில் WHILE Counter <= 10 DO என்ற வரிசை REPEAT-UNTIL மாற்றமாக (alternative) எப்படி எழுதுவீர்கள்?
(ii) மேற்கண்ட நிரலை FOR வளையமாக (FOR loop) மாற்றி எழுதுங்கள்.
(iii) நிரலில் Counter = Counter + 1 என்பதன் பொருள் என்ன?
(iv) நிரல் வெளியீடாக (output) என்ன காட்டும்?
(v) Counter ஐ 2 இலிருந்து 20 வரை ஒற்றை எண்களை மட்டும் காட்ட (odd numbers only) நிரலை மாற்றவும்.
(b) பின்வரும் நிரல் வரைபட (flowchart) ஐ கவனியுங்கள்.
(i) நிரல் வரைபடத்தில் உள்ள முடிவு (Decision) சின்னம் எதை குறிக்கிறது?
(ii) நிரல் வரைபடத்தில் முடிவு செய்யும் சின்னத்தின் வெளியீடு எத்தனை கிளைகள் (branches) கொண்டது?
(c) Pascal இல் IF-THEN-ELSE பயன்படுத்தி ஒரு மாணவரின் மதிப்பெண்ணை (mark) தேர்ச்சி (pass) அல்லது தோல்வி (fail) என்று காட்டும் நிரல் எழுதுங்கள். (20 புள்ளி)(a)(i) REPEAT-UNTIL மாற்றம்:
BEGIN
Counter := 1
REPEAT
DISPLAY Counter
Counter := Counter + 1
UNTIL Counter > 10
END
(a)(ii) FOR வளையம்:
BEGIN
FOR Counter := 1 TO 10 DO
BEGIN
DISPLAY Counter
END
END
(a)(iii) Counter = Counter + 1 என்பது Counter ஐன் தற்போதைய மதிப்பில் 1 கூட்டி மீண்டும் Counter இல் சேமிக்கிறது. இது வளையத்தை முன்னேற்றுகிறது.
(a)(iv) நிரல் வெளியீடு: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 என்று ஒவ்வொன்றாக காட்டும்.
(a)(v) ஒற்றை எண்களுக்கான நிரல்:
BEGIN
Counter := 1
WHILE Counter <= 20 DO
BEGIN
IF Counter MOD 2 <> 0 THEN
DISPLAY Counter
Counter := Counter + 1
END
END
(b)(i) நிரல் வரைபடத்தில் முடிவு (Decision) சின்னம் நிபந்தனையை (condition) சரிபார்க்கிறது, பொதுவாக வைரம் (diamond) வடிவில் இருக்கும்.
(b)(ii) முடிவு சின்னம் இரண்டு கிளைகள் (YES/NO அல்லது TRUE/FALSE) கொண்டது.
(c) IF-THEN-ELSE நிரல்:
VAR mark : INTEGER;
BEGIN
READ(mark)
IF mark >= 40 THEN
WRITELN(\'Pass\')
ELSE
WRITELN(\'Fail\')
END. -
(b) 7. (a) பின்வரும் Pascal நிரல் (program) ஒரு எண்ணின் காரணிகளை (factors) கண்டறிகிறது.
(i) நிரல் வரைபட (flowchart) சின்னங்களை அடையாளம் காணுங்கள்:
(A) சுற்றளவு (oval) சின்னம் எதை குறிக்கிறது?
(B) இணைகரம் (parallelogram) சின்னம் எதை குறிக்கிறது?
(C) செவ்வகம் (rectangle) சின்னம் எதை குறிக்கிறது?
(D) வைரம் (diamond) சின்னம் எதை குறிக்கிறது?
(ii) தரவு வகைகளை (data types) அடையாளம் காணுங்கள்:
(A) Integer என்றால் என்ன?
(B) Real என்றால் என்ன?
(C) Boolean என்றால் என்ன?
(D) String என்றால் என்ன?
(E) Char என்றால் என்ன?
(b) (i) BEGIN பிரிவில் உள்ள counter_a மற்றும் counter_b என்ன செய்கின்றன?
(ii) Flowchart இல் உள்ள எந்த படிமுறை (step) WHILE loop ஐ குறிக்கிறது?
(iii) Flowchart இல் counter_a மற்றும் counter_b ஏன் பயன்படுத்தப்படுகின்றன?
(c) Pascal இல் ஒரு நூறு வரை (1 to 100) எண்களின் தொகையை (sum) கணக்கிட நிரல் எழுதுங்கள்.
(d) ஒரு எண் ஒற்றையா (odd) அல்லது இரட்டையா (even) என்று சரிபார்க்கும் Pascal நிரல் எழுதுங்கள். (20 புள்ளி)(a)(i) நிரல் வரைபட சின்னங்கள்:
(A) சுற்றளவு (Oval): தொடக்கம் (Begin) அல்லது முடிவு (End) குறிக்கிறது
(B) இணைகரம் (Parallelogram): உள்ளீடு (Input) அல்லது வெளியீடு (Output) குறிக்கிறது
(C) செவ்வகம் (Rectangle): செயல்முறை (Process) குறிக்கிறது
(D) வைரம் (Diamond): முடிவு (Decision) குறிக்கிறது
(a)(ii) தரவு வகைகள்:
(A) Integer: முழு எண்கள் (உதா: 1, 2, -5, 100)
(B) Real: தசம எண்கள் (உதா: 3.14, -2.5, 0.001)
(C) Boolean: உண்மை/பொய் (TRUE/FALSE) மதிப்புகள்
(D) String: ஒன்றுக்கு மேற்பட்ட எழுத்துக்களின் தொடர் (உதா: \'Hello\', \'Ayyan\')
(E) Char: ஒரு தனி எழுத்து (உதா: \'A\', \'b\', \'5\')
(b)(i) counter_a ஒற்றை எண்களை (odd numbers) எண்ணுகிறது; counter_b இரட்டை எண்களை (even numbers) எண்ணுகிறது.
(b)(ii) Flowchart இல் WHILE loop ஐ முடிவு சின்னம் (diamond) மற்றும் திரும்பும் அம்புக்குறி (loop back arrow) குறிக்கிறது.
(b)(iii) counter_a ஒற்றை எண்களின் எண்ணிக்கையை, counter_b இரட்டை எண்களின் எண்ணிக்கையை சேகரிக்கின்றன.
(c) 1 முதல் 100 வரை தொகை:
VAR i, sum : INTEGER;
BEGIN
sum := 0;
FOR i := 1 TO 100 DO
sum := sum + i;
WRITELN(\'Sum = \', sum)
END.
(d) ஒற்றை/இரட்டை சரிபார்க்கும் நிரல்:
VAR n : INTEGER;
BEGIN
READ(n);
IF n MOD 2 = 0 THEN
WRITELN(\'Even\')
ELSE
WRITELN(\'Odd\')
END.
✅ விரைவுச் சோதனை (Quick Check)
முக்கிய புள்ளிகளை உறுதிப்படுத்த — தவறான விடைகள் உங்கள் தவறுப் புத்தகத்தில் சேமிக்கப்படும்.