§1 Opće informacije o jeziku. Faze izrade programa

Standardna biblioteka C/C++ uključuje niz funkcija za čitanje i pisanje na konzoli (tipkovnica i monitor). Ove funkcije čitaju i pišu podatke kao jednostavan tok znakova.

Koncept toka, koji se koristi u programiranju, usko je povezan s uobičajenim, svakodnevnim razumijevanjem ove riječi. Ulazni tok se može usporediti s cijevi kroz koju voda (informacije) ulazi u bazen (memoriju računala), a izlazni tok se može usporediti s cijevi kroz koju voda izlazi iz bazena. Važna značajka ove cijevi je da se podaci mogu pomicati samo u jednom smjeru. Čak i ako se ista cijev koristi za ulaz i izlaz, to se ne može dogoditi u isto vrijeme: da bi se promijenio smjer protoka, potrebno ga je zaustaviti, izvršiti neku radnju i tek tada se protok može usmjeriti u suprotnom smjeru. Još jedna značajka potoka je da gotovo nikad ne presušuje. Ponekad se osuši, ali to razdoblje ne može biti dugo ako sustav normalno funkcionira.

Standardna izlazna funkcija printf()

Funkcija printf() standardna je izlazna funkcija. Pomoću ove funkcije možete na ekranu monitora prikazati niz znakova, broj, vrijednost varijable...

Funkcija printf() ima prototip u stdio.h
int printf(char *kontrolni niz, ...);

Ako je uspješan, printf() vraća broj ispisanih znakova.

Kontrolna linija sadrži dvije vrste informacija: znakove koji se izravno ispisuju na ekran i specifikatore formata koji određuju kako se argumenti ispisuju.

Funkcija printf() je formatirana izlazna funkcija. To znači da je u parametrima funkcije potrebno navesti format podataka koji će biti ispisani. Format podataka određen je specifikatorima formata. Specifikator formata počinje znakom % nakon kojeg slijedi kod formata.

Specifikatori formata:

%S simbol
%d cijeli decimalni broj
%i cijeli decimalni broj
%e decimalni broj u obliku x.xx e+xx
%E decimalni broj u obliku x.xx E+xx
%f
%F decimalni broj s pomičnim zarezom xx.xxxx
%g %f ili %e, što god je kraće
%G %F ili %E, što god je kraće
%o oktalni broj
%s znakovni niz
%u decimalni broj bez predznaka
%x heksadecimalni broj
%X heksadecimalni broj
%% simbol %
%p pokazivač
%n pokazivač

Osim toga, modifikatori l i h mogu se primijeniti na naredbe formatiranja.

%ld ispis duga int
%hu marka kratka nepotpisana
%Lf duga dvostruka marka

U specifikatoru formata, nakon simbola % može se navesti preciznost (broj znamenki nakon decimalne točke). Preciznost je postavljena kako slijedi: %.n<код формата>. Gdje je n broj znamenki iza decimalne točke, i<код формата>- jedan od gore navedenih kodova.

Na primjer, ako imamo varijablu x=10.3563 tipa float i želimo prikazati njezinu vrijednost točnu na 3 decimalna mjesta, tada bismo trebali napisati:

printf("Varijabla x = %.3f",x);

Proizlaziti:
Varijabla x = 10,356

Također možete odrediti minimalnu širinu polja dodijeljenog za ispis. Ako je redak ili broj veći od navedene širine polja, tada se redak ili broj ispisuje u cijelosti.

Na primjer, ako napišete:

printf("%5d",20);

tada će rezultat biti sljedeći:
20

Napominjemo da broj 20 nije ispisan od samog početka retka. Ako želite da se neiskorišteni prostori polja popune nulama, potrebno je ispred širine polja staviti simbol 0.

Na primjer:

printf("%05d",20);

Proizlaziti:
00020

Uz specifikatore formata podataka, kontrolni red može sadržavati kontrolne znakove:

\b BS, dolje
\f Nova stranica, promjena stranice
\n Novi redak, novi redak
\r Povrat prtljage
\t Horizontalna tablica
\v Okomita kartica
\" Dupli navodnici
\" Apostrof
\\ Obrnuta kosa crta
\0 Nulti znak, nulti bajt
\a Signal
\N Oktalna konstanta
\xN Heksadecimalna konstanta
\? Upitnik

Najčešće ćete koristiti znak \n. S ovim kontrolnim znakom možete ići u novi red. Pogledajte primjere programa i sve će vam biti jasno.

Primjeri programa.

/* Primjer 1 */
#uključi

void glavni (praznina)
{
int a,b,c; // Obavijest varijable a,b,c
a=5;
b=6;
c=9;
printf("a=%d, b=%d, c=%d",a,b,c);
}

Rezultat programa:
a=5, b=6, c=9

/* Primjer 2 */
#uključi

void glavni (praznina)
{
float x,y,z;

X=10,5;
y=130,67;
z=54;

Ispisf("Koordinate objekta: x:%.2f, y:%.2f, z:%.2f", x, y, z);
}

Rezultat programa:
Koordinate objekta: x:10.50, y:130.67, z:54.00

/* Primjer 3 */
#uključi

