eo eo en eo eo eo eo eo es eo eo eo eo da eo eo hbs_lat fr fr en eo nb eo eo eo eo eo nl eo lt eo eo eo eo de es eo eo eo eo eo sv ur eo eo eo eo es eo eo eo eo eo eo eo eo tr eo eo eo eo eo eo eo eo eo eo eo eo eo eo
Redaktado de C (programlingvo) - Vikipedio
Jump to navigation Jump to search
Averto: vi ne estas ensalutinta. Via IP-adreso enregistriĝos en la redakta historio de tiu ĉi paĝo. Se vi ensalutas aŭ kreas konton, viaj redaktoj estos atribuitaj al via uzantnomo, kune kun aliaj bonaĵoj.
Kontrolo kontraŭ spamo. Ne entajpu ion ajn!
{{Informkesto programlingvo |nomo = C |paradigmo = [[Imperativa programado|imperativa]], [[Procedura programado|procedura]] programadoj |jaro = [[1972]] |aktuala versio = C11 |dato de aktuala versio = Decembro de 2011 |aŭtoro = [[Dennis RITCHIE]] |tipa = statika, malforta |influita = [[B (programlingvo)|B]] |influis = [[C++]], [[Java (programlingvo)|Java]] }} '''C''' estas komputila [[programlingvo]] kreita de [[Dennis Ritchie]] dum la fruaj 1970-aj jaroj por verki la operaciumon [[Unikso]]. Ĝi restas la plej vaste uzata lingvo por verki operaciumojn kaj sisteman programaron. Ĝi estas ankaŭ ofte uzata por verki aplikaĵojn, kvankam ĝia populareco en tiu fako jam malpliiĝis pro pli novaj programlingvoj, ekz. siaj propraj heredantoj [[C Plus Plus|C++]] kaj [[Java (programlingvo)|Java]]. == Propraĵoj == C estas meznivela programlingvo, kio signifas, ke la fonta kodo de programo povas esti tajpita sen detala kono de la [[CPU]]-speco de la komputilo. Antaŭ ol oni ruli la programon, necesas traduki la fontan programon al la uzota maŝinkodo per [[tradukilo]]. Aliflanke, programoj verkitaj en simbola maŝinkodo (malaltnivela) povas esti plenumitaj nur per unu speco de CPU. Kontraste kun altnivelaj programlingvoj, C devigas la programiston zorgi pri la okupado kaj malokupado de memoro (krom pri tiu aŭtomate administrata per la [[plenumstako]]). La kernaj ecoj de C estas: * fokuso al ordonema programado, kun iloj por programi laŭ struktura stilo; * aliro al malaltnivelaj propraĵoj de la maŝino, ekz. la uzo de [[referenco]]j por montri al lokoj en memoro; * transdonado de parametro al funkcioj ĉiam per valoro, ne per referenco; * leksika [[videblejo]] de variabloj (sed neniu subteno por kaŝado aŭ funkcioj difinitaj ene de funkcioj); * norma aro da bibliotekaj subprogramoj, kiuj donas ilojn utilajn, sed ne strikte necesajn; * uzo de la [[antaŭtraktilo]] [[CPP (antaŭtraktilo)|CPP]] por taskoj kiaj difini makroojn kaj importi dosierojn da fontkodo. Ne ĉiuj el tiuj ecoj estas garantiitaj de la diversaj C-normoj. Ekzemple, la antaŭtraktilo CPP estas ĝenerale aparta programo, kio permesas, ke dosieroj antaŭtraktiĝu, sen tio ke ili estu plene tradukitaj. Tamen, la plejparto da realigoj de C havas ĉi tiujn ecojn, kaj la komunumo de C-programistoj atendas, ke ili ĉeestu. Kvankam C estas meznivela programlingvo, ĝi havas similaĵojn kun [[asembla lingvo]] kaj estas malpli altnivela ol multaj aliaj programlingvoj. Plej elstare, la programisto devas prizorgi la enhavojn de memoro: defaŭlte, C donas neniujn ilojn por kontroli la limojn de tabeloj kaj por aŭtomata [[senrubigo (en komputado)|senrubigo]]. Permana memoradministrado donas al la programisto pli da libereco por ĝustigi la kvalitojn de programo, kio estas aparte grava por programoj kiel peliloj. Tamen, tio ankaŭ faciligas la aperon de cimoj fontantaj en eraraj operacioj pri memoro, ekz. bufraj trooj (transbordiĝoj). Oni jam verkis ilojn por eviti ĉi tiajn erarojn, i.&nbsp;a. bibliotekojn por kontroli la limojn de tabeloj kaj por senrubigo kaj la programon ''lint'' por kontroli fontan kodon. Kelkajn el la «mankoj» de C jam prizorgas pli novaj programlingvoj devenantaj de C. La programlingvo [[Cyclone (programlingvo)|Cyclone]] havas ilojn por gardi kontraŭ eraraj uzoj de memoro. C++ kaj [[Objective C]] donas ilojn celitajn por helpi objekteman programadon. Java kaj [[C dieso (programlingvo)|C#]] aldonas objektemajn ilojn kaj ankaŭ pli altan nivelon de abstrakteco, ekz. per aŭtomata memoradministrado. == Historio == La komenca prilaboro de C okazis inter 1969 kaj 1973 (laŭ Ritchie, la plej kreema periodo estis dum 1972). Ĝi nomiĝis "C", ĉar multaj propraĵoj devenas de pli frua lingvo, kiu nomiĝis [[B (programlingvo)|B]]. Antaŭ 1973, la programlingvo C estis fariĝinta sufiĉe kapabla, kaj pro tio la plejparto de la kerno de la operaciumo [[Unikso]] estis reverkita per C. Ĉi tio estis la unua fojo, ke la kerno de operaciumo estis implementita en lingvo pli altnivela ol asembla lingvo. En 1978, Ritchie kaj [[Brian Kernighan]] eldonis la libron ''The C Programming Language'' (ankaŭ konata kiel "la blanka libro", aŭ K&amp;R.) Dum multaj jaroj, ĉi tiu libro servis kiel la normo de la lingvo; eĉ hodiaŭ, ĝi estas tre populara kiel referenco kaj lernilo. C fariĝis treege populara ekster Bell Labs dum la 1980-aj jaroj, kaj ĝi estis dum iom da tempo la ĉefa lingvo en programado de aplikaĵoj. Estas ankaŭ la plej uzata lingvo en programado de sistemoj, kaj estas unu el la plej ofte uzataj lingvoj en komputila edukado. En la malfruaj 1980-aj jaroj, [[Bjarne Stroustrup]] kaj aliaj ĉe Bell Labs laboris por aldoni [[objektema programo|objektemajn]] ilojn al C. La rezulta lingvo nomiĝas [[C Plus Plus|C++]]. C++ estas nun la programlingvo plej uzata por komercaj aplikaĵoj ĉe la operaciumo [[Vindozo]]. Tamen, C restas pli populara en la Uniksa mondo. La plejparto de Linuksa sistemo, inkluzive de la kerno, estas verkita en C. == Versioj de C == === K&amp;R C === C daŭre elvolviĝis de siaj komencoj ĉe Bell Labs. En 1978, la unua eldono de ''The C Programming Language'' de Kernighan and Ritchie aperis. Ĝi enkondukis la jenajn ilojn al la jam ekzistantaj versioj de C: * <code>struct</code> datumtipo * <code>long int</code> datumtipo * <code>unsigned int</code> datumtipo * La <code>=+</code> operaciilo estis ŝanĝita al <code>+=</code>, kaj tiel plu (<code>=+</code> konfuzis la leksikan analizilon de la C-tradukilo). Dum multaj jaroj, la unua eldono de ''The C Programming Language'' estas vaste uzata kiel fakta normo de la lingvo. K&amp;R-C estas ofte konsiderata la plej baza parto de la lingvo, kiun C-tradukilo devas subteni. Ĉar ne ĉiuj el la nun uzataj tradukiloj jam estis aktualigitaj por plene subteni ANSI-C, kaj sence bone skribita K&R-kodo estas ankaŭ laŭleĝa ANSI-C, K&amp;R-C estas konsiderata la bazo, ĉe kiu programistoj devus resti, kiam ili deziras maksimuman porteblecon. Ekzemple, la praŝarga versio de la tradukilo "[[GNU Compiler Collection|GCC]]", xgcc, estas skribita en K&amp;R-C. Ĉi tio estas pro la fakto, ke multaj el la sistemoj subtenataj de GCC ne havis tradukilon de ANSI-C, kiam GCC estis verkita, nur unu kiu subtenas K&amp;R-C. Tamen, ANSI-C estas nun subtenata de preskaŭ ĉiuj vaste uzataj tradukiloj. Multe da C-kodo nuntempe skribata uzas ilojn de la lingvoj, kiuj estas preter la originala K&amp;R-normo. === ANSI-C kaj ISO-C === En 1989, C estis unuafoje oficiale normigita de [[ANSI]] en ANSI X3.159-1989 "Programming Language C". Unu el la celoj de la ANSI-C-normigado estis produkti super-aron de K&amp;R-C. Tamen, la normigaj komitatoj ankaŭ enmetis kelkajn novajn ilojn, pli ol estas normale en programlingva normigo. Kelkaj el la novaj iloj estis "neoficiale" aldonitaj al la programlingvo post la eldono de K&amp;R, sed antaŭ la komenco de la ANSI-C-normigo, ekzemple: * funkcioj kun rezulto <code>void</code> * funkcioj, kiuj redonas datumtipojn <code>struct</code> aŭ <code>union</code> * datumtipo <code>void *</code> (sentipa referenco) * valorizo por <code>struct</code>-datumtipoj * la biblioteko <code>stdio</code> kaj kelkaj aliaj funkcioj de norma biblioteko havebliĝis kun la plejparto de implementoj (ĉi tiuj jam ekzistis en almenaŭ unu implemento je la tempo de K&amp;R, sed ne estis vere normaj, do ne estis priskribitaj en la libro). Aliaj iloj estis aldonitaj dum la ANSI-C-normigo mem, plej rimarkinde funkciaj prototipoj (prenitaj de [[C plus plus|C++]]). La ANSI-C-normo ankaŭ bazigis norman aron de bibliotekaj funkcioj. La normo ANSI-C kun kelkaj etaj ŝanĝoj, estis adoptita kiel [[Internacia Organizo por Normigado|ISO]]-normo numero [[ISO 9899]]. === C99 === Post la ANSI-normigado, la C-lingva normo restis relative stabila dum iom da tempo, kvankam C++ daŭre evoluis. (Fakte ''Normative Amendment 1'' kreis novan version de la programlingvo C en 1995, sed ĉi tiu versio estas malofte agnoskata.) Tamen, la normo estis reviziita en la malfruaj 1990-aj jaroj, kio rezultis en ISO 9899:1999, eldonita en 1999. Ĉi tiu normo estas kutime nomita "C99". La novaj ecoj aldonitaj al C99 estas inter alia: * ''inline functions'' (funkcioj vokataj per tekstokopio), * libera lokado de deklaroj de variabloj (laŭ la ekzemplo de C++), * aldono de pluraj novaj datumtipoj, inkluzive de <code>long long int</code> (por pli glata transiro de 32-bitaj al 64-bitaj [[procesoro]]j), eksplicita [[buleo|bulea]] datumtipo kaj tipo prezentanta [[kompleksaj nombroj|kompleksajn nombrojn]], * tabeloj de variaj longecoj, * oficiala subteno por komentoj, kiuj komenciĝas per // kiel en C++ (jam subtenitaj de multe da C89-tradukiloj kiel ne-ANSI-a etendo, * <code>snprintf</code>. La intereso subteni la novajn C99-ecojn estas miksita. Dum [[GCC]] kaj kelkaj komercaj tradukiloj subtenas la plejparton de la novaĵoj de C99, la tradukiloj eldonitaj de Microsoft kaj Borland ne subtenas ilin, kaj ĉi tiuj du firmaoj ne ŝajnas interesataj. == Anatomio de C-programo == C-programo konsistas el funkcioj kaj variabloj. C-funkcioj estas kiel la subprogramoj kaj funkcioj de [[Fortrano]] aŭ la ordonoj kaj funkcioj de [[Paskalo (programlingvo)|Paskalo]]. La funkcio <code>main</code> estas speciala en tio, ke la programo komencas plenumiĝi ĉe la komenco de <code>main</code>. Ĉi tio signifas, ke ĉiu C-programo devas enhavi funkcion <code>main</code>. La funkcio <code>main</code> kutime vokos aliajn funkciojn por helpi fari sian taskon, ekz. <code>printf</code> en la supra ekzemplo. La programisto povas verki iujn funkciojn kaj vokos aliajn el bibliotekoj. En la ĉi-supra ekzemplo <code>return 0</code> donas la elirstaton de la funkcio <code>main</code>. Ĉi tio indikas sukcesan plenumon de la programo al vokinta ŝelo. C-funkcio konsistas el indiko de datumtipo de rezulto, nomo de la funkcio, listo da parametroj (aŭ <code>void</code> en krampoj se estas neniu) kaj [[bloko (programlingva)|bloko]]. == "Saluton, mondo!" en C == La jena simpla aplikaĵo printas "Saluton, mondo!" al la ekrano. Ĝi aperis la unuan fojon en K&amp;R. <syntaxhighlight lang="c"> #include <stdio.h> int main(void) { printf("Saluton, mondo!\n"); return 0; } </syntaxhighlight> == Esperantigo de C == En la subkulturo de C oni preferas uzi la anglan lingvon, ankaŭ kiam oni skizas ion en [[pseŭdokodo]]. Tamen la enkonstruita antaŭtraktilo CPP ebligas facile esperantigi la [[ŝlosilvorto (programlingva)|ŝlosilvorto]]jn, kiel montrite en la artikolo pri CPP ([[CPP (antaŭtraktilo)#eoch|vidu tie]]). Tio ne havas praktikan utilon, tamen estas eleganta ekzerco demonstranta kapablon de la lingvo. == Vidu ankaŭ == * [[Objective-C]] * [[C++]] [[Kategorio:C| ]] [[Kategorio:Programlingvoj]]
Konservante, vi konsentas senlime doni vian kontribuon laŭ la Permesilo Creative Commons Attribution-ShareAlike 3.0 kaj la GFDL.
Vi konsentas esti agnoskata de reuzantoj almenaŭ per ligilo aŭ URL al la paĝo kontribuita. Vidu la Rajtojn de Uzado por detaloj.
Nuligi Helpo pri redaktado (malfermiĝas en nova fenestro)
Specialaj Signoj: Ĉ ĉ Ĝ ĝ Ĥ ĥ Ĵ ĵ Ŝ ŝ Ŭ ŭ Ā ā Ē ē Ī ī Ō ō Ū ū · ß · Ð ð Þ þ · ĉ ĝ ĥ ĵ ŝ ŭ ·
Æ æ Œ œ · ÿ Ÿ · – — • ’ | … ~ ° «» ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁰ ½ nedisegebla spaco :    ·
Vikisintakso: ligiloj [] [[]] komento :   ŝablono : {{}} {{#if:|1|0}} parametro {{{}}}
defaŭlta ordigŝlosilo {{DEFAŬLTORDIGO:}} [[Kategorio:]] {{PAGENAME}}
[[Dosiero:]] [[Media:]] #ALIDIREKTU[[]] · [[Commons:]] [[m:]] [[n:]] [[q:]] [[s:]] [[Wikt:]]
·    ·    ·    ·
Vikidatumoj entities used in this page
Ŝablonoj uzitaj sur ĉi tiu paĝo:
Ŝablono:Lin serĉi (vidi fontkodon) (protektita)
Ŝablono:Tnavbar (vidi fontkodon) (duon-protektita)
Ŝablono:Ŝanĝu ŝablonon (vidi fontkodon) (protektita)
Informoj pri la paĝo
Regularo pri respekto de la privateco