Yksinkertaisen C-ohjelman rakenne. Tietoja tyhjästä tilasta ja kauniista koodista

C-ohjelma koostuu yhdestä tai useammasta aliohjelmasta, joita kutsutaan funktioiksi.

C-kieli on lohkorakenteinen. Jokainen lohko on suljettu aaltosulkeisiin ().

C-konsolisovellusohjelman päälohko on päätoiminto nimeltä main ().

Jokainen C-kielen toiminta päättyy puolipisteeseen -; ... Toiminto voi olla funktiokutsu tai joitain operaatioita.

Funktionimi on kuvausryhmän ja operaattoreiden yhteinen nimi,
suljettuna lohkoon (kiharat olkaimet). Toiminnon nimen takana suluissa toimintoparametrit on määritetty.

C Kommentit

C-kieli käyttää symboleja kommenteissa

/ * - kommentin alku;
* / - kommentin loppu.

Koko sarja näiden merkkien välillä on kommentti.

Kirjoittaminen on kätevää monirivisiä kommentteja:

int a; / * kokonainen
muuttuja * /

Moniriviset kommentit ovat hyödyllisiä myös vianetsinnässä koodin osien piilottamiseksi suoritukselta.

Lisäksi //-symboleilla voidaan kirjoittaa lyhyitä kommentteja. Tässä tapauksessa kommentilla tarkoitetaan kaikkea, mikä sijaitsee //-symbolien jälkeen ja rivin loppuun asti:

kellua b; // todellinen muuttuja

Päätoiminto

Kun käytät C-konsolisovellusta, käyttöjärjestelmä tietokone siirtää ohjauksen toiminnolle nimeltä main (). Pääfunktiota () ei voi kutsua muista ohjelman funktioista, se on ohjausfunktio.

Funktion nimen perässä olevia sulkeita käytetään osoittamaan parametrit (argumentit), jotka välitetään funktiolle, kun sitä kutsutaan. V tässä tapauksessa käyttöjärjestelmä ei välitä mitään argumentteja pää ()-funktiolle, joten suluissa oleva argumenttiluettelo on tyhjä.

Pääfunktio voidaan kirjoittaa eri tavoin:

  • int main ()
  • tyhjä pää ().

Palautusarvon tyyppi määritetään ennen funktion nimeä. Kun viitataan päätoiminto arvo palautetaan käyttöjärjestelmään. viimeinen ennätys ei palauta arvoja. mutta tyhjä pää ()- ei aivan oikea merkintä, koska se kertoo kääntäjälle, että main () -funktio ei palauta mitään arvoa.

Tässä tapauksessa ennätys int main () käskee kääntäjää palauttamaan käyttöjärjestelmän vaatiman kokonaisluvun ja kertoo, että ohjelma päättyi oikein. Jos tätä arvoa ei palauteta, käyttöjärjestelmä ymmärtää, että ohjelma päättyi epänormaaliin tilaan.
Kokonaisluvun palauttamiseksi rivi lisätään ennen funktion loppua

paluu 0; // todellinen muuttuja

Kuvaukset ja operaattorit on suljettu aaltosulkeisiin.

V yleinen tapaus ohjelma voi sisältää useita toimintoja. Jokaisella funktiolla on luettelo sille välitetyistä parametreista, merkitty suluissa, ja joukko operaatioita, jotka on suljettu lohkoon, rajoitettu aaltosulkeet.

Esimerkki: Näytetään viesti "Hei, maailma!" ...

1
2
3
4
5
6
7

#sisältää // Yhdistä I / O-kirjasto
int main () // Päätoiminto
{
printf ("Hei, maailma!"); // Näytä viesti
getchar (); // Viivästyttää konsoli-ikkunaa
paluu 0;
}


Ohjelman tulos:

Yritetään nyt kirjoittaa teksti venäjäksi.

1
2
3
4
5
6
7

#sisältää
int main ()
{
printf ( "Hei maailma!");
getchar ();
paluu 0;
}


Ohjelman tulos:


Venäjän kielen ongelma konsolisovelluksissa on Microsoft-konsoli ja koodieditori Visuaalinen studio tukevat erilaisia ​​koodisivuja. Nähdäksesi venäläiset merkit konsolissa, sinun on muutettava konsolin koodisivu vastaamaan editorin koodisivua (1251). Tätä tarkoitusta varten järjestelmä ( "chcp 1251") vastaavan kanssa komentorivi... Prototyyppi järjestelmän toimintoja() on kirjastossa .

Tässä tapauksessa ohjelman teksti näyttää tältä.

Keskeytä AdBlock toimii sillä verkkosivustolla.

Toivottavasti olet jo asentanut jonkin IDE:n tietokoneellesi ja oppinut kääntämään ohjelmia siinä. Jos ei, niin sitten

Kaikilla C-kielellä kirjoitetuilla ohjelmilla on yhteinen rakenne. Mistä puhumme tällä oppitunnilla. Ensimmäinen edellisessä vaiheessa kirjoitettu ohjelmamme auttaa meitä tässä.

Täytämme yksinkertainen kortti... Käytössä Tämä hetki tiedämme, että ohjelmia on, mutta emme tiedä kuinka ne toimivat sisällä. Siksi karttamme näyttää tältä.

Kuva 1 Kartta "C-ohjelmien rakenne." Ensimmäinen taso.

Koko kurssin ajan palaamme tähän karttaan, tarkennamme sitä, täydennämme sitä uusilla elementeillä ja lohkoilla.