void main()
{
int x;

X=5;
printf("x=%d", x*2);
}

Rezultat programa:
x=10

/* Primjer 4 */
#uključi

void glavni (praznina)
{
printf("\"Tekst pod navodnicima\"");
printf("\nSadržaj kisika: 100%%");
}

Rezultat programa:
"Tekst pod navodnicima"
Sadržaj kisika: 100%

/* Primjer 5 */
#uključi

void glavni (praznina)
{
int a;

A=11; // 11 u decimali jednako je b u heksadecimali
printf("a-dec=%d, a-hex=%X",a,a);
}

Rezultat programa:
a-dec=11, a-hex=b

/* Primjer 6 */
#uključi

void glavni (praznina)
{
char ch1,ch2,ch3;

Ch1="A";
ch2="B";
ch3="C";

Printf("%c%c%c",ch1,ch2,ch3);
}

Rezultat programa:
ABC

/* Primjer 7 */
#uključi

void glavni (praznina)
{
char *str="Moj niz.";

Printf("Ovo je %s",str);
}

Rezultat programa:
Ovo je Moja linija.

/* Primjer 8 */
#uključi

void glavni (praznina)
{
printf("Zdravo!\n"); // Nakon ispisa doći će do prijelaza u novi redak - \n
printf("Zovem se Pavel."); // Ovo će biti ispisano u novom retku
}

Rezultat programa:
Zdravo!
Moje ime je Pavel.

Standardna funkcija unosa scanf()

Funkcija scanf() je funkcija formatiranog unosa. Uz njegovu pomoć možete unositi podatke sa standardnog ulaznog uređaja (tipkovnice). Ulazni podaci mogu biti cijeli brojevi, brojevi s pomičnim zarezom, znakovi, znakovni nizovi i pokazivači.

Funkcija scanf() ima sljedeći prototip u stdio.h:
int scanf(char *kontrolni niz);

Funkcija vraća broj varijabli kojima je dodijeljena vrijednost.

Kontrolni niz sadrži tri vrste znakova: specifikatore formata, razmake i druge znakove. Specifikatori formata počinju znakom %.

Specifikatori formata:

Prilikom unosa niza pomoću scanf funkcije() (specifikator formata %s), redak se unosi prije prvog razmaka!! oni. ako unesete niz "Hello world!" pomoću funkcije scanf().


scanf("%s",str);

tada će se nakon unosa rezultirajućeg niza, koji će biti pohranjen u nizu str, sastojati od jedne riječi "Hello". FUNKCIJA ULAZI U NIZ PRIJE PRVOG RAZMAKA! Ako želite unijeti nizove s razmacima, koristite funkciju

char *dobiva(char *buf);

S funkcijom gets() možete unijeti cijele nizove. Funkcija gets() čita znakove s tipkovnice dok se ne pojavi znak novog retka (\n). Sam znak novog retka pojavljuje se kada pritisnete enter. Funkcija vraća pokazivač na buf. buf - međuspremnik (memorija) za ulazni niz.

Iako gets() nije tema ovog članka, napišimo primjer programa koji vam omogućuje da unesete cijeli red s tipkovnice i prikažete ga na ekranu.

#uključi

void glavni (praznina)
{
char međuspremnik; // niz (spremnik) za ulazni niz

Dobiva (spremnik); // unesite redak i pritisnite enter
printf("%s",međuspremnik); // izlaz unesenog niza na ekran
}

Još važna nota! Za unos podataka pomoću funkcije scanf() potrebno je proslijediti adrese varijabli kao parametre, a ne same varijable. Da biste dobili adresu varijable, morate ispred naziva varijable staviti & (ampersand). Znak & znači preuzimanje adrese.

Što adresa znači? Pokušat ću objasniti. U programu imamo varijablu. Varijabla pohranjuje svoju vrijednost u memoriju računala. Dakle, ovo je adresa koju dobivamo koristeći & je adresa u memoriji računala gdje je pohranjena vrijednost varijable.

Pogledajmo primjer programa koji nam pokazuje kako koristiti &

#uključi

void glavni (praznina)
{
int x;

Printf("Unesite varijablu x:");
scanf("%d",&x);
printf("Varijabla x=%d",x);
}

Sada se vratimo na kontrolnu liniju funkcije scanf(). Opet:

int scanf(char *kontrolni niz);

Znak razmaka na kontrolnom nizu naređuje da se jedan ili više razmaka preskoče u ulaznom toku. Osim razmaka, može se uočiti tabulator ili znak novog retka. Znak koji nije nula označava da je znak pročitan i odbačen.

Razdjelnici između dva broja koja unesete su razmak, tabulator ili novi red. * iza % i prije koda formata (specifikator formata) naređuje da se tip podataka čita, ali ne i dodjeljuje toj vrijednosti.

Na primjer:

scanf("%d%*c%d",&i,&j);

unos 50+20 će postaviti varijablu i na 50, varijablu j na 20, a znak + će biti pročitan i zanemaren.

Naredba formata može odrediti najveću širinu polja za čitanje.

Na primjer:

scanf("%5s",str);

