Groovy शुरुआती लोगों के लिए स्क्रिप्ट ट्यूटोरियल

क्या है एक Groovy लिखी हुई कहानी?

अपाचे Groovy एक वस्तु उन्मुख है और Java वाक्यविन्यास संगत प्रोग्रामिंग भाषा के लिए बनाया गया Java मंच। इस गतिशील भाषा में कई विशेषताएं हैं जो समान हैं Python, रूबी, स्मॉलटॉक और पेरो। Groovy स्रोत कोड संकलित हो जाता है Java बाइटकोड ताकि यह किसी भी प्लेटफॉर्म पर चलाया जा सके जिसमें JRE स्थापित है। Groovy यह पर्दे के पीछे भी कई कार्य करता है जो इसे अधिक चुस्त और गतिशील बनाता है।

Groovy भाषा का उपयोग स्क्रिप्टिंग भाषा के रूप में किया जा सकता है Java मंच। यह लगभग एक सुपर संस्करण की तरह है Java जो ऑफर करता है Javaकी एंटरप्राइज़ क्षमताएँ। यह DSL समर्थन, क्लोजर और डायनेमिक टाइपिंग जैसी कई उत्पादकता सुविधाएँ भी प्रदान करता है। कुछ अन्य भाषाओं के विपरीत, इसे एक साथी के रूप में डिज़ाइन किया गया है, प्रतिस्थापन के रूप में नहीं Java.

क्यों Groovy?

यहां, प्रमुख कारण दिए गए हैं कि आपको इसका उपयोग क्यों करना चाहिए और सीखना चाहिए Groovy-

  • Groovy एक चुस्त और गतिशील भाषा है
  • सभी मौजूदा के साथ सहज एकीकरण Java वस्तुएं और पुस्तकालय
  • यह आसान और स्वाभाविक लगता है Java डेवलपर्स
  • अधिक संक्षिप्त और सार्थक कोड की तुलना में Java
  • आप इसे अपनी इच्छानुसार कम या ज्यादा उपयोग कर सकते हैं Java क्षुधा

Groovy इतिहास

  • 2003: बॉब मैक द्वारा विकसितWhirटेर और जेम्स स्ट्रैचन
  • 2004: जेएसआर 241 में कमीशन किया गया लेकिन इसे छोड़ दिया गया
  • 2005: जेरेमी रेनर और गिलौम लाफोर्ज द्वारा पुनः प्रस्तुत
  • 2007: Groovy 1.0 संस्करण
  • 2012: Groovy 2 संस्करण
  • 2014: Groovy संस्करण 2.3 (JDK 8 के लिए आधिकारिक समर्थन दिया गया)
  • 2015: Groovy अपाचे सॉफ्टवेयर में एक परियोजना बन गई Foundation

की सुविधाएं Groovy

  • सूची, मानचित्र, श्रेणी, नियमित अभिव्यक्ति अक्षर
  • मल्टीमेथड और मेटाप्रोग्रामिंग
  • Groovy कक्षाएं और स्क्रिप्ट आमतौर पर .groovy फ़ाइलों में संग्रहीत की जाती हैं
  • स्क्रिप्ट में शामिल हैं Groovy बिना किसी वर्ग घोषणा के कथन.
  • स्क्रिप्ट में क्लास परिभाषाओं के बाहर विधि परिभाषाएँ भी हो सकती हैं।
  • इसे संकलित किया जा सकता है और पारंपरिक के साथ पूरी तरह एकीकृत किया जा सकता है Java आवेदन.
  • मानचित्रों, सूचियों, नियमित अभिव्यक्तियों के लिए भाषा स्तर का समर्थन
  • क्लोजर, डायनेमिक टाइपिंग, मेटाऑब्जेक्ट प्रोटोकॉल का समर्थन करता है
  • स्थैतिक और गतिशील टाइपिंग और ऑपरेटर ओवरलोडिंग के लिए समर्थन
  • सूचियों (सरणी), मानचित्रों, श्रेणियों और नियमित अभिव्यक्तियों के लिए शाब्दिक घोषणा

कैसे स्थापित करने के लिए Groovy

