6.1 சிக்கலும் தீர்வும் (Problem and Solution)

இங்கே நாம் சிக்கல் எனக் குறிப்பிடுவது கணிப்பொறியில் செய்து முடிக்க வேண்டிய ஒரு கணக்கீடாக இருக்கலாம். அல்லது எதேனும் ஒரு செயல்பாடாக இருக்கலாம். அவ்வாறு ஒரு கணக்கீடு அல்லது செயல்பாட்டைக் கணிப்பொறி யில் நிறைவேற்ற ஏதேனும் ஒரு கணிப்பொறி மொழியில் நிரல் எழுத வேண்டும். நிரல் எழுதி இயக்குவதற்கு முன்பாகச் சில முன்னேற்பாடுகளைச் செய்து முடிக்க வேண்டும்:

  • நாம் எடுத்துக் கொண்ட சிக்கல் என்ன என்பதை குழப்பமின்றித் தெளிவாக வரையறுக்க வேண்டும்.
  • சிக்கல் தீர்வுக்கான செயல்பாட்டில் உள்ளீடாகப் பெறப்போவது என்ன, வெளியீடு என்னவாக இருக்க வேண்டும், அந்த வெளியீட்டைப் பெற என்னென்ன செயலாக்கங்களை நிகழ்த்த வேண்டும் என முடிவு செய்ய வேண்டும்.
  • சிக்கல் தீர்க்கும் தீர்வுநெறியை முடிவுசெய்ய வேண்டும். பிறகு அதற்கான பாய்வுப் படத்தை வரைந்துகொள்ள வேண்டும் அல்லது போலிக்குறி முறையை எழுதிக்கொள்ள வேண்டும்.

பாய்வுப் படம் அல்லது போலிக் குறிமுறையை அடிப்படையாகக் கொண்டு நிரல் எழுதி இயக்குவது எளிது

6.1.1 சிக்கலின் வரையறுப்பு

கேள்வியைச் சரியாகப் புரிந்துகொள்ளவில்லை எனில் பதிலைச் சரியாக வெளியிட முடியாது. கணக்கைச் சரியாகப் புரிந்துகொள்ளவில்லை எனில் விடை தவறாகவே வரும். வாழ்க்கையிலும் அப்படித்தான். சிக்கலைச் சரியாகப் புரிந்து செயல்படாத காரணத்தாலேயே பல வேளைகளில் தோல்வியைத் தழுவுகிறோம். எனவே ஒரு சிக்கலுக்குச் சரியான தீர்வு காணப்பட வேண்டுமெனில், முதற்கட்டமாகச் சிக்கலைச் சரியாகப் புரிந்து கொண்டு, ‘இதுதான் சிக்கல்’ எனத் தெளிவாக வரையறுத்துக் கொள்ள வேண்டும். இது மூன்று கட்டங்களாக அமையும்:

  • சிக்கலை அடையாளம் காண்பது.
  • சிக்கலின் தன்மையைப் புரிந்துகொள்வது.
  • சிக்கலைத் தெளிவாக வரையறுத்துக் கொள்வது.

ஓர் எடுத்துக்காட்டு காண்போம். அண்மைக் காலமாய் பையன் சரியாகப் படிப்பதில்லை; வகுப்பில் தரவரிசை குறைந்துள்ளது என்று பொதுவாக அறிந்துகொண்டால் அது சிக்கலை அடையாளம் கண்டதாகப் பொருள். கணக்கு, தமிழ்ப் பாடங்களில் மதிப்பெண் குறைவாகப் பெறுகிறான் என்று குறிப்பாக அறிந்துகொள்ளும்போது சிக்கலைப் புரிந்து கொண்டதாகப் பொருள். கணக்கில் கவனக் குறைவு மிகுதி, தமிழில் எழுத்துப் பிழை மிகுதி என உன்னிப்பாய் அறிந்துகொள்ளும்போதுதான் சிக்கலைச் சரியாக வரையறுத்துள்ளீர்கள் என்று பொருள். அவ்வாறு வரையறுத்துக் கொண்ட பிறகுதான் சிக்கலுக்குச் சரியான தீர்வு காண முடியும். “ஏன் மதிப்பெண் குறைந்தது? இனிமேல் ஒழுங்காகப் படிப்பாயா?” எனக் கேட்டு நான்கு அடி கொடுத்துவிட்டால் சிக்கல் தீர்ந்து விடாது. அதுபோலத்தான் கணிப்பொறியில் சிக்கல் தீர்க்கும் முறையும்.

6.1.2 உள்ளீடு / செயலாக்கம் / வெளியீடு

கணிப்பொறி என்பதே உள்ளீடு, செயலாக்கம், வெளியீடு என்ற அடிப்படையில் செயல்படும் முறைமை என்பதை ஏற்கெனவே படித்துள்ளோம். எனவே கணிப்பொறி வாயிலாகத் தீர்வு காணவிருக்கும் எந்தவொரு சிக்கலையும் அணுகும்போது அதற்கான உள்ளீடுகள் யாவை, வெளியீடு என்னவாக இருக்க வேண்டும், அவ்வெளியீட்டைப் பெற எத்தகைய செயலாக்கங்களை நிகழ்த்த வேண்டும் என்பதைத் தீர்மானிக்க வேண்டும். சில எடுத்துக்காட்டுகளைப் பார்ப்போம்.