označava potrebu čitanja prvih 5 znakova iz ulaznog toka. Ako unesete 1234567890ABC, str niz će sadržavati samo 12345, preostali znakovi će biti zanemareni. Razdjelnici: razmak, tabulator i novi red - prilikom unosa simbola tretiraju se kao i svi ostali znakovi.

Ako se neki drugi znakovi pojavljuju u kontrolnom nizu, oni su namijenjeni za prepoznavanje i preskakanje odgovarajućeg znaka. Operator toka znakova 10plus20

scanf("%dplus%d",&x,&y);

dodijelit će vrijednost 10 varijabli x, vrijednost 20 varijabli y i preskočit će znakove plus jer se pojavljuju u kontrolnom nizu.

Jedna od moćnih značajki funkcije scanf() je njezina sposobnost određivanja skupa skeniranja. Skup pretraživanja definira skup znakova s ​​kojima će se uspoređivati ​​znakovi koje čita funkcija scanf(). Funkcija scanf() čita znakove sve dok se pojavljuju u skupu pretraživanja. Čim se uneseni znak ne pronađe u skupu pretraživanja, funkcija scanf() prelazi na sljedeći specifikator formata. Skup za pretraživanje definiran je popisom znakova u uglatim zagradama. Znak % stavlja se ispred početne zagrade. Pogledajmo ovo na primjeru.

#uključi

void glavni (praznina)
{
char str1, str2;
scanf("%%s", str1, str2);
printf("\n%s\n%s",str1,str2);
}
Unesite skup znakova:
12345abcdefg456

Program će prikazati na ekranu:
12345
abcdefg456

Prilikom određivanja skupa za pretraživanje, također možete koristiti znak crtice za određivanje razmaka, kao i maksimalnu širinu polja za unos.

scanf("%10", str1);

Također možete definirati znakove koji nisu uključeni u skup pretraživanja. Prvom od ovih znakova prethodi ^. Mnogi znakovi razlikuju mala i velika slova.

Dopustite mi da vas podsjetim da kada koristite funkciju scanf(), morate joj proslijediti adrese varijabli kao parametre. Gornji kod je napisan:

char str; // niz od 80 znakova
scanf("%s",str);

Imajte na umu da str ne prethodi &. To je učinjeno zato što je str niz, a naziv niza - str je pokazivač na prvi element niza. Stoga se znak & ne smije koristiti. Adresu već prosljeđujemo funkciji scanf(). Pa, jednostavno rečeno, str je adresa u memoriji računala gdje će biti pohranjena vrijednost prvog elementa niza.

Primjeri programa.

Primjer 1.
Ovaj program prikazuje upit "Koliko imaš godina?:" i čeka unos podataka. Ako, na primjer, unesete broj 20, program će prikazati redak "Imate 20 godina". Kada pozivamo funkciju scanf(), ispred varijable starosti stavljamo znak &, budući da funkcija scanf() treba adrese varijable. Funkcija scanf() upisat će unesenu vrijednost na navedenu adresu. U našem slučaju upisana vrijednost 20 bit će upisana na adresu varijable dob.

/* Primjer 1 */

#uključi

void glavni (praznina)
{
int dob;

Printf("\nKoliko imaš godina?:");
scanf("%d",&dob);
printf("Imaš %d godina.", dob);
}

Primjer 2.
Program kalkulatora. Ovaj kalkulator može samo zbrajati brojeve. Kada unesete 100+34, program će dati rezultat: 100+34=134.

/* Primjer 2 */

#uključi

void glavni (praznina)
{
int x, y;

Printf("\nKalkulator:");
scanf("%d+%d", &x, &y);
printf("\n%d+%d=%d", x, y, x+y);
}

Primjer 3.
Ovaj primjer pokazuje kako postaviti širinu polja za čitanje. U našem primjeru, širina polja je pet znakova. Ako unesete redak s veliki iznos znakova, tada će svi znakovi nakon 5. biti odbačeni. Primijetite poziv funkcije scanf(). Znak & ne prethodi nazivu niza jer je naziv niza adresa prvog elementa niza.

/* Primjer 3 */

#uključi

void glavni (praznina)
{
char ime;

Printf("\nUnesite svoje korisničko ime (ne više od 5 znakova):");
scanf("%5s", ime);
printf("\nUnijeli ste %s", ime);
}

Primjer 4.
Posljednji primjer u ovom članku pokazuje kako se može koristiti skup pretraživanja. Nakon pokretanja programa unesite broj od 2 do 5.

/* Primjer 4 */

#uključi

void glavni (praznina)
{
char bal;

Printf("Vaša ocjena je 2,3,4,5:");
scanf("%", &bal);
printf("\nOcjena %c", bal);
}

1. Uvod

Programiranje zahtijeva nove univerzalne algoritamske modele, a hardver implementira algoritme ne samo u drugačijem obliku, već i na temelju drugačijeg algoritamskog modela - automata. Posuđivanje tehnologije iz razvoja hardvera ključna je ideja iza programiranja automata. Međutim, sinteza digitalnih uređaja razlikuje se od programiranja. Ali kod posuđivanja modela, s jedne strane, nije preporučljivo bitno ga mijenjati, as druge strane, ne može se zanemariti već postojeća teorija i praksa programiranja.