Nyt huomio. Älä huolestu! Alla on kolmen yksinkertaisen ohjelman lähdekoodi. Sinun tehtäväsi on tarkastella niitä huolellisesti ja yrittää löytää niiden koodista jokin kaava (jotain yleistä jokaisessa ohjelmassa).

Listaus 1. Ohjelma 1. Tulostaa "Hello, World!"

#sisältää

Listaus 2. Ohjelma 2

Int main (tyhjä) (int a, b, c; a = 5; b = 10; c = a + b; return 0;)

Listaus 3. Ohjelma 3

#sisältää int main (void) (TIEDOSTO * fp; fp = fopen ("input.txt", "w"); fprintf (fp, "Tämä on Sparta!"); fclose (fp); return 0;)

Käytä aikaa katsoaksesi oppitunnin loppuosa ja oikea vastaus tähän ongelmaan. Yritä ensin vastata itse. Paina sen jälkeen painiketta "Katso jatko!"

Joten vastaus: Kaikissa yllä olevissa ohjelmissa on seuraava rakenne:

Listaus 4. Minkä tahansa C-ohjelman päätoiminto on päätoiminto.

Int main (tyhjä) (palautus 0;)

Mikä tämä muotoilu on. Tämä ilmoitus päätoiminnot... Jokaisella C-kielellä kirjoitetulla ohjelmalla tulee olla sellainen funktio. Iso tai pieni ohjelma, tietokonepeli tai "Hello, World!"-ohjelma, jonka olet kirjoittanut sinä tai Bill Gates - jos ohjelma on kirjoitettu C-kielellä - sillä on päätoiminto. Tämä on niin sanotusti ohjelmamme päätehtävä. Kun suoritamme ohjelmaa, saatamme ajatella, että käytämme tämän ohjelman päätoimintoa.

Pysähdytään hetkeksi. Näyttää siltä, ​​​​että olemme ymmärtäneet yhden tai kaksi C-ohjelmien rakenteesta. Jokaisen C-ohjelman tulee sisältää pääfunktio. Esitetään tämä tieto tietokartallamme "Ohjelmien rakenne C-kielellä."

Kuva 2 Kartta "C-ohjelmien rakenne." Pää.

Nyt kortti ei häiritse meitä ammottavalla tyhjyydellä. Jatketaan tutkimusta.

Haluan kertoa teille hieman päätoiminnosta ja toiminnoista yleensä.

Toiminnon nimeä edeltää int, joka on lyhenne sanasta kokonaisluku, joka on käännetty englannista "kokonaiseksi". Tämä merkintä tarkoittaa, että kun pääfunktio lopettaa työnsä, sen pitäisi palata soittava ohjelma(meidän tapauksessamme se on käyttöjärjestelmä) jokin kokonaisluku. Yleensä päätoiminnossa tämä on numero nolla, joka ilmoittaa käyttöjärjestelmälle: "Kuten, kaikki on hyvin. Mitään tapausta ei tapahtunut."

Oletko koskaan nähnyt virheilmoituksia tietokoneen näytöllä? Yleensä he kirjoittavat jotain kuten "Ohjelma päättyi epänormaalisti... blaa blaa blaa... Koodi -314." Tämä on suunnilleen sama. Erona on se, että ongelmien ilmetessä käyttöjärjestelmä ilmoittaa siitä, ja kun kaikki on hyvin, se ei häiritse meitä taas kerran.

Sana void kirjoitetaan sulkeisiin funktion nimen jälkeen. Yleensä funktion argumentit kirjoitetaan yleensä sulkeisiin, mutta meidän tapauksessamme, kun ne kirjoittavat suluissa void, tämä tarkoittaa, että funktiolla ei ole argumentteja. Toisin sanoen, jotta päätoiminto käynnistyisi, se ei tarvitse ulkopuolisia lisätietoja. Puhumme tästä kaikesta yksityiskohtaisemmin, mutta toistaiseksi muista vain, että sana void funktion argumenttien sijaan tarkoittaa, että tälle funktiolle ei tarvita argumentteja.

Kiharahousujen sisällä on kuvaus päätoiminnosta, ts. suoraan mitä tämän toiminnon on tarkoitus tehdä.

Ennen sulkevaa kiharaa aaltosuljetta näemme paluukomennon. Tämä komento on vastuussa arvon palauttamisesta funktiosta. Nuo. katso, jos ohjelma saavutti tämän pisteen, kaikki oli kunnossa eikä virheitä tapahtunut, mikä tarkoittaa, että voit palauttaa arvon nolla.

Miksi juuri nolla, saatat kysyä? Ja paholainen vain tietää! He tekevät sen yleensä juuri niin. Voit periaatteessa palauttaa jonkin muun kokonaisluvun, esimerkiksi 100 tai -236. Jos se olisi vain kokonaisluku. Muistatko? Siksi koko.

Joten selvitimme päätoiminnon. Vielä yksi kohta. Aaltosulkeisiin kirjoitettua kutsutaan yleensä "funktion rungoksi" (tai funktion kuvaukseksi), ja ensimmäistä osaa, joka on ennen kaarisulkeja, kutsutaan funktion otsikoksi.

Palataan nyt takaisin ensimmäiseen "Hello, World" -ohjelmaamme ja katsotaan mitä.

Listaus 5. "Hei, maailma" -ohjelma