चरण 1) सुनिश्चित करें कि आपके पास है Java installed.

चरण 2) http://groovy-lang.org/download.html और इंस्टॉलर पर क्लिक करें.

स्थापित Groovy

नोट: आप यह भी स्थापित कर सकते हैं Groovy ज़िप फ़ाइल का उपयोग करके या Eclipse आईडीई. इस में Groovy ट्यूटोरियल, हम इस पर टिके रहेंगे Windows इंस्टालर

चरण 3) डाउनलोड किए गए इंस्टॉलर को लॉन्च करें। भाषा चुनें और OK पर क्लिक करें

स्थापित Groovy

चरण 4) लॉन्च करें. स्वागत स्क्रीन में, NEXT पर क्लिक करें

स्थापित Groovy

चरण 5) लाइसेंस शर्तों से सहमत हों

स्थापित Groovy

चरण 6) उन घटकों का चयन करें जिन्हें आप स्थापित करना चाहते हैं और NEXT पर क्लिक करें

स्थापित Groovy

चरण 7) इंस्टॉलेशन डायरेक्टरी चुनें और NEXT पर क्लिक करें

स्थापित Groovy

चरण 8) स्टार्ट मेनू फ़ोल्डर चुनें और NEXT पर क्लिक करें

स्थापित Groovy

चरण 9) एक बार इंस्टॉलेशन पूरा हो जाने पर, पथ को डिफ़ॉल्ट रहने दें और NEXT पर क्लिक करें

स्थापित Groovy

चरण 10) अगला पर क्लिक करें

स्थापित Groovy

चरण 11) प्रारंभ मेनू में खोजें Groovy कंसोल

स्थापित Groovy

Groovy नमस्ते दुनिया उदाहरण

मान लीजिए कि हम एक सरल स्ट्रिंग “Hello World” प्रिंट करना चाहते हैं Java. स्ट्रिंग प्राप्त करने के लिए कोड Groovy नमस्ते दुनिया होगी

public class Demo {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

उपरोक्त कोड दोनों में मान्य है Java और Groovy as Groovy का सुपरसेट है Java. लेकिन इसका फायदा यह है कि Groovy इसका मतलब यह है कि हम वर्ग निर्माण, सार्वजनिक विधि निर्माण आदि से दूर रह सकते हैं और एक पंक्ति कोड के साथ समान आउटपुट प्राप्त कर सकते हैं, जैसा कि नीचे दिया गया है:

println "Hello World."

अर्धविराम की कोई आवश्यकता नहीं है

कोष्ठक की कोई आवश्यकता नहीं है

System.out.println को println में घटा दिया गया है

Groovy चर

In Java, स्थैतिक बाइंडिंग अनिवार्य है। इसका मतलब है कि किसी चर का प्रकार पहले से घोषित किया जाना चाहिए।

public class Demo {
    public static void main(String[] args) {
        int x = 104;
        System.out.println(x);
        //x = "Guru99";
    }
}

उपरोक्त उदाहरण में Groovy ट्यूटोरियल में, वेरिएबल (पूर्णांक) का प्रकार पहले से ही “int” कीवर्ड का उपयोग करके घोषित किया जाता है। यदि आपको फ़्लोटिंग पॉइंट नंबर घोषित करना है तो आप फ़्लोट कीवर्ड का उपयोग करते हैं।

यदि आप किसी int को स्ट्रिंग मान निर्दिष्ट करने का प्रयास करते हैं (पंक्ति #5 को अनकमेंट करें), तो आपको निम्न त्रुटि मिलेगी

Demo.java:5: error: incompatible types: String cannot be converted to int
x = "Guru99";

इसके विपरीत, Groovy डायनेमिक टाइपिंग का समर्थन करता है। वेरिएबल को “def” कीवर्ड का उपयोग करके परिभाषित किया जाता है, और किसी वेरिएबल के प्रकार को पहले से घोषित करने की आवश्यकता नहीं होती है। कंपाइलर रनटाइम पर वेरिएबल के प्रकार का पता लगाता है और आप वेरिएबल के प्रकार को भी बराबर कर सकते हैं।

निम्नलिखित शानदार उदाहरण पर विचार करें,

def x = 104
println x.getClass()
x = "Guru99"
println x.getClass()

आउटपुट:

class java.lang.Integer
class java.lang.String

In Groovy, आप मल्टीलाइन स्ट्रिंग बना सकते हैं। बस सुनिश्चित करें कि आपने स्ट्रिंग को ट्रिपल कोट्स में संलग्न किया है।

def x = """Groovy
at
Guru99"""
println x

आउटपुट:

Groovy
at
Guru99

नोट: आप अभी भी बाइट, शॉर्ट, इंट, लॉन्ग आदि जैसे चर प्रकारों का उपयोग कर सकते हैं Groovyलेकिन आप चर प्रकार को गतिशील रूप से नहीं बदल सकते क्योंकि आपने इसे स्पष्ट रूप से घोषित किया है।

निम्नलिखित कोड पर विचार करें:

int x = 104
println x
x = "Guru99"

यह निम्नलिखित त्रुटि देता है

104
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
    at jdoodle.run(jdoodle.groovy:3)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Command exited with non-zero status 1

Groovy-Operaमरोड़

ऑपरेटर एक प्रतीक है जो संकलक को कुछ गणितीय या तार्किक हेरफेर करने के लिए कहता है।

Groovy इसमें निम्नलिखित पाँच प्रकार के ऑपरेटर हैं –

  • अंकगणितीय ऑपरेटर: जोड़ (+), घटाना (-), गुणा (*), भाग (/)
  • संबंधपरक ऑपरेटर: बराबर (==), बराबर नहीं (!=), Less से (<) Less से अधिक या बराबर (<=), से अधिक (>), से अधिक या बराबर (>=)
  • तार्किक ऑपरेटर: और (&&), या(||), नहीं(!)
  • बिटवाइज़ ऑपरेटर: And(&), Or(|), (^), Xor या Exclusive-or ऑपरेटर
  • असाइनमेंट ऑपरेटर: निषेध ऑपरेटर (~)

Groovy-लूप्स

In Java, आप एक लूप को इस प्रकार परिभाषित करेंगे

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x++) {
            System.out.println(x);
        }
    }
}

