Jazyk kópia Ak chcete vyriešiť problém v ktorejkoľvek problémovej oblasti, musíte napísať program, v ktorom by mali byť príkazy, ktoré umožňujú

  • 11.05.2019

ZÁKLADY C

Úvod

Kapitola 1. Základy C

1.1. Abeceda

1.2. Základné C konštrukty

1.3. Vstup výstup.

1.3.1. Záver

1.4. Základné dátové typy jazyka C.

1.4.1. Identifikátory.

1.4.2. Zadané konštanty

1.4.3. Premenné

1.4.3.1. Celé typy

1.4.3.2. Skutočné typy

1.4.3.3. Typy znakov

1.4.4. Reťazec dátového typu

1.4.5. Štruktúry

1.4.5.1. Polia

1.4.5.2. Nahrávky

1.4.6 Rozsah a životnosť premenných

1.5. Základné operátory

1.6. Preprocesor

1.7. Programov. Funkcie

1.8. Ukazovatele

1.9. Ukazovatele a funkcie

1.10. Súbory

1.11. Ďalšie funkcie C.

1.11.1. Konverzné funkcie

Funkcie na prevod reťazcov znakov: atoi (), atof (). 37. roky.

1.11.3. Funkcie, ktoré pracujú s reťazcami

1.12. Vlastnosti programovania v jazyku C.

1.12.1. Moduly. Multimodálne programovanie

1.12.2. Pamäťové modely

1.12.3. Programovanie v systéme DOS a Windows

1.12.4. Používanie montážneho jazyka v programoch C.

Kapitola 2. Príklady použitia jazyka C.

2.1. Triedenie

2.2. Rekurzívne algoritmy

2.3. Výzva „Hanojské veže“

Kapitola 3. Základy jazyka C ++

3.1. Rozdiely medzi C ++ a C

3.2. Objektovo orientované programovanie v C ++

3.2.1. Triedy

3.2.2. Funkcie preťaženia

3.2.3. Konštruktéri

3.2.4. Destruktory

3.2.5. Parametrizované konštruktory

3.2.6. Úvod do dedičstva

3.2.7. Virtuálne funkcie

3.2.8. Ukazovatele objektov

Kapitola 4. Základy programovania v C ++ Builder

4.1. Charakteristické pre program C ++ Builder

4.2. VCL komponenty. Vlastnosti. Vývoj. Metódy

4.2.1. Typy komponentov

4.2.2. Hierarchia tried VCL

4.3. Štruktúra súborov v C ++ Builder

4.4. Vizuálne komponenty (VCL)

4.5. Programy, správa udalostí, výnimky

4.6. Stratégia ladenia pre programy Windows

4.7. Používanie komponentov VCL pri vývoji programu

4.8. Grafické komponenty.

4.9. Multimédiá

4.10. Sprite grafika

4.11. Objektová technológia OLE2

4.12. DLL.

4.13. Vývoj vizuálnych komponentov

4.14. Úvod do programovania CGI

3.15. Programovanie databázy.

3.16. Balíčky

Záver

Literatúra

Príloha N1

Úvod

V roku 1804 vytvoril francúzsky vynálezca Joseph Marie Jacquard tkáčsky stav „ovládaný softvérom“. Na ovládanie stroja sa používali dierne štítky, ktoré boli navzájom spojené vo forme pásky. Drevené čapy „čítacieho zariadenia“ stroja podľa umiestnenia otvorov v diernom štítku určovali, ktoré nite sa majú zdvihnúť a ktoré sa majú sklopiť, aby sa získal požadovaný vzor.

V roku 1890 v Spojených štátoch vyvinul vynálezca Herman Hollerith elektromechanický počítací stroj - tabulátor ovládaný diernymi štítkami, ktorý sa použil na zostavenie tabuliek s výsledkami sčítania USA. Z firmy Hollerith v oblasti tabulátorov sa neskôr stala International Business Machines Corporation (IBM).

V roku 1936 vydal Alan Turing, dvadsaťpäťročný študent na univerzite v Cambridge, článok „O vypočítateľných číslach“, ktorý považoval hypotetické zariadenie („Turingov stroj“) vhodné na riešenie akýchkoľvek riešiteľných matematických alebo logických problémov - prototyp programovateľného počítača.

V roku 1941 nemecký inžinier Konrad Zuse skonštruoval funkčný počítač Z3, ktorý používal binárny číselný systém. Programy sa nahrávali na diernu pásku.

V roku 1945 skonštruovali fyzik John Mauchly a inžinier Prosper Eckert na univerzite v Pensylvánii (USA) celoelektronický stroj Eniak. Pre nastavenie programu bolo potrebné manuálne nastaviť tisíce spínačov a zapojiť stovky zástrčiek do zásuviek kontaktného panelu.

1. júna 1945 poslal maďarsko-americký matematik John von Neumann správu Predbežná správa o stroji Edvak, ktorá obsahovala koncepciu ukladania počítačových pokynov do vlastnej vnútornej pamäte.

21. júna 1948 bol na univerzite v Manchestri (Veľká Británia) na stroji Mark-1 vykonaný prvý program na svete uložený v pamäti stroja - hľadanie najväčšieho faktora z daného čísla.

V roku 1949 bol pod vedením Maurice Wilkesa vytvorený počítač Edsack. Konštruktéri spoločnosti Edsak zaviedli systém mnemotechnickej notácie, kde každá strojová inštrukcia bola reprezentovaná jedným veľkým písmenom, a automatizovali ladenie podprogramov na konkrétne miesto v pamäti. Maurice Wilkes nazval mnemotechnickú schému a knižnicu podprogramov montážnym systémom - odtiaľ pochádza slovo „assembler“.

V roku 1949 vo Philadelphii (USA) bol pod vedením Johna Mauchlyho vytvorený „Krátky kód“ - prvý primitívny tlmočník programovacieho jazyka.

V roku 1951 vyvinula americká programátorka Grace Hopper prvý vysielací program vo firme Remington Rand. Hopper to nazval kompilátor (kompilátor).

V roku 1957 sa na 20. poschodí ústredia IBM na Madison Avenue v New Yorku narodil FORmula TRANslation (FORmula TRANslation). Vývojový tím viedol 30-ročný matematik John Backus. Fortran je prvý z „skutočných“ jazykov na vysokej úrovni.

V roku 1972 vyvinul Dennis Ritchie (31), systémový programátor v Bell Labs, programovací jazyk C.

V roku 1984 založil francúzsky matematik a saxofonista Philippe Kahn spoločnosť Borland International.

C bol pôvodne navrhnutý ako programovací jazyk pre operačný systém Unix.

Čoskoro sa to začalo rozširovať na cvičiacich programátorov. Na konci 70. rokov boli vyvinuté prekladače C pre mikropočítač pre operačný systém CP / M.

Po objavení sa IBM PC sa začali objavovať kompilátory typu C (pre tento počítač ich je v súčasnosti viac ako 20).

V roku 1983 vytvoril Americký normalizačný inštitút (ANSI) technický výbor X3J11 s cieľom vytvoriť štandard v jazyku C. Jazyk C ++ spoločnosti Borland, ktorý sa objavil na trhu, sa podriaďuje väčšine požiadaviek normy.

V jadre je C funkčný jazyk. Programovanie v jazyku C sa dosahuje písaním funkcií a volaním funkcií knižnice. Väčšina funkcií vracia určitú hodnotu, ktorú je možné použiť v iných operátoroch.

Z mnohých výhod jazyka C treba spomenúť tie hlavné:


Všestrannosť (používa sa takmer na všetkých existujúcich počítačoch);

Kompaktnosť a všestrannosť kódu;

Rýchlosť vykonávania programu;

Jazyková flexibilita;

Vysoká štruktúrovanosť.


Kapitola 1. Základy C

1.1. Abeceda

Abeceda jazykov sa skladá z nasledujúcich znakov:

Veľké a malé latinské písmená A-Z, a-z a znak podčiarknutia. Číslice od 0 do 9. Špeciálne znaky + - * / \u003d\u003e< . ; , : { } () # $.

Znaky medzera, karta, posun riadku, návrat vozíka sa nazývajú medzery.

Program C ++ je postupnosť znakov ACSII, ktoré predstavujú jeho zdrojový text.

1.2. Základné C konštrukty

Zvážte jednoduchý program na tlač frázy „Dobrý deň z počítača“ na obrazovku

#include

// program

printf ("Pozdravy z počítača \\ n");

Zvážte štruktúru programu

Príkaz #include obsahuje súbor stdio.h v našom programe. Súbor obsahuje informácie o I / O funkciách.

Súbor s názvom stdio.h obsahuje informácie o I / O.

Symbol # označuje, že pred prekladom programu je do neho potrebné zahrnúť funkcie zo súboru stdio.h - ide o takzvané predspracovanie, ktoré pred kompiláciou vykoná určité predspracovanie programového textu.

Hlavný riadok () obsahuje názov funkcie, ktorou program vždy začína. Prázdne zátvorky naznačujú, že sa jedná o funkciu, ktorá však nemá žiadne parametre.

Za znakmi // nasledujú komentáre (pre jeden riadok) (symboly medzi / * a * / sa tiež nazývajú komentáre).

Skladané zložené zátvorky () označujú začiatok a koniec tela programu alebo funkcie. Používajú sa tiež na kombinovanie viacerých programových príkazov do bloku.