Zatim ćemo se osvrnuti na SWITCH tehnologiju za dizajniranje automatskih programa, u kojoj se stalno susrećete sa sličnim procesima. S jedne strane, toliko je promijenio model konačnog stroja da ga je zapravo izveo izvan dosega teorije automata. A, s druge strane, u programiranje uvodi koncepte koji su programerima teško shvatljivi, a ponekad su jednostavno suvišni, jer postoje poznatiji analozi iz teorije programa i prakse programiranja.

Kao temelj za raspravu o problemima automatskog programiranja uzet ćemo nedavno predavanje Shalyto A.A. i njegovih članaka o “programiranju” prema definiciji paradigme automatskog programiranja.

Ovi vodiči su za svakoga, bilo da ste tek počeli programirati ili imate veliko iskustvo u programiranju na drugim jezicima! Ovaj materijal je za one koji žele naučiti C/C++ jezike od njegovih samih osnova do najsloženijih struktura.

C++ je programski jezik, poznavanje ovog programskog jezika omogućit će vam da upravljate svojim računalom vrhunska razina. U idealnom slučaju, moći ćete natjerati računalo da radi što god želite. Naša stranica pomoći će vam da savladate programski jezik C++.

Instalacija /IDE

Prva stvar koju biste trebali učiniti prije nego počnete učiti C++ je osigurati da imate IDE - integrirano razvojno okruženje (program u kojem ćete programirati). Ako nemate IDE, izvolite. Nakon što se odlučite za izbor IDE-a, instalirajte ga i vježbajte izradu jednostavnih projekata.

Uvod u C++

Jezik C++ skup je naredbi koje govore računalu što treba učiniti. Ovaj skup naredbi obično se poziva izvor ili samo kod. Naredbe su ili "funkcije" ili " ključne riječi" Ključne riječi (C/C++ rezervirane riječi) osnovni su građevni blokovi jezika. Funkcije su složeni gradivni blokovi jer su napisane u smislu jednostavnijih funkcija - to ćete vidjeti u našem prvom programu, koji je prikazan u nastavku. Ova struktura funkcija nalikuje sadržaju knjige. Sadržaj može prikazivati ​​poglavlja knjige, svako poglavlje u knjizi može imati vlastiti sadržaj koji se sastoji od odlomaka, svaki odlomak može imati svoje pododlomke. Iako C++ nudi mnogo uobičajenih funkcija i rezerviranih riječi koje možete koristiti, još uvijek postoji potreba za pisanjem vlastitih funkcija.

Kojim dijelom programa počinje? Svaki program u C++ ima jednu funkciju, zove se glavna ili glavna funkcija, izvršavanje programa počinje s ovom funkcijom. Iz glavne funkcije također možete pozvati bilo koju drugu funkciju, bez obzira jesu li one koje smo mi napisali ili, kao što je ranije spomenuto, koje je omogućio prevoditelj.

Dakle, kako pristupiti ovim standardnim značajkama? Za pristup standardnim funkcijama koje dolaze s kompajlerom, trebate uključiti datoteku zaglavlja pomoću direktive pretprocesora - #include. Zašto je ovo učinkovito? Pogledajmo primjer program rada:

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

Razmotrimo detaljno elemente programa. #include je direktiva "pretprocesora" koja govori kompajleru da stavi kod iz datoteke zaglavlja iostreama u naš program prije stvaranja izvršne datoteke. Povezivanjem datoteke zaglavlja s programom dobivate pristup mnogim različitim funkcijama koje možete koristiti u svom programu. Na primjer, operator cout zahtijeva iostream. Redak koji koristi prostor imena std; govori prevoditelju da koristi grupu funkcija koje su dio std standardne biblioteke. Ovaj red također omogućuje programu korištenje operatora kao što je cout. Točka-zarez dio je sintakse jezika C++. Saopćava kompajleru da je ovo kraj naredbe. Uskoro ćete vidjeti da se točka-zarez koristi za završetak većine naredbi u C++.

Sljedeća važna linija programa je int main(). Ovaj redak govori prevoditelju da postoji funkcija koja se zove main i da funkcija vraća cijeli broj. Vitičaste zagrade ( i ) označavaju početak (i ​​kraj) funkcije. Vitičaste zagrade također se koriste u drugim blokovima koda, ali uvijek označavaju jednu stvar - početak i kraj bloka, redom.

U C++, cout objekt se koristi za prikaz teksta (izgovara se "C out"). On koristi simbole<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

Sljedeća naredba je cin.get() . Ovo je još jedan poziv funkcije koji čita podatke iz ulaznog toka podataka i čeka da se pritisne tipka ENTER. Ova naredba sprječava zatvaranje prozora konzole dok se ne pritisne tipka ENTER. To vam daje vremena da vidite rezultate programa.

Nakon što dođe do kraja glavne funkcije (zatvarajuća vitičasta zagrada), naš program će operativnom sustavu vratiti vrijednost 0. Ova vraćena vrijednost je važna jer analizirajući je, OS može procijeniti je li naš program uspješno završio ili ne. Povratna vrijednost 0 znači uspjeh i automatski se vraća (ali samo za int tip podataka; druge funkcije zahtijevaju da ručno vratite vrijednost), ali ako želimo vratiti nešto drugo, kao što je 1, morali bismo to učiniti ručno.

