సి
ప్రోగ్రామింగ్ భాష అంటే ఒక యంత్రానికి (ముఖ్యంగా కంప్యూటరుకు) అది చేయవలసిన పనులను తెలియచెప్పడానికి రూపకల్పన చేసిన కృత్రిమమైన భాష. ప్రోగ్రామింగ్ భాషలతో యంత్రము యొక్క ప్రవర్తనను నియంత్రించడానికి ప్రోగ్రాములు తయారుచేయవచ్చు. అంతేగాక వీటిని మనిషికి-యంత్రానికి మధ్య సంభాషణ కొరకు ఒక మార్గముగా పరిగణించవచ్చు. ఇవి అనేక రకాలు. ఉదాహరణకు
'సి' ఒక కంప్యూటర్‌ భాష. దీనిని మధ్య స్థాయి భాషగాను లేదా క్రింది స్థాయి భాషగాను ఉపయోగించుకోవచ్చు. 'సి' ని 1970లో మరియు డెన్నిస్ రిచీ అను శాస్త్రవేత్తలు తయారు చేసారు. ఇప్పుడు ఈ భాషను కంప్యూటింగ్ రంగంలో చాలా విస్త్రుతంగా వాడుతున్నారు. అంతే కాదు, ఈ భాషకు ఉన్న కొన్ని ప్రత్యేకతల వలన క్రింది స్థాయి అప్లికేషన్ల డెవలప్మెంట్ కు చాలా మంచి భాషగా ప్రాముఖ్యత పొందింది.
'సి' భాష మొట్టమొదట ఏటీ & టీ బెల్ పరిశోధనాలయంలో (AT&T Bell Labs) 1969కు 1973 మధ్యన తయారు చేయటం జరిగింది. ఎక్కువ భాగం 1972లో తయారయింది. 'సి' కంటే ముందు 'బి' అనే కంప్యూటరు భాష ఉండేది. 'సి'కి సంబంధించిన చాలా విశేషాలను 'బి' నుండే తీసుకున్నారు. ఆంగ్లములో 'బి' తరువాత 'సి' వస్తుంది. ఈ రెండు కారణాల వలన 'సి' కి ఆ పేరు పెట్టడము జరిగింది. 1973 వచ్చేసరికి సి భాష మంచి రూపును సంతరించుకుంది, అటు తరువాత సి భాషను ఉపయోగించి యునీక్సు (ఆపరేటింగ్ సిస్టమ్) కెర్నలుని మరలా నిర్మించారు.
సి భాషకు ముందుమాటలో వివరముగా చదవండి.
సి-భాష నేర్చుకొనేముందు మీకు కంప్యూటరు గురించి ప్రాథమిక పరిజ్ఞానము ఉండవలెను. అయితే మీకు ప్రోగ్రామింగుకి సంబంధించిన పరిజ్ఞానము పెద్దగా అవసరము లేదు.
సి-భాష నేర్చుకొనేందుకు మీకు ఒక సి-కంపైలరు (సాఫ్ట్వేర్) కావలెను.
మీరు విండోసు ఆపరేటింగ్ సిస్టం వాడుతున్నట్లయితే
మీరు లినక్స్ ని వాడుతున్నట్లయితే gcc ఈపాటికే మీ కంప్యుటరులో ఉండాలి.
సి కంఫైలర్ ఉపయెగించే పద్థతి
'సి' భాష అసెంబ్లీ భాష (assembly language)కు బాగా దగ్గరగా ఉంటుంది. అందుకనే, సి భాషను అప్పుడప్పుడు "portable assembly" అని పిలుస్తారు. ఒకసారి సి భాషలో రాసిన ప్రోగ్రాముని దాదాపు ఏ యంత్రములోనయినా కంపైలు (compile) చేసుకొని వాడుకోవచు. కానీ అసెంబ్లీ భాషలో ఇలా అన్ని యంత్రాలకు సరిపోయేటట్లు ప్రోగ్రాములను వ్రాయటము కుదరదు.
అసలు 'సి' భాషను సులువుగా నేర్చుకోడానికి, ముందుగా మనకు అల్గారిథం (algorithm), క్రమచిత్రం (flowchart) ల గురించి తెలియాలి.
ఆల్‌గారిధమ్ (ALGORITHM):
ఆల్‌గారిధమ్ అనేది ఏ కంప్యూటర్ భాషకుకి అయిన పునాది వంటిది. ఆల్‌గారిధమ్ (algorithm) ను కంప్యూటర్ అర్దం చేసుకొలేదు, ఏందుకు అంటే ఆల్‌గారిధమ్ (algorithm) ను మనం మన సొంత భాషలో వ్రాసుకొవచ్చు. ఆల్‌గారిధమ్ (algorithm) ను కంప్యూటర్ అర్దం చేసుకోవాలి అంటే దానిని మనం కంప్యూటర్ అర్దం చేసుకునే విధంగా వ్రాయలి. కంప్యూటర్ అర్దం చేసుకునే భాషను ప్రోగ్రామింగ్ లాంగ్వేజ్ (Programming language) అంటారు.
ఒక సమస్యను తీసుకుంటే దానికి ఆల్‌గారిధమ్ ఏలా వ్రాస్తారు ఇప్పుడు చూద్దాం..
ఇచ్చిన రెండు సంఖ్యలను కూడడం (add) :
(a=2 b=3 c=a+b) ?
వివరణ:
మనం ఏద్తెన పనిని చేయాలి అంటే ముందు దానిని start చేయాలి. అందుకే ప్తెన problem1 లో step1 అనేది start చేయడం. తర్వాత steps అనేవి మనం Slove చేసే Problem మీద ఆధారపడి ఉంటుంది. మనం ఏద్తెన పనిని start చేస్తే దానికి Ending కూడా ఉంటుంది. అందుకే last step (step6)అనేది End చేయడం
'క్రమచిత్రం (FLOW CHAT):'
సమస్య సాధనకు రాసిన ఆల్‌గారిధమ్ కి బోమ్మలతో కూడిన వర్ణనను "క్రమచిత్రం" అనవచ్చు. క్రమచిత్రం (flowgraph)ని వివిధ రకాల boxes మరియు symbols తో గీయాలి చేయవలసిన పనిని (operation)box లోపల వ్రాస్తారు. మొత్తం boxes మరియు symbols అనేవి Arrow ద్వారా connect చేయబడి వుంటాయి .ఈ విధంగా arrow తో connect చేయడం వలన algorithm యొక్క క్రమాన్ని మనం తేలుసుకోవచ్చు.
క్రింది figure క్రమచిత్రంలో ఉపయోగించే వివిధ రకాల symbols and boxes గురించి చేబుతుంది..
ఇచ్చిన రెండు సంఖ్యలను add చేయడం (a=2 b=3 c=a+b) ?
దీనికి క్రమ చిత్రం ఎలా గీయలో చూద్దాం..
వివరణ: మనం ఏద్తెన పనిని చేయాలి అంటే ముందు దానిని start చేయాలి. అందుకే ప్తెన సమస్యలో step1 అనేది start చేయడం. అందుకని దీనిని oval లో వ్రాసం .తర్వాత 2 & 3 steps అనేవి values ని తీసుకొవడం అందుకని 
సమాంతచతురస్రం [parallelogram] లో వ్రాసం. తర్వాత 4 step అనేది కూడికని perform చేయడం అందుకని దీర్ఘచతురస్రం [Rectangle] లో వ్రాసం .తర్వాత 5th steps అనేది output ని print చేయడం. అందుకని సమాంతచతురస్రం [parallelogram] లో వ్రాసం. మనం ఏద్తెన పనిని start చేస్తే దానికి Ending కూడా ఉంటుంది .అందుకే last step (step6) అనేది End చేయడం అందుకని దీనిని oval లో వ్రాసం.
మామూలుగా ఎవరయినా చిన్నపిల్లలకు భాషను నేర్పేటప్పుదు "అమ్మ" అనో, ఓం నమఃశివాయ అనో (ఓనమాలు అనే పదం ఇక్కడనుండే వచ్చినది అని చెప్తారు)వ్రాయించి ఓనమాలు దిద్దిస్తారు. అలాగే కంప్యూటరు భాషలను నేర్చుకునేటప్పుడు ఈ "హలో, ప్రపంచం!" ఉదాహరణతో మొదలు పెడతారు. ఈ ప్రోగ్రాము "హలో, ప్రపంచం!" అని మీ కంప్యూటరు మానిటరు మీద చూపిస్తుంది. సి భాషలో "హలో, ప్రపంచం!" ఉదాహరణ ఈ క్రింది విధముగా ఉంటుంది.
పైన ఇచ్చిన ప్రోగ్రాము దాదాపు అన్ని కంపైలరు (compiler)లలో పని చేయక పోవచ్చును. ఎందుకనగా అది ANSI C ప్రమాణాల ప్రకారం రాయబడలేదు. ఆ ప్రోగ్రాముకు చిన్నచిన్న మార్పులు చేర్పులు చేస్తే, ప్రమాణాలకు తగ్గట్లుగా మార్చు కోవచును.
అయితే ఇప్పుడు మనము పైన ఇచ్చిన ప్రోగ్రాములోని ఒకొక్క వాక్యాన్ని అర్ధము చేసుకుందాము
సి-భాషలో #తో మొదలయే వాక్యాలను "ప్రీప్రోసెసింగ్ డైరెక్టీవ్స్" ("preprocessing directive") అని అంటారు.
codice_1 అను ప్రీప్రోసెసింగ్ డైరెక్టీవ్, ప్రీప్రోసెసర్ను-ఆ వాక్యంలో పేర్కొన్న ఫైలులో ఉన్న మొత్తము సమాచారముతో, ఈయొక్క వాక్యము బదులుగా చేర్చుటకు సూచన ఇచ్చును.
తరువాతి వాక్యములో codice_2 అను ఒక ఫంక్షనుని "వివరించటం" (define) జరిగింది. సి-భాషలో codice_2-ఫంక్షనుతో ఒక ప్రత్యేక ఉపయోగము ఉంది. ప్రోగ్రాముని ఎక్సిక్యూట్ చేసినప్పుడు ఈ ఫంక్షనునే మొటమొదట కాల్ చేస్తారు. కాబట్టి ఈ codice_2-ఫంక్షను ప్రతీ ప్రోగ్రాములో తప్పని సరిగా ఉండాలి. codice_5 అనునది ఆ ఫంక్షను తిరిగి పంపించు సమాచారము యొక్క రూపును తెలుపును. ఇక్కడ codice_5 అనగా ఆ సమాచారము integer రూపములో ఉంటుందని అర్థము. codice_7 అనగా codice_2-ప్రోగ్రామును పిలుచుటకు ఎటువంటి ఆర్గ్యుమెంట్సు (agruments)ని పంపించనవసరము లేదు అని తెలుపుతున్నది.
తెరుచుకునే మీసాల బ్రాకెట్లు codice_2-ఫంక్షను మొదలును సూచించును.
ఈ వాక్యము codice_10 అను ఫంక్షనుని కాల్ (call) చేయును. ఈ ఫంక్షను codice_11 అను హెడ్డరు ఫైలులో నిర్మింపబడింది. ఈ ఫంక్షను, దానిలోకి పంపించిన సమాచారాన్ని ఒక క్రమ పద్ధతిలో అమర్చి మీ మానిటరు పైన చూపించును. codice_12లో codice_13 అనునది ఎస్కేప్ సిక్వెన్స్ ("escape sequence") అని అంటారు, అది కర్సరుని ఇంకో క్రొత్త లైనులోకి వెళ్ళుటకు అదేశించును. ఇచట మామూలు సమాచారము మధ్యలో అడెశములు కూడా ఉండటము వలన ఎస్కేప్ సిక్వెన్స్ అని పిలవటం జరుగుతుంది. codice_10-ఫంక్షను codice_5 రూపములో ఉన్న సమాచారమును తిప్పి పంపించును, కానీ దాని వలన మనకు పెద్ద ఉపయోగములు ఏమీ ఉండవు.
ఈ వాక్యము codice_2-ఫంక్షను ఎక్సిక్యూషన్ని అంతము చేసి '0' అనే సంఖ్యను తిప్పి పంపించును.
మూసుకునే మీసాల బ్రాకెట్లు codice_2-ఫంక్షను చివరను సూచించును.
సి భాషను కంఫ్యూటర్ కీ అర్థమయ్యే భాషలొకి మార్చాలంటే కంపైలర్ వుండాలని ఇంతకు ముందు చదివాం.
సాధారణంగా కొన్ని వాక్యముల ప్రోగ్రాముని రాసి, ఆ వాక్యములు ఏమి చేస్తాయి అనే దానిని మనము ఈ వ్యాఖ్యలుగా రాసుకోవచ్చును. సి-భాషలో వ్యాఖ్యలను codice_18 మరియు codice_19 ల మధ్యన ఉంచవలెను. కావున codice_20 మధ్యన ఏమి ఉన్నా కంపైలరు అసలు పట్టించుకోదు. అయితే అభిప్రాయములు తెలుపుటకు మనము codice_21 కూడా ఉపయోగించ వచ్చును. కాక పోతే codice_22 ఉపయోగించినప్పుడు వాటి తరువాత ఆ లైనులో ఉన్నదంతా వ్యాఖ్య కిందకు వస్తుంది.