आउटपुट:

0
1
2
3
4

आप समान आउटपुट प्राप्त कर सकते हैं Groovy तक कीवर्ड का उपयोग करना

0.upto(4) {println "$it"}

आपको ऊपर जैसा ही आउटपुट मिलता है। $it एक क्लोजर है जो वर्तमान लूप का मान देता है।

निम्नलिखित कोड पर विचार करें

2.upto(4) {println "$it"}

यह एक आउटपुट देता है

2
3
4

आप समान आउटपुट प्राप्त करने के लिए “times” कीवर्ड का भी उपयोग कर सकते हैं

5.times{println "$it"}

मान लीजिए, आप 0,2,4 को प्रिंट करना चाहते हैं फॉर लूप इन Java

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x=x+2) {
            System.out.println(x);
        }
    }
}

आउटपुट:

0
2
4

आप इसके लिए चरण विधि का उपयोग कर सकते हैं

0.step(7,2){println "$it"}

Groovy- निर्णय लेना

वक्तव्य धोखा
अगर कथन जैसे की Javaयदि शर्त सत्य है तो if कथन निष्पादित होता है।
यदि/अन्यथा कथन if/else कथन में सबसे पहले if कथन में किसी शर्त का मूल्यांकन किया जाता है। यदि शर्त सत्य है तो उसके बाद कथनों को निष्पादित करता है। यह else शर्त से पहले रुक जाता है और लूप से बाहर निकल जाता है। हालाँकि, यदि शर्त असत्य है तो else कथन ब्लॉक में कथनों को निष्पादित करता है। फिर यह लूप से बाहर निकल जाता है।
नेस्टेड अगर कथन इसका प्रयोग तब किया जाता है जब एकाधिक if कथनों की आवश्यकता होती है।
स्विच स्टेटमेंट जब आपके पास कई शर्तें हों तो नेस्टेड if-else कथन अपठनीय हो सकता है। कोड को अधिक पठनीय बनाने के लिए स्विच कथन का उपयोग किया जाता है।
नेस्टेड स्विच स्टेटमेंट In Groovy नेस्टेड स्विच स्टेटमेंट का उपयोग करना भी संभव है।