#sisältää int main (void) (printf ("Hei, maailma! \ n"); return 0;)

Ymmärrämme jo jotain tässä ohjelmassa. Vain kaksi riviä jää epäselväksi, mennään järjestyksessä.

Listaus 6. Sisällytädirektiivi

#sisältää

Tämä rivi on viesti kääntäjälle. Näitä #-merkillä alkavia viestejä kutsutaan kääntäjän direktiiveiksi. Kirjaimellisesti: "sisällytä tiedosto stdio.h". Käännöshetkellä stdio.h-tiedoston sisältö lisätään tämän rivin sijaan. Puhutaanpa nyt hieman tästä tiedostosta. stdio.h (englanniksi STanDart Input Output) on otsikkotiedosto, se kuvaa erilaisia ​​syötteeseen ja ulostuloon liittyviä vakiotoimintoja.

Herää järkevä kysymys: "Miksi meidän pitää kirjoittaa tämä rivi? Miksi meidän piti edes lisätä tämä tiedosto tänne?" Tämä on välttämätöntä, jotta voimme käyttää ohjelmassamme vakiotoiminto printf () -tulostus näytölle.

Tässä on asia. Ennen kuin käytämme mitään ohjelmassamme, meidän on kuvattava se ensin. Kuvittele tilanne, jossa sinua pyydettiin tuomaan kynttelikkö, etkä tiedä mikä se on. Ei ole selvää, mitä tehdä.

Samoin kääntäjä. Kun hän kohtaa funktion, hän etsii sen kuvausta (eli mitä sen pitäisi tehdä ja mitä se tarkoittaa) ohjelman alusta (alusta siihen hetkeen, kun sitä käytetään ohjelmassa). Joten printf () -funktio on kuvattu tiedostossa stdio.h. Siksi yhdistämme sen. Mutta kun yhdistämme sen, kääntäjä pystyy löytämään printf () -funktion, muuten se antaa virheen.

Muuten, on aika lisätä tietokarttamme. Ennen päätoimintoa lisää vielä yksi lohko, otsikkotiedostojen yhdistämislohko.

Kuva 3 Kartta "C-ohjelmien rakenne." Otsikkotiedostojen yhteyslohko.

Jatketaan ohjelman käsittelyä.

Listaus 7. printf () -toiminto

Printf ("Hei, maailma! \ N");

Tällä rivillä kutsumme normaalia printf () -näyttötoimintoa. Tässä yksinkertaisimmassa tapauksessa välitämme sille yhden parametrin, lainausmerkkijonon, joka on näytettävä, meidän tapauksessamme se on Hello, World! \ n. Mutta odota, mikä tämä on \ n? Näytöllä ei ollut \ n -merkkejä ohjelman käynnistyessä. Miksi sitten kirjoitimme tämän tänne? Tämä sarja on erikoismerkki, joka on komento siirtyä seuraavalle riville. Se on kuin painaisi Enter-näppäintä MS Wordissa. Sellaisesta erikoismerkit useita, ne kaikki on kirjoitettu "\"-merkillä - kenoviivalla. Näitä erikoismerkkejä kutsutaan ohjausmerkeiksi. Näytän ne sinulle myöhemmin. Muussa tapauksessa näytössä näkyy täsmälleen se, mitä kirjoitit lainausmerkeissä.

Muuten, huomaa, että jokainen C-komento päättyy ";"-merkkiin (puolipiste). Se näyttää pisteeltä lauseen lopussa venäjäksi. Tavallisella kielellä erotamme lauseet pisteellä ja C-ohjelmointikielessä erotamme komennot toisistaan ​​puolipisteellä. Siksi puolipiste on pakollinen. Muussa tapauksessa kääntäjä vannoo ja antaa virheen.

Mitä tahansa funktiota kutsuaksesi sinun on kirjoitettava sen nimi ja ilmoitettava sille välitetyt parametrit suluissa. Funktiolla voi olla yksi tai useampi parametri. Tai parametreja ei ehkä ole ollenkaan, jolloin sinun ei tarvitse kirjoittaa mitään sulkeisiin. Esimerkiksi yllä kutsuimme printf () -funktiota ja välitimme sille yhden parametrin merkkijonon, joka tulostetaan näytölle.

Muuten, hyödyllisiä neuvoja... Koska jokaisella ohjelmalla on päätoiminto, ja kirjaimellisesti jokaisessa ohjelmassa meidän on näytettävä jotain näytöllä, suosittelen, että luot välittömästi tiedoston, jossa on seuraava tyhjä, jotta et kirjoita samaa asiaa joka kerta.

Listaus 8. Tavallinen tynkä C-ohjelmille.

#sisältää int main (tyhjä) (palautus 0;)

No siinä näyttää olevan kaikki. Tätä ensimmäistä oppituntia voidaan pitää valmiina. Vaikka ei, on vielä yksi asia.

Tärkein asia tässä opetusohjelmassa on tietysti yleinen rakenne ohjelmia. Mutta lisäksi opimme näyttämään mielivaltaista tekstiä näytöllä. Näyttää siltä, ​​​​että he eivät tuntuneet tietävän juuri mitään, mutta sekin riittäisi esimerkiksi tekemään äidilleni pienen lahjan 8. maaliskuuta.


Postikorttiohjelman lähdekoodi on tämän opetusohjelman lähdekoodiarkistossa. Koe! Tulet onnistumaan.

C-ohjelmissa on tietty järjestys:

Ensin lisäämme tarvitsemamme kirjastot #include Jos tiedosto on projektin nykyisessä hakemistossa, se ilmoitetaan lainausmerkeissä. Jos tiedosto sijaitsee toisessa hakemistossa, sinun on määritettävä koko polku lainausmerkeissä.

#sisältää
#include "math.h"

Tämän jälkeen voimme lisätä tarvittavat vakiot #define A 3

Sen jälkeen toiminto alkaa Main () -komennolla

Kun kaikki on tehty, voit kirjoittaa getchar ()

2. Mitä puolipiste tarkoittaa C:ssä?

C käyttää puolipistettä lauseen lopun merkitsemiseen.

3. Tarvitsevatko kaikki C-kääntäjät ohjelmassa return-lauseen?

Palauttaaksesi kokonaisluvun arvon, rivi lisätään ennen funktion loppua

Useimmissa tapauksissa paluu tarkoittaa myös funktiosta poistumista.

Funktion runkolauseet suoritetaan ennen ensimmäistä return-lausetta. Jos funktion rungossa ei ole tällaista operaattoria (eli funktio ei palauta tulosta), suoritetaan kaikki operaattorit sulkeviin operaattorisulkuihin asti.

Matriisielementtien tulostamistoiminto ei palauta tulosta, ts. funktion rungossa ei ole return-lausetta.

4. Mitä tarkoitusta varten kommentteja lisätään ohjelman tekstiin?

Kommentteja syötetään toiminnon selittämiseksi

esim. Printf ('' Hei maailma''); // näytä Hello World

Voit myös kirjoittaa kommentteja painamalla / * - alussa * / - kommentin lopussa

5. Mihin parametreja käytetään kutsuttaessa funktiota?

Linkki on pohjimmiltaan saman objektin toinen nimi. Kun objekti viittauksella välitetään funktiolle, tämä objekti todella välitetään. Kun välitämme kohteen arvon mukaan, kopio siitä välitetään funktiolle.

void func_1 (int a) // ohittaa arvo

6. Edellyttääkö kaikki funktiot parametrien välitystä, kun niitä kutsutaan?

Mielestäni ei ollenkaan kaikkea, koska voimme helposti kirjoittaa päätyypin () funktion välittämättä parametreja arvolla

1. Mikä on char-tietotyyppi?

Char-tietotyyppi on kokonaislukutietotyyppi, jota käytetään edustamaan merkkejä. Eli jokainen merkki vastaa tiettyä numeroa alueella. Char-tietotyyppiä kutsutaan myös merkkitietotyypiksi, koska graafinen esitys merkit C ++:ssa on mahdollista charin ansiosta. Merkkien esittämiseksi C ++:ssa char-tietotyypille on varattu yksi tavu, yhdessä tavussa - 8 bittiä, sitten nostetaan kaksi potenssiin 8 ja saadaan arvo 256 - koodattavissa olevien merkkien määrä. Siten käyttämällä char-tietotyyppiä voit näyttää minkä tahansa 256 merkistä. Kaikki koodatut merkit esitetään muodossa ASCII-taulukko.

2. Miten symboli "3" eroaa numerosta 3?

merkki 3 eroaa kokonaisluvusta 3 siten, että merkkiä ei voi käyttää aritmeettiset operaatiot

3. Mitä eroa on vakiolla ja muuttujalla?

Ero muuttujan ja vakion välillä on melko ilmeinen: ohjelman suorituksen aikana muuttujan arvoa voidaan muuttaa (esimerkiksi määrittämällä), mutta vakion arvoa ei voi muuttaa.

4. Kuinka vakio määritellään?

C++:n vakiot ovat samanlaisia ​​kuin C:n vakiot. Vakion esittämiseksi C:ssä käytettiin vain #define preprocessor -direktiiviä:

const type VariableName = Alkuarvo;

Vakion laajuus on sama kuin säännöllisen muuttujan. Kautta avainsana const voit ilmoittaa osoittimen vakioon

5. Tukeeko C merkkijonotietotyyppiä?

C ei tue erillistä merkkijonotietotyyppiä, mutta se sallii merkkijonojen määrittämisen kahdella eri tavoilla... Ensimmäinen käyttää merkkijonoa, ja toinen käyttää osoitinta taulukon ensimmäiseen merkkiin.

6. Säilyttääkö muuttuja arvonsa koko ohjelman ajan?

ohjelman suorituksen aikana muuttujan arvoa voidaan muuttaa (esimerkiksi osoituksen avulla), mutta vakion arvoa ei

7. Kuinka voin muuttaa vakion arvoa?

1. Mitä eroja on \ n- ja \ r escape-sekvenssien välillä?

Karkeasti sanottuna \ r piti nollata merkin numero. rivinumeron jättäminen ennalleen (eli siirtää kirjoituskoneen vaunun rivin alkuun koskettamatta paperia), ja \ n päinvastoin hyppää kohtaan seuraava rivi, jättäen nykyisen tulostuspaikan ennalleen (vieritä paperia koskematta vaunuun).

2. Kuinka lainausmerkki näytetään näytöllä?