Riadok printf ("Pozdravy z počítača \\ n") obsahuje štandardnú funkciu tlače C. Reťazec znakov uzavretých v zátvorkách (argument) je informácia odovzdaná do printf () z našej hlavnej funkcie main (). Po dokončení funkcie sa riadenie vráti späť k pôvodnému programu. Znak \\ n označuje po tlači posun riadku na novom riadku.

Uvažujme o nasledujúcom príklade - napíšeme program na prevod metrov na centimetre.

#include

#include

printf ("M? \\ n");

printf ("% d M obsahuje% d cm \\ n", I, J);

Tento program definuje dve celočíselné premenné I a J.

Bola zavedená funkcia skenovania ("% d", & I); ktorý umožňuje zadať desatinné číslo z klávesnice a priradiť hodnotu k premennej I, potom príkazom J \u003d 100 * I; prebieha výpočet 4.

Nasledujúci riadok printf ("% d M obsahuje% d cm \\ n", I, J); vypíše frázu. Prvý% d (d je celočíselná premenná) je nahradený hodnotou I, druhý% d je nahradený hodnotou J.

Funkcia getch () vám umožňuje zmraziť obraz na obrazovke a na dokončenie úlohy je potrebný akýkoľvek znak.

Uvažujme ešte o jednom príklade. Poďme napísať funkciu a zavolajme ju z nášho programu.

#include

#include

printf ("Volal si mi? \\ n");

printf ("Volám funkciu supervízora. \\ n");

printf ("Áno. Zistite, ktorý študent spí, a prebuďte ich. \\ n");

Základy a jemnosti programovacieho jazyka C ++. Praktické úlohy a testy. Chcete sa naučiť programovať? Potom ste na správnom mieste. Nezáleží na tom, či máte skúsenosti s programovaním alebo nie, tieto výukové programy vám pomôžu začať budovať, kompilovať a ladiť programy C ++ v rôznych vývojových prostrediach: Visual Studio, Code :: Blocks, Xcode, Eclipse a ďalšie IDE. Veľa príkladov a podrobných vysvetlení. Perfektné pre začiatočníkov (atrapy) aj pre pokročilejších. Všetko je vysvetlené od nuly po veľmi podrobné informácie. Tieto (200+) výukové programy vám poskytnú dobrý základ v porozumení programovania nielen v C ++, ale aj v iných jazykoch. A je to úplne zadarmo!

Všetko, čo potrebujete, je túžba, túžba učiť sa. Všetko ostatné, čo tu nájdete.

Za repost +20 karmy a moje poďakovanie!

Kapitola # 0. Úvod. Začiatok práce

Kapitola 1. Základy jazyka C ++

Kapitola 2. Premenné a základné dátové typy v C ++

Kapitola # 3. Operátory v C ++

Kapitola # 4. Rozsah a ďalšie typy premenných v C ++

Oddelenie: Automatizácia a informačné technológie

ZÁKLADY C

Úvod

Kapitola 1. Základy C

1.1. Abeceda

1.2. Základné C konštrukty

1.3. Vstup výstup.

1.3.1. Záver

1.4. Základné dátové typy jazyka C.

1.4.1. Identifikátory.

1.4.2. Zadané konštanty

1.4.3. Premenné

1.4.3.1. Celé typy

1.4.3.2. Skutočné typy

1.4.3.3. Typy znakov

1.4.4. Reťazec dátového typu

1.4.5. Štruktúry

1.4.5.1. Polia

1.4.5.2. Nahrávky

1.4.6 Rozsah a životnosť premenných

1.5. Základné operátory

1.6. Preprocesor

1.7. Programov. Funkcie

1.8. Ukazovatele

1.9. Ukazovatele a funkcie

1.10. Súbory

1.11. Ďalšie funkcie C.

1.11.1. Konverzné funkcie

Funkcie na prevod reťazcov znakov: atoi (), atof (). 37. roky.

1.11.3. Funkcie, ktoré pracujú s reťazcami

1.12. Vlastnosti programovania v jazyku C.

1.12.1. Moduly. Multimodálne programovanie

1.12.2. Pamäťové modely

1.12.3. Programovanie v systéme DOS a Windows

1.12.4. Používanie montážneho jazyka v programoch C.

Kapitola 2. Príklady použitia jazyka C.

2.1. Triedenie

2.2. Rekurzívne algoritmy

2.3. Výzva „Hanojské veže“

Kapitola 3. Základy jazyka C ++

3.1. Rozdiely medzi C ++ a C

3.2. Objektovo orientované programovanie v C ++

3.2.1. Triedy

3.2.2. Funkcie preťaženia

3.2.3. Konštruktéri

3.2.4. Destruktory

3.2.5. Parametrizované konštruktory

3.2.6. Úvod do dedičstva

3.2.7. Virtuálne funkcie

3.2.8. Ukazovatele objektov

Kapitola 4. Základy programovania v C ++ Builder

4.1. Charakteristické pre program C ++ Builder

4.2. VCL komponenty. Vlastnosti. Vývoj. Metódy

4.2.1. Typy komponentov

4.2.2. Hierarchia tried VCL

4.3. Štruktúra súborov v C ++ Builder

4.4. Vizuálne komponenty (VCL)

4.5. Programy, správa udalostí, výnimky

4.6. Stratégia ladenia pre programy Windows

4.7. Používanie komponentov VCL pri vývoji programu

4.8. Grafické komponenty.

4.9. Multimédiá

4.10. Sprite grafika

4.11. Objektová technológia OLE2

4.12. DLL.

4.13. Vývoj vizuálnych komponentov

4.14. Úvod do programovania CGI

3.15. Programovanie databázy.

3.16. Balíčky

Záver

Literatúra

Príloha N1


Úvod

V roku 1804 vytvoril francúzsky vynálezca Joseph Marie Jacquard tkáčsky stav „ovládaný softvérom“. Na ovládanie stroja sa používali dierne štítky, ktoré boli navzájom spojené vo forme pásky. Drevené čapy „čítacieho zariadenia“ stroja podľa umiestnenia otvorov v diernej karte určovali, ktoré nite sa majú zdvihnúť a ktoré sa majú sklopiť, aby sa získal požadovaný vzor.

V roku 1890 v Spojených štátoch vyvinul vynálezca Herman Hollerith elektromechanický počítací stroj - tabulátor ovládaný diernymi štítkami, ktorý sa použil na zostavenie tabuliek s výsledkami sčítania USA. Z firmy Hollerith v oblasti tabulátorov sa neskôr stala International Business Machines Corporation (IBM).

V roku 1936 Alan Turing, 25-ročný študent na Cambridgeskej univerzite, publikoval článok „O vypočítateľných číslach“, ktorý považoval hypotetické zariadenie („Turingov stroj“) vhodné na riešenie akýchkoľvek riešiteľných matematických alebo logických problémov - prototyp programovateľného počítača.

V roku 1941 nemecký inžinier Konrad Zuse skonštruoval funkčný počítač Z3, ktorý používal binárny číselný systém. Programy sa nahrávali na diernu pásku.

V roku 1945 skonštruovali fyzik John Mauchly a inžinier Prosper Eckert na univerzite v Pensylvánii (USA) úplne elektronický stroj Eniak na Graduate School of Technology. Pre nastavenie programu bolo potrebné manuálne nastaviť tisíce spínačov a zapojiť stovky zástrčiek do zásuviek kontaktného panelu.

1. júna 1945 poslal maďarsko-americký matematik John von Neumann správu Predbežná správa o stroji Edvak, ktorá obsahovala koncepciu ukladania počítačových pokynov do vlastnej vnútornej pamäte.

21. júna 1948 bol na univerzite v Manchestri (Veľká Británia) na stroji Mark-1 vykonaný prvý program na svete uložený v pamäti stroja - hľadanie najväčšieho faktora z daného čísla.

V roku 1949 bol pod vedením Maurice Wilkesa vytvorený počítač Edsack. Konštruktéri spoločnosti Edsak zaviedli systém mnemotechnickej notácie, kde každá strojová inštrukcia bola reprezentovaná jedným veľkým písmenom, a automatizovali ladenie podprogramov na konkrétne miesto v pamäti. Maurice Wilkes nazval mnemotechnickú schému a knižnicu podprogramov montážnym systémom - odtiaľ pochádza aj slovo „assembler“.

V roku 1949 vo Philadelphii (USA) bol pod vedením Johna Mauchlyho vytvorený „Krátky kód“ - prvý primitívny tlmočník programovacieho jazyka.

V roku 1951 vyvinula americká programátorka Grace Hopper prvý vysielací program vo firme Remington Rand. Hopper to nazval kompilátor (kompilátor).

V roku 1957 sa na 20. poschodí ústredia IBM na Madison Avenue v New Yorku narodil FORmula TRANslation (FORmula TRANslation). Vývojový tím viedol 30-ročný matematik John Backus. Fortran je prvý z „skutočných“ jazykov na vysokej úrovni.

V roku 1972 vyvinul Dennis Ritchie (31), systémový programátor v laboratóriách Bell Labs, programovací jazyk C.

V roku 1984 založil francúzsky matematik a saxofonista Philippe Kahn spoločnosť Borland International.

C bol pôvodne navrhnutý ako programovací jazyk pre operačný systém Unix.