Groovy सूची

सूची संरचना आपको डेटा आइटम का एक संग्रह संग्रहीत करने की अनुमति देती है। Groovy प्रोग्रामिंग भाषा में, सूची ऑब्जेक्ट संदर्भों का एक क्रम रखती है। यह अनुक्रम में एक स्थिति भी दिखाता है। एक सूची शाब्दिक को कॉमा द्वारा अलग किए गए ऑब्जेक्ट की एक श्रृंखला के रूप में प्रस्तुत किया जाता है और वर्ग कोष्ठक में संलग्न किया जाता है।

ग्रोवी सूची का उदाहरण:

स्ट्रिंग्स की सूची- ['Angular', 'Nodejs,]

ऑब्जेक्ट संदर्भों की सूची – ['Groovy', 2,4 2.6]

पूर्णांक मानों की सूची – [16, 17, 18, 19]

एक खाली सूची- [ ]

निम्नलिखित में उपलब्ध विधियों की सूची दी गई है Groovy:

तरीके विवरण
(जोड़ें) आपको इस सूची के अंत में नया मान जोड़ने की अनुमति देता है।
रोकना() यदि इस सूची में कोई निश्चित मान है तो true लौटाता है.
प्राप्त() तत्व को निश्चित स्थान पर लौटाता है
खाली है() यदि सूची में कोई तत्व नहीं है तो सत्य मान लौटाता है
माइनस() यह आदेश आपको संग्रह में निर्दिष्ट तत्वों को छोड़कर मूल तत्वों से बनी एक नई सूची बनाने की अनुमति देता है।
प्लस() आपको संग्रह में उल्लिखित मूल तत्वों के साथ-साथ तत्वों से बनी एक नई सूची बनाने की अनुमति देता है।
पॉप() सूची से अंतिम आइटम हटाता है
हटाना() विशिष्ट स्थान पर तत्व को हटाता है
उलटना () एक नई सूची बनाएं जो मूल सूची के तत्वों को उलट दे
आकार () इस सूची में तत्वों की संख्या लौटाता है
क्रमबद्ध करें () क्रमबद्ध प्रतिलिपि लौटाता है

निम्नलिखित को धयान मे रखते हुए Groovy स्क्रिप्ट उदाहरण

def y = ["Guru99", "is", "Best", "for", "Groovy"]
println y
y.add("Learning")
println(y.contains("is"))
println(y.get(2))
println(y.pop())

आउटपुट:

[Guru99, is, Best, for, Groovy]
true
Best
Learning

Groovy मैप्स

नक्षा Groovy कुंजी मूल्य जोड़ों का एक संग्रह है

के उदाहरण Groovy मानचित्र:

  • [ट्यूटोरियल: 'Java, ट्यूटोरियल: 'Groovy] – कुंजी-मान युग्मों का संग्रह जिसमें ट्यूटोरियल कुंजी के रूप में है और उनके संबंधित मान हैं
  • [ : ] खाली मानचित्र दर्शाएँ

यहाँ, उपलब्ध मानचित्र विधियों की सूची दी गई है Groovy.

तरीके विवरण
सम्‍मिलितकुंजी() जाँचें कि मानचित्र में यह कुंजी है या नहीं?
प्राप्त() यह कमांड इस मैप में कुंजी को खोजता है और संबंधित मान लौटाता है। यदि आपको इस मैप में कोई प्रविष्टि नहीं मिलती है, तो यह शून्य लौटाएगा।
कुंजीसेट() इस मानचित्र में कुंजियों का एक सेट खोजने की अनुमति देता है
रखना() इस मैप में दी गई कुंजी के साथ निर्दिष्ट मान को संबद्ध करता है। यदि मैप में पहले इस कुंजी के लिए मैपिंग थी। तो पुराने मान को निर्दिष्ट मान से बदल दिया जाएगा।
आकार () कुंजी-मान मैपिंग की संख्या लौटाता है.
मान () यह आदेश मानों का एक संग्रह दृश्य लौटाता है.

Groovy उदाहरण:

def y = [fName:'Jen', lName:'Cruise', sex:'F']
print y.get("fName")

उत्पादन

Jen

Groovy- बंद

ग्रूवी क्लोजर एक कोड का टुकड़ा है जिसे ऑब्जेक्ट के रूप में लपेटा जाता है। यह एक विधि या फ़ंक्शन के रूप में कार्य करता है।

सरल समापन का उदाहरण

def myClosure = {
       println "My First Closure"	
}
myClosure()

आउटपुट:

My First Closure

क्लोजर पैरामीटर स्वीकार कर सकता है। पहचान की सूची अल्पविराम से अलग की गई है

एक तीर (->) पैरामीटर सूची के अंत को चिह्नित करता है।

def myClosure = {
       a,b,c->
       y = a+b+c
       println y
}
myClosure(1,2,3)

आउटपुट:

6

क्लोजर एक मान लौटा सकता है.

def myClosure = {
       a,b,c->
       return (a+b+c)
}
println(myClosure(1,2,3))

आउटपुट:

6

इसमें कई अंतर्निर्मित क्लोजर हैं जैसे "इट", "आइडेंटिटी", आदि। क्लोजर अन्य क्लोजर को पैरामीटर के रूप में ले सकते हैं।

Groovy बनाम Java

Groovy Java
In Groovyडिफ़ॉल्ट एक्सेस स्पेसिफायर पब्लिक है। इसका मतलब है कि बिना किसी निर्दिष्ट एक्सेस संशोधक के विधि सार्वजनिक है और क्लास और पैकेज सीमाओं के बाहर पहुंच योग्य है। In Javaडिफ़ॉल्ट एक्सेस संशोधक एक पैकेज है, अर्थात, यदि आप फ़ील्ड, विधियों या वर्ग के लिए एक्सेस संशोधक निर्दिष्ट नहीं करते हैं तो यह पैकेज-निजी बन जाता है,
क्लास सदस्यों के लिए गेटर्स और सेटर्स स्वचालित रूप से उत्पन्न होते हैं। Java, आपको फ़ील्ड के लिए गेटर्स और सेटर्स विधि को परिभाषित करने की आवश्यकता है
Groovy स्ट्रिंग्स के साथ दोहरे उद्धरण चिह्नों का उपयोग करके चर प्रतिस्थापन की अनुमति देता है। Java चर प्रतिस्थापन का समर्थन नहीं करता है.
जानकारी टाइप करना वैकल्पिक है. इसमें जानकारी टाइप करना अनिवार्य है Java.
Groovy इसे अर्धविराम से समाप्त करना आवश्यक नहीं है। In Java, प्रत्येक कथन अर्धविराम से समाप्त होता है।
Groovy प्रत्येक प्रोग्राम के लिए स्वचालित रूप से स्क्रिप्ट नामक एक रैपिंग क्लास होती है In Javaकिसी क्लास को निष्पादन योग्य बनाने के लिए आपको मुख्य विधि की आवश्यकता होती है।

के बारे में मिथक Groovy

मिथ्या वास्तविकता
हम प्रयोग कर सकते हैं Groovy सिर्फ स्क्रिप्टिंग के लिए. इसका उपयोग स्क्रिप्टिंग के लिए किया जा सकता है। हालाँकि, आप इसके अलावा भी कई अन्य कार्य कर सकते हैं।
Groovy यह सब बंद करने के बारे में है। "यह बस है कार्यात्मक प्रोग्रामिंग भाषा". Groovy यह लिस्प या क्लोजर जैसी कार्यात्मक प्रोग्रामिंग भाषाओं से लिया गया है।
Groovy यदि आप TDD करना चाहते हैं तो यह एक आदर्श विकल्प है यह कथन सत्य है। हालाँकि, यह निश्चित रूप से उपयोग करने का एकमात्र कारण नहीं है Groovy.
आप का उपयोग कर सकते हैं Groovy केवल तभी जब आप Grails का उपयोग करना चाहते हैं। ग्रेल्स एक शक्तिशाली वेब विकास ढांचा है।

परंतु Groovy इससे भी अधिक प्रदान करता है।

उपयोग करने के विपक्ष Groovy

  • जेवीएम और Groovy स्क्रिप्ट प्रारंभ समय धीमा है जो OS-स्तरीय स्क्रिप्टिंग को सीमित करता है
  • Groovy अन्य समुदायों में इसे पूरी तरह से स्वीकार नहीं किया गया है।
  • इसका उपयोग करना सुविधाजनक नहीं है Groovy आईडीई का उपयोग किए बिना
  • Groovy धीमी हो सकती है जिससे विकास का समय बढ़ जाता है
  • Groovy बहुत अधिक मेमोरी की आवश्यकता हो सकती है
  • का ज्ञान Java अनिवार्य है।

Groovy टूल्स

हम इस लेख में 3 महत्वपूर्ण उपकरणों पर चर्चा करेंगे Groovy स्क्रिप्ट ट्यूटोरियल

1. groovysh: कोड को इंटरैक्टिव रूप से निष्पादित करता है।

2. groovyConsole: इंटरैक्टिव कोड निष्पादन के लिए GUI

3. ग्रूवी: ग्रूवी स्क्रिप्ट निष्पादित करता है। आप इसका उपयोग इस प्रकार कर सकते हैं पर्ल, Python, आदि

Groovysh

  • कमांड-लाइन शेल
  • आपको निष्पादित करने में मदद करता है Groovy इंटरेक्टिव रूप से कोड करें
  • कथन या संपूर्ण स्क्रिप्ट दर्ज करने की अनुमति देता है

Groovy टूल्स

Groovy एक ढ़ांचा जिस में आंगन की स्वरकुंजियां आदि लगि है

  • स्विंग इंटरफ़ेस जो न्यूनतम के रूप में कार्य करता है Groovy विकास संपादक.
  • आपको बातचीत करने की अनुमति देता है Groovy कोड
  • आपको लोड करने और चलाने में मदद करता है Groovy स्क्रिप्ट फ़ाइलें

Groovy टूल्स

Groovy

यह प्रोसेसर है जो निष्पादित करता है Groovy प्रोग्राम और स्क्रिप्ट.

इसका उपयोग सरल परीक्षण के लिए किया जा सकता है Groovy भाव।

Groovy टूल्स

सारांश

  • Groovy एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है जिसका उपयोग किया जाता है Java मंच
  • Groovy स्क्रिप्टिंग सभी मौजूदा के साथ सहज एकीकरण प्रदान करता है Java वस्तुएं और पुस्तकालय
  • बॉब मैकWhirटेर और जेम्स स्ट्रेचन ने 2003 में ग्रूवी का विकास किया
  • सूची, मानचित्र, श्रेणी, नियमित अभिव्यक्ति शाब्दिक महत्वपूर्ण विशेषताएं हैं Groovy
  • चार प्रकार के ऑपरेटरों का समर्थन Groovy 1. रिलेशनल 2. लॉजिकल 3. बिटवाइज 4. असाइनमेंट
  • Groovy if, if/els, Nested if, switch, Netsted स्विच कथनों का उपयोग करके निर्णय लेना
  • सूची संरचना आपको डेटा आइटम का संग्रह संग्रहीत करने की अनुमति देती है
  • नक्षा Groovy कुंजी मूल्य जोड़ों का एक संग्रह है
  • In Groovy, क्लास सदस्यों के लिए गेटर्स और सेटर्स स्वचालित रूप से उत्पन्न होते हैं
  • In Java, आप फ़ील्ड के लिए गेटर्स और सेटर्स विधि प्रदान कर सकते हैं
  • सबसे बड़ा मिथक Groovy इसका उपयोग केवल स्क्रिप्टिंग के लिए किया जा सकता है जो सही नहीं है
  • कभी अ Groovy धीमी हो सकती है जिससे विकास का समय बढ़ जाता है
  • तीन Groovy उपकरण हैं: groovysh जो कोड निष्पादित करता है, groovy कंसोल जो इंटरैक्टिव कोड निष्पादन के लिए GUI है और groovy जो स्क्रिप्ट निष्पादित करता है