printf ("Tekstini on: \" tekstini \ "\ n");

3. Mitkä ovat printf () -parametriluettelon kaksi osaa?

Kun tulostetaan numero tai lauseke, Printf () kirjoitetaan ensin

Suluissa, lainausmerkeissä, kirjoitamme tarvitsemamme tiedot, nimittäin

% s - yksi merkki
% d - merkkinen desimaalikokonaisluku
% f - liukuluku (desimaaliluku)
% s - merkkijono (merkkijonomuuttujille)
% u - etumerkitön desimaalikokonaisluku
%% - tulosta prosenttimerkki

Esimerkiksi:

printf ("x =% 5i \ ty =% f \ tz =% 7.3f \ n", x, y, z);

4. Mitä etuja printf () -funktiolla on putoamiseen () verrattuna?

5. Mikä on muotoilmaisin?

Lukee liukulukuarvon (vain C99)

Sama kuin % koodi (vain C99)

Lukee yhden merkin

Lukee desimaalikokonaisluvun

Lukee kokonaisluvun missä tahansa muodossa (desimaali, oktaali tai heksadesimaali)

Sama kuin % e

Lukee liukulukua

Sama kuin % f-koodi (vain C99)

Lukee liukulukua

Sama kuin koodi% g

Lukee oktaaliluku

Lukee riviä

Lukee heksadesimaaliluku

Sama kuin koodi % x

Lukee osoittimen

Hyväksyy kokonaisluvun, joka vastaa tähän mennessä luettujen merkkien määrää

Lukee etumerkitön desimaalikokonaisluvun

Etsii merkistöä

Lukee prosenttimerkin

6. Miten numeerisen muuttujan arvo näytetään?

Voit näyttää sen arvon käyttämällä Printf-toiminnot()

printf ("% 7.3f \ t% 7.3f \ n", x, y);

%<количество_позиций_под_значение>.<количество_позиций_под_дробную_часть>f

%<количество_позиций_под_значение>i

Luento numero 1

Aihe: C ++ -kieleen tutustuminen. Operaattorit ja tietotyypit

Suunnitelma

3. Muuttujat ja niiden tyypit

4. Operaattorit ja matemaattiset funktiot

5. C ++ -kielellä tapahtuvan tulon / lähdön operaattorit

6. Esimerkki C ++ -ohjelmasta

1. C ++ -ohjelmointikielen kehityksen historia

C ++ -kieli, joka yhdistää C-kielen ja olioohjelmoinnin ominaisuudet, nousi yhdeksi tärkeimmistä ohjelmointikielistä 90-luvulla ja pysyy sellaisena 2000-luvun alussa. C ++ -kieli peri C-kielestä sellaiset ominaisuudet kuin tehokkuus, tiiviys, suoritusnopeus ja ohjelmien siirrettävyys. Olio-ohjelmoinnista C ++ -kieli on saanut uuden ohjelmointimetodologian, jonka avulla se pystyy selviytymään nykyaikaisten ohjelmointiongelmien lisääntyneestä monimutkaisuudesta. Ja kielen elementit, kuten parannetut mallit, tuovat C ++ -kieleen toisen uuden ohjelmointimenetelmän: geneerisen ohjelmoinnin. Tämä kolminkertainen perintö on sekä siunaus että kirous C ++:lle. Ne tekevät kielestä erittäin voimakkaan, mutta samalla monimutkaisen; mikä tarkoittaa, että ohjelmoijien on opittava lisää.

Viime vuosikymmeninä tietotekniikka on kehittynyt hämmästyttävää vauhtia. Ohjelmointikielet ovat myös käyneet läpi merkittävää kehitystä. 1970-luvulla ohjelmointikielet, kuten C ja Pascal, auttoivat aloittamaan strukturoidun ohjelmoinnin aikakauden ja toivat järjestystä alueelle, joka sitä kipeästi tarvitsi. C-kieli tarjosi ohjelmoijalle strukturoituun ohjelmointiin tarvittavat työkalut sekä kompaktien, nopeasti suoritettavien ohjelmien luomisen ja kyvyn käsitellä laitteistoa, esimerkiksi mahdollisuuden ohjata tietoliikenneportteja ja -asemia. magneettiset levyt... Nämä ominaisuudet auttoivat C-kieltä nousemaan valtavirran ohjelmointikieleksi 1980-luvulla. Samaan aikaan näiden vuosien aikana ilmestyi uusi ohjelmointimalli: olio-ohjelmointi eli OOP, joka on toteutettu sellaisilla kielillä kuin SmallTalk ja C ++.

Kieli C

Bell Laboratoriesin työntekijä Ken Thompson kehitti kielen B (bi) vuonna 1969 luodakseen muita ohjelmistojärjestelmiä. Tätä kieltä kuitenkin tulkittiin, mikä teki mahdottomaksi luoda itsenäistä suoritettavat tiedostot... Siitä huolimatta tämä kieli oli C:n edeltäjä.

1970-luvun alussa Denis Ritchie Bell Laboratoriesista kehitti UNIX-käyttöjärjestelmää. Tehdäkseen työnsä Ritchie tarvitsi ohjelmointikielen, joka oli ytimekäs ja jolla pystyi tehokkaasti hallitsemaan laitteistoa ja luomaan kompakteja, nopeasti toimivia ohjelmia. Perinteisesti tällaisia ​​ohjelmoijien tarpeita tyydytti assembly-kieli, joka liittyy läheisesti tietokoneen sisäiseen konekieleen. Assembly-kieli on kuitenkin kieli matala taso, eli hän on sidottu tiettyä tyyppiä prosessori (tai tietokone). Siksi, jos kokoonpanokielinen ohjelma on siirrettävä erityyppiselle tietokoneelle, se on kirjoitettava uudelleen toisella kokoonpanokielellä.

UNIX-käyttöjärjestelmä on suunniteltu toimimaan monenlaisissa tietokoneissa (tai ympäristöissä). Ja tämä merkitsi kielen käyttöä korkeatasoinen... Korkean tason kieli keskittyy ongelmien ratkaisemiseen, ei tiettyyn laitteistoon. Erityisohjelmat, joita kutsutaan kääntäjiksi, kääntävät korkean tason ohjelman tietyn tietokoneen sisäisellä kielellä olevaksi ohjelmaksi. Näin ollen käyttämällä erillistä kääntäjää jokaiselle alustalle sama korkean tason ohjelma voidaan suorittaa eri alustoilla. Ritchie tarvitsi kielen, joka yhdistää matalan tason kielen tehokkuuden ja laitteiston saavutettavuuden korkean tason kielen yleisempään luonteeseen ja siirrettävyyteen. Siksi B Ritchie kehitti olemassa olevan ohjelmointikielen pohjalta kielen C. Kielen tekijöiden uskotaan olevan Ritchie ja Thompson.

C-kieli, kuten useimmat aikamme valtavirran ohjelmointikielet, on proseduurillinen.

C ++ kieli

Olioteknologian kehittyessä C-standardin ominaisuudet eivät enää riittäneet. Tämän seurauksena C ++ -kieli ilmestyi.

C ++ -kieli, kuten C-kieli, on Bell Laboratoriesin aivotuote. Kirjailija Bjarney Stroustrup kehitti tämän kielen 1980-luvun alussa. Hänen omien sanojensa mukaan "C ++ -kieli on suunniteltu ensisijaisesti siksi, että minun ja ystävieni ei tarvitse ohjelmoida assembly-, C- tai useilla nykyaikaisilla korkean tason kielillä. Sen päätavoitteena oli tehdä yksittäisille ohjelmoijille helpompaa ja nautinnollisempaa kirjoittaa hyviä ohjelmia."

Stroustrup loi C ++:n C-kielestä, koska C oli ytimekäs, soveltui hyvin järjestelmäohjelmointiin, laajalti saatavilla ja liittyy läheisesti UNIX-käyttöjärjestelmään. C ++ -kielen olio-osa syntyi Simula67-mallinnuskielen vaikutuksesta. Stroustrup lisäsi OOP:n elementtejä C-kieleen muuttamatta itse C-kieltä merkittävästi.

Nimi C ++ tulee C ++ -operaattorista, joka lisää yhden muuttujan arvoon. Nimi C ++ viittaa siihen, että tämä kieli on C-kielen parannettu (++) versio.

Yleistetty ohjelmointi

Yleinen ohjelmointi on toinen ohjelmointiparadigma, jota C ++ -kieli tukee. Sillä on yhteinen tavoite OOP:n kanssa - yksinkertaistaa ohjelmakoodien uudelleenkäyttöä. Vaikka OOP keskittyy dataan, yleinen ohjelmointi keskittyy algoritmeihin. Ja sillä on eri sovellusalue. OOP on työkalu suurten projektien kehittämiseen, kun taas yleinen ohjelmointi tarjoaa työkaluja yleisten tehtävien suorittamiseen, kuten tiedon lajitteluun. Termi geneerinen tarkoittaa tietotyypistä riippumattoman ohjelmakoodin luomista. C ++:ssa on dataa eri tyyppejä- kokonaisluvut, luvut, joissa on murto-osa, symbolit, merkkijonot, käyttäjän määrittelemät monimutkaiset rakenteet, jotka koostuvat usean tyyppisestä tiedosta. Jos esimerkiksi halutaan lajitella erityyppisiä tietoja, niin kullekin tyypille luodaan yleensä oma lajittelutoiminto. Yleinen ohjelmointi laajentaa kieltä siten, että sen avulla voit kirjoittaa funktion kerran yleiselle (eli määrittelemättömälle) tietotyypille ja käyttää sitä sitten useissa todellisissa tietotyypeissä. Tämä tehdään käyttämällä C ++ -malleja. (Alkaa)

2. C ++ -ohjelman rakenne

C ++ -ohjelma on rakennettu erillisistä lohkoista, joita kutsutaan funktioiksi. Tyypillisesti ohjelma jaetaan useisiin suuriin tehtäviin, ja sitten kehitetään erilliset toiminnot näiden tehtävien suorittamiseksi.

Useimmat C ++ -ohjelmat näyttävät tältä:

osio otsikkotiedostojen yhdistämistä varten

ohjelman otsikko (funktiot)

toimintavartalo

Ohjelman otsikko

C ++ -ohjelma koostuu yhdestä tai useammasta moduulista, joita kutsutaan funktioiksi. Ohjelman suoritus alkaa funktiolla, jonka nimi on main (), joten ohjelmassa on oltava tämänniminen funktio. Jos ohjelmassa ei ole tällaista toimintoa, ei myöskään ole täydellistä ohjelmaa; kääntäjä tässä tapauksessa osoittaa, että pääfunktiota () ei ole määritetty.

Sellaisen toiminnon kuvaus suoritetaan ohjelman otsikkoosiossa ja kirjoitetaan muodossa:

On tärkeää ottaa huomioon se tosiasia, että C ++ -kääntäjä on isojen ja pienten kirjainten välinen ero. Tästä syystä eri rekisteriin kirjoitettu funktion nimi (esimerkiksi: Main () tai MAIN ()) tunnistetaan virheelliseksi.

Otsikkotiedostojen yhteysosio

Kun luodaan C ++ -ohjelmien suoritettavaa koodia, kuten C-ohjelmien tapauksessa, käytetään esiprosessoria. Se on ohjelma, joka käsittelee lähdetiedoston ennen pääkääntämistä. Sinun ei tarvitse tehdä mitään erityistä käynnistääksesi tämän esiprosessorin. Se käynnistyy automaattisesti, kun ohjelma käännetään.

Jokaisella C ++ -ohjelmalla on ensin käsky, jonka muoto on:

#sisältää

Tämä direktiivi saa esiprosessorin lisäämään iostream-tiedoston sisällön ohjelmaan. Tämä on tyypillinen esikäsittelytoiminto: tekstin lisääminen tai muuttaminen lähdekoodi ennen kokoamista.

#include-direktiivi saa iostream-tiedoston sisällön välittymään kääntäjälle sisällön mukana lähdetiedosto... Periaatteessa iostream-tiedoston sisältö korvaa #include-rivin ohjelmassa. ... Alkuperäistä tiedostoa ei muokata, ja alkuperäisestä tiedostosta ja iostream-tiedostosta luotu yhdistetty tiedosto käsitellään seuraavassa käännösvaiheessa.

Tiedostoja, kuten iostream, kutsutaan include-tiedostoiksi (koska ne sisältyvät muihin tiedostoihin) tai otsikkotiedostoiksi (koska ne sisältyvät tiedoston alkuun). C ++ -kääntäjät sisältävät monia otsikkotiedostoja, joista jokainen tukee erilaista ohjelmistotyökaluperhettä. C-otsikkotiedostoilla on perinteisesti tunniste h, mikä on helpoin tapa tunnistaa tiedostotyyppi sen nimen perusteella. Esimerkiksi otsikkotiedosto math.h tukee useita C ++ -kielen matemaattisia toimintoja.

Otsikkotiedostot sijaitsevat Turbo C ++ -kehitysympäristön Include-kansiossa. Jos ohjelmaa käynnistettäessä tulee virheilmoitus, joka osoittaa, että sisällyttää otsikkotiedosto puuttuu, sinun on määritettävä se Turbo C ++ -ympäristössä. Voit tehdä tämän suorittamalla Asetukset - Hakemistot -komennon, kirjoittamalla Sisällytä hakemistot -kenttään .. \ INCLUDE ja kirjoittamalla Kirjastohakemistot -kenttään .. \ LIB.

Toimiva runko

Toimintoteksti sisältää ohjeet tietokoneelle, ts. määrittää, mitä toiminto todellisuudessa tekee.

Toimintorunko näyttää tältä:

muuttujien kuvaus;

operaattorit;

Kuten näet, toiminnon runko on suljettu kiharaisiin aaltosulkeisiin. Muuttujien kuvausta käsitellään luennon seuraavassa osassa.

Operaattori on ohje tietokoneelle. Lähdekoodin ymmärtämiseksi kääntäjän on tiedettävä, milloin yksi lause päättyy ja toinen alkaa. Jotkut ohjelmointikielet käyttävät lauseerottimia. V Pascal yksi operaattori seuraavasta erotetaan puolipisteellä. Joissakin tapauksissa Pascalin puolipiste voidaan jättää pois, esimerkiksi lauseen jälkeen ennen sanaa END, kun näitä kahta lausetta ei itse asiassa ole erotettu toisistaan. Mutta C ++ -kielessä, samoin kuin C-kielessä, käytetään erottimen sijaan lopun ominaisuutta (osoitinta). Terminaattori on puolipiste, joka merkitsee lauseen loppua; se on enemmänkin osa lausetta kuin erottaja lauseiden välillä. Tärkeintä on, että et voi koskaan jättää väliin puolipistettä C ++:ssa.

RETURN 0 -käsky ilmaisee toiminnon päättymisen ja paluu kutsuvaan ohjelmaan. Tämä ohje voidaan jättää pois päätoiminnosta main ().

Kommentit ovat sallittuja ohjelmien teksteissä. C ++:ssa kommentit on merkitty kaksinkertaisella vinoviivalla (//). C + + -ohjelmissa voit käyttää C-kommentteja, jotka ovat / * ja * / välissä.

Koska C-kommentti ei pääty rivin lopussa olevaan merkkiin, vaan * / -merkkiin, sitä voidaan jatkaa usealle riville. Ohjelmat voivat käyttää jompaakumpaa näistä kahdesta kommentista tai molempia. (Alkaa)

Mikä tahansa C-kielellä kirjoitettu ohjelma koostuu yhdestä tai useammasta "funktiosta", jotka ovat päämoduulit, joista se on koottu.

Esimerkki yksinkertaisen C-ohjelman rakenteesta:

Yleinen muoto

Esimerkki

esikäsittelyohjeita

# sisältää

# määrittele N 10

päätoiminnon nimi

päätoiminnon rungon alku

muuttuja- ja taulukkoilmoitukset

int x = 1; char str [N];

ohjelman operaattorit

laittaa ("Tulla sisään nimi");

saa (str);

printf ("\ n% s, sinä% d vieraani!", str, x);

Päätoiminnon runko loppu

      1. Esiprosessorin käskyt

Kääntäjä sisältää ohjelman nimeltä esiprosessori... Esiprosessori toimii ennen ohjelman kääntämistä korkean tason kielestä konekielelle suorittaen sen esimuunnoksen. Jokainen esikäsittelyohje alkaa #-merkillä (numero) ja kattaa koko rivin. Ohjeita, jotka eivät mahdu yhdelle riville, voidaan jatkaa seuraavalle riville. Rivin jatkomerkki on kenoviiva (\) jatkettavalla rivillä.

Yleisimmin käytetty ohje on sisällyttää tiedosto ohjelmaan

# sisältää < nimi>

missä nimi- ohjelmatekstiin sisältyvän tiedoston nimi.

Tätä direktiiviä kutsutaan korvausdirektiivi ... Se käskee kääntäjää sijoittamaan tiedoston paikoilleen nimi... Tiedosto nimi nimeltä otsikko. Se sisältää ilmoitukset ohjelmassa käytetyistä tiedoista ja funktioista. Esimerkiksi direktiivin sisällyttäminen ohjelmaan

# sisältää < matematiikka. h>

mahdollistaa tavallisten matemaattisten funktioiden käytön ohjelmassa, kuten sin x, cos x, ln x jne. Alla on luettelo tavallisista matemaattisista funktioista.

Direktiivi

# sisältää < stdio. h>

mahdollistaa standardi I / O -toimintojen käytön ohjelmassa.

Toinen yleisesti käytetty direktiivi on määritelmädirektiivi

#define S1 S2

missä S1, S2- merkkijonot.

Esiprosessori etsii merkkijonoa ohjelman tekstistä S1 ja korvaa sen merkkijonolla S2 ... Esimerkiksi direktiivin sisällyttäminen ohjelmaan

# määritellä P printf

avulla voit kirjoittaa kirjaimen näppäimistöllä P sanan sijaan printf.

Tätä korvausta ei tehdä tekstijonojen (literaalien), merkkivakioiden ja kommenttien sisällä, ts. ohjetoiminto # määritellä ei koske lainausmerkeillä, heittomerkeillä ja kommenteissa rajattuja tekstejä.

      1. Päätoiminto

Jokaisen C-ohjelman tulee sisältää funktiomäärittely pää(), jota kutsutaan päätoiminnoksi . Tällä funktiolla ei yleensä ole parametreja, eikä se palauta arvoa. Tämän tosiasian osoittamiseksi käytetään sanaa mitätön. Siten rivi pääfunktion nimellä näyttää yleensä tältä:

void main (void)

tyhjä pää ()

      1. Muuttujat ja taulukot

Taulukko on ryhmä samantyyppisiä muuttujia, joilla on yleinen nimi. Muuttujan tai taulukon nimi on tunniste - merkkijono, joka koostuu seuraavista:

a - z, A - Z, 0 - 9, _ (alleviivaus),

ja ensimmäinen merkki ei voi olla numero. Pienet kirjaimet ja isot kirjaimet Latinalaiset aakkoset nähdään erilaisina merkeinä. C-kielen palvelusanoja ei voi käyttää muuttujan tai taulukon nimenä. C-kielen tärkeimmät palvelusanat on esitetty liitteessä.

Taulukon elementit erotetaan numeroistaan ​​(indekseistä). Indeksi voi hyväksyä vain ei-negatiivisia kokonaislukuja. Indeksi kirjoitetaan taulukon nimen jälkeen hakasulkeet... Indeksejä voi olla useita. Tässä tapauksessa jokainen indeksi kirjoitetaan omiin hakasulkeisiinsa.

C-kielessä voidaan käyttää erityyppisiä muuttujia ja taulukoita. Jokainen tietotyyppi vie tietyn määrän muistitavuja ja voi ottaa arvoja tietyltä alueelta. Tämän muistin määrä ja vastaavasti hyväksyttyjen arvojen alue C-kielen eri toteutuksissa voivat vaihdella. Tietyn tyyppisen muuttujan C-kielen tietyssä toteutuksessa käyttämien tavujen määrä muistista voidaan määrittää operaatiolla koko(tyyppi). Voit esimerkiksi määrittää kokonaislukutyyppiselle muuttujalle varatun muistin määrän seuraavasti:

k = koko (int);

printf("Tyyppimuuttujan allaintvarattu % d tavua muistia",k);

Näissä ohjeissa tarkastellaan kolmea päätyyppiä muuttujia ja taulukoita, annetaan tyypilliset varatun muistin määrän ja arvoalueen arvot (taulukko 1):

pöytä 1

Tyypin määrittäjä (avainsana)

Merkitys

Koko

muisti (tavu)

Arvoalue

Kokonaisluku

32768 . . . +32767

2147483648 . . . +2147483647

Pätevä

Kelvollinen tyyppinumero

3.4 klo 10 -38. ... ... 3.4 - 10 38

(modulo)

Merkki

128 . . . +127

Tarkastellaanpa lähemmin tyyppistä muuttujaa hiiltyä... Kuten taulukosta näkyy. 1, tyyppinen muuttuja hiiltyä vie yhden tavun muistia. Yksi tavu muistia voi tallentaa joko etumerkittömän kokonaisluvun alueelta tai etumerkillisen kokonaisluvun alueelta [–128, 127]. Tämä numero on yhden 256 merkin koodi. Annettua koodia vastaava merkki määräytyy käytetyn kooditaulukon mukaan. Siten tyyppisen muuttujan arvo hiiltyä voidaan pitää joko kokonaislukuna tai merkkinä, jonka koodi on sama kuin tämä luku.