Čoskoro sa začal distribuovať praktizujúcim programátorom. Na konci 70. rokov boli vyvinuté prekladače C pre mikropočítač pre operačný systém CP / M.

Po objavení sa IBM PC sa začali objavovať kompilátory typu C (pre tento počítač ich je v súčasnosti viac ako 20).

V roku 1983 vytvoril Americký normalizačný inštitút (ANSI) technický výbor X3J11 s cieľom vytvoriť štandard v jazyku C. Jazyk C ++ spoločnosti Borland, ktorý sa objavil na trhu, sa podriaďuje väčšine požiadaviek normy.

V jadre je C funkčný jazyk. Programovanie v jazyku C sa dosahuje písaním funkcií a volaním funkcií knižnice. Väčšina funkcií vracia určitú hodnotu, ktorú je možné použiť v iných operátoroch.

Medzi mnohými výhodami jazyka C je potrebné spomenúť nasledujúce:


Všestrannosť (používa sa takmer na všetkých existujúcich počítačoch);

Kompaktnosť a všestrannosť kódu;

Rýchlosť vykonávania programu;

Jazyková flexibilita;

Vysoká štruktúrovanosť.


Kapitola 1. Základy C

1.1. Abeceda

Abeceda jazykov sa skladá z nasledujúcich znakov:

Veľké a malé latinské písmená A-Z, a-z a znak podčiarknutia. Číslice od 0 do 9. Špeciálne znaky + - * / \u003d\u003e

Znaky medzera, karta, posun riadku, návrat vozíka sa nazývajú medzery.

Program C ++ je postupnosť znakov ACSII, ktoré predstavujú jeho zdrojový text.

1.2. Základné C konštrukty

Zvážte jednoduchý program na tlač frázy „Dobrý deň z počítača“ na obrazovku

// program

printf ("Pozdrav z počítača");

Zvážte štruktúru programu

Program C.
# Prípravné smernice
Hlavná
Operátorov
Funkcia 1 ()
Operátorov
Funkcia n ()
Operátorov
Popisy
Úlohy
Funkcie
Zvládanie
Prázdny

Príkaz #include obsahuje v našom programe súbor stdio.h. Súbor obsahuje informácie o I / O funkciách.

Súbor s názvom stdio.h obsahuje informácie o I / O.

Symbol # označuje, že pred prekladom programu je do neho potrebné zahrnúť funkcie zo súboru stdio.h - jedná sa o takzvané predspracovanie, ktoré pred kompiláciou vykoná určité predspracovanie programového textu.

Hlavný riadok () obsahuje názov funkcie, ktorou program vždy začína. Prázdne zátvorky naznačujú, že sa jedná o funkciu, ktorá však nemá žiadne parametre.

Za znakmi // nasledujú komentáre (pre jeden riadok) (symboly medzi / * a * / sa tiež nazývajú komentáre).

Skladané zložené zátvorky () označujú začiatok a koniec tela programu alebo funkcie. Používajú sa tiež na kombinovanie viacerých programových príkazov do bloku.

Riadok printf („Dobrý deň z počítača“) obsahuje štandardnú funkciu tlače C. Reťazec znakov uzavretý v zátvorkách (argument) je informácia odovzdaná do printf () z našej hlavnej funkcie main (). Po dokončení funkcie sa riadenie vráti späť k pôvodnému programu. Symbol - označuje posun riadku na novom riadku po vytlačení.

Uvažujme o nasledujúcom príklade - napíšeme program na prevod metrov na centimetre.

printf ("% d M obsahuje% d cm", I, J);

Tento program definuje dve celočíselné premenné I a J.

Bola zavedená funkcia skenovania ("% d", & I); ktorý umožňuje zadať desatinné číslo z klávesnice a priradiť hodnotu k premennej I, potom príkazom J \u003d 100 * I; prebieha výpočet 4.

Nasledujúci riadok printf ("% d M obsahuje% d cm", I, J); vypíše frázu. Prvý% d (d je celočíselná premenná) je nahradený hodnotou I, druhý% d je nahradený hodnotou J.

Funkcia getch () vám umožňuje zmraziť obraz na obrazovke a na dokončenie úlohy je potrebný akýkoľvek znak.

Uvažujme ešte o jednom príklade. Poďme napísať funkciu a zavolajme ju z nášho programu.

printf ("Volal si mi?");

printf („Volám funkciu supervízora.“);

printf ("Áno. Zistite, ktorý študent spí, a zobuďte ich.");

Najskôr popíšeme funkciu supervízor () a potom ju zavoláme v hlavnom programe príkazom supervízor () ;. Vo výsledku dostaneme dialóg:

Volám funkciu supervízora.

Volal si mi?

Áno. Zistite, ktorý študent spí, a zobuďte ich.

1,3 I / O
Na vyriešenie problému v ktorejkoľvek problémovej oblasti je potrebné napísať program, v ktorom by mali byť príkazy, ktoré umožňujú:
- prideliť priestor na ukladanie údajov;

Zadajte počiatočné údaje;

Spracujte počiatočné údaje podľa algoritmu;

Výstup na displej.

C obsahuje funkcie potrebné na vykonávanie týchto akcií. Všetky funkcie zvážime na príkladoch a začneme funkciami vstupu-výstupu.

1.3.1. Záver

Výstup sa vykonáva na obrazovku, tlačiareň, pevný disk (diskety), port. Zvážte funkcie displeja.

Na tento účel slúži funkcia printf. Formát: printf ([, arg1], ...).

Formát je reťazec s dvoma úvodzovkami, ktorý sa vytlačí na obrazovku. Pred tlačou printf nahradí všetky objekty v reťazci podľa špecifikácií argumentu. Napríklad printf ("% d M obsahuje% d cm", I, J); % D vo formátovacom reťazci je špecifikácia argumentu.

Špecifikácie argumentov sa začínajú znakom percenta (%) a jedným písmenom predstavujúcim dátový typ.

% D použité v špecifikácii naznačuje, že sa očakáva nejaké celé číslo. Tu uvádzam niekoľko ďalších bežne používaných špecifikácií formátu:

-% d celé číslo;

-% u celé číslo bez znamienka;

-% ld je dlhé celé číslo;

- hodnota ukazovateľa% p;

-% f číslo s pohyblivou rádovou čiarkou;

-% e číslo s pohyblivou rádovou čiarkou v exponenciálnej podobe;

- znak% c;

- reťazec% s;

-% x celé číslo v hexadecimálnom formáte.

Môžete nastaviť šírku poľa, napríklad% 6d - šírka poľa 6.

Hodnota sa vytlačí posunutá doprava (úvodné medzery), takže celková šírka poľa je 6.

Pre formát reálnych čísel môžete určiť zlomkovú časť, napríklad% 8.4f - pole so šírkou 8, desatinná časť 4.

Na koniec formátovacieho reťazca môžete vložiť znaky:

riadkový preklad ;.

f (preklad formátu alebo vymazanie obrazovky)

(karta)

xhhh (vložte znak ASCII hhh, kde hhh obsahuje 1 až 3 hexadecimálne číslice)

Na výstup môžete použiť funkcie: put a putchar.

Funkcia put vytlačí reťazec na obrazovku. Napríklad:

kladie („ahoj študent“);

Funkcia putchar vytlačí na obrazovku jeden znak.

1.3.2 Vstup

Vstup C sa vykonáva hlavne z klávesnice, zo súboru a z portu.

Scanf je podobný printf. Jeho formát je scanf ([, arg1], ...). Scanf používa rovnaké špecifikátory formátu ako printf. Je potrebné poznamenať, že scanf má jednu zvláštnosť: argumenty nasledujúce za formátovacím reťazcom musia byť adresy, nie hodnoty (to sa netýka premenných znakov). Na začiatku príkladov sme videli, že pri zadávaní celého čísla bola funkcia napísaná takto:

scanf ("% d", & a);

Operácia & -adresa, ktorá odovzdáva adresy skenovania.

Pri zadávaní viacerých premenných oddelených čiarkami môžete použiť čiarku vo vnútri formátu. Príklad:

scanf ("% d,% d", & a, b);

Teraz môžete zadať, napríklad 23.56.

Pri zadávaní reťazca znakov z niekoľkých slov sa vyskytujú ťažkosti - budú sa zadávať iba údaje až po prvé miesto. Na vyriešenie tohto problému existuje funkcia get.

printf ("Ako sa voláš:");

printf ("Ahoj% s", meno);

Funkcia get číta všetko, čo je zadané, kým nestlačíte Enter.

V C ++ sa I / O dajú vykonávať nielen pomocou funkcií, ale aj pomocou operácií. Prevádzka výstupu\u003e.

Formát displeja: cout

Vstupný formát z klávesnice: cin

Pri použití I / O operácií musíte do svojho programu zahrnúť súbor iostream.h.

Je možný vstup / výstup viacerých hodnôt (oddelených medzerou).


1.4 Základné dátové typy jazyka C.

1.4.1 Identifikátory

Názvy, ktoré sú priradené konštantám, dátovým typom, premenným a funkciám, sa nazývajú identifikátory. C má nasledujúce pravidlá pre vytváranie identifikátorov: musí začínať písmenom (a ... z, A ... Z) alebo podčiarkovníkom (_), zvyšok identifikátora musí pozostávať z písmen, podčiarknutí a / alebo čísel (0 ... 9) ).