#uključi korištenje imenskog prostora std; int main() ( cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

Za konsolidaciju materijala upišite programski kod u svoj IDE i pokrenite ga. Nakon što se program pokrene i vidite izlaz, eksperimentirajte malo s naredbom cout. To će vam pomoći da se naviknete na jezik.

Obavezno komentirajte svoje programe!

Dodajte komentare svom kodu kako biste ga učinili jasnijim ne samo sebi nego i drugima. Kompajler zanemaruje komentare prilikom izvođenja koda, što vam omogućuje da koristite bilo koji broj komentara za opisivanje stvarnog koda. Za stvaranje komentara upotrijebite ili // , što prevoditelju govori da je ostatak retka komentar, ili /* i zatim */ . Kada učite programirati, korisno je moći komentirati dijelove koda kako biste vidjeli kako se izlaz programa mijenja. Detaljno možete pročitati o tehnici komentiranja.

Što učiniti sa svim tim vrstama varijabli?

Ponekad može biti zbunjujuće imati više tipova varijabli kada se čini da su neki tipovi varijabli suvišni. Vrlo je važno koristiti ispravan tip varijable, jer neke varijable zahtijevaju više memorije od drugih. Osim toga, zbog načina na koji su pohranjeni u memoriji, brojevi s pomičnim zarezom, tipovi podataka float i double su "neprecizni" i ne bi se trebali koristiti kada je potrebno pohraniti preciznu vrijednost cijelog broja.

Deklariranje varijabli u C++

Za deklaraciju varijable koristite tip sintakse<имя>; . Evo nekoliko primjera deklaracija varijabli:

Int num; char karakter; float broj_float;

Dopušteno je deklarirati nekoliko varijabli istog tipa u jednom retku; da biste to učinili, svaka od njih mora biti odvojena zarezom.

Int x, y, z, d;

Ako ste pažljivo pogledali, možda ste vidjeli da deklaracija varijable uvijek slijedi točka-zarez. Možete saznati više o konvenciji "o imenovanju varijabli".

Uobičajene pogreške prilikom deklariranja varijabli u C++

Ako pokušate koristiti varijablu koja nije deklarirana, vaš program se neće kompilirati i dobit ćete poruku o pogrešci. U C++-u sve ključne riječi jezika, sve funkcije i sve varijable razlikuju velika i mala slova.

Korištenje varijabli

Dakle, sada znate kako deklarirati varijablu. Evo primjera programa koji pokazuje korištenje varijable:

#uključi korištenje imenskog prostora std; int main() ( int broj; cout<< "Введите число: "; cin >>broj; cin.ignore(); cout<< "Вы ввели: "<< number <<"\n"; cin.get(); }

Pogledajmo ovaj program i ispitajmo njegov kod, red po red. Ključna riječ int označava da je broj cijeli broj. Funkcija cin >> čita vrijednost u broj, korisnik mora pritisnuti enter nakon unesenog broja. cin.ignore() je funkcija koja čita znak i ignorira ga. Organizirali smo unos u program, nakon unosa broja pritisnemo tipku ENTER, simbol koji se također prenosi u ulazni tok. Ne treba nam, pa ga odbacujemo. Imajte na umu da je varijabla deklarirana kao cjelobrojni tip, ako korisnik pokuša unijeti decimalni broj, on će biti skraćen (odnosno, decimalni dio broja će biti zanemaren). Pokušajte unijeti decimalni broj ili niz znakova, kada pokrenete primjer programa, odgovor će ovisiti o ulaznoj vrijednosti.

Imajte na umu da se pri ispisu iz varijable ne koriste navodnici. Odsutnost navodnika govori kompilatoru da postoji varijabla, te da stoga program treba provjeriti vrijednost varijable kako bi zamijenio naziv varijable njenom vrijednošću pri izvođenju. Više naredbi pomaka u istom retku savršeno je prihvatljivo i izlaz će biti učinjen istim redoslijedom. Trebali biste razdvojiti string literale (stringove unutar navodnika) i varijable, dajući svakome vlastiti operator pomaka<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

Mijenjanje i uspoređivanje vrijednosti

Naravno, bez obzira koju vrstu podataka koristite, varijable nisu jako zanimljive bez mogućnosti mijenjanja njihove vrijednosti. Sljedeće prikazuje neke operatore koji se koriste zajedno s varijablama:

  • * množenje,
  • - oduzimanje,
  • + zbrajanje,
  • / podjela,
  • = dodjela,
  • == jednakost,
  • >više
  • < меньше.
  • != nejednak
  • >= veće ili jednako
  • <= меньше или равно

Operatori koji izvode matematičke funkcije moraju se koristiti desno od znaka dodjele kako bi se rezultat dodijelio varijabli s lijeve strane.

Evo nekoliko primjera:

A = 4 * 6; // koristi komentar retka i točku-zarez, a je jednako 24 a = a + 5; // jednako zbroju izvorne vrijednosti i pet a == 5 // ne dodjeljuje pet, provjerava da li je jednako 5 ili ne

