Showing posts with label TC compiler. Show all posts
Showing posts with label TC compiler. Show all posts

Wednesday, 11 February 2015

C Programming using Xcode

आपल्याकडे C language मधून प्रोग्रॅम लिहायचा म्हणल्या नंतर TC, TCC, gcc या कंपायलरचा अथवा फार फार तर CodeBlock या IDE बद्दल माहीत असते. कॉलेज, युनिव्हर्सिटी किंवा पर्सनल कंप्युटर Apple Mac मशीन्स आढळत नसल्यामुळे apple mac मशीन्स वर C चा प्रोग्रॅम लिहीता येतो का, कसा लिहायचा, कसा कंपाइल करायचा असे प्रश्न पडू शकतात. 



या पोस्ट मध्ये थोडी-फार माहीती या बद्दलच... ऑनलाइन असतांना अगदीच कुणी तुम्हाला X-Code, iOS, OS-X असे शब्द वापरून अडचणीत आणू नये म्हणून...!

तर, Apple या कंपनीची वैशिष्ठे म्हणजे हार्डवेअर व सॉफ्टवेअर हे दोनही ते स्वत:च तयार करतात. Apple च्या कंम्प्युटर हार्डवेअर वर जी ऑपरेटींग सिस्टीम असते तीला शक्यतो OS-X या नावाने ओळखले जाते. गंम्मत म्हणजे या ही ऑपरेटींग सिस्टीम बांधायला UNIX operating systemचाच वापर केला आहे. या उलट Apple चे जे iPhone, iPad, iPod touch आहेत त्यावरील ऑपरेटींग सिस्टीमला i-OS असे नावाने ओळखले जाते. 

OS-X हि ऑपरेटींग सिस्टीम संपुर्णपणे C, C++ आणी Objective-C मध्ये डेव्हलप केली आहे... हि UNIX base Graphical User Interface ऑपरेटींग सिस्टीम असल्यामुळे Apple ने ऑपरेटींग सिस्टीम मध्ये UNIX मधील X X या अक्षराचा वापर केला आहे. 


Apple च्या जवळपास सर्व डेस्कटॉप ऑपरेटींग सिस्टीम्सची versions हि Cat family वरून घेतली आहेत जसे की Cheetah, Puma, Jaguar, Tiger, Leopard, Snow Leopard, Lion, Mountain Lion वगैरे. बाकी नावे आहेत ती Kodiak व सध्याचे Yosemite हि अमेरीके मधील काही पर्यटन स्थळावरून घेतली आहेत.  

याशिवाय iOS हि सर्व मोबाइल ऑपरेटींग सिस्टीम ची versions लिहीण्यासाठी सुद्धा C, C++, Objective C सहीत swift या नव्या language चा वापर केला आहे. अर्थात डेस्कटॉप प्रमाणे याला नावे न शोधता iOS-4, iOS-5, iOS-6, iOS-7 आणी आत्ताची iOS-8 अशीच नावे दिली आहेत. 

या दोनही प्रकारच्या ऑपरेटींग सिस्टीम बरोबर Xcode नावाचे जे पॅकेज आहे त्यामध्ये सर्व प्रकारची डेव्हलपमेंट टुल्स provide करून दिली आहेत. म्हणून Xcode ला Interactive Development Environment (IDE) असे म्हणतात. हे पॅकेज जर तुम्ही Apple mac मशीन वर घेतले तर C language वापरून IDE मध्ये प्रोग्रॅमिंग करू शकता अथवा Linux प्रमाणे terminal window चा वापर करून regular gcc commands देउन प्रोग्रॅम कंपाइल व रन करू शकता. 


Friday, 15 August 2014

Function of getch function in C language

DOS based TC compiler वापरतांना प्रथमच C language शिकणाऱ्या प्रोग्रॅमरना "getch हे फंक्शन मेन फंक्शन मध्ये शेवटी लिहायचे असते" किंवा फार-फार तर "का लिहायचे" इतकेच माहीत असते. या पलीकडे getch, getche, getchar, gets, fget, इत्यादी एकसारखी फंक्शन्स अंगावर आली की गोंधळ होतोच. म्हणूनच ही पोस्ट. अर्थात हा गोंधळ कमी करण्यासाठी. हा गोंधळ पुर्णपणे जाइल याची शाश्वती मी देत नाही कारण इतक्या वर्षाच्या अनुभवानंतर मला ती पोस्ट लिहायची इच्छा झाली.  

या सर्व फंक्शन बद्दल लिहीण्यासारखे व सांगण्यासारखे खुप असल्यामुळे मी या ठिकाणी एकाच पोस्ट मध्ये सर्व फंक्शन्स न घेता अनेक स्वतंत्र पोस्ट मध्ये लिहीन... 


प्रथम आपण ही कोणती कोणती फंक्शन्स आहेत पाहुया. 
  1. getch
  2. getche
  3. getchar
  4. fgetchar
  5. gets
  6. getc
  7. fgetc
  8. fgets