1.4.2 Zadané konštanty

V C sa používajú konštanty, čo je názov priradený k hodnote. Identifikátor mena môže mať ľubovoľnú dĺžku, ale prvých 32 znakov je rozpoznaných. Identifikátor začína písmenom latinky alebo znakom podčiarknutia, nasledujúcimi znakmi môžu byť čísla, písmená latinky a podčiarkovníky.

Kompilátor C považuje veľké a malé písmená za odlišné znaky.

Zadané konštanty sú: celé číslo, pohyblivá čiarka, konštanty znakov a reťazce znakov.

Konštanty sú reprezentované ako celé desatinné čísla, osmičkové alebo hexadecimálne čísla.

Popis konštánt začína kľúčovým slovom const, potom typom a hodnotou, napríklad const int Nalog \u003d 2.

1.4.3 Premenné

Premenná je pomenovaná hodnota, ktorej hodnota sa môže meniť počas vykonávania programu. Premenná je špecifického typu.


1.4.3.1 Typy celých čísel

Celé čísla sú reprezentované celočíselnými typmi. Celé číslo je všeobecný typ, ktorého zastúpenie závisí od typu operačného systému a procesora.

Zvážme hlavné typy celých čísel:

Pozrime sa na jednoduchý príklad.

const int Nalog \u003d 2;

Symma \u003d Stavka * Nalog;

printf ("Symma naloga \u003d% d", Symma);

Príklad deklaruje jednu konštantu a dve premenné celočíselného typu.

1.4.3.2 Reálne typy

Na ukladanie čísel so zlomkovou časťou sa používa skutočný typ.

V C ++ existujú nasledujúce základné typy reálnych čísel:

Uvažujme o nasledujúcom príklade.

const float Nalog \u003d 0,7;

Symma \u003d Stavka * Nalog;

printf ("Symma naloga \u003d% 8,4f", Symma);

V tomto príklade je skutočný typ reprezentovaný premennou Symma.

1.4.3.3 Typy znakov

Typ znaku -Char je navrhnutý tak, aby pojal jeden znak, takže jeho veľkosť je jeden bajt.

Uvažujme príklad:

printf ("A \u003d% c B \u003d% c", A, B);

printf ("C \u003d% c", C);

V tomto príklade je premennej A priradená hodnota „D ^, premennej B je priradená hodnota“! ^ A premennej C je priradená hodnota znaku „* ^.

1.4.4 Reťazec dátového typu

Na reprezentáciu znakového reťazca v jazyku C sa používajú polia typu char.

Pozrime sa na príklad.

char A; / * dĺžka môže byť až 256 znakov * /

strcpy (A, "IBM PC Pentium");

strcpy (B, „Windows 95“);

strcpy (C, ""); / * vymazať premennú * / printf ("A \u003d% s", A);

printf ("B \u003d% s", B);

printf ("C \u003d% s", C);

V tomto príklade existujú tri reťazce znakov A, B, C.

Príkazom napríklad strcpy (A, "IBM PC Pentium"); riadok A obsahuje text IBM PC Pentium.

Okrem tohto príkladu môžete na definovanie reťazcov použiť ukazovateľ znakov. Príklad:

msg \u003d "Dobrý deň, študent";

Hviezdička pred msg znamená, že msg je ukazovateľ na znak - t.j. msg môže uložiť adresu symbolu. Toto však neprideľuje pamäť symbolom.

Príkaz msg \u003d "Dobrý deň, študent" priradí začiatočnú adresu tohto riadku - (adresa znaku P) premennej msg. Puts (správa) vytlačí znaky, kým nenarazí na nulový znak, ktorý označuje koniec riadku.

1.4.5 Štruktúry

Sada súvisiacich údajov umiestnených v pamäti je štruktúra. V C sa berú do úvahy tieto štruktúry: polia, záznamy a ich kombinácie.

1.4.5.1 Polia

Pomenovaná zbierka homogénnych údajov sa nazýva pole. Každý prvok poľa je uložený v samostatnej oblasti pamäte a má svoje vlastné číslo (začínajúce od nuly).

Pozrime sa na príklad.

B \u003d 10; B \u003d 20; B \u003d 30;

printf ("B \u003d% d", B);

printf ("B \u003d% d", B);

printf ("B \u003d% d", B);

printf ("B \u003d% d", B);

V uvažovanom príklade je definované pole B pozostávajúce zo štyroch celočíselných prvkov. S prvkami poľa možno manipulovať ako s bežnými premennými.

Existujú viacrozmerné polia, napríklad:

Pole A je dvojrozmerné pole (pozostáva zo štyroch riadkov a troch stĺpcov):

Pole A je štvorrozmerné pole.

Uvažujme o príklade práce s dvojrozmerným poľom.

B \u003d 1,2; B \u003d 1,3;

printf ("B \u003d% 4,2f B \u003d% 4,2f B \u003d% 4,2f", B, B, B);

printf ("B \u003d% 4,2f B \u003d% 4,2f B \u003d% 4,2f", B, B, B);

1.4.5.2 Záznamy

Na rozdiel od polí vám záznam umožňuje ukladať údaje rôznych typov. Zápis sa začína po kľúčovom slove struct. Zvážte príklad - záznam uchováva informácie o študentoch: priezvisko, rok narodenia, číslo skupiny.