Često ćete koristiti == u konstrukcijama kao što su uvjetne izjave i petlje.

A< 5 // Проверка, a менее пяти? a >5 // Provjerite, je li više od pet? a == 5 // Provjeravamo, je li a jednako pet? a != 5 // Provjerite, nije li jednako pet? a >= 5 // Provjerite je li a veće ili jednako pet? a<= 5 // Проверка, a меньше или равно пяти?

Ovi primjeri ne pokazuju vrlo jasno upotrebu znakova za usporedbu, ali kada počnemo proučavati operatore odabira, shvatit ćete zašto je to potrebno.

C++ (čitaj c-plus-plus) je kompilirani, statički tipizirani programski jezik opće namjene u kojem možete stvarati programe bilo koje razine složenosti.
Već više od 20 godina ovaj je jezik među tri najpopularnija i najtraženija programska jezika. (To možete provjeriti posjetom web stranici TIOBE).
Jezik je nastao ranih 1980-ih, kada je zaposlenik Bell Labsa Björn Stroustrup smislio brojna poboljšanja jezika C za svoje potrebe.

Bjarne Stroustrup – tvorac jezika C++

Stroustrup je odlučio proširiti jezik C s mogućnostima koje se nalaze u jeziku Simula. C, budući da je osnovni jezik UNIX sustava na kojem su radila Bell računala, brz je, bogat značajkama i prenosiv. Stroustrup je dodao mogućnost rada s klasama i objektima. Kao rezultat toga, pokazalo se da je praktične probleme modeliranja lako riješiti i u smislu vremena razvoja (zahvaljujući korištenju klasa sličnih Simuli) i u smislu vremena izračuna (zahvaljujući brzini C-a).
Evo kako sam programer jezika govori o tome:



Godine 1998., prvi jezični standard, poznat kao C++98, objavio je odbor za standarde. C++ se nastavlja razvijati kako bi zadovoljio današnje zahtjeve. Jedna od skupina koja razvija jezik C++ i podnosi prijedloge za njegovo poboljšanje Odboru za standarde C++ je pojačati, koji se, između ostalog, bavi poboljšanjem mogućnosti jezika dodavanjem značajki metaprogramiranja. Najnoviji standard objavljen je 2017. godine i zove se C++17. Sljedeći standard neće se dugo čekati i očekuje se da će se pojaviti 2020. godine.
Nitko ne posjeduje prava na jezik C++; besplatan je. U ožujku 2016. u Rusiji je stvorena radna skupina WP21 C++. Skupina je organizirana da prikuplja prijedloge za standard C++, šalje ih odboru i brani na općim sastancima Međunarodne organizacije za standardizaciju.
C++ je višeparadigmatski jezik (od riječi paradigma - stil pisanja računalnih programa), uključujući širok raspon različitih programskih stilova i tehnologija. Često se klasificira kao objektno orijentirani jezik, ali strogo govoreći, to nije slučaj. Programer tijekom procesa rada dobiva apsolutnu slobodu u odabiru alata kako bi problem koji se rješava određenim pristupom riješio što učinkovitije. Drugim riječima, C++ ne prisiljava programera da se pridržava samo jednog stila razvoja programa (na primjer, objektno orijentiranog).
C++ ima bogatu standardnu ​​biblioteku koja uključuje uobičajene spremnike i algoritme, I/O, regularne izraze, podršku za više niti i druge značajke. C++ je utjecao na mnoge programske jezike, uključujući: Java, C#, D. Budući da C++ pripada obitelji jezika koja se temelji na sintaksi jezika C, možete lako savladati druge programske jezike ove obitelji: JavaScript, PHP , Perl, Objective-C i mnogi drugi. itd., uključujući i sam matični jezik - C. ()
Tijekom svog postojanja, jezik C++ stekao je postojane mitove koje je lako opovrgnuti (pogledajte ovdje: Dio 1 i Dio 2)

Povijest jezika i objavljivanje standarda

1983

Tvorac jezika je Björn Stroustrup, zaposlenik Bell Labsa, predstavio je ranu verziju jezika C++ ("C s klasama")

1985

Prvo komercijalno izdanje C++, jezik preuzima svoje moderno ime

1986

Izdanje prvog izdanja The C++ Programming Language - knjige posvećene C++-u koju je napisao Björn Stroustrup

1998

Ratificiran je međunarodni standard za jezik C++: ISO/IEC 14882:1998 “Standard za programski jezik C++”

2003
2005

Objavljeno je tehničko izvješće knjižnice 1 (TR1). Iako nije službeno dio standarda, izvješće opisuje proširenja standardne biblioteke koja bi trebala biti uključena u sljedeću verziju jezika C++.

2011

Objavljivanje nove norme – C++11 ili ISO/IEC 14882:2011; novi standard uključivao je dodatke jezičnoj jezgri i proširenje standardne biblioteke, uključujući većinu TR1

2014

Izdanje standarda C++14 (“Međunarodni standard ISO/IEC 14882:2014(E) Programski jezik C++”); C++14 se može promatrati kao malo proširenje u odnosu na C++11, koje uglavnom sadrži ispravke grešaka i manja poboljšanja

2017

