సీ భాషకు ముందుమాట
వికీపీడియా నుండి
సీ భాష, అందులోని వ్యాకరణము వగైరా, నేర్చుకునే ముందు మీరు ఆ భాషలోని కొన్ని పదాల(terms)కు అర్ధం తెలుసుకోవటం మంచిది. అవి సీ-భాషను మరింత బాగా నేర్చుకోవడానికి పనికివస్తాయి.
విషయ సూచిక |
[మార్చు] కంపైలు: సీ-భాష ఎలా పని చేస్తుంది?
ఇతర ప్రోగ్రామింగు భాషలలాగానే సీ-భాషను కంప్యూటరు సరాసరి అర్ధం చేసుకోవాలంటే కుదరదు.సీ-భాష ముఖ్యోధేశము మనుషులచే కంప్యూటరుకు సూచనలు ఇచ్చుటకు, అదే సమయములో మనము ఇచ్చిన సూచనలను కంప్యూటరుకు అర్ధం అయ్యే యాంత్రిక భాషలోకి మార్చే ప్రక్రియను సులభంచేయటం. మీరు రాసిన సీ-భాష ప్రోగ్రామును నడిపించగలిగే(executable) యాంత్రిక భాషలోకి మార్చుటకుగాను కంపైలరు అనే ప్రోగ్రామును ఉపయోగించవలెను. మనము సీ-భాషలో రాసిన ప్రోగ్రాముని యాంత్రిక భాషలోకి మార్చుటకు కంపైలరు అనే ప్రోగ్రాముని ఉపయోగించాలి. మీరు సీ-భాషలో రాసిన ప్రోగ్రాము ఒకటి కంటే ఎక్కువ ఫైళ్ళలో ఉంటే వాటిని కలిపి ఒక నడిపించగలిగే ప్రోగ్రాముగా లేదా లైబ్రరీగా తయారు చేయుటకుగాను లింకర్(linker) అను ప్రోగ్రాముని వాడాలి. లైబ్రరీ అనునది ఇతర ప్రోగ్రాములలో వాడుకొనుటకు అవసరమైన చిన్న చిన్న ప్రోగ్రాములను దాచుకొనుటకు ఉపయోగిస్తారు, అంతేగానీ దానిని ఒక్కదానినే నడిపించటం కుదరదు. అయితే సాదారణముగా కంపైలు చేయటం, లింకు చేయటం అనేవి చుట్టాల వంటివి. ఉపయోగించినప్పుడు రెండిటినీ ఉపయోగించవలసి వస్తుంది. కాబట్టి చాలమంది ఆ రెండిటినీ ఒకే పనిగా చూస్తారు. మీరు ఒక విషయాన్ని ఎల్లప్పుడూ గుర్తుపెట్టుకోవాలి, అది ఏమిటంటే - సీ-భాషలో ఒక దిక్కులోనే కంపైలు చేయవచ్చు: అనగా మీ సీ ప్రోగ్రామును యాంత్రిక భాషలోకి కంపైలు చేయవచ్చు, ఇది సులభమే, కాని డీకంపైలు(యాంత్రిక భాష నుండి సీ-భాష ప్రోగ్రామును పొందటం) మాత్రం చాలా కష్టం. డీకంపైలర్లు ఉన్నాయి, కానీ అవి పెద్దగా ఉపయోగపడే సీ-ప్రోగ్రాములను సృష్టించలేవు. మీకు అత్యంత నాణ్యమైన, ప్రముఖమైన GNU సీ-కంపైలరు http://gcc.gnu.org/లో దొరుకుతుంది.
[మార్చు] ఇంటిగ్రేటెడ్ డెవలప్మెంట్ ఎన్విరాన్మెంట్స్ (IDEs)
ఇంటిగ్రేటెడ్ డవలప్మెంట్ ఎన్విరాన్మెంట్ అనేవి మీ ప్రోగ్రాములు రాసుకొని బధ్రపరచుకొనుటకు, కంపైలు చేసుకొనుటకు మరియు లింకు చేసుకొనుటకు కావలిసిన వివిధ ప్రోగ్రాముల సమూహము అని చెప్పవచ్చు. మనము ఒక ప్రోగ్రాము తయారు చేయుటకు కావలిసినవి అన్నీ అకే దగ్గర దొరకటం వలన IDEలు ప్రోగ్రాముల తయారీకి చాలా సౌకర్యవంతముగా ఉంటాయి. అంతేకాదు, మనము రాసిన ప్రోగ్రాములో ఉన్న తప్పులను కనిపెట్టుటకు సహాయపడు డిబుగ్గరు(debugger) అను ప్రోగ్రామును కూడా IDEలలో ఉంటాయి. ఈ డిబుగ్గరుతో మనము ఒక్కొక్క వాక్యమును నడిపి అసలు తప్పు ఏ వాక్యములో ఉన్నదో మనము తెలుసుకునేటట్లు చేయును. IDEలలో Microsoft Visual C++(MS VC++) చాలా పేరెన్నికగన్నది, కానీ ఉచితముగా లభించదు. ఉచితముగా దొరికే IDEలలో DevC++ ప్రముఖమయినది, http://www.bloodshed.net/ లో మీకు లభించగలదు. http://www.smorgasbordet.com/pellesc/ లో లభించు Pelles C కూడా మంచి IDE. అన్నీ సీ-ప్లస్.ప్లస్ అని ఉన్నాయి కదా మరి సీ-భాషకు పని చేస్తాయా అని మీరు సందేహ పడనవసరం లేదు, ఎందుకంటే సీ-భాషలో ఉన్న అన్నీ ప్రత్యేకతలు మనకు సీ-ప్లస్.ప్లస్ భాషలో కూడా ఉంటాయి. కాబట్టి చాలా సీ-ప్లస్.ప్లస్ కంపైలరులు సీ-కంపైలరుతో బాటుగా వస్తాయి. మీరు సీ-భాషను నేర్చుకునే ముందు ఒక మంచి IDEని సమకూర్చుకోవటం ఎంతయినా మంచిది.
[మార్చు] బ్లాక్ స్ట్రక్ట్చరు మరియూ స్కోపు
మనము ఇప్పుడు సీ-ప్రోగ్రాము యొక్క స్వరూపము యొక్క ప్రాధమిక అంశాల గురించి తెలుసుకుందాము. బ్లాకు అనగా కొన్ని వాక్యముల సమూహము, వీటిని మనము ఒకే ఒక్క వాక్యముగా పరిగనించ వచ్చు. సీ-భాషలో బ్లాకులు "తెరుచుకునే మీసాల బ్రాకెట్ల"తో {
మొదలు అయ్యి "మూసుకునే మీసాల బ్రాకెట్ల"తో }
ముగుస్తాయి. బ్లాకులలో బ్లాకులు, వాటిలో లోపల మళ్ళీ బ్లాకులు ఇలా కూర్చుకుంటూ వేళ్ళిపోవచ్చు.
సమాచారమును లేదా ఫంక్షనులను ఏ రకంగా వాడబడుతుందో లేక చూడబడుతుందో తెలుపుటను మనము స్కోపు అని వ్యవహరిస్తాము. సీ-భాషలో రెండు రకాల స్కోపులు ఉన్నాయి local(ప్రాంతీయం) మరియూ global(విశ్వవ్యాప్తం). మనము దేని గురించయినా గ్లోబల్ అని మాట్లాడుతున్నప్పుడు దానిని ప్రోగ్రాములో యెక్కడయినా చూడవచ్చు లేదా వాడుకోవచ్చు. దేనినయినా లోకల్ అని పిలిచినచో అప్పుడు వాటిని అవి పుట్టిన(declared) బ్లాకులో మాత్రమే చూడవచ్చు లేదా వాడుకోవచ్చు. (బయట బ్లాకులలో ఉన్న వాటిని లోపలి బ్లాకులలో కూడా వాడవచ్చు, కానీ లోపలి వాటిని బయట వాడుట కుదరదు.)
[మార్చు] ఫంక్షన్లు వాడుటకు సూత్రములు
ఫంక్షనులు సీ-భాషలో చాలా ప్రధాన పాత్ర పోషిస్తాయి. ఫంక్షను అనునది కొన్ని పనులు చేయుట కోసం తయారు చేయబడిన ఒక ప్రత్యేక బ్లాకు అని చెప్పవచ్చు. ఫంక్షనుని బాగా తయారు చేసినచో ఇతర ప్రోగ్రామరులు, అది చేయు పనిని, ఎలా చేస్తుంది అనేది తెలుసుకోనవసరము లేకుండా, ఉపయోగించుకోగలుగుతారు. ఫంక్షను చేయు పనిని ఉపయోగించుట అను క్రియను ఫంక్షను-కాల్(function call) అని పిలుస్తారు. చాలా ఫంక్షనులు వాటికి నిర్దేషించిన పనిని చేయుటకు కొంత సమాచారము అవసరం పడుతుంది, ఆ సమాచారమును ఆర్గుమెంట్సు(arguments) అని పిలుస్తారు. చాలా ఫంక్షనులు వాటి ఫలితమును ఒక విలువగా వాటిని పిలిచిన దానికి తిరిగిపంపిస్తాయి, వీటిని రిటర్న్ వాల్యు(return value) అని పిలుస్తారు
ఒక ఫంక్షనుని పిలిచే ముందు మీరు ఆ ఫంక్షను గురించి కొన్ని విషయాలు తెలుసుకోవాలి:
- ఆ ఫంక్షను ఏ పని చేస్తుందో తెలుసుకోవాలి.
- ఎటువంటి సమాచారం(datatype) ఆర్గుమెంట్సుగా తీసుకుంటుంది, వాటి అర్ధమేమిటి.
- ఎటువంటి సమాచారాన్ని రిటర్న్ వాల్యుగా పంపిస్తుంది, దాని అర్ధమేమిటి.
అన్ని ఫంక్షనులు గ్లోబల్ సమాచారముగా పరిగనిస్తారు. అంటే ఒక ఫంక్షను లోపల ఇంకో ఫంక్షనుని రాయటం కుదరదు. గ్లోబలు సమాచారము కాక మిగతా సమాచారమునంతటినీ ఫంక్షను లోపలే సృష్టించాలి.
ప్రతీ నడిపించగలిగే ప్రోగ్రాములో main() అను ఒక ఫంక్షను తప్పని సరిగా ఉండాలి.
[మార్చు] సీ-భాష లైబ్రరీ
1983లో సీ-భాషను స్తిరీకరణ చేస్తున్నప్పుడు, ఆ కమిటీవారు, కొన్ని ప్రాదమిక ఫంక్షనులు దాదాపుగా అన్నీ ప్రోగ్రాములకు అవసరమని గుర్తించారు. ఈ ఫంక్షనులన్నీ కలిపి సీ-భాష లైబ్రరీగా వ్యవహరిస్తున్నారు. సీ-భాష లైబ్రరీ మనకు గణితము, ఫైళ్ళు, వగైరా వాటికి సహాయపడు పనులన్నిటికీ ఫంక్షనులను చేర్చారు. అయితే లైబ్రరీ మనకు హార్డువేరు, ముదలయిన వాటికి సంబందించిన ఫంక్షనులను మాత్రం ఇవ్వదు. "Hello, World"
ప్రోగ్రాములో మనము printf
అనే ఒక లైబ్రరీ ఫంక్షను ఉపయోగించాము. ఈ ఫంక్షను కంపూటరు స్క్రీనుపయిన అక్ష్రములను ముద్రించుటకు ఉపయోగించుతారు.
[మార్చు] అభిప్రాయములు - వాటిని ఉపయోగించు పద్దతి
అభిప్రాయములు(comments) మనము రాసిన ప్రోగ్రాము గురించి వివరించుటకు ఉపయోగించు కోవచ్చు. మనము రాసే ప్రోగ్రాములో సందర్బానుసారముగా ఎక్కడయినా అభిప్రాయములను ఉంచవచ్చును. సీ-భాషలో అభిప్రాయమును /* తో మొదలు పెట్టి */ తో ముగిస్తాము. మంచి పద్దతిలో అభిప్రాయములను చేర్చటం అనేది సాఫ్టువేరు తయారీలో చాల ముఖ్యమయిన అవసరంగా పరిగనిస్తారు. అభిప్రాయములను చేర్చటం అనేది ఇతరులు మీ ప్రోగ్రామును అర్ధము చేసుకోవటనికే కాదు భవిష్యత్తులోమీ ప్రోగ్రామును మీరే తొందరగా అర్ధము చేసుకోవటనికి, అది ఎలా పనిచేస్తుందో గుర్తుకు తెచ్చుకోవడానికి చాలా పనికి వస్తాయి. సాధారనముగా ఏవయితే అంతతొందరగా అర్ధమవదు అని అనుకుంటామో అక్కడ అభిప్రాయమును చేర్చటం అనునది చాల మంచి ఆలోచన. అయితే అలాగని ప్రతీ వాక్యానికి అభిప్రాయమును చేర్చటం అనేది మంచి ఆలోచన కాదు. అలా చేయటం వలన మీ ప్రోగాము చదువుటకు కష్టం అయిపోయే అవకాశం కూడా ఉంది మరి.
మంచి ప్రోగ్రామింగు పద్దతి అవలంభించటం అనేది ప్రోగ్రాములను సులువుగా చదువుటకు, అర్ధవంతముగా ఉంచుటకు మరియూ మంచి ప్రోగ్రాము అన్న భావన కల్పించుటకు ఎంతయినా అవసరము. ఇది అన్ని ప్రోగ్రామింగు భాషలకు వర్తిస్తుంది అని చెప్పవచ్చు. సాదారనముగా అయితే, సరిపడా ఖాళీలను వదలటం, క్రోత్త బ్లాకులను మొదలు పెట్టినప్పటి నుండి మూసివేసే వరకు అన్ని వాక్యములను ఒకే స్థానములో మొదలు పెట్టటం(aligning), ఉపయోగించే ఫంక్షనులకు, వేరియబుల్సులకు అర్ధవంతాయిన పేర్లు పెట్టటం, మొదలయిన వన్నీ చాలా అవసరం.
[మార్చు] సీ-ప్రీప్రాసెసరు
కొన్ని సార్లు మీరు కంపైలరుకు ప్రత్యేకమయిన సూచనలు ఇవ్వాలని అనుకుంటారు. ఈ సూచనలను మనము "ప్రీప్రాసెసర్ డైరెక్టీవు"లను ప్రోగ్రాములో కూర్చి ఇవ్వవచ్చు. మీరు మీ ప్రోగ్రామును కంపైలు చేయటం మొదలు పెట్టినప్పుడు, "ప్రీప్రాసెసరు" అనబడే ఒక ప్రోగ్రాము మీ ప్రోగ్రాములో ఉన్న ఈ సూచనల కోసం వెతికి, ఆ సూచనల అనుగునముగా మీ అసలు ప్రోగ్రామును మారుస్తుంది, ఆ తరువాతే మీ ప్రోగ్రాము కంపైలు చేయబడుతుంది. మీరు ఇక్కడ గుర్తుంచుకోవలసిన విషయమీమిటంటే ప్రీప్రాసెసరు డైరెక్టీవులు ప్రోగ్రాములో ఉన్నా కూడా, వాటిని మీ ప్రోగ్రాముతో పాటుగా కంపైలుబడవు, వాటిని కంపైలు ప్రక్రియకు సూచనలు ఇచ్చుటకు మాత్రమే ఉపయోగించుకోవచ్చును. సీ-భాషలోని అన్ని ప్రీప్రాసెసరు డైరెక్టీవులు కూడా #
('హాష్' అని పలుకుతారు) అనే అక్షరముతో మొదలవుతాయి. మీరు "Hello, World!"
ప్రోగ్రాములో ఇది వరకే #include
అను ప్రీప్రాసెసరు డైరెక్టివుని చూసి ఉంటారు. #include
అను ప్రీప్రాసెసరు డైరెక్టీవు ఒక ఫైలుని తెరిచి అందులో ఉన్న సమాచారమును #include
కి బదులుగా చేర్చును. #define
అను ప్రీప్రాసెసరు డైరెక్టీవు కూడా చాలా విరివిగా ఉపయోగించుతారు.