typedef struct A (

strcpy (B.Fio, „Ivanow G.I.“); B. Boh \u003d 1977;

printf ("Fio \u003d% s", B.Fio);

printf ("Boh \u003d% d", B. Boh);

V uvažovanom príklade má záznam nasledujúcu štruktúru:

štruktúra A (/ * názov záznamu A) * /

char Fio; / * 1 záznamové pole * /

v Bohu; / * 2 záznamové pole * /

Kláves typedef dáva štruktúram názov.

Príklad je možné prepísať nasledujúcim spôsobom.

typedef struct (

strcpy (B.Fio, „Ivanow G.I.“);

printf ("Fio \u003d% s", B.Fio);

printf ("Boh \u003d% d", B. Boh);

printf ("Gruppa \u003d% d", B.Gruppa);

V príklade sme uvažovali o jednom zázname, ale v skutočnosti nemôže byť v skupine jeden študent, takže môžeme skombinovať pole a záznam a vytvoriť pole záznamov. Pozrime sa na príklad.

typedef struct A (

WGruppa.God \u003d 1977;

WGruppa.Gruppa \u003d 384;

WGruppa.God \u003d 1978;

WGruppa.Gruppa \u003d 384;

printf ("Fio2 \u003d% s", WGruppa.Fio);

printf ("God2 \u003d% d", WGruppa.God);

printf ("Gruppa2 \u003d% d", WGruppa.Gruppa);

Spočiatku sme definovali štruktúru A a potom sme ju použili pri deklarovaní štruktúry WGruppa ako poľa 12 položiek štruktúry B.

Teraz pre adresovanie musíme určiť číslo prvku poľa a názov poľa.

Existujú možnosti, keď jeden záznam obsahuje iný záznam, napríklad pridanie adresy k záznamu študenta, o ktorom sme hovorili vyššie. Príklad.

typedef struct Adresa (

char Street_Nd_Kw; );

typedef struct A (

Adresa D_addr; );

strcpy (WGruppa.Fio, "Ivanow G.I.");

WGruppa.God \u003d 1977;

WGruppa.Gruppa \u003d 384;

strcpy (WGruppa.D_addr.City, "Shadrinsk"); strcpy (WGruppa.D_addr.Street_Nd_Kw, "Lenina 10 kw.1");

strcpy (WGruppa.Fio, "Petrow R.G.");

WGruppa.God \u003d 1978;

WGruppa.Gruppa \u003d 384;

strcpy (WGruppa.D_addr.City, "Kataisk"); strcpy (WGruppa.D_addr.Street_Nd_Kw, "Akulowa 1 kw.2");

printf ("Fio1 \u003d% s", WGruppa.Fio);

printf ("God1 \u003d% d", WGruppa.God);

printf ("Gruppa1 \u003d% d", WGruppa.Gruppa);

printf ("Mesto \u003d% s", WGruppa.D_addr.City);

printf ("Fio2 \u003d% s", WGruppa.Fio);

printf ("God2 \u003d% d", WGruppa.God);

printf ("Gruppa2 \u003d% d", WGruppa.Gruppa);

printf ("Mesto \u003d% s", WGruppa.D_addr.City);

printf ("Ulica \u003d% s", WGruppa.D_addr.Street_Nd_Kw);

1.4.6 Rozsah a životnosť premenných

Podľa ich rozsahu môžeme premenné C rozdeliť do troch skupín:

1. Premenná definovaná vo všetkých moduloch (súboroch) programu. Takáto premenná je definovaná pomocou kľúčového slova extern. Táto premenná bude viditeľná vo všetkých bodoch programu. Takáto premenná je globálna pre celý program.

2. Premenná definovaná v jednom z modulov (súboru) pred textami všetkých funkcií. Takáto premenná bude pre tento modul globálna, t.j. je možné použiť vo všetkých bodoch tohto modulu.

3. Premenná definovaná v danej funkcii. Túto premennú je možné použiť iba v rámci tejto funkcie. Túto premennú budeme nazývať lokálna.

Podľa ich životnosti možno všetky premenné rozdeliť do dvoch skupín:

1. Premenné žijúce počas práce programu.

2. Premenné zničené po ukončení funkcie.

Globálne premenné sú z hľadiska životnosti prvého typu. Lokálne premenné sa zničia po ukončení funkcie. V prípade, že chceme urobiť lokálnu premennú s dlhou životnosťou, použije sa slovo static. Lokálne premenné tohto typu žijú od okamihu prvého volania funkcie do konca programu. Z hľadiska viditeľnosti však tieto premenné zostávajú lokálne. Statický int i \u003d 0; Znamená, že premenná sa inicializuje na nulu pri prvom vstupe do funkcie, ale pri ďalších vstupoch do funkcie sa jej hodnota zachová v závislosti od akcií, ktoré sa na nej vykonali.

Moderné kompilátory jazyka C prekladajú program s cieľom optimalizovať jeho výkon. Jedným z optimalizačných nástrojov je ukladanie premenných, pokiaľ je to možné, do registrov namiesto do pamäťových miest. V prípadoch, keď chcete zakázať ukladanie danej premennej do registrov, použije sa volatilný modifikátor. Takáto potreba môže vzniknúť, ak sa predpokladá, že premenná sa môže meniť v dôsledku vonkajších vplyvov (napríklad prerušenia).

A posledná poznámka. Dynamicky alokovaná pamäť, kdekoľvek ju pridelíte, žije, kým ju neuvoľníte.

1.5 Základné operátory

Operácia pridelenia.

Najbežnejšou operáciou je priradenie, napríklad c \u003d a / b. V C je priradenie označené znakom rovnosti \u003d, čím je hodnota napravo od znaku rovnosti priradená premennej vľavo. Je možné použiť aj postupné priradenia, napríklad: c \u003d a \u003d b.

Aritmetické operátory.

V skupine C sa vykonávajú tieto skupiny aritmetických operácií:

1. Binárne: sčítanie (+), odčítanie (-), násobenie (*), delenie (/), celočíselné delenie (%) (pre typ int, získanie zvyšku).

2. Unárne: unárne plus (+), unárne mínus (-), adresovanie (&), nepriame adresovanie (*), určenie veľkosti typu pamäte (sizeof).

3. Logické: a (&&) alebo (!!), nie (! \u003d).

4. Vzťahy:

a) sa rovná (\u003d\u003d), nerovná sa (!\u003e);

b) menšie ako (), menšie alebo rovnaké ako (\u003d);

5. Prírastky (++) a prírastky (-). Napríklad i ++ znamená i \u003d i + 1 a i-- znamená i \u003d i-1.

6. Bitové operácie - umožňuje vám vykonávať operácie s bitmi.

7. Kombinované operácie. Turbo-C má skratky pre zápis výrazov obsahujúcich početné operácie:

a \u003d a + b; sa redukuje na a + \u003d b;

a \u003d a - b; sa redukuje na a - \u003d b;

a \u003d a * b; skrátené na a * \u003d b;

a \u003d a / b; sa redukuje na a / \u003d b;

a \u003d a% b; je znížené na% \u003d b;

8. Adresné operácie:

1. Operácia určenia adresy (&) 2. Operácia určenia adresy (*).

Operácia & vráti adresu danej premennej; ak je X premenná int, potom & X je adresa (umiestnenie v pamäti) tejto premennej. Na druhej strane, ak je msg ukazovateľ na char, potom * msg je znak, na ktorý odkazuje msg. Uvažujme príklad:

msg \u003d "ahoj";

printf ("X \u003d% d & X \u003d% p", X, & X);

printf ("* msg \u003d% c msg \u003d% p", * msg, msg);

Po vytlačení prvá funkcia vytlačí dve hodnoty: hodnotu X 7 a adresu X (pridelenú prekladačom). Druhá funkcia tiež vytlačí dve hodnoty: znak, na ktorý odkazuje msg (P), a hodnota msg, čo je adresa tohto znaku (tiež pridelená kompilátorom).

Priorita operácií v C zodpovedá prednosti operácií v matematike.

Operátor čiarky.

Operátor čiarky sa používa na usporiadanie viacerých výrazov v zátvorkách. Výraz v zátvorkách sa vyhodnocuje zľava doprava a celý výraz sa vyhodnocuje na hodnotu, ktorá bola vyhodnotená ako posledná. Napríklad:

(X \u003d Y, Y \u003d getch ())

priradí hodnotu X Y, potom načíta znak zadaný z klávesnice a uloží ho do Y. Výsledkom celého výrazu bude nakoniec hodnota znaku zadaného z klávesnice.

Ovládajte operátorov.

Operátor If ... umožňuje v závislosti od podmienky vykonať konkrétnu vetvu programu. Syntax operátora je nasledovná:

Ak podmienka výraz1 iný výraz2;

Podmienka musí mať za následok boolovskú hodnotu true alebo false. Ak je podmienka splnená, vykoná sa výraz 1. Výraz 2 sa vykoná, ak je podmienka nepravdivá.

Existuje skrátená verzia operátora:

Ak je podmienka výraz1

Príklad. Určte, či je zadané číslo dňom v týždni, t.j. či je počet v rozmedzí od 1 do 7.

printf ("Chyba% d", A);

else printf ("OK% d", A);

Výraz podmienky (A 7) vráti TRUE, ak sa vykoná A 7 - v tomto prípade sa vykoná printf („Chyba“, A); vetva, inak sa vykoná vetva printf („OK“, A);

Existuje ďalší variant písania príkazu If ... Príklad:

y \u003d (t\u003e 0)? t * 10: t-10; / * ak t\u003e 0 y \u003d t * 10 inak y \u003d t-10; * /

printf ("OK% d", r);

V tomto variante je typ operátora zobrazený v komentároch.

Operátor switch ... case sa používa, keď je potrebné analyzovať premennú a v závislosti od jej hodnoty vykonať určité akcie. Pozrime sa na príklad. Písmená latinskej abecedy sa zadávajú z klávesnice. Vykonajte určité akcie v závislosti od písmena.

prípad "c": printf ("smoll% c", A); prestávka; / * opustiť blok * /

veľké písmeno "G": printf ("veľké% c", A);

predvolené: printf ("Chyba% c", A);

V tomto príklade, ak je zadaný znak c, potom je vykonaný printf ("smoll% c", A); ak sú zadané veľké písmená F alebo G, potom printf ("veľké% c", A); je vykonaný, ak nie je jeden z uvažovaných znakov sa nezadá, potom sa vykoná printf ("Chyba% c", A) ;.

Ak chcete množinu príkazov opakovať viackrát, môžete použiť príkaz do ... while. Pozrime sa na príklad.

printf ("Zifra?");

printf ("Chyba% d", A);

) while (! (A \u003d\u003d 9));

printf ("OK% d", A);

Číslo sa zadáva z klávesnice. Vykoná sa príkaz printf ("Chyba% d", A) ;. Ďalej nasleduje analýza - či je číslo 9 alebo nie, ak nie, telo slučky sa vykoná znova:

printf ("Zifra?");

printf ("Chyba% d", A).

Ak je číslo 9, potom sa vykoná príkaz printf ("OK% d", A); a cyklus končí.

Hlavnou vlastnosťou operátora do ... while je skutočnosť, že telo slučky uzavreté medzi príkazmi do a while sa vykoná aspoň raz, t.j. najskôr sa vykoná telo slučky a potom sa analyzuje stav.

Význam uvažovaného operátora je teda nasledovný: „Vykonajte telo slučky, kým nie je splnená podmienka.“

Operátor while ... na rozdiel od do ... while najskôr analyzuje podmienku a potom vykoná telo slučky.

printf ("Zifra?");

printf ("Chyba% d", A);

printf ("OK% d", A);

V tomto príklade je premenná A inicializovaná: \u003d 0;. Je to tak preto, lebo najskôr sa vykoná analýza, či je 9 alebo nie. Ak nie, potom sa vykoná telo slučky. Význam uvažovaného operátora je nasledovný:

"Ak je podmienka pravdivá, vykonajte telo slučky."

Operátor for ... sa používa, keď je známe, koľkokrát je potrebné vykonať telo slučky, ale tento operátor je oveľa flexibilnejší ako Pascal. Pozrime sa na príklad.

printf ("Zifra% d", A);

V tomto príklade A ukladá stav počítadla slučiek. Pôvodne A: \u003d 1. Vykoná sa príkaz printf ("Zifra% d", A). Ďalej sa hodnota A zvyšuje o jednu. Prebieha analýza A

V nasledujúcom príklade zvážte variant operátora for ..., keď je počiatočná hodnota premennej väčšia ako konečná hodnota a premenná sa počas cyklu zníži o jednu.

pre (A \u003d 5; A\u003e \u003d 1; A--) / * A-- znamená A \u003d A-1 * /

printf ("Zifra% d", A);

Existuje veľa úprav príkazu for ..., napríklad:

Prázdny výpis - pre časové oneskorenie:

; / * prázdny operátor * /

Použite iný krok:

Zmena premenných:

Zvážte príklad, v ktorom sú inicializované dve premenné a každá z nich je zmenená po iterácii slučky:

Príkaz goto vám umožní preniesť kontrolu na akýkoľvek riadok programu. Na tento účel sa používa štítok. Príklad.

label_1: / * label * / printf ("?");

if (A! \u003d "y") goto label_1; )

Na prerušenie slučky za určitých podmienok môžete použiť príkaz break. Príklad.

