கணினி அறிவியல் : பைத்தான் செயற்கூறுகள்
மதிப்பீடு
பகுதி – அ
சரியான விடையை தேர்ந்தெடுத்து
எழுதுக (1 மதிப்பெண்)
1. ஒரு குறிப்பிட்ட செயலைச் செய்வதற்காக
வடிவமைக்கப்பட்டு, பெயரிடப்பட்ட குறிமுறையின் தொகுதி
அ)
மடக்குவ
ஆ)
கிளைப்பிரிப்பு
இ)
செயற்கூறு
ஈ)
தொகுதி
விடை: இ) செயற்கூறு
2. தன்னைத்தானே அழைத்துக் கொள்ளும்
செயற்கூறை இவ்வாறு அழைப்பர்.
அ)
உள்ளிணைந்த
ஆ)
தற்சுழற்சி
இ)
லாம்டா
ஈ) return கூற்று
விடை: ஆ) தற்சுழற்சி
3. எந்த செயற்கூறை பெயரில்லா செயற்கூறு
என்று அழைக்கப்படுகிறது?
அ)
லாம்டா
ஆ)
தற்சுழற்சி
இ)
செயற்கூறு
ஈ)
வரையறை
விடை: அ) லாம்டா
4. செயற்கூறு தொகுதியை எந்த சிறப்புச்சொல்
தொடங்கிவைக்கிறது?
அ)
defineவ
ஆ)
for
இ)
finally
ஈ)
def
விடை : ஈ) def
5. எந்த சிறப்புச்சொல் செயற்கூறு
தொகுதியை முடித்து வைக்கிறது?
அ)
definet
ஆ) return
இ)
finally
ஈ)
def
விடை : ஆ)
return
6. செயற்கூறு வரையிறையில் பின்வரும்
எந்த குறியீடு பயன்படுத்தப்படுகிறது?
அ)
(அரைப் புள்ளி)
ஆ)
(புள்ளி)
இ)
முக்காற் புள்ளி
ஈ)
$ (டாலர்)
விடை: இ) : முக்காற்
புள்ளி
7. செயற்கூறுக்கு எந்த செயலுருபு
சரியான இட வரிசையில் செயலுருபுகளை அனுப்பும்?
அ)
தேவையான
ஆ)
சிறப்புச்சொல்
இ)
தானமைவு
ஈ)
மாறி நீளம்
விடை: அ) தேவையான
8. பின்வரும் கூற்றுகளைப் படித்து,
சரியான கூற்றுகளைத் தேர்ந்து எடுக்கவும்.
(I) பைத்தானில், செயற்கூறை வரையறுக்கும்
போது குறிப்பிட்ட தரவு வகைகளைக் குறிப்பிடத் தேவையில்லை
(II) பைத்தான் சிறப்புச் சொற்களைச்
செயற்கூறின் பெயராகப் பயன்படுத்தலாம்.
அ) I சரி மற்றும் II தவறு
ஆ)
இரண்டுமே சரி
இ)
1 மற்றும் II சரி
ஈ)
இரண்டுமே தவறு
விடை : I சரி மற்றும் II தவறு
9. கொடுக்கப்பட்ட கூற்றை வெற்றிகரமாக
நிறை வேற்றுவதற்கு, பின்வருவனவற்றுள் சரியான ஒன்றைத் தேர்ந்தெடு
If______: print(x, " is
a leap year")
அ)
x%2=0வ ஆ) x%4==0
இ)
x/4=0 ஈ) x%4=0
விடை : ஆ)
x%4==0
10. testpython() செயற்கூறைவரையறுக்க
பின்வரும் எந்த சிறப்புச் சொல்பயன்படுகிறது?
அ)
definet
ஆ)
pass
இ)
def
ஈ)
while
விடை : இ) def
பகுதி - ஆ
அனைத்து வினாக்களுக்கும்
விடையளி (2 மதிப்பெண்கள்)
1. செயற்கூறு என்றால் என்ன?
விடை. செயற்கூறுகள் என்பது குறிப்பிட்ட செயலை செய்வதற்கான தொடர்புடைய கூற்றுகளின்
தொகுதி ஆகும்.
2. செயற்கூறின் வகைகளை எழுதுக.
விடை. (i) பயனர் வரையறுக்கும் செயற்கூறுகள்
(ii) உள்ளிணைந்த செயற்கூறுகள்
(iii) லாம்டா செயற்கூறுகள்
(iv) தற்சுழற்சி செயற்கூறுகள்
3. செயற்கூறுவின் முக்கிய நன்மைகள்
யாவை?
விடை. செயற்கூறுவின் முதன்மை நன்மைகள் :
(i) குறிமுறையை மீண்டும் எழுதுவதை தவிர்த்து குறிமுறையின் மறு பயனாக்கத்திற்கு
உதவுகிறது.
(ii) நமது பயன்பாட்டிற்குச் சிறந்த கூறுநிலையை வழங்குகிறது.
4. மாறியின் வரையெல்லை என்றால்
என்ன? அதன் வகைகளைக் குறிப்பிடுக.
விடை. (i) இது நிரலின் அணுகக்கூடிய பகுதியைக் குறிப்பதாகும். அதாவது, எந்த
பகுதியில் மாறியைப் பயன்படுத்துகிறோமோ அதைக் குறிக்கிறது.
(ii) வரையெல்லையானது நடப்பு மாறித் தொகுதிகள் மற்றும் அதன் மதிப்புகளைக்
கொண்டிருக்கும். இரண்டு வகையான வரையெல்லைகளைக் கொண்டுள்ளது. அவை உள்ளமை வரையெல்லை மற்றும்
குளோபல் வரையெல்லை.
5. குளோபல் வரையெல்லை -வரையறு.
விடை. குளோபல் வரையெல்லை உடைய மாறியை நிரலில் எங்கு வேண்டுமானாலும் அணுக
முடியும். எந்த ஒரு செயற்கூறு வரையெல்லைக்கு வெளியேயும் மாறியை வரையறுத்து உருவாக்க
முடியும்.
6. தன்னைத்தானே அழைக்கும் செயற்கூறில்
அடிப்படை நிபந்தனை என்றால் என்ன?
விடை. (i) தற்சுழற்சி செயற்கூறு தன்னைத்தானே அழைக்கும். ஒரு நிபந்தனையில்
நிறுத்தப்படாவிட்டால், ஒரு செயல்முறை காலவரையின்றி செயல்படும்.
(ii) இந்த செயற்பாட்டை காலவரையின்றி செயல்படும் தற்சுழற்சி எனப்படும்.
தற்சுழற்சி செயற்கூறு கொடுக்கப்படும் நிபந்தனையை அடிப்படை நிபந்தனை எனப்படும்.
(iii) ஒவ்வொரு தற்சுழற்சி செயற்கூற்றிக்கும் அடிப்படை நிபந்தனை கொடுக்கப்பட
வேண்டும் இல்லையென்றால் மடக்கு காலவரையின்றி இயங்கும்.
7. தன்னைத்தானே அழைக்கும் செயற்கூறுக்கு
வரம்பை எவ்வாறு அமைக்க வேண்டும்? எடுத்துக்காட்டு தருக.
விடை. தன்னைத்தானே அழைக்கும் செயற்கூறுக்கு வரம்பை sys.setrecursionlist
(limit-value) பயன்படுத்தி அமைக்க வேண்டும்.
எடுத்துக்காட்டு :
import sys
sys.setrecursionlimit(3000)
def fact(n):
if n ==0:
return 1
else:
return n * fact(n-1)
print(fact (2000))
பகுதி - இ
அனைத்து வினாக்களுக்கும்
விடையளி (3 மதிப்பெண்கள்)
1. உள்ளமை மாறிகளுக்கான விதிமுறைகளை
எழுதுக.
விடை. உள்ளமை மாறியின் விதிமுறைகள் :
(i) உள்ளமை மாறியின் வரையெல்லை அது வரையறுக்கப்பட்டுள்ள தொகுதிக்குள்
மட்டுமே பயன்படுத்த முடியும்.
(ii) செயற்கூறினுள் மாறி உருவாக்கப்படும் போது அது உள்ளமைவாக அமையும்.
(iii) செயற்கூறு இயக்கப்படும் போது மட்டுமே உள்ளமை மாறிகள் உருவாக்கப்படும்.
2. பைத்தானிலுள்ள முழுதளாவி சிறப்புச்
சொல்லுக்கான அடிப்படை விதிமுறைகளை எழுதுக.
விடை. குளோபல் வரையெல்லை சிறப்புச் சொல்லின் விதிமுறைகள் :
(i) செயற்கூறுக்கு வெளியே மாறியை அறிவிக்கும் போது அது தானமைவாக குளோபல்
ஆகும். 'global' என்ற சிறப்புச் சொல்லை பயன்படுத்த வேண்டியதில்லை.
(ii) செயற்கூறினுள் முழுதளாவிய மாறியை படிக்க மற்றும் எழுத
'global' சிறப்புச்சொல் பயன்படுத்த வேண்டும்.
(iii) செயற்கூறுவிற்கு வெளியே 'global' என்ற சிறப்புச் சொல் எந்த விளைவையும்
ஏற்படுத்தாது.
3. செயற்கூறினுள் முழுதளாவி மாறியை
மாற்றம் செய்தால் என்ன நிகழும்?
விடை. செயற்கூறினுள் முழுதளாவி மாறியை மாற்றம் செய்தால் unbound local
error என்ற பிழையை காண்பிக்கும்.
4. ceil( ) மற்றும் floor( )
செயற்கூறுகளை வேறுபடுத்துக.
விடை. (i) floor ( ) கொடுக்கப்பட்ட எண்ணை விடக்குறைவான அல்லது நிகரான பெரிய
முழு எண்ணைத் திருப்பி அனுப்பும்.
syntax : math.floor(x).
(ii) ceil ( ) கொடுக்கப்பட்ட எண்ணை விட பெரிய அல்லது நிகரான சிறிய முழு
எண்ணைத் திருப்பி அனுப்பும்.
syntax : math.ceil(x)
5. கொடுக்கப்பட்ட வருடம் லீப்
வருடமா இல்லையா என்பதைச் சோதிக்கும் பைத்தான் நிரலை எழுதுக.
விடை . y = int (input ("Enter year"))
if y% 4 == 0 :
print ("The given year is a leap year")
else :
print ("The given year is not a leap year")
6. செயற்கூறில் கலப்பு என்பது
என்ன?
விடை. (i) செயற்கூறு திருப்பி அனுப்பும் மற்றொரு செயற்கூறிற்கு செயலுருபாக,
பின்னலான அமைப்பில் பயன்படுத்தினால் அதற்கு தொகுப்பு (composition) என்று பெயர்.
(ii) எடுத்துக்காட்டாக, பயனரிடமிருந்து எண் மதிப்பை அல்லது கோவையை உள்ளீடாகப்
பெற விரும்பினால், input() செயற்கூறு மூலம் பயனரிடமிருந்து சரத்தை உள்ளீடாகப் பெற்று
eval() செயற்கூறு மூலம் அதன் மதிப்பை மதிப்பீடு செய்ய வேண்டும்.
7. தற்சுழற்சி எவ்வாறு செயல்படுகிறது?
விடை. (i) தற்சுழற்சி செயற்கூறு வெளிபுர குறிமுறையிலிருந்து அழைக்கப்படும்.
(ii) அடிப்படை நிபந்தனை நிறைவேற்றப்பட்டால் நிரலானது ஏற்ற வெளியீடு
கொடுத்து வெளியேறும்.
(iii) இல்லையெனில், செயற்கூறானது தேவையான செயற்பாட்டை இயக்கும் மேலும்
தற்சுழற்சி முறையில் தன்னைத் தானே அழைத்துக் கொள்ளும்.
8. செயற்கூறினை வரையறுக்கும்
போது குறிப்பிடப்பட வேண்டிய குறிப்புகள் யாவை?
விடை. செயற்கூறினை வரையறுக்கும் போது நினைவில் கொள்ள வேண்டியவை :
(i) செயற்கூறு தொகுதி def என்ற சிறப்புச் சொல்லுடன் தொடங்கி செயற்கூறுவின்
பெயர் மற்றும் () அடைப்புக்குறியுடன் முடிய வேண்டும்.
(ii) ஏதேனும் உள்ளீட்டு செயலுருப்புகள் அல்லது அளபுருக்கள் இருப்பின்
அவற்றை செயற்கூற்றை வரையறுக்கும் போதே () என்ற அடைப்புக்குறிக்குள் கொடுக்க வேண்டும்.
(iii) குறிமுறை தொகுதியானது எப்பொழுதும் முக்காற்புள்ளிக்கு பிறகு உள்தள்ளி
வர வேண்டும்.
(iv) "return (கோவை)" கூற்று செயற்கூறுவை முடித்து வைக்கும்.
விருப்பப்பட்டால் கோவையின் மதிப்பை, அழைக்கும் கூற்றுக்கு திருப்பி அனுப்பும். செயலுருபுகள்
இல்லாத return, return None-க்கு நிகரானது.
பகுதி - ஈ
அனைத்து வினாக்களுக்கும்
விடையளி (5 மதிப்பெண்கள்)
1. செயற்கூறின் வகைகளை எடுத்துக்காட்டுடன்
விவரி.
செயற்கூறுகள்
பயனர் வரையறுக்கும் செயற்கூறுகள்
உள்ளிணைந்த செயற்கூறுகள்
லாம்டா செயற்கூறுகள்
தற்சுழற்சி செயற்கூறுகள்
விளக்கம்
பயனர்கள் தாங்களாகவே வரையறுக்கும் செயற்கூறுகள்
பைத்தானில் உள்ளடக்கப்பட்ட செயற்கூறுகள்
பெயரில்லாத செயற்கூறுகள்
தற்சுழற்சியாக தன்னைத் தானே அழைத்துக் கொள்ளும் செயற்கூறுகள்
பயனர் வரையறுக்கும் செயற்கூறுவின் தொடரியல்
def<function_name ([parameter1, parameter2...] )> ;
<Block of Statements>
return <expression / None> a
செயற்கூற்றை வரையறைக்கும் எடுத்துக்காட்டு
def hello():
print ("hello - Python")
return
பைத்தானில், பெயரில்லாமல் வரையறுக்கப்படும் செயற்கூறுவுக்கு பெயரில்லாத
செயற்கூறு என்று பெயர். மற்ற சாதாரண செயற்கூறுகள் def என்ற சிறப்பு சொல்லுடன் வரையறுக்கப்படுகிறது.
பைத்தானில் பெயரில்லாத செயற்கூறுகள் லாம்டா சிறப்புச் சொல்லுடன் வரையறுக்கப்படுகிறது.
எனவே, பெயரில்லா செயற்கூறுகளை லாம்டா செயற்கூறுகள் என்றும் அழைக்கலாம்.
லாம்டா அல்லது பெயரில்லா செயற்கூறின் பயன்கள் :
லாம்டா செயற்கூறு பெரும்பாலும் சிறிய மற்றும் ஒரு முறை பெயரில்லாத செயற்கூறை
உருவாக்க பயன்படுகிறது.
filter( ), map() மற்றும் reduce() போன்ற செயற்கூறுகளுடன் சேர்த்து
லாம்டா செயற்கூறுகளை பயன்படுத்தலாம்.
பெயரில்லா செயற்கூறின் பொது வடிவம்
lambda [argument(s)] :expression
எடுத்துக்காட்டு :
sum = lambda arg1, arg2: argl + arg2
print ('The Sum is :', sum(30,40))
print ('The Sum is :', sum(-30,40))
வெளியீடு
The Sum is : 70
The Sum is : 10
2. மாறியின் வரையெல்லைகளை எடுத்துக்காட்டுடன்
விளக்குக.
விடை. இது நிரலின் அணுகக்கூடிய பகுதியைக் குறிப்பதாகும். அதாவது, எந்த பகுதியில்
மாறியைப் பயன்படுத்துகிறோமோ அதைக் குறிக்கிறது. வரையெல்லையானது நடப்பு மாறித் தொகுதிகள்
மற்றும் அதன் மதிப்புகளைக் கொண்டிருக்கும். இரண்டு வகையான வரையெல்லைகளைப் பார்க்கலாம்.
உள்ளமை வரையெல்லை மற்றும் குளோபல் வரையெல்லை.
உள்ளமை வரையெல்லை (Local Scope)
ஒரு செயற்கூறுவின் உடற்பகுதியின் உள்ளே அல்லது உள்ளமை வரையெல்லையில்
மாறியை அறிவிப்பது உள்ளமை மாறி எனப்படும். உள்ளமை மாறியின் விதிமுறைகள்
(i) உள்ளமை மாறியின் வரையெல்லை அது வரையறுக்கப்பட்டுள்ள தொகுதிக்குள்
மட்டுமே பயன்படுத்த முடியும்.
(ii) செயற்கூறினுள் மாறி உருவாக்கப்படும் போது அது உள்ளமைவாக அமையும்.
(iii) செயற்கூறு இயக்கப்படும் போது மட்டுமே உள்ளமை மாறிகள் உருவாக்கப்படும்.
எடுத்துக்காட்டு
: உள்ளமை மாறியை உருவாக்குதல்
def loc():
y=0 # local scope
print(y)
loc()
வெளியீடு
()
எடுத்துக்காட்டு
: வரையெல்லைக்கு வெளியே உள்ளமை மாறிகளை அணுகுதல்
def loc():
y= "local"
loc()
print(y)
மேலே உள்ள குறிமுறையை இயக்கும் போது வெளியீட்டில் பின்வரும் பிழை தோன்றும்.
(iv) குளோபல் வரையெல்லையில் உள்ளமை மாறியான 'y' யை அணுக முற்பட்டதால்
மேற்கண்ட பிழை தோன்றுகிறது. -
NameError: name 'y' is not defined
(குளோபல் வரையெல்லை (Global Scope)
குளோபல் வரையெல்லை உடைய மாறியை நிரலில் எங்கு வேண்டுமானாலும் அணுக முடியும்.
எந்த ஒரு செயற்கூறு வரையெல்லைக்கு வெளியேயும் மாறியை வரையறுத்து உருவாக்க முடியும்.
குளோபல் வரையெல்லை சிறப்புச் சொல்லின் விதிமுறைகள் :
(i) செயற்கூறுக்கு வெளியே மாறியை அறிவிக்கும் போது அது தானமைவாக குளோபல்
ஆகும். 'global' என்ற சிறப்புச் சொல்லை பயன்படுத்த வேண்டியதில்லை.
(ii) செயற்கூறினுள் முழுதளாவிய மாறியை படிக்க மற்றும் எழுத
'global' சிறப்புச்சொல் பயன்படுத்த வேண்டும்.
(iii) செயற்கூறுவிற்கு வெளியே 'global' என்ற சிறப்புச் சொல் எந்த விளைவையும்
ஏற்படுத்தாது.
'Global' சிறப்புச் சொல்லின் பயன்பாடு :
எடுத்துக்காட்டு
: செயற்கூறுவின் உள்ளிருந்து குளோபல் மாறியை அணுகுதல்
c=1 # global variable
def add():
print(c)
add()
வெளியீடு
1
எடுத்துக்காட்டு
: செயற்கூறுவின் உள்ளிருந்து முழுதளாவிய மாறியை மாற்றுதல்
மேற்கண்ட நிரலை இயக்கும் போது வெளியீடு பின்வரும் பிழையை காண்பிக்கும்.
c=1 # global variable
def add():
c= c +2 # increment c by 2
print(c)
add()
வெளியீடு
Unbound Local Error: local variable 'c' referenced before
assignment
எடுத்துக்காட்டு
: செயற்கூறின் உள்ளிருந்து 'global' சிறப்புச் சொல்லைப் பயன்படுத்தி
குளோபல் மாறியை மாற்றுதல்
x=0 #global variable
def add():
global x
x= x + 5 #increment by 2
print ("Inside add() function x value is :'', x)
add()
print ("In main x value is :'', x)
மேற்கண்ட நிரலை இயக்கும் போது பின்வரும் வெளியீடு தோன்றும்.
வெளியீடு
Inside add() function x value is : 5
In main x value is : 5
மேலே உள்ள நிரலில், x என்பது குளோபல் மாறி ஆகும். add() செயற்கூறினுள்,
`global' என்ற சிறப்புச் சொல் x மாறிக்கு பயன்படுத்தப்பட்டு அதனுடன் 5 என்ற மதிப்பு
கூட்டப்படுகிறது. இப்பொழுது நாம் மாற்றம் செய்யப்பட்ட குளோபல் மாறி Xயை செயற்கூறின்
வெளியே காணலாம். அதாவது, x ன் மதிப்பு 5 ஆகும்.
3. பின்வரும் உள்ளிணைந்த செயற்கூறுகளை
விளக்குக.
(a) id() (b) chr() (c) round() (d)
type () (e) pow ()
பெயரில்லா செயற்கூறின் பொது வடிவம்
lambda [argument(s)] :expression
எடுத்துக்காட்டு :
sum = lambda arg1, arg2: arg1 + arg2
print ('The Sum is :', sum(30,40))
print ("The Sum is :', sum(-30,40))
வெளியீடு
The Sum is : 70
The Sum is : 10
4. இரண்டு எண்களின் LCM கண்டுப்பிடிப்பதற்கான பைத்தான் நிரலை எழுதுக.
விடை . def gcd (x, y) :
while (y) :
x, y = y, x %y
return x
def lcm(x,y) :
1= (x*y) / ged(x,y)
x = int (input ("Enter first number"))
y=int (input ("Enter Second number"))
print ("lcm =", lcm (x,y))
5. தற்சுழற்சி செயற்கூறு பற்றி
எடுத்துக்காட்டுடன் விளக்குக.
விடை. தற்சுழற்சி செயற்கூறு தன்னைத்தானே அழைக்கும். ஒரு நிபந்தனையில் நிறுத்தப்படாவிட்டால்,
ஒரு செயல்முறை காலவரையின்றி செயல்படும். இந்த செயற்பாட்டை காலவரையின்றி செயல்படும்
தற்சுழற்சி எனப்படும். தற்சுழற்சி செயற்கூறு கொடுக்கப்படும் நிபந்தனையை அடிப்படை நிபந்தனை
எனப்படும். ஒவ்வொரு தற்சுழற்சி செயற்கூற்றிக்கும் அடிப்படை நிபந்தனை கொடுக்கப்பட வேண்டும்
இல்லையென்றால் மடக்கு காலவரையின்றி இயங்கும்.
தற்சுழற்சி செயற்கூறு செயல்படும் முறை :
(i) தற்சுழற்சி செயற்கூறு வெளிபுர குறிமுறையிலிருந்து அழைக்கப்படும்.
(ii) அடிப்படை நிபந்தனைநிறைவேற்றப்பட்டால் நிரலானது ஏற்ற வெளியீடு கொடுத்து
வெளியேறும்.
(iii) இல்லையெனில், செயற்கூறானது தேவையான செயற்பாட்டை இயக்கும் மேலும்
தற்சுழற்சி முறையில் தன்னைத் தானே அழைத்துக் கொள்ளும்.
தற்சுழற்சி பயன்படுத்தி காரணிபடுத்துதலுக்கு எடுத்துக்காட்டு :
def fact(n):
if n == 0;
return 1
else:
return n * fact (n-1)
print (fact (0))
print (fact (5))
வெளியீடு :
1
120