Izdanje novog standarda – C++1z (C++17). Ova norma uvela je mnoge izmjene i dopune. Na primjer, STD je uključivao biblioteke standarda C11, datotečni sustav temeljen na boost::filesystem i većinu eksperimentalne TS I biblioteke.

2020

C++20 je neslužbeni naziv ISO/IEC standarda za programski jezik C++, za koji se očekuje da slijedi C++17. Nacrt standarda N4800.

C++ filozofija

U svojoj knjizi The Design and Evolution of C++ (2007), Björn Stroustrup opisuje principe koje je slijedio prilikom dizajniranja C++ (skraćeno):

  • Dobijte jezik opće namjene sa statičkim tipovima podataka, učinkovitost i prenosivost C jezika.
  • Izravno i sveobuhvatno podržavaju različite stilove programiranja.
  • Dajte programeru slobodu izbora, čak i ako mu to daje priliku da izabere krivo.
  • Održavajte kompatibilnost s C-om što je više moguće, čime se omogućuje lak prijelaz s C programiranja.
  • Izbjegavajte razlike između C i C++: svaka konstrukcija koja je važeća u oba jezika mora značiti istu stvar u svakom od njih i dovesti do istog ponašanja programa.
  • Izbjegavajte značajke koje ovise o platformi ili nisu univerzalne.
  • “Nemojte plaćati za ono što ne koristite” - nijedna značajka jezika ne bi trebala dovesti do smanjenja performansi programa koji je ne koriste.
  • Nemojte zahtijevati previše komplicirano programsko okruženje.

C i C++

Sintaksa C++ naslijeđena je iz jezika C. Iako, formalno, jedno od načela C++ ostaje održavanje kompatibilnosti s jezikom C, u stvari, standardizacijske grupe za ove jezike nemaju interakciju, a promjene koje čine ne samo ne koreliraju, nego često ideološki temeljno proturječe. Dakle, elementi koje novi C standardi dodaju jezgri nalaze se u C++ standardnim elementima standardne biblioteke i uopće nisu u jezgri, na primjer, dinamička polja, polja s fiksnim granicama, mogućnosti paralelne obrade. Prema Stroustrupu, kombiniranje razvoja ova dva jezika bilo bi od velike koristi, ali je malo vjerojatno da će biti moguće iz političkih razloga. Tako će se praktična kompatibilnost između C i C++ postupno izgubiti.
U ovom primjeru, ovisno o korištenom kompajleru, izlaz će biti "C++" ili "C":

Program 9.1

#uključi int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

To je zbog činjenice da su znakovne konstante u C-u tipa int, a u C++-u tipa char, ali su veličine ovih tipova različite.

Modeli životnog ciklusa aplikacije

Životni ciklus softver je vremensko razdoblje koje počinje od trenutka donošenja odluke o potrebi izrade softverskog proizvoda i završava u trenutku njegovog potpunog uklanjanja iz upotrebe. Ovaj ciklus je proces izgradnje i razvoja softvera. Postoji nekoliko modela životnog ciklusa.
Kaskadni modelživotni ciklus (engleski model vodopada) predložio je 1970. Winston Royce. Omogućuje sekvencijalnu provedbu svih faza projekta u strogo utvrđenom redoslijedu. Prijelaz na sljedeću fazu znači potpuni završetak rada u prethodnoj fazi. Zahtjevi utvrđeni u fazi formiranja zahtjeva strogo se dokumentiraju u obliku tehničkih specifikacija i bilježe se tijekom cjelokupnog razvoja projekta. Svaka faza kulminira izdavanjem cjelovitog skupa dokumentacije koja je dovoljna da razvoj nastavi drugi razvojni tim.
Faze projekta prema modelu vodopada:

  1. Formiranje zahtjeva;
  2. Oblikovati;
  3. Provedba;
  4. Testiranje;
  5. Provedba;
  6. Rad i održavanje.

U kaskadnom modelu prijelaz iz jedne faze projekta u drugu pretpostavlja da je rezultat prethodne faze potpuno točan. U velikim projektima to je gotovo nemoguće postići. Stoga je ovaj model prikladan samo za razvoj malog projekta. (Sam W. Royce nije se pridržavao ovog modela i koristio se iterativnim modelom).
Iterativni model
Alternativa kaskadnom modelu je model iterativnog i inkrementalnog razvoja (IID), koji je dobio od T. Gilba 70-ih godina. naziv evolucijskog modela. IID model uključuje razbijanje životnog ciklusa projekta u niz iteracija, od kojih svaka nalikuje "mini-projektu", uključujući sve razvojne procese koji se primjenjuju na stvaranje manjih dijelova funkcionalnosti u usporedbi s projektom kao cjelinom. Cilj svake iteracije je dobiti radnu verziju softverskog sustava, uključujući funkcionalnost definiranu integriranim sadržajem svih prethodnih i trenutnih iteracija. Rezultat završne iteracije sadrži sve potrebne funkcionalnosti proizvoda. Dakle, završetkom svake iteracije, proizvod dobiva prirast - prirast - svojim sposobnostima, koje se, dakle, evolucijski razvijaju.


U većini suvremenih razvojnih metodologija implementirane su različite varijante iterativnog pristupa:

Proces razvoja - Rational Unified Process (RUP)

Racionalni objedinjeni proces (RUP)(rational unified process) je metodologija razvoja softvera koju održava Rational Software (IBM). Metodologija daje preporuke za sve faze razvoja: od poslovnog modeliranja do testiranja i puštanja u rad gotovog programa. Unified Modeling Language (UML) koristi se kao jezik za modeliranje.
Cijeli životni ciklus razvoja proizvoda sastoji se od četiri faze, od kojih svaka uključuje jednu ili više iteracija.

  • Početna faza (početak)
  • Određivanje opsega projekta i količine potrebnih resursa. Utvrđuju se osnovni zahtjevi, ograničenja i ključne funkcionalnosti proizvoda. Rizici se procjenjuju. Planiranje akcije. Na kraju početne faze ocjenjuje se postizanje prekretnice cilja životnog ciklusa, što pretpostavlja dogovor između dionika za nastavak projekta.

  • Pojašnjenje
  • Zahtjevi za dokumentiranje. Dizajn, implementacija i testiranje izvršne arhitekture. Pojašnjenje uvjeta i troškova. Smanjenje ključnih rizika. Uspješan završetak faze razvoja znači dostizanje prekretnice arhitekture životnog ciklusa.

  • Izgradnja
  • U fazi "Build" većina funkcionalnosti proizvoda je implementirana: dizajn aplikacije je dovršen, izvorni kod je napisan. Faza izgradnje završava prvim vanjskim izdanjem sustava i prekretnicom početne operativne sposobnosti.

  • Uvod
  • U fazi “Implementacije” izrađuje se konačna verzija proizvoda koja se prenosi od programera do kupca. To uključuje program beta testiranja, obuku korisnika i utvrđivanje kvalitete proizvoda. U slučaju da kvaliteta ne zadovolji očekivanja korisnika ili kriterije postavljene u početnoj fazi, ponovno se ponavlja faza implementacije. Ispunjavanje svih ciljeva znači postizanje prekretnice Izdanja proizvoda i dovršetak cijelog razvojnog ciklusa.



"Informacijska tehnologija. Inženjering sustava i softvera. Procesi životnog ciklusa softvera". Ovaj je standard usvojila Savezna agencija za tehničku regulativu i mjeriteljstvo Ruske Federacije i sličan je međunarodnom standardu ISO/IEC 12207:2008. Ovaj standard uspostavlja opću strukturu procesa životnog ciklusa softvera koji se mogu pratiti u softverskoj industriji. Norma ne predlaže određeni model životnog ciklusa. Njegove su odredbe zajedničke svim modelima životnog ciklusa, metodama i tehnologijama za izradu softvera. Opisuje strukturu procesa životnog ciklusa bez specificiranja kako implementirati ili dovršiti aktivnosti i zadatke uključene u te procese.

Prezentacija za lekciju
Teme poruka
  • Free Software Foundation (FSF)
  • Licence besplatnog softvera
  • FreeSoftware i Open Source
  • Povijest razvoja programskih jezika
  • Povijest jezika C. C i C++
  • Priča
  • Kritika C++
  • Povijest UNIX-a
  • Spiralni model životnog ciklusa softvera
  • UML (Unified Modeling Language)
  • Microsoft Solutions Framework
  • IDE za C/C++ programiranje u sustavu Windows
  • C/C++ prevoditelji
  • Stvaranje konzolne aplikacije u sustavu Windows
Pitanja
  1. Zašto se vodopadni model razvoja softvera ne koristi u velikim projektima?
  2. Koja je razlika između modela vodopada i iterativnog razvoja?
  3. Navedite faze razvoja softvera u metodologiji Rational Unified Process (RUP).

Učenje osnova i zamršenosti programskog jezika C++. Udžbenik s praktičnim zadacima i testovima. Želite li naučiti programirati? Onda ste na pravom mjestu - ovdje je besplatna obuka programiranja. Bez obzira jeste li iskusni ili ne, ove lekcije programiranja pomoći će vam da počnete stvarati, kompilirati i otklanjati pogreške u C++ programima u raznim razvojnim okruženjima: Visual Studio, Code::Blocks, Xcode ili Eclipse.

Puno primjera i detaljnih objašnjenja. Savršen i za početnike (dummy) i za one naprednije. Sve je objašnjeno od nule do detalja. Ove lekcije (200+) dat će vam dobru osnovu/temelj za razumijevanje programiranja ne samo u C++, već iu drugim programskim jezicima. I to potpuno besplatno!

Također je pokriveno korak-po-korak stvaranje igre u C++, SFML grafička biblioteka i više od 50 zadataka za testiranje vaših vještina i znanja u C++. Dodatni bonus je.

Za ponovno objavljivanje +20 na karmu i moju zahvalnost!

Poglavlje br. 0. Uvod. Početak rada

Poglavlje br. 1. Osnove C++

Poglavlje br. 2. Varijable i osnovni tipovi podataka u C++

Poglavlje br. 3. Operatori u C++

Poglavlje br. 4. Opseg i druge vrste varijabli u C++

Poglavlje br. 5. Redoslijed kojim se kôd izvršava u programu. Petlje i grananja u C++