i (A \u003d\u003d "y") zlom;

Príkaz Pokračovať sa používa na prerušenie iterácie slučky a prechod na ďalšiu iteráciu. Príklad.

if (A \u003d\u003d "y") continue;

printf ("% c funguje", A);

Príkazy return () a exit () sa tiež používajú na prerušenie programu.

1.6. Preprocesor

Preprocesor C umožňuje zahrnúť do programu fragmenty programov napísaných oddelene od hlavného pred začiatkom prekladu.

# Definujte smernicu.

Direktíva #define sa môže objaviť kdekoľvek v programe a jej definícia je platná od miesta po koniec programu.

#define OTWET TRI * TRI

#define OT printf („ODPOVEĎ je% d.“, OTWET)

#define jd cin \u003e\u003e C;

Po vykonaní programu získate:

ODPOVEĎ je 9

V prvom riadku programu je TRI definícia makra a rovná sa 3, kde 3 je náhradný reťazec.

V druhom riadku má makro OTWET náhradný reťazec TRI * TRI atď. Každý riadok má tri časti. Prvým z nich je direktíva #define, po ktorej nasleduje definícia makra. Makrá nesmú obsahovať medzery. Nakoniec existuje reťazec (nazývaný „náhradný reťazec“), ktorý predstavuje makro. Keď preprocesor nájde jedno z makier v programe, nahradí ho náhradným reťazcom. Tento proces prechodu od definície makra k finálnemu náhradnému reťazcu sa nazýva „rozšírenie makra“.

# Zahrnúť smernicu.

Keď preprocesor „rozpozná“ smernicu #include, vyhľadá ďalší názov súboru a zahrnie ho do aktuálneho programu. Smernica má dve formy:

# zahrňte názov súboru do zátvoriek

# zahrňte názov súboru „my.h“ do úvodzoviek

Uhlové zátvorky hovoria preprocesoru, aby vyhľadal súbor v jednom alebo viacerých štandardných systémových adresároch. Citáty mu hovoria, aby sa najskôr pozrel do pracovného adresára a až potom na „štandardné“ miesta.

Smernice: #undef, #ifdef, #else, #endif

Tieto smernice umožňujú pozastavenie predchádzajúcich definícií.

Direktíva #undef prepíše najnovšiu definíciu pomenovaného makra.

#undef TRI / * TRI je teraz nedefinované * /

#define F 10 / * F predefinované ako 10 * /

#undef F / * F je opäť 5 * /

#undef F / * F je teraz nedefinované * /

Uvažujme ešte o jednom príklade.

#include "otw.h" / * sa vykoná, ak je definovaný OTW * /

#include "w.h" / * sa vykoná, ak nie je definovaný OTW * /

Direktíva ifdef hovorí, že ak je následný identifikátor OTW určený preprocesorom, potom sa všetky nasledujúce smernice vykonajú až do prvého výskytu #else alebo #endif. Ak je v programe #else, spustí sa program #else až #endif, ak nie je zadaný žiadny identifikátor.

1.7 Programy. Funkcie

Ako sme už diskutovali, program C má koreňový segment začínajúci direktívami preprocesora a hlavným kľúčovým slovom.

Vo funkciách sú zvýraznené často používané časti programu. Každá funkcia tiež začína direktívami preprocesora a názvom a zátvorkou ().

Pozrime sa na príklad programu na kreslenie schodiska.

printf ("| ---- |");

printf ("| ---- |");

printf ("| ---- |");

Teraz napíšme tento program pomocou funkcie Lestniza.

printf ("| ---- |");

Ako vidíte z programu, funkcia sa volá trikrát. Na prekonanie tohto nedostatku prepracujeme program a uvedieme formálne a vecné argumenty:

Lestniza (int B) / * B je formálny argument * /

printf ("| ---- |");

Lestniza (3); / * 3 - skutočný argument * /

V tejto funkcii je B formálny argument (konečná hodnota príkazu for to). Na jej priradenie konkrétnej hodnoty sa použije skutočný argument, ktorý sa odovzdá funkcii pri jej vyvolaní v hlavnom programe.

Ak je funkcii odovzdaných niekoľko parametrov, musia byť odovzdané v poradí, v akom sú do funkcie zapísané.

Zvážte funkciu, ktorá vráti svoju hodnotu pomocou príkladu druhého mocnenia čísla.

plavák Kwadrat (plavák A)

printf ("Kwadrat \u003d% 8,2f", Kwadrat (B));

Ako vidíte na príklade - názov funkcie je Kwadrat - počíta štvorček čísla. Na riadku printf ("Kwadrat \u003d% 8,2f", Kwadrat (B)); táto funkcia sa volá - na vstup sa dodáva hodnota (zadané číslo) a ako výsledok dostaneme výsledok - štvorec čísla, ktorý sa vráti programu späť príkazom return.

Uvažujme o ďalšej možnosti práce s funkciou, ktorá vracia hodnotu bez príkazu na návrat.

Kwadrat (plavák A, plavák * B)

printf ("Kwadrat \u003d% 8,2f", D);

1.8. Ukazovatele

Ukazovateľ je premenná, ktorá obsahuje adresu údajov, nie ich hodnotu. Používa sa ukazovateľ:

1. Na vzájomnú komunikáciu nezávislých štruktúr.

2. Pre dynamické prideľovanie pamäte.

3. Prístup k rôznym prvkom konštrukcie.

Zvážte nasledujúci program:

printf ("Priama hodnota Z:% d", Z);

printf ("Hodnota Z získaná pomocou ukazovateľa:% d", * Y);

printf ("Adresa Z získaním adresy:% p", & Z);

printf ("Adresa Z pomocou ukazovateľa:% p", Y);

V tomto príklade je Y ukazovateľ na celočíselnú premennú a obsahuje jej adresu. Na druhej strane & umožňuje získať adresu, na ktorej sa nachádza hodnota premennej Z. V tomto programe:

Adresa premennej Z je priradená k Y;

Celej hodnote 100 je priradená Z;

Operátor & umožňuje získať adresu,

na ktorej je umiestnená hodnota Z.

Výsledok programu:

Priama hodnota Z: 100

Z hodnota získaná pomocou ukazovateľa: 100

Adresa Z prijatím adresy: 85B3: 0FDC

Adresa Z pomocou ukazovateľa: 85B3: 0FDC

Ukazovatele sa tiež používajú na optimálne pridelenie pamäte.

Uvažujme príklad ukazovateľa na počet typov char.

char * str; / * ukazovateľ na znakovú premennú * /

str \u003d (char *) malloc (10);

strcpy (str, „ahoj“);

printf ("Reťazec je% s", str);

Najskôr príkazom char * str; bol vytvorený typ str, čo je ukazovateľ na premennú typu char (* znamená „ukazovateľ“). Príkazom str \u003d (char *) malloc (10); alokujte 10 bajtov pamäte pre premennú str (typ reťazca). Príkazom strcpy (str, „Hello“); vykonané - "zapísať do oblasti pamäte, na ktorú ukazuje str, reťazec znakov" Hello ". Na príkaz printf (" String je% s ", str); vykonané" vypísať na obrazovku to, na čo str odkazuje. Voľný príkaz (str); oslobodí pamäť, na ktorú ukazuje str.

Pozrime sa na zložitejší príklad prístupu k záznamu pomocou ukazovateľa.

); / * koniec záznamu * /

struct Student * A;

if ((A \u003d (Student *) malloc (sizeof (Student))) \u003d\u003d NULL)

printf ("Nedostatok pamäte");

strcpy (A.Fio, "Ivanov");

printf ("Fio1% s Gruppa% d", A.Fio, A.Gruppa);

strcpy (A.Fio, "Petrow");

printf ("Fio2% s Gruppa% d", A.Fio, A.Gruppa);

Ukazovateľ možno použiť aj na získanie nepriameho ukazovateľa na štruktúru.

Nech poit je ukazovateľ na štruktúru a tým prvkom je prvok definovaný vzorom štruktúry. Potom point-\u003e elem definuje prvok, na ktorý sa má odkazovať. Pozrime sa na predchádzajúci príklad.

Štruktúra Študent (/ * Záznam študenta * /

char Fio; / * Záznamové pole Fio * /

int Gruppa; / * Záznamové pole Gruppa * /

); / * koniec záznamu * /

Teraz môžeme k poliam štruktúry pristupovať niekoľkými spôsobmi. Ekvivalentné hovory:

Student.Gruppa \u003d 236;

poin-\u003e Gruppa \u003d 236;

Všimnite si jednu dôležitú vlastnosť ukazovateľov C. Prekladateľ pri aritmetických operáciách s ním automaticky zohľadňuje typ ukazovateľa. Napríklad, ak i je ukazovateľ na celočíselnú (tj. Dvojbajtovú) premennú, potom akcia ako i ++ znamená, že smerník neprijíma prírastok iba jedného, \u200b\u200bale iba dvoch bajtov, t. bude smerovať na nasledujúcu premennú alebo prvok v poli. Z tohto dôvodu je možné namiesto indexov poľa použiť ukazovateľ. Napríklad, ak A je ukazovateľ na pole celočíselného typu, môžete namiesto A [i] napísať * (A + i). Okrem toho použitie ukazovateľov namiesto indexov umožňuje kompilátoru generovať kompaktnejší a rýchlejší kód.