1.
சிக்கல்: ஒரு கன செவ்வகப் பெட்டியின் கொள்ளளவைக் காணல்.
 
உள்ளீடு: பெட்டியின் நீளம், அகலம், உயரம்
 
வெளியீடு: பெட்டியின் கொள்ளளவு
 
செயலாக்கம்: நீளம் x அகலம் x உயரம் காணல்
2. 
சிக்கல்: A, B, C ஆகிய மூன்று எண்களில் பெரிய எண்ணைக் காணல்
 
உள்ளீடு: A, B, C ஆகிய மூன்று எண்கள்
 
வெளியீடு: மூன்றில் பெரிய எண்
 
செயலாக்கம்: A-ஐ B-யுடன், A-ஐ C-யுடன், B-ஐ C-யுடன் ஒப்பிடல்
 3.
சிக்கல்: ஓர் எண் N பகாஎண்ணா (prime number) என அறி.
 
உள்ளீடு: ஒரு முழு எண் N
 
வெளியீடு: N பகாஎண் அல்லது N பகாஎண் இல்லை
 
செயலாக்கம்: - 2, 3, 4, ... என N-1 வரை ஒவ்வோர் எண்ணாலும் N-ஐ வகுத்தல்.
 
  - எந்த எண்ணும் மீதியின்றி வகுக்கவில்லை எனில், N பகாஎண்; ஏதேனும் ஓர் எண் மீதியின்றி வகுத்தால், N பகாஎண் இல்லை.

இவ்வாறு ஒவ்வொரு சிக்கலுக்கும் உள்ளீடு, வெளியீடு, செயலாக்கங்களைத் தெளிவாக வரையறுத்துக் கொண்டால், சிக்கலுக்குத் தீர்வு காண்பது எளிது.

6.1.3 சிக்கல் தீர்க்கும் நுட்பங்கள்

உங்களிடம் ஒருவர் நகராட்சி அலுவலகம் செல்வதற்கு வழி கேட்கிறார். எந்த வழியாகச் செல்ல வேண்டும் என்பதை விளக்கிக் கூறுகிறீர்கள். அவருக்குப் புரியவில்லை. சற்றே தயங்கி நிற்கிறார். அவருக்குப் புரியும் வகையில் கீழ்க்காணுமாறு எழுதித் தரலாம்:

-
இதே சாலையில் நேராகச் செல்லுங்கள்.
-
இடப்பக்கம் இரண்டாவது சாலையில் திரும்பி சிறிது தொலைவு நடந்து செல்லுங்கள்.
-
ஒரு விநாயகர் கோவில் வரும். அதன் நேரெதிரச் சாலையில் செல்லுங்கள்.
-
சிறிது தொலைவில் திரையரங்கு வரும்.
-
திரையரங்குக்கு நேர் எதிரில் நகராட்சி அலுவலகம் இருக்கும்.

என ஒரு தாளில் எழுதித் தரலாம். இன்னும் தெளிவாக அவருக்குப் புரிய வைக்கக் கீழ்க்காணுமாறு படம் வரைந்து தரலாம்:

இவ்வாறு, ஒரு கேள்விக்குரிய பதிலைப் படிநிலைகளாக (Step by Step) எழுதிக் காட்டலாம். அதையே படமாக வரைந்து விளக்கவும் முடியும். கணிதத்தில் ஒரு கணக்கீட்டைச் செய்து முடிக்கும் வழிமுறைகளையும் படிப்படியாய் எழுதிக் காட்டலாம். அல்லது படம் வரைந்து விளக்கலாம். சுருக்கமாகச் சொல்வதெனில் எந்தவொரு செயல்பாட்டையும் அல்லது சிக்கலுக்கான தீர்வையும் எழுத்திலோ படத்திலோ விளக்கிச் சொல்ல முடியும்.

கணிப்பொறி வழியாகச் சிக்கலுக்குத் தீர்வு காண்பதற்கும் இந்த நுட்பங்களைப் பயன்படுத்திக் கொள்ள முடியும். முதலில், சிக்கல் தீர்க்கும் செயல்முறையைச் சிந்தித்துச் சரியான தீர்வுநெறியை (Algorithm) முடிவு செய்துகொள்ள வேண்டும். பிறகு, அதன் வழிமுறைகளைப் பாய்வுப் படமாக (Flow Chart) வரைந்து கொள்ளலாம். அல்லது போலிக் குறிமுறையாக (Pseudo Code) எழுதிக் கொள்ளலாம். இறுதியில் பாய்வுப் படம் அல்லது போலிக் குறிமுறையை வழிகாட்டியாகக் கொண்டு கணிப்பொறி மொழியின் கட்டளைகளை அமைத்து நிரலை (Program) வடிவமைக்க வேண்டும். அந்நிரலை கணிப்பொறியில் இயக்கும்போது, வெளியீடாகச் சிக்கலுக்கான விடை கிடைக்கும். கணிப்பொறி வழியாகச் சிக்கல் தீர்ப்பதற்கான நுட்பங்கள் ஒவ்வொன்றாகப் பார்ப்போம்.