getch( )
C language programming शिकायला सुरवात केल्यानंतर पहील्या १-२ दिवसातच printf व scanf शिवाय जर कोणते फंक्शन विद्यार्थी वापरत असतील तर ते getch library function. DOS based TC वर प्रोग्रॅम रन करायचा व नंतर output दिसले नाही तर getch function प्रोग्रॅमच्या शेवटी टाकायचे असते अशीच समजूत अनेक जणांची झालेली असते. खरं तर getch function हे get character from the keyboard या मधून तयार झाले आहे... 

या फंक्शनचा prototype तुम्हाला conio.h या header file मध्ये मिळेल म्हणून ही फाइल DOS based TC environment मध्ये stdio.h या हेडर फाइल प्रमाणेच include केली जाते. 

हे फंक्शन आपण ज्या ठिकाणी प्रोग्रॅम मध्ये लिहू व जितके वेळा लिहू त्या-त्या ठिकाणी तेवढ्या वेळा तुम्हाला कि प्रेस करावी लागेल. मगं ते एखादे युझर इनपुट असेल अथवा फक्त स्पेसबार असेल. किबोर्ड कडून कि-प्रेस पर्यंत console वर असलेला कर्सर तुमच्या किप्रेस ची वाट पहात असेल. डॉस बेस्ड TC compiler वर काम करतांना सुरवातीला हे फंक्शन वापरावेच लागते कारण output पहाण्यासाठी कंन्सोल window थोपवुन ठेवण्याचे काम getch कडुन पार पाडले जाते. पण या फंक्शनचे अनेक उपयोग नंतर करता येतात. 



आता या प्रोग्रॅम मध्ये स्पेशल पद्धतीने जो लुप लिहीला आहे त्या मध्ये scanf function हे कॅरेक्टर input घेत आहे. जर तुम्हाला अजून एक नंबर भरायचा असेल तर y enter करायचा व या ठिकाणीच थांबायचे असेल व प्रोग्रॅम मधून बाहेर पडायचे असेल तर n enter करायचा अशा प्रकारची व्यवस्था या ठिकाणी केली आहे. scanf function हे एक कॅरेक्टर (y अथवा n) भरल्यानंतर enter key मारायला लागते. 

अशा प्रकारच्या situation मध्ये तुम्ही scanf function च्या ऐवजी ch = getch() असे स्टेटमेंट जर लिहीले तर युझर ने एंटर केलेले कॅरेक्टर (y अथवा n) getch function कडून immediately accept होइल व त्याच क्षणी ch या व्हेअरेबल ला assign करण्याचे काम करेल. या ठिकाणी getch function च्या वापरांने तुमचे दोन फायदे होतील. एक म्हणजे जे कॅरेक्टर (y अथवा n) भरले आहे ते तुम्हाला दिसणार नाही व ते दिसायची गरज सुद्धा नाही. दुसरा फायदा म्हणजे तुम्हाला enter key प्रेस करण्याची गरज भासत नाही. 
getch या फंक्शनचा prototype जर पाहीला तर तो char getch(void) असा आहे. त्यामुळे getch फंक्शन हे किबोर्ड कडूण accept केलेले character आहे तसे return करण्याचे काम करते. नेमकी हीच सुविधा वापरून हे रिटर्न केलेले कॅरेक्टर आपण ch या कॅरेक्टर व्हेअरेबल मध्ये collect करतो. 

कधी-कधी प्रोग्रॅमचे आउटपुट अर्धी अथवा जवळपास पुर्ण स्क्रीन भरेल असे असते. हे आउटपुट लुपच्या प्रत्येक iteration मध्ये मिळते. अशावेळी पुढील iteration चे आउटपुट स्वतंत्रपणे दिसण्यासाठी सुद्धा तुम्ही clear screen व getch फंक्शनची जोडी loop मध्ये वापरू शकता. 

अर्थात अशा प्रकारचे उपयोग प्रोग्रॅम करतांना कळतात. पुस्तकात असे reference शक्यतो आढळत नाहीत.   

अर्थात ही पोस्ट जे विद्यार्थी DOS based TC compiler वापरतात त्यांच्यासाठीच उपयोगी आहे. Linux अथवा Unix systems वर अशा प्रकारचे फंक्शन आस्तितवात नाही कारण conio.h ही header file अन्य कोणत्याही OS वर त्याचा समावेश नाही. खरं तर conio.h हि header file मुळच्या C च्या compiler library मध्ये नव्हती. Borland International ने TC compiler launch करतांना conio.h चा समावेश केला. पण या फाइल ला standard म्हणून कधी मिळालेच नाही...!

Linux, Unix  अथवा Windows based compiler मध्ये program चे output बघण्यासाठी getch सारख्या फंक्शनची व्यवस्था करण्याची गरज सुद्धा नसते. कारण output window होल्ड करण्याची in-built सुविधा या सर्वांमध्ये आहे. अन्य ठिकाणी कॅरेक्टर input करण्यासाठी मात्र त्या कंपायलर मधील अन्य सुविधा तपासण्याशिवाय तुम्हाला गत्यंतर नाही हे लक्षात असु द्या...!

Linux/Unix मध्ये curses व ncurses अशा काही लायब्ररी उपलब्ध आहेत ज्यामध्ये डोकावुन तुम्हाला नेमके काय हवे तसे फंक्शन वापरावे लागेल...! 


Do you like the C Marathi e-learning concept?