1.9 Ukazovatele a funkcie

Ukazovatele možno tiež použiť ako formálne parametre funkcie. Pozrime sa na príklad.

Funkcia swap deklaruje dva formálne parametre x a y ako ukazovatele na int dáta. To znamená, že funkcia swap pracuje s adresami celočíselných premenných (nie s ich hodnotami). Preto budú spracované údaje, ktorých adresy boli funkcii odovzdané počas hovoru na ňu. Funkcia main () volá swap.

swap (int * x, int * y)

wr \u003d * x; * x \u003d * y; * y \u003d wr;

printf ("Bolo to: i \u003d% d, j \u003d% d", i, j);

printf ("Teraz: i \u003d% d, j \u003d% d", i, j);

Po vykonaní programu sa hodnoty i a j zamenia. Je potrebné poznamenať, že hoci ukazovatele šetria pamäť, využívajú oveľa viac času CPU.

Berú sa teda do úvahy hlavné prvky jazyka C.

1.10 Súbory

Súbor je súbor údajov zaznamenaných na nejakom médiu. Môžete vytvoriť súbor, zapísať doň údaje, vymazať ich, aktualizovať údaje, pridať údaje. File I / O sa vykonáva pomocou metód priameho alebo sekvenčného prístupu.

Poďme sa najskôr pozrieť na režim sekvenčného prístupu.

I / O je vo vyrovnávacej pamäti. To znamená, že program zapisuje a číta do medzipamäte; výmena dát medzi vyrovnávacou pamäťou a súborom nastáva, keď je vyrovnávacia pamäť plná, alebo je súbor zatvorený, alebo pred ukončením programu.

printf ("zdrojovy subor");

printf ("Výstupný súbor");

if ((in \u003d fopen (n1, "rt")) \u003d\u003d NULL)

printf ("Nemôžem otvoriť zdrojový súbor"); návrat 1;

if ((out \u003d fopen (n2, "wt")) \u003d\u003d NULL)

printf ("Nemôžem otvoriť výstupný súbor"); návrat 1;

while (! feof (in))

fputc (fgetc (in), out);

Reťazec SÚBOR * dovnútra, * von; definuje ukazovateľ na dva súbory. Názov súboru m.b. any - v našom prípade in je zdrojový súbor, out je výstup.

V ďalšom riadku char n1, n2; definujte dve premenné n1 a n2 na ukladanie názvov súborov. Nasledujúce štyri riadky umožňujú zadať názvy vstupného a výstupného súboru a priradiť ich k premenným n1 a n2. Skôr ako začnete so súborom pracovať, musí byť otvorený. K tomu existuje funkcia fopen (), v ktorej prvý parameter obsahuje názov súboru a druhý - typ práce, napríklad „rt“ - súbor číta.

Príkaz in \u003d fopen (n1, "rt" spôsobí otvorenie súboru uloženého v premennej n1 na čítanie a program vráti ukazovateľ in na tento súbor, ktorý (ukazovateľ) použijeme pri čítaní symbolov zo súboru. Ak súbor neexistuje , potom bude hodnota fp NULL, fprintf (stderr, „Can't open the output file“); návrat 1; bude vykonaný a program bude ukončený.

Podobným spôsobom funguje aj funkcia out \u003d fopen (n2, "wt", až teraz je vonku výstupný súbor a typ práce, do ktorej sa súbor "wt" zapisuje).

Tento príkaz vytvorí súbor s názvom napísaným v premennej n2.

Čítanie zo súboru sa vykonáva volaním fgetc (in). Jeden znak sa načíta zo súboru spojeného s ukazovateľom in.

Fputc (fgetc (in), out); prečítaný znak sa zapíše do súboru. Ak chcete načítať informácie z celého súboru, použite while (! Feof (in))

fputc (fgetc (in), out);.

Funkcia feof (in) vráti nenulovú hodnotu, ak je v koncovej polohe, a inak nulu. Pokiaľ nenastane nula, údaje zo zdrojového súboru sa načítajú a zapíšu na výstup.

Súbor je zatvorený, keď sa volá funkcia fclose (). Ak bol súbor otvorený na zápis, vygeneruje sa obsah medzipamäte spojenej s týmto súborom. Spojenie medzi ukazovateľom a súborom je prerušené.

Podobne funkcia fgetc (string, n, fp) načíta reťazec zo súboru spojeného s fp a umiestni ho do reťazca. Znaky sa čítajú, až kým nedostanete znak „“ alebo do vyčerpania súboru alebo do prečítania (n-1) znakov.

Režim priameho prístupu je flexibilnejší, pretože umožňuje priamy prístup k ľubovoľnému záznamu v súbore. Minimálny záznam pre súbor s priamym prístupom je bajt. Ďalej zvážime prípad súboru s priamym prístupom so zápisom rovným bajtu. Tieto súbory sa nazývajú binárne súbory. Súbory s priamym prístupom sú nevyhnutné pri písaní programov, ktoré musia pracovať s veľkým množstvom informácií uložených na externých zariadeniach. Spracovanie systému DBMS je založené na súboroch s priamym prístupom.

Poďme si v skratke predstaviť hlavné ustanovenia týkajúce sa práce so súbormi priameho prístupu.

1). Každá položka v súbore s priamym prístupom je očíslovaná. Záznamy sú očíslované od 0 do N-1, kde N je počet záznamov v súbore. Pre binárny súbor je N rovnaká ako dĺžka súboru v bajtoch. Pre otvorený súbor je jeden zo záznamov aktuálny - hovorí sa, že ukazovateľ je nastavený na tento záznam. Ukazovateľ môžete posúvať pomocou funkcie lseek.

2). Pri otváraní (alebo vytváraní súboru) sa ukazovateľ automaticky umiestni na začiatok (položka 0). Pri vykonávaní operácií čítania alebo zápisu sa ukazovateľ automaticky presunie za posledný prečítaný (napísaný) záznam.

3). Veľkosť súboru môžete zmeniť (zväčšiť alebo zmenšiť) pomocou funkcie chsize. S narastajúcou veľkosťou súboru sa do neho pridávajú položky vyplnené 0 kódmi.

Ďalej uvádzame program, ktorý demonštruje prácu so súbormi.

int h; / * deskriptor súborov na vytvorenie * /

char * s \u003d "Tento riadok bude vložený do súboru";

char buf; / * medzipamäť na čítanie zo súboru * /

Fmode \u003d O_BINARY; / * práca s binárnymi súbormi * /

if ((h \u003d creat ("proba.txt", S_IREAD | S_IWRITE)) \u003d\u003d - 1) / * vytvoriť súbor * /

printf ("Nepodarilo sa otvoriť súbor!");

write (h, s, strlen (s)); / * zapísať riadky do súboru * /

lseek (h, 4, SEEK_SET); / * štvrtý bajt od začiatku súboru * /

buf \u003d 0; / * označte koniec riadku * /

zavrieť (h); / * zavrieť súbor * /

printf ("% s", buf); / * vytlačiť prečítaný riadok * /

Náš program je plne komentovaný, takže poskytujeme pomerne krátke vysvetlenie. Program vytvorí súbor s priamym prístupom a zapíše doň postupnosť bajtov (reťazcov). Ďalej existuje priamy odkaz na podreťazec tohto reťazca priamo v súbore. Pri analýze textu programu pritiahnime čitateľov k niektorým bodom:

1. Chyba pri vytváraní súboru. Otvorenie súboru skutočne nemusí byť úspešné a dobrý program by mal takéto situácie zvládnuť.

2. Ak sa súbor úspešne otvorí, priradí sa mu deskriptor (jedinečné číslo), ktorý sa potom dá použiť na prístup k súboru.

3. Na záver nezabudnite, že reťazec sa stane reťazcom, až keď bude na konci kód

Tieto výukové programy sú určené pre všetkých, či už ste v programovaní nováčikom, alebo už máte rozsiahle skúsenosti s programovaním v iných jazykoch! Tento materiál je určený pre tých, ktorí sa chcú naučiť jazyky C / C ++ od úplných základov až po najkomplexnejšie štruktúry.

C ++ je programovací jazyk, znalosť tohto programovacieho jazyka vám umožní ovládať počítač na najvyššej úrovni. V ideálnom prípade môžete počítač prinútiť, aby robil, čo chcete. Naše stránky vám pomôžu naučiť sa programovací jazyk C ++.

Inštalácia / IDE

Úplne prvá vec, ktorú by ste mali urobiť skôr, ako sa začnete učiť C ++, je uistiť sa, že máte IDE - integrované vývojové prostredie (program, v ktorom budete programovať). Ak nemáte IDE, potom je toto miesto pre vás. Len čo sa rozhodnete pre IDE, nainštalujte si ho a trénujte vytváranie jednoduchých projektov.

Úvod do jazyka C ++

C ++ je sada príkazov, ktoré počítaču hovoria, čo má robiť. Táto sada príkazov sa zvyčajne nazýva zdrojový kód alebo iba kód. Príkazy sú buď „funkcie“, alebo „kľúčové slová“. Kľúčové slová (vyhradené slová C / C ++) sú základnými stavebnými kameňmi jazyka. Funkcie sú komplexné stavebné bloky, pretože sú napísané z hľadiska jednoduchších funkcií - uvidíte to v našom úplne prvom programe uvedenom nižšie. Táto štruktúra funkcií pripomína obsah knihy. V obsahu sa môžu zobraziť kapitoly knihy, každá kapitola v knihe môže mať vlastný obsah, ktorý sa skladá z odsekov, každý odsek môže mať svoje vlastné pododseky. Aj keď jazyk C ++ poskytuje mnoho bežných funkcií a vyhradených slov, ktoré môžete použiť, stále je potrebné písať vlastné funkcie.

Kde sa program začína? Každý program v C ++ má jednu funkciu, nazýva sa hlavná alebo hlavná funkcia, vykonávanie programu začína touto funkciou. Z hlavnej funkcie môžete volať aj akékoľvek ďalšie funkcie, je jedno, či sú nami napísané, alebo ako už bolo spomenuté, sú poskytované kompilátorom.

Ako teda získate prístup k týmto štandardným funkciám? Ak chcete získať prístup k štandardným funkciám dodávaným s prekladačom, musíte zahrnúť hlavičkový súbor pomocou smernice o predbežnom spracovaní - #include. Prečo je to efektívne? Pozrime sa na príklad pracovného programu:

#include << "Моя первая программа на С++\n"; cin.get(); }

Zvážme podrobne prvky programu. #include je smernica „preprocesora“, ktorá kompilátoru hovorí, aby vložil kód zo súboru hlavičky iostream do nášho programu pred vytvorením spustiteľného súboru. Pripojením hlavičkového súboru k programu získate prístup k mnohým rôznym funkciám, ktoré môžete vo svojom programe použiť. Napríklad operátor cout vyžaduje prúd. Riadok využívajúci menný priestor std; povie kompilátoru, aby použil skupinu funkcií, ktoré sú súčasťou štandardnej knižnice std. Tento riadok taktiež umožňuje programu používať príkazy ako je cout. Bodkočiarka je súčasťou syntaxe C ++. Povedá kompilátoru, že toto je koniec príkazu. Neskôr uvidíte, že bodkočiarky sa používajú na dokončenie väčšiny príkazov v jazyku C ++.

Ďalším dôležitým riadkom programu je int main (). Tento riadok informuje kompilátor, že existuje funkcia s názvom main, a že funkcia vracia celé číslo typu int. Skladané zložené zátvorky (a) signalizujú začiatok (a koniec) funkcie. Skladané zložené zátvorky sa používajú v iných blokoch kódu, ale vždy znamenajú to isté - začiatok a koniec bloku.

V C ++ sa objekt cout používa na zobrazenie textu (vyslovuje sa „C out“). Používa symboly<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

Ďalším príkazom je cin.get (). Toto je ďalšie volanie funkcie, ktoré číta dáta zo vstupného dátového toku a čaká na stlačenie klávesu ENTER. Tento príkaz zabráni zatvoreniu okna konzoly, kým nestlačíte kláves ENTER. Takto získate čas vidieť výstup programu.

Po dosiahnutí konca hlavnej funkcie (zatvorenie zloženej zátvorky) náš program vráti 0 pre operačný systém. Táto návratová hodnota je dôležitá, pretože jej analýzou môže OS posúdiť, či bol náš program úspešne dokončený alebo nie. Návratová hodnota 0 znamená úspech a vracia sa automaticky (ale iba pre dátový typ int, iné funkcie vyžadujú, aby ste hodnotu vrátili ručne), ale ak by sme chceli vrátiť niečo iné, napríklad 1, museli by sme to urobiť manuálne.

#include pomocou namespace std; int main () (cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

Ak chcete konsolidovať materiál, zadajte programový kód do svojho IDE a spustite ho. Po spustení programu a uvidíte výsledku, trochu experimentujte s príkazom cout. Pomôže vám to zvyknúť si na jazyk.

Nezabudnite komentovať svoje programy!

Pridajte komentáre ku kódu, aby bolo jasnejšie nielen pre vás, ale aj pre ostatných. Kompilátor pri vykonávaní kódu ignoruje komentáre, čo umožňuje použiť ľubovoľný počet komentárov na popis skutočného kódu. Ak chcete vytvoriť komentár, použite buď //, ktoré kompilátoru oznámia, že zvyšok riadku je komentár, alebo / * a potom * /. Keď sa naučíte programovať, je užitočné vedieť komentovať určité časti kódu, aby ste videli, ako sa mení výsledok práce programu. Môžete si prečítať viac o technike komentovania.

Čo robiť so všetkými týmito typmi premenných?

Niekedy môže byť mätúce mať viac typov premenných, keď sa zdá, že niektoré typy premenných sú nadbytočné. Je veľmi dôležité používať správny typ premennej, pretože niektoré premenné vyžadujú viac pamäte ako iné. Okrem toho sú floatové a dvojité dátové typy, vzhľadom na spôsob ich ukladania do pamäte, čísla s pohyblivou rádovou čiarkou, „nepresné“ a nemali by sa používať, keď musí byť uložená presná celočíselná hodnota.

Deklarovanie premenných v C ++

Na deklaráciu premennej použite typ syntaxe<имя>; ... Tu je niekoľko príkladov deklarácií premenných:

Int num; znak char; float num_float;

Na jednom riadku je dovolené deklarovať niekoľko premenných rovnakého typu, kvôli tomu musí byť každá z nich oddelená čiarkou.

Int x, y, z, d;

Ak ste sa pozreli pozorne, mohli ste vidieť, že za deklaráciou premennej vždy nasleduje bodkočiarka. Môžete si prečítať viac o konvencii - „o pomenovaní premenných“.

Bežné chyby pri deklarovaní premenných v C ++

Ak sa pokúsite použiť premennú, ktorú ste nedeklarovali, váš program sa nezkompiluje a zobrazí sa chyba. V C ++ rozlišujú všetky kľúčové slová jazyka, všetky funkcie a všetky premenné veľké a malé písmená.

Používanie premenných

Takže teraz už viete, ako deklarovať premennú. Tu je ukážkový program, ktorý demonštruje použitie premennej:

#include pomocou namespace std; int main () (int cislo; cout<< "Введите число: "; cin >\u003e číslo; cin.ignore (); cout<< "Вы ввели: "<< number <<"\n"; cin.get(); }

Pozrime sa na tento program a preskúmajme jeho kód, riadok po riadku. Kľúčové slovo int hovorí, že číslo je celé číslo. Funkcia cin \u003e\u003e načíta hodnotu na číslo, používateľ musí po zadanom čísle stlačiť kláves Enter. cin.ignore () je funkcia, ktorá číta znak a ignoruje ho. Zorganizovali sme si náš vstup do programu, po zadaní čísla stlačíme kláves ENTER, ktorý sa taktiež odovzdá vstupnému prúdu. Toto nepotrebujeme, preto ho zahodíme. Majte na pamäti, že premenná bola vyhlásená za celočíselný typ. Ak sa používateľ pokúsi zadať desatinné číslo, bude skrátená (to znamená, že desatinná časť čísla bude ignorovaná). Skúste zadať desatinné číslo alebo postupnosť znakov, pri spustení ukážkového programu bude odpoveď závisieť od vstupnej hodnoty.

Upozorňujeme, že pri tlači z premennej sa úvodzovky nepoužívajú. Absencia úvodzoviek hovorí kompilátoru o tom, že existuje premenná, a preto by mal program skontrolovať hodnotu premennej, aby mohol nahradiť názov premennej jej hodnotou za behu programu. Viacero operátorov na jednej linke je v poriadku a výstup sa uskutoční v rovnakom poradí. Musíte oddeliť reťazcové literály (reťazce v úvodzovkách) a premenné, aby ste každému dali iný operátor posunu<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

Zmena a porovnanie hodnôt

Samozrejme, bez ohľadu na to, aký dátový typ používate, sú premenné málo zaujímavé bez možnosti meniť ich hodnotu. Niektoré z operátorov používaných v spojení s premennými sú uvedené nižšie:

  • * násobenie,
  • - odčítanie,
  • + dodatok,
  • / divízia,
  • \u003d zadanie,
  • \u003d\u003d rovnosť,
  • \u003e viac,
  • < меньше.
  • ! \u003d nerovné
  • \u003e \u003d väčšie alebo rovné
  • <= меньше или равно

Operátory, ktoré vykonávajú matematické funkcie, musia byť použité napravo od označenia priradenia, aby bolo možné výsledok priradiť k premennej vľavo.

Tu je niekoľko príkladov:

A \u003d 4 * 6; // použite riadkový komentár a bodkočiarku, a sa rovná 24 a \u003d a + 5; // rovná sa súčtu pôvodnej hodnoty a päť a \u003d\u003d 5 // päťka nie je priradená, skontroluje sa, či je to 5 alebo nie

\u003d\u003d často budete používať v konštruktoch, ako sú podmienené výrazy a cykly.

A< 5 // Проверка, a менее пяти? a > 5 // Skontrolujte, či je a väčšie ako päť? a \u003d\u003d 5 // Skontrolujte, či je a päť? a! \u003d 5 // Kontrola, ale nerovná sa päť? a\u003e \u003d 5 // Skontrolujte, či je a väčšie alebo rovné piatim? a<= 5 // Проверка, a меньше или равно пяти?

Tieto príklady nie sú veľmi jasné o použití porovnávacích znakov, ale keď začneme študovať operátory výberu, pochopíte, prečo je to nevyhnutné.